diff options
-rw-r--r-- | ext/jack/gstjack.c | 154 |
1 files changed, 85 insertions, 69 deletions
diff --git a/ext/jack/gstjack.c b/ext/jack/gstjack.c index 98ec91d2..3aff6d7c 100644 --- a/ext/jack/gstjack.c +++ b/ext/jack/gstjack.c @@ -40,37 +40,31 @@ static GstElementDetails gst_jack_bin_details = { "Jack Bin", "Generic/Bin", - "GPL", "Jack processing bin", - VERSION, "Andy Wingo <wingo@pobox.com>", - "(C) 2002, 2003" }; static GstElementDetails gst_jack_sink_details = { "Jack Sink", "Sink/Audio", - "GPL", "Output to a Jack processing network", - VERSION, "Andy Wingo <wingo@pobox.com>", - "(C) 2002, 2003" }; static GstElementDetails gst_jack_src_details = { "Jack Src", "Source/Audio", - "GPL", "Input from a Jack processing network", - VERSION, "Andy Wingo <wingo@pobox.com>", - "(C) 2002, 2003", }; static GHashTable *port_name_counts = NULL; static GstElementClass *parent_class = NULL; +static void gst_jack_base_init (gpointer g_class); +static void gst_jack_src_base_init (gpointer g_class); +static void gst_jack_sink_base_init (gpointer g_class); static void gst_jack_init(GstJack *this); static void gst_jack_class_init(GstJackClass *klass); static void gst_jack_set_property (GObject *object, guint prop_id, @@ -102,7 +96,7 @@ gst_jack_get_type (void) if (!jack_type) { static const GTypeInfo jack_info = { sizeof(GstJackClass), - NULL, + gst_jack_base_init, NULL, NULL, NULL, @@ -119,45 +113,71 @@ gst_jack_get_type (void) GType gst_jack_sink_get_type (void) { - static GType jack_type = 0; - - if (!jack_type) { - static const GTypeInfo jack_info = { - sizeof(GstJackClass), - NULL, - NULL, - (GClassInitFunc)gst_jack_class_init, - NULL, - NULL, - sizeof(GstJack), - 0, - (GInstanceInitFunc)gst_jack_init, - }; - jack_type = g_type_register_static (GST_TYPE_JACK, "GstJackSink", &jack_info, 0); - } - return jack_type; + static GType jack_type = 0; + + if (!jack_type) { + static const GTypeInfo jack_info = { + sizeof(GstJackClass), + gst_jack_sink_base_init, + NULL, + (GClassInitFunc)gst_jack_class_init, + NULL, + NULL, + sizeof(GstJack), + 0, + (GInstanceInitFunc)gst_jack_init, + }; + jack_type = g_type_register_static (GST_TYPE_JACK, "GstJackSink", &jack_info, 0); + } + return jack_type; } GType gst_jack_src_get_type (void) { - static GType jack_type = 0; - - if (!jack_type) { - static const GTypeInfo jack_info = { - sizeof(GstJackClass), - NULL, - NULL, - (GClassInitFunc)gst_jack_class_init, - NULL, - NULL, - sizeof(GstJack), - 0, - (GInstanceInitFunc)gst_jack_init, - }; - jack_type = g_type_register_static (GST_TYPE_JACK, "GstJackSrc", &jack_info, 0); - } - return jack_type; + static GType jack_type = 0; + + if (!jack_type) { + static const GTypeInfo jack_info = { + sizeof(GstJackClass), + gst_jack_src_base_init, + NULL, + (GClassInitFunc)gst_jack_class_init, + NULL, + NULL, + sizeof(GstJack), + 0, + (GInstanceInitFunc)gst_jack_init, + }; + jack_type = g_type_register_static (GST_TYPE_JACK, "GstJackSrc", &jack_info, 0); + } + return jack_type; +} + +static void +gst_jack_base_init (gpointer g_class) +{ + GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + + gst_element_class_set_details (element_class, &gst_jack_bin_details); +} + +static void +gst_jack_src_base_init (gpointer g_class) +{ + GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + + gst_element_class_add_pad_template (element_class, gst_jack_src_request_pad_factory ()); + gst_element_class_set_details (element_class, &gst_jack_src_details); +} + +static void +gst_jack_sink_base_init (gpointer g_class) +{ + GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + + gst_element_class_add_pad_template (element_class, gst_jack_sink_request_pad_factory ()); + gst_element_class_set_details (element_class, &gst_jack_sink_details); } static void @@ -477,32 +497,28 @@ gst_jack_loop (GstElement *element) } static gboolean -plugin_init (GModule *module, GstPlugin *plugin) +plugin_init (GstPlugin *plugin) { - GstElementFactory *factory; - - factory = gst_element_factory_new ("jackbin", GST_TYPE_JACK_BIN, &gst_jack_bin_details); - g_return_val_if_fail (factory != NULL, FALSE); - gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory)); - - factory = gst_element_factory_new ("jacksrc", GST_TYPE_JACK_SRC, &gst_jack_src_details); - g_return_val_if_fail (factory != NULL, FALSE); - gst_element_factory_add_pad_template (factory, gst_jack_src_request_pad_factory()); - gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory)); - - factory = gst_element_factory_new ("jacksink", GST_TYPE_JACK_SINK, &gst_jack_sink_details); - g_return_val_if_fail (factory != NULL, FALSE); - gst_element_factory_add_pad_template (factory, gst_jack_sink_request_pad_factory()); - gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory)); - - gst_plugin_set_longname (plugin, "JACK plugin library"); + if (!gst_element_register (plugin, "jackbin", GST_RANK_NONE, GST_TYPE_JACK_BIN)) + return FALSE; + + if (!gst_element_register (plugin, "jacksrc", GST_RANK_NONE, GST_TYPE_JACK_SRC)) + return FALSE; + + if (!gst_element_register (plugin, "jacksink", GST_RANK_NONE, GST_TYPE_JACK_SINK)) + return FALSE; - return TRUE; + return TRUE; } -GstPluginDesc plugin_desc = { - GST_VERSION_MAJOR, - GST_VERSION_MINOR, - "jack", - plugin_init -}; +GST_PLUGIN_DEFINE ( + GST_VERSION_MAJOR, + GST_VERSION_MINOR, + "jack", + "Jack Plugin Library", + plugin_init, + VERSION, + "GPL", + GST_COPYRIGHT, + GST_PACKAGE, + GST_ORIGIN) |