summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2003-10-28 20:52:41 +0000
committerBenjamin Otte <otte@gnome.org>2003-10-28 20:52:41 +0000
commitc9ae463a4f5c81e7c2a5f9c943480a89685e9be4 (patch)
tree54a66bf2f5ef869347b738b84a374a077de9d30b
parentc4aacdb8e51ceb82f11b6b608aacaffc036d1fb2 (diff)
merge TYPEFIND branch. Major changes:
Original commit message from CVS: merge TYPEFIND branch. Major changes: - totally reworked type(find) system - all typefind functions are in gst/typefind now - more typefind functions then before - some plugins might fail to compile now because I don't have them installed and they a) require bytestream or b) haven't had their typefind fixed. Please fix those plugins and put the typefind functions into gst/typefind if they don't have dependencies
-rw-r--r--configure.ac6
-rw-r--r--ext/dv/gstdvdec.c3
-rw-r--r--ext/dv/gstdvdec.h2
-rw-r--r--ext/flac/gstflac.c41
-rw-r--r--ext/flac/gstflacdec.h2
-rw-r--r--ext/ladspa/gstladspa.h2
-rw-r--r--gst/auparse/gstauparse.c35
-rw-r--r--gst/avi/gstavidemux.c43
-rw-r--r--gst/avi/gstavidemux.h2
-rw-r--r--gst/flx/gstflxdec.c47
-rw-r--r--gst/flx/gstflxdec.h2
-rw-r--r--gst/qtdemux/qtdemux.c42
-rw-r--r--gst/qtdemux/qtdemux.h2
-rw-r--r--gst/wavparse/gstwavparse.c42
14 files changed, 23 insertions, 248 deletions
diff --git a/configure.ac b/configure.ac
index 47c08c35..02f2636d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -264,10 +264,10 @@ GST_PLUGINS_ALL="\
cutter debug deinterlace effectv festival \
filter flx goom id3 intfloat law level median mixmatrix \
mpeg1sys mpeg1videoparse mpeg2enc mpeg2sub \
- mpegaudio mpegaudioparse mpegstream mpegtypes \
+ mpegaudio mpegaudioparse mpegstream \
monoscope oneton overlay passthrough playondemand qtdemux \
realmedia rtp rtjpeg silence sine smooth smpte \
- spectrum speed stereo synaesthesia tcp udp vbidec \
+ spectrum speed stereo synaesthesia tcp typefind udp vbidec \
videocrop videodrop videofilter videoflip videoscale \
videotestsrc volenv volume wavenc wavparse y4m"
@@ -1193,7 +1193,6 @@ gst/mpeg2sub/Makefile
gst/mpegaudio/Makefile
gst/mpegaudioparse/Makefile
gst/mpegstream/Makefile
-gst/mpegtypes/Makefile
gst/modplug/Makefile
gst/modplug/libmodplug/Makefile
gst/monoscope/Makefile
@@ -1214,6 +1213,7 @@ gst/speed/Makefile
gst/stereo/Makefile
gst/synaesthesia/Makefile
gst/tcp/Makefile
+gst/typefind/Makefile
gst/udp/Makefile
gst/vbidec/Makefile
gst/videocrop/Makefile
diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c
index ecaa9736..68ff1484 100644
--- a/ext/dv/gstdvdec.c
+++ b/ext/dv/gstdvdec.c
@@ -1006,6 +1006,9 @@ plugin_init (GModule *module, GstPlugin *plugin)
GstElementFactory *factory;
GstTypeFactory *type;
+ if (!gst_library_load ("gstbytestream"))
+ return FALSE;
+
/* We need to create an ElementFactory for each element we provide.
* This consists of the name of the element, the GType identifier,
* and a pointer to the details structure at the top of the file.
diff --git a/ext/dv/gstdvdec.h b/ext/dv/gstdvdec.h
index cced0803..14525d1a 100644
--- a/ext/dv/gstdvdec.h
+++ b/ext/dv/gstdvdec.h
@@ -29,7 +29,7 @@ extern "C" {
#include <libdv/dv.h>
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
/* This is the definition of the element's object structure. */
diff --git a/ext/flac/gstflac.c b/ext/flac/gstflac.c
index 7393ef89..b4e9ccec 100644
--- a/ext/flac/gstflac.c
+++ b/ext/flac/gstflac.c
@@ -26,8 +26,6 @@
extern GstElementDetails flacenc_details;
extern GstElementDetails flacdec_details;
-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;
@@ -61,45 +59,15 @@ raw_caps_factory (void)
NULL));
}
-static GstTypeDefinition flacdefinition = {
- "flac_audio/x-flac",
- "audio/x-flac",
- ".flac",
- flac_type_find,
-};
-
-
-static GstCaps*
-flac_type_find (GstByteStream *bs, gpointer private)
-{
- GstBuffer *buf = NULL;
- GstCaps *new = 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);
- }
- }
-
- if (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
-
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *enc, *dec;
- GstTypeFactory *type;
GstCaps *raw_caps, *flac_caps;
+ if (!gst_library_load ("gstbytestream"))
+ return FALSE;
+
gst_plugin_set_longname (plugin, "The FLAC Lossless compressor Codec");
/* create an elementfactory for the flacenc element */
@@ -144,9 +112,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (dec));
- type = gst_type_factory_new (&flacdefinition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
return TRUE;
}
diff --git a/ext/flac/gstflacdec.h b/ext/flac/gstflacdec.h
index 0b374440..01930dc7 100644
--- a/ext/flac/gstflacdec.h
+++ b/ext/flac/gstflacdec.h
@@ -24,7 +24,7 @@
#include <config.h>
#include <gst/gst.h>
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
#include <FLAC/all.h>
diff --git a/ext/ladspa/gstladspa.h b/ext/ladspa/gstladspa.h
index 85348a95..a33062ff 100644
--- a/ext/ladspa/gstladspa.h
+++ b/ext/ladspa/gstladspa.h
@@ -26,7 +26,7 @@
#include <config.h>
#include <gst/gst.h>
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
#include "ladspa.h"
diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c
index 744b5cb3..bfb54be6 100644
--- a/gst/auparse/gstauparse.c
+++ b/gst/auparse/gstauparse.c
@@ -29,7 +29,6 @@
#include <gstauparse.h>
-
/* elementfactory information */
static GstElementDetails gst_auparse_details = {
".au parser",
@@ -41,36 +40,6 @@ static GstElementDetails gst_auparse_details = {
"(C) 1999",
};
-static GstCaps*
-au_type_find (GstByteStream *bs, gpointer private)
-{
- GstBuffer *buf = NULL;
- GstCaps *new = 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 (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
-/* typefactory for 'au' */
-static GstTypeDefinition audefinition = {
- "auparse_audio/au",
- "audio/x-au",
- ".au",
- au_type_find,
-};
-
GST_PAD_TEMPLATE_FACTORY (sink_factory_templ,
"sink",
GST_PAD_SINK,
@@ -318,7 +287,6 @@ static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
- GstTypeFactory *type;
/* create the plugin structure */
/* create an elementfactory for the auparse element and list it */
@@ -330,10 +298,7 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (sink_factory_templ));
gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (src_factory_templ));
- type = gst_type_factory_new (&audefinition);
-
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
return TRUE;
}
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 09fe61a3..f0e6d38a 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -38,16 +38,6 @@ static GstElementDetails gst_avi_demux_details = {
"(C) 1999",
};
-static GstCaps* avi_type_find (GstByteStream *bs, gpointer private);
-
-/* typefactory for 'avi' */
-static GstTypeDefinition avidefinition = {
- "avidemux_video/avi",
- "video/avi",
- ".avi",
- avi_type_find,
-};
-
/* AviDemux signals and args */
enum {
/* FILL ME */
@@ -172,33 +162,6 @@ gst_avi_demux_init (GstAviDemux *avi_demux)
gst_element_set_loop_function (GST_ELEMENT (avi_demux), gst_avi_demux_loop);
}
-static GstCaps*
-avi_type_find (GstByteStream *bs,
- gpointer private)
-{
- GstBuffer *buf = NULL;
- GstCaps *new = NULL;
-
- GST_DEBUG ("avi_demux: typefind");
-
- if (gst_bytestream_peek (bs, &buf, 12) == 12) {
- guint32 head1 = GUINT32_FROM_LE (((guint32 *) GST_BUFFER_DATA (buf))[0]),
- head2 = GUINT32_FROM_LE (((guint32 *) GST_BUFFER_DATA (buf))[2]);
-
- if (head1 == GST_RIFF_TAG_RIFF && head2 == GST_RIFF_RIFF_AVI) {
- new = GST_CAPS_NEW ("avi_type_find",
- "video/avi",
- NULL);
- }
- }
-
- if (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
static gboolean
gst_avi_demux_avih (GstAviDemux *avi_demux)
{
@@ -1932,7 +1895,6 @@ static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
- GstTypeFactory *type;
gint i = 0;
GstCaps *audcaps = NULL, *vidcaps = NULL, *temp;
guint32 vid_list[] = {
@@ -1965,6 +1927,8 @@ plugin_init (GModule *module, GstPlugin *plugin)
-1 /* end */
};
+ if (!gst_library_load ("gstbytestream"))
+ return FALSE;
if (!gst_library_load ("gstriff"))
return FALSE;
@@ -1997,9 +1961,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_element_factory_add_pad_template (factory,
GST_PAD_TEMPLATE_GET (sink_templ));
- type = gst_type_factory_new (&avidefinition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
return TRUE;
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index 9a719a67..7d8ace24 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -24,7 +24,7 @@
#include <config.h>
#include <gst/gst.h>
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
#include <gst/riff/riff.h>
#ifdef __cplusplus
diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
index 7ed55f1b..f4e085c3 100644
--- a/gst/flx/gstflxdec.c
+++ b/gst/flx/gstflxdec.c
@@ -28,8 +28,6 @@
#define JIFFIE (GST_SECOND/70)
-static GstCaps* flxdec_type_find (GstByteStream *bs, gpointer private);
-
/* flx element information */
static GstElementDetails flxdec_details = {
"FLX Decoder",
@@ -41,13 +39,6 @@ static GstElementDetails flxdec_details = {
"(C) 2001",
};
-static GstTypeDefinition flxdec_definition = {
- "flxdec_video/fli",
- "video/fli",
- ".flc .fli",
- flxdec_type_find,
-};
-
/* Flx signals and args */
enum {
/* FILL ME */
@@ -112,37 +103,6 @@ static void flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
static GstElementClass *parent_class = NULL;
-static GstCaps*
-flxdec_type_find (GstByteStream *bs, gpointer private)
-{
- GstBuffer *buf = NULL;
- GstCaps *new = NULL;
-
- if (gst_bytestream_peek (bs, &buf, 134) == 134) {
- guint8 *data = GST_BUFFER_DATA (buf);
-
- /* check magic */
- if ((data[4] == 0x11 || data[4] == 0x12 ||
- data[4] == 0x30 || data[4] == 0x44) &&
- data[5] == 0xaf) {
- /* check the frame type of the first frame */
- if ((data[132] == 0x00 || data[132] == 0xfa) && data[133] == 0xf1) {
- GST_DEBUG ("GstFlxDec: found supported flx format");
- new = gst_caps_new ("flxdec_type_find",
- "video/x-fli",
- NULL);
- }
- }
- }
-
- if (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
-
GType
gst_flxdec_get_type(void)
{
@@ -688,7 +648,9 @@ static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
- GstTypeFactory *type;
+
+ if (!gst_library_load ("gstbytestream"))
+ return FALSE;
factory = gst_element_factory_new("flxdec", GST_TYPE_FLXDEC, &flxdec_details);
g_return_val_if_fail(factory != NULL, FALSE);
@@ -699,9 +661,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
- type = gst_type_factory_new (&flxdec_definition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
return TRUE;
}
diff --git a/gst/flx/gstflxdec.h b/gst/flx/gstflxdec.h
index 0ee4b1c5..be4fa4ba 100644
--- a/gst/flx/gstflxdec.h
+++ b/gst/flx/gstflxdec.h
@@ -23,7 +23,7 @@
#include <gst/gst.h>
#include "flx_color.h"
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
#ifdef __cplusplus
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c
index dfd4b2c5..06352f1d 100644
--- a/gst/qtdemux/qtdemux.c
+++ b/gst/qtdemux/qtdemux.c
@@ -104,15 +104,6 @@ gst_qtdemux_details =
"(C) 2003",
};
-static GstCaps* quicktime_type_find (GstByteStream *bs, gpointer private);
-
-static GstTypeDefinition quicktimedefinition = {
- "qtdemux_video/quicktime",
- "video/quicktime",
- ".mov",
- quicktime_type_find,
-};
-
enum {
LAST_SIGNAL
};
@@ -186,37 +177,10 @@ gst_qtdemux_init (GstQTDemux *qtdemux)
gst_element_add_pad (GST_ELEMENT (qtdemux), qtdemux->sinkpad);
}
-static GstCaps*
-quicktime_type_find (GstByteStream *bs, gpointer private)
-{
- GstBuffer *buf = NULL;
- GstCaps *new = NULL;
-
- if (gst_bytestream_peek (bs, &buf, 8) == 8) {
- gchar *data = GST_BUFFER_DATA (buf);
-
- if (!strncmp (&data[4], "wide", 4) ||
- !strncmp (&data[4], "moov", 4) ||
- !strncmp (&data[4], "mdat", 4) ||
- !strncmp (&data[4], "free", 4)) {
- new = GST_CAPS_NEW ("quicktime_type_find",
- "video/quicktime",
- NULL);
- }
- }
-
- if (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
- GstTypeFactory *type;
GstCaps *audiocaps = NULL, *videocaps = NULL, *temp;
const guint32 audio_fcc[] = {
/* FILLME */
@@ -227,6 +191,9 @@ plugin_init (GModule *module, GstPlugin *plugin)
};
gint i;
+ if (!gst_library_load ("gstbytestream"))
+ return FALSE;
+
factory = gst_element_factory_new ("qtdemux", GST_TYPE_QTDEMUX,
&gst_qtdemux_details);
g_return_val_if_fail(factory != NULL, FALSE);
@@ -254,9 +221,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_element_factory_add_pad_template (factory, videosrctempl);
gst_element_factory_add_pad_template (factory, audiosrctempl);
- type = gst_type_factory_new (&quicktimedefinition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
return TRUE;
diff --git a/gst/qtdemux/qtdemux.h b/gst/qtdemux/qtdemux.h
index 46684be8..c005a96e 100644
--- a/gst/qtdemux/qtdemux.h
+++ b/gst/qtdemux/qtdemux.h
@@ -22,7 +22,7 @@
#define __GST_QTDEMUX_H__
#include <gst/gst.h>
-#include <gst/gstbytestream.h>
+#include <gst/bytestream.h>
#ifdef __cplusplus
extern "C" {
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
index 3aee045d..8c9c3a62 100644
--- a/gst/wavparse/gstwavparse.c
+++ b/gst/wavparse/gstwavparse.c
@@ -31,9 +31,6 @@ static void gst_wavparse_init (GstWavParse *wavparse);
static GstElementStateReturn
gst_wavparse_change_state (GstElement *element);
-static GstCaps* wav_type_find (GstByteStream *bs,
- gpointer private);
-
static const GstFormat* gst_wavparse_get_formats (GstPad *pad);
static const GstQueryType *
gst_wavparse_get_query_types (GstPad *pad);
@@ -119,17 +116,6 @@ GST_PAD_TEMPLATE_FACTORY (src_template_factory,
)
)
-/* typefactory for 'wav' */
-static GstTypeDefinition
-wavdefinition =
-{
- "wavparse_audio/x-wav",
- "audio/x-wav",
- ".wav",
- wav_type_find,
-};
-
-
/* WavParse signals and args */
enum {
/* FILL ME */
@@ -243,30 +229,6 @@ gst_wavparse_get_property (GObject *object,
}
}
-static GstCaps*
-wav_type_find (GstByteStream *bs, gpointer private)
-{
- GstCaps *new = NULL;
- GstBuffer *buf = NULL;
-
- if (gst_bytestream_peek (bs, &buf, 12) == 12) {
- gchar *data = GST_BUFFER_DATA (buf);
-
- if (!strncmp (&data[0], "RIFF", 4) &&
- !strncmp (&data[8], "WAVE", 4)) {
- new = GST_CAPS_NEW ("wav_type_find",
- "audio/x-wav",
- NULL);
- }
- }
-
- if (buf != NULL) {
- gst_buffer_unref (buf);
- }
-
- return new;
-}
-
static void
demux_metadata (GstWavParse *wavparse,
const char *data,
@@ -880,7 +842,6 @@ static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
- GstTypeFactory *type;
if(!gst_library_load("gstriff")){
return FALSE;
@@ -898,9 +859,6 @@ plugin_init (GModule *module, GstPlugin *plugin)
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
- type = gst_type_factory_new (&wavdefinition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
return TRUE;
}