From 48340bbb366aeaa6af94a19c6baa211de4c14a47 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 30 Dec 2012 17:13:28 +0000 Subject: aiffenc: metadata support Signed-off-by: Paul B Mahol --- libavformat/aiffenc.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'libavformat') diff --git a/libavformat/aiffenc.c b/libavformat/aiffenc.c index df6c756b7a..525bd49623 100644 --- a/libavformat/aiffenc.c +++ b/libavformat/aiffenc.c @@ -33,6 +33,22 @@ typedef struct { int64_t ssnd; } AIFFOutputContext; +static void put_meta(AVFormatContext *s, const char *key, uint32_t id) +{ + AVDictionaryEntry *tag; + AVIOContext *pb = s->pb; + + if (tag = av_dict_get(s->metadata, key, NULL, 0)) { + int size = strlen(tag->value); + + avio_wl32(pb, id); + avio_wb32(pb, FFALIGN(size, 2)); + avio_write(pb, tag->value, size); + if (size & 1) + avio_w8(pb, 0); + } +} + static int aiff_write_header(AVFormatContext *s) { AIFFOutputContext *aiff = s->priv_data; @@ -70,6 +86,11 @@ static int aiff_write_header(AVFormatContext *s) ff_mov_write_chan(pb, enc->channel_layout); } + put_meta(s, "title", MKTAG('N', 'A', 'M', 'E')); + put_meta(s, "author", MKTAG('A', 'U', 'T', 'H')); + put_meta(s, "copyright", MKTAG('(', 'c', ')', ' ')); + put_meta(s, "comment", MKTAG('A', 'N', 'N', 'O')); + /* Common chunk */ ffio_wfourcc(pb, "COMM"); avio_wb32(pb, aifc ? 24 : 18); /* size */ -- cgit v1.2.3