summaryrefslogtreecommitdiffstats
path: root/ext/gdk_pixbuf
diff options
context:
space:
mode:
authorIain Holmes <iain@prettypeople.org>2003-11-01 16:18:43 +0000
committerIain Holmes <iain@prettypeople.org>2003-11-01 16:18:43 +0000
commit804d2e3b528e3eb12308e7acdd1296d3f3cbf95d (patch)
treea05bae4a57dc81d521727018f24c18acc60c2e38 /ext/gdk_pixbuf
parent09284d7f7b8edb7a651520a48a9375cfd823cd5c (diff)
Port GstGdkPixbufSrc to the new definitions
Original commit message from CVS: Port GstGdkPixbufSrc to the new definitions Close the loader before unreffing it.
Diffstat (limited to 'ext/gdk_pixbuf')
-rw-r--r--ext/gdk_pixbuf/gstgdkpixbuf.c48
1 files changed, 26 insertions, 22 deletions
diff --git a/ext/gdk_pixbuf/gstgdkpixbuf.c b/ext/gdk_pixbuf/gstgdkpixbuf.c
index 2368769f..c5b59038 100644
--- a/ext/gdk_pixbuf/gstgdkpixbuf.c
+++ b/ext/gdk_pixbuf/gstgdkpixbuf.c
@@ -32,11 +32,8 @@
static GstElementDetails plugin_details = {
"GdkPixbuf image decoder",
"Codec/Image",
- "LGPL",
"Decodes images in a video stream using GdkPixbuf",
- VERSION,
"David A. Schleef <ds@schleef.org>",
- "(C) 2002, 2003"
};
/* Filter signals and args */
@@ -96,6 +93,7 @@ GST_PAD_TEMPLATE_FACTORY (gst_gdk_pixbuf_src_factory,
)
);
+static void gst_gdk_pixbuf_base_init (gpointer g_class);
static void gst_gdk_pixbuf_class_init (GstGdkPixbufClass *klass);
static void gst_gdk_pixbuf_init (GstGdkPixbuf *filter);
@@ -215,7 +213,7 @@ gst_gdk_pixbuf_get_type (void)
static const GTypeInfo plugin_info =
{
sizeof (GstGdkPixbufClass),
- NULL,
+ gst_gdk_pixbuf_base_init,
NULL,
(GClassInitFunc) gst_gdk_pixbuf_class_init,
NULL,
@@ -231,6 +229,16 @@ gst_gdk_pixbuf_get_type (void)
return plugin_type;
}
+static void
+gst_gdk_pixbuf_base_init (gpointer g_class)
+{
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_element_class_add_pad_template (element_class, gst_gdk_pixbuf_src_factory ());
+ gst_element_class_add_pad_template (element_class, gst_gdk_pixbuf_sink_factory ());
+ gst_element_class_set_details (element_class, &plugin_details);
+}
+
/* initialize the plugin's class */
static void
gst_gdk_pixbuf_class_init (GstGdkPixbufClass *klass)
@@ -395,6 +403,7 @@ gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore)
gst_caps_new ("gdk_pixbuf_type_find", mlist[0], NULL));
}
+ gdk_pixbuf_loader_close (pixbuf_loader, &error);
g_object_unref (G_OBJECT (pixbuf_loader));
}
@@ -404,23 +413,13 @@ gst_gdk_pixbuf_type_find (GstTypeFind *tf, gpointer ignore)
* register the features
*/
static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
+plugin_init (GstPlugin *plugin)
{
- GstElementFactory *factory;
-
- factory = gst_element_factory_new ("gdkpixbufdec", GST_TYPE_GDK_PIXBUF,
- &plugin_details);
- g_return_val_if_fail (factory != NULL, FALSE);
-
- gst_element_factory_add_pad_template (factory,
- gst_gdk_pixbuf_src_factory ());
- gst_element_factory_add_pad_template (factory,
- gst_gdk_pixbuf_sink_factory ());
-
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
+ if (!gst_element_register (plugin, "gdkpixbufdec", GST_RANK_NONE, GST_TYPE_GDK_PIXBUF))
+ return FALSE;
- gst_type_find_factory_register (plugin, "image/*", GST_ELEMENT_RANK_MARGINAL,
- gst_gdk_pixbuf_type_find, NULL, GST_CAPS_ANY, NULL);
+ gst_type_find_register (plugin, "image/*", GST_RANK_MARGINAL,
+ gst_gdk_pixbuf_type_find, NULL, GST_CAPS_ANY, NULL);
/* plugin initialisation succeeded */
return TRUE;
@@ -428,9 +427,14 @@ plugin_init (GModule *module, GstPlugin *plugin)
/* this is the structure that gst-register looks for
* so keep the name plugin_desc, or you cannot get your plug-in registered */
-GstPluginDesc plugin_desc = {
+GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gdkpixbuf",
- plugin_init
-};
+ "GDK Pixbuf decoder",
+ plugin_init,
+ VERSION,
+ "LGPL",
+ GST_COPYRIGHT,
+ GST_PACKAGE,
+ GST_ORIGIN)