summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJun Zhao <barryjzhao@tencent.com>2019-04-27 18:52:57 +0800
committerJun Zhao <barryjzhao@tencent.com>2019-05-11 00:10:55 +0800
commit68bac50604a52760ccb9d9dd43f100436fd66b71 (patch)
tree678ddd8e9b3070baee2778278fb27201cc56f9e8
parent1e6338c2da7779f68c28cdb4d46ef0729d464bc0 (diff)
downloadffmpeg-streaming-68bac50604a52760ccb9d9dd43f100436fd66b71.zip
ffmpeg-streaming-68bac50604a52760ccb9d9dd43f100436fd66b71.tar.gz
lavc/libx265: Use avctx->framerate first for frame rate setting
perfer avctx->framerate first than use avctx->time_base when setting the frame rate to encoder. 1/time_base is not the average frame rate if the frame rate is not constant, so use avctx->framerate if the value is not zero. Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
-rw-r--r--libavcodec/libx265.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index fe39f45..07bca81 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -110,8 +110,13 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
}
ctx->params->frameNumThreads = avctx->thread_count;
- ctx->params->fpsNum = avctx->time_base.den;
- ctx->params->fpsDenom = avctx->time_base.num * avctx->ticks_per_frame;
+ if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
+ ctx->params->fpsNum = avctx->framerate.num;
+ ctx->params->fpsDenom = avctx->framerate.den;
+ } else {
+ ctx->params->fpsNum = avctx->time_base.den;
+ ctx->params->fpsDenom = avctx->time_base.num * avctx->ticks_per_frame;
+ }
ctx->params->sourceWidth = avctx->width;
ctx->params->sourceHeight = avctx->height;
ctx->params->bEnablePsnr = !!(avctx->flags & AV_CODEC_FLAG_PSNR);
OpenPOWER on IntegriCloud