From 02258ba529628eb6c4479f3cf3aa65ed497d0c49 Mon Sep 17 00:00:00 2001 From: anaghdin Date: Fri, 1 Apr 2022 15:16:20 -0700 Subject: [PATCH] - In lowdelay VBR is not supported: forces CBR, In RA, CBR is not supported, forces VBR - Limit the max bit rate and target bitrate to 100,000 kbps - Remove frame_rate from API. Inside library frame_rate is always in Q16 format - Fix the seg fault with 2 PASS and max bit rate - Remove frame_rate from CI and gstreamer --- .../gst-plugins-bad/ext/svtav1/gstsvtav1enc.c | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c index 8457233602..a124510b9e 100644 --- a/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c +++ b/subprojects/gst-plugins-bad/ext/svtav1/gstsvtav1enc.c @@ -519,15 +519,11 @@ gst_svtav1enc_configure_svt (GstSvtAv1Enc * svtav1enc) svtav1enc->svt_config->source_height = GST_VIDEO_INFO_HEIGHT (info); svtav1enc->svt_config->frame_rate_numerator = GST_VIDEO_INFO_FPS_N (info)> 0 ? GST_VIDEO_INFO_FPS_N (info) : 1; svtav1enc->svt_config->frame_rate_denominator = GST_VIDEO_INFO_FPS_D (info) > 0 ? GST_VIDEO_INFO_FPS_D (info) : 1; - svtav1enc->svt_config->frame_rate = - svtav1enc->svt_config->frame_rate_numerator / - svtav1enc->svt_config->frame_rate_denominator; - - if (svtav1enc->svt_config->frame_rate < 1000) { - svtav1enc->svt_config->frame_rate = svtav1enc->svt_config->frame_rate << 16; - } - - GST_LOG_OBJECT(svtav1enc, "width %d, height %d, framerate %d", svtav1enc->svt_config->source_width, svtav1enc->svt_config->source_height, svtav1enc->svt_config->frame_rate); + GST_LOG_OBJECT(svtav1enc, + "width %d, height %d, framerate %d", + svtav1enc->svt_config->source_width, + svtav1enc->svt_config->source_height, + svtav1enc->svt_config->frame_rate_numerator / svtav1enc->svt_config->frame_rate_denominator); /* TODO: better handle HDR metadata when GStreamer will have such support * https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/400 */ @@ -831,17 +827,19 @@ gst_svtav1enc_set_format (GstVideoEncoder * encoder, gst_svtav1enc_allocate_svt_buffers (svtav1enc); gst_svtav1enc_start_svt (svtav1enc); - uint32_t fps = (uint32_t)((svtav1enc->svt_config->frame_rate > 1000) ? - svtav1enc->svt_config->frame_rate >> 16 : svtav1enc->svt_config->frame_rate); - fps = fps > 120 ? 120 : fps; - fps = fps < 24 ? 24 : fps; + uint32_t fps = svtav1enc->svt_config->frame_rate_numerator / + svtav1enc->svt_config->frame_rate_denominator; + fps = fps > 120 ? 120 : fps; + fps = fps < 24 ? 24 : fps; - min_latency_frames = ((fps * 5) >> 2); + min_latency_frames = ((fps * 5) >> 2); /* TODO: find a better value for max_latency */ - gst_video_encoder_set_latency (encoder, - min_latency_frames * GST_SECOND / svtav1enc->svt_config->frame_rate, - 3 * GST_SECOND); + gst_video_encoder_set_latency(encoder, + min_latency_frames * GST_SECOND / + (svtav1enc->svt_config->frame_rate_numerator / + svtav1enc->svt_config->frame_rate_denominator), + 3 * GST_SECOND); src_caps = gst_static_pad_template_get_caps (&gst_svtav1enc_src_pad_template);