ffmpeg | branch: master | Jun Zhao <barryjz...@tencent.com> | Sun Jul 26 
19:16:43 2020 +0800| [becfdaaa0961fcdfea5e7be102d59e5861e5adea] | committer: 
Jun Zhao

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ö <mar...@martin.st>
Signed-off-by: Jun Zhao <barryjz...@tencent.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=becfdaaa0961fcdfea5e7be102d59e5861e5adea
---

 libavcodec/libopenh264enc.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index f63aa52348..cf485663e1 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -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;

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to