diff options
author | James Almer <[email protected]> | 2022-02-01 12:06:14 -0300 |
---|---|---|
committer | James Almer <[email protected]> | 2022-02-01 13:11:11 -0300 |
commit | 15a0ff81c5fc5888a0c4d7c7e24bd2b886bfe109 (patch) | |
tree | 78ee86a37b463fbcc83c737c4da2e42f47348947 | |
parent | c6fa5a8d04a033bb49ae97984c47f0b2d9a7b604 (diff) |
avcodec/libdav1d: free the Dav1dData packet on dav1d_send_data() failure
We still own it on failure, and there's no point trying to feed it again.
This should address the issue reported in dav1d #383 and part of VLC #26259.
Signed-off-by: James Almer <[email protected]>
Reviewed-by: Ronald S. Bultje <[email protected]>
-rw-r--r-- | libavcodec/libdav1d.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index bbb3ec1e6c..279379e481 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -226,8 +226,10 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) if (res < 0) { if (res == AVERROR(EINVAL)) res = AVERROR_INVALIDDATA; - if (res != AVERROR(EAGAIN)) + if (res != AVERROR(EAGAIN)) { + dav1d_data_unref(data); return res; + } } res = dav1d_get_picture(dav1d->c, p); |