frontends/va: set vbv buffer size same as target bitrate in cbr mode

video buffering verifier (vbv) buffer size must be set same as
target bitrate to achieve constant bitrate.

Signed-off-by: Sajeesh Sidharthan <sajeesh.sidharthan@amd.com>
Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Reviewed-by: Veerabadhran Gopalakrishnan <Veerabadhran.Gopalakrishnan@amd.com>
Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19695>
This commit is contained in:
Sajeesh Sidharthan 2022-11-11 07:17:56 -08:00 committed by Marge Bot
parent 3e19eb59a6
commit ce97fa9349

View file

@ -252,12 +252,17 @@ vlVaHandleVAEncMiscParameterTypeRateControlH264(vlVaContext *context, VAEncMiscP
context->desc.h264enc.rate_ctrl[temporal_id].fill_data_enable = !(rc->rc_flags.bits.disable_bit_stuffing);
context->desc.h264enc.rate_ctrl[temporal_id].skip_frame_enable = !(rc->rc_flags.bits.disable_frame_skip);
context->desc.h264enc.rate_ctrl[temporal_id].peak_bitrate = rc->bits_per_second;
if (context->desc.h264enc.rate_ctrl[temporal_id].target_bitrate < 2000000)
context->desc.h264enc.rate_ctrl[temporal_id].vbv_buffer_size =
if ((context->desc.h264enc.rate_ctrl[0].rate_ctrl_method == PIPE_H2645_ENC_RATE_CONTROL_METHOD_CONSTANT) ||
(context->desc.h264enc.rate_ctrl[0].rate_ctrl_method == PIPE_H2645_ENC_RATE_CONTROL_METHOD_CONSTANT_SKIP))
context->desc.h264enc.rate_ctrl[temporal_id].vbv_buffer_size =
context->desc.h264enc.rate_ctrl[temporal_id].target_bitrate;
else if (context->desc.h264enc.rate_ctrl[temporal_id].target_bitrate < 2000000)
context->desc.h264enc.rate_ctrl[temporal_id].vbv_buffer_size =
MIN2((context->desc.h264enc.rate_ctrl[0].target_bitrate * 2.75), 2000000);
else
context->desc.h264enc.rate_ctrl[temporal_id].vbv_buffer_size =
context->desc.h264enc.rate_ctrl[0].target_bitrate;
context->desc.h264enc.rate_ctrl[temporal_id].target_bitrate;
context->desc.h264enc.rate_ctrl[temporal_id].max_qp = rc->max_qp;
context->desc.h264enc.rate_ctrl[temporal_id].min_qp = rc->min_qp;