avcodec/x86/pngdsp: fix off by 1 error

This fixes artifacts in the last pixel of rows with some widths and pixel formats

Found-by: Dominique Leroux <Dominique.Leroux@autodesk.com>
Tested-by: Dominique Leroux <Dominique.Leroux@autodesk.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/101/head
Michael Niedermayer 10 years ago
parent 41a52740d4
commit ed9be7dd47
  1. 2
      libavcodec/pngdec.c
  2. 2
      libavcodec/x86/pngdsp.asm

@ -274,7 +274,7 @@ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type,
* the last pixel with bpp=3 */ * the last pixel with bpp=3 */
int w = bpp == 4 ? size : size - 3; int w = bpp == 4 ? size : size - 3;
if (w > i) { if (w > i) {
dsp->add_paeth_prediction(dst + i, src + i, last + i, w - i, bpp); dsp->add_paeth_prediction(dst + i, src + i, last + i, size - i, bpp);
i = w; i = w;
} }
} }

@ -157,7 +157,7 @@ cglobal add_png_paeth_prediction, 5, 7, %1, dst, src, top, w, bpp, end, cntr
movh [dstq], m3 movh [dstq], m3
add dstq, bppq add dstq, bppq
cmp dstq, endq cmp dstq, endq
jle .loop jl .loop
mov dstq, [rsp] mov dstq, [rsp]
dec cntrq dec cntrq

Loading…
Cancel
Save