[FFmpeg-devel] [PATCH v2 06/11] vaapi_encode_vp9: Enable support for more RC modes

Mark Thompson sw at jkqxz.net
Sun Feb 10 20:13:29 EET 2019


On 05/02/2019 13:25, Carl Eugen Hoyos wrote:
> 2019-01-28 0:47 GMT+01:00, Mark Thompson <sw at jkqxz.net>:
>> ---
>>  libavcodec/vaapi_encode_vp9.c | 41 +++++++++++++++++++++--------------
>>  1 file changed, 25 insertions(+), 16 deletions(-)
>>
>> diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c
>> index 97142dcc49..f89fd0d07a 100644
>> --- a/libavcodec/vaapi_encode_vp9.c
>> +++ b/libavcodec/vaapi_encode_vp9.c
>> @@ -178,23 +178,29 @@ static int
>> vaapi_encode_vp9_init_picture_params(AVCodecContext *avctx,
>>
>>  static av_cold int vaapi_encode_vp9_configure(AVCodecContext *avctx)
>>  {
>> +    VAAPIEncodeContext     *ctx = avctx->priv_data;
>>      VAAPIEncodeVP9Context *priv = avctx->priv_data;
>>
>> -    priv->q_idx_p = av_clip(avctx->global_quality, 0, VP9_MAX_QUANT);
>> -    if (avctx->i_quant_factor > 0.0)
>> -        priv->q_idx_idr = av_clip((avctx->global_quality *
>> -                                   avctx->i_quant_factor +
>> -                                   avctx->i_quant_offset) + 0.5,
>> -                                  0, VP9_MAX_QUANT);
>> -    else
>> -        priv->q_idx_idr = priv->q_idx_p;
>> -    if (avctx->b_quant_factor > 0.0)
>> -        priv->q_idx_b = av_clip((avctx->global_quality *
>> -                                 avctx->b_quant_factor +
>> -                                 avctx->b_quant_offset) + 0.5,
>> -                                0, VP9_MAX_QUANT);
>> -    else
>> -        priv->q_idx_b = priv->q_idx_p;
>> +    if (ctx->rc_mode->quality) {
>> +        priv->q_idx_p = av_clip(ctx->rc_quality, 0, VP9_MAX_QUANT);
>> +        if (avctx->i_quant_factor > 0.0)
>> +            priv->q_idx_idr =
>> +                av_clip((avctx->i_quant_factor * priv->q_idx_p  +
>> +                         avctx->i_quant_offset) + 0.5,
>> +                        0, VP9_MAX_QUANT);
>> +        else
>> +            priv->q_idx_idr = priv->q_idx_p;
>> +        if (avctx->b_quant_factor > 0.0)
>> +            priv->q_idx_b =
>> +                av_clip((avctx->b_quant_factor * priv->q_idx_p  +
>> +                         avctx->b_quant_offset) + 0.5,
>> +                        0, VP9_MAX_QUANT);
>> +        else
>> +            priv->q_idx_b = priv->q_idx_p;
> 
> I will not work on this code, so I shouldn't care but this
> is an exceptional example for an unreadable patch.

Yeah, that's probably fair.  I've split this into functional and cosmetic parts in a new version.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list