]> git.sesse.net Git - ffmpeg/commitdiff
Implement parsing of the "HandlerName" from th MP4 HDLR atom.
authorHendrik Leppkes <h.leppkes@gmail.com>
Wed, 28 Sep 2011 17:37:45 +0000 (19:37 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 27 Oct 2011 23:37:50 +0000 (01:37 +0200)
This atom typically is used for a track title.
(cherry picked from commit a356137816b4ea20a892d1fb203b11dbfedbc543)

Reviewed-by: Baptiste Coudurier
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mov.c

index 03f01e05d50a1dd904f35275a3596afe2f14e5b2..62d5b3ccdb6052e66c435f00ce145051405b47d5 100644 (file)
@@ -496,6 +496,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     AVStream *st;
     uint32_t type;
     uint32_t av_unused ctype;
+    int title_size;
+    char *title_str;
 
     if (c->fc->nb_streams < 1) // meta before first trak
         return 0;
@@ -525,6 +527,17 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     avio_rb32(pb); /* component flags */
     avio_rb32(pb); /* component flags mask */
 
+    title_size = atom.size - 24;
+    if (title_size > 0) {
+        title_str = av_malloc(title_size + 1); /* Add null terminator */
+        if (!title_str)
+            return AVERROR(ENOMEM);
+        avio_read(pb, title_str, title_size);
+        title_str[title_size] = 0;
+        av_dict_set(&st->metadata, "handler_name", title_str, 0);
+        av_freep(&title_str);
+    }
+
     return 0;
 }