This gives more accurate time stamps that do not need to be rounded.
Updating FATE seek-ac3_ac3 test accordingly.
---
 libavformat/ac3dec.c   |   19 +++++++++++++-
 tests/ref/seek/ac3_ac3 |   60 ++++++++++++++++++++++++------------------------
 2 files changed, 47 insertions(+), 32 deletions(-)

diff --git a/libavformat/ac3dec.c b/libavformat/ac3dec.c
index 4078b1b..f9bf443 100644
--- a/libavformat/ac3dec.c
+++ b/libavformat/ac3dec.c
@@ -22,6 +22,7 @@
 #include "libavutil/crc.h"
 #include "libavcodec/ac3_parser.h"
 #include "avformat.h"
+#include "internal.h"
 #include "rawdec.h"
 
 static int ac3_eac3_probe(AVProbeData *p, enum CodecID expected_codec_id)
@@ -64,6 +65,20 @@ static int ac3_eac3_probe(AVProbeData *p, enum CodecID 
expected_codec_id)
     else                   return 0;
 }
 
+static int ac3_eac3_read_header(AVFormatContext *s)
+{
+    int ret;
+    if ((ret = ff_raw_audio_read_header(s)) < 0)
+        return ret;
+
+    // for time base, use LCM of all possible samples-per-frame and sample 
rates
+    // samples-per-frame: 256, 512, 768, 1536
+    // sample rates: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 
48000
+    avpriv_set_pts_info(s->streams[0], 64, 1, 28224000);
+
+    return 0;
+}
+
 #if CONFIG_AC3_DEMUXER
 static int ac3_probe(AVProbeData *p)
 {
@@ -74,7 +89,7 @@ AVInputFormat ff_ac3_demuxer = {
     .name           = "ac3",
     .long_name      = NULL_IF_CONFIG_SMALL("raw AC-3"),
     .read_probe     = ac3_probe,
-    .read_header    = ff_raw_audio_read_header,
+    .read_header    = ac3_eac3_read_header,
     .read_packet    = ff_raw_read_partial_packet,
     .flags= AVFMT_GENERIC_INDEX,
     .extensions = "ac3",
@@ -92,7 +107,7 @@ AVInputFormat ff_eac3_demuxer = {
     .name           = "eac3",
     .long_name      = NULL_IF_CONFIG_SMALL("raw E-AC-3"),
     .read_probe     = eac3_probe,
-    .read_header    = ff_raw_audio_read_header,
+    .read_header    = ac3_eac3_read_header,
     .read_packet    = ff_raw_read_partial_packet,
     .flags= AVFMT_GENERIC_INDEX,
     .extensions = "eac3",
diff --git a/tests/ref/seek/ac3_ac3 b/tests/ref/seek/ac3_ac3
index 167dc8d..9a399b8 100644
--- a/tests/ref/seek/ac3_ac3
+++ b/tests/ref/seek/ac3_ac3
@@ -2,48 +2,48 @@ ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 
     0 size:   556
 ret: 0         st:-1 flags:0  ts:-1.000000
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:      0 size:   
556
 ret: 0         st:-1 flags:1  ts: 1.894167
-ret: 0         st: 0 flags:1 dts: 1.880400 pts: 1.880400 pos:  30092 size:   
558
-ret: 0         st: 0 flags:0  ts: 0.788333
-ret: 0         st: 0 flags:1 dts: 0.800911 pts: 0.800911 pos:  12818 size:   
556
-ret:-1         st: 0 flags:1  ts:-0.317500
+ret: 0         st: 0 flags:1 dts: 1.880816 pts: 1.880816 pos:  30092 size:   
558
+ret: 0         st: 0 flags:0  ts: 0.788334
+ret: 0         st: 0 flags:1 dts: 0.801088 pts: 0.801088 pos:  12818 size:   
556
+ret:-1         st: 0 flags:1  ts:-0.317499
 ret: 0         st:-1 flags:0  ts: 2.576668
-ret: 0         st: 0 flags:1 dts: 2.576844 pts: 2.576844 pos:  41238 size:   
558
+ret: 0         st: 0 flags:1 dts: 2.577415 pts: 2.577415 pos:  41238 size:   
558
 ret: 0         st:-1 flags:1  ts: 1.470835
-ret: 0         st: 0 flags:1 dts: 1.462533 pts: 1.462533 pos:  23406 size:   
556
-ret: 0         st: 0 flags:0  ts: 0.365000
-ret: 0         st: 0 flags:1 dts: 0.383044 pts: 0.383044 pos:   6130 size:   
558
-ret:-1         st: 0 flags:1  ts:-0.740833
+ret: 0         st: 0 flags:1 dts: 1.462857 pts: 1.462857 pos:  23406 size:   
556
+ret: 0         st: 0 flags:0  ts: 0.365002
+ret: 0         st: 0 flags:1 dts: 0.383129 pts: 0.383129 pos:   6130 size:   
558
+ret:-1         st: 0 flags:1  ts:-0.740831
 ret: 0         st:-1 flags:0  ts: 2.153336
-ret: 0         st: 0 flags:1 dts: 2.158978 pts: 2.158978 pos:  34552 size:   
556
+ret: 0         st: 0 flags:1 dts: 2.159456 pts: 2.159456 pos:  34552 size:   
556
 ret: 0         st:-1 flags:1  ts: 1.047503
-ret: 0         st: 0 flags:1 dts: 1.044667 pts: 1.044667 pos:  16718 size:   
558
-ret: 0         st: 0 flags:0  ts:-0.058333
+ret: 0         st: 0 flags:1 dts: 1.044898 pts: 1.044898 pos:  16718 size:   
558
+ret: 0         st: 0 flags:0  ts:-0.058330
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:      0 size:   
556
-ret: 0         st: 0 flags:1  ts: 2.835833
-ret: 0         st: 0 flags:1 dts: 2.820600 pts: 2.820600 pos:  45140 size:   
556
+ret: 0         st: 0 flags:1  ts: 2.835837
+ret: 0         st: 0 flags:1 dts: 2.821224 pts: 2.821224 pos:  45140 size:   
556
 ret: 0         st:-1 flags:0  ts: 1.730004
-ret: 0         st: 0 flags:1 dts: 1.741111 pts: 1.741111 pos:  27864 size:   
556
+ret: 0         st: 0 flags:1 dts: 1.741497 pts: 1.741497 pos:  27864 size:   
556
 ret: 0         st:-1 flags:1  ts: 0.624171
-ret: 0         st: 0 flags:1 dts: 0.591978 pts: 0.591978 pos:   9474 size:   
556
-ret: 0         st: 0 flags:0  ts:-0.481667
+ret: 0         st: 0 flags:1 dts: 0.592109 pts: 0.592109 pos:   9474 size:   
556
+ret: 0         st: 0 flags:0  ts:-0.481662
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:      0 size:   
556
-ret: 0         st: 0 flags:1  ts: 2.412500
-ret: 0         st: 0 flags:1 dts: 2.402733 pts: 2.402733 pos:  38452 size:   
558
+ret: 0         st: 0 flags:1  ts: 2.412505
+ret: 0         st: 0 flags:1 dts: 2.403265 pts: 2.403265 pos:  38452 size:   
558
 ret: 0         st:-1 flags:0  ts: 1.306672
-ret: 0         st: 0 flags:1 dts: 1.323244 pts: 1.323244 pos:  21176 size:   
558
+ret: 0         st: 0 flags:1 dts: 1.323537 pts: 1.323537 pos:  21176 size:   
558
 ret: 0         st:-1 flags:1  ts: 0.200839
-ret: 0         st: 0 flags:1 dts: 0.174111 pts: 0.174111 pos:   2786 size:   
558
-ret: 0         st: 0 flags:0  ts:-0.904989
+ret: 0         st: 0 flags:1 dts: 0.174150 pts: 0.174150 pos:   2786 size:   
558
+ret: 0         st: 0 flags:0  ts:-0.904994
 ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:      0 size:   
556
-ret: 0         st: 0 flags:1  ts: 1.989178
-ret: 0         st: 0 flags:1 dts: 1.984867 pts: 1.984867 pos:  31764 size:   
558
+ret: 0         st: 0 flags:1  ts: 1.989173
+ret: 0         st: 0 flags:1 dts: 1.985306 pts: 1.985306 pos:  31764 size:   
558
 ret: 0         st:-1 flags:0  ts: 0.883340
-ret: 0         st: 0 flags:1 dts: 0.905378 pts: 0.905378 pos:  14488 size:   
558
+ret: 0         st: 0 flags:1 dts: 0.905578 pts: 0.905578 pos:  14488 size:   
558
 ret:-1         st:-1 flags:1  ts:-0.222493
-ret: 0         st: 0 flags:0  ts: 2.671678
-ret: 0         st: 0 flags:1 dts: 2.681311 pts: 2.681311 pos:  42910 size:   
558
-ret: 0         st: 0 flags:1  ts: 1.565844
-ret: 0         st: 0 flags:1 dts: 1.532178 pts: 1.532178 pos:  24520 size:   
558
+ret: 0         st: 0 flags:0  ts: 2.671674
+ret: 0         st: 0 flags:1 dts: 2.681905 pts: 2.681905 pos:  42910 size:   
558
+ret: 0         st: 0 flags:1  ts: 1.565841
+ret: 0         st: 0 flags:1 dts: 1.532517 pts: 1.532517 pos:  24520 size:   
558
 ret: 0         st:-1 flags:0  ts: 0.460008
-ret: 0         st: 0 flags:1 dts: 0.487511 pts: 0.487511 pos:   7802 size:   
556
+ret: 0         st: 0 flags:1 dts: 0.487619 pts: 0.487619 pos:   7802 size:   
556
 ret:-1         st:-1 flags:1  ts:-0.645825
-- 
1.7.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to