Asset in the GStreamer Editing Services represents a resources
that can be used. In particular, any class that implements the
Extractable interface may have some associated assets with a
Asset:extractable-type, from which its objects can be
AssetExt::extract. Some examples would be
BaseEffect is some operation that applies an effect to the data
Clip-s are the core objects of a
Layer. Each clip may exist in
a single layer but may control several
TrackElement-s that span
Track-s. A clip will ensure that all its children share the
their tracks, which will match the
TimelineElement:duration of the clip itself. Therefore, changing
the timing of the clip will change the timing of the children, and a
change in the timing of a child will change the timing of the clip and
subsequently all its siblings. As such, a clip can be treated as a
singular object in its layer.
Container is a timeline element that controls other
TimelineElement-s, which are its children. In particular, it is
responsible for maintaining the relative
TimelineElement:duration times of its children. Therefore, if a
container is temporally adjusted or moved to a new layer, it may
accordingly adjust and move its children. Similarly, a change in one of
its children may prompt the parent to correspondingly change its
Currently we only support effects with N sinkpads and one single srcpad.
gescompositor which 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).
gobject::Object that implements the
Extractable interface can be
extracted from a
Group controls one or more
but it can also control other
Group-s). Its children must share
Timeline, but can otherwise lie in separate
and have different timings.
Layer-s are responsible for collecting and ordering
Operations are any kind of object that both outputs AND consumes data.
Pipeline can take an audio-video
Timeline and conveniently
Track-s to an internal
playsink element, for
preview/playback, and an internal
encodebin element, for rendering.
You can switch between these modes using
The various modes a
Pipeline can be configured to.
Project is used to control a set of
Asset and is a
extractable_type itself. That
means that you can extract
Timeline from a project as followed:
Timeline is the central object for any multimedia timeline.
TimelineElement will have some temporal extent in its
TimelineElement:timeline, controlled by its
determines when its content will be displayed, or its effect applied,
in the timeline. Several objects may overlap within a given
Timeline, in which case their
TimelineElement:priority is used
to determine their ordering in the timeline. Priority is mostly handled
Track acts an output source for a
Timeline. Each one
essentially provides an additional
gst::Pad for the timeline, with
Track:restriction-caps capabilities. Internally, a track
nlecomposition filtered by a
TrackElement is a
TimelineElement that specifically belongs
to a single
Track of its
TimelineElement:duration specify its
temporal extent in the track. Specifically, a track element wraps some
nleobject, such as an
nleoperation, which can be
TrackElementExt::get_nleobject, and its
TrackElement:active properties expose the corresponding nleobject
properties. When a track element is added to a track, its nleobject is
added to the corresponding
nlecomposition that the track wraps.
Types of content handled by a track. If the content is not one of
the user of the
Track must set the type to
Creates an object that mixes together the two underlying objects, A and B.
The A object is assumed to have a higher prioirity (lower number) than the
B object. At the transition in point, only A will be visible, and by the
end only B will be visible.
Represents all the output streams from a particular uri. It is assumed that
the URI points to a file of some type.
Asset to create a stream specific
Source for a media file.