Commit 47372caa authored by Jon Morley's avatar Jon Morley Committed by Michael Niedermayer

libavformat/mov.c: Handle timecode from tmcd atom in counter mode

When the timecode value is in counter mode then it is important to use
the timescale and frameduration to calculate the timecode fps.
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 0982077b
......@@ -1658,6 +1658,13 @@ static int mov_parse_stsd_data(MOVContext *c, AVIOContext *pb,
st->codec->flags2 |= CODEC_FLAG2_DROP_FRAME_TIMECODE;
st->codec->time_base.den = st->codec->extradata[16]; /* number of frame */
st->codec->time_base.num = 1;
/* adjust for per frame dur in counter mode */
if (tmcd_ctx->tmcd_flags & 0x0008) {
int timescale = AV_RB32(st->codec->extradata + 8);
int framedur = AV_RB32(st->codec->extradata + 12);
st->codec->time_base.den *= timescale;
st->codec->time_base.num *= framedur;
}
if (size > 30) {
uint32_t len = AV_RB32(st->codec->extradata + 18); /* name atom length */
uint32_t format = AV_RB32(st->codec->extradata + 22);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment