Trait gstreamer_editing_services::prelude::ClipExt[][src]

pub trait ClipExt: 'static {
Show methods fn add_asset<P: IsA<Asset>>(
        &self,
        asset: &P
    ) -> Result<TrackElement, BoolError>;
fn add_child_to_track<P: IsA<TrackElement>, Q: IsA<Track>>(
        &self,
        child: &P,
        track: &Q
    ) -> Result<TrackElement, Error>;
fn add_top_effect<P: IsA<BaseEffect>>(
        &self,
        effect: &P,
        index: i32
    ) -> Result<(), Error>;
fn find_track_element<P: IsA<Track>>(
        &self,
        track: Option<&P>,
        type_: Type
    ) -> Option<TrackElement>;
fn find_track_elements<P: IsA<Track>>(
        &self,
        track: Option<&P>,
        track_type: TrackType,
        type_: Type
    ) -> Vec<TrackElement>;
fn duration_limit(&self) -> ClockTime;
fn internal_time_from_timeline_time<P: IsA<TrackElement>>(
        &self,
        child: &P,
        timeline_time: impl Into<Option<ClockTime>>
    ) -> Result<Option<ClockTime>, Error>;
fn layer(&self) -> Option<Layer>;
fn supported_formats(&self) -> TrackType;
fn timeline_time_from_internal_time<P: IsA<TrackElement>>(
        &self,
        child: &P,
        internal_time: impl Into<Option<ClockTime>>
    ) -> Result<Option<ClockTime>, Error>;
fn timeline_time_from_source_frame(
        &self,
        frame_number: FrameNumber
    ) -> Result<Option<ClockTime>, Error>;
fn top_effect_index<P: IsA<BaseEffect>>(&self, effect: &P) -> i32;
fn top_effect_position<P: IsA<BaseEffect>>(&self, effect: &P) -> i32;
fn top_effects(&self) -> Vec<TrackElement>;
fn move_to_layer<P: IsA<Layer>>(&self, layer: &P) -> Result<(), BoolError>;
fn move_to_layer_full<P: IsA<Layer>>(&self, layer: &P) -> Result<(), Error>;
fn remove_top_effect<P: IsA<BaseEffect>>(
        &self,
        effect: &P
    ) -> Result<(), Error>;
fn set_supported_formats(&self, supportedformats: TrackType);
fn set_top_effect_index<P: IsA<BaseEffect>>(
        &self,
        effect: &P,
        newindex: u32
    ) -> Result<(), BoolError>;
fn set_top_effect_index_full<P: IsA<BaseEffect>>(
        &self,
        effect: &P,
        newindex: u32
    ) -> Result<(), Error>;
fn set_top_effect_priority<P: IsA<BaseEffect>>(
        &self,
        effect: &P,
        newpriority: u32
    ) -> Result<(), BoolError>;
fn split(&self, position: u64) -> Result<Clip, BoolError>;
fn split_full(&self, position: u64) -> Result<Option<Clip>, Error>;
fn connect_duration_limit_notify<F: Fn(&Self) + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId;
fn connect_layer_notify<F: Fn(&Self) + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId;
fn connect_supported_formats_notify<F: Fn(&Self) + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId;
}
Expand description

Trait containing all Clip methods.

Implementors

Clip, OperationClip

Required methods

Extracts a TrackElement from an asset and adds it to the clip. This can be used to add effects that derive from the asset to the clip, but this method is not intended to be used to create the core elements of the clip.

asset

An asset with GES_TYPE_TRACK_ELEMENT as its property::Asset::extractable-type

Returns

The newly created element, or None if an error occurred.

This is supported on crate feature v1_18 only.

Adds the track element child of the clip to a specific track.

If the given child is already in another track, this will create a copy of the child, add it to the clip, and add this copy to the track.

You should only call this whilst a clip is part of a Timeline, and for tracks that are in the same timeline.

This method is an alternative to using the signal::Timeline::select-tracks-for-object signal, but can be used to complement it when, say, you wish to copy a clip’s children from one track into a new one.

When the child is a core child, it must be added to a track that does not already contain another core child of the same clip. If it is not a core child (an additional effect), then it must be added to a track that already contains one of the core children of the same clip.

This method can also fail if the adding the track element to the track would break a configuration rule of the corresponding Timeline, such as causing three sources to overlap at a single time, or causing a source to completely overlap another in the same track.

child

A child of self

track

The track to add child to

Returns

The element that was added to track, either child or a copy of child, or None if the element could not be added.

This is supported on crate feature v1_18 only.

Add a top effect to a clip at the given index.

Unlike using GESContainerExt::add(), this allows you to set the index in advance. It will also check that no error occurred during the track selection for the effect.

Note, only subclasses of GESClipClass that have GES_CLIP_CLASS_CAN_ADD_EFFECTS set to true (such as GESSourceClip and GESBaseEffectClip) can have additional top effects added.

Note, if the effect is a time effect, this may be refused if the clip would not be able to adapt itself once the effect is added.

effect

A top effect to add

index

The index to add effect at, or -1 to add at the highest

Returns

true if effect was successfully added to self at index.

Finds an element controlled by the clip. If track is given, then only the track elements in track are searched for. If type_ is given, then this function searches for a track element of the given type_.

Note, if multiple track elements in the clip match the given criteria, this will return the element amongst them with the highest property::TimelineElement::priority (numerically, the smallest). See find_track_elements() if you wish to find all such elements.

track

The track to search in, or None to search in all tracks

type_

The type of track element to search for, or G_TYPE_NONE to match any type

Returns

The element controlled by self, in track, and of the given type_, or None if no such element could be found.

Finds the TrackElement-s controlled by the clip that match the given criteria. If track is given as None and track_type is given as TrackType::UNKNOWN, then the search will match all elements in any track, including those with no track, and of any property::TrackElement::track-type. Otherwise, if track is not None, but track_type is TrackType::UNKNOWN, then only the track elements in track are searched for. Otherwise, if track_type is not TrackType::UNKNOWN, but track is None, then only the track elements whose property::TrackElement::track-type matches track_type are searched for. Otherwise, when both are given, the track elements that match either criteria are searched for. Therefore, if you wish to only find elements in a specific track, you should give the track as track, but you should not give the track’s property::Track::track-type as track_type because this would also select elements from other tracks of the same type.

You may also give type_ to further restrict the search to track elements of the given type_.

track

The track to search in, or None to search in all tracks

track_type

The track-type of the track element to search for, or TrackType::UNKNOWN to match any track type

type_

The type of track element to search for, or G_TYPE_NONE to match any type

Returns

A list of all the TrackElement-s controlled by self, in track or of the given track_type, and of the given type_.

This is supported on crate feature v1_18 only.

Gets the property::Clip::duration-limit of the clip.

Returns

The duration-limit of self.

This is supported on crate feature v1_18 only.

Convert the timeline time to an internal source time of the child. This will take any time effects placed on the clip into account (see BaseEffect for what time effects are supported, and how to declare them in GES).

When timeline_time is above the property::TimelineElement::start of self, this will return the internal time at which the content that appears at timeline_time in the output of the timeline is created in child. For example, if timeline_time corresponds to the current seek position, this would let you know which part of a media file is being read.

This will be done assuming the clip has an indefinite end, so the internal time may be beyond the current out-point of the child, or even its property::TimelineElement::max-duration.

If, instead, timeline_time is below the current property::TimelineElement::start of self, this will return what you would need to set the property::TimelineElement::in-point of child to if you set the property::TimelineElement::start of self to timeline_time and wanted to keep the content of child currently found at the current property::TimelineElement::start of self at the same timeline position. If this would be negative, the conversion fails. This is useful for determining what property::TimelineElement::in-point would result from a EditMode::Trim to timeline_time.

Note that whilst a clip has no time effects, this second return is equivalent to finding the internal time at which the content that appears at timeline_time in the timeline can be found in child if it had indefinite extent in both directions. However, with non-linear time effects this second return will be more distinct.

In either case, the returned time would be appropriate to use for the property::TimelineElement::in-point or property::TimelineElement::max-duration of the child.

See timeline_time_from_internal_time(), which performs the reverse.

child

An property::TrackElement::active child of self with a property::TrackElement::track

timeline_time

A time in the timeline time coordinates

Returns

The time in the internal coordinates of child corresponding to timeline_time, or GST_CLOCK_TIME_NONE if the conversion could not be performed.

This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.

Implementors

This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.
This is supported on crate feature v1_18 only.