]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/dpx: Read alternative frame rate from television header
authorHarry Mallon <harry.mallon@codex.online>
Mon, 7 Dec 2020 10:32:10 +0000 (10:32 +0000)
committerPaul B Mahol <onemda@gmail.com>
Thu, 17 Dec 2020 12:02:49 +0000 (13:02 +0100)
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
libavcodec/dpx.c

index b1833ed9ef06af59685ad3c76db30c3057178199..7e3ac0af2e2a1103708aabfc4d88525a5640a683 100644 (file)
@@ -216,10 +216,23 @@ static int decode_frame(AVCodecContext *avctx,
     else
         avctx->sample_aspect_ratio = (AVRational){ 0, 1 };
 
+    /* preferred frame rate from Motion-picture film header */
     if (offset >= 1724 + 4) {
         buf = avpkt->data + 1724;
         i = read32(&buf, endian);
-        if(i) {
+        if(i && i != 0xFFFFFFFF) {
+            AVRational q = av_d2q(av_int2float(i), 4096);
+            if (q.num > 0 && q.den > 0)
+                avctx->framerate = q;
+        }
+    }
+
+    /* alternative frame rate from television header */
+    if (offset >= 1940 + 4 &&
+        !(avctx->framerate.num && avctx->framerate.den)) {
+        buf = avpkt->data + 1940;
+        i = read32(&buf, endian);
+        if(i && i != 0xFFFFFFFF) {
             AVRational q = av_d2q(av_int2float(i), 4096);
             if (q.num > 0 && q.den > 0)
                 avctx->framerate = q;