Patch attached. Very widespread, every NASA TIFF image has an ICC profile embedded, and its almost never sRGB, so this is really needed for proper color display.
>From 1a3cbad82c897110e8ef221aae9733b841a443fc Mon Sep 17 00:00:00 2001 From: Lynne <d...@lynne.ee> Date: Fri, 10 Jan 2020 21:55:19 +0000 Subject: [PATCH] tiffdec: support embedded ICC profiles
--- libavcodec/tiff.c | 13 +++++++++++++ libavcodec/tiff.h | 1 + 2 files changed, 14 insertions(+) diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index 636614aa28..257572b551 100644 --- a/libavcodec/tiff.c +++ b/libavcodec/tiff.c @@ -1218,6 +1218,7 @@ static void set_sar(TiffContext *s, unsigned tag, unsigned num, unsigned den) static int tiff_decode_tag(TiffContext *s, AVFrame *frame) { + AVFrameSideData *sd; unsigned tag, type, count, off, value = 0, value2 = 1; // value2 is a denominator so init. to 1 int i, start; int pos; @@ -1643,6 +1644,18 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame) } } break; + case TIFF_ICC_PROFILE: + if (count >= INT_MAX || count <= 0) + return AVERROR_INVALIDDATA; + if (bytestream2_get_bytes_left(&s->gb) < count) + return AVERROR_INVALIDDATA; + + sd = av_frame_new_side_data(frame, AV_FRAME_DATA_ICC_PROFILE, count); + if (!sd) + return AVERROR(ENOMEM); + + bytestream2_get_bufferu(&s->gb, sd->data, count); + break; case TIFF_ARTIST: ADD_METADATA(count, "artist", NULL); break; diff --git a/libavcodec/tiff.h b/libavcodec/tiff.h index 2184c2c829..c07a5d4fa9 100644 --- a/libavcodec/tiff.h +++ b/libavcodec/tiff.h @@ -92,6 +92,7 @@ enum TiffTags { TIFF_MODEL_TIEPOINT = 0x8482, TIFF_MODEL_PIXEL_SCALE = 0x830E, TIFF_MODEL_TRANSFORMATION= 0x8480, + TIFF_ICC_PROFILE = 0x8773, TIFF_GEO_KEY_DIRECTORY = 0x87AF, TIFF_GEO_DOUBLE_PARAMS = 0x87B0, TIFF_GEO_ASCII_PARAMS = 0x87B1, -- 2.25.0.rc2
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".