From f12a705ee570e16ca692c66b62821a2dbdf82566 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Wed, 18 May 2016 13:18:32 +0300 Subject: movenc: Factorize a function for finding a metadata entry and the associated language MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö --- libavformat/movenc.c | 26 +++++++++++++++++++------- 1 file 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); } -- cgit v1.2.3