From f536534214f2cdc17f253af3e42854986393d56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 30 Apr 2009 15:40:17 +0200 Subject: [PATCH] Add convenience function to register Gst.Index types with the default registry --- gstreamer-sharp/Index.custom | 13 +++++++++++++ gstreamer-sharp/glue/Makefile.am | 3 ++- gstreamer-sharp/glue/indexfactory.c | 12 ++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 gstreamer-sharp/glue/indexfactory.c diff --git a/gstreamer-sharp/Index.custom b/gstreamer-sharp/Index.custom index 60b3529a23..aaaebf969c 100644 --- a/gstreamer-sharp/Index.custom +++ b/gstreamer-sharp/Index.custom @@ -10,3 +10,16 @@ public bool IsWritable { return ( ( (uint) Flags) & ( (uint) Gst.IndexFlags.Writable)) != 0; } } + +[DllImport ("gstreamersharpglue-0.10") ] +static extern void gstsharp_gst_index_factory_set_plugin (IntPtr factory, IntPtr plugin); + +public static bool Register (Gst.Plugin plugin, string name, string longdesc, GLib.GType gtype) { + Gst.IndexFactory factory = new Gst.IndexFactory (name, longdesc, gtype); + gstsharp_gst_index_factory_set_plugin (factory.Handle, (plugin != null) ? plugin.Handle : IntPtr.Zero); + + Gst.Registry.Default.AddFeature (factory); + + return true; +} + diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am index c8d4a593aa..2a583aa281 100644 --- a/gstreamer-sharp/glue/Makefile.am +++ b/gstreamer-sharp/glue/Makefile.am @@ -15,7 +15,8 @@ libgstreamersharpglue_0_10_la_SOURCES = \ pad.c \ gobject.c \ typefind.c \ - indexentry.c + indexentry.c \ + indexfactory.c nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c diff --git a/gstreamer-sharp/glue/indexfactory.c b/gstreamer-sharp/glue/indexfactory.c new file mode 100644 index 0000000000..8949989fd4 --- /dev/null +++ b/gstreamer-sharp/glue/indexfactory.c @@ -0,0 +1,12 @@ +#include + +void +gstsharp_gst_index_factory_set_plugin (GstIndexFactory * factory, + GstPlugin * plugin) +{ + if (!plugin) + return; + + GST_PLUGIN_FEATURE (factory)->plugin_name = g_strdup (plugin->desc.name); + GST_PLUGIN_FEATURE (factory)->loaded = TRUE; +}