From a69ee153d0f28fab663ecb9363467197e9887008 Mon Sep 17 00:00:00 2001 From: stbenz Date: Wed, 25 Feb 2015 19:02:28 +0100 Subject: [PATCH] transcoding: fix encoder time_base again --- src/plumbing/transcoding.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plumbing/transcoding.c b/src/plumbing/transcoding.c index 2d2667a3..f6fe1ab2 100644 --- a/src/plumbing/transcoding.c +++ b/src/plumbing/transcoding.c @@ -1027,10 +1027,17 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt) octx->width = vs->vid_width ? vs->vid_width : ictx->width; octx->height = vs->vid_height ? vs->vid_height : ictx->height; octx->gop_size = 25; - octx->time_base.den = ictx->time_base.den; - octx->time_base.num = ictx->time_base.num; octx->has_b_frames = ictx->has_b_frames; + // Encoder uses "time_base" for bitrate calculation, but "time_base" from decoder + // will be deprecated in the future, therefore calculate "time_base" from "framerate" if available. + octx->ticks_per_frame = ictx->ticks_per_frame; + if (ictx->framerate.num != 0 && ictx->framerate.den != 0) { + octx->time_base = av_inv_q(av_mul_q(ictx->framerate, av_make_q(ictx->ticks_per_frame, 1))); + } else { + octx->time_base = ictx->time_base; + } + switch (ts->ts_type) { case SCT_MPEG2VIDEO: octx->codec_id = AV_CODEC_ID_MPEG2VIDEO;