diff --git a/gir-files/GES-1.0.gir b/gir-files/GES-1.0.gir index 5b9332b15..a3c367914 100644 --- a/gir-files/GES-1.0.gir +++ b/gir-files/GES-1.0.gir @@ -11,141 +11,25 @@ and/or use gtk-doc annotations. --> - + + A datatype to hold a frame number. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - 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: + A #GESAsset in the GStreamer Editing Services represents a resources +that can be used. In particular, any class that implements the +#GESExtractable interface may have some associated assets with a +corresponding #GESAsset:extractable-type, from which its objects can be +extracted using ges_asset_extract(). Some examples would be +#GESClip, #GESFormatter and #GESTrackElement. -|[ +All assets that are created within GES are stored in a cache; one per +each #GESAsset:id and #GESAsset:extractable-type pair. These assets can +be fetched, and initialized if they do not yet exist in the cache, +using ges_asset_request(). + +``` c GESAsset *effect_asset; GESEffect *effect; @@ -155,27 +39,22 @@ 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. +The advantage of using assets, rather than simply creating the object +directly, is that the currently loaded resources can be listed with +ges_list_assets() and displayed to an end user. For example, to show +which media files have been loaded, and a standard list of effects. In +fact, the GES library already creates assets for #GESTransitionClip and +#GESFormatter, which you can use to list all the available transition +types and supported formats. -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). +The other advantage is that #GESAsset implements #GESMetaContainer, so +metadata can be set on the asset, with some subclasses automatically +creating this metadata on initiation. -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: +For example, to display information about the supported formats, you +could do the following: |[ GList *formatter_assets, *tmp; @@ -185,84 +64,155 @@ and standard effects (actually not implemented yet) and you can simply query tho // 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)); + 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. +## ID + +Each asset is uniquely defined in the cache by its +#GESAsset:extractable-type and #GESAsset:id. Depending on the +#GESAsset:extractable-type, the #GESAsset:id can be used to parametrise +the creation of the object upon extraction. By default, a class that +implements #GESExtractable will only have a single associated asset, +with an #GESAsset:id set to the type name of its objects. However, this +is overwritten by some implementations, which allow a class to have +multiple associated assets. For example, for #GESTransitionClip the +#GESAsset:id will be a nickname of the #GESTransitionClip:vtype. You +should check the documentation for each extractable type to see if they +differ from the default. + +Moreover, each #GESAsset:extractable-type may also associate itself +with a specific asset subclass. In such cases, when their asset is +requested, an asset of this subclass will be returned instead. + +## Managing + +You can use a #GESProject to easily manage the assets of a +#GESTimeline. + +## Proxies + +Some assets can (temporarily) act as the #GESAsset:proxy of another +asset. When the original asset is requested from the cache, the proxy +will be returned in its place. This can be useful if, say, you want +to substitute a #GESUriClipAsset corresponding to a high resolution +media file with the asset of a lower resolution stand in. + +An asset may even have several proxies, the first of which will act as +its default and be returned on requests, but the others will be ordered +to take its place once it is removed. You can add a proxy to an asset, +or set its default, using ges_asset_set_proxy(), and you can remove +them with ges_asset_unproxy(). - 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). + Indicate that an existing #GESAsset in the cache should be reloaded +upon the next request. This can be used when some condition has +changed, which may require that an existing asset should be updated. +For example, if an external resource has changed or now become +available. -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. +Note, the asset is not immediately changed, but will only actually +reload on the next call to ges_asset_request() or +ges_asset_request_async(). - %TRUE if the asset was in the cache and could be set as needing reload, -%FALSE otherwise. + %TRUE if the specified asset exists in the cache and could be +marked for reloading. - The #GType of the object that can be extracted from the - asset to be reloaded. + The #GESAsset:extractable-type of the asset that +needs reloading - - The identifier of the asset to mark as needing reload + + The #GESAsset:id of the asset asset that needs +reloading - 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 + Returns an asset with the given properties. If such an asset already +exists in the cache (it has been previously created in GES), then a +reference to the existing asset is returned. Otherwise, a newly created +asset is returned, and also added to the cache. -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. +If the requested asset has been loaded with an error, then @error is +set, if given, and %NULL will be returned instead. + +Note that the given @id may not be exactly the #GESAsset:id that is +set on the returned asset. For instance, it may be adjusted into a +standard format. Or, if a #GESExtractable type does not have its +extraction parametrised, as is the case by default, then the given @id +may be ignored entirely and the #GESAsset:id set to some standard, in +which case a %NULL @id can be given. + +Similarly, the given @extractable_type may not be exactly the +#GESAsset:extractable-type that is set on the returned asset. Instead, +the actual extractable type may correspond to a subclass of the given +@extractable_type, depending on the given @id. + +Moreover, depending on the given @extractable_type, the returned asset +may belong to a subclass of #GESAsset. + +Finally, if the requested asset has a #GESAsset:proxy, then the proxy +that is found at the end of the chain of proxies is returned (a proxy's +proxy will take its place, and so on, unless it has no proxy). + +Some asset subclasses only support asynchronous construction of its +assets, such as #GESUriClip. For such assets this method will fail, and +you should use ges_asset_request_async() instead. In the case of +#GESUriClip, you can use ges_uri_clip_asset_request_sync() if you only +want to wait for the request to finish. - A reference to the wanted #GESAsset or %NULL + A reference to the requested +asset, or %NULL if an error occurred. - The #GType of the object that can be extracted from the new asset. + The #GESAsset:extractable-type of the asset - The Identifier or %NULL + The #GESAsset:id of the asset - The @callback will be called from a running #GMainLoop which is iterating a #GMainContext. -Note that, users should ensure the #GMainContext, since this method will notify -@callback from the thread which was associated with a thread default -#GMainContext at calling ges_init(). -For example, if a user wants non-default #GMainContext to be associated -with @callback, ges_init() must be called after g_main_context_push_thread_default () -with custom #GMainContext. + Requests an asset with the given properties asynchronously (see +ges_asset_request()). When the asset has been initialized or fetched +from the cache, the given callback function will be called. The +asset can then be retrieved in the callback using the +ges_asset_request_finish() method on the given #GAsyncResult. -Request a new #GESAsset asyncronously, @callback will be called when the materail is -ready to be used or if an error occured. +Note that the source object passed to the callback will be the +#GESAsset corresponding to the request, but it may not have loaded +correctly and therefore can not be used as is. Instead, +ges_asset_request_finish() should be used to fetch a usable asset, or +indicate that an error occurred in the asset's creation. -Example of request of a GESAsset async: +Note that the callback will be called in the #GMainLoop running under +the same #GMainContext that ges_init() was called in. So, if you wish +the callback to be invoked outside the default #GMainContext, you can +call g_main_context_push_thread_default() in a new thread before +calling ges_init(). + +Example of an asynchronous asset request: |[ // The request callback static void @@ -293,62 +243,57 @@ ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL, - The #GType of the object that can be extracted from the - new asset. The class must implement the #GESExtractable interface. + The #GESAsset:extractable-type of the asset - - 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. + + The #GESAsset:id of the asset - optional %GCancellable object, %NULL to ignore. + An object to allow cancellation of the +asset request, or %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. + A function to call when the initialization is finished - The user data to pass when @callback is called + Data to be passed to @callback - Finalize the request of an async #GESAsset + Fetches an asset requested by ges_asset_request_async(), which +finalises the request. - - The #GESAsset previously requested + + The requested asset, or %NULL if an error +occurred. - The #GAsyncResult from which to get the newly created #GESAsset + The task result to fetch the asset 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 + Extracts a new #GESAsset:extractable-type object from the asset. The +#GESAsset:id of the asset may determine the properties and state of the +newly created object. - - A newly created #GESExtractable + + A newly created object, or %NULL if an +error occurred. - The #GESAsset to get extract an object from + The #GESAsset to extract an object from @@ -410,41 +355,42 @@ type will be extracted from @asset using - 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 + Extracts a new #GESAsset:extractable-type object from the asset. The +#GESAsset:id of the asset may determine the properties and state of the +newly created object. - - A newly created #GESExtractable + + A newly created object, or %NULL if an +error occurred. - The #GESAsset to get extract an object from + The #GESAsset to extract an object from + Retrieve the error that was set on the asset when it was loaded. - The #GError of the asset or %NULL if -the asset was loaded without issue + The error set on @asset, or +%NULL if no error occurred when @asset was loaded. - The asset to retrieve the error from + A #GESAsset - Gets the type of object that can be extracted from @self + Gets the #GESAsset:extractable-type of the asset. - the type of object that can be extracted from @self + The extractable type of @self. @@ -455,113 +401,163 @@ the asset was loaded without issue - Gets the ID of a #GESAsset + Gets the #GESAsset:id of the asset. - The ID of @self + The ID of @self. - The #GESAsset to get ID from + A #GESAsset + Gets the default #GESAsset:proxy of the asset. - The proxy in use for @asset + The default proxy of @asset. - The #GESAsset to get currenlty used proxy + A #GESAsset + Gets the #GESAsset:proxy-target of the asset. + +Note that the proxy target may have loaded with an error, so you should +call ges_asset_get_error() on the returned target. - The #GESAsset that is proxied by @proxy + The asset that @proxy is a proxy +of. - The #GESAsset from which to get the the asset it proxies. + A #GESAsset + Get all the proxies that the asset has. The first item of the list will +be the default #GESAsset:proxy. The second will be the proxy that is +'next in line' to be default, and so on. - The list of proxies @asset has. Note that the default asset to be -used is always the first in that list. + The list of proxies +that @asset has. - The #GESAsset to get proxies from + A #GESAsset - 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. + Sets the #GESAsset:proxy for the asset. + +If @proxy is among the existing proxies of the asset (see +ges_asset_list_proxies()) it will be moved to become the default +proxy. Otherwise, if @proxy is not %NULL, it will be added to the list +of proxies, as the new default. The previous default proxy will become +'next in line' for if the new one is removed, and so on. As such, this +will **not** actually remove the previous default proxy (use +ges_asset_unproxy() for that). + +Note that an asset can only act as a proxy for one other asset. + +As a special case, if @proxy is %NULL, then this method will actually +remove **all** proxies from the asset. - %TRUE if @proxy has been set on @asset, %FALSE otherwise. + %TRUE if @proxy was successfully set as the default for +@asset. - The #GESAsset to set proxy on + The #GESAsset to proxy - 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. + A new default proxy for @asset - Removes @proxy from the list of known proxies for @asset. -If @proxy was the current proxy for @asset, stop using it. + Removes the proxy from the available list of proxies for the asset. If +the given proxy is the default proxy of the list, then the next proxy +in the available list (see ges_asset_list_proxies()) will become the +default. If there are no other proxies, then the asset will no longer +have a default #GESAsset:proxy. - %TRUE if @proxy was a known proxy for @asset, %FALSE otherwise. + %TRUE if @proxy was successfully removed from @asset's proxy +list. - The #GESAsset to stop proxying with @proxy + The #GESAsset to no longer proxy with @proxy - The #GESAsset to stop considering as a proxy for @asset + An existing proxy of @asset + The #GESExtractable object type that can be extracted from the asset. + The ID of the asset. This should be unique amongst all assets with +the same #GESAsset:extractable-type. Depending on the associated +#GESExtractable implementation, this id may convey some information +about the #GObject that should be extracted. Note that, as such, the +ID will have an expected format, and you can not choose this value +arbitrarily. By default, this will be set to the type name of the +#GESAsset:extractable-type, but you should check the documentation +of the extractable type to see whether they differ from the +default behaviour. + The default proxy for this asset, or %NULL if it has no proxy. A +proxy will act as a substitute for the original asset when the +original is requested (see ges_asset_request()). + +Setting this property will not usually remove the existing proxy, but +will replace it as the default (see ges_asset_set_proxy()). - + + The asset that this asset is a proxy for, or %NULL if it is not a +proxy for another asset. + +Note that even if this asset is acting as a proxy for another asset, +but this asset is not the default #GESAsset:proxy, then @proxy-target +will *still* point to this other asset. So you should check the +#GESAsset:proxy property of @target-proxy before assuming it is the +current default proxy for the target. + +Note that the #GObject::notify for this property is emitted after +the #GESAsset:proxy #GObject::notify for the corresponding (if any) +asset it is now the proxy of/no longer the proxy of. @@ -597,13 +593,14 @@ If @proxy was the current proxy for @asset, stop using it. - - A newly created #GESExtractable + + A newly created object, or %NULL if an +error occurred. - The #GESAsset to get extract an object from + The #GESAsset to extract an object from @@ -669,10 +666,15 @@ If @proxy was the current proxy for @asset, stop using it. + Indicates that an error occurred + Indicates that the loading is being performed +asynchronously + Indicates that the loading is complete, without +error @@ -684,25 +686,8 @@ If @proxy was the current proxy for @asset, stop using it. 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> +- #gdouble `volume`: volume factor, 1.0=100%. +- #gboolean `mute`: mute channel. @@ -841,28 +826,42 @@ track. - 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 :) + A #GESAudioTrack is a default audio #GESTrack, with a +#GES_TRACK_TYPE_AUDIO #GESTrack:track-type and "audio/x-raw(ANY)" +#GESTrack:caps. -The default properties are: -- format: S32LE +By default, an audio track will have its #GESTrack:restriction-caps +set to "audio/x-raw" with the following properties: + +- format: "S32LE" - channels: 2 - rate: 44100 -- layout: interleaved +- layout: "interleaved" + +These fields are needed for negotiation purposes, but you can change +their values if you wish. It is advised that you do so using +ges_track_update_restriction_caps() with new values for the fields you +wish to change, and any additional fields you may want to add. Unlike +using ges_track_set_restriction_caps(), this will ensure that these +default fields will at least have some value set. - Creates a new #GESAudioTrack of type #GES_TRACK_TYPE_AUDIO and with generic -raw audio caps ("audio/x-raw"); + Creates a new audio track, with a #GES_TRACK_TYPE_AUDIO +#GESTrack:track-type, "audio/x-raw(ANY)" #GESTrack:caps, and +"audio/x-raw" #GESTrack:restriction-caps with the properties: + +- format: "S32LE" +- channels: 2 +- rate: 44100 +- layout: "interleaved" + +You should use ges_track_update_restriction_caps() if you wish to +modify these fields, or add additional ones. - A new #GESTrack + The newly created audio track. @@ -896,8 +895,10 @@ raw audio caps ("audio/x-raw"); - + Creates a new #GESAudioTransition. + This should never be called by applications as this will +be created by clips. The newly created #GESAudioTransition. @@ -931,6 +932,9 @@ raw audio caps ("audio/x-raw"); + ### Children Properties + + {{ libs/GESVideoUriSource-children-props.md }} @@ -967,90 +971,6 @@ raw audio caps ("audio/x-raw"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1080,8 +1000,15 @@ raw audio caps ("audio/x-raw"); - The effect will be applied on the sources that have lower priorities -(higher number) between the inpoint and the end of it. + #GESBaseEffectClip-s are clips whose core elements are +#GESBaseEffect-s. + +## Effects + +#GESBaseEffectClip-s can have **additional** #GESBaseEffect-s added as +non-core elements. These additional effects are applied to the output +of the core effects of the clip that they share a #GESTrack with. See +#GESClip for how to add and move these effects from the clip. @@ -1153,8 +1080,11 @@ raw audio caps ("audio/x-raw"); + + + - + @@ -1192,78 +1122,18 @@ raw audio caps ("audio/x-raw"); - - - - - - - - - - - - - - - + + Whether the class allows for the user to add additional non-core +#GESBaseEffect-s to clips from this class. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + A #GESClipClass - A #GList containing the children of @object + The #GList containing the children of @obj. @@ -1271,22 +1141,8 @@ raw audio caps ("audio/x-raw"); - - - - - - - - - - - - - - - The span of priorities this object occupies. + The #GESContainer:height of @obj. @@ -1295,6 +1151,8 @@ raw audio caps ("audio/x-raw"); + To be used by subclasses only. This indicate how to handle a change in +a child. @@ -1308,181 +1166,334 @@ raw audio caps ("audio/x-raw"); - A #GESClip is a 'natural' object which controls one or more -#GESTrackElement(s) in one or more #GESTrack(s). + #GESClip-s are the core objects of a #GESLayer. Each clip may exist in +a single layer but may control several #GESTrackElement-s that span +several #GESTrack-s. A clip will ensure that all its children share the +same #GESTimelineElement:start and #GESTimelineElement:duration in +their tracks, which will match the #GESTimelineElement:start and +#GESTimelineElement:duration of the clip itself. Therefore, changing +the timing of the clip will change the timing of the children, and a +change in the timing of a child will change the timing of the clip and +subsequently all its siblings. As such, a clip can be treated as a +singular object in its layer. -Keeps a reference to the #GESTrackElement(s) it created and -sets/updates their properties. +For most uses of a #GESTimeline, it is often sufficient to only +interact with #GESClip-s directly, which will take care of creating and +organising the elements of the timeline's tracks. + +Most subclassed clips will be associated with some *core* +#GESTrackElement-s. When such a clip is added to a layer in a timeline, +it will create these children and they will be added to the timeline's +tracks. You can connect to the #GESContainer::child-added signal to be +notified of their creation. If a clip will produce several core +elements of the same #GESTrackElement:track-type but they are destined +for separate tracks, you should connect to the timeline's +#GESTimeline::select-tracks-for-object signal to coordinate which +tracks each element should land in. + +The #GESTimelineElement:in-point of the clip will control the +#GESTimelineElement:in-point of these core elements to be the same +value if their #GESTrackElement:has-internal-source is set to %TRUE. + +The #GESTimelineElement:max-duration of the clip is the minimum +#GESTimelineElement:max-duration of its children. If you set its value +to anything other than its current value, this will also set the +#GESTimelineElement:max-duration of all its core children to the same +value if their #GESTrackElement:has-internal-source is set to %TRUE. +As a special case, whilst a clip does not yet have any core children, +its #GESTimelineElement:max-duration may be set to indicate what its +value will be once they are created. + +## Effects + +Some subclasses (#GESSourceClip and #GESBaseEffect) may also allow +their objects to have additional non-core #GESBaseEffect-s elements as +children. These are additional effects that are applied to the output +data of the core elements. They can be added to the clip using +ges_container_add(), which will take care of adding the effect to the +timeline's tracks. The new effect will be placed between the clip's +core track elements and its other effects. As such, the newly added +effect will be applied to any source data **before** the other existing +effects. You can change the ordering of effects using +ges_clip_set_top_effect_index(). - - - - 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 + The #GESTrackElement created +by @clip, or %NULL if @clip can not provide a track element for the +given @type or an error occurred. - a #GESClip + 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. - + A #GESTrackType to create a #GESTrackElement for + - - - 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 list of +the #GESTrackElement-s created by @clip for the given @type, or %NULL +if no track elements are created or an error occurred. - a #GESClip + A #GESClip + + + + A #GESTrackType to create #GESTrackElement-s for + + + + + + Extracts a #GESTrackElement from an asset and adds it to the clip. +This can be used to add effects that derive from the asset to the +clip, but this method is not intended to be used to create the core +elements of the clip. + + + The newly created element, or +%NULL if an error occurred. + + + + + A #GESClip + + + + An asset with #GES_TYPE_TRACK_ELEMENT as its +#GESAsset:extractable-type + + + + + + Adds the track element child of the clip to a specific track. + +If the given child is already in another track, this will create a copy +of the child, add it to the clip, and add this copy to the track. + +You should only call this whilst a clip is part of a #GESTimeline, and +for tracks that are in the same timeline. + +This method is an alternative to using the +#GESTimeline::select-tracks-for-object signal, but can be used to +complement it when, say, you wish to copy a clip's children from one +track into a new one. + +When the child is a core child, it must be added to a track that does +not already contain another core child of the same clip. If it is not a +core child (an additional effect), then it must be added to a track +that already contains one of the core children of the same clip. + +This method can also fail if the adding the track element to the track +would break a configuration rule of the corresponding #GESTimeline, +such as causing three sources to overlap at a single time, or causing +a source to completely overlap another in the same track. + +Note that @err will not always be set upon failure. + + + The element that was added to @track, either +@child or a copy of child, or %NULL if the element could not be added. + + + + + A #GESClip + + + + A child of @clip + + + + The track to add @child to + + + + + + Finds an element controlled by the clip. If @track is given, +then only the track elements in @track are searched for. If @type is +given, then this function searches for a track element of the given +@type. + +Note, if multiple track elements in the clip match the given criteria, +this will return the element amongst them with the highest +#GESTimelineElement:priority (numerically, the smallest). See +ges_clip_find_track_elements() if you wish to find all such elements. + + + The element controlled by +@clip, in @track, and of the given @type, or %NULL if no such element +could be found. + + + + + A #GESClip - a #GESTrack or NULL + The track to search in, or %NULL to search in +all tracks + + + + The type of track element to search for, or `G_TYPE_NONE` to +match any type + + + + + + Finds the #GESTrackElement-s controlled by the clip that match the +given criteria. If @track is given as %NULL and @track_type is given as +#GES_TRACK_TYPE_UNKNOWN, then the search will match all elements in any +track, including those with no track, and of any +#GESTrackElement:track-type. Otherwise, if @track is not %NULL, but +@track_type is #GES_TRACK_TYPE_UNKNOWN, then only the track elements in +@track are searched for. Otherwise, if @track_type is not +#GES_TRACK_TYPE_UNKNOWN, but @track is %NULL, then only the track +elements whose #GESTrackElement:track-type matches @track_type are +searched for. Otherwise, when both are given, the track elements that +match **either** criteria are searched for. Therefore, if you wish to +only find elements in a specific track, you should give the track as +@track, but you should not give the track's #GESTrack:track-type as +@track_type because this would also select elements from other tracks +of the same type. + +You may also give @type to _further_ restrict the search to track +elements of the given @type. + + + A list of all +the #GESTrackElement-s controlled by @clip, in @track or of the given +@track_type, and of the given @type. + + + + + + + A #GESClip + + + + The track to search in, or %NULL to search in +all tracks - a #GESTrackType indicating the type of tracks in which elements -should be searched. + The track-type of the track element to search for, or +#GES_TRACK_TYPE_UNKNOWN to match any track type - 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. + The type of track element to search for, or %G_TYPE_NONE to +match any type - Get the #GESLayer to which this clip belongs. + Gets the #GESClip:layer of the clip. - The #GESLayer where this @clip is being -used, or %NULL if it is not used on any layer. The caller should unref it -usage. + The layer @clip is in, or %NULL if +@clip is not in any layer. - a #GESClip + A #GESClip - Get the formats supported by @clip. + Gets the #GESClip:supported-formats of the clip. - The formats supported by @clip. + The #GESTrackType-s supported by @clip. - the #GESClip + A #GESClip - - Gets the index position of an effect. + + This method allows you to convert a frame number into a #GstClockTime, this +can be used to either seek to a particular frame in the timeline or to later +on edit @self with that timestamp. + +This method should be use specifically in the case where you want to trim the +clip to a particular frame. + +The returned timestamp is in the global #GESTimeline time coordinates of @self, not +in the internal time coordinates. In practice, this means that you can not use +that time to set the clip #GESTimelineElement:in-point but it can be used in +the timeline editing API, for example as the @position argument of the +#ges_timeline_element_edit method. + +Note that you can get the frame timestamp of a particular clip asset with +#ges_clip_asset_get_frame_time. - The top index of the effect, -1 if something went wrong. + The timestamp corresponding to @frame_number in the element source +in the timeline coordinates. + + + + + A #GESClip + + + + The frame number to get the corresponding timestamp in the + timeline coordinates + + + + + + Gets the internal index of an effect in the clip. The index of effects +in a clip will run from 0 to n-1, where n is the total number of +effects. If two effects share the same #GESTrackElement:track, the +effect with the numerically lower index will be applied to the source +data **after** the other effect, i.e. output data will always flow from +a higher index effect to a lower index effect. + + + The index of @effect in @clip, or -1 if something went wrong. - The origin #GESClip + A #GESClip - The #GESBaseEffect we want to get the top index from + The effect we want to get the index of @@ -1502,79 +1513,85 @@ usage. - Get effects applied on @clip + Gets the #GESBaseEffect-s that have been added to the clip. The +returned list is ordered by their internal index in the clip. See +ges_clip_get_top_effect_index(). - 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. + A list of all +#GESBaseEffect-s that have been added to @clip. - The origin #GESClip + A #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. + Moves a clip to a new layer. If the clip already exists in a layer, it +is first removed from its current layer before being added to the new +layer. - %TRUE if @clip could be moved %FALSE otherwize + %TRUE if @clip was successfully moved to @layer. - a #GESClip + A #GESClip - the new #GESLayer + The new layer - Sets the formats supported by the file. + Sets the #GESClip:supported-formats of the clip. This should normally +only be called by subclasses, which should be responsible for updating +its value, rather than the user. - the #GESClip to set supported formats on + A #GESClip - the #GESTrackType defining formats supported by @clip + The #GESTrackType-s supported by @clip - This is a convenience method that lets you set the index of a top effect. + Set the index of an effect within the clip. See +ges_clip_get_top_effect_index(). The new index must be an existing +index of the clip. The effect is moved to the new index, and the other +effects may be shifted in index accordingly to otherwise maintain the +ordering. - %TRUE if @effect was successfuly moved, %FALSE otherwise. + %TRUE if @effect was successfully moved to @newindex. - The origin #GESClip + A #GESClip - The #GESBaseEffect to move + An effect within @clip to move - the new index at which to move the @effect inside this -#GESClip + The index for @effect in @clip @@ -1597,47 +1614,63 @@ unref each #GESBaseEffect and free the #GList. - 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. + Splits a clip at the given timeline position into two clips. The clip +must already have a #GESClip:layer. -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. +The original clip's #GESTimelineElement:duration is reduced such that +its end point matches the split position. Then a new clip is created in +the same layer, whose #GESTimelineElement:start matches the split +position and #GESTimelineElement:duration will be set such that its end +point matches the old end point of the original clip. Thus, the two +clips together will occupy the same positions in the timeline as the +original clip did. -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 children of the new clip will be new copies of the original clip's +children, so it will share the same sources and use the same +operations. + +The new clip will also have its #GESTimelineElement:in-point set so +that any internal data will appear in the timeline at the same time. +Thus, when the timeline is played, the playback of data should +appear the same. This may be complicated by any additional +#GESEffect-s that have been placed on the original clip that depend on +the playback time or change the data consumption rate of sources. This +method will attempt to translate these effects such that the playback +appears the same. In such complex situations, you may get a better +result if you place the clip in a separate sub #GESProject, which only +contains this clip (and its effects), and in the original layer +create two neighbouring #GESUriClip-s that reference this sub-project, +but at a different #GESTimelineElement:in-point. - The newly created #GESClip resulting -from the splitting or %NULL if the clip can't be split. + The newly created clip resulting +from the splitting @clip, or %NULL if @clip can't be split. - the #GESClip to split + The #GESClip to split - a #GstClockTime representing the timeline position at which to split + The timeline position at which to perform the 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 layer this clip lies in. + +If you want to connect to this property's #GObject::notify signal, +you should connect to it with g_signal_connect_after() since the +signal emission may be stopped internally. - The formats supported by the clip. + The #GESTrackType-s that the clip supports, which it can create +#GESTrackElement-s for. Note that this can be a combination of +#GESTrackType flags to indicate support for several +#GESTrackElement:track-type elements. @@ -1660,6 +1693,72 @@ from it can potentialy create #GESTrackElement for. + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + + + + + The object from which to retrieve the natural framerate + + + + The framerate numerator + + + + The framerate denominator + + + + + + Converts the given frame number into a timestamp, using the "natural" frame +rate of the asset. + +You can use this to reference a specific frame in a media file and use this +as, for example, the `in-point` or `max-duration` of a #GESClip. + + + The timestamp corresponding to @frame_number in the element source, given +in internal time coordinates, or #GST_CLOCK_TIME_NONE if the clip asset does not have a +natural frame rate. + + + + + The object for which to compute timestamp for specifed frame + + + + The frame number we want the internal time coordinate timestamp of + + + + + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + + + + + The object from which to retrieve the natural framerate + + + + The framerate numerator + + + + The framerate denominator + + + + Gets track types for which objects extracted from @self can create #GESTrackElement @@ -1713,8 +1812,30 @@ a layer + + + + + + + + + The object from which to retrieve the natural framerate + + + + The framerate numerator + + + + The framerate denominator + + + + + - + @@ -1723,25 +1844,39 @@ a layer - Subclasses can override the @create_track_element. - - method to create a single #GESTrackElement for a given #GESTrack. + + Method to create the core #GESTrackElement of +a clip of this class. If a clip of this class may create several track +elements per track type, this should be left as %NULL, and +create_track_elements() should be used instead. Otherwise, you should +implement this class method and leave create_track_elements() as the +default implementation - - method to create multiple #GESTrackElements for a -#GESTrack. + + Method to create the (multiple) core +#GESTrackElement-s of a clip of this class. If create_track_element() +is implemented, this should be kept as the default implementation - - - - - + + + + + + + + + + + + + + @@ -1780,27 +1915,39 @@ a layer - The #GESContainer base class. + A #GESContainer is a timeline element that controls other +#GESTimelineElement-s, which are its children. In particular, it is +responsible for maintaining the relative #GESTimelineElement:start and +#GESTimelineElement:duration times of its children. Therefore, if a +container is temporally adjusted or moved to a new layer, it may +accordingly adjust and move its children. Similarly, a change in one of +its children may prompt the parent to correspondingly change its +siblings. - 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 + Groups the containers into a single container by merging them. The +containers must all belong to the same #GESTimelineElement:timeline. + +If the elements are all #GESClip-s then this method will attempt to +combine them all into a single #GESClip. This should succeed if they: +share the same #GESTimelineElement:start, #GESTimelineElement:duration +and #GESTimelineElement:in-point; exist in the same layer; and all of +the sources share the same #GESAsset. If this fails, or one of the +elements is not a #GESClip, this method will try to create a #GESGroup +instead. - The #GESContainer (subclass) resulting of the -grouping + The container created by merging +@containers, or %NULL if they could not be merged into a single +container. - The -#GESContainer to group, they must all be in a same #GESTimeline + +The #GESContainer-s to group @@ -1849,44 +1996,43 @@ grouping - - Edit @container in the different exisiting #GESEditMode modes. In the case of -slide, and roll, you need to specify a #GESEdge + + Edits the container within its timeline. + use #ges_timeline_element_edit instead. - %TRUE if the container as been edited properly, %FALSE if an error -occured + %TRUE if the edit of @container completed, %FALSE on failure. - the #GESClip to edit + The #GESContainer 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. + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +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 priority/index of the layer @container should +be moved to. -1 means no move - The #GESEditMode in which the editition will happen. + The edit mode - The #GESEdge the edit should happen on. + The edge of @container where the edit should occur - The position at which to edit @container (in nanosecond) + The edit position: a new location for the edge of @container +(in nanoseconds) @@ -1906,105 +2052,120 @@ occured - Ungroups the #GESTimelineElement contained in this GESContainer, -creating new #GESContainer containing those #GESTimelineElement -apropriately. + Ungroups the container by splitting it into several containers +containing various children of the original. The rules for how the +container splits depends on the subclass. A #GESGroup will simply split +into its children. A #GESClip will split into one #GESClip per +#GESTrackType it overlaps with (so an audio-video clip will split into +an audio clip and a video clip), where each clip contains all the +#GESTrackElement-s from the original clip with a matching +#GESTrackElement:track-type. + +If @recursive is %TRUE, and the container contains other containers as +children, then they will also be ungrouped, and so on. The list of -#GESContainer resulting from the ungrouping operation -The user is responsible for unreffing the contained objects -and freeing the list. +new #GESContainer-s created from the splitting of @container. - The #GESContainer to ungroup + The container to ungroup - Wether to recursively ungroup @container + Whether to recursively ungroup @container - Add the #GESTimelineElement to the container. + Adds a timeline element to the container. The element will now be a +child of the container (and the container will be the +#GESTimelineElement:parent of the added element), which means that it +is now controlled by the container. This may change the properties of +the child or the container, depending on the subclass. + +Additionally, the children properties of the newly added element will +be shared with the container, meaning they can also be read and set +using ges_timeline_element_get_child_property() and +ges_timeline_element_set_child_property() on the container. - %TRUE on success, %FALSE on failure. + %TRUE if @child was successfully added to @container. - a #GESContainer + A #GESContainer - the #GESTimelineElement + The element to add as a child - - Edit @container in the different exisiting #GESEditMode modes. In the case of -slide, and roll, you need to specify a #GESEdge + + Edits the container within its timeline. + use #ges_timeline_element_edit instead. - %TRUE if the container as been edited properly, %FALSE if an error -occured + %TRUE if the edit of @container completed, %FALSE on failure. - the #GESClip to edit + The #GESContainer 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. + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +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 priority/index of the layer @container should +be moved to. -1 means no move - The #GESEditMode in which the editition will happen. + The edit mode - The #GESEdge the edit should happen on. + The edge of @container where the edit should occur - The position at which to edit @container (in nanosecond) + The edit position: a new location for the edge of @container +(in nanoseconds) - Get the list of #GESTimelineElement contained in @container -The user is responsible for unreffing the contained objects -and freeing the list. + Get the list of timeline elements contained in the container. If +@recursive is %TRUE, and the container contains other containers as +children, then their children will be added to the list, in addition to +themselves, and so on. The list of -timeline element contained in @container. +#GESTimelineElement-s contained in @container. - a #GESContainer + A #GESContainer @@ -2014,64 +2175,74 @@ timeline element contained in @container. - Release the @child from the control of @container. + Removes a timeline element from the container. The element will no +longer be controlled by the container. - %TRUE if the @child was properly released, else %FALSE. + %TRUE if @child was successfully removed from @container. - a #GESContainer + A #GESContainer - the #GESTimelineElement to release + The child to remove - Ungroups the #GESTimelineElement contained in this GESContainer, -creating new #GESContainer containing those #GESTimelineElement -apropriately. + Ungroups the container by splitting it into several containers +containing various children of the original. The rules for how the +container splits depends on the subclass. A #GESGroup will simply split +into its children. A #GESClip will split into one #GESClip per +#GESTrackType it overlaps with (so an audio-video clip will split into +an audio clip and a video clip), where each clip contains all the +#GESTrackElement-s from the original clip with a matching +#GESTrackElement:track-type. + +If @recursive is %TRUE, and the container contains other containers as +children, then they will also be ungrouped, and so on. The list of -#GESContainer resulting from the ungrouping operation -The user is responsible for unreffing the contained objects -and freeing the list. +new #GESContainer-s created from the splitting of @container. - The #GESContainer to ungroup + The container to ungroup - Wether to recursively ungroup @container + Whether to recursively ungroup @container - The span of priorities which this container occupies. + The span of the container's children's #GESTimelineElement:priority +values, which is the number of integers that lie between (inclusive) +the minimum and maximum priorities found amongst the container's +children (maximum - minimum + 1). - A list of TimelineElement -controlled by this Container. NOTE: Do not modify. + The list of +#GESTimelineElement-s controlled by this Container - The span of priorities this container occupies + The #GESContainer:height of @obj @@ -2089,28 +2260,27 @@ controlled by this Container. NOTE: Do not modify. - 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. + Will be emitted after a child is added to the container. Usually, +you should connect with g_signal_connect_after() since the signal +may be stopped internally. - the #GESTimelineElement that was added. + The child that was added - Will be emitted after a child was removed from @container. + Will be emitted after a child is removed from the container. - the #GESTimelineElement that was removed. + The child that was removed @@ -2190,20 +2360,18 @@ get stopped internally. The list of -#GESContainer resulting from the ungrouping operation -The user is responsible for unreffing the contained objects -and freeing the list. +new #GESContainer-s created from the splitting of @container. - The #GESContainer to ungroup + The container to ungroup - Wether to recursively ungroup @container + Whether to recursively ungroup @container @@ -2228,39 +2396,38 @@ and freeing the list. - %TRUE if the container as been edited properly, %FALSE if an error -occured + %TRUE if the edit of @container completed, %FALSE on failure. - the #GESClip to edit + The #GESContainer 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. + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +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 priority/index of the layer @container should +be moved to. -1 means no move - The #GESEditMode in which the editition will happen. + The edit mode - The #GESEdge the edit should happen on. + The edge of @container where the edit should occur - The position at which to edit @container (in nanosecond) + The edit position: a new location for the edge of @container +(in nanoseconds) @@ -2279,143 +2446,84 @@ occured - A function that will be called to create the #GstElement that will be used -as a source to fill the gaps in @track. + A function that creates a #GstElement that can be used as a source to +fill the gaps of the track. A gap is a timeline region where the track +has no #GESTrackElement sources. - A #GstElement (must be a source) that will be used to -fill the gaps (periods of time in @track that containes no source). + A source #GstElement to fill gaps in @track. - the #GESTrack + The #GESTrack - - Creates the 'primary' track element for this @clip. + + A method for creating the core #GESTrackElement of a clip, to be added +to a #GESTrack of the given track type. -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. +If a clip may produce several track elements per track type, +#GESCreateTrackElementsFunc is more appropriate. - - the #GESTrackElement to be used, or %NULL if it can't provide one -for the given @track. + + The #GESTrackElement created +by @clip, or %NULL if @clip can not provide a track element for the +given @type or an error occurred. - a #GESClip + A #GESClip - a #GESTrackType + A #GESTrackType to create a #GESTrackElement for - - 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. + + A method for creating the core #GESTrackElement-s of a clip, to be +added to #GESTrack-s of the given track type. - - %TRUE on success %FALSE on failure. + + A list of +the #GESTrackElement-s created by @clip for the given @type, or %NULL +if no track elements are created or an error occurred. - + - a #GESClip + A #GESClip - a #GESTrackType + A #GESTrackType to create #GESTrackElement-s for - + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2431,11 +2539,21 @@ return more than one #GESTrackElement(s) for a given #GESTrack. Represents the start of an object. + + Represents the start of an object. + Represents the end of an object. + + Represents the end of an object. + - Represent the fact we are not workin with any edge of an + Represent the fact we are not working with any edge of an + object. + + + Represent the fact we are not working with any edge of an object. @@ -2451,42 +2569,149 @@ return more than one #GESTrackElement(s) for a given #GESTrack. - 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>. + When a single timeline element is edited within its timeline, using +ges_timeline_element_edit(), depending on the edit mode, its +#GESTimelineElement:start, #GESTimelineElement:duration or +#GESTimelineElement:in-point will be adjusted accordingly. In addition, +other elements in the timeline may also have their properties adjusted. + +In fact, the edit is actually performed on the toplevel of the edited +element (usually a #GESClip), which is responsible for moving its +children along with it. For simplicity, in the descriptions we will +use "element" to exclusively refer to toplevel elements. + +In the edit mode descriptions, the "start edge", "end edge" and the +"element as a whole" correspond to using #GES_EDGE_START, #GES_EDGE_END +and #GES_EDGE_NONE as part of the edit, respectively. The "start time", +"duration time" and "in-point time" correspond to the +#GESTimelineElement:start, #GESTimelineElement:duration and +#GESTimelineElement:in-point properties, respectively. Moreover, the +"end time" refers to the final time of the element: +#GESTimelineElement:start + #GESTimelineElement:duration. Finally, +the "edit position" is the timeline time used as part of the edit. + +You can also find more explanation about the behaviour of those modes at: +[trim, ripple and roll](http://pitivi.org/manual/trimming.html) +and [clip management](http://pitivi.org/manual/usingclips.html). - The object is edited the normal way (default). + The element is edited the normal way (default). + This only moves a single element. If acting on the start edge of the + element, the element's start time is set to the edit position. + If acting on end edge of the element, the element's duration time + is set such that its end time matches the edit position. + + + The element is edited the normal way (default). + This only moves a single element. If acting on the start edge of the + element, the element's start time is set to the edit position. + If acting on end edge of the element, the element's duration time + is set such that its end time matches the edit position. - 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 element is edited in ripple mode. This + shifts the element and all later elements (those with equal or later + start times) in the timeline by the same amount. If acting on the + element as a whole, the element's start time is shifted to the edit + position, and later elements are also shifted by the same amount. If + acting on the end edge of the element, the element's **duration time** + is shifted so that the element's end time matches the edit position, + and later elements have their **start time** shifted by the same + amount. + + + The element is edited in ripple mode. This + shifts the element and all later elements (those with equal or later + start times) in the timeline by the same amount. If acting on the + element as a whole, the element's start time is shifted to the edit + position, and later elements are also shifted by the same amount. If + acting on the end edge of the element, the element's **duration time** + is shifted so that the element's end time matches the edit position, + and later elements have their **start time** shifted by the same + amount. - 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 element is edited in roll mode. This trims + the edge of an element and neighbouring edges (opposite edges of other + elements in the timeline with the same corresponding time value), such + that the edges remain in contact. If acting on the start edge of the + element, the start edge is trimmed to the edit position (see + #GES_EDIT_MODE_TRIM), and any other elements in the timeline whose end + time matches the edited element's start time (evaluated before the + edit) will have their **end** edge trimmed to the same edit position. + Similarly, if acting on the end edge of the element, the end edge is + trimmed to the edit position, and any other elements in the timeline + whose start time matches the edited element's end time will have + their start edge trimmed to the same edit position. + + + The element is edited in roll mode. This trims + the edge of an element and neighbouring edges (opposite edges of other + elements in the timeline with the same corresponding time value), such + that the edges remain in contact. If acting on the start edge of the + element, the start edge is trimmed to the edit position (see + #GES_EDIT_MODE_TRIM), and any other elements in the timeline whose end + time matches the edited element's start time (evaluated before the + edit) will have their **end** edge trimmed to the same edit position. + Similarly, if acting on the end edge of the element, the end edge is + trimmed to the edit position, and any other elements in the timeline + whose start time matches the edited element's end time will have + their start edge trimmed to the same edit position. - 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 element is edited in trim mode. This shifts + the edge of a single element while maintaining the timing of + its internal content in the timeline, so the samples/frames/etc of a + source would still appear at the same timeline time when it is played. + If acting on the start edge of the element, the element's start time + will be shifted to the edit position and the element's in-point time + will be shifted by the same amount. Additionally, the element's + duration time will be shifted the other way such that the element's + end time remains the same. If acting on end edge of the element, the + element's duration time is set such that its end time matches the edit + position. + + + The element is edited in trim mode. This shifts + the edge of a single element while maintaining the timing of + its internal content in the timeline, so the samples/frames/etc of a + source would still appear at the same timeline time when it is played. + If acting on the start edge of the element, the element's start time + will be shifted to the edit position and the element's in-point time + will be shifted by the same amount. Additionally, the element's + duration time will be shifted the other way such that the element's + end time remains the same. If acting on end edge of the element, the + element's duration time is set such that its end time matches the edit + position. - 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) + The element is edited in slide mode (not yet + implemented). This shifts the element and will trim the edges of + neighbouring edges on either side accordingly. If acting on the + element as a whole, the element's start time is shifted to the edit + position. Any other elements in the timeline whose end time matches + the edited element's start time (evaluated before the edit) will have + their end edge trimmed to the same edit position. Additionally, any + other elements in the timeline whose start time matches the edited + element's end time will have their start edge trimmed to match the + edited element's **new** end time. + + + The element is edited in slide mode (not yet + implemented). This shifts the element and will trim the edges of + neighbouring edges on either side accordingly. If acting on the + element as a whole, the element's start time is shifted to the edit + position. Any other elements in the timeline whose end time matches + the edited element's start time (evaluated before the edit) will have + their end edge trimmed to the same edit position. Additionally, any + other elements in the timeline whose start time matches the edited + element's end time will have their start edge trimmed to match the + edited element's **new** end time. + Currently we only support effects with 1 sinkpad and 1 sourcepad +with the exception of `gesaudiomixer` and `gescompositor` which +can be used as effects. @@ -2530,6 +2755,8 @@ Example: "videobalance saturation=1.5 hue=+0.5" + This asset has a GStreamer bin-description as ID and is able to determine +to what track type the effect should be used in. @@ -2611,7 +2838,13 @@ method returns false, a warning is emitted with more information. The effect will be applied on the sources that have lower priorities -(higher number) between the inpoint and the end of it. +(higher number) between the inpoint and the end of it. + +The asset ID of an effect clip is in the form: + +``` + "audio ! bin ! description || video ! bin ! description" +``` @@ -2688,20 +2921,45 @@ Example: "videobalance saturation=1.5 hue=+0.5" The formatted files was malformed + + - FIXME: Long description needed + A #GObject that implements the #GESExtractable interface can be +extracted from a #GESAsset using ges_asset_extract(). + +Each extractable type will have its own way of interpreting the +#GESAsset:id of an asset (or, if it is associated with a specific +subclass of #GESAsset, the asset subclass may handle the +interpretation of the #GESAsset:id). By default, the requested asset +#GESAsset:id will be ignored by a #GESExtractable and will be set to +the type name of the extractable instead. Also by default, when the +requested asset is extracted, the returned object will simply be a +newly created default object of that extractable type. You should check +the documentation for each extractable type to see if they differ from +the default. + +After the object is extracted, it will have a reference to the asset it +came from, which you can retrieve using ges_extractable_get_asset(). + Gets the #GESAsset:id of some associated asset. It may be the case +that the object has no set asset, or even that such an asset does not +yet exist in the GES cache. Instead, this will return the asset +#GESAsset:id that is _compatible_ with the current state of the object, +as determined by the #GESExtractable implementer. If it was indeed +extracted from an asset, this should return the same as its +corresponding asset #GESAsset:id. - The #id of the associated #GESAsset, free with #g_free + The #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. - The #GESExtractable + A #GESExtractable @@ -2735,65 +2993,89 @@ Example: "videobalance saturation=1.5 hue=+0.5" - Method for getting an asset from a #GESExtractable + Get the asset that has been set on the extractable object. - The #GESAsset or %NULL if none has -been set + The asset set on @self, or %NULL +if no asset has been set. - The #GESExtractable from which to retrieve a #GESAsset + A #GESExtractable + Gets the #GESAsset:id of some associated asset. It may be the case +that the object has no set asset, or even that such an asset does not +yet exist in the GES cache. Instead, this will return the asset +#GESAsset:id that is _compatible_ with the current state of the object, +as determined by the #GESExtractable implementer. If it was indeed +extracted from an asset, this should return the same as its +corresponding asset #GESAsset:id. - The #id of the associated #GESAsset, free with #g_free + The #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. - The #GESExtractable + A #GESExtractable - Method to set the asset which instantiated the specified object + Sets the asset for this extractable object. + +When an object is extracted from an asset using ges_asset_extract() its +asset will be automatically set. Note that many classes that implement +#GESExtractable will automatically create their objects using assets +when you call their @new methods. However, you can use this method to +associate an object with a compatible asset if it was created by other +means and does not yet have an asset. Or, for some implementations of +#GESExtractable, you can use this to change the asset of the given +extractable object, which will lead to a change in its state to +match the new asset #GESAsset:id. - %TRUE if @asset could be set %FALSE otherwize + %TRUE if @asset could be successfully set on @self. - Target object + A #GESExtractable - The #GESAsset to set + The asset to set + Method for checking that an ID is valid for the given #GESExtractable +type. If the given ID is considered valid, it can be adjusted into some +standard and returned to prevent the creation of separate #GESAsset-s, +with different #GESAsset:id, that would otherwise act the same. + +Returns (transfer full) (nullable): The actual #GESAsset:id to set on +any corresponding assets, based on @id, or %NULL if @id is not valid. - The ID to use for the asset or %NULL if @id is not valid - The #GType to check @id for: + The #GESExtractable type to check @id for - The id to check + The ID to check @@ -2804,12 +3086,29 @@ been set + The subclass type of #GESAsset that should be created when +an asset with the corresponding #GESAsset:extractable-type is +requested. + The method to call to check whether a given ID is valid as +an asset #GESAsset:id for the given #GESAsset:extractable-type. The +returned ID is the actual #GESAsset:id that is set on the asset. The +default implementation will simply always return the type name of the +#GESAsset:extractable-type, even if the received ID is %NULL. As such, +any given ID is considered valid (or is ignored), but only one is +actually ever set on an asset, which means the given +#GESAsset:extractable-type can only have one associated asset. + Whether an object of this class can have its +#GESAsset change over its lifetime. This should be set to %TRUE if one +of the object's parameters that is associated with its ID can change +after construction, which would require an asset with a new ID. Note +that the subclass is required to handle the requesting and setting of +the new asset on the object. @@ -2864,12 +3163,13 @@ been set - The #id of the associated #GESAsset, free with #g_free + The #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. - The #GESExtractable + A #GESExtractable @@ -2916,49 +3216,42 @@ been set - + + Tests if a given GESFrameNumber represents a valid frame - + - + + Constant to define an undefined frame number - - - - - - - - - - - - - - A function that will be called when the GNonLin object of a corresponding + + + + A function that will be called when the nleobject 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(). + This method type is no longer used. - TRUE if the implementer succesfully filled the @nleobj, else #FALSE. + %TRUE if the implementer successfully filled the @nleobj. - the #GESClip controlling the track elements + The #GESClip controlling the track elements - the #GESTrackElement + The #GESTrackElement - the GNonLin object that needs to be filled. + The nleobject that needs to be filled @@ -3021,8 +3314,9 @@ the asset for the #GESFormatter that has the highest @rank - + Load data from the given URI into timeline. + Use @ges_timeline_load_from_uri TRUE if the timeline data was successfully loaded from the URI, @@ -3044,8 +3338,9 @@ else FALSE. - + Save data from timeline to the given URI. + Use @ges_timeline_save_to_uri TRUE if the timeline data was successfully saved to the URI @@ -3071,8 +3366,9 @@ else FALSE. - + Load data from the given URI into timeline. + Use @ges_timeline_load_from_uri TRUE if the timeline data was successfully loaded from the URI, @@ -3094,8 +3390,9 @@ else FALSE. - + Save data from timeline to the given URI. + Use @ges_timeline_save_to_uri TRUE if the timeline data was successfully saved to the URI @@ -3173,16 +3470,16 @@ else FALSE. - + - + - + - + @@ -3202,34 +3499,44 @@ else FALSE. + The class to register metas on + The name of the formatter + The formatter description - + + A list of coma separated file extensions handled +by the formatter. The order of the extensions should match the +list of the structures inside @caps - + + The caps the formatter handled, they should match what +gstreamer typefind mechanism will report for the files the formatter +handles. + The version of the formatter + The rank of the formatter - + Virtual method for loading a timeline from a given URI. Every #GESFormatter subclass needs to implement this method. - Use @ges_timeline_load_from_uri TRUE if the timeline data was successfully loaded from the URI, @@ -3254,11 +3561,10 @@ else FALSE. - + Virtual method for saving a timeline to a uri. Every #GESFormatter subclass needs to implement this method. - Use @ges_timeline_save_to_uri TRUE if the timeline data was successfully saved to the URI @@ -3284,42 +3590,48 @@ else FALSE. - - - - - - - - - - - - - - - - - - - - - - A #GESGroup is an object which controls one or more -#GESClips in one or more #GESLayer(s). + A #GESGroup controls one or more #GESContainer-s (usually #GESClip-s, +but it can also control other #GESGroup-s). Its children must share +the same #GESTimeline, but can otherwise lie in separate #GESLayer-s +and have different timings. -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. +To initialise a group, you may want to use ges_container_group(), +and similarly use ges_container_ungroup() to dispose of it. + +A group will maintain the relative #GESTimelineElement:start times of +its children, as well as their relative layer #GESLayer:priority. +Therefore, if one of its children has its #GESTimelineElement:start +set, all other children will have their #GESTimelineElement:start +shifted by the same amount. Similarly, if one of its children moves to +a new layer, the other children will also change layers to maintain the +difference in their layer priorities. For example, if a child moves +from a layer with #GESLayer:priority 1 to a layer with priority 3, then +another child that was in a layer with priority 0 will move to the +layer with priority 2. + +The #GESGroup:start of a group refers to the earliest start +time of its children. If the group's #GESGroup:start is set, all the +children will be shifted equally such that the earliest start time +will match the set value. The #GESGroup:duration of a group is the +difference between the earliest start time and latest end time of its +children. If the group's #GESGroup:duration is increased, the children +whose end time matches the end of the group will be extended +accordingly. If it is decreased, then any child whose end time exceeds +the new end time will also have their duration decreased accordingly. + +A group may span several layers, but for methods such as +ges_timeline_element_get_layer_priority() and +ges_timeline_element_edit() a group is considered to have a layer +priority that is the highest #GESLayer:priority (numerically, the +smallest) of all the layers it spans. - 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. + Created a new empty group. You may wish to use +ges_container_group() instead, which can return a different +#GESContainer subclass if possible. The new empty group. @@ -3327,26 +3639,33 @@ proper subclass is selected. - The duration (in nanoseconds) which will be used in the container + An overwrite of the #GESTimelineElement:duration property. For a +#GESGroup, this is the difference between the earliest +#GESTimelineElement:start time and the latest end time (given by +#GESTimelineElement:start + #GESTimelineElement:duration) amongst +its children. - 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. + An overwrite of the #GESTimelineElement:in-point property. This has +no meaning for a group and should not be set. - The maximum duration (in nanoseconds) of the #GESGroup. + An overwrite of the #GESTimelineElement:max-duration property. This +has no meaning for a group and should not be set. + An overwrite of the #GESTimelineElement:priority property. +Setting #GESTimelineElement priorities is deprecated as all priority +management is now done by GES itself. - The position of the object in its container (in nanoseconds). + An overwrite of the #GESTimelineElement:start property. For a +#GESGroup, this is the earliest #GESTimelineElement:start time +amongst its children. @@ -3375,759 +3694,13 @@ be the one located 5 seconds in the controlled resource. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. + + 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. + This won't be used anymore and has been replaced by +#GESUriSource instead which now plugs an `imagefreeze` element when +#ges_uri_source_asset_is_image returns %TRUE. @@ -4164,40 +3737,33 @@ image files, do not set the in-point property. - - - - - - - - - - - - - - - - - - - - - - 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. + #GESLayer-s are responsible for collecting and ordering #GESClip-s. + +A layer within a timeline will have an associated priority, +corresponding to their index within the timeline. A layer with the +index/priority 0 will have the highest priority and the layer with the +largest index will have the lowest priority (the order of priorities, +in this sense, is the _reverse_ of the numerical ordering of the +indices). ges_timeline_move_layer() should be used if you wish to +change how layers are prioritised in a timeline. + +Layers with higher priorities will have their content priorities +over content from lower priority layers, similar to how layers are +used in image editing. For example, if two separate layers both +display video content, then the layer with the higher priority will +have its images shown first. The other layer will only have its image +shown if the higher priority layer has no content at the given +playtime, or is transparent in some way. Audio content in separate +layers will simply play in addition. - Creates a new #GESLayer. + Creates a new layer. - A new #GESLayer + A new layer. @@ -4243,177 +3809,198 @@ same priority within a given timeline. - Creates Clip from asset, adds it to layer and -returns a reference to it. + Extracts a new clip from an asset and adds it to the layer with +the given properties. - Created #GESClip + The newly created clip. - a #GESLayer + The #GESLayer - The asset to add to + The asset to extract the new clip from - 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 #GESTimelineElement:start value to set on the new clip +If `start == #GST_CLOCK_TIME_NONE`, it will be added to the end +of @layer, i.e. it will be set to @layer's duration - The inpoint value to set on the new #GESClip + The #GESTimelineElement:in-point value to set on the new +clip - The duration value to set on the new #GESClip + The #GESTimelineElement:duration value to set on the new +clip - The #GESTrackType to set on the the new #GESClip + The #GESClip:supported-formats to set on the the new +clip, or #GES_TRACK_TYPE_UNKNOWN to use the default - Adds the given clip to the layer. Sets the clip's parent, and thus -takes ownership of the clip. + Adds the given clip to the layer. If the method succeeds, the layer +will take 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. +This method will fail and return %FALSE if @clip already resides in +some layer. It can also fail if the additional clip breaks some +compositional rules (see #GESTimelineElement). - %TRUE if the clip was properly added to the layer, or %FALSE -if the @layer refuses to add the clip. + %TRUE if @clip was properly added to @layer, or %FALSE +if @layer refused to add @clip. - a #GESLayer + The #GESLayer - the #GESClip to add. + The clip to add - - Gets whether transitions are automatically added when objects -overlap or not. + + Gets whether the layer is active for the given track. See +ges_layer_set_active_for_tracks(). - %TRUE if transitions are automatically added, else %FALSE. + %TRUE if @layer is active for @track, or %FALSE otherwise. - a #GESLayer + The #GESLayer + + + + The #GESTrack to check if @layer is currently active for + + + + + + Gets the #GESLayer:auto-transition of the layer. + + + %TRUE if transitions are automatically added to @layer. + + + + + The #GESLayer - Get the clips this layer contains. + Get the #GESClip-s contained in this layer. - a #GList of -clips. The user is responsible for -unreffing the contained objects and freeing the list. + A list of clips in +@layer. - a #GESLayer + The #GESLayer - Gets the clips which appear between @start and @end on @layer. + Gets the clips within the layer that appear between @start and @end. - a #GList of clips intersecting [@start, @end) interval on @layer. + A list of #GESClip-s +that intersect the interval `[start, end)` in @layer. - a #GESLayer + The #GESLayer - start of the interval + Start of the interval - end 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 + Retrieves the duration of the layer, which is the difference +between the start of the layer (always time 0) and the end (which will +be the end time of the final clip). - The duration of a layer + The duration of @layer. - The #GESLayer to get the duration from + The layer to get the duration from - Get the priority of @layer within the timeline. + Get the priority of the layer. When inside a timeline, this is its +index in the timeline. See ges_timeline_move_layer(). - The priority of the @layer within the timeline. + The priority of @layer within its timeline. - a #GESLayer + The #GESLayer - Get the #GESTimeline in which #GESLayer currently is. + Gets the timeline that the layer is a part of. - the #GESTimeline in which #GESLayer -currently is or %NULL if not in any timeline yet. + The timeline that @layer +is currently part of, or %NULL if it is not associated with any +timeline. - The #GESLayer to get the parent #GESTimeline from + The #GESLayer - Convenience method to check if @layer is empty (doesn't contain any clip), -or not. + Convenience method to check if the layer is empty (doesn't contain +any #GESClip), or not. - %TRUE if @layer is empty, %FALSE if it already contains at least -one #GESClip + %TRUE if @layer is empty, %FALSE if it contains at least +one clip. @@ -4424,48 +4011,84 @@ one #GESClip - 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. + Removes the given clip from the layer. - %TRUE if the clip could be removed, %FALSE if the layer does -not want to remove the clip. + %TRUE if @clip was removed from @layer, or %FALSE if the +operation failed. - a #GESLayer + The #GESLayer - the #GESClip to remove + The clip to remove + + Activate or deactivate track elements in @tracks (or in all tracks if @tracks +is %NULL). + +When a layer is deactivated for a track, all the #GESTrackElement-s in +the track that belong to a #GESClip in the layer will no longer be +active in the track, regardless of their individual +#GESTrackElement:active value. + +Note that by default a layer will be active for all of its +timeline's tracks. + + + %TRUE if the operation worked %FALSE otherwise. + + + + + The #GESLayer + + + + Whether elements in @tracks should be active or not + + + + The list of +tracks @layer should be (de-)active in, or %NULL to include all the tracks +in the @layer's timeline + + + + + + - Sets the layer to the given @auto_transition. See the documentation of the -property auto_transition for more information. + Sets #GESLayer:auto-transition for the layer. Use +ges_timeline_set_auto_transition() if you want all layers within a +#GESTimeline to have #GESLayer:auto-transition set to %TRUE. Use this +method if you want different values for different layers (and make sure +to keep #GESTimeline:auto-transition as %FALSE for the corresponding +timeline). - a #GESLayer + The #GESLayer - whether the auto_transition is active + Whether transitions should be automatically added to +the layer - Sets the layer to the given @priority. See the documentation of the -priority property for more information. + Sets the layer to the given priority. See #GESLayer:priority. 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. @@ -4475,11 +4098,11 @@ will make sure there is never 'gaps' between layer priorities. - a #GESLayer + The #GESLayer - the priority to set + The priority to set @@ -4499,16 +4122,38 @@ will make sure there is never 'gaps' between layer priorities. - Sets whether transitions are added automagically when clips overlap. + Whether to automatically create a #GESTransitionClip whenever two +#GESClip-s overlap in the layer. Specifically, if this is set to +%TRUE, then wherever two #GESSource-s (that belong to some clip in +the layer) share the same #GESTrackElement:track and the end time of +one source exceeds the #GESTimelineElement:start time of the other, +there will exist a corresponding #GESTransitionClip in the same +layer. These automatic transitions will be created and removed +accordingly. Their temporal extent will cover the overlap of the +two sources (their #GESTimelineElement:start will be set to the +#GESTimelineElement:start of the later source, and their +#GESTimelineElement:duration will be the difference between the +#GESTimelineElement:start of the later source, and the end time of +the earlier source). + +It may be difficult to use this feature if your timeline has multiple +tracks of the same #GESTrack:track-type and you use the +#GESTimeline::select-tracks-for-object signal. You will have to +ensure that any #GESTransition that belongs to a newly created +transition clip is able to arrive in the correct track. + +When a layer is added to a #GESTimeline, if this property is left as +%FALSE, but the timeline's #GESTimeline:auto-transition is %TRUE, it +will be set to %TRUE as well. The priority of the layer in the #GESTimeline. 0 is the highest -priority. Conceptually, a #GESTimeline is a stack of GESLayers, +priority. Conceptually, a timeline is a stack of layers, 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) +Note that the timeline needs to be committed (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 @@ -4536,26 +4181,46 @@ will make sure there is never 'gaps' between layer priorities. + + Will be emitted whenever the layer is activated or deactivated +for some #GESTrack. See ges_layer_set_active_for_tracks(). + + + + + + Whether @layer has been made active or de-active in the @tracks + + + + A list of #GESTrack +which have been activated or deactivated + + + + + + - Will be emitted after the clip was added to the layer. + Will be emitted after the clip is added to the layer. - the #GESClip that was added. + The clip that was added - Will be emitted after the clip was removed from the layer. + Will be emitted after the clip is removed from the layer. - the #GESClip that was removed + The clip that was removed @@ -4563,7 +4228,7 @@ will make sure there is never 'gaps' between layer priorities. Subclasses can override the @get_objects if they can provide a more -efficient way of providing the list of contained #GESClip(s). +efficient way of providing the list of contained #GESClip-s. @@ -4624,969 +4289,1318 @@ 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 description of the object, to be used in various contexts (string). - The extension of the files produced by a formatter (string) + The file extension of files produced by a #GESFormatter (string). - Mimetype used for the file produced by a formatter (string) - -The mime type + The mimetype used for the file produced by a #GESFormatter (string). - Name of a formatter it is used as ID of Formater assets (string) - -The name of the formatter + The name of a formatter, used as the #GESAsset:id for #GESFormatter +assets (string). - The rank of a formatter (GstRank) - -The rank of a formatter + The rank of a #GESFormatter (a #GstRank). - The version of a formatter (double) - -The formatter version + The version of a #GESFormatter (double). - The version of the format in which a project is serialized + The version of the format in which a project is serialized (string). + + + + + The ARGB color of a #GESMarker (an AARRGGBB hex as a uint). - 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 volume for a #GESTrack or a #GESLayer (float). - The default volume - -The default volume for a track or a layer as a float + The default volume for a #GESTrack or a #GESLayer as a float. - - - - - - - - - - - - - - - - - - - - - - - Interface that allows reading and writing meta + - - Deserializes a meta container. + + + Current position (in nanoseconds) of the #GESMarker + + + + + + + + + + + A #GESMarker can be colored by setting the #GES_META_MARKER_COLOR meta. + + + Creates a new #GESMarkerList. + + + A new #GESMarkerList + + + + - TRUE on success, FALSE if there was an error. + The newly-added marker, the list keeps ownership +of the marker + + + + + + + + The position of the new marker + + + + + + + + a #GList +of the #GESMarker within the GESMarkerList. The user will have +to unref each #GESMarker and free the #GList. + + + + + + + + + + + + Moves a @marker in a @list to a new @position + + + %TRUE if the marker could be moved, %FALSE otherwise + (if the marker was not present in the list for example) + + + + + + + + + + + + + + + + Removes @marker from @list, this decreases the refcount of the +marker by 1. + + + %TRUE if the marker could be removed, %FALSE otherwise + (if the marker was not present in the list for example) + + + + + + + + + + + + + + + The number of markers in @list + + + + + + + + + + Will be emitted after the marker was added to the marker-list. + + + + + + the position of the added marker + + + + the #GESMarker that was added. + + + + + + Will be emitted after the marker was moved to. + + + + + + the previous position of the marker + + + + the new position of the marker + + + + the #GESMarker that was moved. + + + + + + Will be emitted after the marker was removed the marker-list. + + + + + + the #GESMarker that was removed. + + + + + + + + + + + + + A #GObject that implements #GESMetaContainer can have metadata set on +it, that is data that is unimportant to its function within GES, but +may hold some useful information. In particular, +ges_meta_container_set_meta() can be used to store any #GValue under +any generic field (specified by a string key). The same method can also +be used to remove the field by passing %NULL. A number of convenience +methods are also provided to make it easier to set common value types. +The metadata can then be read with ges_meta_container_get_meta() and +similar convenience methods. + +## Registered Fields + +By default, any #GValue can be set for a metadata field. However, you +can register some fields as static, that is they only allow values of a +specific type to be set under them, using +ges_meta_container_register_meta() or +ges_meta_container_register_static_meta(). The set #GESMetaFlag will +determine whether the value can be changed, but even if it can be +changed, it must be changed to a value of the same type. + +Internally, some GES objects will be initialized with static metadata +fields. These will correspond to some standard keys, such as +#GES_META_VOLUME. + + + Deserializes the given string, and adds and sets the found fields and +their values on the container. The string should be the return of +ges_meta_container_metas_to_string(). + + + %TRUE if the fields in @str was successfully deserialized +and added to @container. - Target container + A #GESMetaContainer - a string created with ges_meta_container_metas_to_string() + A string to deserialize and add to @container + Checks whether the specified field has been registered as static, and +gets the registered type and flags of the field, as used in +ges_meta_container_register_meta() and +ges_meta_container_register_static_meta(). + %TRUE if the @meta_item field has been registered on +@container. + A #GESMetaContainer + The key for the @container field to check - + + A destination to get the registered flags of +the field, or %NULL to ignore - + + A destination to get the registered type of +the field, or %NULL to ignore - 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. + Calls the given function on each of the meta container's set metadata +fields. - container to iterate over + A #GESMetaContainer - function to be called for each metadata + A function to call on each of @container's set +metadata fields - user specified data + User data to send to @func - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current boolean value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the boolean value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current date value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the date value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current date time value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the date time value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current double value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the double value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns %FALSE if @meta_item -can not be found. + Gets the current float value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the float value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current int value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the int value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns %FALSE if @meta_item -can not be found. + Gets the current int64 value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the int64 value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. + + Gets the current marker list value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + + + A copy of the marker list value under @key, +or %NULL if it could not be fetched. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + - Gets the value of a given meta item, returns NULL if @key -can not be found. + Gets the current value of the specified field of the meta container. - the #GValue corresponding to the meta with the given @key. + The value under @key, or %NULL if @container +does not have the field set. - Target container + A #GESMetaContainer - The key name of the meta to retrieve + The key for the @container field to get - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current string value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + The string value under @meta_item, or %NULL +if it could not be fetched. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Gets the value of a given meta item, returns NULL if @meta_item -can not be found. + Gets the current uint value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the uint value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Gets the value of a given meta item, returns %FALSE if @meta_item -can not be found. + Gets the current uint64 value of the specified field of the meta +container. If the field does not have a set value, or it is of the +wrong type, the method will fail. + %TRUE if the uint64 value under @meta_item was copied +to @dest. - Target container + A #GESMetaContainer - Name of the meta item to get + The key for the @container field to get - Destination to which value of meta item will be copied + Destination into which the value under @meta_item +should be copied. - Serializes a meta container to a string. + Serializes the set metadata fields of the 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 serialized @container, or %NULL if an error +occurred. - a #GESMetaContainer + 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. + Sets the value of the specified field of the meta container to the +given value, and registers the field to only hold a value of the +same type. After calling this, only values of the same type as @value +can be set for this field. The given flags can be set to make this +field only readable after calling this method. - %TRUE if the static meta could be added, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold @value types, with the given @flags, and the +field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given boolean value, and registers the field to only hold a boolean +typed value. After calling this, only boolean values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold boolean typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given date value, and registers the field to only hold a date +typed value. After calling this, only date values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold date typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - - Value to set + + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given date time value, and registers the field to only hold a date time +typed value. After calling this, only date time values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold date time typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - - Value to set + + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given double value, and registers the field to only hold a double +typed value. After calling this, only double values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold double typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given float value, and registers the field to only hold a float +typed value. After calling this, only float values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold float typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given int value, and registers the field to only hold an int +typed value. After calling this, only int values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold int typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given int64 value, and registers the field to only hold an int64 +typed value. After calling this, only int64 values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold int64 typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given string value, and registers the field to only hold a string +typed value. After calling this, only string values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold string typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - - Value to set + + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given uint value, and registers the field to only hold a uint +typed value. After calling this, only uint values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold uint typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - 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. + Sets the value of the specified field of the meta container to the +given uint64 value, and registers the field to only hold a uint64 +typed value. After calling this, only uint64 values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. - %TRUE if the meta could be registered, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold uint64 typed values, with the given @flags, +and the field was successfully set to @value. - Target container + A #GESMetaContainer - The #GESMetaFlag to be used + Flags to be used for the registered field - Name of the meta item to set + The key for the @container field to register - Value to set + The value to set for the registered field - - Sets the value of a given meta item + + Registers a static metadata field on the container to only hold the +specified type. After calling this, setting a value under this field +can only succeed if its type matches the registered type of the field. + +Unlike ges_meta_container_register_meta(), no (initial) value is set +for this field, which means you can use this method to reserve the +space to be _optionally_ set later. + +Note that if a value has already been set for the field being +registered, then its type must match the registering type, and its +value will be left in place. If the field has no set value, then +you will likely want to include #GES_META_WRITABLE in @flags to allow +the value to be set later. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if the @meta_item field was successfully registered on +@container to only hold @type values, with the given @flags. - Target container + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The required value type for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given boolean value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given date value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given date time value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given double value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given float value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given int value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given int64 value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - - Sets the value of a given meta item + + Sets the value of the specified field of the meta container to the +given marker list value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to a +copy of the given value. If the given @value is %NULL, the field +given by @meta_item is removed and %TRUE is returned. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set - Value to set + The value to set under @meta_item, or %NULL to +remove the corresponding field - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given string value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given uint value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item - Sets the value of a given meta item + Sets the value of the specified field of the meta container to the +given uint64 value. - %TRUE if the meta could be added, %FALSE otherwise + %TRUE if @value was set under @meta_item for @container. - Target container + A #GESMetaContainer - Name of the meta item to set + The key for the @container field to set - Value to set + The value to set under @meta_item + This is emitted for a meta container whenever the metadata under one +of its fields changes, is set for the first time, or is removed. In +the latter case, @value will be %NULL. - + + The key for the @container field that changed - + + The new value under @key @@ -5615,41 +5629,48 @@ type accepted for this meta on that particular @container. + A method to be called on all of a meta container's fields. + A #GESMetaContainer + The key for one of @container's fields + The set value under @key + User data - - 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. + + 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. + +This should not be used anymore, the `imagesequence://` protocol should be +used instead. Check the #imagesequencesrc GStreamer element for more +information. + Use #GESUriSource instead - Creates a new #GESMultiFileSource for the provided @uri. - A new #GESMultiFileSource. - the URI the source should control @@ -5696,90 +5717,6 @@ multifile://20:50@/home/you/sequence/\%04d.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Base class for overlays, transitions, and effects @@ -5880,353 +5817,311 @@ not considered overlays. + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #GESPipeline allows developers to view and render #GESTimeline -in a simple fashion. -Its usage is inspired by the 'playbin' element from gst-plugins-base. + A #GESPipeline can take an audio-video #GESTimeline and conveniently +link its #GESTrack-s to an internal #playsink element, for +preview/playback, and an internal #encodebin element, for rendering. +You can switch between these modes using ges_pipeline_set_mode(). + +You can choose the specific audio and video sinks used for previewing +the timeline by setting the #GESPipeline:audio-sink and +#GESPipeline:video-sink properties. + +You can set the encoding and save location used in rendering by calling +ges_pipeline_set_render_settings(). - Creates a new conveninence #GESPipeline. + Creates a new pipeline. - the new #GESPipeline. + The newly created pipeline. + Gets the #GESPipeline:mode of the pipeline. - the #GESPipelineFlags currently in use. + The current mode of @pipeline. - a #GESPipeline + 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. + Gets a sample from the pipeline of the currently displayed image in +preview, in the specified format. + +Note that if you use "ANY" caps for @caps, then the current format of +the image is used. You can retrieve these caps from the returned sample +with gst_sample_get_caps(). - - a #GstSample or %NULL + + A sample of @self's current image preview in +the format given by @caps, or %NULL if an error prevented fetching the +sample. - a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED + A #GESPipeline in #GST_STATE_PLAYING or #GST_STATE_PAUSED - caps specifying current format. Use %GST_CAPS_ANY -for native size. + Some caps to specifying the desired format, or +#GST_CAPS_ANY to use the native format - 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. + Gets a sample from the pipeline of the currently displayed image in +preview, in the 24-bit "RGB" format and of the desired width and +height. -The caller is responsible for unreffing the returned sample with -#gst_sample_unref. +See ges_pipeline_get_thumbnail(). - - a #GstSample or %NULL + + A sample of @self's current image preview in +the "RGB" format, scaled to @width and @height, or %NULL if an error +prevented fetching the sample. - a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED + A #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED - the requested width or -1 for native size + The requested pixel width of the image, or -1 to use the native +size - the requested height or -1 for native size + The requested pixel height of the image, or -1 to use the +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. + Gets the #GESPipeline:audio-sink of the pipeline. - a pointer to the playsink audio sink #GstElement + The audio sink used by @self for preview. - a #GESPipeline + 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. + Gets the #GESPipeline:video-sink of the pipeline. - a pointer to the playsink video sink #GstElement + The video sink used by @self for preview. - a #GESPipeline + A #GESPipeline - Sets playsink's audio sink element that is used for displaying audio when -the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW + Sets the #GESPipeline:audio-sink of the pipeline. - a #GESPipeline in %GST_STATE_NULL + A #GESPipeline in #GST_STATE_NULL - a audio sink #GstElement + A audio sink for @self to use for preview - Sets playsink's video sink element that is used for displaying video when -the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW + Sets the #GESPipeline:video-sink of the pipeline. - a #GESPipeline in %GST_STATE_NULL + A #GESPipeline in #GST_STATE_NULL - a video sink #GstElement + A video sink for @self to use for preview - Saves the current frame to the specified @location. + Saves the currently displayed image of the pipeline in preview to the +given location, in the specified dimensions and format. - %TRUE if the thumbnail was properly save, else %FALSE. + %TRUE if @self's current image preview was successfully saved +to @location using the given @format, @height and @width. - a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED + A #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED - the requested width or -1 for native size + The requested pixel width of the image, or -1 to use the native +size - the requested height or -1 for native size + The requested pixel height of the image, or -1 to use the +native size - a string specifying the desired mime type (for example, -image/jpeg) + The desired mime type (for example, "image/jpeg") - the path to save the thumbnail + The path to save the thumbnail to - switches the @pipeline to the specified @mode. The default mode when -creating a #GESPipeline is #GES_PIPELINE_MODE_PREVIEW. + Sets the #GESPipeline:mode of the pipeline. -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. +Note that the pipeline will be set to #GST_STATE_NULL during this call +to perform the necessary changes. You will need to set the state again +yourself after calling this. - %TRUE if the mode was properly set, else %FALSE. + %TRUE if the mode of @pipeline was successfully set to @mode. - a #GESPipeline + A #GESPipeline - the #GESPipelineFlags to use + The mode to set for @pipeline - Specify where the pipeline shall be rendered and with what settings. + Specifies the encoding to be used by the pipeline to render its +#GESPipeline:timeline, and where the result should be written to. -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 +This method **must** be called before setting the pipeline mode to +#GES_PIPELINE_MODE_RENDER. - %TRUE if the settings were aknowledged properly, else %FALSE + %TRUE if the settings were successfully set on @pipeline. - a #GESPipeline + A #GESPipeline - the URI to which the timeline will be rendered + The URI to save the #GESPipeline:timeline rendering +result to - the #GstEncodingProfile to use to render the timeline. + The encoding to use for rendering the #GESPipeline:timeline - Sets the timeline to use in this pipeline. + Takes the given timeline and sets it as the #GESPipeline:timeline for +the pipeline. -The reference to the @timeline will be stolen by the @pipeline. +Note that you should only call this method once on a given pipeline +because a pipeline can not have its #GESPipeline:timeline changed after +it has been set. - %TRUE if the @timeline could be successfully set on the @pipeline, -else %FALSE. + %TRUE if @timeline was successfully given to @pipeline. - a #GESPipeline + A #GESPipeline - the #GESTimeline to set on the @pipeline. + The timeline to set for @pipeline - + + The audio filter(s) to apply during playback in preview mode, +immediately before the #GESPipeline:audio-sink. This exposes the +#playsink:audio-filter property of the internal #playsink. - Audio sink for the preview. + The audio sink used for preview. This exposes the +#playsink:audio-sink property of the internal #playsink. - Pipeline mode. See ges_pipeline_set_mode() for more -info. + The pipeline's mode. In preview mode (for audio or video, or both) +the pipeline can display the timeline's content to an end user. In +rendering mode the pipeline can encode the timeline's content and +save it to a file. - Timeline to use in this pipeline. See also -ges_pipeline_set_timeline() for more info. + The timeline used by this pipeline, whose content it will play and +render, or %NULL if the pipeline does not yet have a timeline. + +Note that after you set the timeline for the first time, subsequent +calls to change the timeline will fail. - + + The video filter(s) to apply during playback in preview mode, +immediately before the #GESPipeline:video-sink. This exposes the +#playsink:video-filter property of the internal #playsink. - Video sink for the preview. + The video sink used for preview. This exposes the +#playsink:video-sink property of the internal #playsink. @@ -6254,27 +6149,35 @@ ges_pipeline_set_timeline() for more info. - The various modes the #GESPipeline can be configured to. + The various modes a #GESPipeline can be configured to. - output audio to the soundcard + Output the #GESPipeline:timeline's +audio to the soundcard - output video to the screen + Output the #GESPipeline:timeline's +video to the screen - output audio/video to soundcard/screen (default) + Output both the #GESPipeline:timeline's +audio and video to the soundcard and screen (default) - render timeline (forces decoding) + Render the #GESPipeline:timeline with +forced decoding (the underlying #encodebin has its +#encodebin:avoid-reencoding property set to %FALSE) - render timeline (tries to avoid decoding/reencoding) + Render the #GESPipeline:timeline, +avoiding decoding/reencoding (the underlying #encodebin has its +#encodebin:avoid-reencoding property set to %TRUE) + This is a legacy format and you should avoid to use it. The formatter is really not in good shape and is deprecated. @@ -6313,7 +6216,7 @@ 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 +#GESAsset with `GES_TYPE_TIMELINE` as @extractable_type itself. That means that you can extract #GESTimeline from a project as followed: |[ @@ -6332,7 +6235,25 @@ means that you can extract #GESTimeline from a project as followed: 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. +#GstElement and lets you try to recover from those. + +## Subprojects + +In order to add a subproject, the only thing to do is to add the subproject +to the main project: + +``` c +ges_project_add_asset (project, GES_ASSET (subproject)); +``` +then the subproject will be serialized in the project files. To use +the subproject in a timeline, you should use a #GESUriClip with the +same subproject URI. + +When loading a project with subproject, subprojects URIs will be temporary +writable local files. If you want to edit the subproject timeline, +you should retrieve the subproject from the parent project asset list and +extract the timeline with ges_asset_extract() and save it at +the same temporary location. @@ -6411,6 +6332,20 @@ the URI it will keep refering to. + + + + + + + + + + + + + + @@ -6449,7 +6384,7 @@ the URI it will keep refering to. - Adds a #Asset to @project, the project will keep a reference on + Adds a #GESAsset to @project, the project will keep a reference on @asset. @@ -6489,6 +6424,23 @@ the same name already exists, it will be replaced + + Adds a formatter as used to load @project + + + + + + + The project to add a formatter to + + + + A formatter used by @project + + + + 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 @@ -6611,7 +6563,7 @@ in time. - Type of assets to list, #GES_TYPE_EXTRACTABLE will list + Type of assets to list, `GES_TYPE_EXTRACTABLE` will list all assets @@ -6696,7 +6648,7 @@ is one of the timelines that have been extracted from @project 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 +or default to the best formatter as defined in #ges_find_formatter_for_uri @@ -6752,6 +6704,21 @@ or default to the formatter with highest rank + + + + + + + The timeline that failed loading + + + + The #GError defining the error that occured + + + + Informs you that a #GESAsset could not be created. In case of missing GStreamer plugins, the error will be set to #GST_CORE_ERROR @@ -6781,7 +6748,18 @@ failed loading - The #GESTimeline that complete loading + The #GESTimeline that completed loading + + + + + + + + + + + The #GESTimeline that started loading @@ -6931,8 +6909,24 @@ only to find out what the new location is. + + + + + + + + + + + + + + + + - + @@ -6940,48 +6934,6 @@ only to find out what the new location is. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Base class for single-media sources @@ -7011,7 +6963,14 @@ only to find out what the new location is. - Base class for sources of a #GESLayer + #GESSourceClip-s are clips whose core elements are #GESSource-s. + +## Effects + +#GESSourceClip-s can also have #GESBaseEffect-s added as non-core +elements. These effects are applied to the core sources of the clip +that they share a #GESTrack with. See #GESClip for how to add and move +these effects from the clip. @@ -7027,6 +6986,21 @@ only to find out what the new location is. + + + + + + + + + + + + + + + @@ -7044,112 +7018,36 @@ only to find out what the new location is. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The duration of the object (in nanoseconds). + The #GESTimelineElement:duration of @obj. - a #GESTimelineElement + A #GESTimelineElement - The end position of the object (in nanoseconds). - - - - a #GESTimelineElement - - - - + The end position of @obj: #GESTimelineElement:start + +#GESTimelineElement:duration. + A #GESTimelineElement - The in-point of the object (in nanoseconds). + The #GESTimelineElement:in-point of @obj. - a #GESTimelineElement + A #GESTimelineElement - See #ges_timeline_element_get_layer_priority + See #ges_timeline_element_get_layer_priority. @@ -7158,68 +7056,61 @@ only to find out what the new location is. - The maximun duration of the object (in nanoseconds). + The #GESTimelineElement:max-duration of @obj. - a #GESTimelineElement + A #GESTimelineElement - The name of the object. + The #GESTimelineElement:name of @obj. - a #GESTimelineElement + A #GESTimelineElement - Layer priority when the element is not in a layer + Layer priority when a timeline element is not in any layer. - The parent of the object. + The #GESTimelineElement:parent of @obj. - a #GESTimelineElement + A #GESTimelineElement - The priority of the object. + The #GESTimelineElement:priority of @obj. - a #GESTimelineElement + A #GESTimelineElement - The start position of the object (in nanoseconds). + The #GESTimelineElement:start of @obj. - a #GESTimelineElement + A #GESTimelineElement - The timeline in which the object is. - - - - a #GESTimelineElement - - - - + The #GESTimelineElement:timeline of @obj. + A #GESTimelineElement @@ -7237,158 +7128,29 @@ only to find out what the new location is. - - - - - - - - + + What the default #GESTrackElement:has-internal-source value should be +for new elements from this class. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + A #GESTrackElementClass Useful for testing purposes. -You can use the ges_asset_request_simple API to create an Asset -capable of extracting GESTestClip-s +## Asset + +The default asset ID is GESTestClip, but the framerate and video +size can be overriden using an ID of the form: + +``` +framerate=60/1, width=1920, height=1080, max-duration=5.0 +``` +Note: `max-duration` can be provided in seconds as float, or as GstClockTime +as guint64 or gint. @@ -7603,8 +7365,10 @@ or %NULL if there was an error. - + Creates a new #GESTextOverlay. + This should never be called by applications as this will +be created by clips. The newly created #GESTextOverlay or @@ -8168,23 +7932,57 @@ made. #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. +A timeline is composed of a set of #GESTrack-s and a set of +#GESLayer-s, which are added to the timeline using +ges_timeline_add_track() and ges_timeline_append_layer(), respectively. -The output type is determined by the #GESTrack that are set on -the #GESTimeline. +The contained tracks define the supported types of the timeline +and provide the media output. Essentially, each track provides an +additional source #GstPad. -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 +Most usage of a timeline will likely only need a single #GESAudioTrack +and/or a single #GESVideoTrack. You can create such a timeline with +ges_timeline_new_audio_video(). After this, you are unlikely to need to +work with the tracks directly. -Note that any change you make in the timeline will not actually be taken -into account until you call the #ges_timeline_commit method. +A timeline's layers contain #GESClip-s, which in turn control the +creation of #GESTrackElement-s, which are added to the timeline's +tracks. See #GESTimeline::select-tracks-for-object if you wish to have +more control over which track a clip's elements are added to. + +The layers are ordered, with higher priority layers having their +content prioritised in the tracks. This ordering can be changed using +ges_timeline_move_layer(). + +## Saving + +To save/load a timeline, you can use the ges_timeline_load_from_uri() +and ges_timeline_save_to_uri() methods that use the default format. + +## Editing + +If you change the timing or ordering of a timeline's +#GESTimelineElement-s, then these changes will not actually be taken +into account in the timeline until the ges_timeline_commit() method is +called. This allows you to move its elements around, say, in +response to an end user's mouse dragging, with little expense before +finalising their effect. + +## Playing + +A timeline is a #GstBin with a source #GstPad for each of its +tracks, which you can fetch with ges_timeline_get_pad_for_track(). You +will likely want to link these to some compatible sink #GstElement-s to +be able to play or capture the content of the timeline. + +You can use a #GESPipeline to easily preview/play the timeline's +content, or render it to a file. - Creates a new empty #GESTimeline. + Creates a new empty timeline. The new timeline. @@ -8192,11 +7990,12 @@ into account until you call the #ges_timeline_commit method. - Creates a new #GESTimeline containing a raw audio and a -raw video track. + Creates a new timeline containing a single #GESAudioTrack and a +single #GESVideoTrack. - The newly created #GESTimeline. + The new timeline, or %NULL if the tracks +could not be created and added. @@ -8210,7 +8009,7 @@ successfully, or %NULL if the uri could not be loaded. - the URI to load from + The URI to load from @@ -8304,175 +8103,225 @@ successfully, or %NULL if the uri could not be loaded. - - Add the layer to the timeline. The reference to the @layer will be stolen -by the @timeline. + + Add a layer to the timeline. + +If the layer contains #GESClip-s, then this may trigger the creation of +their core track element children for the timeline's tracks, and the +placement of the clip's children in the tracks of the timeline using +#GESTimeline::select-tracks-for-object. Some errors may occur if this +would break one of the configuration rules of the timeline in one of +its tracks. In such cases, some track elements would fail to be added +to their tracks, but this method would still return %TRUE. As such, it +is advised that you only add clips to layers that already part of a +timeline. In such situations, ges_layer_add_clip() is able to fail if +adding the clip would cause such an error. + This method requires you to ensure the layer's +#GESLayer:priority will be unique to the timeline. Use +ges_timeline_append_layer() and ges_timeline_move_layer() instead. - %TRUE if the layer was properly added, else %FALSE. + %TRUE if @layer was properly added. - a #GESTimeline + The #GESTimeline - the #GESLayer to add + The layer to add - Add a track to the timeline. The reference to the track will be stolen by the -pipeline. + Add a track to the timeline. + +If the timeline already contains clips, then this may trigger the +creation of their core track element children for the track, and the +placement of the clip's children in the track of the timeline using +#GESTimeline::select-tracks-for-object. Some errors may occur if this +would break one of the configuration rules for the timeline in the +track. In such cases, some track elements would fail to be added to the +track, but this method would still return %TRUE. As such, it is advised +that you avoid adding tracks to timelines that already contain clips. - %TRUE if the track was properly added, else %FALSE. + %TRUE if @track was properly added. - a #GESTimeline + The #GESTimeline - the #GESTrack to add + The track to add - Append a newly created #GESLayer to @timeline -Note that you do not own any reference to the returned layer. + Append a newly created layer to the timeline. The layer will +be added at the lowest #GESLayer:priority (numerically, the highest). - The newly created #GESLayer, or the last (empty) -#GESLayer of @timeline. + The newly created layer. - a #GESTimeline + The #GESTimeline Commit all the pending changes of the clips contained in the -@timeline. +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. +When changes happen in a timeline, they are not immediately executed +internally, in a way that effects the output data of the timeline. You +should call this method when you are done with a set of changes and you +want them to be executed. +Any pending changes will be executed in the backend. The +#GESTimeline::commited signal will be emitted once this has completed. 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. +tracks to it before receiving this signal. You can use +ges_timeline_commit_sync() if you do not want to perform other tasks in +the mean time. -See #ges_timeline_commit_sync if you don't want to bother with waiting -for the signal. +Note that all the pending changes will automatically be executed when +the timeline goes from #GST_STATE_READY to #GST_STATE_PAUSED, which is +usually triggered by a corresponding state changes in a containing +#GESPipeline. - %TRUE if pending changes were commited or %FALSE if nothing needed -to be commited + %TRUE if pending changes were committed, or %FALSE if nothing +needed to be committed. - a #GESTimeline + A #GESTimeline - Commit all the pending changes of the #GESClips contained in the -@timeline. + Commit all the pending changes of the clips contained in the +timeline and wait for the changes to complete. -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. +See ges_timeline_commit(). - %TRUE if pending changes were commited or %FALSE if nothing needed -to be commited + %TRUE if pending changes were committed, or %FALSE if nothing +needed to be committed. - a #GESTimeline + A #GESTimeline - Gets whether transitions are automatically added when objects -overlap or not. + Gets #GESTimeline:auto-transition for the timeline. - %TRUE if transitions are automatically added, else %FALSE. + The auto-transition of @self. - a #GESTimeline + The #GESTimeline - Get the current duration of @timeline + Get the current #GESTimeline:duration of the timeline - The current duration of @timeline + The current duration of @timeline. - a #GESTimeline + The #GESTimeline - Gets a #GESTimelineElement contained in the timeline + Gets the element contained in the timeline with the given name. - The #GESTimelineElement or %NULL if -not found. + The timeline element in @timeline +with the given @name, or %NULL if it was not found. - a #GESTimeline + The #GESTimeline + The name of the element to find - - Get the list of #GESGroup present in the Timeline. + + This method allows you to convert a timeline #GstClockTime into its +corresponding #GESFrameNumber in the timeline's output. - the list of -#GESGroup that contain clips present in the timeline's layers. + The frame number @timestamp corresponds to. + + + + + A #GESTimeline + + + + The timestamp to get the corresponding frame number of + + + + + + This method allows you to convert a timeline output frame number into a +timeline #GstClockTime. For example, this time could be used to seek to a +particular frame in the timeline's output, or as the edit position for +an element within the timeline. + + + The timestamp corresponding to @frame_number in the output of @self. + + + + + The self on which to retrieve the timestamp for @frame_number + + + + The frame number to get the corresponding timestamp of in the + timeline coordinates + + + + + + Get the list of #GESGroup-s present in the timeline. + + + The list of +groups that contain clips present in @timeline's layers. Must not be changed. @@ -8480,56 +8329,57 @@ Must not be changed. - a #GESTimeline + The #GESTimeline - Retrieve the layer with @priority as a priority + Retrieve the layer whose index in the timeline matches the given +priority. - A #GESLayer or %NULL if no layer with -@priority was found + The layer with the given +@priority, or %NULL if none was found. Since 1.6 - The #GESTimeline to retrive a layer from + The #GESTimeline to retrieve a layer from - The priority of the layer to find + The priority/index of the layer to find - Get the list of #GESLayer present in the Timeline. + Get the list of #GESLayer-s 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. + The list of +layers present in @timeline sorted by priority. - a #GESTimeline + The #GESTimeline - Search the #GstPad corresponding to the given @timeline's @track. + Search for the #GstPad corresponding to the given timeline's track. +You can link to this pad to receive the output data of the given track. - The corresponding #GstPad if it is -found, or %NULL if there is an error. + The pad corresponding to @track, +or %NULL if there is an error. @@ -8538,33 +8388,31 @@ found, or %NULL if there is an error. - The #GESTrack + A track - Gets the configured snapping distance of the timeline. See -the documentation of the property snapping_distance for more -information. + Gets the #GESTimeline:snapping-distance for the timeline. - The @snapping_distance property of the timeline + The snapping distance (in nanoseconds) of @timeline. - a #GESTimeline + The #GESTimeline - Search the #GESTrack corresponding to the given @timeline's @pad. + Search for the #GESTrack corresponding to the given timeline's pad. - The corresponding #GESTrack if it is -found, or %NULL if there is an error. + The track corresponding to @pad, +or %NULL if there is an error. @@ -8573,53 +8421,52 @@ found, or %NULL if there is an error. - The #GstPad + A pad - Returns the list of #GESTrack used by the Timeline. + Get the list of #GESTrack-s used by the timeline. - A list of #GESTrack. -The caller should unref each track once he is done with them. + The list of tracks +used by @timeline. - a #GESTimeline + The #GESTimeline - Check whether a #GESTimeline is empty or not + Check whether the timeline is empty or not. - %TRUE if the timeline is empty %FALSE otherwize + %TRUE if @timeline is empty. - a #GESTimeline + The #GESTimeline - Loads the contents of URI into the given timeline. + Loads the contents of URI into the timeline. - %TRUE if the timeline was loaded successfully, or %FALSE if the uri -could not be loaded. + %TRUE if the timeline was loaded successfully from @uri. - an empty #GESTimeline into which to load the formatter + An empty #GESTimeline into which to load the formatter @@ -8629,111 +8476,122 @@ could not be loaded. - 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. + Moves a layer within the timeline to the index given by +@new_layer_priority. +An index of 0 corresponds to the layer with the highest priority in a +timeline. If @new_layer_priority is greater than the number of layers +present in the timeline, it will become the lowest priority layer. - The timeline in which @layer must be + A #GESTimeline - The layer to move at @new_layer_priority + A layer within @timeline, whose priority should be changed - The index at which @layer should land + The new index for @layer - 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. + Paste an element inside the timeline. @element **must** be the return of +ges_timeline_element_copy() with `deep=TRUE`, +and it should not be changed before pasting. @element itself is not +placed in the timeline, instead a new element is created, alike to the +originally copied element. Note that the originally copied element must +also lie within @timeline, at both the point of copying and pasting. + +Pasting may fail if it would place the timeline in an unsupported +configuration. + +After calling this function @element should not be used. In particular, +@element can **not** be pasted again. Instead, you can copy the +returned element and paste that copy (although, this is only possible +if the paste was successful). + +See also ges_timeline_element_paste(). - - Shallow copy of the @element pasted + + The newly created element, or +%NULL if pasting fails. - The #GESTimeline onto which the #GESTimelineElement should be pasted + The #GESTimeline onto which @element should be pasted - The #GESTimelineElement to paste + The element to paste - The position in the timeline the element should -be pasted to, meaning it will become the start of @element + The position in the timeline @element should be pasted to, +i.e. the #GESTimelineElement:start value for the pasted 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. + The layer into which the element should be pasted. +-1 means paste to the same layer from which @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. + Removes a layer from the timeline. - %TRUE if the layer was properly removed, else %FALSE. + %TRUE if @layer was properly removed. - a #GESTimeline + The #GESTimeline - the #GESLayer to remove + The layer 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. + Remove a track from the timeline. - %TRUE if the @track was properly removed, else %FALSE. + %TRUE if @track was properly removed. - a #GESTimeline + The #GESTimeline - the #GESTrack to remove + The track to remove - Saves the timeline to the given location + Saves the timeline to the given location. If @formatter_asset is %NULL, +the method will attempt to save in the same format the timeline was +loaded from, before defaulting to the formatter with highest rank. - %TRUE if the timeline was successfully saved to the given location, -else %FALSE. + %TRUE if @timeline was successfully saved to @uri. - a #GESTimeline + The #GESTimeline @@ -8741,9 +8599,7 @@ else %FALSE. - 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 + The formatter asset to use, or %NULL @@ -8753,67 +8609,78 @@ or default to the formatter with highest rank - Sets the layer to the given @auto_transition. See the documentation of the -property auto_transition for more information. + Sets #GESTimeline:auto-transition for the timeline. This will also set +the corresponding #GESLayer:auto-transition for all of the timeline's +layers to the same value. See ges_layer_set_auto_transition() if you +wish to set the layer's #GESLayer:auto-transition individually. - a #GESLayer + The #GESTimeline - whether the auto_transition is active + Whether transitions should be automatically added +to @timeline's layers - Sets the @snapping_distance of the timeline. See the documentation of the -property snapping_distance for more information. + Sets #GESTimeline:snapping-distance for the timeline. This new value +will only effect future snappings and will not be used to snap the +current element positions within the timeline. - a #GESLayer + The #GESTimeline - whether the snapping_distance is active + The snapping distance to use (in nanoseconds) - Sets whether transitions are added automagically when clips overlap. + Whether to automatically create a transition whenever two clips +overlap in the timeline. See #GESLayer:auto-transition. - Current duration (in nanoseconds) of the #GESTimeline + The current duration (in nanoseconds) of the timeline. A timeline +'starts' at time 0, so this is the maximum end time of all of its +#GESTimelineElement-s. - Distance (in nanoseconds) from which a moving object will snap -with it neighboors. 0 means no snapping. + The distance (in nanoseconds) at which a #GESTimelineElement being +moved within the timeline should snap to its neighbours. Note that +such a neighbour includes any element in the timeline, including +across separate layers. 0 means no snapping. - A list of #GESLayer sorted by priority NOTE: Do not modify. + A list of #GESLayer-s sorted by +priority. NOTE: Do not modify. - A list of #GESTrack sorted by priority NOTE: Do not modify. + Deprecated:1.10: (element-type GES.Track): This is not thread +safe, use #ges_timeline_get_tracks instead. - + @@ -8825,37 +8692,51 @@ with it neighboors. 0 means no snapping. - 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. + 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 do not want to have to connect +to this signal. - Will be emitted after a new group is added to to the timeline. + Will be emitted after the group is added to to the timeline. This can +happen when grouping with `ges_container_group`, or by adding +containers to a newly created group. + +Note that this should not be emitted whilst a timeline is being +loaded from its #GESProject asset. You should connect to the +project's #GESProject::loaded signal if you want to know which groups +were created for the timeline. - the #GESGroup + The group that was added to @timeline - Will be emitted after a group has been removed from the timeline. + Will be emitted after the group is removed from the timeline through +`ges_container_ungroup`. Note that @group will no longer contain its +former children, these are held in @children. + +Note that if a group is emptied, then it will no longer belong to the +timeline, but this signal will **not** be emitted in such a case. - the #GESGroup + The group that was removed from @timeline - - a list of #GESContainer + + A list +of #GESContainer-s that _were_ the children of the removed @group @@ -8863,107 +8744,178 @@ don't need to do anything in the meantime. - Will be emitted after a new layer is added to the timeline. + Will be emitted after the layer is added to the timeline. + +Note that this should not be emitted whilst a timeline is being +loaded from its #GESProject asset. You should connect to the +project's #GESProject::loaded signal if you want to know which +layers were created for the timeline. - the #GESLayer that was added to the timeline + The layer that was added to @timeline - Will be emitted after the layer was removed from the timeline. + Will be emitted after the layer is removed from the timeline. - the #GESLayer that was removed from the timeline + The layer that was removed from @timeline + This will be emitted whenever the timeline needs to determine which +tracks a clip's children should be added to. The track element will +be added to each of the tracks given in the return. If a track +element is selected to go into multiple tracks, it will be copied +into the additional tracks, under the same clip. Note that the copy +will *not* keep its properties or state in sync with the original. + +Connect to this signal once if you wish to control which element +should be added to which track. Doing so will overwrite the default +behaviour, which adds @track_element to all tracks whose +#GESTrack:track-type includes the @track_element's +#GESTrackElement:track-type. + +Note that under the default track selection, if a clip would produce +multiple core children of the same #GESTrackType, it will choose +one of the core children arbitrarily to place in the corresponding +tracks, with a warning for the other core children that are not +placed in the track. For example, this would happen for a #GESUriClip +that points to a file that contains multiple audio streams. If you +wish to choose the stream, you could connect to this signal, and use, +say, ges_uri_source_asset_get_stream_info() to choose which core +source to add. + +When a clip is first added to a timeline, its core elements will +be created for the current tracks in the timeline if they have not +already been created. Then this will be emitted for each of these +core children to select which tracks, if any, they should be added +to. It will then be called for any non-core children in the clip. + +In addition, if a new track element is ever added to a clip in a +timeline (and it is not already part of a track) this will be emitted +to select which tracks the element should be added to. + +Finally, as a special case, if a track is added to the timeline +*after* it already contains clips, then it will request the creation +of the clips' core elements of the corresponding type, if they have +not already been created, and this signal will be emitted for each of +these newly created elements. In addition, this will also be released +for all other track elements in the timeline's clips that have not +yet been assigned a track. However, in this final case, the timeline +will only check whether the newly added track appears in the track +list. If it does appear, the track element will be added to the newly +added track. All other tracks in the returned track list are ignored. + +In this latter case, track elements that are already part of a track +will not be asked if they want to be copied into the new track. If +you wish to do this, you can use ges_clip_add_child_to_track(). + +Note that the returned #GPtrArray should own a new reference to each +of its contained #GESTrack. The timeline will set the #GDestroyNotify +free function on the #GPtrArray to dereference the elements. - a #GPtrArray of #GESTrack-s where that object should be added + An array of +#GESTrack-s that @track_element should be added to, or %NULL to +not add the element to any track. - The #GESClip on which @track_element will land + The clip that @track_element is being added to - The #GESTrackElement for which to choose the tracks it should land into + The element being added - Will be emitted when the 2 #GESTrackElement ended to snap + Will be emitted whenever a snapping event ends. After a snap event +has started (see #GESTimeline::snapping-started), it can end because +the element whose movement created the snap event has since moved +outside of the #GESTimeline:snapping-distance before its position was +committed. It can also end because the element's movement was ended +by a timeline being committed. - the first #GESTrackElement that was snapping. + The first element that was snapping - the second #GESTrackElement that was snapping. + The second element that was snapping - the position where the two objects finally snapping. + The position where the two objects were to be snapped to - Will be emitted when the 2 #GESTrackElement first snapped + Will be emitted whenever an element's movement invokes a snapping +event (usually by its controlling #GESClip being moved) because its +start or end point lies within the #GESTimeline:snapping-distance of +another element's start or end point. - the first #GESTrackElement that was snapping. + The first element that is snapping - the second #GESTrackElement that was snapping. + The second element that is snapping - the position where the two objects finally snapping. + The position where the two objects will snap to - Will be emitted after the track was added to the timeline. + Will be emitted after the track is added to the timeline. + +Note that this should not be emitted whilst a timeline is being +loaded from its #GESProject asset. You should connect to the +project's #GESProject::loaded signal if you want to know which +tracks were created for the timeline. - the #GESTrack that was added to the timeline + The track that was added to @timeline - Will be emitted after the track was removed from the timeline. + Will be emitted after the track is removed from the timeline. - the #GESTrack that was removed from the timeline + The track that was removed from @timeline @@ -9083,9 +9035,56 @@ don't need to do anything in the meantime. - 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. + A #GESTimelineElement will have some temporal extent in its +corresponding #GESTimelineElement:timeline, controlled by its +#GESTimelineElement:start and #GESTimelineElement:duration. This +determines when its content will be displayed, or its effect applied, +in the timeline. Several objects may overlap within a given +#GESTimeline, in which case their #GESTimelineElement:priority is used +to determine their ordering in the timeline. Priority is mostly handled +internally by #GESLayer-s and #GESClip-s. + +A timeline element can have a #GESTimelineElement:parent, +such as a #GESClip, which is responsible for controlling its timing. + +## Editing + +Elements can be moved around in their #GESTimelineElement:timeline by +setting their #GESTimelineElement:start and +#GESTimelineElement:duration using ges_timeline_element_set_start() +and ges_timeline_element_set_duration(). Additionally, which parts of +the underlying content are played in the timeline can be adjusted by +setting the #GESTimelineElement:in-point using +ges_timeline_element_set_inpoint(). The library also provides +ges_timeline_element_edit(), with various #GESEditMode-s, which can +adjust these properties in a convenient way, as well as introduce +similar changes in neighbouring or later elements in the timeline. + +However, a timeline may refuse a change in these properties if they +would place the timeline in an unsupported configuration. For example, +it is not possible for three #GESSourceClip-s in the same layer and +with the same track types to overlap at any given position in the +timeline (only two may overlap, which corresponds to a single +#GESTransition). Similarly, a #GESSourceClip may not entirely cover +another #GESSourceClip in the same layer and with the same track types. +Additionally, an edit may be refused if it would place one of the +timing properties out of bounds (such as a negative time value for +#GESTimelineElement:start, or having insufficient internal +content to last for the desired #GESTimelineElement:duration). + +## Children Properties + +If a timeline element owns another #GstObject and wishes to expose +some of its properties, it can do so by registering the property as one +of the timeline element's children properties using +ges_timeline_element_add_child_property(). The registered property of +the child can then be read and set using the +ges_timeline_element_get_child_property() and +ges_timeline_element_set_child_property() methods, respectively. Some +sub-classed objects will be created with pre-registered children +properties; for example, to expose part of an underlying #GstElement +that is used internally. The registered properties can be listed with +ges_timeline_element_list_children_properties(). @@ -9104,11 +9103,14 @@ responsible for controlling its timing properties. + Gets the priority of the layer the element is in. A #GESGroup may span +several layers, so this would return the highest priority (numerically, +the smallest) amongst them. - The priority of the first layer the element is in (note that only -groups can span over several layers). %GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY -means that the element is not in a layer. + The priority of the layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. @@ -9118,10 +9120,44 @@ means that the element is not in a layer. - - Gets all the TrackTypes @self will interact with + + Get the "natural" framerate of @self. This is to say, for example +for a #GESVideoUriSource the framerate of the source. + +Note that a #GESAudioSource may also have a natural framerate if it derives +from the same #GESSourceClip asset as a #GESVideoSource, and its value will +be that of the video source. For example, if the uri of a #GESUriClip points +to a file that contains both a video and audio stream, then the corresponding +#GESAudioUriSource will share the natural framerate of the corresponding +#GESVideoUriSource. + Whether @self has a natural framerate or not, @framerate_n +and @framerate_d will be set to, respectively, 0 and -1 if it is +not the case. + + + + + The #GESTimelineElement to get "natural" framerate from + + + + The framerate numerator + + + + The framerate denominator + + + + + + Gets the track types that the element can interact with, i.e. the type +of #GESTrack it can exist in, or will create #GESTrackElement-s for. + + + The track types that @self supports. @@ -9146,37 +9182,42 @@ means that the element is not in a layer. - 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. + Looks up a child property of the element. + +@prop_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to look up (as used in g_object_get()), and "TypeName" is the type name +of the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. + +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will be passed to @child, and the +registered specification of this property will be passed to @pspec. - 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. + %TRUE if a child corresponding to the property was found, in +which case @child and @pspec are set. - object to lookup the property in + A #GESTimelineElement - 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. + The name of a child property - pointer to a #GstElement that - takes the real object to set property on + The return location for the +found child - pointer to take the #GParamSpec - describing the property + The return location for the +specification of the child property @@ -9199,79 +9240,100 @@ usage. - 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. + Edits the start time of an element within its timeline in ripple mode. +The element is shifted to @start, and later elements are also shifted +by the same amount (see #GES_EDIT_MODE_RIPPLE). An edit may fail if it +would place the timeline in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new start of @self in ripple mode. + The new start time 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. + Edits the end time of an element within its timeline in ripple mode. +The element's duration time is shifted until its end time matches @end, +and later elements have their start time shifted by the same amount +(see #GES_EDIT_MODE_RIPPLE). An edit may fail if it would place the +duration time out of bounds, or if it would place the timeline in an +unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the end time may be set +to the edge of some element in the neighbourhood of @end. - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new end (start + duration) of @self in ripple mode. It will - basically only change the duration of @self. + The new end time of @self in ripple mode - 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. + Edits the end time of an element within its timeline in roll mode. +The end of the element is trimmed to @end, and any other element whose +start edge matched the end edge of the element is also trimmed to @end +(see #GES_EDIT_MODE_ROLL). An edit may fail if it would place an +in-point time or duration time out of bounds, or if it would place the +timeline in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the end time may be set +to the edge of some element in the neighbourhood of @end. - %TRUE if the self as been rolled properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. - The #GESTimelineElement to roll. + The #GESTimelineElement to roll - The new end (start + duration) of @self in roll mode + The new end time 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. + Edits the start time of an element within its timeline in roll mode. +The element is trimmed to @start, and any other element whose end edge +matched the start edge of the element is also trimmed to @start (see +#GES_EDIT_MODE_ROLL). An edit may fail if it would place an in-point +time or duration time out of bounds, or if it would place the timeline +in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been roll properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. @@ -9280,8 +9342,7 @@ occured - The new start of @self in roll mode, it will also adapat -the in-point of @self according + The new start time of @self in roll mode @@ -9307,173 +9368,222 @@ the in-point of @self according - Set the duration of the object + Sets #GESTimelineElement:duration for the element. This may fail if it +would place the timeline in an unsupported configuration, or if the +element does not have enough internal content to last for the desired +@duration. -Note that if the timeline snap-distance property of the timeline containing -@self is set, @self will properly snap to its neighboors. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the element's +#GESTimelineElement:duration may instead be adjusted around @duration +such that the edge of @self matches the edge of some other element in +the neighbourhood. In such a case, the return value will still be %TRUE +on success. - %TRUE if @duration could be set. + %TRUE if @duration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the duration in #GstClockTime + The desired duration in its timeline - Set the in-point, that is the moment at which the @self will start -outputting data from its contents. + Sets #GESTimelineElement:in-point for the element. If the new in-point +is above the current #GESTimelineElement:max-duration of the element, +this method will fail. - %TRUE if @inpoint could be set. + %TRUE if @inpoint could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the in-point in #GstClockTime + The in-point, in internal time coordinates - Set the maximun duration of the object + Sets #GESTimelineElement:max-duration for the element. If the new +maximum duration is below the current #GESTimelineElement:in-point of +the element, this method will fail. - %TRUE if @maxduration could be set. + %TRUE if @maxduration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the maximum duration in #GstClockTime + The maximum duration, in internal time coordinates - Sets the parent of @self to @parent. The parents needs to already -own a hard reference on @self. + Sets the #GESTimelineElement:parent for the element. + +This is used internally and you should normally not call this. A +#GESContainer will set the #GESTimelineElement:parent of its children +in ges_container_add() and ges_container_remove(). + +Note, if @parent is not %NULL, @self must not already have a parent +set. Therefore, if you wish to switch parents, you will need to call +this function twice: first to set the parent to %NULL, and then to the +new parent. + +If @parent is not %NULL, you must ensure it already has a +(non-floating) reference to @self before calling this. - %TRUE if @parent could be set or %FALSE when @self -already had a parent or @self and @parent are the same. + %TRUE if @parent could be set for @self. - a #GESTimelineElement + A #GESTimelineElement +@parent (nullable): New parent of @self - new parent of self - - Sets the priority of the object within the containing layer + + Sets the priority of the element 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. - %TRUE if @priority could be set. + %TRUE if @priority could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the priority + The priority - Set the position of the object in its containing layer. + Sets #GESTimelineElement:start for the element. This may fail if it +would place the timeline in an unsupported configuration. -Note that if the snapping-distance property of the timeline containing -@self is set, @self will properly snap to the edges around @start. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the element's +#GESTimelineElement:start may instead be set to the edge of some other +element in the neighbourhood of @start. In such a case, the return +value will still be %TRUE on success. - %TRUE if @start could be set. + %TRUE if @start could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the position in #GstClockTime + The desired start position of the element in its timeline - Edits @self in trim mode. It allows you to modify the -inpoint and start of @self. -This will not change the overall timeline duration. + Edits the start time of an element within its timeline in trim mode. +The element is shifted to @start, and its in-point time is similarly +shifted to ensure that its internal content will appear at the same +timeline time when it is played (see #GES_EDIT_MODE_TRIM). An edit may +fail if it would place the in-point time out of bounds, or if it would +place the timeline in an unsupported configuration. -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. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been trimmed properly, %FALSE if an error -occured + %TRUE if the trim edit of @self completed, %FALSE on failure. - The #GESTimelineElement to trim. + The #GESTimelineElement to trim - The new start of @self in trim mode, will adapt the inpoint -of @self accordingly + The new start time of @self in trim mode + Register a property of a child of the element to allow it to be +written with ges_timeline_element_set_child_property() and read with +ges_timeline_element_get_child_property(). A change in the property +will also appear in the #GESTimelineElement::deep-notify signal. + +@pspec should be unique from other children properties that have been +registered on @self. + %TRUE if the property was successfully registered. + A #GESTimelineElement + The specification for the property to add + The #GstObject who the property belongs to - Copies @self + Create a copy of @self. All the properties of @self are copied into +a new element, with the exception of #GESTimelineElement:parent, +#GESTimelineElement:timeline and #GESTimelineElement:name. Other data, +such the list of a #GESContainer's children, is **not** copied. + +If @deep is %TRUE, then the new element is prepared so that it can be +used in ges_timeline_element_paste() or ges_timeline_paste_element(). +In the case of copying a #GESContainer, this ensures that the children +of @self will also be pasted. The new element should not be used for +anything else and can only be used **once** in a pasting operation. In +particular, the new element itself is not an actual 'deep' copy of +@self, but should be thought of as an intermediate object used for a +single paste operation. - The newly create #GESTimelineElement, copied from @self + The newly create element, +copied from @self. @@ -9482,142 +9592,215 @@ of @self accordingly - whether we want to create the elements @self contains or not + Whether the copy is needed for pasting + + Edits the element within its timeline by adjusting its +#GESTimelineElement:start, #GESTimelineElement:duration or +#GESTimelineElement:in-point, and potentially doing the same for +other elements in the timeline. See #GESEditMode for details about each +edit mode. An edit may fail if it would place one of these properties +out of bounds, or if it would place the timeline in an unsupported +configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the edit position may be set +to the edge of some element in the neighbourhood of @position. + +@new_layer_priority can be used to switch @self, and other elements +moved by the edit, to a new layer. New layers may be be created if the +the corresponding layer priority/index does not yet exist for the +timeline. + +@layers can be used as a whitelist to limit changes to elements that +exist in the corresponding layers. If you intend to also switch +elements between layers, then you must ensure that all the involved +layers are included for the switch to succeed (with the exception of +layers may be newly created). + + + %TRUE if the edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to edit + + + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +timeline + + + + + + The priority/index of the layer @self should be +moved to. -1 means no move + + + + The edit mode + + + + The edge of @self where the edit should occur + + + + The edit position: a new location for the edge of @self +(in nanoseconds) + + + + - Gets properties of a child of @self. + Gets several of the children properties of the element. See +ges_timeline_element_get_child_property(). - The origin #GESTimelineElement + A #GESTimelineElement - The name of the first property to get + The name of the first child property to get - return location for the first property, followed optionally by more -name/return location pairs, followed by NULL + The 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 the property of a child of the element. -Gets a property of a GstElement contained in @object. +@property_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to get (as used in g_object_get()), and "TypeName" is the type name of +the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. -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. +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will have the corresponding +property copied into @value. + +Note that ges_timeline_element_get_child_properties() may be more +convenient for C programming. - %TRUE if the property was found, %FALSE otherwize + %TRUE if the property was found and copied to @value. - The origin #GESTimelineElement + A #GESTimelineElement - The name of the property + The name of the child property to get - return location for the property value, it will -be initialized if it is initialized with 0 + The return location for the value - Gets a property of a child of @self. + Gets the property of a child of the element. Specifically, the property +corresponding to the @pspec used in +ges_timeline_element_add_child_property() is copied into @value. - a #GESTrackElement + A #GESTimelineElement - The #GParamSpec that specifies the property you want to get + The specification of a registered child property to get - return location for the value + The 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. + Gets several of the children properties of the element. See +ges_timeline_element_get_child_property(). - The #GESTimelineElement parent object + A #GESTimelineElement - The name of the first property to get + The name of the first child property to get - value for the first property, followed optionally by more -name/return location pairs, followed by NULL + The return location for the first property, followed +optionally by more name/return location pairs, followed by %NULL + Gets the #GESTimelineElement:duration for the element. - The @duration of @self + The duration of @self (in nanoseconds). - a #GESTimelineElement + A #GESTimelineElement + Gets the #GESTimelineElement:in-point for the element. - The @inpoint of @self + The in-point of @self (in nanoseconds). - a #GESTimelineElement + A #GESTimelineElement + Gets the priority of the layer the element is in. A #GESGroup may span +several layers, so this would return the highest priority (numerically, +the smallest) amongst them. - The priority of the first layer the element is in (note that only -groups can span over several layers). %GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY -means that the element is not in a layer. + The priority of the layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. @@ -9628,96 +9811,128 @@ means that the element is not in a layer. + Gets the #GESTimelineElement:max-duration for the element. - The @maxduration of @self + The max-duration of @self (in nanoseconds). - a #GESTimelineElement + A #GESTimelineElement - Returns a copy of the name of @self. -Caller should g_free() the return value after usage. + Gets the #GESTimelineElement:name for the element. - The name of @self + The name of @self. - a #GESTimelineElement + A #GESTimelineElement + + Get the "natural" framerate of @self. This is to say, for example +for a #GESVideoUriSource the framerate of the source. + +Note that a #GESAudioSource may also have a natural framerate if it derives +from the same #GESSourceClip asset as a #GESVideoSource, and its value will +be that of the video source. For example, if the uri of a #GESUriClip points +to a file that contains both a video and audio stream, then the corresponding +#GESAudioUriSource will share the natural framerate of the corresponding +#GESVideoUriSource. + + + Whether @self has a natural framerate or not, @framerate_n +and @framerate_d will be set to, respectively, 0 and -1 if it is +not the case. + + + + + The #GESTimelineElement to get "natural" framerate from + + + + The framerate numerator + + + + The framerate denominator + + + + - Returns the parent of @self. This function increases the refcount -of the parent object so you should gst_object_unref() it after usage. + Gets the #GESTimelineElement:parent for the element. - parent of @self, this can be %NULL if -@self has no parent. unref after usage. + The parent of @self, or %NULL if +@self has no parent. - a #GESTimelineElement + A #GESTimelineElement + Gets the #GESTimelineElement:priority for the element. - The @priority of @self + The priority of @self. - a #GESTimelineElement + A #GESTimelineElement + Gets the #GESTimelineElement:start for the element. - The @start of @self + The start of @self (in nanoseconds). - a #GESTimelineElement + A #GESTimelineElement - Returns the timeline of @self. This function increases the refcount -of the timeline so you should gst_object_unref() it after usage. + Gets the #GESTimelineElement:timeline for the element. - timeline of @self, this can be %NULL if -@self has no timeline. unref after usage. + The timeline of @self, or %NULL +if @self has no timeline. - a #GESTimelineElement + A #GESTimelineElement - Gets the toplevel #GESTimelineElement controlling @self + Gets the toplevel #GESTimelineElement:parent of the element. - The toplevel controlling parent of @self + The toplevel parent of @self. @@ -9728,9 +9943,11 @@ of the timeline so you should gst_object_unref() it after usage. - Gets all the TrackTypes @self will interact with + Gets the track types that the element can interact with, i.e. the type +of #GESTrack it can exist in, or will create #GESTrackElement-s for. + The track types that @self supports. @@ -9741,71 +9958,93 @@ of the timeline so you should gst_object_unref() it after usage. - Gets an array of #GParamSpec* for all configurable properties of the -children of @self. + Get a list of children properties of the element, which is a list of +all the specifications passed to +ges_timeline_element_add_child_property(). - an array of #GParamSpec* which should be freed after use or -%NULL if something went wrong + An array of +#GParamSpec corresponding to the child properties of @self, or %NULL if +something went wrong. - The #GESTimelineElement to get the list of children properties from + A #GESTimelineElement - return location for the length of the returned array + The 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. + Looks up a child property of the element. + +@prop_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to look up (as used in g_object_get()), and "TypeName" is the type name +of the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. + +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will be passed to @child, and the +registered specification of this property will be passed to @pspec. - 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. + %TRUE if a child corresponding to the property was found, in +which case @child and @pspec are set. - object to lookup the property in + A #GESTimelineElement - 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. + The name of a child property - pointer to a #GstElement that - takes the real object to set property on + The return location for the +found child - pointer to take the #GParamSpec - describing the property + The return location for the +specification of the child 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 an element inside the same timeline and layer as @self. @self +**must** be the return of ges_timeline_element_copy() with `deep=TRUE`, +and it should not be changed before pasting. +@self is not placed in the timeline, instead a new element is created, +alike to the originally copied element. Note that the originally +copied element must stay within the same timeline and layer, at both +the point of copying and pasting. + +Pasting may fail if it would place the timeline in an unsupported +configuration. + +After calling this function @element should not be used. In particular, +@element can **not** be pasted again. Instead, you can copy the +returned element and paste that copy (although, this is only possible +if the paste was successful). + +See also ges_timeline_paste_element(). - - New element resulting of pasting @self -or %NULL + + The newly created element, or +%NULL if pasting fails. @@ -9814,100 +10053,128 @@ or %NULL - The position in the timeline the element should -be copied to, meaning it will become the start of @self + The position in the timeline @element should be pasted +to, i.e. the #GESTimelineElement:start value for the pasted element. + Remove a child property from the element. @pspec should be a +specification that was passed to +ges_timeline_element_add_child_property(). The corresponding property +will no longer be registered as a child property for the element. + %TRUE if the property was successfully un-registered for @self. + A #GESTimelineElement + The specification for the property to remove - 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. + Edits the start time of an element within its timeline in ripple mode. +The element is shifted to @start, and later elements are also shifted +by the same amount (see #GES_EDIT_MODE_RIPPLE). An edit may fail if it +would place the timeline in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new start of @self in ripple mode. + The new start time 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. + Edits the end time of an element within its timeline in ripple mode. +The element's duration time is shifted until its end time matches @end, +and later elements have their start time shifted by the same amount +(see #GES_EDIT_MODE_RIPPLE). An edit may fail if it would place the +duration time out of bounds, or if it would place the timeline in an +unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the end time may be set +to the edge of some element in the neighbourhood of @end. - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new end (start + duration) of @self in ripple mode. It will - basically only change the duration of @self. + The new end time of @self in ripple mode - 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. + Edits the end time of an element within its timeline in roll mode. +The end of the element is trimmed to @end, and any other element whose +start edge matched the end edge of the element is also trimmed to @end +(see #GES_EDIT_MODE_ROLL). An edit may fail if it would place an +in-point time or duration time out of bounds, or if it would place the +timeline in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the end time may be set +to the edge of some element in the neighbourhood of @end. - %TRUE if the self as been rolled properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. - The #GESTimelineElement to roll. + The #GESTimelineElement to roll - The new end (start + duration) of @self in roll mode + The new end time 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. + Edits the start time of an element within its timeline in roll mode. +The element is trimmed to @start, and any other element whose end edge +matched the start edge of the element is also trimmed to @start (see +#GES_EDIT_MODE_ROLL). An edit may fail if it would place an in-point +time or duration time out of bounds, or if it would place the timeline +in an unsupported configuration. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been roll properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. @@ -9916,322 +10183,407 @@ occured - The new start of @self in roll mode, it will also adapat -the in-point of @self according + The new start time of @self in roll mode - 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. + Sets several of the children properties of the element. See +ges_timeline_element_set_child_property(). - The #GESTimelineElement parent object + A #GESTimelineElement - The name of the first property to set + The name of the first child property to set - value for the first property, followed optionally by more -name/return location pairs, followed by NULL + The value for the first property, followed optionally by more +name/value pairs, followed by %NULL - Sets a property of a child of @self + Sets the property of a child of the element. -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. +@property_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to set (as used in g_object_set()), and "TypeName" is the type name of +the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. + +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will have the corresponding +property set to @value. Other children that may have also matched the +property name (and type name) are left unchanged! + +Note that ges_timeline_element_set_child_properties() may be more +convenient for C programming. - %TRUE if the property was set, %FALSE otherwize + %TRUE if the property was found and set. - The origin #GESTimelineElement + A #GESTimelineElement - The name of the property + The name of the child property to set - the value + The value to set the property to - Sets a property of a child of @self. + Sets the property of a child of the element. Specifically, the property +corresponding to the @pspec used in +ges_timeline_element_add_child_property() is set to @value. - a #GESTimelineElement + A #GESTimelineElement - The #GParamSpec that specifies the property you want to set + The specification of a registered child property to set - the value + The value to set the property to - 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. + Sets several of the children properties of the element. See +ges_timeline_element_set_child_property(). - The #GESTimelineElement parent object + A #GESTimelineElement - The name of the first property to set + The name of the first child property to set - value for the first property, followed optionally by more -name/return location pairs, followed by NULL + The value for the first property, followed optionally by more +name/value pairs, followed by %NULL - Set the duration of the object + Sets #GESTimelineElement:duration for the element. This may fail if it +would place the timeline in an unsupported configuration, or if the +element does not have enough internal content to last for the desired +@duration. -Note that if the timeline snap-distance property of the timeline containing -@self is set, @self will properly snap to its neighboors. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the element's +#GESTimelineElement:duration may instead be adjusted around @duration +such that the edge of @self matches the edge of some other element in +the neighbourhood. In such a case, the return value will still be %TRUE +on success. - %TRUE if @duration could be set. + %TRUE if @duration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the duration in #GstClockTime + The desired duration in its timeline - Set the in-point, that is the moment at which the @self will start -outputting data from its contents. + Sets #GESTimelineElement:in-point for the element. If the new in-point +is above the current #GESTimelineElement:max-duration of the element, +this method will fail. - %TRUE if @inpoint could be set. + %TRUE if @inpoint could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the in-point in #GstClockTime + The in-point, in internal time coordinates - Set the maximun duration of the object + Sets #GESTimelineElement:max-duration for the element. If the new +maximum duration is below the current #GESTimelineElement:in-point of +the element, this method will fail. - %TRUE if @maxduration could be set. + %TRUE if @maxduration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the maximum duration in #GstClockTime + The maximum duration, in internal time coordinates - 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. + Sets the #GESTimelineElement:name for the element. If %NULL is given +for @name, then the library will instead generate a new name based on +the type name of the element, such as the name "uriclip3" for a +#GESUriClip, and will set that name instead. + +If @self already has a #GESTimelineElement:timeline, you should not +call this function with @name set to %NULL. + +You should ensure that, within each #GESTimeline, every element has a +unique name. If you call this function with @name as %NULL, then +the library should ensure that the set generated name is unique from +previously **generated** names. However, if you choose a @name that +interferes with the naming conventions of the library, the library will +attempt to ensure that the generated names will not conflict with the +chosen name, which may lead to a different name being set instead, but +the uniqueness between generated and user-chosen names is not +guaranteed. + %TRUE if @name or a generated name for @self could be set. - a #GESTimelineElement + A #GESTimelineElement - The name @self should take (if avalaible<) + The name @self should take - Sets the parent of @self to @parent. The parents needs to already -own a hard reference on @self. + Sets the #GESTimelineElement:parent for the element. + +This is used internally and you should normally not call this. A +#GESContainer will set the #GESTimelineElement:parent of its children +in ges_container_add() and ges_container_remove(). + +Note, if @parent is not %NULL, @self must not already have a parent +set. Therefore, if you wish to switch parents, you will need to call +this function twice: first to set the parent to %NULL, and then to the +new parent. + +If @parent is not %NULL, you must ensure it already has a +(non-floating) reference to @self before calling this. - %TRUE if @parent could be set or %FALSE when @self -already had a parent or @self and @parent are the same. + %TRUE if @parent could be set for @self. - a #GESTimelineElement + A #GESTimelineElement +@parent (nullable): New parent of @self - new parent of self - - Sets the priority of the object within the containing layer + + Sets the priority of the element 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. - %TRUE if @priority could be set. + %TRUE if @priority could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the priority + The priority - Set the position of the object in its containing layer. + Sets #GESTimelineElement:start for the element. This may fail if it +would place the timeline in an unsupported configuration. -Note that if the snapping-distance property of the timeline containing -@self is set, @self will properly snap to the edges around @start. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the element's +#GESTimelineElement:start may instead be set to the edge of some other +element in the neighbourhood of @start. In such a case, the return +value will still be %TRUE on success. - %TRUE if @start could be set. + %TRUE if @start could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the position in #GstClockTime + The desired start position of the element in its timeline - Sets the timeline of @self to @timeline. + Sets the #GESTimelineElement:timeline of the element. + +This is used internally and you should normally not call this. A +#GESClip will have its #GESTimelineElement:timeline set through its +#GESLayer. A #GESTrack will similarly take care of setting the +#GESTimelineElement:timeline of its #GESTrackElement-s. A #GESGroup +will adopt the same #GESTimelineElement:timeline as its children. + +If @timeline is %NULL, this will stop its current +#GESTimelineElement:timeline from tracking it, otherwise @timeline will +start tracking @self. Note, in the latter case, @self must not already +have a timeline set. Therefore, if you wish to switch timelines, you +will need to call this function twice: first to set the timeline to +%NULL, and then to the new timeline. - %TRUE if @timeline could be set or %FALSE when @timeline -already had a timeline. + %TRUE if @timeline could be set for @self. - a #GESTimelineElement + A #GESTimelineElement +@timeline (nullable): The #GESTimeline @self should be in - 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. + Edits the start time of an element within its timeline in trim mode. +The element is shifted to @start, and its in-point time is similarly +shifted to ensure that its internal content will appear at the same +timeline time when it is played (see #GES_EDIT_MODE_TRIM). An edit may +fail if it would place the in-point time out of bounds, or if it would +place the timeline in an unsupported configuration. -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. +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the start time may be set +to the edge of some element in the neighbourhood of @start. - %TRUE if the self as been trimmed properly, %FALSE if an error -occured + %TRUE if the trim edit of @self completed, %FALSE on failure. - The #GESTimelineElement to trim. + The #GESTimelineElement to trim - The new start of @self in trim mode, will adapt the inpoint -of @self accordingly + The new start time of @self in trim mode - The duration (in nanoseconds) which will be used in the container + The duration that the element is in effect for in the timeline (a +time difference in nanoseconds using the time coordinates of the +timeline). For example, for a source element, this would determine +for how long it should output its internal content for. For an +operation element, this would determine for how long its effect +should be applied to any source content. - The in-point at which this #GESTimelineElement will start outputting data -from its contents (in nanoseconds). + The initial offset to use internally when outputting content (in +nanoseconds, but in the time coordinates of the internal content). -Ex : an in-point of 5 seconds means that the first outputted buffer will -be the one located 5 seconds in the controlled resource. +For example, for a #GESVideoUriSource that references some media +file, the "internal content" is the media file data, and the +in-point would correspond to some timestamp in the media file. +When playing the timeline, and when the element is first reached at +timeline-time #GESTimelineElement:start, it will begin outputting the +data from the timestamp in-point **onwards**, until it reaches the +end of its #GESTimelineElement:duration in the timeline. + +For elements that have no internal content, this should be kept +as 0. - The maximum duration (in nanoseconds) of the #GESTimelineElement. + The full duration of internal content that is available (a time +difference in nanoseconds using the time coordinates of the internal +content). + +This will act as a cap on the #GESTimelineElement:in-point of the +element (which is in the same time coordinates), and will sometimes +be used to limit the #GESTimelineElement:duration of the element in +the timeline. + +For example, for a #GESVideoUriSource that references some media +file, this would be the length of the media file. + +For elements that have no internal content, or whose content is +indefinite, this should be kept as #GST_CLOCK_TIME_NONE. - The name of the object + The name of the element. This should be unique within its timeline. - The parent container of the object + The parent container of the element. - - The priority of the object. - -Setting GESTimelineElement priorities is deprecated -as all priority management is done by GES itself now. + + The priority of the element. + Priority management is now done by GES itself. @@ -10239,18 +10591,23 @@ as all priority management is done by GES itself now. - The position of the object in its container (in nanoseconds). + The starting position of the element in the timeline (in nanoseconds +and in the time coordinates of the timeline). For example, for a +source element, this would determine the time at which it should +start outputting its internal content. For an operation element, this +would determine the time at which it should start applying its effect +to any source content. - The timeline in which @element is + The timeline that the element lies within. - The #GESTimelineElement that controls the object + The #GESTimelineElement:parent of the element @@ -10258,29 +10615,31 @@ as all priority management is done by GES itself now. - position (in time) of the object + The #GESTimelineElement:start of the element - Position in the media from which the object should be used + The #GESTimelineElement:in-point of the element - duration of the object to be used + The #GESTimelineElement:duration of the element - The maximum duration the object can have + The #GESTimelineElement:max-duration of the element - priority of the object in the layer (0:top priority) + The #GESTimelineElement:priority of the element + The #GESTimelineElement:timeline of the element + The #GESTimelineElement:name of the element @@ -10291,32 +10650,72 @@ as all priority management is done by GES itself now. - - The deep notify signal is used to be notified of property changes of all -the childs of @timeline_element + + Emitted when the element has a new child property registered. See +ges_timeline_element_add_child_property(). + +Note that some GES elements will be automatically created with +pre-registered children properties. You can use +ges_timeline_element_list_children_properties() to list these. - the object that originated the signal + The child whose property has been registered - the property that changed + The specification for the property that has been registered + + + + + + Emitted when the element has a child property unregistered. See +ges_timeline_element_remove_child_property(). + + + + + + The child whose property has been unregistered + + + + The specification for the property that has been unregistered + + + + + + Emitted when a child of the element has one of its registered +properties set. See ges_timeline_element_add_child_property(). +Note that unlike #GObject::notify, a child property name can not be +used as a signal detail. + + + + + + The child whose property has been set + + + + The specification for the property that been set - The GESTimelineElement base class. Subclasses should override at least + 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. +and emitting the notify signal. @@ -10325,17 +10724,16 @@ 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. + %TRUE if @parent could be set for @self. - a #GESTimelineElement + A #GESTimelineElement +@parent (nullable): New parent of @self - new parent of self @@ -10345,16 +10743,16 @@ already had a parent or @self and @parent are the same. - %TRUE if @start could be set. + %TRUE if @start could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the position in #GstClockTime + The desired start position of the element in its timeline @@ -10364,16 +10762,16 @@ already had a parent or @self and @parent are the same. - %TRUE if @inpoint could be set. + %TRUE if @inpoint could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the in-point in #GstClockTime + The in-point, in internal time coordinates @@ -10383,16 +10781,16 @@ already had a parent or @self and @parent are the same. - %TRUE if @duration could be set. + %TRUE if @duration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the duration in #GstClockTime + The desired duration in its timeline @@ -10402,16 +10800,16 @@ already had a parent or @self and @parent are the same. - %TRUE if @maxduration could be set. + %TRUE if @maxduration could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the maximum duration in #GstClockTime + The maximum duration, in internal time coordinates @@ -10421,16 +10819,16 @@ already had a parent or @self and @parent are the same. - %TRUE if @priority could be set. + %TRUE if @priority could be set for @self. - a #GESTimelineElement + A #GESTimelineElement - the priority + The priority @@ -10440,17 +10838,17 @@ already had a parent or @self and @parent are the same. - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new start of @self in ripple mode. + The new start time of @self in ripple mode @@ -10460,18 +10858,17 @@ occured - %TRUE if the self as been rippled properly, %FALSE if an error -occured + %TRUE if the ripple edit of @self completed, %FALSE on +failure. - The #GESTimelineElement to ripple. + The #GESTimelineElement to ripple - The new end (start + duration) of @self in ripple mode. It will - basically only change the duration of @self. + The new end time of @self in ripple mode @@ -10481,8 +10878,7 @@ occured - %TRUE if the self as been roll properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. @@ -10491,8 +10887,7 @@ occured - The new start of @self in roll mode, it will also adapat -the in-point of @self according + The new start time of @self in roll mode @@ -10502,17 +10897,16 @@ the in-point of @self according - %TRUE if the self as been rolled properly, %FALSE if an error -occured + %TRUE if the roll edit of @self completed, %FALSE on failure. - The #GESTimelineElement to roll. + The #GESTimelineElement to roll - The new end (start + duration) of @self in roll mode + The new end time of @self in roll mode @@ -10522,18 +10916,16 @@ occured - %TRUE if the self as been trimmed properly, %FALSE if an error -occured + %TRUE if the trim edit of @self completed, %FALSE on failure. - The #GESTimelineElement to trim. + The #GESTimelineElement to trim - The new start of @self in trim mode, will adapt the inpoint -of @self accordingly + The new start time of @self in trim mode @@ -10594,32 +10986,27 @@ 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. + %TRUE if a child corresponding to the property was found, in +which case @child and @pspec are set. - object to lookup the property in + A #GESTimelineElement - 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. + The name of a child property - pointer to a #GstElement that - takes the real object to set property on + The return location for the +found child - pointer to take the #GParamSpec - describing the property + The return location for the +specification of the child property @@ -10629,6 +11016,7 @@ usage. + The track types that @self supports. @@ -10665,9 +11053,9 @@ usage. - The priority of the first layer the element is in (note that only -groups can span over several layers). %GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY -means that the element is not in a layer. + The priority of the layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. @@ -10678,8 +11066,33 @@ means that the element is not in a layer. + + + + + Whether @self has a natural framerate or not, @framerate_n +and @framerate_d will be set to, respectively, 0 and -1 if it is +not the case. + + + + + The #GESTimelineElement to get "natural" framerate from + + + + The framerate numerator + + + + The framerate denominator + + + + + - + @@ -10705,10 +11118,10 @@ 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 + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The color used by @self. @@ -10721,10 +11134,10 @@ underlying GESTrackElement instead - + Get the pango font description used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The pango font description used by @self. @@ -10737,10 +11150,10 @@ underlying GESTrackElement instead - + Get the horizontal aligment used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The horizontal aligment used by @self. @@ -10753,10 +11166,10 @@ underlying GESTrackElement instead - + Get the text currently set on @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The text currently set on @self. @@ -10769,10 +11182,10 @@ underlying GESTrackElement instead - + Get the color used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The color used by @self. @@ -10785,10 +11198,10 @@ underlying GESTrackElement instead - + Get the vertical aligment used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The vertical aligment used by @self. @@ -10801,10 +11214,10 @@ underlying GESTrackElement instead - + Get the horizontal position used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties The horizontal position used by @self. @@ -10817,10 +11230,9 @@ underlying GESTrackElement instead - + Get the vertical position used by @self. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_get_children_property instead The vertical position used by @self. @@ -10833,10 +11245,10 @@ underlying GESTrackElement instead - + Sets the background of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10852,10 +11264,10 @@ underlying GESTrackElement instead - + Sets the color of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10871,10 +11283,10 @@ underlying GESTrackElement instead - + Sets the pango font description of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10890,10 +11302,10 @@ underlying GESTrackElement instead - + Sets the horizontal aligment of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10909,10 +11321,10 @@ underlying GESTrackElement instead - + Sets the text this clip will render. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10929,10 +11341,10 @@ made. - + Sets the vertical aligment of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10948,10 +11360,10 @@ underlying GESTrackElement instead - + Sets the horizontal position of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10967,10 +11379,10 @@ underlying GESTrackElement instead - + Sets the vertical position of the text. - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -10986,52 +11398,60 @@ underlying GESTrackElement instead - + The background of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + The color of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + Pango font description string - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + Horizontal alignment of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + The text to diplay - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + Vertical alignent of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + The horizontal position of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties - + The vertical position of the text - use ges_track_element_get/set_children_properties on the -underlying GESTrackElement instead + use #ges_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties @@ -11062,68 +11482,7 @@ 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> +of titles in GES. @@ -11412,29 +11771,59 @@ made. - Corresponds to one output format (i.e. audio OR video). + A #GESTrack acts an output source for a #GESTimeline. Each one +essentially provides an additional #GstPad for the timeline, with +#GESTrack:restriction-caps capabilities. Internally, a track +wraps an #nlecomposition filtered by a #capsfilter. -Contains the compatible TrackElement(s). +A track will contain a number of #GESTrackElement-s, and its role is +to select and activate these elements according to their timings when +the timeline in played. For example, a track would activate a +#GESSource when its #GESTimelineElement:start is reached by outputting +its data for its #GESTimelineElement:duration. Similarly, a +#GESOperation would be activated by applying its effect to the source +data, starting from its #GESTimelineElement:start time and lasting for +its #GESTimelineElement:duration. + +For most users, it will usually be sufficient to add newly created +tracks to a timeline, but never directly add an element to a track. +Whenever a #GESClip is added to a timeline, the clip adds its +elements to the timeline's tracks and assumes responsibility for +updating them. - Creates a new #GESTrack with the given @type and @caps. + Creates a new track with the given track-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. +If @type is #GES_TRACK_TYPE_VIDEO, and @caps is a subset of +"video/x-raw(ANY)", then a #GESVideoTrack is created. This will +automatically choose a gap creation method suitable for video data. You +will likely want to set #GESTrack:restriction-caps separately. You may +prefer to use the ges_video_track_new() method instead. + +If @type is #GES_TRACK_TYPE_AUDIO, and @caps is a subset of +"audio/x-raw(ANY)", then a #GESAudioTrack is created. This will +automatically choose a gap creation method suitable for audio data, and +will set the #GESTrack:restriction-caps to the default for +#GESAudioTrack. You may prefer to use the ges_audio_track_new() method +instead. + +Otherwise, a plain #GESTrack is returned. You will likely want to set +the #GESTrack:restriction-caps and call +ges_track_set_create_element_for_gap_func() on the returned track. - A new #GESTrack. + A new track. - The type of track + The #GESTrack:track-type for the track - The caps to restrict the output of the track to. + The #GESTrack:caps for the track @@ -11451,226 +11840,280 @@ use those caps elsewhere, you will have to take an extra reference. - Adds the given object to the track. Sets the object's controlling track, -and thus takes ownership of the @object. + Adds the given track element to the track, which takes ownership of the +element. -An object can only be added to one track. +Note that this can fail if it would break a configuration rule of the +track's #GESTimeline. + +Note that a #GESTrackElement 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. + %TRUE if @object was successfully added to @track. - a #GESTrack + A #GESTrack - the #GESTrackElement to add + The element to add - Commits all the pending changes of the TrackElement contained in the + Commits all the pending changes for the elements 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. +When changes are made to the timing or priority of elements within a +track, they are not directly executed for the underlying +#nlecomposition and its children. This method will finally execute +these changes so they are reflected in the data output of the track. + +Any pending changes will be executed in the backend. The +#GESTimeline::commited signal will be emitted once this has completed. + +Note that ges_timeline_commit() will call this method on all of its +tracks, so you are unlikely to need to use this directly. - %TRUE if something as been commited %FALSE if nothing needed -to be commited + %TRUE if pending changes were committed, or %FALSE if nothing +needed to be committed. - a #GESTrack + A #GESTrack - Get the #GstCaps this track is configured to output. + Get the #GESTrack:caps of the track. - The #GstCaps this track is configured to output. + The caps of @track. - a #GESTrack + A #GESTrack - Gets the #GESTrackElement contained in @track + Gets the track elements contained in the track. The returned list is +sorted by the element's #GESTimelineElement:priority and +#GESTimelineElement:start. - the list of -#GESTrackElement present in the Track sorted by priority and start. + A list of +all the #GESTrackElement-s in @track. - a #GESTrack + A #GESTrack - Gets if the underlying #NleComposition contains an expandable mixer. + Gets the #GESTrack:mixing of the track. - #True if there is a mixer, #False otherwise. + Whether @track is mixing. - a #GESTrack + A #GESTrack + + + + + + Gets the #GESTrack:restriction-caps of the track. + + + The restriction-caps of @track. + + + + + A #GESTrack - Get the #GESTimeline this track belongs to. Can be %NULL. + Get the timeline this track belongs to. - The #GESTimeline this track belongs to. Can be %NULL. + The timeline that @track belongs to, or %NULL if +it does not belong to a timeline. - a #GESTrack + 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. + Removes the given track element from the track, which revokes +ownership of the element. - #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). + %TRUE if @object was successfully removed from @track. - a #GESTrack + A #GESTrack - the #GESTrackElement to remove + The element 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. + Sets the function that will be used to create a #GstElement that can be +used as a source to fill the gaps of the track. A gap is a timeline +region where the track has no #GESTrackElement sources. Therefore, you +are likely to want the #GstElement returned by the function to always +produce 'empty' content, defined relative to the stream type, such as +transparent frames for a video, or mute samples for audio. + +#GESAudioTrack and #GESVideoTrack objects are created with such a +function already set appropriately. - a #GESTrack + A #GESTrack - The #GESCreateElementForGapFunc that will be used -to create #GstElement to fill gaps + The function to be used to create a source +#GstElement that can fill gaps in @track - Sets if the #GESTrack should be mixing. + Sets the #GESTrack:mixing for the track. - a #GESTrack + A #GESTrack - TRUE if the track should be mixing, FALSE otherwise. + Whether @track should be mixing - Sets the given @caps as the caps the track has to output. + Sets the #GESTrack:restriction-caps for the track. - a #GESTrack + A #GESTrack - the #GstCaps to set + The new restriction-caps for @track - Sets @timeline as the timeline controlling @track. + Informs the track that it belongs to the given timeline. Calling this +does not actually add the track to the timeline. For that, you should +use ges_timeline_add_track(), which will also take care of informing +the track that it belongs to the timeline. As such, there is no need +for you to call this method. - a #GESTrack + A #GESTrack +@timeline (nullable): A #GESTimeline - 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. + Updates the #GESTrack:restriction-caps of the track using the fields +found in the given caps. Each of the #GstStructure-s in @caps is +compared against the existing structure with the same index in the +current #GESTrack:restriction-caps. If there is no corresponding +existing structure at that index, then the new structure is simply +copied to that index. Otherwise, any fields in the new structure are +copied into the existing structure. This will replace existing values, +and may introduce new ones, but any fields 'missing' in the new +structure are left unchanged in the existing structure. -Modification happens for each structure in the new caps, and -one can add new fields or structures through that function. +For example, if the existing #GESTrack:restriction-caps are +"video/x-raw, width=480, height=360", and the updating caps is +"video/x-raw, format=I420, width=500; video/x-bayer, width=400", then +the new #GESTrack:restriction-caps after calling this will be +"video/x-raw, width=500, height=360, format=I420; video/x-bayer, +width=400". - a #GESTrack + A #GESTrack - the #GstCaps to update with + The caps to update the restriction-caps 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. + The capabilities used to choose the output of the #GESTrack's +elements. Internally, this is used to select output streams when +several may be available, by determining whether its #GstPad is +compatible (see #nlecomposition:caps for #nlecomposition). As such, +this is used as a weaker indication of the desired output type of the +track, **before** the #GESTrack:restriction-caps is applied. +Therefore, this should be set to a *generic* superset of the +#GESTrack:restriction-caps, such as "video/x-raw(ANY)". In addition, +it should match with the track's #GESTrack:track-type. + +Note that when you set this property, the #GstCapsFeatures of all its +#GstStructure-s will be automatically set to #GST_CAPS_FEATURES_ANY. + +Once a track has been added to a #GESTimeline, you should not change +this. Default value: #GST_CAPS_ANY. @@ -11681,30 +12124,44 @@ Default value: #GST_CAPS_ANY. Default value: O + + The #nlecomposition:id of the underlying #nlecomposition. + + - Whether layer mixing is activated or not on the track. + Whether the track should support the mixing of #GESLayer data, such +as composing the video data of each layer (when part of the video +data is transparent, the next layer will become visible) or adding +together the audio data. As such, for audio and video tracks, you'll +likely want to keep this set to %TRUE. - Caps used to filter/choose the output stream. + The capabilities that specifies the final output format of the +#GESTrack. For example, for a video track, it would specify the +height, width, framerate and other properties of the stream. + +You may change this property after the track has been added to a +#GESTimeline, but it must remain compatible with the track's +#GESTrack:caps. 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. + The track type of the track. This controls the type of +#GESTrackElement-s that can be added to the track. This should +match with the track's #GESTrack:caps. -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. +Once a track has been added to a #GESTimeline, you should not change +this. - a #GESTrackType indicting the basic type of the track. + The #GESTrack:track-type of the track @@ -11716,30 +12173,34 @@ property. + This signal will be emitted once the changes initiated by +ges_track_commit() have been executed in the backend. In particular, +this will be emitted whenever the underlying #nlecomposition has been +committed (see #nlecomposition::commited). - Will be emitted after a track element was added to the track. + Will be emitted after a track element is added to the track. - the #GESTrackElement that was added. + The element that was added - Will be emitted after a track element was removed from the track. + Will be emitted after a track element is removed from the track. - the #GESTrackElement that was removed. + The element that was removed @@ -11770,12 +12231,23 @@ property. - #GESTrackElement is the Base Class for any object that can be contained in a -#GESTrack. + A #GESTrackElement is a #GESTimelineElement that specifically belongs +to a single #GESTrack of its #GESTimelineElement:timeline. Its +#GESTimelineElement:start and #GESTimelineElement:duration specify its +temporal extent in the track. Specifically, a track element wraps some +nleobject, such as an #nlesource or #nleoperation, which can be +retrieved with ges_track_element_get_nleobject(), and its +#GESTimelineElement:start, #GESTimelineElement:duration, +#GESTimelineElement:in-point, #GESTimelineElement:priority and +#GESTrackElement:active properties expose the corresponding nleobject +properties. When a track element is added to a track, its nleobject is +added to the corresponding #nlecomposition that the track wraps. -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. +Most users will not have to work directly with track elements since a +#GESClip will automatically create track elements for its timeline's +tracks and take responsibility for updating them. The only track +elements that are not automatically created by clips, but a user is +likely to want to create, are #GESEffect-s. @@ -11854,11 +12326,11 @@ usage. - object to lookup the property in + Object to lookup the property in - name of the property to look up. You can specify the name of the + 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 @@ -11871,96 +12343,110 @@ usage. - pointer to take the #GParamSpec + pointer to take the specification describing the property - Looks for the properties defines with the various parametters and add -them to the hashtable of children properties. + Adds all the properties of a #GstElement that match the criteria as +children properties of the track element. If the name of @element's +#GstElementFactory is not in @blacklist, and the factory's +#GST_ELEMENT_METADATA_KLASS contains at least one member of +@wanted_categories (e.g. #GST_ELEMENT_FACTORY_KLASS_DECODER), then +all the properties of @element that are also in @whitelist are added as +child properties of @self using +ges_timeline_element_add_child_property(). -To be used by subclasses only +This is intended to be used by subclasses when constructing. - The #GESTrackElement to set chidlren props on + A #GESTrackElement - The GstElement to retrieve properties from + The child object to retrieve properties from -An array of categories of GstElement to -take into account (as defined in the factory meta "klass" field) +An array of element factory "klass" categories to whitelist, or %NULL +to accept all categories A -blacklist of elements factory names to not take into account +blacklist of element factory names, or %NULL to not blacklist any +element factory - A list -of propery names to add as children properties + A +whitelist of element property names, or %NULL to whitelist all +writeable properties - - Edit @object in the different exisiting #GESEditMode modes. In the case of -slide, and roll, you need to specify a #GESEdge + + Edits the element within its track. + use #ges_timeline_element_edit instead. - %TRUE if the object as been edited properly, %FALSE if an error -occured + %TRUE if the edit of @object completed, %FALSE on failure. - the #GESTrackElement to edit + 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. + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +timeline - The #GESEditMode in which the edition will happen. + The edit mode - The #GESEdge the edit should happen on. + The edge of @object where the edit should occur - The position at which to edit @object (in nanosecond) + The edit position: a new location for the edge of @object +(in nanoseconds) + Get all the control bindings that have been created for the children +properties of the track element using +ges_track_element_set_control_source(). The keys used in the returned +hash table are the child property names that were passed to +ges_track_element_set_control_source(), and their values are the +corresponding created #GstControlBinding. A -#GHashTable containing all property_name: GstControlBinding +hash table containing all child-property-name/control-binding pairs +for @trackelement. @@ -11968,7 +12454,7 @@ occured - The #TrackElement from which to get all set bindings + A #GESTrackElement @@ -12009,7 +12495,7 @@ is much more convenient for C programming. Use #ges_timeline_element_get_child_property - %TRUE if the property was found, %FALSE otherwize + %TRUE if the property was found, %FALSE otherwize. @@ -12037,7 +12523,7 @@ be initialized if it is initialized with 0 - a #GESTrackElement + A #GESTrackElement @@ -12070,113 +12556,135 @@ corresponding property of the first element found will be set. - value for the first property, followed optionally by more + 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. + Gets the control binding that was created for the specified child +property of the track element using +ges_track_element_set_control_source(). The given @property_name must +be the same name of the child property that was passed to +ges_track_element_set_control_source(). - the #GstControlBinding associated with -@property_name, or %NULL if that property is not controlled. + The control binding that was +created for the specified child property of @object, or %NULL if +@property_name does not correspond to any control binding. - the #GESTrackElement in which to lookup the bindings. + A #GESTrackElement - The property_name to which the binding is associated. + The name of the child property to return the control +binding of - Get the #GstElement this track element is controlling within GNonLin. + Get the #GstElement that the track element's underlying nleobject +controls. - the #GstElement this track element is controlling -within GNonLin. + The #GstElement being controlled by the +nleobject that @object wraps. - a #GESTrackElement + A #GESTrackElement - Get the NleObject object this object is controlling. + Get the GNonLin object this object is controlling. use #ges_track_element_get_nleobject instead. - the NleObject object this object is controlling. + The GNonLin object this object is controlling. - a #GESTrackElement + A #GESTrackElement - Get the GNonLin object this object is controlling. + Get the nleobject that this element wraps. - the GNonLin object this object is controlling. + The nleobject that @object wraps. - a #GESTrackElement + A #GESTrackElement - Get the #GESTrack to which this object belongs. + Get the #GESTrackElement:track for the element. - The #GESTrack to which this object -belongs. Can be %NULL if it is not in any track + The track that @object belongs to, +or %NULL if it does not belong to a track. - a #GESTrackElement + A #GESTrackElement + Gets the #GESTrackElement:track-type for the element. + The track-type of @object. + A #GESTrackElement + + + + + + Gets #GESTrackElement:has-internal-source for the element. + + + %TRUE if @object can have its 'internal time' properties set. + + + + + A #GESTrackElement - Lets you know if @object will be used for playback and rendering, -or not. + Gets #GESTrackElement:active for the element. - %TRUE if @object is active, %FALSE otherwize + %TRUE if @object is active in its track. - a #GESTrackElement + A #GESTrackElement @@ -12187,8 +12695,8 @@ 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 + An array of #GParamSpec* which should be freed after use or +%NULL if something went wrong. @@ -12218,11 +12726,11 @@ usage. - object to lookup the property in + Object to lookup the property in - name of the property to look up. You can specify the name of the + 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 @@ -12235,46 +12743,50 @@ usage. - pointer to take the #GParamSpec + pointer to take the specification describing the property - Removes a #GstControlBinding from @object. + Removes the #GstControlBinding that was created for the specified child +property of the track element using +ges_track_element_set_control_source(). The given @property_name must +be the same name of the child property that was passed to +ges_track_element_set_control_source(). - %TRUE if the binding could be removed, %FALSE if an error -occured + %TRUE if the control binding was removed from the specified +child property of @object, or %FALSE if an error occurred. - the #GESTrackElement on which to set a control binding + A #GESTrackElement - The name of the property to control. + The name of the child property to remove the control +binding from - Sets the usage of the @object. If @active is %TRUE, the object will be used for -playback and rendering, else it will be ignored. + Sets #GESTrackElement:active for the element. - %TRUE if the property was toggled, else %FALSE + %TRUE if the property was *toggled*. - a #GESTrackElement + A #GESTrackElement - visibility + Whether @object should be active in its track @@ -12314,7 +12826,7 @@ is much more convenient for C programming. use #ges_timeline_element_set_child_property instead - %TRUE if the property was set, %FALSE otherwize + %TRUE if the property was set, %FALSE otherwize. @@ -12327,7 +12839,7 @@ is much more convenient for C programming. - the value + The value @@ -12341,7 +12853,7 @@ is much more convenient for C programming. - a #GESTrackElement + A #GESTrackElement @@ -12349,7 +12861,7 @@ is much more convenient for C programming. - the value + The value @@ -12374,66 +12886,139 @@ corresponding property of the first element found will be set. - value for the first property, followed optionally by more + 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. + Creates a #GstControlBinding for the specified child property of the +track element using the given control source. The given @property_name +should refer to an existing child property of the track element, as +used in ges_timeline_element_lookup_child(). + +If @binding_type is "direct", then the control binding is created with +gst_direct_control_binding_new() using the given control source. If +@binding_type is "direct-absolute", it is created with +gst_direct_control_binding_new_absolute() instead. - %TRUE if the binding could be created and added, %FALSE if an error -occured + %TRUE if the specified child property could be bound to +@source, or %FALSE if an error occurred. - the #GESTrackElement on which to set a control binding + A #GESTrackElement - the #GstControlSource to set on the binding. + The control source to bind the child property to - The name of the property to control. + The name of the child property to control - The type of binding to create. Currently the following values are valid: - - "direct": See #gst_direct_control_binding_new - - "direct-absolute": See #gst_direct_control_binding_new_absolute + The type of binding to create ("direct" or +"direct-absolute") - + + Sets #GESTrackElement:has-internal-source for the element. If this is +set to %FALSE, this method will also set the +#GESTimelineElement:in-point of the element to 0 and its +#GESTimelineElement:max-duration to #GST_CLOCK_TIME_NONE. + A #GESTrackElement + + + + Whether the @object should be allowed to have its +'internal time' properties set. + + + + + + Sets the #GESTrackElement:track-type for the element. + + + + + + + A #GESTrackElement + The new track-type for @object - 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. + Whether the effect of the element should be applied in its +#GESTrackElement:track. If set to %FALSE, it will not be used in +the output of the track. + + + + This property is used to determine whether the 'internal time' +properties of the element have any meaning. In particular, unless +this is set to %TRUE, the #GESTimelineElement:in-point and +#GESTimelineElement:max-duration can not be set to any value other +than the default 0 and #GST_CLOCK_TIME_NONE, respectively. + +If an element has some *internal* *timed* source #GstElement that it +reads stream data from as part of its function in a #GESTrack, then +you'll likely want to set this to %TRUE to allow the +#GESTimelineElement:in-point and #GESTimelineElement:max-duration to +be set. + +The default value is determined by the #GESTrackElementClass +@default_has_internal_source class property. For most +#GESSourceClass-es, this will be %TRUE, with the exception of those +that have a potentially *static* source, such as #GESImageSourceClass +and #GESTitleSourceClass. Otherwise, this will usually be %FALSE. + +For most #GESOperation-s you will likely want to leave this set to +%FALSE. The exception may be for an operation that reads some stream +data from some private internal source as part of manipulating the +input data from the usual linked upstream #GESTrackElement. + +For example, you may want to set this to %TRUE for a +#GES_TRACK_TYPE_VIDEO operation that wraps a #textoverlay that reads +from a subtitle file and places its text on top of the received video +data. The #GESTimelineElement:in-point of the element would be used +to shift the initial seek time on the #textoverlay away from 0, and +the #GESTimelineElement:max-duration could be set to reflect the +time at which the subtitle file runs out of data. + +Note that GES can not support track elements that have both internal +content and manipulate the timing of their data streams (time +effects). + The track that this element belongs to, or %NULL if it does not +belong to a track. + The track type of the element, which determines the type of track the +element can be added to (see #GESTrack:track-type). This should +correspond to the type of data that the element can produce or +process. @@ -12454,27 +13039,27 @@ 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 + This is emitted when a control binding is added to a child property +of the track element. - the #GstControlBinding that has been added + The control binding 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 + This is emitted when a control binding is removed from a child +property of the track element. - the #GstControlBinding that has been removed + The control binding that has been removed @@ -12485,6 +13070,48 @@ is removed for a child property of @track_element + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + + + + + A #GESAsset + + + + The framerate numerator + + + + The framerate denominator + + + + + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + + + + + A #GESAsset + + + + The framerate numerator + + + + The framerate denominator + + + + Get the GESAssetTrackType the #GESTrackElement extracted from @self should get into @@ -12495,13 +13122,13 @@ should get into - A #GESAssetObject + A #GESAsset - Set the #GESAssetTrackType the #GESTrackElement extracted from @self + Set the #GESTrackType the #GESTrackElement extracted from @self should get into @@ -12509,7 +13136,7 @@ should get into - A #GESAssetObject + A #GESAsset @@ -12538,8 +13165,30 @@ should get into + + + + + + + + + A #GESAsset + + + + The framerate numerator + + + + The framerate denominator + + + + + - + @@ -12548,14 +13197,13 @@ should get into - 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. + The name of the #GstElementFactory to use to +create the underlying nleobject of a track element @@ -12640,11 +13288,11 @@ usage. - object to lookup the property in + Object to lookup the property in - name of the property to look up. You can specify the name of the + 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 @@ -12657,18 +13305,30 @@ usage. - pointer to take the #GParamSpec + pointer to take the specification describing the property - - - - - + + + + + + + + + + + + + + + + + @@ -12822,69 +13482,6 @@ to apply. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Represents all the output streams from a particular uri. It is assumed that the URI points to a file of some type. @@ -13010,11 +13607,7 @@ before create_track_elements is called. - - 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 Metadata of the Asset. + @@ -13130,6 +13723,23 @@ You can also use multi file uris for #GESMultiFileSource. + + Gets maximum duration of the file represented by @self, +it is usually the same as GESUriClipAsset::duration, +but in the case of nested timelines, for example, they +are different as those can be extended 'infinitely'. + + + The maximum duration of @self + + + + + a #GESUriClipAsset + + + + Get the GESUriSourceAsset @self containes @@ -13156,8 +13766,7 @@ You can also use multi file uris for #GESMultiFileSource. - a #indent: Standard input:311: Error:Unexpected end of file -GESUriClipAsset + a #GESUriClipAsset @@ -13166,8 +13775,12 @@ GESUriClipAsset The duration (in nanoseconds) of the media file + + The duration (in nanoseconds) of the media file + + - + @@ -13181,7 +13794,7 @@ GESUriClipAsset - + @@ -13252,7 +13865,9 @@ GESUriClipAsset - NOTE: You should never request such a #GESAsset as they will be created automatically + Asset to create a stream specific #GESSource for a media file. + +NOTE: You should never request such a #GESAsset as they will be created automatically by #GESUriClipAsset-s. @@ -13297,6 +13912,21 @@ by #GESUriClipAsset-s. + + Check if @asset contains a single image + + + %TRUE if the video stream corresponds to an image (i.e. only +contains one frame) + + + + + A #GESUriClipAsset + + + + @@ -13323,173 +13953,39 @@ by #GESUriClipAsset-s. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # 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> -<row> - <entry role="property_type"><link linkend="GstVideoOrientationMethod"><type>GstVideoOrientationMethod</type></link></entry> - <entry role="property_name"><link linkend="GESVideoSource--video-direction">video-direction</link></entry> - <entry>The desired video rotation and flipping.</entry> -</row> -</tbody> -</tgroup> -</informaltable> + Base class for video sources + + Retrieves the natural size of the video stream. The natural size, is +the size at which it will be displayed if no scaling is being applied. + +NOTE: The sources take into account the potential video rotation applied +by the #videoflip element that is inside the source, effects applied on +the clip which potentially also rotate the element are not taken into +account. + + + %TRUE if the object has a natural size, %FALSE otherwise. + + + + + A #GESVideoSource + + + + The natural width of the underlying source + + + + The natural height of the underlying source + + + + @@ -13532,6 +14028,59 @@ You can use the following children properties through the + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13814,6 +14363,9 @@ You can use the following children properties through the + ### Children Properties + + {{ libs/GESVideoTestSource-children-props.md }} @@ -13848,6 +14400,9 @@ You can use the following children properties through the + + + @@ -13875,15 +14430,40 @@ You can use the following children properties through the + A #GESVideoTrack is a default video #GESTrack, with a +#GES_TRACK_TYPE_VIDEO #GESTrack:track-type and "video/x-raw(ANY)" +#GESTrack:caps. + +By default, a video track will have its #GESTrack:restriction-caps +set to "video/x-raw" with the following properties: + +- width: 1280 +- height: 720 +- framerate: 30/1 + +These fields are needed for negotiation purposes, but you can change +their values if you wish. It is advised that you do so using +ges_track_update_restriction_caps() with new values for the fields you +wish to change, and any additional fields you may want to add. Unlike +using ges_track_set_restriction_caps(), this will ensure that these +default fields will at least have some value set. - Creates a new #GESVideoTrack of type #GES_TRACK_TYPE_VIDEO and with generic -raw video caps ("video/x-raw"); + Creates a new video track, with a #GES_TRACK_TYPE_VIDEO +#GESTrack:track-type and "video/x-raw(ANY)" #GESTrack:caps, and +"video/x-raw" #GESTrack:restriction-caps with the properties: + +- width: 1280 +- height: 720 +- framerate: 30/1 + +You should use ges_track_update_restriction_caps() if you wish to +modify these fields, or add additional ones. - A new #GESTrack. + The newly created video track. @@ -13918,11 +14498,8 @@ raw video caps ("video/x-raw"); - Creates a new #GESVideoTransition. - - The newly created -#GESVideoTransition, or %NULL if there was an error. + @@ -14068,6 +14645,9 @@ for later use. + ### Children Properties + + {{ libs/GESVideoUriSource-children-props.md }} @@ -14104,27 +14684,6 @@ for later use. - - - - - - - - - - - - - - - - - - - - - @@ -14193,6 +14752,21 @@ After this call GES should not be used until another ges_init() call. + + Get the best formatter for @uri. It tries to find a formatter +compatible with @uri extension, if none is found, it returns the default +formatter asset. + + + The #GESAsset for the best formatter to save to @uri + + + + + + + + Initialize the GStreamer Editing Service. Call this before any usage of GES. You should take care of initilizing GStreamer before calling this @@ -14260,26 +14834,33 @@ or ges_init_check(). - List all @asset filtering per filter as defined by @filter. -It copies the asset and thus will not be updated in time. + List all the assets in the current cache whose +#GESAsset:extractable-type are of the given type (including +subclasses). + +Note that, since only a #GESExtractable can be extracted from an asset, +using `GES_TYPE_EXTRACTABLE` as @filter will return all the assets in +the current cache. - The list of -#GESAsset the object contains + A list of all +#GESAsset-s currently in the cache whose #GESAsset:extractable-type is +of the @filter type. - Type of assets to list, #GES_TYPE_EXTRACTABLE will list -all assets + The type of object that can be extracted from the asset - + Get the last buffer @playsink showed + Use the "convert-sample" action signal of +#playsink instead. A #GstSample containing the last frame from @@ -14323,7 +14904,7 @@ all assets - Helper macro to retrieve the project from which a #GESTimeline as been extracted + Helper macro to retrieve the project from which @obj was extracted diff --git a/gir-files/Gst-1.0.gir b/gir-files/Gst-1.0.gir index be57e8ad4..defa1873c 100644 --- a/gir-files/Gst-1.0.gir +++ b/gir-files/Gst-1.0.gir @@ -25,6 +25,7 @@ and/or use gtk-doc annotations. --> + A type defining the type of an element factory. @@ -1246,6 +1247,30 @@ MT safe. + + Looks for all elements inside the bin with the given element factory name. +The function recurses inside child bins. The iterator will yield a series of +#GstElement that should be unreffed after use. + +MT safe. Caller owns returned value. + + + a #GstIterator of #GstElement + for all elements in the bin with the given element factory name, + or %NULL. + + + + + a #GstBin + + + + the name of the #GstElementFactory + + + + Looks for all elements inside the bin that implements the given interface. You can safely cast all returned elements to the given interface. @@ -2218,6 +2243,24 @@ contain a concatenation of the memory of @buf1 and the requested region of + + Create a copy of the given buffer. This will only copy the buffer's +data to a newly allocated memory if needed (if the type of memory +requires it), otherwise the underlying data is just referenced. +Check gst_buffer_copy_deep() if you want to force the data +to be copied to newly allocated memory. + + + a new copy of @buf. + + + + + a #GstBuffer. + + + + Create a copy of the given buffer. This will make a newly allocated copy of the data the source buffer contains. @@ -3006,6 +3049,26 @@ See gst_buffer_insert_memory() for more details. + + Increases the refcount of the given buffer by one. + +Note that the refcount affects the writability +of @buf and its metadata, see gst_buffer_is_writable(). +It is important to note that keeping additional references to +GstBuffer instances can potentially increase the number +of memcpy operations in a pipeline. + + + @buf + + + + + a #GstBuffer. + + + + Remove all the memory blocks in @buffer. @@ -3250,6 +3313,20 @@ replaced with @mem. + + Decreases the refcount of the buffer. If the refcount reaches 0, the buffer +with the associated metadata and memory will be freed. + + + + + + + a #GstBuffer. + + + + Clears one or more buffer flags. @@ -3280,6 +3357,31 @@ together to make room for the new block. + + Modifies a pointer to a #GstBuffer to point to a different #GstBuffer. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +buffer is unreffed, the new is reffed). + +Either @nbuf or the #GstBuffer pointed to by @obuf may be %NULL. + + + %TRUE when @obuf was different from @nbuf. + + + + + pointer to a pointer to + a #GstBuffer to be replaced. + + + + pointer to a #GstBuffer that will + replace the buffer pointed to by @obuf. + + + + A set of flags that can be provided to the gst_buffer_copy_into() @@ -3339,8 +3441,8 @@ function to specify which items should be copied. the buffer contains a media specific marker. for - video this is typically the end of a frame boundary, for audio - this is usually the start of a talkspurt. + video this is the end of a frame boundary, for audio + this is the start of a talkspurt. the buffer contains header information that is @@ -3365,8 +3467,8 @@ function to specify which items should be copied. Elements which write to disk or permanent - storage should ensure the data is synced after - writing the contents of this buffer. (Since: 1.6) + storage should ensure the data is synced after + writing the contents of this buffer. (Since: 1.6) This buffer is important and should not be dropped. @@ -3466,6 +3568,22 @@ size of all buffers. + + Create a shallow copy of the given buffer list. This will make a newly +allocated copy of the source list with copies of buffer pointers. The +refcount of buffers pointed to will be increased by one. + + + a new copy of @list. + + + + + a #GstBufferList + + + + Create a copy of the given buffer list. This will make a newly allocated copy of the buffer that the source buffer list contains. @@ -3592,6 +3710,25 @@ A -1 value for @idx will append the buffer at the end. + + Increases the refcount of the given buffer list by one. + +Note that the refcount affects the writability of @list and its data, see +gst_buffer_list_make_writable(). It is important to note that keeping +additional references to GstBufferList instances can potentially increase +the number of memcpy operations in a pipeline. + + + @list + + + + + a #GstBufferList + + + + Remove @length buffers starting from @idx in @list. The following buffers are moved to close the gap. @@ -3614,6 +3751,20 @@ are moved to close the gap. + + Decreases the refcount of the buffer list. If the refcount reaches 0, the +buffer list will be freed. + + + + + + + a #GstBufferList + + + + A function that will be called from gst_buffer_list_foreach(). The @buffer @@ -4881,9 +5032,9 @@ responsible for calling gst_bus_disable_sync_message_emission() as many times as this function is called. While this function looks similar to gst_bus_add_signal_watch(), it is not -exactly the same -- this function enables <emphasis>synchronous</emphasis> emission of +exactly the same -- this function enables *synchronous* emission of signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback -to pop messages off the bus <emphasis>asynchronously</emphasis>. The sync-message signal +to pop messages off the bus *asynchronously*. The sync-message signal comes from the thread of whatever object posted the message; the "message" signal is marshalled to the main thread via the main loop. @@ -6127,7 +6278,13 @@ fixated with gst_structure_fixate(). This function takes ownership of @caps and will call gst_caps_make_writable() on it so you must not use @caps afterwards unless you keep an additional -reference to it with gst_caps_ref(). +reference to it with gst_caps_ref(). + +Note that it is not guaranteed that the returned caps have exactly one +structure. If @caps are empty caps then then returned caps will be +the empty too and contain no structure at all. + +Calling this function with any caps is not allowed. the fixated caps @@ -6571,6 +6728,27 @@ reference to it with gst_caps_ref(). + + Add a reference to a #GstCaps object. + +From this point on, until the caller calls gst_caps_unref() or +gst_caps_make_writable(), it is guaranteed that the caps object will not +change. This means its structures won't change, etc. To use a #GstCaps +object, you must always have a refcount on it -- either the one made +implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with +this function. + + + the same #GstCaps object. + + + + + the #GstCaps to reference + + + + removes the structure with the given index from the list of structures contained in @caps. @@ -6787,7 +6965,11 @@ fixating. This function takes ownership of @caps and will call gst_caps_make_writable() on it if necessary, so you must not use @caps afterwards unless you keep an -additional reference to it with gst_caps_ref(). +additional reference to it with gst_caps_ref(). + +Note that it is not guaranteed that the returned caps have exactly one +structure. If @caps is any or empty caps then then returned caps will be +the same and contain no structure at all. truncated caps @@ -6800,6 +6982,20 @@ additional reference to it with gst_caps_ref(). + + Unref a #GstCaps and and free all its structures and the +structures' values when the refcount reaches 0. + + + + + + + a #GstCaps. + + + + Converts @caps from a string representation. @@ -6817,6 +7013,53 @@ when there are nested #GstCaps / #GstStructure deeper than one level. + + Modifies a pointer to a #GstCaps to point to a different #GstCaps. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +caps is unreffed, the new is reffed). + +Either @new_caps or the #GstCaps pointed to by @old_caps may be %NULL. + + + %TRUE if @new_caps was different from @old_caps + + + + + pointer to a pointer + to a #GstCaps to be replaced. + + + + pointer to a #GstCaps that will + replace the caps pointed to by @old_caps. + + + + + + Modifies a pointer to a #GstCaps to point to a different #GstCaps. This +function is similar to gst_caps_replace() except that it takes ownership +of @new_caps. + + + %TRUE if @new_caps was different from @old_caps + + + + + pointer to a pointer to a #GstCaps to be + replaced. + + + + pointer to a #GstCaps that will + replace the caps pointed to by @old_caps. + + + + #GstCapsFeatures can optionally be set on a #GstCaps to add requirements @@ -9163,6 +9406,10 @@ not be extended or allocated using a custom allocator. some other time source is used (Since: 1.0.5) + + time since Epoch, but using International Atomic Time + as reference (Since 1.18) + #GstContext is a container object used to store contexts like a device @@ -9753,6 +10000,8 @@ or %NULL if the property isn't controlled. + + FIXME(2.0): remove, this is unused @@ -9976,6 +10225,7 @@ this functionality yet. the number of core error types. + @@ -10429,6 +10679,21 @@ Free-function: gst_date_time_unref + + Creates a new #GstDateTime using the time since Jan 1, 1970 specified by +@usecs. The #GstDateTime is in the local timezone. + + + a newly created #GstDateTime + + + + + microseconds from the Unix epoch + + + + Creates a new #GstDateTime using the time since Jan 1, 1970 specified by @secs. The #GstDateTime is in the UTC timezone. @@ -10446,6 +10711,21 @@ Free-function: gst_date_time_unref + + Creates a new #GstDateTime using the time since Jan 1, 1970 specified by +@usecs. The #GstDateTime is in UTC. + + + a newly created #GstDateTime + + + + + microseconds from the Unix epoch + + + + Creates a new #GstDateTime using the date and times in the gregorian calendar in the local timezone. @@ -10870,8 +11150,9 @@ reference count reaches zero, the structure is freed. - + Removes and frees the category and all associated resources. + This function can easily cause memory corruption, don't use it. @@ -11051,6 +11332,10 @@ debugging categories to make them stand out in debugging output. + + we define this to avoid a compiler warning regarding a cast from a function +pointer to a void pointer +(see https://bugzilla.gnome.org/show_bug.cgi?id=309253) @@ -11616,7 +11901,7 @@ This - Get if @monitor is curretly showing all devices, even those from hidden + Get if @monitor is currently showing all devices, even those from hidden providers. @@ -11872,7 +12157,7 @@ know when a device was modified. - the old version of the device that has been udpated + the old version of the device that has been updated @@ -12575,10 +12860,10 @@ application will be requested to stop further media processing. the element that generates the error - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -12600,10 +12885,10 @@ application will be requested to stop further media processing. the element that generates the error - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -12764,6 +13049,10 @@ the hardware is present in the system. + + + + @@ -12853,10 +13142,10 @@ application will be informed. the element that generates the information - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -12881,10 +13170,10 @@ in the associated GstStructure. NULL terminator required. the element that generates the information - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -13007,10 +13296,10 @@ application will be informed. the element that generates the warning - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -13032,10 +13321,10 @@ application will be informed. the element that generates the warning - like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) - error code defined for that domain (see #gstreamer-GstGError) + error code defined for that domain (see [GstGError](gsterror)) the message to display (format string and args enclosed in @@ -14122,6 +14411,39 @@ MT safe. + + Returns the current clock time of the element, as in, the time of the +element's clock, or GST_CLOCK_TIME_NONE if there is no clock. + + + the clock time of the element, or GST_CLOCK_TIME_NONE if there is +no clock. + + + + + a #GstElement. + + + + + + Returns the running time of the element. The running time is the +element's clock time minus its base time. Will return GST_CLOCK_TIME_NONE +if the element has no clock, or if its base time has not been set. + + + the running time of the element, or GST_CLOCK_TIME_NONE if the +element has no clock or its base time has not been set. + + + + + a #GstElement. + + + + Retrieves the factory that was used to create this element. @@ -15517,15 +15839,18 @@ gst_element_set_state() or gst_element_sync_state_with_parent(). + Callback prototype used in #gst_element_call_async + The #GstElement this function has been called against + Data passed in the function where that callback has been passed @@ -16790,6 +17115,66 @@ for sparse streams such as subtitle streams. + + Create a new instant-rate-change event. This event is sent by seek +handlers (e.g. demuxers) when receiving a seek with the +%GST_SEEK_FLAG_INSTANT_RATE_CHANGE and signals to downstream elements that +the playback rate in the existing segment should be immediately multiplied +by the @rate_multiplier factor. + +The flags provided replace any flags in the existing segment, for the +flags within the %GST_SEGMENT_INSTANT_FLAGS set. Other GstSegmentFlags +are ignored and not transferred in the event. + + + the new instant-rate-change event. + + + + + the multiplier to be applied to the playback rate + + + + A new subset of segment flags to replace in segments + + + + + + Create a new instant-rate-sync-time event. This event is sent by the +pipeline to notify elements handling the instant-rate-change event about +the running-time when the new rate should be applied. The running time +may be in the past when elements handle this event, which can lead to +switching artifacts. The magnitude of those depends on the exact timing +of event delivery to each element and the magnitude of the change in +playback rate being applied. + +The @running_time and @upstream_running_time are the same if this +is the first instant-rate adjustment, but will differ for later ones +to compensate for the accumulated offset due to playing at a rate +different to the one indicated in the playback segments. + + + the new instant-rate-sync-time event. + + + + + the new playback rate multiplier to be applied + + + + Running time when the rate change should be applied + + + + The upstream-centric running-time when the + rate change should be applied. + + + + Create a new latency event. The event is sent upstream from the sinks and notifies elements that they should add an additional @latency to the @@ -17312,6 +17697,20 @@ given @uid. + + Copy the event using the event specific copy function. + + + the new event + + + + + The event to copy + + + + Parses a segment @event and copies the #GstSegment into the location given by @segment. @@ -17523,6 +17922,57 @@ valid. + + Extract rate and flags from an instant-rate-change event. + + + + + + + a #GstEvent of type #GST_EVENT_INSTANT_RATE_CHANGE + + + + location in which to store the rate + multiplier of the instant-rate-change event, or %NULL + + + + location in which to store the new + segment flags of the instant-rate-change event, or %NULL + + + + + + Extract the rate multiplier and running times from an instant-rate-sync-time event. + + + + + + + a #GstEvent of type #GST_EVENT_INSTANT_RATE_CHANGE + + + + location where to store the rate of + the instant-rate-sync-time event, or %NULL + + + + location in which to store the running time + of the instant-rate-sync-time event, or %NULL + + + + location in which to store the + upstream running time of the instant-rate-sync-time event, or %NULL + + + + Get the latency in the latency event. @@ -17916,6 +18366,20 @@ want to modify it or store it for later use. + + Increase the refcount of this event. + + + @event (for convenience when doing assignments) + + + + + The event to refcount + + + + All streams that have the same group id are supposed to be played together, i.e. all streams inside a container file should have the @@ -18032,6 +18496,19 @@ MT safe. + + Decrease the refcount of an event, freeing it if the refcount reaches 0. + + + + + + + the event to refcount + + + + Get a writable version of the structure. @@ -18052,6 +18529,71 @@ MT safe. + + Modifies a pointer to a #GstEvent to point to a different #GstEvent. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +event is unreffed, the new one is reffed). + +Either @new_event or the #GstEvent pointed to by @old_event may be %NULL. + + + %TRUE if @new_event was different from @old_event + + + + + pointer to a + pointer to a #GstEvent to be replaced. + + + + pointer to a #GstEvent that will + replace the event pointed to by @old_event. + + + + + + Atomically replace the #GstEvent pointed to by @old_event with %NULL and +return the original event. + + + the #GstEvent that was in @old_event + + + + + pointer to a + pointer to a #GstEvent to be stolen. + + + + + + Modifies a pointer to a #GstEvent to point to a different #GstEvent. This +function is similar to gst_event_replace() except that it takes ownership of +@new_event. + +Either @new_event or the #GstEvent pointed to by @old_event may be %NULL. + + + %TRUE if @new_event was different from @old_event + + + + + pointer to a + pointer to a #GstEvent to be stolen. + + + + pointer to a #GstEvent that will + replace the event pointed to by @old_event. + + + + #GstEventType lists the standard event types that can be sent in a pipeline. @@ -18125,6 +18667,10 @@ Specific custom events are distinguished by the name of the structure. Marks a gap in the datastream. + + Notify downstream that a playback rate override + should be applied as soon as possible. (Since: 1.18) + A quality message. Used to indicate to upstream elements that the downstream elements should adjust their processing @@ -18156,6 +18702,11 @@ Specific custom events are distinguished by the name of the structure. A request to select one or more streams (Since: 1.10) + + Sent by the pipeline to notify elements that handle the + instant-rate-change event about the running-time when + the rate multiplier should be applied (or was applied). (Since: 1.18) + Upstream custom event @@ -18261,7 +18812,7 @@ its real value. Can be used together with #GST_FOURCC_FORMAT to properly output a -#guint32 fourcc value in a printf()-style text message. +#guint32 fourcc value in a printf\()-style text message. @@ -18271,7 +18822,7 @@ its real value. Can be used together with #GST_FOURCC_ARGS to properly output a -#guint32 fourcc value in a printf()-style text message. +#guint32 fourcc value in a printf\()-style text message. |[ printf ("fourcc: %" GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS (fcc)); @@ -20059,6 +20610,7 @@ deciding where to go while developing code. the number of library error types. + @@ -20767,7 +21319,7 @@ from @offset to the end of the memory region. Get the current @size, @offset and @maxsize of @mem. - the current sizes of @mem + the current size of @mem @@ -20933,6 +21485,20 @@ should be done. + + Increase the refcount of this memory. + + + @memory (for convenience when doing assignments) + + + + + The memory to refcount + + + + Resize the memory region. @mem should be writable and offset + size should be less than the maxsize of @mem. @@ -21000,6 +21566,19 @@ copy from @offset to the end of the memory region. + + Decrease the refcount of a memory, freeing it if the refcount reaches 0. + + + + + + + the memory to refcount + + + + Copy @size bytes from @mem starting at @offset and return them wrapped in a @@ -21150,7 +21729,7 @@ shared. This function does not make a copy of the bytes in @mem. - Return the pointer previously retrieved with gst_memory_map() with @info. + Release the pointer previously retrieved with gst_memory_map() with @info. @@ -21167,7 +21746,7 @@ shared. This function does not make a copy of the bytes in @mem. - Return the pointer previously retrieved with gst_memory_map(). + Release the pointer previously retrieved with gst_memory_map(). @@ -21647,6 +22226,29 @@ MT safe. + + Creates a new instant-rate-request message. Elements handling the +instant-rate-change event must post this message. The message is +handled at the pipeline, and allows the pipeline to select the +running time when the rate change should happen and to send an +@GST_EVENT_INSTANT_RATE_SYNC_TIME event to notify the elements +in the pipeline. + + + a newly allocated #GstMessage + + + + + The #GstObject that posted the message + + + + the rate multiplier factor that should be applied + + + + This message can be posted by elements when their latency requirements have changed. @@ -21821,8 +22423,8 @@ optional. The tag list and structure are useful for additional metadata, such as bitrate statistics for the given location. By default, message recipients should treat entries in the order they are -stored. The recipient should therefore try entry #0 first, and if this -entry is not acceptable or working, try entry #1 etc. Senders must make +stored. The recipient should therefore try entry \#0 first, and if this +entry is not acceptable or working, try entry \#1 etc. Senders must make sure that they add entries in this order. However, recipients are free to ignore the order and pick an entry that is "best" for them. One example would be a recipient that scans the entries for the one with the highest @@ -22342,6 +22944,22 @@ list and structure are transferred to the message. + + Creates a copy of the message. Returns a copy of the message. + + + a new copy of @msg. + +MT safe + + + + + the message to copy + + + + @@ -22782,6 +23400,23 @@ The returned structure must not be freed. + + Parses the rate_multiplier from the instant-rate-request message. + + + + + + + a #GstMessage of type %GST_MESSAGE_INSTANT_RATE_REQUEST + + + + return location for the rate, or %NULL + + + + Extracts the new clock from the GstMessage. The clock object returned remains valid until the message is freed. @@ -23413,6 +24048,20 @@ The returned structure must not be freed. + + Convenience macro to increase the reference count of the message. + + + @msg (for convenience when doing assignments) + + + + + the message to ref + + + + Configures the buffering stats values in @message. @@ -23621,6 +24270,20 @@ GstTask object but other objects might be added in the future. + + Convenience macro to decrease the reference count of the message, possibly +freeing it. + + + + + + + the message to unref + + + + Get a writable version of the structure. @@ -23641,6 +24304,31 @@ MT safe. + + Modifies a pointer to a #GstMessage to point to a different #GstMessage. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +message is unreffed, the new one is reffed). + +Either @new_message or the #GstMessage pointed to by @old_message may be %NULL. + + + %TRUE if @new_message was different from @old_message + + + + + pointer to a + pointer to a #GstMessage to be replaced. + + + + pointer to a #GstMessage that will + replace the message pointed to by @old_message. + + + + The different message types that are available. @@ -23656,7 +24344,9 @@ flushing seek in the pipeline, which will undo the EOS state again. an error occurred. When the application receives an error message it should stop playback of the pipeline and not assume that more -data will be played. +data will be played. It is possible to specify a redirection url to the error +messages by setting a `redirect-location` field into the error message, application +or high level bins might use the information as required. a warning occurred. @@ -23814,6 +24504,11 @@ was updated. Message indicating a #GstDevice was changed a #GstDeviceProvider (Since: 1.16) + + + Message sent by elements to request the + running time from the pipeline when an instant rate change should + be applied (which may be in the past when the answer arrives). (Since: 1.18) mask for all of the above messages. @@ -24451,7 +25146,7 @@ a call to gst_mini_object_set_qdata() with the same @quark. This function gets back user data pointers stored via gst_mini_object_set_qdata() -and removes the data from @object without invoking its destroy() function (if +and removes the data from @object without invoking its `destroy()` function (if any was set). @@ -26462,6 +27157,13 @@ controlled over time. This hint is used by the GstController. + + Use this flag on GObject properties of GstObject to indicate that +during `gst-inspect` and friends, the default value should be used +as default instead of the current value. + + + Use this flag on GObject properties of GstElements to indicate that they can be changed when the element is in the PAUSED or lower state. @@ -26751,7 +27453,7 @@ which takes a direction and a name as an argument. If the name is %NULL, then a guaranteed unique name will be assigned to it. A #GstElement creating a pad will typically use the various -gst_pad_set_*_function() calls to register callbacks for events, queries or +gst_pad_set_*_function\() calls to register callbacks for events, queries or dataflow on the pads. gst_pad_get_parent() will retrieve the #GstElement that owns the pad. @@ -27464,6 +28166,23 @@ MT safe. + + If there is a single internal link of the given pad, this function will +return it. Otherwise, it will return NULL. + + + a #GstPad, or %NULL if @pad has none +or more than one internal links. Unref returned pad with +gst_object_unref(). + + + + + the #GstPad to get the internal link of. + + + + Returns a new reference of the sticky event of type @event_type from the event. @@ -30762,15 +31481,15 @@ see gst_pipeline_set_delay() for more information on this option. GStreamer is extensible, so #GstElement instances can be loaded at runtime. -A plugin system can provide one or more of the basic -<application>GStreamer</application> #GstPluginFeature subclasses. +A plugin system can provide one or more of the basic GStreamer +#GstPluginFeature subclasses. -A plugin should export a symbol <symbol>gst_plugin_desc</symbol> that is a +A plugin should export a symbol `gst_plugin_desc` that is a struct of type #GstPluginDesc. the plugin loader will check the version of the core library the plugin was linked against and will create a new #GstPlugin. It will then call the #GstPluginInitFunc function that was provided in the -<symbol>gst_plugin_desc</symbol>. +`gst_plugin_desc`. Once you have a handle to a #GstPlugin (e.g. from the #GstRegistry), you can add any object that subclasses #GstPluginFeature. @@ -31661,7 +32380,7 @@ register each #GstPluginFeature. A #GstPoll keeps track of file descriptors much like fd_set (used with -select()) or a struct pollfd array (used with poll()). Once created with +select ()) or a struct pollfd array (used with poll ()). Once created with gst_poll_new(), the set can be used to wait for file descriptors to be readable and/or writable. It is possible to make this wait be controlled by specifying %TRUE for the @controllable flag when creating the set (or @@ -32747,7 +33466,7 @@ application of the status of asynchronous tasks. The #GstPromise object implements the container for values that may be available later. i.e. a Future or a Promise in -<ulink url="https://en.wikipedia.org/wiki/Futures_and_promises">https://en.wikipedia.org/wiki/Futures_and_promises</ulink> +<https://en.wikipedia.org/wiki/Futures_and_promises>. As with all Future/Promise-like functionality, there is the concept of the producer of the value and the consumer of the value. @@ -33636,6 +34355,22 @@ start position of the array should be inferior to @start. + + Copies the given query using the copy function of the parent #GstStructure. + +Free-function: gst_query_unref + + + a new copy of @q. + + + + + a #GstQuery to copy. + + + + Check if @query has metadata @api set. When this function returns %TRUE, @index will contain the index where the requested API and the parameters @@ -35021,6 +35756,20 @@ to permanent or not. + + Decreases the refcount of the query. If the refcount reaches 0, the query +will be freed. + + + + + + + a #GstQuery to decrease the refcount of. + + + + Get the structure of a query. This method should be called with a writable @query so that the returned structure is guaranteed to be writable. @@ -35038,6 +35787,31 @@ to permanent or not. + + Modifies a pointer to a #GstQuery to point to a different #GstQuery. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +query is unreffed, the new one is reffed). + +Either @new_query or the #GstQuery pointed to by @old_query may be %NULL. + + + %TRUE if @new_query was different from @old_query + + + + + pointer to a pointer to a + #GstQuery to be replaced. + + + + pointer to a #GstQuery that will + replace the query pointed to by @old_query. + + + + Standard predefined Query types @@ -36045,6 +36819,7 @@ both reading and writing, or either (but unspecified which). the number of resource error types. + @@ -36078,6 +36853,10 @@ This can only be used on pointers to GstSegment structures. + + + + A value which is guaranteed to never be returned by gst_util_seqnum_next(). @@ -36463,6 +37242,21 @@ Free-function: gst_sample_unref + + Create a copy of the given sample. This will also make a newly allocated +copy of the data the source sample contains. + + + a new copy of @buf. + + + + + a #GstSample. + + + + Get the buffer associated with @sample @@ -36544,6 +37338,20 @@ Free-function: gst_sample_unref + + Increases the refcount of the given sample by one. + + + @sample + + + + + a #GstSample + + + + Set the buffer associated with @sample. @sample must be writable. @@ -36630,6 +37438,20 @@ and @info must not have a parent set already. + + Decreases the refcount of the sample. If the refcount reaches 0, the +sample will be freed. + + + + + + + a #GstSample + + + + The different scheduling flags. @@ -36673,6 +37495,16 @@ When this message is posted, it is possible to send a new seek event to continue playback. With this seek method it is possible to perform seamless looping or simple linear editing. +When only changing the playback rate and not the direction, the +%GST_SEEK_FLAG_INSTANT_RATE_CHANGE flag can be used for a non-flushing seek +to signal that the rate change should be applied immediately. This requires +special support in the seek handlers (e.g. demuxers) and any elements +synchronizing to the clock, and in general can't work in all cases (for example +UDP streaming where the delivery rate is controlled by a remote server). The +instant-rate-change mode supports changing the trickmode-related GST_SEEK_ flags, +but can't be used in conjunction with other seek flags that affect the new +playback position - as the playback position will not be changing. + When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode playback, the %GST_SEEK_FLAG_TRICKMODE flag can be used to instruct decoders and demuxers to adjust the playback rate by skipping frames. This can improve @@ -36750,6 +37582,19 @@ elements that handle them. playback, request that audio decoder elements skip decoding and output only gap events or silence. (Since: 1.6) + + When doing fast forward or fast reverse + playback, request that elements only decode keyframes and + forward predicted frames and skip all other content (for example + B-Frames), for formats that have keyframes and forward predicted + frames. (Since: 1.18) + + + Signals that a rate change should be + applied immediately. Only valid if start/stop position + are GST_CLOCK_TIME_NONE, the playback direction does not change + and the seek is not flushing. (Since: 1.18) + The different types of seek events. When constructing a seek event with @@ -37450,15 +38295,25 @@ values of the seek flags. Decode only keyframes, where possible (Since: 1.6) + + Decode only keyframes or forward + predicted frames, where possible (Since: 1.18) + Do not decode any audio, where possible (Since: 1.6) + + Try to retrieve the minimum information + available, which may be none on some platforms + (Since: 1.18) + - Try to retrieve as much information as - possible when getting the stack trace + Try to retrieve as much information as possible, + including source information when getting the + stack trace @@ -38170,6 +39025,7 @@ can't be decrypted because no suitable key is available. the number of stream error types. + @@ -38305,6 +39161,30 @@ gst_value_serialize() and their counterparts. + + Creates a #GstStructure from a string representation. +If end is not %NULL, a pointer to the place inside the given string +where parsing ended will be returned. + +Free-function: gst_structure_free + + + a new #GstStructure or %NULL + when the string could not be parsed. Free with + gst_structure_free() after use. + + + + + a string representation of a #GstStructure. + + + + pointer to store the end of the string in. + + + + Creates a new #GstStructure with the given name. Parses the list of variable arguments and sets fields to the values listed. @@ -38704,7 +39584,7 @@ Variable arguments should be in the form field name, field type The last variable argument should be %NULL. For refcounted (mini)objects you will receive a new reference which -you must release with a suitable _unref() when no longer needed. For +you must release with a suitable _unref\() when no longer needed. For strings and boxed types you will receive a copy which you will need to release with either g_free() or the suitable function for the boxed type. @@ -39302,7 +40182,7 @@ more efficient since it saves the string-to-quark lookup in the global quark hashtable. For refcounted (mini)objects you will receive a new reference which -you must release with a suitable _unref() when no longer needed. For +you must release with a suitable _unref\() when no longer needed. For strings and boxed types you will receive a copy which you will need to release with either g_free() or the suitable function for the boxed type. @@ -39894,27 +40774,29 @@ Free-function: g_free - - Creates a #GstStructure from a string representation. -If end is not %NULL, a pointer to the place inside the given string -where parsing ended will be returned. + + Atomically modifies a pointer to point to a new structure. +The #GstStructure @oldstr_ptr is pointing to is freed and +@newstr is taken ownership over. -Free-function: gst_structure_free +Either @newstr and the value pointed to by @oldstr_ptr may be %NULL. + +It is a programming error if both @newstr and the value pointed to by +@oldstr_ptr refer to the same, non-%NULL structure. - - a new #GstStructure or %NULL - when the string could not be parsed. Free with - gst_structure_free() after use. - + + %TRUE if @newstr was different from @oldstr_ptr + - - a string representation of a #GstStructure. - + + pointer to a place of + a #GstStructure to take + - - pointer to store the end of the string in. - + + a new #GstStructure + @@ -40377,7 +41259,7 @@ example are multiple pieces of a concerto. (string) image (sample) (sample taglist should specify the content type and preferably -also set "image-type" field as #GstTagImageType) +also set "image-type" field as `GstTagImageType`) @@ -40424,7 +41306,7 @@ interpretations of another existing piece (string) ISO-639-2 or ISO-639-1 code for the language the content is in (string) There is utility API in libgsttag in gst-plugins-base to obtain a translated -language name from the language code: gst_tag_get_language_name() +language name from the language code: `gst_tag_get_language_name()` @@ -40471,7 +41353,7 @@ is hosted) (string) - <ulink url="http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name">Midi note number</ulink> + [Midi note number](http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name) of the audio track. This is useful for sample instruments and in particular for multi-samples. @@ -40750,7 +41632,7 @@ The higher the value, the more the user likes this media - Convert a #GTimeVal to a #GstClockTime. + Convert a GTimeVal to a #GstClockTime. @@ -40829,7 +41711,7 @@ printf("%" GST_TIME_FORMAT "\n", GST_TIME_ARGS(ts)); - Convert a #GstClockTime to a #GTimeVal + Convert a #GstClockTime to a GTimeVal > on 32-bit systems, a timeval has a range of only 2^32 - 1 seconds, > which is about 68 years. Expect trouble if you want to schedule stuff @@ -41236,6 +42118,28 @@ Free-function: gst_tag_list_unref + + Creates a new #GstTagList as a copy of the old @taglist. The new taglist +will have a refcount of 1, owned by the caller, and will be writable as +a result. + +Note that this function is the semantic equivalent of a gst_tag_list_ref() +followed by a gst_tag_list_make_writable(). If you only want to hold on to a +reference to the data, you should use gst_tag_list_ref(). + +When you are finished with the taglist, call gst_tag_list_unref() on it. + + + the new #GstTagList + + + + + a #GstTagList. + + + + Calls the given function for each tag inside the tag list. Note that if there is no tag, the function won't be called at all. @@ -42122,6 +43026,26 @@ be non-%NULL and non-empty. + + Add a reference to a #GstTagList mini object. + +From this point on, until the caller calls gst_tag_list_unref() or +gst_tag_list_make_writable(), it is guaranteed that the taglist object will +not change. To use a #GstTagList object, you must always have a refcount on +it -- either the one made implicitly by e.g. gst_tag_list_new(), or via +taking one explicitly with this function. + + + the same #GstTagList mini object. + + + + + the #GstTagList to reference + + + + Removes the given tag from the taglist. @@ -42173,6 +43097,19 @@ of a taglist is stream scope. + + Unref a #GstTagList, and and free all its memory when the refcount reaches 0. + + + + + + + a #GstTagList. + + + + Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated @@ -42227,64 +43164,14 @@ e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a In the table below this is shown for the cases that a tag exists in the list (A) or does not exists (!A) and combinations thereof. -<table frame="all" colsep="1" rowsep="1"> - <title>merge mode</title> - <tgroup cols='5' align='left'> - <thead> - <row> - <entry>merge mode</entry> - <entry>A + B</entry> - <entry>A + !B</entry> - <entry>!A + B</entry> - <entry>!A + !B</entry> - </row> - </thead> - <tbody> - <row> - <entry>REPLACE_ALL</entry> - <entry>B</entry> - <entry>-</entry> - <entry>B</entry> - <entry>-</entry> - </row> - <row> - <entry>REPLACE</entry> - <entry>B</entry> - <entry>A</entry> - <entry>B</entry> - <entry>-</entry> - </row> - <row> - <entry>APPEND</entry> - <entry>A, B</entry> - <entry>A</entry> - <entry>B</entry> - <entry>-</entry> - </row> - <row> - <entry>PREPEND</entry> - <entry>B, A</entry> - <entry>A</entry> - <entry>B</entry> - <entry>-</entry> - </row> - <row> - <entry>KEEP</entry> - <entry>A</entry> - <entry>A</entry> - <entry>B</entry> - <entry>-</entry> - </row> - <row> - <entry>KEEP_ALL</entry> - <entry>A</entry> - <entry>A</entry> - <entry>-</entry> - <entry>-</entry> - </row> - </tbody> - </tgroup> -</table> +| merge mode | A + B | A + !B | !A + B | !A + !B | +| ----------- | ----- | ------ | ------ | ------- | +| REPLACE_ALL | B | ø | B | ø | +| REPLACE | B | A | B | ø | +| APPEND | A, B | A | B | ø | +| PREPEND | B, A | A | B | ø | +| KEEP | A | A | B | ø | +| KEEP_ALL | A | A | ø | ø | undefined merge mode @@ -42751,6 +43638,23 @@ MT safe. + + Resume @task in case it was paused. If the task was stopped, it will +remain in that state and this function will return %FALSE. + + + %TRUE if the task could be resumed. + +MT safe. + + + + + The #GstTask to resume + + + + Call @enter_func when the task function of @task is entered. @user_data will be passed to @enter_func and @notify will be called when @user_data is no @@ -43923,6 +44827,29 @@ gst_tracer_register(). Modules can attach to various hook-types - see gst_tracing_register_hook(). When invoked they receive hook specific contextual data, which they must not modify. + + Create a new tracer-factory capable of instantiating objects of the +@type and add the factory to @plugin. + + + %TRUE, if the registering succeeded, %FALSE on error + + + + + A #GstPlugin, or %NULL for a static typefind function + + + + The name for registering + + + + GType of tracer to register + + + + @@ -43997,6 +44924,67 @@ the factory is not loaded. Tracing modules will create instances of this class to announce the data they will log and create a log formatter. + + Create a new tracer record. The record instance can be used to efficiently +log entries using gst_tracer_record_log(). + +The @name without the ".class" suffix will be used for the log records. +There must be fields for each value that gets logged where the field name is +the value name. The field must be a #GstStructure describing the value. The +sub structure must contain a field called 'type' of %G_TYPE_GTYPE that +contains the GType of the value. The resulting #GstTracerRecord will take +ownership of the field structures. + +The way to deal with optional values is to log an additional boolean before +the optional field, that if %TRUE signals that the optional field is valid +and %FALSE signals that the optional field should be ignored. One must still +log a placeholder value for the optional field though. Please also note, that +pointer type values must not be NULL - the underlying serialisation can not +handle that right now. + +> Please note that this is still under discussion and subject to change. + + + a new #GstTracerRecord + + + + + name of new record, must end on ".class". + + + + name of first field to set + + + + additional arguments + + + + + + Serialzes the trace event into the log. + +Right now this is using the gstreamer debug log with the level TRACE (7) and +the category "GST_TRACER". + +> Please note that this is still under discussion and subject to change. + + + + + + + the tracer-record + + + + the args as described in the spec- + + + + @@ -44462,6 +45450,7 @@ in doing a reliable typefind. the URI references + @@ -45803,17 +46792,17 @@ determine a order for the two provided values. - + The micro version of GStreamer at compile time: - + The minor version of GStreamer at compile time: - + The nano version of GStreamer at compile time: Actual releases have 0, GIT versions have 1, prerelease versions have 2-... @@ -45887,6 +46876,24 @@ has the index @index. + + Initializes and pre-allocates a #GValue of type #GST_VALUE_ARRAY. + + + The #GValue structure that has been passed in + + + + + A zero-filled (uninitialized) #GValue structure + + + + The number of entries to pre-allocate in the array + + + + Prepends @prepend_value to the GstValueArray in @value. @@ -46033,6 +47040,24 @@ has the index @index. + + Initializes and pre-allocates a #GValue of type #GST_VALUE_LIST. + + + The #GValue structure that has been passed in + + + + + A zero-filled (uninitialized) #GValue structure + + + + The number of entries to pre-allocate in the list + + + + Merges copies of @value1 and @value2. Values that are not of type #GST_TYPE_LIST are treated as if they were lists of length 1. @@ -46331,6 +47356,31 @@ you have an additional reference to it. + + Modifies a pointer to a #GstBuffer to point to a different #GstBuffer. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +buffer is unreffed, the new is reffed). + +Either @nbuf or the #GstBuffer pointed to by @obuf may be %NULL. + + + %TRUE when @obuf was different from @nbuf. + + + + + pointer to a pointer to + a #GstBuffer to be replaced. + + + + pointer to a #GstBuffer that will + replace the buffer pointed to by @obuf. + + + + Calculates the linear regression of the values @xy and places the result in @m_num, @m_denom, @b and @xbase, representing the function @@ -46452,6 +47502,53 @@ also: gst_caps_ref(). + + Modifies a pointer to a #GstCaps to point to a different #GstCaps. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +caps is unreffed, the new is reffed). + +Either @new_caps or the #GstCaps pointed to by @old_caps may be %NULL. + + + %TRUE if @new_caps was different from @old_caps + + + + + pointer to a pointer + to a #GstCaps to be replaced. + + + + pointer to a #GstCaps that will + replace the caps pointed to by @old_caps. + + + + + + Modifies a pointer to a #GstCaps to point to a different #GstCaps. This +function is similar to gst_caps_replace() except that it takes ownership +of @new_caps. + + + %TRUE if @new_caps was different from @old_caps + + + + + pointer to a pointer to a #GstCaps to be + replaced. + + + + pointer to a #GstCaps that will + replace the caps pointed to by @old_caps. + + + + Clears a reference to a #GstMiniObject. @@ -46539,6 +47636,7 @@ returned. + @@ -46613,9 +47711,10 @@ dot format. To aid debugging applications one can use this method to write out the whole network of gstreamer elements that form the pipeline into an dot file. This file can be processed with graphviz to get an image. -<informalexample><programlisting> + +``` shell dot -Tpng -oimage.png graph_lowlevel.dot -</programlisting></informalexample> +``` @@ -46730,8 +47829,8 @@ present, else %NULL. - A set of #GstStackTraceFlags to determine how the stack -trace should look like. Pass 0 to retrieve a minimal backtrace. + A set of #GstStackTraceFlags to determine how the stack trace should +look like. Pass #GST_STACK_TRACE_SHOW_NONE to retrieve a minimal backtrace. @@ -46858,6 +47957,48 @@ gst_debug_remove_log_function(gst_debug_log_default); + + Returns the string representation for the specified debug log message +formatted in the same way as gst_debug_log_default() (the default handler), +without color. The purpose is to make it easy for custom log output +handlers to get a log output that is identical to what the default handler +would write out. + + + + + + + category to log + + + + level of the message + + + + the file that emitted the message, usually the __FILE__ identifier + + + + the function that emitted the message + + + + the line from that the message was emitted, usually __LINE__ + + + + the object this message relates to, + or %NULL if none + + + + the actual message + + + + Logs the given message using the currently registered debugging handlers. @@ -47107,15 +48248,18 @@ After this call GStreamer (including this method) should not be used anymore. + Registers a new #GstDynamicTypeFactory in the registry + The #GstPlugin to register @dyn_type for + The #GType to register dynamically @@ -47247,6 +48391,71 @@ otherwise be made using gst_event_copy(). + + Modifies a pointer to a #GstEvent to point to a different #GstEvent. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +event is unreffed, the new one is reffed). + +Either @new_event or the #GstEvent pointed to by @old_event may be %NULL. + + + %TRUE if @new_event was different from @old_event + + + + + pointer to a + pointer to a #GstEvent to be replaced. + + + + pointer to a #GstEvent that will + replace the event pointed to by @old_event. + + + + + + Atomically replace the #GstEvent pointed to by @old_event with %NULL and +return the original event. + + + the #GstEvent that was in @old_event + + + + + pointer to a + pointer to a #GstEvent to be stolen. + + + + + + Modifies a pointer to a #GstEvent to point to a different #GstEvent. This +function is similar to gst_event_replace() except that it takes ownership of +@new_event. + +Either @new_event or the #GstEvent pointed to by @old_event may be %NULL. + + + %TRUE if @new_event was different from @old_event + + + + + pointer to a + pointer to a #GstEvent to be stolen. + + + + pointer to a #GstEvent that will + replace the event pointed to by @old_event. + + + + Gets the #GstEventTypeFlags associated with @type. @@ -47295,7 +48504,7 @@ as well. Before converting @filename into an URI, it will be prefixed by the current working directory if it is a relative path, and then the path will be canonicalised so that it doesn't contain any './' or '../' segments. -On Windows #filename should be in UTF-8 encoding. +On Windows @filename should be in UTF-8 encoding. newly-allocated URI string, or NULL on error. The caller must @@ -47640,8 +48849,10 @@ threading system as one of the very first things in your program + Checks if @obj is a #GstCapsFeatures + %TRUE if @obj is a #GstCapsFeatures %FALSE otherwise @@ -47660,20 +48871,24 @@ or gst_init_check(). + + Create a #GstStructure to be used with #gst_element_message_full_with_details + Name of the first field to set + variable arguments in the same form as #GstStructure @@ -47752,6 +48967,31 @@ returned. + + Modifies a pointer to a #GstMessage to point to a different #GstMessage. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +message is unreffed, the new one is reffed). + +Either @new_message or the #GstMessage pointed to by @old_message may be %NULL. + + + %TRUE if @new_message was different from @old_message + + + + + pointer to a + pointer to a #GstMessage to be replaced. + + + + pointer to a #GstMessage that will + replace the message pointed to by @old_message. + + + + Get a printable name for the given message type. Do not modify or free. @@ -48233,6 +49473,7 @@ instance_init function. + @@ -48324,7 +49565,10 @@ yourself). Create a new pipeline based on command line syntax. Please note that you might get a return value that is not %NULL even though the @error is set. In this case there was a recoverable parsing error and you -can try to play the pipeline. +can try to play the pipeline. + +To create a sub-pipeline (bin) for embedding into an existing pipeline +use gst_parse_bin_from_description(). a new element on success, %NULL on @@ -48344,7 +49588,10 @@ can try to play the pipeline. Create a new pipeline based on command line syntax. Please note that you might get a return value that is not %NULL even though the @error is set. In this case there was a recoverable parsing error and you -can try to play the pipeline. +can try to play the pipeline. + +To create a sub-pipeline (bin) for embedding into an existing pipeline +use gst_parse_bin_from_description_full(). a new element on success, %NULL on @@ -48650,6 +49897,7 @@ protection system that is to be checked. + @@ -48702,6 +49950,31 @@ checked. + + Modifies a pointer to a #GstQuery to point to a different #GstQuery. The +modification is done atomically (so this is useful for ensuring thread safety +in some cases), and the reference counts are updated appropriately (the old +query is unreffed, the new one is reffed). + +Either @new_query or the #GstQuery pointed to by @old_query may be %NULL. + + + %TRUE if @new_query was different from @old_query + + + + + pointer to a pointer to a + #GstQuery to be replaced. + + + + pointer to a #GstQuery that will + replace the query pointed to by @old_query. + + + + Gets the #GstQueryTypeFlags associated with @type. @@ -48745,6 +50018,7 @@ checked. + @@ -48759,6 +50033,7 @@ checked. + @@ -48840,18 +50115,21 @@ the GStreamer core. See gst_segtrap_is_enabled() for more information. + + + @@ -48870,27 +50148,29 @@ the GStreamer core. See gst_segtrap_is_enabled() for more information. - - Creates a #GstStructure from a string representation. -If end is not %NULL, a pointer to the place inside the given string -where parsing ended will be returned. + + Atomically modifies a pointer to point to a new structure. +The #GstStructure @oldstr_ptr is pointing to is freed and +@newstr is taken ownership over. -Free-function: gst_structure_free +Either @newstr and the value pointed to by @oldstr_ptr may be %NULL. + +It is a programming error if both @newstr and the value pointed to by +@oldstr_ptr refer to the same, non-%NULL structure. - - a new #GstStructure or %NULL - when the string could not be parsed. Free with - gst_structure_free() after use. - + + %TRUE if @newstr was different from @oldstr_ptr + - - a string representation of a #GstStructure. - + + pointer to a place of + a #GstStructure to take + - - pointer to store the end of the string in. - + + a new #GstStructure + @@ -49248,7 +50528,42 @@ even from dynamically loaded plugins.) + + Get a list of all active tracer objects owned by the tracing framework for +the entirety of the run-time of the process or till gst_deinit() is called. + + + A #GList of +#GstTracer objects + + + + + + + Register @func to be called when the trace hook @detail is getting invoked. +Use %NULL for @detail to register to all hooks. + + + + + + + the tracer + + + + the detailed hook + + + + the callback + + + + + @@ -49349,6 +50664,7 @@ Free-function: g_free + @@ -49713,10 +51029,12 @@ the result in @res_n and @res_d. + @value casted to #guint64 + The #gdouble value to convert guint64 double @@ -49808,10 +51126,12 @@ overflow back to 0 at some point. + @value casted to #gdouble + The #guint64 value to convert to double diff --git a/gir-files/GstApp-1.0.gir b/gir-files/GstApp-1.0.gir index daa67142e..18b6a1db3 100644 --- a/gir-files/GstApp-1.0.gir +++ b/gir-files/GstApp-1.0.gir @@ -294,7 +294,7 @@ filled. Check if appsink will emit the "new-preroll" and "new-sample" signals. - %TRUE if @appsink is emiting the "new-preroll" and "new-sample" + %TRUE if @appsink is emitting the "new-preroll" and "new-sample" signals. @@ -1032,7 +1032,7 @@ mode when implementing various network protocols or hardware devices. The pull mode, in which the need-data signal triggers the next push-buffer call. This mode is typically used in the "random-access" stream-type. Use this -mode for file access or other randomly accessable sources. In this mode, a +mode for file access or other randomly accessible sources. In this mode, a buffer of exactly the amount of bytes given by the need-data signal should be pushed into appsrc. @@ -1052,7 +1052,7 @@ occurs or the state of the appsrc has gone through READY. element is the last buffer of the stream. - #GST_FLOW_OK when the EOS was successfuly queued. + #GST_FLOW_OK when the EOS was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. @@ -1096,9 +1096,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1121,9 +1121,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer list was successfuly queued. + #GST_FLOW_OK when the buffer list was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1150,9 +1150,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1186,7 +1186,7 @@ extracted element is the last buffer of the stream. - #GST_FLOW_OK when the EOS was successfuly queued. + #GST_FLOW_OK when the EOS was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. @@ -1328,9 +1328,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1353,9 +1353,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer list was successfuly queued. + #GST_FLOW_OK when the buffer list was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1382,9 +1382,9 @@ When the block property is TRUE, this function can block until free space becomes available in the queue. - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1843,9 +1843,9 @@ gst_app_src_set_callbacks(). - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1864,7 +1864,7 @@ gst_app_src_set_callbacks(). - #GST_FLOW_OK when the EOS was successfuly queued. + #GST_FLOW_OK when the EOS was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. @@ -1880,9 +1880,9 @@ gst_app_src_set_callbacks(). - #GST_FLOW_OK when the buffer was successfuly queued. + #GST_FLOW_OK when the buffer was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. @@ -1902,9 +1902,9 @@ extracted - #GST_FLOW_OK when the buffer list was successfuly queued. + #GST_FLOW_OK when the buffer list was successfully queued. #GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. -#GST_FLOW_EOS when EOS occured. +#GST_FLOW_EOS when EOS occurred. diff --git a/gir-files/GstAudio-1.0.gir b/gir-files/GstAudio-1.0.gir index 850819c77..0ea4d0543 100644 --- a/gir-files/GstAudio-1.0.gir +++ b/gir-files/GstAudio-1.0.gir @@ -324,14 +324,14 @@ and/or use gtk-doc annotations. --> - #GST_TYPE_AUDIO_DITHER_METHOD, The dither method to use when + #GstAudioDitherMethod, The dither method to use when changing bit depth. Default is #GST_AUDIO_DITHER_NONE. - #GST_TYPE_VALUE_LIST, The channel mapping matrix. + #GST_TYPE_LIST, The channel mapping matrix. The matrix coefficients must be between -1 and 1: the number of rows is equal to the number of output channels and the number of columns is equal to the @@ -362,7 +362,7 @@ g_value_unset (&v); - #GST_TYPE_AUDIO_NOISE_SHAPING_METHOD, The noise shaping method to use + #GstAudioNoiseShapingMethod, The noise shaping method to use to mask noise from quantization errors. Default is #GST_AUDIO_NOISE_SHAPING_NONE. @@ -376,7 +376,7 @@ Default is 1 - #GST_TYPE_AUDIO_RESAMPLER_METHOD, The resampler method to use when + #GstAudioResamplerMethod, The resampler method to use when changing sample rates. Default is #GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL. @@ -957,7 +957,7 @@ See #GST_AUDIO_RESAMPLER_OPT_CUBIC_B for some more common values - GST_TYPE_AUDIO_RESAMPLER_INTERPOLATION: how the filter coeficients should be + GST_TYPE_AUDIO_RESAMPLER_INTERPOLATION: how the filter coefficients should be interpolated. GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC is default. @@ -1219,6 +1219,10 @@ downstream specifies a range or a set of acceptable rates). + + Output block size in nanoseconds, expressed as a fraction. + + @@ -2733,7 +2737,7 @@ This is expressed in caps by having a single channel and no channel mask. This is expressed in caps by having a channel mask with no bits set. As another special case it is allowed to have two channels without a channel mask. -This implicitely means that this is a stereo stream with a front left and front right +This implicitly means that this is a stereo stream with a front left and front right channel. used for position-less channels, e.g. @@ -3043,7 +3047,7 @@ The object can perform conversion of: Create a new #GstAudioConverter that is able to convert between @in and @out audio formats. -@config contains extra configuration options, see #GST_AUDIO_CONVERTER_OPT_* +@config contains extra configuration options, see `GST_AUDIO_CONVERTER_OPT_*` parameters for details about the options and values. @@ -3306,7 +3310,7 @@ If the parameters in @config can not be set exactly, this function returns %FALSE and will try to update as much state as possible. The new state can then be retrieved and refined with gst_audio_converter_get_config(). -Look at the #GST_AUDIO_CONVERTER_OPT_* fields to check valid configuration +Look at the `GST_AUDIO_CONVERTER_OPT_*` fields to check valid configuration option and values. @@ -3732,7 +3736,7 @@ invalidated by a call to this function. a #GstAudioDecoder - + decoded data @@ -3766,7 +3770,7 @@ invalidated by a call to this function. a #GstAudioDecoder - + decoded data @@ -5075,7 +5079,7 @@ may be invalidated by a call to this function. a #GstAudioEncoder - + encoded data @@ -6724,7 +6728,7 @@ meta as well as extracting it. When the source has a smaller depth than the target format, set the least significant bits of the target - to 0. This is likely sightly faster but less accurate. When this flag + to 0. This is likely slightly faster but less accurate. When this flag is not specified, the most significant bits of the source are duplicated in the least significant bits of the destination. @@ -6900,7 +6904,7 @@ frames. @in_frames are given to @resampler. - The number of frames that would be availabe after giving + The number of frames that would be available after giving @in_frames as input to @resampler. @@ -7080,11 +7084,11 @@ for @quality in @options. linear interpolation of the - filter coeficients. + filter coefficients. cubic interpolation of the - filter coeficients. + filter coefficients. @@ -7242,7 +7246,7 @@ FALSE on error. - Fill the ringbuffer with silence. + Clear all samples from the ringbuffer. MT safe. @@ -7335,11 +7339,11 @@ usually less than the segment size but can be bigger when the implementation uses another internal buffer between the audio device. -For playback ringbuffers this is the amount of samples transfered from the +For playback ringbuffers this is the amount of samples transferred from the ringbuffer to the device but still not played. For capture ringbuffers this is the amount of samples in the device that are -not yet transfered to the ringbuffer. +not yet transferred to the ringbuffer. The number of samples queued in the audio device. @@ -7531,7 +7535,7 @@ MT safe. - Fill the ringbuffer with silence. + Clear all samples from the ringbuffer. MT safe. @@ -7655,11 +7659,11 @@ usually less than the segment size but can be bigger when the implementation uses another internal buffer between the audio device. -For playback ringbuffers this is the amount of samples transfered from the +For playback ringbuffers this is the amount of samples transferred from the ringbuffer to the device but still not played. For capture ringbuffers this is the amount of samples in the device that are -not yet transfered to the ringbuffer. +not yet transferred to the ringbuffer. The number of samples queued in the audio device. @@ -8548,6 +8552,17 @@ All scheduling of samples and timestamps is done in this base class together with #GstAudioBaseSink using a default implementation of a #GstAudioRingBuffer that uses threads. + + + + + + + + + + + @@ -8581,6 +8596,17 @@ together with #GstAudioBaseSink using a default implementation of a + + + + + + + + + + + @@ -8606,6 +8632,28 @@ together with #GstAudioBaseSink using a default implementation of a + + + + + + + + + + + + + + + + + + + + + + @@ -8647,7 +8695,6 @@ together with #GstAudioBaseSink using a default implementation of a - #GstAudioSink class. Override the vmethods to implement functionality. the parent class structure. @@ -8753,8 +8800,60 @@ together with #GstAudioBaseSink using a default implementation of a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -9235,7 +9334,7 @@ of the current one. Sets @rate as new sample rate for the following processing. If the sample -rate differs this implicitely marks the next data as discontinuous. +rate differs this implicitly marks the next data as discontinuous. @@ -9458,13 +9557,6 @@ rate differs this implicitely marks the next data as discontinuous. - - - - - - - This metadata stays relevant as long as channels are unchanged. @@ -9480,17 +9572,10 @@ rate differs this implicitely marks the next data as discontinuous. - - - - - - - - + diff --git a/gir-files/GstBase-1.0.gir b/gir-files/GstBase-1.0.gir index d6ab5719c..5f19a892e 100644 --- a/gir-files/GstBase-1.0.gir +++ b/gir-files/GstBase-1.0.gir @@ -180,8 +180,8 @@ gst_adapter_offset_at_discont(). The number of bytes that were consumed since then can be queried with gst_adapter_distance_from_discont(). A last thing to note is that while #GstAdapter is pretty optimized, -merging buffers still might be an operation that requires a malloc() and -memcpy() operation, and these operations are not the fastest. Because of +merging buffers still might be an operation that requires a `malloc()` and +`memcpy()` operation, and these operations are not the fastest. Because of this, some functions like gst_adapter_available_fast() are provided to help speed up such cases should you want to. To avoid repeated memory allocations, gst_adapter_copy() can be used to copy data into a (statically allocated) @@ -1120,6 +1120,22 @@ sent before pushing the buffer. + + Negotiates src pad caps with downstream elements. +Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again +if #GstAggregatorClass.negotiate() fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAggregator + + + + @@ -1171,6 +1187,23 @@ sent before pushing the buffer. + + + + + + + + + + + + + + + + + @@ -1188,6 +1221,23 @@ sent before pushing the buffer. + + + + + + + + + + + + + + + + + @@ -1349,6 +1399,22 @@ Typically only called by subclasses. + + Negotiates src pad caps with downstream elements. +Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again +if #GstAggregatorClass.negotiate() fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAggregator + + + + Lets #GstAggregator sub-classes tell the baseclass what their internal latency is. Will also post a LATENCY message on the bus so the pipeline @@ -1390,7 +1456,7 @@ can reconfigure its global latency. - This is a simple #GstAggregator::get_next_time implementation that + This is a simple #GstAggregatorClass.get_next_time() implementation that just looks at the #GstSegment on the srcpad of the aggregator and bases the next time on the running time there. @@ -1408,6 +1474,23 @@ and you have a dead line based aggregator subclass. + + Subclasses should use this to update the segment on their +source pad, instead of directly pushing new segment events +downstream. + + + + + + + + + + + + + @@ -1760,14 +1843,67 @@ _finish_buffer from inside that function. + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAggregator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - Pads managed by a #GstAggregor subclass. + Pads managed by a #GstAggregator subclass. This class used to live in gst-plugins-bad and was moved to core. @@ -2396,7 +2532,7 @@ a parser and share a lot of rather complex code. * During the parsing process #GstBaseParseClass will handle both srcpad and sinkpad events. They will be passed to subclass if - #GstBaseParseClass.event() or #GstBaseParseClass.src_event() + #GstBaseParseClass.sink_event() or #GstBaseParseClass.src_event() implementations have been provided. ## Shutdown phase @@ -3950,6 +4086,25 @@ information about the render delay. + + Return various #GstBaseSink statistics. This function returns a #GstStructure +with name `application/x-gst-base-sink-stats` with the following fields: + +- "average-rate" G_TYPE_DOUBLE average frame rate +- "dropped" G_TYPE_UINT64 Number of dropped frames +- "rendered" G_TYPE_UINT64 Number of rendered frames + + + pointer to #GstStructure + + + + + #GstBaseSink + + + + Checks if @sink is currently configured to synchronize against the clock. @@ -4460,6 +4615,15 @@ media. This property will add additional latency to the device in order to make other sinks compensate for the delay. + + Various #GstBaseSink statistics. This property returns a #GstStructure +with name `application/x-gst-base-sink-stats` with the following fields: + +- "average-rate" G_TYPE_DOUBLE average frame rate +- "dropped" G_TYPE_UINT64 Number of dropped frames +- "rendered" G_TYPE_UINT64 Number of rendered frames + + @@ -5074,6 +5238,7 @@ implementation will call alloc and fill. + Called to get the caps to report. @@ -5082,7 +5247,7 @@ implementation will call alloc and fill. - + @@ -5134,13 +5299,22 @@ out. The base class will sync on the clock using these times. - + + Negotiates src pad caps with downstream elements. +Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again +if #GstBaseSrcClass.negotiate() fails. + +Do not call this in the #GstBaseSrcClass.fill() vmethod. Call this in +#GstBaseSrcClass.create() or in #GstBaseSrcClass.alloc(), _before_ any +buffer is allocated. + %TRUE if the negotiation succeeded, else %FALSE. + base source instance @@ -5334,9 +5508,29 @@ by the src; unref it after usage. + + Negotiates src pad caps with downstream elements. +Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again +if #GstBaseSrcClass.negotiate() fails. + +Do not call this in the #GstBaseSrcClass.fill() vmethod. Call this in +#GstBaseSrcClass.create() or in #GstBaseSrcClass.alloc(), _before_ any +buffer is allocated. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + base source instance + + + + Prepare a new seamless segment for emission downstream. This function must -only be called by derived sub-classes, and only from the create() function, +only be called by derived sub-classes, and only from the #GstBaseSrcClass::create function, as the stream-lock needs to be held. The format for the new segment will be the current format of the source, as @@ -5425,7 +5619,7 @@ when trying to read more should set this to %FALSE. When @src operates in %GST_FORMAT_TIME, #GstBaseSrc will send an EOS when a buffer outside of the currently configured segment is pushed if @automatic_eos is %TRUE. Since 1.16, if @automatic_eos is %FALSE an -EOS will be pushed only when the #GstBaseSrc.create implementation +EOS will be pushed only when the #GstBaseSrcClass.create() implementation returns %GST_FLOW_EOS. @@ -5742,7 +5936,7 @@ buffers. - + @@ -5752,10 +5946,12 @@ buffers. + %TRUE if the negotiation succeeded, else %FALSE. + base source instance @@ -6542,10 +6738,10 @@ It provides for: - Lets #GstBaseTransform sub-classes to know the memory @allocator + Lets #GstBaseTransform sub-classes know the memory @allocator used by the base class and its @params. -Unref the @allocator after use it. +Unref the @allocator after use. @@ -6571,7 +6767,7 @@ used the instance of the #GstBufferPool used -by @trans; free it after use it +by @trans; free it after use @@ -6585,7 +6781,7 @@ by @trans; free it after use it See if @trans is configured as a in_place transform. - %TRUE is the transform is configured in in_place mode. + %TRUE if the transform is configured in in_place mode. MT safe. @@ -6601,7 +6797,7 @@ MT safe. See if @trans is configured as a passthrough transform. - %TRUE is the transform is configured in passthrough mode. + %TRUE if the transform is configured in passthrough mode. MT safe. @@ -6629,6 +6825,33 @@ MT safe. + + Negotiates src pad caps with downstream elements if the source pad is +marked as needing reconfiguring. Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in +any case. But marks it again if negotiation fails. + +Do not call this in the #GstBaseTransformClass.transform() or +#GstBaseTransformClass.transform_ip() vmethod. Call this in +#GstBaseTransformClass.submit_input_buffer(), +#GstBaseTransformClass.prepare_output_buffer() or in +#GstBaseTransformClass.generate_output() _before_ any output buffer is +allocated. + +It will be default be called when handling an ALLOCATION query or at the +very beginning of the default #GstBaseTransformClass.submit_input_buffer() +implementation. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + the #GstBaseTransform to set + + + + Instructs @trans to request renegotiation upstream. This function is typically called after properties on the transform were set that @@ -6807,14 +7030,14 @@ running_time. - Updates the srcpad caps and send the caps downstream. This function + Updates the srcpad caps and sends the caps downstream. This function can be used by subclasses when they have already negotiated their caps but found a change in them (or computed new information). This way, they can notify downstream about that change without losing any buffer. - %TRUE if the caps could be send downstream %FALSE otherwise + %TRUE if the caps could be sent downstream %FALSE otherwise @@ -8047,7 +8270,7 @@ Free-function: gst_bit_writer_free Creates a new #GstBitWriter instance with the given memory area. If @initialized is %TRUE it is possible to read @size bits from the -#GstBitWriter from the beginnig. +#GstBitWriter from the beginning. Free-function: gst_bit_writer_free @@ -12855,7 +13078,7 @@ Free-function: gst_bit_writer_free Creates a new #GstBitWriter instance with the given memory area. If @initialized is %TRUE it is possible to read @size bits from the -#GstBitWriter from the beginnig. +#GstBitWriter from the beginning. Free-function: gst_bit_writer_free diff --git a/gir-files/GstCheck-1.0.gir b/gir-files/GstCheck-1.0.gir index 1a53d7b8f..76ad41527 100644 --- a/gir-files/GstCheck-1.0.gir +++ b/gir-files/GstCheck-1.0.gir @@ -787,6 +787,27 @@ MT safe. + + Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull +will block until an EOS event is received, or timeout in 60 seconds. +MT safe. + + + %TRUE on success, %FALSE on timeout. + + + + + a #GstHarness + + + + A #GstBuffer, or %NULL if EOS or timeout occures + first. + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad. Timeouts after 60 seconds similar to gst_harness_pull. @@ -2325,7 +2346,8 @@ MT safe. 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. +2: Advance the #GstTestClock to the time the #GstClockID is waiting, unless + the clock time is already passed the clock id (Since 1.18). 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. @@ -2423,6 +2445,25 @@ notification to look for + + Processes and releases the pending ID. + +MT safe. + + + + + + + #GstTestClock for which to process the pending IDs + + + + #GstClockID + + + + Processes and releases the pending IDs in the list. diff --git a/gir-files/GstGL-1.0.gir b/gir-files/GstGL-1.0.gir index 7773bfdff..d496ad974 100644 --- a/gir-files/GstGL-1.0.gir +++ b/gir-files/GstGL-1.0.gir @@ -72,7 +72,7 @@ synchronization metadata on buffers from the pool. - a space seperated string of OpenGL apis + a space separated string of OpenGL apis @@ -80,7 +80,7 @@ synchronization metadata on buffers from the pool. - A space seperated string of the OpenGL api's enabled in @api + A space separated string of the OpenGL api's enabled in @api @@ -158,7 +158,7 @@ synchronization metadata on buffers from the pool. Copies the dynamically allocated data from @src to @dest. Direct subclasses -should call this function in their own overriden copy function. +should call this function in their own overridden copy function. @@ -189,7 +189,7 @@ should call this function in their own overriden copy function. Frees the dynamically allocated data in @params. Direct subclasses -should call this function in their own overriden free function. +should call this function in their own overridden free function. @@ -206,7 +206,7 @@ should call this function in their own overriden free function. when freeing the memory. - whether the paramaters could be initialized + whether the parameters could be initialized @@ -407,7 +407,7 @@ in other structs. - the #GstLevel + the #GstDebugLevel @@ -452,7 +452,7 @@ in other structs. - the #GstLevel + the #GstDebugLevel @@ -531,8 +531,8 @@ in other structs. #GstGLBaseFilter handles the nitty gritty details of retrieving an OpenGL context. It also provided some wrappers around #GstBaseTransform's -start(), stop() and set_caps() virtual methods that ensure an OpenGL context -is available and current in the calling thread. +`start()`, `stop()` and `set_caps()` virtual methods that ensure an OpenGL +context is available and current in the calling thread. @@ -586,6 +586,19 @@ is available and current in the calling thread. + + + + the #GstGLContext found by @filter + + + + + a #GstGLBaseFilter + + + + @@ -731,7 +744,7 @@ Data is uploaded or downloaded from the GPU as is necessary. - Note: only intended for subclass usage to allocate the sytem memory buffer + Note: only intended for subclass usage to allocate the system memory buffer on demand. If there is already a non-NULL data pointer in @gl_mem->data, then this function imply returns TRUE. @@ -790,7 +803,7 @@ then this function imply returns TRUE. - whether the copy suceeded. + whether the copy succeeded. @@ -1015,7 +1028,7 @@ function to allocate and OpenGL resources needed for your application - generic faliure + generic failure the implementation is too old and doesn't @@ -1026,6 +1039,7 @@ function to allocate and OpenGL resources needed for your application + the quark used for #GstGLBaseMemory in #GError's @@ -1040,6 +1054,144 @@ function to allocate and OpenGL resources needed for your application to the texture + + #GstGLBaseSrc handles the nitty gritty details of retrieving an OpenGL +context. It also provided some wrappers around #GstBaseSrc's `start()` and +`stop()` virtual methods that ensure an OpenGL context is available and +current in the calling thread. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the currently configured #GstGLDisplay + + + + the currently configured #GstGLContext + + + + the currently configured output #GstVideoInfo + + + + the currently configured output #GstCaps + + + + the total running time + + + + + + + + + + + + + The base class for GStreamer GL Video sources. + + + + + + the logical-OR of #GstGLAPI's supported by this element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GstGLBuffer is a #GstMemory subclass providing support for the mapping of GL buffers. @@ -1410,7 +1562,11 @@ specified and must only be activated in a single thread. Note: The caller is responsible for ensuring that the OpenGL context represented by @handle stays alive while the returned #GstGLContext is -active. +active. + +@context_type must not be %GST_GL_PLATFORM_NONE or %GST_GL_PLATFORM_ANY + +@available_apis must not be %GST_GL_API_NONE or %GST_GL_API_ANY a #GstGLContext wrapping @handle @@ -1503,7 +1659,7 @@ returned. Attempts to use the @context_type specific GetProcAddress implementations -to retreive @name. +to retrieve @name. See also gst_gl_context_get_proc_address(). @@ -1961,7 +2117,7 @@ after a call to gst_gl_context_create(). Returns the OpenGL version implemented by @context. See -gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by +gst_gl_context_get_gl_api() for retrieving the OpenGL api implemented by @context. @@ -1986,7 +2142,7 @@ gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by Get a function pointer to a specified opengl function, @name. If the the specific function does not exist, NULL is returned instead. -Platform specfic functions (names starting 'egl', 'glX', 'wgl', etc) can also +Platform specific functions (names starting 'egl', 'glX', 'wgl', etc) can also be retrieved using this method. Note: This function may return valid function pointers that may not be valid @@ -1996,7 +2152,7 @@ the OpenGL API and version or for an appropriate OpenGL extension. Note: On success, you need to cast the returned function pointer to the correct type to be able to call it correctly. On 32-bit Windows, this will -include the %GSTGLAPI identifier to use the correct calling convention. +include the `GSTGLAPI` identifier to use the correct calling convention. e.g. |[<!-- language="C" --> @@ -2437,6 +2593,7 @@ MT-safe + the quark used for #GstGLContext in #GError's @@ -2463,7 +2620,7 @@ MT-safe #GstGLDisplay represents a connection to the underlying windowing system. -Elements are required to make use of #GstContext to share and propogate +Elements are required to make use of #GstContext to share and propagate a #GstGLDisplay. There are a number of environment variables that influence the choice of @@ -2491,7 +2648,6 @@ platform and window system specific functionality. - It requires the display's object lock to be held. a new #GstGLWindow for @display or %NULL. @@ -2504,6 +2660,19 @@ platform and window system specific functionality. + + + + whether the context belongs to a foreign display + + + + + a #GstGLDisplay + + + + @@ -2560,7 +2729,6 @@ Must be called with the object lock held. - It requires the display's object lock to be held. a new #GstGLWindow for @display or %NULL. @@ -2577,7 +2745,7 @@ Must be called with the object lock held. limit the use of OpenGL to the requested @gl_api. This is intended to allow application and elements to request a specific set of OpenGL API's based on -what they support. See gst_gl_context_get_gl_api() for the retreiving the +what they support. See gst_gl_context_get_gl_api() for the retrieving the API supported by a #GstGLContext. @@ -2595,8 +2763,10 @@ API supported by a #GstGLContext. - Execute @compare_func over the list of windows stored by @display. The -first argment to @compare_func is the #GstGLWindow being checked and the + Deprecated for gst_gl_display_retrieve_window(). + +Execute @compare_func over the list of windows stored by @display. The +first argument to @compare_func is the #GstGLWindow being checked and the second argument is @data. @@ -2619,6 +2789,19 @@ second argument is @data. + + + + whether the context belongs to a foreign display + + + + + a #GstGLDisplay + + + + see gst_gl_display_filter_gl_api() for what the returned value represents @@ -2689,6 +2872,23 @@ Must be called with the object lock held. + + Must be called with the object lock held. + + + + + + + a #GstGLDisplay + + + + the #GstGLContext to remove + + + + @@ -2706,6 +2906,31 @@ Must be called with the object lock held. + + Execute @compare_func over the list of windows stored by @display. The +first argument to @compare_func is the #GstGLWindow being checked and the +second argument is @data. + + + The first #GstGLWindow that causes a match + from @compare_func + + + + + a #GstGLDisplay + + + + some data to pass to @compare_func + + + + a comparison function to run + + + + @@ -2780,8 +3005,23 @@ display's object lock held. + + + + + whether the context belongs to a foreign display + + + + + a #GstGLDisplay + + + + + - + @@ -2810,12 +3050,12 @@ through the provided API - Attempts to create a new #EGLDisplay from @display. If @type is + Attempts to create a new `EGLDisplay` from @display. If @type is %GST_GL_DISPLAY_TYPE_ANY, then @display must be 0. @type must not be %GST_GL_DISPLAY_TYPE_NONE. - A #EGLDisplay or %EGL_NO_DISPLAY + A `EGLDisplay` or `EGL_NO_DISPLAY` @@ -2855,6 +3095,63 @@ through the provided API + + the contents of a #GstGLDisplayEGLDevice are private and should only be accessed +through the provided API + + + Create a new #GstGLDisplayEGLDevice with an EGLDevice supported device + + + a new #GstGLDisplayEGLDevice or %NULL + + + + + the index of device to use + + + + + + Creates a new #GstGLDisplayEGLDevice with EGLDeviceEXT . +The @device must be created using EGLDevice enumeration. + + + a new #GstGLDisplayEGLDevice + + + + + an existing EGLDeviceEXT + + + + + + + + + + + + + + + + + + Opaque #GstGLDisplayEGLDeviceClass struct + + + + + + + + + + @@ -2886,6 +3183,9 @@ through the provided API Mesa3D GBM display + + EGLDevice display (Since: 1.18) + any display type @@ -2895,7 +3195,7 @@ through the provided API through the provided API - Create a new #GstGLDisplayWayland from the wayland display name. See wl_display_connect() + Create a new #GstGLDisplayWayland from the wayland display name. See `wl_display_connect`() for details on what is a valid name. @@ -2966,7 +3266,7 @@ for details on what is a valid name. through the provided API - Create a new #GstGLDisplayX11 from the x11 display name. See XOpenDisplay() + Create a new #GstGLDisplayX11 from the x11 display name. See `XOpenDisplay`() for details on what is a valid name. @@ -3467,6 +3767,14 @@ See also: gst_gl_filter_render_to_target() A 24-bit component for depth information and a 8-bit component for stencil informat. + + + + Single 16-bit component stored in the R texture component + + + Two 16-bit components stored in the R and G texture components + @@ -3537,11 +3845,11 @@ per pixel - the OpenGL format, %GL_RGBA, %GL_LUMINANCE, etc + the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc - the OpenGL type, %GL_UNSIGNED_BYTE, %GL_FLOAT, etc + the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc @@ -3655,7 +3963,7 @@ between multiple OpenGL contexts. - Retreive the effective dimensions from the current attachments attached to + Retrieve the effective dimensions from the current attachments attached to @fb. @@ -3741,6 +4049,10 @@ between multiple OpenGL contexts. + Structure containing function pointers to OpenGL functions. + +Each field is named exactly the same as the OpenGL function without the +`gl` prefix. @@ -3805,7 +4117,7 @@ Data is uploaded or downloaded from the GPU as is necessary. is specified by @tex_format, @width and @height. - Whether the copy suceeded + Whether the copy succeeded @@ -3995,8 +4307,8 @@ already have been modified with gst_video_info_align(). Reads the texture in #GstGLMemory into @read_pointer if no buffer is bound -to %GL_PIXEL_PACK_BUFFER. Otherwise @read_pointer is the byte offset into -the currently bound %GL_PIXEL_PACK_BUFFER buffer to store the result of +to `GL_PIXEL_PACK_BUFFER`. Otherwise @read_pointer is the byte offset into +the currently bound `GL_PIXEL_PACK_BUFFER` buffer to store the result of glReadPixels. See the OpenGL specification for glReadPixels for more details. @@ -4165,7 +4477,7 @@ using glCopyTexImage. See the OpenGL specification for details on the mappings between texture formats. - Whether the copy suceeded + Whether the copy succeeded @@ -4398,7 +4710,7 @@ mappings between texture formats. - a space seperated string of OpenGL platformss + a space separated string of OpenGL platformss @@ -4406,7 +4718,7 @@ mappings between texture formats. - A space seperated string of the OpenGL platforms enabled in @platform + A space separated string of the OpenGL platforms enabled in @platform @@ -4814,16 +5126,17 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio Compilation stage that caused an error - Compilation error occured + Compilation error occurred - Link error occured + Link error occurred - General program error occured + General program error occurred + the quark used for GstGLSL in #GError's @@ -4982,7 +5295,7 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio - whether the compilation suceeded + whether the compilation succeeded @@ -5172,16 +5485,16 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio - Note: this function expects either a #version GLSL preprocesser directive + Note: this function expects either a `#version` GLSL preprocesser directive or a valid GLSL version and/or profile. - TRUE if a valid #version string was found, FALSE otherwise + TRUE if a valid `#version` string was found, FALSE otherwise - a valid GLSL #version string + a valid GLSL `#version` string @@ -5197,7 +5510,7 @@ or a valid GLSL version and/or profile. - the combined GLSL #version string for @version and @profile + the combined GLSL `#version` string for @version and @profile @@ -5444,7 +5757,7 @@ Note: must be called in the GL thread Bind attribute @name to the specified location @index using -glBindAttributeLocation(). +`glBindAttributeLocation()`. @@ -5466,7 +5779,7 @@ glBindAttributeLocation(). Bind attribute @name to the specified location @index using -glBindFragDataLocation(). +`glBindFragDataLocation()`. @@ -5637,7 +5950,7 @@ Note: must be called in the GL thread - Perform glUniform1f() for @name on @shader + Perform `glUniform1f()` for @name on @shader @@ -5658,7 +5971,7 @@ Note: must be called in the GL thread - Perform glUniform1fv() for @name on @shader + Perform `glUniform1fv()` for @name on @shader @@ -5685,7 +5998,7 @@ Note: must be called in the GL thread - Perform glUniform1i() for @name on @shader + Perform `glUniform1i()` for @name on @shader @@ -5706,7 +6019,7 @@ Note: must be called in the GL thread - Perform glUniform1iv() for @name on @shader + Perform `glUniform1iv()` for @name on @shader @@ -5733,7 +6046,7 @@ Note: must be called in the GL thread - Perform glUniform2f() for @name on @shader + Perform `glUniform2f()` for @name on @shader @@ -5758,7 +6071,7 @@ Note: must be called in the GL thread - Perform glUniform2fv() for @name on @shader + Perform `glUniform2fv()` for @name on @shader @@ -5785,7 +6098,7 @@ Note: must be called in the GL thread - Perform glUniform2i() for @name on @shader + Perform `glUniform2i()` for @name on @shader @@ -5810,7 +6123,7 @@ Note: must be called in the GL thread - Perform glUniform2iv() for @name on @shader + Perform `glUniform2iv()` for @name on @shader @@ -5837,7 +6150,7 @@ Note: must be called in the GL thread - Perform glUniform3f() for @name on @shader + Perform `glUniform3f()` for @name on @shader @@ -5866,7 +6179,7 @@ Note: must be called in the GL thread - Perform glUniform3fv() for @name on @shader + Perform `glUniform3fv()` for @name on @shader @@ -5893,7 +6206,7 @@ Note: must be called in the GL thread - Perform glUniform3i() for @name on @shader + Perform `glUniform3i()` for @name on @shader @@ -5922,7 +6235,7 @@ Note: must be called in the GL thread - Perform glUniform3iv() for @name on @shader + Perform `glUniform3iv()` for @name on @shader @@ -5949,7 +6262,7 @@ Note: must be called in the GL thread - Perform glUniform4f() for @name on @shader + Perform `glUniform4f()` for @name on @shader @@ -5982,7 +6295,7 @@ Note: must be called in the GL thread - Perform glUniform4fv() for @name on @shader + Perform `glUniform4fv()` for @name on @shader @@ -6009,7 +6322,7 @@ Note: must be called in the GL thread - Perform glUniform4i() for @name on @shader + Perform `glUniform4i()` for @name on @shader @@ -6042,7 +6355,7 @@ Note: must be called in the GL thread - Perform glUniform4iv() for @name on @shader + Perform `glUniform4iv()` for @name on @shader @@ -6069,7 +6382,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix2fv() for @name on @shader + Perform `glUniformMatrix2fv()` for @name on @shader @@ -6098,7 +6411,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix2x3fv() for @name on @shader + Perform `glUniformMatrix2x3fv()` for @name on @shader @@ -6127,7 +6440,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix2x4fv() for @name on @shader + Perform `glUniformMatrix2x4fv()` for @name on @shader @@ -6156,7 +6469,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix3fv() for @name on @shader + Perform `glUniformMatrix3fv()` for @name on @shader @@ -6185,7 +6498,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix3x2fv() for @name on @shader + Perform `glUniformMatrix3x2fv()` for @name on @shader @@ -6214,7 +6527,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix3x4fv() for @name on @shader + Perform `glUniformMatrix3x4fv()` for @name on @shader @@ -6243,7 +6556,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix4fv() for @name on @shader + Perform `glUniformMatrix4fv()` for @name on @shader @@ -6272,7 +6585,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix4x2fv() for @name on @shader + Perform `glUniformMatrix4x2fv()` for @name on @shader @@ -6301,7 +6614,7 @@ Note: must be called in the GL thread - Perform glUniformMatrix4x3fv() for @name on @shader + Perform `glUniformMatrix4x3fv()` for @name on @shader @@ -6646,7 +6959,7 @@ the sync point are now visible. - a string equivalant to one of the GST_GL_TEXTURE_TARGET_*_STR values + a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values @@ -6874,7 +7187,7 @@ gst_gl_upload_set_caps() creating a new #GstBuffer in @outbuf_ptr. No further processing required - An unspecified error occured + An unspecified error occurred The configuration is unsupported. @@ -7572,6 +7885,20 @@ from the @window. + + Query whether @window has output surface or not + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + @@ -7623,7 +7950,7 @@ from the @window. - Invoke @callback with data on the window thread. @callback is guarenteed to + Invoke @callback with data on the window thread. @callback is guaranteed to have executed when this function returns. @@ -7861,6 +8188,20 @@ from the @window. + + Query whether @window has output surface or not + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + Queue resizing of @window. @@ -7939,7 +8280,7 @@ from the @window. - Invoke @callback with data on the window thread. @callback is guarenteed to + Invoke @callback with data on the window thread. @callback is guaranteed to have executed when this function returns. @@ -8009,6 +8350,29 @@ have been executed when this function returns. + + + + + + + + + + + + + + + + + + + + + + + Sets the callback called when the window is about to close. @@ -8035,7 +8399,7 @@ have been executed when this function returns. - Sets the draw callback called everytime gst_gl_window_draw() is called + Sets the draw callback called every time gst_gl_window_draw() is called @@ -8113,7 +8477,7 @@ according to the #GstVideoOverlay interface. - Sets the resize callback called everytime a resize of the window occurs. + Sets the resize callback called every time a resize of the window occurs. @@ -8264,6 +8628,30 @@ require this to be called with a valid handle before drawing can commence. + + Will be emitted when a mouse scroll event is received by the GstGLwindow. + + + + + + the x coordinate of the mouse event + + + + the y coordinate of the mouse event + + + + the x offset of the scroll event + + + + the y offset of the scroll event + + + + @@ -8560,8 +8948,23 @@ require this to be called with a valid handle before drawing can commence. + + + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + + - + @@ -8578,6 +8981,7 @@ require this to be called with a valid handle before drawing can commence. + the quark used for #GstGLWindow in #GError's @@ -8665,7 +9069,7 @@ user-defined purposes. the #GstDebugCategory to output the message in - the #GstLevel + the #GstDebugLevel a #GObject to associate with the debug message @@ -8739,6 +9143,27 @@ user-defined purposes. + + + + + + + + + + + + + + + + + + + + + @@ -8807,7 +9232,7 @@ user-defined purposes. - + The currently supported formats that can be converted @@ -8905,6 +9330,27 @@ user-defined purposes. + + + + + + + + + + + + + + + + + + + + + @@ -9078,7 +9524,7 @@ user-defined purposes. - + List of video formats that are supported by #GstGLMemory @@ -9230,7 +9676,7 @@ user-defined purposes. - Cast to the currect function type for generic window callbacks + Cast to the current function type for generic window callbacks @@ -9267,7 +9713,7 @@ user-defined purposes. - Cast to the currect function type for window resize callbacks + Cast to the current function type for window resize callbacks @@ -9325,6 +9771,20 @@ user-defined purposes. + + + + + + + + + + + + + + @@ -9402,6 +9862,20 @@ user-defined purposes. + + + + + + + + + + + + + + @@ -9694,6 +10168,7 @@ you are writing to OpenGL. Conversely, combining #GST_MAP_GL with + @@ -9702,7 +10177,7 @@ you are writing to OpenGL. Conversely, combining #GST_MAP_GL with - a space seperated string of OpenGL apis + a space separated string of OpenGL apis @@ -9710,7 +10185,7 @@ you are writing to OpenGL. Conversely, combining #GST_MAP_GL with - A space seperated string of the OpenGL api's enabled in @api + A space separated string of the OpenGL api's enabled in @api @@ -9747,6 +10222,7 @@ you are writing to OpenGL. Conversely, combining #GST_MAP_GL with + the quark used for #GstGLBaseMemory in #GError's @@ -9769,7 +10245,7 @@ multiple times. This must be called before any other #GstGLBuffer operation. - whether @name is in the space seperated list of @ext + whether @name is in the space separated list of @ext @@ -9785,6 +10261,7 @@ multiple times. This must be called before any other #GstGLBuffer operation. + the quark used for #GstGLContext in #GError's @@ -9923,11 +10400,11 @@ per pixel - the OpenGL format, %GL_RGBA, %GL_LUMINANCE, etc + the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc - the OpenGL type, %GL_UNSIGNED_BYTE, %GL_FLOAT, etc + the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc @@ -10119,7 +10596,7 @@ multiple times. This must be called before any other GstGLMemory operation. - a space seperated string of OpenGL platformss + a space separated string of OpenGL platformss @@ -10127,7 +10604,7 @@ multiple times. This must be called before any other GstGLMemory operation. - A space seperated string of the OpenGL platforms enabled in @platform + A space separated string of the OpenGL platforms enabled in @platform @@ -10235,11 +10712,11 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio - an OpenGL format, %GL_RGBA, %GL_LUMINANCE, etc + an OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc - an OpenGL type, %GL_UNSIGNED_BYTE, %GL_FLOAT, etc + an OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc @@ -10285,7 +10762,7 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio - a string equivalant to one of the GST_GL_TEXTURE_TARGET_*_STR values + a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values @@ -10403,11 +10880,13 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio + the quark used for #GstGLWindow in #GError's + the quark used for GstGLSL in #GError's @@ -10438,16 +10917,16 @@ multiple times. This must be called before any other GstGLRenderbuffer operatio - Note: this function first searches the first 1 kilobytes for a #version + Note: this function first searches the first 1 kilobytes for a `#version` preprocessor directive and then executes gst_glsl_version_profile_from_string(). - TRUE if a valid #version string was found, FALSE otherwise + TRUE if a valid `#version` string was found, FALSE otherwise - string to search for a valid #version string + string to search for a valid `#version` string @@ -10474,16 +10953,16 @@ preprocessor directive and then executes gst_glsl_version_profile_from_string(). - Note: this function expects either a #version GLSL preprocesser directive + Note: this function expects either a `#version` GLSL preprocesser directive or a valid GLSL version and/or profile. - TRUE if a valid #version string was found, FALSE otherwise + TRUE if a valid `#version` string was found, FALSE otherwise - a valid GLSL #version string + a valid GLSL `#version` string @@ -10499,7 +10978,7 @@ or a valid GLSL version and/or profile. - the combined GLSL #version string for @version and @profile + the combined GLSL `#version` string for @version and @profile diff --git a/gir-files/GstMpegts-1.0.gir b/gir-files/GstMpegts-1.0.gir index 518352950..5e84fbc6d 100644 --- a/gir-files/GstMpegts-1.0.gir +++ b/gir-files/GstMpegts-1.0.gir @@ -152,6 +152,12 @@ Consult the relevant specifications for more details. + + + + + + Source from a @GstMpegtsAtscMGT @@ -203,6 +209,88 @@ Consult the relevant specifications for more details. + + Region Rating Table (A65) + + + The protocol version + + + + the names + + + + + + the number of dimensions defined for this rating table + + + + A set of dimensions + + + + + + descriptors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the abbreviated ratings + + + + + + the ratings + + + + + + + + + + + System Time Table (A65) @@ -239,6 +327,12 @@ Consult the relevant specifications for more details. The UTC date and time + + + + + + @@ -284,6 +378,26 @@ Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + Represents both: @@ -739,6 +853,8 @@ Consult the relevant specifications for more details. + + @@ -755,14 +871,14 @@ Consult the relevant specifications for more details. - the type which %linkage_data has + the type which @linkage_data has - the length for %private_data_bytes + the length for @private_data_bytes @@ -1090,7 +1206,7 @@ As specified in Table 100 of ETSI EN 300 468 v1.13.1 These are the base descriptor types and methods. For more details, refer to the ITU H.222.0 or ISO/IEC 13818-1 specifications -and other specifications mentionned in the documentation. +and other specifications mentioned in the documentation. the type of descriptor @@ -1295,7 +1411,7 @@ are found in http://www.dvbservices.com - the length of #id_selector_bytes + the length of @id_selector_bytes @@ -1336,7 +1452,7 @@ are found in http://www.dvbservices.com a list of all frequencies in Hz/kHz -depending on %offset +depending on @offset @@ -1516,7 +1632,7 @@ registered by http://www.dvbservices.com/ - length of %private_data + length of @private_data @@ -1620,7 +1736,7 @@ the list of services Extracts the component tag from @descriptor. - %TRUE if the parsing happended correctly, else %FALSE. + %TRUE if the parsing happened correctly, else %FALSE. @@ -2643,6 +2759,135 @@ Corresponds to table 6 of ETSI EN 300 468 (v1.13.0) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocates and initializes a #GstMpegtsSCTESIT. + + + A newly allocated #GstMpegtsSCTESIT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocates and initializes a #GstMpegtsSCTESpliceEvent. + + + A newly allocated #GstMpegtsSCTESpliceEvent + + + + Service Description Table (EN 300 468) @@ -2798,6 +3043,9 @@ else in the western part. SCTE-19 Isochronous data + + SCTE-35 Splice Information Table + SCTE-07 Data Service or Network Resource Table @@ -2980,6 +3228,21 @@ happened. + + Returns the #GstMpegtsAtscRRT contained in the @section. + + + The #GstMpegtsAtscRRT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_RRT + + + + Returns the #GstMpegtsAtscSTT contained in the @section. @@ -3126,6 +3389,21 @@ happened. + + Returns the #GstMpegtsSCTESIT contained in the @section. + + + The #GstMpegtsSCTESIT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_SCTE_SIT + + + + Returns the #GstMpegtsSDT contained in the @section. @@ -3227,6 +3505,41 @@ The #GstEvent is sent to the @element #GstElement. + + + + the #GstMpegtsSection + + + + + a #GstMpegtsAtscMGT to create the #GstMpegtsSection from + + + + + + + + + + + + + + + + + + + + + + + + + + Ownership of @nit is taken. The data in @nit is managed by the #GstMpegtsSection @@ -3279,6 +3592,23 @@ The #GstEvent is sent to the @element #GstElement. + + Ownership of @sit is taken. The data in @sit is managed by the #GstMpegtsSection + + + the #GstMpegtsSection + + + + + a #GstMpegtsSCTESIT to create the #GstMpegtsSection from + + + + + + + Ownership of @sdt is taken. The data in @sdt is managed by the #GstMpegtsSection @@ -3544,6 +3874,11 @@ see also #GstMpegtsSectionATSCTableID, #GstMpegtsSectionDVBTableID, and ATSC System Time Table (A65) + + + + SCTE Splice Information Table (SCTE-35) + Type of mpeg-ts stream type. @@ -3803,7 +4138,7 @@ profiles defined in Annex A for service-compatible stereoscopic 3D services - the constallation + the constellation @@ -4073,7 +4408,7 @@ Note: To look for descriptors that can be present more than once in an array of descriptors, iterate the #GArray manually. - the first descriptor matchin @tag, else %NULL. + the first descriptor matching @tag, else %NULL. @@ -4166,6 +4501,115 @@ Release with #g_array_unref when done with it. + + Allocates and initializes a new INSERT command #GstMpegtsSCTESIT +setup to cancel the specified @event_id. + + + A newly allocated #GstMpegtsSCTESIT + + + + + The event ID to cancel. + + + + + + Allocates and initializes a NULL command #GstMpegtsSCTESIT. + + + A newly allocated #GstMpegtsSCTESIT + + + + + Allocates and initializes a new "Splice In" INSERT command +#GstMpegtsSCTESIT for the given @event_id and @splice_time. + +If the @splice_time is #G_MAXUINT64 then the event will be +immediate as opposed to for the target @splice_time. + + + A newly allocated #GstMpegtsSCTESIT + + + + + The event ID. + + + + The PCR time for the splice event + + + + + + Allocates and initializes a new "Splice Out" INSERT command +#GstMpegtsSCTESIT for the given @event_id, @splice_time and +duration. + +If the @splice_time is #G_MAXUINT64 then the event will be +immediate as opposed to for the target @splice_time. + +If the @duration is 0 it won't be specified in the event. + + + A newly allocated #GstMpegtsSCTESIT + + + + + The event ID. + + + + The PCR time for the splice event + + + + The optional duration. + + + + + + + + the #GstMpegtsSection + + + + + a #GstMpegtsAtscMGT to create the #GstMpegtsSection from + + + + + + + + + + + + + + + + + + + + + + + + + + Ownership of @nit is taken. The data in @nit is managed by the #GstMpegtsSection @@ -4218,6 +4662,23 @@ Release with #g_array_unref when done with it. + + Ownership of @sit is taken. The data in @sit is managed by the #GstMpegtsSection + + + the #GstMpegtsSection + + + + + a #GstMpegtsSCTESIT to create the #GstMpegtsSection from + + + + + + + Ownership of @sdt is taken. The data in @sdt is managed by the #GstMpegtsSection diff --git a/gir-files/GstNet-1.0.gir b/gir-files/GstNet-1.0.gir index e40ea23b9..f723c1954 100644 --- a/gir-files/GstNet-1.0.gir +++ b/gir-files/GstNet-1.0.gir @@ -159,7 +159,7 @@ send @GST_MESSAGE_ELEMENT messages with an attached #GstStructure containing statistics about clock accuracy and network traffic. - Create a new #GstNetClientInternalClock that will report the time + Create a new #GstNetClientClock that will report the time provided by the #GstNetTimeProvider on @remote_address and @remote_port. @@ -799,6 +799,24 @@ calls, but otherwise returns NULL on error. + + Configures IP_TOS value of socket, i.e. sets QoS DSCP. + + + TRUE if successful, FALSE in case an error occurred. + + + + + Socket to configure + + + + QoS DSCP value + + + + Deinitialize the GStreamer PTP subsystem and stop the PTP clock. If there are any remaining GstPtpClock instances, they won't be further synchronized diff --git a/gir-files/GstPbutils-1.0.gir b/gir-files/GstPbutils-1.0.gir index 759a38360..46640c96c 100644 --- a/gir-files/GstPbutils-1.0.gir +++ b/gir-files/GstPbutils-1.0.gir @@ -65,7 +65,7 @@ audio-rate to video-rate and handles renegotiation (downstream video size changes). It also provides several background shading effects. These effects are -applied to a previous picture before the render() implementation can draw a +applied to a previous picture before the `render()` implementation can draw a new frame. @@ -849,7 +849,7 @@ gst_discoverer_stream_info_list_free(). An array of strings -containing informations about how to install the various missing elements +containing information 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. @@ -1807,6 +1807,21 @@ Can be %NULL. Unref after usage. + + + + #TRUE if the stream represented by @profile should use a single +segment before the encoder, #FALSE otherwise. This means that buffers will be retimestamped +and segments will be eat so as to appear as one segment. + + + + + a #GstEncodingProfile + + + + @@ -1898,7 +1913,7 @@ during the encoding - %FALSE to disable #profile, %TRUE to enable it + %FALSE to disable @profile, %TRUE to enable it @@ -2011,6 +2026,25 @@ for more about restrictions. Does not apply to #GstEncodingContainerProfile. + + If using a single segment, buffers will be retimestamped +and segments will be eat so as to appear as one segment. + + + + + + + a #GstEncodingProfile + + + + #TRUE if the stream represented by @profile should use a single +segment before the encoder #FALSE otherwise. + + + + @@ -2030,9 +2064,9 @@ The name and category can only consist of lowercase ASCII letters for the first character, followed by either lowercase ASCII letters, digits or hyphens ('-'). -The @category <emphasis>should</emphasis> be one of the existing +The @category *should* be one of the existing well-defined categories, like #GST_ENCODING_CATEGORY_DEVICE, but it -<emphasis>can</emphasis> be a application or user specific category if +*can* be a application or user specific category if needed. @@ -2641,7 +2675,7 @@ program and to what extent the requested plugins could be installed. some (but not all) of the requested plugins could be installed. - an error occured during the installation. If + an error occurred during the installation. If this happens, the user has already seen an error message and another one should not be displayed @@ -2666,7 +2700,7 @@ program and to what extent the requested plugins could be installed. some internal failure has - occured when trying to start the installer + occurred when trying to start the installer the helper script to call the @@ -2706,17 +2740,17 @@ in debugging. - + The micro version of GStreamer's gst-plugins-base libraries at compile time. - + The minor version of GStreamer's gst-plugins-base libraries at compile time. - + The nano version of GStreamer's gst-plugins-base libraries at compile time. Actual releases have 0, GIT versions have 1, prerelease versions have 2-... @@ -3063,7 +3097,7 @@ with bit 0 being the most significant bit of the first byte. * Bit 41 - general_interlaced_source_flag * Bit 42 - general_non_packed_constraint_flag * Bit 43 - general_frame_only_constraint_flag -* Bit 44:87 - general_reserved_zero_44bits +* Bit 44:87 - See below * Bit 88:95 - general_level_idc diff --git a/gir-files/GstPlayer-1.0.gir b/gir-files/GstPlayer-1.0.gir index a2cd241d0..df6816df4 100644 --- a/gir-files/GstPlayer-1.0.gir +++ b/gir-files/GstPlayer-1.0.gir @@ -1073,7 +1073,7 @@ value. %TRUE or %FALSE -Sets the subtitle strack @stream_index. +Sets the subtitle stack @stream_index. @@ -1567,7 +1567,7 @@ gain. Creates a new GstPlayerSignalDispatcher that uses @application_context, -or the thread default one if %NULL is used. See gst_player_new_full(). +or the thread default one if %NULL is used. See gst_player_new(). the new GstPlayerSignalDispatcher @@ -1634,7 +1634,7 @@ matching #GstPlayerAudioInfo. Function to get the image (or preview-image) stored in taglist. -Application can use gst_sample_*_() API's to get caps, buffer etc. +Application can use `gst_sample_*_()` API's to get caps, buffer etc. GstSample or NULL. @@ -1927,7 +1927,7 @@ stream. - Base structure for information concering a media stream. Depending on + Base structure for information concerning a media stream. Depending on the stream type, one can find more media-specific information in #GstPlayerVideoInfo, #GstPlayerAudioInfo, #GstPlayerSubtitleInfo. diff --git a/gir-files/GstRtp-1.0.gir b/gir-files/GstRtp-1.0.gir index c162380f3..70480a005 100644 --- a/gir-files/GstRtp-1.0.gir +++ b/gir-files/GstRtp-1.0.gir @@ -321,6 +321,8 @@ gst_rtcp_buffer_validate_reduced(). Request an SR packet for early synchronization + + Picture Loss Indication @@ -2096,7 +2098,7 @@ RTP packets always contain full frames. To use this base class, your child element needs to call either gst_rtp_base_audio_payload_set_frame_based() or gst_rtp_base_audio_payload_set_sample_based(). This is usually done in the -element's _init() function. Then, the child element must call either +element's `_init()` function. Then, the child element must call either gst_rtp_base_audio_payload_set_frame_options(), gst_rtp_base_audio_payload_set_sample_options() or gst_rtp_base_audio_payload_set_samplebits_options. Since @@ -2393,7 +2395,7 @@ audio codec Push @out_buf to the peer of @filter. This function takes ownership of @out_buf. -This function will by default apply the last incomming timestamp on +This function will by default apply the last incoming timestamp on the outgoing buffer when it didn't have a timestamp already. @@ -2447,6 +2449,13 @@ the outgoing buffer when it didn't have a timestamp already. + + Max seqnum reorder before the sender is assumed to have restarted. + +When max-reorder is set to 0 all reordered/duplicate packets are +considered coming from a restarted sender. + + Add RTP source information found in RTP header as meta to output buffer. @@ -2931,6 +2940,17 @@ timestamps for audio streams. Force buffers to be multiples of this duration in ns (0 disables) + + Make the RTP packets' timestamps be scaled with the segment's rate +(corresponding to RTSP speed parameter). Disabling this property means +the timestamps will not be affected by the set delivery speed (RTSP speed). + +Example: A server wants to allow streaming a recorded video in double +speed but still have the timestamps correspond to the position in the +video. This is achieved by the client setting RTSP Speed to 2 while the +server has this property disabled. + + @@ -2968,6 +2988,16 @@ the last processed buffer and current state of the stream being payloaded: + + The RTP header-extension ID used for tagging buffers with Transport-Wide +Congestion Control sequence-numbers. + +To use this across multiple bundled streams (transport wide), the +GstRTPFunnel can mux TWCC sequence-numbers together. + +This is experimental, as it is still a draft and not yet a standard. + + @@ -3197,7 +3227,7 @@ the last processed buffer and current state of the stream being payloaded: RTP header. If there is already a RFC 5285 header extension with a one byte header, the new extension will be appended. It will not work if there is already a header extension that does not follow -the mecanism described in RFC 5285 or if there is a header extension with +the mechanism described in RFC 5285 or if there is a header extension with a two bytes header as described in RFC 5285. In that case, use gst_rtp_buffer_add_extension_twobytes_header() @@ -3231,7 +3261,7 @@ gst_rtp_buffer_add_extension_twobytes_header() RTP header. If there is already a RFC 5285 header extension with a two bytes header, the new extension will be appended. It will not work if there is already a header extension that does not follow -the mecanism described in RFC 5285 or if there is a header extension with +the mechanism described in RFC 5285 or if there is a header extension with a one byte header as described in RFC 5285. In that case, use gst_rtp_buffer_add_extension_onebyte_header() @@ -4039,6 +4069,46 @@ into account: + + Similar to gst_rtp_buffer_get_extension_onebyte_header, but working +on the #GBytes you get from gst_rtp_buffer_get_extension_bytes. +Parses RFC 5285 style header extensions with a one byte header. It will +return the nth extension with the requested id. + + + TRUE if @bytes had the requested header extension + + + + + #GBytes + + + + The bit-pattern. Anything but 0xBEDE is rejected. + + + + The ID of the header extension to be read (between 1 and 14). + + + + Read the nth extension packet with the requested ID + + + + + location for data + + + + + + the size of the data in bytes + + + + Map the contents of @buffer into @rtp. @@ -4320,7 +4390,7 @@ channels. NULL = not applicable. mostly used to get the default clock-rate and bandwidth for dynamic payload types specified with @media and @encoding name. -The search for @encoding_name will be performed in a case insensitve way. +The search for @encoding_name will be performed in a case insensitive way. a #GstRTPPayloadInfo or NULL when no info could be found. @@ -5180,6 +5250,46 @@ into account: + + Similar to gst_rtp_buffer_get_extension_onebyte_header, but working +on the #GBytes you get from gst_rtp_buffer_get_extension_bytes. +Parses RFC 5285 style header extensions with a one byte header. It will +return the nth extension with the requested id. + + + TRUE if @bytes had the requested header extension + + + + + #GBytes + + + + The bit-pattern. Anything but 0xBEDE is rejected. + + + + The ID of the header extension to be read (between 1 and 14). + + + + Read the nth extension packet with the requested ID + + + + + location for data + + + + + + the size of the data in bytes + + + + Map the contents of @buffer into @rtp. @@ -5399,7 +5509,7 @@ extension. @data must hold at least #GST_RTP_HDREXT_NTP_64_SIZE bytes. mostly used to get the default clock-rate and bandwidth for dynamic payload types specified with @media and @encoding name. -The search for @encoding_name will be performed in a case insensitve way. +The search for @encoding_name will be performed in a case insensitive way. a #GstRTPPayloadInfo or NULL when no info could be found. diff --git a/gir-files/GstRtsp-1.0.gir b/gir-files/GstRtsp-1.0.gir index 8aa578124..cbeff02ad 100644 --- a/gir-files/GstRtsp-1.0.gir +++ b/gir-files/GstRtsp-1.0.gir @@ -111,7 +111,7 @@ state as when it was first created. - + Attempt to connect to the url of @conn made with gst_rtsp_connection_create(). If @timeout is %NULL this function can block forever. If @timeout contains a valid timeout, this function will return @@ -129,12 +129,35 @@ This function can be cancelled with gst_rtsp_connection_flush(). - a #GTimeVal timeout + a GTimeVal timeout - + + Attempt to connect to the url of @conn made with +gst_rtsp_connection_create(). If @timeout is 0 this function can block +forever. If @timeout contains a valid timeout, this function will return +#GST_RTSP_ETIMEOUT after the timeout expired. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK when a connection could be made. + + + + + a #GstRTSPConnection + + + + a timeout in microseconds + + + + + Attempt to connect to the url of @conn made with gst_rtsp_connection_create(). If @timeout is %NULL this function can block forever. If @timeout contains a valid timeout, this function will return @@ -153,7 +176,7 @@ This function can be cancelled with gst_rtsp_connection_flush(). - a #GTimeVal timeout + a GTimeVal timeout @@ -162,6 +185,34 @@ This function can be cancelled with gst_rtsp_connection_flush(). + + Attempt to connect to the url of @conn made with +gst_rtsp_connection_create(). If @timeout is 0 this function can block +forever. If @timeout contains a valid timeout, this function will return +#GST_RTSP_ETIMEOUT after the timeout expired. If @conn is set to tunneled, +@response will contain a response to the tunneling request messages. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK when a connection could be made. + + + + + a #GstRTSPConnection + + + + a timeout in microseconds + + + + a #GstRTSPMessage + + + + If @conn received the first tunnel connection and @conn2 received the second tunnel connection, link the two connections together so that @@ -395,7 +446,7 @@ error. The file descriptor remains valid until the connection is closed. - + Calculate the next timeout for @conn, storing the result in @timeout. @@ -413,7 +464,21 @@ error. The file descriptor remains valid until the connection is closed. - + + Calculate the next timeout for @conn + + + #the next timeout in microseconds + + + + + a #GstRTSPConnection + + + + + Wait up to the specified @timeout for the connection to become available for at least one of the operations specified in @events. When the function returns with #GST_RTSP_OK, @revents will contain a bitmask of available operations on @@ -446,7 +511,40 @@ This function can be cancelled with gst_rtsp_connection_flush(). - + + Wait up to the specified @timeout for the connection to become available for +at least one of the operations specified in @events. When the function returns +with #GST_RTSP_OK, @revents will contain a bitmask of available operations on +@conn. + +@timeout can be 0, in which case this function might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + a bitmask of #GstRTSPEvent flags to check + + + + location for result flags + + + + a timeout in microseconds + + + + + Attempt to read @size bytes into @data from the connected @conn, blocking up to the specified @timeout. @timeout can be %NULL, in which case this function might block forever. @@ -476,7 +574,37 @@ This function can be cancelled with gst_rtsp_connection_flush(). - + + Attempt to read @size bytes into @data from the connected @conn, blocking up to +the specified @timeout. @timeout can be 0, in which case this function +might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the data to read + + + + the size of @data + + + + a timeout value in microseconds + + + + + Attempt to read into @message from the connected @conn, blocking up to the specified @timeout. @timeout can be %NULL, in which case this function might block forever. @@ -502,6 +630,32 @@ This function can be cancelled with gst_rtsp_connection_flush(). + + Attempt to read into @message from the connected @conn, blocking up to +the specified @timeout. @timeout can be 0, in which case this function +might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the message to read + + + + a timeout value or 0 + + + + Reset the timeout of @conn. @@ -516,7 +670,7 @@ This function can be cancelled with gst_rtsp_connection_flush(). - + Attempt to send @message to the connected @conn, blocking up to the specified @timeout. @timeout can be %NULL, in which case this function might block forever. @@ -542,7 +696,7 @@ This function can be cancelled with gst_rtsp_connection_flush(). - + Attempt to send @messages to the connected @conn, blocking up to the specified @timeout. @timeout can be %NULL, in which case this function might block forever. @@ -574,6 +728,64 @@ This function can be cancelled with gst_rtsp_connection_flush(). + + Attempt to send @messages to the connected @conn, blocking up to +the specified @timeout. @timeout can be 0, in which case this function +might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on Since. + + + + + a #GstRTSPConnection + + + + the messages to send + + + + + + the number of messages to send + + + + a timeout value in microseconds + + + + + + Attempt to send @message to the connected @conn, blocking up to +the specified @timeout. @timeout can be 0, in which case this function +might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the message to send + + + + a timeout value in microseconds + + + + Sets a custom accept-certificate function for checking certificates for validity. This will directly map to #GTlsConnection 's "accept-certificate" @@ -632,7 +844,7 @@ user and password respectively. - Setup @conn with authentication directives. This is not necesary for + Setup @conn with authentication directives. This is not necessary for methods #GST_RTSP_AUTH_NONE and #GST_RTSP_AUTH_BASIC. For #GST_RTSP_AUTH_DIGEST, directives should be taken from the digest challenge in the WWW-Authenticate response header and can include realm, domain, @@ -656,6 +868,25 @@ nonce, opaque, stale, algorithm, qop as per RFC2617. + + Configure @conn to use the specified Content-Length limit. +Both requests and responses are validated. If content-length is +exceeded, ENOMEM error will be returned. + + + + + + + a #GstRTSPConnection + + + + Content-Length limit + + + + By setting the HTTP mode to %TRUE the message parsing will support HTTP messages in addition to the RTSP messages. It will also disable the @@ -828,7 +1059,7 @@ the @conn is connected. - + Attempt to write @size bytes of @data to the connected @conn, blocking up to the specified @timeout. @timeout can be %NULL, in which case this function might block forever. @@ -858,6 +1089,36 @@ This function can be cancelled with gst_rtsp_connection_flush(). + + Attempt to write @size bytes of @data to the connected @conn, blocking up to +the specified @timeout. @timeout can be 0, in which case this function +might block forever. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the data to write + + + + the size of @data + + + + a timeout value or 0 + + + + Accept a new connection on @socket and create a new #GstRTSPConnection for handling communication on new socket. @@ -2654,7 +2915,7 @@ UTC times will be converted to nanoseconds since 1900. no error - some unspecified error occured + some unspecified error occurred invalid arguments were provided to a function @@ -2666,16 +2927,16 @@ UTC times will be converted to nanoseconds since 1900. no memory was available for the operation - a host resolve error occured + a host resolve error occurred function not implemented - a system error occured, errno contains more details + a system error occurred, errno contains more details - a parsing error occured + a parsing error occurred windows networking could not start @@ -2687,13 +2948,13 @@ UTC times will be converted to nanoseconds since 1900. end-of-file was reached - a network problem occured, h_errno contains more details + a network problem occurred, h_errno contains more details the host is not an IP host - a timeout occured + a timeout occurred the tunnel GET request has been performed @@ -3249,6 +3510,28 @@ g_strfreev() when no longer needed. + + Get a newly allocated string describing the request URI for @url +combined with the control path for @control_path + + + a string with the request URI combined with the control path. +g_free() after usage. + +Since 1.18 + + + + + a #GstRTSPUrl + + + + an RTSP aggregate control path + + + + Set the port number in @url to @port. @@ -3493,7 +3776,7 @@ count is zero the watch and associated memory will be destroyed. - + Wait until there is place in the backlog queue, @timeout is reached or @watch is set to flushing. @@ -3518,11 +3801,41 @@ free space in the backlog queue and try again. - a #GTimeVal timeout + a GTimeVal timeout + + Wait until there is place in the backlog queue, @timeout is reached +or @watch is set to flushing. + +If @timeout is 0 this function can block forever. If @timeout +contains a valid timeout, this function will return %GST_RTSP_ETIMEOUT +after the timeout expired. + +The typically use of this function is when gst_rtsp_watch_write_data +returns %GST_RTSP_ENOMEM. The caller then calls this function to wait for +free space in the backlog queue and try again. + + + %GST_RTSP_OK when if there is room in queue. + %GST_RTSP_ETIMEOUT when @timeout was reached. + %GST_RTSP_EINTR when @watch is flushing + %GST_RTSP_EINVAL when called with invalid parameters. + + + + + a #GstRTSPWatch + + + + a timeout in microseconds + + + + Write @data using the connection of the @watch. If it cannot be sent immediately, it will be queued for transmission in @watch. The contents of diff --git a/gir-files/GstRtspServer-1.0.gir b/gir-files/GstRtspServer-1.0.gir index fd3cda4ae..daf5e68e9 100644 --- a/gir-files/GstRtspServer-1.0.gir +++ b/gir-files/GstRtspServer-1.0.gir @@ -1113,6 +1113,49 @@ no one else overrides it. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1662,6 +1705,20 @@ The connection object returned remains valid until the client is freed. + + Get the Content-Length limit of @client. + + + the Content-Length limit. + + + + + a #GstRTSPClient + + + + Get the #GstRTSPMountPoints object that @client uses to manage its sessions. @@ -1690,6 +1747,26 @@ The connection object returned remains valid until the client is freed. + + This is useful when providing a send function through +gst_rtsp_client_set_send_func() when doing RTSP over TCP: +the send function must call gst_rtsp_stream_transport_message_sent () +on the appropriate transport when data has been received for streaming +to continue. + + + the #GstRTSPStreamTransport associated with @channel. + + + + + + + + + + + Get the #GstRTSPThreadPool used as the thread pool of @client. @@ -1821,6 +1898,26 @@ element in the #GList should be unreffed before the list is freed. + + Configure @client to use the specified Content-Length limit. + +Define an appropriate request size limit and reject requests exceeding the +limit with response status 413 Request Entity Too Large + + + + + + + a #GstRTSPClient + + + + Content-Length limit + + + + Set @mounts as the mount points for @client which it will use to map urls to media streams. These mount points are usually inherited from the server that @@ -1948,6 +2045,9 @@ that created the client but can be overridden later. + + + @@ -2375,6 +2475,53 @@ that created the client but can be overridden later. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2820,7 +2967,7 @@ that created the client but can be overridden later. - + @@ -3009,7 +3156,7 @@ context can then be received using gst_rtsp_context_get_current(). - a ##GstRTSPContext + a #GstRTSPContext @@ -3646,6 +3793,43 @@ gst_rtsp_media_prepare (). + + + + whether @media will follow the Rate-Control=no behaviour as specified +in the ONVIF replay spec. + + + + + + + + + + Get the rate and applied_rate of the current segment. + + + %FALSE if looking up the rate and applied rate failed. Otherwise +%TRUE is returned and @rate and @applied_rate are set to the rate and +applied_rate of the current segment. + + + + + a #GstRTSPMedia +@rate (allow-none): the rate of the current segment +@applied_rate (allow-none): the applied_rate of the current segment + + + + + + + + + + Get the amount of time to store retransmission data. @@ -3763,6 +3947,19 @@ will listen on @address and @port for client time requests. + + See gst_rtsp_stream_is_complete(), gst_rtsp_stream_is_sender(). + + + whether @media has at least one complete sender stream. + + + + + + + + Check if multicast sockets are configured to be bound to multicast addresses. @@ -3792,6 +3989,18 @@ unpreparing. + + + + %TRUE if @media is receive-only, %FALSE otherwise. + + + + + + + + Check if the pipeline for @media can be reused after an unprepare. @@ -3852,6 +4061,27 @@ Use gst_rtsp_media_get_time_provider() to get the network clock. + + Lock the entire media. This is needed by callers such as rtsp_client to +protect the media when it is shared by many clients. +The lock prevents that concurrent clients alters the shared media, +while one client already is working with it. +Typically the lock is taken in external RTSP API calls that uses shared media +such as DESCRIBE, SETUP, ANNOUNCE, TEARDOWN, PLAY, PAUSE. + +As best practice take the lock as soon as the function get hold of a shared +media object. Release the lock right before the function returns. + + + + + + + a #GstRTSPMedia + + + + Get the number of streams in this media. @@ -3909,10 +4139,9 @@ gst_rtsp_media_prepare(). - - Seek the pipeline of @media to @range. @media must be prepared with -gst_rtsp_media_prepare(). In order to perform the seek operation, -the pipeline must contain all needed transport parts (transport sinks). + + Seek the pipeline of @media to @range with the given @flags. +@media must be prepared with gst_rtsp_media_prepare(). %TRUE on success. @@ -3933,6 +4162,40 @@ the pipeline must contain all needed transport parts (transport sinks). + + Seek the pipeline of @media to @range with the given @flags and @rate, +and @trickmode_interval. +@media must be prepared with gst_rtsp_media_prepare(). +In order to perform the seek operation, the pipeline must contain all +needed transport parts (transport sinks). + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPTimeRange + + + + The minimal set of #GstSeekFlags to use + + + + the rate to use in the seek + + + + The trickmode interval to use for KEY_UNITS trick mode + + + + Check if the pipeline for @media seek and up to what point in time, it can seek. @@ -4189,6 +4452,22 @@ it is unprepared. + + Define whether @media will follow the Rate-Control=no behaviour as specified +in the ONVIF replay spec. + + + + + + + + + + + + + Set the amount of time to store retransmission packets. @@ -4378,12 +4657,25 @@ taken of @pipeline. a #GstRTSPMedia - + a #GstPipeline + + Unlock the media. + + + + + + + a #GstRTSPMedia + + + + Unprepare @media. After this call, the media should be prepared again before it can be used again. If the media is set to be non-reusable, a new instance @@ -5909,7 +6201,7 @@ when a client disconnects without sending TEARDOWN. - A media factory that creates a pipeline to play and uri. + A media factory that creates a pipeline to play any uri. Create a new #GstRTSPMediaFactoryURI instance. @@ -6017,7 +6309,10 @@ and called when a message has been sent on the transport. - + + + + user data @@ -6187,6 +6482,14 @@ g_object_unref() after usage. + + Create a new #GstRTSPOnvifClient instance. + + + a new #GstRTSPOnvifClient + + + @@ -6370,6 +6673,18 @@ usage. + + + + %TRUE if ONVIF replay is supported by the media factory. + + + + + + + + Set the configured/supported bandwidth of the ONVIF backchannel pipeline in bits per second. @@ -6420,6 +6735,21 @@ prepare. + + Set to %TRUE if ONVIF replay is supported by the media factory. + + + + + + + + + + + + + @@ -6974,6 +7304,20 @@ usage. + + Get the Content-Length limit of @server. + + + the Content-Length limit. + + + + + a #GstRTSPServer + + + + Get the #GstRTSPMountPoints used as the mount points of @server. @@ -7089,6 +7433,24 @@ This function must be called before the server is bound. + + Define an appropriate request size limit and reject requests exceeding the +limit. + + + + + + + a #GstRTSPServer +Configure @server to use the specified Content-Length limit. + + + + + + + configure @mounts to be used as the mount points of @server. @@ -7207,6 +7569,9 @@ that the HTTP server read from the socket while parsing the HTTP header. + + + @@ -7614,6 +7979,9 @@ cleaned up when there is no activity for @timeout seconds. + + + @@ -8024,8 +8392,7 @@ what happens to the session. @func will be called with the session pool locked so no further actions on @pool can be performed from @func. If @func returns #GST_RTSP_FILTER_REMOVE, the session will be set to the -expired state with gst_rtsp_session_set_expired() and removed from -@pool. +expired state and removed from @pool. If @func returns #GST_RTSP_FILTER_KEEP, the session will remain in @pool. @@ -8344,7 +8711,8 @@ allocated. Add the transport in @trans to @stream. The media of @stream will -then also be send to the values configured in @trans. +then also be send to the values configured in @trans. Adding the +same transport twice will not add it a second time. @stream must be joined to a bin. @@ -8656,6 +9024,41 @@ g_free() after usage. + + + + whether @stream will follow the Rate-Control=no behaviour as specified +in the ONVIF replay spec. + + + + + + + + + + Retrieve the current rate and/or applied_rate. + + + %TRUE if rate and/or applied_rate could be determined. + + + + + a #GstRTSPStream + + + + the configured rate + + + + the configured applied_rate + + + + Get the payload-type used for retransmission of this stream @@ -9591,6 +9994,22 @@ an RTSP connection. + + Define whether @stream will follow the Rate-Control=no behaviour as specified +in the ONVIF replay spec. + + + + + + + + + + + + + Set the payload type (pt) for retransmission of this stream. @@ -11203,6 +11622,10 @@ port pair in multicast. No response is sent when the check returns + + + + diff --git a/gir-files/GstSdp-1.0.gir b/gir-files/GstSdp-1.0.gir index f3911e777..224d58a42 100644 --- a/gir-files/GstSdp-1.0.gir +++ b/gir-files/GstSdp-1.0.gir @@ -379,7 +379,7 @@ in NTP-UTC format. - Find the @nth occurence of the payload with @type in @msg. + Find the @nth occurrence of the payload with @type in @msg. the @nth #GstMIKEYPayload of @type. @@ -1218,7 +1218,7 @@ specific security protocol - A Type/Length/Value field for security paramaters + A Type/Length/Value field for security parameters specifies the type of the parameter @@ -1280,7 +1280,7 @@ specific security protocol Cert hash payload - Verfication message payload + Verification message payload Security Policy payload @@ -1935,7 +1935,9 @@ a=rtpmap:(payload) (encoding_name)/(clock_rate)[/(encoding_params)] a=framesize:(payload) (width)-(height) -a=fmtp:(payload) (param)[=(value)];... +a=fmtp:(payload) (param)[=(value)];... + +Note that the extmap attribute is set only by gst_sdp_media_attributes_to_caps(). a #GstCaps, or %NULL if an error happened @@ -2499,7 +2501,9 @@ a=framesize:(payload) (width)-(height) a=fmtp:(payload) (param)[=(value)];... -a=rtcp-fb:(payload) (param1) [param2]... +a=rtcp-fb:(payload) (param1) [param2]... + +a=extmap:(id)[/direction] (extensionname) (extensionattributes) a #GstSDPResult. @@ -4158,7 +4162,9 @@ a=framesize:(payload) (width)-(height) a=fmtp:(payload) (param)[=(value)];... -a=rtcp-fb:(payload) (param1) [param2]... +a=rtcp-fb:(payload) (param1) [param2]... + +a=extmap:(id)[/direction] (extensionname) (extensionattributes) a #GstSDPResult. diff --git a/gir-files/GstTag-1.0.gir b/gir-files/GstTag-1.0.gir index 05b50143d..78b19ce91 100644 --- a/gir-files/GstTag-1.0.gir +++ b/gir-files/GstTag-1.0.gir @@ -43,6 +43,16 @@ and/or use gtk-doc annotations. --> + + AcoustID Fingerprint (Chromaprint) + + + + + AcoustID Identifier + + + Direction of contrast processing applied when capturing an image. (string) @@ -311,6 +321,16 @@ keys. + + MusicBrainz Release Group ID + + + + + MusicBrainz Release Track ID + + + MusicBrainz track ID @@ -1062,7 +1082,7 @@ code (both are accepted for convenience). The "bibliographic" code is derived from the English name of the language (e.g. "ger" for German instead of "de" or "deu"). In most scenarios, the -"terminological" codes are prefered. +"terminological" codes are preferred. Language codes are case-sensitive and expected to be lower case. @@ -1086,7 +1106,7 @@ code (both are accepted for convenience). The "terminological" code is derived from the local name of the language (e.g. "deu" for German instead of "ger"). In most scenarios, the -"terminological" codes are prefered over the "bibliographic" ones. +"terminological" codes are preferred over the "bibliographic" ones. Language codes are case-sensitive and expected to be lower case. @@ -1296,7 +1316,7 @@ rather than the image itself. In GStreamer, image tags are #GstSample<!-- -->s containing the raw image data, with the sample caps describing the content type of the image (e.g. image/jpeg, image/png, text/uri-list). The sample info may contain -an additional 'image-type' field of #GST_TYPE_TAG_IMAGE_TYPE to describe +an additional 'image-type' field of #GstTagImageType to describe the type of image (front cover, back cover etc.). #GST_TAG_PREVIEW_IMAGE tags should not carry an image type, their type is already indicated via the special tag name. diff --git a/gir-files/GstVideo-1.0.gir b/gir-files/GstVideo-1.0.gir index bde11ddaa..466ffa4dd 100644 --- a/gir-files/GstVideo-1.0.gir +++ b/gir-files/GstVideo-1.0.gir @@ -37,8 +37,19 @@ on buffers from the pool. - Name of the caps feature indicating that the stream is interlaced. Currently -it is only used for video. + Name of the caps feature indicating that the stream is interlaced. + +Currently it is only used for video with 'interlace-mode=alternate' +to ensure backwards compatibility for this new mode. +In this mode each buffer carries a single field of interlaced video. +@GST_VIDEO_BUFFER_FLAG_TOP_FIELD and @GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD +indicate whether the buffer carries a top or bottom field. The order of +buffers/fields in the stream and the timestamps on the buffers indicate the +temporal order of the fields. +Top and bottom fields are expected to alternate in this mode. +The frame rate in the caps still signals the frame rate, so the notional field +rate will be twice the frame rate from the caps +(see @GST_VIDEO_INFO_FIELD_RATE_N). @@ -856,6 +867,41 @@ of the event. Pointer to a gdouble to receive the y coordinate of the + mouse movement. + + + + + + Inspect a #GstNavigation mouse scroll event and extract the coordinates +of the event. + + + TRUE if all coordinates could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a gdouble to receive the x coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the y coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the delta_x coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the delta_y coordinate of the mouse movement. @@ -1296,6 +1342,38 @@ for mouse-move events. + + Sends a mouse scroll event to the navigation interface. Mouse event coordinates +are sent relative to the display space of the related output area. This is +usually the size in pixels of the window associated with the element +implementing the #GstNavigation interface. + + + + + + + The navigation interface instance + + + + The x coordinate of the mouse event. + + + + The y coordinate of the mouse event. + + + + The delta_x coordinate of the mouse event. + + + + The delta_y coordinate of the mouse event. + + + + A set of commands that may be issued to an element providing the @@ -1404,6 +1482,11 @@ event. A navigation command event. Use gst_navigation_event_parse_command() to extract the details from the event. + + A mouse scroll event. Use +gst_navigation_event_parse_mouse_scroll_event() to extract the details from +the event. + Navigation interface. @@ -1456,7 +1539,7 @@ by any element in the pipeline (Since: 1.6) - Tyoes of navigation interface queries. + Types of navigation interface queries. invalid query @@ -1553,6 +1636,24 @@ by any element in the pipeline (Since: 1.6) + + Check if GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD is set on @buf (Since: 1.18). + + + + a #GstBuffer + + + + + Check if GST_VIDEO_BUFFER_FLAG_TOP_FIELD is set on @buf (Since: 1.18). + + + + a #GstBuffer + + + @@ -1746,6 +1847,18 @@ detect such a synchronization point. + + + + + + + + + + + + @@ -1799,7 +1912,7 @@ detect such a synchronization point. - #GST_TYPE_VIDEO_ALPHA_MODE, the alpha mode to use. + #GstVideoAlphaMode, the alpha mode to use. Default is #GST_VIDEO_ALPHA_MODE_COPY. @@ -1818,13 +1931,13 @@ Default 0xff000000 - #GST_TYPE_VIDEO_CHROMA_MODE, set the chroma resample mode subsampled + #GstVideoChromaMode, set the chroma resample mode subsampled formats. Default is #GST_VIDEO_CHROMA_MODE_FULL. - #GST_TYPE_VIDEO_RESAMPLER_METHOD, The resampler method to use for + #GstVideoChromaMethod, The resampler method to use for chroma resampling. Other options for the resampler can be used, see the #GstVideoResampler. Default is #GST_VIDEO_RESAMPLER_METHOD_LINEAR @@ -1851,7 +1964,7 @@ the #GstVideoResampler. Default is #GST_VIDEO_RESAMPLER_METHOD_LINEAR - #GST_TYPE_VIDEO_DITHER_METHOD, The dither method to use when + #GstVideoDitherMethod, The dither method to use when changing bit depth. Default is #GST_VIDEO_DITHER_BAYER. @@ -1873,26 +1986,26 @@ destination are untouched. Default %TRUE. - #GST_TYPE_VIDEO_GAMMA_MODE, set the gamma mode. + #GstVideoGammaMode, set the gamma mode. Default is #GST_VIDEO_GAMMA_MODE_NONE. - #GST_TYPE_VIDEO_MATRIX_MODE, set the color matrix conversion mode for + #GstVideoMatrixMode, set the color matrix conversion mode for converting between Y'PbPr and non-linear RGB (R'G'B'). Default is #GST_VIDEO_MATRIX_MODE_FULL. - #GST_TYPE_VIDEO_PRIMARIES_MODE, set the primaries conversion mode. + #GstVideoPrimariesMode, set the primaries conversion mode. Default is #GST_VIDEO_PRIMARIES_MODE_NONE. - #GST_TYPE_VIDEO_RESAMPLER_METHOD, The resampler method to use for + #GstVideoResamplerMethod, The resampler method to use for resampling. Other options for the resampler can be used, see the #GstVideoResampler. Default is #GST_VIDEO_RESAMPLER_METHOD_CUBIC @@ -2204,7 +2317,7 @@ return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK). - + @@ -2959,6 +3072,25 @@ beginning of the next row is aligned in a particular way). + + The padded height in pixels of a plane (padded size divided by the plane stride). +In case of GST_VIDEO_INTERLACE_MODE_ALTERNATE info, this macro returns the +plane heights used to hold a single field, not the full frame. + +The size passed as third argument is the size of the pixel data and should +not contain any extra metadata padding. + +It is not valid to use this macro with a TILED format. + + + + + + + + + + @@ -3055,12 +3187,6 @@ beginning of the next row is aligned in a particular way). - - Video formats supported by gst_video_overlay_composition_blend(), for -use in overlay elements' pad template caps. - - - @@ -3145,7 +3271,7 @@ See #GST_VIDEO_RESAMPLER_OPT_CUBIC_B for some more common values - #GST_TYPE_VIDEO_DITHER_METHOD, The dither method to use for propagating + #GstVideoDitherMethod, The dither method to use for propagating quatization errors. @@ -3292,6 +3418,150 @@ quatization errors. + + Active Format Description (AFD) + +For details, see Table 6.14 Active Format in: + +ATSC Digital Television Standard: +Part 4 – MPEG-2 Video System Characteristics + +https://www.atsc.org/wp-content/uploads/2015/03/a_53-Part-4-2009.pdf + +and Active Format Description in Complete list of AFD codes + +https://en.wikipedia.org/wiki/Active_Format_Description#Complete_list_of_AFD_codes + +and SMPTE ST2016-1 + + + parent #GstMeta + + + + 0 for progressive or field 1 and 1 for field 2 + + + + #GstVideoAFDSpec that applies to @afd + + + + #GstVideoAFDValue AFD value + + + + + + + + + + + Enumeration of the different standards that may apply to AFD data: + +0) ETSI/DVB: +https://www.etsi.org/deliver/etsi_ts/101100_101199/101154/02.01.01_60/ts_101154v020101p.pdf + +1) ATSC A/53: +https://www.atsc.org/wp-content/uploads/2015/03/a_53-Part-4-2009.pdf + +2) SMPTE ST2016-1: + +Since 1.18 + + AFD value is from DVB/ETSI standard + + + AFD value is from ATSC A/53 standard + + + + + + Enumeration of the various values for Active Format Description (AFD) + +AFD should be included in video user data whenever the rectangular +picture area containing useful information does not extend to the full height or width of the coded +frame. AFD data may also be included in user data when the rectangular picture area containing +useful information extends to the full height and width of the coded frame. + +For details, see Table 6.14 Active Format in: + +ATSC Digital Television Standard: +Part 4 – MPEG-2 Video System Characteristics + +https://www.atsc.org/wp-content/uploads/2015/03/a_53-Part-4-2009.pdf + +and Active Format Description in Complete list of AFD codes + +https://en.wikipedia.org/wiki/Active_Format_Description#Complete_list_of_AFD_codes + +and SMPTE ST2016-1 + +Notes: + +1) AFD 0 is undefined for ATSC and SMPTE ST2016-1, indicating that AFD data is not available: +If Bar Data is not present, AFD '0000' indicates that exact information +is not available and the active image should be assumed to be the same as the coded frame. AFD '0000'. +AFD '0000' accompanied by Bar Data signals that the active image’s aspect ratio is narrower than 16:9, +but is not 4:3 or 14:9. As the exact aspect ratio cannot be conveyed by AFD alone, wherever possible, +AFD ‘0000’ should be accompanied by Bar Data to define the exact vertical or horizontal extent +of the active image. +2) AFD 0 is reserved for DVB/ETSI +3) values 1, 5, 6, 7, and 12 are reserved for both ATSC and DVB/ETSI +4) values 2 and 3 are not recommended for ATSC, but are valid for DVB/ETSI + + Unavailable (see note 0 below). + + + For 4:3 coded frame, letterbox 16:9 image, + at top of the coded frame. For 16:9 coded frame, full frame 16:9 image, + the same as the coded frame. + + + For 4:3 coded frame, letterbox 14:9 image, + at top of the coded frame. For 16:9 coded frame, pillarbox 14:9 image, + horizontally centered in the coded frame. + + + For 4:3 coded frame, letterbox image with an aspect ratio + greater than 16:9, vertically centered in the coded frame. For 16:9 coded frame, + letterbox image with an aspect ratio greater than 16:9. + + + For 4:3 coded frame, full frame 4:3 image, + the same as the coded frame. For 16:9 coded frame, full frame 16:9 image, the same as + the coded frame. + + + For 4:3 coded frame, full frame 4:3 image, the same as + the coded frame. For 16:9 coded frame, pillarbox 4:3 image, horizontally centered in the + coded frame. + + + For 4:3 coded frame, letterbox 16:9 image, vertically centered in + the coded frame with all image areas protected. For 16:9 coded frame, full frame 16:9 image, + with all image areas protected. + + + For 4:3 coded frame, letterbox 14:9 image, vertically centered in + the coded frame. For 16:9 coded frame, pillarbox 14:9 image, horizontally centered in the + coded frame. + + + For 4:3 coded frame, full frame 4:3 image, with alternative 14:9 + center. For 16:9 coded frame, pillarbox 4:3 image, with alternative 14:9 center. + + + For 4:3 coded frame, letterbox 16:9 image, with alternative 14:9 + center. For 16:9 coded frame, full frame 16:9 image, with alternative 14:9 center. + + + For 4:3 coded frame, letterbox 16:9 image, with alternative 4:3 + center. For 16:9 coded frame, full frame 16:9 image, with alternative 4:3 center. + + @@ -3664,10 +3934,10 @@ update for any changes that have happened. Returns the currently queued buffer that is going to be used for the current output frame. -This must only be called from the aggregate_frames() virtual method, -or from the prepare_frame() virtual method of the aggregator pads. +This must only be called from the #GstVideoAggregatorClass::aggregate_frames virtual method, +or from the #GstVideoAggregatorPadClass::prepare_frame virtual method of the aggregator pads. -The return value is only valid until aggregate_frames() or prepare_frames() +The return value is only valid until #GstVideoAggregatorClass::aggregate_frames or #GstVideoAggregatorPadClass::prepare_frame returns. @@ -3685,10 +3955,10 @@ returns. Returns the currently prepared video frame that has to be aggregated into the current output frame. -This must only be called from the aggregate_frames() virtual method, -or from the prepare_frame() virtual method of the aggregator pads. +This must only be called from the #GstVideoAggregatorClass::aggregate_frames virtual method, +or from the #GstVideoAggregatorPadClass::prepare_frame virtual method of the aggregator pads. -The return value is only valid until aggregate_frames() or prepare_frames() +The return value is only valid until #GstVideoAggregatorClass::aggregate_frames or #GstVideoAggregatorPadClass::prepare_frame returns. @@ -3706,8 +3976,8 @@ returns. Checks if the pad currently has a buffer queued that is going to be used for the current output frame. -This must only be called from the aggregate_frames() virtual method, -or from the prepare_frame() virtual method of the aggregator pads. +This must only be called from the #GstVideoAggregatorClass::aggregate_frames virtual method, +or from the #GstVideoAggregatorPadClass::prepare_frame virtual method of the aggregator pads. %TRUE if the pad has currently a buffer queued @@ -3737,6 +4007,9 @@ or from the prepare_frame() virtual method of the aggregator pads. + + + @@ -3959,11 +4232,58 @@ the parity check bits). AFD/Bar Ancillary data according to SMPTE 2016-3 (Since: 1.18) + + Bar data should be included in video user data +whenever the rectangular picture area containing useful information +does not extend to the full height or width of the coded frame +and AFD alone is insufficient to describe the extent of the image. + +Note: either vertical or horizontal bars are specified, but not both. + +For more details, see: + +https://www.atsc.org/wp-content/uploads/2015/03/a_53-Part-4-2009.pdf + +and SMPTE ST2016-1 + + + parent #GstMeta + + + + 0 for progressive or field 1 and 1 for field 2 + + + + if true then bar data specifies letterbox, otherwise pillarbox + + + + If @is_letterbox is true, then the value specifies the + last line of a horizontal letterbox bar area at top of reconstructed frame. + Otherwise, it specifies the last horizontal luminance sample of a vertical pillarbox + bar area at the left side of the reconstructed frame + + + + If @is_letterbox is true, then the value specifies the + first line of a horizontal letterbox bar area at bottom of reconstructed frame. + Otherwise, it specifies the first horizontal + luminance sample of a vertical pillarbox bar area at the right side of the reconstructed frame. + + + + + + + + + Additional video buffer flags. These flags can potentially be used on any -buffers carrying video data - even encoded data. +buffers carrying closed caption data, or video data - even encoded data. -Note that these are only valid for #GstCaps of type: video/... +Note that these are only valid for #GstCaps of type: video/... and caption/... They can conflict with other extended buffer flags. If the #GstBuffer is interlaced. In mixed @@ -3990,7 +4310,7 @@ They can conflict with other extended buffer flags. such as left or right eye view. This flags is set on any buffer that contains non-mono content - even for streams that contain only a single viewpoint. In mixed - mono / non-mono streams, the absense of the flag marks + mono / non-mono streams, the absence of the flag marks mono buffers. @@ -4001,12 +4321,18 @@ They can conflict with other extended buffer flags. The video frame has the top field only. This is the same as GST_VIDEO_BUFFER_FLAG_TFF | - GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16). + GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16). + Use GST_VIDEO_BUFFER_IS_TOP_FIELD() to check for this flag. The video frame has the bottom field only. This is the same as GST_VIDEO_BUFFER_FLAG_ONEFIELD - (GST_VIDEO_BUFFER_FLAG_TFF flag unset) (Since: 1.16). + (GST_VIDEO_BUFFER_FLAG_TFF flag unset) (Since: 1.16). + Use GST_VIDEO_BUFFER_IS_BOTTOM_FIELD() to check for this flag. + + + The #GstBuffer contains the end of a video field or frame + boundary such as the last subframe or packet (Since: 1.18). Offset to define more flags @@ -4371,6 +4697,9 @@ encoded form. + + + @@ -4553,6 +4882,24 @@ non-linear RGB (R'G'B') ITU-R BT.2020 color matrix. Since: 1.6 + + Converts the @value to the #GstVideoColorMatrix +The matrix coefficients (MatrixCoefficients) value is +defined by "ISO/IEC 23001-8 Section 7.3 Table 4" +and "ITU-T H.273 Table 4". +"H.264 Table E-5" and "H.265 Table E.5" share the identical values. + + + the matched #GstVideoColorMatrix + + + + + a ITU-T H.273 matrix coefficients value + + + + Get the coefficients used to convert between Y'PbPr and R'G'B' using @matrix. @@ -4599,6 +4946,23 @@ and the other way around: + + Converts #GstVideoColorMatrix to the "matrix coefficients" +(MatrixCoefficients) value defined by "ISO/IEC 23001-8 Section 7.3 Table 4" +and "ITU-T H.273 Table 4". +"H.264 Table E-5" and "H.265 Table E.5" share the identical values. + + + The value of ISO/IEC 23001-8 matrix coefficients. + + + + + a #GstVideoColorMatrix + + + + The color primaries define the how to transform linear RGB values to and from @@ -4642,6 +5006,23 @@ the CIE XYZ colorspace. EBU 3213 primaries. Since: 1.16 + + Converts the @value to the #GstVideoColorPrimaries +The colour primaries (ColourPrimaries) value is +defined by "ISO/IEC 23001-8 Section 7.1 Table 2" and "ITU-T H.273 Table 2". +"H.264 Table E-3" and "H.265 Table E.3" share the identical values. + + + the matched #GstVideoColorPrimaries + + + + + a ITU-T H.273 colour primaries value + + + + Get information about the chromaticity coordinates of @primaries. @@ -4656,6 +5037,23 @@ the CIE XYZ colorspace. + + Converts #GstVideoColorPrimaries to the "colour primaries" (ColourPrimaries) +value defined by "ISO/IEC 23001-8 Section 7.1 Table 2" +and "ITU-T H.273 Table 2". +"H.264 Table E-3" and "H.265 Table E.3" share the identical values. + + + The value of ISO/IEC 23001-8 colour primaries. + + + + + a #GstVideoColorPrimaries + + + + Structure describing the chromaticity coordinates of an RGB system. These @@ -4829,8 +5227,9 @@ information in @info. Make a string representation of @cinfo. - - a string representation of @cinfo. + + a string representation of @cinfo +or %NULL if all the entries of @cinfo are unknown values. @@ -4841,6 +5240,107 @@ information in @info. + + Content light level information specified in CEA-861.3, Appendix A. + + + the maximum content light level + (abbreviated to MaxCLL) in candelas per square meter (cd/m^2 and nit) + + + + the maximum frame average light level + (abbreviated to MaxFLL) in candelas per square meter (cd/m^2 and nit) + + + + + + + + + Parse @caps and update @linfo + + + %TRUE if @linfo was successfully set to @caps + + + + + a #GstVideoContentLightLevel + + + + a #GstCaps + + + + + + Parse @caps and update @linfo + + + if @caps has #GstVideoContentLightLevel and could be parsed + + + + + a #GstVideoContentLightLevel + + + + a #GstCaps + + + + + + Parse the value of content-light-level caps field and update @minfo +with the parsed values. + + + %TRUE if @linfo points to valid #GstVideoContentLightLevel. + + + + + a #GstVideoContentLightLevel + + + + a content-light-level string from caps + + + + + + Initialize @linfo + + + + + + + a #GstVideoContentLightLevel + + + + + + Convert @linfo to its string representation. + + + a string representation of @linfo. + + + + + a #GstVideoContentLightLevel + + + + + @@ -4910,13 +5410,13 @@ information in @info. - Set @config as extra configuraion for @convert. + Set @config as extra configuration for @convert. If the parameters in @config can not be set exactly, this function returns %FALSE and will try to update as much state as possible. The new state can then be retrieved and refined with gst_video_converter_get_config(). -Look at the #GST_VIDEO_CONVERTER_OPT_* fields to check valid configuration +Look at the `GST_VIDEO_CONVERTER_OPT_*` fields to check valid configuration option and values. @@ -5013,20 +5513,20 @@ follows: ## Data processing - * The base class gathers input data, and optionally allows subclass - to parse this into subsequently manageable chunks, typically - corresponding to and referred to as 'frames'. + * The base class gathers input data, and optionally allows subclass + to parse this into subsequently manageable chunks, typically + corresponding to and referred to as 'frames'. - * Each input frame is provided in turn to the subclass' @handle_frame - callback. - The ownership of the frame is given to the @handle_frame callback. + * Each input frame is provided in turn to the subclass' @handle_frame + callback. + The ownership of the frame is given to the @handle_frame callback. - * If codec processing results in decoded data, the subclass should call - @gst_video_decoder_finish_frame to have decoded data pushed. - downstream. Otherwise, the subclass must call - @gst_video_decoder_drop_frame, to allow the base class to do timestamp - and offset tracking, and possibly to requeue the frame for a later - attempt in the case of reverse playback. + * If codec processing results in decoded data, the subclass should call + @gst_video_decoder_finish_frame to have decoded data pushed. + downstream. Otherwise, the subclass must call + @gst_video_decoder_drop_frame, to allow the base class to do timestamp + and offset tracking, and possibly to requeue the frame for a later + attempt in the case of reverse playback. ## Shutdown phase @@ -5052,7 +5552,7 @@ follows: The subclass is responsible for providing pad template caps for source and sink pads. The pads need to be named "sink" and "src". It also -needs to provide information about the ouptput caps, when they are known. +needs to provide information about the output caps, when they are known. This may be when the base class calls the subclass' @set_format function, though it might be during decoding, before calling @gst_video_decoder_finish_frame. This is done via @@ -6026,6 +6526,13 @@ handler with %GST_PAD_SET_ACCEPT_INTERSECT and + + If set to %TRUE the decoder will handle QoS events received +from downstream elements. +This includes dropping output frames which are detected as late +using the metrics reported by those events. + + @@ -6447,7 +6954,7 @@ that can be applied to lines of video pixels to quantize and dither them. algorithm described by @method. Each component will be quantized to a multiple of @quantizer. Better -performance is achived when @quantizer is a power of 2. +performance is achieved when @quantizer is a power of 2. @width is the width of the lines that this ditherer will handle. @@ -6895,6 +7402,32 @@ of the buffer. + + If multiple subframes are produced for one input frame then use this method +for each subframe, except for the last one. Before calling this function, +you need to fill frame->output_buffer with the encoded buffer to push. + +You must call #gst_video_encoder_finish_frame() for the last sub-frame +to tell the encoder that the frame has been fully encoded. + +This function will change the metadata of @frame and frame->output_buffer +will be pushed downstream. + + + a #GstFlowReturn resulting from pushing the buffer downstream. + + + + + a #GstVideoEncoder + + + + a #GstVideoCodecFrame being encoded + + + + Lets #GstVideoEncoder sub-classes to know the memory @allocator used by the base class and its @params. @@ -7159,7 +7692,7 @@ elements (e.g. muxers). Request minimal value for PTS passed to handle_frame. For streams with reordered frames this can be used to ensure that there -is enough time to accomodate first DTS, which may be less than first PTS +is enough time to accommodate first DTS, which may be less than first PTS @@ -7780,7 +8313,7 @@ to implement frame dropping. Enum value describing the most common video formats. -See the [GStreamer raw video format design document](https://gstreamer.freedesktop.org/documentation/design/mediatype-video-raw.html#formats) +See the [GStreamer raw video format design document](https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html#formats) for details about the layout and packing of these formats in memory. Unknown or unset video format id @@ -8043,6 +8576,39 @@ for details about the layout and packing of these formats in memory. packed 4:4:4 RGB with alpha channel(B-G-R-A), 10 bits for R/G/B channel and MSB 2 bits for alpha channel (Since: 1.16) + + packed 4:4:4 RGB with alpha channel(R-G-B-A), 10 bits for R/G/B channel and MSB 2 bits for alpha channel (Since: 1.18) + + + planar 4:4:4 YUV, 16 bits per channel (Since: 1.18) + + + planar 4:4:4 YUV, 16 bits per channel (Since: 1.18) + + + planar 4:2:0 YUV with interleaved UV plane, 16 bits per channel (Since: 1.18) + + + planar 4:2:0 YUV with interleaved UV plane, 16 bits per channel (Since: 1.18) + + + planar 4:2:0 YUV with interleaved UV plane, 12 bits per channel (Since: 1.18) + + + planar 4:2:0 YUV with interleaved UV plane, 12 bits per channel (Since: 1.18) + + + packed 4:2:2 YUV, 12 bits per channel (Y-U-Y-V) (Since: 1.18) + + + packed 4:2:2 YUV, 12 bits per channel (Y-U-Y-V) (Since: 1.18) + + + packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18) + + + packed 4:4:4:4 YUV, 12 bits per channel(U-Y-V-A...) (Since: 1.18) + Converts a FOURCC value into the corresponding #GstVideoFormat. If the FOURCC cannot be represented by #GstVideoFormat, @@ -8337,6 +8903,29 @@ the #GstVideoFormat if there is one, or NULL otherwise. + + Fill @components with the number of all the components packed in plane @p +for the format @info. A value of -1 in @components indicates that no more +components are packed in the plane. + + + + + + + #GstVideoFormatInfo + + + + a plane number + + + + array used to store component numbers + + + + Packs @width pixels from @src to the given planes and strides in the @@ -8472,7 +9061,7 @@ separate step after unpacking. id of the mapped frame. the id can for example be used to - indentify the frame in case of multiview video. + identify the frame in case of multiview video. @@ -8953,6 +9542,34 @@ is required and @align will be updated with the new padding values. + + This variant of gst_video_info_align() provides the updated size, in bytes, +of each video plane after the alignment, including all horizontal and vertical +paddings. + +In case of GST_VIDEO_INTERLACE_MODE_ALTERNATE info, the returned sizes are the +ones used to hold a single field, not the full frame. + + + %FALSE if alignment could not be applied, e.g. because the + size of a frame can't be represented as a 32 bit integer + + + + + a #GstVideoInfo + + + + alignment parameters + + + + array used to store the plane sizes + + + + Converts among various #GstFormat types. This function handles GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT. For @@ -9202,6 +9819,151 @@ mode of the stream. + + Mastering display color volume information defined by SMPTE ST 2086 +(a.k.a static HDR metadata). + + + the xy coordinates of primaries in the CIE 1931 color space. + the index 0 contains red, 1 is for green and 2 is for blue. + each value is normalized to 50000 (meaning that in unit of 0.00002) + + + + + + the xy coordinates of white point in the CIE 1931 color space. + each value is normalized to 50000 (meaning that in unit of 0.00002) + + + + the maximum value of display luminance + in unit of 0.0001 candelas per square metre (cd/m^2 and nit) + + + + the minimum value of display luminance + in unit of 0.0001 candelas per square metre (cd/m^2 and nit) + + + + + + + + + Set string representation of @minfo to @caps + + + %TRUE if @minfo was successfully set to @caps + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstCaps + + + + + + Parse @caps and update @minfo + + + %TRUE if @caps has #GstVideoMasteringDisplayInfo and could be parsed + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstCaps + + + + + + Initialize @minfo + + + + + + + a #GstVideoMasteringDisplayInfo + + + + + + Checks equality between @minfo and @other. + + + %TRUE if @minfo and @other are equal. + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstVideoMasteringDisplayInfo + + + + + + Convert @minfo to its string representation + + + a string representation of @minfo + + + + + a #GstVideoMasteringDisplayInfo + + + + + + Extract #GstVideoMasteringDisplayInfo from @mastering + + + %TRUE if @minfo was filled with @mastering + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstStructure representing #GstVideoMasteringDisplayInfo + + + + + + + Used to represent display_primaries and white_point of +#GstVideoMasteringDisplayInfo struct. See #GstVideoMasteringDisplayInfo + + + the x coordinate of CIE 1931 color space in unit of 0.00002. + + + + the y coordinate of CIE 1931 color space in unit of 0.00002. + + + Different color matrix conversion modes @@ -9220,7 +9982,22 @@ mode of the stream. - Extra buffer metadata describing image properties + Extra buffer metadata describing image properties + +This meta can also be used by downstream elements to specifiy their +buffer layout requirements for upstream. Upstream should try to +fit those requirements, if possible, in order to prevent buffer copies. + +This is done by passing a custom #GstStructure to +gst_query_add_allocation_meta() when handling the ALLOCATION query. +This structure should be named 'video-meta' and can have the following +fields: +- padding-top (uint): extra pixels on the top +- padding-bottom (uint): extra pixels on the bottom +- padding-left (uint): extra pixels on the left side +- padding-right (uint): extra pixels on the right side +The padding fields have the same semantic as #GstVideoMeta.alignment +and so represent the paddings requested on produced video buffers. parent #GstMeta @@ -9315,6 +10092,56 @@ mode of the stream. + + the paddings and alignment constraints of the video buffer. +It is up to the caller of `gst_buffer_add_video_meta_full()` to set it +using gst_video_meta_set_alignment(), if they did not it defaults +to no padding and no alignment. Since: 1.18 + + + + Compute the padded height of each plane from @meta (padded size +divided by stride). + +It is not valid to call this function with a meta associated to a +TILED video format. + + + %TRUE if @meta's alignment is valid and @plane_height has been +updated, %FALSE otherwise + + + + + a #GstVideoMeta + + + + array used to store the plane height + + + + + + Compute the size, in bytes, of each video plane described in @meta including +any padding and alignment constraint defined in @meta->alignment. + + + %TRUE if @meta's alignment is valid and @plane_size has been +updated, %FALSE otherwise + + + + + a #GstVideoMeta + + + + array used to store the plane sizes + + + + Map the video plane with index @plane in @meta and return a pointer to the first byte of the plane and the stride of the plane. @@ -9350,6 +10177,26 @@ first byte of the plane and the stride of the plane. + + Set the alignment of @meta to @alignment. This function checks that +the paddings defined in @alignment are compatible with the strides +defined in @meta and will fail to update if they are not. + + + %TRUE if @alignment's meta has been updated, %FALSE if not + + + + + a #GstVideoMeta + + + + a #GstVideoAlignment + + + + Unmap a previously mapped plane with gst_video_meta_map(). @@ -9552,13 +10399,13 @@ are provided in separate frames alternately. Multiple independent views are provided in separate frames in sequence. This method only applies to raw video buffers at the moment. -Specific view identification is via the #GstVideoMultiviewMeta +Specific view identification is via the `GstVideoMultiviewMeta` and #GstVideoMeta(s) on raw video buffers. Multiple views are provided as separate #GstMemory framebuffers attached to each -#GstBuffer, described by the #GstVideoMultiviewMeta +#GstBuffer, described by the `GstVideoMultiviewMeta` and #GstVideoMeta(s) @@ -10143,7 +10990,7 @@ main (int argc, char **argv) ## Two basic usage scenarios There are two basic usage scenarios: in the simplest case, the application -uses #playbin or #plasink or knows exactly what particular element is used +uses #playbin or #playsink or knows exactly what particular element is used for video output, which is usually the case when the application creates the videosink to use (e.g. #xvimagesink, #ximagesink, etc.) itself; in this case, the application can just create the videosink element, create and @@ -10176,10 +11023,10 @@ prepare-window-handle message is handled, because most GUI toolkits and windowing systems are not thread-safe at all and a lot of care would be required to co-ordinate the toolkit and window system calls of the different threads (Gtk+ users please note: prior to Gtk+ 2.18 -GDK_WINDOW_XID() was just a simple structure access, so generally fine to do +`GDK_WINDOW_XID` was just a simple structure access, so generally fine to do within the bus sync handler; this macro was changed to a function call in Gtk+ 2.18 and later, which is likely to cause problems when called from a -sync handler; see below for a better approach without GDK_WINDOW_XID() +sync handler; see below for a better approach without `GDK_WINDOW_XID` used in the callback). ## GstVideoOverlay and Gtk+ @@ -11188,7 +12035,7 @@ gst_video_overlay_rectangle_set_global_alpha(), automatically update the per rectangle sequence number, which is misleading for renderers/ consumers, that handle global-alpha themselves. For them the pixel-data returned by gst_video_overlay_rectangle_get_pixels_*() -wont be different for different global-alpha values. In this case a +won't be different for different global-alpha values. In this case a renderer could also use the GstBuffer pointers as a hint for changed pixel-data. @@ -11273,7 +12120,7 @@ gst_video_overlay_composition_copy(). When the source has a smaller depth than the target format, set the least significant bits of the target - to 0. This is likely sightly faster but less accurate. When this flag + to 0. This is likely slightly faster but less accurate. When this flag is not specified, the most significant bits of the source are duplicated in the least significant bits of the destination. @@ -11550,7 +12397,7 @@ one dimension or do a copy without scaling. - a horzontal #GstVideoScaler + a horizontal #GstVideoScaler @@ -11715,8 +12562,7 @@ for @width samples. Vertically combine @width pixels in the lines in @src_lines to @dest. @dest is the location of the target line at @dest_offset and -@srcs are the input lines for @dest_offset, as obtained with -gst_video_scaler_get_info(). +@srcs are the input lines for @dest_offset. @@ -12251,7 +13097,7 @@ timecode actually has valid content, use gst_video_time_code_is_valid(). Denominator of the frame rate - + The latest daily jam of the #GstVideoTimeCode @@ -12441,17 +13287,16 @@ The configuration of the time code. - + Flags related to the time code information. For drop frame, only 30000/1001 and 60000/1001 frame rates are supported. - - + No flags - + Whether we have drop frame rate - + Whether we have interlaced video @@ -12654,6 +13499,22 @@ non-linear RGB (R'G'B') and linear RGB Gamma 2.19921875. Since: 1.8 + + Rec. ITU-R BT.2020-2 with 10 bits per component. + (functionally the same as the values + GST_VIDEO_TRANSFER_BT709 and GST_VIDEO_TRANSFER_BT2020_12). + Since: 1.18 + + + SMPTE ST 2084 for 10, 12, 14, and 16-bit systems. + Known as perceptual quantization (PQ) + Since: 1.18 + + + Association of Radio Industries and Businesses (ARIB) + STD-B67 and Rec. ITU-R BT.2100-1 hybrid loggamma (HLG) system + Since: 1.18 + An encoder for writing ancillary data to the @@ -12856,9 +13717,36 @@ data. A #GstVideoAncillary was found. - An error occured + An error occurred + + Attaches #GstVideoAFDMeta metadata to @buffer with the given +parameters. + + + the #GstVideoAFDMeta on @buffer. + + + + + a #GstBuffer + + + + 0 for progressive or field 1 and 1 for field 2 + + + + #GstVideoAFDSpec that applies to AFD value + + + + #GstVideoAFDValue AFD enumeration + + + + Attaches GstVideoAffineTransformationMeta metadata to @buffer with the given parameters. @@ -12874,6 +13762,47 @@ the given parameters. + + Attaches #GstVideoBarMeta metadata to @buffer with the given +parameters. + + + the #GstVideoBarMeta on @buffer. + +See Table 6.11 Bar Data Syntax + +https://www.atsc.org/wp-content/uploads/2015/03/a_53-Part-4-2009.pdf + + + + + a #GstBuffer + + + + 0 for progressive or field 1 and 1 for field 2 + + + + if true then bar data specifies letterbox, otherwise pillarbox + + + + If @is_letterbox is true, then the value specifies the + last line of a horizontal letterbox bar area at top of reconstructed frame. + Otherwise, it specifies the last horizontal luminance sample of a vertical pillarbox + bar area at the left side of the reconstructed frame + + + + If @is_letterbox is true, then the value specifies the + first line of a horizontal letterbox bar area at bottom of reconstructed frame. + Otherwise, it specifies the first horizontal + luminance sample of a vertical pillarbox bar area at the right side of the reconstructed frame. + + + + Attaches #GstVideoCaptionMeta metadata to @buffer with the given parameters. @@ -13139,7 +14068,7 @@ parameters. a #GstVideoTimeCode - + @@ -13195,6 +14124,16 @@ parameters. + + Gets the #GstVideoAFDMeta that might be present on @b. +Note: there may be two #GstVideoAFDMeta structs for interlaced video. + + + + A #GstBuffer + + + @@ -13202,6 +14141,14 @@ parameters. + + + + + A #GstBuffer + + + Gets the #GstVideoCaptionMeta that might be present on @b. @@ -13485,6 +14432,41 @@ of the event. + + Inspect a #GstNavigation mouse scroll event and extract the coordinates +of the event. + + + TRUE if all coordinates could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a gdouble to receive the x coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the y coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the delta_x coordinate of the + mouse movement. + + + + Pointer to a gdouble to receive the delta_y coordinate of the + mouse movement. + + + + Check a bus message to see if it is a #GstNavigation event, and return the #GstNavigationMessageType identifying the type of the message if so. @@ -13797,6 +14779,18 @@ of commands passed must be equal to @n_commands. + + + + + + + + + + + + @@ -13809,6 +14803,18 @@ of commands passed must be equal to @n_commands. + + + + + + + + + + + + Lets you blend the @src image into the @dest image @@ -14051,6 +15057,24 @@ performed. + + Converts the @value to the #GstVideoColorMatrix +The matrix coefficients (MatrixCoefficients) value is +defined by "ISO/IEC 23001-8 Section 7.3 Table 4" +and "ITU-T H.273 Table 4". +"H.264 Table E-5" and "H.265 Table E.5" share the identical values. + + + the matched #GstVideoColorMatrix + + + + + a ITU-T H.273 matrix coefficients value + + + + Get the coefficients used to convert between Y'PbPr and R'G'B' using @matrix. @@ -14097,6 +15121,40 @@ and the other way around: + + Converts #GstVideoColorMatrix to the "matrix coefficients" +(MatrixCoefficients) value defined by "ISO/IEC 23001-8 Section 7.3 Table 4" +and "ITU-T H.273 Table 4". +"H.264 Table E-5" and "H.265 Table E.5" share the identical values. + + + The value of ISO/IEC 23001-8 matrix coefficients. + + + + + a #GstVideoColorMatrix + + + + + + Converts the @value to the #GstVideoColorPrimaries +The colour primaries (ColourPrimaries) value is +defined by "ISO/IEC 23001-8 Section 7.1 Table 2" and "ITU-T H.273 Table 2". +"H.264 Table E-3" and "H.265 Table E.3" share the identical values. + + + the matched #GstVideoColorPrimaries + + + + + a ITU-T H.273 colour primaries value + + + + Get information about the chromaticity coordinates of @primaries. @@ -14111,6 +15169,23 @@ and the other way around: + + Converts #GstVideoColorPrimaries to the "colour primaries" (ColourPrimaries) +value defined by "ISO/IEC 23001-8 Section 7.1 Table 2" +and "ITU-T H.273 Table 2". +"H.264 Table E-3" and "H.265 Table E.3" share the identical values. + + + The value of ISO/IEC 23001-8 colour primaries. + + + + + a #GstVideoColorPrimaries + + + + Compute the offset and scale values for each component of @info. For each component, (c[i] - offset[i]) / scale[i] will scale the component c[i] to the @@ -14203,6 +15278,41 @@ encode a linear segment in the lower range. + + Converts the @value to the #GstVideoTransferFunction +The transfer characteristics (TransferCharacteristics) value is +defined by "ISO/IEC 23001-8 Section 7.2 Table 3" +and "ITU-T H.273 Table 3". +"H.264 Table E-4" and "H.265 Table E.4" share the identical values. + + + the matched #GstVideoTransferFunction + + + + + a ITU-T H.273 transfer characteristics value + + + + + + Converts #GstVideoTransferFunction to the "transfer characteristics" +(TransferCharacteristics) value defined by "ISO/IEC 23001-8 Section 7.2 Table 3" +and "ITU-T H.273 Table 3". +"H.264 Table E-4" and "H.265 Table E.4" share the identical values. + + + The value of ISO/IEC 23001-8 transfer characteristics. + + + + + a #GstVideoTransferFunction + + + + Converts a raw video buffer into the specified output caps. @@ -14237,7 +15347,7 @@ The output caps can be any raw video formats or any image formats (jpeg, png, .. The width, height and pixel-aspect-ratio can also be specified in the output caps. -@callback will be called after conversion, when an error occured or if conversion didn't +@callback will be called after conversion, when an error occurred or if conversion didn't finish after @timeout. @callback will always be called from the thread default %GMainContext, see g_main_context_get_thread_default(). If GLib before 2.22 is used, this will always be the global default main context. @@ -14315,7 +15425,7 @@ with @config. algorithm described by @method. Each component will be quantized to a multiple of @quantizer. Better -performance is achived when @quantizer is a power of 2. +performance is achieved when @quantizer is a power of 2. @width is the width of the lines that this ditherer will handle. @@ -14781,6 +15891,24 @@ recognised, and %FALSE otherwise. + + Extract #GstVideoMasteringDisplayInfo from @mastering + + + %TRUE if @minfo was filled with @mastering + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstStructure representing #GstVideoMasteringDisplayInfo + + + + diff --git a/gir-files/GstWebRTC-1.0.gir b/gir-files/GstWebRTC-1.0.gir index bb80d9c35..756ecc685 100644 --- a/gir-files/GstWebRTC-1.0.gir +++ b/gir-files/GstWebRTC-1.0.gir @@ -200,17 +200,17 @@ for more information. - GST_WEBRTC_DTLS_SETUP_NONE: none -GST_WEBRTC_DTLS_SETUP_ACTPASS: actpass -GST_WEBRTC_DTLS_SETUP_ACTIVE: sendonly -GST_WEBRTC_DTLS_SETUP_PASSIVE: recvonly + none + actpass + sendonly + recvonly @@ -306,20 +306,20 @@ GST_WEBRTC_DTLS_SETUP_PASSIVE: recvonly - GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW: new -GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED: closed -GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED: failed -GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING: connecting -GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED: connected + new + closed + failed + connecting + connected @@ -328,7 +328,7 @@ GST_WEBRTC_DATA_CHANNEL_STATE_CONNECTING: connection GST_WEBRTC_DATA_CHANNEL_STATE_OPEN: open GST_WEBRTC_DATA_CHANNEL_STATE_CLOSING: closing GST_WEBRTC_DATA_CHANNEL_STATE_CLOSED: closed -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate">http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate</ulink> +See <http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate> @@ -349,55 +349,55 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate">h - GST_WEBRTC_ICE_COMPONENT_RTP, -GST_WEBRTC_ICE_COMPONENT_RTCP, + RTP component + RTCP component - GST_WEBRTC_ICE_CONNECTION_STATE_NEW: new -GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING: checking -GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED: connected -GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED: completed -GST_WEBRTC_ICE_CONNECTION_STATE_FAILED: failed -GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED: disconnected -GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED: closed -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate</ulink> + See <http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate> + new + checking + connected + completed + failed + disconnected + closed - GST_WEBRTC_ICE_GATHERING_STATE_NEW: new -GST_WEBRTC_ICE_GATHERING_STATE_GATHERING: gathering -GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE: complete -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate">http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate</ulink> + See <http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate> + new + gathering + complete - GST_WEBRTC_ICE_ROLE_CONTROLLED: controlled -GST_WEBRTC_ICE_ROLE_CONTROLLING: controlling + controlled + controlling @@ -558,24 +558,24 @@ for more information. - GST_WEBRTC_PEER_CONNECTION_STATE_NEW: new -GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING: connecting -GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED: connected -GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED: disconnected -GST_WEBRTC_PEER_CONNECTION_STATE_FAILED: failed -GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED: closed -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate</ulink> + See <http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate> + new + connecting + connected + disconnected + failed + closed @@ -583,7 +583,7 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate"&g GST_WEBRTC_PRIORITY_TYPE_LOW: low GST_WEBRTC_PRIORITY_TYPE_MEDIUM: medium GST_WEBRTC_PRIORITY_TYPE_HIGH: high -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype">http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype</ulink> +See <http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype> @@ -724,6 +724,10 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype">http: + + Direction of the transceiver. + + @@ -779,14 +783,19 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype">http: + none + inactive + sendonly + recvonly + sendrecv @@ -794,7 +803,7 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype">http: GST_WEBRTC_SCTP_TRANSPORT_STATE_CONNECTING: connecting GST_WEBRTC_SCTP_TRANSPORT_STATE_CONNECTED: connected GST_WEBRTC_SCTP_TRANSPORT_STATE_CLOSED: closed -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcsctptransportstate">http://w3c.github.io/webrtc-pc/#dom-rtcsctptransportstate</ulink> +See <http://w3c.github.io/webrtc-pc/#dom-rtcsctptransportstate> @@ -805,18 +814,18 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcsctptransportstate"> - GST_WEBRTC_SDP_TYPE_OFFER: offer -GST_WEBRTC_SDP_TYPE_PRANSWER: pranswer -GST_WEBRTC_SDP_TYPE_ANSWER: answer -GST_WEBRTC_SDP_TYPE_ROLLBACK: rollback -See <ulink url="http://w3c.github.io/webrtc-pc/#rtcsdptype">http://w3c.github.io/webrtc-pc/#rtcsdptype</ulink> + See <http://w3c.github.io/webrtc-pc/#rtcsdptype> + offer + pranswer + answer + rollback @@ -834,7 +843,7 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#rtcsdptype">http://w3c.git - See <ulink url="https://www.w3.org/TR/webrtc/#rtcsessiondescription-class">https://www.w3.org/TR/webrtc/#rtcsessiondescription-class</ulink> + See <https://www.w3.org/TR/webrtc/#rtcsessiondescription-class> the #GstWebRTCSDPType of the description @@ -890,68 +899,68 @@ See <ulink url="http://w3c.github.io/webrtc-pc/#rtcsdptype">http://w3c.git - GST_WEBRTC_SIGNALING_STATE_STABLE: stable -GST_WEBRTC_SIGNALING_STATE_CLOSED: closed -GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_OFFER: have-local-offer -GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_OFFER: have-remote-offer -GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_PRANSWER: have-local-pranswer -GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_PRANSWER: have-remote-pranswer -See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate">http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate</ulink> + See <http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate> + stable + closed + have-local-offer + have-remote-offer + have-local-pranswer + have-remote-pranswer - GST_WEBRTC_STATS_CODEC: codec -GST_WEBRTC_STATS_INBOUND_RTP: inbound-rtp -GST_WEBRTC_STATS_OUTBOUND_RTP: outbound-rtp -GST_WEBRTC_STATS_REMOTE_INBOUND_RTP: remote-inbound-rtp -GST_WEBRTC_STATS_REMOTE_OUTBOUND_RTP: remote-outbound-rtp -GST_WEBRTC_STATS_CSRC: csrc -GST_WEBRTC_STATS_PEER_CONNECTION: peer-connectiion -GST_WEBRTC_STATS_DATA_CHANNEL: data-channel -GST_WEBRTC_STATS_STREAM: stream -GST_WEBRTC_STATS_TRANSPORT: transport -GST_WEBRTC_STATS_CANDIDATE_PAIR: candidate-pair -GST_WEBRTC_STATS_LOCAL_CANDIDATE: local-candidate -GST_WEBRTC_STATS_REMOTE_CANDIDATE: remote-candidate -GST_WEBRTC_STATS_CERTIFICATE: certificate + codec + inbound-rtp + outbound-rtp + remote-inbound-rtp + remote-outbound-rtp + csrc + peer-connectiion + data-channel + stream + transport + candidate-pair + local-candidate + remote-candidate + certificate