movenc: Factorize a function for finding a metadata entry and the associated language

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2016-05-18 13:18:32 +03:00
parent daec1651f1
commit f12a705ee5
1 changed files with 19 additions and 7 deletions

View File

@ -2004,16 +2004,17 @@ static int mov_write_string_tag(AVIOContext *pb, const char *name,
return size; return size;
} }
static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb, static AVDictionaryEntry *get_metadata_lang(AVFormatContext *s,
const char *name, const char *tag, const char *tag, int *lang)
int long_style)
{ {
int l, lang = 0, len, len2; int l, len, len2;
AVDictionaryEntry *t, *t2 = NULL; AVDictionaryEntry *t, *t2 = NULL;
char tag2[16]; char tag2[16];
*lang = 0;
if (!(t = av_dict_get(s->metadata, tag, NULL, 0))) if (!(t = av_dict_get(s->metadata, tag, NULL, 0)))
return 0; return NULL;
len = strlen(t->key); len = strlen(t->key);
snprintf(tag2, sizeof(tag2), "%s-", tag); snprintf(tag2, sizeof(tag2), "%s-", tag);
@ -2021,10 +2022,21 @@ static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb,
len2 = strlen(t2->key); len2 = strlen(t2->key);
if (len2 == len + 4 && !strcmp(t->value, t2->value) if (len2 == len + 4 && !strcmp(t->value, t2->value)
&& (l = ff_mov_iso639_to_lang(&t2->key[len2 - 3], 1)) >= 0) { && (l = ff_mov_iso639_to_lang(&t2->key[len2 - 3], 1)) >= 0) {
lang = l; *lang = l;
break; 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); return mov_write_string_tag(pb, name, t->value, lang, long_style);
} }