Creates a new #GESEffect 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: #ges_asset_request (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL); and extract that asset to be in full control.
The gst-launch like bin description of the effect
Whether the effect of the element should be applied in its #GESTrackElement:track. If set to %FALSE, it will not be used in the output of the track.
The #GESAsset from which the object has been extracted
Whether the control sources on the element (see ges_track_element_set_control_source()) will be automatically updated whenever the #GESTimelineElement:in-point or out-point of the element change in value.
See ges_track_element_clamp_control_source() for how this is done per control source.
Default value: %TRUE
The description of the effect bin with a gst-launch-style pipeline description.
Example: "videobalance saturation=1.5 hue=+0.5"
The #GESTimelineElement:duration of the element
This property is used to determine whether the 'internal time' properties of the element have any meaning. In particular, unless this is set to %TRUE, the #GESTimelineElement:in-point and #GESTimelineElement:max-duration can not be set to any value other than the default 0 and #GST_CLOCK_TIME_NONE, respectively.
If an element has some internal timed source #GstElement that it reads stream data from as part of its function in a #GESTrack, then you'll likely want to set this to %TRUE to allow the #GESTimelineElement:in-point and #GESTimelineElement:max-duration to be set.
The default value is determined by the #GESTrackElementClass
default_has_internal_source
class property. For most
#GESSourceClass-es, this will be %TRUE, with the exception of those
that have a potentially static source, such as #GESImageSourceClass
and #GESTitleSourceClass. Otherwise, this will usually be %FALSE.
For most #GESOperation-s you will likely want to leave this set to %FALSE. The exception may be for an operation that reads some stream data from some private internal source as part of manipulating the input data from the usual linked upstream #GESTrackElement.
For example, you may want to set this to %TRUE for a #GES_TRACK_TYPE_VIDEO operation that wraps a #textoverlay that reads from a subtitle file and places its text on top of the received video data. The #GESTimelineElement:in-point of the element would be used to shift the initial seek time on the #textoverlay away from 0, and the #GESTimelineElement:max-duration could be set to reflect the time at which the subtitle file runs out of data.
Note that GES can not support track elements that have both internal content and manipulate the timing of their data streams (time effects).
The initial offset to use internally when outputting content (in nanoseconds, but in the time coordinates of the internal content).
For example, for a #GESVideoUriSource that references some media file, the "internal content" is the media file data, and the in-point would correspond to some timestamp in the media file. When playing the timeline, and when the element is first reached at timeline-time #GESTimelineElement:start, it will begin outputting the data from the timestamp in-point onwards, until it reaches the end of its #GESTimelineElement:duration in the timeline.
For elements that have no internal content, this should be kept as 0.
The #GESTimelineElement:in-point of the element
The full duration of internal content that is available (a time difference in nanoseconds using the time coordinates of the internal content).
This will act as a cap on the #GESTimelineElement:in-point of the element (which is in the same time coordinates), and will sometimes be used to limit the #GESTimelineElement:duration of the element in the timeline.
For example, for a #GESVideoUriSource that references some media file, this would be the length of the media file.
For elements that have no internal content, or whose content is indefinite, this should be kept as #GST_CLOCK_TIME_NONE.
The #GESTimelineElement:max-duration of the element
The #GESTimelineElement:name of the element
The #GESTimelineElement:parent of the element
The #GESTimelineElement:priority of the element
Whether the element should be serialized.
The #GESTimelineElement:start of the element
The #GESTimelineElement:timeline of the element
The track that this element belongs to, or %NULL if it does not belong to a track.
The track type of the element, which determines the type of track the element can be added to (see #GESTrack:track-type). This should correspond to the type of data that the element can produce or process.
Register a property of a child of the element to allow it to be written with ges_timeline_element_set_child_property() and read with ges_timeline_element_get_child_property(). A change in the property will also appear in the #GESTimelineElement::deep-notify signal.
pspec
should be unique from other children properties that have been
registered on self
.
The specification for the property to add
The #GstObject who the property belongs to
Adds all the properties of a #GstElement that match the criteria as
children properties of the track element. If the name of element'
s
#GstElementFactory is not in blacklist,
and the factory's
#GST_ELEMENT_METADATA_KLASS contains at least one member of
wanted_categories
(e.g. #GST_ELEMENT_FACTORY_KLASS_DECODER), then
all the properties of element
that are also in whitelist
are added as
child properties of self
using
ges_timeline_element_add_child_property().
This is intended to be used by subclasses when constructing.
The child object to retrieve properties from
An array of element factory "klass" categories to whitelist, or %NULL to accept all categories
A blacklist of element factory names, or %NULL to not blacklist any element factory
A whitelist of element property names, or %NULL to whitelist all writeable properties
Deserializes the given string, and adds and sets the found fields and their values on the container. The string should be the return of ges_meta_container_metas_to_string().
A string to deserialize and add to container
Creates a binding between source_property
on source
and target_property
on target
.
Whenever the source_property
is changed the target_property
is
updated using the same value. For instance:
g_object_bind_property (action, "active", widget, "sensitive", 0);
Will result in the "sensitive" property of the widget #GObject instance to be updated with the same value of the "active" property of the action #GObject instance.
If flags
contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
if target_property
on target
changes then the source_property
on source
will be updated as well.
The binding will automatically be removed when either the source
or the
target
instances are finalized. To remove the binding without affecting the
source
and the target
you can just call g_object_unref() on the returned
#GBinding instance.
Removing the binding by calling g_object_unref() on it must only be done if
the binding, source
and target
are only used from a single thread and it
is clear that both source
and target
outlive the binding. Especially it
is not safe to rely on this if the binding, source
or target
can be
finalized from different threads. Keep another reference to the binding and
use g_binding_unbind() instead to be on the safe side.
A #GObject can have multiple bindings.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
Creates a binding between source_property
on source
and target_property
on target,
allowing you to set the transformation functions to be used by
the binding.
This function is the language bindings friendly version of g_object_bind_property_full(), using #GClosures instead of function pointers.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
a #GClosure wrapping the transformation function from the source
to the target,
or %NULL to use the default
a #GClosure wrapping the transformation function from the target
to the source,
or %NULL to use the default
Checks whether the specified field has been registered as static, and gets the registered type and flags of the field, as used in ges_meta_container_register_meta() and ges_meta_container_register_static_meta().
The key for the container
field to check
Clamp the #GstTimedValueControlSource for the specified child property to lie between the #GESTimelineElement:in-point and out-point of the element. The out-point is the #GES_TIMELINE_ELEMENT_END of the element translated from the timeline coordinates to the internal source coordinates of the element.
If the property does not have a #GstTimedValueControlSource set by ges_track_element_set_control_source(), nothing happens. Otherwise, if a timed value for the control source lies before the in-point of the element, or after its out-point, then it will be removed. At the in-point and out-point times, a new interpolated value will be placed.
The name of the child property to clamp the control source of
Create a copy of self
. All the properties of self
are copied into
a new element, with the exception of #GESTimelineElement:parent,
#GESTimelineElement:timeline and #GESTimelineElement:name. Other data,
such the list of a #GESContainer's children, is not copied.
If deep
is %TRUE, then the new element is prepared so that it can be
used in ges_timeline_element_paste() or ges_timeline_paste_element().
In the case of copying a #GESContainer, this ensures that the children
of self
will also be pasted. The new element should not be used for
anything else and can only be used once in a pasting operation. In
particular, the new element itself is not an actual 'deep' copy of
self,
but should be thought of as an intermediate object used for a
single paste operation.
Whether the copy is needed for pasting
Edits the element within its track.
Edits the element within its timeline by adjusting its #GESTimelineElement:start, #GESTimelineElement:duration or #GESTimelineElement:in-point, and potentially doing the same for other elements in the timeline. See #GESEditMode for details about each edit mode. An edit may fail if it would place one of these properties out of bounds, or if it would place the timeline in an unsupported configuration.
Note that if you act on a #GESTrackElement, this will edit its parent
#GESClip instead. Moreover, for any #GESTimelineElement, if you select
#GES_EDGE_NONE for #GES_EDIT_MODE_NORMAL or #GES_EDIT_MODE_RIPPLE, this
will edit the toplevel instead, but still in such a way as to make the
#GESTimelineElement:start of self
reach the edit position
.
Note that if the element's timeline has a #GESTimeline:snapping-distance set, then the edit position may be snapped to the edge of some element under the edited element.
new_layer_priority
can be used to switch self,
and other elements
moved by the edit, to a new layer. New layers may be be created if the
the corresponding layer priority/index does not yet exist for the
timeline.
The priority/index of the layer self
should be moved to. -1 means no move
The edit mode
The edge of self
where the edit should occur
The edit position: a new location for the edge of self
(in nanoseconds) in the timeline coordinates
This function is intended for #GObject implementations to re-enforce a [floating][floating-ref] object reference. Doing this is seldom required: all #GInitiallyUnowneds are created with a floating reference which usually just needs to be sunken by calling g_object_ref_sink().
Calls the given function on each of the meta container's set metadata fields.
A function to call on each of container'
s set metadata fields
Increases the freeze count on object
. If the freeze count is
non-zero, the emission of "notify" signals on object
is
stopped. The signals are queued until the freeze count is decreased
to zero. Duplicate notifications are squashed so that at most one
#GObject::notify signal is emitted for each property modified while the
object is frozen.
This is necessary for accessors that modify multiple properties to prevent premature notification while the object is still being modified.
Get all the control bindings that have been created for the children properties of the track element using ges_track_element_set_control_source(). The keys used in the returned hash table are the child property names that were passed to ges_track_element_set_control_source(), and their values are the corresponding created #GstControlBinding.
Get the asset that has been set on the extractable object.
Gets #GESTrackElement:auto-clamp-control-sources.
Gets the current boolean value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the property of a child of the element.
property_name
can either be in the format "prop-name" or
"TypeName::prop-name", where "prop-name" is the name of the property
to get (as used in g_object_get()), and "TypeName" is the type name of
the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
useful when two children of different types share the same property
name.
The first child found with the given "prop-name" property that was
registered with ges_timeline_element_add_child_property() (and of the
type "TypeName", if it was given) will have the corresponding
property copied into value
.
Note that ges_timeline_element_get_child_properties() may be more convenient for C programming.
The name of the child property to get
Gets the property of a child of the element. Specifically, the property
corresponding to the pspec
used in
ges_timeline_element_add_child_property() is copied into value
.
The specification of a registered child property to get
Gets the control binding that was created for the specified child
property of the track element using
ges_track_element_set_control_source(). The given property_name
must
be the same name of the child property that was passed to
ges_track_element_set_control_source().
The name of the child property to return the control binding of
Gets a named field from the objects table of associations (see g_object_set_data()).
name of the key for that association
Gets the current double value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the #GESTimelineElement:duration for the element.
Gets the current float value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the #GESAsset:id of some associated asset. It may be the case that the object has no set asset, or even that such an asset does not yet exist in the GES cache. Instead, this will return the asset #GESAsset:id that is compatible with the current state of the object, as determined by the #GESExtractable implementer. If it was indeed extracted from an asset, this should return the same as its corresponding asset #GESAsset:id.
Gets the #GESTimelineElement:in-point for the element.
Gets the current int value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the current int64 value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the priority of the layer the element is in. A #GESGroup may span several layers, so this would return the highest priority (numerically, the smallest) amongst them.
Gets the current marker list value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the #GESTimelineElement:max-duration for the element.
Gets the current value of the specified field of the meta container.
The key for the container
field to get
Gets the #GESTimelineElement:name for the element.
Get the "natural" framerate of self
. This is to say, for example
for a #GESVideoUriSource the framerate of the source.
Note that a #GESAudioSource may also have a natural framerate if it derives from the same #GESSourceClip asset as a #GESVideoSource, and its value will be that of the video source. For example, if the uri of a #GESUriClip points to a file that contains both a video and audio stream, then the corresponding #GESAudioUriSource will share the natural framerate of the corresponding #GESVideoUriSource.
Gets the #GESTimelineElement:parent for the element.
Gets the #GESTimelineElement:priority for the element.
Gets a property of an object.
The value
can be:
In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset().
Note that g_object_get_property() is really intended for language bindings, g_object_get() is much more convenient for C programming.
the name of the property to get
return location for the property value
This function gets back user data pointers stored via g_object_set_qdata().
A #GQuark, naming the user data pointer
Gets the #GESTimelineElement:start for the element.
Gets the current string value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the toplevel #GESTimelineElement:parent of the element.
Get the #GESTrackElement:track for the element.
Gets the #GESTrackElement:track-type for the element.
Gets the track types that the element can interact with, i.e. the type of #GESTrack it can exist in, or will create #GESTrackElement-s for.
Gets the current uint value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets the current uint64 value of the specified field of the meta container. If the field does not have a set value, or it is of the wrong type, the method will fail.
The key for the container
field to get
Gets n_properties
properties for an object
.
Obtained properties will be set to values
. All properties must be valid.
Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
the names of each property to get
the values of each property to get
Gets #GESTrackElement:active for the element.
Get whether the given track element is a core track element. That is,
it was created by the create_track_elements
#GESClipClass method for
some #GESClip.
Note that such a track element can only be added to a clip that shares the same #GESAsset as the clip that created it. For example, you are allowed to move core children between clips that resulted from ges_container_ungroup(), but you could not move the core child from a #GESUriClip to a #GESTitleClip or another #GESUriClip with a different #GESUriClip:uri.
Moreover, if a core track element is added to a clip, it will always be
added as a core child. Therefore, if this returns %TRUE, then element
will be a core child of its parent clip.
Checks whether object
has a [floating][floating-ref] reference.
Get whether the effect is considered a time effect or not. An effect with registered time properties or set translation functions is considered a time effect.
Gets an array of #GParamSpec* for all configurable properties of the
children of object
.
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
.
Serializes the set metadata fields of the meta container to a string.
Emits a "notify" signal for the property property_name
on object
.
When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.
Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.
the name of a property installed on the class of object
.
Emits a "notify" signal for the property specified by pspec
on object
.
This function omits the property name lookup, hence it is faster than g_object_notify().
One way to avoid using g_object_notify() from within the class that registered the properties, and using g_object_notify_by_pspec() instead, is to store the GParamSpec used with g_object_class_install_property() inside a static array, e.g.:
enum
{
PROP_0,
PROP_FOO,
PROP_LAST
};
static GParamSpec *properties[PROP_LAST];
static void
my_object_class_init (MyObjectClass *klass)
{
properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
0, 100,
50,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_FOO,
properties[PROP_FOO]);
}
and then notify a change on the "foo" property with:
g_object_notify_by_pspec (self, properties[PROP_FOO]);
the #GParamSpec of a property installed on the class of object
.
Paste an element inside the same timeline and layer as self
. self
must be the return of ges_timeline_element_copy() with deep=TRUE
,
and it should not be changed before pasting.
self
is not placed in the timeline, instead a new element is created,
alike to the originally copied element. Note that the originally
copied element must stay within the same timeline and layer, at both
the point of copying and pasting.
Pasting may fail if it would place the timeline in an unsupported configuration.
After calling this function element
should not be used. In particular,
element
can not be pasted again. Instead, you can copy the
returned element and paste that copy (although, this is only possible
if the paste was successful).
See also ges_timeline_paste_element().
The position in the timeline element
should be pasted to, i.e. the #GESTimelineElement:start value for the pasted element.
Increase the reference count of object,
and possibly remove the
[floating][floating-ref] reference, if object
has a floating reference.
In other words, if the object is floating, then this call "assumes ownership" of the floating reference, converting it to a normal reference by clearing the floating flag while leaving the reference count unchanged. If the object is not floating, then this call adds a new normal reference increasing the reference count by one.
Since GLib 2.56, the type of object
will be propagated to the return type
under the same conditions as for g_object_ref().
Sets the value of the specified field of the meta container to the
given value, and registers the field to only hold a value of the
same type. After calling this, only values of the same type as value
can be set for this field. The given flags can be set to make this
field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given boolean value, and registers the field to only hold a boolean typed value. After calling this, only boolean values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given date value, and registers the field to only hold a date typed value. After calling this, only date values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given date time value, and registers the field to only hold a date time typed value. After calling this, only date time values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given double value, and registers the field to only hold a double typed value. After calling this, only double values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given float value, and registers the field to only hold a float typed value. After calling this, only float values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given int value, and registers the field to only hold an int typed value. After calling this, only int values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given int64 value, and registers the field to only hold an int64 typed value. After calling this, only int64 values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given string value, and registers the field to only hold a string typed value. After calling this, only string values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given uint value, and registers the field to only hold a uint typed value. After calling this, only uint values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Sets the value of the specified field of the meta container to the given uint64 value, and registers the field to only hold a uint64 typed value. After calling this, only uint64 values can be set for this field. The given flags can be set to make this field only readable after calling this method.
Flags to be used for the registered field
The key for the container
field to register
The value to set for the registered field
Registers a static metadata field on the container to only hold the specified type. After calling this, setting a value under this field can only succeed if its type matches the registered type of the field.
Unlike ges_meta_container_register_meta(), no (initial) value is set for this field, which means you can use this method to reserve the space to be optionally set later.
Note that if a value has already been set for the field being
registered, then its type must match the registering type, and its
value will be left in place. If the field has no set value, then
you will likely want to include #GES_META_WRITABLE in flags
to allow
the value to be set later.
Flags to be used for the registered field
The key for the container
field to register
The required value type for the registered field
Register a child property of the effect as a property that, when set, can change the timing of its input data. The child property should be specified as in ges_timeline_element_lookup_child().
You should also set the corresponding time translation using ges_base_effect_set_time_translation_funcs().
Note that effect
must not be part of a clip, nor can it have
#GESTrackElement:has-internal-source set to %TRUE.
The name of the child property to register as a time property
Remove a child property from the element. pspec
should be a
specification that was passed to
ges_timeline_element_add_child_property(). The corresponding property
will no longer be registered as a child property for the element.
The specification for the property to remove
Removes the #GstControlBinding that was created for the specified child
property of the track element using
ges_track_element_set_control_source(). The given property_name
must
be the same name of the child property that was passed to
ges_track_element_set_control_source().
The name of the child property to remove the control binding from
Edits the start time of an element within its timeline in ripple mode. See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and #GES_EDGE_NONE.
The new start time of self
in ripple mode
Edits the end time of an element within its timeline in ripple mode. See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and #GES_EDGE_END.
The new end time of self
in ripple mode
Edits the end time of an element within its timeline in roll mode. See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and #GES_EDGE_END.
The new end time of self
in roll mode
Edits the start time of an element within its timeline in roll mode. See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and #GES_EDGE_START.
The new start time of self
in roll mode
Releases all references to other objects. This can be used to break reference cycles.
This function should only be called from object system implementations.
Sets #GESTrackElement:active for the element.
Whether object
should be active in its track
Sets the asset for this extractable object.
When an object is extracted from an asset using ges_asset_extract() its
asset will be automatically set. Note that many classes that implement
#GESExtractable will automatically create their objects using assets
when you call their new
methods. However, you can use this method to
associate an object with a compatible asset if it was created by other
means and does not yet have an asset. Or, for some implementations of
#GESExtractable, you can use this to change the asset of the given
extractable object, which will lead to a change in its state to
match the new asset #GESAsset:id.
The asset to set
Sets #GESTrackElement:auto-clamp-control-sources. If set to %TRUE, this will immediately clamp all the control sources.
Whether to automatically clamp the control sources for the child properties of object
Sets the value of the specified field of the meta container to the given boolean value.
The key for the container
field to set
The value to set under meta_item
See ges_timeline_element_set_child_property_full(), which also gives an error.
Note that ges_timeline_element_set_child_properties() may be more convenient for C programming.
The name of the child property to set
The value to set the property to
Sets the property of a child of the element. Specifically, the property
corresponding to the pspec
used in
ges_timeline_element_add_child_property() is set to value
.
The specification of a registered child property to set
The value to set the property to
Sets the property of a child of the element.
property_name
can either be in the format "prop-name" or
"TypeName::prop-name", where "prop-name" is the name of the property
to set (as used in g_object_set()), and "TypeName" is the type name of
the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
useful when two children of different types share the same property
name.
The first child found with the given "prop-name" property that was
registered with ges_timeline_element_add_child_property() (and of the
type "TypeName", if it was given) will have the corresponding
property set to value
. Other children that may have also matched the
property name (and type name) are left unchanged!
The name of the child property to set
The value to set the property to
Creates a #GstControlBinding for the specified child property of the
track element using the given control source. The given property_name
should refer to an existing child property of the track element, as
used in ges_timeline_element_lookup_child().
If binding_type
is "direct", then the control binding is created with
gst_direct_control_binding_new() using the given control source. If
binding_type
is "direct-absolute", it is created with
gst_direct_control_binding_new_absolute() instead.
The control source to bind the child property to
The name of the child property to control
The type of binding to create ("direct" or "direct-absolute")
Each object carries around a table of associations from strings to pointers. This function lets you set an association.
If the object already had an association with that name, the old association will be destroyed.
Internally, the key
is converted to a #GQuark using g_quark_from_string().
This means a copy of key
is kept permanently (even after object
has been
finalized) — so it is recommended to only use a small, bounded set of values
for key
in your program, to avoid the #GQuark storage growing unbounded.
name of the key
data to associate with that key
Sets the value of the specified field of the meta container to the given double value.
The key for the container
field to set
The value to set under meta_item
Sets #GESTimelineElement:duration for the element.
Whilst the element is part of a #GESTimeline, this is the same as editing the element with ges_timeline_element_edit() under #GES_EDIT_MODE_TRIM with #GES_EDGE_END. In particular, the #GESTimelineElement:duration of the element may be snapped to a different timeline time difference from the one given. In addition, setting may fail if it would place the timeline in an unsupported configuration, or the element does not have enough internal content to last the desired duration.
The desired duration in its timeline
Sets the value of the specified field of the meta container to the given float value.
The key for the container
field to set
The value to set under meta_item
Sets #GESTrackElement:has-internal-source for the element. If this is set to %FALSE, this method will also set the #GESTimelineElement:in-point of the element to 0 and its #GESTimelineElement:max-duration to #GST_CLOCK_TIME_NONE.
Whether the object
should be allowed to have its 'internal time' properties set.
Sets #GESTimelineElement:in-point for the element. If the new in-point is above the current #GESTimelineElement:max-duration of the element, this method will fail.
The in-point, in internal time coordinates
Sets the value of the specified field of the meta container to the given int value.
The key for the container
field to set
The value to set under meta_item
Sets the value of the specified field of the meta container to the given int64 value.
The key for the container
field to set
The value to set under meta_item
Sets the value of the specified field of the meta container to the given marker list value.
The key for the container
field to set
The value to set under meta_item
Sets #GESTimelineElement:max-duration for the element. If the new maximum duration is below the current #GESTimelineElement:in-point of the element, this method will fail.
The maximum duration, in internal time coordinates
Sets the value of the specified field of the meta container to a
copy of the given value. If the given value
is %NULL, the field
given by meta_item
is removed and %TRUE is returned.
The key for the container
field to set
The value to set under meta_item,
or %NULL to remove the corresponding field
Sets the #GESTimelineElement:name for the element. If %NULL is given
for name,
then the library will instead generate a new name based on
the type name of the element, such as the name "uriclip3" for a
#GESUriClip, and will set that name instead.
If self
already has a #GESTimelineElement:timeline, you should not
call this function with name
set to %NULL.
You should ensure that, within each #GESTimeline, every element has a
unique name. If you call this function with name
as %NULL, then
the library should ensure that the set generated name is unique from
previously generated names. However, if you choose a name
that
interferes with the naming conventions of the library, the library will
attempt to ensure that the generated names will not conflict with the
chosen name, which may lead to a different name being set instead, but
the uniqueness between generated and user-chosen names is not
guaranteed.
The name self
should take
Sets the #GESTimelineElement:parent for the element.
This is used internally and you should normally not call this. A #GESContainer will set the #GESTimelineElement:parent of its children in ges_container_add() and ges_container_remove().
Note, if parent
is not %NULL, self
must not already have a parent
set. Therefore, if you wish to switch parents, you will need to call
this function twice: first to set the parent to %NULL, and then to the
new parent.
If parent
is not %NULL, you must ensure it already has a
(non-floating) reference to self
before calling this.
Sets the priority of the element within the containing layer.
The priority
Sets a property on an object.
the name of the property to set
the value
Sets #GESTimelineElement:start for the element. If the element has a parent, this will also move its siblings with the same shift.
Whilst the element is part of a #GESTimeline, this is the same as editing the element with ges_timeline_element_edit() under #GES_EDIT_MODE_NORMAL with #GES_EDGE_NONE. In particular, the #GESTimelineElement:start of the element may be snapped to a different timeline time from the one given. In addition, setting may fail if it would place the timeline in an unsupported configuration.
The desired start position of the element in its timeline
Sets the value of the specified field of the meta container to the given string value.
The key for the container
field to set
The value to set under meta_item
Set the time translation query functions for the time effect. If an
effect is a time effect, it will have two sets of coordinates: one
at its sink and one at its source. The given functions should be able
to translate between these two sets of coordinates. More specifically,
source_to_sink_func
should emulate how the corresponding #GstElement
would translate the #GstSegment time
field, and sink_to_source_func
should emulate how the corresponding #GstElement would translate the
seek query start
and stop
values, as used in gst_element_seek(). As
such, sink_to_source_func
should act as an approximate reverse of
source_to_sink_func
.
Note, these functions will be passed a table of time properties, as registered in ges_base_effect_register_time_property(), and their values. The functions should emulate what the translation would be if the time properties were set to the given values. They should not use the currently set values.
Note that effect
must not be part of a clip, nor can it have
#GESTrackElement:has-internal-source set to %TRUE.
The function to use for querying how a time is translated from the source coordinates to the sink coordinates of effect
The function to use for querying how a time is translated from the sink coordinates to the source coordinates of effect
Sets the #GESTimelineElement:timeline of the element.
This is used internally and you should normally not call this. A #GESClip will have its #GESTimelineElement:timeline set through its #GESLayer. A #GESTrack will similarly take care of setting the #GESTimelineElement:timeline of its #GESTrackElement-s. A #GESGroup will adopt the same #GESTimelineElement:timeline as its children.
If timeline
is %NULL, this will stop its current
#GESTimelineElement:timeline from tracking it, otherwise timeline
will
start tracking self
. Note, in the latter case, self
must not already
have a timeline set. Therefore, if you wish to switch timelines, you
will need to call this function twice: first to set the timeline to
%NULL, and then to the new timeline.
Sets the #GESTrackElement:track-type for the element.
The new track-type for object
Sets the value of the specified field of the meta container to the given uint value.
The key for the container
field to set
The value to set under meta_item
Sets the value of the specified field of the meta container to the given uint64 value.
The key for the container
field to set
The value to set under meta_item
Remove a specified datum from the object's data associations, without invoking the association's destroy handler.
name of the key
This function gets back user data pointers stored via
g_object_set_qdata() and removes the data
from object
without invoking its destroy() function (if any was
set).
Usually, calling this function is only required to update
user data pointers with a destroy notifier, for example:
void
object_add_to_user_list (GObject *object,
const gchar *new_string)
{
// the quark, naming the object data
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
// retrieve the old string list
GList *list = g_object_steal_qdata (object, quark_string_list);
// prepend new string
list = g_list_prepend (list, g_strdup (new_string));
// this changed 'list', so we need to set it again
g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
}
static void
free_string_list (gpointer data)
{
GList *node, *list = data;
for (node = list; node; node = node->next)
g_free (node->data);
g_list_free (list);
}
Using g_object_get_qdata() in the above example, instead of g_object_steal_qdata() would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().
A #GQuark, naming the user data pointer
Reverts the effect of a previous call to
g_object_freeze_notify(). The freeze count is decreased on object
and when it reaches zero, queued "notify" signals are emitted.
Duplicate notifications for each property are squashed so that at most one #GObject::notify signal is emitted for each property, in the reverse order in which they have been queued.
It is an error to call this function when the freeze count is zero.
Edits the start time of an element within its timeline in trim mode. See ges_timeline_element_edit() with #GES_EDIT_MODE_TRIM and #GES_EDGE_START.
The new start time of self
in trim mode
Decreases the reference count of object
. When its reference count
drops to 0, the object is finalized (i.e. its memory is freed).
If the pointer to the #GObject may be reused in future (for example, if it is an instance variable of another object), it is recommended to clear the pointer to %NULL rather than retain a dangling pointer to a potentially invalid #GObject instance. Use g_clear_object() for this.
This function essentially limits the life time of the closure
to
the life time of the object. That is, when the object is finalized,
the closure
is invalidated by calling g_closure_invalidate() on
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also, g_object_ref() and g_object_unref() are
added as marshal guards to the closure,
to ensure that an extra
reference count is held on object
during invocation of the
closure
. Usually, this function will be called on closures that
use this object
as closure data.
#GClosure to watch
Find the #GParamSpec with the given name for an
interface. Generally, the interface vtable passed in as g_iface
will be the default vtable from g_type_default_interface_ref(), or,
if you know the interface has already been loaded,
g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
name of a property to look up.
Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created #GParamSpec, but normally g_object_class_override_property() will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.
This function is meant to be called from the interface's default
vtable initialization function (the class_init
member of
#GTypeInfo.) It must not be called after after class_init
has
been called for any object types implementing this interface.
If pspec
is a floating reference, it will be consumed.
any interface vtable for the interface, or the default vtable for the interface.
the #GParamSpec for the new property
Lists the properties of an interface.Generally, the interface
vtable passed in as g_iface
will be the default vtable from
g_type_default_interface_ref(), or, if you know the interface has
already been loaded, g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
Creates a new #GESEffect 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: #ges_asset_request (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL); and extract that asset to be in full control.
The gst-launch like bin description of the effect
Creates a new instance of a #GObject subtype and sets its properties.
Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY) which are not explicitly specified are set to their default values.
the type id of the #GObject subtype to instantiate
an array of #GParameter
Register an element that can change the rate at which media is playing. The property type must be float or double, and must be a factor of the rate, i.e. a value of 2.0 must mean that the media plays twice as fast. Several properties may be registered for a single element type, provided they all contribute to the rate as independent factors. For example, this is true for the "GstPitch::rate" and "GstPitch::tempo" properties. These are already registered by default in GES, along with #videorate:rate for #videorate and #scaletempo:rate for #scaletempo.
If such a rate property becomes a child property of a #GESEffect upon its creation (the element is part of its #GESEffect:bin-description), it will be automatically registered as a time property (see ges_base_effect_register_time_property()) and will have its time translation functions set (see ges_base_effect_set_time_translation_funcs()) to use the overall rate of the rate properties. Note that if an effect contains a rate property as well as a non-rate time property, you should ensure to set the time translation functions to some other methods using ges_base_effect_set_time_translation_funcs().
Note, you can obtain a reference to the GESEffectClass using
GES_EFFECT_CLASS (g_type_class_ref (GES_TYPE_EFFECT));
The #GstElementFactory name of the element that changes the rate
The name of the property that changes the rate
Currently we only support effects with N sinkpads and one single srcpad. Apart from
gesaudiomixer
andgescompositor
which can be used as effects and where sinkpads will be requested as needed based on the timeline topology GES will always request at most one sinkpad per effect (when required).