pub trait TimelineElementExt: IsA<TimelineElement> + Sealed + 'static {
Show 54 methods
// Provided methods
fn add_child_property(
&self,
pspec: impl AsRef<ParamSpec>,
child: &impl IsA<Object>,
) -> Result<(), BoolError> { ... }
fn copy(&self, deep: bool) -> TimelineElement { ... }
fn edit(
&self,
layers: &[Layer],
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> bool { ... }
fn edit_full(
&self,
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> Result<(), Error> { ... }
fn child_property(&self, property_name: &str) -> Option<Value> { ... }
fn child_property_by_pspec(&self, pspec: impl AsRef<ParamSpec>) -> Value { ... }
fn duration(&self) -> ClockTime { ... }
fn inpoint(&self) -> ClockTime { ... }
fn layer_priority(&self) -> u32 { ... }
fn max_duration(&self) -> Option<ClockTime> { ... }
fn name(&self) -> Option<GString> { ... }
fn natural_framerate(&self) -> Option<(i32, i32)> { ... }
fn parent(&self) -> Option<TimelineElement> { ... }
fn priority(&self) -> u32 { ... }
fn start(&self) -> ClockTime { ... }
fn timeline(&self) -> Option<Timeline> { ... }
fn toplevel_parent(&self) -> TimelineElement { ... }
fn track_types(&self) -> TrackType { ... }
fn list_children_properties(&self) -> Vec<ParamSpec> { ... }
fn lookup_child(&self, prop_name: &str) -> Option<(Object, ParamSpec)> { ... }
fn paste(
&self,
paste_position: ClockTime,
) -> Result<TimelineElement, BoolError> { ... }
fn remove_child_property(
&self,
pspec: impl AsRef<ParamSpec>,
) -> Result<(), BoolError> { ... }
fn ripple(&self, start: ClockTime) -> Result<(), BoolError> { ... }
fn ripple_end(&self, end: ClockTime) -> Result<(), BoolError> { ... }
fn roll_end(&self, end: ClockTime) -> Result<(), BoolError> { ... }
fn roll_start(&self, start: ClockTime) -> Result<(), BoolError> { ... }
fn set_child_property(
&self,
property_name: &str,
value: &Value,
) -> Result<(), BoolError> { ... }
fn set_child_property_by_pspec(
&self,
pspec: impl AsRef<ParamSpec>,
value: &Value,
) { ... }
fn set_child_property_full(
&self,
property_name: &str,
value: &Value,
) -> Result<(), Error> { ... }
fn set_duration(&self, duration: impl Into<Option<ClockTime>>) -> bool { ... }
fn set_inpoint(&self, inpoint: ClockTime) -> bool { ... }
fn set_max_duration(
&self,
maxduration: impl Into<Option<ClockTime>>,
) -> bool { ... }
fn set_name(&self, name: Option<&str>) -> Result<(), BoolError> { ... }
fn set_parent(
&self,
parent: &impl IsA<TimelineElement>,
) -> Result<(), BoolError> { ... }
fn set_priority(&self, priority: u32) -> bool { ... }
fn set_start(&self, start: ClockTime) -> bool { ... }
fn set_timeline(
&self,
timeline: &impl IsA<Timeline>,
) -> Result<(), BoolError> { ... }
fn trim(&self, start: ClockTime) -> Result<(), BoolError> { ... }
fn in_point(&self) -> u64 { ... }
fn set_in_point(&self, in_point: u64) { ... }
fn is_serialize(&self) -> bool { ... }
fn set_serialize(&self, serialize: bool) { ... }
fn connect_child_property_added<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_child_property_removed<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_deep_notify<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId { ... }
fn connect_duration_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_in_point_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_max_duration_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_name_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_parent_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_priority_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_serialize_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_start_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
fn connect_timeline_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId { ... }
}
Expand description
Trait containing all TimelineElement
methods.
§Implementors
Provided Methods§
sourcefn add_child_property(
&self,
pspec: impl AsRef<ParamSpec>,
child: &impl IsA<Object>,
) -> Result<(), BoolError>
fn add_child_property( &self, pspec: impl AsRef<ParamSpec>, child: &impl IsA<Object>, ) -> Result<(), BoolError>
Register a property of a child of the element to allow it to be
written with set_child_property()
and read with
child_property()
. A change in the property
will also appear in the deep-notify
signal.
pspec
should be unique from other children properties that have been
registered on self
.
§pspec
The specification for the property to add
§child
The gst::Object
who the property belongs to
§Returns
true
if the property was successfully registered.
fn copy(&self, deep: bool) -> TimelineElement
sourcefn edit(
&self,
layers: &[Layer],
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> bool
fn edit( &self, layers: &[Layer], new_layer_priority: i64, mode: EditMode, edge: Edge, position: u64, ) -> bool
See edit_full()
, which also gives an error.
Note that the layers
argument is currently ignored, so you should
just pass None
.
§layers
A whitelist of layers
where the edit can be performed, None
allows all layers in the
timeline.
§new_layer_priority
The priority/index of the layer self
should be
moved to. -1 means no move
§mode
The edit mode
§edge
The edge of self
where the edit should occur
§position
The edit position: a new location for the edge of self
(in nanoseconds) in the timeline coordinates
§Returns
sourcefn edit_full(
&self,
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> Result<(), Error>
fn edit_full( &self, new_layer_priority: i64, mode: EditMode, edge: Edge, position: u64, ) -> Result<(), Error>
Edits the element within its timeline by adjusting its
start
, duration
or
in-point
, and potentially doing the same for
other elements in the timeline. See EditMode
for details about each
edit mode. An edit may fail if it would place one of these properties
out of bounds, or if it would place the timeline in an unsupported
configuration.
Note that if you act on a TrackElement
, this will edit its parent
Clip
instead. Moreover, for any TimelineElement
, if you select
Edge::None
for EditMode::Normal
or EditMode::Ripple
, this
will edit the toplevel instead, but still in such a way as to make the
start
of self
reach the edit position
.
Note that if the element’s timeline has a
snapping-distance
set, then the edit position may be
snapped to the edge of some element under the edited element.
new_layer_priority
can be used to switch self
, and other elements
moved by the edit, to a new layer. New layers may be be created if the
the corresponding layer priority/index does not yet exist for the
timeline.
§new_layer_priority
The priority/index of the layer self
should be
moved to. -1 means no move
§mode
The edit mode
§edge
The edge of self
where the edit should occur
§position
The edit position: a new location for the edge of self
(in nanoseconds) in the timeline coordinates
§Returns
sourcefn child_property(&self, property_name: &str) -> Option<Value>
fn child_property(&self, property_name: &str) -> Option<Value>
Gets the property of a child of the element.
property_name
can either be in the format “prop-name” or
“TypeName::prop-name”, where “prop-name” is the name of the property
to get (as used in [ObjectExt::get()
][crate::glib::prelude::ObjectExt::get()]), and “TypeName” is the type name of
the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
useful when two children of different types share the same property
name.
The first child found with the given “prop-name” property that was
registered with add_child_property()
(and of the
type “TypeName”, if it was given) will have the corresponding
property copied into value
.
Note that ges_timeline_element_get_child_properties()
may be more
convenient for C programming.
§property_name
The name of the child property to get
§Returns
true
if the property was found and copied to value
.
§value
The return location for the value
sourcefn child_property_by_pspec(&self, pspec: impl AsRef<ParamSpec>) -> Value
fn child_property_by_pspec(&self, pspec: impl AsRef<ParamSpec>) -> Value
Gets the property of a child of the element. Specifically, the property
corresponding to the pspec
used in
add_child_property()
is copied into value
.
§pspec
The specification of a registered child property to get
§Returns
§value
The return location for the value
sourcefn layer_priority(&self) -> u32
fn layer_priority(&self) -> u32
sourcefn max_duration(&self) -> Option<ClockTime>
fn max_duration(&self) -> Option<ClockTime>
sourcefn natural_framerate(&self) -> Option<(i32, i32)>
fn natural_framerate(&self) -> Option<(i32, i32)>
Get the “natural” framerate of self
. This is to say, for example
for a VideoUriSource
the framerate of the source.
Note that a AudioSource
may also have a natural framerate if it derives
from the same SourceClip
asset as a VideoSource
, and its value will
be that of the video source. For example, if the uri of a UriClip
points
to a file that contains both a video and audio stream, then the corresponding
AudioUriSource
will share the natural framerate of the corresponding
VideoUriSource
.
§Returns
Whether self
has a natural framerate or not, framerate_n
and framerate_d
will be set to, respectively, 0 and -1 if it is
not the case.
§framerate_n
The framerate numerator
§framerate_d
The framerate denominator
sourcefn parent(&self) -> Option<TimelineElement>
fn parent(&self) -> Option<TimelineElement>
sourcefn toplevel_parent(&self) -> TimelineElement
fn toplevel_parent(&self) -> TimelineElement
sourcefn track_types(&self) -> TrackType
fn track_types(&self) -> TrackType
Gets the track types that the element can interact with, i.e. the type
of Track
it can exist in, or will create TrackElement
-s for.
§Returns
The track types that self
supports.
sourcefn list_children_properties(&self) -> Vec<ParamSpec>
fn list_children_properties(&self) -> Vec<ParamSpec>
Get a list of children properties of the element, which is a list of
all the specifications passed to
add_child_property()
.
§Returns
An array of
glib::ParamSpec
corresponding to the child properties of self
, or None
if
something went wrong.
sourcefn lookup_child(&self, prop_name: &str) -> Option<(Object, ParamSpec)>
fn lookup_child(&self, prop_name: &str) -> Option<(Object, ParamSpec)>
Looks up a child property of the element.
prop_name
can either be in the format “prop-name” or
“TypeName::prop-name”, where “prop-name” is the name of the property
to look up (as used in [ObjectExt::get()
][crate::glib::prelude::ObjectExt::get()]), and “TypeName” is the type name
of the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
useful when two children of different types share the same property
name.
The first child found with the given “prop-name” property that was
registered with add_child_property()
(and of the
type “TypeName”, if it was given) will be passed to child
, and the
registered specification of this property will be passed to pspec
.
§prop_name
The name of a child property
§Returns
true
if a child corresponding to the property was found, in
which case child
and pspec
are set.
§child
The return location for the found child
§pspec
The return location for the specification of the child property
sourcefn paste(&self, paste_position: ClockTime) -> Result<TimelineElement, BoolError>
fn paste(&self, paste_position: ClockTime) -> Result<TimelineElement, BoolError>
Paste an element inside the same timeline and layer as self
. self
must be the return of ges_timeline_element_copy()
with deep=TRUE
,
and it should not be changed before pasting.
self
is not placed in the timeline, instead a new element is created,
alike to the originally copied element. Note that the originally
copied element must stay within the same timeline and layer, at both
the point of copying and pasting.
Pasting may fail if it would place the timeline in an unsupported configuration.
After calling this function element
should not be used. In particular,
element
can not be pasted again. Instead, you can copy the
returned element and paste that copy (although, this is only possible
if the paste was successful).
See also TimelineExt::paste_element()
.
§paste_position
The position in the timeline element
should be pasted
to, i.e. the start
value for the pasted element.
§Returns
The newly created element, or
None
if pasting fails.
sourcefn remove_child_property(
&self,
pspec: impl AsRef<ParamSpec>,
) -> Result<(), BoolError>
fn remove_child_property( &self, pspec: impl AsRef<ParamSpec>, ) -> Result<(), BoolError>
Remove a child property from the element. pspec
should be a
specification that was passed to
add_child_property()
. The corresponding property
will no longer be registered as a child property for the element.
§pspec
The specification for the property to remove
§Returns
true
if the property was successfully un-registered for self
.
sourcefn ripple(&self, start: ClockTime) -> Result<(), BoolError>
fn ripple(&self, start: ClockTime) -> Result<(), BoolError>
Edits the start time of an element within its timeline in ripple mode.
See edit()
with EditMode::Ripple
and
Edge::None
.
§start
The new start time of self
in ripple mode
§Returns
true
if the ripple edit of self
completed, false
on
failure.
sourcefn roll_start(&self, start: ClockTime) -> Result<(), BoolError>
fn roll_start(&self, start: ClockTime) -> Result<(), BoolError>
Edits the start time of an element within its timeline in roll mode.
See edit()
with EditMode::Roll
and
Edge::Start
.
§start
The new start time of self
in roll mode
§Returns
sourcefn set_child_property(
&self,
property_name: &str,
value: &Value,
) -> Result<(), BoolError>
fn set_child_property( &self, property_name: &str, value: &Value, ) -> Result<(), BoolError>
See set_child_property_full()
, which also gives an
error.
Note that ges_timeline_element_set_child_properties()
may be more
convenient for C programming.
§property_name
The name of the child property to set
§value
The value to set the property to
§Returns
true
if the property was found and set.
sourcefn set_child_property_by_pspec(
&self,
pspec: impl AsRef<ParamSpec>,
value: &Value,
)
fn set_child_property_by_pspec( &self, pspec: impl AsRef<ParamSpec>, value: &Value, )
Sets the property of a child of the element. Specifically, the property
corresponding to the pspec
used in
add_child_property()
is set to value
.
§pspec
The specification of a registered child property to set
§value
The value to set the property to
sourcefn set_child_property_full(
&self,
property_name: &str,
value: &Value,
) -> Result<(), Error>
fn set_child_property_full( &self, property_name: &str, value: &Value, ) -> Result<(), Error>
Sets the property of a child of the element.
property_name
can either be in the format “prop-name” or
“TypeName::prop-name”, where “prop-name” is the name of the property
to set (as used in [ObjectExt::set()
][crate::glib::prelude::ObjectExt::set()]), and “TypeName” is the type name of
the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
useful when two children of different types share the same property
name.
The first child found with the given “prop-name” property that was
registered with add_child_property()
(and of the
type “TypeName”, if it was given) will have the corresponding
property set to value
. Other children that may have also matched the
property name (and type name) are left unchanged!
§property_name
The name of the child property to set
§value
The value to set the property to
§Returns
true
if the property was found and set.
sourcefn set_duration(&self, duration: impl Into<Option<ClockTime>>) -> bool
fn set_duration(&self, duration: impl Into<Option<ClockTime>>) -> bool
Sets duration
for the element.
Whilst the element is part of a Timeline
, this is the same as
editing the element with edit()
under
EditMode::Trim
with Edge::End
. In particular, the
duration
of the element may be snapped to a
different timeline time difference from the one given. In addition,
setting may fail if it would place the timeline in an unsupported
configuration, or the element does not have enough internal content to
last the desired duration.
§duration
The desired duration in its timeline
§Returns
true
if duration
could be set for self
.
sourcefn set_inpoint(&self, inpoint: ClockTime) -> bool
fn set_inpoint(&self, inpoint: ClockTime) -> bool
Sets in-point
for the element. If the new in-point
is above the current max-duration
of the element,
this method will fail.
§inpoint
The in-point, in internal time coordinates
§Returns
true
if inpoint
could be set for self
.
sourcefn set_max_duration(&self, maxduration: impl Into<Option<ClockTime>>) -> bool
fn set_max_duration(&self, maxduration: impl Into<Option<ClockTime>>) -> bool
Sets max-duration
for the element. If the new
maximum duration is below the current in-point
of
the element, this method will fail.
§maxduration
The maximum duration, in internal time coordinates
§Returns
true
if maxduration
could be set for self
.
sourcefn set_name(&self, name: Option<&str>) -> Result<(), BoolError>
fn set_name(&self, name: Option<&str>) -> Result<(), BoolError>
Sets the name
for the element. If None
is given
for name
, then the library will instead generate a new name based on
the type name of the element, such as the name “uriclip3” for a
UriClip
, and will set that name instead.
If self
already has a timeline
, you should not
call this function with name
set to None
.
You should ensure that, within each Timeline
, every element has a
unique name. If you call this function with name
as None
, then
the library should ensure that the set generated name is unique from
previously generated names. However, if you choose a name
that
interferes with the naming conventions of the library, the library will
attempt to ensure that the generated names will not conflict with the
chosen name, which may lead to a different name being set instead, but
the uniqueness between generated and user-chosen names is not
guaranteed.
§name
The name self
should take
§Returns
true
if name
or a generated name for self
could be set.
sourcefn set_parent(
&self,
parent: &impl IsA<TimelineElement>,
) -> Result<(), BoolError>
fn set_parent( &self, parent: &impl IsA<TimelineElement>, ) -> Result<(), BoolError>
Sets the parent
for the element.
This is used internally and you should normally not call this. A
Container
will set the parent
of its children
in GESContainerExt::add()
and GESContainerExt::remove()
.
Note, if parent
is not None
, self
must not already have a parent
set. Therefore, if you wish to switch parents, you will need to call
this function twice: first to set the parent to None
, and then to the
new parent.
If parent
is not None
, you must ensure it already has a
(non-floating) reference to self
before calling this.
§Returns
true
if parent
could be set for self
.
sourcefn set_priority(&self, priority: u32) -> bool
👎Deprecated: Since 1.10
fn set_priority(&self, priority: u32) -> bool
sourcefn set_start(&self, start: ClockTime) -> bool
fn set_start(&self, start: ClockTime) -> bool
Sets start
for the element. If the element has a
parent, this will also move its siblings with the same shift.
Whilst the element is part of a Timeline
, this is the same as
editing the element with edit()
under
EditMode::Normal
with Edge::None
. In particular, the
start
of the element may be snapped to a different
timeline time from the one given. In addition, setting may fail if it
would place the timeline in an unsupported configuration.
§start
The desired start position of the element in its timeline
§Returns
true
if start
could be set for self
.
sourcefn set_timeline(&self, timeline: &impl IsA<Timeline>) -> Result<(), BoolError>
fn set_timeline(&self, timeline: &impl IsA<Timeline>) -> Result<(), BoolError>
Sets the timeline
of the element.
This is used internally and you should normally not call this. A
Clip
will have its timeline
set through its
Layer
. A Track
will similarly take care of setting the
timeline
of its TrackElement
-s. A Group
will adopt the same timeline
as its children.
If timeline
is None
, this will stop its current
timeline
from tracking it, otherwise timeline
will
start tracking self
. Note, in the latter case, self
must not already
have a timeline set. Therefore, if you wish to switch timelines, you
will need to call this function twice: first to set the timeline to
None
, and then to the new timeline.
§Returns
true
if timeline
could be set for self
.
sourcefn trim(&self, start: ClockTime) -> Result<(), BoolError>
fn trim(&self, start: ClockTime) -> Result<(), BoolError>
Edits the start time of an element within its timeline in trim mode.
See edit()
with EditMode::Trim
and
Edge::Start
.
§start
The new start time of self
in trim mode
§Returns
sourcefn in_point(&self) -> u64
fn in_point(&self) -> u64
The initial offset to use internally when outputting content (in nanoseconds, but in the time coordinates of the internal content).
For example, for a VideoUriSource
that references some media
file, the “internal content” is the media file data, and the
in-point would correspond to some timestamp in the media file.
When playing the timeline, and when the element is first reached at
timeline-time start
, it will begin outputting the
data from the timestamp in-point onwards, until it reaches the
end of its duration
in the timeline.
For elements that have no internal content, this should be kept as 0.
sourcefn set_in_point(&self, in_point: u64)
fn set_in_point(&self, in_point: u64)
The initial offset to use internally when outputting content (in nanoseconds, but in the time coordinates of the internal content).
For example, for a VideoUriSource
that references some media
file, the “internal content” is the media file data, and the
in-point would correspond to some timestamp in the media file.
When playing the timeline, and when the element is first reached at
timeline-time start
, it will begin outputting the
data from the timestamp in-point onwards, until it reaches the
end of its duration
in the timeline.
For elements that have no internal content, this should be kept as 0.
sourcefn is_serialize(&self) -> bool
fn is_serialize(&self) -> bool
Whether the element should be serialized.
sourcefn set_serialize(&self, serialize: bool)
fn set_serialize(&self, serialize: bool)
Whether the element should be serialized.
sourcefn connect_child_property_added<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_child_property_added<F: Fn(&Self, &Object, &ParamSpec) + 'static>( &self, f: F, ) -> SignalHandlerId
Emitted when the element has a new child property registered. See
add_child_property()
.
Note that some GES elements will be automatically created with
pre-registered children properties. You can use
list_children_properties()
to list these.
§prop_object
The child whose property has been registered
§prop
The specification for the property that has been registered
sourcefn connect_child_property_removed<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
f: F,
) -> SignalHandlerId
fn connect_child_property_removed<F: Fn(&Self, &Object, &ParamSpec) + 'static>( &self, f: F, ) -> SignalHandlerId
Emitted when the element has a child property unregistered. See
remove_child_property()
.
§prop_object
The child whose property has been unregistered
§prop
The specification for the property that has been unregistered
sourcefn connect_deep_notify<F: Fn(&Self, &Object, &ParamSpec) + 'static>(
&self,
detail: Option<&str>,
f: F,
) -> SignalHandlerId
fn connect_deep_notify<F: Fn(&Self, &Object, &ParamSpec) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId
Emitted when a child of the element has one of its registered
properties set. See add_child_property()
.
Note that unlike notify
, a child property name can not be
used as a signal detail.
§prop_object
The child whose property has been set
§prop
The specification for the property that been set