From be862c0dac356dc94451f64469c8abc866d8e00e Mon Sep 17 00:00:00 2001 From: Kari Lentz Date: Fri, 24 Aug 2012 15:37:47 -0400 Subject: [PATCH] movenc: support for itunes tempo tag Implements support for tmpo atom for mp4 files, typically used to store BPM. -metadata "tmpo=127" as a command line option will record 127 as the BPM in the meta data. Signed-off-by: Michael Niedermayer --- libavformat/movenc.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 695bd436ee..9ccee2c03d 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1913,6 +1913,24 @@ static int mov_write_string_metadata(AVFormatContext *s, AVIOContext *pb, return mov_write_string_tag(pb, name, t->value, lang, long_style); } +/* iTunes bpm number */ +static int mov_write_tmpo_tag(AVIOContext *pb, AVFormatContext *s) +{ + AVDictionaryEntry *t = av_dict_get(s->metadata, "tmpo", NULL, 0); + int size = 0, tmpo = t ? atoi(t->value) : 0; + if (tmpo) { + size = 26; + avio_wb32(pb, size); + ffio_wfourcc(pb, "tmpo"); + avio_wb32(pb, size-8); /* size */ + ffio_wfourcc(pb, "data"); + avio_wb32(pb, 0x15); //type specifier + avio_wb32(pb, 0); + avio_wb16(pb, tmpo); // data + } + return size; +} + /* iTunes track number */ static int mov_write_trkn_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatContext *s) @@ -1960,6 +1978,7 @@ static int mov_write_ilst_tag(AVIOContext *pb, MOVMuxContext *mov, mov_write_string_metadata(s, pb, "tven", "episode_id",1); mov_write_string_metadata(s, pb, "tvnn", "network" , 1); mov_write_trkn_tag(pb, mov, s); + mov_write_tmpo_tag(pb, s); return update_size(pb, pos); }