qtdemux: support some more mpeg-4 fourcc variants
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 10 Jan 2011 11:34:22 +0000 (12:34 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 24 Jan 2011 21:23:56 +0000 (22:23 +0100)
gst/qtdemux/qtdemux.c
gst/qtdemux/qtdemux_fourcc.h

index 209f9e2..2076ba9 100644 (file)
@@ -4689,12 +4689,15 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer,
       }
       case FOURCC_mp4v:
       case FOURCC_MP4V:
+      case FOURCC_fmp4:
+      case FOURCC_FMP4:
       {
         const guint8 *buf;
         guint32 version;
         int tlen;
 
-        GST_DEBUG_OBJECT (qtdemux, "parsing in mp4v");
+        GST_DEBUG_OBJECT (qtdemux, "parsing in %" GST_FOURCC_FORMAT,
+            GST_FOURCC_ARGS (fourcc));
         version = QT_UINT32 (buffer + 16);
         GST_DEBUG_OBJECT (qtdemux, "version %08x", version);
         if (1 || version == 0x00000000) {
@@ -6439,13 +6442,17 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
         }
         case FOURCC_mp4v:
         case FOURCC_MP4V:
+        case FOURCC_fmp4:
+        case FOURCC_FMP4:
         {
           GNode *glbl;
 
-          GST_DEBUG_OBJECT (qtdemux, "found mp4v");
+          GST_DEBUG_OBJECT (qtdemux, "found %" GST_FOURCC_FORMAT,
+              GST_FOURCC_ARGS (fourcc));
 
           /* codec data might be in glbl extension atom */
-          glbl = qtdemux_tree_get_child_by_type (mp4v, FOURCC_glbl);
+          glbl = mp4v ?
+              qtdemux_tree_get_child_by_type (mp4v, FOURCC_glbl) : NULL;
           if (glbl) {
             guint8 *data;
             GstBuffer *buf;
@@ -6463,6 +6470,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
               gst_buffer_unref (buf);
             }
           }
+          break;
         }
         case FOURCC_mjp2:
         {
index d7875cc..29ad155 100644 (file)
@@ -75,6 +75,8 @@ G_BEGIN_DECLS
 #define FOURCC_mp4a     GST_MAKE_FOURCC('m','p','4','a')
 #define FOURCC_mp4v     GST_MAKE_FOURCC('m','p','4','v')
 #define FOURCC_MP4V     GST_MAKE_FOURCC('M','P','4','V')
+#define FOURCC_fmp4     GST_MAKE_FOURCC('f','m','p','4')
+#define FOURCC_FMP4     GST_MAKE_FOURCC('F','M','P','4')
 #define FOURCC_glbl     GST_MAKE_FOURCC('g','l','b','l')
 #define FOURCC_wave     GST_MAKE_FOURCC('w','a','v','e')
 #define FOURCC_appl     GST_MAKE_FOURCC('a','p','p','l')