From 38946080fd20c3b73154685b10c29aa22fac69c3 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Wed, 1 Oct 2003 13:14:52 +0000 Subject: New typefind system: bytestream is now part of the core all plugins have been modified to use this new typefind syste... Original commit message from CVS: New typefind system: * bytestream is now part of the core * all plugins have been modified to use this new typefind system * asf typefinding added * mpeg video stream typefiding removed because it's broken * duplicate typefind entries removed * extra id3 typefinding added, because we've seen 4 types of files (riff/wav, flac, vorbis, mp3) with id3 headers and each of these needs to work. Instead, I've added an id3 element and let it redo typefiding after the id3 header. this needs a hack because spider only typefinds once. We can remove this hack once spider supports multiple typefinds. * with all this, mp3 typefinding is semi-rewritten * id3 typefinding in flac/vorbis is removed, it's no longer needed * fixed spider and gst-typefind to use this, too. * Other general cleanups --- gst/auparse/gstauparse.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'gst/auparse') diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c index 422ee1ba..f2ce8c85 100644 --- a/gst/auparse/gstauparse.c +++ b/gst/auparse/gstauparse.c @@ -42,16 +42,23 @@ static GstElementDetails gst_auparse_details = { }; static GstCaps* -au_type_find (GstBuffer *buf, gpointer private) +au_type_find (GstByteStream *bs, gpointer private) { + GstBuffer *buf = NULL; GstCaps *new = NULL; - gulong *head = (gulong *) GST_BUFFER_DATA (buf); - if (GST_BUFFER_SIZE (buf) < 4) - return NULL; + if (gst_bytestream_peek (bs, &buf, 4) == 4) { + guint32 head = * (guint32 *) GST_BUFFER_DATA (buf); + if (head == 0x2e736e64 || head == 0x646e732e) { + new = gst_caps_new ("au_type_find", + "audio/x-au", + NULL); + } + } - if (*head == 0x2e736e64 || *head == 0x646e732e) - new = gst_caps_new ("au_type_find", "audio/x-au", NULL); + if (buf != NULL) { + gst_buffer_unref (buf); + } return new; } -- cgit