summaryrefslogtreecommitdiffstats
path: root/ext/flac
diff options
context:
space:
mode:
Diffstat (limited to 'ext/flac')
-rw-r--r--ext/flac/gstflac.c47
-rw-r--r--ext/flac/gstflacdec.h2
2 files changed, 17 insertions, 32 deletions
diff --git a/ext/flac/gstflac.c b/ext/flac/gstflac.c
index 2c30df32..2fe8f419 100644
--- a/ext/flac/gstflac.c
+++ b/ext/flac/gstflac.c
@@ -26,7 +26,7 @@
extern GstElementDetails flacenc_details;
extern GstElementDetails flacdec_details;
-static GstCaps* flac_type_find (GstBuffer *buf, gpointer private);
+static GstCaps* flac_type_find (GstByteStream *bs, gpointer private);
GstPadTemplate *gst_flacdec_src_template, *gst_flacdec_sink_template;
GstPadTemplate *gst_flacenc_src_template, *gst_flacenc_sink_template;
@@ -70,37 +70,26 @@ static GstTypeDefinition flacdefinition = {
static GstCaps*
-flac_type_find (GstBuffer *buf, gpointer private)
+flac_type_find (GstByteStream *bs, gpointer private)
{
- gint offset;
- guint8 *data;
- gint size;
- guint32 head;
-
- if (GST_BUFFER_SIZE (buf) < 4)
- return NULL;
+ GstBuffer *buf = NULL;
+ GstCaps *new = NULL;
- data = GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- head = GUINT32_FROM_BE (*((guint32 *)GST_BUFFER_DATA (buf)));
-
- if (head == 0x664C6143)
- return gst_caps_new ("flac_type_find", "application/x-flac", NULL);
- else {
- /* checks for existance of flac identification header in case
- * there's an ID3 tag */
- for (offset = 0; offset < size-4; offset++) {
- if (data[offset] == 'f' &&
- data[offset+1] == 'L' &&
- data[offset+2] == 'a' &&
- data[offset+3] == 'C' ) {
- return gst_caps_new ("flac_type_find", "application/x-flac", NULL);
- }
+ if (gst_bytestream_peek (bs, &buf, 4) == 4) {
+ guint32 head = GUINT32_FROM_BE (*((guint32 *) GST_BUFFER_DATA (buf)));
+
+ if (head == 0x664C6143) {
+ new = GST_CAPS_NEW ("flac_type_find",
+ "application/x-flac",
+ NULL);
}
}
- return NULL;
+ if (buf != NULL) {
+ gst_buffer_unref (buf);
+ }
+
+ return new;
}
@@ -111,10 +100,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
GstTypeFactory *type;
GstCaps *raw_caps, *flac_caps;
- /* this filter needs the bytestream package */
- if (!gst_library_load ("gstbytestream"))
- return FALSE;
-
gst_plugin_set_longname (plugin, "The FLAC Lossless compressor Codec");
/* create an elementfactory for the flacenc element */
diff --git a/ext/flac/gstflacdec.h b/ext/flac/gstflacdec.h
index 67742ac6..0b374440 100644
--- a/ext/flac/gstflacdec.h
+++ b/ext/flac/gstflacdec.h
@@ -24,7 +24,7 @@
#include <config.h>
#include <gst/gst.h>
-#include <gst/bytestream/bytestream.h>
+#include <gst/gstbytestream.h>
#include <FLAC/all.h>