summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2016-05-18 13:18:32 +0300
committerMartin Storsjö <martin@martin.st>2016-05-19 10:46:54 +0300
commitf12a705ee570e16ca692c66b62821a2dbdf82566 (patch)
tree4f596e24931c0779c78ff831a6cefcfb44d170d5
parentdaec1651f1c0f8f8e704db375a2ecb364a722fa1 (diff)
movenc: Factorize a function for finding a metadata entry and the associated language
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--libavformat/movenc.c26
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);
}