[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