The Plugin Writer's Guide describes in great detail how to write elements for the GStreamer framework. In this section, we will solely discuss how to embed such elements statically in your application. This can be useful for application-specific elements that have no use elsewhere in GStreamer.
Dynamically loaded plugins contain a structure that's defined using
GST_PLUGIN_DEFINE ()
. This structure is loaded
when the plugin is loaded by the GStreamer core. The structure
contains an initialization function (usually called
plugin_init
) that will be called right after that.
It's purpose is to register the elements provided by the plugin with
the GStreamer framework. If you want to embed elements directly in
your application, the only thing you need to do is to manually run
this structure using _gst_plugin_register_static
()
. The initialization will then be called, and the elements
will from then on be available like any other element, without
them having to be dynamically loadable libraries. In the example below,
you would be able to call gst_element_factory_make
("my-element-name", "some-name")
to create an instance
of the element.
/* * Here, you would write the actual plugin code. */ [..] static gboolean register_elements (GstPlugin *plugin) { return gst_element_register (plugin, "my-element-name", GST_RANK_NONE, MY_PLUGIN_TYPE); } static GstPluginDesc plugin_desc = { GST_VERSION_MAJOR, GST_VERSION_MINOR, "my-private-plugins", "Private elements of my application", register_elements, NULL, "0.0.1", "LGPL", "my-application", "http://www.my-application.net/", GST_PADDING_INIT }; /* * Call this function right after calling gst_init (). */ void my_elements_init (void) { _gst_plugin_register_static (&plugin_desc); }