Update docs

This commit is contained in:
Sebastian Dröge 2020-07-06 14:38:47 +03:00
parent ca8b8f6a38
commit d2467b4b65
10 changed files with 1403 additions and 37 deletions

View file

@ -619,6 +619,18 @@ handler with `GST_PAD_SET_ACCEPT_INTERSECT` and
`GST_PAD_SET_ACCEPT_TEMPLATE` `GST_PAD_SET_ACCEPT_TEMPLATE`
## `use_` ## `use_`
if the default pad accept-caps query handling should be used if the default pad accept-caps query handling should be used
<!-- trait AudioDecoderExt::fn get_property_max_errors -->
Maximum number of tolerated consecutive decode errors. See
`AudioDecoderExt::set_max_errors` for more details.
Feature: `v1_18`
<!-- trait AudioDecoderExt::fn set_property_max_errors -->
Maximum number of tolerated consecutive decode errors. See
`AudioDecoderExt::set_max_errors` for more details.
Feature: `v1_18`
<!-- struct AudioEncoder --> <!-- struct AudioEncoder -->
This base class is for audio encoders turning raw audio samples into This base class is for audio encoders turning raw audio samples into
encoded audio data. encoded audio data.
@ -969,6 +981,13 @@ Configures encoder audio jitter tolerance threshold.
MT safe. MT safe.
## `tolerance` ## `tolerance`
new tolerance new tolerance
<!-- struct AudioFlags -->
Extra audio flags
<!-- struct AudioFlags::const NONE -->
no valid flag
<!-- struct AudioFlags::const UNPOSITIONED -->
the position array explicitly
contains unpositioned channels.
<!-- enum AudioFormat --> <!-- enum AudioFormat -->
Enum value describing the most common audio formats. Enum value describing the most common audio formats.
<!-- enum AudioFormat::variant Unknown --> <!-- enum AudioFormat::variant Unknown -->
@ -1063,6 +1082,19 @@ encoded audio format
32-bit floating point samples, native endianness 32-bit floating point samples, native endianness
<!-- enum AudioFormat::variant F64 --> <!-- enum AudioFormat::variant F64 -->
64-bit floating point samples, native endianness 64-bit floating point samples, native endianness
<!-- struct AudioFormatFlags -->
The different audio flags that a format info can have.
<!-- struct AudioFormatFlags::const INTEGER -->
integer samples
<!-- struct AudioFormatFlags::const FLOAT -->
float samples
<!-- struct AudioFormatFlags::const SIGNED -->
signed samples
<!-- struct AudioFormatFlags::const COMPLEX -->
complex layout
<!-- struct AudioFormatFlags::const UNPACK -->
the format can be used in
`GstAudioFormatUnpack` and `GstAudioFormatPack` functions
<!-- struct AudioInfo --> <!-- struct AudioInfo -->
Information describing audio properties. This information can be filled Information describing audio properties. This information can be filled
in from GstCaps with `AudioInfo::from_caps`. in from GstCaps with `AudioInfo::from_caps`.
@ -1144,6 +1176,16 @@ Layout of the audio samples for the different channels.
interleaved audio interleaved audio
<!-- enum AudioLayout::variant NonInterleaved --> <!-- enum AudioLayout::variant NonInterleaved -->
non-interleaved audio non-interleaved audio
<!-- struct AudioPackFlags -->
The different flags that can be used when packing and unpacking.
<!-- struct AudioPackFlags::const NONE -->
No flag
<!-- struct AudioPackFlags::const TRUNCATE_RANGE -->
When the source has a smaller depth
than the target format, set the least significant bits of the target
to 0. This is likely slightly faster but less accurate. When this flag
is not specified, the most significant bits of the source are duplicated
in the least significant bits of the destination.
<!-- enum AudioRingBufferFormatType --> <!-- enum AudioRingBufferFormatType -->
The format of the samples in the ringbuffer. The format of the samples in the ringbuffer.
<!-- enum AudioRingBufferFormatType::variant Raw --> <!-- enum AudioRingBufferFormatType::variant Raw -->

View file

@ -156,6 +156,20 @@ the number of bytes to copy
# Returns # Returns
A new `glib::Bytes` structure containing the copied data. A new `glib::Bytes` structure containing the copied data.
<!-- impl Adapter::fn distance_from_discont -->
Get the distance in bytes since the last buffer with the
`gst::BufferFlags::Discont` flag.
The distance will be reset to 0 for all buffers with
`gst::BufferFlags::Discont` on them, and then calculated for all other
following buffers based on their size.
Feature: `v1_10`
# Returns
The offset. Can be `GST_BUFFER_OFFSET_NONE`.
<!-- impl Adapter::fn dts_at_discont --> <!-- impl Adapter::fn dts_at_discont -->
Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
flag, or GST_CLOCK_TIME_NONE. flag, or GST_CLOCK_TIME_NONE.
@ -790,6 +804,18 @@ Enables the emission of signals such as `AggregatorPad::buffer-consumed`
Feature: `v1_16` Feature: `v1_16`
<!-- enum AggregatorStartTimeSelection -->
<!-- enum AggregatorStartTimeSelection::variant Zero -->
Start at running time 0.
<!-- enum AggregatorStartTimeSelection::variant First -->
Start at the running time of
the first buffer that is received.
<!-- enum AggregatorStartTimeSelection::variant Set -->
Start at the running time
selected by the `start-time` property.
Feature: `v1_18`
<!-- struct BaseParse --> <!-- struct BaseParse -->
This base class is for parser elements that process data and splits it This base class is for parser elements that process data and splits it
into separate audio/video/whatever frames. into separate audio/video/whatever frames.
@ -1157,6 +1183,9 @@ a newly-allocated `BaseParseFrame`. Free with
<!-- impl BaseParseFrame::fn copy --> <!-- impl BaseParseFrame::fn copy -->
Copies a `BaseParseFrame`. Copies a `BaseParseFrame`.
Feature: `v1_12_1`
# Returns # Returns
A copy of `self` A copy of `self`
@ -1168,6 +1197,30 @@ all public fields are zero-ed and a private flag is set to make
sure `BaseParseFrame::free` only frees the contents but not sure `BaseParseFrame::free` only frees the contents but not
the actual frame. Use this function to initialise a `BaseParseFrame` the actual frame. Use this function to initialise a `BaseParseFrame`
allocated on the stack. allocated on the stack.
<!-- struct BaseParseFrameFlags -->
Flags to be used in a `BaseParseFrame`.
<!-- struct BaseParseFrameFlags::const NONE -->
no flag
<!-- struct BaseParseFrameFlags::const NEW_FRAME -->
set by baseclass if current frame
is passed for processing to the subclass for the first time
(and not set on subsequent calls with same data).
<!-- struct BaseParseFrameFlags::const NO_FRAME -->
set to indicate this buffer should not be
counted as frame, e.g. if this frame is dependent on a previous one.
As it is not counted as a frame, bitrate increases but frame to time
conversions are maintained.
<!-- struct BaseParseFrameFlags::const CLIP -->
`pre_push_frame` can set this to indicate
that regular segment clipping can still be performed (as opposed to
any custom one having been done).
<!-- struct BaseParseFrameFlags::const DROP -->
indicates to `finish_frame` that the
the frame should be dropped (and might be handled internally by subclass)
<!-- struct BaseParseFrameFlags::const QUEUE -->
indicates to `finish_frame` that the
the frame should be queued for now and processed fully later
when the first non-queued frame is finished
<!-- struct BaseSink --> <!-- struct BaseSink -->
`BaseSink` is the base class for sink elements in GStreamer, such as `BaseSink` is the base class for sink elements in GStreamer, such as
xvimagesink or filesink. It is a layer on top of `gst::Element` that provides a xvimagesink or filesink. It is a layer on top of `gst::Element` that provides a

View file

@ -187,8 +187,7 @@ call `glib::MainContext::push_thread_default` in a new thread before
calling `ges_init`. calling `ges_init`.
Example of an asynchronous asset request: Example of an asynchronous asset request:
``` c
```text
// The request callback // The request callback
static void static void
asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data) asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
@ -198,14 +197,14 @@ asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
asset = ges_asset_request_finish (res, &error); asset = ges_asset_request_finish (res, &error);
if (asset) { if (asset) {
g_print ("The file: %s is usable as a FileSource", g_print ("The file: %s is usable as a GESUriClip",
ges_asset_get_id (asset)); ges_asset_get_id (asset));
} else { } else {
g_print ("The file: %s is *not* usable as a FileSource because: %s", g_print ("The file: %s is *not* usable as a GESUriClip because: %s",
ges_asset_get_id (source), error->message); ges_asset_get_id (source), error->message);
} }
gst_object_unref (mfs); gst_object_unref (asset);
} }
// The request: // The request:
@ -728,6 +727,9 @@ This method can also fail if the adding the track element to the track
would break a configuration rule of the corresponding `Timeline`, would break a configuration rule of the corresponding `Timeline`,
such as causing three sources to overlap at a single time, or causing such as causing three sources to overlap at a single time, or causing
a source to completely overlap another in the same track. a source to completely overlap another in the same track.
Feature: `v1_18`
## `child` ## `child`
A child of `self` A child of `self`
## `track` ## `track`
@ -935,6 +937,9 @@ using this position to trim the end of a clip.
See `ClipExt::get_internal_time_from_timeline_time`, which performs the See `ClipExt::get_internal_time_from_timeline_time`, which performs the
reverse, or `ClipExt::get_timeline_time_from_source_frame` which does reverse, or `ClipExt::get_timeline_time_from_source_frame` which does
the same conversion, but using frame numbers. the same conversion, but using frame numbers.
Feature: `v1_18`
## `child` ## `child`
An `TrackElement:active` child of `self` with a An `TrackElement:active` child of `self` with a
`TrackElement:track` `TrackElement:track`
@ -1122,6 +1127,9 @@ If the duration-limit would ever go below the current
`TimelineElement:duration` of the clip due to a change in the above `TimelineElement:duration` of the clip due to a change in the above
variables, its `TimelineElement:duration` will be set to the new variables, its `TimelineElement:duration` will be set to the new
limit. limit.
Feature: `v1_18`
<!-- trait ClipExt::fn get_property_layer --> <!-- trait ClipExt::fn get_property_layer -->
The layer this clip lies in. The layer this clip lies in.
@ -1437,9 +1445,14 @@ The element is edited in slide mode (not yet
(`Edge::Start` and `Edge::End`) is not defined. The element can (`Edge::Start` and `Edge::End`) is not defined. The element can
not shift layers under this mode. not shift layers under this mode.
<!-- struct Effect --> <!-- struct Effect -->
Currently we only support effects with 1 sinkpad and 1 sourcepad Currently we only support effects with N sinkpads and one single srcpad.
with the exception of `gesaudiomixer` and `gescompositor` which Apart from `gesaudiomixer` and `gescompositor` which can be used as effects
can be used as effects. and where sinkpads will be requested as needed based on the timeline topology
GES will always request at most one sinkpad per effect (when required).
> Note: GES always adds converters (`audioconvert ! audioresample !
> audioconvert` for audio effects and `videoconvert` for video effects) to
> make it simpler for end users.
# Implements # Implements
@ -1742,6 +1755,9 @@ if `self` refused to add `clip`.
<!-- trait LayerExt::fn get_active_for_track --> <!-- trait LayerExt::fn get_active_for_track -->
Gets whether the layer is active for the given track. See Gets whether the layer is active for the given track. See
`LayerExt::set_active_for_tracks`. `LayerExt::set_active_for_tracks`.
Feature: `v1_18`
## `track` ## `track`
The `Track` to check if `self` is currently active for The `Track` to check if `self` is currently active for
@ -1823,6 +1839,9 @@ active in the track, regardless of their individual
Note that by default a layer will be active for all of its Note that by default a layer will be active for all of its
timeline's tracks. timeline's tracks.
Feature: `v1_18`
## `active` ## `active`
Whether elements in `tracks` should be active or not Whether elements in `tracks` should be active or not
## `tracks` ## `tracks`
@ -1856,6 +1875,9 @@ The priority to set
<!-- trait LayerExt::fn connect_active_changed --> <!-- trait LayerExt::fn connect_active_changed -->
Will be emitted whenever the layer is activated or deactivated Will be emitted whenever the layer is activated or deactivated
for some `Track`. See `LayerExt::set_active_for_tracks`. for some `Track`. See `LayerExt::set_active_for_tracks`.
Feature: `v1_18`
## `active` ## `active`
Whether `layer` has been made active or de-active in the `tracks` Whether `layer` has been made active or de-active in the `tracks`
## `tracks` ## `tracks`
@ -2022,9 +2044,14 @@ to `location` using the given `format`, `height` and `width`.
<!-- trait GESPipelineExt::fn set_mode --> <!-- trait GESPipelineExt::fn set_mode -->
Sets the `Pipeline:mode` of the pipeline. Sets the `Pipeline:mode` of the pipeline.
Note that the pipeline will be set to `gst::State::Null` during this call Note that the pipeline will be set to `gst::State::Null` during this call to
to perform the necessary changes. You will need to set the state again perform the necessary changes. You will need to set the state again yourself
yourself after calling this. after calling this.
> **NOTE**: [Rendering settings](ges_pipeline_set_render_settings) need to be
> set before setting `mode` to `PipelineFlags::Render` or
> `PipelineFlags::SmartRender`, the call to this method will fail
> otherwise.
## `mode` ## `mode`
The mode to set for `self` The mode to set for `self`
@ -2109,6 +2136,25 @@ The video sink used for preview. This exposes the
<!-- trait GESPipelineExt::fn set_property_video_sink --> <!-- trait GESPipelineExt::fn set_property_video_sink -->
The video sink used for preview. This exposes the The video sink used for preview. This exposes the
`playsink:video-sink` property of the internal `playsink`. `playsink:video-sink` property of the internal `playsink`.
<!-- struct PipelineFlags -->
The various modes a `Pipeline` can be configured to.
<!-- struct PipelineFlags::const AUDIO_PREVIEW -->
Output the `Pipeline:timeline`'s
audio to the soundcard
<!-- struct PipelineFlags::const VIDEO_PREVIEW -->
Output the `Pipeline:timeline`'s
video to the screen
<!-- struct PipelineFlags::const FULL_PREVIEW -->
Output both the `Pipeline:timeline`'s
audio and video to the soundcard and screen (default)
<!-- struct PipelineFlags::const RENDER -->
Render the `Pipeline:timeline` with
forced decoding (the underlying `encodebin` has its
`encodebin:avoid-reencoding` property set to `false`)
<!-- struct PipelineFlags::const SMART_RENDER -->
Render the `Pipeline:timeline`,
avoiding decoding/reencoding (the underlying `encodebin` has its
`encodebin:avoid-reencoding` property set to `true`)
<!-- struct Project --> <!-- struct Project -->
The `Project` is used to control a set of `Asset` and is a The `Project` is used to control a set of `Asset` and is a
`Asset` with `GES_TYPE_TIMELINE` as `extractable_type` itself. That `Asset` with `GES_TYPE_TIMELINE` as `extractable_type` itself. That
@ -2613,6 +2659,9 @@ with the given `name`, or `None` if it was not found.
<!-- trait TimelineExt::fn get_frame_at --> <!-- trait TimelineExt::fn get_frame_at -->
This method allows you to convert a timeline `gst::ClockTime` into its This method allows you to convert a timeline `gst::ClockTime` into its
corresponding `FrameNumber` in the timeline's output. corresponding `FrameNumber` in the timeline's output.
Feature: `v1_18`
## `timestamp` ## `timestamp`
The timestamp to get the corresponding frame number of The timestamp to get the corresponding frame number of
@ -2624,6 +2673,9 @@ This method allows you to convert a timeline output frame number into a
timeline `gst::ClockTime`. For example, this time could be used to seek to a timeline `gst::ClockTime`. For example, this time could be used to seek to a
particular frame in the timeline's output, or as the edit position for particular frame in the timeline's output, or as the edit position for
an element within the timeline. an element within the timeline.
Feature: `v1_18`
## `frame_number` ## `frame_number`
The frame number to get the corresponding timestamp of in the The frame number to get the corresponding timestamp of in the
timeline coordinates timeline coordinates
@ -3624,6 +3676,9 @@ Emitted when the element has a new child property registered. See
Note that some GES elements will be automatically created with Note that some GES elements will be automatically created with
pre-registered children properties. You can use pre-registered children properties. You can use
`TimelineElementExt::list_children_properties` to list these. `TimelineElementExt::list_children_properties` to list these.
Feature: `v1_18`
## `prop_object` ## `prop_object`
The child whose property has been registered The child whose property has been registered
## `prop` ## `prop`
@ -3631,6 +3686,9 @@ The specification for the property that has been registered
<!-- trait TimelineElementExt::fn connect_child_property_removed --> <!-- trait TimelineElementExt::fn connect_child_property_removed -->
Emitted when the element has a child property unregistered. See Emitted when the element has a child property unregistered. See
`TimelineElementExt::remove_child_property`. `TimelineElementExt::remove_child_property`.
Feature: `v1_18`
## `prop_object` ## `prop_object`
The child whose property has been unregistered The child whose property has been unregistered
## `prop` ## `prop`
@ -3979,7 +4037,7 @@ The element that was removed
The capabilities used to choose the output of the `Track`'s The capabilities used to choose the output of the `Track`'s
elements. Internally, this is used to select output streams when elements. Internally, this is used to select output streams when
several may be available, by determining whether its `gst::Pad` is several may be available, by determining whether its `gst::Pad` is
compatible (see `nlecomposition:caps` for `nlecomposition`). As such, compatible (see `NleObject:caps` for `nlecomposition`). As such,
this is used as a weaker indication of the desired output type of the this is used as a weaker indication of the desired output type of the
track, **before** the `Track:restriction-caps` is applied. track, **before** the `Track:restriction-caps` is applied.
Therefore, this should be set to a *generic* superset of the Therefore, this should be set to a *generic* superset of the
@ -3997,7 +4055,7 @@ Default value: `GST_CAPS_ANY`.
The capabilities used to choose the output of the `Track`'s The capabilities used to choose the output of the `Track`'s
elements. Internally, this is used to select output streams when elements. Internally, this is used to select output streams when
several may be available, by determining whether its `gst::Pad` is several may be available, by determining whether its `gst::Pad` is
compatible (see `nlecomposition:caps` for `nlecomposition`). As such, compatible (see `NleObject:caps` for `nlecomposition`). As such,
this is used as a weaker indication of the desired output type of the this is used as a weaker indication of the desired output type of the
track, **before** the `Track:restriction-caps` is applied. track, **before** the `Track:restriction-caps` is applied.
Therefore, this should be set to a *generic* superset of the Therefore, this should be set to a *generic* superset of the
@ -4226,7 +4284,7 @@ be initialized if it is initialized with 0
# Returns # Returns
`true` if the property was found, `false` otherwize. `true` if the property was found, `false` otherwise.
<!-- trait TrackElementExt::fn get_child_property_by_pspec --> <!-- trait TrackElementExt::fn get_child_property_by_pspec -->
Gets a property of a child of `self`. Gets a property of a child of `self`.
@ -4306,6 +4364,9 @@ The track-type of `self`.
<!-- trait TrackElementExt::fn has_internal_source --> <!-- trait TrackElementExt::fn has_internal_source -->
Gets `TrackElement:has-internal-source` for the element. Gets `TrackElement:has-internal-source` for the element.
Feature: `v1_18`
# Returns # Returns
`true` if `self` can have its 'internal time' properties set. `true` if `self` can have its 'internal time' properties set.
@ -4436,7 +4497,7 @@ The value
# Returns # Returns
`true` if the property was set, `false` otherwize. `true` if the property was set, `false` otherwise.
<!-- trait TrackElementExt::fn set_child_property_by_pspec --> <!-- trait TrackElementExt::fn set_child_property_by_pspec -->
Sets a property of a child of `self`. Sets a property of a child of `self`.
@ -4488,9 +4549,17 @@ Sets `TrackElement:has-internal-source` for the element. If this is
set to `false`, this method will also set the set to `false`, this method will also set the
`TimelineElement:in-point` of the element to 0 and its `TimelineElement:in-point` of the element to 0 and its
`TimelineElement:max-duration` to `GST_CLOCK_TIME_NONE`. `TimelineElement:max-duration` to `GST_CLOCK_TIME_NONE`.
Feature: `v1_18`
## `has_internal_source` ## `has_internal_source`
Whether the `self` should be allowed to have its Whether the `self` should be allowed to have its
'internal time' properties set. 'internal time' properties set.
# Returns
`false` if `has_internal_source` is forbidden for `self` and
`true` in any other case.
<!-- trait TrackElementExt::fn set_track_type --> <!-- trait TrackElementExt::fn set_track_type -->
Sets the `TrackElement:track-type` for the element. Sets the `TrackElement:track-type` for the element.
## `type_` ## `type_`
@ -4523,6 +4592,9 @@ See `TrackElementExt::clamp_control_source` for how this is done
per control source. per control source.
Default value: `true` Default value: `true`
Feature: `v1_18`
<!-- trait TrackElementExt::fn set_property_auto_clamp_control_sources --> <!-- trait TrackElementExt::fn set_property_auto_clamp_control_sources -->
Whether the control sources on the element (see Whether the control sources on the element (see
`TrackElementExt::set_control_source`) will be automatically `TrackElementExt::set_control_source`) will be automatically
@ -4533,6 +4605,9 @@ See `TrackElementExt::clamp_control_source` for how this is done
per control source. per control source.
Default value: `true` Default value: `true`
Feature: `v1_18`
<!-- trait TrackElementExt::fn get_property_has_internal_source --> <!-- trait TrackElementExt::fn get_property_has_internal_source -->
This property is used to determine whether the 'internal time' This property is used to determine whether the 'internal time'
properties of the element have any meaning. In particular, unless properties of the element have any meaning. In particular, unless
@ -4568,6 +4643,9 @@ time at which the subtitle file runs out of data.
Note that GES can not support track elements that have both internal Note that GES can not support track elements that have both internal
content and manipulate the timing of their data streams (time content and manipulate the timing of their data streams (time
effects). effects).
Feature: `v1_18`
<!-- trait TrackElementExt::fn set_property_has_internal_source --> <!-- trait TrackElementExt::fn set_property_has_internal_source -->
This property is used to determine whether the 'internal time' This property is used to determine whether the 'internal time'
properties of the element have any meaning. In particular, unless properties of the element have any meaning. In particular, unless
@ -4603,6 +4681,9 @@ time at which the subtitle file runs out of data.
Note that GES can not support track elements that have both internal Note that GES can not support track elements that have both internal
content and manipulate the timing of their data streams (time content and manipulate the timing of their data streams (time
effects). effects).
Feature: `v1_18`
<!-- trait TrackElementExt::fn get_property_track --> <!-- trait TrackElementExt::fn get_property_track -->
The track that this element belongs to, or `None` if it does not The track that this element belongs to, or `None` if it does not
belong to a track. belong to a track.
@ -4616,6 +4697,23 @@ The track type of the element, which determines the type of track the
element can be added to (see `Track:track-type`). This should element can be added to (see `Track:track-type`). This should
correspond to the type of data that the element can produce or correspond to the type of data that the element can produce or
process. process.
<!-- struct TrackType -->
Types of content handled by a track. If the content is not one of
`TrackType::Audio`, `TrackType::Video` or `TrackType::Text`,
the user of the `Track` must set the type to `TrackType::Custom`.
`TrackType::Unknown` is for internal purposes and should not be used
by users
<!-- struct TrackType::const UNKNOWN -->
A track of unknown type (i.e. invalid)
<!-- struct TrackType::const AUDIO -->
An audio track
<!-- struct TrackType::const VIDEO -->
A video track
<!-- struct TrackType::const TEXT -->
A text (subtitle) track
<!-- struct TrackType::const CUSTOM -->
A custom-content track
<!-- struct UriClip --> <!-- struct UriClip -->
Represents all the output streams from a particular uri. It is assumed that Represents all the output streams from a particular uri. It is assumed that
the URI points to a file of some type. the URI points to a file of some type.
@ -4631,6 +4729,11 @@ Trait containing all `UriClip` methods.
[`UriClip`](struct.UriClip.html) [`UriClip`](struct.UriClip.html)
<!-- impl UriClip::fn new --> <!-- impl UriClip::fn new -->
Creates a new `UriClip` for the provided `uri`. Creates a new `UriClip` for the provided `uri`.
> **WARNING**: This function might 'discover` @uri **synchrounously**, it is
> an IO and processing intensive task that you probably don't want to run in
> an application mainloop. Have a look at #ges_asset_request_async to see how
> to make that operation happen **asynchronously**.
## `uri` ## `uri`
the URI the source should control the URI the source should control
@ -4784,6 +4887,9 @@ a
<!-- trait UriClipAssetExt::fn is_image --> <!-- trait UriClipAssetExt::fn is_image -->
Gets Whether the file represented by `self` is an image or not Gets Whether the file represented by `self` is an image or not
Feature: `v1_18`
# Returns # Returns
Whether the file represented by `self` is an image or not Whether the file represented by `self` is an image or not
@ -4826,6 +4932,9 @@ a `UriClipAsset`
<!-- trait UriSourceAssetExt::fn is_image --> <!-- trait UriSourceAssetExt::fn is_image -->
Check if `self` contains a single image Check if `self` contains a single image
Feature: `v1_18`
# Returns # Returns
`true` if the video stream corresponds to an image (i.e. only `true` if the video stream corresponds to an image (i.e. only

View file

@ -1,4 +1,18 @@
<!-- file * --> <!-- file * -->
<!-- struct GLAPI -->
<!-- struct GLAPI::const NONE -->
no API
<!-- struct GLAPI::const OPENGL -->
Desktop OpenGL up to and including 3.1. The
compatibility profile when the OpenGL version is >= 3.2
<!-- struct GLAPI::const OPENGL3 -->
Desktop OpenGL >= 3.2 core profile
<!-- struct GLAPI::const GLES1 -->
OpenGL ES 1.x
<!-- struct GLAPI::const GLES2 -->
OpenGL ES 2.x and 3.x
<!-- struct GLAPI::const ANY -->
Any OpenGL API
<!-- struct GLBaseFilter --> <!-- struct GLBaseFilter -->
`GLBaseFilter` handles the nitty gritty details of retrieving an OpenGL `GLBaseFilter` handles the nitty gritty details of retrieving an OpenGL
context. It also provided some wrappers around `gst_base::BaseTransform`'s context. It also provided some wrappers around `gst_base::BaseTransform`'s
@ -623,6 +637,29 @@ pointer to a display (or 0)
# Returns # Returns
A `EGLDisplay` or `EGL_NO_DISPLAY` A `EGLDisplay` or `EGL_NO_DISPLAY`
<!-- struct GLDisplayType -->
<!-- struct GLDisplayType::const NONE -->
no display type
<!-- struct GLDisplayType::const X11 -->
X11 display
<!-- struct GLDisplayType::const WAYLAND -->
Wayland display
<!-- struct GLDisplayType::const COCOA -->
Cocoa display
<!-- struct GLDisplayType::const WIN32 -->
Win32 display
<!-- struct GLDisplayType::const DISPMANX -->
Dispmanx display
<!-- struct GLDisplayType::const EGL -->
EGL display
<!-- struct GLDisplayType::const VIV_FB -->
Vivante Framebuffer display
<!-- struct GLDisplayType::const GBM -->
Mesa3D GBM display
<!-- struct GLDisplayType::const EGL_DEVICE -->
EGLDevice display (Since: 1.18)
<!-- struct GLDisplayType::const ANY -->
any display type
<!-- struct GLDisplayWayland --> <!-- struct GLDisplayWayland -->
the contents of a `GLDisplayWayland` are private and should only be accessed the contents of a `GLDisplayWayland` are private and should only be accessed
through the provided API through the provided API
@ -794,6 +831,22 @@ Opaque `GLOverlayCompositor` object
# Implements # Implements
[`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html) [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
<!-- struct GLPlatform -->
<!-- struct GLPlatform::const NONE -->
no platform
<!-- struct GLPlatform::const EGL -->
the EGL platform used primarily with the X11, wayland
and android window systems as well as on embedded Linux
<!-- struct GLPlatform::const GLX -->
the GLX platform used primarily with the X11 window system
<!-- struct GLPlatform::const WGL -->
the WGL platform used primarily on Windows
<!-- struct GLPlatform::const CGL -->
the CGL platform used primarily on OS X
<!-- struct GLPlatform::const EAGL -->
the EAGL platform used primarily on iOS
<!-- struct GLPlatform::const ANY -->
any OpenGL platform
<!-- enum GLQueryType --> <!-- enum GLQueryType -->
<!-- enum GLQueryType::variant None --> <!-- enum GLQueryType::variant None -->
no query no query
@ -809,6 +862,18 @@ Compilation error occurred
Link error occurred Link error occurred
<!-- enum GLSLError::variant Program --> <!-- enum GLSLError::variant Program -->
General program error occurred General program error occurred
<!-- struct GLSLProfile -->
GLSL profiles
<!-- struct GLSLProfile::const NONE -->
no profile supported/available
<!-- struct GLSLProfile::const ES -->
OpenGL|ES profile
<!-- struct GLSLProfile::const CORE -->
OpenGL core profile
<!-- struct GLSLProfile::const COMPATIBILITY -->
OpenGL compatibility profile
<!-- struct GLSLProfile::const ANY -->
any OpenGL/OpenGL|ES profile
<!-- struct GLSLStage --> <!-- struct GLSLStage -->
`GLSLStage` holds and represents a single OpenGL shader stage. `GLSLStage` holds and represents a single OpenGL shader stage.

View file

@ -331,6 +331,21 @@ the discovery timed-out
the discoverer was already discovering a file the discoverer was already discovering a file
<!-- enum DiscovererResult::variant MissingPlugins --> <!-- enum DiscovererResult::variant MissingPlugins -->
Some plugins are missing for full discovery Some plugins are missing for full discovery
<!-- struct DiscovererSerializeFlags -->
You can use these flags to control what is serialized by
`DiscovererInfo::to_variant`
<!-- struct DiscovererSerializeFlags::const BASIC -->
Serialize only basic information, excluding
caps, tags and miscellaneous information
<!-- struct DiscovererSerializeFlags::const CAPS -->
Serialize the caps for each stream
<!-- struct DiscovererSerializeFlags::const TAGS -->
Serialize the tags for each stream
<!-- struct DiscovererSerializeFlags::const MISC -->
Serialize miscellaneous information for each stream
<!-- struct DiscovererSerializeFlags::const ALL -->
Serialize all the available info, including
caps, tags and miscellaneous information
<!-- struct DiscovererStreamInfo --> <!-- struct DiscovererStreamInfo -->
Base structure for information concerning a media stream. Depending on the Base structure for information concerning a media stream. Depending on the
stream type, one can find more media-specific information in stream type, one can find more media-specific information in
@ -836,6 +851,14 @@ The description of the `self`.
# Returns # Returns
The name of the `self`. The name of the `self`.
<!-- impl EncodingTarget::fn get_path -->
Feature: `v1_18`
# Returns
The path to the `self` file.
<!-- impl EncodingTarget::fn get_profile --> <!-- impl EncodingTarget::fn get_profile -->
## `name` ## `name`
the name of the profile to retrieve the name of the profile to retrieve

View file

@ -93,6 +93,33 @@ VoIP Metrics Report Block
Feature: `v1_16` Feature: `v1_16`
<!-- struct RTPBufferFlags -->
Additional RTP buffer flags. These flags can potentially be used on any
buffers carrying RTP packets.
Note that these are only valid for `gst::Caps` of type: application/x-rtp (x-rtcp).
They can conflict with other extended buffer flags.
<!-- struct RTPBufferFlags::const RETRANSMISSION -->
The `gst::Buffer` was once wrapped
in a retransmitted packet as specified by RFC 4588.
<!-- struct RTPBufferFlags::const REDUNDANT -->
The packet represents redundant RTP packet.
The flag is used in gstrtpstorage to be able to hold the packetback
and use it only for recovery from packet loss.
Since: 1.14
<!-- struct RTPBufferFlags::const LAST -->
Offset to define more flags.
Feature: `v1_10`
<!-- struct RTPBufferMapFlags -->
Additional mapping flags for `RTPBuffer::map`.
<!-- struct RTPBufferMapFlags::const SKIP_PADDING -->
Skip mapping and validation of RTP
padding and RTP pad count when present. Useful for buffers where
the padding may be encrypted.
<!-- struct RTPBufferMapFlags::const LAST -->
Offset to define more flags
<!-- enum RTPPayload --> <!-- enum RTPPayload -->
Standard predefined fixed payload types. Standard predefined fixed payload types.

View file

@ -10,6 +10,20 @@ a copy of `self`.
<!-- impl RTSPAddress::fn free --> <!-- impl RTSPAddress::fn free -->
Free `self` and releasing it back into the pool when owned by a Free `self` and releasing it back into the pool when owned by a
pool. pool.
<!-- struct RTSPAddressFlags -->
Flags used to control allocation of addresses
<!-- struct RTSPAddressFlags::const NONE -->
no flags
<!-- struct RTSPAddressFlags::const IPV4 -->
an IPv4 address
<!-- struct RTSPAddressFlags::const IPV6 -->
and IPv6 address
<!-- struct RTSPAddressFlags::const EVEN_PORT -->
address with an even port
<!-- struct RTSPAddressFlags::const MULTICAST -->
a multicast address
<!-- struct RTSPAddressFlags::const UNICAST -->
a unicast address
<!-- struct RTSPAddressPool --> <!-- struct RTSPAddressPool -->
An address pool, all member are private An address pool, all member are private
@ -3319,3 +3333,9 @@ pointer becomes invalid when you free the token. This function checks if
`self` is writable and will never return `None`. `self` is writable and will never return `None`.
MT safe. MT safe.
<!-- struct RTSPTransportMode -->
The supported modes of the media.
<!-- struct RTSPTransportMode::const PLAY -->
Transport supports PLAY mode
<!-- struct RTSPTransportMode::const RECORD -->
Transport supports RECORD mode

View file

@ -11,6 +11,12 @@ digest authentication
RTSP Authentication parameter RTSP Authentication parameter
Feature: `v1_12` Feature: `v1_12`
<!-- struct RTSPEvent -->
The possible events for the connection.
<!-- struct RTSPEvent::const READ -->
connection is readable
<!-- struct RTSPEvent::const WRITE -->
connection is writable
<!-- enum RTSPFamily --> <!-- enum RTSPFamily -->
The possible network families. The possible network families.
<!-- enum RTSPFamily::variant None --> <!-- enum RTSPFamily::variant None -->
@ -21,6 +27,50 @@ internet
internet V6 internet V6
<!-- enum RTSPHeaderField --> <!-- enum RTSPHeaderField -->
Enumeration of rtsp header fields Enumeration of rtsp header fields
<!-- struct RTSPLowerTrans -->
The different transport methods.
<!-- struct RTSPLowerTrans::const UNKNOWN -->
invalid transport flag
<!-- struct RTSPLowerTrans::const UDP -->
stream data over UDP
<!-- struct RTSPLowerTrans::const UDP_MCAST -->
stream data over UDP multicast
<!-- struct RTSPLowerTrans::const TCP -->
stream data over TCP
<!-- struct RTSPLowerTrans::const HTTP -->
stream data tunneled over HTTP.
<!-- struct RTSPLowerTrans::const TLS -->
encrypt TCP and HTTP with TLS
<!-- struct RTSPMethod -->
The different supported RTSP methods.
<!-- struct RTSPMethod::const INVALID -->
invalid method
<!-- struct RTSPMethod::const DESCRIBE -->
the DESCRIBE method
<!-- struct RTSPMethod::const ANNOUNCE -->
the ANNOUNCE method
<!-- struct RTSPMethod::const GET_PARAMETER -->
the GET_PARAMETER method
<!-- struct RTSPMethod::const OPTIONS -->
the OPTIONS method
<!-- struct RTSPMethod::const PAUSE -->
the PAUSE method
<!-- struct RTSPMethod::const PLAY -->
the PLAY method
<!-- struct RTSPMethod::const RECORD -->
the RECORD method
<!-- struct RTSPMethod::const REDIRECT -->
the REDIRECT method
<!-- struct RTSPMethod::const SETUP -->
the SETUP method
<!-- struct RTSPMethod::const SET_PARAMETER -->
the SET_PARAMETER method
<!-- struct RTSPMethod::const TEARDOWN -->
the TEARDOWN method
<!-- struct RTSPMethod::const GET -->
the GET method (HTTP).
<!-- struct RTSPMethod::const POST -->
the POST method (HTTP).
<!-- enum RTSPMsgType --> <!-- enum RTSPMsgType -->
The type of a message. The type of a message.
<!-- enum RTSPMsgType::variant Invalid --> <!-- enum RTSPMsgType::variant Invalid -->
@ -35,6 +85,18 @@ HTTP request message.
HTTP response message. HTTP response message.
<!-- enum RTSPMsgType::variant Data --> <!-- enum RTSPMsgType::variant Data -->
data message data message
<!-- struct RTSPProfile -->
The transfer profile to use.
<!-- struct RTSPProfile::const UNKNOWN -->
invalid profile
<!-- struct RTSPProfile::const AVP -->
the Audio/Visual profile (RFC 3551)
<!-- struct RTSPProfile::const SAVP -->
the secure Audio/Visual profile (RFC 3711)
<!-- struct RTSPProfile::const AVPF -->
the Audio/Visual profile with feedback (RFC 4585)
<!-- struct RTSPProfile::const SAVPF -->
the secure Audio/Visual profile with feedback (RFC 5124)
<!-- enum RTSPRangeUnit --> <!-- enum RTSPRangeUnit -->
Different possible time range units. Different possible time range units.
<!-- enum RTSPRangeUnit::variant Smpte --> <!-- enum RTSPRangeUnit::variant Smpte -->
@ -113,6 +175,14 @@ end
frames and subframes frames and subframes
<!-- enum RTSPTimeType::variant Utc --> <!-- enum RTSPTimeType::variant Utc -->
UTC time UTC time
<!-- struct RTSPTransMode -->
The transfer mode to use.
<!-- struct RTSPTransMode::const UNKNOWN -->
invalid tansport mode
<!-- struct RTSPTransMode::const RTP -->
transfer RTP data
<!-- struct RTSPTransMode::const RDT -->
transfer RDT (RealMedia) data
<!-- struct RTSPUrl --> <!-- struct RTSPUrl -->
Provides helper functions to handle RTSP urls. Provides helper functions to handle RTSP urls.
<!-- impl RTSPUrl::fn copy --> <!-- impl RTSPUrl::fn copy -->

View file

@ -105,6 +105,54 @@ multiply all alpha with
`GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE`. `GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE`.
When the input format has no alpha but the output format has, the When the input format has no alpha but the output format has, the
alpha value will be set to `GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE` alpha value will be set to `GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE`
<!-- struct VideoBufferFlags -->
Additional video buffer flags. These flags can potentially be used on any
buffers carrying closed caption data, or video data - even encoded data.
Note that these are only valid for `gst::Caps` of type: video/... and caption/...
They can conflict with other extended buffer flags.
<!-- struct VideoBufferFlags::const INTERLACED -->
If the `gst::Buffer` is interlaced. In mixed
interlace-mode, this flags specifies if the frame is
interlaced or progressive.
<!-- struct VideoBufferFlags::const TFF -->
If the `gst::Buffer` is interlaced, then the first field
in the video frame is the top field. If unset, the
bottom field is first.
<!-- struct VideoBufferFlags::const RFF -->
If the `gst::Buffer` is interlaced, then the first field
(as defined by the `VideoBufferFlags::Tff` flag setting)
is repeated.
<!-- struct VideoBufferFlags::const ONEFIELD -->
If the `gst::Buffer` is interlaced, then only the
first field (as defined by the `VideoBufferFlags::Tff`
flag setting) is to be displayed (Since: 1.16).
<!-- struct VideoBufferFlags::const MULTIPLE_VIEW -->
The `gst::Buffer` contains one or more specific views,
such as left or right eye view. This flags is set on
any buffer that contains non-mono content - even for
streams that contain only a single viewpoint. In mixed
mono / non-mono streams, the absence of the flag marks
mono buffers.
<!-- struct VideoBufferFlags::const FIRST_IN_BUNDLE -->
When conveying stereo/multiview content with
frame-by-frame methods, this flag marks the first buffer
in a bundle of frames that belong together.
<!-- struct VideoBufferFlags::const TOP_FIELD -->
The video frame has the top field only. This is the
same as GST_VIDEO_BUFFER_FLAG_TFF |
GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16).
Use GST_VIDEO_BUFFER_IS_TOP_FIELD() to check for this flag.
<!-- struct VideoBufferFlags::const BOTTOM_FIELD -->
The video frame has the bottom field only. This is
the same as GST_VIDEO_BUFFER_FLAG_ONEFIELD
(GST_VIDEO_BUFFER_FLAG_TFF flag unset) (Since: 1.16).
Use GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() to check for this flag.
<!-- struct VideoBufferFlags::const MARKER -->
The `gst::Buffer` contains the end of a video field or frame
boundary such as the last subframe or packet (Since: 1.18).
<!-- struct VideoBufferFlags::const LAST -->
Offset to define more flags
<!-- struct VideoBufferPool --> <!-- struct VideoBufferPool -->
@ -160,6 +208,26 @@ only perform chroma upsampling
only perform chroma downsampling only perform chroma downsampling
<!-- enum VideoChromaMode::variant None --> <!-- enum VideoChromaMode::variant None -->
disable chroma resampling disable chroma resampling
<!-- struct VideoChromaSite -->
Various Chroma sitings.
<!-- struct VideoChromaSite::const UNKNOWN -->
unknown cositing
<!-- struct VideoChromaSite::const NONE -->
no cositing
<!-- struct VideoChromaSite::const H_COSITED -->
chroma is horizontally cosited
<!-- struct VideoChromaSite::const V_COSITED -->
chroma is vertically cosited
<!-- struct VideoChromaSite::const ALT_LINE -->
choma samples are sited on alternate lines
<!-- struct VideoChromaSite::const COSITED -->
chroma samples cosited with luma samples
<!-- struct VideoChromaSite::const JPEG -->
jpeg style cositing, also for mpeg1 and mjpeg
<!-- struct VideoChromaSite::const MPEG2 -->
mpeg2 style cositing
<!-- struct VideoChromaSite::const DV -->
DV style cositing
<!-- struct VideoCodecFrame --> <!-- struct VideoCodecFrame -->
A `VideoCodecFrame` represents a video frame both in raw and A `VideoCodecFrame` represents a video frame both in raw and
encoded form. encoded form.
@ -189,6 +257,16 @@ a `GDestroyNotify`
<!-- impl VideoCodecFrame::fn unref --> <!-- impl VideoCodecFrame::fn unref -->
Decreases the refcount of the frame. If the refcount reaches 0, the frame Decreases the refcount of the frame. If the refcount reaches 0, the frame
will be freed. will be freed.
<!-- struct VideoCodecFrameFlags -->
Flags for `VideoCodecFrame`
<!-- struct VideoCodecFrameFlags::const DECODE_ONLY -->
is the frame only meant to be decoded
<!-- struct VideoCodecFrameFlags::const SYNC_POINT -->
is the frame a synchronization point (keyframe)
<!-- struct VideoCodecFrameFlags::const FORCE_KEYFRAME -->
should the output frame be made a keyframe
<!-- struct VideoCodecFrameFlags::const FORCE_KEYFRAME_HEADERS -->
should the encoder output stream headers
<!-- struct VideoCodecState --> <!-- struct VideoCodecState -->
Structure representing the state of an incoming or outgoing video Structure representing the state of an incoming or outgoing video
stream for encoders and decoders. stream for encoders and decoders.
@ -681,6 +759,18 @@ handler with `GST_PAD_SET_ACCEPT_INTERSECT` and
`GST_PAD_SET_ACCEPT_TEMPLATE` `GST_PAD_SET_ACCEPT_TEMPLATE`
## `use_` ## `use_`
if the default pad accept-caps query handling should be used if the default pad accept-caps query handling should be used
<!-- trait VideoDecoderExt::fn get_property_max_errors -->
Maximum number of tolerated consecutive decode errors. See
`VideoDecoderExt::set_max_errors` for more details.
Feature: `v1_18`
<!-- trait VideoDecoderExt::fn set_property_max_errors -->
Maximum number of tolerated consecutive decode errors. See
`VideoDecoderExt::set_max_errors` for more details.
Feature: `v1_18`
<!-- trait VideoDecoderExt::fn get_property_qos --> <!-- trait VideoDecoderExt::fn get_property_qos -->
If set to `true` the decoder will handle QoS events received If set to `true` the decoder will handle QoS events received
from downstream elements. from downstream elements.
@ -888,6 +978,16 @@ a `VideoCodecFrame`
# Returns # Returns
max decoding time. max decoding time.
<!-- trait VideoEncoderExt::fn get_min_force_key_unit_interval -->
Returns the minimum force-keyunit interval, see `VideoEncoderExt::set_min_force_key_unit_interval`
for more details.
Feature: `v1_18`
# Returns
the minimum force-keyunit interval
<!-- trait VideoEncoderExt::fn get_oldest_frame --> <!-- trait VideoEncoderExt::fn get_oldest_frame -->
Get the oldest unfinished pending `VideoCodecFrame` Get the oldest unfinished pending `VideoCodecFrame`
@ -954,6 +1054,15 @@ Informs baseclass of encoding latency.
minimum latency minimum latency
## `max_latency` ## `max_latency`
maximum latency maximum latency
<!-- trait VideoEncoderExt::fn set_min_force_key_unit_interval -->
Sets the minimum interval for requesting keyframes based on force-keyunit
events. Setting this to 0 will allow to handle every event, setting this to
`GST_CLOCK_TIME_NONE` causes force-keyunit events to be ignored.
Feature: `v1_18`
## `interval`
minimum interval
<!-- trait VideoEncoderExt::fn set_min_pts --> <!-- trait VideoEncoderExt::fn set_min_pts -->
Request minimal value for PTS passed to handle_frame. Request minimal value for PTS passed to handle_frame.
@ -995,6 +1104,18 @@ Feature: `v1_14`
## `enabled` ## `enabled`
the new qos value. the new qos value.
<!-- trait VideoEncoderExt::fn get_property_min_force_key_unit_interval -->
Minimum interval between force-keyunit requests in nanoseconds. See
`VideoEncoderExt::set_min_force_key_unit_interval` for more details.
Feature: `v1_18`
<!-- trait VideoEncoderExt::fn set_property_min_force_key_unit_interval -->
Minimum interval between force-keyunit requests in nanoseconds. See
`VideoEncoderExt::set_min_force_key_unit_interval` for more details.
Feature: `v1_18`
<!-- enum VideoFieldOrder --> <!-- enum VideoFieldOrder -->
Field order of interlaced content. This is only valid for Field order of interlaced content. This is only valid for
interlace-mode=interleaved and not interlace-mode=mixed. In the case of interlace-mode=interleaved and not interlace-mode=mixed. In the case of
@ -1019,6 +1140,16 @@ to implement frame dropping.
# Implements # Implements
[`gst_base::BaseTransformExt`](../gst_base/trait.BaseTransformExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html) [`gst_base::BaseTransformExt`](../gst_base/trait.BaseTransformExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
<!-- struct VideoFlags -->
Extra video flags
<!-- struct VideoFlags::const NONE -->
no flags
<!-- struct VideoFlags::const VARIABLE_FPS -->
a variable fps is selected, fps_n and fps_d
denote the maximum fps of the video
<!-- struct VideoFlags::const PREMULTIPLIED_ALPHA -->
Each color has been scaled by the alpha
value.
<!-- enum VideoFormat --> <!-- enum VideoFormat -->
Enum value describing the most common video formats. Enum value describing the most common video formats.
@ -1221,6 +1352,63 @@ packed 4:2:2 YUV, 12 bits per channel (Y-U-Y-V) (Since: 1.18)
packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18) packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18)
<!-- enum VideoFormat::variant Y412Le --> <!-- enum VideoFormat::variant Y412Le -->
packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18) packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18)
<!-- struct VideoFormatFlags -->
The different video flags that a format info can have.
<!-- struct VideoFormatFlags::const YUV -->
The video format is YUV, components are numbered
0=Y, 1=U, 2=V.
<!-- struct VideoFormatFlags::const RGB -->
The video format is RGB, components are numbered
0=R, 1=G, 2=B.
<!-- struct VideoFormatFlags::const GRAY -->
The video is gray, there is one gray component
with index 0.
<!-- struct VideoFormatFlags::const ALPHA -->
The video format has an alpha components with
the number 3.
<!-- struct VideoFormatFlags::const LE -->
The video format has data stored in little
endianness.
<!-- struct VideoFormatFlags::const PALETTE -->
The video format has a palette. The palette
is stored in the second plane and indexes are stored in the first plane.
<!-- struct VideoFormatFlags::const COMPLEX -->
The video format has a complex layout that
can't be described with the usual information in the `VideoFormatInfo`.
<!-- struct VideoFormatFlags::const UNPACK -->
This format can be used in a
`GstVideoFormatUnpack` and `GstVideoFormatPack` function.
<!-- struct VideoFormatFlags::const TILED -->
The format is tiled, there is tiling information
in the last plane.
<!-- struct VideoFrameFlags -->
Extra video frame flags
<!-- struct VideoFrameFlags::const NONE -->
no flags
<!-- struct VideoFrameFlags::const INTERLACED -->
The video frame is interlaced. In mixed
interlace-mode, this flag specifies if the frame is interlaced or
progressive.
<!-- struct VideoFrameFlags::const TFF -->
The video frame has the top field first
<!-- struct VideoFrameFlags::const RFF -->
The video frame has the repeat flag
<!-- struct VideoFrameFlags::const ONEFIELD -->
The video frame has one field
<!-- struct VideoFrameFlags::const MULTIPLE_VIEW -->
The video contains one or
more non-mono views
<!-- struct VideoFrameFlags::const FIRST_IN_BUNDLE -->
The video frame is the first
in a set of corresponding views provided as sequential frames.
<!-- struct VideoFrameFlags::const TOP_FIELD -->
The video frame has the top field only. This
is the same as GST_VIDEO_FRAME_FLAG_TFF | GST_VIDEO_FRAME_FLAG_ONEFIELD
(Since: 1.16).
<!-- struct VideoFrameFlags::const BOTTOM_FIELD -->
The video frame has the bottom field
only. This is the same as GST_VIDEO_FRAME_FLAG_ONEFIELD
(GST_VIDEO_FRAME_FLAG_TFF flag unset) (Since: 1.16).
<!-- enum VideoGammaMode --> <!-- enum VideoGammaMode -->
<!-- enum VideoGammaMode::variant None --> <!-- enum VideoGammaMode::variant None -->
disable gamma handling disable gamma handling
@ -1396,6 +1584,42 @@ use the output color matrix to convert
to and from R'G'B to and from R'G'B
<!-- enum VideoMatrixMode::variant None --> <!-- enum VideoMatrixMode::variant None -->
disable color matrix conversion. disable color matrix conversion.
<!-- struct VideoMultiviewFlags -->
GstVideoMultiviewFlags are used to indicate extra properties of a
stereo/multiview stream beyond the frame layout and buffer mapping
that is conveyed in the `VideoMultiviewMode`.
<!-- struct VideoMultiviewFlags::const NONE -->
No flags
<!-- struct VideoMultiviewFlags::const RIGHT_VIEW_FIRST -->
For stereo streams, the
normal arrangement of left and right views is reversed.
<!-- struct VideoMultiviewFlags::const LEFT_FLIPPED -->
The left view is vertically
mirrored.
<!-- struct VideoMultiviewFlags::const LEFT_FLOPPED -->
The left view is horizontally
mirrored.
<!-- struct VideoMultiviewFlags::const RIGHT_FLIPPED -->
The right view is
vertically mirrored.
<!-- struct VideoMultiviewFlags::const RIGHT_FLOPPED -->
The right view is
horizontally mirrored.
<!-- struct VideoMultiviewFlags::const HALF_ASPECT -->
For frame-packed
multiview modes, indicates that the individual
views have been encoded with half the true width or height
and should be scaled back up for display. This flag
is used for overriding input layout interpretation
by adjusting pixel-aspect-ratio.
For side-by-side, column interleaved or checkerboard packings, the
pixel width will be doubled. For row interleaved and top-bottom
encodings, pixel height will be doubled.
<!-- struct VideoMultiviewFlags::const MIXED_MONO -->
The video stream contains both
mono and multiview portions, signalled on each buffer by the
absence or presence of the `VideoBufferFlags::MultipleView`
buffer flag.
<!-- enum VideoMultiviewFramePacking --> <!-- enum VideoMultiviewFramePacking -->
`VideoMultiviewFramePacking` represents the subset of `VideoMultiviewMode` `VideoMultiviewFramePacking` represents the subset of `VideoMultiviewMode`
values that can be applied to any video frame without needing extra metadata. values that can be applied to any video frame without needing extra metadata.
@ -1694,13 +1918,13 @@ main (int argc, char **argv)
```text ```text
#include &lt;glib.h&gt; #include <glib.h>;
#include &lt;gst/gst.h&gt; #include <gst/gst.h>;
#include &lt;gst/video/videooverlay.h&gt; #include <gst/video/videooverlay.h>;
#include &lt;QApplication&gt; #include <QApplication>;
#include &lt;QTimer&gt; #include <QTimer>;
#include &lt;QWidget&gt; #include <QWidget>;
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -1844,6 +2068,28 @@ specific window (e.g. an XWindow on X11). Passing 0 as the `handle` will
tell the overlay to stop using that window and create an internal one. tell the overlay to stop using that window and create an internal one.
## `handle` ## `handle`
a handle referencing the window. a handle referencing the window.
<!-- struct VideoOverlayFormatFlags -->
Overlay format flags.
<!-- struct VideoOverlayFormatFlags::const NONE -->
no flags
<!-- struct VideoOverlayFormatFlags::const PREMULTIPLIED_ALPHA -->
RGB are premultiplied by A/255.
<!-- struct VideoOverlayFormatFlags::const GLOBAL_ALPHA -->
a global-alpha value != 1 is set.
<!-- struct VideoPackFlags -->
The different flags that can be used when packing and unpacking.
<!-- struct VideoPackFlags::const NONE -->
No flag
<!-- struct VideoPackFlags::const TRUNCATE_RANGE -->
When the source has a smaller depth
than the target format, set the least significant bits of the target
to 0. This is likely slightly faster but less accurate. When this flag
is not specified, the most significant bits of the source are duplicated
in the least significant bits of the destination.
<!-- struct VideoPackFlags::const INTERLACED -->
The source is interlaced. The unpacked
format will be interlaced as well with each line containing
information from alternating fields. (Since: 1.2)
<!-- enum VideoPrimariesMode --> <!-- enum VideoPrimariesMode -->
Different primaries conversion modes Different primaries conversion modes
<!-- enum VideoPrimariesMode::variant None --> <!-- enum VideoPrimariesMode::variant None -->
@ -2200,6 +2446,18 @@ field 2
':' for non-drop-frame, non-interlaced content and for non-drop-frame ':' for non-drop-frame, non-interlaced content and for non-drop-frame
interlaced field 2 interlaced field 2
'.' for non-drop-frame interlaced field 1 '.' for non-drop-frame interlaced field 1
<!-- struct VideoTimeCodeFlags -->
Flags related to the time code information.
For drop frame, only 30000/1001 and 60000/1001 frame rates are supported.
<!-- struct VideoTimeCodeFlags::const NONE -->
No flags
<!-- struct VideoTimeCodeFlags::const DROP_FRAME -->
Whether we have drop frame rate
<!-- struct VideoTimeCodeFlags::const INTERLACED -->
Whether we have interlaced video
Feature: `v1_10`
<!-- struct VideoTimeCodeInterval --> <!-- struct VideoTimeCodeInterval -->
A representation of a difference between two `VideoTimeCode` instances. A representation of a difference between two `VideoTimeCode` instances.
Will not necessarily correspond to a real timecode (e.g. 00:00:10;00) Will not necessarily correspond to a real timecode (e.g. 00:00:10;00)

View file

@ -485,6 +485,20 @@ The messages are converted to an ELEMENT message with the bin as the
source. The structure of the message is named 'GstBinForwarded' and contains source. The structure of the message is named 'GstBinForwarded' and contains
a field named 'message' of type GST_TYPE_MESSAGE that contains the original a field named 'message' of type GST_TYPE_MESSAGE that contains the original
forwarded message. forwarded message.
<!-- struct BinFlags -->
GstBinFlags are a set of flags specific to bins. Most are set/used
internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ().
<!-- struct BinFlags::const NO_RESYNC -->
don't resync a state change when elements are
added or linked in the bin (Since: 1.0.5)
<!-- struct BinFlags::const STREAMS_AWARE -->
Indicates whether the bin can handle elements
that add/remove source pads at any point in time without
first posting a no-more-pads signal (Since: 1.10)
<!-- struct BinFlags::const LAST -->
the last enum in the series of flags for bins.
Derived classes can use this as first value in a list of flags.
<!-- struct Buffer --> <!-- struct Buffer -->
Buffers are the basic unit of data transfer in GStreamer. They contain the Buffers are the basic unit of data transfer in GStreamer. They contain the
timing and offset along with other arbitrary metadata that is associated timing and offset along with other arbitrary metadata that is associated
@ -1000,6 +1014,17 @@ a pointer to the maxsize
# Returns # Returns
total size of `length` memory blocks starting at `idx` in `self`. total size of `length` memory blocks starting at `idx` in `self`.
<!-- impl Buffer::fn has_flags -->
Gives the status of a specific flag on a buffer.
Feature: `v1_10`
## `flags`
the `BufferFlags` flag to check.
# Returns
`true` if all flags in `flags` are found on `self`.
<!-- impl Buffer::fn insert_memory --> <!-- impl Buffer::fn insert_memory -->
Insert the memory block `mem` to `self` at `idx`. This function takes ownership Insert the memory block `mem` to `self` at `idx`. This function takes ownership
of `mem` and thus doesn't increase its refcount. of `mem` and thus doesn't increase its refcount.
@ -1303,6 +1328,82 @@ pointer to a `Buffer` that will
# Returns # Returns
`true` when `obuf` was different from `nbuf`. `true` when `obuf` was different from `nbuf`.
<!-- struct BufferCopyFlags -->
A set of flags that can be provided to the `Buffer::copy_into`
function to specify which items should be copied.
<!-- struct BufferCopyFlags::const NONE -->
copy nothing
<!-- struct BufferCopyFlags::const FLAGS -->
flag indicating that buffer flags should be copied
<!-- struct BufferCopyFlags::const TIMESTAMPS -->
flag indicating that buffer pts, dts,
duration, offset and offset_end should be copied
<!-- struct BufferCopyFlags::const META -->
flag indicating that buffer meta should be
copied
<!-- struct BufferCopyFlags::const MEMORY -->
flag indicating that buffer memory should be reffed
and appended to already existing memory. Unless the memory is marked as
NO_SHARE, no actual copy of the memory is made but it is simply reffed.
Add `BufferCopyFlags::Deep` to force a real copy.
<!-- struct BufferCopyFlags::const MERGE -->
flag indicating that buffer memory should be
merged
<!-- struct BufferCopyFlags::const DEEP -->
flag indicating that memory should always be
copied instead of reffed (Since: 1.2)
<!-- struct BufferFlags -->
A set of buffer flags used to describe properties of a `Buffer`.
<!-- struct BufferFlags::const LIVE -->
the buffer is live data and should be discarded in
the PAUSED state.
<!-- struct BufferFlags::const DECODE_ONLY -->
the buffer contains data that should be dropped
because it will be clipped against the segment
boundaries or because it does not contain data
that should be shown to the user.
<!-- struct BufferFlags::const DISCONT -->
the buffer marks a data discontinuity in the stream.
This typically occurs after a seek or a dropped buffer
from a live or network source.
<!-- struct BufferFlags::const RESYNC -->
the buffer timestamps might have a discontinuity
and this buffer is a good point to resynchronize.
<!-- struct BufferFlags::const CORRUPTED -->
the buffer data is corrupted.
<!-- struct BufferFlags::const MARKER -->
the buffer contains a media specific marker. for
video this is the end of a frame boundary, for audio
this is the start of a talkspurt.
<!-- struct BufferFlags::const HEADER -->
the buffer contains header information that is
needed to decode the following data.
<!-- struct BufferFlags::const GAP -->
the buffer has been created to fill a gap in the
stream and contains media neutral data (elements can
switch to optimized code path that ignores the buffer
content).
<!-- struct BufferFlags::const DROPPABLE -->
the buffer can be dropped without breaking the
stream, for example to reduce bandwidth.
<!-- struct BufferFlags::const DELTA_UNIT -->
this unit cannot be decoded independently.
<!-- struct BufferFlags::const TAG_MEMORY -->
this flag is set when memory of the buffer
is added/removed
<!-- struct BufferFlags::const SYNC_AFTER -->
Elements which write to disk or permanent
storage should ensure the data is synced after
writing the contents of this buffer. (Since: 1.6)
<!-- struct BufferFlags::const NON_DROPPABLE -->
This buffer is important and should not be dropped.
This can be used to mark important buffers, e.g. to flag
RTP packets carrying keyframes or codec setup data for RTP
Forward Error Correction purposes, or to prevent still video
frames from being dropped by elements due to QoS. (Since: 1.14)
<!-- struct BufferFlags::const LAST -->
additional media specific flags can be added starting from
this flag.
<!-- struct BufferList --> <!-- struct BufferList -->
Buffer lists are an object containing a list of buffers. Buffer lists are an object containing a list of buffers.
@ -1716,6 +1817,21 @@ Enable or disable the flushing state of a `self` without freeing or
allocating buffers. allocating buffers.
## `flushing` ## `flushing`
whether to start or stop flushing whether to start or stop flushing
<!-- struct BufferPoolAcquireFlags -->
Additional flags to control the allocation of a buffer
<!-- struct BufferPoolAcquireFlags::const NONE -->
no flags
<!-- struct BufferPoolAcquireFlags::const KEY_UNIT -->
buffer is keyframe
<!-- struct BufferPoolAcquireFlags::const DONTWAIT -->
when the bufferpool is empty, acquire_buffer
will by default block until a buffer is released into the pool again. Setting
this flag makes acquire_buffer return `FlowReturn::Eos` instead of blocking.
<!-- struct BufferPoolAcquireFlags::const DISCONT -->
buffer is discont
<!-- struct BufferPoolAcquireFlags::const LAST -->
last flag, subclasses can use private flags
starting from this value.
<!-- enum BufferingMode --> <!-- enum BufferingMode -->
The different types of buffering methods. The different types of buffering methods.
<!-- enum BufferingMode::variant Stream --> <!-- enum BufferingMode::variant Stream -->
@ -3443,6 +3559,25 @@ The type of the clock entry
a single shot timeout a single shot timeout
<!-- enum ClockEntryType::variant Periodic --> <!-- enum ClockEntryType::variant Periodic -->
a periodic timeout request a periodic timeout request
<!-- struct ClockFlags -->
The capabilities of this clock
<!-- struct ClockFlags::const CAN_DO_SINGLE_SYNC -->
clock can do a single sync timeout request
<!-- struct ClockFlags::const CAN_DO_SINGLE_ASYNC -->
clock can do a single async timeout request
<!-- struct ClockFlags::const CAN_DO_PERIODIC_SYNC -->
clock can do sync periodic timeout requests
<!-- struct ClockFlags::const CAN_DO_PERIODIC_ASYNC -->
clock can do async periodic timeout callbacks
<!-- struct ClockFlags::const CAN_SET_RESOLUTION -->
clock's resolution can be changed
<!-- struct ClockFlags::const CAN_SET_MASTER -->
clock can be slaved to a master clock
<!-- struct ClockFlags::const NEEDS_STARTUP_SYNC -->
clock needs to be synced before it can be used
(Since: 1.6)
<!-- struct ClockFlags::const LAST -->
subclasses can add additional flags starting from this flag
<!-- enum ClockReturn --> <!-- enum ClockReturn -->
The return value of a clock operation. The return value of a clock operation.
<!-- enum ClockReturn::variant Ok --> <!-- enum ClockReturn::variant Ok -->
@ -3926,6 +4061,65 @@ a newly allocated string formatted according
<!-- impl DateTime::fn unref --> <!-- impl DateTime::fn unref -->
Atomically decrements the reference count of `self` by one. When the Atomically decrements the reference count of `self` by one. When the
reference count reaches zero, the structure is freed. reference count reaches zero, the structure is freed.
<!-- struct DebugColorFlags -->
These are some terminal style flags you can use when creating your
debugging categories to make them stand out in debugging output.
<!-- struct DebugColorFlags::const FG_BLACK -->
Use black as foreground color.
<!-- struct DebugColorFlags::const FG_RED -->
Use red as foreground color.
<!-- struct DebugColorFlags::const FG_GREEN -->
Use green as foreground color.
<!-- struct DebugColorFlags::const FG_YELLOW -->
Use yellow as foreground color.
<!-- struct DebugColorFlags::const FG_BLUE -->
Use blue as foreground color.
<!-- struct DebugColorFlags::const FG_MAGENTA -->
Use magenta as foreground color.
<!-- struct DebugColorFlags::const FG_CYAN -->
Use cyan as foreground color.
<!-- struct DebugColorFlags::const FG_WHITE -->
Use white as foreground color.
<!-- struct DebugColorFlags::const BG_BLACK -->
Use black as background color.
<!-- struct DebugColorFlags::const BG_RED -->
Use red as background color.
<!-- struct DebugColorFlags::const BG_GREEN -->
Use green as background color.
<!-- struct DebugColorFlags::const BG_YELLOW -->
Use yellow as background color.
<!-- struct DebugColorFlags::const BG_BLUE -->
Use blue as background color.
<!-- struct DebugColorFlags::const BG_MAGENTA -->
Use magenta as background color.
<!-- struct DebugColorFlags::const BG_CYAN -->
Use cyan as background color.
<!-- struct DebugColorFlags::const BG_WHITE -->
Use white as background color.
<!-- struct DebugColorFlags::const BOLD -->
Make the output bold.
<!-- struct DebugColorFlags::const UNDERLINE -->
Underline the output.
<!-- struct DebugGraphDetails -->
Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().
<!-- struct DebugGraphDetails::const MEDIA_TYPE -->
show caps-name on edges
<!-- struct DebugGraphDetails::const CAPS_DETAILS -->
show caps-details on edges
<!-- struct DebugGraphDetails::const NON_DEFAULT_PARAMS -->
show modified parameters on
elements
<!-- struct DebugGraphDetails::const STATES -->
show element states
<!-- struct DebugGraphDetails::const FULL_PARAMS -->
show full element parameter values even
if they are very long
<!-- struct DebugGraphDetails::const ALL -->
show all the typical details that one might want
<!-- struct DebugGraphDetails::const VERBOSE -->
show all details regardless of how large or
verbose they make the resulting output
<!-- enum DebugLevel --> <!-- enum DebugLevel -->
The level defines the importance of a debugging message. The more important a The level defines the importance of a debugging message. The more important a
message is, the greater the probability that the debugging system outputs it. message is, the greater the probability that the debugging system outputs it.
@ -5761,6 +5955,22 @@ a `ElementFactoryListType`
# Returns # Returns
`true` if `self` is of `type_`. `true` if `self` is of `type_`.
<!-- struct ElementFlags -->
The standard flags that an element may have.
<!-- struct ElementFlags::const LOCKED_STATE -->
ignore state changes from parent
<!-- struct ElementFlags::const SINK -->
the element is a sink
<!-- struct ElementFlags::const SOURCE -->
the element is a source.
<!-- struct ElementFlags::const PROVIDE_CLOCK -->
the element can provide a clock
<!-- struct ElementFlags::const REQUIRE_CLOCK -->
the element requires a clock
<!-- struct ElementFlags::const INDEXABLE -->
the element can use an index
<!-- struct ElementFlags::const LAST -->
offset to define more flags
<!-- struct Event --> <!-- struct Event -->
The event class provides factory methods to construct events for sending The event class provides factory methods to construct events for sending
and functions to query (parse) received events. and functions to query (parse) received events.
@ -7021,6 +7231,11 @@ This function is most useful in language bindings and when subclassing
function. Call this function directly after a call to g_object_new function. Call this function directly after a call to g_object_new
(GST_TYPE_GHOST_PAD, "direction", `dir`, ..., NULL). (GST_TYPE_GHOST_PAD, "direction", `dir`, ..., NULL).
# Deprecated
This function is deprecated since 1.18 and does nothing
anymore.
# Returns # Returns
`true` if the construction succeeds, `false` otherwise. `true` if the construction succeeds, `false` otherwise.
@ -7062,6 +7277,24 @@ used when the library doesn't accept settings.
used when the library generated an encoding error. used when the library generated an encoding error.
<!-- enum LibraryError::variant NumErrors --> <!-- enum LibraryError::variant NumErrors -->
the number of library error types. the number of library error types.
<!-- struct MemoryFlags -->
Flags for wrapped memory.
<!-- struct MemoryFlags::const READONLY -->
memory is readonly. It is not allowed to map the
memory with `MapFlags::Write`.
<!-- struct MemoryFlags::const NO_SHARE -->
memory must not be shared. Copies will have to be
made when this memory needs to be shared between buffers.
<!-- struct MemoryFlags::const ZERO_PREFIXED -->
the memory prefix is filled with 0 bytes
<!-- struct MemoryFlags::const ZERO_PADDED -->
the memory padding is filled with 0 bytes
<!-- struct MemoryFlags::const PHYSICALLY_CONTIGUOUS -->
the memory is physically contiguous. (Since: 1.2)
<!-- struct MemoryFlags::const NOT_MAPPABLE -->
the memory can't be mapped via `Memory::map` without any preconditions. (Since: 1.2)
<!-- struct MemoryFlags::const LAST -->
first flag that can be used for custom purposes
<!-- struct Message --> <!-- struct Message -->
Messages are implemented as a subclass of `MiniObject` with a generic Messages are implemented as a subclass of `MiniObject` with a generic
`Structure` as the content. This allows for writing custom messages without `Structure` as the content. This allows for writing custom messages without
@ -7078,7 +7311,7 @@ The basic use pattern of posting a message on a `Bus` is as follows:
``` ```
A `Element` usually posts messages on the bus provided by the parent A `Element` usually posts messages on the bus provided by the parent
container using `ElementExt::post_message`. container using `Element::post_message`.
<!-- impl Message::fn new_application --> <!-- impl Message::fn new_application -->
Create a new application-typed message. GStreamer will never create these Create a new application-typed message. GStreamer will never create these
messages; they are a gift from us to you. Enjoy. messages; they are a gift from us to you. Enjoy.
@ -8487,7 +8720,7 @@ floating reference. Be aware that functions such as `GstBinExt::add` and
`ElementExt::add_pad` take ownership of the floating reference. `ElementExt::add_pad` take ownership of the floating reference.
In contrast to `gobject::Object` instances, `Object` adds a name property. The functions In contrast to `gobject::Object` instances, `Object` adds a name property. The functions
`GstObjectExt::set_name` and `GstObjectExt::get_name` are used to set/get the name `Object::set_name` and `GstObjectExt::get_name` are used to set/get the name
of the object. of the object.
## controlled properties ## controlled properties
@ -8908,6 +9141,14 @@ property, we don't emit `gobject::Object::notify` and `Object::deep-notify`
signals due to locking issues. In some cases one can use signals due to locking issues. In some cases one can use
`Bin::element-added` or `Bin::element-removed` signals on the parent to `Bin::element-added` or `Bin::element-removed` signals on the parent to
achieve a similar effect. achieve a similar effect.
<!-- struct ObjectFlags -->
The standard flags that an gstobject may have.
<!-- struct ObjectFlags::const MAY_BE_LEAKED -->
the object is expected to stay alive even
after `gst_deinit` has been called and so should be ignored by leak
detection tools. (Since: 1.10)
<!-- struct ObjectFlags::const LAST -->
subclasses can add additional flags starting from this flag
<!-- struct Pad --> <!-- struct Pad -->
A `Element` is linked to other elements via "pads", which are extremely A `Element` is linked to other elements via "pads", which are extremely
light-weight generic link points. light-weight generic link points.
@ -10138,6 +10379,81 @@ direction is unknown.
the pad is a source pad. the pad is a source pad.
<!-- enum PadDirection::variant Sink --> <!-- enum PadDirection::variant Sink -->
the pad is a sink pad. the pad is a sink pad.
<!-- struct PadFlags -->
Pad state flags
<!-- struct PadFlags::const BLOCKED -->
is dataflow on a pad blocked
<!-- struct PadFlags::const FLUSHING -->
is pad flushing
<!-- struct PadFlags::const EOS -->
is pad in EOS state
<!-- struct PadFlags::const BLOCKING -->
is pad currently blocking on a buffer or event
<!-- struct PadFlags::const NEED_PARENT -->
ensure that there is a parent object before calling
into the pad callbacks.
<!-- struct PadFlags::const NEED_RECONFIGURE -->
the pad should be reconfigured/renegotiated.
The flag has to be unset manually after
reconfiguration happened.
<!-- struct PadFlags::const PENDING_EVENTS -->
the pad has pending events
<!-- struct PadFlags::const FIXED_CAPS -->
the pad is using fixed caps. This means that
once the caps are set on the pad, the default caps query function
will only return those caps.
<!-- struct PadFlags::const PROXY_CAPS -->
the default event and query handler will forward
all events and queries to the internally linked pads
instead of discarding them.
<!-- struct PadFlags::const PROXY_ALLOCATION -->
the default query handler will forward
allocation queries to the internally linked pads
instead of discarding them.
<!-- struct PadFlags::const PROXY_SCHEDULING -->
the default query handler will forward
scheduling queries to the internally linked pads
instead of discarding them.
<!-- struct PadFlags::const ACCEPT_INTERSECT -->
the default accept-caps handler will check
it the caps intersect the query-caps result instead
of checking for a subset. This is interesting for
parsers that can accept incompletely specified caps.
<!-- struct PadFlags::const ACCEPT_TEMPLATE -->
the default accept-caps handler will use
the template pad caps instead of query caps to
compare with the accept caps. Use this in combination
with `PadFlags::AcceptIntersect`. (Since: 1.6)
<!-- struct PadFlags::const LAST -->
offset to define more flags
<!-- struct PadLinkCheck -->
The amount of checking to be done when linking pads. `PadLinkCheck::Caps`
and `PadLinkCheck::TemplateCaps` are mutually exclusive. If both are
specified, expensive but safe `PadLinkCheck::Caps` are performed.
> Only disable some of the checks if you are 100% certain you know the link
> will not fail because of hierarchy/caps compatibility failures. If uncertain,
> use the default checks (`PadLinkCheck::Default`) or the regular methods
> for linking the pads.
<!-- struct PadLinkCheck::const NOTHING -->
Don't check hierarchy or caps compatibility.
<!-- struct PadLinkCheck::const HIERARCHY -->
Check the pads have same parents/grandparents.
Could be omitted if it is already known that the two elements that own the
pads are in the same bin.
<!-- struct PadLinkCheck::const TEMPLATE_CAPS -->
Check if the pads are compatible by using
their template caps. This is much faster than `PadLinkCheck::Caps`, but
would be unsafe e.g. if one pad has `GST_CAPS_ANY`.
<!-- struct PadLinkCheck::const CAPS -->
Check if the pads are compatible by comparing the
caps returned by `PadExt::query_caps`.
<!-- struct PadLinkCheck::const NO_RECONFIGURE -->
Disables pushing a reconfigure event when pads are
linked.
<!-- struct PadLinkCheck::const DEFAULT -->
The default checks done when linking
pads (i.e. the ones used by `Pad::link`).
<!-- enum PadLinkReturn --> <!-- enum PadLinkReturn -->
Result values from gst_pad_link and friends. Result values from gst_pad_link and friends.
<!-- enum PadLinkReturn::variant Ok --> <!-- enum PadLinkReturn::variant Ok -->
@ -10201,6 +10517,57 @@ Data has been handled in the probe and will not be
`GST_PAD_PROBE_INFO_FLOW_RETURN`() accessor. `GST_PAD_PROBE_INFO_FLOW_RETURN`() accessor.
Note that the resulting query must contain valid entries. Note that the resulting query must contain valid entries.
Since: 1.6 Since: 1.6
<!-- struct PadProbeType -->
The different probing types that can occur. When either one of
`PadProbeType::Idle` or `PadProbeType::Block` is used, the probe will be a
blocking probe.
<!-- struct PadProbeType::const INVALID -->
invalid probe type
<!-- struct PadProbeType::const IDLE -->
probe idle pads and block while the callback is called
<!-- struct PadProbeType::const BLOCK -->
probe and block pads
<!-- struct PadProbeType::const BUFFER -->
probe buffers
<!-- struct PadProbeType::const BUFFER_LIST -->
probe buffer lists
<!-- struct PadProbeType::const EVENT_DOWNSTREAM -->
probe downstream events
<!-- struct PadProbeType::const EVENT_UPSTREAM -->
probe upstream events
<!-- struct PadProbeType::const EVENT_FLUSH -->
probe flush events. This probe has to be
explicitly enabled and is not included in the
@`PadProbeType::EventDownstream` or
@`PadProbeType::EventUpstream` probe types.
<!-- struct PadProbeType::const QUERY_DOWNSTREAM -->
probe downstream queries
<!-- struct PadProbeType::const QUERY_UPSTREAM -->
probe upstream queries
<!-- struct PadProbeType::const PUSH -->
probe push
<!-- struct PadProbeType::const PULL -->
probe pull
<!-- struct PadProbeType::const BLOCKING -->
probe and block at the next opportunity, at data flow or when idle
<!-- struct PadProbeType::const DATA_DOWNSTREAM -->
probe downstream data (buffers, buffer lists, and events)
<!-- struct PadProbeType::const DATA_UPSTREAM -->
probe upstream data (events)
<!-- struct PadProbeType::const DATA_BOTH -->
probe upstream and downstream data (buffers, buffer lists, and events)
<!-- struct PadProbeType::const BLOCK_DOWNSTREAM -->
probe and block downstream data (buffers, buffer lists, and events)
<!-- struct PadProbeType::const BLOCK_UPSTREAM -->
probe and block upstream data (events)
<!-- struct PadProbeType::const EVENT_BOTH -->
probe upstream and downstream events
<!-- struct PadProbeType::const QUERY_BOTH -->
probe upstream and downstream queries
<!-- struct PadProbeType::const ALL_BOTH -->
probe upstream events and queries and downstream buffers, buffer lists, events and queries
<!-- struct PadProbeType::const SCHEDULING -->
probe push and pull
<!-- struct PadTemplate --> <!-- struct PadTemplate -->
Padtemplates describe the possible media types a pad or an elementfactory can Padtemplates describe the possible media types a pad or an elementfactory can
handle. This allows for both inspection of handled types before loading the handle. This allows for both inspection of handled types before loading the
@ -10323,10 +10690,30 @@ Gets the capabilities of the pad template.
the `Caps` of the pad template. the `Caps` of the pad template.
Unref after usage. Unref after usage.
<!-- impl PadTemplate::fn get_documentation_caps -->
See `PadTemplate::set_documentation_caps`.
Feature: `v1_18`
# Returns
The caps to document. For convenience, this will return
`PadTemplate::get_caps` when no documentation caps were set.
<!-- impl PadTemplate::fn pad_created --> <!-- impl PadTemplate::fn pad_created -->
Emit the pad-created signal for this template when created by this pad. Emit the pad-created signal for this template when created by this pad.
## `pad` ## `pad`
the `Pad` that created it the `Pad` that created it
<!-- impl PadTemplate::fn set_documentation_caps -->
Certain elements will dynamically construct the caps of their
pad templates. In order not to let environment-specific information
into the documentation, element authors should use this method to
expose "stable" caps to the reader.
Feature: `v1_18`
## `caps`
the documented capabilities
<!-- impl PadTemplate::fn connect_pad_created --> <!-- impl PadTemplate::fn connect_pad_created -->
This signal is fired when an element creates a pad from this template. This signal is fired when an element creates a pad from this template.
## `pad` ## `pad`
@ -10372,6 +10759,9 @@ a newly-allocated parse context. Free
<!-- impl ParseContext::fn copy --> <!-- impl ParseContext::fn copy -->
Copies the `self`. Copies the `self`.
Feature: `v1_12_1`
# Returns # Returns
A copied `ParseContext` A copied `ParseContext`
@ -10405,6 +10795,21 @@ An empty bin was specified.
An empty description was specified An empty description was specified
<!-- enum ParseError::variant DelayedLink --> <!-- enum ParseError::variant DelayedLink -->
A delayed link did not get resolved. A delayed link did not get resolved.
<!-- struct ParseFlags -->
Parsing options.
<!-- struct ParseFlags::const NONE -->
Do not use any special parsing options.
<!-- struct ParseFlags::const FATAL_ERRORS -->
Always return `None` when an error occurs
(default behaviour is to return partially constructed bins or elements
in some cases)
<!-- struct ParseFlags::const NO_SINGLE_ELEMENT_BINS -->
If a bin only has a single element,
just return the element.
<!-- struct ParseFlags::const PLACE_IN_BIN -->
If more than one toplevel element is described
by the pipeline description string, put them in a `Bin` instead of a
`Pipeline`. (Since: 1.10)
<!-- struct Pipeline --> <!-- struct Pipeline -->
A `Pipeline` is a special `Bin` used as the toplevel container for A `Pipeline` is a special `Bin` used as the toplevel container for
the filter graph. The `Pipeline` will manage the selection and the filter graph. The `Pipeline` will manage the selection and
@ -10618,6 +11023,12 @@ see `PipelineExt::set_delay` for more information on this option.
Latency to configure on the pipeline. See `PipelineExt::set_latency`. Latency to configure on the pipeline. See `PipelineExt::set_latency`.
<!-- trait PipelineExt::fn set_property_latency --> <!-- trait PipelineExt::fn set_property_latency -->
Latency to configure on the pipeline. See `PipelineExt::set_latency`. Latency to configure on the pipeline. See `PipelineExt::set_latency`.
<!-- struct PipelineFlags -->
Pipeline flags
<!-- struct PipelineFlags::const FIXED_CLOCK -->
this pipeline works with a fixed clock
<!-- struct PipelineFlags::const LAST -->
offset to define more flags
<!-- struct Plugin --> <!-- struct Plugin -->
GStreamer is extensible, so `Element` instances can be loaded at runtime. GStreamer is extensible, so `Element` instances can be loaded at runtime.
A plugin system can provide one or more of the basic GStreamer A plugin system can provide one or more of the basic GStreamer
@ -10895,6 +11306,35 @@ the `self`.
The cache is flushed every time the registry is rebuilt. The cache is flushed every time the registry is rebuilt.
## `cache_data` ## `cache_data`
a structure containing the data to cache a structure containing the data to cache
<!-- struct PluginAPIFlags -->
<!-- struct PluginAPIFlags::const MEMBERS -->
Ignore enum members when generating
the plugins cache. This is useful if the members of the enum are generated
dynamically, in order not to expose incorrect documentation to the end user.
Feature: `v1_18`
<!-- struct PluginDependencyFlags -->
Flags used in connection with `Plugin::add_dependency`.
<!-- struct PluginDependencyFlags::const NONE -->
no special flags
<!-- struct PluginDependencyFlags::const RECURSE -->
recurse into subdirectories
<!-- struct PluginDependencyFlags::const PATHS_ARE_DEFAULT_ONLY -->
use paths
argument only if none of the environment variables is set
<!-- struct PluginDependencyFlags::const FILE_NAME_IS_SUFFIX -->
interpret
filename argument as filter suffix and check all matching files in
the directory
<!-- struct PluginDependencyFlags::const FILE_NAME_IS_PREFIX -->
interpret
filename argument as filter prefix and check all matching files in
the directory. Since: 1.8.
<!-- struct PluginDependencyFlags::const PATHS_ARE_RELATIVE_TO_EXE -->
interpret
non-absolute paths as relative to the main executable directory. Since
1.14.
<!-- enum PluginError --> <!-- enum PluginError -->
The plugin loading errors The plugin loading errors
<!-- enum PluginError::variant Module --> <!-- enum PluginError::variant Module -->
@ -11010,6 +11450,12 @@ Specifies a rank for a plugin feature, so that autoplugging uses
the most appropriate feature. the most appropriate feature.
## `rank` ## `rank`
rank value - higher number means more priority rank rank value - higher number means more priority rank
<!-- struct PluginFlags -->
The plugin loading state
<!-- struct PluginFlags::const CACHED -->
Temporarily loaded plugins
<!-- struct PluginFlags::const BLACKLISTED -->
The plugin won't be scanned (again)
<!-- struct Preset --> <!-- struct Preset -->
This interface offers methods to query and manipulate parameter preset sets. 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. A preset is a bunch of property settings, together with meta data and a name.
@ -12661,6 +13107,118 @@ A `Segment`
<!-- impl Sample::fn unref --> <!-- impl Sample::fn unref -->
Decreases the refcount of the sample. If the refcount reaches 0, the Decreases the refcount of the sample. If the refcount reaches 0, the
sample will be freed. sample will be freed.
<!-- struct SchedulingFlags -->
The different scheduling flags.
<!-- struct SchedulingFlags::const SEEKABLE -->
if seeking is possible
<!-- struct SchedulingFlags::const SEQUENTIAL -->
if sequential access is recommended
<!-- struct SchedulingFlags::const BANDWIDTH_LIMITED -->
if bandwidth is limited and buffering possible (since 1.2)
<!-- struct SeekFlags -->
Flags to be used with `Element::seek` or `Event::new_seek`. All flags
can be used together.
A non flushing seek might take some time to perform as the currently
playing data in the pipeline will not be cleared.
An accurate seek might be slower for formats that don't have any indexes
or timestamp markers in the stream. Specifying this flag might require a
complete scan of the file in those cases.
When performing a segment seek: after the playback of the segment completes,
no EOS will be emitted by the element that performed the seek, but a
`MessageType::SegmentDone` message will be posted on the bus by the element.
When this message is posted, it is possible to send a new seek event to
continue playback. With this seek method it is possible to perform seamless
looping or simple linear editing.
When only changing the playback rate and not the direction, the
`SeekFlags::InstantRateChange` flag can be used for a non-flushing seek
to signal that the rate change should be applied immediately. This requires
special support in the seek handlers (e.g. demuxers) and any elements
synchronizing to the clock, and in general can't work in all cases (for example
UDP streaming where the delivery rate is controlled by a remote server). The
instant-rate-change mode supports changing the trickmode-related GST_SEEK_ flags,
but can't be used in conjunction with other seek flags that affect the new
playback position - as the playback position will not be changing.
When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode
playback, the `SeekFlags::Trickmode` flag can be used to instruct decoders
and demuxers to adjust the playback rate by skipping frames. This can improve
performance and decrease CPU usage because not all frames need to be decoded.
Beyond that, the `SeekFlags::TrickmodeKeyUnits` flag can be used to
request that decoders skip all frames except key units, and
`SeekFlags::TrickmodeNoAudio` flags can be used to request that audio
decoders do no decoding at all, and simple output silence.
The `SeekFlags::SnapBefore` flag can be used to snap to the previous
relevant location, and the `SeekFlags::SnapAfter` flag can be used to
select the next relevant location. If `SeekFlags::KeyUnit` is specified,
the relevant location is a keyframe. If both flags are specified, the nearest
of these locations will be selected. If none are specified, the implementation is
free to select whichever it wants.
The before and after here are in running time, so when playing backwards,
the next location refers to the one that will played in next, and not the
one that is located after in the actual source stream.
Also see part-seeking.txt in the GStreamer design documentation for more
details on the meaning of these flags and the behaviour expected of
elements that handle them.
<!-- struct SeekFlags::const NONE -->
no flag
<!-- struct SeekFlags::const FLUSH -->
flush pipeline
<!-- struct SeekFlags::const ACCURATE -->
accurate position is requested, this might
be considerably slower for some formats.
<!-- struct SeekFlags::const KEY_UNIT -->
seek to the nearest keyframe. This might be
faster but less accurate.
<!-- struct SeekFlags::const SEGMENT -->
perform a segment seek.
<!-- struct SeekFlags::const TRICKMODE -->
when doing fast forward or fast reverse playback, allow
elements to skip frames instead of generating all
frames. (Since: 1.6)
<!-- struct SeekFlags::const SKIP -->
Deprecated backward compatibility flag, replaced
by `SeekFlags::Trickmode`
<!-- struct SeekFlags::const SNAP_BEFORE -->
go to a location before the requested position,
if `SeekFlags::KeyUnit` this means the keyframe at or before
the requested position the one at or before the seek target.
<!-- struct SeekFlags::const SNAP_AFTER -->
go to a location after the requested position,
if `SeekFlags::KeyUnit` this means the keyframe at of after the
requested position.
<!-- struct SeekFlags::const SNAP_NEAREST -->
go to a position near the requested position,
if `SeekFlags::KeyUnit` this means the keyframe closest
to the requested position, if both keyframes are at an equal
distance, behaves like `SeekFlags::SnapBefore`.
<!-- struct SeekFlags::const TRICKMODE_KEY_UNITS -->
when doing fast forward or fast reverse
playback, request that elements only decode keyframes
and skip all other content, for formats that have
keyframes. (Since: 1.6)
<!-- struct SeekFlags::const TRICKMODE_NO_AUDIO -->
when doing fast forward or fast reverse
playback, request that audio decoder elements skip
decoding and output only gap events or silence. (Since: 1.6)
<!-- struct SeekFlags::const TRICKMODE_FORWARD_PREDICTED -->
When doing fast forward or fast reverse
playback, request that elements only decode keyframes and
forward predicted frames and skip all other content (for example
B-Frames), for formats that have keyframes and forward predicted
frames. (Since: 1.18)
<!-- struct SeekFlags::const INSTANT_RATE_CHANGE -->
Signals that a rate change should be
applied immediately. Only valid if start/stop position
are GST_CLOCK_TIME_NONE, the playback direction does not change
and the seek is not flushing. (Since: 1.18)
<!-- enum SeekType --> <!-- enum SeekType -->
The different types of seek events. When constructing a seek event with The different types of seek events. When constructing a seek event with
`Event::new_seek` or when doing gst_segment_do_seek (). `Event::new_seek` or when doing gst_segment_do_seek ().
@ -13043,6 +13601,42 @@ result stream-time
# Returns # Returns
a 1 or -1 on success, 0 on failure. a 1 or -1 on success, 0 on failure.
<!-- struct SegmentFlags -->
Flags for the GstSegment structure. Currently mapped to the corresponding
values of the seek flags.
<!-- struct SegmentFlags::const NONE -->
no flags
<!-- struct SegmentFlags::const RESET -->
reset the pipeline running_time to the segment
running_time
<!-- struct SegmentFlags::const TRICKMODE -->
perform skip playback (Since: 1.6)
<!-- struct SegmentFlags::const SKIP -->
Deprecated backward compatibility flag, replaced
by `SegmentFlags::Trickmode`
<!-- struct SegmentFlags::const SEGMENT -->
send SEGMENT_DONE instead of EOS
<!-- struct SegmentFlags::const TRICKMODE_KEY_UNITS -->
Decode only keyframes, where
possible (Since: 1.6)
<!-- struct SegmentFlags::const TRICKMODE_FORWARD_PREDICTED -->
Decode only keyframes or forward
predicted frames, where possible (Since: 1.18)
<!-- struct SegmentFlags::const TRICKMODE_NO_AUDIO -->
Do not decode any audio, where
possible (Since: 1.6)
<!-- struct StackTraceFlags -->
<!-- struct StackTraceFlags::const NONE -->
Try to retrieve the minimum information
available, which may be none on some platforms
(Since: 1.18)
<!-- struct StackTraceFlags::const FULL -->
Try to retrieve as much information as possible,
including source information when getting the
stack trace
Feature: `v1_12`
<!-- enum State --> <!-- enum State -->
The possible states an element can be in. States can be changed using The possible states an element can be in. States can be changed using
`Element::set_state` and checked using `Element::get_state`. `Element::set_state` and checked using `Element::get_state`.
@ -13395,6 +13989,23 @@ used when the stream is encrypted and
can't be decrypted because no suitable key is available. can't be decrypted because no suitable key is available.
<!-- enum StreamError::variant NumErrors --> <!-- enum StreamError::variant NumErrors -->
the number of stream error types. the number of stream error types.
<!-- struct StreamFlags -->
<!-- struct StreamFlags::const NONE -->
This stream has no special attributes
<!-- struct StreamFlags::const SPARSE -->
This stream is a sparse stream (e.g. a subtitle
stream), data may flow only in irregular intervals with large gaps in
between.
<!-- struct StreamFlags::const SELECT -->
This stream should be selected by default. This
flag may be used by demuxers to signal that a stream should be selected
by default in a playback scenario.
<!-- struct StreamFlags::const UNSELECT -->
This stream should not be selected by default.
This flag may be used by demuxers to signal that a stream should not
be selected by default in a playback scenario, but only if explicitly
selected by the user (e.g. an audio track for the hard of hearing or
a director's commentary track).
<!-- enum StreamStatusType --> <!-- enum StreamStatusType -->
The type of a `MessageType::StreamStatus`. The stream status messages inform the The type of a `MessageType::StreamStatus`. The stream status messages inform the
application of new streaming threads and their status. application of new streaming threads and their status.
@ -13412,23 +14023,44 @@ a thread is started
a thread is paused a thread is paused
<!-- enum StreamStatusType::variant Stop --> <!-- enum StreamStatusType::variant Stop -->
a thread is stopped a thread is stopped
<!-- struct StreamType -->
`StreamType` describes a high level classification set for
flows of data in `Stream` objects.
Note that this is a flag, and therefore users should not assume it
will be a single value. Do not use the equality operator for checking
whether a stream is of a certain type.
<!-- struct StreamType::const UNKNOWN -->
The stream is of unknown (unclassified) type.
<!-- struct StreamType::const AUDIO -->
The stream is of audio data
<!-- struct StreamType::const VIDEO -->
The stream carries video data
<!-- struct StreamType::const CONTAINER -->
The stream is a muxed container type
<!-- struct StreamType::const TEXT -->
The stream contains subtitle / subpicture data.
Feature: `v1_10`
<!-- struct Structure --> <!-- struct Structure -->
A `Structure` is a collection of key/value pairs. The keys are expressed A `Structure` is a collection of key/value pairs. The keys are expressed as
as GQuarks and the values can be of any GType. GQuarks and the values can be of any GType.
In addition to the key/value pairs, a `Structure` also has a name. The name In addition to the key/value pairs, a `Structure` also has a name. The name
starts with a letter and can be filled by letters, numbers and any of "/-_.:". starts with a letter and can be filled by letters, numbers and any of
"/-_.:".
`Structure` is used by various GStreamer subsystems to store information `Structure` is used by various GStreamer subsystems to store information in
in a flexible and extensible way. A `Structure` does not have a refcount a flexible and extensible way. A `Structure` does not have a refcount
because it usually is part of a higher level object such as `Caps`, because it usually is part of a higher level object such as `Caps`,
`Message`, `Event`, `Query`. It provides a means to enforce mutability `Message`, `Event`, `Query`. It provides a means to enforce mutability
using the refcount of the parent with the `Structure::set_parent_refcount` using the refcount of the parent with the `Structure::set_parent_refcount`
method. method.
A `Structure` can be created with `Structure::new_empty` or A `Structure` can be created with `Structure::new_empty` or
`Structure::new`, which both take a name and an optional set of `Structure::new`, which both take a name and an optional set of key/value
key/value pairs along with the types of the values. pairs along with the types of the values.
Field values can be changed with `Structure::set_value` or Field values can be changed with `Structure::set_value` or
`Structure::set`. `Structure::set`.
@ -13439,14 +14071,78 @@ convenient gst_structure_get_*() functions.
Fields can be removed with `Structure::remove_field` or Fields can be removed with `Structure::remove_field` or
`Structure::remove_fields`. `Structure::remove_fields`.
Strings in structures must be ASCII or UTF-8 encoded. Other encodings are Strings in structures must be ASCII or UTF-8 encoded. Other encodings are not
not allowed. Strings may be `None` however. allowed. Strings may be `None` however.
Be aware that the current `Caps` / `Structure` serialization into string ## The serialization format
has limited support for nested `Caps` / `Structure` fields. It can only
support one level of nesting. Using more levels will lead to unexpected GstStructure serialization format serialize the GstStructure name,
behavior when using serialization features, such as `Caps::to_string` or keys/GType/values in a comma separated list with the structure name as first
`gst_value_serialize` and their counterparts. field without value followed by separated key/value pairs in the form
`key=value`, for example:
```
a-structure, key=value
````
The values type will be inferred if not explicitly specified with the
`(GTypeName)value` syntax, for example the following struct will have one
field called 'is-string' which has the string 'true' as a value:
```
a-struct, field-is-string=(string)true, field-is-boolean=true
```
*Note*: without specifying `(string), `field-is-string` type would have been
inferred as boolean.
*Note*: we specified `(string)` as a type even if `gchararray` is the actual
GType name as for convenience some well known types have been aliased or
abbreviated.
To avoid specifying the type, you can give some hints to the "type system".
For example to specify a value as a double, you should add a decimal (ie. `1`
is an `int` while `1.0` is a `double`).
*Note*: when a structure is serialized with `Structure::to_string`, all
values are explicitly typed.
Some types have special delimiters:
- [GstValueArray](GST_TYPE_ARRAY) are inside curly brackets (`{` and `}`).
For example `a-structure, array={1, 2, 3}`
- Ranges are inside brackets (`[` and `]`). For example `a-structure,
range=[1, 6, 2]` 1 being the min value, 6 the maximum and 2 the step. To
specify a `GST_TYPE_INT64_RANGE` you need to explicitly specify it like:
`a-structure, a-int64-range=(gint64) [1, 5]`
- [GstValueList](GST_TYPE_LIST) are inside "less and greater than" (`<` and
`>`). For example `a-structure, list=<1, 2, 3>
Structures are delimited either by a null character `\0` or a semicolumn `;`
the latter allowing to store multiple structures in the same string (see
#GstCaps).
Quotes are used as "default" delimiters and can be used around any types that
don't use other delimiters (for example `a-struct, i=(int)"1"`). They are use
to allow adding spaces or special characters (such as delimiters,
semicolumns, etc..) inside strings and you can use backslashes `\` to escape
characters inside them, for example:
```
a-struct, special="\"{[(;)]}\" can be used inside quotes"
```
They also allow for nested structure, such as:
```
a-struct, nested=(GstStructure)"nested-struct, nested=true"
```
> *Note*: Be aware that the current #GstCaps / #GstStructure serialization
> into string has limited support for nested #GstCaps / #GstStructure fields.
> It can only support one level of nesting. Using more levels will lead to
> unexpected behavior when using serialization features, such as
> gst_caps_to_string() or gst_value_serialize() and their counterparts.
<!-- impl Structure::fn from_string --> <!-- impl Structure::fn from_string -->
Creates a `Structure` from a string representation. Creates a `Structure` from a string representation.
If end is not `None`, a pointer to the place inside the given string If end is not `None`, a pointer to the place inside the given string
@ -13687,6 +14383,9 @@ This is useful in language bindings where unknown `gobject::Value` types are not
supported. This function will convert the `GST_TYPE_ARRAY` into a newly supported. This function will convert the `GST_TYPE_ARRAY` into a newly
allocated `gobject::ValueArray` and return it through `array`. Be aware that this is allocated `gobject::ValueArray` and return it through `array`. Be aware that this is
slower then getting the `gobject::Value` directly. slower then getting the `gobject::Value` directly.
Feature: `v1_12`
## `fieldname` ## `fieldname`
the name of a field the name of a field
## `array` ## `array`