forked from mirrors/gstreamer-rs
2623 lines
90 KiB
Markdown
2623 lines
90 KiB
Markdown
<!-- file * -->
|
|
<!-- struct Asset -->
|
|
The Assets in the GStreamer Editing Services represent the resources
|
|
that can be used. You can create assets for any type that implements the `Extractable`
|
|
interface, for example `GESClips`, `Formatter`, and `TrackElement` do implement it.
|
|
This means that assets will represent for example a `GESUriClips`, `BaseEffect` etc,
|
|
and then you can extract objects of those types with the appropriate parameters from the asset
|
|
using the `AssetExt::extract` method:
|
|
|
|
|
|
```text
|
|
GESAsset *effect_asset;
|
|
GESEffect *effect;
|
|
|
|
// You create an asset for an effect
|
|
effect_asset = ges_asset_request (GES_TYPE_EFFECT, "agingtv", NULL);
|
|
|
|
// And now you can extract an instance of GESEffect from that asset
|
|
effect = GES_EFFECT (ges_asset_extract (effect_asset));
|
|
|
|
```
|
|
|
|
In that example, the advantages of having a `Asset` are that you can know what effects
|
|
you are working with and let your user know about the avalaible ones, you can add metadata
|
|
to the `Asset` through the `MetaContainer` interface and you have a model for your
|
|
custom effects. Note that `Asset` management is making easier thanks to the `Project` class.
|
|
|
|
Each asset is represented by a pair of `extractable_type` and `id` (string). Actually the `extractable_type`
|
|
is the type that implements the `Extractable` interface, that means that for example for a `UriClip`,
|
|
the type that implements the `Extractable` interface is `Clip`.
|
|
The identifier represents different things depending on the `extractable_type` and you should check
|
|
the documentation of each type to know what the ID of `Asset` actually represents for that type. By default,
|
|
we only have one `Asset` per type, and the `id` is the name of the type, but this behaviour is overriden
|
|
to be more useful. For example, for GESTransitionClips, the ID is the vtype of the transition
|
|
you will extract from it (ie crossfade, box-wipe-rc etc..) For `Effect` the ID is the
|
|
`bin`-description property of the extracted objects (ie the gst-launch style description of the bin that
|
|
will be used).
|
|
|
|
Each and every `Asset` is cached into GES, and you can query those with the `ges_list_assets` function.
|
|
Also the system will automatically register `GESAssets` for `GESFormatters` and `GESTransitionClips`
|
|
and standard effects (actually not implemented yet) and you can simply query those calling:
|
|
|
|
```text
|
|
GList *formatter_assets, *tmp;
|
|
|
|
// List all the transitions
|
|
formatter_assets = ges_list_assets (GES_TYPE_FORMATTER);
|
|
|
|
// Print some infos about the formatter GESAsset
|
|
for (tmp = formatter_assets; tmp; tmp = tmp->next) {
|
|
g_print ("Name of the formatter: %s, file extension it produces: %s",
|
|
ges_meta_container_get_string (GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_NAME),
|
|
ges_meta_container_get_string (GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_EXTENSION));
|
|
}
|
|
|
|
g_list_free (transition_assets);
|
|
|
|
```
|
|
|
|
You can request the creation of `GESAssets` using either `Asset::request` or
|
|
`Asset::request_async`. All the `GESAssets` are cached and thus any asset that has already
|
|
been created can be requested again without overhead.
|
|
|
|
# Implements
|
|
|
|
[`AssetExt`](trait.AssetExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait AssetExt -->
|
|
Trait containing all `Asset` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Asset`](struct.Asset.html), [`Project`](struct.Project.html)
|
|
<!-- impl Asset::fn needs_reload -->
|
|
Sets an asset from the internal cache as needing reload. An asset needs reload
|
|
in the case where, for example, we were missing a GstPlugin to use it and that
|
|
plugin has been installed, or, that particular asset content as changed
|
|
meanwhile (in the case of the usage of proxies).
|
|
|
|
Once an asset has been set as "needs reload", requesting that asset again
|
|
will lead to it being re discovered, and reloaded as if it was not in the
|
|
cache before.
|
|
## `extractable_type`
|
|
The `glib::Type` of the object that can be extracted from the
|
|
asset to be reloaded.
|
|
## `id`
|
|
The identifier of the asset to mark as needing reload
|
|
|
|
# Returns
|
|
|
|
`true` if the asset was in the cache and could be set as needing reload,
|
|
`false` otherwise.
|
|
<!-- impl Asset::fn request -->
|
|
Create a `Asset` in the most simple cases, you should look at the `extractable_type`
|
|
documentation to see if that constructor can be called for this particular type
|
|
|
|
As it is recommanded not to instanciate assets for GESUriClip synchronously,
|
|
it will not work with this method, but you can instead use the specific
|
|
`UriClipAsset::request_sync` method if you really want to.
|
|
## `extractable_type`
|
|
The `glib::Type` of the object that can be extracted from the new asset.
|
|
## `id`
|
|
The Identifier or `None`
|
|
|
|
# Returns
|
|
|
|
A reference to the wanted `Asset` or `None`
|
|
<!-- impl Asset::fn request_async -->
|
|
The `callback` will be called from a running `glib::MainLoop` which is iterating a `glib::MainContext`.
|
|
Note that, users should ensure the `glib::MainContext`, since this method will notify
|
|
`callback` from the thread which was associated with a thread default
|
|
`glib::MainContext` at calling `ges_init`.
|
|
For example, if a user wants non-default `glib::MainContext` to be associated
|
|
with `callback`, `ges_init` must be called after g_main_context_push_thread_default ()
|
|
with custom `glib::MainContext`.
|
|
|
|
Request a new `Asset` asyncronously, `callback` will be called when the materail is
|
|
ready to be used or if an error occured.
|
|
|
|
Example of request of a GESAsset async:
|
|
|
|
```text
|
|
// The request callback
|
|
static void
|
|
asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
|
|
{
|
|
GESAsset *asset;
|
|
GError *error = NULL;
|
|
|
|
asset = ges_asset_request_finish (res, &error);
|
|
if (asset) {
|
|
g_print ("The file: %s is usable as a FileSource",
|
|
ges_asset_get_id (asset));
|
|
} else {
|
|
g_print ("The file: %s is *not* usable as a FileSource because: %s",
|
|
ges_asset_get_id (source), error->message);
|
|
}
|
|
|
|
gst_object_unref (mfs);
|
|
}
|
|
|
|
// The request:
|
|
ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL,
|
|
(GAsyncReadyCallback) asset_loaded_cb, user_data);
|
|
```
|
|
## `extractable_type`
|
|
The `glib::Type` of the object that can be extracted from the
|
|
new asset. The class must implement the `Extractable` interface.
|
|
## `id`
|
|
The Identifier of the asset we want to create. This identifier depends of the extractable,
|
|
type you want. By default it is the name of the class itself (or `None`), but for example for a
|
|
GESEffect, it will be the pipeline description, for a GESUriClip it
|
|
will be the name of the file, etc... You should refer to the documentation of the `Extractable`
|
|
type you want to create a `Asset` for.
|
|
## `cancellable`
|
|
optional `gio::Cancellable` object, `None` to ignore.
|
|
## `callback`
|
|
a `GAsyncReadyCallback` to call when the initialization is finished,
|
|
Note that the `source` of the callback will be the `Asset`, but you need to
|
|
make sure that the asset is properly loaded using the `Asset::request_finish`
|
|
method. This asset can not be used as is.
|
|
## `user_data`
|
|
The user data to pass when `callback` is called
|
|
<!-- impl Asset::fn request_finish -->
|
|
Finalize the request of an async `Asset`
|
|
## `res`
|
|
The `gio::AsyncResult` from which to get the newly created `Asset`
|
|
|
|
# Returns
|
|
|
|
The `Asset` previously requested
|
|
<!-- trait AssetExt::fn extract -->
|
|
Extracts a new `gobject::Object` from `asset`. The type of the object is
|
|
defined by the extractable-type of `asset`, you can check what
|
|
type will be extracted from `asset` using
|
|
`AssetExt::get_extractable_type`
|
|
|
|
# Returns
|
|
|
|
A newly created `Extractable`
|
|
<!-- trait AssetExt::fn get_error -->
|
|
|
|
# Returns
|
|
|
|
The `glib::Error` of the asset or `None` if
|
|
the asset was loaded without issue
|
|
<!-- trait AssetExt::fn get_extractable_type -->
|
|
Gets the type of object that can be extracted from `self`
|
|
|
|
# Returns
|
|
|
|
the type of object that can be extracted from `self`
|
|
<!-- trait AssetExt::fn get_id -->
|
|
Gets the ID of a `Asset`
|
|
|
|
# Returns
|
|
|
|
The ID of `self`
|
|
<!-- trait AssetExt::fn get_proxy -->
|
|
|
|
# Returns
|
|
|
|
The proxy in use for `self`
|
|
<!-- trait AssetExt::fn get_proxy_target -->
|
|
|
|
# Returns
|
|
|
|
The `Asset` that is proxied by `self`
|
|
<!-- trait AssetExt::fn list_proxies -->
|
|
|
|
# Returns
|
|
|
|
The list of proxies `self` has. Note that the default asset to be
|
|
used is always the first in that list.
|
|
<!-- trait AssetExt::fn set_proxy -->
|
|
A proxying asset is an asset that can substitue the real `self`. For example if you
|
|
have a full HD `UriClipAsset` you might want to set a lower resolution (HD version
|
|
of the same file) as proxy. Note that when an asset is proxied, calling
|
|
`Asset::request` will actually return the proxy asset.
|
|
## `proxy`
|
|
The `Asset` that should be used as default proxy for `self` or
|
|
`None` if you want to use the currently set proxy. Note that an asset can proxy one and only
|
|
one other asset.
|
|
|
|
# Returns
|
|
|
|
`true` if `proxy` has been set on `self`, `false` otherwise.
|
|
<!-- trait AssetExt::fn unproxy -->
|
|
Removes `proxy` from the list of known proxies for `self`.
|
|
If `proxy` was the current proxy for `self`, stop using it.
|
|
## `proxy`
|
|
The `Asset` to stop considering as a proxy for `self`
|
|
|
|
# Returns
|
|
|
|
`true` if `proxy` was a known proxy for `self`, `false` otherwise.
|
|
<!-- struct BaseEffect -->
|
|
|
|
|
|
# Implements
|
|
|
|
[`TrackElementExt`](trait.TrackElementExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- struct Clip -->
|
|
A `Clip` is a 'natural' object which controls one or more
|
|
`TrackElement`(s) in one or more `Track`(s).
|
|
|
|
Keeps a reference to the `TrackElement`(s) it created and
|
|
sets/updates their properties.
|
|
|
|
# Implements
|
|
|
|
[`ClipExt`](trait.ClipExt.html), [`GESContainerExt`](trait.GESContainerExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait ClipExt -->
|
|
Trait containing all `Clip` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Clip`](struct.Clip.html)
|
|
<!-- trait ClipExt::fn add_asset -->
|
|
Extracts a `TrackElement` from `asset` and adds it to the `self`.
|
|
Should only be called in order to add operations to a `Clip`,
|
|
ni other cases TrackElement are added automatically when adding the
|
|
`Clip`/`Asset` to a layer.
|
|
|
|
Takes a reference on `track_element`.
|
|
## `asset`
|
|
a `Asset` with `GES_TYPE_TRACK_ELEMENT` as extractable_type
|
|
|
|
# Returns
|
|
|
|
Created `TrackElement` or NULL
|
|
if an error happened
|
|
<!-- trait ClipExt::fn find_track_element -->
|
|
Finds the `TrackElement` controlled by `self` that is used in `track`. You
|
|
may optionally specify a GType to further narrow search criteria.
|
|
|
|
Note: If many objects match, then the one with the highest priority will be
|
|
returned.
|
|
## `track`
|
|
a `Track` or NULL
|
|
## `type_`
|
|
a `glib::Type` indicating the type of track element you are looking
|
|
for or `G_TYPE_NONE` if you do not care about the track type.
|
|
|
|
# Returns
|
|
|
|
The `TrackElement` used by `track`,
|
|
else `None`. Unref after usage
|
|
<!-- trait ClipExt::fn find_track_elements -->
|
|
Finds all the `TrackElement` controlled by `self` that is used in `track`. You
|
|
may optionally specify a GType to further narrow search criteria.
|
|
## `track`
|
|
a `Track` or NULL
|
|
## `track_type`
|
|
a `TrackType` indicating the type of tracks in which elements
|
|
should be searched.
|
|
## `type_`
|
|
a `glib::Type` indicating the type of track element you are looking
|
|
for or `G_TYPE_NONE` if you do not care about the track type.
|
|
|
|
# Returns
|
|
|
|
a `glib::List` of the
|
|
`TrackElement` contained in `self`.
|
|
The refcount of the objects will be increased. The user will have to
|
|
unref each `TrackElement` and free the `glib::List`.
|
|
<!-- trait ClipExt::fn get_layer -->
|
|
Get the `Layer` to which this clip belongs.
|
|
|
|
# Returns
|
|
|
|
The `Layer` where this `self` is being
|
|
used, or `None` if it is not used on any layer. The caller should unref it
|
|
usage.
|
|
<!-- trait ClipExt::fn get_supported_formats -->
|
|
Get the formats supported by `self`.
|
|
|
|
# Returns
|
|
|
|
The formats supported by `self`.
|
|
<!-- trait ClipExt::fn get_top_effect_index -->
|
|
Gets the index position of an effect.
|
|
## `effect`
|
|
The `BaseEffect` we want to get the top index from
|
|
|
|
# Returns
|
|
|
|
The top index of the effect, -1 if something went wrong.
|
|
<!-- trait ClipExt::fn get_top_effects -->
|
|
Get effects applied on `self`
|
|
|
|
# Returns
|
|
|
|
a `glib::List` of the
|
|
`BaseEffect` that are applied on `self` order by ascendant priorities.
|
|
The refcount of the objects will be increased. The user will have to
|
|
unref each `BaseEffect` and free the `glib::List`.
|
|
<!-- trait ClipExt::fn move_to_layer -->
|
|
Moves `self` to `layer`. If `self` is not in any layer, it adds it to
|
|
`layer`, else, it removes it from its current layer, and adds it to `layer`.
|
|
## `layer`
|
|
the new `Layer`
|
|
|
|
# Returns
|
|
|
|
`true` if `self` could be moved `false` otherwize
|
|
<!-- trait ClipExt::fn set_supported_formats -->
|
|
Sets the formats supported by the file.
|
|
## `supportedformats`
|
|
the `TrackType` defining formats supported by `self`
|
|
<!-- trait ClipExt::fn set_top_effect_index -->
|
|
This is a convenience method that lets you set the index of a top effect.
|
|
## `effect`
|
|
The `BaseEffect` to move
|
|
## `newindex`
|
|
the new index at which to move the `effect` inside this
|
|
`Clip`
|
|
|
|
# Returns
|
|
|
|
`true` if `effect` was successfuly moved, `false` otherwise.
|
|
<!-- trait ClipExt::fn split -->
|
|
The function modifies `self`, and creates another `Clip` so we have two
|
|
clips at the end, splitted at the time specified by `position`, as a position
|
|
in the timeline (not in the clip to be split). For example, if
|
|
ges_clip_split is called on a 4-second clip playing from 0:01.00 until
|
|
0:05.00, with a split position of 0:02.00, this will result in one clip of 1
|
|
second and one clip of 3 seconds, not in two clips of 2 seconds.
|
|
|
|
The newly created clip will be added to the same layer as `self` is in. This
|
|
implies that `self` must be in a `Layer` for the operation to be possible.
|
|
|
|
This method supports clips playing at a different tempo than one second per
|
|
second. For example, splitting a clip with a `Effect` 'pitch tempo=1.5'
|
|
four seconds after it starts, will set the inpoint of the new clip to six
|
|
seconds after that of the clip to split. For this, the rate-changing
|
|
property must be registered using `EffectClass::register_rate_property`;
|
|
for the 'pitch' plugin, this is already done.
|
|
## `position`
|
|
a `gst::ClockTime` representing the timeline position at which to split
|
|
|
|
# Returns
|
|
|
|
The newly created `Clip` resulting
|
|
from the splitting or `None` if the clip can't be split.
|
|
<!-- trait ClipExt::fn get_property_layer -->
|
|
The GESLayer where this clip is being used. If you want to connect to its
|
|
notify signal you should connect to it with g_signal_connect_after as the
|
|
signal emission can be stop in the first fase.
|
|
<!-- trait ClipExt::fn get_property_supported-formats -->
|
|
The formats supported by the clip.
|
|
<!-- trait ClipExt::fn set_property_supported-formats -->
|
|
The formats supported by the clip.
|
|
<!-- struct Container -->
|
|
The `Container` base class.
|
|
|
|
# Implements
|
|
|
|
[`GESContainerExt`](trait.GESContainerExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait GESContainerExt -->
|
|
Trait containing all `Container` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Clip`](struct.Clip.html), [`Container`](struct.Container.html), [`Group`](struct.Group.html)
|
|
<!-- impl Container::fn group -->
|
|
Groups the `Container`-s provided in `containers`. It creates a subclass
|
|
of `Container`, depending on the containers provided in `containers`.
|
|
Basically, if all the containers in `containers` should be contained in a same
|
|
clip (all the `TrackElement` they contain have the exact same
|
|
start/inpoint/duration and are in the same layer), it will create a `Clip`
|
|
otherwise a `Group` will be created
|
|
## `containers`
|
|
The
|
|
`Container` to group, they must all be in a same `Timeline`
|
|
|
|
# Returns
|
|
|
|
The `Container` (subclass) resulting of the
|
|
grouping
|
|
<!-- trait GESContainerExt::fn add -->
|
|
Add the `TimelineElement` to the container.
|
|
## `child`
|
|
the `TimelineElement`
|
|
|
|
# Returns
|
|
|
|
`true` on success, `false` on failure.
|
|
<!-- trait GESContainerExt::fn edit -->
|
|
Edit `self` in the different exisiting `EditMode` modes. In the case of
|
|
slide, and roll, you need to specify a `Edge`
|
|
## `layers`
|
|
The layers you want the edit to
|
|
happen in, `None` means that the edition is done in all the
|
|
`GESLayers` contained in the current timeline.
|
|
## `new_layer_priority`
|
|
The priority of the layer `self` should land in.
|
|
If the layer you're trying to move the container to doesn't exist, it will
|
|
be created automatically. -1 means no move.
|
|
## `mode`
|
|
The `EditMode` in which the editition will happen.
|
|
## `edge`
|
|
The `Edge` the edit should happen on.
|
|
## `position`
|
|
The position at which to edit `self` (in nanosecond)
|
|
|
|
# Returns
|
|
|
|
`true` if the container as been edited properly, `false` if an error
|
|
occured
|
|
<!-- trait GESContainerExt::fn get_children -->
|
|
Get the list of `TimelineElement` contained in `self`
|
|
The user is responsible for unreffing the contained objects
|
|
and freeing the list.
|
|
## `recursive`
|
|
Whether to recursively get children in `self`
|
|
|
|
# Returns
|
|
|
|
The list of
|
|
timeline element contained in `self`.
|
|
<!-- trait GESContainerExt::fn remove -->
|
|
Release the `child` from the control of `self`.
|
|
## `child`
|
|
the `TimelineElement` to release
|
|
|
|
# Returns
|
|
|
|
`true` if the `child` was properly released, else `false`.
|
|
<!-- trait GESContainerExt::fn ungroup -->
|
|
Ungroups the `TimelineElement` contained in this GESContainer,
|
|
creating new `Container` containing those `TimelineElement`
|
|
apropriately.
|
|
## `recursive`
|
|
Wether to recursively ungroup `self`
|
|
|
|
# Returns
|
|
|
|
The list of
|
|
`Container` resulting from the ungrouping operation
|
|
The user is responsible for unreffing the contained objects
|
|
and freeing the list.
|
|
<!-- trait GESContainerExt::fn connect_child_added -->
|
|
Will be emitted after a child was added to `container`.
|
|
Usually you should connect with `g_signal_connect_after`
|
|
as in the first emission stage, the signal emission might
|
|
get stopped internally.
|
|
## `element`
|
|
the `TimelineElement` that was added.
|
|
<!-- trait GESContainerExt::fn connect_child_removed -->
|
|
Will be emitted after a child was removed from `container`.
|
|
## `element`
|
|
the `TimelineElement` that was removed.
|
|
<!-- trait GESContainerExt::fn get_property_height -->
|
|
The span of priorities which this container occupies.
|
|
<!-- enum Edge -->
|
|
The edges of an object contain in a `Timeline` or `Track`
|
|
<!-- enum Edge::variant EdgeStart -->
|
|
Represents the start of an object.
|
|
<!-- enum Edge::variant EdgeEnd -->
|
|
Represents the end of an object.
|
|
<!-- enum Edge::variant EdgeNone -->
|
|
Represent the fact we are not workin with any edge of an
|
|
object.
|
|
<!-- enum EditMode -->
|
|
You can also find more explanation about the behaviour of those modes at:
|
|
<ulink url="http://pitivi.org/manual/trimming.html"> trim, ripple and roll`</ulink>`
|
|
and <ulink url="http://pitivi.org/manual/usingclips.html">clip management`</ulink>`.
|
|
<!-- enum EditMode::variant EditNormal -->
|
|
The object is edited the normal way (default).
|
|
<!-- enum EditMode::variant EditRipple -->
|
|
The objects are edited in ripple mode.
|
|
The Ripple mode allows you to modify the beginning/end of a clip
|
|
and move the neighbours accordingly. This will change the overall
|
|
timeline duration. In the case of ripple end, the duration of the
|
|
clip being rippled can't be superior to its max_duration - inpoint
|
|
otherwise the action won't be executed.
|
|
<!-- enum EditMode::variant EditRoll -->
|
|
The object is edited in roll mode.
|
|
The Roll mode allows you to modify the position of an editing point
|
|
between two clips without modifying the inpoint of the first clip
|
|
nor the out-point of the second clip. This will not change the
|
|
overall timeline duration.
|
|
<!-- enum EditMode::variant EditTrim -->
|
|
The object is edited in trim mode.
|
|
The Trim mode allows you to modify the in-point/duration of a clip
|
|
without modifying its position in the timeline.
|
|
<!-- enum EditMode::variant EditSlide -->
|
|
The object is edited in slide mode.
|
|
The Slide mode allows you to modify the position of a clip in a
|
|
timeline without modifying its duration or its in-point, but will
|
|
modify the duration of the previous clip and in-point of the
|
|
following clip so does not modify the overall timeline duration.
|
|
(not implemented yet)
|
|
<!-- struct Effect -->
|
|
|
|
|
|
# Implements
|
|
|
|
[`EffectExt`](trait.EffectExt.html), [`BaseEffectExt`](trait.BaseEffectExt.html), [`TrackElementExt`](trait.TrackElementExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait EffectExt -->
|
|
Trait containing all `Effect` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Effect`](struct.Effect.html)
|
|
<!-- impl Effect::fn new -->
|
|
Creates a new `Effect` from the description of the bin. It should be
|
|
possible to determine the type of the effect through the element
|
|
'klass' metadata of the GstElements that will be created.
|
|
In that corner case, you should use:
|
|
`Asset::request` (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL);
|
|
and extract that asset to be in full control.
|
|
## `bin_description`
|
|
The gst-launch like bin description of the effect
|
|
|
|
# Returns
|
|
|
|
a newly created `Effect`, or `None` if something went
|
|
wrong.
|
|
<!-- trait EffectExt::fn get_property_bin-description -->
|
|
The description of the effect bin with a gst-launch-style
|
|
pipeline description.
|
|
|
|
Example: "videobalance saturation=1.5 hue=+0.5"
|
|
<!-- trait EffectExt::fn set_property_bin-description -->
|
|
The description of the effect bin with a gst-launch-style
|
|
pipeline description.
|
|
|
|
Example: "videobalance saturation=1.5 hue=+0.5"
|
|
<!-- struct Extractable -->
|
|
FIXME: Long description needed
|
|
|
|
# Implements
|
|
|
|
[`ExtractableExt`](trait.ExtractableExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait ExtractableExt -->
|
|
Trait containing all `Extractable` methods.
|
|
|
|
# Implementors
|
|
|
|
[`BaseEffect`](struct.BaseEffect.html), [`Clip`](struct.Clip.html), [`Container`](struct.Container.html), [`Effect`](struct.Effect.html), [`Extractable`](struct.Extractable.html), [`Group`](struct.Group.html), [`Layer`](struct.Layer.html), [`TimelineElement`](struct.TimelineElement.html), [`Timeline`](struct.Timeline.html), [`TrackElement`](struct.TrackElement.html), [`UriClip`](struct.UriClip.html)
|
|
<!-- trait ExtractableExt::fn get_asset -->
|
|
Method for getting an asset from a `Extractable`
|
|
|
|
# Returns
|
|
|
|
The `Asset` or `None` if none has
|
|
been set
|
|
<!-- trait ExtractableExt::fn get_id -->
|
|
|
|
# Returns
|
|
|
|
The `id` of the associated `Asset`, free with `g_free`
|
|
<!-- trait ExtractableExt::fn set_asset -->
|
|
Method to set the asset which instantiated the specified object
|
|
## `asset`
|
|
The `Asset` to set
|
|
|
|
# Returns
|
|
|
|
`true` if `asset` could be set `false` otherwize
|
|
<!-- struct Group -->
|
|
A `Group` is an object which controls one or more
|
|
`GESClips` in one or more `Layer`(s).
|
|
|
|
To instanciate a group, you should use the ges_container_group method,
|
|
this will be responsible for deciding what subclass of `Container`
|
|
should be instaciated to group the various `TimelineElement` passed
|
|
in parametter.
|
|
|
|
# Implements
|
|
|
|
[`GroupExt`](trait.GroupExt.html), [`GESContainerExt`](trait.GESContainerExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait GroupExt -->
|
|
Trait containing all `Group` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Group`](struct.Group.html)
|
|
<!-- impl Group::fn new -->
|
|
Created a new empty `Group`, if you want to group several container
|
|
together, it is recommanded to use the `Container::group` method so the
|
|
proper subclass is selected.
|
|
|
|
# Returns
|
|
|
|
The new empty group.
|
|
<!-- trait GroupExt::fn get_property_duration -->
|
|
The duration (in nanoseconds) which will be used in the container
|
|
<!-- trait GroupExt::fn set_property_duration -->
|
|
The duration (in nanoseconds) which will be used in the container
|
|
<!-- trait GroupExt::fn get_property_in-point -->
|
|
The in-point at which this `Group` will start outputting data
|
|
from its contents (in nanoseconds).
|
|
|
|
Ex : an in-point of 5 seconds means that the first outputted buffer will
|
|
be the one located 5 seconds in the controlled resource.
|
|
<!-- trait GroupExt::fn set_property_in-point -->
|
|
The in-point at which this `Group` will start outputting data
|
|
from its contents (in nanoseconds).
|
|
|
|
Ex : an in-point of 5 seconds means that the first outputted buffer will
|
|
be the one located 5 seconds in the controlled resource.
|
|
<!-- trait GroupExt::fn get_property_max-duration -->
|
|
The maximum duration (in nanoseconds) of the `Group`.
|
|
<!-- trait GroupExt::fn set_property_max-duration -->
|
|
The maximum duration (in nanoseconds) of the `Group`.
|
|
<!-- trait GroupExt::fn get_property_start -->
|
|
The position of the object in its container (in nanoseconds).
|
|
<!-- trait GroupExt::fn set_property_start -->
|
|
The position of the object in its container (in nanoseconds).
|
|
<!-- struct Layer -->
|
|
Responsible for the ordering of the various contained Clip(s). A
|
|
timeline layer has a "priority" property, which is used to manage the
|
|
priorities of individual Clips. Two layers should not have the
|
|
same priority within a given timeline.
|
|
|
|
# Implements
|
|
|
|
[`LayerExt`](trait.LayerExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait LayerExt -->
|
|
Trait containing all `Layer` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Layer`](struct.Layer.html)
|
|
<!-- impl Layer::fn new -->
|
|
Creates a new `Layer`.
|
|
|
|
# Returns
|
|
|
|
A new `Layer`
|
|
<!-- trait LayerExt::fn add_asset -->
|
|
Creates Clip from asset, adds it to layer and
|
|
returns a reference to it.
|
|
## `asset`
|
|
The asset to add to
|
|
## `start`
|
|
The start value to set on the new `Clip`,
|
|
if `start` == GST_CLOCK_TIME_NONE, it will be set to
|
|
the current duration of `self`
|
|
## `inpoint`
|
|
The inpoint value to set on the new `Clip`
|
|
## `duration`
|
|
The duration value to set on the new `Clip`
|
|
## `track_types`
|
|
The `TrackType` to set on the the new `Clip`
|
|
|
|
# Returns
|
|
|
|
Created `Clip`
|
|
<!-- trait LayerExt::fn add_clip -->
|
|
Adds the given clip to the layer. Sets the clip's parent, and thus
|
|
takes ownership of the clip.
|
|
|
|
An clip can only be added to one layer.
|
|
|
|
Calling this method will construct and properly set all the media related
|
|
elements on `clip`. If you need to know when those objects (actually `TrackElement`)
|
|
are constructed, you should connect to the container::child-added signal which
|
|
is emited right after those elements are ready to be used.
|
|
## `clip`
|
|
the `Clip` to add.
|
|
|
|
# Returns
|
|
|
|
`true` if the clip was properly added to the layer, or `false`
|
|
if the `self` refuses to add the clip.
|
|
<!-- trait LayerExt::fn get_auto_transition -->
|
|
Gets whether transitions are automatically added when objects
|
|
overlap or not.
|
|
|
|
# Returns
|
|
|
|
`true` if transitions are automatically added, else `false`.
|
|
<!-- trait LayerExt::fn get_clips -->
|
|
Get the clips this layer contains.
|
|
|
|
# Returns
|
|
|
|
a `glib::List` of
|
|
clips. The user is responsible for
|
|
unreffing the contained objects and freeing the list.
|
|
<!-- trait LayerExt::fn get_clips_in_interval -->
|
|
Gets the clips which appear between `start` and `end` on `self`.
|
|
## `start`
|
|
start of the interval
|
|
## `end`
|
|
end of the interval
|
|
|
|
# Returns
|
|
|
|
a `glib::List` of clips intersecting [`start`, `end`) interval on `self`.
|
|
<!-- trait LayerExt::fn get_duration -->
|
|
Lets you retrieve the duration of the layer, which means
|
|
the end time of the last clip inside it
|
|
|
|
# Returns
|
|
|
|
The duration of a layer
|
|
<!-- trait LayerExt::fn get_priority -->
|
|
Get the priority of `self` within the timeline.
|
|
|
|
# Returns
|
|
|
|
The priority of the `self` within the timeline.
|
|
<!-- trait LayerExt::fn get_timeline -->
|
|
Get the `Timeline` in which `Layer` currently is.
|
|
|
|
# Returns
|
|
|
|
the `Timeline` in which `Layer`
|
|
currently is or `None` if not in any timeline yet.
|
|
<!-- trait LayerExt::fn is_empty -->
|
|
Convenience method to check if `self` is empty (doesn't contain any clip),
|
|
or not.
|
|
|
|
# Returns
|
|
|
|
`true` if `self` is empty, `false` if it already contains at least
|
|
one `Clip`
|
|
<!-- trait LayerExt::fn remove_clip -->
|
|
Removes the given `clip` from the `self` and unparents it.
|
|
Unparenting it means the reference owned by `self` on the `clip` will be
|
|
removed. If you wish to use the `clip` after this function, make sure you
|
|
call `gst::ObjectExt::ref` before removing it from the `self`.
|
|
## `clip`
|
|
the `Clip` to remove
|
|
|
|
# Returns
|
|
|
|
`true` if the clip could be removed, `false` if the layer does
|
|
not want to remove the clip.
|
|
<!-- trait LayerExt::fn set_auto_transition -->
|
|
Sets the layer to the given `auto_transition`. See the documentation of the
|
|
property auto_transition for more information.
|
|
## `auto_transition`
|
|
whether the auto_transition is active
|
|
<!-- trait LayerExt::fn set_priority -->
|
|
Sets the layer to the given `priority`. See the documentation of the
|
|
priority property for more information.
|
|
|
|
# Deprecated since 1.16
|
|
|
|
use `TimelineExt::move_layer` instead. This deprecation means
|
|
that you will not need to handle layer priorities at all yourself, GES
|
|
will make sure there is never 'gaps' between layer priorities.
|
|
## `priority`
|
|
the priority to set
|
|
<!-- trait LayerExt::fn connect_clip_added -->
|
|
Will be emitted after the clip was added to the layer.
|
|
## `clip`
|
|
the `Clip` that was added.
|
|
<!-- trait LayerExt::fn connect_clip_removed -->
|
|
Will be emitted after the clip was removed from the layer.
|
|
## `clip`
|
|
the `Clip` that was removed
|
|
<!-- trait LayerExt::fn get_property_auto-transition -->
|
|
Sets whether transitions are added automagically when clips overlap.
|
|
<!-- trait LayerExt::fn set_property_auto-transition -->
|
|
Sets whether transitions are added automagically when clips overlap.
|
|
<!-- trait LayerExt::fn get_property_priority -->
|
|
The priority of the layer in the `Timeline`. 0 is the highest
|
|
priority. Conceptually, a `Timeline` is a stack of GESLayers,
|
|
and the priority of the layer represents its position in the stack. Two
|
|
layers should not have the same priority within a given GESTimeline.
|
|
|
|
Note that the timeline needs to be commited (with `TimelineExt::commit`)
|
|
for the change to be taken into account.
|
|
|
|
# Deprecated since 1.16
|
|
|
|
use `TimelineExt::move_layer` instead. This deprecation means
|
|
that you will not need to handle layer priorities at all yourself, GES
|
|
will make sure there is never 'gaps' between layer priorities.
|
|
<!-- trait LayerExt::fn set_property_priority -->
|
|
The priority of the layer in the `Timeline`. 0 is the highest
|
|
priority. Conceptually, a `Timeline` is a stack of GESLayers,
|
|
and the priority of the layer represents its position in the stack. Two
|
|
layers should not have the same priority within a given GESTimeline.
|
|
|
|
Note that the timeline needs to be commited (with `TimelineExt::commit`)
|
|
for the change to be taken into account.
|
|
|
|
# Deprecated since 1.16
|
|
|
|
use `TimelineExt::move_layer` instead. This deprecation means
|
|
that you will not need to handle layer priorities at all yourself, GES
|
|
will make sure there is never 'gaps' between layer priorities.
|
|
<!-- struct Pipeline -->
|
|
`Pipeline` allows developers to view and render `Timeline`
|
|
in a simple fashion.
|
|
Its usage is inspired by the 'playbin' element from gst-plugins-base.
|
|
|
|
# Implements
|
|
|
|
[`GESPipelineExt`](trait.GESPipelineExt.html), [`gst::PipelineExt`](../gst/trait.PipelineExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait GESPipelineExt -->
|
|
Trait containing all `Pipeline` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Pipeline`](struct.Pipeline.html)
|
|
<!-- impl Pipeline::fn new -->
|
|
Creates a new conveninence `Pipeline`.
|
|
|
|
# Returns
|
|
|
|
the new `Pipeline`.
|
|
<!-- trait GESPipelineExt::fn get_mode -->
|
|
|
|
# Returns
|
|
|
|
the `PipelineFlags` currently in use.
|
|
<!-- trait GESPipelineExt::fn get_thumbnail -->
|
|
Returns a `gst::Sample` with the currently playing image in the format specified by
|
|
caps. The caller should free the sample with `gst_sample_unref` when finished. If ANY
|
|
caps are specified, the information will be returned in the whatever format
|
|
is currently used by the sink. This information can be retrieve from caps
|
|
associated with the buffer.
|
|
## `caps`
|
|
caps specifying current format. Use `GST_CAPS_ANY`
|
|
for native size.
|
|
|
|
# Returns
|
|
|
|
a `gst::Sample` or `None`
|
|
<!-- trait GESPipelineExt::fn get_thumbnail_rgb24 -->
|
|
A convenience method for `GESPipelineExt::get_thumbnail` which
|
|
returns a buffer in 24-bit RGB, optionally scaled to the specified width
|
|
and height. If -1 is specified for either dimension, it will be left at
|
|
native size. You can retreive this information from the caps associated
|
|
with the buffer.
|
|
|
|
The caller is responsible for unreffing the returned sample with
|
|
`gst_sample_unref`.
|
|
## `width`
|
|
the requested width or -1 for native size
|
|
## `height`
|
|
the requested height or -1 for native size
|
|
|
|
# Returns
|
|
|
|
a `gst::Sample` or `None`
|
|
<!-- trait GESPipelineExt::fn preview_get_audio_sink -->
|
|
Obtains a pointer to playsink's audio sink element that is used for
|
|
displaying audio when the `Pipeline` is in `PipelineFlags::FullPreview`
|
|
|
|
The caller is responsible for unreffing the returned element with
|
|
`gst::ObjectExt::unref`.
|
|
|
|
# Returns
|
|
|
|
a pointer to the playsink audio sink `gst::Element`
|
|
<!-- trait GESPipelineExt::fn preview_get_video_sink -->
|
|
Obtains a pointer to playsink's video sink element that is used for
|
|
displaying video when the `Pipeline` is in `PipelineFlags::FullPreview`
|
|
|
|
The caller is responsible for unreffing the returned element with
|
|
`gst::ObjectExt::unref`.
|
|
|
|
# Returns
|
|
|
|
a pointer to the playsink video sink `gst::Element`
|
|
<!-- trait GESPipelineExt::fn preview_set_audio_sink -->
|
|
Sets playsink's audio sink element that is used for displaying audio when
|
|
the `Pipeline` is in `PipelineFlags::FullPreview`
|
|
## `sink`
|
|
a audio sink `gst::Element`
|
|
<!-- trait GESPipelineExt::fn preview_set_video_sink -->
|
|
Sets playsink's video sink element that is used for displaying video when
|
|
the `Pipeline` is in `PipelineFlags::FullPreview`
|
|
## `sink`
|
|
a video sink `gst::Element`
|
|
<!-- trait GESPipelineExt::fn save_thumbnail -->
|
|
Saves the current frame to the specified `location`.
|
|
## `width`
|
|
the requested width or -1 for native size
|
|
## `height`
|
|
the requested height or -1 for native size
|
|
## `format`
|
|
a string specifying the desired mime type (for example,
|
|
image/jpeg)
|
|
## `location`
|
|
the path to save the thumbnail
|
|
|
|
# Returns
|
|
|
|
`true` if the thumbnail was properly save, else `false`.
|
|
<!-- trait GESPipelineExt::fn set_mode -->
|
|
switches the `self` to the specified `mode`. The default mode when
|
|
creating a `Pipeline` is `PipelineFlags::FullPreview`.
|
|
|
|
Note: The `self` will be set to `gst::State::Null` during this call due to
|
|
the internal changes that happen. The caller will therefore have to
|
|
set the `self` to the requested state after calling this method.
|
|
## `mode`
|
|
the `PipelineFlags` to use
|
|
|
|
# Returns
|
|
|
|
`true` if the mode was properly set, else `false`.
|
|
<!-- trait GESPipelineExt::fn set_render_settings -->
|
|
Specify where the pipeline shall be rendered and with what settings.
|
|
|
|
A copy of `profile` and `output_uri` will be done internally, the caller can
|
|
safely free those values afterwards.
|
|
|
|
This method must be called before setting the pipeline mode to
|
|
`PipelineFlags::Render`
|
|
## `output_uri`
|
|
the URI to which the timeline will be rendered
|
|
## `profile`
|
|
the `gst_pbutils::EncodingProfile` to use to render the timeline.
|
|
|
|
# Returns
|
|
|
|
`true` if the settings were aknowledged properly, else `false`
|
|
<!-- trait GESPipelineExt::fn set_timeline -->
|
|
Sets the timeline to use in this pipeline.
|
|
|
|
The reference to the `timeline` will be stolen by the `self`.
|
|
## `timeline`
|
|
the `Timeline` to set on the `self`.
|
|
|
|
# Returns
|
|
|
|
`true` if the `timeline` could be successfully set on the `self`,
|
|
else `false`.
|
|
<!-- trait GESPipelineExt::fn get_property_audio-sink -->
|
|
Audio sink for the preview.
|
|
<!-- trait GESPipelineExt::fn set_property_audio-sink -->
|
|
Audio sink for the preview.
|
|
<!-- trait GESPipelineExt::fn get_property_mode -->
|
|
Pipeline mode. See `GESPipelineExt::set_mode` for more
|
|
info.
|
|
<!-- trait GESPipelineExt::fn set_property_mode -->
|
|
Pipeline mode. See `GESPipelineExt::set_mode` for more
|
|
info.
|
|
<!-- trait GESPipelineExt::fn get_property_timeline -->
|
|
Timeline to use in this pipeline. See also
|
|
`GESPipelineExt::set_timeline` for more info.
|
|
<!-- trait GESPipelineExt::fn set_property_timeline -->
|
|
Timeline to use in this pipeline. See also
|
|
`GESPipelineExt::set_timeline` for more info.
|
|
<!-- trait GESPipelineExt::fn get_property_video-sink -->
|
|
Video sink for the preview.
|
|
<!-- trait GESPipelineExt::fn set_property_video-sink -->
|
|
Video sink for the preview.
|
|
<!-- struct Project -->
|
|
The `Project` is used to control a set of `Asset` and is a
|
|
`Asset` with `GES_TYPE_TIMELINE` as `extractable_type` itself. That
|
|
means that you can extract `Timeline` from a project as followed:
|
|
|
|
|
|
```text
|
|
GESProject *project;
|
|
GESTimeline *timeline;
|
|
|
|
project = ges_project_new ("file:///path/to/a/valid/project/uri");
|
|
|
|
// Here you can connect to the various signal to get more infos about
|
|
// what is happening and recover from errors if possible
|
|
...
|
|
|
|
timeline = ges_asset_extract (GES_ASSET (project));
|
|
```
|
|
|
|
The `Project` class offers a higher level API to handle `Asset`-s.
|
|
It lets you request new asset, and it informs you about new assets through
|
|
a set of signals. Also it handles problem such as missing files/missing
|
|
`gst::Element` and lets you try to recover from those.
|
|
|
|
# Implements
|
|
|
|
[`ProjectExt`](trait.ProjectExt.html), [`AssetExt`](trait.AssetExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait ProjectExt -->
|
|
Trait containing all `Project` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Project`](struct.Project.html)
|
|
<!-- impl Project::fn new -->
|
|
Creates a new `Project` and sets its uri to `uri` if provided. Note that
|
|
if `uri` is not valid or `None`, the uri of the project will then be set
|
|
the first time you save the project. If you then save the project to
|
|
other locations, it will never be updated again and the first valid URI is
|
|
the URI it will keep refering to.
|
|
## `uri`
|
|
The uri to be set after creating the project.
|
|
|
|
# Returns
|
|
|
|
A newly created `Project`
|
|
<!-- trait ProjectExt::fn add_asset -->
|
|
Adds a `Asset` to `self`, the project will keep a reference on
|
|
`asset`.
|
|
## `asset`
|
|
A `Asset` to add to `self`
|
|
|
|
# Returns
|
|
|
|
`true` if the asset could be added `false` it was already
|
|
in the project
|
|
<!-- trait ProjectExt::fn add_encoding_profile -->
|
|
Adds `profile` to the project. It lets you save in what format
|
|
the project has been renders and keep a reference to those formats.
|
|
Also, those formats will be saves to the project file when possible.
|
|
## `profile`
|
|
A `gst_pbutils::EncodingProfile` to add to the project. If a profile with
|
|
the same name already exists, it will be replaced
|
|
|
|
# Returns
|
|
|
|
`true` if `profile` could be added, `false` otherwize
|
|
<!-- trait ProjectExt::fn create_asset -->
|
|
Create and add a `Asset` to `self`. You should connect to the
|
|
"asset-added" signal to get the asset when it finally gets added to
|
|
`self`
|
|
## `id`
|
|
The id of the asset to create and add to `self`
|
|
## `extractable_type`
|
|
The `glib::Type` of the asset to create
|
|
|
|
# Returns
|
|
|
|
`true` if the asset started to be added `false` it was already
|
|
in the project
|
|
<!-- trait ProjectExt::fn create_asset_sync -->
|
|
Create and add a `Asset` to `self`. You should connect to the
|
|
"asset-added" signal to get the asset when it finally gets added to
|
|
`self`
|
|
## `id`
|
|
The id of the asset to create and add to `self`
|
|
## `extractable_type`
|
|
The `glib::Type` of the asset to create
|
|
|
|
# Returns
|
|
|
|
The newly created `Asset` or `None`.
|
|
<!-- trait ProjectExt::fn get_asset -->
|
|
## `id`
|
|
The id of the asset to retrieve
|
|
## `extractable_type`
|
|
The extractable_type of the asset
|
|
to retrieve from `object`
|
|
|
|
# Returns
|
|
|
|
The `Asset` with
|
|
`id` or `None` if no asset with `id` as an ID
|
|
<!-- trait ProjectExt::fn get_loading_assets -->
|
|
Get the assets that are being loaded
|
|
|
|
# Returns
|
|
|
|
A set of loading asset
|
|
that will be added to `self`. Note that those Asset are *not* loaded yet,
|
|
and thus can not be used
|
|
<!-- trait ProjectExt::fn get_uri -->
|
|
Retrieve the uri that is currently set on `self`
|
|
|
|
# Returns
|
|
|
|
a newly allocated string representing uri.
|
|
<!-- trait ProjectExt::fn list_assets -->
|
|
List all `asset` contained in `self` filtering per extractable_type
|
|
as defined by `filter`. It copies the asset and thus will not be updated
|
|
in time.
|
|
## `filter`
|
|
Type of assets to list, `GES_TYPE_EXTRACTABLE` will list
|
|
all assets
|
|
|
|
# Returns
|
|
|
|
The list of
|
|
`Asset` the object contains
|
|
<!-- trait ProjectExt::fn list_encoding_profiles -->
|
|
Lists the encoding profile that have been set to `self`. The first one
|
|
is the latest added.
|
|
|
|
# Returns
|
|
|
|
The
|
|
list of `gst_pbutils::EncodingProfile` used in `self`
|
|
<!-- trait ProjectExt::fn load -->
|
|
Loads `self` into `timeline`
|
|
## `timeline`
|
|
A blank timeline to load `self` into
|
|
|
|
# Returns
|
|
|
|
`true` if the project could be loaded `false` otherwize.
|
|
<!-- trait ProjectExt::fn remove_asset -->
|
|
remove a `asset` to from `self`.
|
|
## `asset`
|
|
A `Asset` to remove from `self`
|
|
|
|
# Returns
|
|
|
|
`true` if the asset could be removed `false` otherwise
|
|
<!-- trait ProjectExt::fn save -->
|
|
Save the timeline of `self` to `uri`. You should make sure that `timeline`
|
|
is one of the timelines that have been extracted from `self`
|
|
(using ges_asset_extract (`self`);)
|
|
## `timeline`
|
|
The `Timeline` to save, it must have been extracted from `self`
|
|
## `uri`
|
|
The uri where to save `self` and `timeline`
|
|
## `formatter_asset`
|
|
The formatter asset to use or `None`. If `None`,
|
|
will try to save in the same format as the one from which the timeline as been loaded
|
|
or default to the formatter with highest rank
|
|
## `overwrite`
|
|
`true` to overwrite file if it exists
|
|
|
|
# Returns
|
|
|
|
`true` if the project could be save, `false` otherwize
|
|
<!-- trait ProjectExt::fn connect_asset_added -->
|
|
## `asset`
|
|
The `Asset` that has been added to `project`
|
|
<!-- trait ProjectExt::fn connect_asset_loading -->
|
|
## `asset`
|
|
The `Asset` that started loading
|
|
<!-- trait ProjectExt::fn connect_asset_removed -->
|
|
## `asset`
|
|
The `Asset` that has been removed from `project`
|
|
<!-- trait ProjectExt::fn connect_error_loading_asset -->
|
|
Informs you that a `Asset` could not be created. In case of
|
|
missing GStreamer plugins, the error will be set to `GST_CORE_ERROR`
|
|
`gst::CoreError::MissingPlugin`
|
|
## `error`
|
|
The `glib::Error` defining the error that occured, might be `None`
|
|
## `id`
|
|
The `id` of the asset that failed loading
|
|
## `extractable_type`
|
|
The `extractable_type` of the asset that
|
|
failed loading
|
|
<!-- trait ProjectExt::fn connect_loaded -->
|
|
## `timeline`
|
|
The `Timeline` that complete loading
|
|
<!-- trait ProjectExt::fn connect_missing_uri -->
|
|
|
|
```text
|
|
static gchar
|
|
source_moved_cb (GESProject *project, GError *error, GESAsset *asset_with_error)
|
|
{
|
|
return g_strdup ("file:///the/new/uri.ogg");
|
|
}
|
|
|
|
static int
|
|
main (int argc, gchar ** argv)
|
|
{
|
|
GESTimeline *timeline;
|
|
GESProject *project = ges_project_new ("file:///some/uri.xges");
|
|
|
|
g_signal_connect (project, "missing-uri", source_moved_cb, NULL);
|
|
timeline = ges_asset_extract (GES_ASSET (project));
|
|
}
|
|
```
|
|
## `error`
|
|
The error that happened
|
|
## `wrong_asset`
|
|
The asset with the wrong ID, you should us it and its content
|
|
only to find out what the new location is.
|
|
|
|
# Returns
|
|
|
|
The new URI of `wrong_asset`
|
|
<!-- struct Timeline -->
|
|
`Timeline` is the central object for any multimedia timeline.
|
|
|
|
Contains a list of `Layer` which users should use to arrange the
|
|
various clips through time.
|
|
|
|
The output type is determined by the `Track` that are set on
|
|
the `Timeline`.
|
|
|
|
To save/load a timeline, you can use the `TimelineExt::load_from_uri` and
|
|
`TimelineExt::save_to_uri` methods to use the default format. If you wish
|
|
|
|
Note that any change you make in the timeline will not actually be taken
|
|
into account until you call the `TimelineExt::commit` method.
|
|
|
|
# Implements
|
|
|
|
[`TimelineExt`](trait.TimelineExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait TimelineExt -->
|
|
Trait containing all `Timeline` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Timeline`](struct.Timeline.html)
|
|
<!-- impl Timeline::fn new -->
|
|
Creates a new empty `Timeline`.
|
|
|
|
# Returns
|
|
|
|
The new timeline.
|
|
<!-- impl Timeline::fn new_audio_video -->
|
|
Creates a new `Timeline` containing a raw audio and a
|
|
raw video track.
|
|
|
|
# Returns
|
|
|
|
The newly created `Timeline`.
|
|
<!-- impl Timeline::fn new_from_uri -->
|
|
Creates a timeline from the given URI.
|
|
## `uri`
|
|
the URI to load from
|
|
|
|
# Returns
|
|
|
|
A new timeline if the uri was loaded
|
|
successfully, or `None` if the uri could not be loaded.
|
|
<!-- trait TimelineExt::fn add_layer -->
|
|
Add the layer to the timeline. The reference to the `layer` will be stolen
|
|
by the `self`.
|
|
## `layer`
|
|
the `Layer` to add
|
|
|
|
# Returns
|
|
|
|
`true` if the layer was properly added, else `false`.
|
|
<!-- trait TimelineExt::fn add_track -->
|
|
Add a track to the timeline. The reference to the track will be stolen by the
|
|
pipeline.
|
|
## `track`
|
|
the `Track` to add
|
|
|
|
# Returns
|
|
|
|
`true` if the track was properly added, else `false`.
|
|
<!-- trait TimelineExt::fn append_layer -->
|
|
Append a newly created `Layer` to `self`
|
|
Note that you do not own any reference to the returned layer.
|
|
|
|
# Returns
|
|
|
|
The newly created `Layer`, or the last (empty)
|
|
`Layer` of `self`.
|
|
<!-- trait TimelineExt::fn commit -->
|
|
Commit all the pending changes of the clips contained in the
|
|
`self`.
|
|
|
|
When changes happen in a timeline, they are not
|
|
directly executed in the non-linear engine. Call this method once you are
|
|
done with a set of changes and want it to be executed.
|
|
|
|
The `Timeline::commited` signal will be emitted when the (possibly updated)
|
|
`gst::Pipeline` is ready to output data again, except if the state of the
|
|
timeline was `gst::State::Ready` or `gst::State::Null`.
|
|
|
|
Note that all the pending changes will automatically be executed when the
|
|
timeline goes from `gst::State::Ready` to `gst::State::Paused`, which usually is
|
|
triggered by corresponding state changes in a containing `Pipeline`.
|
|
|
|
You should not try to change the state of the timeline, seek it or add
|
|
tracks to it during a commit operation, that is between a call to this
|
|
function and after receiving the `Timeline::commited` signal.
|
|
|
|
See `TimelineExt::commit_sync` if you don't want to bother with waiting
|
|
for the signal.
|
|
|
|
# Returns
|
|
|
|
`true` if pending changes were commited or `false` if nothing needed
|
|
to be commited
|
|
<!-- trait TimelineExt::fn commit_sync -->
|
|
Commit all the pending changes of the `GESClips` contained in the
|
|
`self`.
|
|
|
|
Will return once the update is complete, that is when the
|
|
(possibly updated) `gst::Pipeline` is ready to output data again, or if the
|
|
state of the timeline was `gst::State::Ready` or `gst::State::Null`.
|
|
|
|
This function will wait for any pending state change of the timeline by
|
|
calling `gst::ElementExt::get_state` with a `GST_CLOCK_TIME_NONE` timeout, you
|
|
should not try to change the state from another thread before this function
|
|
has returned.
|
|
|
|
See `TimelineExt::commit` for more information.
|
|
|
|
# Returns
|
|
|
|
`true` if pending changes were commited or `false` if nothing needed
|
|
to be commited
|
|
<!-- trait TimelineExt::fn get_auto_transition -->
|
|
Gets whether transitions are automatically added when objects
|
|
overlap or not.
|
|
|
|
# Returns
|
|
|
|
`true` if transitions are automatically added, else `false`.
|
|
<!-- trait TimelineExt::fn get_duration -->
|
|
Get the current duration of `self`
|
|
|
|
# Returns
|
|
|
|
The current duration of `self`
|
|
<!-- trait TimelineExt::fn get_element -->
|
|
Gets a `TimelineElement` contained in the timeline
|
|
|
|
# Returns
|
|
|
|
The `TimelineElement` or `None` if
|
|
not found.
|
|
<!-- trait TimelineExt::fn get_groups -->
|
|
Get the list of `Group` present in the Timeline.
|
|
|
|
# Returns
|
|
|
|
the list of
|
|
`Group` that contain clips present in the timeline's layers.
|
|
Must not be changed.
|
|
<!-- trait TimelineExt::fn get_layer -->
|
|
Retrieve the layer with `priority` as a priority
|
|
## `priority`
|
|
The priority of the layer to find
|
|
|
|
# Returns
|
|
|
|
A `Layer` or `None` if no layer with
|
|
`priority` was found
|
|
|
|
Since 1.6
|
|
<!-- trait TimelineExt::fn get_layers -->
|
|
Get the list of `Layer` present in the Timeline.
|
|
|
|
# Returns
|
|
|
|
the list of
|
|
`Layer` present in the Timeline sorted by priority.
|
|
The caller should unref each Layer once he is done with them.
|
|
<!-- trait TimelineExt::fn get_pad_for_track -->
|
|
Search the `gst::Pad` corresponding to the given `self`'s `track`.
|
|
## `track`
|
|
The `Track`
|
|
|
|
# Returns
|
|
|
|
The corresponding `gst::Pad` if it is
|
|
found, or `None` if there is an error.
|
|
<!-- trait TimelineExt::fn get_snapping_distance -->
|
|
Gets the configured snapping distance of the timeline. See
|
|
the documentation of the property snapping_distance for more
|
|
information.
|
|
|
|
# Returns
|
|
|
|
The `snapping_distance` property of the timeline
|
|
<!-- trait TimelineExt::fn get_track_for_pad -->
|
|
Search the `Track` corresponding to the given `self`'s `pad`.
|
|
## `pad`
|
|
The `gst::Pad`
|
|
|
|
# Returns
|
|
|
|
The corresponding `Track` if it is
|
|
found, or `None` if there is an error.
|
|
<!-- trait TimelineExt::fn get_tracks -->
|
|
Returns the list of `Track` used by the Timeline.
|
|
|
|
# Returns
|
|
|
|
A list of `Track`.
|
|
The caller should unref each track once he is done with them.
|
|
<!-- trait TimelineExt::fn is_empty -->
|
|
Check whether a `Timeline` is empty or not
|
|
|
|
# Returns
|
|
|
|
`true` if the timeline is empty `false` otherwize
|
|
<!-- trait TimelineExt::fn load_from_uri -->
|
|
Loads the contents of URI into the given timeline.
|
|
## `uri`
|
|
The URI to load from
|
|
|
|
# Returns
|
|
|
|
`true` if the timeline was loaded successfully, or `false` if the uri
|
|
could not be loaded.
|
|
<!-- trait TimelineExt::fn move_layer -->
|
|
Moves `layer` at `new_layer_priority` meaning that `layer`
|
|
we land at that position in the stack of layers inside
|
|
the timeline. If `new_layer_priority` is superior than the number
|
|
of layers present in the time, it will move to the end of the
|
|
stack of layers.
|
|
## `layer`
|
|
The layer to move at `new_layer_priority`
|
|
## `new_layer_priority`
|
|
The index at which `layer` should land
|
|
<!-- trait TimelineExt::fn paste_element -->
|
|
Paste `element` inside the timeline. `element` must have been
|
|
created using ges_timeline_element_copy with deep=TRUE set,
|
|
i.e. it must be a deep copy, otherwise it will fail.
|
|
## `element`
|
|
The `TimelineElement` to paste
|
|
## `position`
|
|
The position in the timeline the element should
|
|
be pasted to, meaning it will become the start of `element`
|
|
## `layer_priority`
|
|
The `Layer` to which the element should be pasted to.
|
|
-1 means paste to the same layer from which the `element` has been copied from.
|
|
|
|
# Returns
|
|
|
|
Shallow copy of the `element` pasted
|
|
<!-- trait TimelineExt::fn remove_layer -->
|
|
Removes the layer from the timeline. The reference that the `self` holds on
|
|
the layer will be dropped. If you wish to use the `layer` after calling this
|
|
method, you need to take a reference before calling.
|
|
## `layer`
|
|
the `Layer` to remove
|
|
|
|
# Returns
|
|
|
|
`true` if the layer was properly removed, else `false`.
|
|
<!-- trait TimelineExt::fn remove_track -->
|
|
Remove the `track` from the `self`. The reference stolen when adding the
|
|
`track` will be removed. If you wish to use the `track` after calling this
|
|
function you must ensure that you have a reference to it.
|
|
## `track`
|
|
the `Track` to remove
|
|
|
|
# Returns
|
|
|
|
`true` if the `track` was properly removed, else `false`.
|
|
<!-- trait TimelineExt::fn save_to_uri -->
|
|
Saves the timeline to the given location
|
|
## `uri`
|
|
The location to save to
|
|
## `formatter_asset`
|
|
The formatter asset to use or `None`. If `None`,
|
|
will try to save in the same format as the one from which the timeline as been loaded
|
|
or default to the formatter with highest rank
|
|
## `overwrite`
|
|
`true` to overwrite file if it exists
|
|
|
|
# Returns
|
|
|
|
`true` if the timeline was successfully saved to the given location,
|
|
else `false`.
|
|
<!-- trait TimelineExt::fn set_auto_transition -->
|
|
Sets the layer to the given `auto_transition`. See the documentation of the
|
|
property auto_transition for more information.
|
|
## `auto_transition`
|
|
whether the auto_transition is active
|
|
<!-- trait TimelineExt::fn set_snapping_distance -->
|
|
Sets the `snapping_distance` of the timeline. See the documentation of the
|
|
property snapping_distance for more information.
|
|
## `snapping_distance`
|
|
whether the snapping_distance is active
|
|
<!-- trait TimelineExt::fn connect_commited -->
|
|
This signal will be emitted once the changes initiated by `TimelineExt::commit`
|
|
have been executed in the backend. Use `TimelineExt::commit_sync` if you
|
|
don't need to do anything in the meantime.
|
|
<!-- trait TimelineExt::fn connect_group_added -->
|
|
Will be emitted after a new group is added to to the timeline.
|
|
## `group`
|
|
the `Group`
|
|
<!-- trait TimelineExt::fn connect_group_removed -->
|
|
Will be emitted after a group has been removed from the timeline.
|
|
## `group`
|
|
the `Group`
|
|
## `children`
|
|
a list of `Container`
|
|
<!-- trait TimelineExt::fn connect_layer_added -->
|
|
Will be emitted after a new layer is added to the timeline.
|
|
## `layer`
|
|
the `Layer` that was added to the timeline
|
|
<!-- trait TimelineExt::fn connect_layer_removed -->
|
|
Will be emitted after the layer was removed from the timeline.
|
|
## `layer`
|
|
the `Layer` that was removed from the timeline
|
|
<!-- trait TimelineExt::fn connect_select_tracks_for_object -->
|
|
## `clip`
|
|
The `Clip` on which `track_element` will land
|
|
## `track_element`
|
|
The `TrackElement` for which to choose the tracks it should land into
|
|
|
|
# Returns
|
|
|
|
a `glib::PtrArray` of `Track`-s where that object should be added
|
|
<!-- trait TimelineExt::fn connect_snapping_ended -->
|
|
Will be emitted when the 2 `TrackElement` ended to snap
|
|
## `obj1`
|
|
the first `TrackElement` that was snapping.
|
|
## `obj2`
|
|
the second `TrackElement` that was snapping.
|
|
## `position`
|
|
the position where the two objects finally snapping.
|
|
<!-- trait TimelineExt::fn connect_snapping_started -->
|
|
Will be emitted when the 2 `TrackElement` first snapped
|
|
## `obj1`
|
|
the first `TrackElement` that was snapping.
|
|
## `obj2`
|
|
the second `TrackElement` that was snapping.
|
|
## `position`
|
|
the position where the two objects finally snapping.
|
|
<!-- trait TimelineExt::fn connect_track_added -->
|
|
Will be emitted after the track was added to the timeline.
|
|
## `track`
|
|
the `Track` that was added to the timeline
|
|
<!-- trait TimelineExt::fn connect_track_removed -->
|
|
Will be emitted after the track was removed from the timeline.
|
|
## `track`
|
|
the `Track` that was removed from the timeline
|
|
<!-- trait TimelineExt::fn get_property_auto-transition -->
|
|
Sets whether transitions are added automagically when clips overlap.
|
|
<!-- trait TimelineExt::fn set_property_auto-transition -->
|
|
Sets whether transitions are added automagically when clips overlap.
|
|
<!-- trait TimelineExt::fn get_property_duration -->
|
|
Current duration (in nanoseconds) of the `Timeline`
|
|
<!-- trait TimelineExt::fn get_property_snapping-distance -->
|
|
Distance (in nanoseconds) from which a moving object will snap
|
|
with it neighboors. 0 means no snapping.
|
|
<!-- trait TimelineExt::fn set_property_snapping-distance -->
|
|
Distance (in nanoseconds) from which a moving object will snap
|
|
with it neighboors. 0 means no snapping.
|
|
<!-- struct TimelineElement -->
|
|
The GESTimelineElement base class implements the notion of timing as well
|
|
as priority. A GESTimelineElement can have a parent object which will be
|
|
responsible for controlling its timing properties.
|
|
|
|
# Implements
|
|
|
|
[`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait TimelineElementExt -->
|
|
Trait containing all `TimelineElement` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Container`](struct.Container.html), [`TimelineElement`](struct.TimelineElement.html), [`TrackElement`](struct.TrackElement.html)
|
|
<!-- trait TimelineElementExt::fn copy -->
|
|
Copies `self`
|
|
## `deep`
|
|
whether we want to create the elements `self` contains or not
|
|
|
|
# Returns
|
|
|
|
The newly create `TimelineElement`, copied from `self`
|
|
<!-- trait TimelineElementExt::fn get_child_properties -->
|
|
Gets properties of a child of `self`.
|
|
## `first_property_name`
|
|
The name of the first property to get
|
|
<!-- trait TimelineElementExt::fn get_child_property -->
|
|
In general, a copy is made of the property contents and
|
|
the caller is responsible for freeing the memory by calling
|
|
`gobject::Value::unset`.
|
|
|
|
Gets a property of a GstElement contained in `object`.
|
|
|
|
Note that `TimelineElementExt::get_child_property` is really
|
|
intended for language bindings, `TimelineElementExt::get_child_properties`
|
|
is much more convenient for C programming.
|
|
## `property_name`
|
|
The name of the property
|
|
## `value`
|
|
return location for the property value, it will
|
|
be initialized if it is initialized with 0
|
|
|
|
# Returns
|
|
|
|
`true` if the property was found, `false` otherwize
|
|
<!-- trait TimelineElementExt::fn get_child_property_by_pspec -->
|
|
Gets a property of a child of `self`.
|
|
## `pspec`
|
|
The `gobject::ParamSpec` that specifies the property you want to get
|
|
## `value`
|
|
return location for the value
|
|
<!-- trait TimelineElementExt::fn get_child_property_valist -->
|
|
Gets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
## `first_property_name`
|
|
The name of the first property to get
|
|
## `var_args`
|
|
value for the first property, followed optionally by more
|
|
name/return location pairs, followed by NULL
|
|
<!-- trait TimelineElementExt::fn get_duration -->
|
|
|
|
# Returns
|
|
|
|
The `duration` of `self`
|
|
<!-- trait TimelineElementExt::fn get_inpoint -->
|
|
|
|
# Returns
|
|
|
|
The `inpoint` of `self`
|
|
<!-- trait TimelineElementExt::fn get_layer_priority -->
|
|
|
|
# Returns
|
|
|
|
The priority of the first layer the element is in (note that only
|
|
groups can span over several layers). `GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY`
|
|
means that the element is not in a layer.
|
|
<!-- trait TimelineElementExt::fn get_max_duration -->
|
|
|
|
# Returns
|
|
|
|
The `maxduration` of `self`
|
|
<!-- trait TimelineElementExt::fn get_name -->
|
|
Returns a copy of the name of `self`.
|
|
Caller should `g_free` the return value after usage.
|
|
|
|
# Returns
|
|
|
|
The name of `self`
|
|
<!-- trait TimelineElementExt::fn get_parent -->
|
|
Returns the parent of `self`. This function increases the refcount
|
|
of the parent object so you should `gst::ObjectExt::unref` it after usage.
|
|
|
|
# Returns
|
|
|
|
parent of `self`, this can be `None` if
|
|
`self` has no parent. unref after usage.
|
|
<!-- trait TimelineElementExt::fn get_priority -->
|
|
|
|
# Returns
|
|
|
|
The `priority` of `self`
|
|
<!-- trait TimelineElementExt::fn get_start -->
|
|
|
|
# Returns
|
|
|
|
The `start` of `self`
|
|
<!-- trait TimelineElementExt::fn get_timeline -->
|
|
Returns the timeline of `self`. This function increases the refcount
|
|
of the timeline so you should `gst::ObjectExt::unref` it after usage.
|
|
|
|
# Returns
|
|
|
|
timeline of `self`, this can be `None` if
|
|
`self` has no timeline. unref after usage.
|
|
<!-- trait TimelineElementExt::fn get_toplevel_parent -->
|
|
Gets the toplevel `TimelineElement` controlling `self`
|
|
|
|
# Returns
|
|
|
|
The toplevel controlling parent of `self`
|
|
<!-- trait TimelineElementExt::fn get_track_types -->
|
|
Gets all the TrackTypes `self` will interact with
|
|
<!-- trait TimelineElementExt::fn list_children_properties -->
|
|
Gets an array of `gobject::ParamSpec`* for all configurable properties of the
|
|
children of `self`.
|
|
## `n_properties`
|
|
return location for the length of the returned array
|
|
|
|
# Returns
|
|
|
|
an array of `gobject::ParamSpec`* which should be freed after use or
|
|
`None` if something went wrong
|
|
<!-- trait TimelineElementExt::fn lookup_child -->
|
|
Looks up which `element` and `pspec` would be effected by the given `name`. If various
|
|
contained elements have this property name you will get the first one, unless you
|
|
specify the class name in `name`.
|
|
## `prop_name`
|
|
name of the property to look up. You can specify the name of the
|
|
class as such: "ClassName::property-name", to guarantee that you get the
|
|
proper GParamSpec in case various GstElement-s contain the same property
|
|
name. If you don't do so, you will get the first element found, having
|
|
this property and the and the corresponding GParamSpec.
|
|
## `child`
|
|
pointer to a `gst::Element` that
|
|
takes the real object to set property on
|
|
## `pspec`
|
|
pointer to take the `gobject::ParamSpec`
|
|
describing the property
|
|
|
|
# Returns
|
|
|
|
TRUE if `element` and `pspec` could be found. FALSE otherwise. In that
|
|
case the values for `pspec` and `element` are not modified. Unref `element` after
|
|
usage.
|
|
<!-- trait TimelineElementExt::fn paste -->
|
|
Paste `self` inside the timeline. `self` must have been created
|
|
using ges_timeline_element_copy with recurse=TRUE set,
|
|
otherwise it will fail.
|
|
## `paste_position`
|
|
The position in the timeline the element should
|
|
be copied to, meaning it will become the start of `self`
|
|
|
|
# Returns
|
|
|
|
Paste `self` copying the element
|
|
<!-- trait TimelineElementExt::fn ripple -->
|
|
Edits `self` in ripple mode. It allows you to modify the
|
|
start of `self` and move the following neighbours accordingly.
|
|
This will change the overall timeline duration.
|
|
## `start`
|
|
The new start of `self` in ripple mode.
|
|
|
|
# Returns
|
|
|
|
`true` if the self as been rippled properly, `false` if an error
|
|
occured
|
|
<!-- trait TimelineElementExt::fn ripple_end -->
|
|
Edits `self` in ripple mode. It allows you to modify the
|
|
duration of a `self` and move the following neighbours accordingly.
|
|
This will change the overall timeline duration.
|
|
## `end`
|
|
The new end (start + duration) of `self` in ripple mode. It will
|
|
basically only change the duration of `self`.
|
|
|
|
# Returns
|
|
|
|
`true` if the self as been rippled properly, `false` if an error
|
|
occured
|
|
<!-- trait TimelineElementExt::fn roll_end -->
|
|
Edits `self` in roll mode. It allows you to modify the
|
|
duration of a `self` and trim (basicly change the start + inpoint
|
|
in this case) the following neighbours accordingly.
|
|
This will not change the overall timeline duration.
|
|
## `end`
|
|
The new end (start + duration) of `self` in roll mode
|
|
|
|
# Returns
|
|
|
|
`true` if the self as been rolled properly, `false` if an error
|
|
occured
|
|
<!-- trait TimelineElementExt::fn roll_start -->
|
|
Edits `self` in roll mode. It allows you to modify the
|
|
start and inpoint of a `self` and "resize" (basicly change the duration
|
|
in this case) of the previous neighbours accordingly.
|
|
This will not change the overall timeline duration.
|
|
## `start`
|
|
The new start of `self` in roll mode, it will also adapat
|
|
the in-point of `self` according
|
|
|
|
# Returns
|
|
|
|
`true` if the self as been roll properly, `false` if an error
|
|
occured
|
|
<!-- trait TimelineElementExt::fn set_child_properties -->
|
|
Sets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
## `first_property_name`
|
|
The name of the first property to set
|
|
<!-- trait TimelineElementExt::fn set_child_property -->
|
|
Sets a property of a child of `self`
|
|
|
|
Note that `TimelineElementExt::set_child_property` is really
|
|
intended for language bindings, `TimelineElementExt::set_child_properties`
|
|
is much more convenient for C programming.
|
|
## `property_name`
|
|
The name of the property
|
|
## `value`
|
|
the value
|
|
|
|
# Returns
|
|
|
|
`true` if the property was set, `false` otherwize
|
|
<!-- trait TimelineElementExt::fn set_child_property_by_pspec -->
|
|
Sets a property of a child of `self`.
|
|
## `pspec`
|
|
The `gobject::ParamSpec` that specifies the property you want to set
|
|
## `value`
|
|
the value
|
|
<!-- trait TimelineElementExt::fn set_child_property_valist -->
|
|
Sets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
## `first_property_name`
|
|
The name of the first property to set
|
|
## `var_args`
|
|
value for the first property, followed optionally by more
|
|
name/return location pairs, followed by NULL
|
|
<!-- trait TimelineElementExt::fn set_duration -->
|
|
Set the duration of the object
|
|
|
|
Note that if the timeline snap-distance property of the timeline containing
|
|
`self` is set, `self` will properly snap to its neighboors.
|
|
## `duration`
|
|
the duration in `gst::ClockTime`
|
|
|
|
# Returns
|
|
|
|
`true` if `duration` could be set.
|
|
<!-- trait TimelineElementExt::fn set_inpoint -->
|
|
Set the in-point, that is the moment at which the `self` will start
|
|
outputting data from its contents.
|
|
## `inpoint`
|
|
the in-point in `gst::ClockTime`
|
|
|
|
# Returns
|
|
|
|
`true` if `inpoint` could be set.
|
|
<!-- trait TimelineElementExt::fn set_max_duration -->
|
|
Set the maximun duration of the object
|
|
## `maxduration`
|
|
the maximum duration in `gst::ClockTime`
|
|
|
|
# Returns
|
|
|
|
`true` if `maxduration` could be set.
|
|
<!-- trait TimelineElementExt::fn set_name -->
|
|
Sets the name of object, or gives `self` a guaranteed unique name (if name is NULL).
|
|
This function makes a copy of the provided name, so the caller retains ownership
|
|
of the name it sent.
|
|
## `name`
|
|
The name `self` should take (if avalaible<)
|
|
<!-- trait TimelineElementExt::fn set_parent -->
|
|
Sets the parent of `self` to `parent`. The parents needs to already
|
|
own a hard reference on `self`.
|
|
## `parent`
|
|
new parent of self
|
|
|
|
# Returns
|
|
|
|
`true` if `parent` could be set or `false` when `self`
|
|
already had a parent or `self` and `parent` are the same.
|
|
<!-- trait TimelineElementExt::fn set_priority -->
|
|
Sets the priority of the object within the containing layer
|
|
|
|
# Deprecated
|
|
|
|
All priority management is done by GES itself now.
|
|
To set `Effect` priorities `ClipExt::set_top_effect_index` should
|
|
be used.
|
|
## `priority`
|
|
the priority
|
|
|
|
# Returns
|
|
|
|
`true` if `priority` could be set.
|
|
<!-- trait TimelineElementExt::fn set_start -->
|
|
Set the position of the object in its containing layer.
|
|
|
|
Note that if the snapping-distance property of the timeline containing
|
|
`self` is set, `self` will properly snap to the edges around `start`.
|
|
## `start`
|
|
the position in `gst::ClockTime`
|
|
|
|
# Returns
|
|
|
|
`true` if `start` could be set.
|
|
<!-- trait TimelineElementExt::fn set_timeline -->
|
|
Sets the timeline of `self` to `timeline`.
|
|
## `timeline`
|
|
The `Timeline` `self` is in
|
|
|
|
# Returns
|
|
|
|
`true` if `timeline` could be set or `false` when `timeline`
|
|
already had a timeline.
|
|
<!-- trait TimelineElementExt::fn trim -->
|
|
Edits `self` in trim mode. It allows you to modify the
|
|
inpoint and start of `self`.
|
|
This will not change the overall timeline duration.
|
|
|
|
Note that to trim the end of an self you can just set its duration. The same way
|
|
as this method, it will take into account the snapping-distance property of the
|
|
timeline in which `self` is.
|
|
## `start`
|
|
The new start of `self` in trim mode, will adapt the inpoint
|
|
of `self` accordingly
|
|
|
|
# Returns
|
|
|
|
`true` if the self as been trimmed properly, `false` if an error
|
|
occured
|
|
<!-- trait TimelineElementExt::fn connect_deep_notify -->
|
|
The deep notify signal is used to be notified of property changes of all
|
|
the childs of `timeline_element`
|
|
## `prop_object`
|
|
the object that originated the signal
|
|
## `prop`
|
|
the property that changed
|
|
<!-- trait TimelineElementExt::fn get_property_duration -->
|
|
The duration (in nanoseconds) which will be used in the container
|
|
<!-- trait TimelineElementExt::fn set_property_duration -->
|
|
The duration (in nanoseconds) which will be used in the container
|
|
<!-- trait TimelineElementExt::fn get_property_in-point -->
|
|
The in-point at which this `TimelineElement` will start outputting data
|
|
from its contents (in nanoseconds).
|
|
|
|
Ex : an in-point of 5 seconds means that the first outputted buffer will
|
|
be the one located 5 seconds in the controlled resource.
|
|
<!-- trait TimelineElementExt::fn set_property_in-point -->
|
|
The in-point at which this `TimelineElement` will start outputting data
|
|
from its contents (in nanoseconds).
|
|
|
|
Ex : an in-point of 5 seconds means that the first outputted buffer will
|
|
be the one located 5 seconds in the controlled resource.
|
|
<!-- trait TimelineElementExt::fn get_property_max-duration -->
|
|
The maximum duration (in nanoseconds) of the `TimelineElement`.
|
|
<!-- trait TimelineElementExt::fn set_property_max-duration -->
|
|
The maximum duration (in nanoseconds) of the `TimelineElement`.
|
|
<!-- trait TimelineElementExt::fn get_property_name -->
|
|
The name of the object
|
|
<!-- trait TimelineElementExt::fn set_property_name -->
|
|
The name of the object
|
|
<!-- trait TimelineElementExt::fn get_property_parent -->
|
|
The parent container of the object
|
|
<!-- trait TimelineElementExt::fn set_property_parent -->
|
|
The parent container of the object
|
|
<!-- trait TimelineElementExt::fn get_property_priority -->
|
|
The priority of the object.
|
|
|
|
Setting GESTimelineElement priorities is deprecated
|
|
as all priority management is done by GES itself now.
|
|
<!-- trait TimelineElementExt::fn set_property_priority -->
|
|
The priority of the object.
|
|
|
|
Setting GESTimelineElement priorities is deprecated
|
|
as all priority management is done by GES itself now.
|
|
<!-- trait TimelineElementExt::fn get_property_serialize -->
|
|
Whether the element should be serialized.
|
|
<!-- trait TimelineElementExt::fn set_property_serialize -->
|
|
Whether the element should be serialized.
|
|
<!-- trait TimelineElementExt::fn get_property_start -->
|
|
The position of the object in its container (in nanoseconds).
|
|
<!-- trait TimelineElementExt::fn set_property_start -->
|
|
The position of the object in its container (in nanoseconds).
|
|
<!-- trait TimelineElementExt::fn get_property_timeline -->
|
|
The timeline in which `element` is
|
|
<!-- trait TimelineElementExt::fn set_property_timeline -->
|
|
The timeline in which `element` is
|
|
<!-- struct Track -->
|
|
Corresponds to one output format (i.e. audio OR video).
|
|
|
|
Contains the compatible TrackElement(s).
|
|
|
|
# Implements
|
|
|
|
[`GESTrackExt`](trait.GESTrackExt.html), [`gst::ElementExt`](../gst/trait.ElementExt.html), [`gst::ObjectExt`](../gst/trait.ObjectExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait GESTrackExt -->
|
|
Trait containing all `Track` methods.
|
|
|
|
# Implementors
|
|
|
|
[`Track`](struct.Track.html)
|
|
<!-- impl Track::fn new -->
|
|
Creates a new `Track` with the given `type_` and `caps`.
|
|
|
|
The newly created track will steal a reference to the caps. If you wish to
|
|
use those caps elsewhere, you will have to take an extra reference.
|
|
## `type_`
|
|
The type of track
|
|
## `caps`
|
|
The caps to restrict the output of the track to.
|
|
|
|
# Returns
|
|
|
|
A new `Track`.
|
|
<!-- trait GESTrackExt::fn add_element -->
|
|
Adds the given object to the track. Sets the object's controlling track,
|
|
and thus takes ownership of the `object`.
|
|
|
|
An object can only be added to one track.
|
|
## `object`
|
|
the `TrackElement` to add
|
|
|
|
# Returns
|
|
|
|
`true` if the object was properly added. `false` if the track does not
|
|
want to accept the object.
|
|
<!-- trait GESTrackExt::fn commit -->
|
|
Commits all the pending changes of the TrackElement contained in the
|
|
track.
|
|
|
|
When timing changes happen in a timeline, the changes are not
|
|
directly done inside NLE. This method needs to be called so any changes
|
|
on a clip contained in the timeline actually happen at the media
|
|
processing level.
|
|
|
|
# Returns
|
|
|
|
`true` if something as been commited `false` if nothing needed
|
|
to be commited
|
|
<!-- trait GESTrackExt::fn get_caps -->
|
|
Get the `gst::Caps` this track is configured to output.
|
|
|
|
# Returns
|
|
|
|
The `gst::Caps` this track is configured to output.
|
|
<!-- trait GESTrackExt::fn get_elements -->
|
|
Gets the `TrackElement` contained in `self`
|
|
|
|
# Returns
|
|
|
|
the list of
|
|
`TrackElement` present in the Track sorted by priority and start.
|
|
<!-- trait GESTrackExt::fn get_mixing -->
|
|
Gets if the underlying `NleComposition` contains an expandable mixer.
|
|
|
|
# Returns
|
|
|
|
`True` if there is a mixer, `False` otherwise.
|
|
<!-- trait GESTrackExt::fn get_timeline -->
|
|
Get the `Timeline` this track belongs to. Can be `None`.
|
|
|
|
# Returns
|
|
|
|
The `Timeline` this track belongs to. Can be `None`.
|
|
<!-- trait GESTrackExt::fn remove_element -->
|
|
Removes the object from the track and unparents it.
|
|
Unparenting it means the reference owned by `self` on the `object` will be
|
|
removed. If you wish to use the `object` after this function, make sure you
|
|
call `gst::ObjectExt::ref` before removing it from the `self`.
|
|
## `object`
|
|
the `TrackElement` to remove
|
|
|
|
# Returns
|
|
|
|
`true` if the object was removed, else `false` if the track
|
|
could not remove the object (like if it didn't belong to the track).
|
|
<!-- trait GESTrackExt::fn set_create_element_for_gap_func -->
|
|
Sets the function that should be used to create the GstElement used to fill gaps.
|
|
To avoid to provide such a function we advice you to use the
|
|
`AudioTrack::new` and `VideoTrack::new` constructor when possible.
|
|
## `func`
|
|
The `GESCreateElementForGapFunc` that will be used
|
|
to create `gst::Element` to fill gaps
|
|
<!-- trait GESTrackExt::fn set_mixing -->
|
|
Sets if the `Track` should be mixing.
|
|
## `mixing`
|
|
TRUE if the track should be mixing, FALSE otherwise.
|
|
<!-- trait GESTrackExt::fn set_restriction_caps -->
|
|
Sets the given `caps` as the caps the track has to output.
|
|
## `caps`
|
|
the `gst::Caps` to set
|
|
<!-- trait GESTrackExt::fn set_timeline -->
|
|
Sets `timeline` as the timeline controlling `self`.
|
|
## `timeline`
|
|
a `Timeline`
|
|
<!-- trait GESTrackExt::fn update_restriction_caps -->
|
|
Updates the restriction caps by modifying all the fields present in `caps`
|
|
in the original restriction caps. If for example the current restriction caps
|
|
are video/x-raw, format=I420, width=360 and `caps` is video/x-raw, format=RGB,
|
|
the restriction caps will be updated to video/x-raw, format=RGB, width=360.
|
|
|
|
Modification happens for each structure in the new caps, and
|
|
one can add new fields or structures through that function.
|
|
## `caps`
|
|
the `gst::Caps` to update with
|
|
<!-- trait GESTrackExt::fn connect_track_element_added -->
|
|
Will be emitted after a track element was added to the track.
|
|
## `effect`
|
|
the `TrackElement` that was added.
|
|
<!-- trait GESTrackExt::fn connect_track_element_removed -->
|
|
Will be emitted after a track element was removed from the track.
|
|
## `effect`
|
|
the `TrackElement` that was removed.
|
|
<!-- trait GESTrackExt::fn get_property_caps -->
|
|
Caps used to filter/choose the output stream. This is generally set to
|
|
a generic set of caps like 'video/x-raw' for raw video.
|
|
|
|
Default value: `GST_CAPS_ANY`.
|
|
<!-- trait GESTrackExt::fn set_property_caps -->
|
|
Caps used to filter/choose the output stream. This is generally set to
|
|
a generic set of caps like 'video/x-raw' for raw video.
|
|
|
|
Default value: `GST_CAPS_ANY`.
|
|
<!-- trait GESTrackExt::fn get_property_duration -->
|
|
Current duration of the track
|
|
|
|
Default value: O
|
|
<!-- trait GESTrackExt::fn get_property_mixing -->
|
|
Whether layer mixing is activated or not on the track.
|
|
<!-- trait GESTrackExt::fn set_property_mixing -->
|
|
Whether layer mixing is activated or not on the track.
|
|
<!-- trait GESTrackExt::fn get_property_restriction-caps -->
|
|
Caps used to filter/choose the output stream.
|
|
|
|
Default value: `GST_CAPS_ANY`.
|
|
<!-- trait GESTrackExt::fn set_property_restriction-caps -->
|
|
Caps used to filter/choose the output stream.
|
|
|
|
Default value: `GST_CAPS_ANY`.
|
|
<!-- trait GESTrackExt::fn get_property_track-type -->
|
|
Type of stream the track outputs. This is used when creating the `Track`
|
|
to specify in generic terms what type of content will be outputted.
|
|
|
|
It also serves as a 'fast' way to check what type of data will be outputted
|
|
from the `Track` without having to actually check the `Track`'s caps
|
|
property.
|
|
<!-- trait GESTrackExt::fn set_property_track-type -->
|
|
Type of stream the track outputs. This is used when creating the `Track`
|
|
to specify in generic terms what type of content will be outputted.
|
|
|
|
It also serves as a 'fast' way to check what type of data will be outputted
|
|
from the `Track` without having to actually check the `Track`'s caps
|
|
property.
|
|
<!-- struct TrackElement -->
|
|
`TrackElement` is the Base Class for any object that can be contained in a
|
|
`Track`.
|
|
|
|
It contains the basic information as to the location of the object within
|
|
its container, like the start position, the inpoint, the duration and the
|
|
priority.
|
|
|
|
# Implements
|
|
|
|
[`TrackElementExt`](trait.TrackElementExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait TrackElementExt -->
|
|
Trait containing all `TrackElement` methods.
|
|
|
|
# Implementors
|
|
|
|
[`TrackElement`](struct.TrackElement.html)
|
|
<!-- trait TrackElementExt::fn add_children_props -->
|
|
Looks for the properties defines with the various parametters and add
|
|
them to the hashtable of children properties.
|
|
|
|
To be used by subclasses only
|
|
## `element`
|
|
The GstElement to retrieve properties from
|
|
## `wanted_categories`
|
|
|
|
An array of categories of GstElement to
|
|
take into account (as defined in the factory meta "klass" field)
|
|
## `blacklist`
|
|
A
|
|
blacklist of elements factory names to not take into account
|
|
## `whitelist`
|
|
A list
|
|
of propery names to add as children properties
|
|
<!-- trait TrackElementExt::fn edit -->
|
|
Edit `self` in the different exisiting `EditMode` modes. In the case of
|
|
slide, and roll, you need to specify a `Edge`
|
|
## `layers`
|
|
The layers you want the edit to
|
|
happen in, `None` means that the edition is done in all the
|
|
`GESLayers` contained in the current timeline.
|
|
FIXME: This is not implemented yet.
|
|
## `mode`
|
|
The `EditMode` in which the edition will happen.
|
|
## `edge`
|
|
The `Edge` the edit should happen on.
|
|
## `position`
|
|
The position at which to edit `self` (in nanosecond)
|
|
|
|
# Returns
|
|
|
|
`true` if the object as been edited properly, `false` if an error
|
|
occured
|
|
<!-- trait TrackElementExt::fn get_all_control_bindings -->
|
|
|
|
# Returns
|
|
|
|
A
|
|
`glib::HashTable` containing all property_name: GstControlBinding
|
|
<!-- trait TrackElementExt::fn get_child_properties -->
|
|
Gets properties of a child of `self`.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::get_child_properties`
|
|
## `first_property_name`
|
|
The name of the first property to get
|
|
<!-- trait TrackElementExt::fn get_child_property -->
|
|
In general, a copy is made of the property contents and
|
|
the caller is responsible for freeing the memory by calling
|
|
`gobject::Value::unset`.
|
|
|
|
Gets a property of a GstElement contained in `self`.
|
|
|
|
Note that `TrackElement::get_child_property` is really
|
|
intended for language bindings, `TrackElement::get_child_properties`
|
|
is much more convenient for C programming.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::get_child_property`
|
|
## `property_name`
|
|
The name of the property
|
|
## `value`
|
|
return location for the property value, it will
|
|
be initialized if it is initialized with 0
|
|
|
|
# Returns
|
|
|
|
`true` if the property was found, `false` otherwize
|
|
<!-- trait TrackElementExt::fn get_child_property_by_pspec -->
|
|
Gets a property of a child of `self`.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::get_child_property_by_pspec`
|
|
## `pspec`
|
|
The `gobject::ParamSpec` that specifies the property you want to get
|
|
## `value`
|
|
return location for the value
|
|
<!-- trait TrackElementExt::fn get_child_property_valist -->
|
|
Gets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::get_child_property_valist`
|
|
## `first_property_name`
|
|
The name of the first property to get
|
|
## `var_args`
|
|
value for the first property, followed optionally by more
|
|
name/return location pairs, followed by NULL
|
|
<!-- trait TrackElementExt::fn get_control_binding -->
|
|
Looks up the various controlled properties for that `TrackElement`,
|
|
and returns the `gst::ControlBinding` which controls `property_name`.
|
|
## `property_name`
|
|
The property_name to which the binding is associated.
|
|
|
|
# Returns
|
|
|
|
the `gst::ControlBinding` associated with
|
|
`property_name`, or `None` if that property is not controlled.
|
|
<!-- trait TrackElementExt::fn get_element -->
|
|
Get the `gst::Element` this track element is controlling within GNonLin.
|
|
|
|
# Returns
|
|
|
|
the `gst::Element` this track element is controlling
|
|
within GNonLin.
|
|
<!-- trait TrackElementExt::fn get_gnlobject -->
|
|
Get the NleObject object this object is controlling.
|
|
|
|
# Deprecated
|
|
|
|
use `TrackElementExt::get_nleobject` instead.
|
|
|
|
# Returns
|
|
|
|
the NleObject object this object is controlling.
|
|
<!-- trait TrackElementExt::fn get_nleobject -->
|
|
Get the GNonLin object this object is controlling.
|
|
|
|
# Returns
|
|
|
|
the GNonLin object this object is controlling.
|
|
<!-- trait TrackElementExt::fn get_track -->
|
|
Get the `Track` to which this object belongs.
|
|
|
|
# Returns
|
|
|
|
The `Track` to which this object
|
|
belongs. Can be `None` if it is not in any track
|
|
<!-- trait TrackElementExt::fn is_active -->
|
|
Lets you know if `self` will be used for playback and rendering,
|
|
or not.
|
|
|
|
# Returns
|
|
|
|
`true` if `self` is active, `false` otherwize
|
|
<!-- trait TrackElementExt::fn list_children_properties -->
|
|
Gets an array of `gobject::ParamSpec`* for all configurable properties of the
|
|
children of `self`.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::list_children_properties`
|
|
## `n_properties`
|
|
return location for the length of the returned array
|
|
|
|
# Returns
|
|
|
|
an array of `gobject::ParamSpec`* which should be freed after use or
|
|
`None` if something went wrong
|
|
<!-- trait TrackElementExt::fn lookup_child -->
|
|
Looks up which `element` and `pspec` would be effected by the given `name`. If various
|
|
contained elements have this property name you will get the first one, unless you
|
|
specify the class name in `name`.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::lookup_child`
|
|
## `prop_name`
|
|
name of the property to look up. You can specify the name of the
|
|
class as such: "ClassName::property-name", to guarantee that you get the
|
|
proper GParamSpec in case various GstElement-s contain the same property
|
|
name. If you don't do so, you will get the first element found, having
|
|
this property and the and the corresponding GParamSpec.
|
|
## `element`
|
|
pointer to a `gst::Element` that
|
|
takes the real object to set property on
|
|
## `pspec`
|
|
pointer to take the `gobject::ParamSpec`
|
|
describing the property
|
|
|
|
# Returns
|
|
|
|
TRUE if `element` and `pspec` could be found. FALSE otherwise. In that
|
|
case the values for `pspec` and `element` are not modified. Unref `element` after
|
|
usage.
|
|
<!-- trait TrackElementExt::fn remove_control_binding -->
|
|
Removes a `gst::ControlBinding` from `self`.
|
|
## `property_name`
|
|
The name of the property to control.
|
|
|
|
# Returns
|
|
|
|
`true` if the binding could be removed, `false` if an error
|
|
occured
|
|
<!-- trait TrackElementExt::fn set_active -->
|
|
Sets the usage of the `self`. If `active` is `true`, the object will be used for
|
|
playback and rendering, else it will be ignored.
|
|
## `active`
|
|
visibility
|
|
|
|
# Returns
|
|
|
|
`true` if the property was toggled, else `false`
|
|
<!-- trait TrackElementExt::fn set_child_properties -->
|
|
Sets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::set_child_properties`
|
|
## `first_property_name`
|
|
The name of the first property to set
|
|
<!-- trait TrackElementExt::fn set_child_property -->
|
|
Sets a property of a GstElement contained in `self`.
|
|
|
|
Note that `TrackElement::set_child_property` is really
|
|
intended for language bindings, `TrackElement::set_child_properties`
|
|
is much more convenient for C programming.
|
|
|
|
# Deprecated
|
|
|
|
use `TimelineElementExt::set_child_property` instead
|
|
## `property_name`
|
|
The name of the property
|
|
## `value`
|
|
the value
|
|
|
|
# Returns
|
|
|
|
`true` if the property was set, `false` otherwize
|
|
<!-- trait TrackElementExt::fn set_child_property_by_pspec -->
|
|
Sets a property of a child of `self`.
|
|
|
|
# Deprecated
|
|
|
|
Use `ges_timeline_element_set_child_property_by_spec`
|
|
## `pspec`
|
|
The `gobject::ParamSpec` that specifies the property you want to set
|
|
## `value`
|
|
the value
|
|
<!-- trait TrackElementExt::fn set_child_property_valist -->
|
|
Sets a property of a child of `self`. If there are various child elements
|
|
that have the same property name, you can distinguish them using the following
|
|
syntax: 'ClasseName::property_name' as property name. If you don't, the
|
|
corresponding property of the first element found will be set.
|
|
|
|
# Deprecated
|
|
|
|
Use `TimelineElementExt::set_child_property_valist`
|
|
## `first_property_name`
|
|
The name of the first property to set
|
|
## `var_args`
|
|
value for the first property, followed optionally by more
|
|
name/return location pairs, followed by NULL
|
|
<!-- trait TrackElementExt::fn set_control_source -->
|
|
Creates a `gst::ControlBinding` and adds it to the `gst::Element` concerned by the
|
|
property. Use the same syntax as `TrackElementExt::lookup_child` for
|
|
the property name.
|
|
## `source`
|
|
the `gst::ControlSource` to set on the binding.
|
|
## `property_name`
|
|
The name of the property to control.
|
|
## `binding_type`
|
|
The type of binding to create. Currently the following values are valid:
|
|
- "direct": See `gst_direct_control_binding_new`
|
|
- "direct-absolute": See `gst_direct_control_binding_new_absolute`
|
|
|
|
# Returns
|
|
|
|
`true` if the binding could be created and added, `false` if an error
|
|
occured
|
|
<!-- trait TrackElementExt::fn connect_control_binding_added -->
|
|
The control-binding-added signal is emitted each time a control binding
|
|
is added for a child property of `track_element`
|
|
## `control_binding`
|
|
the `gst::ControlBinding` that has been added
|
|
<!-- trait TrackElementExt::fn connect_control_binding_removed -->
|
|
The control-binding-removed signal is emitted each time a control binding
|
|
is removed for a child property of `track_element`
|
|
## `control_binding`
|
|
the `gst::ControlBinding` that has been removed
|
|
<!-- trait TrackElementExt::fn get_property_active -->
|
|
Whether the object should be taken into account in the `Track` output.
|
|
If `false`, then its contents will not be used in the resulting track.
|
|
<!-- trait TrackElementExt::fn set_property_active -->
|
|
Whether the object should be taken into account in the `Track` output.
|
|
If `false`, then its contents will not be used in the resulting track.
|
|
<!-- struct UriClip -->
|
|
Represents all the output streams from a particular uri. It is assumed that
|
|
the URI points to a file of some type.
|
|
|
|
# Implements
|
|
|
|
[`UriClipExt`](trait.UriClipExt.html), [`ClipExt`](trait.ClipExt.html), [`GESContainerExt`](trait.GESContainerExt.html), [`TimelineElementExt`](trait.TimelineElementExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html), [`ExtractableExt`](trait.ExtractableExt.html)
|
|
<!-- trait UriClipExt -->
|
|
Trait containing all `UriClip` methods.
|
|
|
|
# Implementors
|
|
|
|
[`UriClip`](struct.UriClip.html)
|
|
<!-- impl UriClip::fn new -->
|
|
Creates a new `UriClip` for the provided `uri`.
|
|
## `uri`
|
|
the URI the source should control
|
|
|
|
# Returns
|
|
|
|
The newly created `UriClip`, or
|
|
`None` if there was an error.
|
|
<!-- trait UriClipExt::fn get_uri -->
|
|
Get the location of the resource.
|
|
|
|
# Returns
|
|
|
|
The location of the resource.
|
|
<!-- trait UriClipExt::fn is_image -->
|
|
Lets you know if `self` is an image or not.
|
|
|
|
# Returns
|
|
|
|
`true` if `self` is a still image `false` otherwise.
|
|
<!-- trait UriClipExt::fn is_muted -->
|
|
Lets you know if the audio track of `self` is muted or not.
|
|
|
|
# Returns
|
|
|
|
`true` if the audio track of `self` is muted, `false` otherwise.
|
|
<!-- trait UriClipExt::fn set_is_image -->
|
|
Sets whether the clip is a still image or not.
|
|
## `is_image`
|
|
`true` if `self` is a still image, `false` otherwise
|
|
<!-- trait UriClipExt::fn set_mute -->
|
|
Sets whether the audio track of this clip is muted or not.
|
|
## `mute`
|
|
`true` to mute `self` audio track, `false` to unmute it
|
|
<!-- trait UriClipExt::fn get_property_is-image -->
|
|
Whether this uri clip represents a still image or not. This must be set
|
|
before create_track_elements is called.
|
|
<!-- trait UriClipExt::fn set_property_is-image -->
|
|
Whether this uri clip represents a still image or not. This must be set
|
|
before create_track_elements is called.
|
|
<!-- trait UriClipExt::fn get_property_mute -->
|
|
Whether the sound will be played or not.
|
|
<!-- trait UriClipExt::fn set_property_mute -->
|
|
Whether the sound will be played or not.
|
|
<!-- trait UriClipExt::fn get_property_uri -->
|
|
The location of the file/resource to use.
|
|
<!-- trait UriClipExt::fn set_property_uri -->
|
|
The location of the file/resource to use.
|
|
<!-- struct UriClipAsset -->
|
|
The `UriClipAsset` is a special `Asset` that lets you handle
|
|
the media file to use inside the GStreamer Editing Services. It has APIs that
|
|
let you get information about the medias. Also, the tags found in the media file are
|
|
set as Metadata of the Asset.
|
|
|
|
# Implements
|
|
|
|
[`UriClipAssetExt`](trait.UriClipAssetExt.html), [`AssetExt`](trait.AssetExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait UriClipAssetExt -->
|
|
Trait containing all `UriClipAsset` methods.
|
|
|
|
# Implementors
|
|
|
|
[`UriClipAsset`](struct.UriClipAsset.html)
|
|
<!-- impl UriClipAsset::fn finish -->
|
|
Finalize the request of an async `UriClipAsset`
|
|
## `res`
|
|
The `gio::AsyncResult` from which to get the newly created `UriClipAsset`
|
|
|
|
# Returns
|
|
|
|
The `UriClipAsset` previously requested
|
|
<!-- impl UriClipAsset::fn new -->
|
|
Creates a `UriClipAsset` for `uri`
|
|
|
|
Example of request of a GESUriClipAsset:
|
|
|
|
```text
|
|
// The request callback
|
|
static void
|
|
filesource_asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
|
|
{
|
|
GError *error = NULL;
|
|
GESUriClipAsset *filesource_asset;
|
|
|
|
filesource_asset = ges_uri_clip_asset_finish (res, &error);
|
|
if (filesource_asset) {
|
|
g_print ("The file: %s is usable as a FileSource, it is%s an image and lasts %" GST_TIME_FORMAT,
|
|
ges_asset_get_id (GES_ASSET (filesource_asset))
|
|
ges_uri_clip_asset_is_image (filesource_asset) ? "" : " not",
|
|
GST_TIME_ARGS (ges_uri_clip_asset_get_duration (filesource_asset));
|
|
} else {
|
|
g_print ("The file: %s is *not* usable as a FileSource because: %s",
|
|
ges_asset_get_id (source), error->message);
|
|
}
|
|
|
|
gst_object_unref (mfs);
|
|
}
|
|
|
|
// The request:
|
|
ges_uri_clip_asset_new (uri, (GAsyncReadyCallback) filesource_asset_loaded_cb, user_data);
|
|
```
|
|
## `uri`
|
|
The URI of the file for which to create a `UriClipAsset`
|
|
## `cancellable`
|
|
optional `gio::Cancellable` object, `None` to ignore.
|
|
## `callback`
|
|
a `GAsyncReadyCallback` to call when the initialization is finished
|
|
## `user_data`
|
|
The user data to pass when `callback` is called
|
|
<!-- impl UriClipAsset::fn request_sync -->
|
|
Creates a `UriClipAsset` for `uri` syncronously. You should avoid
|
|
to use it in application, and rather create `UriClipAsset` asynchronously
|
|
## `uri`
|
|
The URI of the file for which to create a `UriClipAsset`.
|
|
You can also use multi file uris for `MultiFileSource`.
|
|
|
|
# Returns
|
|
|
|
A reference to the requested asset or `None` if
|
|
an error happened
|
|
<!-- trait UriClipAssetExt::fn get_duration -->
|
|
Gets duration of the file represented by `self`
|
|
|
|
# Returns
|
|
|
|
The duration of `self`
|
|
<!-- trait UriClipAssetExt::fn get_info -->
|
|
Gets `gst_pbutils::DiscovererInfo` about the file
|
|
|
|
# Returns
|
|
|
|
`gst_pbutils::DiscovererInfo` of specified asset
|
|
<!-- trait UriClipAssetExt::fn get_stream_assets -->
|
|
Get the GESUriSourceAsset `self` containes
|
|
|
|
# Returns
|
|
|
|
a
|
|
`glib::List` of `UriSourceAsset`
|
|
<!-- trait UriClipAssetExt::fn is_image -->
|
|
Gets Whether the file represented by `self` is an image or not
|
|
|
|
# Returns
|
|
|
|
Whether the file represented by `self` is an image or not
|
|
<!-- trait UriClipAssetExt::fn get_property_duration -->
|
|
The duration (in nanoseconds) of the media file
|
|
<!-- trait UriClipAssetExt::fn set_property_duration -->
|
|
The duration (in nanoseconds) of the media file
|
|
<!-- struct UriSourceAsset -->
|
|
NOTE: You should never request such a `Asset` as they will be created automatically
|
|
by `UriClipAsset`-s.
|
|
|
|
# Implements
|
|
|
|
[`UriSourceAssetExt`](trait.UriSourceAssetExt.html), [`AssetExt`](trait.AssetExt.html), [`glib::object::ObjectExt`](../glib/object/trait.ObjectExt.html)
|
|
<!-- trait UriSourceAssetExt -->
|
|
Trait containing all `UriSourceAsset` methods.
|
|
|
|
# Implementors
|
|
|
|
[`UriSourceAsset`](struct.UriSourceAsset.html)
|
|
<!-- trait UriSourceAssetExt::fn get_filesource_asset -->
|
|
Get the `UriClipAsset` `self_` is contained in
|
|
|
|
# Returns
|
|
|
|
a `UriClipAsset`
|
|
<!-- trait UriSourceAssetExt::fn get_stream_info -->
|
|
Get the `gst_pbutils::DiscovererStreamInfo` user by `self`
|
|
|
|
# Returns
|
|
|
|
a `UriClipAsset`
|