diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index ad4611fb9c..3501c15e22 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -142,12 +142,18 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) } av_fifo_generic_write(dav1d->cache, &pkt, sizeof(pkt), libdav1d_fifo_write); - } else { - data = NULL; } } - res = dav1d_decode(dav1d->c, data, &p); + res = dav1d_send_data(dav1d->c, data); + if (res < 0) { + if (res == -EINVAL) + res = AVERROR_INVALIDDATA; + if (res != -EAGAIN) + return res; + } + + res = dav1d_get_picture(dav1d->c, &p); if (res < 0) { if (res == -EINVAL) res = AVERROR_INVALIDDATA;