summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Fort <marek.fort@chyronhego.com>2014-08-06 16:48:21 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-08-07 20:11:09 +0200
commit4e70104aba4269770c36fc6e0ec975b7a061d028 (patch)
tree616d429ca87d60c8311f2e837ea4d17488bb48ca
parent054c506e3da35471ea92dbedcaaf720d0754f04e (diff)
avformat/movenc: XMP metadata support.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/movenc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 20006ef2b4..86dbe7f30d 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -2395,6 +2395,26 @@ static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,
return size;
}
+static int mov_write_raw_metadata_tag(AVFormatContext *s, AVIOContext *pb,
+ const char *name, const char *key)
+{
+ int len;
+ AVDictionaryEntry *t;
+
+ if (!(t = av_dict_get(s->metadata, key, NULL, 0)))
+ return 0;
+
+ len = strlen(t->value);
+ if (len > 0) {
+ int size = len + 8;
+ avio_wb32(pb, size);
+ ffio_wfourcc(pb, name);
+ avio_write(pb, t->value, len);
+ return size;
+ }
+ return 0;
+}
+
static int ascii_to_wc(AVIOContext *pb, const uint8_t *b)
{
int val;
@@ -2494,6 +2514,7 @@ static int mov_write_udta_tag(AVIOContext *pb, MOVMuxContext *mov,
mov_write_string_metadata(s, pb_buf, "\251cmt", "comment", 0);
mov_write_string_metadata(s, pb_buf, "\251gen", "genre", 0);
mov_write_string_metadata(s, pb_buf, "\251cpy", "copyright", 0);
+ mov_write_raw_metadata_tag(s, pb_buf, "XMP_", "xmp");
} else {
/* iTunes meta data */
mov_write_meta_tag(pb_buf, mov, s);