lavf: move RIFF INFO tag writing from avienc to riff

It will be useful in the wav muxer.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
Victor Vasiliev
2011-11-25 23:29:12 +04:00
committed by Anton Khirnov
parent a119c64e38
commit 71e92414bf
3 changed files with 44 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
/*
* RIFF codec tags
* RIFF common functions and data
* Copyright (c) 2000 Fabrice Bellard
*
* This file is part of Libav.
@@ -708,3 +708,33 @@ int ff_read_riff_info(AVFormatContext *s, int64_t size)
return 0;
}
void ff_riff_write_info_tag(AVIOContext *pb, const char *tag, const char *str)
{
int len = strlen(str);
if (len > 0) {
len++;
ffio_wfourcc(pb, tag);
avio_wl32(pb, len);
avio_put_str(pb, str);
if (len & 1)
avio_w8(pb, 0);
}
}
void ff_riff_write_info(AVFormatContext *s)
{
AVIOContext *pb = s->pb;
int i;
int64_t list_pos;
AVDictionaryEntry *t = NULL;
list_pos = ff_start_tag(pb, "LIST");
ffio_wfourcc(pb, "INFO");
ff_metadata_conv(&s->metadata, ff_riff_info_conv, NULL);
for (i = 0; *ff_riff_tags[i]; i++) {
if ((t = av_dict_get(s->metadata, ff_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);
}