You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
lavc/libopenh264enc: use framerate if available
Respecting the framerate in the libopenh264enc codec context. Both the libx264 and libx265 encoders already contain similar logic to first check the framerate before falling back to the timebase. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
This commit is contained in:
@@ -156,7 +156,16 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
|
||||
|
||||
(*s->encoder)->GetDefaultParams(s->encoder, ¶m);
|
||||
|
||||
param.fMaxFrameRate = 1/av_q2d(avctx->time_base);
|
||||
if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
|
||||
param.fMaxFrameRate = av_q2d(avctx->framerate);
|
||||
} else {
|
||||
if (avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Could not set framerate for libopenh264enc: integer overflow\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
param.fMaxFrameRate = 1.0 / av_q2d(avctx->time_base) / FFMAX(avctx->ticks_per_frame, 1);
|
||||
}
|
||||
param.iPicWidth = avctx->width;
|
||||
param.iPicHeight = avctx->height;
|
||||
param.iTargetBitrate = avctx->bit_rate > 0 ? avctx->bit_rate : TARGET_BITRATE_DEFAULT;
|
||||
|
Reference in New Issue
Block a user