diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-24 20:50:22 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-29 12:19:47 +0200 |
commit | 7859e89ff0f9b3e701284230d275c59d8a5d615a (patch) | |
tree | 6f5295208efc2d33c8b32da8d5024528203d646c | |
parent | d87ff555025e90ef285425216c29be95034e2485 (diff) | |
download | ffmpeg-7859e89ff0f9b3e701284230d275c59d8a5d615a.tar.gz |
avcodec/tiff_common: add ff_tadd_bytes_metadata()
The le argument is passed so the function has the same prototype as the
other similar functions. It is otherwise unused
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/tiff_common.c | 31 | ||||
-rw-r--r-- | libavcodec/tiff_common.h | 6 |
2 files changed, 37 insertions, 0 deletions
diff --git a/libavcodec/tiff_common.c b/libavcodec/tiff_common.c index b7bd587bbd..130093547e 100644 --- a/libavcodec/tiff_common.c +++ b/libavcodec/tiff_common.c @@ -207,6 +207,37 @@ int ff_tadd_shorts_metadata(int count, const char *name, const char *sep, } +int ff_tadd_bytes_metadata(int count, const char *name, const char *sep, + GetByteContext *gb, int le, AVDictionary **metadata) +{ + AVBPrint bp; + char *ap; + int i; + + if (count >= INT_MAX / sizeof(int8_t) || count <= 0) + return AVERROR_INVALIDDATA; + if (bytestream2_get_bytes_left(gb) < count * sizeof(int8_t)) + return AVERROR_INVALIDDATA; + if (!sep) sep = ", "; + + av_bprint_init(&bp, 10 * count, AV_BPRINT_SIZE_AUTOMATIC); + + for (i = 0; i < count; i++) { + av_bprintf(&bp, "%s%i", (i ? sep : ""), bytestream2_get_byte(gb)); + } + + if ((i = av_bprint_finalize(&bp, &ap))) { + return i; + } + if (!ap) { + return AVERROR(ENOMEM); + } + + av_dict_set(metadata, name, ap, AV_DICT_DONT_STRDUP_VAL); + + return 0; +} + int ff_tadd_string_metadata(int count, const char *name, GetByteContext *gb, int le, AVDictionary **metadata) { diff --git a/libavcodec/tiff_common.h b/libavcodec/tiff_common.h index 2a2cb3f8e6..01a7b0891b 100644 --- a/libavcodec/tiff_common.h +++ b/libavcodec/tiff_common.h @@ -123,6 +123,12 @@ int ff_tadd_doubles_metadata(int count, const char *name, const char *sep, int ff_tadd_shorts_metadata(int count, const char *name, const char *sep, GetByteContext *gb, int le, AVDictionary **metadata); +/** Adds count bytes converted to a string + * into the metadata dictionary. + */ +int ff_tadd_bytes_metadata(int count, const char *name, const char *sep, + GetByteContext *gb, int le, AVDictionary **metadata); + /** Adds a string of count characters * into the metadata dictionary. */ |