[FFmpeg-devel] [PATCH] avcodec/decode: Fix avcodec parameters when bsfs are enable by decoder
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sun Mar 9 05:06:20 EET 2025
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.
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
More information about the ffmpeg-devel
mailing list