avcodec/librav1e: Use the framerate when available for ratecontrol

Rav1e currently uses the time base given to it only for ratecontrol... where
the inverse is taken and used as a framerate. So, do what we do in other wrappers
and use the framerate if we can.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
Derek Buitenhuis 2020-04-30 20:06:43 +01:00
parent aaadf0dce8
commit 3c740f2d9f
1 changed files with 15 additions and 4 deletions

View File

@ -186,10 +186,21 @@ static av_cold int librav1e_encode_init(AVCodecContext *avctx)
return AVERROR_EXTERNAL;
}
rav1e_config_set_time_base(cfg, (RaRational) {
avctx->time_base.num * avctx->ticks_per_frame,
avctx->time_base.den
});
/*
* Rav1e currently uses the time base given to it only for ratecontrol... where
* the inverse is taken and used as a framerate. So, do what we do in other wrappers
* and use the framerate if we can.
*/
if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
rav1e_config_set_time_base(cfg, (RaRational) {
avctx->framerate.den, avctx->framerate.num
});
} else {
rav1e_config_set_time_base(cfg, (RaRational) {
avctx->time_base.num * avctx->ticks_per_frame,
avctx->time_base.den
});
}
if (avctx->flags & AV_CODEC_FLAG_PASS2) {
if (!avctx->stats_in) {