From 499a99070e488ae2af5d46cab01209c517d784fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 26 Nov 2018 12:13:15 +0100 Subject: [PATCH] Update gir-files from gstreamer-sys --- gir-files/GES-1.0.gir | 13157 +++++++++++++++++++++++++++++++++ gir-files/Gst-1.0.gir | 55 +- gir-files/GstAudio-1.0.gir | 50 +- gir-files/GstBase-1.0.gir | 115 +- gir-files/GstCheck-1.0.gir | 2686 +++++++ gir-files/GstNet-1.0.gir | 2 +- gir-files/GstPbutils-1.0.gir | 53 +- gir-files/GstRtsp-1.0.gir | 4 +- gir-files/GstSdp-1.0.gir | 32 +- gir-files/GstTag-1.0.gir | 20 +- gir-files/GstVideo-1.0.gir | 42 +- 11 files changed, 16073 insertions(+), 143 deletions(-) create mode 100644 gir-files/GES-1.0.gir create mode 100644 gir-files/GstCheck-1.0.gir diff --git a/gir-files/GES-1.0.gir b/gir-files/GES-1.0.gir new file mode 100644 index 000000000..e2ded350a --- /dev/null +++ b/gir-files/GES-1.0.gir @@ -0,0 +1,13157 @@ + + + + + + + + + + + + + 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 + + + + + + diff --git a/gir-files/Gst-1.0.gir b/gir-files/Gst-1.0.gir index 032c22885..0a19b4c0a 100644 --- a/gir-files/Gst-1.0.gir +++ b/gir-files/Gst-1.0.gir @@ -3875,7 +3875,7 @@ gst_buffer_pool_config_add_option(). a %NULL terminated array of strings. - + @@ -4028,7 +4028,7 @@ gst_buffer_pool_config_add_option(). a %NULL terminated array of strings. - + @@ -4265,7 +4265,7 @@ return. a %NULL terminated array of strings. - + @@ -15848,7 +15848,7 @@ make a copy of the protocol string array if you need to. the supported protocols or %NULL - + @@ -23214,7 +23214,7 @@ buffers. version="1.2"> an array of tags as strings. - + @@ -23258,7 +23258,7 @@ buffers. tags for @api - + @@ -29704,7 +29704,7 @@ codec libraries are currently installed. or %NULL. Environment variable names may be followed by a path component which will be added to the content of the environment variable, e.g. "HOME/.mystuff/plugins". - + @@ -29714,7 +29714,7 @@ codec libraries are currently installed. allow-none="1"> %NULL-terminated array of directories/paths where dependent files may be, or %NULL. - + @@ -29726,7 +29726,7 @@ codec libraries are currently installed. depending on @flags) to be used in combination with the paths from @paths and/or the paths extracted from the environment variables in @env_vars, or %NULL. - + @@ -33717,7 +33717,7 @@ in the @formats array must be equal to @n_formats. an array containing @n_formats @GstFormat values. - + @@ -35679,8 +35679,9 @@ outside of the segment is extrapolated. When 1 is returned, @running_time resulted in a positive position returned in @position. -When this function returns -1, the returned @position should be negated -to get the real negative segment position. +When this function returns -1, the returned @position was < 0, and the value +in the position variable should be negated to get the real negative segment +position. a 1 or -1 on success, 0 on failure. @@ -43006,7 +43007,7 @@ returns and must not be freed. the requested data, or %NULL if that data is not available. - + @@ -43273,7 +43274,7 @@ a 0-length list. a %NULL-terminated array of extensions associated with this factory - + @@ -44725,7 +44726,7 @@ determine a order for the two provided values. The major version of GStreamer at compile time: - + The micro version of GStreamer at compile time: @@ -45998,7 +45999,7 @@ is unknown. The format array to search - + @@ -46148,8 +46149,8 @@ abort program execution. nullable="1" allow-none="1"> pointer to application's argv - - + + @@ -46182,8 +46183,8 @@ use gst_init() instead. nullable="1" allow-none="1"> pointer to application's argv - - + + @@ -46286,7 +46287,7 @@ or gst_init_check(). version="1.2"> an array of tags as strings. - + @@ -46332,7 +46333,7 @@ or gst_init_check(). tags for @api - + @@ -46742,7 +46743,7 @@ on failure. null-terminated array of arguments - + @@ -46765,7 +46766,7 @@ An error does not mean that the pipeline could not be constructed. null-terminated array of arguments - + @@ -47001,7 +47002,7 @@ the @system_identifiers supported by the set of available decryptors, or A null terminated array of strings that contains the UUID values of each protection system that is to be checked. - + @@ -47038,7 +47039,7 @@ element has been found. A null terminated array of strings that contains the UUID values of each protection system that is to be checked. - + @@ -47870,7 +47871,7 @@ the result. a pointer to the memory to dump - + diff --git a/gir-files/GstAudio-1.0.gir b/gir-files/GstAudio-1.0.gir index 71c526717..559258394 100644 --- a/gir-files/GstAudio-1.0.gir +++ b/gir-files/GstAudio-1.0.gir @@ -1641,14 +1641,14 @@ Perform channel mixing on @in_data and write the result to @out_data. nullable="1" allow-none="1"> input samples - + output samples - + number of samples @@ -2431,7 +2431,7 @@ are matching and @in and @out point to enough memory. nullable="1" allow-none="1"> input frames - + number of input frames @@ -2442,7 +2442,7 @@ are matching and @in and @out point to enough memory. nullable="1" allow-none="1"> output frames - + number of output frames @@ -5714,7 +5714,7 @@ and will be packed into @data. a source array - + @@ -5755,7 +5755,7 @@ channels * size(unpack_format) bytes. pointer to the audio data - + @@ -5959,7 +5959,7 @@ Note: This initializes @info first, no values are preserved. allow-none="1"> the channel positions @@ -6108,14 +6108,14 @@ modified in-place. nullable="1" allow-none="1"> input samples - + output samples - + number of samples @@ -6286,7 +6286,7 @@ are matching and @in and @out point to enough memory. nullable="1" allow-none="1"> input samples - + number of input frames @@ -6297,7 +6297,7 @@ are matching and @in and @out point to enough memory. nullable="1" allow-none="1"> output samples - + number of output frames @@ -7392,7 +7392,7 @@ be called in when the ringbuffer is acquired. the device channel positions - + @@ -8955,7 +8955,7 @@ positions and the same positions, only in a different order. The channel positions in the buffer. + c:type="const GstAudioChannelPosition*"> @@ -8964,7 +8964,7 @@ positions and the same positions, only in a different order. The channel positions to convert to. + c:type="const GstAudioChannelPosition*"> @@ -9115,7 +9115,7 @@ in the order required by GStreamer. The %GstAudioChannelPositions + c:type="const GstAudioChannelPosition*"> @@ -9154,7 +9154,7 @@ Since 1.10 to convert. + c:type="const GstAudioChannelPosition*"> @@ -9206,7 +9206,7 @@ checks if the channels are in the order required by GStreamer. to check. + c:type="const GstAudioChannelPosition*"> @@ -9373,7 +9373,7 @@ is possible. The channel positions to reorder from. + c:type="const GstAudioChannelPosition*"> @@ -9382,7 +9382,7 @@ is possible. The channel positions to reorder to. + c:type="const GstAudioChannelPosition*"> @@ -9425,7 +9425,7 @@ otherwise. a buffer containing the data to payload - + @@ -9531,7 +9531,7 @@ positions and the same positions, only in a different order. The channel positions in the buffer. + c:type="const GstAudioChannelPosition*"> @@ -9540,7 +9540,7 @@ positions and the same positions, only in a different order. The channel positions to convert to. + c:type="const GstAudioChannelPosition*"> @@ -9664,7 +9664,7 @@ of the results. of the source + c:type="const GstAudioChannelPosition*"> @@ -9678,7 +9678,7 @@ of the results. the destination + c:type="const GstAudioChannelPosition*"> @@ -9711,7 +9711,7 @@ channel positions. the destination + c:type="const GstAudioChannelPosition*"> diff --git a/gir-files/GstBase-1.0.gir b/gir-files/GstBase-1.0.gir index 2fe676c73..6c4c8a1d9 100644 --- a/gir-files/GstBase-1.0.gir +++ b/gir-files/GstBase-1.0.gir @@ -1225,7 +1225,12 @@ sent before pushing the buffer. - + @@ -1610,7 +1615,12 @@ _finish_buffer from inside that function. - + @@ -6816,7 +6826,7 @@ into 8, 16, 32 and 64 bit variables. Data from which the bit reader will read - + @@ -7002,7 +7012,7 @@ can be called on already initialized instances. data from which the bit reader should read - + @@ -7174,7 +7184,7 @@ Free-function: gst_bit_reader_free Data from which the #GstBitReader should read - + @@ -7195,7 +7205,7 @@ in various character encodings. Data from which the bit reader will read - + @@ -7393,7 +7403,7 @@ updates the current position. transfer-ownership="none"> address of a #guint8 pointer variable in which to store the result - + @@ -7741,7 +7751,7 @@ This function will fail if no NUL-terminator was found in in the data. transfer-ownership="none"> address of a #gchar pointer variable in which to store the result - + @@ -7987,7 +7997,7 @@ can be called on already initialized instances. data from which the #GstByteReader should read - + @@ -8131,7 +8141,7 @@ keeps the current position. transfer-ownership="none"> address of a #guint8 pointer variable in which to store the result - + @@ -8447,7 +8457,7 @@ This function will fail if no NUL-terminator was found in in the data. transfer-ownership="none"> address of a #gchar pointer variable in which to store the result - + @@ -8785,7 +8795,7 @@ Free-function: gst_byte_reader_free data from which the #GstByteReader should read - + @@ -9026,7 +9036,7 @@ read @size bytes from the #GstByteWriter from the beginning. Data to write - + @@ -9275,7 +9285,7 @@ read @size bytes from the #GstByteWriter from the beginning. UTF16 string to write - + @@ -9295,7 +9305,7 @@ read @size bytes from the #GstByteWriter from the beginning. UTF32 string to write - + @@ -11903,7 +11913,7 @@ Free-function: gst_bit_reader_free Data from which the #GstBitReader should read - + @@ -11928,7 +11938,7 @@ Free-function: gst_byte_reader_free data from which the #GstByteReader should read - + @@ -12136,7 +12146,7 @@ Free-function: gst_caps_unref * a pointer with data to typefind - + @@ -12246,5 +12256,74 @@ Free-function: gst_caps_unref + + Utility function to do pull-based typefinding. Unlike gst_type_find_helper() +however, this function will use the specified function @func to obtain the +data needed by the typefind functions, rather than operating on a given +source pad. This is useful mostly for elements like tag demuxers which +strip off data at the beginning and/or end of a file and want to typefind +the stripped data stream before adding their own source pad (the specified +callback can then call the upstream peer pad with offsets adjusted for the +tag size, for example). + +When @extension is not %NULL, this function will first try the typefind +functions for the given extension, which might speed up the typefinding +in many cases. + + the last %GstFlowReturn from pulling a buffer or %GST_FLOW_OK if + typefinding was successful. + + + + + A #GstObject that will be passed as first argument to @func + + + + the parent of @obj or %NULL + + + + A generic #GstTypeFindHelperGetRangeFunction that will + be used to access data at random offsets when doing the typefinding + + + + The length in bytes + + + + extension of the media, or %NULL + + + + returned caps + + + + location to store the probability of the found + caps, or %NULL + + + + diff --git a/gir-files/GstCheck-1.0.gir b/gir-files/GstCheck-1.0.gir new file mode 100644 index 000000000..e0c736714 --- /dev/null +++ b/gir-files/GstCheck-1.0.gir @@ -0,0 +1,2686 @@ + + + + + + + + + + + + #GstHarness is meant to make writing unit test for GStreamer much easier. +It can be thought of as a way of treating a #GstElement as a black box, +deterministically feeding it data, and controlling what data it outputs. + +The basic structure of #GstHarness is two "floating" #GstPads that connect +to the harnessed #GstElement src and sink #GstPads like so: + +|[ + __________________________ + _____ | _____ _____ | _____ +| | | | | | | | | | +| src |--+-| sink| Element | src |-+--| sink| +|_____| | |_____| |_____| | |_____| + |__________________________| + +]| + +With this, you can now simulate any environment the #GstElement might find +itself in. By specifying the #GstCaps of the harness #GstPads, using +functions like gst_harness_set_src_caps() or gst_harness_set_sink_caps_str(), +you can test how the #GstElement interacts with different caps sets. + +Your harnessed #GstElement can of course also be a bin, and using +gst_harness_new_parse() supporting standard gst-launch syntax, you can +easily test a whole pipeline instead of just one element. + +You can then go on to push #GstBuffers and #GstEvents on to the srcpad, +using functions like gst_harness_push() and gst_harness_push_event(), and +then pull them out to examine them with gst_harness_pull() and +gst_harness_pull_event(). + +## A simple buffer-in buffer-out example + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gstharness.h> + GstHarness *h; + GstBuffer *in_buf; + GstBuffer *out_buf; + + // attach the harness to the src and sink pad of GstQueue + h = gst_harness_new ("queue"); + + // we must specify a caps before pushing buffers + gst_harness_set_src_caps_str (h, "mycaps"); + + // create a buffer of size 42 + in_buf = gst_harness_create_buffer (h, 42); + + // push the buffer into the queue + gst_harness_push (h, in_buf); + + // pull the buffer from the queue + out_buf = gst_harness_pull (h); + + // validate the buffer in is the same as buffer out + fail_unless (in_buf == out_buf); + + // cleanup + gst_buffer_unref (out_buf); + gst_harness_teardown (h); + + ]| + +Another main feature of the #GstHarness is its integration with the +#GstTestClock. Operating the #GstTestClock can be very challenging, but +#GstHarness simplifies some of the most desired actions a lot, like wanting +to manually advance the clock while at the same time releasing a #GstClockID +that is waiting, with functions like gst_harness_crank_single_clock_wait(). + +#GstHarness also supports sub-harnesses, as a way of generating and +validating data. A sub-harness is another #GstHarness that is managed by +the "parent" harness, and can either be created by using the standard +gst_harness_new type functions directly on the (GstHarness *)->src_harness, +or using the much more convenient gst_harness_add_src() or +gst_harness_add_sink_parse(). If you have a decoder-element you want to test, +(like vp8dec) it can be very useful to add a src-harness with both a +src-element (videotestsrc) and an encoder (vp8enc) to feed the decoder data +with different configurations, by simply doing: + +|[<!-- language="C" --> + GstHarness * h = gst_harness_new (h, "vp8dec"); + gst_harness_add_src_parse (h, "videotestsrc is-live=1 ! vp8enc", TRUE); +]| + +and then feeding it data with: + +|[<!-- language="C" --> +gst_harness_push_from_src (h); +]| + + the element inside the harness + + + + the internal harness source pad + + + + the internal harness sink pad + + + + the source (input) harness (if any) + + + + the sink (output) harness (if any) + + + + + + + Adds a #GstElement to an empty #GstHarness + +MT safe. + + + + + + a #GstHarness + + + + a #GstElement to add to the harness (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Links the specified #GstPad the @GstHarness srcpad. + +MT safe. + + + + + + a #GstHarness + + + + a #GstPad to link to the harness srcpad + + + + + + Links the specified #GstPad the @GstHarness sinkpad. This can be useful if +perhaps the srcpad did not exist at the time of creating the harness, +like a demuxer that provides a sometimes-pad after receiving data. + +MT safe. + + + + + + a #GstHarness + + + + a #GstPad to link to the harness sinkpad + + + + + + Parses the @launchline and puts that in a #GstBin, +and then attches the supplied #GstHarness to the bin. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar describing a gst-launch type line + + + + + + A convenience function to allows you to call gst_pad_add_probe on a +#GstPad of a #GstElement that are residing inside the #GstHarness, +by using normal gst_pad_add_probe syntax + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the name of the pad to attach the probe to + + + + a #GstPadProbeType (see gst_pad_add_probe) + + + + a #GstPadProbeCallback (see gst_pad_add_probe) + + + + a #gpointer (see gst_pad_add_probe) + + + + a #GDestroyNotify (see gst_pad_add_probe) + + + + + + Add api with params as one of the supported metadata API to propose when +receiving an allocation query. + +MT safe. + + + + + + a #GstHarness + + + + a metadata API + + + + API specific parameters + + + + + + Similar to gst_harness_add_sink_harness, this is a convenience to +directly create a sink-harness using the @sink_element_name name specified. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + + + Similar to gst_harness_add_src, this allows you to send the data coming out +of your harnessed #GstElement to a sink-element, allowing to test different +responses the element output might create in sink elements. An example might +be an existing sink providing some analytical data on the input it receives that +can be useful to your testing. If the goal is to test a sink-element itself, +this is better achieved using gst_harness_new directly on the sink. + +If a sink-harness already exists it will be replaced. + +MT safe. + + + + + + a #GstHarness + + + + a #GstHarness to be added as a sink-harness. + + + + + + Similar to gst_harness_add_sink, this allows you to specify a launch-line +instead of just an element name. See gst_harness_add_src_parse for details. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + + + Similar to gst_harness_add_src_harness, this is a convenience to +directly create a src-harness using the @src_element_name name specified. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + A src-harness is a great way of providing the #GstHarness with data. +By adding a src-type #GstElement, it is then easy to use functions like +gst_harness_push_from_src or gst_harness_src_crank_and_push_many +to provide your harnessed element with input. The @has_clock_wait variable +is a great way to control you src-element with, in that you can have it +produce a buffer for you by simply cranking the clock, and not have it +spin out of control producing buffers as fast as possible. + +If a src-harness already exists it will be replaced. + +MT safe. + + + + + + a #GstHarness + + + + a #GstHarness to be added as a src-harness. + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + Similar to gst_harness_add_src, this allows you to specify a launch-line, +which can be useful for both having more then one #GstElement acting as your +src (Like a src producing raw buffers, and then an encoder, providing encoded +data), but also by allowing you to set properties like "is-live" directly on +the elements. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar describing a gst-launch type line + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + The number of #GstBuffers currently in the #GstHarness sinkpad #GAsyncQueue + +MT safe. + + a #guint number of buffers in the queue + + + + + a #GstHarness + + + + + + The total number of #GstBuffers that has arrived on the #GstHarness sinkpad. +This number includes buffers that have been dropped as well as buffers +that have already been pulled out. + +MT safe. + + a #guint number of buffers received + + + + + a #GstHarness + + + + + + Similar to gst_harness_crank_single_clock_wait(), this is the function to use +if your harnessed element(s) are using more then one gst_clock_id_wait. +Failing to do so can (and will) make it racy which #GstClockID you actually +are releasing, where as this function will process all the waits at the +same time, ensuring that one thread can't register another wait before +both are released. + +MT safe. + + a @gboolean %TRUE if the "crank" was successful, %FALSE if not. + + + + + a #GstHarness + + + + a #guint describing the number of #GstClockIDs to crank + + + + + + A "crank" consists of three steps: +1: Wait for a #GstClockID to be registered with the #GstTestClock. +2: Advance the #GstTestClock to the time the #GstClockID is waiting for. +3: Release the #GstClockID wait. +Together, this provides an easy way to not have to think about the details +around clocks and time, but still being able to write deterministic tests +that are dependent on this. A "crank" can be though of as the notion of +manually driving the clock forward to its next logical step. + +MT safe. + + a @gboolean %TRUE if the "crank" was successful, %FALSE if not. + + + + + a #GstHarness + + + + + + Allocates a buffer using a #GstBufferPool if present, or else using the +configured #GstAllocator and #GstAllocationParams + +MT safe. + + a #GstBuffer of size @size + + + + + a #GstHarness + + + + a #gsize specifying the size of the buffer + + + + + + Allows you to dump the #GstBuffers the #GstHarness sinkpad #GAsyncQueue +to a file. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with a the name of a file + + + + + + The number of #GstEvents currently in the #GstHarness sinkpad #GAsyncQueue + +MT safe. + + a #guint number of events in the queue + + + + + a #GstHarness + + + + + + The total number of #GstEvents that has arrived on the #GstHarness sinkpad +This number includes events handled by the harness as well as events +that have already been pulled out. + +MT safe. + + a #guint number of events received + + + + + a #GstHarness + + + + + + Most useful in conjunction with gst_harness_new_parse, this will scan the +#GstElements inside the #GstHarness, and check if any of them matches +@element_name. Typical usecase being that you need to access one of the +harnessed elements for properties and/or signals. + +MT safe. + + a #GstElement or %NULL if not found + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + + + A convenience function to allows you to call g_object_get on a #GstElement +that are residing inside the #GstHarness, by using normal g_object_get +syntax. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the first property name + + + + return location for the first property, followed optionally by more + name/return location pairs, followed by %NULL + + + + + + Gets the @allocator and its @params that has been decided to use after an +allocation query. + +MT safe. + + + + + + a #GstHarness + + + + the #GstAllocator used + + + + the #GstAllocationParams of + @allocator + + + + + + Get the timestamp of the last #GstBuffer pushed on the #GstHarness srcpad, +typically with gst_harness_push or gst_harness_push_from_src. + +MT safe. + + a #GstClockTime with the timestamp or %GST_CLOCK_TIME_NONE if no +#GstBuffer has been pushed on the #GstHarness srcpad + + + + + a #GstHarness + + + + + + Get the #GstTestClock. Useful if specific operations on the testclock is +needed. + +MT safe. + + a #GstTestClock, or %NULL if the testclock is not +present. + + + + + a #GstHarness + + + + + + This will set the harnessed #GstElement to %GST_STATE_PLAYING. +#GstElements without a sink-#GstPad and with the %GST_ELEMENT_FLAG_SOURCE +flag set is considered a src #GstElement +Non-src #GstElements (like sinks and filters) are automatically set to +playing by the #GstHarness, but src #GstElements are not to avoid them +starting to produce buffers. +Hence, for src #GstElement you must call gst_harness_play() explicitly. + +MT safe. + + + + + + a #GstHarness + + + + + + Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull +will timeout in 60 seconds. This is the standard way of getting a buffer +from a harnessed #GstElement. + +MT safe. + + a #GstBuffer or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad. +Timeouts after 60 seconds similar to gst_harness_pull. + +MT safe. + + a #GstEvent or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad. +Timeouts after 60 seconds similar to gst_harness_pull. + +MT safe. + + a #GstEvent or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pushes a #GstBuffer on the #GstHarness srcpad. The standard way of +interacting with an harnessed element. + +MT safe. + + a #GstFlowReturn with the result from the push + + + + + a #GstHarness + + + + a #GstBuffer to push + + + + + + Basically a gst_harness_push and a gst_harness_pull in one line. Reflects +the fact that you often want to do exactly this in your test: Push one buffer +in, and inspect the outcome. + +MT safe. + + a #GstBuffer or %NULL if timed out. + + + + + a #GstHarness + + + + a #GstBuffer to push + + + + + + Pushes an #GstEvent on the #GstHarness srcpad. + +MT safe. + + a #gboolean with the result from the push + + + + + a #GstHarness + + + + a #GstEvent to push + + + + + + Transfer data from the src-#GstHarness to the main-#GstHarness. It consists +of 4 steps: +1: Make sure the src is started. (see: gst_harness_play) +2: Crank the clock (see: gst_harness_crank_single_clock_wait) +3: Pull a #GstBuffer from the src-#GstHarness (see: gst_harness_pull) +4: Push the same #GstBuffer into the main-#GstHarness (see: gst_harness_push) + +MT safe. + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + + + Transfer one #GstBuffer from the main-#GstHarness to the sink-#GstHarness. +See gst_harness_push_from_src for details. + +MT safe. + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + + + Pushes an #GstEvent on the #GstHarness sinkpad. + +MT safe. + + a #gboolean with the result from the push + + + + + a #GstHarness + + + + a #GstEvent to push + + + + + + Get the min latency reported by any harnessed #GstElement. + +MT safe. + + a #GstClockTime with min latency + + + + + a #GstHarness + + + + + + A convenience function to allows you to call g_object_set on a #GstElement +that are residing inside the #GstHarness, by using normal g_object_set +syntax. + +MT safe. + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the first property name + + + + value for the first property, followed optionally by more + name/value pairs, followed by %NULL + + + + + + Setting this will make the harness block in the chain-function, and +then release when gst_harness_pull() or gst_harness_try_pull() is called. +Can be useful when wanting to control a src-element that is not implementing +gst_clock_id_wait() so it can't be controlled by the #GstTestClock, since +it otherwise would produce buffers as fast as possible. + +MT safe. + + + + + + a #GstHarness + + + + + + Sets the @GstHarness srcpad and sinkpad caps. + +MT safe. + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness srcpad + + + + a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness srcpad and sinkpad caps using strings. + +MT safe. + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness srcpad + + + + a @gchar describing a #GstCaps to set on the harness sinkpad + + + + + + When set to %TRUE, instead of placing the buffers arriving from the harnessed +#GstElement inside the sinkpads #GAsyncQueue, they are instead unreffed. + +MT safe. + + + + + + a #GstHarness + + + + a #gboolean specifying to drop outgoing buffers or not + + + + + + As a convenience, a src-harness will forward %GST_EVENT_STREAM_START, +%GST_EVENT_CAPS and %GST_EVENT_SEGMENT to the main-harness if forwarding +is enabled, and forward any sticky-events from the main-harness to +the sink-harness. It will also forward the %GST_QUERY_ALLOCATION. + +If forwarding is disabled, the user will have to either manually push +these events from the src-harness using gst_harness_src_push_event(), or +create and push them manually. While this will allow full control and +inspection of these events, for the most cases having forwarding enabled +will be sufficient when writing a test where the src-harness' main function +is providing data for the main-harness. + +Forwarding is enabled by default. + +MT safe. + + + + + + a #GstHarness + + + + a #gboolean to enable/disable forwarding + + + + + + Sets the @allocator and @params to propose when receiving an allocation +query. + +MT safe. + + + + + + a #GstHarness + + + + a #GstAllocator + + + + a #GstAllocationParams + + + + + + Sets the @GstHarness sinkpad caps. + +MT safe. + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness sinkpad caps using a string. + +MT safe. + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness srcpad caps. This must be done before any buffers +can legally be pushed from the harness to the element. + +MT safe. + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness srcpad + + + + + + Sets the @GstHarness srcpad caps using a string. This must be done before +any buffers can legally be pushed from the harness to the element. + +MT safe. + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness srcpad + + + + + + Advance the #GstTestClock to a specific time. + +MT safe. + + a @gboolean %TRUE if the time could be set. %FALSE if not. + + + + + a #GstHarness + + + + a #GstClockTime to advance the clock to + + + + + + Sets the min latency reported by #GstHarness when receiving a latency-query + + + + + + a #GstHarness + + + + a #GstClockTime specifying the latency + + + + + + Convenience that calls gst_harness_push_to_sink @pushes number of times. +Will abort the pushing if any one push fails. + +MT safe. + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + a #gint with the number of calls to gst_harness_push_to_sink + + + + + + Transfer data from the src-#GstHarness to the main-#GstHarness. Similar to +gst_harness_push_from_src, this variant allows you to specify how many cranks +and how many pushes to perform. This can be useful for both moving a lot +of data at the same time, as well as cases when one crank does not equal one +buffer to push and v.v. + +MT safe. + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + a #gint with the number of calls to gst_harness_crank_single_clock_wait + + + + a #gint with the number of calls to gst_harness_push + + + + + + Similar to what gst_harness_src_push does with #GstBuffers, this transfers +a #GstEvent from the src-#GstHarness to the main-#GstHarness. Note that +some #GstEvents are being transferred automagically. Look at sink_forward_pad +for details. + +MT safe. + + a #gboolean with the result of the push + + + + + a #GstHarness + + + + + + Start a custom stress-thread that will call your @callback for every +iteration allowing you to do something nasty. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GFunc that is called initially and only once + + + + a #GFunc that is called as often as possible + + + + a #gpointer with custom data to pass to the @callback function + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to the @callback + + + + + + Call g_object_set with @name and @value in intervals of @sleep microseconds + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #gchar specifying a property name + + + + a #GValue to set the property to + + + + a #gulong specifying how long to sleep in (microseconds) for +each g_object_set with @name and @value + + + + + + Push a #GstBuffer in intervals of @sleep microseconds. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstCaps for the #GstBuffer + + + + a #GstSegment + + + + a #GstBuffer to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push a #GstBuffer returned by @func in intervals of @sleep microseconds. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstCaps for the #GstBuffer + + + + a #GstSegment + + + + a #GstHarnessPrepareBufferFunc function called before every iteration +to prepare / create a #GstBuffer for pushing + + + + a #gpointer with data to the #GstHarnessPrepareBufferFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push the @event onto the harnessed #GstElement sinkpad in intervals of +@sleep microseconds + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstEvent to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_event_push with @event + + + + + + Push a #GstEvent returned by @func onto the harnessed #GstElement sinkpad +in intervals of @sleep microseconds. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstHarnessPrepareEventFunc function called before every iteration +to prepare / create a #GstEvent for pushing + + + + a #gpointer with data to the #GstHarnessPrepareEventFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push the @event onto the harnessed #GstElement srcpad in intervals of +@sleep microseconds. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstEvent to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_event_push with @event + + + + + + Push a #GstEvent returned by @func onto the harnessed #GstElement srcpad +in intervals of @sleep microseconds. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstHarnessPrepareEventFunc function called before every iteration +to prepare / create a #GstEvent for pushing + + + + a #gpointer with data to the #GstHarnessPrepareEventFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Call gst_element_request_pad in intervals of @sleep microseconds + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstPadTemplate + + + + a #gchar + + + + a #GstCaps + + + + a #gboolean + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_element_request_pad + + + + + + Change the state of your harnessed #GstElement from NULL to PLAYING and +back again, only pausing for @sleep microseconds every time. + +MT safe. + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #gulong specifying how long to sleep in (microseconds) for +each state-change + + + + + + Pulls all pending data from the harness and returns it as a single +data slice. + + a pointer to the data, newly allocated. Free + with g_free() when no longer needed. Will return %NULL if there is no + data. + + + + + a #GstHarness + + + + the size of the data in bytes + + + + + + Pulls all pending data from the harness and returns it as a single buffer. + + the data as a buffer. Unref with gst_buffer_unref() + when no longer needed. + + + + + a #GstHarness + + + + + + Pulls all pending data from the harness and returns it as a single #GBytes. + + a pointer to the data, newly allocated. Free + with g_free() when no longer needed. + + + + + a #GstHarness + + + + + + Tears down a @GstHarness, freeing all resources allocated using it. + +MT safe. + + + + + + a #GstHarness + + + + + + Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. Unlike +gst_harness_pull this will not wait for any buffers if not any are present, +and return %NULL straight away. + +MT safe. + + a #GstBuffer or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad. +See gst_harness_try_pull for details. + +MT safe. + + a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad. +See gst_harness_try_pull for details. + +MT safe. + + a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + The number of #GstEvents currently in the #GstHarness srcpad #GAsyncQueue + +MT safe. + + a #guint number of events in the queue + + + + + a #GstHarness + + + + + + The total number of #GstEvents that has arrived on the #GstHarness srcpad +This number includes events handled by the harness as well as events +that have already been pulled out. + +MT safe. + + a #guint number of events received + + + + + a #GstHarness + + + + + + Sets the system #GstClock on the @GstHarness #GstElement + +MT safe. + + + + + + a #GstHarness + + + + + + Sets the #GstTestClock on the #GstHarness #GstElement + +MT safe. + + + + + + a #GstHarness + + + + + + Waits for @timeout seconds until @waits number of #GstClockID waits is +registered with the #GstTestClock. Useful for writing deterministic tests, +where you want to make sure that an expected number of waits have been +reached. + +MT safe. + + a @gboolean %TRUE if the waits have been registered, %FALSE if not. +(Could be that it timed out waiting or that more waits then waits was found) + + + + + a #GstHarness + + + + a #guint describing the numbers of #GstClockID registered with +the #GstTestClock + + + + a #guint describing how many seconds to wait for @waits to be true + + + + + + Creates a new harness. Works like gst_harness_new_with_padnames(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + + + Creates a new empty harness. Use gst_harness_add_element_full() to add +an #GstElement to it. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + Creates a new harness. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Creates a new harness, parsing the @launchline and putting that in a #GstBin, +and then attches the harness to the bin. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing a gst-launch type line + + + + + + Creates a new harness. Works in the same way as gst_harness_new_full(), only +that generic padtemplates are used for the harness src and sinkpads, which +will be sufficient in most usecases. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness. Works like gst_harness_new_with_element(), +except you specify the factoryname of the #GstElement + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness, like gst_harness_new_full(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + + + Stop the running #GstHarnessThread + +MT safe. + + + + + + a #GstHarnessThread + + + + + + + + + + + + a #GstHarness + + + + user data + + + + + + + + + + + a #GstHarness + + + + user data + + + + + + + + Opaque handle representing a GstHarness stress testing thread. + + + Opaque consistency checker handle. + + + GstTestClock is an implementation of #GstClock which has different +behaviour compared to #GstSystemClock. Time for #GstSystemClock advances +according to the system time, while time for #GstTestClock changes only +when gst_test_clock_set_time() or gst_test_clock_advance_time() are +called. #GstTestClock provides unit tests with the possibility to +precisely advance the time in a deterministic manner, independent of the +system time or any other external factors. + +## Advancing the time of a #GstTestClock + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gsttestclock.h> + + GstClock *clock; + GstTestClock *test_clock; + + clock = gst_test_clock_new (); + test_clock = GST_TEST_CLOCK (clock); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + gst_test_clock_advance_time ( test_clock, 1 * GST_SECOND); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + g_usleep (10 * G_USEC_PER_SEC); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + gst_test_clock_set_time (test_clock, 42 * GST_SECOND); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + ... +]| + +#GstClock allows for setting up single shot or periodic clock notifications +as well as waiting for these notifications synchronously (using +gst_clock_id_wait()) or asynchronously (using gst_clock_id_wait_async() or +gst_clock_id_wait_async()). This is used by many GStreamer elements, +among them #GstBaseSrc and #GstBaseSink. + +#GstTestClock keeps track of these clock notifications. By calling +gst_test_clock_wait_for_next_pending_id() or +gst_test_clock_wait_for_multiple_pending_ids() a unit tests may wait for the +next one or several clock notifications to be requested. Additionally unit +tests may release blocked waits in a controlled fashion by calling +gst_test_clock_process_next_clock_id(). This way a unit test can control the +inaccuracy (jitter) of clock notifications, since the test can decide to +release blocked waits when the clock time has advanced exactly to, or past, +the requested clock notification time. + +There are also interfaces for determining if a notification belongs to a +#GstTestClock or not, as well as getting the number of requested clock +notifications so far. + +N.B.: When a unit test waits for a certain amount of clock notifications to +be requested in gst_test_clock_wait_for_next_pending_id() or +gst_test_clock_wait_for_multiple_pending_ids() then these functions may block +for a long time. If they block forever then the expected clock notifications +were never requested from #GstTestClock, and so the assumptions in the code +of the unit test are wrong. The unit test case runner in gstcheck is +expected to catch these cases either by the default test case timeout or the +one set for the unit test by calling tcase_set_timeout\(\). + +The sample code below assumes that the element under test will delay a +buffer pushed on the source pad by some latency until it arrives on the sink +pad. Moreover it is assumed that the element will at some point call +gst_clock_id_wait() to synchronously wait for a specific time. The first +buffer sent will arrive exactly on time only delayed by the latency. The +second buffer will arrive a little late (7ms) due to simulated jitter in the +clock notification. + +## Demonstration of how to work with clock notifications and #GstTestClock + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gstcheck.h> + #include <gst/check/gsttestclock.h> + + GstClockTime latency; + GstElement *element; + GstPad *srcpad; + GstClock *clock; + GstTestClock *test_clock; + GstBuffer buf; + GstClockID pending_id; + GstClockID processed_id; + + latency = 42 * GST_MSECOND; + element = create_element (latency, ...); + srcpad = get_source_pad (element); + + clock = gst_test_clock_new (); + test_clock = GST_TEST_CLOCK (clock); + gst_element_set_clock (element, clock); + + GST_INFO ("Set time, create and push the first buffer\n"); + gst_test_clock_set_time (test_clock, 0); + buf = create_test_buffer (gst_clock_get_time (clock), ...); + gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK); + + GST_INFO ("Block until element is waiting for a clock notification\n"); + gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id); + GST_INFO ("Advance to the requested time of the clock notification\n"); + gst_test_clock_advance_time (test_clock, latency); + GST_INFO ("Release the next blocking wait and make sure it is the one from element\n"); + processed_id = gst_test_clock_process_next_clock_id (test_clock); + g_assert (processed_id == pending_id); + g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK); + gst_clock_id_unref (pending_id); + gst_clock_id_unref (processed_id); + + GST_INFO ("Validate that element produced an output buffer and check its timestamp\n"); + g_assert_cmpint (get_number_of_output_buffer (...), ==, 1); + buf = get_buffer_pushed_by_element (element, ...); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, latency); + gst_buffer_unref (buf); + GST_INFO ("Check that element does not wait for any clock notification\n"); + g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL)); + + GST_INFO ("Set time, create and push the second buffer\n"); + gst_test_clock_advance_time (test_clock, 10 * GST_SECOND); + buf = create_test_buffer (gst_clock_get_time (clock), ...); + gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK); + + GST_INFO ("Block until element is waiting for a new clock notification\n"); + (gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id); + GST_INFO ("Advance past 7ms beyond the requested time of the clock notification\n"); + gst_test_clock_advance_time (test_clock, latency + 7 * GST_MSECOND); + GST_INFO ("Release the next blocking wait and make sure it is the one from element\n"); + processed_id = gst_test_clock_process_next_clock_id (test_clock); + g_assert (processed_id == pending_id); + g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK); + gst_clock_id_unref (pending_id); + gst_clock_id_unref (processed_id); + + GST_INFO ("Validate that element produced an output buffer and check its timestamp\n"); + g_assert_cmpint (get_number_of_output_buffer (...), ==, 1); + buf = get_buffer_pushed_by_element (element, ...); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, + 10 * GST_SECOND + latency + 7 * GST_MSECOND); + gst_buffer_unref (buf); + GST_INFO ("Check that element does not wait for any clock notification\n"); + g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL)); + ... +]| + +Since #GstTestClock is only supposed to be used in unit tests it calls +g_assert(), g_assert_cmpint() or g_assert_cmpuint() to validate all function +arguments. This will highlight any issues with the unit test code itself. + + Creates a new test clock with its time set to zero. + +MT safe. + + a #GstTestClock cast to #GstClock. + + + + + Creates a new test clock with its time set to the specified time. + +MT safe. + + a #GstTestClock cast to #GstClock. + + + + + a #GstClockTime set to the desired start time of the clock. + + + + + + Finds the latest time inside the list. + +MT safe. + + + + + + List + of of pending #GstClockIDs + + + + + + + + Advances the time of the @test_clock by the amount given by @delta. The +time of @test_clock is monotonically increasing, therefore providing a +@delta which is negative or zero is a programming error. + +MT safe. + + + + + + a #GstTestClock for which to increase the time + + + + a positive #GstClockTimeDiff to be added to the time of the clock + + + + + + A "crank" consists of three steps: +1: Wait for a #GstClockID to be registered with the #GstTestClock. +2: Advance the #GstTestClock to the time the #GstClockID is waiting for. +3: Release the #GstClockID wait. +A "crank" can be though of as the notion of +manually driving the clock forward to its next logical step. + + %TRUE if the crank was successful, %FALSE otherwise. + +MT safe. + + + + + #GstTestClock to crank + + + + + + Retrieve the requested time for the next pending clock notification. + +MT safe. + + a #GstClockTime set to the time of the next pending clock +notification. If no clock notifications have been requested +%GST_CLOCK_TIME_NONE will be returned. + + + + + a #GstTestClock to fetch the next clock notification time for + + + + + + Checks whether @test_clock was requested to provide the clock notification +given by @id. + +MT safe. + + %TRUE if the clock has been asked to provide the given clock +notification, %FALSE otherwise. + + + + + a #GstTestClock to ask if it provided the notification + + + + a #GstClockID clock notification + + + + + + Determine the number of pending clock notifications that have been +requested from the @test_clock. + +MT safe. + + the number of pending clock notifications. + + + + + a #GstTestClock for which to count notifications + + + + + + Determines if the @pending_id is the next clock notification scheduled to +be triggered given the current time of the @test_clock. + +MT safe. + + %TRUE if @pending_id is the next clock notification to be +triggered, %FALSE otherwise. + + + + + a #GstTestClock to check the clock notifications for + + + + a #GstClockID clock +notification to look for + + + + + + Processes and releases the pending IDs in the list. + +MT safe. + + + + + + #GstTestClock for which to process the pending IDs + + + + List + of pending #GstClockIDs + + + + + + + + MT safe. + + a #GstClockID containing the next pending clock +notification. + + + + + a #GstTestClock for which to retrieve the next pending clock +notification + + + + + + Sets the time of @test_clock to the time given by @new_time. The time of +@test_clock is monotonically increasing, therefore providing a @new_time +which is earlier or equal to the time of the clock as given by +gst_clock_get_time() is a programming error. + +MT safe. + + + + + + a #GstTestClock of which to set the time + + + + a #GstClockTime later than that returned by gst_clock_get_time() + + + + + + Blocks until at least @count clock notifications have been requested from +@test_clock. There is no timeout for this wait, see the main description of +#GstTestClock. + +MT safe. + + + + + + #GstTestClock for which to await having enough pending clock + + + + the number of pending clock notifications to wait for + + + + Address + of a #GList pointer variable to store the list of pending #GstClockIDs + that expired, or %NULL + + + + + + + + Waits until a clock notification is requested from @test_clock. There is no +timeout for this wait, see the main description of #GstTestClock. A reference +to the pending clock notification is stored in @pending_id. + +MT safe. + + + + + + #GstTestClock for which to get the pending clock notification + + + + #GstClockID +with information about the pending clock notification + + + + + + Blocks until at least @count clock notifications have been requested from +@test_clock. There is no timeout for this wait, see the main description of +#GstTestClock. + use gst_test_clock_wait_for_multiple_pending_ids() instead. + + + + + + #GstTestClock for which to await having enough pending clock + + + + the number of pending clock notifications to wait for + + + + + + + + + When a #GstTestClock is constructed it will have a certain start time set. +If the clock was created using gst_test_clock_new_with_start_time() then +this property contains the value of the @start_time argument. If +gst_test_clock_new() was called the clock started at time zero, and thus +this property contains the value 0. + + + + + + + + + + + The class of a #GstTestClock, which has no virtual methods to override. + + the parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sets up a data probe on the given pad which will raise assertions if the +data flow is inconsistent. + + %TRUE if the pad was added + + + + + The #GstStreamConsistency handle + + + + The #GstPad on which the dataflow will be checked. + + + + + + Frees the allocated data and probes associated with @consist. + + + + + + The #GstStreamConsistency to free. + + + + + + Sets up a data probe on the given pad which will raise assertions if the +data flow is inconsistent. + + A #GstStreamConsistency structure used to track data flow. + + + + + The #GstPad on which the dataflow will be checked. + + + + + + Reset the stream checker's internal variables. + + + + + + The #GstStreamConsistency to reset. + + + + + + Creates a new harness. Works like gst_harness_new_with_padnames(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + + + Creates a new empty harness. Use gst_harness_add_element_full() to add +an #GstElement to it. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + Creates a new harness. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Creates a new harness, parsing the @launchline and putting that in a #GstBin, +and then attches the harness to the bin. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing a gst-launch type line + + + + + + Creates a new harness. Works in the same way as gst_harness_new_full(), only +that generic padtemplates are used for the harness src and sinkpads, which +will be sufficient in most usecases. + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness. Works like gst_harness_new_with_element(), +except you specify the factoryname of the #GstElement + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness, like gst_harness_new_full(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + + + Stop the running #GstHarnessThread + +MT safe. + + + + + + a #GstHarnessThread + + + + + + diff --git a/gir-files/GstNet-1.0.gir b/gir-files/GstNet-1.0.gir index 087d6f3f1..5f317c9b1 100644 --- a/gir-files/GstNet-1.0.gir +++ b/gir-files/GstNet-1.0.gir @@ -211,7 +211,7 @@ MT safe. Caller owns return value (gst_net_time_packet_free to free). a buffer from which to construct the packet, or NULL - + diff --git a/gir-files/GstPbutils-1.0.gir b/gir-files/GstPbutils-1.0.gir index 22285341d..8c47cfc44 100644 --- a/gir-files/GstPbutils-1.0.gir +++ b/gir-files/GstPbutils-1.0.gir @@ -831,7 +831,7 @@ gst_discoverer_stream_info_list_free(). containing informations about how to install the various missing elements for @info to be usable. If you wish to use the strings after the life-time of @info, you will need to copy them. - + @@ -1684,8 +1684,11 @@ information like name, description, format and preset. The name of the target - - (allow-none): The name of the profile, if %NULL + + The name of the profile, if %NULL provided, it will default to the encoding profile called `default`. @@ -2744,7 +2747,7 @@ in debugging. The micro version of GStreamer's gst-plugins-base libraries at compile time. @@ -2782,7 +2785,7 @@ If mpegversion is 4, the "base-profile" field is also set in @caps. a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1. (See below for more details) - + @@ -2806,7 +2809,7 @@ Since 1.10 a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1. - + @@ -2857,7 +2860,7 @@ determined. a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1. - + @@ -2884,7 +2887,7 @@ determined. a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1. - + @@ -2909,7 +2912,7 @@ Since 1.10 a pointer to the AudioSpecificConfig as specified in the Elementary Stream Descriptor (esds) in ISO/IEC 14496-1. - + @@ -2951,7 +2954,7 @@ for more details on the parameters. Pointer to the sequence parameter set for the stream. - + @@ -2973,7 +2976,7 @@ same format as for gst_codec_utils_h264_get_profile(). Pointer to the sequence parameter set for the stream. - + @@ -3020,7 +3023,7 @@ byte. Pointer to the sequence parameter set for the stream. - + @@ -3050,7 +3053,7 @@ Since 1.4 Pointer to the profile_tier_level struct - + @@ -3075,7 +3078,7 @@ Since 1.4 Pointer to the profile_tier_level for the stream - + @@ -3129,7 +3132,7 @@ Since 1.4 Pointer to the profile_tier_level structure for the stream. - + @@ -3154,7 +3157,7 @@ Since 1.4 Pointer to the profile_tier_level for the stream. - + @@ -3182,7 +3185,7 @@ parameters. Pointer to the visual object sequence for the stream. - + @@ -3206,7 +3209,7 @@ object sequence start code. Only the first byte Pointer to the visual object sequence for the stream. - + @@ -3230,7 +3233,7 @@ object sequence start code. Only the first byte Pointer to the visual object sequence for the stream. - + @@ -3275,7 +3278,7 @@ invalid Opus caps. nullable="1" allow-none="1"> the mapping between the streams - + @@ -3338,7 +3341,7 @@ invalid Opus caps. nullable="1" allow-none="1"> the mapping between the streams - + @@ -3405,7 +3408,7 @@ invalid Opus caps. caller-allocates="0" transfer-ownership="full"> the mapping between the streams - + @@ -3464,7 +3467,7 @@ invalid Opus caps. caller-allocates="0" transfer-ownership="full"> the mapping between the streams - + @@ -3542,7 +3545,7 @@ installed but no suitable video decoder and no suitable audio decoder). NULL-terminated array of installer string details (see below) - + @@ -3627,7 +3630,7 @@ gst_install_plugins_async() instead of this function. NULL-terminated array of installer string details - + diff --git a/gir-files/GstRtsp-1.0.gir b/gir-files/GstRtsp-1.0.gir index 19dcbf6a0..30bbf45d8 100644 --- a/gir-files/GstRtsp-1.0.gir +++ b/gir-files/GstRtsp-1.0.gir @@ -2527,7 +2527,7 @@ all matching headers will be removed. the data - + @@ -4126,7 +4126,7 @@ are reached. #GST_RTSP_EINTR when @watch was flushing. the data to queue - + diff --git a/gir-files/GstSdp-1.0.gir b/gir-files/GstSdp-1.0.gir index b877d9006..2d7f05759 100644 --- a/gir-files/GstSdp-1.0.gir +++ b/gir-files/GstSdp-1.0.gir @@ -292,7 +292,7 @@ parameters to decrypt and verify the data. the encrypted envelope key - + @@ -317,7 +317,7 @@ parameters to decrypt and verify the data. random data - + @@ -361,7 +361,7 @@ parameters to decrypt and verify the data. The timestamp value of the specified @type - + @@ -857,7 +857,7 @@ payload. the Valid From data - + @@ -867,7 +867,7 @@ payload. the Valid To data - + @@ -897,7 +897,7 @@ payload. the key of type @key_type - + @@ -926,7 +926,7 @@ salt data will be removed. nullable="1" allow-none="1"> the salt - + @@ -951,7 +951,7 @@ salt data will be removed. the SPI/MKI data - + @@ -981,7 +981,7 @@ salt data will be removed. the encrypted envelope key - + @@ -1006,7 +1006,7 @@ salt data will be removed. random values - + @@ -1036,7 +1036,7 @@ and @val. @len bytes of data - + @@ -1141,7 +1141,7 @@ at @idx. the timestamp value - + @@ -2794,7 +2794,7 @@ gst_sdp_media_init() before it can be used again. the repeat times - + @@ -3917,7 +3917,7 @@ stack and initialized with gst_sdp_message_init(). the start of the buffer - + @@ -4053,7 +4053,7 @@ a conference session. the repeat times - + @@ -4273,7 +4273,7 @@ a=rtcp-fb:(payload) (param1) [param2]... the start of the buffer - + diff --git a/gir-files/GstTag-1.0.gir b/gir-files/GstTag-1.0.gir index 4307b88cd..ebda563c5 100644 --- a/gir-files/GstTag-1.0.gir +++ b/gir-files/GstTag-1.0.gir @@ -1039,7 +1039,7 @@ WINDOWS-1252/ISO-8859-1 is assumed (which will almost always succeed). string data - + @@ -1050,7 +1050,7 @@ WINDOWS-1252/ISO-8859-1 is assumed (which will almost always succeed). a NULL-terminated string array of environment variable names, or NULL - + @@ -1391,7 +1391,7 @@ data (we can't trust the declared mime type). the (encoded) image - + @@ -1423,7 +1423,7 @@ more information on image tags in GStreamer. the (encoded) image - + @@ -1505,7 +1505,7 @@ vorbiscomment packet. data to convert - + @@ -1515,7 +1515,7 @@ vorbiscomment packet. identification data at start of stream - + @@ -1551,7 +1551,7 @@ vorbiscomment packet. identification data at start of stream - + @@ -1596,7 +1596,7 @@ parsed data. 128 bytes of data containing the ID3v1 tag - + @@ -1655,7 +1655,7 @@ is put in the beginning of the buffer. identification data at start of stream - + @@ -1693,7 +1693,7 @@ be used %NULL terminated array of schemas to be used on serialization - + diff --git a/gir-files/GstVideo-1.0.gir b/gir-files/GstVideo-1.0.gir index f3345b5dd..20b916c94 100644 --- a/gir-files/GstVideo-1.0.gir +++ b/gir-files/GstVideo-1.0.gir @@ -1880,7 +1880,7 @@ Performs the multiplication, meta->matrix X matrix. a 4x4 transformation matrix to be applied - + @@ -2151,7 +2151,7 @@ supports all the video bufferpool options. nullable="1" allow-none="1"> pixel lines - + the number of pixels on one line @@ -2814,7 +2814,7 @@ the component values in range [0.0 .. 1.0] back to their representation in caller-allocates="1" transfer-ownership="none"> output offsets - + @@ -2823,7 +2823,7 @@ the component values in range [0.0 .. 1.0] back to their representation in caller-allocates="1" transfer-ownership="none"> output scale - + @@ -4532,7 +4532,7 @@ performance is achived when @quantizer is a power of 2. quantizer - + the width of the lines @@ -6758,11 +6758,11 @@ formats this means that a complete pixel needs to be packed. nullable="1" allow-none="1"> pointers to the destination data planes - + strides of the destination planes - + the chroma siting of the target when subsampled (not used) @@ -6816,11 +6816,11 @@ separate step after unpacking. nullable="1" allow-none="1"> pointers to the data planes - + strides of the planes - + the x position in the image to start from @@ -7172,7 +7172,7 @@ All video planes of @buffer will be mapped and the pointers will be set in c:type="GstVideoGLTextureUploadMeta*"/> - + @@ -7233,7 +7233,7 @@ to upload something to an OpenGL texture. the texture IDs to upload to - + @@ -10470,7 +10470,7 @@ gst_video_scaler_get_info(). nullable="1" allow-none="1"> source pixels lines - + array of #GstVideoGLTextureType - + offset of each plane - + + + stride of each plane - + + + @@ -12562,7 +12566,7 @@ not contain a valid chroma description. nullable="1" allow-none="1"> pixel lines - + the number of pixels on one line @@ -12721,7 +12725,7 @@ the component values in range [0.0 .. 1.0] back to their representation in caller-allocates="1" transfer-ownership="none"> output offsets - + @@ -12730,7 +12734,7 @@ the component values in range [0.0 .. 1.0] back to their representation in caller-allocates="1" transfer-ownership="none"> output scale - + @@ -12949,7 +12953,7 @@ performance is achived when @quantizer is a power of 2. quantizer - + the width of the lines