From 7642441d58325f38568214b12ba17cf1871ba0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 22 Dec 2017 13:37:28 +0200 Subject: [PATCH] Update documentation --- docs/gstreamer-app/docs.md | 4 +- docs/gstreamer-base/docs.md | 10 +- docs/gstreamer-net/docs.md | 8 +- docs/gstreamer-player/docs.md | 16 +- docs/gstreamer-video/docs.md | 40 +++ docs/gstreamer/docs.md | 548 ++++++++++++++++++++++++++++++++-- 6 files changed, 583 insertions(+), 43 deletions(-) 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.