[FFmpeg-devel] [PATCH v3 1/3] lavc/decode: Warp get_hw_config function

Mark Thompson sw at jkqxz.net
Thu Sep 8 01:13:15 EEST 2022


On 07/09/2022 09:47, Xiang, Haihao wrote:
> On Wed, 2022-08-31 at 01:20 +0000, Wang, Fei W wrote:
>> On Tue, 2022-08-23 at 16:19 +0800, Fei Wang wrote:
>>> From: Linjie Fu <linjie.fu at intel.com>
>>>
>>> Wrap the procedure of getting the hardware config from a pixel format
>>> into a function.
>>>
>>> Signed-off-by: Linjie Fu <linjie.fu at intel.com>
>>> Signed-off-by: Fei Wang <fei.w.wang at intel.com>
>>> ---
>>>   libavcodec/decode.c | 31 +++++++++++++++++++------------
>>>   1 file changed, 19 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
>>> index 75373989c6..3b69426c09 100644
>>> --- a/libavcodec/decode.c
>>> +++ b/libavcodec/decode.c
>>> @@ -1156,6 +1156,24 @@ static void hwaccel_uninit(AVCodecContext
>>> *avctx)
>>>       av_buffer_unref(&avctx->hw_frames_ctx);
>>>   }
>>>   
>>> +static const AVCodecHWConfigInternal *get_hw_config(AVCodecContext
>>> *avctx, enum AVPixelFormat fmt)
>>> +{
>>> +    const AVCodecHWConfigInternal *hw_config;
>>> +
>>> +    if (!ffcodec(avctx->codec)->hw_configs)
>>> +        return NULL;
>>> +
>>> +    for (int i = 0;; i++) {
>>> +        hw_config = ffcodec(avctx->codec)->hw_configs[i];
>>> +        if (!hw_config)
>>> +            return NULL;
>>> +        if (hw_config->public.pix_fmt == fmt)
>>> +            return hw_config;
>>> +    }
>>> +
>>> +    return NULL;
>>> +}
>>> +
>>>   int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat
>>> *fmt)
>>>   {
>>>       const AVPixFmtDescriptor *desc;
>>> @@ -1213,18 +1231,7 @@ int ff_get_format(AVCodecContext *avctx, const
>>> enum AVPixelFormat *fmt)
>>>               break;
>>>           }
>>>   
>>> -        if (ffcodec(avctx->codec)->hw_configs) {
>>> -            for (i = 0;; i++) {
>>> -                hw_config = ffcodec(avctx->codec)->hw_configs[i];
>>> -                if (!hw_config)
>>> -                    break;
>>> -                if (hw_config->public.pix_fmt == user_choice)
>>> -                    break;
>>> -            }
>>> -        } else {
>>> -            hw_config = NULL;
>>> -        }
>>> -
>>> +        hw_config = get_hw_config(avctx, user_choice);
>>>           if (!hw_config) {
>>>               // No config available, so no extra setup required.
>>>               ret = user_choice;
>>
>> Ping, any more comments on V3?
>>
> 
> The patchset LGTM and works well for me, I'll apply this patchset if no more
> comment.

See <https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2022-September/301124.html>.



More information about the ffmpeg-devel mailing list