[FFmpeg-cvslog] avcodec/librav1e: Use the framerate when available for ratecontrol

Derek Buitenhuis git at videolan.org
Fri May 1 22:01:01 EEST 2020


ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Thu Apr 30 20:06:43 2020 +0100| [3c740f2d9f573542313ea64d7ab45fd1669ee511] | committer: Derek Buitenhuis

avcodec/librav1e: Use the framerate when available for ratecontrol

Rav1e currently uses the time base given to it only for ratecontrol... where
the inverse is taken and used as a framerate. So, do what we do in other wrappers
and use the framerate if we can.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>

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

 libavcodec/librav1e.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/libavcodec/librav1e.c b/libavcodec/librav1e.c
index b8b1b4f8f1..b0ff60d8c7 100644
--- a/libavcodec/librav1e.c
+++ b/libavcodec/librav1e.c
@@ -186,10 +186,21 @@ static av_cold int librav1e_encode_init(AVCodecContext *avctx)
         return AVERROR_EXTERNAL;
     }
 
-    rav1e_config_set_time_base(cfg, (RaRational) {
-                               avctx->time_base.num * avctx->ticks_per_frame,
-                               avctx->time_base.den
-                               });
+    /*
+     * Rav1e currently uses the time base given to it only for ratecontrol... where
+     * the inverse is taken and used as a framerate. So, do what we do in other wrappers
+     * and use the framerate if we can.
+     */
+    if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
+        rav1e_config_set_time_base(cfg, (RaRational) {
+                                   avctx->framerate.den, avctx->framerate.num
+                                   });
+    } else {
+        rav1e_config_set_time_base(cfg, (RaRational) {
+                                   avctx->time_base.num * avctx->ticks_per_frame,
+                                   avctx->time_base.den
+                                   });
+    }
 
     if (avctx->flags & AV_CODEC_FLAG_PASS2) {
         if (!avctx->stats_in) {



More information about the ffmpeg-cvslog mailing list