]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/wv.c
sbgdec: read_seek was undeprecated.
[ffmpeg] / libavformat / wv.c
index 72c8df0f2452c1d8a710c260c224e8afd4ab68a8..767f4f48ef52becab204f45776042c66187167c4 100644 (file)
@@ -23,6 +23,7 @@
 #include "libavutil/intreadwrite.h"
 #include "libavutil/dict.h"
 #include "avformat.h"
+#include "internal.h"
 #include "apetag.h"
 #include "id3v1.h"
 
@@ -202,8 +203,7 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int appen
     return 0;
 }
 
-static int wv_read_header(AVFormatContext *s,
-                          AVFormatParameters *ap)
+static int wv_read_header(AVFormatContext *s)
 {
     AVIOContext *pb = s->pb;
     WVContext *wc = s->priv_data;
@@ -229,7 +229,7 @@ static int wv_read_header(AVFormatContext *s,
     st->codec->channel_layout = wc->chmask;
     st->codec->sample_rate = wc->rate;
     st->codec->bits_per_coded_sample = wc->bpp;
-    av_set_pts_info(st, 64, 1, wc->rate);
+    avpriv_set_pts_info(st, 64, 1, wc->rate);
     st->start_time = 0;
     st->duration = wc->samples;
 
@@ -251,6 +251,7 @@ static int wv_read_packet(AVFormatContext *s,
     int ret;
     int size, ver, off;
     int64_t pos;
+    uint32_t block_samples;
 
     if (url_feof(s->pb))
         return AVERROR(EIO);
@@ -316,6 +317,12 @@ static int wv_read_packet(AVFormatContext *s,
     pkt->stream_index = 0;
     wc->block_parsed = 1;
     pkt->pts = wc->soff;
+    block_samples = AV_RN32(wc->extra);
+    if (block_samples > INT32_MAX)
+        av_log(s, AV_LOG_WARNING, "Too many samples in block: %"PRIu32"\n", block_samples);
+    else
+        pkt->duration = block_samples;
+
     av_add_index_entry(s->streams[0], pos, pkt->pts, 0, 0, AVINDEX_KEYFRAME);
     return 0;
 }