Updated for the new plugin loading code

Original commit message from CVS:
Updated for the new plugin loading code
This commit is contained in:
Jan Schmidt 2003-11-02 14:09:39 +00:00
parent bd4206da03
commit 75658894ac
5 changed files with 80 additions and 54 deletions

View file

@ -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,
@ -129,6 +130,18 @@ GType gst_bpwsinc_get_type (void)
return bpwsinc_type;
}
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)
{

View file

@ -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
);

View file

@ -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__ */

View file

@ -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,
@ -114,6 +114,18 @@ GType gst_iir_get_type (void)
return iir_type;
}
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)
{

View file

@ -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,
@ -126,6 +127,18 @@ GType gst_lpwsinc_get_type (void)
return lpwsinc_type;
}
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)
{