Commit 661facb8 authored by Nick Renieris's avatar Nick Renieris Committed by Paul B Mahol

libavcodec/tiff: Process SubIFDs tag with multiple entries

SubIFDs that were part of more than single-sized "SubIFDs" tags were
being ignored due to existing code ignoring that case.

This patch makes is so the first entry is read, which is not ideal
but enough for some DNG images present in the wild to be decodeable
More specifically, the first SubIFD which we would process with this
patch is the main image and the second one is a second thumbnail,
which is not as important to decode.

In DNG images with the .tiff extension, it solves the issue where
the TIFF thumbnail in IFD 0 was incorrectly parsed (related
confusion: [1]).

Embedded thumbnails for DNG images can still be decoded with the
"-thumbnail" option.

Related to ticket: https://trac.ffmpeg.org/ticket/4364

[1]: https://superuser.com/questions/546879/creating-video-from-dng-images-with-ffmpegSigned-off-by: 's avatarNick Renieris <velocityra@gmail.com>
parent a7e018b0
......@@ -1090,7 +1090,10 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
s->predictor = value;
break;
case TIFF_SUB_IFDS:
s->sub_ifd = value;
if (count == 1)
s->sub_ifd = value;
else if (count > 1)
s->sub_ifd = ff_tget(&s->gb, TIFF_LONG, s->le); /** Only get the first SubIFD */
break;
case TIFF_WHITE_LEVEL:
s->white_level = value;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment