|
|
|
@ -367,13 +367,6 @@ const AVMetadataConv ff_riff_info_conv[] = { |
|
|
|
|
{ 0 }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const char ff_riff_tags[][5] = { |
|
|
|
|
"IARL", "IART", "ICMS", "ICMT", "ICOP", "ICRD", "ICRP", "IDIM", "IDPI", |
|
|
|
|
"IENG", "IGNR", "IKEY", "ILGT", "ILNG", "IMED", "INAM", "IPLT", "IPRD", |
|
|
|
|
"IPRT", "ISBJ", "ISFT", "ISHP", "ISRC", "ISRF", "ITCH", |
|
|
|
|
{0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#if CONFIG_MUXERS |
|
|
|
|
int64_t ff_start_tag(AVIOContext *pb, const char *tag) |
|
|
|
|
{ |
|
|
|
@ -575,12 +568,19 @@ void ff_riff_write_info_tag(AVIOContext *pb, const char *tag, const char *str) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char riff_tags[][5] = { |
|
|
|
|
"IARL", "IART", "ICMS", "ICMT", "ICOP", "ICRD", "ICRP", "IDIM", "IDPI", |
|
|
|
|
"IENG", "IGNR", "IKEY", "ILGT", "ILNG", "IMED", "INAM", "IPLT", "IPRD", |
|
|
|
|
"IPRT", "ISBJ", "ISFT", "ISHP", "ISRC", "ISRF", "ITCH", |
|
|
|
|
{0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static int riff_has_valid_tags(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
for (i = 0; *ff_riff_tags[i]; i++) { |
|
|
|
|
if (av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE)) |
|
|
|
|
for (i = 0; *riff_tags[i]; i++) { |
|
|
|
|
if (av_dict_get(s->metadata, riff_tags[i], NULL, AV_DICT_MATCH_CASE)) |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -602,8 +602,8 @@ void ff_riff_write_info(AVFormatContext *s) |
|
|
|
|
|
|
|
|
|
list_pos = ff_start_tag(pb, "LIST"); |
|
|
|
|
ffio_wfourcc(pb, "INFO"); |
|
|
|
|
for (i = 0; *ff_riff_tags[i]; i++) { |
|
|
|
|
if ((t = av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE))) |
|
|
|
|
for (i = 0; *riff_tags[i]; i++) { |
|
|
|
|
if ((t = av_dict_get(s->metadata, riff_tags[i], NULL, AV_DICT_MATCH_CASE))) |
|
|
|
|
ff_riff_write_info_tag(s->pb, t->key, t->value); |
|
|
|
|
} |
|
|
|
|
ff_end_tag(pb, list_pos); |
|
|
|
|