aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonny Yang <work@kota.moe>2015-07-19 20:20:56 +0000
committerPaul B Mahol <onemda@gmail.com>2015-07-20 13:46:50 +0000
commit0030613d6925406bfef8e1b206bf9731f53c8ccc (patch)
tree933581c9b0a168253f0dcb5b928d6bb8915899e4
parentfdac5ff682f0c8070e5be39a44dd0f29bd0fa435 (diff)
downloadffmpeg-0030613d6925406bfef8e1b206bf9731f53c8ccc.tar.gz
avcodec/apngdec: Fix typos in decoder causing incorrect results
Signed-off-by: Donny Yang <work@kota.moe>
-rw-r--r--libavcodec/pngdec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 60c49758f1..b8011fea59 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -851,13 +851,13 @@ static int decode_fctl_chunk(AVCodecContext *avctx, PNGDecContext *s,
cur_w > s->width - x_offset|| cur_h > s->height - y_offset)
return AVERROR_INVALIDDATA;
- if (sequence_number == 0 && s->dispose_op == APNG_DISPOSE_OP_PREVIOUS) {
+ if (sequence_number == 0 && dispose_op == APNG_DISPOSE_OP_PREVIOUS) {
// No previous frame to revert to for the first frame
// Spec says to just treat it as a APNG_DISPOSE_OP_BACKGROUND
- s->dispose_op = APNG_DISPOSE_OP_BACKGROUND;
+ dispose_op = APNG_DISPOSE_OP_BACKGROUND;
}
- if (s->dispose_op == APNG_BLEND_OP_OVER && !s->has_trns && (
+ if (blend_op == APNG_BLEND_OP_OVER && !s->has_trns && (
avctx->pix_fmt == AV_PIX_FMT_RGB24 ||
avctx->pix_fmt == AV_PIX_FMT_RGB48BE ||
avctx->pix_fmt == AV_PIX_FMT_PAL8 ||
@@ -865,8 +865,8 @@ static int decode_fctl_chunk(AVCodecContext *avctx, PNGDecContext *s,
avctx->pix_fmt == AV_PIX_FMT_GRAY16BE ||
avctx->pix_fmt == AV_PIX_FMT_MONOBLACK
)) {
- // APNG_DISPOSE_OP_OVER is the same as APNG_DISPOSE_OP_SOURCE when there is no alpha channel
- s->dispose_op = APNG_BLEND_OP_SOURCE;
+ // APNG_BLEND_OP_OVER is the same as APNG_BLEND_OP_SOURCE when there is no alpha channel
+ blend_op = APNG_BLEND_OP_SOURCE;
}
s->cur_w = cur_w;
@@ -1283,6 +1283,7 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
pdst->cur_h = psrc->cur_h;
pdst->x_offset = psrc->x_offset;
pdst->y_offset = psrc->y_offset;
+ pdst->has_trns = psrc->has_trns;
pdst->dispose_op = psrc->dispose_op;