From c3dc0b0bf8fe84692ae0c877c6f33880ad7992c5 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Sun, 2 Oct 2022 20:32:34 +0200
Subject: [PATCH] avcodec/tiff: add support for one more tag
Also be less strict about tag order.
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
libavcodec/tiff.c | 9 +++++++--
libavcodec/tiff.h | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
@@ -1264,7 +1264,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
if (ret < 0) {
goto end;
}
- if (tag <= s->last_tag)
+ if (s->avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT && tag <= s->last_tag)
return AVERROR_INVALIDDATA;
// We ignore TIFF_STRIP_SIZE as it is sometimes in the logic but wrong order around TIFF_STRIP_OFFS
@@ -1783,7 +1783,8 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
}
break;
case DNG_AS_SHOT_NEUTRAL:
- if (type != TIFF_RATIONAL)
+ if (type != TIFF_RATIONAL &&
+ type != TIFF_SHORT)
break;
for (int i = 0; i < 3; i++) {
@@ -1845,6 +1846,10 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
}
}
break;
+ case DNG_PRIVATE_DATA:
+ for (int i = 0; i < count; i++)
+ ff_tget(&s->gb, type, s->le);
+ break;
case CINEMADNG_TIME_CODES:
case CINEMADNG_FRAME_RATE:
case CINEMADNG_T_STOP:
@@ -113,6 +113,7 @@ enum DngTags {
DNG_ANALOG_BALANCE = 0xC627,
DNG_AS_SHOT_NEUTRAL = 0xC628,
DNG_AS_SHOT_WHITE_XY = 0xC629,
+ DNG_PRIVATE_DATA = 0xC634,
};
/** list of CinemaDNG tags */
--
2.37.2