dca_parser: ensure frame duration matches the actual sample rate
authorHendrik Leppkes <h.leppkes@gmail.com>
Wed, 3 Feb 2016 11:43:44 +0000 (12:43 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Thu, 4 Feb 2016 11:16:19 +0000 (12:16 +0100)
The parser only parses the core, and thus has a duration relative
to the core sample rate only, not the actual stream sample rate.

FATE references changed due to now correct timestamps.

13 files changed:
libavcodec/dca_parser.c
tests/ref/fate/dca-xll_51_16_192_768_0
tests/ref/fate/dca-xll_51_16_192_768_0-dmix_2
tests/ref/fate/dca-xll_51_16_192_768_0-dmix_6
tests/ref/fate/dca-xll_51_16_192_768_1
tests/ref/fate/dca-xll_51_16_192_768_1-dmix_2
tests/ref/fate/dca-xll_51_16_192_768_1-dmix_6
tests/ref/fate/dca-xll_71_24_96_768
tests/ref/fate/dca-xll_71_24_96_768-dmix_2
tests/ref/fate/dca-xll_71_24_96_768-dmix_6
tests/ref/fate/dca-xll_x96_51_24_96_1509
tests/ref/fate/dca-xll_x96_51_24_96_1509-dmix_2
tests/ref/fate/dca-xll_x96_51_24_96_1509-dmix_6

index 70e64a8..bde7dfe 100644 (file)
@@ -165,7 +165,9 @@ static int dca_parse(AVCodecParserContext *s, AVCodecContext *avctx,
 
     /* read the duration and sample rate from the frame header */
     if (!dca_parse_params(buf, buf_size, &duration, &sample_rate, &pc1->framesize)) {
-        s->duration        = duration;
+        if (!avctx->sample_rate)
+            avctx->sample_rate = sample_rate;
+        s->duration = av_rescale(duration, avctx->sample_rate, sample_rate);
     } else
         s->duration = 0;
 
index 8977923..0e22d5d 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,        512,        512,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
-0,       1536,       1536,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
-0,       2048,       2048,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
-0,       2560,       2560,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
+0,       2048,       2048,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       4096,       4096,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
+0,       6144,       6144,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
+0,       8192,       8192,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
+0,      10240,      10240,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
index 8977923..0e22d5d 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,        512,        512,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
-0,       1536,       1536,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
-0,       2048,       2048,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
-0,       2560,       2560,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
+0,       2048,       2048,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       4096,       4096,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
+0,       6144,       6144,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
+0,       8192,       8192,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
+0,      10240,      10240,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
index 8977923..0e22d5d 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,        512,        512,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
-0,       1536,       1536,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
-0,       2048,       2048,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
-0,       2560,       2560,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
+0,       2048,       2048,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       4096,       4096,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
+0,       6144,       6144,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
+0,       8192,       8192,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
+0,      10240,      10240,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
index 8977923..0e22d5d 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,        512,        512,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
-0,       1536,       1536,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
-0,       2048,       2048,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
-0,       2560,       2560,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
+0,       2048,       2048,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       4096,       4096,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
+0,       6144,       6144,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
+0,       8192,       8192,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
+0,      10240,      10240,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
index a014f76..d97ad2f 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,     8192, 0829f71740aab1ab98b33eae21dee122
-0,        512,        512,     2048,     8192, c8ca1cff44674809d464ec39cf1bd1e9
-0,       1024,       1024,     2048,     8192, d67d26915ca86554568aac685c9a6dc3
-0,       1536,       1536,     2048,     8192, 8fdf69fdac9985ac4f9470a7b8e8529d
-0,       2048,       2048,     2048,     8192, dc8a9ca39b38c98147f2308f985ff648
-0,       2560,       2560,     2048,     8192, ea13b97373762ab16d0f664013fdc962
+0,       2048,       2048,     2048,     8192, c8ca1cff44674809d464ec39cf1bd1e9
+0,       4096,       4096,     2048,     8192, d67d26915ca86554568aac685c9a6dc3
+0,       6144,       6144,     2048,     8192, 8fdf69fdac9985ac4f9470a7b8e8529d
+0,       8192,       8192,     2048,     8192, dc8a9ca39b38c98147f2308f985ff648
+0,      10240,      10240,     2048,     8192, ea13b97373762ab16d0f664013fdc962
index 8977923..0e22d5d 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/192000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,        512,        512,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
-0,       1536,       1536,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
-0,       2048,       2048,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
-0,       2560,       2560,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
+0,       2048,       2048,     2048,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       4096,       4096,     2048,    24576, 97e888b4de888608d08d193aecd2bd6b
+0,       6144,       6144,     2048,    24576, 96d20b0b657183ee88a5ec7d919d5313
+0,       8192,       8192,     2048,    24576, d6a98e7cea8e9b397e89f178aa719b19
+0,      10240,      10240,     2048,    24576, fb3432fe46696579220baa1c49e7dcd5
index fbc9e96..72da526 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    24576, 0b24a527d66f2b0cab97f37e4cd79987
-0,        512,        512,     1024,    24576, 91ff0dac5df86e798bfef5e573536b08
-0,       1024,       1024,     1024,    24576, c2b5e663fa260abc9c737d16110052a8
-0,       1536,       1536,     1024,    24576, 81f474e17d875f7c5a2cbaadef4f7c0a
-0,       2048,       2048,     1024,    24576, 959200e06f2f8489b9e36c74b073edae
-0,       2560,       2560,     1024,    24576, ef1ed14d39cce6ba1ab9736831aa1b30
+0,       1024,       1024,     1024,    24576, 91ff0dac5df86e798bfef5e573536b08
+0,       2048,       2048,     1024,    24576, c2b5e663fa260abc9c737d16110052a8
+0,       3072,       3072,     1024,    24576, 81f474e17d875f7c5a2cbaadef4f7c0a
+0,       4096,       4096,     1024,    24576, 959200e06f2f8489b9e36c74b073edae
+0,       5120,       5120,     1024,    24576, ef1ed14d39cce6ba1ab9736831aa1b30
index cee7307..b24c717 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    18432, 0a675f172b0e1a171c46dfaa4f1d0f00
-0,        512,        512,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,       1024,       1024,     1024,    18432, 0a6efad6cc824656594d5d7abce1e547
-0,       1536,       1536,     1024,    18432, a1beb9f5afcf72b99671a7cef8c35505
-0,       2048,       2048,     1024,    18432, e73de9b6688ec463178f694540f71d61
-0,       2560,       2560,     1024,    18432, e2e326c2f61d28ad11cea665ea638ae4
+0,       1024,       1024,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
+0,       2048,       2048,     1024,    18432, 0a6efad6cc824656594d5d7abce1e547
+0,       3072,       3072,     1024,    18432, a1beb9f5afcf72b99671a7cef8c35505
+0,       4096,       4096,     1024,    18432, e73de9b6688ec463178f694540f71d61
+0,       5120,       5120,     1024,    18432, e2e326c2f61d28ad11cea665ea638ae4
index cee7307..b24c717 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    18432, 0a675f172b0e1a171c46dfaa4f1d0f00
-0,        512,        512,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,       1024,       1024,     1024,    18432, 0a6efad6cc824656594d5d7abce1e547
-0,       1536,       1536,     1024,    18432, a1beb9f5afcf72b99671a7cef8c35505
-0,       2048,       2048,     1024,    18432, e73de9b6688ec463178f694540f71d61
-0,       2560,       2560,     1024,    18432, e2e326c2f61d28ad11cea665ea638ae4
+0,       1024,       1024,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
+0,       2048,       2048,     1024,    18432, 0a6efad6cc824656594d5d7abce1e547
+0,       3072,       3072,     1024,    18432, a1beb9f5afcf72b99671a7cef8c35505
+0,       4096,       4096,     1024,    18432, e73de9b6688ec463178f694540f71d61
+0,       5120,       5120,     1024,    18432, e2e326c2f61d28ad11cea665ea638ae4
index e957c20..150ab25 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,        512,        512,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,       1024,       1024,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
-0,       1536,       1536,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
-0,       2048,       2048,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
-0,       2560,       2560,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27
+0,       1024,       1024,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
+0,       2048,       2048,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
+0,       3072,       3072,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
+0,       4096,       4096,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
+0,       5120,       5120,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27
index e957c20..150ab25 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,        512,        512,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,       1024,       1024,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
-0,       1536,       1536,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
-0,       2048,       2048,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
-0,       2560,       2560,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27
+0,       1024,       1024,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
+0,       2048,       2048,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
+0,       3072,       3072,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
+0,       4096,       4096,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
+0,       5120,       5120,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27
index e957c20..150ab25 100644 (file)
@@ -4,8 +4,8 @@
 #tb 0: 1/96000
 #stream#, dts,        pts, duration,     size, hash
 0,          0,          0,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,        512,        512,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
-0,       1024,       1024,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
-0,       1536,       1536,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
-0,       2048,       2048,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
-0,       2560,       2560,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27
+0,       1024,       1024,     1024,    18432, f9debe3f07be68533bf0295e3d2ba68a
+0,       2048,       2048,     1024,    18432, f68686e3f6dec5aa00fc8ef495c3a3fa
+0,       3072,       3072,     1024,    18432, 03adab4e2a4a5e9917d29de09e0afb22
+0,       4096,       4096,     1024,    18432, d7d1ab1efd7f2ff45f7374b41abaec51
+0,       5120,       5120,     1024,    18432, fe2aa09319ac1d7017e29fdab6207f27