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>
This commit is contained in:
James Almer
2017-10-23 23:39:54 -03:00
parent 6bd665b7c5
commit ae100046ca
5 changed files with 22 additions and 9 deletions

View File

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