diff --git a/docs/gstreamer-app/docs.md b/docs/gstreamer-app/docs.md
index 86b384bd6..1b4c64791 100644
--- a/docs/gstreamer-app/docs.md
+++ b/docs/gstreamer-app/docs.md
@@ -39,7 +39,7 @@ to avoid polling.
# Implements
-[`BaseSinkExt`](trait.BaseSinkExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html), [`URIHandlerExt`](trait.URIHandlerExt.html)
+[`gst_base::BaseSinkExt`](../gst_base/trait.BaseSinkExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`gst::URIHandlerExt`](../gst/trait.URIHandlerExt.html)
Check if `self` supports buffer lists.
@@ -422,7 +422,7 @@ occurs or the state of the appsrc has gone through READY.
# Implements
-[`BaseSrcExt`](trait.BaseSrcExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html), [`URIHandlerExt`](trait.URIHandlerExt.html)
+[`gst_base::BaseSrcExt`](../gst_base/trait.BaseSrcExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`gst::URIHandlerExt`](../gst/trait.URIHandlerExt.html)
Indicates to the appsrc element that the last buffer queued in the
element is the last buffer of the stream.
diff --git a/docs/gstreamer-base/docs.md b/docs/gstreamer-base/docs.md
index 50923b77e..15753ca05 100644
--- a/docs/gstreamer-base/docs.md
+++ b/docs/gstreamer-base/docs.md
@@ -103,7 +103,7 @@ buffer pushed in it.
# Implements
-[`ObjectExt`](trait.ObjectExt.html)
+[`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Creates a new `Adapter`. Free with `gobject::ObjectExt::unref`.
@@ -664,7 +664,7 @@ with non-synchronized streams or sparse streams.
# Implements
-[`BaseSinkExt`](trait.BaseSinkExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`BaseSinkExt`](trait.BaseSinkExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `BaseSink` methods.
@@ -1126,7 +1126,7 @@ received, it may safely shut down the entire pipeline.
# Implements
-[`BaseSrcExt`](trait.BaseSrcExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`BaseSrcExt`](trait.BaseSrcExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `BaseSrc` methods.
@@ -1403,7 +1403,7 @@ It provides for:
# Implements
-[`BaseTransformExt`](trait.BaseTransformExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`BaseTransformExt`](trait.BaseTransformExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `BaseTransform` methods.
@@ -1641,4 +1641,4 @@ base class.
# Implements
-[`BaseSrcExt`](trait.BaseSrcExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`BaseSrcExt`](trait.BaseSrcExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
diff --git a/docs/gstreamer-net/docs.md b/docs/gstreamer-net/docs.md
index bd74e42f2..14060ce7c 100644
--- a/docs/gstreamer-net/docs.md
+++ b/docs/gstreamer-net/docs.md
@@ -25,7 +25,7 @@ statistics about clock accuracy and network traffic.
# Implements
-[`ClockExt`](trait.ClockExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`gst::ClockExt`](../gst/trait.ClockExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Create a new `GstNetClientInternalClock` that will report the time
provided by the `NetTimeProvider` on `remote_address` and
@@ -56,7 +56,7 @@ The `NetTimeProvider` typically wraps the clock used by a `gst::Pipeline`.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Allows network clients to get the current time of `clock`.
## `clock`
@@ -75,7 +75,7 @@ the new `NetTimeProvider`, or NULL on error
# Implements
-[`NetClientClockExt`](trait.NetClientClockExt.html), [`ClockExt`](trait.ClockExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`NetClientClockExt`](trait.NetClientClockExt.html), [`gst::ClockExt`](../gst/trait.ClockExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Create a new `NtpClock` that will report the time provided by
the NTPv4 server on `remote_address` and `remote_port`.
@@ -117,7 +117,7 @@ synchronization.
# Implements
-[`ClockExt`](trait.ClockExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`gst::ClockExt`](../gst/trait.ClockExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Creates a new PTP clock instance that exports the PTP time of the master
clock in `domain`. This clock can be slaved to other clocks as needed.
diff --git a/docs/gstreamer-player/docs.md b/docs/gstreamer-player/docs.md
index 8468786fa..678116707 100644
--- a/docs/gstreamer-player/docs.md
+++ b/docs/gstreamer-player/docs.md
@@ -4,7 +4,7 @@
# Implements
-[`ObjectExt`](trait.ObjectExt.html)
+[`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Creates a new `Player` instance that uses `signal_dispatcher` to dispatch
signals to some event loop system, or emits signals directly if NULL is
@@ -394,7 +394,7 @@ in the stream.
# Implements
-[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
# Returns
@@ -438,7 +438,7 @@ generic error.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`PlayerSignalDispatcherExt`](trait.PlayerSignalDispatcherExt.html)
+[`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`PlayerSignalDispatcherExt`](trait.PlayerSignalDispatcherExt.html)
Creates a new GstPlayerSignalDispatcher that uses `application_context`,
or the thread default one if `None` is used. See `gst_player_new_full`.
@@ -453,7 +453,7 @@ Structure containing the media information of a URI.
# Implements
-[`ObjectExt`](trait.ObjectExt.html)
+[`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
# Returns
@@ -570,7 +570,7 @@ the stream type, one can find more media-specific information in
# Implements
-[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `PlayerStreamInfo` methods.
@@ -611,7 +611,7 @@ the tags contained in this stream.
# Implements
-[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
# Returns
@@ -622,7 +622,7 @@ the language of the stream, or NULL if unknown.
# Implements
-[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PlayerStreamInfoExt`](trait.PlayerStreamInfoExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
# Returns
@@ -659,7 +659,7 @@ the width of video in `PlayerVideoInfo`.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`PlayerVideoRendererExt`](trait.PlayerVideoRendererExt.html)
+[`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`PlayerVideoRendererExt`](trait.PlayerVideoRendererExt.html)
## `window_handle`
Window handle to use or `None`
diff --git a/docs/gstreamer-video/docs.md b/docs/gstreamer-video/docs.md
index c5e81c472..831c02421 100644
--- a/docs/gstreamer-video/docs.md
+++ b/docs/gstreamer-video/docs.md
@@ -471,6 +471,46 @@ frames contains both interlaced and
Each field has only half the amount of lines as noted in the
height property. This mode requires multiple GstVideoMeta metadata
to describe the fields.
+
+`VideoMultiviewFramePacking` represents the subset of `VideoMultiviewMode`
+values that can be applied to any video frame without needing extra metadata.
+It can be used by elements that provide a property to override the
+multiview interpretation of a video stream when the video doesn't contain
+any markers.
+
+This enum is used (for example) on playbin, to re-interpret a played
+video stream as a stereoscopic video. The individual enum values are
+equivalent to and have the same value as the matching `VideoMultiviewMode`.
+
+A special value indicating
+no frame packing info.
+
+All frames are monoscopic.
+
+All frames represent a left-eye view.
+
+All frames represent a right-eye view.
+
+Left and right eye views are
+provided in the left and right half of the frame respectively.
+
+Left and right eye
+views are provided in the left and right half of the frame, but
+have been sampled using quincunx method, with half-pixel offset
+between the 2 views.
+
+Alternating vertical
+columns of pixels represent the left and right eye view respectively.
+
+Alternating horizontal
+rows of pixels represent the left and right eye view respectively.
+
+The top half of the frame
+contains the left eye, and the bottom half the right eye.
+
+Pixels are arranged with
+alternating pixels representing left and right eye views in a
+checkerboard fashion.
All possible stereoscopic 3D and multiview representations.
In conjunction with `VideoMultiviewFlags`, describes how
diff --git a/docs/gstreamer/docs.md b/docs/gstreamer/docs.md
index 2c6b3259c..879e0bfc1 100644
--- a/docs/gstreamer/docs.md
+++ b/docs/gstreamer/docs.md
@@ -99,7 +99,7 @@ handler will return `true`.
# Implements
-[`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
+[`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
Trait containing all `Bin` methods.
@@ -1254,7 +1254,7 @@ from READY to NULL state.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Creates a new `Bus` instance.
@@ -2333,7 +2333,7 @@ defines the minimum number of samples before the calibration is performed.
# Implements
-[`ClockExt`](trait.ClockExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`ClockExt`](trait.ClockExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `Clock` methods.
@@ -3306,7 +3306,7 @@ aggregated by `DeviceMonitor` objects.
# Implements
-[`DeviceExt`](trait.DeviceExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`DeviceExt`](trait.DeviceExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `Device` methods.
@@ -3449,7 +3449,7 @@ The basic use pattern of a device monitor is as follows:
# Implements
-[`DeviceMonitorExt`](trait.DeviceMonitorExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`DeviceMonitorExt`](trait.DeviceMonitorExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `DeviceMonitor` methods.
@@ -3551,7 +3551,7 @@ from all relevant providers.
# Implements
-[`DeviceProviderExt`](trait.DeviceProviderExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`DeviceProviderExt`](trait.DeviceProviderExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `DeviceProvider` methods.
@@ -3664,7 +3664,7 @@ convenient shortcut.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PluginFeatureExt`](trait.PluginFeatureExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Search for an device provider factory of the given name. Refs the returned
device provider factory; caller is responsible for unreffing.
@@ -3707,7 +3707,7 @@ if the device provider couldn't be created
Get the `glib::Type` for device providers managed by this factory. The type can
only be retrieved if the device provider factory is loaded, which can be
-assured with `PluginFeature::load`.
+assured with `PluginFeatureExt::load`.
# Returns
@@ -3800,7 +3800,7 @@ specific situations.
# Implements
-[`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `Element` methods.
@@ -4754,7 +4754,7 @@ The following code example shows you how to create a GstFileSrc element.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PluginFeatureExt`](trait.PluginFeatureExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Search for an element factory of the given name. Refs the returned
element factory; caller is responsible for unreffing.
@@ -4863,7 +4863,7 @@ new `Element` or `None`
Get the `glib::Type` for elements managed by this factory. The type can
only be retrieved if the element factory is loaded, which can be
-assured with `PluginFeature::load`.
+assured with `PluginFeatureExt::load`.
# Returns
@@ -5925,7 +5925,7 @@ Note that GhostPads add overhead to the data processing of a pipeline.
# Implements
-[`GhostPadExt`](trait.GhostPadExt.html), [`ProxyPadExt`](trait.ProxyPadExt.html), [`PadExt`](trait.PadExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GhostPadExt`](trait.GhostPadExt.html), [`ProxyPadExt`](trait.ProxyPadExt.html), [`PadExt`](trait.PadExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `GhostPad` methods.
@@ -7424,13 +7424,13 @@ What needs to be done in applications? Again it's not a lot to change.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `Object` methods.
# Implementors
-[`Bus`](struct.Bus.html), [`Clock`](struct.Clock.html), [`DeviceMonitor`](struct.DeviceMonitor.html), [`DeviceProvider`](struct.DeviceProvider.html), [`Device`](struct.Device.html), [`Element`](struct.Element.html), [`Object`](struct.Object.html), [`PadTemplate`](struct.PadTemplate.html), [`Pad`](struct.Pad.html), [`Plugin`](struct.Plugin.html), [`StreamCollection`](struct.StreamCollection.html), [`Stream`](struct.Stream.html)
+[`Bus`](struct.Bus.html), [`Clock`](struct.Clock.html), [`DeviceMonitor`](struct.DeviceMonitor.html), [`DeviceProvider`](struct.DeviceProvider.html), [`Device`](struct.Device.html), [`Element`](struct.Element.html), [`Object`](struct.Object.html), [`PadTemplate`](struct.PadTemplate.html), [`Pad`](struct.Pad.html), [`PluginFeature`](struct.PluginFeature.html), [`Plugin`](struct.Plugin.html), [`Registry`](struct.Registry.html), [`StreamCollection`](struct.StreamCollection.html), [`Stream`](struct.Stream.html)
Checks to see if there is any object named `name` in `list`. This function
does not do any locking of any kind. You might want to protect the
@@ -7866,7 +7866,7 @@ respectively.
# Implements
-[`PadExt`](trait.PadExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`PadExt`](trait.PadExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `Pad` methods.
@@ -9149,7 +9149,7 @@ element class, this is usually done in the class_init of the class:
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Creates a new pad template with a name according to the given template
and with the given arguments.
@@ -9293,7 +9293,7 @@ in the PLAYING state. This default behaviour can be changed with the
# Implements
-[`PipelineExt`](trait.PipelineExt.html), [`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
+[`PipelineExt`](trait.PipelineExt.html), [`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
Trait containing all `Pipeline` methods.
@@ -9480,7 +9480,7 @@ into memory.
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Unrefs each member of `list`, then frees the list.
## `list`
@@ -9740,6 +9740,113 @@ The plugin could not be loaded
The plugin has unresolved dependencies
The plugin has already be loaded from a different file
+
+This is a base class for anything that can be added to a `Plugin`.
+
+# Implements
+
+[`PluginFeatureExt`](trait.PluginFeatureExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Trait containing all `PluginFeature` methods.
+
+# Implementors
+
+[`DeviceProviderFactory`](struct.DeviceProviderFactory.html), [`ElementFactory`](struct.ElementFactory.html), [`PluginFeature`](struct.PluginFeature.html), [`TypeFindFactory`](struct.TypeFindFactory.html)
+
+Copies the list of features. Caller should call `PluginFeature::list_free`
+when done with the list.
+## `list`
+list
+ of `PluginFeature`
+
+# Returns
+
+a copy of `list`,
+ with each feature's reference count incremented.
+
+Debug the plugin feature names in `list`.
+## `list`
+a `glib::List` of
+ plugin features
+
+Unrefs each member of `list`, then frees the list.
+## `list`
+list
+ of `PluginFeature`
+
+Compares the two given `PluginFeature` instances. This function can be
+used as a `GCompareFunc` when sorting by rank and then by name.
+## `p1`
+a `PluginFeature`
+## `p2`
+a `PluginFeature`
+
+# Returns
+
+negative value if the rank of p1 > the rank of p2 or the ranks are
+equal but the name of p1 comes before the name of p2; zero if the rank
+and names are equal; positive value if the rank of p1 < the rank of p2 or the
+ranks are equal but the name of p2 comes before the name of p1
+
+Checks whether the given plugin feature is at least
+ the required version
+## `min_major`
+minimum required major version
+## `min_minor`
+minimum required minor version
+## `min_micro`
+minimum required micro version
+
+# Returns
+
+`true` if the plugin feature has at least
+ the required version, otherwise `false`.
+
+Get the plugin that provides this feature.
+
+# Returns
+
+the plugin that provides this
+ feature, or `None`. Unref with `GstObjectExt::unref` when no
+ longer needed.
+
+Get the name of the plugin that provides this feature.
+
+# Returns
+
+the name of the plugin that provides this
+ feature, or `None` if the feature is not associated with a
+ plugin.
+
+Gets the rank of a plugin feature.
+
+# Returns
+
+The rank of the feature
+
+Loads the plugin containing `self` if it's not already loaded. `self` is
+unaffected; use the return value instead.
+
+Normally this function is used like this:
+
+```C
+GstPluginFeature *loaded_feature;
+
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we're no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+```
+
+# Returns
+
+a reference to the loaded
+feature, or `None` on error
+
+Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.
+## `rank`
+rank value - higher number means more priority rank
This interface offers methods to query and manipulate parameter preset sets.
A preset is a bunch of property settings, together with meta data and a name.
@@ -9895,7 +10002,7 @@ A task caused an error. An error message is also
# Implements
-[`ProxyPadExt`](trait.ProxyPadExt.html), [`PadExt`](trait.PadExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`ProxyPadExt`](trait.ProxyPadExt.html), [`PadExt`](trait.PadExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `ProxyPad` methods.
@@ -10755,6 +10862,287 @@ unlikely to be chosen
likely to be chosen
will be chosen first
+
+One registry holds the metadata of a set of plugins.
+
+Design:``
+
+The `Registry` object is a list of plugins and some functions for dealing
+with them. Each `Plugin` is matched 1-1 with a file on disk, and may or may
+not be loaded at a given time.
+
+The primary source, at all times, of plugin information is each plugin file
+itself. Thus, if an application wants information about a particular plugin,
+or wants to search for a feature that satisfies given criteria, the primary
+means of doing so is to load every plugin and look at the resulting
+information that is gathered in the default registry. Clearly, this is a time
+consuming process, so we cache information in the registry file. The format
+and location of the cache file is internal to gstreamer.
+
+On startup, plugins are searched for in the plugin search path. The following
+locations are checked in this order:
+
+* location from --gst-plugin-path commandline option.
+* the GST_PLUGIN_PATH environment variable.
+* the GST_PLUGIN_SYSTEM_PATH environment variable.
+* default locations (if GST_PLUGIN_SYSTEM_PATH is not set).
+ Those default locations are:
+ `$XDG_DATA_HOME/gstreamer-$GST_API_VERSION/plugins/`
+ and `$prefix/libs/gstreamer-$GST_API_VERSION/`.
+ [$XDG_DATA_HOME](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) defaults to
+ `$HOME/.local/share`.
+
+The registry cache file is loaded from
+`$XDG_CACHE_HOME/gstreamer-$GST_API_VERSION/registry-$ARCH.bin`
+(where $XDG_CACHE_HOME defaults to `$HOME/.cache`) or the file listed in the `GST_REGISTRY`
+env var. One reason to change the registry location is for testing.
+
+For each plugin that is found in the plugin search path, there could be 3
+possibilities for cached information:
+
+ * the cache may not contain information about a given file.
+ * the cache may have stale information.
+ * the cache may have current information.
+
+In the first two cases, the plugin is loaded and the cache updated. In
+addition to these cases, the cache may have entries for plugins that are not
+relevant to the current process. These are marked as not available to the
+current process. If the cache is updated for whatever reason, it is marked
+dirty.
+
+A dirty cache is written out at the end of initialization. Each entry is
+checked to make sure the information is minimally valid. If not, the entry is
+simply dropped.
+
+## Implementation notes:
+
+The "cache" and "registry" are different concepts and can represent
+different sets of plugins. For various reasons, at init time, the cache is
+stored in the default registry, and plugins not relevant to the current
+process are marked with the `PluginFlags::Cached` bit. These plugins are
+removed at the end of initialization.
+
+# Implements
+
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+By default GStreamer will perform scanning and rebuilding of the
+registry file using a helper child process.
+
+Applications might want to disable this behaviour with the
+`Registry::fork_set_enabled` function, in which case new plugins
+are scanned (and loaded) into the application process.
+
+# Returns
+
+`true` if GStreamer will use the child helper process when
+rebuilding the registry.
+
+Applications might want to disable/enable spawning of a child helper process
+when rebuilding the registry. See `Registry::fork_is_enabled` for more
+information.
+## `enabled`
+whether rebuilding the registry can use a temporary child helper process.
+
+Retrieves the singleton plugin registry. The caller does not own a
+reference on the registry, as it is alive as long as GStreamer is
+initialized.
+
+# Returns
+
+the `Registry`.
+
+Add the feature to the registry. The feature-added signal will be emitted.
+This function sinks `feature`.
+## `feature`
+the feature to add
+
+# Returns
+
+`true` on success.
+
+MT safe.
+
+Add the plugin to the registry. The plugin-added signal will be emitted.
+This function will sink `plugin`.
+## `plugin`
+the plugin to add
+
+# Returns
+
+`true` on success.
+
+MT safe.
+
+Checks whether a plugin feature by the given name exists in
+`self` and whether its version is at least the
+version required.
+## `feature_name`
+the name of the feature (e.g. "oggdemux")
+## `min_major`
+the minimum major version number
+## `min_minor`
+the minimum minor version number
+## `min_micro`
+the minimum micro version number
+
+# Returns
+
+`true` if the feature could be found and the version is
+the same as the required version or newer, and `false` otherwise.
+
+Runs a filter against all features of the plugins in the registry
+and returns a GList with the results.
+If the first flag is set, only the first match is
+returned (as a list with a single object).
+## `filter`
+the filter to use
+## `first`
+only return first match
+## `user_data`
+user data passed to the filter function
+
+# Returns
+
+a `glib::List` of
+ `PluginFeature`. Use `PluginFeature::list_free` after usage.
+
+MT safe.
+
+Find the pluginfeature with the given name and type in the registry.
+## `name`
+the pluginfeature name to find
+## `type_`
+the pluginfeature type to find
+
+# Returns
+
+the pluginfeature with the
+ given name and type or `None` if the plugin was not
+ found. `GstObjectExt::unref` after usage.
+
+MT safe.
+
+Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.
+## `name`
+the plugin name to find
+
+# Returns
+
+the plugin with the given name
+ or `None` if the plugin was not found. `GstObjectExt::unref` after
+ usage.
+
+MT safe.
+
+Retrieves a `glib::List` of `PluginFeature` of `type_`.
+## `type_`
+a `glib::Type`.
+
+# Returns
+
+a `glib::List` of
+ `PluginFeature` of `type_`. Use `PluginFeature::list_free` after use
+
+MT safe.
+
+Retrieves a `glib::List` of features of the plugin with name `name`.
+## `name`
+a plugin name.
+
+# Returns
+
+a `glib::List` of
+ `PluginFeature`. Use `PluginFeature::list_free` after usage.
+
+Returns the registry's feature list cookie. This changes
+every time a feature is added or removed from the registry.
+
+# Returns
+
+the feature list cookie.
+
+Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.
+
+# Returns
+
+a `glib::List` of `Plugin`.
+ Use `Plugin::list_free` after usage.
+
+MT safe.
+
+Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.
+## `filename`
+the name of the file to look up
+
+# Returns
+
+the `Plugin` if found, or
+ `None` if not. `GstObjectExt::unref` after usage.
+
+Find a `PluginFeature` with `name` in `self`.
+## `name`
+a `PluginFeature` name
+
+# Returns
+
+a `PluginFeature` with its refcount incremented,
+ use `GstObjectExt::unref` after usage.
+
+MT safe.
+
+Runs a filter against all plugins in the registry and returns a `glib::List` with
+the results. If the first flag is set, only the first match is
+returned (as a list with a single object).
+Every plugin is reffed; use `Plugin::list_free` after use, which
+will unref again.
+## `filter`
+the filter to use
+## `first`
+only return first match
+## `user_data`
+user data passed to the filter function
+
+# Returns
+
+a `glib::List` of `Plugin`.
+ Use `Plugin::list_free` after usage.
+
+MT safe.
+
+Remove the feature from the registry.
+
+MT safe.
+## `feature`
+the feature to remove
+
+Remove the plugin from the registry.
+
+MT safe.
+## `plugin`
+the plugin to remove
+
+Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.
+## `path`
+the path to scan
+
+# Returns
+
+`true` if registry changed
+
+Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)
+## `feature`
+the feature that has been added
+
+Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)
+## `plugin`
+the plugin that has been added
Resource errors are for any resource used by an element:
memory, files, network connections, process space, ...
@@ -11382,7 +11770,7 @@ Feature: `v1_10`
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Create a new `Stream` for the given `stream_id`, `caps`, `type_`
and `flags`
@@ -11516,7 +11904,7 @@ Feature: `v1_10`
# Implements
-[`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Create a new `StreamCollection`.
@@ -12465,7 +12853,7 @@ wait operations.
# Implements
-[`SystemClockExt`](trait.SystemClockExt.html), [`ClockExt`](trait.ClockExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`SystemClockExt`](trait.SystemClockExt.html), [`ClockExt`](trait.ClockExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `SystemClock` methods.
@@ -13185,7 +13573,7 @@ GST_LOG_OBJECT (tagsetter, "final tags: %" GST_PTR_FORMAT, result);
# Implements
-[`TagSetterExt`](trait.TagSetterExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`TagSetterExt`](trait.TagSetterExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `TagSetter` methods.
@@ -13538,7 +13926,7 @@ with any TOC entries received from downstream.
# Implements
-[`TocSetterExt`](trait.TocSetterExt.html), [`ElementExt`](trait.ElementExt.html), [`ObjectExt`](trait.ObjectExt.html), [`ObjectExt`](trait.ObjectExt.html)
+[`TocSetterExt`](trait.TocSetterExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
Trait containing all `TocSetter` methods.
@@ -13561,6 +13949,118 @@ Set the given TOC on the setter. Previously set TOC will be
unreffed before setting a new one.
## `toc`
a `Toc` to set.
+
+These functions allow querying informations about registered typefind
+functions. How to create and register these functions is described in
+the section
+"Writing typefind functions"``.
+
+The following example shows how to write a very simple typefinder that
+identifies the given data. You can get quite a bit more complicated than
+that though.
+
+```C
+ typedef struct {
+ guint8 *data;
+ guint size;
+ guint probability;
+ GstCaps *data;
+ } MyTypeFind;
+ static void
+ my_peek (gpointer data, gint64 offset, guint size)
+ {
+ MyTypeFind *find = (MyTypeFind *) data;
+ if (offset >= 0 && offset + size <= find->size) {
+ return find->data + offset;
+ }
+ return NULL;
+ }
+ static void
+ my_suggest (gpointer data, guint probability, GstCaps *caps)
+ {
+ MyTypeFind *find = (MyTypeFind *) data;
+ if (probability > find->probability) {
+ find->probability = probability;
+ gst_caps_replace (&find->caps, caps);
+ }
+ }
+ static GstCaps *
+ find_type (guint8 *data, guint size)
+ {
+ GList *walk, *type_list;
+ MyTypeFind find = {data, size, 0, NULL};
+ GstTypeFind gst_find = {my_peek, my_suggest, &find, };
+ walk = type_list = gst_type_find_factory_get_list ();
+ while (walk) {
+ GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk->data);
+ walk = g_list_next (walk)
+ gst_type_find_factory_call_function (factory, &gst_find);
+ }
+ g_list_free (type_list);
+ return find.caps;
+ };
+```
+
+# Implements
+
+[`PluginFeatureExt`](trait.PluginFeatureExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
+
+Gets the list of all registered typefind factories. You must free the
+list using `PluginFeature::list_free`.
+
+The returned factories are sorted by highest rank first, and then by
+factory name.
+
+Free-function: gst_plugin_feature_list_free
+
+# Returns
+
+the list of all
+ registered `TypeFindFactory`.
+
+Calls the `GstTypeFindFunction` associated with this factory.
+## `find`
+a properly setup `TypeFind` entry. The get_data
+ and suggest_type members must be set.
+
+Gets the `Caps` associated with a typefind factory.
+
+# Returns
+
+the `Caps` associated with this factory
+
+Gets the extensions associated with a `TypeFindFactory`. The returned
+array should not be changed. If you need to change stuff in it, you should
+copy it using `g_strdupv`. This function may return `None` to indicate
+a 0-length list.
+
+# Returns
+
+
+ a `None`-terminated array of extensions associated with this factory
+
+Check whether the factory has a typefind function. Typefind factories
+without typefind functions are a last-effort fallback mechanism to
+e.g. assume a certain media type based on the file extension.
+
+# Returns
+
+`true` if the factory has a typefind functions set, otherwise `false`
+
+The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind.
+
+type undetected.
+
+unlikely typefind.
+
+possible type detected.
+
+likely a type was detected.
+
+nearly certain that a type was detected.
+
+very certain a type was detected.
Different URI-related errors that can occur.