mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +00:00
Updated for the new plugin loading code
Original commit message from CVS: Updated for the new plugin loading code
This commit is contained in:
parent
bd4206da03
commit
75658894ac
5 changed files with 80 additions and 54 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue