[FFmpeg-devel] [PATCH] avcodec/decode: Fix avcodec parameters when bsfs are enable by decoder

Zhao Zhili quinkblack at foxmail.com
Sun Mar 9 05:41:21 EET 2025


> On Mar 9, 2025, at 11:06, Andreas Rheinhardt <andreas.rheinhardt at outlook.com> wrote:
> 
> Zhao Zhili:
>> From: Zhao Zhili <zhilizhao at tencent.com>
>> 
>> BSF can update extradata, e.g., vvc_mp4toannexb. If we don't copy
>> bsf->par_out back to avcodec context, decoder can get extradata in
>> mp4 format, while packets are in annexb format.
>> ---
>> libavcodec/decode.c | 3 +++
>> 1 file changed, 3 insertions(+)
>> 
>> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
>> index c5a577f4f1..95b8c32502 100644
>> --- a/libavcodec/decode.c
>> +++ b/libavcodec/decode.c
>> @@ -206,6 +206,9 @@ static int decode_bsfs_init(AVCodecContext *avctx)
>>         goto fail;
>> 
>>     ret = av_bsf_init(avci->bsf);
>> +    if (ret < 0)
>> +        goto fail;
>> +    ret = avcodec_parameters_to_context(avctx, avci->bsf->par_out);
>>     if (ret < 0)
>>         goto fail;
>> 
> 
> FYI: The same change has been done in f631c328e680 (and 662558f985f508
> in libav) and later reverted in 87588caf8cff (and cacb62f9cbf3). The
> reason was that extradata was owned by the user for decoders. This has
> only been changed very recently in 183c59b4738c last December, but this
> was an API change (without any entry in APIchanges) and I would not be
> surprised if your change would break some users. Does not mean I block
> your patch, though.

Thanks for the information. avcodec_close() will be removed soon, that will
break those users too. This patch can be applied after avcodec_close be
removed.

> 
> An alternative approach is that we add a getter for extradata that the
> decoders that use a bsf known for changing extradata use to access
> extradata.
> 
> - Andreas
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org> with subject "unsubscribe".



More information about the ffmpeg-devel mailing list