OSDN Git Service

voc/avs: Do not change the sample rate mid-stream.
authorJustin Ruggles <justin.ruggles@gmail.com>
Thu, 12 Jan 2012 02:10:35 +0000 (21:10 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 3 Mar 2012 22:03:27 +0000 (17:03 -0500)
Also, set the time base based on the sample rate.
lavf-voc seek test updated to reflect slightly different seek points.

libavformat/vocdec.c
tests/ref/seek/lavf_voc

index e8c11af..3c27062 100644 (file)
@@ -86,9 +86,13 @@ ff_voc_get_packet(AVFormatContext *s, AVPacket *pkt, AVStream *st, int max_size)
 
         switch (type) {
         case VOC_TYPE_VOICE_DATA:
-            dec->sample_rate = 1000000 / (256 - avio_r8(pb));
-            if (sample_rate)
-                dec->sample_rate = sample_rate;
+            if (!dec->sample_rate) {
+                dec->sample_rate = 1000000 / (256 - avio_r8(pb));
+                if (sample_rate)
+                    dec->sample_rate = sample_rate;
+                avpriv_set_pts_info(st, 64, 1, dec->sample_rate);
+            } else
+                avio_skip(pb, 1);
             dec->channels = channels;
             tmp_codec = avio_r8(pb);
             dec->bits_per_coded_sample = av_get_bits_per_sample(dec->codec_id);
@@ -110,7 +114,11 @@ ff_voc_get_packet(AVFormatContext *s, AVPacket *pkt, AVStream *st, int max_size)
             break;
 
         case VOC_TYPE_NEW_VOICE_DATA:
-            dec->sample_rate = avio_rl32(pb);
+            if (!dec->sample_rate) {
+                dec->sample_rate = avio_rl32(pb);
+                avpriv_set_pts_info(st, 64, 1, dec->sample_rate);
+            } else
+                avio_skip(pb, 4);
             dec->bits_per_coded_sample = avio_r8(pb);
             dec->channels = avio_r8(pb);
             tmp_codec = avio_rl16(pb);
index 5670d1a..387aef6 100644 (file)
@@ -1,27 +1,27 @@
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:     32 size:  1024
 ret:-1         st:-1 flags:0  ts:-1.000000
 ret:-1         st:-1 flags:1  ts: 1.894167
-ret:-1         st: 0 flags:0  ts: 0.788333
-ret:-1         st: 0 flags:1  ts:-0.317500
+ret:-1         st: 0 flags:0  ts: 0.788335
+ret:-1         st: 0 flags:1  ts:-0.317508
 ret:-1         st:-1 flags:0  ts: 2.576668
 ret:-1         st:-1 flags:1  ts: 1.470835
-ret:-1         st: 0 flags:0  ts: 0.365000
-ret:-1         st: 0 flags:1  ts:-0.740833
+ret:-1         st: 0 flags:0  ts: 0.365006
+ret:-1         st: 0 flags:1  ts:-0.740837
 ret:-1         st:-1 flags:0  ts: 2.153336
 ret:-1         st:-1 flags:1  ts: 1.047503
-ret:-1         st: 0 flags:0  ts:-0.058333
-ret:-1         st: 0 flags:1  ts: 2.835833
+ret:-1         st: 0 flags:0  ts:-0.058323
+ret:-1         st: 0 flags:1  ts: 2.835834
 ret:-1         st:-1 flags:0  ts: 1.730004
 ret:-1         st:-1 flags:1  ts: 0.624171
-ret:-1         st: 0 flags:0  ts:-0.481667
-ret:-1         st: 0 flags:1  ts: 2.412500
+ret:-1         st: 0 flags:0  ts:-0.481652
+ret:-1         st: 0 flags:1  ts: 2.412505
 ret:-1         st:-1 flags:0  ts: 1.306672
 ret:-1         st:-1 flags:1  ts: 0.200839
-ret:-1         st: 0 flags:0  ts:-0.904989
-ret:-1         st: 0 flags:1  ts: 1.989178
+ret:-1         st: 0 flags:0  ts:-0.905003
+ret:-1         st: 0 flags:1  ts: 1.989176
 ret:-1         st:-1 flags:0  ts: 0.883340
 ret:-1         st:-1 flags:1  ts:-0.222493
-ret:-1         st: 0 flags:0  ts: 2.671678
-ret:-1         st: 0 flags:1  ts: 1.565844
+ret:-1         st: 0 flags:0  ts: 2.671668
+ret:-1         st: 0 flags:1  ts: 1.565847
 ret:-1         st:-1 flags:0  ts: 0.460008
 ret:-1         st:-1 flags:1  ts:-0.645825