GStreamer Library Reference Manual (Core) | |||
---|---|---|---|
<<< Previous Page | Home | Up | Next Page >>> |
#include <gst/gst.h> struct GstPlugin; gboolean (*GstPluginInitFunc) (GModule *module, GstPlugin *plugin); struct GstPluginDesc; #define GST_PLUGIN_DESC (major,minor,name,init) #define GST_PLUGIN_DESC_DYNAMIC (major,minor,name,init) #define GST_PLUGIN_DESC_STATIC (major,minor,name,init) void gst_plugin_set_name (GstPlugin *plugin, const gchar *name); const gchar* gst_plugin_get_name (GstPlugin *plugin); const gchar* gst_plugin_get_longname (GstPlugin *plugin); void gst_plugin_set_longname (GstPlugin *plugin, const gchar *longname); const gchar* gst_plugin_get_filename (GstPlugin *plugin); gboolean gst_plugin_is_loaded (GstPlugin *plugin); void gst_plugin_load_all (void); gboolean gst_plugin_load (const gchar *name); gboolean gst_plugin_load_absolute (const gchar *name); void gst_plugin_add_path (const gchar *path); gboolean gst_library_load (const gchar *name); GstPlugin* gst_plugin_find (const gchar *name); GList* gst_plugin_get_list (void); void gst_plugin_load_thyself (xmlNodePtr parent); xmlNodePtr gst_plugin_save_thyself (xmlNodePtr parent); void gst_plugin_add_feature (GstPlugin *plugin, GstPluginFeature *feature); GList* gst_plugin_get_feature_list (GstPlugin *plugin); gboolean gst_plugin_load_plugin (GstPlugin *plugin); void gst_plugin_unload_all (void); |
GStreamer is extensible so GstElements can be loaded at runtime. A plugin system can provide one or more of the basic GStreamer GstPluginFeature subclasses.
A plugin should export a symbol plugin_desc that is a struct of type GstPluginDesc. the plugin loader will check the version of the core library the plugin was linked against and will create a new GstPlugin. It will then call the GstPluginInitFunc function that was provided in the plugin_desc.
Once you have a handle to a GstPlugin, you can add any object that subclasses GstPluginFeature.
use gst_plugin_find(), gst_plugin_get_list() and gst_plugin_get_feature_list() to query the plugin repository.
Usually plugins are always automaticlly loaded so you don't need to call gst_plugin_load() explicitly to bring it into memory. There are options to statically link plugins to an app or even use GStreamer without a plugin repository in which case gst_plugin_load() can be needed to bring the plugin into memory.
struct GstPlugin { gchar *name; /* name of the plugin */ gchar *longname; /* long name of plugin */ gchar *filename; /* filename it came from */ GList *features; /* list of features provided */ gint numfeatures; GModule *module; /* contains the module if the plugin is loaded */ }; |
gboolean (*GstPluginInitFunc) (GModule *module, GstPlugin *plugin); |
A plugin should provide a pointer to a function of this type in the plugin_desc struct. It will be called by the loader at statup.
struct GstPluginDesc { gint major_version; /* major version of core that plugin was compiled for */ gint minor_version; /* minor version of core that plugin was compiled for */ gchar *name; /* name of plugin */ GstPluginInitFunc plugin_init; /* pointer to plugin_init function */ }; |
A plugins should export a variable of this type called plugin_desc. This plugin loaded will use this variable to initialize the plugin.
gint major_version | The minor version of the gstreamer library this plugin was created with |
gint minor_version | The minor version of the gstreamer library this plugin was created with |
gchar *name | The name of the plugin |
GstPluginInitFunc plugin_init | The init function of this plugin. |
#define GST_PLUGIN_DESC(major,minor,name,init) |
A handy macro to define a plugin description. This macro handles with all the issues involved with the different linking methods for this plugin.
#define GST_PLUGIN_DESC_DYNAMIC(major,minor,name,init) |
The macro used to define dynamically loaded plugins.
#define GST_PLUGIN_DESC_STATIC(major,minor,name,init) |
A macro used to define a statically linked plugin.
void gst_plugin_set_name (GstPlugin *plugin, const gchar *name); |
Sets the name (should be short) of the plugin.
const gchar* gst_plugin_get_name (GstPlugin *plugin); |
Get the short name of the plugin
const gchar* gst_plugin_get_longname (GstPlugin *plugin); |
Get the long descriptive name of the plugin
void gst_plugin_set_longname (GstPlugin *plugin, const gchar *longname); |
Sets the long name (should be descriptive) of the plugin.
const gchar* gst_plugin_get_filename (GstPlugin *plugin); |
get the filename of the plugin
gboolean gst_plugin_is_loaded (GstPlugin *plugin); |
queries if the plugin is loaded into memory
gboolean gst_plugin_load (const gchar *name); |
Load the named plugin. Name should be given as "libplugin.so".
gboolean gst_plugin_load_absolute (const gchar *name); |
Load the named plugin. Name should be given as "/path/to/plugin/libplugin.so".
void gst_plugin_add_path (const gchar *path); |
Add a directory to the path searched for plugins.
gboolean gst_library_load (const gchar *name); |
Load the named library. Name should be given as "liblibrary.so".
GstPlugin* gst_plugin_find (const gchar *name); |
Search the list of registered plugins for one of the given name
name : | name of plugin to find |
Returns : | pointer to the GstPlugin if found, NULL otherwise |
void gst_plugin_load_thyself (xmlNodePtr parent); |
load the plugin from an XML representation
xmlNodePtr gst_plugin_save_thyself (xmlNodePtr parent); |
saves the plugin into an XML representation
void gst_plugin_add_feature (GstPlugin *plugin, GstPluginFeature *feature); |
Add feature to the list of those provided by the plugin.
GList* gst_plugin_get_feature_list (GstPlugin *plugin); |
get a list of all the features that this plugin provides