[FFmpeg-devel] [PATCH] avcodec/openh264: return (DE|EN)CODER_NOT_FOUND if version check fails
Martin Storsjö
martin at martin.st
Wed Apr 27 11:51:13 EEST 2022
On Wed, 20 Apr 2022, Martin Storsjö wrote:
> On Fri, 18 Feb 2022, Andreas Schneider wrote:
>
>> Signed-off-by: Andreas Schneider <asn at cryptomilk.org>
>> ---
>> libavcodec/libopenh264dec.c | 2 +-
>> libavcodec/libopenh264enc.c | 2 +-
>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c
>> index 7f5e85402a..97d3630df6 100644
>> --- a/libavcodec/libopenh264dec.c
>> +++ b/libavcodec/libopenh264dec.c
>> @@ -56,7 +56,7 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
>> WelsTraceCallback callback_function;
>>
>> if ((err = ff_libopenh264_check_version(avctx)) < 0)
>> - return err;
>> + return AVERROR_DECODER_NOT_FOUND;
>>
>> if (WelsCreateDecoder(&s->decoder)) {
>> av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n");
>> diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
>> index 7c0501a2eb..7649e7b025 100644
>> --- a/libavcodec/libopenh264enc.c
>> +++ b/libavcodec/libopenh264enc.c
>> @@ -137,7 +137,7 @@ static av_cold int svc_encode_init(AVCodecContext
>> *avctx)
>> AVCPBProperties *props;
>>
>> if ((err = ff_libopenh264_check_version(avctx)) < 0)
>> - return err;
>> + return AVERROR_ENCODER_NOT_FOUND;
>>
>> if (WelsCreateSVCEncoder(&s->encoder)) {
>> av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n");
>> --
>> 2.35.1
>
> This looks reasonable to me, so I could push this in a little while if
> there's no more comments on it.
>
> But the patch lacks an explanation of _why_ this is done, in addition to
> _what_ it does. I presume that's because the current error code makes some
> decoder/encoder selection logic error out entirely, instead of continuing
> trying some other codec - is that right? That would really be valuable to
> include in the commit message.
Actually, I don't see anything in the code where returning
AVERROR_DECODER_NOT_FOUND would behave differently than returning
AVERROR(EINVAL) (as I would say it does right now).
So what's the motive for this patch, what does it change in practice?
I guess it changes what error message is printed (which certainly makes
sense to change), but it would be very relevant to know whether this is a
cosmetic change or if it changes something functionally that I haven't
found.
// Martin
More information about the ffmpeg-devel
mailing list