1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

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.
This commit is contained in:
Anton Khirnov 2021-05-08 13:02:33 +02:00
parent 0bdd677c5f
commit aa726eaed9

View File

@ -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]) {