summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-04-30 15:40:17 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-04-30 15:40:17 +0200
commitf536534214f2cdc17f253af3e42854986393d56e (patch)
treea14d0c32b1fca5aa9e2bb82820ded98defdd85e6
parentc42ef5f916225f11bd15c8cde4f68ed06e615c34 (diff)
Add convenience function to register Gst.Index types with the default registry
-rw-r--r--gstreamer-sharp/Index.custom13
-rw-r--r--gstreamer-sharp/glue/Makefile.am3
-rw-r--r--gstreamer-sharp/glue/indexfactory.c12
3 files changed, 27 insertions, 1 deletions
diff --git a/gstreamer-sharp/Index.custom b/gstreamer-sharp/Index.custom
index 60b3529..aaaebf9 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 c8d4a59..2a583aa 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 0000000..8949989
--- /dev/null
+++ b/gstreamer-sharp/glue/indexfactory.c
@@ -0,0 +1,12 @@
+#include <gst/gst.h>
+
+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;
+}