summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorKari Lentz <kari.k.lentz@gmail.com>2012-08-24 15:37:47 -0400
committerMichael Niedermayer <michaelni@gmx.at>2012-08-27 19:06:32 +0200
commitbe862c0dac356dc94451f64469c8abc866d8e00e (patch)
tree11feb8baa9c5c4b6f5d7d160d28fb2011f8f8c02 /libavformat
parent237f53ce85262cd86f158d884e3f84194e574aa6 (diff)
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 <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/movenc.c19
1 files changed, 19 insertions, 0 deletions
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);
}