GStreamer is extensible, so Element instances can be loaded at runtime.
A plugin system can provide one or more of the basic GStreamer
PluginFeature subclasses.
A plugin should export a symbol `gst_plugin_desc` that is a struct of type
PluginDesc. the plugin loader will check the version of the core library the plugin was linked against and will create a new
Plugin. It will then call the PluginInitFunc
function that was provided in the `gst_plugin_desc`.
Once you have a handle to a Plugin (e.g. from the Registry
), you can add any object that subclasses PluginFeature.
Usually plugins are always automatically loaded so you don't need to call 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 load can be needed to bring the plugin into memory.