diff options
author | Anton Khirnov <anton@khirnov.net> | 2021-05-08 13:02:33 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2021-05-14 11:15:13 +0200 |
commit | aa726eaed9848bcf6f615d2d9e6e5dd6174ad570 (patch) | |
tree | 9c33f048ed9d2e530d80c92399062f17b59d92bf /libavcodec | |
parent | 0bdd677c5f389083268c02451fc95c4265a1ac76 (diff) | |
download | ffmpeg-aa726eaed9848bcf6f615d2d9e6e5dd6174ad570.tar.gz |
lavc/pngdec: fix updating reference frames for APNG_DISPOSE_OP_BACKGROUND
They should be treated the same as APNG_DISPOSE_OP_NONE.
Broken in 5663301560.
Fixes #9184.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/pngdec.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index f2e6f689b0..16c4c3a283 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -1622,7 +1622,7 @@ static int decode_frame_apng(AVCodecContext *avctx, if (!(avctx->active_thread_type & FF_THREAD_FRAME)) { if (s->dispose_op == APNG_DISPOSE_OP_PREVIOUS) { ff_thread_release_buffer(avctx, &s->picture); - } else if (s->dispose_op == APNG_DISPOSE_OP_NONE) { + } else { ff_thread_release_buffer(avctx, &s->last_picture); FFSWAP(ThreadFrame, s->picture, s->last_picture); } @@ -1671,8 +1671,8 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src) pdst->hdr_state |= psrc->hdr_state; } - src_frame = psrc->dispose_op == APNG_DISPOSE_OP_NONE ? - &psrc->picture : &psrc->last_picture; + src_frame = psrc->dispose_op == APNG_DISPOSE_OP_PREVIOUS ? + &psrc->last_picture : &psrc->picture; ff_thread_release_buffer(dst, &pdst->last_picture); if (src_frame && src_frame->f->data[0]) { |