summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2020-10-02 12:16:49 +0200
committerPaul B Mahol <onemda@gmail.com>2020-10-07 22:16:35 +0200
commitda5b3d002862d1e105002a6dc1567e6551860896 (patch)
treee492173f8c8018db6e0e5b6beb563795886237b1
parent283f950a65b187c5a38d1c0322b821812c5d8861 (diff)
avcodec/tiff: do not abort decoding if strips are available
Even if such files are invalid, they can be decoded just fine. Also stored tiles may have bigger dimensions than displayed ones, so do not abort decoding in such cases.
-rw-r--r--libavcodec/tiff.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 359d613bb3..9bf08b1900 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -929,8 +929,8 @@ static int dng_decode_jpeg(AVCodecContext *avctx, AVFrame *frame,
s->avctx_mjpeg->height == h / 2 &&
s->avctx_mjpeg->pix_fmt == AV_PIX_FMT_GRAY16LE) {
is_single_comp = 1;
- } else if (s->avctx_mjpeg->width == w &&
- s->avctx_mjpeg->height == h &&
+ } else if (s->avctx_mjpeg->width >= w &&
+ s->avctx_mjpeg->height >= h &&
s->avctx_mjpeg->pix_fmt == (is_u16 ? AV_PIX_FMT_GRAY16 : AV_PIX_FMT_GRAY8)
) {
is_single_comp = 0;
@@ -1923,8 +1923,7 @@ again:
has_strip_bits = s->strippos || s->strips || s->stripoff || s->rps || s->sot || s->sstype || s->stripsize || s->stripsizesoff;
if (has_tile_bits && has_strip_bits) {
- av_log(avctx, AV_LOG_ERROR, "Tiled TIFF is not allowed to strip\n");
- return AVERROR_INVALIDDATA;
+ av_log(avctx, AV_LOG_WARNING, "Tiled TIFF is not allowed to strip\n");
}
/* now we have the data and may start decoding */