break;
}
case FOURCC_mp4v:
+ case FOURCC_MP4V:
{
const guint8 *buf;
guint32 version;
esds = NULL;
pasp = NULL;
mp4v = qtdemux_tree_get_child_by_type (stsd, FOURCC_mp4v);
+ if (!mp4v)
+ mp4v = qtdemux_tree_get_child_by_type (stsd, FOURCC_MP4V);
/* H264 is MPEG-4 after all,
* and qt seems to put MPEG-4 stuff in there as well */
if (!mp4v)
break;
}
+ case FOURCC_mp4v:
+ case FOURCC_MP4V:
+ {
+ GNode *glbl;
+
+ GST_DEBUG_OBJECT (qtdemux, "found mp4v");
+
+ /* codec data might be in glbl extension atom */
+ glbl = qtdemux_tree_get_child_by_type (mp4v, FOURCC_glbl);
+ if (glbl) {
+ guint8 *data;
+ GstBuffer *buf;
+ gint len;
+
+ GST_DEBUG_OBJECT (qtdemux, "found glbl data in stsd");
+ data = glbl->data;
+ len = QT_UINT32 (data);
+ if (len > 0x8) {
+ len -= 0x8;
+ buf = gst_buffer_new_and_alloc (len);
+ memcpy (GST_BUFFER_DATA (buf), data + 8, len);
+ gst_caps_set_simple (stream->caps,
+ "codec_data", GST_TYPE_BUFFER, buf, NULL);
+ gst_buffer_unref (buf);
+ }
+ }
+ }
case FOURCC_mjp2:
{
/* see annex I of the jpeg2000 spec */
caps = gst_caps_new_simple ("video/x-h263", NULL);
break;
case GST_MAKE_FOURCC ('m', 'p', '4', 'v'):
+ case GST_MAKE_FOURCC ('M', 'P', '4', 'V'):
_codec ("MPEG-4 video");
caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 4,
"systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
#define FOURCC_hint GST_MAKE_FOURCC('h','i','n','t')
#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_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')
#define FOURCC_esds GST_MAKE_FOURCC('e','s','d','s')