The Assets in the GStreamer Editing Services represent the resources that can be used. You can create assets for any type that implements the #GESExtractable interface, for example #GESClips, #GESFormatter, and #GESTrackElement do implement it. This means that assets will represent for example a #GESUriClips, #GESBaseEffect etc, and then you can extract objects of those types with the appropriate parameters from the asset using the #ges_asset_extract method: |[ 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 #GESAsset 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 #GESAsset through the #GESMetaContainer interface and you have a model for your custom effects. Note that #GESAsset management is making easier thanks to the #GESProject class. Each asset is represented by a pair of @extractable_type and @id (string). Actually the @extractable_type is the type that implements the #GESExtractable interface, that means that for example for a #GESUriClip, the type that implements the #GESExtractable interface is #GESClip. 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 #GESAsset actually represents for that type. By default, we only have one #GESAsset 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 #GESEffect 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 #GESAsset 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: |[ 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 ges_asset_request() or ges_asset_request_async(). All the #GESAssets are cached and thus any asset that has already been created can be requested again without overhead. 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. %TRUE if the asset was in the cache and could be set as needing reload, %FALSE otherwise. The #GType of the object that can be extracted from the asset to be reloaded. The identifier of the asset to mark as needing reload Create a #GESAsset 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 #ges_uri_clip_asset_request_sync method if you really want to. A reference to the wanted #GESAsset or %NULL The #GType of the object that can be extracted from the new asset. The Identifier or %NULL Request a new #GESAsset 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: |[ // 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); ]| The #GType of the object that can be extracted from the new asset. The class must implement the #GESExtractable interface. 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 %NULL), 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 #GESExtractable type you want to create a #GESAsset for. optional %GCancellable object, %NULL to ignore. a #GAsyncReadyCallback to call when the initialization is finished, Note that the @source of the callback will be the #GESAsset, but you need to make sure that the asset is properly loaded using the #ges_asset_request_finish method. This asset can not be used as is. The user data to pass when @callback is called Finalize the request of an async #GESAsset The #GESAsset previously requested The #GAsyncResult from which to get the newly created #GESAsset Extracts a new #GObject 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 #ges_asset_get_extractable_type A newly created #GESExtractable The #GESAsset to get extract an object from Extracts a new #GObject 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 #ges_asset_get_extractable_type A newly created #GESExtractable The #GESAsset to get extract an object from The #GError of the asset or %NULL if the asset was loaded without issue The asset to retrieve the error from Gets the type of object that can be extracted from @self the type of object that can be extracted from @self The #GESAsset Gets the ID of a #GESAsset The ID of @self The #GESAsset to get ID from The proxy in use for @asset The #GESAsset to get currenlty used proxy The #GESAsset that is proxied by @proxy The #GESAsset from which to get the the asset it proxies. The list of proxies @asset has. Note that the default asset to be used is always the first in that list. The #GESAsset to get proxies from A proxying asset is an asset that can substitue the real @asset. For example if you have a full HD #GESUriClipAsset you might want to set a lower resolution (HD version of the same file) as proxy. Note that when an asset is proxied, calling #ges_asset_request will actually return the proxy asset. %TRUE if @proxy has been set on @asset, %FALSE otherwise. The #GESAsset to set proxy on The #GESAsset that should be used as default proxy for @asset or %NULL if you want to use the currently set proxy. Note that an asset can proxy one and only one other asset. Removes @proxy from the list of known proxies for @asset. If @proxy was the current proxy for @asset, stop using it. %TRUE if @proxy was a known proxy for @asset, %FALSE otherwise. The #GESAsset to stop proxying with @proxy The #GESAsset to stop considering as a proxy for @asset A newly created #GESExtractable The #GESAsset to get extract an object from ## Children Properties You can use the following children properties through the #ges_track_element_set_child_property and alike set of methods: <informaltable frame="none"> <tgroup cols="3"> <colspec colname="properties_type" colwidth="150px"/> <colspec colname="properties_name" colwidth="200px"/> <colspec colname="properties_flags" colwidth="400px"/> <tbody> <row> <entry role="property_type"><link linkend="gdouble"><type>double</type></link></entry> <entry role="property_name"><link linkend="GESAudioSource--volume">volume</link></entry> <entry>volume factor, 1.0=100%.</entry> </row> <row> <entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry> <entry role="property_name"><link linkend="GESAudioSource--mute">mute</link></entry> <entry>mute channel.</entry> </row> </tbody> </tgroup> </informaltable> Outputs a test audio stream using audiotestsrc. The default property values output silence. Useful for testing pipelines, or to fill gaps in an audio track. Get the current frequency of @self. The current frequency of @self. a #GESAudioTestSource Get the current volume of @self. The current volume of @self a #GESAudioTestSource Lets you set the frequency applied on the track element a #GESAudioTestSource The frequency you want to apply on @self Sets the volume of the test audio signal. a #GESAudioTestSource The volume you want to apply on @self Sane default properties to specify and fixate the output stream are set as restriction-caps. It is advised, to modify these properties, to use #ges_track_update_restriction_caps, setting them directly is possible through #ges_track_set_restriction_caps, but not specifying one of them can lead to negotiation issues, only use that function if you actually know what you're doing :) The default properties are: - format: S32LE - channels: 2 - rate: 44100 - layout: interleaved Creates a new #GESAudioTrack of type #GES_TRACK_TYPE_AUDIO and with generic raw audio caps ("audio/x-raw"); A new #GESTrack Creates a new #GESAudioTransition. The newly created #GESAudioTransition. The location of the file/resource to use. parent class The effect will be applied on the sources that have lower priorities (higher number) between the inpoint and the end of it. A #GESClip is a 'natural' object which controls one or more #GESTrackElement(s) in one or more #GESTrack(s). Keeps a reference to the #GESTrackElement(s) it created and sets/updates their properties. the #GESTrackElement to be used, or %NULL if it can't provide one for the given @track. a #GESClip a #GESTrackType %TRUE on success %FALSE on failure. a #GESClip a #GESTrackType Extracts a #GESTrackElement from @asset and adds it to the @clip. Should only be called in order to add operations to a #GESClip, ni other cases TrackElement are added automatically when adding the #GESClip/#GESAsset to a layer. Takes a reference on @track_element. Created #GESTrackElement or NULL if an error happened a #GESClip a #GESAsset with #GES_TYPE_TRACK_ELEMENT as extractable_type Finds the #GESTrackElement controlled by @clip 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. The #GESTrackElement used by @track, else %NULL. Unref after usage a #GESClip a #GESTrack or NULL a #GType indicating the type of track element you are looking for or %G_TYPE_NONE if you do not care about the track type. Finds all the #GESTrackElement controlled by @clip that is used in @track. You may optionally specify a GType to further narrow search criteria. a #GList of the #GESTrackElement contained in @clip. The refcount of the objects will be increased. The user will have to unref each #GESTrackElement and free the #GList. a #GESClip a #GESTrack or NULL a #GESTrackType indicating the type of tracks in which elements should be searched. a #GType indicating the type of track element you are looking for or %G_TYPE_NONE if you do not care about the track type. Get the #GESLayer to which this clip belongs. The #GESLayer where this @clip is being used, or %NULL if it is not used on any layer. The caller should unref it usage. a #GESClip Get the formats supported by @clip. The formats supported by @clip. the #GESClip Gets the index position of an effect. The top index of the effect, -1 if something went wrong. The origin #GESClip The #GESBaseEffect we want to get the top index from Get effects applied on @clip a #GList of the #GESBaseEffect that are applied on @clip order by ascendant priorities. The refcount of the objects will be increased. The user will have to unref each #GESBaseEffect and free the #GList. The origin #GESClip Moves @clip to @layer. If @clip is not in any layer, it adds it to @layer, else, it removes it from its current layer, and adds it to @layer. %TRUE if @clip could be moved %FALSE otherwize a #GESClip the new #GESLayer Sets the formats supported by the file. the #GESClip to set supported formats on the #GESTrackType defining formats supported by @clip This is a convenience method that lets you set the index of a top effect. %TRUE if @effect was successfuly moved, %FALSE otherwise. The origin #GESClip The #GESBaseEffect to move the new index at which to move the @effect inside this #GESClip The function modifies @clip, and creates another #GESClip 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 @clip is in. This implies that @clip must be in a #GESLayer 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 #GESEffect '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 @ges_effect_class_register_rate_property; for the 'pitch' plugin, this is already done. The newly created #GESClip resulting from the splitting or %NULL if the clip can't be split. the #GESClip to split a #GstClockTime representing the timeline position at which to split 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. The formats supported by the clip. The #GESUriClipAsset is a special #GESAsset specilized in #GESClip. it is mostly used to get information about the #GESTrackType-s the objects extracted from it can potentialy create #GESTrackElement for. Gets track types for which objects extracted from @self can create #GESTrackElement The track types on which @self will create TrackElement when added to a layer a #GESClipAsset Sets track types for which objects extracted from @self can create #GESTrackElement a #GESClipAsset The track types supported by the GESClipAsset The formats supported by the asset. Subclasses can override the @create_track_element. method to create a single #GESTrackElement for a given #GESTrack. method to create multiple #GESTrackElements for a #GESTrack. The #GESContainer base class. Groups the #GESContainer-s provided in @containers. It creates a subclass of #GESContainer, depending on the containers provided in @containers. Basically, if all the containers in @containers should be contained in a same clip (all the #GESTrackElement they contain have the exact same start/inpoint/duration and are in the same layer), it will create a #GESClip otherwise a #GESGroup will be created The #GESContainer (subclass) resulting of the grouping The #GESContainer to group, they must all be in a same #GESTimeline Edit @container in the different exisiting #GESEditMode modes. In the case of slide, and roll, you need to specify a #GESEdge %TRUE if the container as been edited properly, %FALSE if an error occured the #GESClip to edit The layers you want the edit to happen in, %NULL means that the edition is done in all the #GESLayers contained in the current timeline. The priority of the layer @container 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. The #GESEditMode in which the editition will happen. The #GESEdge the edit should happen on. The position at which to edit @container (in nanosecond) Ungroups the #GESTimelineElement contained in this GESContainer, creating new #GESContainer containing those #GESTimelineElement apropriately. The list of #GESContainer resulting from the ungrouping operation The user is responsible for unreffing the contained objects and freeing the list. The #GESContainer to ungroup Wether to recursively ungroup @container Add the #GESTimelineElement to the container. %TRUE on success, %FALSE on failure. a #GESContainer the #GESTimelineElement Edit @container in the different exisiting #GESEditMode modes. In the case of slide, and roll, you need to specify a #GESEdge %TRUE if the container as been edited properly, %FALSE if an error occured the #GESClip to edit The layers you want the edit to happen in, %NULL means that the edition is done in all the #GESLayers contained in the current timeline. The priority of the layer @container 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. The #GESEditMode in which the editition will happen. The #GESEdge the edit should happen on. The position at which to edit @container (in nanosecond) Get the list of #GESTimelineElement contained in @container The user is responsible for unreffing the contained objects and freeing the list. The list of timeline element contained in @container. a #GESContainer Whether to recursively get children in @container Release the @child from the control of @container. %TRUE if the @child was properly released, else %FALSE. a #GESContainer the #GESTimelineElement to release Ungroups the #GESTimelineElement contained in this GESContainer, creating new #GESContainer containing those #GESTimelineElement apropriately. The list of #GESContainer resulting from the ungrouping operation The user is responsible for unreffing the contained objects and freeing the list. The #GESContainer to ungroup Wether to recursively ungroup @container The span of priorities which this container occupies. A list of TimelineElement controlled by this Container. NOTE: Do not modify. The span of priorities this container occupies 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. the #GESTimelineElement that was added. Will be emitted after a child was removed from @container. the #GESTimelineElement that was removed. The list of #GESContainer resulting from the ungrouping operation The user is responsible for unreffing the contained objects and freeing the list. The #GESContainer to ungroup Wether to recursively ungroup @container %TRUE if the container as been edited properly, %FALSE if an error occured the #GESClip to edit The layers you want the edit to happen in, %NULL means that the edition is done in all the #GESLayers contained in the current timeline. The priority of the layer @container 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. The #GESEditMode in which the editition will happen. The #GESEdge the edit should happen on. The position at which to edit @container (in nanosecond) A function that will be called to create the #GstElement that will be used as a source to fill the gaps in @track. A #GstElement (must be a source) that will be used to fill the gaps (periods of time in @track that containes no source). the #GESTrack Creates the 'primary' track element for this @clip. Subclasses should implement this method if they only provide a single #GESTrackElement per track. If the subclass needs to create more than one #GESTrackElement for a given track, then it should implement the 'create_track_elements' method instead. The implementer of this function shall return the proper #GESTrackElement that should be controlled by @clip for the given @track. The returned #GESTrackElement will be automatically added to the list of objects controlled by the #GESClip. the #GESTrackElement to be used, or %NULL if it can't provide one for the given @track. a #GESClip a #GESTrackType Create all track elements this clip handles for this type of track. Subclasses should implement this method if they potentially need to return more than one #GESTrackElement(s) for a given #GESTrack. %TRUE on success %FALSE on failure. a #GESClip a #GESTrackType The edges of an object contain in a #GESTimeline or #GESTrack Represents the start of an object. Represents the end of an object. Represent the fact we are not workin with any edge of an object. 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>. The object is edited the normal way (default). 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. 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. 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. 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) 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. a newly created #GESEffect, or %NULL if something went wrong. The gst-launch like bin description of the effect The description of the effect bin with a gst-launch-style pipeline description. Example: "videobalance saturation=1.5 hue=+0.5" parent class 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. For example, this is true for the properties 'rate' and 'tempo' of the element 'pitch', which is already registered by default. By registering the element, timeline duration can be correctly converted into media duration, allowing the right segment seeks to be sent to the sources. A reference to the GESEffectClass can be obtained as follows: GES_EFFECT_CLASS (g_type_class_ref (GES_TYPE_EFFECT)); whether the rate property was succesfully registered. When this method returns false, a warning is emitted with more information. Instance of the GESEffectClass Name of the GstElement that changes the rate Name of the property that changes the rate The effect will be applied on the sources that have lower priorities (higher number) between the inpoint and the end of it. Creates a new #GESEffectClip from the description of the bin. a newly created #GESEffectClip, or %NULL if something went wrong. The gst-launch like bin description of the effect The gst-launch like bin description of the effect The description of the audio track of the effect bin with a gst-launch-style pipeline description. This should be used for test purposes. Example: "audiopanorama panorama=1.0" The description of the video track of the effect bin with a gst-launch-style pipeline description. This should be used for test purposes. Example: "videobalance saturation=1.5 hue=+0.5" The ID passed is malformed An error happened while loading the asset The formatted files was malformed FIXME: Long description needed The #id of the associated #GESAsset, free with #g_free The #GESExtractable Method for getting an asset from a #GESExtractable The #GESAsset or %NULL if none has been set The #GESExtractable from which to retrieve a #GESAsset The #id of the associated #GESAsset, free with #g_free The #GESExtractable Method to set the asset which instantiated the specified object %TRUE if @asset could be set %FALSE otherwize Target object The #GESAsset to set The ID to use for the asset or %NULL if @id is not valid The #GType to check @id for: The id to check The #id of the associated #GESAsset, free with #g_free The #GESExtractable A function that will be called when the GNonLin object of a corresponding track element needs to be filled. The implementer of this function shall add the proper #GstElement to @nleobj using gst_bin_add(). TRUE if the implementer succesfully filled the @nleobj, else #FALSE. the #GESClip controlling the track elements the #GESTrackElement the GNonLin object that needs to be filled. Base class for timeline data serialization and deserialization. Checks if there is a #GESFormatter available which can load a #GESTimeline from the given URI. TRUE if there is a #GESFormatter that can support the given uri or FALSE if not. a #gchar * pointing to the URI Returns TRUE if there is a #GESFormatter available which can save a #GESTimeline to the given URI. TRUE if the given @uri is supported, else FALSE. a #gchar * pointing to a URI Get the default #GESAsset to use as formatter. It will return the asset for the #GESFormatter that has the highest @rank The #GESAsset for the formatter with highest @rank Load data from the given URI into timeline. TRUE if the timeline data was successfully loaded from the URI, else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI Save data from timeline to the given URI. TRUE if the timeline data was successfully saved to the URI else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI %TRUE to overwrite file if it exists Load data from the given URI into timeline. TRUE if the timeline data was successfully loaded from the URI, else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI Save data from timeline to the given URI. TRUE if the timeline data was successfully saved to the URI else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI %TRUE to overwrite file if it exists GES Formatter class. Override the vmethods to implement the formatter functionnality. the parent class structure Whether the URI can be loaded class method to deserialize data from a URI class method to serialize data to a URI Virtual method for loading a timeline from a given URI. Every #GESFormatter subclass needs to implement this method. TRUE if the timeline data was successfully loaded from the URI, else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI Virtual method for saving a timeline to a uri. Every #GESFormatter subclass needs to implement this method. TRUE if the timeline data was successfully saved to the URI else FALSE. a #GESFormatter a #GESTimeline a #gchar * pointing to a URI %TRUE to overwrite file if it exists A #GESGroup is an object which controls one or more #GESClips in one or more #GESLayer(s). To instanciate a group, you should use the ges_container_group method, this will be responsible for deciding what subclass of #GESContainer should be instaciated to group the various #GESTimelineElement passed in parametter. Created a new empty #GESGroup, if you want to group several container together, it is recommanded to use the #ges_container_group method so the proper subclass is selected. The new empty group. The duration (in nanoseconds) which will be used in the container The in-point at which this #GESGroup 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. The maximum duration (in nanoseconds) of the #GESGroup. The position of the object in its container (in nanoseconds). Outputs the video stream from a given file as a still frame. The frame chosen will be determined by the in-point property on the track element. For image files, do not set the in-point property. The location of the file/resource to use. 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. Creates a new #GESLayer. A new #GESLayer Creates Clip from asset, adds it to layer and returns a reference to it. Created #GESClip a #GESLayer The asset to add to The start value to set on the new #GESClip, if @start == GST_CLOCK_TIME_NONE, it will be set to the current duration of @layer The inpoint value to set on the new #GESClip The duration value to set on the new #GESClip The #GESTrackType to set on the the new #GESClip 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 #GESTrackElement) are constructed, you should connect to the container::child-added signal which is emited right after those elements are ready to be used. %TRUE if the clip was properly added to the layer, or %FALSE if the @layer refuses to add the clip. a #GESLayer the #GESClip to add. Gets whether transitions are automatically added when objects overlap or not. %TRUE if transitions are automatically added, else %FALSE. a #GESLayer Get the clips this layer contains. a #GList of clips. The user is responsible for unreffing the contained objects and freeing the list. a #GESLayer Gets the clips which appear between @start and @end on @layer. a #GList of clips intersecting [@start, @end) interval on @layer. a #GESLayer start of the interval end of the interval Lets you retrieve the duration of the layer, which means the end time of the last clip inside it The duration of a layer The #GESLayer to get the duration from Get the priority of @layer within the timeline. The priority of the @layer within the timeline. a #GESLayer Get the #GESTimeline in which #GESLayer currently is. the #GESTimeline in which #GESLayer currently is or %NULL if not in any timeline yet. The #GESLayer to get the parent #GESTimeline from Convenience method to check if @layer is empty (doesn't contain any clip), or not. %TRUE if @layer is empty, %FALSE if it already contains at least one #GESClip The #GESLayer to check Removes the given @clip from the @layer and unparents it. Unparenting it means the reference owned by @layer on the @clip will be removed. If you wish to use the @clip after this function, make sure you call gst_object_ref() before removing it from the @layer. %TRUE if the clip could be removed, %FALSE if the layer does not want to remove the clip. a #GESLayer the #GESClip to remove Sets the layer to the given @auto_transition. See the documentation of the property auto_transition for more information. a #GESLayer whether the auto_transition is active Sets the layer to the given @priority. See the documentation of the priority property for more information. use #ges_timeline_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. a #GESLayer the priority to set Sets whether transitions are added automagically when clips overlap. The priority of the layer in the #GESTimeline. 0 is the highest priority. Conceptually, a #GESTimeline 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 #ges_timeline_commit) for the change to be taken into account. use #ges_timeline_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. the #GESTimeline where this layer is being used. Will be emitted after the clip was added to the layer. the #GESClip that was added. Will be emitted after the clip was removed from the layer. the #GESClip that was removed Subclasses can override the @get_objects if they can provide a more efficient way of providing the list of contained #GESClip(s). The description of an object, can be used in various context (string) The description The extension of the files produced by a formatter (string) Mimetype used for the file produced by a formatter (string) The mime type Name of a formatter it is used as ID of Formater assets (string) The name of the formatter The rank of a formatter (GstRank) The rank of a formatter The version of a formatter (double) The formatter version The version of the format in which a project is serialized The volume, can be used for audio track or layers The volume for a track or a layer, it is register as a float The default volume The default volume for a track or a layer as a float Interface that allows reading and writing meta Deserializes a meta container. TRUE on success, FALSE if there was an error. Target container a string created with ges_meta_container_metas_to_string() Calls the given function for each metadata inside the meta container. Note that if there is no metadata, the function won't be called at all. container to iterate over function to be called for each metadata user specified data Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns FALSE if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns %FALSE if @meta_item can not be found. Gets the value of a given meta item, returns NULL if @key can not be found. the #GValue corresponding to the meta with the given @key. Target container The key name of the meta to retrieve Target container Name of the meta item to get Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Target container Name of the meta item to get Destination to which value of meta item will be copied Gets the value of a given meta item, returns NULL if @meta_item can not be found. Serializes a meta container to a string. a newly-allocated string, or NULL in case of an error. The string must be freed with g_free() when no longer needed. a #GESMetaContainer Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the static meta could be added, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets a static meta on @container. This method lets you define static metadatas, which means that the type of the registered will be the only type accepted for this meta on that particular @container. %TRUE if the meta could be register, %FALSE otherwize Target container The #GESMetaFlag to be used Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set Sets the value of a given meta item %TRUE if the meta could be added, %FALSE otherwize Target container Name of the meta item to set Value to set The metadata is readable The metadata is writable The metadata is readable and writable Outputs the video stream from a given image sequence. The start frame chosen will be determined by the in-point property on the track element. Creates a new #GESMultiFileSource for the provided @uri. A new #GESMultiFileSource. the URI the source should control The uri of the file/resource to use. You can set a start index, a stop index and a sequence pattern. The format is &lt;multifile://start:stop\@location-pattern&gt;. The pattern uses printf string formating. Example uris: multifile:///home/you/image\%03d.jpg multifile://20:50@/home/you/sequence/\%04d.png Base class for overlays, transitions, and effects Operations are any kind of object that both outputs AND consumes data. Overlays are objects which modify the underlying layer(s). Examples of overlays include text, image watermarks, or audio dubbing. Transitions, which change from one source to another over time, are not considered overlays. parent class #GESPipeline allows developers to view and render #GESTimeline in a simple fashion. Its usage is inspired by the 'playbin' element from gst-plugins-base. Creates a new conveninence #GESPipeline. the new #GESPipeline. the #GESPipelineFlags currently in use. a #GESPipeline Returns a #GstSample 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. a #GstSample or %NULL a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED caps specifying current format. Use %GST_CAPS_ANY for native size. A convenience method for @ges_pipeline_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. a #GstSample or %NULL a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED the requested width or -1 for native size the requested height or -1 for native size Obtains a pointer to playsink's audio sink element that is used for displaying audio when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW The caller is responsible for unreffing the returned element with #gst_object_unref. a pointer to the playsink audio sink #GstElement a #GESPipeline Obtains a pointer to playsink's video sink element that is used for displaying video when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW The caller is responsible for unreffing the returned element with #gst_object_unref. a pointer to the playsink video sink #GstElement a #GESPipeline Sets playsink's audio sink element that is used for displaying audio when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW a #GESPipeline in %GST_STATE_NULL a audio sink #GstElement Sets playsink's video sink element that is used for displaying video when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW a #GESPipeline in %GST_STATE_NULL a video sink #GstElement Saves the current frame to the specified @location. %TRUE if the thumbnail was properly save, else %FALSE. a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED the requested width or -1 for native size the requested height or -1 for native size a string specifying the desired mime type (for example, image/jpeg) the path to save the thumbnail switches the @pipeline to the specified @mode. The default mode when creating a #GESPipeline is #GES_PIPELINE_MODE_PREVIEW. Note: The @pipeline 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 @pipeline to the requested state after calling this method. %TRUE if the mode was properly set, else %FALSE. a #GESPipeline the #GESPipelineFlags to use 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 #GES_PIPELINE_MODE_RENDER %TRUE if the settings were aknowledged properly, else %FALSE a #GESPipeline the URI to which the timeline will be rendered the #GstEncodingProfile to use to render the timeline. Sets the timeline to use in this pipeline. The reference to the @timeline will be stolen by the @pipeline. %TRUE if the @timeline could be successfully set on the @pipeline, else %FALSE. a #GESPipeline the #GESTimeline to set on the @pipeline. Audio sink for the preview. Pipeline mode. See ges_pipeline_set_mode() for more info. Timeline to use in this pipeline. See also ges_pipeline_set_timeline() for more info. Video sink for the preview. parent class The various modes the #GESPipeline can be configured to. output audio to the soundcard output video to the screen output audio/video to soundcard/screen (default) render timeline (forces decoding) render timeline (tries to avoid decoding/reencoding) This is a legacy format and you should avoid to use it. The formatter is really not in good shape and is deprecated. The #GESProject is used to control a set of #GESAsset and is a #GESAsset with #GES_TYPE_TIMELINE as @extractable_type itself. That means that you can extract #GESTimeline from a project as followed: |[ 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 #GESProject class offers a higher level API to handle #GESAsset-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 #GstElement and lets you try to recover from those. Creates a new #GESProject and sets its uri to @uri if provided. Note that if @uri is not valid or %NULL, 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. A newly created #GESProject The uri to be set after creating the project. Adds a #Asset to @project, the project will keep a reference on @asset. %TRUE if the asset could be added %FALSE it was already in the project A #GESProject A #GESAsset to add to @project 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. %TRUE if @profile could be added, %FALSE otherwize A #GESProject A #GstEncodingProfile to add to the project. If a profile with the same name already exists, it will be replaced Create and add a #GESAsset to @project. You should connect to the "asset-added" signal to get the asset when it finally gets added to @project %TRUE if the asset started to be added %FALSE it was already in the project A #GESProject The id of the asset to create and add to @project The #GType of the asset to create Create and add a #GESAsset to @project. You should connect to the "asset-added" signal to get the asset when it finally gets added to @project The newly created #GESAsset or %NULL. A #GESProject The id of the asset to create and add to @project The #GType of the asset to create The #GESAsset with @id or %NULL if no asset with @id as an ID A #GESProject The id of the asset to retrieve The extractable_type of the asset to retrieve from @object Get the assets that are being loaded A set of loading asset that will be added to @project. Note that those Asset are *not* loaded yet, and thus can not be used A #GESProject Retrieve the uri that is currently set on @project a newly allocated string representing uri. A #GESProject List all @asset contained in @project filtering per extractable_type as defined by @filter. It copies the asset and thus will not be updated in time. The list of #GESAsset the object contains A #GESProject Type of assets to list, #GES_TYPE_EXTRACTABLE will list all assets Lists the encoding profile that have been set to @project. The first one is the latest added. The list of #GstEncodingProfile used in @project A #GESProject Loads @project into @timeline %TRUE if the project could be loaded %FALSE otherwize. A #GESProject that has an @uri set already A blank timeline to load @project into remove a @asset to from @project. %TRUE if the asset could be removed %FALSE otherwise A #GESProject A #GESAsset to remove from @project Save the timeline of @project to @uri. You should make sure that @timeline is one of the timelines that have been extracted from @project (using ges_asset_extract (@project);) %TRUE if the project could be save, %FALSE otherwize A #GESProject to save The #GESTimeline to save, it must have been extracted from @project The uri where to save @project and @timeline The formatter asset to use or %NULL. If %NULL, 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 %TRUE to overwrite file if it exists The #GESAsset that has been added to @project The #GESAsset that started loading The #GESAsset that has been removed from @project Informs you that a #GESAsset could not be created. In case of missing GStreamer plugins, the error will be set to #GST_CORE_ERROR #GST_CORE_ERROR_MISSING_PLUGIN The #GError defining the error that accured, might be %NULL The @id of the asset that failed loading The @extractable_type of the asset that failed loading The #GESTimeline that complete loading |[ 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)); } ]| The new URI of @wrong_asset The error that happened The asset with the wrong ID, you should us it and its content only to find out what the new location is. Base class for single-media sources Base class for sources of a #GESLayer Useful for testing purposes. You can use the ges_asset_request_simple API to create an Asset capable of extracting GESTestClip-s Creates a new #GESTestClip. The newly created #GESTestClip, or %NULL if there was an error. Creates a new #GESTestClip for the provided @nick. The newly created #GESTestClip, or %NULL if there was an error. the nickname for which to create the #GESTestClip Get the frequency @self generates. The frequency @self generates. See audiotestsrc element. a #GESTestClip Get the volume of the test audio signal applied on @self. The volume of the test audio signal applied on @self. a #GESTestClip Get the #GESVideoTestPattern which is applied on @self. The #GESVideoTestPattern which is applied on @self. a #GESTestClip Let you know if the audio track of @self is muted or not. Whether the audio track of @self is muted or not. a #GESTestClip Sets the frequency to generate. See audiotestsrc element. the #GESTestClip to set the frequency on the frequency you want to use on @self Sets whether the audio track of this clip is muted or not. the #GESTestClip on which to mute or unmute the audio track %TRUE to mute the audio track, %FALSE to unmute it Sets the volume of the test audio signal. the #GESTestClip to set the volume on the volume of the audio signal you want to use on @self Sets which video pattern to display on @self. the #GESTestClip to set the pattern on the #GESVideoTestPattern to use on @self The frequency to generate for audio track elements. Whether the sound will be played or not. The volume for the audio track elements. Video pattern to display in video track elements. Horizontal alignment of the text. align text left align text center align text right align text on xpos position Creates a new #GESTextOverlay. The newly created #GESTextOverlay or %NULL if something went wrong. Get the color used by @source. The color used by @source. a GESTextOverlay Get the pango font description currently set on @source. The pango font description currently set on @source. a GESTextOverlay Get the horizontal aligment used by @source. The horizontal aligment used by @source. a GESTextOverlay Get the text currently set on @source. The text currently set on @source. a GESTextOverlay Get the vertical aligment used by @source. The vertical aligment used by @source. a GESTextOverlay Get the horizontal position used by @source. The horizontal position used by @source. a GESTextOverlay Get the vertical position used by @source. The vertical position used by @source. a GESTextOverlay Sets the color of the text. the #GESTextOverlay* to set The color @self is being set to Sets the pango font description of the text this track element will render. the #GESTextOverlay the pango font description Sets the horizontal aligment of the text. the #GESTextOverlay* to set text on The #GESTextHAlign defining the horizontal alignment of the text render by @self. Sets the text this track element will render. the #GESTextOverlay* to set text on the text to render. an internal copy of this text will be made. Sets the vertical aligment of the text. the #GESTextOverlay* to set text on The #GESTextVAlign defining the vertical alignment of the text render by @self. Sets the horizontal position of the text. the #GESTextOverlay* to set The horizontal position @self is being set to Sets the vertical position of the text. the #GESTextOverlay* to set The vertical position @self is being set to Renders text onto the next lower priority stream using textrender. Creates a new #GESTextOverlayClip The newly created #GESTextOverlayClip, or %NULL if there was an error. Get the color used by @source. The color used by @source. a #GESTextOverlayClip Get the pango font description used by @self. The pango font description used by @self. a #GESTextOverlayClip Get the horizontal aligment used by @self. The horizontal aligment used by @self. a #GESTextOverlayClip Get the text currently set on @self. The text currently set on @self. a #GESTextOverlayClip Get the vertical aligment used by @self. The vertical aligment used by @self. a #GESTextOverlayClip Get the horizontal position used by @source. The horizontal position used by @source. a #GESTextOverlayClip Get the vertical position used by @source. The vertical position used by @source. a #GESTextOverlayClip Sets the color of the text. the #GESTextOverlayClip* to set The color @self is being set to Sets the pango font description of the text the #GESTextOverlayClip* the pango font description Sets the horizontal aligment of the text. the #GESTextOverlayClip* to set horizontal alignement of text on #GESTextHAlign Sets the text this clip will render. the #GESTextOverlayClip* to set text on the text to render. an internal copy of this text will be made. Sets the vertical aligment of the text. the #GESTextOverlayClip* to set vertical alignement of text on #GESTextVAlign Sets the horizontal position of the text. the #GESTextOverlayClip* to set The horizontal position @self is being set to Sets the vertical position of the text. the #GESTextOverlayClip* to set The vertical position @self is being set to The color of the text Pango font description string Horizontal alignment of the text The text to diplay Vertical alignent of the text The horizontal position of the text The vertical position of the text Vertical alignment of the text. draw text on the baseline draw text on the bottom draw text on top draw text on ypos position draw text on the center #GESTimeline is the central object for any multimedia timeline. Contains a list of #GESLayer which users should use to arrange the various clips through time. The output type is determined by the #GESTrack that are set on the #GESTimeline. To save/load a timeline, you can use the ges_timeline_load_from_uri() and ges_timeline_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 #ges_timeline_commit method. Creates a new empty #GESTimeline. The new timeline. Creates a new #GESTimeline containing a raw audio and a raw video track. The newly created #GESTimeline. Creates a timeline from the given URI. A new timeline if the uri was loaded successfully, or %NULL if the uri could not be loaded. the URI to load from Add the layer to the timeline. The reference to the @layer will be stolen by the @timeline. %TRUE if the layer was properly added, else %FALSE. a #GESTimeline the #GESLayer to add Add a track to the timeline. The reference to the track will be stolen by the pipeline. %TRUE if the track was properly added, else %FALSE. a #GESTimeline the #GESTrack to add Append a newly created #GESLayer to @timeline Note that you do not own any reference to the returned layer. The newly created #GESLayer, or the last (empty) #GESLayer of @timeline. a #GESTimeline Commit all the pending changes of the clips contained in the @timeline. 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 #GESTimeline::commited signal will be emitted when the (possibly updated) #GstPipeline 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 #GESPipeline. 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 #GESTimeline::commited signal. See #ges_timeline_commit_sync if you don't want to bother with waiting for the signal. %TRUE if pending changes were commited or %FALSE if nothing needed to be commited a #GESTimeline Commit all the pending changes of the #GESClips contained in the @timeline. Will return once the update is complete, that is when the (possibly updated) #GstPipeline 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_element_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 #ges_timeline_commit for more information. %TRUE if pending changes were commited or %FALSE if nothing needed to be commited a #GESTimeline Gets whether transitions are automatically added when objects overlap or not. %TRUE if transitions are automatically added, else %FALSE. a #GESTimeline Get the current duration of @timeline The current duration of @timeline a #GESTimeline Gets a #GESTimelineElement contained in the timeline The #GESTimelineElement or %NULL if not found. a #GESTimeline Get the list of #GESGroup present in the Timeline. the list of #GESGroup that contain clips present in the timeline's layers. Must not be changed. a #GESTimeline Retrieve the layer with @priority as a priority A #GESLayer or %NULL if no layer with @priority was found Since 1.6 The #GESTimeline to retrive a layer from The priority of the layer to find Get the list of #GESLayer present in the Timeline. the list of #GESLayer present in the Timeline sorted by priority. The caller should unref each Layer once he is done with them. a #GESTimeline Search the #GstPad corresponding to the given @timeline's @track. The corresponding #GstPad if it is found, or %NULL if there is an error. The #GESTimeline The #GESTrack Gets the configured snapping distance of the timeline. See the documentation of the property snapping_distance for more information. The @snapping_distance property of the timeline a #GESTimeline Search the #GESTrack corresponding to the given @timeline's @pad. The corresponding #GESTrack if it is found, or %NULL if there is an error. The #GESTimeline The #GstPad Returns the list of #GESTrack used by the Timeline. A list of #GESTrack. The caller should unref each track once he is done with them. a #GESTimeline Check whether a #GESTimeline is empty or not %TRUE if the timeline is empty %FALSE otherwize a #GESTimeline Loads the contents of URI into the given timeline. %TRUE if the timeline was loaded successfully, or %FALSE if the uri could not be loaded. an empty #GESTimeline into which to load the formatter The URI to load from 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. The timeline in which @layer must be The layer to move at @new_layer_priority The index at which @layer should land 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. Shallow copy of the @element pasted The #GESTimeline onto which the #GESTimelineElement should be pasted The #GESTimelineElement to paste The position in the timeline the element should be pasted to, meaning it will become the start of @element The #GESLayer to which the element should be pasted to. -1 means paste to the same layer from which the @element has been copied from. Removes the layer from the timeline. The reference that the @timeline 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. %TRUE if the layer was properly removed, else %FALSE. a #GESTimeline the #GESLayer to remove Remove the @track from the @timeline. 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. %TRUE if the @track was properly removed, else %FALSE. a #GESTimeline the #GESTrack to remove Saves the timeline to the given location %TRUE if the timeline was successfully saved to the given location, else %FALSE. a #GESTimeline The location to save to The formatter asset to use or %NULL. If %NULL, 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 %TRUE to overwrite file if it exists Sets the layer to the given @auto_transition. See the documentation of the property auto_transition for more information. a #GESLayer whether the auto_transition is active Sets the @snapping_distance of the timeline. See the documentation of the property snapping_distance for more information. a #GESLayer whether the snapping_distance is active Sets whether transitions are added automagically when clips overlap. Current duration (in nanoseconds) of the #GESTimeline Distance (in nanoseconds) from which a moving object will snap with it neighboors. 0 means no snapping. A list of #GESLayer sorted by priority NOTE: Do not modify. A list of #GESTrack sorted by priority NOTE: Do not modify. This signal will be emitted once the changes initiated by #ges_timeline_commit have been executed in the backend. Use #ges_timeline_commit_sync if you don't need to do anything in the meantime. Will be emitted after a new group is added to to the timeline. the #GESGroup Will be emitted after a group has been removed from the timeline. the #GESGroup a list of #GESContainer Will be emitted after a new layer is added to the timeline. the #GESLayer that was added to the timeline Will be emitted after the layer was removed from the timeline. the #GESLayer that was removed from the timeline a #GPtrArray of #GESTrack-s where that object should be added The #GESClip on which @track_element will land The #GESTrackElement for which to choose the tracks it should land into Will be emitted after the track was added to the timeline. the #GESTrack that was added to the timeline Will be emitted after the track was removed from the timeline. the #GESTrack that was removed from the timeline parent class 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. Gets all the TrackTypes @self will interact with A #GESTimelineElement 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. 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property 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. %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new start of @self in ripple mode. 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. %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new end (start + duration) of @self in ripple mode. It will basically only change the duration of @self. 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. %TRUE if the self as been rolled properly, %FALSE if an error occured The #GESTimelineElement to roll. The new end (start + duration) of @self in roll mode 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. %TRUE if the self as been roll properly, %FALSE if an error occured The #GESTimelineElement to roll The new start of @self in roll mode, it will also adapat the in-point of @self according Sets the parent of @self to @parent. The parents needs to already own a hard reference on @self. %TRUE if @parent could be set or %FALSE when @self already had a parent or @self and @parent are the same. a #GESTimelineElement new parent of self 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. %TRUE if the self as been trimmed properly, %FALSE if an error occured The #GESTimelineElement to trim. The new start of @self in trim mode, will adapt the inpoint of @self accordingly Copies @self The newly create #GESTimelineElement, copied from @self The #GESTimelineElement to copy whether we want to create the elements @self contains or not Gets properties of a child of @self. The origin #GESTimelineElement The name of the first property to get return location for the first property, followed optionally by more name/return location pairs, followed by NULL In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset(). Gets a property of a GstElement contained in @object. Note that #ges_timeline_element_get_child_property is really intended for language bindings, #ges_timeline_element_get_child_properties is much more convenient for C programming. %TRUE if the property was found, %FALSE otherwize The origin #GESTimelineElement The name of the property return location for the property value, it will be initialized if it is initialized with 0 Gets a property of a child of @self. a #GESTrackElement The #GParamSpec that specifies the property you want to get return location for the value 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. The #GESTimelineElement parent object The name of the first property to get value for the first property, followed optionally by more name/return location pairs, followed by NULL The @duration of @self a #GESTimelineElement The @inpoint of @self a #GESTimelineElement The @maxduration of @self a #GESTimelineElement Returns a copy of the name of @self. Caller should g_free() the return value after usage. The name of @self a #GESTimelineElement Returns the parent of @self. This function increases the refcount of the parent object so you should gst_object_unref() it after usage. parent of @self, this can be %NULL if @self has no parent. unref after usage. a #GESTimelineElement The @priority of @self a #GESTimelineElement The @start of @self a #GESTimelineElement Returns the timeline of @self. This function increases the refcount of the timeline so you should gst_object_unref() it after usage. timeline of @self, this can be %NULL if @self has no timeline. unref after usage. a #GESTimelineElement Gets the toplevel #GESTimelineElement controlling @self The toplevel controlling parent of @self The #GESTimelineElement to get the toplevel parent from Gets all the TrackTypes @self will interact with A #GESTimelineElement Gets an array of #GParamSpec* for all configurable properties of the children of @self. an array of #GParamSpec* which should be freed after use or %NULL if something went wrong The #GESTimelineElement to get the list of children properties from return location for the length of the returned array 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. 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property Paste @self inside the timeline. @self must have been created using ges_timeline_element_copy with recurse=TRUE set, otherwise it will fail. Paste @self copying the element The #GESTimelineElement to paste The position in the timeline the element should be copied to, meaning it will become the start of @self 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. %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new start of @self in ripple mode. 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. %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new end (start + duration) of @self in ripple mode. It will basically only change the duration of @self. 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. %TRUE if the self as been rolled properly, %FALSE if an error occured The #GESTimelineElement to roll. The new end (start + duration) of @self in roll mode 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. %TRUE if the self as been roll properly, %FALSE if an error occured The #GESTimelineElement to roll The new start of @self in roll mode, it will also adapat the in-point of @self according 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. The #GESTimelineElement parent object The name of the first property to set value for the first property, followed optionally by more name/return location pairs, followed by NULL Sets a property of a child of @self Note that #ges_timeline_element_set_child_property is really intended for language bindings, #ges_timeline_element_set_child_properties is much more convenient for C programming. %TRUE if the property was set, %FALSE otherwize The origin #GESTimelineElement The name of the property the value Sets a property of a child of @self. a #GESTimelineElement The #GParamSpec that specifies the property you want to set the value 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. The #GESTimelineElement parent object The name of the first property to set value for the first property, followed optionally by more name/return location pairs, followed by NULL 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. a #GESTimelineElement the duration in #GstClockTime Set the in-point, that is the moment at which the @self will start outputting data from its contents. a #GESTimelineElement the in-point in #GstClockTime Set the maximun duration of the object a #GESTimelineElement the maximum duration in #GstClockTime 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. a #GESTimelineElement The name @self should take (if avalaible<) Sets the parent of @self to @parent. The parents needs to already own a hard reference on @self. %TRUE if @parent could be set or %FALSE when @self already had a parent or @self and @parent are the same. a #GESTimelineElement new parent of self Sets the priority of the object within the containing layer All priority management is done by GES itself now. To set #GESEffect priorities #ges_clip_set_top_effect_index should be used. a #GESTimelineElement the priority 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. a #GESTimelineElement the position in #GstClockTime Sets the timeline of @self to @timeline. %TRUE if @timeline could be set or %FALSE when @timeline already had a timeline. a #GESTimelineElement The #GESTimeline @self is in 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. %TRUE if the self as been trimmed properly, %FALSE if an error occured The #GESTimelineElement to trim. The new start of @self in trim mode, will adapt the inpoint of @self accordingly The duration (in nanoseconds) which will be used in the container The in-point at which this #GESTimelineElement 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. The maximum duration (in nanoseconds) of the #GESTimelineElement. The name of the object The parent container of the object The priority of the object. Setting GESTimelineElement priorities is deprecated as all priority management is done by GES itself now. Whether the element should be serialized. The position of the object in its container (in nanoseconds). The timeline in which @element is The #GESTimelineElement that controls the object The #GESAsset from which the object has been extracted position (in time) of the object Position in the media from which the object should be used duration of the object to be used The maximum duration the object can have priority of the object in the layer (0:top priority) The deep notify signal is used to be notified of property changes of all the childs of @timeline_element the object that originated the signal the property that changed The GESTimelineElement base class. Subclasses should override at least @set_start @set_inpoint @set_duration @ripple @ripple_end @roll_start @roll_end and @trim. Vmethods in subclasses should apply all the operation they need to but the real method implementation is in charge of setting the proper field, and emit the notify signal. %TRUE if @parent could be set or %FALSE when @self already had a parent or @self and @parent are the same. a #GESTimelineElement new parent of self %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new start of @self in ripple mode. %TRUE if the self as been rippled properly, %FALSE if an error occured The #GESTimelineElement to ripple. The new end (start + duration) of @self in ripple mode. It will basically only change the duration of @self. %TRUE if the self as been roll properly, %FALSE if an error occured The #GESTimelineElement to roll The new start of @self in roll mode, it will also adapat the in-point of @self according %TRUE if the self as been rolled properly, %FALSE if an error occured The #GESTimelineElement to roll. The new end (start + duration) of @self in roll mode %TRUE if the self as been trimmed properly, %FALSE if an error occured The #GESTimelineElement to trim. The new start of @self in trim mode, will adapt the inpoint of @self accordingly 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property A #GESTimelineElement Renders the given text in the specified font, at specified position, and with the specified background pattern. Creates a new #GESTitleClip The newly created #GESTitleClip, or %NULL if there was an error. Get the background used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The color used by @self. a #GESTitleClip Get the pango font description used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The pango font description used by @self. a #GESTitleClip Get the horizontal aligment used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The horizontal aligment used by @self. a #GESTitleClip Get the text currently set on @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The text currently set on @self. a #GESTitleClip Get the color used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The color used by @self. a #GESTitleClip Get the vertical aligment used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The vertical aligment used by @self. a #GESTitleClip Get the horizontal position used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The horizontal position used by @self. a #GESTitleClip Get the vertical position used by @self. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The vertical position used by @self. a #GESTitleClip Sets the background of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set The color @self is being set to Sets the color of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set The color @self is being set to Sets the pango font description of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* the pango font description Sets the horizontal aligment of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set horizontal alignement of text on #GESTextHAlign Sets the text this clip will render. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set text on the text to render. an internal copy of this text will be made. Sets the vertical aligment of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set vertical alignement of text on #GESTextVAlign Sets the horizontal position of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set The horizontal position @self is being set to Sets the vertical position of the text. use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead the #GESTitleClip* to set The vertical position @self is being set to The background of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The color of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead Pango font description string use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead Horizontal alignment of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The text to diplay use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead Vertical alignent of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The horizontal position of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead The vertical position of the text use ges_track_element_get/set_children_properties on the underlying GESTrackElement instead #GESTitleSource is a GESTimelineElement that implements the notion of titles in GES. ## Children Properties You can use the following children properties through the #ges_track_element_set_child_property and alike set of methods: <informaltable frame="none"> <tgroup cols="3"> <colspec colname="properties_type" colwidth="150px"/> <colspec colname="properties_name" colwidth="200px"/> <colspec colname="properties_flags" colwidth="400px"/> <tbody> <row> <entry role="property_type"><link linkend="guint"><type>guint</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--background">background</link></entry> <entry>The color of the background</entry> </row> <row> <entry role="property_type"><link linkend="guint"><type>guint</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--color">color</link></entry> <entry>The color of the text</entry> </row> <row> <entry role="property_type"><link linkend="gchar"><type>gchar</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--font-desc">font-desc</link></entry> <entry>Pango font description string</entry> </row> <row> <entry role="property_type"><link linkend="GESTextHAlign"><type>GESTextHAlign</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--halignment">halignment</link></entry> <entry>Horizontal alignment of the text</entry> </row> <row> <entry role="property_type"><link linkend="gchar"><type>gchar</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--text">text</link></entry> <entry>The text to be rendered</entry> </row> <row> <entry role="property_type"><link linkend="GESTextVAlign"><type>GESTextVAlign</type></link> </entry><entry role="property_name"><link linkend="GESTileSource--valignment">valignment</link> </entry><entry>Vertical alignent of the text</entry> </row> <row> <entry role="property_type"><link linkend="gdouble"><type>gdouble</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--xpos">xpos</link></entry> <entry>The horizontal position of the text</entry> </row> <row><entry role="property_type"><link linkend="gdouble"><type>gdouble</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--ypos">ypos</link></entry> <entry>The vertical position of the text</entry> </row> <row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--shaded-background">shaded-background</link></entry> <entry>Whether to shade the background under the text area</entry> </row> <row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry> <entry role="property_name"><link linkend="GESTileSource--outline-color">outline-color</link></entry> <entry>Color to use for outline the text (big-endian ARGB).</entry> </row> </tbody> </tgroup> </informaltable> Get the background used by @source. The background used by @source. a #GESTitleSource Get the pango font description used by @source. The pango font description used by this @source. a #GESTitleSource Get the horizontal aligment used by @source. The horizontal aligment used by @source. a #GESTitleSource Get the text currently set on the @source. The text currently set on the @source. a #GESTitleSource Get the color used by @source. The color used by @source. a #GESTitleSource Get the vertical aligment used by @source. The vertical aligment used by @source. a #GESTitleSource Get the horizontal position used by @source. The horizontal position used by @source. a #GESTitleSource Get the vertical position used by @source. The vertical position used by @source. a #GESTitleSource Sets the color of the background the #GESTitleSource* to set the color @self is being set to Set the pango font description this source will use to render the text. the #GESTitleSource the pango font description Sets the vertical aligment of the text. the #GESTitleSource* to set text on #GESTextHAlign Sets the text this track element will render. use ges_track_element_get/set_children_properties on the GESTrackElement instead the #GESTitleSource* to set text on the text to render. an internal copy of this text will be made. Sets the color of the text. the #GESTitleSource* to set the color @self is being set to Sets the vertical aligment of the text. the #GESTitleSource* to set text on #GESTextVAlign Sets the horizontal position of the text. the #GESTitleSource* to set the horizontal position @self is being set to Sets the vertical position of the text. the #GESTitleSource* to set the color @self is being set to parent class Corresponds to one output format (i.e. audio OR video). Contains the compatible TrackElement(s). Creates a new #GESTrack 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. A new #GESTrack. The type of track The caps to restrict the output of the track to. 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. #TRUE if the object was properly added. #FALSE if the track does not want to accept the object. a #GESTrack the #GESTrackElement to add 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. %TRUE if something as been commited %FALSE if nothing needed to be commited a #GESTrack Get the #GstCaps this track is configured to output. The #GstCaps this track is configured to output. a #GESTrack Gets the #GESTrackElement contained in @track the list of #GESTrackElement present in the Track sorted by priority and start. a #GESTrack Gets if the underlying #NleComposition contains an expandable mixer. #True if there is a mixer, #False otherwise. a #GESTrack Get the #GESTimeline this track belongs to. Can be %NULL. The #GESTimeline this track belongs to. Can be %NULL. a #GESTrack Removes the object from the track and unparents it. Unparenting it means the reference owned by @track on the @object will be removed. If you wish to use the @object after this function, make sure you call gst_object_ref() before removing it from the @track. #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). a #GESTrack the #GESTrackElement to remove 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 #ges_audio_track_new and #ges_video_track_new constructor when possible. a #GESTrack The #GESCreateElementForGapFunc that will be used to create #GstElement to fill gaps Sets if the #GESTrack should be mixing. a #GESTrack TRUE if the track should be mixing, FALSE otherwise. Sets the given @caps as the caps the track has to output. a #GESTrack the #GstCaps to set Sets @timeline as the timeline controlling @track. a #GESTrack a #GESTimeline 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. a #GESTrack the #GstCaps to update with 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. Current duration of the track Default value: O Whether layer mixing is activated or not on the track. Caps used to filter/choose the output stream. Default value: #GST_CAPS_ANY. Type of stream the track outputs. This is used when creating the #GESTrack 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 #GESTrack without having to actually check the #GESTrack's caps property. a #GESTrackType indicting the basic type of the track. Will be emitted after a track element was added to the track. the #GESTrackElement that was added. Will be emitted after a track element was removed from the track. the #GESTrackElement that was removed. #GESTrackElement is the Base Class for any object that can be contained in a #GESTrack. 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. 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. Use #ges_timeline_element_lookup_child 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property Looks for the properties defines with the various parametters and add them to the hashtable of children properties. To be used by subclasses only The #GESTrackElement to set chidlren props on The GstElement to retrieve properties from An array of categories of GstElement to take into account (as defined in the factory meta "klass" field) A blacklist of elements factory names to not take into account A list of propery names to add as children properties Edit @object in the different exisiting #GESEditMode modes. In the case of slide, and roll, you need to specify a #GESEdge %TRUE if the object as been edited properly, %FALSE if an error occured the #GESTrackElement to edit The layers you want the edit to happen in, %NULL means that the edition is done in all the #GESLayers contained in the current timeline. FIXME: This is not implemented yet. The #GESEditMode in which the edition will happen. The #GESEdge the edit should happen on. The position at which to edit @object (in nanosecond) A #GHashTable containing all property_name: GstControlBinding The #TrackElement from which to get all set bindings Gets properties of a child of @object. Use #ges_timeline_element_get_child_properties The origin #GESTrackElement The name of the first property to get return location for the first property, followed optionally by more name/return location pairs, followed by NULL In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset(). Gets a property of a GstElement contained in @object. Note that #ges_track_element_get_child_property is really intended for language bindings, #ges_track_element_get_child_properties is much more convenient for C programming. Use #ges_timeline_element_get_child_property %TRUE if the property was found, %FALSE otherwize The origin #GESTrackElement The name of the property return location for the property value, it will be initialized if it is initialized with 0 Gets a property of a child of @object. Use #ges_timeline_element_get_child_property_by_pspec a #GESTrackElement The #GParamSpec that specifies the property you want to get return location for the value Gets a property of a child of @object. 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. Use #ges_timeline_element_get_child_property_valist The #GESTrackElement parent object The name of the first property to get value for the first property, followed optionally by more name/return location pairs, followed by NULL Looks up the various controlled properties for that #GESTrackElement, and returns the #GstControlBinding which controls @property_name. the #GstControlBinding associated with @property_name, or %NULL if that property is not controlled. the #GESTrackElement in which to lookup the bindings. The property_name to which the binding is associated. Get the #GstElement this track element is controlling within GNonLin. the #GstElement this track element is controlling within GNonLin. a #GESTrackElement Get the NleObject object this object is controlling. use #ges_track_element_get_nleobject instead. the NleObject object this object is controlling. a #GESTrackElement Get the GNonLin object this object is controlling. the GNonLin object this object is controlling. a #GESTrackElement Get the #GESTrack to which this object belongs. The #GESTrack to which this object belongs. Can be %NULL if it is not in any track a #GESTrackElement Lets you know if @object will be used for playback and rendering, or not. %TRUE if @object is active, %FALSE otherwize a #GESTrackElement Gets an array of #GParamSpec* for all configurable properties of the children of @object. Use #ges_timeline_element_list_children_properties an array of #GParamSpec* which should be freed after use or %NULL if something went wrong The #GESTrackElement to get the list of children properties from return location for the length of the returned array 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. Use #ges_timeline_element_lookup_child 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property Removes a #GstControlBinding from @object. %TRUE if the binding could be removed, %FALSE if an error occured the #GESTrackElement on which to set a control binding The name of the property to control. Sets the usage of the @object. If @active is %TRUE, the object will be used for playback and rendering, else it will be ignored. %TRUE if the property was toggled, else %FALSE a #GESTrackElement visibility Sets a property of a child of @object. 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. Use #ges_timeline_element_set_child_properties The #GESTrackElement parent object The name of the first property to set value for the first property, followed optionally by more name/return location pairs, followed by NULL Sets a property of a GstElement contained in @object. Note that #ges_track_element_set_child_property is really intended for language bindings, #ges_track_element_set_child_properties is much more convenient for C programming. use #ges_timeline_element_set_child_property instead %TRUE if the property was set, %FALSE otherwize The origin #GESTrackElement The name of the property the value Sets a property of a child of @object. Use #ges_timeline_element_set_child_property_by_spec a #GESTrackElement The #GParamSpec that specifies the property you want to set the value Sets a property of a child of @object. 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. Use #ges_timeline_element_set_child_property_valist The #GESTrackElement parent object The name of the first property to set value for the first property, followed optionally by more name/return location pairs, followed by NULL Creates a #GstControlBinding and adds it to the #GstElement concerned by the property. Use the same syntax as #ges_track_element_lookup_child for the property name. %TRUE if the binding could be created and added, %FALSE if an error occured the #GESTrackElement on which to set a control binding the #GstControlSource to set on the binding. The name of the property to control. The type of binding to create. Only "direct" is available for now. Whether the object should be taken into account in the #GESTrack output. If #FALSE, then its contents will not be used in the resulting track. The control-binding-added signal is emitted each time a control binding is added for a child property of @track_element the #GstControlBinding that has been added The control-binding-removed signal is emitted each time a control binding is removed for a child property of @track_element the #GstControlBinding that has been removed Get the GESAssetTrackType the #GESTrackElement extracted from @self should get into a #GESTrackType A #GESAssetObject Set the #GESAssetTrackType the #GESTrackElement extracted from @self should get into A #GESAssetObject A #GESTrackType Subclasses can override the @create_gnl_object method to override what type of GNonLin object will be created. name of the GNonLin GStElementFactory type to use. 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. object to lookup the property in 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. pointer to a #GstElement that takes the real object to set property on pointer to take the #GParamSpec describing the property Types of content handled by a track. If the content is not one of @GES_TRACK_TYPE_AUDIO, @GES_TRACK_TYPE_VIDEO or @GES_TRACK_TYPE_TEXT, the user of the #GESTrack must set the type to @GES_TRACK_TYPE_CUSTOM. @GES_TRACK_TYPE_UNKNOWN is for internal purposes and should not be used by users A track of unknown type (i.e. invalid) An audio track A video track A text (subtitle) track A custom-content track Base class for media transitions. Creates an object that mixes together the two underlying objects, A and B. The A object is assumed to have a higher prioirity (lower number) than the B object. At the transition in point, only A will be visible, and by the end only B will be visible. The shape of the video transition depends on the value of the "vtype" property. The default value is "crossfade". For audio, only "crossfade" is supported. The ID of the ExtractableType is the nickname of the vtype property value. Note that this value can be changed after creation and the GESExtractable.asset value will be updated when needed. Creates a new #GESTransitionClip. a newly created #GESTransitionClip, or %NULL if something went wrong. the type of transition to create Creates a new #GESTransitionClip for the provided @nick. The newly created #GESTransitionClip, or %NULL if something went wrong a string representing the type of transition to create a #GESVideoStandardTransitionType representing the wipe to use a #GESVideoStandardTransitionType indicating the type of video transition to apply. Represents all the output streams from a particular uri. It is assumed that the URI points to a file of some type. Creates a new #GESUriClip for the provided @uri. The newly created #GESUriClip, or %NULL if there was an error. the URI the source should control Get the location of the resource. The location of the resource. the #GESUriClip Lets you know if @self is an image or not. %TRUE if @self is a still image %FALSE otherwise. the #GESUriClip Lets you know if the audio track of @self is muted or not. %TRUE if the audio track of @self is muted, %FALSE otherwise. the #GESUriClip Sets whether the clip is a still image or not. the #GESUriClip %TRUE if @self is a still image, %FALSE otherwise Sets whether the audio track of this clip is muted or not. the #GESUriClip on which to mute or unmute the audio track %TRUE to mute @self audio track, %FALSE to unmute it Whether this uri clip represents a still image or not. This must be set before create_track_elements is called. Whether the sound will be played or not. The location of the file/resource to use. The #GESUriClipAsset is a special #GESAsset 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 Metadatas of the Asser. Creates a #GESUriClipAsset for @uri Example of request of a GESUriClipAsset: |[ // 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 (ges_asset_request_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); ]| The URI of the file for which to create a #GESUriClipAsset optional %GCancellable object, %NULL to ignore. a #GAsyncReadyCallback to call when the initialization is finished The user data to pass when @callback is called Creates a #GESUriClipAsset for @uri syncronously. You should avoid to use it in application, and rather create #GESUriClipAsset asynchronously A reference to the requested asset or %NULL if an error happened The URI of the file for which to create a #GESUriClipAsset. You can also use multi file uris for #GESMultiFileSource. Gets duration of the file represented by @self The duration of @self a #GESUriClipAsset Gets #GstDiscovererInfo about the file #GstDiscovererInfo of specified asset Target asset Get the GESUriSourceAsset @self containes a #GList of #GESUriSourceAsset A #GESUriClipAsset Gets Whether the file represented by @self is an image or not Whether the file represented by @self is an image or not a #indent: Standard input:311: Error:Unexpected end of file GESUriClipAsset The duration (in nanoseconds) of the media file Sets the timeout of #GESUriClipAsset loading The #GESUriClipAssetClass on which to set the discoverer timeout The timeout to set NOTE: You should never request such a #GESAsset as they will be created automatically by #GESUriClipAsset-s. Get the #GESUriClipAsset @self is contained in a #GESUriClipAsset A #GESUriClipAsset Get the #GstDiscovererStreamInfo user by @asset a #GESUriClipAsset A #GESUriClipAsset # Children Properties: You can use the following children properties through the #ges_track_element_set_child_property and alike set of methods: <informaltable frame="none"> <tgroup cols="3"> <colspec colname="properties_type" colwidth="150px"/> <colspec colname="properties_name" colwidth="200px"/> <colspec colname="properties_flags" colwidth="400px"/> <tbody> <row> <entry role="property_type"><link linkend="gdouble"><type>double</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--alpha">alpha</link></entry> <entry>The desired alpha for the stream.</entry> </row> <row> <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--posx">posx</link></entry> <entry>The desired x position for the stream.</entry> </row> <row> <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--posy">posy</link></entry> <entry>The desired y position for the stream</entry> </row> <row> <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--width">width</link></entry> <entry>The desired width for that source. Set to 0 if size is not mandatory, will be set to width of the current track.</entry> </row> <row> <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--height">height</link></entry> <entry>The desired height for that source. Set to 0 if size is not mandatory, will be set to height of the current track.</entry> </row> <row> <entry role="property_type"><link linkend="GstDeinterlaceModes"><type>GstDeinterlaceModes</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--deinterlace-mode">deinterlace-mode</link></entry> <entry>Deinterlace Mode</entry> </row> <row> <entry role="property_type"><link linkend="GstDeinterlaceFields"><type>GstDeinterlaceFields</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--deinterlace-fields">deinterlace-fields</link></entry> <entry>Fields to use for deinterlacing</entry> </row> <row> <entry role="property_type"><link linkend="GstDeinterlaceFieldLayout"><type>GstDeinterlaceFieldLayout</type></link></entry> <entry role="property_name"><link linkend="GESVideoSource--deinterlace-tff">deinterlace-tff</link></entry> <entry>Deinterlace top field first</entry> </row> </tbody> </tgroup> </informaltable> Transition type has not been set, A bar moves from left to right, A bar moves from top to bottom, A box expands from the upper-left corner to the lower-right corner, A box expands from the upper-right corner to the lower-left corner, A box expands from the lower-right corner to the upper-left corner, A box expands from the lower-left corner to the upper-right corner, A box shape expands from each of the four corners toward the center, A box shape expands from the center of each quadrant toward the corners of each quadrant, A central, vertical line splits and expands toward the left and right edges, A central, horizontal line splits and expands toward the top and bottom edges, A box expands from the top edge's midpoint to the bottom corners, A box expands from the right edge's midpoint to the left corners, A box expands from the bottom edge's midpoint to the top corners, A box expands from the left edge's midpoint to the right corners, A diagonal line moves from the upper-left corner to the lower-right corner, A diagonal line moves from the upper right corner to the lower-left corner, Two wedge shapes slide in from the top and bottom edges toward the center, Two wedge shapes slide in from the left and right edges toward the center, A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners, A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners, Four wedge shapes split from the center and retract toward the four edges, A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges, A wedge shape moves from top to bottom, A wedge shape moves from right to left, A wedge shape moves from bottom to top, A wedge shape moves from left to right, A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, A rectangle expands from the center., A radial hand sweeps clockwise from the twelve o'clock position, A radial hand sweeps clockwise from the three o'clock position, A radial hand sweeps clockwise from the six o'clock position, A radial hand sweeps clockwise from the nine o'clock position, Two radial hands sweep clockwise from the twelve and six o'clock positions, Two radial hands sweep clockwise from the nine and three o'clock positions, Four radial hands sweep clockwise, A fan unfolds from the top edge, the fan axis at the center, A fan unfolds from the right edge, the fan axis at the center, Two fans, their axes at the center, unfold from the top and bottom, Two fans, their axes at the center, unfold from the left and right, A radial hand sweeps clockwise from the top edge's midpoint, A radial hand sweeps clockwise from the right edge's midpoint, A radial hand sweeps clockwise from the bottom edge's midpoint, A radial hand sweeps clockwise from the left edge's midpoint, Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints, Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints, Two radial hands attached at the top and bottom edges' midpoints sweep from right to left, Two radial hands attached at the left and right edges' midpoints sweep from top to bottom, A fan unfolds from the bottom, the fan axis at the top edge's midpoint, A fan unfolds from the left, the fan axis at the right edge's midpoint, A fan unfolds from the top, the fan axis at the bottom edge's midpoint, A fan unfolds from the right, the fan axis at the left edge's midpoint, Two fans, their axes at the top and bottom, unfold from the center, Two fans, their axes at the left and right, unfold from the center, A radial hand sweeps clockwise from the upper-left corner, A radial hand sweeps counter-clockwise from the lower-left corner., A radial hand sweeps clockwise from the lower-right corner, A radial hand sweeps counter-clockwise from the upper-right corner, Two radial hands attached at the upper-left and lower-right corners sweep down and up, Two radial hands attached at the lower-left and upper-right corners sweep down and up, Two radial hands attached at the upper-left and upper-right corners sweep down, Two radial hands attached at the upper-left and lower-left corners sweep to the right, Two radial hands attached at the lower-left and lower-right corners sweep up, Two radial hands attached at the upper-right and lower-right corners sweep to the left, Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left, Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom, Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top, Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left, Crossfade The test pattern to produce A standard SMPTE test pattern Random noise A black image A white image A red image A green image A blue image Checkers pattern (1px) Checkers pattern (2px) Checkers pattern (4px) Checkers pattern (8px) Circular pattern Alternate between black and white SMPTE test pattern (75% color bars) Zone plate Gamut checkers Chroma zone plate Solid color Get the video pattern used by the @source. The video pattern used by the @source. a #GESVideoTestPattern Sets the source to use the given @pattern. a #GESVideoTestSource a #GESVideoTestPattern Creates a new #GESVideoTrack of type #GES_TRACK_TYPE_VIDEO and with generic raw video caps ("video/x-raw"); A new #GESTrack. Creates a new #GESVideoTransition. The newly created #GESVideoTransition, or %NULL if there was an error. Get the border property of @self, this value represents the border width of the transition. The border values of @self or -1 if not meaningful (this will happen when not using a smpte transition). The #GESVideoTransition to get the border from Get the transition type used by @trans. The transition type used by @trans. a #GESVideoTransition Get the invert property of @self, this value represents the direction of the transition. The invert value of @self The #GESVideoTransition to get the inversion from Set the border property of @self, this value represents the border width of the transition. In case this value does not make sense for the current transition type, it is cached for later use. The #GESVideoTransition to set the border to The value of the border to set on @object Set the invert property of @self, this value represents the direction of the transition. In case this value does not make sense for the current transition type, it is cached for later use. The #GESVideoTransition to set invert on %TRUE if the transition should be inverted %FALSE otherwise Sets the transition being used to @type. %TRUE if the transition type was properly changed, else %FALSE. a #GESVideoTransition a #GESVideoStandardTransitionType This value represents the border width of the transition. This value represents the direction of the transition. parent class The location of the file/resource to use. Clean up any resources created by GES in ges_init(). It is normally not needed to call this function in a normal application as the resources will automatically be freed when the program terminates. This function is therefore mostly used by testsuites and other memory profiling tools. After this call GES (including this method) should not be used anymore. Initialize the GStreamer Editing Service. Call this before any usage of GES. You should take care of initilizing GStreamer before calling this function. Initializes the GStreamer Editing Services library, setting up internal path lists, and loading evrything needed. This function will return %FALSE if GES could not be initialized for some reason. %TRUE if GES could be initialized. pointer to application's argc pointer to application's argv Returns a #GOptionGroup with GES's argument specifications. The group is set up to use standard GOption callbacks, so when using this group in combination with GOption parsing methods, all argument parsing and initialization is automated. This function is useful if you want to integrate GES with other libraries that use GOption (see g_option_context_add_group() ). If you use this function, you should make sure you initialise the GStreamer as one of the very first things in your program. That means you need to use gst_init_get_option_group() and add it to the option context before using the ges_init_get_option_group() result. a pointer to GES's option group. List all @asset filtering per filter as defined by @filter. It copies the asset and thus will not be updated in time. The list of #GESAsset the object contains Type of assets to list, #GES_TYPE_EXTRACTABLE will list all assets Get the last buffer @playsink showed A #GstSample containing the last frame from @playsink in the format defined by the @caps The playsink to get last frame from The caps defining the format the return value will have Gets the version number of the GStreamer Editing Services library. pointer to a guint to store the major version number pointer to a guint to store the minor version number pointer to a guint to store the micro version number pointer to a guint to store the nano version number