From bf8ac3f9c7293c49682b6f8c2d1497a1b69eec3f Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 21 Apr 2005 19:07:07 +0000 Subject: gst/qtdemux/qtdemux.c: Add extradata for ALAC. Original commit message from CVS: * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak): Add extradata for ALAC. --- gst/qtdemux/qtdemux.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'gst') diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 7d7e4a09..47699f98 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -2231,8 +2231,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) GST_TYPE_BUFFER, buffer, NULL); #endif } else { - if (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4) == GST_MAKE_FOURCC ('Q', 'D', - 'M', '2')) { + if (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4) == + GST_MAKE_FOURCC ('Q', 'D', 'M', '2')) { gint len = QTDEMUX_GUINT32_GET (stsd->data); if (len > 0x4C) { @@ -2244,6 +2244,23 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) "codec_data", GST_TYPE_BUFFER, buf, NULL); gst_buffer_unref (buf); } + gst_caps_set_simple (stream->caps, + "samplesize", G_TYPE_INT, samplesize, NULL); + } else if (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4) == + GST_MAKE_FOURCC ('a', 'l', 'a', 'c')) { + gint len = QTDEMUX_GUINT32_GET (stsd->data); + + if (len > 0x34) { + GstBuffer *buf = gst_buffer_new_and_alloc (len - 0x34); + + memcpy (GST_BUFFER_DATA (buf), + (guint8 *) stsd->data + 0x34, len - 0x34); + gst_caps_set_simple (stream->caps, + "codec_data", GST_TYPE_BUFFER, buf, NULL); + gst_buffer_unref (buf); + } + gst_caps_set_simple (stream->caps, + "samplesize", G_TYPE_INT, samplesize, NULL); } } GST_INFO ("type " GST_FOURCC_FORMAT " caps %" GST_PTR_FORMAT, -- cgit v1.2.1