[FFmpeg-devel] [PATCH 2/2] avcodec/decode: don't discard the buffered packet if the underlying bsf can't take it

Anton Khirnov anton at khirnov.net
Wed Jul 12 12:08:40 EEST 2023


Quoting James Almer (2023-07-12 04:06:44)
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/decode.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
> index 239ad70b41..cd49cca7c2 100644
> --- a/libavcodec/decode.c
> +++ b/libavcodec/decode.c
> @@ -242,7 +242,8 @@ int ff_decode_get_packet(AVCodecContext *avctx, AVPacket *pkt)
>              (!AVPACKET_IS_EMPTY(avci->buffer_pkt) || dc->draining_started)) {
>              ret = av_bsf_send_packet(avci->bsf, avci->buffer_pkt);
>              if (ret < 0) {
> -                av_packet_unref(avci->buffer_pkt);
> +                if (ret != AVERROR(EAGAIN))
> +                    av_packet_unref(avci->buffer_pkt);

It seems very wrong for ff_decode_get_packet() to return EAGAIN when
we have a buffered packet.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list