<!-- ##### SECTION Title ##### -->
GstPlugin

<!-- ##### SECTION Short_Description ##### -->
Dynamically loadable Elements

<!-- ##### SECTION Long_Description ##### -->
<para>
GStreamer is extensible so <classname>GstElements</classname> can be loaded at runtime. A plugin
system can provide one or more of the basic <application>GStreamer</application> 
#GstPluginFeature subclasses.
</para>
<para>
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.
</para>
<para>
Once you have a handle to a #GstPlugin, you can add any object that subclasses #GstPluginFeature.
</para>
<para>
use gst_plugin_find_feature() and gst_plugin_get_feature_list() to find features in a plugin.
</para>
<para>
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.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>
#GstPluginFeature, #GstType, #GstAutoplug, #GstElementFactory
</para>

<!-- ##### MACRO GST_PLUGIN_ERROR ##### -->
<para>
The error quark
</para>



<!-- ##### FUNCTION gst_plugin_error_quark ##### -->
<para>
Get the error quark
</para>

@Returns: The error quark used in GError messages


<!-- ##### ENUM GstPluginError ##### -->
<para>
The plugin loading errors
</para>

@GST_PLUGIN_ERROR_MODULE: The plugin could not be loaded
@GST_PLUGIN_ERROR_DEPENDENCIES: The plugin has unresolved dependencies

<!-- ##### STRUCT GstPlugin ##### -->
<para>
The plugin object
</para>

@name: 
@longname: 
@filename: 
@features: 
@numfeatures: 
@manager: 
@module: 
@init_called: 

<!-- ##### USER_FUNCTION GstPluginInitFunc ##### -->
<para>
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.
</para>

@module: The <classname>GModule</classname> it was loaded from
@plugin: The plugin object that can be used to register stuff for this plugin.
@Returns: A boolean indicating success or failure.


<!-- ##### STRUCT GstPluginDesc ##### -->
<para>
A plugins should export a variable of this type called plugin_desc. This plugin
loaded will use this variable to initialize the plugin.
</para>

@major_version: The minor version of the gstreamer library this plugin was created with
@minor_version: The minor version of the gstreamer library this plugin was created with
@name: The name of the plugin
@plugin_init: The init function of this plugin.

<!-- ##### MACRO GST_PLUGIN_DESC ##### -->
<para>
A handy macro to define a plugin description. This macro handles with all the issues
involved with the different linking methods for this plugin.
</para>

@major: The major version of GStreamer this plugin was compiled against.
@minor: The minor version of GStreamer this plugin was compiled against.
@name: The name of the plugin.
@init: The init function of this plugin.


<!-- ##### MACRO GST_PLUGIN_DESC_DYNAMIC ##### -->
<para>
The macro used to define dynamically loaded plugins.
</para>

@major: The major version of GStreamer this plugin was compiled against.
@minor: The minor version of GStreamer this plugin was compiled against.
@name: The name of the plugin.
@init: The init function of this plugin.


<!-- ##### MACRO GST_PLUGIN_DESC_STATIC ##### -->
<para>
A macro used to define a statically linked plugin.
</para>

@major: The major version of GStreamer this plugin was compiled against.
@minor: The minor version of GStreamer this plugin was compiled against.
@name: The name of the plugin.
@init: The init function of this plugin.


<!-- ##### FUNCTION gst_plugin_new ##### -->
<para>

</para>

@filename: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_set_name ##### -->
<para>

</para>

@plugin: 
@name: 


<!-- ##### FUNCTION gst_plugin_get_name ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_get_longname ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_set_longname ##### -->
<para>

</para>

@plugin: 
@longname: 


<!-- ##### FUNCTION gst_plugin_get_filename ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_is_loaded ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_get_feature_list ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_find_feature ##### -->
<para>

</para>

@plugin: 
@name: 
@type: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_load_plugin ##### -->
<para>

</para>

@plugin: 
@error: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_unload_plugin ##### -->
<para>

</para>

@plugin: 
@Returns: 


<!-- ##### FUNCTION gst_plugin_add_feature ##### -->
<para>

</para>

@plugin: 
@feature: 


<!-- ##### FUNCTION gst_plugin_load ##### -->
<para>

</para>

@name: 
@Returns: 


<!-- ##### FUNCTION gst_library_load ##### -->
<para>

</para>

@name: 
@Returns: 


