tiff: support inverted fill_order for packbits compression
authorPaul B Mahol <onemda@gmail.com>
Tue, 28 May 2013 17:20:29 +0000 (17:20 +0000)
committerPaul B Mahol <onemda@gmail.com>
Wed, 29 May 2013 13:43:03 +0000 (13:43 +0000)
Fixes #1995.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavcodec/tiff.c

index 839209b..42cead7 100644 (file)
@@ -549,7 +549,7 @@ static int tiff_unpack_strip(TiffContext *s, uint8_t *dst, int stride,
                     av_log(s->avctx, AV_LOG_ERROR, "Read went out of bounds\n");
                     return AVERROR_INVALIDDATA;
                 }
-                code = (int8_t) * src++;
+                code = s->fill_order ? (int8_t) ff_reverse[*src++]: (int8_t) *src++;
                 if (code >= 0) {
                     code++;
                     if (pixels + code > width) {
@@ -578,6 +578,11 @@ static int tiff_unpack_strip(TiffContext *s, uint8_t *dst, int stride,
                     pixels += code;
                 }
             }
+            if (s->fill_order) {
+                int i;
+                for (i = 0; i < width; i++)
+                    dst[i] = ff_reverse[dst[i]];
+            }
             break;
         case TIFF_LZW:
             pixels = ff_lzw_decode(s->lzw, dst, width);