diff mbox

[FFmpeg-devel,V1,2/2] lavc/libx265: Use avctx->framerate first for frame rate setting

Message ID 1556363876-7100-3-git-send-email-mypopydev@gmail.com
State Accepted
Commit 68bac50604a52760ccb9d9dd43f100436fd66b71
Headers show

Commit Message

Jun Zhao April 27, 2019, 11:17 a.m. UTC
From: Jun Zhao <barryjzhao@tencent.com>

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>
---
 libavcodec/libx265.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
diff mbox

Patch

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);