png: disable broken MMX/SIMD code for bpp <= 2
authorVittorio Giovara <vittorio.giovara@gmail.com>
Fri, 1 Aug 2014 18:13:55 +0000 (19:13 +0100)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Mon, 4 Aug 2014 11:57:38 +0000 (12:57 +0100)
The decoder was producing different results when ASM was disabled.
Based on a long debug session with Kostya.

libavcodec/pngdec.c

index 7bc2ad4..0c4c91a 100644 (file)
@@ -240,7 +240,7 @@ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type,
             p      = last[i];
             dst[i] = p + src[i];
         }
-        if (bpp > 1 && size > 4) {
+        if (bpp > 2 && size > 4) {
             /* would write off the end of the array if we let it process
              * the last pixel with bpp=3 */
             int w = bpp == 4 ? size : size - 3;