Update documentation

This commit is contained in:
Sebastian Dröge 2019-02-22 12:13:16 +02:00
parent 0f6850d6a9
commit 7feadd2f32
4 changed files with 1222 additions and 750 deletions

View file

@ -779,7 +779,7 @@ Subclasses that synchronise on the clock in the `BaseSinkClass.render`()
method are supported as well. These classes typically receive a buffer in
the render method and can then potentially block on the clock while
rendering. A typical example is an audiosink.
These subclasses can use `BaseSinkExt::wait_preroll` to perform the
These subclasses can use `BaseSink::wait_preroll` to perform the
blocking wait.
Upon receiving the EOS event in the PLAYING state, `BaseSink` will wait
@ -1245,7 +1245,7 @@ can only produce data in the PLAYING state, when the clock is actually
distributed and running.
Live sources that synchronize and block on the clock (an audio source, for
example) can use `BaseSrcExt::wait_playing` when the
example) can use `BaseSrc::wait_playing` when the
`BaseSrcClass.create`() function was interrupted by a state change to
PAUSED.
@ -1451,7 +1451,7 @@ be GST_STATE_CHANGE_NO_PREROLL.
new live-mode
<!-- trait BaseSrcExt::fn start_complete -->
Complete an asynchronous start operation. When the subclass overrides the
start method, it should call `BaseSrcExt::start_complete` when the start
start method, it should call `BaseSrc::start_complete` when the start
operation completes either from the same thread or from an asynchronous
helper thread.
## `ret`

File diff suppressed because it is too large Load diff

View file

@ -941,6 +941,307 @@ Every four adjacent blocks - two
horizontally and two vertically are grouped together and are located
in memory in Z or flipped Z order. In case of odd rows, the last row
of blocks is arranged in linear order.
<!-- struct VideoTimeCode -->
`field_count` must be 0 for progressive video and 1 or 2 for interlaced.
A representation of a SMPTE time code.
`hours` must be positive and less than 24. Will wrap around otherwise.
`minutes` and `seconds` must be positive and less than 60.
`frames` must be less than or equal to `config.fps_n` / `config.fps_d`
These values are *NOT* automatically normalized.
Feature: `v1_10`
<!-- impl VideoTimeCode::fn new -->
`field_count` is 0 for progressive, 1 or 2 for interlaced.
`latest_daiy_jam` reference is stolen from caller.
Feature: `v1_10`
## `fps_n`
Numerator of the frame rate
## `fps_d`
Denominator of the frame rate
## `latest_daily_jam`
The latest daily jam of the `VideoTimeCode`
## `flags`
`VideoTimeCodeFlags`
## `hours`
the hours field of `VideoTimeCode`
## `minutes`
the minutes field of `VideoTimeCode`
## `seconds`
the seconds field of `VideoTimeCode`
## `frames`
the frames field of `VideoTimeCode`
## `field_count`
Interlaced video field count
# Returns
a new `VideoTimeCode` with the given values.
The values are not checked for being in a valid range. To see if your
timecode actually has valid content, use `VideoTimeCode::is_valid`.
<!-- impl VideoTimeCode::fn new_empty -->
Feature: `v1_10`
# Returns
a new empty `VideoTimeCode`
<!-- impl VideoTimeCode::fn new_from_date_time -->
The resulting config->latest_daily_jam is set to
midnight, and timecode is set to the given time.
Feature: `v1_12`
## `fps_n`
Numerator of the frame rate
## `fps_d`
Denominator of the frame rate
## `dt`
`glib::DateTime` to convert
## `flags`
`VideoTimeCodeFlags`
## `field_count`
Interlaced video field count
# Returns
the `GVideoTimeCode` representation of `dt`.
<!-- impl VideoTimeCode::fn new_from_string -->
Feature: `v1_12`
## `tc_str`
The string that represents the `VideoTimeCode`
# Returns
a new `VideoTimeCode` from the given string
<!-- impl VideoTimeCode::fn add_frames -->
Adds or subtracts `frames` amount of frames to `self`. tc needs to
contain valid data, as verified by `VideoTimeCode::is_valid`.
Feature: `v1_10`
## `frames`
How many frames to add or subtract
<!-- impl VideoTimeCode::fn add_interval -->
This makes a component-wise addition of `tc_inter` to `self`. For example,
adding ("01:02:03:04", "00:01:00:00") will return "01:03:03:04".
When it comes to drop-frame timecodes,
adding ("00:00:00;00", "00:01:00:00") will return "00:01:00;02"
because of drop-frame oddities. However,
adding ("00:09:00;02", "00:01:00:00") will return "00:10:00;00"
because this time we can have an exact minute.
Feature: `v1_12`
## `tc_inter`
The `VideoTimeCodeInterval` to add to `self`.
The interval must contain valid values, except that for drop-frame
timecode, it may also contain timecodes which would normally
be dropped. These are then corrected to the next reasonable timecode.
# Returns
A new `VideoTimeCode` with `tc_inter` added.
<!-- impl VideoTimeCode::fn clear -->
Initializes `self` with empty/zero/NULL values.
Feature: `v1_10`
<!-- impl VideoTimeCode::fn compare -->
Compares `self` and `tc2` . If both have latest daily jam information, it is
taken into account. Otherwise, it is assumed that the daily jam of both
`self` and `tc2` was at the same time. Both time codes must be valid.
Feature: `v1_10`
## `tc2`
another `VideoTimeCode`
# Returns
1 if `self` is after `tc2`, -1 if `self` is before `tc2`, 0 otherwise.
<!-- impl VideoTimeCode::fn copy -->
Feature: `v1_10`
# Returns
a new `VideoTimeCode` with the same values as `self` .
<!-- impl VideoTimeCode::fn frames_since_daily_jam -->
Feature: `v1_10`
# Returns
how many frames have passed since the daily jam of `self` .
<!-- impl VideoTimeCode::fn free -->
Frees `self` .
Feature: `v1_10`
<!-- impl VideoTimeCode::fn increment_frame -->
Adds one frame to `self` .
Feature: `v1_10`
<!-- impl VideoTimeCode::fn init -->
`field_count` is 0 for progressive, 1 or 2 for interlaced.
`latest_daiy_jam` reference is stolen from caller.
Initializes `self` with the given values.
The values are not checked for being in a valid range. To see if your
timecode actually has valid content, use `VideoTimeCode::is_valid`.
Feature: `v1_10`
## `fps_n`
Numerator of the frame rate
## `fps_d`
Denominator of the frame rate
## `latest_daily_jam`
The latest daily jam of the `VideoTimeCode`
## `flags`
`VideoTimeCodeFlags`
## `hours`
the hours field of `VideoTimeCode`
## `minutes`
the minutes field of `VideoTimeCode`
## `seconds`
the seconds field of `VideoTimeCode`
## `frames`
the frames field of `VideoTimeCode`
## `field_count`
Interlaced video field count
<!-- impl VideoTimeCode::fn init_from_date_time -->
The resulting config->latest_daily_jam is set to
midnight, and timecode is set to the given time.
Feature: `v1_12`
## `fps_n`
Numerator of the frame rate
## `fps_d`
Denominator of the frame rate
## `dt`
`glib::DateTime` to convert
## `flags`
`VideoTimeCodeFlags`
## `field_count`
Interlaced video field count
<!-- impl VideoTimeCode::fn is_valid -->
Feature: `v1_10`
# Returns
whether `self` is a valid timecode (supported frame rate,
hours/minutes/seconds/frames not overflowing)
<!-- impl VideoTimeCode::fn nsec_since_daily_jam -->
Feature: `v1_10`
# Returns
how many nsec have passed since the daily jam of `self` .
<!-- impl VideoTimeCode::fn to_date_time -->
The `self.config`->latest_daily_jam is required to be non-NULL.
Feature: `v1_10`
# Returns
the `glib::DateTime` representation of `self`.
<!-- impl VideoTimeCode::fn to_string -->
Feature: `v1_10`
# Returns
the SMPTE ST 2059-1:2015 string representation of `self`. That will
take the form hh:mm:ss:ff . The last separator (between seconds and frames)
may vary:
';' for drop-frame, non-interlaced content and for drop-frame interlaced
field 2
',' for drop-frame interlaced field 1
':' for non-drop-frame, non-interlaced content and for non-drop-frame
interlaced field 2
'.' for non-drop-frame interlaced field 1
<!-- struct VideoTimeCodeInterval -->
A representation of a difference between two `VideoTimeCode` instances.
Will not necessarily correspond to a real timecode (e.g. 00:00:10;00)
Feature: `v1_12`
<!-- impl VideoTimeCodeInterval::fn new -->
Feature: `v1_12`
## `hours`
the hours field of `VideoTimeCodeInterval`
## `minutes`
the minutes field of `VideoTimeCodeInterval`
## `seconds`
the seconds field of `VideoTimeCodeInterval`
## `frames`
the frames field of `VideoTimeCodeInterval`
# Returns
a new `VideoTimeCodeInterval` with the given values.
<!-- impl VideoTimeCodeInterval::fn new_from_string -->
`tc_inter_str` must only have ":" as separators.
Feature: `v1_12`
## `tc_inter_str`
The string that represents the `VideoTimeCodeInterval`
# Returns
a new `VideoTimeCodeInterval` from the given string
<!-- impl VideoTimeCodeInterval::fn clear -->
Initializes `self` with empty/zero/NULL values.
Feature: `v1_12`
<!-- impl VideoTimeCodeInterval::fn copy -->
Feature: `v1_12`
# Returns
a new `VideoTimeCodeInterval` with the same values as `self` .
<!-- impl VideoTimeCodeInterval::fn free -->
Frees `self` .
Feature: `v1_12`
<!-- impl VideoTimeCodeInterval::fn init -->
Initializes `self` with the given values.
Feature: `v1_12`
## `hours`
the hours field of `VideoTimeCodeInterval`
## `minutes`
the minutes field of `VideoTimeCodeInterval`
## `seconds`
the seconds field of `VideoTimeCodeInterval`
## `frames`
the frames field of `VideoTimeCodeInterval`
<!-- enum VideoTransferFunction -->
The video transfer function defines the formula for converting between
non-linear RGB (R'G'B') and linear RGB

View file

@ -11,15 +11,15 @@ want to create a toplevel bin because a normal bin doesn't have a bus or
handle clock distribution of its own.
After the bin has been created you will typically add elements to it with
`BinExt::add`. You can remove elements with `BinExt::remove`.
`GstBinExt::add`. You can remove elements with `GstBinExt::remove`.
An element can be retrieved from a bin with `BinExt::get_by_name`, using the
elements name. `BinExt::get_by_name_recurse_up` is mainly used for internal
An element can be retrieved from a bin with `GstBinExt::get_by_name`, using the
elements name. `GstBinExt::get_by_name_recurse_up` is mainly used for internal
purposes and will query the parent bins when the element is not found in the
current bin.
An iterator of elements in a bin can be retrieved with
`BinExt::iterate_elements`. Various other iterators exist to retrieve the
`GstBinExt::iterate_elements`. Various other iterators exist to retrieve the
elements in a bin.
`GstObjectExt::unref` is used to drop your reference to the bin.
@ -99,8 +99,8 @@ handler will return `true`.
# Implements
[`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
<!-- trait BinExt -->
[`GstBinExt`](trait.GstBinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
<!-- trait GstBinExt -->
Trait containing all `Bin` methods.
# Implementors
@ -114,7 +114,7 @@ the name of the new bin
# Returns
a new `Bin`
<!-- trait BinExt::fn add -->
<!-- trait GstBinExt::fn add -->
Adds the given element to the bin. Sets the element's parent, and thus
takes ownership of the element. An element can only be added to one bin.
@ -124,7 +124,7 @@ before the element is added to the bin.
> When you add an element to an already-running pipeline, you will have to
> take care to set the state of the newly-added element to the desired
> state (usually PLAYING or PAUSED, same you set the pipeline to originally)
> with `ElementExt::set_state`, or use `ElementExt::sync_state_with_parent`.
> with `Element::set_state`, or use `ElementExt::sync_state_with_parent`.
> The bin or pipeline will not take care of this for you.
MT safe.
@ -135,13 +135,13 @@ the `Element` to add
`true` if the element could be added, `false` if
the bin does not want to accept the element.
<!-- trait BinExt::fn add_many -->
<!-- trait GstBinExt::fn add_many -->
Adds a `None`-terminated list of elements to a bin. This function is
equivalent to calling `BinExt::add` for each member of the list. The return
value of each `BinExt::add` is ignored.
equivalent to calling `GstBinExt::add` for each member of the list. The return
value of each `GstBinExt::add` is ignored.
## `element_1`
the `Element` element to add to the bin
<!-- trait BinExt::fn find_unlinked_pad -->
<!-- trait GstBinExt::fn find_unlinked_pad -->
Recursively looks for elements with an unlinked pad of the given
direction within the specified bin and returns an unlinked pad
if one is found, or `None` otherwise. If a pad is found, the caller
@ -154,12 +154,12 @@ whether to look for an unlinked source or sink pad
unlinked pad of the given
direction, `None`.
<!-- trait BinExt::fn get_by_interface -->
<!-- trait GstBinExt::fn get_by_interface -->
Looks for an element inside the bin that implements the given
interface. If such an element is found, it returns the element.
You can cast this element to the given interface afterwards. If you want
all elements that implement the interface, use
`BinExt::iterate_all_by_interface`. This function recurses into child bins.
`GstBinExt::iterate_all_by_interface`. This function recurses into child bins.
MT safe. Caller owns returned reference.
## `iface`
@ -169,7 +169,7 @@ the `glib::Type` of an interface
A `Element` inside the bin
implementing the interface
<!-- trait BinExt::fn get_by_name -->
<!-- trait GstBinExt::fn get_by_name -->
Gets the element with the given name from a bin. This
function recurses into child bins.
@ -183,7 +183,7 @@ the element name to search for
the `Element` with the given
name, or `None`
<!-- trait BinExt::fn get_by_name_recurse_up -->
<!-- trait GstBinExt::fn get_by_name_recurse_up -->
Gets the element with the given name from this bin. If the
element is not found, a recursion is performed on the parent bin.
@ -198,7 +198,7 @@ the element name to search for
the `Element` with the given
name, or `None`
<!-- trait BinExt::fn get_suppressed_flags -->
<!-- trait GstBinExt::fn get_suppressed_flags -->
Return the suppressed flags of the bin.
MT safe.
@ -209,7 +209,7 @@ Feature: `v1_10`
# Returns
the bin's suppressed `ElementFlags`.
<!-- trait BinExt::fn iterate_all_by_interface -->
<!-- trait GstBinExt::fn iterate_all_by_interface -->
Looks for all elements inside the bin that implements the given
interface. You can safely cast all returned elements to the given interface.
The function recurses inside child bins. The iterator will yield a series
@ -224,7 +224,7 @@ the `glib::Type` of an interface
a `Iterator` of `Element`
for all elements in the bin implementing the given interface,
or `None`
<!-- trait BinExt::fn iterate_elements -->
<!-- trait GstBinExt::fn iterate_elements -->
Gets an iterator for the elements in this bin.
MT safe. Caller owns returned value.
@ -233,7 +233,7 @@ MT safe. Caller owns returned value.
a `Iterator` of `Element`,
or `None`
<!-- trait BinExt::fn iterate_recurse -->
<!-- trait GstBinExt::fn iterate_recurse -->
Gets an iterator for the elements in this bin.
This iterator recurses into GstBin children.
@ -243,7 +243,7 @@ MT safe. Caller owns returned value.
a `Iterator` of `Element`,
or `None`
<!-- trait BinExt::fn iterate_sinks -->
<!-- trait GstBinExt::fn iterate_sinks -->
Gets an iterator for all elements in the bin that have the
`ElementFlags::Sink` flag set.
@ -253,7 +253,7 @@ MT safe. Caller owns returned value.
a `Iterator` of `Element`,
or `None`
<!-- trait BinExt::fn iterate_sorted -->
<!-- trait GstBinExt::fn iterate_sorted -->
Gets an iterator for the elements in this bin in topologically
sorted order. This means that the elements are returned from
the most downstream elements (sinks) to the sources.
@ -267,7 +267,7 @@ MT safe. Caller owns returned value.
a `Iterator` of `Element`,
or `None`
<!-- trait BinExt::fn iterate_sources -->
<!-- trait GstBinExt::fn iterate_sources -->
Gets an iterator for all elements in the bin that have the
`ElementFlags::Source` flag set.
@ -277,7 +277,7 @@ MT safe. Caller owns returned value.
a `Iterator` of `Element`,
or `None`
<!-- trait BinExt::fn recalculate_latency -->
<!-- trait GstBinExt::fn recalculate_latency -->
Query `self` for the current latency using and reconfigures this latency to all the
elements with a LATENCY event.
@ -290,7 +290,7 @@ calculations will be performed.
# Returns
`true` if the latency could be queried and reconfigured.
<!-- trait BinExt::fn remove -->
<!-- trait GstBinExt::fn remove -->
Removes the element from the bin, unparenting it as well.
Unparenting the element means that the element will be dereferenced,
so if the bin holds the only reference to the element, the element
@ -309,12 +309,12 @@ the `Element` to remove
`true` if the element could be removed, `false` if
the bin does not want to remove the element.
<!-- trait BinExt::fn remove_many -->
<!-- trait GstBinExt::fn remove_many -->
Remove a list of elements from a bin. This function is equivalent
to calling `BinExt::remove` with each member of the list.
to calling `GstBinExt::remove` with each member of the list.
## `element_1`
the first `Element` to remove from the bin
<!-- trait BinExt::fn set_suppressed_flags -->
<!-- trait GstBinExt::fn set_suppressed_flags -->
Suppress the given flags on the bin. `ElementFlags` of a
child element are propagated when it is added to the bin.
When suppressed flags are set, those specified flags will
@ -326,7 +326,7 @@ Feature: `v1_10`
## `flags`
the `ElementFlags` to suppress
<!-- trait BinExt::fn sync_children_states -->
<!-- trait GstBinExt::fn sync_children_states -->
Synchronizes the state of every child of `self` with the state
of `self`. See also `ElementExt::sync_state_with_parent`.
@ -334,7 +334,7 @@ of `self`. See also `ElementExt::sync_state_with_parent`.
`true` if syncing the state was successful for all children,
otherwise `false`.
<!-- trait BinExt::fn connect_deep_element_added -->
<!-- trait GstBinExt::fn connect_deep_element_added -->
Will be emitted after the element was added to sub_bin.
Feature: `v1_10`
@ -343,7 +343,7 @@ Feature: `v1_10`
the `Bin` the element was added to
## `element`
the `Element` that was added to `sub_bin`
<!-- trait BinExt::fn connect_deep_element_removed -->
<!-- trait GstBinExt::fn connect_deep_element_removed -->
Will be emitted after the element was removed from sub_bin.
Feature: `v1_10`
@ -352,7 +352,7 @@ Feature: `v1_10`
the `Bin` the element was removed from
## `element`
the `Element` that was removed from `sub_bin`
<!-- trait BinExt::fn connect_do_latency -->
<!-- trait GstBinExt::fn connect_do_latency -->
Will be emitted when the bin needs to perform latency calculations. This
signal is only emitted for toplevel bins or when async-handling is
enabled.
@ -364,23 +364,23 @@ possible latency to all sinks.
Connect to this signal if the default latency calculations are not
sufficient, like when you need different latencies for different sinks in
the same pipeline.
<!-- trait BinExt::fn connect_element_added -->
<!-- trait GstBinExt::fn connect_element_added -->
Will be emitted after the element was added to the bin.
## `element`
the `Element` that was added to the bin
<!-- trait BinExt::fn connect_element_removed -->
<!-- trait GstBinExt::fn connect_element_removed -->
Will be emitted after the element was removed from the bin.
## `element`
the `Element` that was removed from the bin
<!-- trait BinExt::fn get_property_async-handling -->
<!-- trait GstBinExt::fn get_property_async-handling -->
If set to `true`, the bin will handle asynchronous state changes.
This should be used only if the bin subclass is modifying the state
of its children on its own.
<!-- trait BinExt::fn set_property_async-handling -->
<!-- trait GstBinExt::fn set_property_async-handling -->
If set to `true`, the bin will handle asynchronous state changes.
This should be used only if the bin subclass is modifying the state
of its children on its own.
<!-- trait BinExt::fn get_property_message-forward -->
<!-- trait GstBinExt::fn get_property_message-forward -->
Forward all children messages, even those that would normally be filtered by
the bin. This can be interesting when one wants to be notified of the EOS
state of individual elements, for example.
@ -389,7 +389,7 @@ The messages are converted to an ELEMENT message with the bin as the
source. The structure of the message is named 'GstBinForwarded' and contains
a field named 'message' of type GST_TYPE_MESSAGE that contains the original
forwarded message.
<!-- trait BinExt::fn set_property_message-forward -->
<!-- trait GstBinExt::fn set_property_message-forward -->
Forward all children messages, even those that would normally be filtered by
the bin. This can be interesting when one wants to be notified of the EOS
state of individual elements, for example.
@ -3887,7 +3887,7 @@ providers.
`true` when all devices will be shown.
<!-- trait DeviceMonitorExt::fn remove_filter -->
Removes a filter from the `DeviceMonitor` using the id that was returned
by `DeviceMonitorExt::add_filter`.
by `DeviceMonitor::add_filter`.
## `filter_id`
the id of the filter
@ -4165,7 +4165,7 @@ For finer control, use `ElementExt::link_pads` and
each element by name.
Each element has a state (see `State`). You can get and set the state
of an element with `ElementExt::get_state` and `ElementExt::set_state`.
of an element with `Element::get_state` and `Element::set_state`.
Setting a state triggers a `StateChange`. To get a string representation
of a `State`, use `Element::state_get_name`.
@ -4298,7 +4298,7 @@ a watch id, which can be used in connection with
<!-- trait ElementExt::fn call_async -->
Calls `func` from another thread and passes `user_data` to it. This is to be
used for cases when a state change has to be performed from a streaming
thread, directly via `ElementExt::set_state` or indirectly e.g. via SEEK
thread, directly via `Element::set_state` or indirectly e.g. via SEEK
events.
Calling those functions directly from the streaming thread will cause
@ -4570,7 +4570,7 @@ the start time of the element.
Gets the state of the element.
For elements that performed an ASYNC state change, as reported by
`ElementExt::set_state`, this function will block up to the
`Element::set_state`, this function will block up to the
specified timeout value for the state change to complete.
If the element completes the state change or goes into
an error, this function returns immediately with a return value of
@ -4672,7 +4672,7 @@ Such pads need to be released manually when unlinking.
If multiple links are possible, only one is established.
Make sure you have added your elements to a bin or pipeline with
`BinExt::add` before trying to link them.
`GstBinExt::add` before trying to link them.
## `dest`
the `Element` containing the destination pad.
@ -4687,7 +4687,7 @@ existing pads that aren't linked yet. It will request new pads if necessary.
If multiple links are possible, only one is established.
Make sure you have added your elements to a bin or pipeline with
`BinExt::add` before trying to link them.
`GstBinExt::add` before trying to link them.
## `dest`
the `Element` containing the destination pad.
## `filter`
@ -4700,7 +4700,7 @@ the `Caps` to filter the link,
<!-- trait ElementExt::fn link_many -->
Chain together a series of elements. Uses `ElementExt::link`.
Make sure you have added your elements to a bin or pipeline with
`BinExt::add` before trying to link them.
`GstBinExt::add` before trying to link them.
## `element_2`
the second `Element` in the link chain.
@ -4754,7 +4754,7 @@ Calling `ElementExt::link_pads_full` with `flags` == `PadLinkCheck::Default`
is the same as calling `ElementExt::link_pads` and the recommended way of
linking pads with safety checks applied.
This is a convenience function for `PadExt::link_full`.
This is a convenience function for `Pad::link_full`.
## `srcpadname`
the name of the `Pad` in source element
or `None` for any pad.
@ -4772,7 +4772,7 @@ the `PadLinkCheck` to be performed when linking pads.
<!-- trait ElementExt::fn lost_state -->
Brings the element to the lost state. The current state of the
element is copied to the pending state so that any call to
`ElementExt::get_state` will return `StateChangeReturn::Async`.
`Element::get_state` will return `StateChangeReturn::Async`.
An ASYNC_START message is posted. If the element was PLAYING, it will
go to PAUSED. The element will be restored to its PLAYING state by
@ -5144,7 +5144,7 @@ the class's state change function for each.
This function can return `StateChangeReturn::Async`, in which case the
element will perform the remainder of the state change asynchronously in
another thread.
An application can use `ElementExt::get_state` to wait for the completion
An application can use `Element::get_state` to wait for the completion
of the state change or it can wait for a `MessageType::AsyncDone` or
`MessageType::StateChanged` on the bus.
@ -5198,7 +5198,7 @@ a new `Pad` has been added to the element. Note that this signal will
usually be emitted from the context of the streaming thread. Also keep in
mind that if you add new elements to the pipeline in the signal handler
you will need to set them to the desired target state with
`ElementExt::set_state` or `ElementExt::sync_state_with_parent`.
`Element::set_state` or `ElementExt::sync_state_with_parent`.
## `new_pad`
the pad that has been added
<!-- trait ElementExt::fn connect_pad_removed -->
@ -7883,7 +7883,7 @@ found under the same name in the base class of `Object` which is `gobject::Objec
(e.g. `gobject::ObjectExt::ref` becomes `GstObjectExt::ref`).
Since `Object` derives from `gobject::InitiallyUnowned`, it also inherits the
floating reference. Be aware that functions such as `BinExt::add` and
floating reference. Be aware that functions such as `GstBinExt::add` and
`ElementExt::add_pad` take ownership of the floating reference.
In contrast to `gobject::Object` instances, `Object` adds a name property. The functions
@ -8332,7 +8332,7 @@ dataflow on the pads.
`gst_pad_get_parent` will retrieve the `Element` that owns the pad.
After two pads are retrieved from an element by `ElementExt::get_static_pad`,
the pads can be linked with `PadExt::link`. (For quick links,
the pads can be linked with `Pad::link`. (For quick links,
you can also use `ElementExt::link`, which will make the obvious
link for you if it's straightforward.). Pads can be unlinked again with
`PadExt::unlink`. `PadExt::get_peer` can be used to check what the pad is
@ -8347,7 +8347,7 @@ properties of the pad and the stream.
To send a `Event` on a pad, use `Pad::send_event` and
`Pad::push_event`. Some events will be sticky on the pad, meaning that
after they pass on the pad they can be queried later with
`PadExt::get_sticky_event` and `PadExt::sticky_events_foreach`.
`PadExt::get_sticky_event` and `Pad::sticky_events_foreach`.
`PadExt::get_current_caps` and `PadExt::has_current_caps` are convenience
functions to query the current sticky CAPS event on a pad.
@ -8355,7 +8355,7 @@ GstElements will use `Pad::push` and `Pad::pull_range` to push out
or pull in a buffer.
The dataflow, events and queries that happen on a pad can be monitored with
probes that can be installed with `PadExt::add_probe`. `PadExt::is_blocked`
probes that can be installed with `Pad::add_probe`. `PadExt::is_blocked`
can be used to check if a block probe is installed on the pad.
`PadExt::is_blocking` checks if the blocking probe is currently blocking the
pad. `Pad::remove_probe` is used to remove a previously installed probe
@ -8366,7 +8366,7 @@ offset will be applied to the running_time of all data passing over the pad.
`PadExt::set_offset` can be used to change the offset.
Convenience functions exist to start, pause and stop the task on a pad with
`PadExt::start_task`, `PadExt::pause_task` and `PadExt::stop_task`
`Pad::start_task`, `PadExt::pause_task` and `PadExt::stop_task`
respectively.
# Implements
@ -8390,8 +8390,7 @@ the `PadDirection` of the pad.
# Returns
a new `Pad`, or `None` in
case of an error.
a new `Pad`.
MT safe.
<!-- impl Pad::fn new_from_static_template -->
@ -8406,8 +8405,7 @@ the name of the pad
# Returns
a new `Pad`, or `None` in
case of an error.
a new `Pad`.
<!-- impl Pad::fn new_from_template -->
Creates a new pad with the given name from the given template.
If name is `None`, a guaranteed unique name (across all pads)
@ -8420,8 +8418,7 @@ the name of the pad
# Returns
a new `Pad`, or `None` in
case of an error.
a new `Pad`.
<!-- impl Pad::fn link_get_name -->
Gets a string representing the given pad-link return.
## `ret`
@ -8452,7 +8449,7 @@ every state that matches `mask`.
Probes are called in groups: First GST_PAD_PROBE_TYPE_BLOCK probes are
called, then others, then finally GST_PAD_PROBE_TYPE_IDLE. The only
exception here are GST_PAD_PROBE_TYPE_IDLE probes that are called
immediately if the pad is already idle while calling `PadExt::add_probe`.
immediately if the pad is already idle while calling `Pad::add_probe`.
In each of the groups, probes are called in the order in which they were
added.
## `mask`
@ -8899,7 +8896,7 @@ MT Safe.
<!-- trait PadExt::fn link_full -->
Links the source pad and the sink pad.
This variant of `PadExt::link` provides a more granular control on the
This variant of `Pad::link` provides a more granular control on the
checks being done when linking. While providing some considerable speedups
the caller of this method must be aware that wrong usage of those flags
can cause severe issues. Refer to the documentation of `PadLinkCheck`
@ -9803,7 +9800,7 @@ the pipeline, use `GstObjectExt::unref` to free its resources including all
added `Element` objects (if not otherwise referenced).
Elements are added and removed from the pipeline using the `Bin`
methods like `BinExt::add` and `BinExt::remove` (see `Bin`).
methods like `GstBinExt::add` and `GstBinExt::remove` (see `Bin`).
Before changing the state of the `Pipeline` (see `Element`) a `Bus`
can be retrieved with `Pipeline::get_bus`. This bus can then be
@ -9818,7 +9815,7 @@ When the `Pipeline` performs the PAUSED to PLAYING state change it will
select a clock for the elements. The clock selection algorithm will by
default select a clock provided by an element that is most upstream
(closest to the source). For live pipelines (ones that return
`StateChangeReturn::NoPreroll` from the `ElementExt::set_state` call) this
`StateChangeReturn::NoPreroll` from the `Element::set_state` call) this
will select the clock provided by the live source. For normal pipelines
this will select a clock provided by the sinks (most likely the audio
sink). If no element provides a clock, a default `SystemClock` is used.
@ -9841,7 +9838,7 @@ in the PLAYING state. This default behaviour can be changed with the
# Implements
[`PipelineExt`](trait.PipelineExt.html), [`BinExt`](trait.BinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
[`PipelineExt`](trait.PipelineExt.html), [`GstBinExt`](trait.GstBinExt.html), [`ElementExt`](trait.ElementExt.html), [`GstObjectExt`](trait.GstObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ChildProxyExt`](trait.ChildProxyExt.html)
<!-- trait PipelineExt -->
Trait containing all `Pipeline` methods.
@ -12330,7 +12327,7 @@ result stream-time
a 1 or -1 on success, 0 on failure.
<!-- enum State -->
The possible states an element can be in. States can be changed using
`ElementExt::set_state` and checked using `ElementExt::get_state`.
`Element::set_state` and checked using `Element::get_state`.
<!-- enum State::variant VoidPending -->
no pending state.
<!-- enum State::variant Null -->
@ -12422,7 +12419,7 @@ they should make sure to go back to real 'PAUSED' state (prerolling for example)
state change from PLAYING to PLAYING. (Since 1.14)
<!-- enum StateChangeReturn -->
The possible return values from a state change function such as
`ElementExt::set_state`. Only `StateChangeReturn::Failure` is a real failure.
`Element::set_state`. Only `StateChangeReturn::Failure` is a real failure.
<!-- enum StateChangeReturn::variant Failure -->
the state change failed
<!-- enum StateChangeReturn::variant Success -->
@ -13595,6 +13592,18 @@ clock.
MT safe.
## `new_clock`
a `Clock`
<!-- enum TagFlag -->
Extra tag flags used when registering tags.
<!-- enum TagFlag::variant Undefined -->
undefined flag
<!-- enum TagFlag::variant Meta -->
tag is meta data
<!-- enum TagFlag::variant Encoded -->
tag is encoded
<!-- enum TagFlag::variant Decoded -->
tag is decoded
<!-- enum TagFlag::variant Count -->
number of tag flags
<!-- struct TagList -->
List of tags and values used to describe media metadata.