Browse Source

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>
tags/n4.4
Jun Zhao 5 years ago
parent
commit
becfdaaa09
1 changed files with 10 additions and 1 deletions
  1. +10
    -1
      libavcodec/libopenh264enc.c

+ 10
- 1
libavcodec/libopenh264enc.c View File

@@ -156,7 +156,16 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)

(*s->encoder)->GetDefaultParams(s->encoder, &param);

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;


Loading…
Cancel
Save