mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 00:36:51 +00:00
e978887fca
Original commit message from CVS: fix manual id's
56 lines
1.8 KiB
XML
56 lines
1.8 KiB
XML
<chapter id="chapter-plugins-api">
|
|
<title>Plugins</title>
|
|
<!-- FIXME: introduce type definitions before this chapter -->
|
|
<para>
|
|
All plugins should implement one function, <function>plugin_init</function>,
|
|
that creates all the element factories and registers all the type
|
|
definitions contained in the plugin.
|
|
Without this function, a plugin cannot be registered.
|
|
</para>
|
|
<para>
|
|
The plugins are maintained in the plugin system. Optionally, the
|
|
type definitions and the element factories can be saved into an XML
|
|
representation so that the plugin system does not have to load all
|
|
available plugins in order to know their definition.
|
|
</para>
|
|
|
|
<para>
|
|
The basic plugin structure has the following fields:
|
|
</para>
|
|
<programlisting>
|
|
typedef struct _GstPlugin GstPlugin;
|
|
|
|
struct _GstPlugin {
|
|
gchar *name; /* name of the plugin */
|
|
gchar *longname; /* long name of plugin */
|
|
gchar *filename; /* filename it came from */
|
|
|
|
GList *types; /* list of types provided */
|
|
gint numtypes;
|
|
GList *elements; /* list of elements provided */
|
|
gint numelements;
|
|
GList *autopluggers; /* list of autopluggers provided */
|
|
gint numautopluggers;
|
|
|
|
gboolean loaded; /* if the plugin is in memory */
|
|
};
|
|
</programlisting>
|
|
|
|
<para>
|
|
You can query a <classname>GList</classname> of available plugins with the
|
|
function <function>gst_plugin_get_list</function> as this example shows:
|
|
</para>
|
|
<programlisting>
|
|
GList *plugins;
|
|
|
|
plugins = gst_plugin_get_list ();
|
|
|
|
while (plugins) {
|
|
GstPlugin *plugin = (GstPlugin *)plugins->data;
|
|
|
|
g_print ("plugin: %s\n", gst_plugin_get_name (plugin));
|
|
|
|
plugins = g_list_next (plugins);
|
|
}
|
|
</programlisting>
|
|
</chapter>
|