[Mesa-dev] [PATCH] st/va: enable vbr rate control for vaapi encode

Christian König deathsimple at vodafone.de
Wed Sep 7 07:02:02 UTC 2016


Am 06.09.2016 um 22:39 schrieb boyuan.zhang at amd.com:
> From: Boyuan Zhang <boyuan.zhang at amd.com>
>
> 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 at amd.com>

That was astonishing simple to fix :)

Patch is Reviewed-by: Christian König <christian.koenig at amd.com>.

Leo do you want to push it or should I take care of this?

Regards,
Christian.

> ---
>   src/gallium/state_trackers/va/config.c  | 2 +-
>   src/gallium/state_trackers/va/picture.c | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/va/config.c b/src/gallium/state_trackers/va/config.c
> index 84bf913..4052316 100644
> --- a/src/gallium/state_trackers/va/config.c
> +++ b/src/gallium/state_trackers/va/config.c
> @@ -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;
> diff --git a/src/gallium/state_trackers/va/picture.c b/src/gallium/state_trackers/va/picture.c
> index a283e83..7f3d96d 100644
> --- a/src/gallium/state_trackers/va/picture.c
> +++ b/src/gallium/state_trackers/va/picture.c
> @@ -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);




More information about the mesa-dev mailing list