[FFmpeg-cvslog] avformat: replace some odd 30-60 rates by higher less odd ones in get_std_framerate ()

Michael Niedermayer git at videolan.org
Sun Nov 30 23:48:07 CET 2014


ffmpeg | branch: release/2.4 | Michael Niedermayer <michaelni at gmx.at> | Fri Nov 21 12:37:59 2014 +0100| [06336ce760257ae2dbe350cd568a3eb45f48147f] | committer: Michael Niedermayer

avformat: replace some odd 30-60 rates by higher less odd ones in  get_std_framerate()

Fixes Ticket4012

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 367c9d33d6dd1e8a85b63e14464e7e08ee1315cc)

Conflicts:

	libavformat/version.h

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=06336ce760257ae2dbe350cd568a3eb45f48147f
---

 libavformat/avformat.h           |    2 +-
 libavformat/utils.c              |   12 +++++++++---
 tests/ref/fate/cdxl-bitline-ham6 |    2 +-
 tests/ref/fate/cdxl-ham8         |    2 +-
 tests/ref/fate/cdxl-pal8         |    2 +-
 tests/ref/fate/vcr2              |    2 +-
 6 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index b915148..ebf04f6 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -916,7 +916,7 @@ typedef struct AVStream {
     /**
      * Stream information used internally by av_find_stream_info()
      */
-#define MAX_STD_TIMEBASES (60*12+6)
+#define MAX_STD_TIMEBASES (30*12+7+6)
     struct {
         int64_t last_dts;
         int64_t duration_gcd;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index e899e4d..d9ffaed 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2743,10 +2743,16 @@ static void compute_chapters_end(AVFormatContext *s)
 
 static int get_std_framerate(int i)
 {
-    if (i < 60 * 12)
+    if (i < 30*12)
         return (i + 1) * 1001;
-    else
-        return ((const int[]) { 24, 30, 60, 12, 15, 48 })[i - 60 * 12] * 1000 * 12;
+    i -= 30*12;
+
+    if (i < 7)
+        return ((const int[]) { 40, 48, 50, 60, 80, 120, 240})[i] * 1001 * 12;
+
+    i -= 7;
+
+    return ((const int[]) { 24, 30, 60, 12, 15, 48 })[i] * 1000 * 12;
 }
 
 /* Is the time base unreliable?
diff --git a/tests/ref/fate/cdxl-bitline-ham6 b/tests/ref/fate/cdxl-bitline-ham6
index 8060f06..9ba7404 100644
--- a/tests/ref/fate/cdxl-bitline-ham6
+++ b/tests/ref/fate/cdxl-bitline-ham6
@@ -1,4 +1,4 @@
-#tb 0: 12/601
+#tb 0: 1/50
 0,          0,          0,        1,    63180, 0xcda82c16
 0,          1,          1,        1,    63180, 0xa6097bf9
 0,          2,          2,        1,    63180, 0x4c2fb091
diff --git a/tests/ref/fate/cdxl-ham8 b/tests/ref/fate/cdxl-ham8
index 269f1f3..1eebea3 100644
--- a/tests/ref/fate/cdxl-ham8
+++ b/tests/ref/fate/cdxl-ham8
@@ -1,2 +1,2 @@
-#tb 0: 3/158
+#tb 0: 12/281
 0,          0,          0,        1,    67584, 0xce0cade5
diff --git a/tests/ref/fate/cdxl-pal8 b/tests/ref/fate/cdxl-pal8
index 82d4d63..b2fb045 100644
--- a/tests/ref/fate/cdxl-pal8
+++ b/tests/ref/fate/cdxl-pal8
@@ -1,4 +1,4 @@
-#tb 0: 12/601
+#tb 0: 1/50
 0,          0,          0,        1,    67584, 0x5eae629b
 0,          1,          1,        1,    67584, 0x32591227
 0,          2,          2,        1,    67584, 0x4e4424c7
diff --git a/tests/ref/fate/vcr2 b/tests/ref/fate/vcr2
index 521e55f..f7e1540 100644
--- a/tests/ref/fate/vcr2
+++ b/tests/ref/fate/vcr2
@@ -1,4 +1,4 @@
-#tb 0: 16701/250000
+#tb 0: 1001/15000
 0,          0,          0,        1,    38016, 0x50e93e0d
 0,          1,          1,        1,    38016, 0x6ac8627d
 0,          2,          2,        1,    38016, 0x6f38661e



More information about the ffmpeg-cvslog mailing list