st/va: enable vbr rate control for vaapi encode
This patch enables variable bit-rate for vaapi encoding. According to va.h, target bit-rate equals to maximum bit-rate multiplies by target_percentage. Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
@@ -120,7 +120,7 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en
|
||||
value = VA_RT_FORMAT_YUV420;
|
||||
break;
|
||||
case VAConfigAttribRateControl:
|
||||
value = VA_RC_CQP | VA_RC_CBR;
|
||||
value = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR;
|
||||
break;
|
||||
default:
|
||||
value = VA_ATTRIB_NOT_SUPPORTED;
|
||||
|
||||
@@ -322,7 +322,7 @@ handleVAEncMiscParameterTypeRateControl(vlVaContext *context, VAEncMiscParameter
|
||||
PIPE_H264_ENC_RATE_CONTROL_METHOD_CONSTANT)
|
||||
context->desc.h264enc.rate_ctrl.target_bitrate = rc->bits_per_second;
|
||||
else
|
||||
context->desc.h264enc.rate_ctrl.target_bitrate = rc->bits_per_second * rc->target_percentage;
|
||||
context->desc.h264enc.rate_ctrl.target_bitrate = rc->bits_per_second * rc->target_percentage / 100;
|
||||
context->desc.h264enc.rate_ctrl.peak_bitrate = rc->bits_per_second;
|
||||
if (context->desc.h264enc.rate_ctrl.target_bitrate < 2000000)
|
||||
context->desc.h264enc.rate_ctrl.vbv_buffer_size = MIN2((context->desc.h264enc.rate_ctrl.target_bitrate * 2.75), 2000000);
|
||||
|
||||
Reference in New Issue
Block a user