Commit ce87711d authored by Hendrik Leppkes's avatar Hendrik Leppkes Committed by Derek Buitenhuis

exif: take a generic log context

The AVCodecContext is only used for logging, so instead take any valid log context.
This allows reusing the exif functions more easily in avformat.
Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
parent 994412fb
...@@ -41,14 +41,14 @@ static const char *exif_get_tag_name(uint16_t id) ...@@ -41,14 +41,14 @@ static const char *exif_get_tag_name(uint16_t id)
} }
static int exif_add_metadata(AVCodecContext *avctx, int count, int type, static int exif_add_metadata(void *logctx, int count, int type,
const char *name, const char *sep, const char *name, const char *sep,
GetByteContext *gb, int le, GetByteContext *gb, int le,
AVDictionary **metadata) AVDictionary **metadata)
{ {
switch(type) { switch(type) {
case 0: case 0:
av_log(avctx, AV_LOG_WARNING, av_log(logctx, AV_LOG_WARNING,
"Invalid TIFF tag type 0 found for %s with size %d\n", "Invalid TIFF tag type 0 found for %s with size %d\n",
name, count); name, count);
return 0; return 0;
...@@ -64,13 +64,13 @@ static int exif_add_metadata(AVCodecContext *avctx, int count, int type, ...@@ -64,13 +64,13 @@ static int exif_add_metadata(AVCodecContext *avctx, int count, int type,
case TIFF_SLONG : case TIFF_SLONG :
case TIFF_LONG : return ff_tadd_long_metadata(count, name, sep, gb, le, metadata); case TIFF_LONG : return ff_tadd_long_metadata(count, name, sep, gb, le, metadata);
default: default:
avpriv_request_sample(avctx, "TIFF tag type (%u)", type); avpriv_request_sample(logctx, "TIFF tag type (%u)", type);
return 0; return 0;
}; };
} }
static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le, static int exif_decode_tag(void *logctx, GetByteContext *gbytes, int le,
int depth, AVDictionary **metadata) int depth, AVDictionary **metadata)
{ {
int ret, cur_pos; int ret, cur_pos;
...@@ -92,7 +92,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le ...@@ -92,7 +92,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le
// store metadata or proceed with next IFD // store metadata or proceed with next IFD
ret = ff_tis_ifd(id); ret = ff_tis_ifd(id);
if (ret) { if (ret) {
ret = avpriv_exif_decode_ifd(avctx, gbytes, le, depth + 1, metadata); ret = avpriv_exif_decode_ifd(logctx, gbytes, le, depth + 1, metadata);
} else { } else {
const char *name = exif_get_tag_name(id); const char *name = exif_get_tag_name(id);
char *use_name = (char*) name; char *use_name = (char*) name;
...@@ -105,7 +105,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le ...@@ -105,7 +105,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le
snprintf(use_name, 7, "0x%04X", id); snprintf(use_name, 7, "0x%04X", id);
} }
ret = exif_add_metadata(avctx, count, type, use_name, NULL, ret = exif_add_metadata(logctx, count, type, use_name, NULL,
gbytes, le, metadata); gbytes, le, metadata);
if (!name) { if (!name) {
...@@ -119,7 +119,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le ...@@ -119,7 +119,7 @@ static int exif_decode_tag(AVCodecContext *avctx, GetByteContext *gbytes, int le
} }
int avpriv_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le, int avpriv_exif_decode_ifd(void *logctx, GetByteContext *gbytes, int le,
int depth, AVDictionary **metadata) int depth, AVDictionary **metadata)
{ {
int i, ret; int i, ret;
...@@ -132,7 +132,7 @@ int avpriv_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le ...@@ -132,7 +132,7 @@ int avpriv_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le
} }
for (i = 0; i < entries; i++) { for (i = 0; i < entries; i++) {
if ((ret = exif_decode_tag(avctx, gbytes, le, depth, metadata)) < 0) { if ((ret = exif_decode_tag(logctx, gbytes, le, depth, metadata)) < 0) {
return ret; return ret;
} }
} }
......
...@@ -164,7 +164,7 @@ static const struct exif_tag tag_list[] = { // JEITA CP-3451 EXIF specification: ...@@ -164,7 +164,7 @@ static const struct exif_tag tag_list[] = { // JEITA CP-3451 EXIF specification:
/** Recursively decodes all IFD's and /** Recursively decodes all IFD's and
* adds included TAGS into the metadata dictionary. */ * adds included TAGS into the metadata dictionary. */
int avpriv_exif_decode_ifd(AVCodecContext *avctx, GetByteContext *gbytes, int le, int avpriv_exif_decode_ifd(void *logctx, GetByteContext *gbytes, int le,
int depth, AVDictionary **metadata); int depth, AVDictionary **metadata);
#endif /* AVCODEC_EXIF_H */ #endif /* AVCODEC_EXIF_H */
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