[FFmpeg-devel] [PATCH] lavc/vaapi_encode: Don't return error if the underlying driver doesn't support B frame

Mark Thompson sw at jkqxz.net
Thu Mar 8 02:35:20 EET 2018


On 07/03/18 07:10, Xiang, Haihao wrote:
> 
> Hi Mark,
> 
> Do you have any comment to this patch? FFmpeg-vaapi fails to use low power mode
> for H.264 encoding.

I still want to clean up all of this configuration stuff, but I guess it works ok for now.  So, I fixed the overlong line and applied with a clearer commit message.

Thanks,

- Mark


>> On Wed, 2018-02-07 at 10:31 +0800, Jun Zhao wrote:
>>>
>>> On 2018/2/6 16:17, Haihao Xiang wrote:
>>>> It is possible B frame is not supported for VAEntrypointEncSliceLP and
>>>> the underlying driver has advertised it, so it is better to disable B
>>>> frame instead of returning error for this case
>>>>
>>>> Signed-off-by: Haihao Xiang <haihao.xiang at intel.com>
>>>> ---
>>>>  libavcodec/vaapi_encode.c | 7 +++----
>>>>  1 file changed, 3 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
>>>> index 550ea47991d..e371f5761ee 100644
>>>> --- a/libavcodec/vaapi_encode.c
>>>> +++ b/libavcodec/vaapi_encode.c
>>>> @@ -1094,10 +1094,9 @@ static av_cold int
>>>> vaapi_encode_config_attributes(AVCodecContext *avctx)
>>>>                  goto fail;
>>>>              }
>>>>              if (avctx->max_b_frames > 0 && ref_l1 < 1) {
>>>> -                av_log(avctx, AV_LOG_ERROR, "B frames are not "
>>>> -                       "supported (%#x).\n", attr[i].value);
>>>> -                err = AVERROR(EINVAL);
>>>> -                goto fail;
>>>> +                av_log(avctx, AV_LOG_WARNING, "B frames are not "
>>>> +                       "supported (%#x) by the underlying driver.\n",
>>>> attr[i].value);
>>>> +                avctx->max_b_frames = 0;
>>>
>>> I think check b frames when enable low_power in vaapi_encode_xxx_init()
>>> more better.
>>
>> VAConfigAttribEncMaxRefFrames is applicable for other CODECs and non-low power
>> mode. so I think it is better to handle this case in vaapi_encoder.c
>>
>> Thanks
>> Haihao
>>
>>
>>>>              }
>>>>          }
>>>>          break;


More information about the ffmpeg-devel mailing list