summaryrefslogtreecommitdiffstats
path: root/gst/filter
diff options
context:
space:
mode:
Diffstat (limited to 'gst/filter')
-rw-r--r--gst/filter/gstbpwsinc.c27
-rw-r--r--gst/filter/gstfilter.c43
-rw-r--r--gst/filter/gstfilter.h9
-rw-r--r--gst/filter/gstiir.c28
-rw-r--r--gst/filter/gstlpwsinc.c27
5 files changed, 80 insertions, 54 deletions
diff --git a/gst/filter/gstbpwsinc.c b/gst/filter/gstbpwsinc.c
index be9feec7..fe721f39 100644
--- a/gst/filter/gstbpwsinc.c
+++ b/gst/filter/gstbpwsinc.c
@@ -39,15 +39,13 @@
#include <string.h> /* memmove */
/* elementfactory information */
-GstElementDetails gst_bpwsinc_details = {
+static GstElementDetails gst_bpwsinc_details = GST_ELEMENT_DETAILS (
"BPWSinc",
"Filter/Audio/Effect",
- "LGPL",
"Band-Pass Windowed sinc filter",
- VERSION,
- "Thomas <thomas@apestaart.org>",
- "(C) 2002 Steven W. Smith",
-};
+ "Thomas <thomas@apestaart.org>, "
+ "Steven W. Smith"
+);
enum {
/* FILL ME */
@@ -95,6 +93,7 @@ struct _GstBPWSincClass
GstElementClass parent_class;
};
+static void gst_bpwsinc_base_init (gpointer g_class);
static void gst_bpwsinc_class_init (GstBPWSincClass * klass);
static void gst_bpwsinc_init (GstBPWSinc * filter);
@@ -117,7 +116,9 @@ GType gst_bpwsinc_get_type (void)
if (!bpwsinc_type) {
static const GTypeInfo bpwsinc_info = {
- sizeof (GstBPWSincClass), NULL, NULL,
+ sizeof (GstBPWSincClass),
+ gst_bpwsinc_base_init,
+ NULL,
(GClassInitFunc) gst_bpwsinc_class_init, NULL, NULL,
sizeof (GstBPWSinc), 0,
(GInstanceInitFunc) gst_bpwsinc_init,
@@ -130,6 +131,18 @@ GType gst_bpwsinc_get_type (void)
}
static void
+gst_bpwsinc_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ /* register src pads */
+ gst_element_class_add_pad_template (element_class, gst_filter_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_filter_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_bpwsinc_details);
+}
+
+static void
gst_bpwsinc_class_init (GstBPWSincClass * klass)
{
GObjectClass *gobject_class;
diff --git a/gst/filter/gstfilter.c b/gst/filter/gstfilter.c
index c5e6ccba..8b5a8cd9 100644
--- a/gst/filter/gstfilter.c
+++ b/gst/filter/gstfilter.c
@@ -20,6 +20,9 @@
* Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include "gstfilter.h"
#include <gst/audio/audio.h>
@@ -27,14 +30,12 @@
struct _elements_entry {
gchar *name;
GType (*type) (void);
- GstElementDetails *details;
- gboolean (*factoryinit) (GstElementFactory *factory);
};
static struct _elements_entry _elements[] = {
- { "iir", gst_iir_get_type, &gst_iir_details, NULL },
- { "lpwsinc", gst_lpwsinc_get_type, &gst_lpwsinc_details, NULL },
- { "bpwsinc", gst_bpwsinc_get_type, &gst_bpwsinc_details, NULL },
+ { "iir", gst_iir_get_type },
+ { "lpwsinc", gst_lpwsinc_get_type },
+ { "bpwsinc", gst_bpwsinc_get_type },
{ NULL, 0 },
};
@@ -77,37 +78,29 @@ gst_filter_sink_factory (void)
}
static gboolean
-plugin_init (GModule * module, GstPlugin * plugin)
+plugin_init (GstPlugin * plugin)
{
- GstElementFactory *factory;
gint i = 0;
while (_elements[i].name) {
- factory = gst_element_factory_new (_elements[i].name,
- (_elements[i].type) (),
- _elements[i].details);
+ if (!gst_element_register (plugin, _elements[i].name, GST_RANK_NONE, _elements[i].type()))
+ return FALSE;
- if (!factory) {
- g_warning ("gst_filter_new failed for `%s'",
- _elements[i].name);
- continue;
- }
- gst_element_factory_add_pad_template (factory, gst_filter_src_factory ());
- gst_element_factory_add_pad_template (factory, gst_filter_sink_factory ());
-
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
- if (_elements[i].factoryinit) {
- _elements[i].factoryinit (factory);
- }
i++;
}
return TRUE;
}
-GstPluginDesc plugin_desc = {
+GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"filter",
- plugin_init
-};
+ "IIR, lpwsinc and bpwsinc audio filter elements",
+ plugin_init,
+ VERSION,
+ "LGPL",
+ GST_COPYRIGHT,
+ GST_PACKAGE,
+ GST_ORIGIN
+);
diff --git a/gst/filter/gstfilter.h b/gst/filter/gstfilter.h
index 48b19798..4669e554 100644
--- a/gst/filter/gstfilter.h
+++ b/gst/filter/gstfilter.h
@@ -26,15 +26,10 @@
#include <gst/gst.h>
GType gst_iir_get_type (void);
-extern GstElementDetails gst_iir_details;
+GType gst_lpwsinc_get_type (void);
+GType gst_bpwsinc_get_type (void);
extern GstPadTemplate *gst_filter_sink_factory ();
extern GstPadTemplate *gst_filter_src_factory ();
-GType gst_lpwsinc_get_type (void);
-extern GstElementDetails gst_lpwsinc_details;
-
-GType gst_bpwsinc_get_type (void);
-extern GstElementDetails gst_bpwsinc_details;
-
#endif /* __GST_FILTER_H__ */
diff --git a/gst/filter/gstiir.c b/gst/filter/gstiir.c
index 61fff92b..185b1522 100644
--- a/gst/filter/gstiir.c
+++ b/gst/filter/gstiir.c
@@ -25,16 +25,13 @@
#include "gstfilter.h"
#include "iir.h"
-GstElementDetails gst_iir_details = {
+static GstElementDetails gst_iir_details = GST_ELEMENT_DETAILS (
"IIR",
"Filter/Audio/Effect",
- "LGPL",
"IIR filter based on vorbis code",
- VERSION,
- "Monty <monty@xiph.org>, "\
- "Thomas <thomas@apestaart.org>",
- "(C) 2001",
-};
+ "Monty <monty@xiph.org>, "
+ "Thomas <thomas@apestaart.org>"
+);
enum {
/* FILL ME */
@@ -80,6 +77,7 @@ struct _GstIIRClass
GstElementClass parent_class;
};
+static void gst_iir_base_init (gpointer g_class);
static void gst_iir_class_init (GstIIRClass * klass);
static void gst_iir_init (GstIIR * filter);
@@ -102,7 +100,9 @@ GType gst_iir_get_type (void)
if (!iir_type) {
static const GTypeInfo iir_info = {
- sizeof (GstIIRClass), NULL, NULL,
+ sizeof (GstIIRClass),
+ gst_iir_base_init,
+ NULL,
(GClassInitFunc) gst_iir_class_init, NULL, NULL,
sizeof (GstIIR), 0,
(GInstanceInitFunc) gst_iir_init,
@@ -115,6 +115,18 @@ GType gst_iir_get_type (void)
}
static void
+gst_iir_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ /* register src pads */
+ gst_element_class_add_pad_template (element_class, gst_filter_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_filter_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_iir_details);
+}
+
+static void
gst_iir_class_init (GstIIRClass * klass)
{
GObjectClass *gobject_class;
diff --git a/gst/filter/gstlpwsinc.c b/gst/filter/gstlpwsinc.c
index 18bebef7..1ed5078d 100644
--- a/gst/filter/gstlpwsinc.c
+++ b/gst/filter/gstlpwsinc.c
@@ -38,15 +38,13 @@
#include <math.h> /* M_PI */
#include <string.h> /* memmove */
-GstElementDetails gst_lpwsinc_details = {
+static GstElementDetails gst_lpwsinc_details = GST_ELEMENT_DETAILS (
"LPWSinc",
"Filter/Audio/Effect",
- "LGPL",
"Low-pass Windowed sinc filter",
- VERSION,
- "Thomas <thomas@apestaart.org>",
- "(C) 2002 Steven W. Smith",
-};
+ "Thomas <thomas@apestaart.org>, "
+ "Steven W. Smith"
+);
enum {
/* FILL ME */
@@ -92,6 +90,7 @@ struct _GstLPWSincClass
GstElementClass parent_class;
};
+static void gst_lpwsinc_base_init (gpointer g_class);
static void gst_lpwsinc_class_init (GstLPWSincClass * klass);
static void gst_lpwsinc_init (GstLPWSinc * filter);
@@ -114,7 +113,9 @@ GType gst_lpwsinc_get_type (void)
if (!lpwsinc_type) {
static const GTypeInfo lpwsinc_info = {
- sizeof (GstLPWSincClass), NULL, NULL,
+ sizeof (GstLPWSincClass),
+ gst_lpwsinc_base_init,
+ NULL,
(GClassInitFunc) gst_lpwsinc_class_init, NULL, NULL,
sizeof (GstLPWSinc), 0,
(GInstanceInitFunc) gst_lpwsinc_init,
@@ -127,6 +128,18 @@ GType gst_lpwsinc_get_type (void)
}
static void
+gst_lpwsinc_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ /* register src pads */
+ gst_element_class_add_pad_template (element_class, gst_filter_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_filter_sink_factory ());
+
+ gst_element_class_set_details (element_class, &gst_lpwsinc_details);
+}
+
+static void
gst_lpwsinc_class_init (GstLPWSincClass * klass)
{
GObjectClass *gobject_class;