diff options
author | James Almer <jamrial@gmail.com> | 2017-10-23 23:39:54 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2017-10-26 00:45:49 -0300 |
commit | ae100046ca32b0b83031a60d0c3cdfc5ceb9f874 (patch) | |
tree | 0722e781f4d58f08136bc73f37681c83e3303bb4 /libavcodec/exif.c | |
parent | 6bd665b7c5798803366b877903fa3bce7f129d05 (diff) | |
download | ffmpeg-ae100046ca32b0b83031a60d0c3cdfc5ceb9f874.tar.gz |
avcodec/exif: remove GetByteContext usage from avpriv_exif_decode_ifd()
This prevents potential ABI issues with GetByteContext.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/exif.c')
-rw-r--r-- | libavcodec/exif.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libavcodec/exif.c b/libavcodec/exif.c index 07ce1741c2..2874772db4 100644 --- a/libavcodec/exif.c +++ b/libavcodec/exif.c @@ -92,7 +92,7 @@ static int exif_decode_tag(void *logctx, GetByteContext *gbytes, int le, // store metadata or proceed with next IFD ret = ff_tis_ifd(id); if (ret) { - ret = avpriv_exif_decode_ifd(logctx, gbytes, le, depth + 1, metadata); + ret = ff_exif_decode_ifd(logctx, gbytes, le, depth + 1, metadata); } else { const char *name = exif_get_tag_name(id); char *use_name = (char*) name; @@ -119,8 +119,8 @@ static int exif_decode_tag(void *logctx, GetByteContext *gbytes, int le, } -int avpriv_exif_decode_ifd(void *logctx, GetByteContext *gbytes, int le, - int depth, AVDictionary **metadata) +int ff_exif_decode_ifd(void *logctx, GetByteContext *gbytes, + int le, int depth, AVDictionary **metadata) { int i, ret; int entries; @@ -140,3 +140,13 @@ int avpriv_exif_decode_ifd(void *logctx, GetByteContext *gbytes, int le, // return next IDF offset or 0x000000000 or a value < 0 for failure return ff_tget_long(gbytes, le); } + +int avpriv_exif_decode_ifd(void *logctx, const uint8_t *buf, int size, + int le, int depth, AVDictionary **metadata) +{ + GetByteContext gb; + + bytestream2_init(&gb, buf, size); + + return ff_exif_decode_ifd(logctx, &gb, le, depth, metadata); +} |