mirror of https://git.ffmpeg.org/ffmpeg.git
tiffdec: support embedded ICC profiles
This commit is contained in:
parent
722547996c
commit
9e01f171f3
|
@ -1218,6 +1218,8 @@ static void set_sar(TiffContext *s, unsigned tag, unsigned num, unsigned den)
|
|||
|
||||
static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
|
||||
{
|
||||
AVFrameSideData *sd;
|
||||
GetByteContext gb_temp;
|
||||
unsigned tag, type, count, off, value = 0, value2 = 1; // value2 is a denominator so init. to 1
|
||||
int i, start;
|
||||
int pos;
|
||||
|
@ -1643,6 +1645,22 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case TIFF_ICC_PROFILE:
|
||||
if (type != TIFF_UNDEFINED)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
gb_temp = s->gb;
|
||||
bytestream2_seek(&gb_temp, SEEK_SET, off);
|
||||
|
||||
if (bytestream2_get_bytes_left(&gb_temp) < 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(&gb_temp, sd->data, count);
|
||||
break;
|
||||
case TIFF_ARTIST:
|
||||
ADD_METADATA(count, "artist", NULL);
|
||||
break;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue