[FFmpeg-cvslog] r20032 - trunk/libavformat/mov.c

bcoudurier subversion
Sat Sep 26 22:51:38 CEST 2009


Author: bcoudurier
Date: Sat Sep 26 22:51:38 2009
New Revision: 20032

Log:
Export mov/mp4 major and compatible brands as metadata.
Patch by haim alon, haim dot alter at gmail dot com

Modified:
   trunk/libavformat/mov.c

Modified: trunk/libavformat/mov.c
==============================================================================
--- trunk/libavformat/mov.c	Sat Sep 26 21:55:21 2009	(r20031)
+++ trunk/libavformat/mov.c	Sat Sep 26 22:51:38 2009	(r20032)
@@ -490,15 +490,35 @@ static int mov_read_mdat(MOVContext *c, 
     return 0; /* now go for moov */
 }
 
+/* read major brand, minor version and compatible brands and store them as metadata */
 static int mov_read_ftyp(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
 {
-    uint32_t type = get_le32(pb);
+    uint32_t minor_ver;
+    int comp_brand_size;
+    char minor_ver_str[11]; /* 32 bit integer -> 10 digits + null */
+    char* comp_brands_str;
+    uint8_t type[5] = {0};
 
-    if (type != MKTAG('q','t',' ',' '))
+    get_buffer(pb, type, 4);
+    if (strcmp(type, "qt, "))
         c->isom = 1;
     av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char *)&type);
-    get_be32(pb); /* minor version */
-    url_fskip(pb, atom.size - 8);
+    av_metadata_set(&c->fc->metadata, "major_brand", type);
+    minor_ver = get_be32(pb); /* minor version */
+    snprintf(minor_ver_str, sizeof(minor_ver_str), "%d", minor_ver);
+    av_metadata_set(&c->fc->metadata, "minor_version", minor_ver_str);
+
+    comp_brand_size = atom.size - 8;
+    if (comp_brand_size < 0)
+        return -1;
+    comp_brands_str = av_malloc(comp_brand_size + 1); /* Add null terminator */
+    if (!comp_brands_str)
+        return AVERROR(ENOMEM);
+    get_buffer(pb, comp_brands_str, comp_brand_size);
+    comp_brands_str[comp_brand_size] = 0;
+    av_metadata_set(&c->fc->metadata, "compatible_brands", comp_brands_str);
+    av_freep(&comp_brands_str);
+
     return 0;
 }
 



More information about the ffmpeg-cvslog mailing list