avformat/mov: improve timecode calculation
authorPaul B Mahol <onemda@gmail.com>
Thu, 22 Aug 2019 16:14:15 +0000 (18:14 +0200)
committerPaul B Mahol <onemda@gmail.com>
Wed, 28 Aug 2019 14:27:58 +0000 (16:27 +0200)
Fixes timecode calculation for NTSC frame rates.
Fixes ticket #5978.

libavformat/mov.c
tests/ref/fate/copy-trac236

index 8a4cdc4..675b915 100644 (file)
@@ -2304,8 +2304,8 @@ static int mov_parse_stsd_data(MOVContext *c, AVIOContext *pb,
             int val;
             val = AV_RB32(st->codecpar->extradata + 4);
             tmcd_ctx->tmcd_flags = val;
-            st->avg_frame_rate.num = st->codecpar->extradata[16]; /* number of frame */
-            st->avg_frame_rate.den = 1;
+            st->avg_frame_rate.num = AV_RB32(st->codecpar->extradata + 8); /* timescale */
+            st->avg_frame_rate.den = AV_RB32(st->codecpar->extradata + 12); /* frameDuration */
 #if FF_API_LAVF_AVCTX
 FF_DISABLE_DEPRECATION_WARNINGS
             st->codec->time_base = av_inv_q(st->avg_frame_rate);
index 2ac05e6..1583ae5 100644 (file)
@@ -1,4 +1,4 @@
-959a4d78c6c11936e361fc3101a013eb *tests/data/fate/copy-trac236.mov
+984a33c6292e3d35e2cfdfbf66d8e82b *tests/data/fate/copy-trac236.mov
 630860 tests/data/fate/copy-trac236.mov
 #tb 0: 100/2997
 #media_type 0: video