diff options
author | Martin Storsjö <martin@martin.st> | 2016-05-18 13:18:32 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2016-05-19 10:46:54 +0300 |
commit | f12a705ee570e16ca692c66b62821a2dbdf82566 (patch) | |
tree | 4f596e24931c0779c78ff831a6cefcfb44d170d5 /libavformat/movenc.c | |
parent | daec1651f1c0f8f8e704db375a2ecb364a722fa1 (diff) | |
download | ffmpeg-f12a705ee570e16ca692c66b62821a2dbdf82566.tar.gz |
movenc: Factorize a function for finding a metadata entry and the associated language
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/movenc.c')
-rw-r--r-- | libavformat/movenc.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 72ec4cdfaa..8f014d22d5 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2004,16 +2004,17 @@ static int mov_write_string_tag(AVIOContext *pb, const char *name, return size; } -static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb, - const char *name, const char *tag, - int long_style) +static AVDictionaryEntry *get_metadata_lang(AVFormatContext *s, + const char *tag, int *lang) { - int l, lang = 0, len, len2; + int l, len, len2; AVDictionaryEntry *t, *t2 = NULL; char tag2[16]; + *lang = 0; + if (!(t = av_dict_get(s->metadata, tag, NULL, 0))) - return 0; + return NULL; len = strlen(t->key); snprintf(tag2, sizeof(tag2), "%s-", tag); @@ -2021,10 +2022,21 @@ static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb, len2 = strlen(t2->key); if (len2 == len + 4 && !strcmp(t->value, t2->value) && (l = ff_mov_iso639_to_lang(&t2->key[len2 - 3], 1)) >= 0) { - lang = l; - break; + *lang = l; + return t; } } + return t; +} + +static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb, + const char *name, const char *tag, + int long_style) +{ + int lang; + AVDictionaryEntry *t = get_metadata_lang(s, tag, &lang); + if (!t) + return 0; return mov_write_string_tag(pb, name, t->value, lang, long_style); } |