summaryrefslogtreecommitdiff
path: root/libavcodec/tiff.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2013-05-28 17:20:29 +0000
committerPaul B Mahol <onemda@gmail.com>2013-05-29 13:43:03 +0000
commit7984ed87c13df89030c85a531047e6514d9fcdc6 (patch)
treeb9673bbefa046741482759da7986c85776644b5f /libavcodec/tiff.c
parent30d7dcce4c3f2af3c99d2ac05a1ecb6caba076fe (diff)
tiff: support inverted fill_order for packbits compression
Fixes #1995. Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavcodec/tiff.c')
-rw-r--r--libavcodec/tiff.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 839209b736..42cead7e34 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -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);