Fixes decoding packets containing split temporal units, as generated for example by the av1_frame_split bsf.
Signed-off-by: James Almer <jamr...@gmail.com> --- libavcodec/libdav1d.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index c15e98cbd1..55ea9166b6 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -328,6 +328,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) #endif int res; +again: if (!data->sz) { pkt = av_packet_alloc(); @@ -398,10 +399,12 @@ FF_ENABLE_DEPRECATION_WARNINGS res = dav1d_get_picture(dav1d->c, p); if (res < 0) { - if (res == AVERROR(EINVAL)) - res = AVERROR_INVALIDDATA; - else if (res == AVERROR(EAGAIN) && c->internal->draining) + if (res == AVERROR(EAGAIN)) { + if (!c->internal->draining) + goto again; res = AVERROR_EOF; + } else if (res == AVERROR(EINVAL)) + res = AVERROR_INVALIDDATA; return res; } -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".