diff options
Diffstat (limited to 'chromium/third_party/ffmpeg/libavcodec/exif.c')
-rw-r--r-- | chromium/third_party/ffmpeg/libavcodec/exif.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/chromium/third_party/ffmpeg/libavcodec/exif.c b/chromium/third_party/ffmpeg/libavcodec/exif.c index 96464261c10..a980da2a7be 100644 --- a/chromium/third_party/ffmpeg/libavcodec/exif.c +++ b/chromium/third_party/ffmpeg/libavcodec/exif.c @@ -48,9 +48,11 @@ static int exif_add_metadata(AVCodecContext *avctx, int count, int type, { switch(type) { case TIFF_DOUBLE : return ff_tadd_doubles_metadata(count, name, sep, gb, le, metadata); - case TIFF_SHORT : return ff_tadd_shorts_metadata(count, name, sep, gb, le, metadata); + case TIFF_SSHORT : return ff_tadd_shorts_metadata(count, name, sep, gb, le, 1, metadata); + case TIFF_SHORT : return ff_tadd_shorts_metadata(count, name, sep, gb, le, 0, metadata); + case TIFF_SBYTE : return ff_tadd_bytes_metadata(count, name, sep, gb, le, 1, metadata); case TIFF_BYTE : - case TIFF_UNDEFINED: return ff_tadd_bytes_metadata(count, name, sep, gb, le, metadata); + case TIFF_UNDEFINED: return ff_tadd_bytes_metadata(count, name, sep, gb, le, 0, metadata); case TIFF_STRING : return ff_tadd_string_metadata(count, name, gb, le, metadata); case TIFF_SRATIONAL: case TIFF_RATIONAL : return ff_tadd_rational_metadata(count, name, sep, gb, le, metadata); @@ -76,11 +78,16 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le ff_tread_tag(gbytes, le, &id, &type, &count, &cur_pos); + if (!bytestream2_tell(gbytes)) { + bytestream2_seek(gbytes, cur_pos, SEEK_SET); + return 0; + } + // read count values and add it metadata // store metadata or proceed with next IFD ret = ff_tis_ifd(id); if (ret) { - ret = ff_exif_decode_ifd(avctx, gbytes, le, depth + 1, metadata); + ret = avpriv_exif_decode_ifd(avctx, gbytes, le, depth + 1, metadata); } else { const char *name = exif_get_tag_name(id); char *use_name = (char*) name; @@ -107,8 +114,8 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le } -int ff_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le, - int depth, AVDictionary **metadata) +int avpriv_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le, + int depth, AVDictionary **metadata) { int i, ret; int entries; |