mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-07 06:52:41 +00:00
Ronald's patch applied. see bug #326318.
Original commit message from CVS: Ronald's patch applied. see bug #326318.
This commit is contained in:
parent
e8cbc6feed
commit
017bbb0338
2 changed files with 25 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2006-01-18 Edgard Lima <edgard.lima@indt.org.br>
|
||||||
|
|
||||||
|
* gst/qtdemux/qtdemux.c: qtdemux_parse_trak:
|
||||||
|
Ronald's patch applied. see bug #326318.
|
||||||
|
|
||||||
2006-01-17 Tim-Philipp Müller <tim at centricular dot net>
|
2006-01-17 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst/qtdemux/qtdemux.c: (gst_qtdemux_init),
|
* gst/qtdemux/qtdemux.c: (gst_qtdemux_init),
|
||||||
|
|
|
@ -2000,20 +2000,33 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
|
||||||
} else {
|
} else {
|
||||||
if (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4) ==
|
if (QTDEMUX_FOURCC_GET (stsd->data + 16 + 4) ==
|
||||||
GST_MAKE_FOURCC ('a', 'v', 'c', '1')) {
|
GST_MAKE_FOURCC ('a', 'v', 'c', '1')) {
|
||||||
gint len = QTDEMUX_GUINT32_GET (stsd->data);
|
gint len = QTDEMUX_GUINT32_GET (stsd->data) - 0x66;
|
||||||
|
guint8 *stsddata = stsd->data + 0x66;
|
||||||
|
|
||||||
if (len > 0x6E &&
|
|
||||||
QTDEMUX_FOURCC_GET (stsd->data + 0x6A) ==
|
/* find avcC */
|
||||||
|
while (len >= 0x8 &&
|
||||||
|
QTDEMUX_FOURCC_GET (stsddata + 0x4) !=
|
||||||
|
GST_MAKE_FOURCC ('a', 'v', 'c', 'C') &&
|
||||||
|
QTDEMUX_GUINT32_GET (stsddata) < len) {
|
||||||
|
len -= QTDEMUX_GUINT32_GET (stsddata);
|
||||||
|
stsddata += QTDEMUX_GUINT32_GET (stsddata);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* parse, if found */
|
||||||
|
if (len > 0x8 &&
|
||||||
|
QTDEMUX_FOURCC_GET (stsddata + 0x4) ==
|
||||||
GST_MAKE_FOURCC ('a', 'v', 'c', 'C')) {
|
GST_MAKE_FOURCC ('a', 'v', 'c', 'C')) {
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
gint size;
|
gint size;
|
||||||
|
|
||||||
if (QTDEMUX_GUINT32_GET (stsd->data + 0x66) < len - 0x66)
|
if (QTDEMUX_GUINT32_GET (stsddata) < len)
|
||||||
size = QTDEMUX_GUINT32_GET (stsd->data + 0x66) - 8;
|
size = QTDEMUX_GUINT32_GET (stsddata) - 0x8;
|
||||||
else
|
else
|
||||||
size = len - 0x6E;
|
size = len - 0x8;
|
||||||
|
|
||||||
buf = gst_buffer_new_and_alloc (size);
|
buf = gst_buffer_new_and_alloc (size);
|
||||||
memcpy (GST_BUFFER_DATA (buf), (guint8 *) stsd->data + 0x6E, size);
|
memcpy (GST_BUFFER_DATA (buf), (guint8 *) stsd->data + 0x8, size);
|
||||||
gst_caps_set_simple (stream->caps,
|
gst_caps_set_simple (stream->caps,
|
||||||
"codec_data", GST_TYPE_BUFFER, buf, NULL);
|
"codec_data", GST_TYPE_BUFFER, buf, NULL);
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
|
|
Loading…
Reference in a new issue