|
|
|
@ -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; |
|
|
|
|