ffmpeg | branch: master | Benoit Fouet <benoit.fo...@free.fr> | Fri Nov 28 10:43:01 2014 +0100| [aff50ae1d176edacf7ff3fb24db9d25ebe9a4b2e] | committer: Michael Niedermayer
avcodec/pngdec: do not blend on transparent black There is no need to memset the zlib output buffer, as there is no blending happening there. Instead, do not blend when the dispose operation is set to 'background' (tranparent black). Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aff50ae1d176edacf7ff3fb24db9d25ebe9a4b2e --- libavcodec/pngdec.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 4c9d321..da852c4 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -674,10 +674,6 @@ static int decode_idat_chunk(AVCodecContext *avctx, PNGDecContext *s, s->crow_buf = s->buffer + 15; s->zstream.avail_out = s->crow_size; s->zstream.next_out = s->crow_buf; - - if (avctx->codec_id == AV_CODEC_ID_APNG && - s->dispose_op == APNG_DISPOSE_OP_BACKGROUND) - memset(s->zstream.next_out, 0, s->zstream.avail_out); } s->state |= PNG_IDAT; if ((ret = png_decode_idat(s, length)) < 0) @@ -887,7 +883,7 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s, pd_last += s->image_linesize; } - if (s->blend_op == APNG_BLEND_OP_OVER) { + if (s->dispose_op != APNG_DISPOSE_OP_BACKGROUND && s->blend_op == APNG_BLEND_OP_OVER) { uint8_t ri, gi, bi, ai; if (avctx->pix_fmt == AV_PIX_FMT_RGBA) { _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog