From b14e675a2786c31aa614ed23591fbed03d05a946 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 31 Aug 2022 14:15:16 -0400 Subject: [PATCH] gir: Checkout all .gir files and check that they are updated on the CI Part-of: --- .gitlab-ci.yml | 10 +- ci/scripts/check-diff.py | 30 + ci/scripts/check-documentation-diff.py | 20 - girs/CudaGst-1.0.gir | 345 + girs/GES-1.0.gir | 16285 +++++ girs/Gst-1.0.gir | 55081 ++++++++++++++++ girs/GstAllocators-1.0.gir | 571 + girs/GstApp-1.0.gir | 2421 + girs/GstAudio-1.0.gir | 10931 +++ girs/GstBadAudio-1.0.gir | 1479 + girs/GstBase-1.0.gir | 14254 ++++ girs/GstCheck-1.0.gir | 3771 ++ girs/GstCodecs-1.0.gir | 5314 ++ girs/GstController-1.0.gir | 1074 + girs/GstCuda-1.0.gir | 1251 + girs/GstGL-1.0.gir | 11089 ++++ girs/GstInsertBin-1.0.gir | 392 + girs/GstMpegts-1.0.gir | 5425 ++ girs/GstNet-1.0.gir | 915 + girs/GstPbutils-1.0.gir | 4328 ++ girs/GstPlay-1.0.gir | 2901 + girs/GstPlayer-1.0.gir | 2422 + girs/GstRtp-1.0.gir | 6561 ++ girs/GstRtsp-1.0.gir | 4842 ++ girs/GstRtspServer-1.0.gir | 12379 ++++ girs/GstSdp-1.0.gir | 4327 ++ girs/GstTag-1.0.gir | 1764 + girs/GstTranscoder-1.0.gir | 763 + girs/GstValidate-1.0.gir | 4625 ++ girs/GstVideo-1.0.gir | 19238 ++++++ girs/GstVulkan-1.0.gir | 6521 ++ girs/GstWebRTC-1.0.gir | 2681 + meson.build | 17 + scripts/update-girs.py | 42 + .../validate/gst/validate/meson.build | 1 + .../gst-editing-services/ges/meson.build | 1 + .../gst-libs/gst/audio/meson.build | 1 + .../gst-libs/gst/basecamerabinsrc/meson.build | 1 + .../gst-libs/gst/codecs/meson.build | 3 +- .../gst-libs/gst/cuda/meson.build | 2 + .../gst-libs/gst/d3d11/meson.build | 1 + .../gst-libs/gst/insertbin/meson.build | 1 + .../gst-libs/gst/mpegts/meson.build | 1 + .../gst-libs/gst/play/meson.build | 1 + .../gst-libs/gst/player/meson.build | 1 + .../gst-libs/gst/transcoder/meson.build | 1 + .../gst-libs/gst/vulkan/meson.build | 3 + .../gst-libs/gst/webrtc/meson.build | 3 +- .../gst-libs/gst/allocators/meson.build | 1 + .../gst-libs/gst/app/meson.build | 1 + .../gst-libs/gst/audio/meson.build | 1 + .../gst-libs/gst/gl/meson.build | 5 + .../gst-libs/gst/pbutils/meson.build | 3 +- .../gst-libs/gst/rtp/meson.build | 1 + .../gst-libs/gst/rtsp/meson.build | 1 + .../gst-libs/gst/sdp/meson.build | 1 + .../gst-libs/gst/tag/meson.build | 1 + .../gst-libs/gst/video/meson.build | 1 + .../gst/rtsp-server/meson.build | 1 + subprojects/gstreamer/gst/meson.build | 1 + .../gstreamer/libs/gst/base/meson.build | 1 + .../gstreamer/libs/gst/check/meson.build | 1 + .../gstreamer/libs/gst/controller/meson.build | 1 + .../gstreamer/libs/gst/net/meson.build | 1 + 64 files changed, 204087 insertions(+), 25 deletions(-) create mode 100755 ci/scripts/check-diff.py delete mode 100755 ci/scripts/check-documentation-diff.py create mode 100644 girs/CudaGst-1.0.gir create mode 100644 girs/GES-1.0.gir create mode 100644 girs/Gst-1.0.gir create mode 100644 girs/GstAllocators-1.0.gir create mode 100644 girs/GstApp-1.0.gir create mode 100644 girs/GstAudio-1.0.gir create mode 100644 girs/GstBadAudio-1.0.gir create mode 100644 girs/GstBase-1.0.gir create mode 100644 girs/GstCheck-1.0.gir create mode 100644 girs/GstCodecs-1.0.gir create mode 100644 girs/GstController-1.0.gir create mode 100644 girs/GstCuda-1.0.gir create mode 100644 girs/GstGL-1.0.gir create mode 100644 girs/GstInsertBin-1.0.gir create mode 100644 girs/GstMpegts-1.0.gir create mode 100644 girs/GstNet-1.0.gir create mode 100644 girs/GstPbutils-1.0.gir create mode 100644 girs/GstPlay-1.0.gir create mode 100644 girs/GstPlayer-1.0.gir create mode 100644 girs/GstRtp-1.0.gir create mode 100644 girs/GstRtsp-1.0.gir create mode 100644 girs/GstRtspServer-1.0.gir create mode 100644 girs/GstSdp-1.0.gir create mode 100644 girs/GstTag-1.0.gir create mode 100644 girs/GstTranscoder-1.0.gir create mode 100644 girs/GstValidate-1.0.gir create mode 100644 girs/GstVideo-1.0.gir create mode 100644 girs/GstVulkan-1.0.gir create mode 100644 girs/GstWebRTC-1.0.gir create mode 100755 scripts/update-girs.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ff7ec9b3a4..5f02bfe15e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -750,12 +750,18 @@ valgrind ges: - meson build/ $MESON_ARGS - ccache --show-stats + - ninja -C build/ update_girs + # Ignore modifications to wrap files made by meson + - git checkout subprojects/*.wrap + - ./ci/scripts/check-diff.py "gir files" + - ./gst-env.py ninja -C build/ plugins_doc_caches # Ignore modifications to wrap files made by meson - git checkout subprojects/*.wrap - - ./ci/scripts/check-documentation-diff.py + - ./ci/scripts/check-diff.py - ./gst-env.py ninja -C build subprojects/gst-docs/GStreamer-doc + - mv build/subprojects/gst-docs/GStreamer-doc/html documentation/ artifacts: @@ -763,7 +769,7 @@ valgrind ges: expire_in: "7 days" paths: - documentation/ - - plugins-cache-diffs/ + - diffs/ # # This jobs runs in gstreamer namespace when after the merge into main branch. diff --git a/ci/scripts/check-diff.py b/ci/scripts/check-diff.py new file mode 100755 index 0000000000..e0b9d71031 --- /dev/null +++ b/ci/scripts/check-diff.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 +import os +import subprocess +import sys +import argparse + +PARSER = argparse.ArgumentParser() +PARSER.add_argument('name', default="documentation cache", nargs="?") + +if __name__ == "__main__": + opts = PARSER.parse_args() + + print(opts) + diffsdir = 'diffs' + os.makedirs(diffsdir, exist_ok=True) + res = 0 + try: + subprocess.check_call(['git', 'diff', '--quiet']) + except subprocess.CalledProcessError: + diffname = os.path.join(diffsdir, f"{opts.name.replace(' ', '_')}.diff") + res += 1 + with open(diffname, 'w') as diff: + subprocess.check_call(['git', 'diff'], stdout=diff) + print(f'\033[91mYou have a diff in the {opts.name}. Please update with:\033[0m') + print(' $ curl %s/%s | git apply -' % + (os.environ.get('CI_ARTIFACTS_URL', "NOT_RUNNING_ON_CI"), diffname.replace('../', ''))) + + if res != 0: + print('(note that it might take a few minutes for artefacts to be available on the server)\n') + sys.exit(res) diff --git a/ci/scripts/check-documentation-diff.py b/ci/scripts/check-documentation-diff.py deleted file mode 100755 index 7dad06e7cc..0000000000 --- a/ci/scripts/check-documentation-diff.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python3 -import os, subprocess, sys - -if __name__ == "__main__": - diffsdir = 'plugins-cache-diffs' - os.makedirs(diffsdir, exist_ok=True) - res = 0 - try: - subprocess.check_call(['git', 'diff', '--quiet'] ) - except subprocess.CalledProcessError: - diffname = os.path.join(diffsdir, 'plugins_cache.diff') - res += 1 - with open(diffname, 'w') as diff: - subprocess.check_call(['git', 'diff'], stdout=diff) - print('\033[91mYou have a diff in the documentation cache. Please update with:\033[0m') - print(' $ curl %s/%s | git apply -' % (os.environ['CI_ARTIFACTS_URL'], diffname.replace('../', ''))) - - if res != 0: - print('(note that it might take a few minutes for artefacts to be available on the server)\n') - sys.exit(res) \ No newline at end of file diff --git a/girs/CudaGst-1.0.gir b/girs/CudaGst-1.0.gir new file mode 100644 index 0000000000..35c1fe5fb8 --- /dev/null +++ b/girs/CudaGst-1.0.gir @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/girs/GES-1.0.gir b/girs/GES-1.0.gir new file mode 100644 index 0000000000..f39d227f51 --- /dev/null +++ b/girs/GES-1.0.gir @@ -0,0 +1,16285 @@ + + + + + + + + + + + + A datatype to hold a frame number. + + + + + 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; + +// You create an asset for an effect +effect_asset = ges_asset_request (GES_TYPE_EFFECT, "agingtv", NULL); + +// And now you can extract an instance of GESEffect from that asset +effect = GES_EFFECT (ges_asset_extract (effect_asset)); + +``` + +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. + +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. + +For example, to display information about the supported formats, you +could do the following: +|[ + GList *formatter_assets, *tmp; + + // List all the transitions + formatter_assets = ges_list_assets (GES_TYPE_FORMATTER); + + // Print some infos about the formatter GESAsset + for (tmp = formatter_assets; tmp; tmp = tmp->next) { + gst_print ("Name of the formatter: %s, file extension it produces: %s", + ges_meta_container_get_string ( + GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_NAME), + ges_meta_container_get_string ( + GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_EXTENSION)); + } + + g_list_free (transition_assets); + +]| + +## 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(). + + + + + + 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. + +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 specified asset exists in the cache and could be +marked for reloading. + + + + + The #GESAsset:extractable-type of the asset that +needs reloading + + + + The #GESAsset:id of the asset asset that needs +reloading + + + + + + 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. + +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 requested +asset, or %NULL if an error occurred. + + + + + The #GESAsset:extractable-type of the asset + + + + The #GESAsset:id of the asset + + + + + + 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. + +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. + +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: +``` c +// The request callback +static void +asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data) +{ + GESAsset *asset; + GError *error = NULL; + + asset = ges_asset_request_finish (res, &error); + if (asset) { + gst_print ("The file: %s is usable as a GESUriClip", + ges_asset_get_id (asset)); + } else { + gst_print ("The file: %s is *not* usable as a GESUriClip because: %s", + ges_asset_get_id (source), error->message); + } + + gst_object_unref (asset); +} + +// The request: +ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL, + (GAsyncReadyCallback) asset_loaded_cb, user_data); +``` + + + + + + + The #GESAsset:extractable-type of the asset + + + + The #GESAsset:id of the asset + + + + An object to allow cancellation of the +asset request, or %NULL to ignore + + + + A function to call when the initialization is finished + + + + Data to be passed to @callback + + + + + + Fetches an asset requested by ges_asset_request_async(), which +finalises the request. + + + The requested asset, or %NULL if an error +occurred. + + + + + The task result to fetch the asset from + + + + + + 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 object, or %NULL if an +error occurred. + + + + + The #GESAsset to extract an object from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 object, or %NULL if an +error occurred. + + + + + The #GESAsset to extract an object from + + + + + + Retrieve the error that was set on the asset when it was loaded. + + + The error set on @asset, or +%NULL if no error occurred when @asset was loaded. + + + + + A #GESAsset + + + + + + Gets the #GESAsset:extractable-type of the asset. + + + The extractable type of @self. + + + + + The #GESAsset + + + + + + Gets the #GESAsset:id of the asset. + + + The ID of @self. + + + + + A #GESAsset + + + + + + Gets the default #GESAsset:proxy of the asset. + + + The default proxy of @asset. + + + + + 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 asset that @proxy is a proxy +of. + + + + + 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 +that @asset has. + + + + + + + A #GESAsset + + + + + + 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 was successfully set as the default for +@asset. + + + + + The #GESAsset to proxy + + + + A new default proxy for @asset + + + + + + 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 successfully removed from @asset's proxy +list. + + + + + The #GESAsset to no longer proxy with @proxy + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A newly created object, or %NULL if an +error occurred. + + + + + The #GESAsset to extract an object from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates that an error occurred + + + Indicates that the loading is being performed +asynchronously + + + Indicates that the loading is complete, without +error + + + + + + + ## Children Properties + +You can use the following children properties through the +#ges_track_element_set_child_property and alike set of methods: + +- #gdouble `volume`: volume factor, 1.0=100%. +- #gboolean `mute`: mute channel. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Outputs a test audio stream using audiotestsrc. The default property values +output silence. Useful for testing pipelines, or to fill gaps in an audio +track. + + + + + Get the current frequency of @self. + + + The current frequency of @self. + + + + + a #GESAudioTestSource + + + + + + Get the current volume of @self. + + + The current volume of @self + + + + + a #GESAudioTestSource + + + + + + Lets you set the frequency applied on the track element + + + + + + + a #GESAudioTestSource + + + + The frequency you want to apply on @self + + + + + + Sets the volume of the test audio signal. + + + + + + + a #GESAudioTestSource + + + + The volume you want to apply on @self + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GESAudioTrack is a default audio #GESTrack, with a +#GES_TRACK_TYPE_AUDIO #GESTrack:track-type and "audio/x-raw(ANY)" +#GESTrack:caps. + +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" + +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 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. + + + The newly created audio track. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GESAudioTransition. + This should never be called by applications as this will +be created by clips. + + + The newly created #GESAudioTransition. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ### Children Properties + + {{ libs/GESVideoUriSource-children-props.md }} + + + + + The location of the file/resource to use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GESBaseEffect is some operation that applies an effect to the data +it receives. + +## Time Effects + +Some operations will change the timing of the stream data they receive +in some way. In particular, the #GstElement that they wrap could alter +the times of the segment they receive in a #GST_EVENT_SEGMENT event, +or the times of a seek they receive in a #GST_EVENT_SEEK event. Such +operations would be considered time effects since they translate the +times they receive on their source to different times at their sink, +and vis versa. This introduces two sets of time coordinates for the +event: (internal) sink coordinates and (internal) source coordinates, +where segment times are translated from the sink coordinates to the +source coordinates, and seek times are translated from the source +coordinates to the sink coordinates. + +If you use such an effect in GES, you will need to inform GES of the +properties that control the timing with +ges_base_effect_register_time_property(), and the effect's timing +behaviour using ges_base_effect_set_time_translation_funcs(). + +Note that a time effect should not have its +#GESTrackElement:has-internal-source set to %TRUE. + +In addition, note that GES only *fully* supports time effects whose +mapping from the source to sink coordinates (those applied to seeks) +obeys: + ++ Maps the time `0` to `0`. So initial time-shifting effects are + excluded. ++ Is monotonically increasing. So reversing effects, and effects that + jump backwards in the stream are excluded. ++ Can handle a reasonable #GstClockTime, relative to the project. So + this would exclude a time effect with an extremely large speed-up + that would cause the converted #GstClockTime seeks to overflow. ++ Is 'continuously reversible'. This essentially means that for every + time in the sink coordinates, we can, to 'good enough' accuracy, + calculate the corresponding time in the source coordinates. Moreover, + this should correspond to how segment times are translated from + sink to source. ++ Only depends on the registered time properties, rather than the + state of the #GstElement or the data it receives. This would exclude, + say, an effect that would speedup if there is more red in the image + it receives. + +Note that a constant-rate-change effect that is not extremely fast or +slow would satisfy these conditions. For such effects, you may wish to +use ges_effect_class_register_rate_property(). + + + + + Get whether the effect is considered a time effect or not. An effect +with registered time properties or set translation functions is +considered a time effect. + + + %TRUE if @effect is considered a time effect. + + + + + A #GESBaseEffect + + + + + + Register a child property of the effect as a property that, when set, +can change the timing of its input data. The child property should be +specified as in ges_timeline_element_lookup_child(). + +You should also set the corresponding time translation using +ges_base_effect_set_time_translation_funcs(). + +Note that @effect must not be part of a clip, nor can it have +#GESTrackElement:has-internal-source set to %TRUE. + + + %TRUE if the child property was found and newly registered. + + + + + A #GESBaseEffect + + + + The name of the child property to register as +a time property + + + + + + Set the time translation query functions for the time effect. If an +effect is a time effect, it will have two sets of coordinates: one +at its sink and one at its source. The given functions should be able +to translate between these two sets of coordinates. More specifically, +@source_to_sink_func should *emulate* how the corresponding #GstElement +would translate the #GstSegment @time field, and @sink_to_source_func +should emulate how the corresponding #GstElement would translate the +seek query @start and @stop values, as used in gst_element_seek(). As +such, @sink_to_source_func should act as an approximate reverse of +@source_to_sink_func. + +Note, these functions will be passed a table of time properties, as +registered in ges_base_effect_register_time_property(), and their +values. The functions should emulate what the translation *would* be +*if* the time properties were set to the given values. They should not +use the currently set values. + +Note that @effect must not be part of a clip, nor can it have +#GESTrackElement:has-internal-source set to %TRUE. + + + %TRUE if the translation functions were set. + + + + + A #GESBaseEffect + + + + The function to use +for querying how a time is translated from the source coordinates to +the sink coordinates of @effect + + + + The function to use +for querying how a time is translated from the sink coordinates to the +source coordinates of @effect + + + + Data to pass to both @source_to_sink_func and +@sink_to_source_func + + + + Method to call to destroy +@user_data, or %NULL + + + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + #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. + +Note that you cannot add time effects to #GESBaseEffectClip, neither +as core children, nor as additional effects. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A function for querying how an effect would translate a time if it had +the given child property values set. The keys for @time_properties will +be the same string that was passed to +ges_base_effect_register_time_property(), the values will be #GValue* +values of the corresponding child properties. You should always use the +values given in @time_properties before using the currently set values. + + + The translated time. + + + + + The #GESBaseEffect that is doing the time translation + + + + The #GstClockTime to translation + + + + A table of child +property name/value pairs + + + + + + + Data passed to ges_base_effect_set_time_translation_funcs() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether the class allows for the user to add additional non-core +#GESBaseEffect-s to clips from this class. + + + + A #GESClipClass + + + + + The #GList containing the children of @obj. + + + + a #GESContainer + + + + + The #GESContainer:height of @obj. + + + + a #GESContainer + + + + + To be used by subclasses only. This indicate how to handle a change in +a child. + + + + + + + + + + + + + + #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. + +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. + +## Core Children + +In more detail, clips will usually have some *core* #GESTrackElement +children, which are created by the clip when it is added to a layer in +a timeline. The type and form of these core children will depend on the +clip's subclass. You can use ges_track_element_is_core() to determine +whether a track element is considered such a core track element. Note, +if a core track element is part of a clip, it will always be treated as +a core *child* of the clip. You can connect to the +#GESContainer::child-added signal to be notified of their creation. + +When a child is added to a clip, the timeline will select its tracks +using #GESTimeline::select-tracks-for-object. Note that it may be the +case that the child will still have no set #GESTrackElement:track +after this process. For example, if the timeline does not have a track +of the corresponding #GESTrack:track-type. A clip can safely contain +such children, which may have their track set later, although they will +play no functioning role in the timeline in the meantime. + +If a clip may create track elements with various +#GESTrackElement:track-type(s), such as a #GESUriClip, but you only +want it to create a subset of these types, you should set the +#GESClip:supported-formats of the clip to the subset of types. This +should be done *before* adding the clip to a layer. + +If a clip will produce several core elements of the same +#GESTrackElement:track-type, you should connect to the timeline's +#GESTimeline::select-tracks-for-object signal to coordinate which +tracks each element should land in. Note, no two core children within a +clip can share the same #GESTrack, so you should not select the same +track for two separate core children. Provided you stick to this rule, +it is still safe to select several tracks for the same core child, the +core child will be copied into the additional tracks. You can manually +add the child to more tracks later using ges_clip_add_child_to_track(). +If you do not wish to use a core child, you can always select no track. + +The #GESTimelineElement:in-point of the clip will control the +#GESTimelineElement:in-point of its core children 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 core 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 #GESBaseEffectClip) 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_clip_add_top_effect(), 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(). + +Tracks are selected for top effects in the same way as core children. +If you add a top effect to a clip before it is part of a timeline, and +later add the clip to a timeline, the track selection for the top +effects will occur just after the track selection for the core +children. If you add a top effect to a clip that is already part of a +timeline, the track selection will occur immediately. Since a top +effect must be applied on top of a core child, if you use +#GESTimeline::select-tracks-for-object, you should ensure that the +added effects are destined for a #GESTrack that already contains a core +child. + +In addition, if the core child in the track is not +#GESTrackElement:active, then neither can any of its effects be +#GESTrackElement:active. Therefore, if a core child is made in-active, +all of the additional effects in the same track will also become +in-active. Similarly, if an effect is set to be active, then the core +child will also become active, but other effects will be left alone. +Finally, if an active effect is added to the track of an in-active core +child, it will become in-active as well. Note, in contrast, setting a +core child to be active, or an effect to be in-active will *not* change +the other children in the same track. + +### Time Effects + +Some effects also change the timing of their data (see #GESBaseEffect +for what counts as a time effect). Note that a #GESBaseEffectClip will +refuse time effects, but a #GESSource will allow them. + +When added to a clip, time effects may adjust the timing of other +children in the same track. Similarly, when changing the order of +effects, making them (in)-active, setting their time property values +or removing time effects. These can cause the #GESClip:duration-limit +to change in value. However, if such an operation would ever cause the +#GESTimelineElement:duration to shrink such that a clip's #GESSource is +totally overlapped in the timeline, the operation would be prevented. +Note that the same can happen when adding non-time effects with a +finite #GESTimelineElement:max-duration. + +Therefore, when working with time effects, you should -- more so than +usual -- not assume that setting the properties of the clip's children +will succeed. In particular, you should use +ges_timeline_element_set_child_property_full() when setting the time +properties. + +If you wish to preserve the *internal* duration of a source in a clip +during these time effect operations, you can do something like the +following. + +```c +void +do_time_effect_change (GESClip * clip) +{ + GList *tmp, *children; + GESTrackElement *source; + GstClockTime source_outpoint; + GstClockTime new_end; + GError *error = NULL; + + // choose some active source in a track to preserve the internal + // duration of + source = ges_clip_get_track_element (clip, NULL, GES_TYPE_SOURCE); + + // note its current internal end time + source_outpoint = ges_clip_get_internal_time_from_timeline_time ( + clip, source, GES_TIMELINE_ELEMENT_END (clip), NULL); + + // handle invalid out-point + + // stop the children's control sources from clamping when their + // out-point changes with a change in the time effects + children = ges_container_get_children (GES_CONTAINER (clip), FALSE); + + for (tmp = children; tmp; tmp = tmp->next) + ges_track_element_set_auto_clamp_control_source (tmp->data, FALSE); + + // add time effect, or set their children properties, or move them around + ... + // user can make sure that if a time effect changes one source, we should + // also change the time effect for another source. E.g. if + // "GstVideorate::rate" is set to 2.0, we also set "GstPitch::rate" to + // 2.0 + + // Note the duration of the clip may have already changed if the + // duration-limit of the clip dropped below its current value + + new_end = ges_clip_get_timeline_time_from_internal_time ( + clip, source, source_outpoint, &error); + // handle error + + if (!ges_timeline_elemnet_edit_full (GES_TIMELINE_ELEMENT (clip), + -1, GES_EDIT_MODE_TRIM, GES_EDGE_END, new_end, &error)) + // handle error + + for (tmp = children; tmp; tmp = tmp->next) + ges_track_element_set_auto_clamp_control_source (tmp->data, TRUE); + + g_list_free_full (children, gst_object_unref); + gst_object_unref (source); +} +``` + + + + + + + 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 #GESTrackType to create a #GESTrackElement for + + + + + + + + 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 #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. + + + 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 + + + + + + Add a top effect to a clip at the given index. + +Unlike using ges_container_add(), this allows you to set the index +in advance. It will also check that no error occurred during the track +selection for the effect. + +Note, only subclasses of #GESClipClass that have +#GES_CLIP_CLASS_CAN_ADD_EFFECTS set to %TRUE (such as #GESSourceClip +and #GESBaseEffectClip) can have additional top effects added. + +Note, if the effect is a time effect, this may be refused if the clip +would not be able to adapt itself once the effect is added. + + + %TRUE if @effect was successfully added to @clip at @index. + + + + + A #GESClip + + + + A top effect to add + + + + The index to add @effect at, or -1 to add at the highest + + + + + + 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 + + + + 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 + + + + The track-type of the track element to search for, or +#GES_TRACK_TYPE_UNKNOWN to match any track type + + + + The type of track element to search for, or %G_TYPE_NONE to +match any type + + + + + + Gets the #GESClip:duration-limit of the clip. + + + The duration-limit of @clip. + + + + + A #GESClip + + + + + + Convert the timeline time to an internal source time of the child. +This will take any time effects placed on the clip into account (see +#GESBaseEffect for what time effects are supported, and how to +declare them in GES). + +When @timeline_time is above the #GESTimelineElement:start of @clip, +this will return the internal time at which the content that appears at +@timeline_time in the output of the timeline is created in @child. For +example, if @timeline_time corresponds to the current seek position, +this would let you know which part of a media file is being read. + +This will be done assuming the clip has an indefinite end, so the +internal time may be beyond the current out-point of the child, or even +its #GESTimelineElement:max-duration. + +If, instead, @timeline_time is below the current +#GESTimelineElement:start of @clip, this will return what you would +need to set the #GESTimelineElement:in-point of @child to if you set +the #GESTimelineElement:start of @clip to @timeline_time and wanted +to keep the content of @child currently found at the current +#GESTimelineElement:start of @clip at the same timeline position. If +this would be negative, the conversion fails. This is useful for +determining what #GESTimelineElement:in-point would result from a +#GES_EDIT_MODE_TRIM to @timeline_time. + +Note that whilst a clip has no time effects, this second return is +equivalent to finding the internal time at which the content that +appears at @timeline_time in the timeline can be found in @child if it +had indefinite extent in both directions. However, with non-linear time +effects this second return will be more distinct. + +In either case, the returned time would be appropriate to use for the +#GESTimelineElement:in-point or #GESTimelineElement:max-duration of the +child. + +See ges_clip_get_timeline_time_from_internal_time(), which performs the +reverse. + + + The time in the internal coordinates of @child corresponding +to @timeline_time, or #GST_CLOCK_TIME_NONE if the conversion could not +be performed. + + + + + A #GESClip + + + + An #GESTrackElement:active child of @clip with a +#GESTrackElement:track + + + + A time in the timeline time coordinates + + + + + + Gets the #GESClip:layer of the clip. + + + The layer @clip is in, or %NULL if +@clip is not in any layer. + + + + + A #GESClip + + + + + + Gets the #GESClip:supported-formats of the clip. + + + The #GESTrackType-s supported by @clip. + + + + + A #GESClip + + + + + + Convert the internal source time from the child to a timeline time. +This will take any time effects placed on the clip into account (see +#GESBaseEffect for what time effects are supported, and how to +declare them in GES). + +When @internal_time is above the #GESTimelineElement:in-point of +@child, this will return the timeline time at which the internal +content found at @internal_time appears in the output of the timeline's +track. For example, this would let you know where in the timeline a +particular scene in a media file would appear. + +This will be done assuming the clip has an indefinite end, so the +timeline time may be beyond the end of the clip, or even breaking its +#GESClip:duration-limit. + +If, instead, @internal_time is below the current +#GESTimelineElement:in-point of @child, this will return what you would +need to set the #GESTimelineElement:start of @clip to if you set the +#GESTimelineElement:in-point of @child to @internal_time and wanted to +keep the content of @child currently found at the current +#GESTimelineElement:start of @clip at the same timeline position. If +this would be negative, the conversion fails. This is useful for +determining what position to use in a #GES_EDIT_MODE_TRIM if you wish +to trim to a specific point in the internal content, such as a +particular scene in a media file. + +Note that whilst a clip has no time effects, this second return is +equivalent to finding the timeline time at which the content of @child +at @internal_time would be found in the timeline if it had indefinite +extent in both directions. However, with non-linear time effects this +second return will be more distinct. + +In either case, the returned time would be appropriate to use in +ges_timeline_element_edit() for #GES_EDIT_MODE_TRIM, and similar, if +you wish to use a particular internal point as a reference. For +example, you could choose to end a clip at a certain internal +'out-point', similar to the #GESTimelineElement:in-point, by +translating the desired end time into the timeline coordinates, and +using this position to trim the end of a clip. + +See ges_clip_get_internal_time_from_timeline_time(), which performs the +reverse, or ges_clip_get_timeline_time_from_source_frame() which does +the same conversion, but using frame numbers. + + + The time in the timeline coordinates corresponding to +@internal_time, or #GST_CLOCK_TIME_NONE if the conversion could not be +performed. + + + + + A #GESClip + + + + An #GESTrackElement:active child of @clip with a +#GESTrackElement:track + + + + A time in the internal time coordinates of @child + + + + + + Convert the source frame number to a timeline time. This acts the same +as ges_clip_get_timeline_time_from_internal_time() using the core +children of the clip and using the frame number to specify the internal +position, rather than a timestamp. + +The returned timeline time can be used to seek or edit to a specific +frame. + +Note that you can get the frame timestamp of a particular clip asset +with ges_clip_asset_get_frame_time(). + + + The timestamp corresponding to @frame_number in the core +children of @clip, in the timeline coordinates, or #GST_CLOCK_TIME_NONE +if the conversion could not be performed. + + + + + A #GESClip + + + + The frame number to get the corresponding timestamp of +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. + + + + + A #GESClip + + + + The effect we want to get the index of + + + + + + + + + + + + + + + + + + + + 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 list of all +#GESBaseEffect-s that have been added to @clip. + + + + + + + A #GESClip + + + + + + See ges_clip_move_to_layer_full(), which also gives an error. + + + %TRUE if @clip was successfully moved to @layer. + + + + + A #GESClip + + + + The new 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 was successfully moved to @layer. + + + + + A #GESClip + + + + The new layer + + + + + + Remove a top effect from the clip. + +Note, if the effect is a time effect, this may be refused if the clip +would not be able to adapt itself once the effect is removed. + + + %TRUE if @effect was successfully added to @clip at @index. + + + + + A #GESClip + + + + The top effect to remove + + + + + + 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. + + + + + + + A #GESClip + + + + The #GESTrackType-s supported by @clip + + + + + + See ges_clip_set_top_effect_index_full(), which also gives an error. + + + %TRUE if @effect was successfully moved to @newindex. + + + + + A #GESClip + + + + An effect within @clip to move + + + + The index for @effect in @clip + + + + + + 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 successfully moved to @newindex. + + + + + A #GESClip + + + + An effect within @clip to move + + + + The index for @effect in @clip + + + + + + + + + + + + + + + + + + + + + + + See ges_clip_split_full(), which also gives an error. + + + The newly created clip resulting +from the splitting @clip, or %NULL if @clip can't be split. + + + + + The #GESClip to split + + + + The timeline position at which to perform the split + + + + + + Splits a clip at the given timeline position into two clips. The clip +must already have a #GESClip:layer. + +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. + +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 clip resulting +from the splitting @clip, or %NULL if @clip can't be split. + + + + + The #GESClip to split + + + + The timeline position at which to perform the split, between +the start and end of the clip + + + + + + The maximum #GESTimelineElement:duration that can be *currently* set +for the clip, taking into account the #GESTimelineElement:in-point, +#GESTimelineElement:max-duration, #GESTrackElement:active, and +#GESTrackElement:track properties of its children, as well as any +time effects. If there is no limit, this will be set to +#GST_CLOCK_TIME_NONE. + +Note that whilst a clip has no children in any tracks, the limit will +be unknown, and similarly set to #GST_CLOCK_TIME_NONE. + +If the duration-limit would ever go below the current +#GESTimelineElement:duration of the clip due to a change in the above +variables, its #GESTimelineElement:duration will be set to the new +limit. + + + + 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 #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. + + + + + + + + + + + + + + + + The #GESUriClipAsset is a special #GESAsset specilized in #GESClip. +it is mostly used to get information about the #GESTrackType-s the objects extracted +from it can potentialy create #GESTrackElement for. + + + + + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + %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 + + + The track types on which @self will create TrackElement when added to +a layer + + + + + a #GESClipAsset + + + + + + Sets track types for which objects extracted from @self can create #GESTrackElement + + + + + + + a #GESClipAsset + + + + The track types supported by the GESClipAsset + + + + + + The formats supported by the asset. + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if @self has a natural framerate @FALSE otherwise. + + + + + The object from which to retrieve the natural framerate + + + + The framerate numerator + + + + The framerate denominator + + + + + + + + + + + + + + + + + + + + + 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 +GESClipClass::create_track_elements should be used instead. Otherwise, you +should implement this class method and leave +GESClipClass::create_track_elements as the default implementation + + + + Method to create the (multiple) core +#GESTrackElement-s of a clip of this class. If +GESClipClass::create_track_element is implemented, this should be kept as the +default implementation + + + + + + + + + + + + + + + + + + + + + + + + + Creates a help string based on @commands. + +Result: (transfer full): A help string. + + + + + + + Number of commands in @commands + + + + Commands + + + + + + + + + + + + + + A GESTimeline to serialize + + + + + + + + + + + + + + + + + + + + + + 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 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 container created by merging +@containers, or %NULL if they could not be merged into a single +container. + + + + + +The #GESContainer-s to group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Edits the container within its timeline. + use #ges_timeline_element_edit instead. + + + %TRUE if the edit of @container completed, %FALSE on failure. + + + + + The #GESContainer 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 @container should +be moved to. -1 means no move + + + + The edit mode + + + + The edge of @container where the edit should occur + + + + The edit position: a new location for the edge of @container +(in nanoseconds) + + + + + + + + + + + + + + + + + + + + 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 +new #GESContainer-s created from the splitting of @container. + + + + + + + The container to ungroup + + + + Whether to recursively ungroup @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 if @child was successfully added to @container. + + + + + A #GESContainer + + + + The element to add as a child + + + + + + Edits the container within its timeline. + use #ges_timeline_element_edit instead. + + + %TRUE if the edit of @container completed, %FALSE on failure. + + + + + The #GESContainer 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 @container should +be moved to. -1 means no move + + + + The edit mode + + + + The edge of @container where the edit should occur + + + + The edit position: a new location for the edge of @container +(in nanoseconds) + + + + + + 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 +#GESTimelineElement-s contained in @container. + + + + + + + A #GESContainer + + + + Whether to recursively get children in @container + + + + + + Removes a timeline element from the container. The element will no +longer be controlled by the container. + + + %TRUE if @child was successfully removed from @container. + + + + + A #GESContainer + + + + The child to remove + + + + + + 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 +new #GESContainer-s created from the splitting of @container. + + + + + + + The container to ungroup + + + + Whether to recursively ungroup @container + + + + + + 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). + + + + + + + The list of +#GESTimelineElement-s controlled by this Container + + + + + + The #GESContainer:height of @obj + + + + + + + + + + + + + + + + + + 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 child that was added + + + + + + Will be emitted after a child is removed from the container. + + + + + + The child that was removed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The list of +new #GESContainer-s created from the splitting of @container. + + + + + + + The container to ungroup + + + + Whether to recursively ungroup @container + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the edit of @container completed, %FALSE on failure. + + + + + The #GESContainer 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 @container should +be moved to. -1 means no move + + + + The edit mode + + + + The edge of @container where the edit should occur + + + + The edit position: a new location for the edge of @container +(in nanoseconds) + + + + + + + + + + + + + + + + + + + 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 source #GstElement to fill gaps in @track. + + + + + The #GESTrack + + + + + + A method for creating the core #GESTrackElement of a clip, to be added +to a #GESTrack of the given track type. + +If a clip may produce several track elements per track type, +#GESCreateTrackElementsFunc is more appropriate. + + + 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 #GESTrackType to create a #GESTrackElement for + + + + + + A method for creating the core #GESTrackElement-s of a clip, to be +added to #GESTrack-s of the given track type. + + + 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 #GESTrackType to create #GESTrackElement-s for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The edges of an object contain in a #GESTimeline or #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 working with any edge of an + object. + + + Represent the fact we are not working with any edge of an + object. + + + + + A human friendly name for @edge + + + + + The #GESEdge to get the name of + + + + + + + When a single timeline element is edited within its timeline at some +position, 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, +any clips may change #GESClip:layer. + +Each edit can be broken down into a combination of three basic edits: + ++ MOVE: This moves the start of the element to the edit position. ++ START-TRIM: This cuts or grows the start of the element, whilst + maintaining the time at which its internal content appears in the + timeline data output. If the element is made shorter, the data that + appeared at the edit position will still appear in the timeline at + the same time. If the element is made longer, the data that appeared + at the previous start of the element will still appear in the + timeline at the same time. ++ END-TRIM: Similar to START-TRIM, but the end of the element is cut or + grown. + +In particular, when editing a #GESClip: + ++ MOVE: This will set the #GESTimelineElement:start of the clip to the + edit position. ++ START-TRIM: This will set the #GESTimelineElement:start of the clip + to the edit position. To keep the end time the same, the + #GESTimelineElement:duration of the clip will be adjusted in the + opposite direction. In addition, the #GESTimelineElement:in-point of + the clip will be shifted such that the content that appeared at the + new or previous start time, whichever is latest, still appears at the + same timeline time. For example, if a frame appeared at the start of + the clip, and the start of the clip is reduced, the in-point of the + clip will also reduce such that the frame will appear later within + the clip, but at the same timeline position. ++ END-TRIM: This will set the #GESTimelineElement:duration of the clip + such that its end time will match the edit position. + +When editing a #GESGroup: + ++ MOVE: This will set the #GESGroup:start of the clip to the edit + position by shifting all of its children by the same amount. So each + child will maintain their relative positions. ++ START-TRIM: If the group is made shorter, this will START-TRIM any + clips under the group that start after the edit position to the same + edit position. If the group is made longer, this will START-TRIM any + clip under the group whose start matches the start of the group to + the same edit position. ++ END-TRIM: If the group is made shorter, this will END-TRIM any clips + under the group that end after the edit position to the same edit + position. If the group is made longer, this will END-TRIM any clip + under the group whose end matches the end of the group to the same + edit position. + +When editing a #GESTrackElement, if it has a #GESClip parent, this +will be edited instead. Otherwise it is edited in the same way as a +#GESClip. + +The layer priority of a #GESGroup is the lowest layer priority of any +#GESClip underneath it. When a group is edited to a new layer +priority, it will shift all clips underneath it by the same amount, +such that their relative layers stay the same. + +If the #GESTimeline has a #GESTimeline:snapping-distance, then snapping +may occur for some of the edges of the **main** edited element: + ++ MOVE: The start or end edge of *any* #GESSource under the element may + be snapped. ++ START-TRIM: The start edge of a #GESSource whose start edge touches + the start edge of the element may snap. ++ END-TRIM: The end edge of a #GESSource whose end edge touches the end + edge of the element may snap. + +These edges may snap with either the start or end edge of *any* other +#GESSource in the timeline that is not also being moved by the element, +including those in different layers, if they are within the +#GESTimeline:snapping-distance. During an edit, only up to one snap can +occur. This will shift the edit position such that the snapped edges +will touch once the edit has completed. + +Note that snapping can cause an edit to fail where it would have +otherwise succeeded because it may push the edit position such that the +edit would result in an unsupported timeline configuration. Similarly, +snapping can cause an edit to succeed where it would have otherwise +failed. + +For example, in #GES_EDIT_MODE_RIPPLE acting on #GES_EDGE_NONE, the +main element is the MOVED toplevel of the edited element. Any source +under the main MOVED toplevel may have its start or end edge snapped. +Note, these sources cannot snap with each other. The edit may also +push other elements, but any sources under these elements cannot snap, +nor can they be snapped with. If a snap does occur, the MOVE of the +toplevel *and* all other elements pushed by the ripple will be shifted +by the same amount such that the snapped edges will touch. + +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 element is edited the normal way (default). + If acting on the element as a whole (#GES_EDGE_NONE), this will MOVE + the element by MOVING its toplevel. When acting on the start of the + element (#GES_EDGE_START), this will only MOVE the element, but not + its toplevel parent. This can allow you to move a #GESClip or + #GESGroup to a new start time or layer within its container group, + without effecting other members of the group. When acting on the end + of the element (#GES_EDGE_END), this will END-TRIM the element, + leaving its toplevel unchanged. + + + The element is edited the normal way (default). + If acting on the element as a whole (#GES_EDGE_NONE), this will MOVE + the element by MOVING its toplevel. When acting on the start of the + element (#GES_EDGE_START), this will only MOVE the element, but not + its toplevel parent. This can allow you to move a #GESClip or + #GESGroup to a new start time or layer within its container group, + without effecting other members of the group. When acting on the end + of the element (#GES_EDGE_END), this will END-TRIM the element, + leaving its toplevel unchanged. + + + The element is edited in ripple mode: moving + itself as well as later elements, keeping their relative times. This + edits the element the same as #GES_EDIT_MODE_NORMAL. In addition, if + acting on the element as a whole, or the start of the element, any + toplevel element in the same timeline (including different layers) + whose start time is later than the *current* start time of the MOVED + element will also be MOVED by the same shift as the edited element. + If acting on the end of the element, any toplevel element whose start + time is later than the *current* end time of the edited element will + also be MOVED by the same shift as the change in the end of the + edited element. These additional elements will also be shifted by + the same shift in layers as the edited element. + + + The element is edited in ripple mode: moving + itself as well as later elements, keeping their relative times. This + edits the element the same as #GES_EDIT_MODE_NORMAL. In addition, if + acting on the element as a whole, or the start of the element, any + toplevel element in the same timeline (including different layers) + whose start time is later than the *current* start time of the MOVED + element will also be MOVED by the same shift as the edited element. + If acting on the end of the element, any toplevel element whose start + time is later than the *current* end time of the edited element will + also be MOVED by the same shift as the change in the end of the + edited element. These additional elements will also be shifted by + the same shift in layers as the edited element. + + + The element is edited in roll mode: swapping its + content for its neighbour's, or vis versa, in the timeline output. + This edits the element the same as #GES_EDIT_MODE_TRIM. In addition, + any neighbours are also TRIMMED at their opposite edge to the same + timeline position. When acting on the start of the element, a + neighbour is any earlier element in the timeline whose end time + matches the *current* start time of the edited element. When acting on + the end of the element, a neighbour is any later element in the + timeline whose start time matches the *current* start time of the + edited element. In addition, a neighbour have a #GESSource at its + end/start edge that shares a track with a #GESSource at the start/end + edge of the edited element. Basically, a neighbour is an element that + can be extended, or cut, to have its content replace, or be replaced + by, the content of the edited element. Acting on the element as a + whole (#GES_EDGE_NONE) is not defined. The element can not shift + layers under this mode. + + + The element is edited in roll mode: swapping its + content for its neighbour's, or vis versa, in the timeline output. + This edits the element the same as #GES_EDIT_MODE_TRIM. In addition, + any neighbours are also TRIMMED at their opposite edge to the same + timeline position. When acting on the start of the element, a + neighbour is any earlier element in the timeline whose end time + matches the *current* start time of the edited element. When acting on + the end of the element, a neighbour is any later element in the + timeline whose start time matches the *current* start time of the + edited element. In addition, a neighbour have a #GESSource at its + end/start edge that shares a track with a #GESSource at the start/end + edge of the edited element. Basically, a neighbour is an element that + can be extended, or cut, to have its content replace, or be replaced + by, the content of the edited element. Acting on the element as a + whole (#GES_EDGE_NONE) is not defined. The element can not shift + layers under this mode. + + + The element is edited in trim mode. When acting + on the start of the element, this will START-TRIM it. When acting on + the end of the element, this will END-TRIM it. Acting on the element + as a whole (#GES_EDGE_NONE) is not defined. + + + The element is edited in trim mode. When acting + on the start of the element, this will START-TRIM it. When acting on + the end of the element, this will END-TRIM it. Acting on the element + as a whole (#GES_EDGE_NONE) is not defined. + + + The element is edited in slide mode (not yet + implemented): moving the element replacing or consuming content on + each end. When acting on the element as a whole, this will MOVE the + element, and TRIM any neighbours on either side. A neighbour is + defined in the same way as in #GES_EDIT_MODE_ROLL, but they may be on + either side of the edited elements. Elements at the end with be + START-TRIMMED to the new end position of the edited element. Elements + at the start will be END-TRIMMED to the new start position of the + edited element. Acting on the start or end of the element + (#GES_EDGE_START and #GES_EDGE_END) is not defined. The element can + not shift layers under this mode. + + + The element is edited in slide mode (not yet + implemented): moving the element replacing or consuming content on + each end. When acting on the element as a whole, this will MOVE the + element, and TRIM any neighbours on either side. A neighbour is + defined in the same way as in #GES_EDIT_MODE_ROLL, but they may be on + either side of the edited elements. Elements at the end with be + START-TRIMMED to the new end position of the edited element. Elements + at the start will be END-TRIMMED to the new start position of the + edited element. Acting on the start or end of the element + (#GES_EDGE_START and #GES_EDGE_END) is not defined. The element can + not shift layers under this mode. + + + Return a string representation of @mode. + + + a string representation of @mode. + + + + + a #GESEditMode + + + + + + + Currently we only support effects with N sinkpads and one single srcpad. +Apart from `gesaudiomixer` and `gescompositor` which can be used as effects +and where sinkpads will be requested as needed based on the timeline topology +GES will always request at most one sinkpad per effect (when required). + +> Note: GES always adds converters (`audioconvert ! audioresample ! +> audioconvert` for audio effects and `videoconvert` for video effects) to +> make it simpler for end users. + + + + + Creates a new #GESEffect from the description of the bin. It should be +possible to determine the type of the effect through the element +'klass' metadata of the GstElements that will be created. +In that corner case, you should use: +#ges_asset_request (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL); +and extract that asset to be in full control. + + + a newly created #GESEffect, or %NULL if something went +wrong. + + + + + The gst-launch like bin description of the effect + + + + + + The description of the effect bin with a gst-launch-style +pipeline description. + +Example: "videobalance saturation=1.5 hue=+0.5" + + + + + + + + + + + + + + + + This asset has a GStreamer bin-description as ID and is able to determine +to what track type the effect should be used in. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + + + + + Register an element that can change the rate at which media is playing. +The property type must be float or double, and must be a factor of the +rate, i.e. a value of 2.0 must mean that the media plays twice as fast. +Several properties may be registered for a single element type, +provided they all contribute to the rate as independent factors. For +example, this is true for the "GstPitch::rate" and "GstPitch::tempo" +properties. These are already registered by default in GES, along with +#videorate:rate for #videorate and #scaletempo:rate for #scaletempo. + +If such a rate property becomes a child property of a #GESEffect upon +its creation (the element is part of its #GESEffect:bin-description), +it will be automatically registered as a time property (see +ges_base_effect_register_time_property()) and will have its time +translation functions set (see +ges_base_effect_set_time_translation_funcs()) to use the overall rate +of the rate properties. Note that if an effect contains a rate +property as well as a non-rate time property, you should ensure to set +the time translation functions to some other methods using +ges_base_effect_set_time_translation_funcs(). + +Note, you can obtain a reference to the GESEffectClass using + +``` + GES_EFFECT_CLASS (g_type_class_ref (GES_TYPE_EFFECT)); +``` + + + %TRUE if the rate property was successfully registered. When +this method returns %FALSE, a warning is emitted with more information. + + + + + Instance of the GESEffectClass + + + + The #GstElementFactory name of the element that changes +the rate + + + + The name of the property that changes the rate + + + + + + + The effect will be applied on the sources that have lower priorities +(higher number) between the inpoint and the end of it. + +The asset ID of an effect clip is in the form: + +``` + "audio ! bin ! description || video ! bin ! description" +``` + + + + + Creates a new #GESEffectClip from the description of the bin. + + + a newly created #GESEffectClip, or +%NULL if something went wrong. + + + + + The gst-launch like bin description of the effect + + + + The gst-launch like bin description of the effect + + + + + + The description of the audio track of the effect bin with a gst-launch-style +pipeline description. This should be used for test purposes. + +Example: "audiopanorama panorama=1.0" + + + + The description of the video track of the effect bin with a gst-launch-style +pipeline description. This should be used for test purposes. + +Example: "videobalance saturation=1.5 hue=+0.5" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The ID passed is malformed + + + An error happened while loading the asset + + + The formatted files was malformed + + + The frame number is invalid + + + The operation would lead to a negative +#GES_TIMELINE_ELEMENT_LAYER_PRIORITY. (Since: 1.18) + + + The operation would lead to a negative time. +E.g. for the #GESTimelineElement:start #GESTimelineElement:duration or +#GESTimelineElement:in-point. (Since: 1.18) + + + Some #GESTimelineElement does +not have a large enough #GESTimelineElement:max-duration to cover the +desired operation. (Since: 1.18) + + + The operation would break one of +the overlap conditions for the #GESTimeline. (Since: 1.18) + + + + + + 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 #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. + + + + + A #GESExtractable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the asset that has been set on the extractable object. + + + The asset set on @self, or %NULL +if no asset has been set. + + + + + 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 #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. + + + + + A #GESExtractable + + + + + + 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 successfully set on @self. + + + + + A #GESExtractable + + + + 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 #GESExtractable type to check @id for + + + + The ID to check + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GESAsset:id of some associated #GESAsset +that is compatible with @self's current state. + + + + + A #GESExtractable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests if a given GESFrameNumber represents a valid frame + + + + + + + + Constant to define an undefined frame number + + + + + 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 successfully filled the @nleobj. + + + + + The #GESClip controlling the track elements + + + + The #GESTrackElement + + + + The nleobject that needs to be filled + + + + + + Base class for timeline data serialization and deserialization. + + + + Checks if there is a #GESFormatter available which can load a #GESTimeline +from the given URI. + + + TRUE if there is a #GESFormatter that can support the given uri +or FALSE if not. + + + + + a #gchar * pointing to the URI + + + + + + Returns TRUE if there is a #GESFormatter available which can save a +#GESTimeline to the given URI. + + + TRUE if the given @uri is supported, else FALSE. + + + + + a #gchar * pointing to a URI + + + + + + Get the default #GESAsset to use as formatter. It will return +the asset for the #GESFormatter that has the highest @rank + + + The #GESAsset for the formatter with highest @rank + + + + + + + + + + + + + + + + + + + Load data from the given URI into timeline. + Use @ges_timeline_load_from_uri + + + TRUE if the timeline data was successfully loaded from the URI, +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + + + Save data from timeline to the given URI. + Use @ges_timeline_save_to_uri + + + TRUE if the timeline data was successfully saved to the URI +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + %TRUE to overwrite file if it exists + + + + + + Load data from the given URI into timeline. + Use @ges_timeline_load_from_uri + + + TRUE if the timeline data was successfully loaded from the URI, +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + + + Save data from timeline to the given URI. + Use @ges_timeline_save_to_uri + + + TRUE if the timeline data was successfully saved to the URI +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + %TRUE to overwrite file if it exists + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GES Formatter class. Override the vmethods to implement the formatter functionnality. + + + the parent class structure + + + + Whether the URI can be loaded + + + + class method to deserialize data from a URI + + + + class method to serialize data to a URI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + TRUE if the timeline data was successfully loaded from the URI, +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + + + + + + Virtual method for saving a timeline to a uri. + +Every #GESFormatter subclass needs to implement this method. + + + TRUE if the timeline data was successfully saved to the URI +else FALSE. + + + + + a #GESFormatter + + + + a #GESTimeline + + + + a #gchar * pointing to a URI + + + + %TRUE to overwrite file if it exists + + + + + + A #GESGroup 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 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 group. You may wish to use +ges_container_group() instead, which can return a different +#GESContainer subclass if possible. + + + The new empty group. + + + + + 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. + + + + An overwrite of the #GESTimelineElement:in-point property. This has +no meaning for a group and should not be set. + + + + 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. + + + + An overwrite of the #GESTimelineElement:start property. For a +#GESGroup, this is the earliest #GESTimelineElement:start time +amongst its children. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + The location of the file/resource to use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #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 layer. + + + A new layer. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See ges_layer_add_asset_full(), which also gives an error. + + + The newly created clip. + + + + + The #GESLayer + + + + The asset to extract the new clip from + + + + 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 #GESTimelineElement:in-point value to set on the new +clip + + + + The #GESTimelineElement:duration value to set on the new +clip + + + + The #GESClip:supported-formats to set on the the new +clip, or #GES_TRACK_TYPE_UNKNOWN to use the default + + + + + + Extracts a new clip from an asset and adds it to the layer with +the given properties. + + + The newly created clip. + + + + + The #GESLayer + + + + The asset to extract the new clip from + + + + 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 #GESTimelineElement:in-point value to set on the new +clip + + + + The #GESTimelineElement:duration value to set on the new +clip + + + + The #GESClip:supported-formats to set on the the new +clip, or #GES_TRACK_TYPE_UNKNOWN to use the default + + + + + + See ges_layer_add_clip_full(), which also gives an error. + + + %TRUE if @clip was properly added to @layer, or %FALSE +if @layer refused to add @clip. + + + + + The #GESLayer + + + + The clip to add + + + + + + Adds the given clip to the layer. If the method succeeds, the layer +will take ownership of the clip. + +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 @clip was properly added to @layer, or %FALSE +if @layer refused to add @clip. + + + + + The #GESLayer + + + + The clip to add + + + + + + Gets whether the layer is active for the given track. See +ges_layer_set_active_for_tracks(). + + + %TRUE if @layer is active for @track, or %FALSE otherwise. + + + + + 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 #GESClip-s contained in this layer. + + + A list of clips in +@layer. + + + + + + + The #GESLayer + + + + + + Gets the clips within the layer that appear between @start and @end. + + + A list of #GESClip-s +that intersect the interval `[start, end)` in @layer. + + + + + + + The #GESLayer + + + + Start of the interval + + + + End of the interval + + + + + + 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 @layer. + + + + + The layer to get the duration from + + + + + + 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 @layer within its timeline. + + + + + The #GESLayer + + + + + + Gets the timeline that the layer is a part of. + + + The timeline that @layer +is currently part of, or %NULL if it is not associated with any +timeline. + + + + + The #GESLayer + + + + + + Convenience method to check if the layer is empty (doesn't contain +any #GESClip), or not. + + + %TRUE if @layer is empty, %FALSE if it contains at least +one clip. + + + + + The #GESLayer to check + + + + + + Removes the given clip from the layer. + + + %TRUE if @clip was removed from @layer, or %FALSE if the +operation failed. + + + + + The #GESLayer + + + + 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 #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). + + + + + + + The #GESLayer + + + + Whether transitions should be automatically added to +the layer + + + + + + 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. + + + + + + + The #GESLayer + + + + The priority to set + + + + + + + + + + + + + + + + + + + + Whether to automatically create a #GESTransitionClip whenever two +#GESSource-s that both belong to a #GESClip in the layer overlap. +See #GESTimeline for what counts as an overlap. + +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 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 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 +will make sure there is never 'gaps' between layer priorities. + + + + + + + the #GESTimeline where this layer is being used. + + + + + + + + + + + + + + + + + + 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 is added to the layer. + + + + + + The clip that was added + + + + + + Will be emitted after the clip is removed from the layer. + + + + + + The clip that was removed + + + + + + + Subclasses can override the @get_objects if they can provide a more +efficient way of providing the list of contained #GESClip-s. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The description of the object, to be used in various contexts (string). + + + + + The file extension of files produced by a #GESFormatter (string). + + + + + The mimetype used for the file produced by a #GESFormatter (string). + + + + + The name of a formatter, used as the #GESAsset:id for #GESFormatter +assets (string). + + + + + The rank of a #GESFormatter (a #GstRank). + + + + + The version of a #GESFormatter (double). + + + + + 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 for a #GESTrack or a #GESLayer (float). + + + + + The default volume for a #GESTrack or a #GESLayer as a float. + + + + + + + + + A timed #GESMetaContainer object. + + + + Current position (in nanoseconds) of the #GESMarker + + + + + + + + + + + + Marker does not serve any special purpose. + + + Marker can be a snapping target. + + + + A #GESMarker can be colored by setting the #GES_META_MARKER_COLOR meta. + + + Creates a new #GESMarkerList. + + + A new #GESMarkerList + + + + + + + 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 + + + + + + + + + + Flags indicating how markers on the list should be treated. + + + + 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. + + + + + A #GESMetaContainer + + + + 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 on each of the meta container's set metadata +fields. + + + + + + + A #GESMetaContainer + + + + A function to call on each of @container's set +metadata fields + + + + User data to send to @func + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + 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 current value of the specified field of the meta container. + + + The value under @key, or %NULL if @container +does not have the field set. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + 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. + + + + + A #GESMetaContainer + + + + The key for the @container field to get + + + + Destination into which the value under @meta_item +should be copied. + + + + + + Serializes the set metadata fields of the meta container to a string. + + + A serialized @container. + + + + + A #GESMetaContainer + + + + + + 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 @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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given boolean value, and registers the field to only hold a boolean +typed value. After calling this, only boolean values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given date value, and registers the field to only hold a date +typed value. After calling this, only date values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given date time value, and registers the field to only hold a date time +typed value. After calling this, only date time values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given double value, and registers the field to only hold a double +typed value. After calling this, only double values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given float value, and registers the field to only hold a float +typed value. After calling this, only float values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given int value, and registers the field to only hold an int +typed value. After calling this, only int values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given int64 value, and registers the field to only hold an int64 +typed value. After calling this, only int64 values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given string value, and registers the field to only hold a string +typed value. After calling this, only string values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given uint value, and registers the field to only hold a uint +typed value. After calling this, only uint values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Sets the value of the specified field of the meta container to the +given uint64 value, and registers the field to only hold a uint64 +typed value. After calling this, only uint64 values can be set for +this field. The given flags can be set to make this field only +readable after calling this method. + + + %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. + + + + + A #GESMetaContainer + + + + Flags to be used for the registered field + + + + The key for the @container field to register + + + + The value to set for the registered field + + + + + + Registers a static metadata field on the container to only hold the +specified type. After calling this, setting a value under this field +can only succeed if its type matches the registered type of the field. + +Unlike ges_meta_container_register_meta(), no (initial) value is set +for this field, which means you can use this method to reserve the +space to be _optionally_ set later. + +Note that if a value has already been set for the field being +registered, then its type must match the registering type, and its +value will be left in place. If the field has no set value, then +you will likely want to include #GES_META_WRITABLE in @flags to allow +the value to be set later. + + + %TRUE if the @meta_item field was successfully registered on +@container to only hold @type values, with the given @flags. + + + + + 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 + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given date value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given date time value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given double value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given float value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given int value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given int64 value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given marker list value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + 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 + + + + The value to set under @meta_item, or %NULL to +remove the corresponding field + + + + + + Sets the value of the specified field of the meta container to the +given string value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given uint value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field to set + + + + The value to set under @meta_item + + + + + + Sets the value of the specified field of the meta container to the +given uint64 value. + + + %TRUE if @value was set under @meta_item for @container. + + + + + A #GESMetaContainer + + + + The key for the @container field 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 + + + + + + + + + + + + + + + + + + + The metadata is readable + + + The metadata is writable + + + The metadata is readable and writable + + + + 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. + +This should not be used anymore, the `imagesequence://` protocol should be +used instead. Check the #imagesequencesrc GStreamer element for more +information. + Use #GESUriSource instead + + + + + + + + + + + + + + + + The uri of the file/resource to use. You can set a start index, +a stop index and a sequence pattern. +The format is <multifile://start:stop\@location-pattern>. +The pattern uses printf string formating. + +Example uris: + +multifile:///home/you/image\%03d.jpg + +multifile://20:50@/home/you/sequence/\%04d.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for overlays, transitions, and effects + + + + + + + + + + + + + + + + + + + + + + + + + + + + Operations are any kind of object that both outputs AND consumes data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overlays are objects which modify the underlying layer(s). + +Examples of overlays include text, image watermarks, or audio dubbing. + +Transitions, which change from one source to another over time, are +not considered overlays. + + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + + + + + + + + + + + + + + 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 pipeline. + + + The newly created pipeline. + + + + + Gets the #GESPipeline:mode of the pipeline. + + + The current mode of @pipeline. + + + + + A #GESPipeline + + + + + + 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 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 + + + + Some caps to specifying the desired format, or +#GST_CAPS_ANY to use the native format + + + + + + 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. + +See ges_pipeline_get_thumbnail(). + + + 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 + + + + The requested pixel width of the image, or -1 to use the native +size + + + + The requested pixel height of the image, or -1 to use the +native size + + + + + + Gets the #GESPipeline:audio-sink of the pipeline. + + + The audio sink used by @self for preview. + + + + + A #GESPipeline + + + + + + Gets the #GESPipeline:video-sink of the pipeline. + + + The video sink used by @self for preview. + + + + + A #GESPipeline + + + + + + Sets the #GESPipeline:audio-sink of the pipeline. + + + + + + + A #GESPipeline in #GST_STATE_NULL + + + + A audio sink for @self to use for preview + + + + + + Sets the #GESPipeline:video-sink of the pipeline. + + + + + + + A #GESPipeline in #GST_STATE_NULL + + + + A video sink for @self to use for preview + + + + + + Saves the currently displayed image of the pipeline in preview to the +given location, in the specified dimensions and format. + + + %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 + + + + The requested pixel width of the image, or -1 to use the native +size + + + + The requested pixel height of the image, or -1 to use the +native size + + + + The desired mime type (for example, "image/jpeg") + + + + The path to save the thumbnail to + + + + + + Sets the #GESPipeline:mode of the pipeline. + +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. + +> **NOTE**: [Rendering settings](ges_pipeline_set_render_settings) need to be +> set before setting @mode to #GES_PIPELINE_MODE_RENDER or +> #GES_PIPELINE_MODE_SMART_RENDER, the call to this method will fail +> otherwise. + + + %TRUE if the mode of @pipeline was successfully set to @mode. + + + + + A #GESPipeline + + + + The mode to set for @pipeline + + + + + + Specifies encoding setting to be used by the pipeline to render its +#GESPipeline:timeline, and where the result should be written to. + +This method **must** be called before setting the pipeline mode to +#GES_PIPELINE_MODE_RENDER. + + + %TRUE if the settings were successfully set on @pipeline. + + + + + A #GESPipeline + + + + The URI to save the #GESPipeline:timeline rendering +result to + + + + The encoding to use for rendering the #GESPipeline:timeline + + + + + + Takes the given timeline and sets it as the #GESPipeline:timeline for +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 @timeline was successfully given to @pipeline. + + + + + A #GESPipeline + + + + 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. + + + + The audio sink used for preview. This exposes the +#playsink:audio-sink property of the internal #playsink. + + + + 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. + + + + 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. + + + + The video sink used for preview. This exposes the +#playsink:video-sink property of the internal #playsink. + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + The various modes a #GESPipeline can be configured to. + + Output the #GESPipeline:timeline's +audio to the soundcard + + + Output the #GESPipeline:timeline's +video to the screen + + + Output both the #GESPipeline:timeline's +audio and video to the soundcard and screen (default) + + + Render the #GESPipeline:timeline with +forced decoding (the underlying #encodebin has its +#encodebin:avoid-reencoding property set to %FALSE) + + + Render the #GESPipeline:timeline, +avoiding decoding/reencoding (the underlying #encodebin has its +#encodebin:avoid-reencoding property set to %TRUE). +> NOTE: Smart rendering can not work in tracks where #GESTrack:mixing +> is enabled. + + + + + + + + This is a legacy format and you should avoid to use it. The formatter +is really not in good shape and is deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GESProject is used to control a set of #GESAsset and is a +#GESAsset with `GES_TYPE_TIMELINE` as @extractable_type itself. That +means that you can extract #GESTimeline from a project as followed: + +|[ + GESProject *project; + GESTimeline *timeline; + + project = ges_project_new ("file:///path/to/a/valid/project/uri"); + + // Here you can connect to the various signal to get more infos about + // what is happening and recover from errors if possible + ... + + timeline = ges_asset_extract (GES_ASSET (project)); +]| + +The #GESProject class offers a higher level API to handle #GESAsset-s. +It lets you request new asset, and it informs you about new assets through +a set of signals. Also it handles problem such as missing files/missing +#GstElement and lets you try to recover from those. + +## 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. + + + + + + Creates a new #GESProject and sets its uri to @uri if provided. Note that +if @uri is not valid or %NULL, the uri of the project will then be set +the first time you save the project. If you then save the project to +other locations, it will never be updated again and the first valid URI is +the URI it will keep refering to. + + + A newly created #GESProject + + + + + The uri to be set after creating the project. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The self + + + + The loading timeline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds a #GESAsset to @project, the project will keep a reference on +@asset. + + + %TRUE if the asset could be added %FALSE it was already +in the project + + + + + A #GESProject + + + + A #GESAsset to add to @project + + + + + + Adds @profile to the project. It lets you save in what format +the project has been renders and keep a reference to those formats. +Also, those formats will be saves to the project file when possible. + + + %TRUE if @profile could be added, %FALSE otherwize + + + + + A #GESProject + + + + A #GstEncodingProfile to add to the project. If a profile with +the same name already exists, it will be replaced + + + + + + 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 +@project + + + %TRUE if the asset started to be added %FALSE it was already +in the project + + + + + A #GESProject + + + + The id of the asset to create and add to @project + + + + The #GType of the asset to create + + + + + + Create and add a #GESAsset to @project. You should connect to the +"asset-added" signal to get the asset when it finally gets added to +@project + + + The newly created #GESAsset or %NULL. + + + + + A #GESProject + + + + The id of the asset to create and add to @project + + + + The #GType of the asset to create + + + + + + + + The #GESAsset with +@id or %NULL if no asset with @id as an ID + + + + + A #GESProject + + + + The id of the asset to retrieve + + + + The extractable_type of the asset +to retrieve from @object + + + + + + Get the assets that are being loaded + + + A set of loading asset +that will be added to @project. Note that those Asset are *not* loaded yet, +and thus can not be used + + + + + + + A #GESProject + + + + + + Retrieve the uri that is currently set on @project + + + a newly allocated string representing uri. + + + + + A #GESProject + + + + + + List all @asset contained in @project filtering per extractable_type +as defined by @filter. It copies the asset and thus will not be updated +in time. + + + The list of +#GESAsset the object contains + + + + + + + A #GESProject + + + + Type of assets to list, `GES_TYPE_EXTRACTABLE` will list +all assets + + + + + + Lists the encoding profile that have been set to @project. The first one +is the latest added. + + + The +list of #GstEncodingProfile used in @project + + + + + + + A #GESProject + + + + + + Loads @project into @timeline + + + %TRUE if the project could be loaded %FALSE otherwize. + + + + + A #GESProject that has an @uri set already + + + + A blank timeline to load @project into + + + + + + remove a @asset to from @project. + + + %TRUE if the asset could be removed %FALSE otherwise + + + + + A #GESProject + + + + A #GESAsset to remove from @project + + + + + + Save the timeline of @project to @uri. You should make sure that @timeline +is one of the timelines that have been extracted from @project +(using ges_asset_extract (@project);) + + + %TRUE if the project could be save, %FALSE otherwize + + + + + A #GESProject to save + + + + The #GESTimeline to save, it must have been extracted from @project + + + + The uri where to save @project and @timeline + + + + The formatter asset to +use or %NULL. If %NULL, will try to save in the same format as the one +from which the timeline as been loaded or default to the best formatter +as defined in #ges_find_formatter_for_uri + + + + %TRUE to overwrite file if it exists + + + + + + + + + + + + + + + + + + + + + + + + + The #GESAsset that has been added to @project + + + + + + + + + + + The #GESAsset that started loading + + + + + + + + + + + The #GESAsset that has been removed from @project + + + + + + + + + + + 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 +#GST_CORE_ERROR_MISSING_PLUGIN + + + + + + The #GError defining the error that occured, might be %NULL + + + + The @id of the asset that failed loading + + + + The @extractable_type of the asset that +failed loading + + + + + + + + + + + The #GESTimeline that completed loading + + + + + + + + + + + The #GESTimeline that started loading + + + + + + |[ +static gchar +source_moved_cb (GESProject *project, GError *error, GESAsset *asset_with_error) +{ + return g_strdup ("file:///the/new/uri.ogg"); +} + +static int +main (int argc, gchar ** argv) +{ + GESTimeline *timeline; + GESProject *project = ges_project_new ("file:///some/uri.xges"); + + g_signal_connect (project, "missing-uri", source_moved_cb, NULL); + timeline = ges_asset_extract (GES_ASSET (project)); +} +]| + + The new URI of @wrong_asset + + + + + The error that happened + + + + The asset with the wrong ID, you should us it and its content +only to find out what the new location is. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The self + + + + The loading timeline + + + + + + + + + + + + + + + + Base class for single-media sources + + + + + Creates the GstElement to put in the source topbin. Other elements will be +queued, like a volume. In the case of a AudioUriSource, for example, the +subclass will return a decodebin, and we will append a volume. + + + The source element to use. + + + + + The #GESAudioSource + + + + + + Check whether @pad should be exposed/used. + + + %TRUE if @pad should be used %FALSE otherwise. + + + + + The @source for which to check if @pad should be used or not + + + + The pad to check + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if @pad should be used %FALSE otherwise. + + + + + The @source for which to check if @pad should be used or not + + + + The pad to check + + + + + + + + + + The source element to use. + + + + + The #GESAudioSource + + + + + + + + + + + + + #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. + + + + + Creates a new #GESSourceClip that renders a time overlay on top + + + The newly created #GESSourceClip, +or %NULL if there was an error. + + + + + + + + + + + + + + + + + An asset types from which #GESSourceClip will be extracted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GESTimelineElement:duration of @obj. + + + + A #GESTimelineElement + + + + + The end position of @obj: #GESTimelineElement:start + +#GESTimelineElement:duration. + + + + A #GESTimelineElement + + + + + The #GESTimelineElement:in-point of @obj. + + + + A #GESTimelineElement + + + + + See #ges_timeline_element_get_layer_priority. + + + + The object to retrieve the layer priority from + + + + + The #GESTimelineElement:max-duration of @obj. + + + + A #GESTimelineElement + + + + + The #GESTimelineElement:name of @obj. + + + + A #GESTimelineElement + + + + + Layer priority when a timeline element is not in any layer. + + + + + The #GESTimelineElement:parent of @obj. + + + + A #GESTimelineElement + + + + + The #GESTimelineElement:priority of @obj. + + + + A #GESTimelineElement + + + + + The #GESTimelineElement:start of @obj. + + + + A #GESTimelineElement + + + + + The #GESTimelineElement:timeline of @obj. + + + + A #GESTimelineElement + + + + + + + + + + + + + + + + + + + What the default #GESTrackElement:has-internal-source value should be +for new elements from this class. + + + + A #GESTrackElementClass + + + + + Useful for testing purposes. + +## Asset + +The default asset ID is GESTestClip, but the framerate and video +size can be overridden 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. + + + + + Creates a new #GESTestClip. + + + The newly created #GESTestClip, +or %NULL if there was an error. + + + + + Creates a new #GESTestClip for the provided @nick. + + + The newly created #GESTestClip, +or %NULL if there was an error. + + + + + the nickname for which to create the #GESTestClip + + + + + + Get the frequency @self generates. + + + The frequency @self generates. See audiotestsrc element. + + + + + a #GESTestClip + + + + + + Get the volume of the test audio signal applied on @self. + + + The volume of the test audio signal applied on @self. + + + + + a #GESTestClip + + + + + + Get the #GESVideoTestPattern which is applied on @self. + + + The #GESVideoTestPattern which is applied on @self. + + + + + a #GESTestClip + + + + + + Let you know if the audio track of @self is muted or not. + + + Whether the audio track of @self is muted or not. + + + + + a #GESTestClip + + + + + + Sets the frequency to generate. See audiotestsrc element. + + + + + + + the #GESTestClip to set the frequency on + + + + the frequency you want to use on @self + + + + + + Sets whether the audio track of this clip is muted or not. + + + + + + + the #GESTestClip on which to mute or unmute the audio track + + + + %TRUE to mute the audio track, %FALSE to unmute it + + + + + + Sets the volume of the test audio signal. + + + + + + + the #GESTestClip to set the volume on + + + + the volume of the audio signal you want to use on @self + + + + + + Sets which video pattern to display on @self. + + + + + + + the #GESTestClip to set the pattern on + + + + the #GESVideoTestPattern to use on @self + + + + + + The frequency to generate for audio track elements. + + + + Whether the sound will be played or not. + + + + The volume for the audio track elements. + + + + Video pattern to display in video track elements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Horizontal alignment of the text. + + align text left + + + align text center + + + align text right + + + align text on xpos position + + + + + + + + + + Creates a new #GESTextOverlay. + This should never be called by applications as this will +be created by clips. + + + The newly created #GESTextOverlay or +%NULL if something went wrong. + + + + + Get the color used by @source. + + + The color used by @source. + + + + + a GESTextOverlay + + + + + + Get the pango font description currently set on @source. + + + The pango font description currently set on @source. + + + + + a GESTextOverlay + + + + + + Get the horizontal aligment used by @source. + + + The horizontal aligment used by @source. + + + + + a GESTextOverlay + + + + + + Get the text currently set on @source. + + + The text currently set on @source. + + + + + a GESTextOverlay + + + + + + Get the vertical aligment used by @source. + + + The vertical aligment used by @source. + + + + + a GESTextOverlay + + + + + + Get the horizontal position used by @source. + + + The horizontal position used by @source. + + + + + a GESTextOverlay + + + + + + Get the vertical position used by @source. + + + The vertical position used by @source. + + + + + a GESTextOverlay + + + + + + Sets the color of the text. + + + + + + + the #GESTextOverlay* to set + + + + The color @self is being set to + + + + + + Sets the pango font description of the text this track element +will render. + + + + + + + the #GESTextOverlay + + + + the pango font description + + + + + + Sets the horizontal aligment of the text. + + + + + + + the #GESTextOverlay* to set text on + + + + The #GESTextHAlign defining the horizontal alignment +of the text render by @self. + + + + + + Sets the text this track element will render. + + + + + + + the #GESTextOverlay* to set text on + + + + the text to render. an internal copy of this text will be +made. + + + + + + Sets the vertical aligment of the text. + + + + + + + the #GESTextOverlay* to set text on + + + + The #GESTextVAlign defining the vertical alignment +of the text render by @self. + + + + + + Sets the horizontal position of the text. + + + + + + + the #GESTextOverlay* to set + + + + The horizontal position @self is being set to + + + + + + Sets the vertical position of the text. + + + + + + + the #GESTextOverlay* to set + + + + The vertical position @self is being set to + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Renders text onto the next lower priority stream using textrender. + + + + + Creates a new #GESTextOverlayClip + + + The newly created +#GESTextOverlayClip, or %NULL if there was an error. + + + + + Get the color used by @source. + + + The color used by @source. + + + + + a #GESTextOverlayClip + + + + + + Get the pango font description used by @self. + + + The pango font description used by @self. + + + + + a #GESTextOverlayClip + + + + + + Get the horizontal aligment used by @self. + + + The horizontal aligment used by @self. + + + + + a #GESTextOverlayClip + + + + + + Get the text currently set on @self. + + + The text currently set on @self. + + + + + a #GESTextOverlayClip + + + + + + Get the vertical aligment used by @self. + + + The vertical aligment used by @self. + + + + + a #GESTextOverlayClip + + + + + + Get the horizontal position used by @source. + + + The horizontal position used by @source. + + + + + a #GESTextOverlayClip + + + + + + Get the vertical position used by @source. + + + The vertical position used by @source. + + + + + a #GESTextOverlayClip + + + + + + Sets the color of the text. + + + + + + + the #GESTextOverlayClip* to set + + + + The color @self is being set to + + + + + + Sets the pango font description of the text + + + + + + + the #GESTextOverlayClip* + + + + the pango font description + + + + + + Sets the horizontal aligment of the text. + + + + + + + the #GESTextOverlayClip* to set horizontal alignement of text on + + + + #GESTextHAlign + + + + + + Sets the text this clip will render. + + + + + + + the #GESTextOverlayClip* to set text on + + + + the text to render. an internal copy of this text will be +made. + + + + + + Sets the vertical aligment of the text. + + + + + + + the #GESTextOverlayClip* to set vertical alignement of text on + + + + #GESTextVAlign + + + + + + Sets the horizontal position of the text. + + + + + + + the #GESTextOverlayClip* to set + + + + The horizontal position @self is being set to + + + + + + Sets the vertical position of the text. + + + + + + + the #GESTextOverlayClip* to set + + + + The vertical position @self is being set to + + + + + + The color of the text + + + + Pango font description string + + + + Horizontal alignment of the text + + + + The text to diplay + + + + Vertical alignent of the text + + + + The horizontal position of the text + + + + The vertical position of the text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vertical alignment of the text. + + draw text on the baseline + + + draw text on the bottom + + + draw text on top + + + draw text on ypos position + + + draw text on the center + + + + + + #GESTimeline is the central object for any multimedia timeline. + +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 contained tracks define the supported types of the timeline +and provide the media output. Essentially, each track provides an +additional source #GstPad. + +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. + +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(). + +## Editing + +See #GESTimelineElement for the various ways the elements of a timeline +can be edited. + +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 output of the timeline's tracks 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 on the produced data. + +## Overlaps and Auto-Transitions + +There are certain restrictions placed on how #GESSource-s may overlap +in a #GESTrack that belongs to a timeline. These will be enforced by +GES, so the user will not need to keep track of them, but they should +be aware that certain edits will be refused as a result if the overlap +rules would be broken. + +Consider two #GESSource-s, `A` and `B`, with start times `startA` and +`startB`, and end times `endA` and `endB`, respectively. The start +time refers to their #GESTimelineElement:start, and the end time is +their #GESTimelineElement:start + #GESTimelineElement:duration. These +two sources *overlap* if: + ++ they share the same #GESTrackElement:track (non %NULL), which belongs + to the timeline; ++ they share the same #GES_TIMELINE_ELEMENT_LAYER_PRIORITY; and ++ `startA < endB` and `startB < endA `. + +Note that when `startA = endB` or `startB = endA` then the two sources +will *touch* at their edges, but are not considered overlapping. + +If, in addition, `startA < startB < endA`, then we can say that the +end of `A` overlaps the start of `B`. + +If, instead, `startA <= startB` and `endA >= endB`, then we can say +that `A` fully overlaps `B`. + +The overlap rules for a timeline are that: + +1. One source cannot fully overlap another source. +2. A source can only overlap the end of up to one other source at its + start. +3. A source can only overlap the start of up to one other source at its + end. + +The last two rules combined essentially mean that at any given timeline +position, only up to two #GESSource-s may overlap at that position. So +triple or more overlaps are not allowed. + +If you switch on #GESTimeline:auto-transition, then at any moment when +the end of one source (the first source) overlaps the start of another +(the second source), a #GESTransitionClip will be automatically created +for the pair in the same layer and it will cover their overlap. If the +two elements are edited in a way such that the end of the first source +no longer overlaps the start of the second, the transition will be +automatically removed from the timeline. However, if the two sources +still overlap at the same edges after the edit, then the same +transition object will be kept, but with its timing and layer adjusted +accordingly. + +NOTE: if you know what you are doing and want to be in full control of the +timeline layout, you can disable the edit APIs with +#ges_timeline_disable_edit_apis. + +## 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. + +## 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 timeline. + + + The new timeline. + + + + + Creates a new timeline containing a single #GESAudioTrack and a +single #GESVideoTrack. + + + The new timeline. + + + + + Creates a timeline from the given URI. + + + A new timeline if the uri was loaded +successfully, or %NULL if the uri could not be loaded. + + + + + The URI to load from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add 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 @layer was properly added. + + + + + The #GESTimeline + + + + The layer to add + + + + + + 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 @track was properly added. + + + + + The #GESTimeline + + + + The track to add + + + + + + Append a newly created layer to the timeline. The layer will +be added at the lowest #GESLayer:priority (numerically, the highest). + + + The newly created layer. + + + + + The #GESTimeline + + + + + + Commit all the pending changes of the clips contained in the +timeline. + +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 before receiving this signal. You can use +ges_timeline_commit_sync() if you do not want to perform other tasks in +the mean time. + +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 committed, or %FALSE if nothing +needed to be committed. + + + + + A #GESTimeline + + + + + + Commit all the pending changes of the clips contained in the +timeline and wait for the changes to complete. + +See ges_timeline_commit(). + + + %TRUE if pending changes were committed, or %FALSE if nothing +needed to be committed. + + + + + A #GESTimeline + + + + + + WARNING: When using that mode, GES won't guarantee the coherence of the +timeline. You need to ensure that the rules described in the [Overlaps and +auto transitions](#overlaps-and-autotransitions) section are respected any time +the timeline is [commited](ges_timeline_commit) (otherwise playback will most +probably fail in different ways). + +When disabling editing APIs, GES won't be able to enforce the rules that +makes the timeline overall state to be valid but some feature won't be +usable: + * #GESTimeline:snapping-distance + * #GESTimeline:auto-transition + + + + + + + A #GESTimeline + + + + %TRUE to disable all the edit APIs so the user is in full +control of ensuring timeline state validity %FALSE otherwise. + + + + + + Freezes the timeline from being committed. This is usually needed while the +timeline is being rendered to ensure that not change to the timeline are +taken into account during that moment. Once the rendering is done, you +should call #ges_timeline_thaw_commit so that committing becomes possible +again and any call to `commit()` that happened during the rendering is +actually taken into account. + + + + + + + The #GESTimeline + + + + + + Gets #GESTimeline:auto-transition for the timeline. + + + The auto-transition of @self. + + + + + The #GESTimeline + + + + + + Get the current #GESTimeline:duration of the timeline + + + The current duration of @timeline. + + + + + The #GESTimeline + + + + + + + + %TRUE if edit APIs are disabled, %FALSE otherwise. + + + + + A #GESTimeline + + + + + + Gets the element contained in the timeline with the given name. + + + The timeline element in @timeline +with the given @name, or %NULL if it was not found. + + + + + The #GESTimeline + + + + The name of the element to find + + + + + + This method allows you to convert a timeline #GstClockTime into its +corresponding #GESFrameNumber in the timeline's output. + + + 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. + + + + + + + The #GESTimeline + + + + + + Retrieve the layer whose index in the timeline matches the given +priority. + + + The layer with the given +@priority, or %NULL if none was found. + +Since 1.6 + + + + + The #GESTimeline to retrieve a layer from + + + + The priority/index of the layer to find + + + + + + Get the list of #GESLayer-s present in the timeline. + + + The list of +layers present in @timeline sorted by priority. + + + + + + + The #GESTimeline + + + + + + 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 pad corresponding to @track, +or %NULL if there is an error. + + + + + The #GESTimeline + + + + A track + + + + + + Gets the #GESTimeline:snapping-distance for the timeline. + + + The snapping distance (in nanoseconds) of @timeline. + + + + + The #GESTimeline + + + + + + Search for the #GESTrack corresponding to the given timeline's pad. + + + The track corresponding to @pad, +or %NULL if there is an error. + + + + + The #GESTimeline + + + + A pad + + + + + + Get the list of #GESTrack-s used by the timeline. + + + The list of tracks +used by @timeline. + + + + + + + The #GESTimeline + + + + + + Check whether the timeline is empty or not. + + + %TRUE if @timeline is empty. + + + + + The #GESTimeline + + + + + + Loads the contents of URI into the timeline. + + + %TRUE if the timeline was loaded successfully from @uri. + + + + + An empty #GESTimeline into which to load the formatter + + + + The URI to load from + + + + + + 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. + + + + + + + A #GESTimeline + + + + A layer within @timeline, whose priority should be changed + + + + The new index for @layer + + + + + + 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(). + + + The newly created element, or +%NULL if pasting fails. + + + + + The #GESTimeline onto which @element should be pasted + + + + The element to paste + + + + The position in the timeline @element should be pasted to, +i.e. the #GESTimelineElement:start value for the pasted element. + + + + The layer into which the element should be pasted. +-1 means paste to the same layer from which @element has been copied from + + + + + + Removes a layer from the timeline. + + + %TRUE if @layer was properly removed. + + + + + The #GESTimeline + + + + The layer to remove + + + + + + Remove a track from the timeline. + + + %TRUE if @track was properly removed. + + + + + The #GESTimeline + + + + The track to remove + + + + + + 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 @timeline was successfully saved to @uri. + + + + + The #GESTimeline + + + + The location to save to + + + + The formatter asset to use, or %NULL + + + + %TRUE to overwrite file if it exists + + + + + + 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. + + + + + + + The #GESTimeline + + + + Whether transitions should be automatically added +to @timeline's layers + + + + + + 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. + + + + + + + The #GESTimeline + + + + The snapping distance to use (in nanoseconds) + + + + + + Thaw the timeline so that comiting becomes possible +again and any call to `commit()` that happened during the rendering is +actually taken into account. + + + + + + + The #GESTimeline + + + + + + Whether to automatically create a transition whenever two +#GESSource-s overlap in a track of the timeline. See +#GESLayer:auto-transition if you want this to only happen in some +layers. + + + + 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. + + + + The distance (in nanoseconds) at which a #GESTimelineElement being +moved within the timeline should snap one of its #GESSource-s with +another #GESSource-s edge. See #GESEditMode for which edges can +snap during an edit. 0 means no snapping. + + + + + + + A list of #GESLayer-s 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. + + + + + + + + + + + + + + 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 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 group that was added to @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 group that was removed from @timeline + + + + A list +of #GESContainer-s that _were_ the children of the removed @group + + + + + + + + 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 layer that was added to @timeline + + + + + + Will be emitted after the layer is removed from the timeline. + + + + + + The layer that was removed from @timeline + + + + + + Simplified version of #GESTimeline::select-tracks-for-object which only +allows @track_element to be added to a single #GESTrack. + + A track to put @track_element into, or %NULL if +it should be discarded. + + + + + The clip that @track_element is being added to + + + + The element being added + + + + + + 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. + + An array of +#GESTrack-s that @track_element should be added to, or %NULL to +not add the element to any track. + + + + + + + The clip that @track_element is being added to + + + + The element being added + + + + + + Will be emitted whenever a snapping event ends. After a snap event +has started (see #GESTimeline::snapping-started), it can later end +because either another timeline edit has occurred (which may or may +not have created a new snapping event), or because the timeline has +been committed. + + + + + + The first element that was snapping + + + + The second element that was snapping + + + + The position where the two objects were to be snapped to + + + + + + Will be emitted whenever an element's movement invokes a snapping +event during an edit (usually of one of its ancestors) because its +start or end point lies within the #GESTimeline:snapping-distance of +another element's start or end point. + +See #GESEditMode to see what can snap during an edit. + +Note that only up to one snapping-started signal will be emitted per +element edit within a timeline. + + + + + + The first element that is snapping + + + + The second element that is snapping + + + + The position where the two objects will snap to + + + + + + 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 track that was added to @timeline + + + + + + Will be emitted after the track is removed from the timeline. + + + + + + The track that was removed from @timeline + + + + + + + + + parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. See +#GESTimeline for its overlap rules. + +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). + +## Time Coordinates + +There are three main sets of time coordinates to consider when using +timeline elements: + ++ Timeline coordinates: these are the time coordinates used in the + output of the timeline in its #GESTrack-s. Each track share the same + coordinates, so there is only one set of coordinates for the + timeline. These extend indefinitely from 0. The times used for + editing (including setting #GESTimelineElement:start and + #GESTimelineElement:duration) use these coordinates, since these + define when an element is present and for how long the element lasts + for in the timeline. ++ Internal source coordinates: these are the time coordinates used + internally at the element's output. This is only really defined for + #GESTrackElement-s, where it refers to time coordinates used at the + final source pad of the wrapped #GstElement-s. However, these + coordinates may also be used in a #GESClip in reference to its + children. In particular, these are the coordinates used for + #GESTimelineElement:in-point and #GESTimelineElement:max-duration. ++ Internal sink coordinates: these are the time coordinates used + internally at the element's input. A #GESSource has no input, so + these would be undefined. Otherwise, for most #GESTrackElement-s + these will be the same set of coordinates as the internal source + coordinates because the element does not change the timing + internally. Only #GESBaseEffect can support elements where these + are different. See #GESBaseEffect for more information. + +You can determine the timeline time for a given internal source time +in a #GESTrack in a #GESClip using +ges_clip_get_timeline_time_from_internal_time(), and vice versa using +ges_clip_get_internal_time_from_timeline_time(), for the purposes of +editing and setting timings properties. + +## 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(). + + + + + + + + + + + + + + + + + + + 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 layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. + + + + + 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 + + + + + + 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. + + + + + A #GESTimelineElement + + + + + + + + + + + + + + + + + + + + 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 a child corresponding to the property was found, in +which case @child and @pspec are set. + + + + + A #GESTimelineElement + + + + The name of a child property + + + + The return location for the +found child + + + + The return location for the +specification of the child property + + + + + + + + + + + + + + + + + + + + + + + Edits the start time of an element within its timeline in ripple mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and +#GES_EDGE_NONE. + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new start time of @self in ripple mode + + + + + + Edits the end time of an element within its timeline in ripple mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and +#GES_EDGE_END. + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new end time of @self in ripple mode + + + + + + Edits the end time of an element within its timeline in roll mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and +#GES_EDGE_END. + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new end time of @self in roll mode + + + + + + Edits the start time of an element within its timeline in roll mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and +#GES_EDGE_START. + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new start time of @self in roll mode + + + + + + Method for setting the child property given by +@pspec on @child to @value. Default implementation will use +g_object_set_property(). + + + + + + + + + + + + + + + + + + + + + Similar to @set_child_property, except setting can fail, with the @error +being optionally set. Default implementation will call @set_child_property +and return %TRUE. + + + + + + + + + + + + + + + + + + + + + Sets #GESTimelineElement:duration for the element. + +Whilst the element is part of a #GESTimeline, this is the same as +editing the element with ges_timeline_element_edit() under +#GES_EDIT_MODE_TRIM with #GES_EDGE_END. In particular, the +#GESTimelineElement:duration of the element may be snapped to a +different timeline time difference from the one given. In addition, +setting may fail if it would place the timeline in an unsupported +configuration, or the element does not have enough internal content to +last the desired duration. + + + %TRUE if @duration could be set for @self. + + + + + A #GESTimelineElement + + + + The desired duration in its timeline + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The in-point, in internal time coordinates + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The maximum duration, in internal time coordinates + + + + + + 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 for @self. + + + + + A #GESTimelineElement +@parent (nullable): New parent of @self + + + + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The priority + + + + + + Sets #GESTimelineElement:start for the element. If the element has a +parent, this will also move its siblings with the same shift. + +Whilst the element is part of a #GESTimeline, this is the same as +editing the element with ges_timeline_element_edit() under +#GES_EDIT_MODE_NORMAL with #GES_EDGE_NONE. In particular, the +#GESTimelineElement:start of the element may be snapped to a different +timeline time from the one given. In addition, setting may fail if it +would place the timeline in an unsupported configuration. + + + %TRUE if @start could be set for @self. + + + + + A #GESTimelineElement + + + + The desired start position of the element in its timeline + + + + + + Edits the start time of an element within its timeline in trim mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_TRIM and +#GES_EDGE_START. + + + %TRUE if the trim edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to trim + + + + 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 + + + + + + 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 element, copied from @self. + + + + + The #GESTimelineElement to copy + + + + Whether the copy is needed for pasting + + + + + + See ges_timeline_element_edit_full(), which also gives an error. + +Note that the @layers argument is currently ignored, so you should +just pass %NULL. + + + %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) in the timeline coordinates + + + + + + Edits the element within its timeline by adjusting its +#GESTimelineElement:start, #GESTimelineElement:duration or +#GESTimelineElement:in-point, and potentially doing the same for +other elements in the timeline. See #GESEditMode for details about each +edit mode. An edit may fail if it would place one of these properties +out of bounds, or if it would place the timeline in an unsupported +configuration. + +Note that if you act on a #GESTrackElement, this will edit its parent +#GESClip instead. Moreover, for any #GESTimelineElement, if you select +#GES_EDGE_NONE for #GES_EDIT_MODE_NORMAL or #GES_EDIT_MODE_RIPPLE, this +will edit the toplevel instead, but still in such a way as to make the +#GESTimelineElement:start of @self reach the edit @position. + +Note that if the element's timeline has a +#GESTimeline:snapping-distance set, then the edit position may be +snapped to the edge of some element under the edited element. + +@new_layer_priority can be used to switch @self, and other elements +moved by the edit, to a new layer. New layers may be be created if the +the corresponding layer priority/index does not yet exist for the +timeline. + + + %TRUE if the edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to edit + + + + The priority/index of the layer @self should be +moved to. -1 means no move + + + + The edit mode + + + + The edge of @self where the edit should occur + + + + The edit position: a new location for the edge of @self +(in nanoseconds) in the timeline coordinates + + + + + + Gets several of the children properties of the element. See +ges_timeline_element_get_child_property(). + + + + + + + A #GESTimelineElement + + + + The name of the first child property to get + + + + The return location for the first property, followed +optionally by more name/return location pairs, followed by %NULL + + + + + + Gets the property of a child of the element. + +@property_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to get (as used in g_object_get()), and "TypeName" is the type name of +the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. + +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will have the corresponding +property copied into @value. + +Note that ges_timeline_element_get_child_properties() may be more +convenient for C programming. + + + %TRUE if the property was found and copied to @value. + + + + + A #GESTimelineElement + + + + The name of the child property to get + + + + The return location for the value + + + + + + 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 #GESTimelineElement + + + + The specification of a registered child property to get + + + + The return location for the value + + + + + + Gets several of the children properties of the element. See +ges_timeline_element_get_child_property(). + + + + + + + A #GESTimelineElement + + + + The name of the first child property to get + + + + 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 (in nanoseconds). + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:in-point for the element. + + + The in-point of @self (in nanoseconds). + + + + + 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 layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:max-duration for the element. + + + The max-duration of @self (in nanoseconds). + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:name for the element. + + + The name of @self. + + + + + 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 + + + + + + Gets the #GESTimelineElement:parent for the element. + + + The parent of @self, or %NULL if +@self has no parent. + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:priority for the element. + + + The priority of @self. + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:start for the element. + + + The start of @self (in nanoseconds). + + + + + A #GESTimelineElement + + + + + + Gets the #GESTimelineElement:timeline for the element. + + + The timeline of @self, or %NULL +if @self has no timeline. + + + + + A #GESTimelineElement + + + + + + Gets the toplevel #GESTimelineElement:parent of the element. + + + The toplevel parent of @self. + + + + + The #GESTimelineElement to get the toplevel parent from + + + + + + 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. + + + + + A #GESTimelineElement + + + + + + 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 corresponding to the child properties of @self, or %NULL if +something went wrong. + + + + + + + A #GESTimelineElement + + + + The return location for the length of the +returned array + + + + + + 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 a child corresponding to the property was found, in +which case @child and @pspec are set. + + + + + A #GESTimelineElement + + + + The name of a child property + + + + The return location for the +found child + + + + The return location for the +specification of the child property + + + + + + Paste an element inside the same timeline and layer as @self. @self +**must** be the return of ges_timeline_element_copy() with `deep=TRUE`, +and it should not be changed before pasting. +@self is not placed in the timeline, instead a new element is created, +alike to the originally copied element. Note that the originally +copied element must stay within the same timeline and layer, at both +the point of copying and pasting. + +Pasting may fail if it would place the timeline in an unsupported +configuration. + +After calling this function @element should not be used. In particular, +@element can **not** be pasted again. Instead, you can copy the +returned element and paste that copy (although, this is only possible +if the paste was successful). + +See also ges_timeline_paste_element(). + + + The newly created element, or +%NULL if pasting fails. + + + + + The #GESTimelineElement to paste + + + + 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 the start time of an element within its timeline in ripple mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and +#GES_EDGE_NONE. + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new start time of @self in ripple mode + + + + + + Edits the end time of an element within its timeline in ripple mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_RIPPLE and +#GES_EDGE_END. + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new end time of @self in ripple mode + + + + + + Edits the end time of an element within its timeline in roll mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and +#GES_EDGE_END. + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new end time of @self in roll mode + + + + + + Edits the start time of an element within its timeline in roll mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_ROLL and +#GES_EDGE_START. + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new start time of @self in roll mode + + + + + + Sets several of the children properties of the element. See +ges_timeline_element_set_child_property(). + + + + + + + A #GESTimelineElement + + + + The name of the first child property to set + + + + The value for the first property, followed optionally by more +name/value pairs, followed by %NULL + + + + + + See ges_timeline_element_set_child_property_full(), which also gives an +error. + +Note that ges_timeline_element_set_child_properties() may be more +convenient for C programming. + + + %TRUE if the property was found and set. + + + + + A #GESTimelineElement + + + + The name of the child property to set + + + + The value to set the property to + + + + + + Sets the property of a child of the element. Specifically, the property +corresponding to the @pspec used in +ges_timeline_element_add_child_property() is set to @value. + + + + + + + A #GESTimelineElement + + + + The specification of a registered child property to set + + + + The value to set the property to + + + + + + Sets the property of a child of the element. + +@property_name can either be in the format "prop-name" or +"TypeName::prop-name", where "prop-name" is the name of the property +to set (as used in g_object_set()), and "TypeName" is the type name of +the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is +useful when two children of different types share the same property +name. + +The first child found with the given "prop-name" property that was +registered with ges_timeline_element_add_child_property() (and of the +type "TypeName", if it was given) will have the corresponding +property set to @value. Other children that may have also matched the +property name (and type name) are left unchanged! + + + %TRUE if the property was found and set. + + + + + A #GESTimelineElement + + + + The name of the child property to set + + + + The value to set the property to + + + + + + Sets several of the children properties of the element. See +ges_timeline_element_set_child_property(). + + + + + + + A #GESTimelineElement + + + + The name of the first child property to set + + + + The value for the first property, followed optionally by more +name/value pairs, followed by %NULL + + + + + + Sets #GESTimelineElement:duration for the element. + +Whilst the element is part of a #GESTimeline, this is the same as +editing the element with ges_timeline_element_edit() under +#GES_EDIT_MODE_TRIM with #GES_EDGE_END. In particular, the +#GESTimelineElement:duration of the element may be snapped to a +different timeline time difference from the one given. In addition, +setting may fail if it would place the timeline in an unsupported +configuration, or the element does not have enough internal content to +last the desired duration. + + + %TRUE if @duration could be set for @self. + + + + + A #GESTimelineElement + + + + The desired duration in its timeline + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The in-point, in internal time coordinates + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The maximum duration, in internal time coordinates + + + + + + 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 + + + + The name @self should take + + + + + + Sets the #GESTimelineElement:parent for the element. + +This is used internally and you should normally not call this. A +#GESContainer will set the #GESTimelineElement:parent of its children +in ges_container_add() and ges_container_remove(). + +Note, if @parent is not %NULL, @self must not already have a parent +set. Therefore, if you wish to switch parents, you will need to call +this function twice: first to set the parent to %NULL, and then to the +new parent. + +If @parent is not %NULL, you must ensure it already has a +(non-floating) reference to @self before calling this. + + + %TRUE if @parent could be set for @self. + + + + + A #GESTimelineElement +@parent (nullable): New parent of @self + + + + + + + + + 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 for @self. + + + + + A #GESTimelineElement + + + + The priority + + + + + + Sets #GESTimelineElement:start for the element. If the element has a +parent, this will also move its siblings with the same shift. + +Whilst the element is part of a #GESTimeline, this is the same as +editing the element with ges_timeline_element_edit() under +#GES_EDIT_MODE_NORMAL with #GES_EDGE_NONE. In particular, the +#GESTimelineElement:start of the element may be snapped to a different +timeline time from the one given. In addition, setting may fail if it +would place the timeline in an unsupported configuration. + + + %TRUE if @start could be set for @self. + + + + + A #GESTimelineElement + + + + The desired start position of the element in its 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 for @self. + + + + + A #GESTimelineElement +@timeline (nullable): The #GESTimeline @self should be in + + + + + + + + + Edits the start time of an element within its timeline in trim mode. +See ges_timeline_element_edit() with #GES_EDIT_MODE_TRIM and +#GES_EDGE_START. + + + %TRUE if the trim edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to trim + + + + The new start time of @self in trim mode + + + + + + 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 initial offset to use internally when outputting content (in +nanoseconds, but in the time coordinates of the internal content). + +For example, for a #GESVideoUriSource that references some media +file, the "internal content" is the media file data, and the +in-point would correspond to some timestamp in the media file. +When playing the timeline, and when the element is first reached at +timeline-time #GESTimelineElement:start, it will begin outputting the +data from the timestamp in-point **onwards**, until it reaches the +end of its #GESTimelineElement:duration in the timeline. + +For elements that have no internal content, this should be kept +as 0. + + + + The 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 element. This should be unique within its timeline. + + + + The parent container of the element. + + + + The priority of the element. + Priority management is now done by GES itself. + + + + Whether the element should be serialized. + + + + 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 that the element lies within. + + + + + + + The #GESTimelineElement:parent of the element + + + + The #GESAsset from which the object has been extracted + + + + The #GESTimelineElement:start of the element + + + + The #GESTimelineElement:in-point of the element + + + + The #GESTimelineElement:duration of the element + + + + The #GESTimelineElement:max-duration of the element + + + + The #GESTimelineElement:priority of the element + + + + The #GESTimelineElement:timeline of the element + + + + The #GESTimelineElement:name of the 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 child whose property has been registered + + + + 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 +@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 emitting the notify signal. + + + + + + + + + %TRUE if @parent could be set for @self. + + + + + A #GESTimelineElement +@parent (nullable): New parent of @self + + + + + + + + + + + + + %TRUE if @start could be set for @self. + + + + + A #GESTimelineElement + + + + The desired start position of the element in its timeline + + + + + + + + + + %TRUE if @inpoint could be set for @self. + + + + + A #GESTimelineElement + + + + The in-point, in internal time coordinates + + + + + + + + + + %TRUE if @duration could be set for @self. + + + + + A #GESTimelineElement + + + + The desired duration in its timeline + + + + + + + + + + %TRUE if @maxduration could be set for @self. + + + + + A #GESTimelineElement + + + + The maximum duration, in internal time coordinates + + + + + + + + + + %TRUE if @priority could be set for @self. + + + + + A #GESTimelineElement + + + + The priority + + + + + + + + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new start time of @self in ripple mode + + + + + + + + + + %TRUE if the ripple edit of @self completed, %FALSE on +failure. + + + + + The #GESTimelineElement to ripple + + + + The new end time of @self in ripple mode + + + + + + + + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new start time of @self in roll mode + + + + + + + + + + %TRUE if the roll edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to roll + + + + The new end time of @self in roll mode + + + + + + + + + + %TRUE if the trim edit of @self completed, %FALSE on failure. + + + + + The #GESTimelineElement to trim + + + + The new start time of @self in trim mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if a child corresponding to the property was found, in +which case @child and @pspec are set. + + + + + A #GESTimelineElement + + + + The name of a child property + + + + The return location for the +found child + + + + The return location for the +specification of the child property + + + + + + + + + + The track types that @self supports. + + + + + A #GESTimelineElement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The priority of the layer @self is in, or +#GES_TIMELINE_ELEMENT_NO_LAYER_PRIORITY if @self does not exist in a +layer. + + + + + A #GESTimelineElement + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Renders the given text in the specified font, at specified position, and +with the specified background pattern. + + + + + Creates a new #GESTitleClip + + + The newly created #GESTitleClip, +or %NULL if there was an error. + + + + + Get the background used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The color used by @self. + + + + + a #GESTitleClip + + + + + + Get the pango font description used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The pango font description used by @self. + + + + + a #GESTitleClip + + + + + + Get the horizontal aligment used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The horizontal aligment used by @self. + + + + + a #GESTitleClip + + + + + + Get the text currently set on @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The text currently set on @self. + + + + + a #GESTitleClip + + + + + + Get the color used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The color used by @self. + + + + + a #GESTitleClip + + + + + + Get the vertical aligment used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The vertical aligment used by @self. + + + + + a #GESTitleClip + + + + + + Get the horizontal position used by @self. + use #ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + The horizontal position used by @self. + + + + + a #GESTitleClip + + + + + + Get the vertical position used by @self. + use #ges_timeline_element_get_children_property instead + + + The vertical position used by @self. + + + + + a #GESTitleClip + + + + + + Sets the background of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set + + + + The color @self is being set to + + + + + + Sets the color of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set + + + + The color @self is being set to + + + + + + Sets the pango font description of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* + + + + the pango font description + + + + + + Sets the horizontal aligment of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set horizontal alignement of text on + + + + #GESTextHAlign + + + + + + Sets the text this clip will render. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set text on + + + + the text to render. an internal copy of this text will be +made. + + + + + + Sets the vertical aligment of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set vertical alignement of text on + + + + #GESTextVAlign + + + + + + Sets the horizontal position of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set + + + + The horizontal position @self is being set to + + + + + + Sets the vertical position of the text. + use #ges_timeline_element_set_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + the #GESTitleClip* to set + + + + The vertical position @self is being set to + + + + + + The background of the text + 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_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_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_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_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_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_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_timeline_element_set_children_properties or +#ges_timeline_element_get_children_properties instead. +See #GESTitleSource for more information about exposed properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GESTitleSource is a GESTimelineElement that implements the notion +of titles in GES. + + + + + Get the background used by @source. + + + The background used by @source. + + + + + a #GESTitleSource + + + + + + Get the pango font description used by @source. + Use ges_timeline_element_get_child_property instead +(this actually returns a newly allocated string) + + + The pango font description used by this +@source. + + + + + a #GESTitleSource + + + + + + Get the horizontal aligment used by @source. + + + The horizontal aligment used by @source. + + + + + a #GESTitleSource + + + + + + Get the text currently set on the @source. + Use ges_timeline_element_get_child_property instead +(this actually returns a newly allocated string) + + + The text currently set on the @source. + + + + + a #GESTitleSource + + + + + + Get the color used by @source. + + + The color used by @source. + + + + + a #GESTitleSource + + + + + + Get the vertical aligment used by @source. + + + The vertical aligment used by @source. + + + + + a #GESTitleSource + + + + + + Get the horizontal position used by @source. + + + The horizontal position used by @source. + + + + + a #GESTitleSource + + + + + + Get the vertical position used by @source. + + + The vertical position used by @source. + + + + + a #GESTitleSource + + + + + + Sets the color of the background + + + + + + + the #GESTitleSource* to set + + + + the color @self is being set to + + + + + + Set the pango font description this source will use to render +the text. + + + + + + + the #GESTitleSource + + + + the pango font description + + + + + + Sets the vertical aligment of the text. + + + + + + + the #GESTitleSource* to set text on + + + + #GESTextHAlign + + + + + + Sets the text this track element will render. + use ges_track_element_get/set_children_properties on the +GESTrackElement instead + + + + + + + the #GESTitleSource* to set text on + + + + the text to render. an internal copy of this text will be +made. + + + + + + Sets the color of the text. + + + + + + + the #GESTitleSource* to set + + + + the color @self is being set to + + + + + + Sets the vertical aligment of the text. + + + + + + + the #GESTitleSource* to set text on + + + + #GESTextVAlign + + + + + + Sets the horizontal position of the text. + + + + + + + the #GESTitleSource* to set + + + + the horizontal position @self is being set to + + + + + + Sets the vertical position of the text. + + + + + + + the #GESTitleSource* to set + + + + the color @self is being set to + + + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + + + + 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. + +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 track with the given track-type and caps. + +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 track. + + + + + The #GESTrack:track-type for the track + + + + The #GESTrack:caps for the track + + + + + + + + + + + + + + + + + See ges_track_add_element(), which also gives an error. + + + %TRUE if @object was successfully added to @track. + + + + + A #GESTrack + + + + The element to add + + + + + + Adds the given track element to the track, which takes ownership of the +element. + +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 @object was successfully added to @track. + + + + + A #GESTrack + + + + The element to add + + + + + + Commits all the pending changes for the elements contained in the +track. + +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 pending changes were committed, or %FALSE if nothing +needed to be committed. + + + + + A #GESTrack + + + + + + Get the #GESTrack:caps of the track. + + + The caps of @track. + + + + + A #GESTrack + + + + + + Gets the track elements contained in the track. The returned list is +sorted by the element's #GESTimelineElement:priority and +#GESTimelineElement:start. + + + A list of +all the #GESTrackElement-s in @track. + + + + + + + A #GESTrack + + + + + + Gets the #GESTrack:mixing of the track. + + + Whether @track is mixing. + + + + + A #GESTrack + + + + + + Gets the #GESTrack:restriction-caps of the track. + + + The restriction-caps of @track. + + + + + A #GESTrack + + + + + + Get the timeline this track belongs to. + + + The timeline that @track belongs to, or %NULL if +it does not belong to a timeline. + + + + + A #GESTrack + + + + + + See ges_track_remove_element_full(), which also returns an error. + + + %TRUE if @object was successfully removed from @track. + + + + + A #GESTrack + + + + The element to remove + + + + + + Removes the given track element from the track, which revokes +ownership of the element. + + + %TRUE if @object was successfully removed from @track. + + + + + A #GESTrack + + + + The element to remove + + + + + + 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 + + + + The function to be used to create a source +#GstElement that can fill gaps in @track + + + + + + Sets the #GESTrack:mixing for the track. + + + + + + + A #GESTrack + + + + Whether @track should be mixing + + + + + + Sets the #GESTrack:restriction-caps for the track. + +> **NOTE**: Restriction caps are **not** taken into account when +> using #GESPipeline:mode=#GES_PIPELINE_MODE_SMART_RENDER. + + + + + + + A #GESTrack + + + + The new restriction-caps for @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 +@timeline (nullable): A #GESTimeline + + + + + + + + + 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. + +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 + + + + The caps to update the restriction-caps with + + + + + + 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 #NleObject: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. + + + + Current duration of the track + +Default value: O + + + + The #nlecomposition:id of the underlying #nlecomposition. + + + + 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. + + + + 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. + + + + 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. + +Once a track has been added to a #GESTimeline, you should not change +this. + + + + + + + The #GESTrack:track-type of the track + + + + + + + + + + + + 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 is added to the track. + + + + + + The element that was added + + + + + + Will be emitted after a track element is removed from the track. + + + + + + The element that was removed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + +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. + +## Control Bindings for Children Properties + +You can set up control bindings for a track element child property +using ges_track_element_set_control_source(). A +#GstTimedValueControlSource should specify the timed values using the +internal source coordinates (see #GESTimelineElement). By default, +these will be updated to lie between the #GESTimelineElement:in-point +and out-point of the element. This can be switched off by setting +#GESTrackElement:auto-clamp-control-sources to %FALSE. + + + + + Notify when the #GESTrackElement:active property changes + + + + + + + A #GESTrackElement + + + + Whether the element is active or not inside the #nlecomposition + + + + + + + + + + + + + + + + + + + the #GstElement that the underlying nleobject +controls. + + + + + The #GESTrackElement + + + + + + + + the #NLEObject to use in the #nlecomposition + + + + + The #GESTrackElement + + + + + + Listing children properties is handled by +ges_timeline_element_list_children_properties() instead. + Use #GESTimelineElementClass::list_children_properties +instead + + + + + + + + + + + + + + + Looks up which @element and @pspec would be effected by the given @name. If various +contained elements have this property name you will get the first one, unless you +specify the class name in @name. + Use #ges_timeline_element_lookup_child + + + TRUE if @element and @pspec could be found. FALSE otherwise. In that +case the values for @pspec and @element are not modified. Unref @element after +usage. + + + + + Object to lookup the property in + + + + Name of the property to look up. You can specify the name of the + class as such: "ClassName::property-name", to guarantee that you get the + proper GParamSpec in case various GstElement-s contain the same property + name. If you don't do so, you will get the first element found, having + this property and the and the corresponding GParamSpec. + + + + pointer to a #GstElement that + takes the real object to set property on + + + + pointer to take the specification + describing the property + + + + + + Adds all the properties of a #GstElement that match the criteria as +children properties of the track element. If the name of @element's +#GstElementFactory is not in @blacklist, and the factory's +#GST_ELEMENT_METADATA_KLASS contains at least one member of +@wanted_categories (e.g. #GST_ELEMENT_FACTORY_KLASS_DECODER), then +all the properties of @element that are also in @whitelist are added as +child properties of @self using +ges_timeline_element_add_child_property(). + +This is intended to be used by subclasses when constructing. + + + + + + + A #GESTrackElement + + + + The child object to retrieve properties from + + + + +An array of element factory "klass" categories to whitelist, or %NULL +to accept all categories + + + + + + A +blacklist of element factory names, or %NULL to not blacklist any +element factory + + + + + + A +whitelist of element property names, or %NULL to whitelist all +writeable properties + + + + + + + + Clamp the #GstTimedValueControlSource for the specified child property +to lie between the #GESTimelineElement:in-point and out-point of the +element. The out-point is the #GES_TIMELINE_ELEMENT_END of the element +translated from the timeline coordinates to the internal source +coordinates of the element. + +If the property does not have a #GstTimedValueControlSource set by +ges_track_element_set_control_source(), nothing happens. Otherwise, if +a timed value for the control source lies before the in-point of the +element, or after its out-point, then it will be removed. At the +in-point and out-point times, a new interpolated value will be placed. + + + + + + + A #GESTrackElement + + + + The name of the child property to clamp the control +source of + + + + + + Edits the element within its track. + use #ges_timeline_element_edit instead. + + + %TRUE if the edit of @object completed, %FALSE on failure. + + + + + The #GESTrackElement to edit + + + + A whitelist of layers +where the edit can be performed, %NULL allows all layers in the +timeline + + + + + + The edit mode + + + + The edge of @object where the edit should occur + + + + 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 +hash table containing all child-property-name/control-binding pairs +for @trackelement. + + + + + + + + A #GESTrackElement + + + + + + Gets #GESTrackElement:auto-clamp-control-sources. + + + Whether the control sources for the child properties of +@object are automatically clamped. + + + + + A #GESTrackElement + + + + + + Gets properties of a child of @object. + Use #ges_timeline_element_get_child_properties + + + + + + + The origin #GESTrackElement + + + + The name of the first property to get + + + + return location for the first property, followed optionally by more +name/return location pairs, followed by NULL + + + + + + In general, a copy is made of the property contents and +the caller is responsible for freeing the memory by calling +g_value_unset(). + +Gets a property of a GstElement contained in @object. + +Note that #ges_track_element_get_child_property is really +intended for language bindings, #ges_track_element_get_child_properties +is much more convenient for C programming. + Use #ges_timeline_element_get_child_property + + + %TRUE if the property was found, %FALSE otherwise. + + + + + The origin #GESTrackElement + + + + The name of the property + + + + return location for the property value, it will +be initialized if it is initialized with 0 + + + + + + Gets a property of a child of @object. + Use #ges_timeline_element_get_child_property_by_pspec + + + + + + + A #GESTrackElement + + + + The #GParamSpec that specifies the property you want to get + + + + return location for the value + + + + + + Gets a property of a child of @object. If there are various child elements +that have the same property name, you can distinguish them using the following +syntax: 'ClasseName::property_name' as property name. If you don't, the +corresponding property of the first element found will be set. + Use #ges_timeline_element_get_child_property_valist + + + + + + + The #GESTrackElement parent object + + + + The name of the first property to get + + + + Value for the first property, followed optionally by more +name/return location pairs, followed by NULL + + + + + + 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 control binding that was +created for the specified child property of @object, or %NULL if +@property_name does not correspond to any control binding. + + + + + A #GESTrackElement + + + + The name of the child property to return the control +binding of + + + + + + Get the #GstElement that the track element's underlying nleobject +controls. + + + The #GstElement being controlled by the +nleobject that @object wraps. + + + + + A #GESTrackElement + + + + + + Get the GNonLin object this object is controlling. + use #ges_track_element_get_nleobject instead. + + + The GNonLin object this object is controlling. + + + + + A #GESTrackElement + + + + + + Get the nleobject that this element wraps. + + + The nleobject that @object wraps. + + + + + A #GESTrackElement + + + + + + Get the #GESTrackElement:track for the element. + + + The track that @object belongs to, +or %NULL if it does not belong to a track. + + + + + 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 + + + + + + Gets #GESTrackElement:active for the element. + + + %TRUE if @object is active in its track. + + + + + A #GESTrackElement + + + + + + Get whether the given track element is a core track element. That is, +it was created by the @create_track_elements #GESClipClass method for +some #GESClip. + +Note that such a track element can only be added to a clip that shares +the same #GESAsset as the clip that created it. For example, you are +allowed to move core children between clips that resulted from +ges_container_ungroup(), but you could not move the core child from a +#GESUriClip to a #GESTitleClip or another #GESUriClip with a different +#GESUriClip:uri. + +Moreover, if a core track element is added to a clip, it will always be +added as a core child. Therefore, if this returns %TRUE, then @element +will be a core child of its parent clip. + + + %TRUE if @element is a core track element. + + + + + A #GESTrackElement + + + + + + Gets an array of #GParamSpec* for all configurable properties of the +children of @object. + Use #ges_timeline_element_list_children_properties + + + An array of #GParamSpec* which should be freed after use or +%NULL if something went wrong. + + + + + + + The #GESTrackElement to get the list of children properties from + + + + return location for the length of the returned array + + + + + + Looks up which @element and @pspec would be effected by the given @name. If various +contained elements have this property name you will get the first one, unless you +specify the class name in @name. + Use #ges_timeline_element_lookup_child + + + TRUE if @element and @pspec could be found. FALSE otherwise. In that +case the values for @pspec and @element are not modified. Unref @element after +usage. + + + + + Object to lookup the property in + + + + Name of the property to look up. You can specify the name of the + class as such: "ClassName::property-name", to guarantee that you get the + proper GParamSpec in case various GstElement-s contain the same property + name. If you don't do so, you will get the first element found, having + this property and the and the corresponding GParamSpec. + + + + pointer to a #GstElement that + takes the real object to set property on + + + + pointer to take the specification + describing the property + + + + + + 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 control binding was removed from the specified +child property of @object, or %FALSE if an error occurred. + + + + + A #GESTrackElement + + + + The name of the child property to remove the control +binding from + + + + + + Sets #GESTrackElement:active for the element. + + + %TRUE if the property was *toggled*. + + + + + A #GESTrackElement + + + + Whether @object should be active in its track + + + + + + Sets #GESTrackElement:auto-clamp-control-sources. If set to %TRUE, this +will immediately clamp all the control sources. + + + + + + + A #GESTrackElement + + + + Whether to automatically clamp the control sources for the +child properties of @object + + + + + + Sets a property of a child of @object. If there are various child elements +that have the same property name, you can distinguish them using the following +syntax: 'ClasseName::property_name' as property name. If you don't, the +corresponding property of the first element found will be set. + Use #ges_timeline_element_set_child_properties + + + + + + + The #GESTrackElement parent object + + + + The name of the first property to set + + + + value for the first property, followed optionally by more +name/return location pairs, followed by NULL + + + + + + Sets a property of a GstElement contained in @object. + +Note that #ges_track_element_set_child_property is really +intended for language bindings, #ges_track_element_set_child_properties +is much more convenient for C programming. + use #ges_timeline_element_set_child_property instead + + + %TRUE if the property was set, %FALSE otherwise. + + + + + The origin #GESTrackElement + + + + The name of the property + + + + The value + + + + + + Sets a property of a child of @object. + Use #ges_timeline_element_set_child_property_by_spec + + + + + + + A #GESTrackElement + + + + The #GParamSpec that specifies the property you want to set + + + + The value + + + + + + Sets a property of a child of @object. If there are various child elements +that have the same property name, you can distinguish them using the following +syntax: 'ClasseName::property_name' as property name. If you don't, the +corresponding property of the first element found will be set. + Use #ges_timeline_element_set_child_property_valist + + + + + + + The #GESTrackElement parent object + + + + The name of the first property to set + + + + Value for the first property, followed optionally by more +name/return location pairs, followed by NULL + + + + + + Creates a #GstControlBinding 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 specified child property could be bound to +@source, or %FALSE if an error occurred. + + + + + A #GESTrackElement + + + + The control source to bind the child property to + + + + The name of the child property to control + + + + The type of binding to create ("direct" or +"direct-absolute") + + + + + + 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. + + + %FALSE if @has_internal_source is forbidden for @object and +%TRUE in any other case. + + + + + 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 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. + + + + Whether the control sources on the element (see +ges_track_element_set_control_source()) will be automatically +updated whenever the #GESTimelineElement:in-point or out-point of the +element change in value. + +See ges_track_element_clamp_control_source() for how this is done +per control source. + +Default value: %TRUE + + + + 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. + + + + + + + + + + + + + + + + + + + + + This is emitted when a control binding is added to a child property +of the track element. + + + + + + The control binding that has been added + + + + + + This is emitted when a control binding is removed from a child +property of the track element. + + + + + + The control binding that has been removed + + + + + + + + + + + + Result: %TRUE if @self has a natural framerate %FALSE otherwise + + + %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 + + + a #GESTrackType + + + + + A #GESAsset + + + + + + Set the #GESTrackType the #GESTrackElement extracted from @self +should get into + + + + + + + A #GESAsset + + + + A #GESTrackType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if @self has a natural framerate @FALSE otherwise. + + + + + A #GESAsset + + + + The framerate numerator + + + + The framerate denominator + + + + + + + + + + + + + + + + + + + + + + + + + + + the #NLEObject to use in the #nlecomposition + + + + + The #GESTrackElement + + + + + + + + + + the #GstElement that the underlying nleobject +controls. + + + + + The #GESTrackElement + + + + + + + + + + + + + + A #GESTrackElement + + + + Whether the element is active or not inside the #nlecomposition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TRUE if @element and @pspec could be found. FALSE otherwise. In that +case the values for @pspec and @element are not modified. Unref @element after +usage. + + + + + Object to lookup the property in + + + + Name of the property to look up. You can specify the name of the + class as such: "ClassName::property-name", to guarantee that you get the + proper GParamSpec in case various GstElement-s contain the same property + name. If you don't do so, you will get the first element found, having + this property and the and the corresponding GParamSpec. + + + + pointer to a #GstElement that + takes the real object to set property on + + + + pointer to take the specification + describing the property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Types of content handled by a track. If the content is not one of +@GES_TRACK_TYPE_AUDIO, @GES_TRACK_TYPE_VIDEO or @GES_TRACK_TYPE_TEXT, +the user of the #GESTrack must set the type to @GES_TRACK_TYPE_CUSTOM. + +@GES_TRACK_TYPE_UNKNOWN is for internal purposes and should not be used +by users + + A track of unknown type (i.e. invalid) + + + An audio track + + + A video track + + + A text (subtitle) track + + + A custom-content track + + + + + + + + + + + + + + + Base class for media transitions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates an object that mixes together the two underlying objects, A and B. +The A object is assumed to have a higher prioirity (lower number) than the +B object. At the transition in point, only A will be visible, and by the +end only B will be visible. + +The shape of the video transition depends on the value of the "vtype" +property. The default value is "crossfade". For audio, only "crossfade" is +supported. + +The ID of the ExtractableType is the nickname of the vtype property value. Note +that this value can be changed after creation and the GESExtractable.asset value +will be updated when needed. + + + + + Creates a new #GESTransitionClip. + + + a newly created #GESTransitionClip, +or %NULL if something went wrong. + + + + + the type of transition to create + + + + + + Creates a new #GESTransitionClip for the provided @nick. + + + The newly created #GESTransitionClip, +or %NULL if something went wrong + + + + + a string representing the type of transition to create + + + + + + a #GESVideoStandardTransitionType representing the wipe to use + + + + + + + a #GESVideoStandardTransitionType indicating the type of video transition +to apply. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents all the output streams from a particular uri. It is assumed that +the URI points to a file of some type. + + + + + Creates a new #GESUriClip for the provided @uri. + +> **WARNING**: This function might 'discover` @uri **synchrounously**, it is +> an IO and processing intensive task that you probably don't want to run in +> an application mainloop. Have a look at #ges_asset_request_async to see how +> to make that operation happen **asynchronously**. + + + The newly created #GESUriClip, or +%NULL if there was an error. + + + + + the URI the source should control + + + + + + Get the location of the resource. + + + The location of the resource. + + + + + the #GESUriClip + + + + + + Lets you know if @self is an image or not. + + + %TRUE if @self is a still image %FALSE otherwise. + + + + + the #GESUriClip + + + + + + Lets you know if the audio track of @self is muted or not. + + + %TRUE if the audio track of @self is muted, %FALSE otherwise. + + + + + the #GESUriClip + + + + + + Sets whether the clip is a still image or not. + + + + + + + the #GESUriClip + + + + %TRUE if @self is a still image, %FALSE otherwise + + + + + + Sets whether the audio track of this clip is muted or not. + + + + + + + the #GESUriClip on which to mute or unmute the audio track + + + + %TRUE to mute @self audio track, %FALSE to unmute it + + + + + + Whether this uri clip represents a still image or not. This must be set +before create_track_elements is called. + + + + Whether the sound will be played or not. + + + + + + + The location of the file/resource to use. + + + + + + + + + + + + + + + + + + + + + Finalize the request of an async #GESUriClipAsset + + + The #GESUriClipAsset previously requested + + + + + The #GAsyncResult from which to get the newly created #GESUriClipAsset + + + + + + Creates a #GESUriClipAsset for @uri + +Example of request of a GESUriClipAsset: +|[ +// The request callback +static void +filesource_asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data) +{ + GError *error = NULL; + GESUriClipAsset *filesource_asset; + + filesource_asset = ges_uri_clip_asset_finish (res, &error); + if (filesource_asset) { + gst_print ("The file: %s is usable as a FileSource, it is%s an image and lasts %" GST_TIME_FORMAT, + ges_asset_get_id (GES_ASSET (filesource_asset)) + ges_uri_clip_asset_is_image (filesource_asset) ? "" : " not", + GST_TIME_ARGS (ges_uri_clip_asset_get_duration (filesource_asset)); + } else { + gst_print ("The file: %s is *not* usable as a FileSource because: %s", + ges_asset_get_id (source), error->message); + } + + gst_object_unref (mfs); +} + +// The request: +ges_uri_clip_asset_new (uri, (GAsyncReadyCallback) filesource_asset_loaded_cb, user_data); +]| + + + + + + + The URI of the file for which to create a #GESUriClipAsset + + + + optional %GCancellable object, %NULL to ignore. + + + + a #GAsyncReadyCallback to call when the initialization is finished + + + + The user data to pass when @callback is called + + + + + + Creates a #GESUriClipAsset for @uri syncronously. You should avoid +to use it in application, and rather create #GESUriClipAsset asynchronously + + + A reference to the requested asset or %NULL if +an error happened + + + + + The URI of the file for which to create a #GESUriClipAsset. +You can also use multi file uris for #GESMultiFileSource. + + + + + + Gets duration of the file represented by @self + + + The duration of @self + + + + + a #GESUriClipAsset + + + + + + Gets #GstDiscovererInfo about the file + + + #GstDiscovererInfo of specified asset + + + + + Target asset + + + + + + 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 + + + a +#GList of #GESUriSourceAsset + + + + + + + A #GESUriClipAsset + + + + + + Gets Whether the file represented by @self is an image or not + + + Whether the file represented by @self is an image or not + + + + + a #GESUriClipAsset + + + + + + The duration (in nanoseconds) of the media file + + + + The duration (in nanoseconds) of the media file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sets the timeout of #GESUriClipAsset loading + + + + + + + The #GESUriClipAssetClass on which to set the discoverer timeout + + + + The timeout to set + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + Get the #GESUriClipAsset @self is contained in + + + a #GESUriClipAsset + + + + + A #GESUriClipAsset + + + + + + Get the #GstDiscovererStreamInfo user by @asset + + + a #GESUriClipAsset + + + + + A #GESUriClipAsset + + + + + + + + + + + + + + + + + Check if @asset contains a single image + + + %TRUE if the video stream corresponds to an image (i.e. only +contains one frame) + + + + + A #GESUriClipAsset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Transition type has not been set, + + + A bar moves from left to right, + + + A bar moves from top to bottom, + + + A box expands from the upper-left corner to the lower-right corner, + + + A box expands from the upper-right corner to the lower-left corner, + + + A box expands from the lower-right corner to the upper-left corner, + + + A box expands from the lower-left corner to the upper-right corner, + + + A box shape expands from each of the four corners toward the center, + + + A box shape expands from the center of each quadrant toward the corners of each quadrant, + + + A central, vertical line splits and expands toward the left and right edges, + + + A central, horizontal line splits and expands toward the top and bottom edges, + + + A box expands from the top edge's midpoint to the bottom corners, + + + A box expands from the right edge's midpoint to the left corners, + + + A box expands from the bottom edge's midpoint to the top corners, + + + A box expands from the left edge's midpoint to the right corners, + + + A diagonal line moves from the upper-left corner to the lower-right corner, + + + A diagonal line moves from the upper right corner to the lower-left corner, + + + Two wedge shapes slide in from the top and bottom edges toward the center, + + + Two wedge shapes slide in from the left and right edges toward the center, + + + A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners, + + + A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners, + + + Four wedge shapes split from the center and retract toward the four edges, + + + A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges, + + + A wedge shape moves from top to bottom, + + + A wedge shape moves from right to left, + + + A wedge shape moves from bottom to top, + + + A wedge shape moves from left to right, + + + A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, + + + A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, + + + A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, + + + A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges, + + + A rectangle expands from the center., + + + A radial hand sweeps clockwise from the twelve o'clock position, + + + A radial hand sweeps clockwise from the three o'clock position, + + + A radial hand sweeps clockwise from the six o'clock position, + + + A radial hand sweeps clockwise from the nine o'clock position, + + + Two radial hands sweep clockwise from the twelve and six o'clock positions, + + + Two radial hands sweep clockwise from the nine and three o'clock positions, + + + Four radial hands sweep clockwise, + + + A fan unfolds from the top edge, the fan axis at the center, + + + A fan unfolds from the right edge, the fan axis at the center, + + + Two fans, their axes at the center, unfold from the top and bottom, + + + Two fans, their axes at the center, unfold from the left and right, + + + A radial hand sweeps clockwise from the top edge's midpoint, + + + A radial hand sweeps clockwise from the right edge's midpoint, + + + A radial hand sweeps clockwise from the bottom edge's midpoint, + + + A radial hand sweeps clockwise from the left edge's midpoint, + + + Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints, + + + Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints, + + + Two radial hands attached at the top and bottom edges' midpoints sweep from right to left, + + + Two radial hands attached at the left and right edges' midpoints sweep from top to bottom, + + + A fan unfolds from the bottom, the fan axis at the top edge's midpoint, + + + A fan unfolds from the left, the fan axis at the right edge's midpoint, + + + A fan unfolds from the top, the fan axis at the bottom edge's midpoint, + + + A fan unfolds from the right, the fan axis at the left edge's midpoint, + + + Two fans, their axes at the top and bottom, unfold from the center, + + + Two fans, their axes at the left and right, unfold from the center, + + + A radial hand sweeps clockwise from the upper-left corner, + + + A radial hand sweeps counter-clockwise from the lower-left corner., + + + A radial hand sweeps clockwise from the lower-right corner, + + + A radial hand sweeps counter-clockwise from the upper-right corner, + + + Two radial hands attached at the upper-left and lower-right corners sweep down and up, + + + Two radial hands attached at the lower-left and upper-right corners sweep down and up, + + + Two radial hands attached at the upper-left and upper-right corners sweep down, + + + Two radial hands attached at the upper-left and lower-left corners sweep to the right, + + + Two radial hands attached at the lower-left and lower-right corners sweep up, + + + Two radial hands attached at the upper-right and lower-right corners sweep to the left, + + + Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left, + + + Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom, + + + Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top, + + + Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left, + + + Crossfade + + + Similar to crossfade, but fade in the front video without fading out the background one (Since: 1.22) + + + + The test pattern to produce + + A standard SMPTE test pattern + + + Random noise + + + A black image + + + A white image + + + A red image + + + A green image + + + A blue image + + + Checkers pattern (1px) + + + Checkers pattern (2px) + + + Checkers pattern (4px) + + + Checkers pattern (8px) + + + Circular pattern + + + Alternate between black and white + + + SMPTE test pattern (75% color bars) + + + Zone plate + + + Gamut checkers + + + Chroma zone plate + + + Solid color + + + + ### Children Properties + + {{ libs/GESVideoTestSource-children-props.md }} + + + + + Get the video pattern used by the @source. + + + The video pattern used by the @source. + + + + + a #GESVideoTestPattern + + + + + + Sets the source to use the given @pattern. + + + + + + + a #GESVideoTestSource + + + + a #GESVideoTestPattern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 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. + + + The newly created video track. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the border property of @self, this value represents +the border width of the transition. + Use ges_timeline_element_get_child_property instead. + + + The border values of @self or -1 if not meaningful +(this will happen when not using a smpte transition). + + + + + The #GESVideoTransition to get the border from + + + + + + Get the transition type used by @trans. + + + The transition type used by @trans. + + + + + a #GESVideoTransition + + + + + + Get the invert property of @self, this value represents +the direction of the transition. + Use ges_timeline_element_get_child_property instead. + + + The invert value of @self + + + + + The #GESVideoTransition to get the inversion from + + + + + + Set the border property of @self, this value represents +the border width of the transition. In case this value does +not make sense for the current transition type, it is cached +for later use. + Use ges_timeline_element_set_child_property instead. + + + + + + + The #GESVideoTransition to set the border to + + + + The value of the border to set on @object + + + + + + Set the invert property of @self, this value represents +the direction of the transition. In case this value does +not make sense for the current transition type, it is cached +for later use. + Use ges_timeline_element_set_child_property instead. + + + + + + + The #GESVideoTransition to set invert on + + + + %TRUE if the transition should be inverted %FALSE otherwise + + + + + + Sets the transition being used to @type. + + + %TRUE if the transition type was properly changed, else %FALSE. + + + + + a #GESVideoTransition + + + + a #GESVideoStandardTransitionType + + + + + + This value represents the border width of the transition. + + + + This value represents the direction of the transition. + Use ges_timeline_element_[sg]et_child_property instead. + + + + + + + + + + + + + + + + + + + + + parent class + + + + + + + + + + + + + ### Children Properties + + {{ libs/GESVideoUriSource-children-props.md }} + + + + + The location of the file/resource to use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clean up any resources created by GES in ges_init(). + +It is normally not needed to call this function in a normal application as the +resources will automatically be freed when the program terminates. +This function is therefore mostly used by testsuites and other memory profiling tools. +This function should be called from the thread where ges_init() was called. + +After this call GES should not be used until another ges_init() call. + + + + + + + + + A human friendly name for @edge + + + + + The #GESEdge to get the name of + + + + + + Return a string representation of @mode. + + + a string representation of @mode. + + + + + a #GESEditMode + + + + + + 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 +function. + +MT safety. +GStreamer Editing Services do not guarantee MT safety. +An application is required to use GES APIs (including ges_deinit()) +in the thread where ges_init() was called. + + + + + + + Initializes the GStreamer Editing Services library, setting up internal path lists, +and loading evrything needed. + +This function will return %FALSE if GES could not be initialized +for some reason. + + + %TRUE if GES could be initialized. + + + + + pointer to application's argc + + + + pointer to application's argv + + + + + + + + Returns a #GOptionGroup with GES's argument specifications. The +group is set up to use standard GOption callbacks, so when using this +group in combination with GOption parsing methods, all argument parsing +and initialization is automated. + +This function is useful if you want to integrate GES with other +libraries that use GOption (see g_option_context_add_group() ). + +If you use this function, you should make sure you initialise the GStreamer +as one of the very first things in your program. That means you need to +use gst_init_get_option_group() and add it to the option context before +using the ges_init_get_option_group() result. + + + a pointer to GES's option group. + + + + + Use this function to check if GES has been initialized with ges_init() +or ges_init_check(). + + + %TRUE if initialization has been done, %FALSE otherwise. + + + + + 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. + + + A list of all +#GESAsset-s currently in the cache whose #GESAsset:extractable-type is +of the @filter type. + + + + + + + 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 +@playsink in the format defined by the @caps + + + + + The playsink to get last frame from + + + + The caps defining the format the return value will have + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helper macro to retrieve the project from which @obj was extracted + + + + The #GESTimeline from which to retrieve the project + + + + + + + + + + + + + + + + + + + + + + Gets the version number of the GStreamer Editing Services library. + + + + + + + pointer to a guint to store the major version number + + + + pointer to a guint to store the minor version number + + + + pointer to a guint to store the micro version number + + + + pointer to a guint to store the nano version number + + + + + + diff --git a/girs/Gst-1.0.gir b/girs/Gst-1.0.gir new file mode 100644 index 0000000000..effa21f91c --- /dev/null +++ b/girs/Gst-1.0.gir @@ -0,0 +1,55081 @@ + + + + + + + + + + Alias for #GstMapInfo to be used with g_auto(): +```c +void my_func(GstBuffer *buf) +{ + g_auto(GstBufferMapInfo) map = GST_MAP_INFO_INIT; + if (!gst_buffer_map(buf, &map, GST_MAP_READWRITE)) + return; + ... + // No need to call gst_buffer_unmap() +} +``` + +#GstMapInfo cannot be used with g_auto() because it is ambiguous whether it +needs to be unmapped using gst_buffer_unmap() or gst_memory_unmap(). + +See also #GstMemoryMapInfo. + + + + + A datatype to hold the handle to an outstanding sync or async clock callback. + + + + + A datatype to hold a time, measured in nanoseconds. + + + + + A datatype to hold a time difference, measured in nanoseconds. + + + + + A type defining the type of an element factory. + + + + + Alias for #GstMapInfo to be used with g_auto(): +```c +void my_func(GstMemory *mem) +{ + g_auto(GstMemoryMapInfo) map = GST_MAP_INFO_INIT; + if (!gst_memory_map(mem, &map, GST_MAP_READWRITE)) + return; + ... + // No need to call gst_memory_unmap() +} +``` + +#GstMapInfo cannot be used with g_auto() because it is ambiguous whether it +needs to be unmapped using gst_buffer_unmap() or gst_memory_unmap(). + +See also #GstBufferMapInfo. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The allocator name for the default system memory allocator + + + + + Parameters to control the allocation of memory + + + flags to control allocation + + + + the desired alignment of the memory + + + + the desired prefix + + + + the desired padding + + + + + + + + + Create a new #GstAllocationParams on the heap. This function is for +use in GStreamer language bindings. In your own code, you can just +declare a #GstAllocationParams on the stack or in a struct, and +call gst_allocation_params_init() to initialize it. + +You do not need to call gst_allocation_params_init() on the instance +returned by this function. + + + a new #GstAllocationParams + + + + + Create a copy of @params. + + + a new #GstAllocationParams. + + + + + a #GstAllocationParams + + + + + + Free @params + + + + + + + a #GstAllocationParams + + + + + + Initialize @params to its default values + + + + + + + a #GstAllocationParams + + + + + + + Memory is usually created by allocators with a gst_allocator_alloc() +method call. When %NULL is used as the allocator, the default allocator will +be used. + +New allocators can be registered with gst_allocator_register(). +Allocators are identified by name and can be retrieved with +gst_allocator_find(). gst_allocator_set_default() can be used to change the +default allocator. + +New memory can be created with gst_memory_new_wrapped() that wraps the memory +allocated elsewhere. + + + Find a previously registered allocator with @name. When @name is %NULL, the +default allocator will be returned. + + + a #GstAllocator or %NULL when +the allocator with @name was not registered. + + + + + the name of the allocator + + + + + + Registers the memory @allocator with @name. + + + + + + + the name of the allocator + + + + #GstAllocator + + + + + + Use @allocator to allocate a new memory block with memory that is at least +@size big. + +The optional @params can specify the prefix and padding for the memory. If +%NULL is passed, no flags, no extra prefix/padding and a default alignment is +used. + +The prefix/padding will be filled with 0 if flags contains +#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively. + +When @allocator is %NULL, the default allocator will be used. + +The alignment in @params is given as a bitmask so that @align + 1 equals +the amount of bytes to align to. For example, to align to 8 bytes, +use an alignment of 7. + + + a new #GstMemory. + + + + + a #GstAllocator to use + + + + size of the visible memory area + + + + optional parameters + + + + + + Free @memory that was previously allocated with gst_allocator_alloc(). + + + + + + + a #GstAllocator to use + + + + the memory to free + + + + + + Use @allocator to allocate a new memory block with memory that is at least +@size big. + +The optional @params can specify the prefix and padding for the memory. If +%NULL is passed, no flags, no extra prefix/padding and a default alignment is +used. + +The prefix/padding will be filled with 0 if flags contains +#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively. + +When @allocator is %NULL, the default allocator will be used. + +The alignment in @params is given as a bitmask so that @align + 1 equals +the amount of bytes to align to. For example, to align to 8 bytes, +use an alignment of 7. + + + a new #GstMemory. + + + + + a #GstAllocator to use + + + + size of the visible memory area + + + + optional parameters + + + + + + Free @memory that was previously allocated with gst_allocator_alloc(). + + + + + + + a #GstAllocator to use + + + + the memory to free + + + + + + Set the default allocator. + + + + + + + a #GstAllocator + + + + + + + + + + + + the implementation of the GstMemoryMapFunction + + + + the implementation of the GstMemoryUnmapFunction + + + + the implementation of the GstMemoryCopyFunction + + + + the implementation of the GstMemoryShareFunction + + + + the implementation of the GstMemoryIsSpanFunction + + + + the implementation of the GstMemoryMapFullFunction. + Will be used instead of @mem_map if present. (Since: 1.6) + + + + the implementation of the GstMemoryUnmapFullFunction. + Will be used instead of @mem_unmap if present. (Since: 1.6) + + + + + + + + + + + + + The #GstAllocator is used to create new memory. + + + Object parent class + + + + + + + a new #GstMemory. + + + + + a #GstAllocator to use + + + + size of the visible memory area + + + + optional parameters + + + + + + + + + + + + + + a #GstAllocator to use + + + + the memory to free + + + + + + + + + + + + + Flags for allocators. + + The allocator has a custom alloc function. + + + first flag that can be used for custom purposes + + + + + + + The #GstAtomicQueue object implements a queue that can be used from multiple +threads without performing any blocking operations. + + + Create a new atomic queue instance. @initial_size will be rounded up to the +nearest power of 2 and used as the initial size of the queue. + + + a new #GstAtomicQueue + + + + + initial queue size + + + + + + Get the amount of items in the queue. + + + the number of elements in the queue. + + + + + a #GstAtomicQueue + + + + + + Peek the head element of the queue without removing it from the queue. + + + the head element of @queue or +%NULL when the queue is empty. + + + + + a #GstAtomicQueue + + + + + + Get the head element of the queue. + + + the head element of @queue or %NULL when +the queue is empty. + + + + + a #GstAtomicQueue + + + + + + Append @data to the tail of the queue. + + + + + + + a #GstAtomicQueue + + + + the data + + + + + + Increase the refcount of @queue. + + + + + + + a #GstAtomicQueue + + + + + + Unref @queue and free the memory when the refcount reaches 0. + + + + + + + a #GstAtomicQueue + + + + + + + + + + + + + + + + + + + + + Gets the list of children in a bin. + + + + a #GstBin + + + + + Gets the children cookie that watches the children list. + + + + a #GstBin + + + + + + + + + + + + + + + + + + + Check if @bin will resync its state change when elements are added and +removed. + + + + A #GstBin + + + + + Gets the number of children in a bin. + + + + a #GstBin + + + + + + + + + + + + + + + + + + + Combination of all possible fields that can be copied with +gst_buffer_copy_into(). + + + + + Combination of all possible metadata fields that can be copied with +gst_buffer_copy_into(). + + + + + Gets the decoding timestamp (dts) in nanoseconds (as a #GstClockTime) +of the data in the buffer. This is the timestamp when the media should be +decoded or processed otherwise. + +Value will be %GST_CLOCK_TIME_NONE if the dts is unknown. + + + + a #GstBuffer. + + + + + Tests if the dts is known. + + + + a #GstBuffer + + + + + Returns the buffer decoding timestamp (dts) if valid, else the buffer +presentation time (pts) + + + + a #GstBuffer. + + + + + Gets the duration in nanoseconds (as a #GstClockTime) of the data in the buffer. + +Value will be %GST_CLOCK_TIME_NONE if the duration is unknown. + + + + a #GstBuffer. + + + + + Tests if the duration is known. + + + + a #GstBuffer + + + + + Returns a flags word containing #GstBufferFlags flags set on this buffer. + + + + a #GstBuffer. + + + + + Gives the status of a specific flag on a buffer. + + + + a #GstBuffer. + + + the #GstBufferFlags flag to check. + + + + + Sets a buffer flag on a buffer. + + + + a #GstBuffer. + + + the #GstBufferFlags flag to set. + + + + + Clears a buffer flag. + + + + a #GstBuffer. + + + the #GstBufferFlags flag to clear. + + + + + Tests if the buffer marks a discontinuity in the stream. + + + + a #GstBuffer + + + + + + + + + + + + + + + + + + + Gets the offset in the source file of the beginning of this buffer. + + + + a #GstBuffer. + + + + + Gets the offset in the source file of the end of this buffer. + + + + a #GstBuffer. + + + + + Tests if the end offset is known. + + + + a #GstBuffer + + + + + Tests if the start offset is known. + + + + a #GstBuffer + + + + + Constant for no-offset return results. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the bufferpool is flushing. Subclasses might want to check the +state of the pool in the acquire function. + + + + a GstBufferPool + + + + + Gets the presentation timestamp (pts) in nanoseconds (as a #GstClockTime) +of the data in the buffer. This is the timestamp when the media should be +presented to the user. + +Value will be %GST_CLOCK_TIME_NONE if the pts is unknown. + + + + a #GstBuffer.: + + + + + Tests if the pts is known. + + + + a #GstBuffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstBin is an element that can contain other #GstElement, allowing them to be +managed as a group. +Pads from the child elements can be ghosted to the bin, see #GstGhostPad. +This makes the bin look like any other elements and enables creation of +higher-level abstraction elements. + +A new #GstBin is created with gst_bin_new(). Use a #GstPipeline instead if you +want to create a toplevel bin because a normal bin doesn't have a bus or +handle clock distribution of its own. + +After the bin has been created you will typically add elements to it with +gst_bin_add(). You can remove elements with gst_bin_remove(). + +An element can be retrieved from a bin with gst_bin_get_by_name(), using the +elements name. gst_bin_get_by_name_recurse_up() is mainly used for internal +purposes and will query the parent bins when the element is not found in the +current bin. + +An iterator of elements in a bin can be retrieved with +gst_bin_iterate_elements(). Various other iterators exist to retrieve the +elements in a bin. + +gst_object_unref() is used to drop your reference to the bin. + +The #GstBin::element-added signal is fired whenever a new element is added to +the bin. Likewise the #GstBin::element-removed signal is fired whenever an +element is removed from the bin. + +A #GstBin internally intercepts every #GstMessage posted by its children and +implements the following default behaviour for each of them: + +* %GST_MESSAGE_EOS: This message is only posted by sinks in the PLAYING +state. If all sinks posted the EOS message, this bin will post and EOS +message upwards. + +* %GST_MESSAGE_SEGMENT_START: Just collected and never forwarded upwards. + The messages are used to decide when all elements have completed playback + of their segment. + +* %GST_MESSAGE_SEGMENT_DONE: Is posted by #GstBin when all elements that posted + a SEGMENT_START have posted a SEGMENT_DONE. + +* %GST_MESSAGE_DURATION_CHANGED: Is posted by an element that detected a change + in the stream duration. The duration change is posted to the + application so that it can refetch the new duration with a duration + query. + + Note that these messages can be posted before the bin is prerolled, in which + case the duration query might fail. + + Note also that there might be a discrepancy (due to internal buffering/queueing) + between the stream being currently displayed and the returned duration query. + + Applications might want to also query for duration (and changes) by + listening to the %GST_MESSAGE_STREAM_START message, signaling the active start + of a (new) stream. + +* %GST_MESSAGE_CLOCK_LOST: This message is posted by an element when it + can no longer provide a clock. + + The default bin behaviour is to check if the lost clock was the one provided + by the bin. If so and the bin is currently in the PLAYING state, the message + is forwarded to the bin parent. + + This message is also generated when a clock provider is removed from + the bin. If this message is received by the application, it should + PAUSE the pipeline and set it back to PLAYING to force a new clock + distribution. + +* %GST_MESSAGE_CLOCK_PROVIDE: This message is generated when an element + can provide a clock. This mostly happens when a new clock + provider is added to the bin. + + The default behaviour of the bin is to mark the currently selected clock as + dirty, which will perform a clock recalculation the next time the bin is + asked to provide a clock. + + This message is never sent to the application but is forwarded to + the parent of the bin. + +* OTHERS: posted upwards. + +A #GstBin implements the following default behaviour for answering to a +#GstQuery: + +* %GST_QUERY_DURATION: The bin will forward the query to all sink + elements contained within and will return the maximum value. + If no sinks are available in the bin, the query fails. + +* %GST_QUERY_POSITION: The query is sent to all sink elements in the bin and the + MAXIMUM of all values is returned. If no sinks are available in the bin, + the query fails. + +* OTHERS: the query is forwarded to all sink elements, the result + of the first sink that answers the query successfully is returned. If no + sink is in the bin, the query fails. + +A #GstBin will by default forward any event sent to it to all sink +( %GST_EVENT_TYPE_UPSTREAM ) or source ( %GST_EVENT_TYPE_DOWNSTREAM ) elements +depending on the event type. + +If all the elements return %TRUE, the bin will also return %TRUE, else %FALSE +is returned. If no elements of the required type are in the bin, the event +handler will return %TRUE. + + + + Creates a new bin with the given name. + + + a new #GstBin + + + + + the name of the new bin + + + + + + Method to add an element to the bin. + + + %TRUE if the @element was added + + + + + the #GstBin + + + + the element to be added + + + + + + Method called when an element was added somewhere in the bin hierarchy. + + + + + + + the top level #GstBin + + + + the #GstBin to which the element was added + + + + the element that was added + + + + + + Method called when an element was removed somewhere in the bin hierarchy. + + + + + + + the top level #GstBin + + + + the #GstBin from which the element was removed + + + + the element that was removed + + + + + + + + + + + + + + + + + Method called when an element was added to the bin. + + + + + + + the #GstBin + + + + the element that was added + + + + + + Method called when an element was removed from the bin. + + + + + + + the #GstBin + + + + the element that was removed + + + + + + Method to handle a message from the children. + + + + + + + the #GstBin + + + + the message to be handled + + + + + + Method to remove an element from the bin. + + + %TRUE if the @element was removed + + + + + the #GstBin + + + + the element to be removed + + + + + + Adds the given element to the bin. Sets the element's parent, and thus +takes ownership of the element. An element can only be added to one bin. + +If the element's pads are linked to other pads, the pads will be unlinked +before the element is added to the bin. + +> When you add an element to an already-running pipeline, you will have to +> take care to set the state of the newly-added element to the desired +> state (usually PLAYING or PAUSED, same you set the pipeline to originally) +> with gst_element_set_state(), or use gst_element_sync_state_with_parent(). +> The bin or pipeline will not take care of this for you. + + + %TRUE if the element could be added, %FALSE if +the bin does not want to accept the element. + + + + + a #GstBin + + + + the #GstElement to add + + + + + + Adds a %NULL-terminated list of elements to a bin. This function is +equivalent to calling gst_bin_add() for each member of the list. The return +value of each gst_bin_add() is ignored. + + + + + + + a #GstBin + + + + the #GstElement element to add to the bin + + + + additional elements to add to the bin + + + + + + Recursively looks for elements with an unlinked pad of the given +direction within the specified bin and returns an unlinked pad +if one is found, or %NULL otherwise. If a pad is found, the caller +owns a reference to it and should use gst_object_unref() on the +pad when it is not needed any longer. + + + unlinked pad of the given +direction. + + + + + bin in which to look for elements with unlinked pads + + + + whether to look for an unlinked source or sink pad + + + + + + Looks for an element inside the bin that implements the given +interface. If such an element is found, it returns the element. +You can cast this element to the given interface afterwards. If you want +all elements that implement the interface, use +gst_bin_iterate_all_by_interface(). This function recurses into child bins. + + + A #GstElement inside the bin +implementing the interface + + + + + a #GstBin + + + + the #GType of an interface + + + + + + Gets the element with the given name from a bin. This +function recurses into child bins. + + + the #GstElement with the given +name + + + + + a #GstBin + + + + the element name to search for + + + + + + Gets the element with the given name from this bin. If the +element is not found, a recursion is performed on the parent bin. + + + the #GstElement with the given +name + + + + + a #GstBin + + + + the element name to search for + + + + + + + + the bin's suppressed #GstElementFlags. + + + + + a #GstBin + + + + + + 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. + + + a #GstIterator of #GstElement + for all elements in the bin with the given element factory name + + + + + 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. +The function recurses inside child bins. The iterator will yield a series +of #GstElement. + + + a #GstIterator of #GstElement + for all elements in the bin implementing the given interface + + + + + a #GstBin + + + + the #GType of an interface + + + + + + Gets an iterator for the elements in this bin. + + + a #GstIterator of #GstElement + + + + + a #GstBin + + + + + + Gets an iterator for the elements in this bin. +This iterator recurses into GstBin children. + + + a #GstIterator of #GstElement + + + + + a #GstBin + + + + + + Gets an iterator for all elements in the bin that have the +#GST_ELEMENT_FLAG_SINK flag set. + + + a #GstIterator of #GstElement + + + + + a #GstBin + + + + + + Gets an iterator for the elements in this bin in topologically +sorted order. This means that the elements are returned from +the most downstream elements (sinks) to the sources. + +This function is used internally to perform the state changes +of the bin elements and for clock selection. + + + a #GstIterator of #GstElement + + + + + a #GstBin + + + + + + Gets an iterator for all elements in the bin that have the +#GST_ELEMENT_FLAG_SOURCE flag set. + + + a #GstIterator of #GstElement + + + + + a #GstBin + + + + + + Queries @bin for the current latency and reconfigures this latency on all the +elements using a LATENCY event. + +This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY +is posted on the bus. + +This function simply emits the #GstBin::do-latency signal so any custom latency +calculations will be performed. + + + %TRUE if the latency could be queried and reconfigured. + + + + + a #GstBin + + + + + + Removes the element from the bin, unparenting it as well. +Unparenting the element means that the element will be dereferenced, +so if the bin holds the only reference to the element, the element +will be freed in the process of removing it from the bin. If you +want the element to still exist after removing, you need to call +gst_object_ref() before removing it from the bin. + +If the element's pads are linked to other pads, the pads will be unlinked +before the element is removed from the bin. + + + %TRUE if the element could be removed, %FALSE if +the bin does not want to remove the element. + + + + + a #GstBin + + + + the #GstElement to remove + + + + + + Removes a list of elements from a bin. This function is equivalent +to calling gst_bin_remove() with each member of the list. + + + + + + + a #GstBin + + + + the first #GstElement to remove from the bin + + + + %NULL-terminated list of elements to remove from the bin + + + + + + Suppresses the given flags on the bin. #GstElementFlags of a +child element are propagated when it is added to the bin. +When suppressed flags are set, those specified flags will +not be propagated to the bin. + + + + + + + a #GstBin + + + + the #GstElementFlags to suppress + + + + + + Synchronizes the state of every child of @bin with the state +of @bin. See also gst_element_sync_state_with_parent(). + + + %TRUE if syncing the state was successful for all children, + otherwise %FALSE. + + + + + a #GstBin + + + + + + If set to %TRUE, the bin will handle asynchronous state changes. +This should be used only if the bin subclass is modifying the state +of its children on its own. + + + + Forward all children messages, even those that would normally be filtered by +the bin. This can be interesting when one wants to be notified of the EOS +state of individual elements, for example. + +The messages are converted to an ELEMENT message with the bin as the +source. The structure of the message is named `GstBinForwarded` and contains +a field named `message` that contains the original forwarded #GstMessage. + + + + + + + the number of children in this bin + + + + the list of children in this bin + + + + + + updated whenever @children changes + + + + internal bus for handling child messages + + + + queued and cached messages + + + + + + the bin is currently calculating its state + + + + the bin needs to recalculate its state (deprecated) + + + + the bin needs to select a new clock + + + + the last clock selected + + + + the element that provided @provided_clock + + + + + + + + + + + + Will be emitted after the element was added to @sub_bin. + + + + + + the #GstBin the element was added to + + + + the #GstElement that was added to @sub_bin + + + + + + Will be emitted after the element was removed from @sub_bin. + + + + + + the #GstBin the element was removed from + + + + the #GstElement that was removed from @sub_bin + + + + + + Will be emitted when the bin needs to perform latency calculations. This +signal is only emitted for toplevel bins or when #GstBin:async-handling is +enabled. + +Only one signal handler is invoked. If no signals are connected, the +default handler is invoked, which will query and distribute the lowest +possible latency to all sinks. + +Connect to this signal if the default latency calculations are not +sufficient, like when you need different latencies for different sinks in +the same pipeline. + + + + + + Will be emitted after the element was added to the bin. + + + + + + the #GstElement that was added to the bin + + + + + + Will be emitted after the element was removed from the bin. + + + + + + the #GstElement that was removed from the bin + + + + + + + Subclasses can override #GstBinClass::add_element and #GstBinClass::remove_element +to update the list of children in the bin. + +The #GstBinClass::handle_message method can be overridden to implement custom +message handling. + +#GstBinClass::deep_element_added will be called when a new element has been +added to any bin inside this bin, so it will also be called if a new child +was added to a sub-bin of this bin. #GstBin implementations that override +this message should chain up to the parent class implementation so the +#GstBin::deep-element-added signal is emitted on all parents. + + + bin parent class + + + + + + + + + + + + + + the #GstBin + + + + the element that was added + + + + + + + + + + + + + + the #GstBin + + + + the element that was removed + + + + + + + + + + %TRUE if the @element was added + + + + + the #GstBin + + + + the element to be added + + + + + + + + + + %TRUE if the @element was removed + + + + + the #GstBin + + + + the element to be removed + + + + + + + + + + + + + + the #GstBin + + + + the message to be handled + + + + + + + + + + + + + + + + + + + + + + + + + + + the top level #GstBin + + + + the #GstBin to which the element was added + + + + the element that was added + + + + + + + + + + + + + + the top level #GstBin + + + + the #GstBin from which the element was removed + + + + the element that was removed + + + + + + + + + + + + + GstBinFlags are a set of flags specific to bins. Most are set/used +internally. They can be checked using the GST_OBJECT_FLAG_IS_SET() macro, +and (un)set using GST_OBJECT_FLAG_SET() and GST_OBJECT_FLAG_UNSET(). + + + + + + the last enum in the series of flags for bins. +Derived classes can use this as first value in a list of flags. + + + + + + + A fundamental type that describes a 64-bit bitmask + + + Buffers are the basic unit of data transfer in GStreamer. They contain the +timing and offset along with other arbitrary metadata that is associated +with the #GstMemory blocks that the buffer contains. + +Buffers are usually created with gst_buffer_new(). After a buffer has been +created one will typically allocate memory for it and add it to the buffer. +The following example creates a buffer that can hold a given video frame +with a given width, height and bits per plane. + +``` C + GstBuffer *buffer; + GstMemory *memory; + gint size, width, height, bpp; + ... + size = width * height * bpp; + buffer = gst_buffer_new (); + memory = gst_allocator_alloc (NULL, size, NULL); + gst_buffer_insert_memory (buffer, -1, memory); + ... +``` + +Alternatively, use gst_buffer_new_allocate() to create a buffer with +preallocated data of a given size. + +Buffers can contain a list of #GstMemory objects. You can retrieve how many +memory objects with gst_buffer_n_memory() and you can get a pointer +to memory with gst_buffer_peek_memory() + +A buffer will usually have timestamps, and a duration, but neither of these +are guaranteed (they may be set to #GST_CLOCK_TIME_NONE). Whenever a +meaningful value can be given for these, they should be set. The timestamps +and duration are measured in nanoseconds (they are #GstClockTime values). + +The buffer DTS refers to the timestamp when the buffer should be decoded and +is usually monotonically increasing. The buffer PTS refers to the timestamp when +the buffer content should be presented to the user and is not always +monotonically increasing. + +A buffer can also have one or both of a start and an end offset. These are +media-type specific. For video buffers, the start offset will generally be +the frame number. For audio buffers, it will be the number of samples +produced so far. For compressed data, it could be the byte offset in a +source or destination file. Likewise, the end offset will be the offset of +the end of the buffer. These can only be meaningfully interpreted if you +know the media type of the buffer (the preceding CAPS event). Either or both +can be set to #GST_BUFFER_OFFSET_NONE. + +gst_buffer_ref() is used to increase the refcount of a buffer. This must be +done when you want to keep a handle to the buffer after pushing it to the +next element. The buffer refcount determines the writability of the buffer, a +buffer is only writable when the refcount is exactly 1, i.e. when the caller +has the only reference to the buffer. + +To efficiently create a smaller buffer out of an existing one, you can +use gst_buffer_copy_region(). This method tries to share the memory objects +between the two buffers. + +If a plug-in wants to modify the buffer data or metadata in-place, it should +first obtain a buffer that is safe to modify by using +gst_buffer_make_writable(). This function is optimized so that a copy will +only be made when it is necessary. + +Several flags of the buffer can be set and unset with the +GST_BUFFER_FLAG_SET() and GST_BUFFER_FLAG_UNSET() macros. Use +GST_BUFFER_FLAG_IS_SET() to test if a certain #GstBufferFlags flag is set. + +Buffers can be efficiently merged into a larger buffer with +gst_buffer_append(). Copying of memory will only be done when absolutely +needed. + +Arbitrary extra metadata can be set on a buffer with gst_buffer_add_meta(). +Metadata can be retrieved with gst_buffer_get_meta(). See also #GstMeta. + +An element should either unref the buffer or push it out on a src pad +using gst_pad_push() (see #GstPad). + +Buffers are usually freed by unreffing them with gst_buffer_unref(). When +the refcount drops to 0, any memory and metadata pointed to by the buffer is +unreffed as well. Buffers allocated from a #GstBufferPool will be returned to +the pool when the refcount drops to 0. + +The #GstParentBufferMeta is a meta which can be attached to a #GstBuffer +to hold a reference to another buffer that is only released when the child +#GstBuffer is released. + +Typically, #GstParentBufferMeta is used when the child buffer is directly +using the #GstMemory of the parent buffer, and wants to prevent the parent +buffer from being returned to a buffer pool until the #GstMemory is available +for re-use. (Since: 1.6) + + + the parent structure + + + + pointer to the pool owner of the buffer + + + + presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the + pts is not known or relevant. The pts contains the timestamp when the + media should be presented to the user. + + + + decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the + dts is not known or relevant. The dts contains the timestamp when the + media should be processed. + + + + duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE + when the duration is not known or relevant. + + + + a media specific offset for the buffer data. + For video frames, this is the frame number of this buffer. + For audio samples, this is the offset of the first sample in this buffer. + For file data or compressed data this is the byte offset of the first + byte in this buffer. + + + + the last offset contained in this buffer. It has the same + format as @offset. + + + + Creates a newly allocated buffer without any data. + + + the new #GstBuffer. + + + + + Tries to create a newly allocated buffer with data of the given size and +extra parameters from @allocator. If the requested amount of memory can't be +allocated, %NULL will be returned. The allocated buffer memory is not cleared. + +When @allocator is %NULL, the default memory allocator will be used. + +Note that when @size == 0, the buffer will not have memory associated with it. + + + a new #GstBuffer + + + + + the #GstAllocator to use, or %NULL to use the + default allocator + + + + the size in bytes of the new buffer's data. + + + + optional parameters + + + + + + Creates a new buffer of size @size and fills it with a copy of @data. + + + a new #GstBuffer + + + + + data to copy into new buffer + + + + + + size of @data in bytes + + + + + + Creates a new buffer that wraps the given @data. The memory will be freed +with g_free() and will be marked writable. + + + a new #GstBuffer + + + + + data to wrap + + + + + + allocated size of @data + + + + + + Creates a new #GstBuffer that wraps the given @bytes. The data inside +@bytes cannot be %NULL and the resulting buffer will be marked as read only. + + + a new #GstBuffer wrapping @bytes + + + + + a #GBytes to wrap + + + + + + Allocates a new buffer that wraps the given memory. @data must point to +@maxsize of memory, the wrapped buffer will have the region from @offset and +@size visible. + +When the buffer is destroyed, @notify will be called with @user_data. + +The prefix/padding must be filled with 0 if @flags contains +#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively. + + + a new #GstBuffer + + + + + #GstMemoryFlags + + + + data to wrap + + + + + + allocated size of @data + + + + offset in @data + + + + size of valid data + + + + user_data + + + + called with @user_data when the memory is freed + + + + + + Creates and adds a #GstCustomMeta for the desired @name. @name must have +been successfully registered with gst_meta_register_custom(). + + + The #GstCustomMeta that was added to the buffer + + + + + a #GstBuffer + + + + the registered name of the desired custom meta + + + + + + Adds metadata for @info to @buffer using the parameters in @params. + + + the metadata for the api in @info on @buffer. + + + + + a #GstBuffer + + + + a #GstMetaInfo + + + + params for @info + + + + + + Adds a #GstParentBufferMeta to @buffer that holds a reference on +@ref until the buffer is freed. + + + The #GstParentBufferMeta that was added to the buffer + + + + + a #GstBuffer + + + + a #GstBuffer to ref + + + + + + Attaches protection metadata to a #GstBuffer. + + + a pointer to the added #GstProtectionMeta if successful + + + + + #GstBuffer holding an encrypted sample, to which protection + metadata should be added. + + + + a #GstStructure holding cryptographic + information relating to the sample contained in @buffer. This + function takes ownership of @info. + + + + + + Adds a #GstReferenceTimestampMeta to @buffer that holds a @timestamp and +optionally @duration based on a specific timestamp @reference. See the +documentation of #GstReferenceTimestampMeta for details. + + + The #GstReferenceTimestampMeta that was added to the buffer + + + + + a #GstBuffer + + + + identifier for the timestamp reference. + + + + timestamp + + + + duration, or %GST_CLOCK_TIME_NONE + + + + + + Appends all the memory from @buf2 to @buf1. The result buffer will contain a +concatenation of the memory of @buf1 and @buf2. + + + the new #GstBuffer that contains the memory + of the two source buffers. + + + + + the first source #GstBuffer to append. + + + + the second source #GstBuffer to append. + + + + + + Appends the memory block @mem to @buffer. This function takes +ownership of @mem and thus doesn't increase its refcount. + +This function is identical to gst_buffer_insert_memory() with an index of -1. +See gst_buffer_insert_memory() for more details. + + + + + + + a #GstBuffer. + + + + a #GstMemory. + + + + + + Appends @size bytes at @offset from @buf2 to @buf1. The result buffer will +contain a concatenation of the memory of @buf1 and the requested region of +@buf2. + + + the new #GstBuffer that contains the memory + of the two source buffers. + + + + + the first source #GstBuffer to append. + + + + the second source #GstBuffer to append. + + + + the offset in @buf2 + + + + the size or -1 of @buf2 + + + + + + Creates 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 if the copy succeeded, %NULL otherwise. + + + + + a #GstBuffer. + + + + + + Creates a copy of the given buffer. This will make a newly allocated +copy of the data the source buffer contains. + + + a new copy of @buf if the copy succeeded, %NULL otherwise. + + + + + a #GstBuffer. + + + + + + Copies the information from @src into @dest. + +If @dest already contains memory and @flags contains GST_BUFFER_COPY_MEMORY, +the memory from @src will be appended to @dest. + +@flags indicate which fields will be copied. + + + %TRUE if the copying succeeded, %FALSE otherwise. + + + + + a destination #GstBuffer + + + + a source #GstBuffer + + + + flags indicating what metadata fields should be copied. + + + + offset to copy from + + + + total size to copy. If -1, all data is copied. + + + + + + Creates a sub-buffer from @parent at @offset and @size. +This sub-buffer uses the actual memory space of the parent buffer. +This function will copy the offset and timestamp fields when the +offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and +#GST_BUFFER_OFFSET_NONE. +If @offset equals 0 and @size equals the total size of @buffer, the +duration and offset end fields are also copied. If not they will be set +to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE. + + + the new #GstBuffer or %NULL if copying + failed. + + + + + a #GstBuffer. + + + + the #GstBufferCopyFlags + + + + the offset into parent #GstBuffer at which the new sub-buffer + begins. + + + + the size of the new #GstBuffer sub-buffer, in bytes. If -1, all + data is copied. + + + + + + Copies @size bytes starting from @offset in @buffer to @dest. + + + The amount of bytes extracted. This value can be lower than @size + when @buffer did not contain enough data. + + + + + a #GstBuffer. + + + + the offset to extract + + + + + the destination address + + + + + + the size to extract + + + + + + Extracts a copy of at most @size bytes the data at @offset into +newly-allocated memory. @dest must be freed using g_free() when done. + + + + + + + a #GstBuffer + + + + the offset to extract + + + + the size to extract + + + + A pointer where + the destination array will be written. Might be %NULL if the size is 0. + + + + + + A location where the size of @dest can be written + + + + + + Copies @size bytes from @src to @buffer at @offset. + + + The amount of bytes copied. This value can be lower than @size + when @buffer did not contain enough data. + + + + + a #GstBuffer. + + + + the offset to fill + + + + the source address + + + + + + the size to fill + + + + + + Finds the memory blocks that span @size bytes starting from @offset +in @buffer. + +When this function returns %TRUE, @idx will contain the index of the first +memory block where the byte for @offset can be found and @length contains the +number of memory blocks containing the @size remaining bytes. @skip contains +the number of bytes to skip in the memory block at @idx to get to the byte +for @offset. + +@size can be -1 to get all the memory blocks after @idx. + + + %TRUE when @size bytes starting from @offset could be found in +@buffer and @idx, @length and @skip will be filled. + + + + + a #GstBuffer. + + + + an offset + + + + a size + + + + pointer to index + + + + pointer to length + + + + pointer to skip + + + + + + Calls @func with @user_data for each meta in @buffer. + +@func can modify the passed meta pointer or its contents. The return value +of @func defines if this function returns or if the remaining metadata items +in the buffer should be skipped. + + + %FALSE when @func returned %FALSE for one of the metadata. + + + + + a #GstBuffer + + + + a #GstBufferForeachMetaFunc to call + + + + user data passed to @func + + + + + + Gets all the memory blocks in @buffer. The memory blocks will be merged +into one large #GstMemory. + + + a #GstMemory that contains the merged memory. + + + + + a #GstBuffer. + + + + + + Finds the first #GstCustomMeta on @buffer for the desired @name. + + + the #GstCustomMeta + + + + + a #GstBuffer + + + + the registered name of the custom meta to retrieve. + + + + + + Gets the #GstBufferFlags flags set on this buffer. + + + the flags set on this buffer. + + + + + a #GstBuffer + + + + + + Gets the memory block at index @idx in @buffer. + + + a #GstMemory that contains the data of the +memory block at @idx. + + + + + a #GstBuffer. + + + + an index + + + + + + Gets @length memory blocks in @buffer starting at @idx. The memory blocks will +be merged into one large #GstMemory. + +If @length is -1, all memory starting from @idx is merged. + + + a #GstMemory that contains the merged data of @length + blocks starting at @idx. + + + + + a #GstBuffer. + + + + an index + + + + a length + + + + + + Gets the metadata for @api on buffer. When there is no such metadata, %NULL is +returned. If multiple metadata with the given @api are attached to this +buffer only the first one is returned. To handle multiple metadata with a +given API use gst_buffer_iterate_meta() or gst_buffer_foreach_meta() instead +and check the `meta->info.api` member for the API type. + + + the metadata for @api on @buffer. + + + + + a #GstBuffer + + + + the #GType of an API + + + + + + + + number of metas of type @api_type on @buffer. + + + + + a #GstBuffer + + + + the #GType of an API + + + + + + Finds the first #GstReferenceTimestampMeta on @buffer that conforms to +@reference. Conformance is tested by checking if the meta's reference is a +subset of @reference. + +Buffers can contain multiple #GstReferenceTimestampMeta metadata items. + + + the #GstReferenceTimestampMeta or %NULL when there +is no such metadata on @buffer. + + + + + a #GstBuffer + + + + a reference #GstCaps + + + + + + Gets the total size of the memory blocks in @buffer. + + + total size of the memory blocks in @buffer. + + + + + a #GstBuffer. + + + + + + Gets the total size of the memory blocks in @buffer. + +When not %NULL, @offset will contain the offset of the data in the +first memory block in @buffer and @maxsize will contain the sum of +the size and @offset and the amount of extra padding on the last +memory block. @offset and @maxsize can be used to resize the +buffer memory blocks with gst_buffer_resize(). + + + total size of the memory blocks in @buffer. + + + + + a #GstBuffer. + + + + a pointer to the offset + + + + a pointer to the maxsize + + + + + + Gets the total size of @length memory blocks stating from @idx in @buffer. + +When not %NULL, @offset will contain the offset of the data in the +memory block in @buffer at @idx and @maxsize will contain the sum of the size +and @offset and the amount of extra padding on the memory block at @idx + +@length -1. +@offset and @maxsize can be used to resize the buffer memory blocks with +gst_buffer_resize_range(). + + + total size of @length memory blocks starting at @idx in @buffer. + + + + + a #GstBuffer. + + + + an index + + + + a length + + + + a pointer to the offset + + + + a pointer to the maxsize + + + + + + Gives the status of a specific flag on a buffer. + + + %TRUE if all flags in @flags are found on @buffer. + + + + + a #GstBuffer + + + + the #GstBufferFlags flag to check. + + + + + + Inserts the memory block @mem into @buffer at @idx. This function takes ownership +of @mem and thus doesn't increase its refcount. + +Only gst_buffer_get_max_memory() can be added to a buffer. If more memory is +added, existing memory blocks will automatically be merged to make room for +the new memory. + + + + + + + a #GstBuffer. + + + + the index to add the memory at, or -1 to append it to the end + + + + a #GstMemory. + + + + + + Checks if all memory blocks in @buffer are writable. + +Note that this function does not check if @buffer is writable, use +gst_buffer_is_writable() to check that if needed. + + + %TRUE if all memory blocks in @buffer are writable + + + + + a #GstBuffer. + + + + + + Checks if @length memory blocks in @buffer starting from @idx are writable. + +@length can be -1 to check all the memory blocks after @idx. + +Note that this function does not check if @buffer is writable, use +gst_buffer_is_writable() to check that if needed. + + + %TRUE if the memory range is writable + + + + + a #GstBuffer. + + + + an index + + + + a length, should not be 0 + + + + + + Retrieves the next #GstMeta after @current. If @state points +to %NULL, the first metadata is returned. + +@state will be updated with an opaque state pointer + + + The next #GstMeta or %NULL +when there are no more items. + + + + + a #GstBuffer + + + + an opaque state pointer + + + + + + Retrieves the next #GstMeta of type @meta_api_type after the current one +according to @state. If @state points to %NULL, the first metadata of +type @meta_api_type is returned. + +@state will be updated with an opaque state pointer + + + The next #GstMeta of type +@meta_api_type or %NULL when there are no more items. + + + + + a #GstBuffer + + + + an opaque state pointer + + + + only return #GstMeta of this type + + + + + + Fills @info with the #GstMapInfo of all merged memory blocks in @buffer. + +@flags describe the desired access of the memory. When @flags is +#GST_MAP_WRITE, @buffer should be writable (as returned from +gst_buffer_is_writable()). + +When @buffer is writable but the memory isn't, a writable copy will +automatically be created and returned. The readonly copy of the +buffer memory will then also be replaced with this writable copy. + +The memory in @info should be unmapped with gst_buffer_unmap() after +usage. + + + %TRUE if the map succeeded and @info contains valid data. + + + + + a #GstBuffer. + + + + info about the mapping + + + + flags for the mapping + + + + + + Fills @info with the #GstMapInfo of @length merged memory blocks +starting at @idx in @buffer. When @length is -1, all memory blocks starting +from @idx are merged and mapped. + +@flags describe the desired access of the memory. When @flags is +#GST_MAP_WRITE, @buffer should be writable (as returned from +gst_buffer_is_writable()). + +When @buffer is writable but the memory isn't, a writable copy will +automatically be created and returned. The readonly copy of the buffer memory +will then also be replaced with this writable copy. + +The memory in @info should be unmapped with gst_buffer_unmap() after usage. + + + %TRUE if the map succeeded and @info contains valid +data. + + + + + a #GstBuffer. + + + + an index + + + + a length + + + + info about the mapping + + + + flags for the mapping + + + + + + Compares @size bytes starting from @offset in @buffer with the memory in @mem. + + + 0 if the memory is equal. + + + + + a #GstBuffer. + + + + the offset in @buffer + + + + the memory to compare + + + + + + the size to compare + + + + + + Fills @buf with @size bytes with @val starting from @offset. + + + The amount of bytes filled. This value can be lower than @size + when @buffer did not contain enough data. + + + + + a #GstBuffer. + + + + the offset in @buffer + + + + the value to set + + + + the size to set + + + + + + Gets the amount of memory blocks that this buffer has. This amount is never +larger than what gst_buffer_get_max_memory() returns. + + + the number of memory blocks this buffer is made of. + + + + + a #GstBuffer. + + + + + + Gets the memory block at @idx in @buffer. The memory block stays valid until +the memory block in @buffer is removed, replaced or merged, typically with +any call that modifies the memory in @buffer. + + + the #GstMemory at @idx. + + + + + a #GstBuffer. + + + + an index + + + + + + Prepends the memory block @mem to @buffer. This function takes +ownership of @mem and thus doesn't increase its refcount. + +This function is identical to gst_buffer_insert_memory() with an index of 0. +See gst_buffer_insert_memory() for more details. + + + + + + + a #GstBuffer. + + + + a #GstMemory. + + + + + + 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. + + + + + + Removes all the memory blocks in @buffer. + + + + + + + a #GstBuffer. + + + + + + Removes the memory block in @b at index @i. + + + + + + + a #GstBuffer. + + + + an index + + + + + + Removes @length memory blocks in @buffer starting from @idx. + +@length can be -1, in which case all memory starting from @idx is removed. + + + + + + + a #GstBuffer. + + + + an index + + + + a length + + + + + + Removes the metadata for @meta on @buffer. + + + %TRUE if the metadata existed and was removed, %FALSE if no such +metadata was on @buffer. + + + + + a #GstBuffer + + + + a #GstMeta + + + + + + Replaces all memory in @buffer with @mem. + + + + + + + a #GstBuffer. + + + + a #GstMemory + + + + + + Replaces the memory block at index @idx in @buffer with @mem. + + + + + + + a #GstBuffer. + + + + an index + + + + a #GstMemory + + + + + + Replaces @length memory blocks in @buffer starting at @idx with @mem. + +If @length is -1, all memory starting from @idx will be removed and +replaced with @mem. + +@buffer should be writable. + + + + + + + a #GstBuffer. + + + + an index + + + + a length, should not be 0 + + + + a #GstMemory + + + + + + Sets the offset and total size of the memory blocks in @buffer. + + + + + + + a #GstBuffer. + + + + the offset adjustment + + + + the new size or -1 to just adjust the offset + + + + + + Sets the total size of the @length memory blocks starting at @idx in +@buffer + + + %TRUE if resizing succeeded, %FALSE otherwise. + + + + + a #GstBuffer. + + + + an index + + + + a length + + + + the offset adjustment + + + + the new size or -1 to just adjust the offset + + + + + + Sets one or more buffer flags on a buffer. + + + %TRUE if @flags were successfully set on buffer. + + + + + a #GstBuffer + + + + the #GstBufferFlags to set. + + + + + + Sets the total size of the memory blocks in @buffer. + + + + + + + a #GstBuffer. + + + + the new size + + + + + + Releases the memory previously mapped with gst_buffer_map(). + + + + + + + a #GstBuffer. + + + + a #GstMapInfo + + + + + + 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. + + + true if @flags is successfully cleared from buffer. + + + + + a #GstBuffer + + + + the #GstBufferFlags to clear + + + + + + Gets the maximum amount of memory blocks that a buffer can hold. This is a +compile time constant that can be queried with the function. + +When more memory blocks are added, existing memory blocks will be merged +together to make room for the new block. + + + the maximum amount of memory blocks that a buffer can hold. + + + + + 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() +function to specify which items should be copied. + + copy nothing + + + flag indicating that buffer flags should be copied + + + flag indicating that buffer pts, dts, + duration, offset and offset_end should be copied + + + flag indicating that buffer meta should be + copied + + + flag indicating that buffer memory should be reffed + and appended to already existing memory. Unless the memory is marked as + NO_SHARE, no actual copy of the memory is made but it is simply reffed. + Add @GST_BUFFER_COPY_DEEP to force a real copy. + + + flag indicating that buffer memory should be + merged + + + + + + A set of buffer flags used to describe properties of a #GstBuffer. + + the buffer is live data and should be discarded in + the PAUSED state. + + + the buffer contains data that should be dropped + because it will be clipped against the segment + boundaries or because it does not contain data + that should be shown to the user. + + + the buffer marks a data discontinuity in the stream. + This typically occurs after a seek or a dropped buffer + from a live or network source. + + + the buffer timestamps might have a discontinuity + and this buffer is a good point to resynchronize. + + + the buffer data is corrupted. + + + the buffer contains a media specific marker. for + video this is the end of a frame boundary, for audio + this is the start of a talkspurt. for RTP + packets this matches the marker flag in the + RTP packet header. + + + the buffer contains header information that is + needed to decode the following data. + + + the buffer has been created to fill a gap in the + stream and contains media neutral data (elements can + switch to optimized code path that ignores the buffer + content). + + + the buffer can be dropped without breaking the + stream, for example to reduce bandwidth. + + + this unit cannot be decoded independently. + + + this flag is set when memory of the buffer + is added/removed + + + + + + + additional media specific flags can be added starting from + this flag. + + + + A function that will be called from gst_buffer_foreach_meta(). The @meta +field will point to a the reference of the meta. + +@buffer should not be modified from this callback. + +When this function returns %TRUE, the next meta will be +returned. When %FALSE is returned, gst_buffer_foreach_meta() will return. + +When @meta is set to %NULL, the item will be removed from the buffer. + + + %FALSE when gst_buffer_foreach_meta() should stop + + + + + a #GstBuffer + + + + a pointer to a #GstMeta + + + + user data passed to gst_buffer_foreach_meta() + + + + + + Buffer lists are an object containing a list of buffers. + +Buffer lists are created with gst_buffer_list_new() and filled with data +using gst_buffer_list_insert(). + +Buffer lists can be pushed on a srcpad with gst_pad_push_list(). This is +interesting when multiple buffers need to be pushed in one go because it +can reduce the amount of overhead for pushing each buffer individually. + + + Creates a new, empty #GstBufferList. + + + the new #GstBufferList. + + + + + Creates a new, empty #GstBufferList. The list will have @size space +preallocated so that memory reallocations can be avoided. + + + the new #GstBufferList. + + + + + an initial reserved size + + + + + + Calculates the size of the data contained in @list by adding the +size of all buffers. + + + the size of the data contained in @list in bytes. + + + + + a #GstBufferList + + + + + + Creates 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 + + + + + + Creates a copy of the given buffer list. This will make a newly allocated +copy of the buffers that the source buffer list contains. + + + a new copy of @list. + + + + + a #GstBufferList + + + + + + Calls @func with @data for each buffer in @list. + +@func can modify the passed buffer pointer or its contents. The return value +of @func defines if this function returns or if the remaining buffers in +the list should be skipped. + + + %TRUE when @func returned %TRUE for each buffer in @list or when +@list is empty. + + + + + a #GstBufferList + + + + a #GstBufferListFunc to call + + + + user data passed to @func + + + + + + Gets the buffer at @idx. + +You must make sure that @idx does not exceed the number of +buffers available. + + + the buffer at @idx in @group + or %NULL when there is no buffer. The buffer remains valid as + long as @list is valid and buffer is not removed from the list. + + + + + a #GstBufferList + + + + the index + + + + + + Gets the buffer at @idx, ensuring it is a writable buffer. + +You must make sure that @idx does not exceed the number of +buffers available. + + + the buffer at @idx in @group. + The returned buffer remains valid as long as @list is valid and + the buffer is not removed from the list. + + + + + a (writable) #GstBufferList + + + + the index + + + + + + Inserts @buffer at @idx in @list. Other buffers are moved to make room for +this new buffer. + +A -1 value for @idx will append the buffer at the end. + + + + + + + a #GstBufferList + + + + the index + + + + a #GstBuffer + + + + + + Returns the number of buffers in @list. + + + the number of buffers in the buffer list + + + + + a #GstBufferList + + + + + + 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 + + + + + + Removes @length buffers starting from @idx in @list. The following buffers +are moved to close the gap. + + + + + + + a #GstBufferList + + + + the index + + + + the amount to remove + + + + + + Decreases the refcount of the buffer list. If the refcount reaches 0, the +buffer list will be freed. + + + + + + + a #GstBufferList + + + + + + Modifies a pointer to a #GstBufferList to point to a different +#GstBufferList. 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 list is unreffed, the new is reffed). + +Either @new_list or the #GstBufferList pointed to by @old_list may be %NULL. + + + %TRUE if @new_list was different from @old_list + + + + + pointer to a pointer to a + #GstBufferList to be replaced. + + + + pointer to a #GstBufferList that + will replace the buffer list pointed to by @old_list. + + + + + + Modifies a pointer to a #GstBufferList to point to a different +#GstBufferList. This function is similar to gst_buffer_list_replace() except +that it takes ownership of @new_list. + + + %TRUE if @new_list was different from @old_list + + + + + pointer to a pointer to a #GstBufferList + to be replaced. + + + + pointer to a #GstBufferList + that will replace the bufferlist pointed to by @old_list. + + + + + + + A function that will be called from gst_buffer_list_foreach(). The @buffer +field will point to a the reference of the buffer at @idx. + +When this function returns %TRUE, the next buffer will be +returned. When %FALSE is returned, gst_buffer_list_foreach() will return. + +When @buffer is set to %NULL, the item will be removed from the bufferlist. +When @buffer has been made writable, the new buffer reference can be assigned +to @buffer. This function is responsible for unreffing the old buffer when +removing or modifying. + + + %FALSE when gst_buffer_list_foreach() should stop + + + + + pointer to the buffer + + + + the index of @buffer + + + + user data passed to gst_buffer_list_foreach() + + + + + + A #GstBufferPool is an object that can be used to pre-allocate and recycle +buffers of the same size and with the same properties. + +A #GstBufferPool is created with gst_buffer_pool_new(). + +Once a pool is created, it needs to be configured. A call to +gst_buffer_pool_get_config() returns the current configuration structure from +the pool. With gst_buffer_pool_config_set_params() and +gst_buffer_pool_config_set_allocator() the bufferpool parameters and +allocator can be configured. Other properties can be configured in the pool +depending on the pool implementation. + +A bufferpool can have extra options that can be enabled with +gst_buffer_pool_config_add_option(). The available options can be retrieved +with gst_buffer_pool_get_options(). Some options allow for additional +configuration properties to be set. + +After the configuration structure has been configured, +gst_buffer_pool_set_config() updates the configuration in the pool. This can +fail when the configuration structure is not accepted. + +After the pool has been configured, it can be activated with +gst_buffer_pool_set_active(). This will preallocate the configured resources +in the pool. + +When the pool is active, gst_buffer_pool_acquire_buffer() can be used to +retrieve a buffer from the pool. + +Buffers allocated from a bufferpool will automatically be returned to the +pool with gst_buffer_pool_release_buffer() when their refcount drops to 0. + +The bufferpool can be deactivated again with gst_buffer_pool_set_active(). +All further gst_buffer_pool_acquire_buffer() calls will return an error. When +all buffers are returned to the pool they will be freed. + + + Creates a new #GstBufferPool instance. + + + a new #GstBufferPool instance + + + + + Enables the option in @config. This will instruct the @bufferpool to enable +the specified option on the buffers that it allocates. + +The options supported by @pool can be retrieved with gst_buffer_pool_get_options(). + + + + + + + a #GstBufferPool configuration + + + + an option to add + + + + + + Gets the @allocator and @params from @config. + + + %TRUE, if the values are set. + + + + + a #GstBufferPool configuration + + + + a #GstAllocator, or %NULL + + + + #GstAllocationParams, or %NULL + + + + + + Parses an available @config and gets the option at @index of the options API +array. + + + the option at @index. + + + + + a #GstBufferPool configuration + + + + position in the option array to read + + + + + + Gets the configuration values from @config. + + + %TRUE if all parameters could be fetched. + + + + + a #GstBufferPool configuration + + + + the caps of buffers + + + + the size of each buffer, not including prefix and padding + + + + the minimum amount of buffers to allocate. + + + + the maximum amount of buffers to allocate or 0 for unlimited. + + + + + + Checks if @config contains @option. + + + %TRUE if the options array contains @option. + + + + + a #GstBufferPool configuration + + + + an option + + + + + + Retrieves the number of values currently stored in the options array of the +@config structure. + + + the options array size as a #guint. + + + + + a #GstBufferPool configuration + + + + + + Sets the @allocator and @params on @config. + +One of @allocator and @params can be %NULL, but not both. When @allocator +is %NULL, the default allocator of the pool will use the values in @param +to perform its allocation. When @param is %NULL, the pool will use the +provided @allocator with its default #GstAllocationParams. + +A call to gst_buffer_pool_set_config() can update the allocator and params +with the values that it is able to do. Some pools are, for example, not able +to operate with different allocators or cannot allocate with the values +specified in @params. Use gst_buffer_pool_get_config() to get the currently +used values. + + + + + + + a #GstBufferPool configuration + + + + a #GstAllocator + + + + #GstAllocationParams + + + + + + Configures @config with the given parameters. + + + + + + + a #GstBufferPool configuration + + + + caps for the buffers + + + + the size of each buffer, not including prefix and padding + + + + the minimum amount of buffers to allocate. + + + + the maximum amount of buffers to allocate or 0 for unlimited. + + + + + + Validates that changes made to @config are still valid in the context of the +expected parameters. This function is a helper that can be used to validate +changes made by a pool to a config when gst_buffer_pool_set_config() +returns %FALSE. This expects that @caps haven't changed and that +@min_buffers aren't lower then what we initially expected. +This does not check if options or allocator parameters are still valid, +won't check if size have changed, since changing the size is valid to adapt +padding. + + + %TRUE, if the parameters are valid in this context. + + + + + a #GstBufferPool configuration + + + + the excepted caps of buffers + + + + the expected size of each buffer, not including prefix and padding + + + + the expected minimum amount of buffers to allocate. + + + + the expect maximum amount of buffers to allocate or 0 for unlimited. + + + + + + Acquires a buffer from @pool. @buffer should point to a memory location that +can hold a pointer to the new buffer. When the pool is empty, this function +will by default block until a buffer is released into the pool again or when +the pool is set to flushing or deactivated. + +@params can contain optional parameters to influence the allocation. + + + a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is +inactive. + + + + + a #GstBufferPool + + + + a location for a #GstBuffer + + + + parameters. + + + + + + Allocate a buffer. the default implementation allocates +buffers from the configured memory allocator and with the configured +parameters. All metadata that is present on the allocated buffer will +be marked as #GST_META_FLAG_POOLED and #GST_META_FLAG_LOCKED and will +not be removed from the buffer in #GstBufferPoolClass::reset_buffer. +The buffer should have the #GST_BUFFER_FLAG_TAG_MEMORY cleared. + + + a #GstFlowReturn to indicate whether the allocation was +successful. + + + + + the #GstBufferPool + + + + a location for a #GstBuffer + + + + parameters. + + + + + + Enter the flushing state. + + + + + + + the #GstBufferPool + + + + + + Leave the flushing state. + + + + + + + the #GstBufferPool + + + + + + Free a buffer. The default implementation unrefs the buffer. + + + + + + + the #GstBufferPool + + + + the #GstBuffer to free + + + + + + Gets a %NULL terminated array of string with supported bufferpool options for +@pool. An option would typically be enabled with +gst_buffer_pool_config_add_option(). + + + a %NULL terminated array + of strings. + + + + + + + a #GstBufferPool + + + + + + Releases @buffer to @pool. @buffer should have previously been allocated from +@pool with gst_buffer_pool_acquire_buffer(). + +This function is usually called automatically when the last ref on @buffer +disappears. + + + + + + + a #GstBufferPool + + + + a #GstBuffer + + + + + + Reset the buffer to its state when it was freshly allocated. +The default implementation will clear the flags, timestamps and +will remove the metadata without the #GST_META_FLAG_POOLED flag (even +the metadata with #GST_META_FLAG_LOCKED). If the +#GST_BUFFER_FLAG_TAG_MEMORY was set, this function can also try to +restore the memory and clear the #GST_BUFFER_FLAG_TAG_MEMORY again. + + + + + + + the #GstBufferPool + + + + the #GstBuffer to reset + + + + + + Sets the configuration of the pool. If the pool is already configured, and +the configuration hasn't changed, this function will return %TRUE. If the +pool is active, this method will return %FALSE and active configuration +will remain. Buffers allocated from this pool must be returned or else this +function will do nothing and return %FALSE. + +@config is a #GstStructure that contains the configuration parameters for +the pool. A default and mandatory set of parameters can be configured with +gst_buffer_pool_config_set_params(), gst_buffer_pool_config_set_allocator() +and gst_buffer_pool_config_add_option(). + +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_buffer_pool_get_config(). + +This function takes ownership of @config. + + + %TRUE when the configuration could be set. + + + + + a #GstBufferPool + + + + a #GstStructure + + + + + + Start the bufferpool. The default implementation will preallocate +min-buffers buffers and put them in the queue. + + + whether the pool could be started. + + + + + the #GstBufferPool + + + + + + Stop the bufferpool. the default implementation will free the +preallocated buffers. This function is called when all the buffers are +returned to the pool. + + + whether the pool could be stopped. + + + + + the #GstBufferPool + + + + + + Acquires a buffer from @pool. @buffer should point to a memory location that +can hold a pointer to the new buffer. When the pool is empty, this function +will by default block until a buffer is released into the pool again or when +the pool is set to flushing or deactivated. + +@params can contain optional parameters to influence the allocation. + + + a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is +inactive. + + + + + a #GstBufferPool + + + + a location for a #GstBuffer + + + + parameters. + + + + + + Gets a copy of the current configuration of the pool. This configuration +can be modified and used for the gst_buffer_pool_set_config() call. + + + a copy of the current configuration of @pool. + + + + + a #GstBufferPool + + + + + + Gets a %NULL terminated array of string with supported bufferpool options for +@pool. An option would typically be enabled with +gst_buffer_pool_config_add_option(). + + + a %NULL terminated array + of strings. + + + + + + + a #GstBufferPool + + + + + + Checks if the bufferpool supports @option. + + + %TRUE if the buffer pool contains @option. + + + + + a #GstBufferPool + + + + an option + + + + + + Checks if @pool is active. A pool can be activated with the +gst_buffer_pool_set_active() call. + + + %TRUE when the pool is active. + + + + + a #GstBufferPool + + + + + + Releases @buffer to @pool. @buffer should have previously been allocated from +@pool with gst_buffer_pool_acquire_buffer(). + +This function is usually called automatically when the last ref on @buffer +disappears. + + + + + + + a #GstBufferPool + + + + a #GstBuffer + + + + + + Controls the active state of @pool. When the pool is inactive, new calls to +gst_buffer_pool_acquire_buffer() will return with %GST_FLOW_FLUSHING. + +Activating the bufferpool will preallocate all resources in the pool based on +the configuration of the pool. + +Deactivating will free the resources again when there are no outstanding +buffers. When there are outstanding buffers, they will be freed as soon as +they are all returned to the pool. + + + %FALSE when the pool was not configured or when preallocation of the +buffers failed. + + + + + a #GstBufferPool + + + + the new active state + + + + + + Sets the configuration of the pool. If the pool is already configured, and +the configuration hasn't changed, this function will return %TRUE. If the +pool is active, this method will return %FALSE and active configuration +will remain. Buffers allocated from this pool must be returned or else this +function will do nothing and return %FALSE. + +@config is a #GstStructure that contains the configuration parameters for +the pool. A default and mandatory set of parameters can be configured with +gst_buffer_pool_config_set_params(), gst_buffer_pool_config_set_allocator() +and gst_buffer_pool_config_add_option(). + +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_buffer_pool_get_config(). + +This function takes ownership of @config. + + + %TRUE when the configuration could be set. + + + + + a #GstBufferPool + + + + a #GstStructure + + + + + + Enables or disables the flushing state of a @pool without freeing or +allocating buffers. + + + + + + + a #GstBufferPool + + + + whether to start or stop flushing + + + + + + the parent structure + + + + whether the pool is currently gathering back outstanding buffers + + + + + + + + + + + + + Additional flags to control the allocation of a buffer + + no flags + + + buffer is keyframe + + + when the bufferpool is empty, acquire_buffer +will by default block until a buffer is released into the pool again. Setting +this flag makes acquire_buffer return #GST_FLOW_EOS instead of blocking. + + + buffer is discont + + + last flag, subclasses can use private flags + starting from this value. + + + + Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the +allocation of the buffer. + +The default implementation ignores the @start and @stop members but other +implementations can use this extra information to decide what buffer to +return. + + + the format of @start and @stop + + + + the start position + + + + the stop position + + + + additional flags + + + + + + + + + + The #GstBufferPool class. + + + Object parent class + + + + + + + a %NULL terminated array + of strings. + + + + + + + a #GstBufferPool + + + + + + + + + + %TRUE when the configuration could be set. + + + + + a #GstBufferPool + + + + a #GstStructure + + + + + + + + + + whether the pool could be started. + + + + + the #GstBufferPool + + + + + + + + + + whether the pool could be stopped. + + + + + the #GstBufferPool + + + + + + + + + + a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is +inactive. + + + + + a #GstBufferPool + + + + a location for a #GstBuffer + + + + parameters. + + + + + + + + + + a #GstFlowReturn to indicate whether the allocation was +successful. + + + + + the #GstBufferPool + + + + a location for a #GstBuffer + + + + parameters. + + + + + + + + + + + + + + the #GstBufferPool + + + + the #GstBuffer to reset + + + + + + + + + + + + + + a #GstBufferPool + + + + a #GstBuffer + + + + + + + + + + + + + + the #GstBufferPool + + + + the #GstBuffer to free + + + + + + + + + + + + + + the #GstBufferPool + + + + + + + + + + + + + + the #GstBufferPool + + + + + + + + + + + + + + + + The different types of buffering methods. + + a small amount of data is buffered + + + the stream is being downloaded + + + the stream is being downloaded in a ringbuffer + + + the stream is a live stream + + + + The #GstBus is an object responsible for delivering #GstMessage packets in +a first-in first-out way from the streaming threads (see #GstTask) to the +application. + +Since the application typically only wants to deal with delivery of these +messages from one thread, the GstBus will marshall the messages between +different threads. This is important since the actual streaming of media +is done in another thread than the application. + +The GstBus provides support for #GSource based notifications. This makes it +possible to handle the delivery in the glib #GMainLoop. + +The #GSource callback function gst_bus_async_signal_func() can be used to +convert all bus messages into signal emissions. + +A message is posted on the bus with the gst_bus_post() method. With the +gst_bus_peek() and gst_bus_pop() methods one can look at or retrieve a +previously posted message. + +The bus can be polled with the gst_bus_poll() method. This methods blocks +up to the specified timeout value until one of the specified messages types +is posted on the bus. The application can then gst_bus_pop() the messages +from the bus to handle them. +Alternatively the application can register an asynchronous bus function +using gst_bus_add_watch_full() or gst_bus_add_watch(). This function will +install a #GSource in the default glib main loop and will deliver messages +a short while after they have been posted. Note that the main loop should +be running for the asynchronous callbacks. + +It is also possible to get messages from the bus without any thread +marshalling with the gst_bus_set_sync_handler() method. This makes it +possible to react to a message in the same thread that posted the +message on the bus. This should only be used if the application is able +to deal with messages from different threads. + +Every #GstPipeline has one bus. + +Note that a #GstPipeline will set its bus into flushing state when changing +from READY to NULL state. + + + Creates a new #GstBus instance. + + + a new #GstBus instance + + + + + A message has been posted on the bus. + + + + + + + the #GstBus + + + + the message that has been posted asynchronously + + + + + + A message has been posted on the bus. + + + + + + + the #GstBus + + + + the message that has been posted synchronously + + + + + + Adds a bus signal watch to the default main context with the default priority +( %G_PRIORITY_DEFAULT ). It is also possible to use a non-default +main context set up using g_main_context_push_thread_default() (before +one had to create a bus watch source and attach it to the desired main +context 'manually'). + +After calling this statement, the bus will emit the "message" signal for each +message posted on the bus. + +This function may be called multiple times. To clean up, the caller is +responsible for calling gst_bus_remove_signal_watch() as many times as this +function is called. + + + + + + + a #GstBus on which you want to receive the "message" signal + + + + + + Adds a bus signal watch to the default main context with the given @priority +(e.g. %G_PRIORITY_DEFAULT). It is also possible to use a non-default main +context set up using g_main_context_push_thread_default() +(before one had to create a bus watch source and attach it to the desired +main context 'manually'). + +After calling this statement, the bus will emit the "message" signal for each +message posted on the bus when the #GMainLoop is running. + +This function may be called multiple times. To clean up, the caller is +responsible for calling gst_bus_remove_signal_watch() as many times as this +function is called. + +There can only be a single bus watch per bus, you must remove any signal +watch before you can set another type of watch. + + + + + + + a #GstBus on which you want to receive the "message" signal + + + + The priority of the watch. + + + + + + Adds a bus watch to the default main context with the default priority +( %G_PRIORITY_DEFAULT ). It is also possible to use a non-default main +context set up using g_main_context_push_thread_default() (before +one had to create a bus watch source and attach it to the desired main +context 'manually'). + +This function is used to receive asynchronous messages in the main loop. +There can only be a single bus watch per bus, you must remove it before you +can set a new one. + +The bus watch will only work if a #GMainLoop is being run. + +The watch can be removed using gst_bus_remove_watch() or by returning %FALSE +from @func. If the watch was added to the default main context it is also +possible to remove the watch using g_source_remove(). + +The bus watch will take its own reference to the @bus, so it is safe to unref +@bus using gst_object_unref() after setting the bus watch. + + + The event source id or 0 if @bus already got an event source. + + + + + a #GstBus to create the watch for + + + + A function to call when a message is received. + + + + user data passed to @func. + + + + + + Adds a bus watch to the default main context with the given @priority (e.g. +%G_PRIORITY_DEFAULT). It is also possible to use a non-default main +context set up using g_main_context_push_thread_default() (before +one had to create a bus watch source and attach it to the desired main +context 'manually'). + +This function is used to receive asynchronous messages in the main loop. +There can only be a single bus watch per bus, you must remove it before you +can set a new one. + +The bus watch will only work if a #GMainLoop is being run. + +When @func is called, the message belongs to the caller; if you want to +keep a copy of it, call gst_message_ref() before leaving @func. + +The watch can be removed using gst_bus_remove_watch() or by returning %FALSE +from @func. If the watch was added to the default main context it is also +possible to remove the watch using g_source_remove(). + +The bus watch will take its own reference to the @bus, so it is safe to unref +@bus using gst_object_unref() after setting the bus watch. + + + The event source id or 0 if @bus already got an event source. + + + + + a #GstBus to create the watch for. + + + + The priority of the watch. + + + + A function to call when a message is received. + + + + user data passed to @func. + + + + the function to call when the source is removed. + + + + + + A helper #GstBusFunc that can be used to convert all asynchronous messages +into signals. + + + %TRUE + + + + + a #GstBus + + + + the #GstMessage received + + + + user data + + + + + + Create watch for this bus. The #GSource will be dispatched whenever +a message is on the bus. After the GSource is dispatched, the +message is popped off the bus and unreffed. + +As with other watches, there can only be one watch on the bus, including +any signal watch added with #gst_bus_add_signal_watch. + + + a #GSource that can be added to a #GMainLoop. + + + + + a #GstBus to create the watch for + + + + + + Instructs GStreamer to stop emitting the "sync-message" signal for this bus. +See gst_bus_enable_sync_message_emission() for more information. + +In the event that multiple pieces of code have called +gst_bus_enable_sync_message_emission(), the sync-message emissions will only +be stopped after all calls to gst_bus_enable_sync_message_emission() were +"cancelled" by calling this function. In this way the semantics are exactly +the same as gst_object_ref() that which calls enable should also call +disable. + + + + + + + a #GstBus on which you previously called +gst_bus_enable_sync_message_emission() + + + + + + Instructs GStreamer to emit the "sync-message" signal after running the bus's +sync handler. This function is here so that code can ensure that they can +synchronously receive messages without having to affect what the bin's sync +handler is. + +This function may be called multiple times. To clean up, the caller is +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 *synchronous* emission of +signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback +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 #GMainLoop. + + + + + + + a #GstBus on which you want to receive the "sync-message" signal + + + + + + Gets the file descriptor from the bus which can be used to get notified about +messages being available with functions like g_poll(), and allows integration +into other event loops based on file descriptors. +Whenever a message is available, the POLLIN / %G_IO_IN event is set. + +Warning: NEVER read or write anything to the returned fd but only use it +for getting notifications via g_poll() or similar and then use the normal +GstBus API, e.g. gst_bus_pop(). + + + + + + + A #GstBus + + + + A GPollFD to fill + + + + + + Checks if there are pending messages on the bus that +should be handled. + + + %TRUE if there are messages on the bus to be handled, %FALSE +otherwise. + + + + + a #GstBus to check + + + + + + Peeks the message on the top of the bus' queue. The message will remain +on the bus' message queue. + + + the #GstMessage that is on the + bus, or %NULL if the bus is empty. + + + + + a #GstBus + + + + + + Polls the bus for messages. Will block while waiting for messages to come. +You can specify a maximum time to poll with the @timeout parameter. If +@timeout is negative, this function will block indefinitely. + +All messages not in @events will be popped off the bus and will be ignored. +It is not possible to use message enums beyond #GST_MESSAGE_EXTENDED in the +@events mask + +Because poll is implemented using the "message" signal enabled by +gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the "message" +signal to be emitted for every message that poll sees. Thus a "message" +signal handler will see the same messages that this function sees -- neither +will steal messages from the other. + +This function will run a #GMainLoop from the default main context when +polling. + +You should never use this function, since it is pure evil. This is +especially true for GUI applications based on Gtk+ or Qt, but also for any +other non-trivial application that uses the GLib main loop. As this function +runs a GLib main loop, any callback attached to the default GLib main +context may be invoked. This could be timeouts, GUI events, I/O events etc.; +even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks +may do things you do not expect, e.g. destroy the main application window or +some other resource; change other application state; display a dialog and +run another main loop until the user clicks it away. In short, using this +function may add a lot of complexity to your code through unexpected +re-entrancy and unexpected changes to your application's state. + +For 0 timeouts use gst_bus_pop_filtered() instead of this function; for +other short timeouts use gst_bus_timed_pop_filtered(); everything else is +better handled by setting up an asynchronous bus watch and doing things +from there. + + + the message that was received, + or %NULL if the poll timed out. + + + + + a #GstBus + + + + a mask of #GstMessageType, representing the set of message types to +poll for (note special handling of extended message types below) + + + + the poll timeout, as a #GstClockTime, or #GST_CLOCK_TIME_NONE to poll +indefinitely. + + + + + + Gets a message from the bus. + + + the #GstMessage that is on the + bus, or %NULL if the bus is empty. + + + + + a #GstBus to pop + + + + + + Gets a message matching @type from the bus. Will discard all messages on +the bus that do not match @type and that have been posted before the first +message that does match @type. If there is no message matching @type on +the bus, all messages will be discarded. It is not possible to use message +enums beyond #GST_MESSAGE_EXTENDED in the @events mask. + + + the next #GstMessage matching + @type that is on the bus, or %NULL if the bus is empty or there + is no message matching @type. + + + + + a #GstBus to pop + + + + message types to take into account + + + + + + Posts a message on the given bus. Ownership of the message +is taken by the bus. + + + %TRUE if the message could be posted, %FALSE if the bus is flushing. + + + + + a #GstBus to post on + + + + the #GstMessage to post + + + + + + Removes a signal watch previously added with gst_bus_add_signal_watch(). + + + + + + + a #GstBus you previously added a signal watch to + + + + + + Removes an installed bus watch from @bus. + + + %TRUE on success or %FALSE if @bus has no event source. + + + + + a #GstBus to remove the watch from. + + + + + + If @flushing, flushes out and unrefs any messages queued in the bus. Releases +references to the message origin objects. Will flush future messages until +gst_bus_set_flushing() sets @flushing to %FALSE. + + + + + + + a #GstBus + + + + whether or not to flush the bus + + + + + + Sets the synchronous handler on the bus. The function will be called +every time a new message is posted on the bus. Note that the function +will be called in the same thread context as the posting object. This +function is usually only called by the creator of the bus. Applications +should handle messages asynchronously using the gst_bus watch and poll +functions. + +Before 1.16.3 it was not possible to replace an existing handler and +clearing an existing handler with %NULL was not thread-safe. + + + + + + + a #GstBus to install the handler on + + + + The handler function to install + + + + User data that will be sent to the handler function. + + + + called when @user_data becomes unused + + + + + + A helper #GstBusSyncHandler that can be used to convert all synchronous +messages into signals. + + + %GST_BUS_PASS + + + + + a #GstBus + + + + the #GstMessage received + + + + user data + + + + + + Gets a message from the bus, waiting up to the specified timeout. + +If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is +#GST_CLOCK_TIME_NONE, this function will block forever until a message was +posted on the bus. + + + the #GstMessage that is on the + bus after the specified timeout or %NULL if the bus is empty + after the timeout expired. + + + + + a #GstBus to pop + + + + a timeout + + + + + + Gets a message from the bus whose type matches the message type mask @types, +waiting up to the specified timeout (and discarding any messages that do not +match the mask provided). + +If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If +@timeout is #GST_CLOCK_TIME_NONE, this function will block forever until a +matching message was posted on the bus. + + + a #GstMessage matching the + filter in @types, or %NULL if no matching message was found on + the bus until the timeout expired. + + + + + a #GstBus to pop from + + + + a timeout in nanoseconds, or %GST_CLOCK_TIME_NONE to wait forever + + + + message types to take into account, %GST_MESSAGE_ANY for any type + + + + + + Enables async message delivery support for bus watches, +gst_bus_pop() and similar API. Without this only the +synchronous message handlers are called. + +This property is used to create the child element buses +in #GstBin. + + + + the parent structure + + + + + + + + + + + + A message has been posted on the bus. This signal is emitted from a +#GSource added to the mainloop. this signal will only be emitted when +there is a #GMainLoop running. + + + + + + the message that has been posted asynchronously + + + + + + A message has been posted on the bus. This signal is emitted from the +thread that posted the message so one has to be careful with locking. + +This signal will not be emitted by default, you have to call +gst_bus_enable_sync_message_emission() before. + + + + + + the message that has been posted synchronously + + + + + + + GStreamer bus class. + + + the parent class structure + + + + + + + + + + + the #GstBus + + + + the message that has been posted asynchronously + + + + + + + + + + + + + + the #GstBus + + + + the message that has been posted synchronously + + + + + + + + + + + + + The standard flags that a bus may have. + + The bus is currently dropping all messages + + + offset to define more flags + + + + Specifies the type of function passed to gst_bus_add_watch() or +gst_bus_add_watch_full(), which is called from the mainloop when a message +is available on the bus. + +The message passed to the function will be unreffed after execution of this +function so it should not be freed in the function. + +Note that this function is used as a #GSourceFunc which means that returning +%FALSE will remove the #GSource from the mainloop. + + + %FALSE if the event source should be removed. + + + + + the #GstBus that sent the message + + + + the #GstMessage + + + + user data that has been given, when registering the handler + + + + + + + + + Handler will be invoked synchronously, when a new message has been injected +into the bus. This function is mostly used internally. Only one sync handler +can be attached to a given bus. + +If the handler returns %GST_BUS_DROP, it should unref the message, else the +message should not be unreffed by the sync handler. + + + #GstBusSyncReply stating what to do with the message + + + + + the #GstBus that sent the message + + + + the #GstMessage + + + + user data that has been given, when registering the handler + + + + + + The result values for a GstBusSyncHandler. + + drop the message + + + pass the message to the async queue + + + pass message to async queue, continue if message is handled + + + + Just call the parent handler. This assumes that there is a variable +named parent_class that points to the (duh!) parent class. Note that +this macro is not to be used with things that return something, use +the _WITH_DEFAULT version for that + + + + the name of the class cast macro for the parent type + + + name of the function to call + + + arguments enclosed in '( )' + + + + + Same as GST_CALL_PARENT(), but in case there is no implementation, it +evaluates to @def_return. + + + + the name of the class cast macro for the parent type + + + name of the function to call + + + arguments enclosed in '( )' + + + default result + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets a flags word containing #GstCapsFlags flags set on this caps. + + + + a #GstCaps. + + + + + Gives the status of a specific flag on a caps. + + + + a #GstCaps. + + + the #GstCapsFlags to check. + + + + + Sets a caps flag on a caps. + + + + a #GstCaps. + + + the #GstCapsFlags to set. + + + + + Clears a caps flag. + + + + a #GstCaps. + + + the #GstCapsFlags to clear. + + + + + Checks if the number of structures in the given caps is exactly one. + + + + the #GstCaps instance to check + + + + + Gives access to the reference count field of the caps + + + + a #GstCaps + + + + + Gets the reference count value of the caps. + + + + a #GstCaps + + + + + Output a hexdump of @data in the given category. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + category to use + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + Output a hexdump of @data relating to the given @id in the given category. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + category to use + + + An identifier of the message provider + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + Output a hexdump of @data relating to the given object in the given +category. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + category to use + + + the #GObject the message belongs to + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + Check whether a GStreamer version equal to or greater than +major.minor.micro is present. + +Note: Since version 1.22 this macro can no longer be used to check that +current git version maps to the next version. So for instance, +GST_CHECK_VERSION(1, 22, 0) on a git checkout of the 1.21 development version +will expand to `FALSE`. + + + + a number indicating the major version + + + a number indicating the minor version + + + a number indicating the micro version + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Calculates a difference between two clock times as a #GstClockTimeDiff. +The difference is calculated as @e - @s. + + + + the first time + + + the second time + + + + + Casts to a clock entry + + + + the entry to cast + + + + + Gets the owner clock of the entry + Use gst_clock_id_get_clock() instead. + + + + the entry to query + + + + + Gets the interval of this periodic entry + + + + the entry to query + + + + + The status of the entry + + + + the entry to query + + + + + Gets the requested time of this entry + + + + the entry to query + + + + + Gets the type of the clock entry + + + + the entry to query + + + + + Gets the #GstClockFlags clock flags. + + + + the clock to query + + + + + + + + + + + + Tests if a given #GstClockTimeDiff of #gint64 represents a valid defined time. + + + + signed clock time to validate + + + + + Tests if a given #GstClockTime represents a valid defined time. + + + + clock time to validate + + + + + Constant to define an undefined clock time. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caps (capabilities) are lightweight refcounted objects describing media types. +They are composed of an array of #GstStructure. + +Caps are exposed on #GstPadTemplate to describe all possible types a +given pad can handle. They are also stored in the #GstRegistry along with +a description of the #GstElement. + +Caps are exposed on the element pads using the gst_pad_query_caps() pad +function. This function describes the possible types that the pad can +handle or produce at runtime. + +A #GstCaps can be constructed with the following code fragment: + +``` C + GstCaps *caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "I420", + "framerate", GST_TYPE_FRACTION, 25, 1, + "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, + "width", G_TYPE_INT, 320, + "height", G_TYPE_INT, 240, + NULL); +``` + +A #GstCaps is fixed when it has no fields with ranges or lists. Use +gst_caps_is_fixed() to test for fixed caps. Fixed caps can be used in a +caps event to notify downstream elements of the current media type. + +Various methods exist to work with the media types such as subtracting +or intersecting. + +Be aware that until 1.20 the #GstCaps / #GstStructure serialization into string +had limited support for nested #GstCaps / #GstStructure fields. It could only +support one level of nesting. Using more levels would lead to unexpected +behavior when using serialization features, such as gst_caps_to_string() or +gst_value_serialize() and their counterparts. + + + the parent type + + + + Creates a new #GstCaps that indicates that it is compatible with +any media format. + + + the new #GstCaps + + + + + Creates a new #GstCaps that is empty. That is, the returned +#GstCaps contains no media formats. +The #GstCaps is guaranteed to be writable. + + + the new #GstCaps + + + + + Creates a new #GstCaps that contains one #GstStructure with name +@media_type. + + + the new #GstCaps + + + + + the media type of the structure + + + + + + Creates a new #GstCaps and adds all the structures listed as +arguments. The list must be %NULL-terminated. The structures +are not copied; the returned #GstCaps owns the structures. + + + the new #GstCaps + + + + + the first structure to add + + + + additional structures to add + + + + + + Creates a new #GstCaps and adds all the structures listed as +arguments. The list must be %NULL-terminated. The structures +are not copied; the returned #GstCaps owns the structures. + + + the new #GstCaps + + + + + the first structure to add + + + + additional structures to add + + + + + + Creates a new #GstCaps that contains one #GstStructure. The +structure is defined by the arguments, which have the same format +as gst_structure_new(). + + + the new #GstCaps + + + + + the media type of the structure + + + + first field to set + + + + additional arguments + + + + + + Appends the structures contained in @caps2 to @caps1. The structures in +@caps2 are not copied -- they are transferred to @caps1, and then @caps2 is +freed. If either caps is ANY, the resulting caps will be ANY. + + + + + + + the #GstCaps that will be appended to + + + + the #GstCaps to append + + + + + + Appends @structure to @caps. The structure is not copied; @caps +becomes the owner of @structure. + + + + + + + the #GstCaps that will be appended to + + + + the #GstStructure to append + + + + + + Appends @structure with @features to @caps. The structure is not copied; @caps +becomes the owner of @structure. + + + + + + + the #GstCaps that will be appended to + + + + the #GstStructure to append + + + + the #GstCapsFeatures to append + + + + + + Tries intersecting @caps1 and @caps2 and reports whether the result would not +be empty + + + %TRUE if intersection would be not empty + + + + + a #GstCaps to intersect + + + + a #GstCaps to intersect + + + + + + Creates a new #GstCaps as a copy of the old @caps. The new caps will have a +refcount of 1, owned by the caller. The structures are copied as well. + +Note that this function is the semantic equivalent of a gst_caps_ref() +followed by a gst_caps_make_writable(). If you only want to hold on to a +reference to the data, you should use gst_caps_ref(). + + + the new #GstCaps + + + + + a #GstCaps. + + + + + + Creates a new #GstCaps and appends a copy of the nth structure +contained in @caps. + + + the new #GstCaps + + + + + the #GstCaps to copy + + + + the nth structure to copy + + + + + + Calls the provided function once for each structure and caps feature in the +#GstCaps. In contrast to gst_caps_foreach(), the function may modify the +structure and features. In contrast to gst_caps_filter_and_map_in_place(), +the structure and features are removed from the caps if %FALSE is returned +from the function. +The caps must be mutable. + + + + + + + a #GstCaps + + + + a function to call for each field + + + + private data + + + + + + Modifies the given @caps into a representation with only fixed +values. First the caps will be truncated and then the first structure will be +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(). + +Note that it is not guaranteed that the returned caps have exactly one +structure. If @caps are empty caps then the 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 + + + + + a #GstCaps to fixate + + + + + + Calls the provided function once for each structure and caps feature in the +#GstCaps. The function must not modify the fields. +Also see gst_caps_map_in_place() and gst_caps_filter_and_map_in_place(). + + + %TRUE if the supplied function returns %TRUE for each call, +%FALSE otherwise. + + + + + a #GstCaps + + + + a function to call for each field + + + + private data + + + + + + Finds the features in @caps at @index, and returns it. + +WARNING: This function takes a `const GstCaps *`, but returns a +non-const `GstCapsFeatures *`. This is for programming convenience -- +the caller should be aware that features inside a constant +#GstCaps should not be modified. However, if you know the caps +are writable, either because you have just copied them or made +them writable with gst_caps_make_writable(), you may modify the +features returned in the usual way, e.g. with functions like +gst_caps_features_add(). + + + a pointer to the #GstCapsFeatures + corresponding to @index + + + + + a #GstCaps + + + + the index of the structure + + + + + + Gets the number of structures contained in @caps. + + + the number of structures that @caps contains + + + + + a #GstCaps + + + + + + Finds the structure in @caps at @index, and returns it. + +WARNING: This function takes a `const GstCaps *`, but returns a +non-const `GstStructure *`. This is for programming convenience -- +the caller should be aware that structures inside a constant +#GstCaps should not be modified. However, if you know the caps +are writable, either because you have just copied them or made +them writable with gst_caps_make_writable(), you may modify the +structure returned in the usual way, e.g. with functions like +gst_structure_set(). + + + a pointer to the #GstStructure corresponding + to @index + + + + + a #GstCaps + + + + the index of the structure + + + + + + Creates a new #GstCaps that contains all the formats that are common +to both @caps1 and @caps2. Defaults to %GST_CAPS_INTERSECT_ZIG_ZAG mode. + + + the new #GstCaps + + + + + a #GstCaps to intersect + + + + a #GstCaps to intersect + + + + + + Creates a new #GstCaps that contains all the formats that are common +to both @caps1 and @caps2, the order is defined by the #GstCapsIntersectMode +used. + + + the new #GstCaps + + + + + a #GstCaps to intersect + + + + a #GstCaps to intersect + + + + The intersection algorithm/mode to use + + + + + + A given #GstCaps structure is always compatible with another if +every media format that is in the first is also contained in the +second. That is, @caps1 is a subset of @caps2. + + + %TRUE if @caps1 is a subset of @caps2. + + + + + the #GstCaps to test + + + + the #GstCaps to test + + + + + + Determines if @caps represents any media format. + + + %TRUE if @caps represents any format. + + + + + the #GstCaps to test + + + + + + Determines if @caps represents no media formats. + + + %TRUE if @caps represents no formats. + + + + + the #GstCaps to test + + + + + + Checks if the given caps represent the same set of caps. + + + %TRUE if both caps are equal. + + + + + a #GstCaps + + + + another #GstCaps + + + + + + Tests if two #GstCaps are equal. This function only works on fixed +#GstCaps. + + + %TRUE if the arguments represent the same format + + + + + the #GstCaps to test + + + + the #GstCaps to test + + + + + + Fixed #GstCaps describe exactly one format, that is, they have exactly +one structure, and each field in the structure describes a fixed type. +Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST. + + + %TRUE if @caps is fixed + + + + + the #GstCaps to test + + + + + + Checks if the given caps are exactly the same set of caps. + + + %TRUE if both caps are strictly equal. + + + + + a #GstCaps + + + + another #GstCaps + + + + + + Checks if all caps represented by @subset are also represented by @superset. + + + %TRUE if @subset is a subset of @superset + + + + + a #GstCaps + + + + a potentially greater #GstCaps + + + + + + Checks if @structure is a subset of @caps. See gst_caps_is_subset() +for more information. + + + %TRUE if @structure is a subset of @caps + + + + + a #GstCaps + + + + a potential #GstStructure subset of @caps + + + + + + Checks if @structure is a subset of @caps. See gst_caps_is_subset() +for more information. + + + %TRUE if @structure is a subset of @caps + + + + + a #GstCaps + + + + a potential #GstStructure subset of @caps + + + + a #GstCapsFeatures for @structure + + + + + + Calls the provided function once for each structure and caps feature in the +#GstCaps. In contrast to gst_caps_foreach(), the function may modify but not +delete the structures and features. The caps must be mutable. + + + %TRUE if the supplied function returns %TRUE for each call, +%FALSE otherwise. + + + + + a #GstCaps + + + + a function to call for each field + + + + private data + + + + + + Appends the structures contained in @caps2 to @caps1 if they are not yet +expressed by @caps1. The structures in @caps2 are not copied -- they are +transferred to a writable copy of @caps1, and then @caps2 is freed. +If either caps is ANY, the resulting caps will be ANY. + + + the merged caps. + + + + + the #GstCaps that will take the new entries + + + + the #GstCaps to merge in + + + + + + Appends @structure to @caps if it is not already expressed by @caps. + + + the merged caps. + + + + + the #GstCaps to merge into + + + + the #GstStructure to merge + + + + + + Appends @structure with @features to @caps if its not already expressed by @caps. + + + the merged caps. + + + + + the #GstCaps to merge into + + + + the #GstStructure to merge + + + + the #GstCapsFeatures to merge + + + + + + Returns a #GstCaps that represents the same set of formats as +@caps, but contains no lists. Each list is expanded into separate +#GstStructure. + +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(). + + + the normalized #GstCaps + + + + + a #GstCaps to normalize + + + + + + Adds 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. + + + + + + + the #GstCaps to remove from + + + + Index of the structure to remove + + + + + + Converts @caps to a string representation. This string representation can be +converted back to a #GstCaps by gst_caps_from_string(). + +This prints the caps in human readable form. + +This version of the caps serialization function introduces support for nested +structures and caps but the resulting strings won't be parsable with +GStreamer prior to 1.20 unless #GST_SERIALIZE_FLAG_BACKWARD_COMPAT is passed +as @flag. + + + a newly allocated string representing @caps. + + + + + a #GstCaps + + + + a #GstSerializeFlags + + + + + + Sets the @features for the structure at @index. + + + + + + + a #GstCaps + + + + the index of the structure + + + + the #GstCapsFeatures to set + + + + + + Sets the @features for all the structures of @caps. + + + + + + + a #GstCaps + + + + the #GstCapsFeatures to set + + + + + + Sets fields in a #GstCaps. The arguments must be passed in the same +manner as gst_structure_set(), and be %NULL-terminated. + + + + + + + the #GstCaps to set + + + + first field to set + + + + additional parameters + + + + + + Sets fields in a #GstCaps. The arguments must be passed in the same +manner as gst_structure_set(), and be %NULL-terminated. + + + + + + + the #GstCaps to set + + + + first field to set + + + + additional parameters + + + + + + Sets the given @field on all structures of @caps to the given @value. +This is a convenience function for calling gst_structure_set_value() on +all structures of @caps. + + + + + + + a writable caps + + + + name of the field to set + + + + value to set the field to + + + + + + Converts the given @caps into a representation that represents the +same set of formats, but in a simpler form. Component structures that are +identical are merged. Component structures that have values that can be +merged are also merged. + +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(). + +This method does not preserve the original order of @caps. + + + The simplified caps. + + + + + a #GstCaps to simplify + + + + + + Retrieves the structure with the given index from the list of structures +contained in @caps. The caller becomes the owner of the returned structure. + + + a pointer to the #GstStructure + corresponding to @index. + + + + + the #GstCaps to retrieve from + + + + Index of the structure to retrieve + + + + + + Subtracts the @subtrahend from the @minuend. +> This function does not work reliably if optional properties for caps +> are included on one caps and omitted on the other. + + + the resulting caps + + + + + #GstCaps to subtract from + + + + #GstCaps to subtract + + + + + + Converts @caps to a string representation. This string representation +can be converted back to a #GstCaps by gst_caps_from_string(). + +For debugging purposes its easier to do something like this: + +``` C +GST_LOG ("caps are %" GST_PTR_FORMAT, caps); +``` + +This prints the caps in human readable form. + +The implementation of serialization up to 1.20 would lead to unexpected results +when there were nested #GstCaps / #GstStructure deeper than one level. + + + a newly allocated string representing @caps. + + + + + a #GstCaps + + + + + + Discards all but the first structure from @caps. Useful when +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(). + +Note that it is not guaranteed that the returned caps have exactly one +structure. If @caps is any or empty caps then the returned caps will be +the same and contain no structure at all. + + + truncated caps + + + + + the #GstCaps to truncate + + + + + + Unrefs a #GstCaps and frees all its structures and the +structures' values when the refcount reaches 0. + + + + + + + a #GstCaps. + + + + + + Converts @caps from a string representation. + +The implementation of serialization up to 1.20 would lead to unexpected results +when there were nested #GstCaps / #GstStructure deeper than one level. + + + a newly allocated #GstCaps + + + + + a string to convert to #GstCaps + + + + + + 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 +for additional features for a specific #GstStructure. Caps structures with +the same name but with a non-equal set of caps features are not compatible. +If a pad supports multiple sets of features it has to add multiple equal +structures with different feature sets to the caps. + +Empty #GstCapsFeatures are equivalent with the #GstCapsFeatures that only +contain #GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY. ANY #GstCapsFeatures as +created by gst_caps_features_new_any() are equal to any other #GstCapsFeatures +and can be used to specify that any #GstCapsFeatures would be supported, e.g. +for elements that don't touch buffer memory. #GstCaps with ANY #GstCapsFeatures +are considered non-fixed and during negotiation some #GstCapsFeatures have +to be selected. + +Examples for caps features would be the requirement of a specific #GstMemory +types or the requirement of having a specific #GstMeta on the buffer. Features +are given as a string of the format `memory:GstMemoryTypeName` or +`meta:GstMetaAPIName`. + + + Creates a new #GstCapsFeatures with the given features. +The last argument must be %NULL. + + + a new, empty #GstCapsFeatures + + + + + name of first feature to set + + + + additional features + + + + + + Creates a new, ANY #GstCapsFeatures. This will be equal +to any other #GstCapsFeatures but caps with these are +unfixed. + + + a new, ANY #GstCapsFeatures + + + + + Creates a new, empty #GstCapsFeatures. + + + a new, empty #GstCapsFeatures + + + + + Creates a new #GstCapsFeatures with the given features. +The last argument must be 0. + + + a new, empty #GstCapsFeatures + + + + + name of first feature to set + + + + additional features + + + + + + Creates a new #GstCapsFeatures with the given features. + + + a new, empty #GstCapsFeatures + + + + + name of first feature to set + + + + variable argument list + + + + + + Creates a new #GstCapsFeatures with a single feature. + + + a new #GstCapsFeatures + + + + + The feature + + + + + + Creates a new #GstCapsFeatures with the given features. + + + a new, empty #GstCapsFeatures + + + + + name of first feature to set + + + + variable argument list + + + + + + Adds @feature to @features. + + + + + + + a #GstCapsFeatures. + + + + a feature. + + + + + + Adds @feature to @features. + + + + + + + a #GstCapsFeatures. + + + + a feature. + + + + + + Checks if @features contains @feature. + + + %TRUE if @features contains @feature. + + + + + a #GstCapsFeatures. + + + + a feature + + + + + + Checks if @features contains @feature. + + + %TRUE if @features contains @feature. + + + + + a #GstCapsFeatures. + + + + a feature + + + + + + Duplicates a #GstCapsFeatures and all its values. + + + a new #GstCapsFeatures. + + + + + a #GstCapsFeatures to duplicate + + + + + + Frees a #GstCapsFeatures and all its values. The caps features must not +have a parent when this function is called. + + + + + + + the #GstCapsFeatures to free + + + + + + Returns the @i-th feature of @features. + + + The @i-th feature of @features. + + + + + a #GstCapsFeatures. + + + + index of the feature + + + + + + Returns the @i-th feature of @features. + + + The @i-th feature of @features. + + + + + a #GstCapsFeatures. + + + + index of the feature + + + + + + Returns the number of features in @features. + + + The number of features in @features. + + + + + a #GstCapsFeatures. + + + + + + Checks if @features is %GST_CAPS_FEATURES_ANY. + + + %TRUE if @features is %GST_CAPS_FEATURES_ANY. + + + + + a #GstCapsFeatures. + + + + + + Checks if @features1 and @features2 are equal. + + + %TRUE if @features1 and @features2 are equal. + + + + + a #GstCapsFeatures. + + + + a #GstCapsFeatures. + + + + + + Removes @feature from @features. + + + + + + + a #GstCapsFeatures. + + + + a feature. + + + + + + Removes @feature from @features. + + + + + + + a #GstCapsFeatures. + + + + a feature. + + + + + + Sets the parent_refcount field of #GstCapsFeatures. This field is used to +determine whether a caps features is mutable or not. This function should only be +called by code implementing parent objects of #GstCapsFeatures, as described in +[the MT refcounting design document](additional/design/MT-refcounting.md). + + + %TRUE if the parent refcount could be set. + + + + + a #GstCapsFeatures + + + + a pointer to the parent's refcount + + + + + + Converts @features to a human-readable string representation. + +For debugging purposes its easier to do something like this: + +``` C +GST_LOG ("features is %" GST_PTR_FORMAT, features); +``` + +This prints the features in human readable form. + + + a pointer to string allocated by g_malloc(). + + + + + a #GstCapsFeatures + + + + + + Creates a #GstCapsFeatures from a string representation. + + + a new #GstCapsFeatures or + %NULL when the string could not be parsed. + + + + + a string representation of a #GstCapsFeatures. + + + + + + + A function that will be called in gst_caps_filter_and_map_in_place(). +The function may modify @features and @structure, and both will be +removed from the caps if %FALSE is returned. + + + %TRUE if the features and structure should be preserved, +%FALSE if it should be removed. + + + + + the #GstCapsFeatures + + + + the #GstStructure + + + + user data + + + + + + Extra flags for a caps. + + Caps has no specific content, but can contain + anything. + + + + A function that will be called in gst_caps_foreach(). The function may +not modify @features or @structure. + + + %TRUE if the foreach operation should continue, %FALSE if +the foreach operation should stop with %FALSE. + + + + + the #GstCapsFeatures + + + + the #GstStructure + + + + user data + + + + + + Modes of caps intersection + +%GST_CAPS_INTERSECT_ZIG_ZAG tries to preserve overall order of both caps +by iterating on the caps' structures as the following matrix shows: + +``` + caps1 + +------------- + | 1 2 4 7 +caps2 | 3 5 8 10 + | 6 9 11 12 +``` + +Used when there is no explicit precedence of one caps over the other. e.g. +tee's sink pad getcaps function, it will probe its src pad peers' for their +caps and intersect them with this mode. + +%GST_CAPS_INTERSECT_FIRST is useful when an element wants to preserve +another element's caps priority order when intersecting with its own caps. +Example: If caps1 is `[A, B, C]` and caps2 is `[E, B, D, A]`, the result +would be `[A, B]`, maintaining the first caps priority on the intersection. + + Zig-zags over both caps. + + + Keeps the first caps order. + + + + A function that will be called in gst_caps_map_in_place(). The function +may modify @features and @structure. + + + %TRUE if the map operation should continue, %FALSE if +the map operation should stop with %FALSE. + + + + + the #GstCapsFeatures + + + + the #GstStructure + + + + user data + + + + + + This interface abstracts handling of property sets for elements with +children. Imagine elements such as mixers or polyphonic generators. They all +have multiple #GstPad or some kind of voice objects. Another use case are +container elements like #GstBin. +The element implementing the interface acts as a parent for those child +objects. + +By implementing this interface the child properties can be accessed from the +parent element by using gst_child_proxy_get() and gst_child_proxy_set(). + +Property names are written as `child-name::property-name`. The whole naming +scheme is recursive. Thus `child1::child2::property` is valid too, if +`child1` and `child2` implement the #GstChildProxy interface. + + + Emits the #GstChildProxy::child-added signal. + + + + + + + the parent object + + + + the newly added child + + + + the name of the new child + + + + + + Emits the #GstChildProxy::child-removed signal. + + + + + + + the parent object + + + + the removed child + + + + the name of the old child + + + + + + Fetches a child by its number. + + + the child object or %NULL if + not found (index too high). + + + + + the parent object to get the child from + + + + the child's position in the child list + + + + + + Looks up a child element by the given name. + +This virtual method has a default implementation that uses #GstObject +together with gst_object_get_name(). If the interface is to be used with +#GObjects, this methods needs to be overridden. + + + the child object or %NULL if + not found. + + + + + the parent object to get the child from + + + + the child's name + + + + + + Gets the number of child objects this parent contains. + + + the number of child objects + + + + + the parent object + + + + + + Emits the #GstChildProxy::child-added signal. + + + + + + + the parent object + + + + the newly added child + + + + the name of the new child + + + + + + Emits the #GstChildProxy::child-removed signal. + + + + + + + the parent object + + + + the removed child + + + + the name of the old child + + + + + + Gets properties of the parent object and its children. + + + + + + + the parent object + + + + name of the first property to get + + + + return location for the first property, followed optionally by more name/return location pairs, followed by %NULL + + + + + + Fetches a child by its number. + + + the child object or %NULL if + not found (index too high). + + + + + the parent object to get the child from + + + + the child's position in the child list + + + + + + Looks up a child element by the given name. + +This virtual method has a default implementation that uses #GstObject +together with gst_object_get_name(). If the interface is to be used with +#GObjects, this methods needs to be overridden. + + + the child object or %NULL if + not found. + + + + + the parent object to get the child from + + + + the child's name + + + + + + Looks up a child element by the given full-path name. + +Similar to gst_child_proxy_get_child_by_name(), this method +searches and returns a child given a name. The difference is that +this method allows a hierarchical path in the form of +child1::child2::child3. In the later example this method would +return a reference to child3, if found. The name should be made of +element names only and should not contain any property names. + + + the child object or %NULL if + not found. + + + + + the parent object to get the child from + + + + the full-path child's name + + + + + + Gets the number of child objects this parent contains. + + + the number of child objects + + + + + the parent object + + + + + + Gets a single property using the GstChildProxy mechanism. +You are responsible for freeing it by calling g_value_unset() + + + + + + + object to query + + + + name of the property + + + + a #GValue that should take the result. + + + + + + Gets properties of the parent object and its children. + + + + + + + the object to query + + + + name of the first property to get + + + + return location for the first property, followed optionally by more name/return location pairs, followed by %NULL + + + + + + Looks up which object and #GParamSpec would be effected by the given @name. + + + %TRUE if @target and @pspec could be found. %FALSE otherwise. In that +case the values for @pspec and @target are not modified. Unref @target after +usage. For plain #GObject @target is the same as @object. + + + + + child proxy object to lookup the property in + + + + name of the property to look up + + + + pointer to a #GObject that + takes the real object to set property on + + + + pointer to take the #GParamSpec + describing the property + + + + + + Sets properties of the parent object and its children. + + + + + + + the parent object + + + + name of the first property to set + + + + value for the first property, followed optionally by more name/value pairs, followed by %NULL + + + + + + Sets a single property using the GstChildProxy mechanism. + + + + + + + the parent object + + + + name of the property to set + + + + new #GValue for the property + + + + + + Sets properties of the parent object and its children. + + + + + + + the parent object + + + + name of the first property to set + + + + value for the first property, followed optionally by more name/value pairs, followed by %NULL + + + + + + Will be emitted after the @object was added to the @child_proxy. + + + + + + the #GObject that was added + + + + the name of the new child + + + + + + Will be emitted after the @object was removed from the @child_proxy. + + + + + + the #GObject that was removed + + + + the name of the old child + + + + + + + #GstChildProxy interface. + + + parent interface type. + + + + + + + the child object or %NULL if + not found. + + + + + the parent object to get the child from + + + + the child's name + + + + + + + + + + the child object or %NULL if + not found (index too high). + + + + + the parent object to get the child from + + + + the child's position in the child list + + + + + + + + + + the number of child objects + + + + + the parent object + + + + + + + + + + + + + + the parent object + + + + the newly added child + + + + the name of the new child + + + + + + + + + + + + + + the parent object + + + + the removed child + + + + the name of the old child + + + + + + + + + + + + + GStreamer uses a global clock to synchronize the plugins in a pipeline. +Different clock implementations are possible by implementing this abstract +base class or, more conveniently, by subclassing #GstSystemClock. + +The #GstClock returns a monotonically increasing time with the method +gst_clock_get_time(). Its accuracy and base time depend on the specific +clock implementation but time is always expressed in nanoseconds. Since the +baseline of the clock is undefined, the clock time returned is not +meaningful in itself, what matters are the deltas between two clock times. +The time returned by a clock is called the absolute time. + +The pipeline uses the clock to calculate the running time. Usually all +renderers synchronize to the global clock using the buffer timestamps, the +#GST_EVENT_SEGMENT events and the element's base time, see #GstPipeline. + +A clock implementation can support periodic and single shot clock +notifications both synchronous and asynchronous. + +One first needs to create a #GstClockID for the periodic or single shot +notification using gst_clock_new_single_shot_id() or +gst_clock_new_periodic_id(). + +To perform a blocking wait for the specific time of the #GstClockID use +gst_clock_id_wait(). To receive a callback when the specific time is reached +in the clock use gst_clock_id_wait_async(). Both these calls can be +interrupted with the gst_clock_id_unschedule() call. If the blocking wait is +unscheduled a return value of #GST_CLOCK_UNSCHEDULED is returned. + +Periodic callbacks scheduled async will be repeatedly called automatically +until they are unscheduled. To schedule a sync periodic callback, +gst_clock_id_wait() should be called repeatedly. + +The async callbacks can happen from any thread, either provided by the core +or from a streaming thread. The application should be prepared for this. + +A #GstClockID that has been unscheduled cannot be used again for any wait +operation, a new #GstClockID should be created and the old unscheduled one +should be destroyed with gst_clock_id_unref(). + +It is possible to perform a blocking wait on the same #GstClockID from +multiple threads. However, registering the same #GstClockID for multiple +async notifications is not possible, the callback will only be called for +the thread registering the entry last. + +None of the wait operations unref the #GstClockID, the owner is responsible +for unreffing the ids itself. This holds for both periodic and single shot +notifications. The reason being that the owner of the #GstClockID has to +keep a handle to the #GstClockID to unblock the wait on FLUSHING events or +state changes and if the entry would be unreffed automatically, the handle +might become invalid without any notification. + +These clock operations do not operate on the running time, so the callbacks +will also occur when not in PLAYING state as if the clock just keeps on +running. Some clocks however do not progress when the element that provided +the clock is not PLAYING. + +When a clock has the #GST_CLOCK_FLAG_CAN_SET_MASTER flag set, it can be +slaved to another #GstClock with gst_clock_set_master(). The clock will +then automatically be synchronized to this master clock by repeatedly +sampling the master clock and the slave clock and recalibrating the slave +clock with gst_clock_set_calibration(). This feature is mostly useful for +plugins that have an internal clock but must operate with another clock +selected by the #GstPipeline. They can track the offset and rate difference +of their internal clock relative to the master clock by using the +gst_clock_get_calibration() function. + +The master/slave synchronisation can be tuned with the #GstClock:timeout, +#GstClock:window-size and #GstClock:window-threshold properties. +The #GstClock:timeout property defines the interval to sample the master +clock and run the calibration functions. #GstClock:window-size defines the +number of samples to use when calibrating and #GstClock:window-threshold +defines the minimum number of samples before the calibration is performed. + + + Compares the two #GstClockID instances. This function can be used +as a GCompareFunc when sorting ids. + + + negative value if `a < b`; zero if `a = b`; positive value if `a > b` + + + + + A #GstClockID + + + + A #GstClockID to compare with + + + + + + This function returns the underlying clock. + + + a #GstClock or %NULL when the + underlying clock has been freed. + + + + + a #GstClockID + + + + + + Gets the time of the clock ID + + + the time of the given clock id. + + + + + The #GstClockID to query + + + + + + Increases the refcount of given @id. + + + The same #GstClockID with increased refcount. + + + + + The #GstClockID to ref + + + + + + Unrefs given @id. When the refcount reaches 0 the +#GstClockID will be freed. + + + + + + + The #GstClockID to unref + + + + + + Cancels an outstanding request with @id. This can either +be an outstanding async notification or a pending sync notification. +After this call, @id cannot be used anymore to receive sync or +async notifications, you need to create a new #GstClockID. + + + + + + + The id to unschedule + + + + + + This function returns whether @id uses @clock as the underlying clock. +@clock can be NULL, in which case the return value indicates whether +the underlying clock has been freed. If this is the case, the @id is +no longer usable and should be freed. + + + whether the clock @id uses the same underlying #GstClock @clock. + + + + + a #GstClockID to check + + + + a #GstClock to compare against + + + + + + Performs a blocking wait on @id. +@id should have been created with gst_clock_new_single_shot_id() +or gst_clock_new_periodic_id() and should not have been unscheduled +with a call to gst_clock_id_unschedule(). + +If the @jitter argument is not %NULL and this function returns #GST_CLOCK_OK +or #GST_CLOCK_EARLY, it will contain the difference +against the clock and the time of @id when this method was +called. +Positive values indicate how late @id was relative to the clock +(in which case this function will return #GST_CLOCK_EARLY). +Negative values indicate how much time was spent waiting on the clock +before this function returned. + + + the result of the blocking wait. #GST_CLOCK_EARLY will be returned +if the current clock time is past the time of @id, #GST_CLOCK_OK if +@id was scheduled in time. #GST_CLOCK_UNSCHEDULED if @id was +unscheduled with gst_clock_id_unschedule(). + + + + + The #GstClockID to wait on + + + + a pointer that will contain the jitter, + can be %NULL. + + + + + + Registers a callback on the given #GstClockID @id with the given +function and user_data. When passing a #GstClockID with an invalid +time to this function, the callback will be called immediately +with a time set to %GST_CLOCK_TIME_NONE. The callback will +be called when the time of @id has been reached. + +The callback @func can be invoked from any thread, either provided by the +core or from a streaming thread. The application should be prepared for this. + + + the result of the non blocking wait. + + + + + a #GstClockID to wait on + + + + The callback function + + + + User data passed in the callback + + + + #GDestroyNotify for user_data + + + + + + Change the resolution of the clock. Not all values might +be acceptable. + + + the new resolution + + + + + the #GstClock + + + + the previous resolution + + + + the new resolution + + + + + + Gets the current internal time of the given clock. The time is returned +unadjusted for the offset and the rate. + + + the internal time of the clock. Or %GST_CLOCK_TIME_NONE when +given invalid input. + + + + + a #GstClock to query + + + + + + Gets the accuracy of the clock. The accuracy of the clock is the granularity +of the values returned by gst_clock_get_time(). + + + the resolution of the clock in units of #GstClockTime. + + + + + a #GstClock + + + + + + Unblock a blocking or async wait operation. + + + + + + + the #GstClock + + + + the entry to unschedule + + + + + + Perform a blocking wait on the given #GstClockEntry and return +the jitter. + + + the result of the blocking wait. #GST_CLOCK_EARLY will be returned +if the current clock time is past the time of @id, #GST_CLOCK_OK if +@id was scheduled in time. #GST_CLOCK_UNSCHEDULED if @id was +unscheduled with gst_clock_id_unschedule(). + + + + + the #GstClock + + + + the entry to wait on + + + + a pointer that will contain the jitter + + + + + + Perform an asynchronous wait on the given #GstClockEntry. + + + the result of the non blocking wait. + + + + + the #GstClock + + + + the entry to wait on + + + + + + The time @master of the master clock and the time @slave of the slave +clock are added to the list of observations. If enough observations +are available, a linear regression algorithm is run on the +observations and @clock is recalibrated. + +If this functions returns %TRUE, @r_squared will contain the +correlation coefficient of the interpolation. A value of 1.0 +means a perfect regression was performed. This value can +be used to control the sampling frequency of the master and slave +clocks. + + + %TRUE if enough observations were added to run the +regression algorithm. + + + + + a #GstClock + + + + a time on the slave + + + + a time on the master + + + + a pointer to hold the result + + + + + + Add a clock observation to the internal slaving algorithm the same as +gst_clock_add_observation(), and return the result of the master clock +estimation, without updating the internal calibration. + +The caller can then take the results and call gst_clock_set_calibration() +with the values, or some modified version of them. + + + %TRUE if enough observations were added to run the +regression algorithm. + + + + + a #GstClock + + + + a time on the slave + + + + a time on the master + + + + a pointer to hold the result + + + + a location to store the internal time + + + + a location to store the external time + + + + a location to store the rate numerator + + + + a location to store the rate denominator + + + + + + Converts the given @internal clock time to the external time, adjusting for the +rate and reference time set with gst_clock_set_calibration() and making sure +that the returned time is increasing. This function should be called with the +clock's OBJECT_LOCK held and is mainly used by clock subclasses. + +This function is the reverse of gst_clock_unadjust_unlocked(). + + + the converted time of the clock. + + + + + a #GstClock to use + + + + a clock time + + + + + + Converts the given @internal_target clock time to the external time, +using the passed calibration parameters. This function performs the +same calculation as gst_clock_adjust_unlocked() when called using the +current calibration parameters, but doesn't ensure a monotonically +increasing result as gst_clock_adjust_unlocked() does. + +Note: The @clock parameter is unused and can be NULL + + + the converted time of the clock. + + + + + a #GstClock to use + + + + a clock time + + + + a reference internal time + + + + a reference external time + + + + the numerator of the rate of the clock relative to its + internal time + + + + the denominator of the rate of the clock + + + + + + Gets the internal rate and reference time of @clock. See +gst_clock_set_calibration() for more information. + +@internal, @external, @rate_num, and @rate_denom can be left %NULL if the +caller is not interested in the values. + + + + + + + a #GstClock + + + + a location to store the internal time + + + + a location to store the external time + + + + a location to store the rate numerator + + + + a location to store the rate denominator + + + + + + Gets the current internal time of the given clock. The time is returned +unadjusted for the offset and the rate. + + + the internal time of the clock. Or %GST_CLOCK_TIME_NONE when +given invalid input. + + + + + a #GstClock to query + + + + + + Gets the master clock that @clock is slaved to or %NULL when the clock is +not slaved to any master clock. + + + a master #GstClock or %NULL + when this clock is not slaved to a master clock. + + + + + a #GstClock + + + + + + Gets the accuracy of the clock. The accuracy of the clock is the granularity +of the values returned by gst_clock_get_time(). + + + the resolution of the clock in units of #GstClockTime. + + + + + a #GstClock + + + + + + Gets the current time of the given clock. The time is always +monotonically increasing and adjusted according to the current +offset and rate. + + + the time of the clock. Or %GST_CLOCK_TIME_NONE when +given invalid input. + + + + + a #GstClock to query + + + + + + Gets the amount of time that master and slave clocks are sampled. + + + the interval between samples. + + + + + a #GstClock + + + + + + Checks if the clock is currently synced, by looking at whether +%GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC is set. + + + %TRUE if the clock is currently synced + + + + + a GstClock + + + + + + Gets an ID from @clock to trigger a periodic notification. +The periodic notifications will start at time @start_time and +will then be fired with the given @interval. + + + a #GstClockID that can be used to request the + time notification. + + + + + The #GstClockID to get a periodic notification id from + + + + the requested start time + + + + the requested interval + + + + + + Gets a #GstClockID from @clock to trigger a single shot +notification at the requested time. + + + a #GstClockID that can be used to request the + time notification. + + + + + The #GstClockID to get a single shot notification from + + + + the requested time + + + + + + Reinitializes the provided periodic @id to the provided start time and +interval. Does not modify the reference count. + + + %TRUE if the GstClockID could be reinitialized to the provided +@time, else %FALSE. + + + + + a #GstClock + + + + a #GstClockID + + + + the requested start time + + + + the requested interval + + + + + + Adjusts the rate and time of @clock. A rate of 1/1 is the normal speed of +the clock. Values bigger than 1/1 make the clock go faster. + +@internal and @external are calibration parameters that arrange that +gst_clock_get_time() should have been @external at internal time @internal. +This internal time should not be in the future; that is, it should be less +than the value of gst_clock_get_internal_time() when this function is called. + +Subsequent calls to gst_clock_get_time() will return clock times computed as +follows: + +``` C + time = (internal_time - internal) * rate_num / rate_denom + external +``` + +This formula is implemented in gst_clock_adjust_unlocked(). Of course, it +tries to do the integer arithmetic as precisely as possible. + +Note that gst_clock_get_time() always returns increasing values so when you +move the clock backwards, gst_clock_get_time() will report the previous value +until the clock catches up. + + + + + + + a #GstClock to calibrate + + + + a reference internal time + + + + a reference external time + + + + the numerator of the rate of the clock relative to its + internal time + + + + the denominator of the rate of the clock + + + + + + Sets @master as the master clock for @clock. @clock will be automatically +calibrated so that gst_clock_get_time() reports the same time as the +master clock. + +A clock provider that slaves its clock to a master can get the current +calibration values with gst_clock_get_calibration(). + +@master can be %NULL in which case @clock will not be slaved anymore. It will +however keep reporting its time adjusted with the last configured rate +and time offsets. + + + %TRUE if the clock is capable of being slaved to a master clock. +Trying to set a master on a clock without the +#GST_CLOCK_FLAG_CAN_SET_MASTER flag will make this function return %FALSE. + + + + + a #GstClock + + + + a master #GstClock + + + + + + Sets the accuracy of the clock. Some clocks have the possibility to operate +with different accuracy at the expense of more resource usage. There is +normally no need to change the default resolution of a clock. The resolution +of a clock can only be changed if the clock has the +#GST_CLOCK_FLAG_CAN_SET_RESOLUTION flag set. + + + the new resolution of the clock. + + + + + a #GstClock + + + + The resolution to set + + + + + + Sets @clock to synced and emits the #GstClock::synced signal, and wakes up any +thread waiting in gst_clock_wait_for_sync(). + +This function must only be called if %GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC +is set on the clock, and is intended to be called by subclasses only. + + + + + + + a GstClock + + + + if the clock is synced + + + + + + Sets the amount of time, in nanoseconds, to sample master and slave +clocks + + + + + + + a #GstClock + + + + a timeout + + + + + + Reinitializes the provided single shot @id to the provided time. Does not +modify the reference count. + + + %TRUE if the GstClockID could be reinitialized to the provided +@time, else %FALSE. + + + + + a #GstClock + + + + a #GstClockID + + + + The requested time. + + + + + + Converts the given @external clock time to the internal time of @clock, +using the rate and reference time set with gst_clock_set_calibration(). +This function should be called with the clock's OBJECT_LOCK held and +is mainly used by clock subclasses. + +This function is the reverse of gst_clock_adjust_unlocked(). + + + the internal time of the clock corresponding to @external. + + + + + a #GstClock to use + + + + an external clock time + + + + + + Converts the given @external_target clock time to the internal time, +using the passed calibration parameters. This function performs the +same calculation as gst_clock_unadjust_unlocked() when called using the +current calibration parameters. + +Note: The @clock parameter is unused and can be NULL + + + the converted time of the clock. + + + + + a #GstClock to use + + + + a clock time + + + + a reference internal time + + + + a reference external time + + + + the numerator of the rate of the clock relative to its + internal time + + + + the denominator of the rate of the clock + + + + + + Waits until @clock is synced for reporting the current time. If @timeout +is %GST_CLOCK_TIME_NONE it will wait forever, otherwise it will time out +after @timeout nanoseconds. + +For asynchronous waiting, the #GstClock::synced signal can be used. + +This returns immediately with %TRUE if %GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC +is not set on the clock, or if the clock is already synced. + + + %TRUE if waiting was successful, or %FALSE on timeout + + + + + a GstClock + + + + timeout for waiting or %GST_CLOCK_TIME_NONE + + + + + + + + + + + + + + + the parent structure + + + + + + + + + + + + Signaled on clocks with %GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC set once +the clock is synchronized, or when it completely lost synchronization. +This signal will not be emitted on clocks without the flag. + +This signal will be emitted from an arbitrary thread, most likely not +the application's main thread. + + + + + + if the clock is synced now + + + + + + + The function prototype of the callback. + + + %TRUE or %FALSE (currently unused) + + + + + The clock that triggered the callback + + + + The time it was triggered + + + + The #GstClockID that expired + + + + user data passed in the gst_clock_id_wait_async() function + + + + + + GStreamer clock class. Override the vmethods to implement the clock +functionality. + + + the parent class structure + + + + + + + the new resolution + + + + + the #GstClock + + + + the previous resolution + + + + the new resolution + + + + + + + + + + the resolution of the clock in units of #GstClockTime. + + + + + a #GstClock + + + + + + + + + + the internal time of the clock. Or %GST_CLOCK_TIME_NONE when +given invalid input. + + + + + a #GstClock to query + + + + + + + + + + the result of the blocking wait. #GST_CLOCK_EARLY will be returned +if the current clock time is past the time of @id, #GST_CLOCK_OK if +@id was scheduled in time. #GST_CLOCK_UNSCHEDULED if @id was +unscheduled with gst_clock_id_unschedule(). + + + + + the #GstClock + + + + the entry to wait on + + + + a pointer that will contain the jitter + + + + + + + + + + the result of the non blocking wait. + + + + + the #GstClock + + + + the entry to wait on + + + + + + + + + + + + + + the #GstClock + + + + the entry to unschedule + + + + + + + + + + + + + All pending timeouts or periodic notifies are converted into +an entry. +Note that GstClockEntry should be treated as an opaque structure. It must +not be extended or allocated using a custom allocator. + + + reference counter (read-only) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of the clock entry + + a single shot timeout + + + a periodic timeout request + + + + The capabilities of this clock + + clock can do a single sync timeout request + + + clock can do a single async timeout request + + + clock can do sync periodic timeout requests + + + clock can do async periodic timeout callbacks + + + clock's resolution can be changed + + + clock can be slaved to a master clock + + + + + subclasses can add additional flags starting from this flag + + + + + + + The return value of a clock operation. + + The operation succeeded. + + + The operation was scheduled too late. + + + The clockID was unscheduled + + + The ClockID is busy + + + A bad time was provided to a function. + + + An error occurred + + + Operation is not supported + + + The ClockID is done waiting + + + + The different kind of clocks. + + time since Epoch + + + monotonic time since some unspecified starting + point + + + 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 +context, a display server connection and similar concepts that should +be shared between multiple elements. + +Applications can set a context on a complete pipeline by using +gst_element_set_context(), which will then be propagated to all +child elements. Elements can handle these in #GstElementClass::set_context +and merge them with the context information they already have. + +When an element needs a context it will do the following actions in this +order until one step succeeds: + +1. Check if the element already has a context +2. Query downstream with %GST_QUERY_CONTEXT for the context +3. Query upstream with %GST_QUERY_CONTEXT for the context +4. Post a %GST_MESSAGE_NEED_CONTEXT message on the bus with the required + context types and afterwards check if a usable context was set now +5. Create a context by itself and post a %GST_MESSAGE_HAVE_CONTEXT message + on the bus. + +Bins will catch %GST_MESSAGE_NEED_CONTEXT messages and will set any previously +known context on the element that asks for it if possible. Otherwise the +application should provide one if it can. + +#GstContext can be persistent. +A persistent #GstContext is kept in elements when they reach +%GST_STATE_NULL, non-persistent ones will be removed. +Also, a non-persistent context won't override a previous persistent +context set to an element. + + + Creates a new context. + + + The new context. + + + + + Context type + + + + Persistent context + + + + + + Creates a copy of the context. Returns a copy of the context. + + + a new copy of @context. + +MT safe + + + + + the context to copy + + + + + + Gets the type of @context. + + + The type of the context. + + + + + The #GstContext. + + + + + + Accesses the structure of the context. + + + The structure of the context. The structure is +still owned by the context, which means that you should not modify it, +free it and that the pointer becomes invalid when you free the context. + + + + + The #GstContext. + + + + + + Checks if @context has @context_type. + + + %TRUE if @context has @context_type. + + + + + The #GstContext. + + + + Context type to check. + + + + + + Checks if @context is persistent. + + + %TRUE if the context is persistent. + + + + + The #GstContext. + + + + + + Convenience macro to increase the reference count of the context. + + + @context (for convenience when doing assignments) + + + + + the context to ref + + + + + + Convenience macro to decrease the reference count of the context, possibly +freeing it. + + + + + + + the context to unref + + + + + + Gets a writable version of the structure. + + + The structure of the context. The structure is still +owned by the context, which means that you should not free it and +that the pointer becomes invalid when you free the context. +This function checks if @context is writable. + + + + + The #GstContext. + + + + + + Modifies a pointer to a #GstContext to point to a different #GstContext. 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 +context is unreffed, the new one is reffed). + +Either @new_context or the #GstContext pointed to by @old_context may be %NULL. + + + %TRUE if @new_context was different from @old_context + + + + + pointer to a pointer to a #GstContext + to be replaced. + + + + pointer to a #GstContext that will + replace the context pointed to by @old_context. + + + + + + + A base class for value mapping objects that attaches control sources to #GObject +properties. Such an object is taking one or more #GstControlSource instances, +combines them and maps the resulting value to the type and value range of the +bound property. + + + Gets a number of #GValues for the given controlled property starting at the +requested time. The array @values need to hold enough space for @n_values of +#GValue. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Gets the value for the given controlled property at the requested time. + + + the GValue of the property at the given time, +or %NULL if the property isn't controlled. + + + + + the control binding + + + + the time the control-change should be read from + + + + + + Gets a number of values for the given controlled property starting at the +requested time. The array @values needs to hold enough space for @n_values of +the same type as the objects property's type. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + +The values are unboxed and ready to be used. The similar function +gst_control_binding_get_g_value_array() returns the array as #GValues and is +more suitable for bindings. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Sets the property of the @object, according to the #GstControlSources that +handles it and for the given timestamp. + +If this function fails, it is most likely the application developers fault. +Most probably the control sources are not setup correctly. + + + %TRUE if the controller value could be applied to the object +property, %FALSE otherwise + + + + + the control binding + + + + the object that has controlled properties + + + + the time that should be processed + + + + the last time this was called + + + + + + Gets a number of #GValues for the given controlled property starting at the +requested time. The array @values need to hold enough space for @n_values of +#GValue. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Gets the value for the given controlled property at the requested time. + + + the GValue of the property at the given time, +or %NULL if the property isn't controlled. + + + + + the control binding + + + + the time the control-change should be read from + + + + + + Gets a number of values for the given controlled property starting at the +requested time. The array @values needs to hold enough space for @n_values of +the same type as the objects property's type. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + +The values are unboxed and ready to be used. The similar function +gst_control_binding_get_g_value_array() returns the array as #GValues and is +more suitable for bindings. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Checks if the control binding is disabled. + + + %TRUE if the binding is inactive + + + + + the control binding + + + + + + This function is used to disable a control binding for some time, i.e. +gst_object_sync_values() will do nothing. + + + + + + + the control binding + + + + boolean that specifies whether to disable the controller +or not. + + + + + + Sets the property of the @object, according to the #GstControlSources that +handles it and for the given timestamp. + +If this function fails, it is most likely the application developers fault. +Most probably the control sources are not setup correctly. + + + %TRUE if the controller value could be applied to the object +property, %FALSE otherwise + + + + + the control binding + + + + the object that has controlled properties + + + + the time that should be processed + + + + the last time this was called + + + + + + + + + + + + the parent structure + + + + name of the property of this binding + + + + #GParamSpec for this property + + + + + + + + + + + + + + + + + + + + + + + + + The class structure of #GstControlBinding. + + + Parent class + + + + + + + %TRUE if the controller value could be applied to the object +property, %FALSE otherwise + + + + + the control binding + + + + the object that has controlled properties + + + + the time that should be processed + + + + the last time this was called + + + + + + + + + + the GValue of the property at the given time, +or %NULL if the property isn't controlled. + + + + + the control binding + + + + the time the control-change should be read from + + + + + + + + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + + + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the control binding + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + + + + + + + + + FIXME(2.0): remove, this is unused + + + + + + + + + + + + + + + + + + + + + The #GstControlSource is a base class for control value sources that could +be used to get timestamp-value pairs. A control source essentially is a +function over time. + +A #GstControlSource is used by first getting an instance of a specific +control-source, creating a binding for the control-source to the target property +of the element and then adding the binding to the element. The binding will +convert the data types and value range to fit to the bound property. + +For implementing a new #GstControlSource one has to implement +#GstControlSourceGetValue and #GstControlSourceGetValueArray functions. +These are then used by gst_control_source_get_value() and +gst_control_source_get_value_array() to get values for specific timestamps. + + + Gets the value for this #GstControlSource at a given timestamp. + + + %FALSE if the value couldn't be returned, %TRUE otherwise. + + + + + the #GstControlSource object + + + + the time for which the value should be returned + + + + the value + + + + + + Gets an array of values for for this #GstControlSource. Values that are +undefined contain NANs. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the #GstControlSource object + + + + the first timestamp + + + + the time steps + + + + the number of values to fetch + + + + array to put control-values in + + + + + + + + the parent structure + + + + Function for returning a value for a given timestamp + + + + Function for returning a values array for a given timestamp + + + + + + + + + + The class structure of #GstControlSource. + + + Parent class + + + + + + + + + + Function for returning a value for a given timestamp. + + + %TRUE if the value was successfully calculated. + + + + + the #GstControlSource instance + + + + timestamp for which a value should be calculated + + + + a value which will be set to the result. + + + + + + Function for returning an array of values starting at a given timestamp. + + + %TRUE if the values were successfully calculated. + + + + + the #GstControlSource instance + + + + timestamp for which a value should be calculated + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + Core errors are errors inside the core GStreamer library. + + a general error which doesn't fit in any other +category. Make sure you add a custom message to the error call. + + + do not use this except as a placeholder for +deciding where to go while developing code. + + + use this when you do not want to implement +this functionality yet. + + + used for state change errors. + + + used for pad-related errors. + + + used for thread-related errors. + + + used for negotiation-related errors. + + + used for event-related errors. + + + used for seek-related errors. + + + used for caps-related errors. + + + used for negotiation-related errors. + + + used if a plugin is missing. + + + used for clock related errors. + + + used if functionality has been disabled at + compile time. + + + the number of core error types. + + + + + + + + + + Simple typing wrapper around #GstMeta + + + + + + Retrieve the #GstStructure backing a custom meta, the structure's mutability +is conditioned to the writability of the #GstBuffer @meta is attached to. + + + the #GstStructure backing @meta + + + + + + + + + + Checks whether the name of the custom meta is @name + + + Whether @name is the name of the custom meta + + + + + + + + + + + + + + Function called for each @meta in @buffer as a result of performing a +transformation that yields @transbuf. Additional @type specific transform +data is passed to the function as @data. + +Implementations should check the @type of the transform and parse +additional type specific fields in @data that should be used to update +the metadata on @transbuf. + + + %TRUE if the transform could be performed + + + + + a #GstBuffer + + + + a #GstCustomMeta + + + + a #GstBuffer + + + + the transform type + + + + transform specific data. + + + + user data passed when registering the meta + + + + + + + + + + To aid debugging applications one can use this method to write out the whole +network of gstreamer elements that form the pipeline into a dot file. +This file can be processed with graphviz to get an image, like this: + +``` shell +dot -Tpng -oimage.png graph_lowlevel.dot +``` + +There is also a utility called [xdot] which allows you to view the dot file +directly without converting it first. + +The macro is only active if the environment variable `GST_DEBUG_DUMP_DOT_DIR` +is set to a basepath (e.g. `/tmp`), and the GStreamer debugging subsystem is +enabled (i.e., no use of `./configure --disable-gst-debug`) + +[xdot]: https://pypi.org/project/xdot/ + + + + the top-level pipeline that should be analyzed + + + details to show in the graph, e.g. #GST_DEBUG_GRAPH_SHOW_ALL or + one or more other #GstDebugGraphDetails flags. + + + output base filename (e.g. "myplayer") + + + + + This works like GST_DEBUG_BIN_TO_DOT_FILE(), but adds the current timestamp +to the filename, so that it can be used to take multiple snapshots. + + + + the top-level pipeline that should be analyzed + + + details to show in the graph, e.g. #GST_DEBUG_GRAPH_SHOW_ALL or + one or more other #GstDebugGraphDetails flags. + + + output base filename (e.g. "myplayer") + + + + + Defines a GstDebugCategory variable. +This macro expands to nothing if debugging is disabled. + + + + the category + + + + + Declares a GstDebugCategory variable as extern. Use in header files. +This macro expands to nothing if debugging is disabled. + + + + the category + + + + + Looks up an existing #GstDebugCategory by its @name and sets @cat. If the +category is not found, but GST_CAT_DEFAULT is defined, that is assigned to +@cat. Otherwise @cat will be %NULL. + +|[<!-- language="C" --> +GST_DEBUG_CATEGORY_STATIC (gst_myplugin_debug); +#define GST_CAT_DEFAULT gst_myplugin_debug +GST_DEBUG_CATEGORY_STATIC (GST_CAT_PERFORMANCE); +... +GST_DEBUG_CATEGORY_INIT (gst_myplugin_debug, "myplugin", 0, "nice element"); +GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE"); +]| + + + + the category to initialize. + + + log category name + + + + + Initializes a new #GstDebugCategory with the given properties and set to +the default threshold. + +> This macro expands to nothing if debugging is disabled. +> +> When naming your category, please follow the following conventions to ensure +> that the pattern matching for categories works as expected. It is not +> earth-shattering if you don't follow these conventions, but it would be nice +> for everyone. +> +> If you define a category for a plugin or a feature of it, name the category +> like the feature. So if you wanted to write a "filesrc" element, you would +> name the category "filesrc". Use lowercase letters only. +> If you define more than one category for the same element, append an +> underscore and an identifier to your categories, like this: "filesrc_cache" +> +> If you create a library or an application using debugging categories, use a +> common prefix followed by an underscore for all your categories. GStreamer +> uses the GST prefix so GStreamer categories look like "GST_STATES". Be sure +> to include uppercase letters. + + + + the category to initialize. + + + the name of the category. + + + the colors to use for a color representation or 0 for no color. + + + optional description of the category. + + + + + Defines a static GstDebugCategory variable. +This macro expands to nothing if debugging is disabled. + + + + the category + + + + + + + + + + + + + Register a pointer to a function with its name, so it can later be used by +GST_DEBUG_FUNCPTR_NAME(). + + + + pointer to the function to register + + + + + Retrieves the name of the function, if it was previously registered with +GST_DEBUG_FUNCPTR(). If not, it returns a description of the pointer. + +This macro returns a constant string which must not be modified or +freed by the caller. + + + + address of the function of which to look up the name + + + + + Evaluates to 2 strings, that describe the pad. Often used in debugging +statements. + + + + The pad to debug. + + + + + Register a pointer to a function with its name, so it can later be used by +GST_DEBUG_FUNCPTR_NAME(). + +Use this variant of #GST_DEBUG_FUNCPTR if you do not need to use @ptr. + + + + pointer to the function to register + + + + + Define a new mini-object type with the given name + + + + name of the new type in CamelCase + + + name of the new type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This macro can be used to register a device provider into a #GstPlugin. +This method will be usually called in the plugin init function +but can also be called with a NULL plugin. + + + + The device provider name in lower case, with words separated by '_'. + + + The #GstPlugin where to register the device provider. + + + + + This macro can be used to declare a new device provider. +It has to be used in combination with #GST_DEVICE_PROVIDER_REGISTER_DEFINE macro +and must be placed outside any block to declare the device provider registration +function. + + + + The device provider name in lower case, with words separated by '_'. + + + + + A convenience macro to define the entry point of a +device provider `gst_device_provider_register_*(GstPlugin* plugin)`. + + + + The device provider name in lower case, with words separated by '_'. +Used to generate `gst_device_provider_register_*(GstPlugin* plugin)`. + + + The public name of the device provider + + + The #GstRank of the device provider (higher rank means more importance when autoplugging, see #GstRank) + + + The #GType of the device provider. + + + + + A convenience macro to define the entry point of a +device provider `gst_device_provider_register_*(GstPlugin* plugin)` which uses +register_func as the main registration method for the device provider. +As an example, you may define the device provider named "device-provider" +with the namespace `my` as following using `device_provider_register_custom`: + +``` + +gboolean my_device_provider_register_custom (GstPlugin * plugin) +{ + gboolean ret = FALSE; + ret |= gst_device_provider_register (plugin, "my-device-provider", + GST_RANK_PRIMARY, GST_TYPE_MY_DEVICE_PROVIDER); + return TRUE; +} + +GST_DEVICE_PROVIDER_REGISTER_DEFINE_CUSTOM (my_device_provider, my_device_provider_register_custom) +``` + + + + The device provider name in lower case, with words separated by '_'. +Used to generate `gst_device_provider_register_*(GstPlugin* plugin)`. + + + pointer to a method with the format: `gboolean register_func (GstPlugin* plugin);` + + + + + + + + + + + + + + + + + + + + + + + + + + This macro can be used to register a dynamic type into a #GstPlugin. +This method will be usually called in the plugin init function +but can also be called with a NULL plugin. + + + + The dynamic type name to register + + + The #GstPlugin where to register the dynamic type. + + + + + This macro can be used to declare a new dynamic type. +It has to be used in combination with #GST_DYNAMIC_TYPE_REGISTER_DEFINE macro +and must be placed outside any block to declare the type find registration +function. + + + + + + + + A convenience macro to define the entry point of a +dynamic type `gst_dynamic_type_register_*(GstPlugin* plugin)`. + + + + The dynamic type name in lower case, with words separated by '_'. +Used to generate `gst_dynamic_type_register_*(GstPlugin* plugin)`. + + + The #GType of the dynamic type + + + + + Struct to store date, time and timezone information altogether. +#GstDateTime is refcounted and immutable. + +Date information is handled using the [proleptic Gregorian calendar]. + +Provides basic creation functions and accessor functions to its fields. + +[proleptic Gregorian calendar]: https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar + + + Creates a new #GstDateTime using the date and times in the gregorian calendar +in the supplied timezone. + +@year should be from 1 to 9999, @month should be from 1 to 12, @day from +1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59. + +Note that @tzoffset is a float and was chosen so for being able to handle +some fractional timezones, while it still keeps the readability of +representing it in hours for most timezones. + +If value is -1 then all over value will be ignored. For example +if @month == -1, then #GstDateTime will be created only for @year. If +@day == -1, then #GstDateTime will be created for @year and @month and +so on. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + Offset from UTC in hours. + + + + the gregorian year + + + + the gregorian month + + + + the day of the gregorian month + + + + the hour of the day + + + + the minute of the hour + + + + the second of the minute + + + + + + Creates a new #GstDateTime from a #GDateTime object. + + + a newly created #GstDateTime, +or %NULL if @dt is %NULL. + + + + + the #GDateTime. + + + + + + Tries to parse common variants of ISO-8601 datetime strings into a +#GstDateTime. Possible input formats are (for example): +`2012-06-30T22:46:43Z`, `2012`, `2012-06`, `2012-06-30`, `2012-06-30T22:46:43-0430`, +`2012-06-30T22:46Z`, `2012-06-30T22:46-0430`, `2012-06-30 22:46`, +`2012-06-30 22:46:43`, `2012-06-00`, `2012-00-00`, `2012-00-30`, `22:46:43Z`, `22:46Z`, +`22:46:43-0430`, `22:46-0430`, `22:46:30`, `22:46` +If no date is provided, it is assumed to be "today" in the timezone +provided (if any), otherwise UTC. + + + a newly created #GstDateTime, +or %NULL on error + + + + + ISO 8601-formatted datetime string. + + + + + + Creates a new #GstDateTime using the time since Jan 1, 1970 specified by +@secs. The #GstDateTime is in the local timezone. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + seconds from the Unix epoch + + + + + + 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, or %NULL +on error. + + + + + 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. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + seconds from the Unix epoch + + + + + + Creates a new #GstDateTime using the time since Jan 1, 1970 specified by +@usecs. The #GstDateTime is in UTC. + + + a newly created #GstDateTime, or %NULL +on error. + + + + + microseconds from the Unix epoch + + + + + + Creates a new #GstDateTime using the date and times in the gregorian calendar +in the local timezone. + +@year should be from 1 to 9999, @month should be from 1 to 12, @day from +1 to 31, @hour from 0 to 23, @minutes and @seconds from 0 to 59. + +If @month is -1, then the #GstDateTime created will only contain @year, +and all other fields will be considered not set. + +If @day is -1, then the #GstDateTime created will only contain @year and +@month and all other fields will be considered not set. + +If @hour is -1, then the #GstDateTime created will only contain @year and +@month and @day, and the time fields will be considered not set. In this +case @minute and @seconds should also be -1. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + the gregorian year + + + + the gregorian month, or -1 + + + + the day of the gregorian month, or -1 + + + + the hour of the day, or -1 + + + + the minute of the hour, or -1 + + + + the second of the minute, or -1 + + + + + + Creates a new #GstDateTime representing the current date and time. + + + the newly created #GstDateTime which should + be freed with gst_date_time_unref(), or %NULL on error. + + + + + Creates a new #GstDateTime that represents the current instant at Universal +coordinated time. + + + the newly created #GstDateTime which should + be freed with gst_date_time_unref(), or %NULL on error. + + + + + Creates a new #GstDateTime using the date and times in the gregorian calendar +in the local timezone. + +@year should be from 1 to 9999. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + the gregorian year + + + + + + Creates a new #GstDateTime using the date and times in the gregorian calendar +in the local timezone. + +@year should be from 1 to 9999, @month should be from 1 to 12. + +If value is -1 then all over value will be ignored. For example +if @month == -1, then #GstDateTime will created only for @year. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + the gregorian year + + + + the gregorian month + + + + + + Creates a new #GstDateTime using the date and times in the gregorian calendar +in the local timezone. + +@year should be from 1 to 9999, @month should be from 1 to 12, @day from +1 to 31. + +If value is -1 then all over value will be ignored. For example +if @month == -1, then #GstDateTime will created only for @year. If +@day == -1, then #GstDateTime will created for @year and @month and +so on. + + + the newly created #GstDateTime, +or %NULL on error. + + + + + the gregorian year + + + + the gregorian month + + + + the day of the gregorian month + + + + + + Returns the day of the month of this #GstDateTime. + + + The day of this #GstDateTime, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Retrieves the hour of the day represented by @datetime in the gregorian +calendar. The return is in the range of 0 to 23. + + + the hour of the day, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Retrieves the fractional part of the seconds in microseconds represented by +@datetime in the gregorian calendar. + + + the microsecond of the second, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Retrieves the minute of the hour represented by @datetime in the gregorian +calendar. + + + the minute of the hour, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Returns the month of this #GstDateTime. January is 1, February is 2, etc.. + + + The month of this #GstDateTime, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Retrieves the second of the minute represented by @datetime in the gregorian +calendar. + + + the second represented by @datetime, or -1 if none is set. + + + + + a #GstDateTime + + + + + + Retrieves the offset from UTC in hours that the timezone specified +by @datetime represents. Timezones ahead (to the east) of UTC have positive +values, timezones before (to the west) of UTC have negative values. +If @datetime represents UTC time, then the offset is zero. + + + the offset from UTC in hours, or %G_MAXFLOAT if none is set. + + + + + a #GstDateTime + + + + + + Returns the year of this #GstDateTime. +Call gst_date_time_has_year() before, to avoid warnings. + + + The year of this #GstDateTime + + + + + a #GstDateTime + + + + + + + + %TRUE if @datetime<!-- -->'s day field is set, otherwise %FALSE + + + + + a #GstDateTime + + + + + + + + %TRUE if @datetime<!-- -->'s month field is set, otherwise %FALSE + + + + + a #GstDateTime + + + + + + + + %TRUE if @datetime<!-- -->'s second field is set, otherwise %FALSE + + + + + a #GstDateTime + + + + + + + + %TRUE if @datetime<!-- -->'s hour and minute fields are set, + otherwise %FALSE + + + + + a #GstDateTime + + + + + + + + %TRUE if @datetime<!-- -->'s year field is set (which should always + be the case), otherwise %FALSE + + + + + a #GstDateTime + + + + + + Atomically increments the reference count of @datetime by one. + + + the reference @datetime + + + + + a #GstDateTime + + + + + + Creates a new #GDateTime from a fully defined #GstDateTime object. + + + a newly created #GDateTime, or +%NULL on error or if @datetime does not have a year, month, day, hour, +minute and second. + + + + + GstDateTime. + + + + + + Create a minimal string compatible with ISO-8601. Possible output formats +are (for example): `2012`, `2012-06`, `2012-06-23`, `2012-06-23T23:30Z`, +`2012-06-23T23:30+0100`, `2012-06-23T23:30:59Z`, `2012-06-23T23:30:59+0100` + + + a newly allocated string formatted according + to ISO 8601 and only including the datetime fields that are + valid, or %NULL in case there was an error. + + + + + a #GstDateTime. + + + + + + Atomically decrements the reference count of @datetime by one. When the +reference count reaches zero, the structure is freed. + + + + + + + a #GstDateTime + + + + + + + This is the struct that describes the categories. Once initialized with +#GST_DEBUG_CATEGORY_INIT, its values can't be changed anymore. + + + + + + + + + + + + + + + Removes and frees the category and all associated resources. + This function can easily cause memory corruption, don't use it. + + + + + + + #GstDebugCategory to free. + + + + + + Returns the color of a debug category used when printing output in this +category. + + + the color of the category. + + + + + a #GstDebugCategory to get the color of. + + + + + + Returns the description of a debug category. + + + the description of the category. + + + + + a #GstDebugCategory to get the description of. + + + + + + Returns the name of a debug category. + + + the name of the category. + + + + + a #GstDebugCategory to get name of. + + + + + + Returns the threshold of a #GstDebugCategory. + + + the #GstDebugLevel that is used as threshold. + + + + + a #GstDebugCategory to get threshold of. + + + + + + Resets the threshold of the category to the default level. Debug information +will only be output if the threshold is lower or equal to the level of the +debugging message. +Use this function to set the threshold back to where it was after using +gst_debug_category_set_threshold(). + + + + + + + a #GstDebugCategory to reset threshold of. + + + + + + Sets the threshold of the category to the given level. Debug information will +only be output if the threshold is lower or equal to the level of the +debugging message. +> Do not use this function in production code, because other functions may +> change the threshold of categories as side effect. It is however a nice +> function to use when debugging (even from gdb). + + + + + + + a #GstDebugCategory to set threshold of. + + + + the #GstDebugLevel threshold to set. + + + + + + + These are some terminal style flags you can use when creating your +debugging categories to make them stand out in debugging output. + + Use black as foreground color. + + + Use red as foreground color. + + + Use green as foreground color. + + + Use yellow as foreground color. + + + Use blue as foreground color. + + + Use magenta as foreground color. + + + Use cyan as foreground color. + + + Use white as foreground color. + + + Use black as background color. + + + Use red as background color. + + + Use green as background color. + + + Use yellow as background color. + + + Use blue as background color. + + + Use magenta as background color. + + + Use cyan as background color. + + + Use white as background color. + + + Make the output bold. + + + Underline the output. + + + + + Do not use colors in logs. + + + Paint logs in a platform-specific way. + + + Paint logs with UNIX terminal color codes + no matter what platform GStreamer is running on. + + + + + 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) + + + + + + + Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE() +and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(). + + show caps-name on edges + + + show caps-details on edges + + + show modified parameters on + elements + + + show element states + + + show full element parameter values even + if they are very long + + + show all the typical details that one might want + + + show all details regardless of how large or + verbose they make the resulting output + + + + The level defines the importance of a debugging message. The more important a +message is, the greater the probability that the debugging system outputs it. + + No debugging level specified or desired. Used to deactivate + debugging output. + + + Error messages are to be used only when an error occurred + that stops the application from keeping working correctly. + An examples is gst_element_error, which outputs a message with this priority. + It does not mean that the application is terminating as with g_error. + + + Warning messages are to inform about abnormal behaviour + that could lead to problems or weird behaviour later on. An example of this + would be clocking issues ("your computer is pretty slow") or broken input + data ("Can't synchronize to stream.") + + + Fixme messages are messages that indicate that something + in the executed code path is not fully implemented or handled yet. Note + that this does not replace proper error handling in any way, the purpose + of this message is to make it easier to spot incomplete/unfinished pieces + of code when reading the debug log. + + + Informational messages should be used to keep the developer + updated about what is happening. + Examples where this should be used are when a typefind function has + successfully determined the type of the stream or when an mp3 plugin detects + the format to be used. ("This file has mono sound.") + + + Debugging messages should be used when something common + happens that is not the expected default behavior, or something that's + useful to know but doesn't happen all the time (ie. per loop iteration or + buffer processed or event handled). + An example would be notifications about state changes or receiving/sending + of events. + + + Log messages are messages that are very common but might be + useful to know. As a rule of thumb a pipeline that is running as expected + should never output anything else but LOG messages whilst processing data. + Use this log level to log recurring information in chain functions and + loop functions, for example. + + + Tracing-related messages. + Examples for this are referencing/dereferencing of objects. + + + memory dump messages are used to log (small) chunks of + data as memory dumps in the log. They will be displayed as hexdump with + ASCII characters. + + + The number of defined debugging levels. + + + Get the string representation of a debugging level + + + the name + + + + + the level to get the name for + + + + + + + + + Gets the string representation of a #GstDebugMessage. This function is used +in debug handlers to extract the message. + + + the string representation of a #GstDebugMessage. + + + + + a debug message + + + + + + Get the id of the object that emitted this message. This function is used in +debug handlers. Can be empty. + + + The emitter of a #GstDebugMessage. + + + + + a debug message + + + + + + + #GstDevice are objects representing a device, they contain +relevant metadata about the device, such as its class and the #GstCaps +representing the media types it can produce or handle. + +#GstDevice are created by #GstDeviceProvider objects which can be +aggregated by #GstDeviceMonitor objects. + + + Creates the element with all of the required parameters set to use +this device. + + + a new #GstElement configured to use +this device + + + + + a #GstDevice + + + + name of new element, or %NULL to automatically +create a unique name. + + + + + + Tries to reconfigure an existing element to use the device. If this +function fails, then one must destroy the element and create a new one +using gst_device_create_element(). + +Note: This should only be implemented for elements can change their +device in the PLAYING state. + + + %TRUE if the element could be reconfigured to use this device, +%FALSE otherwise. + + + + + a #GstDevice + + + + a #GstElement + + + + + + Creates the element with all of the required parameters set to use +this device. + + + a new #GstElement configured to use +this device + + + + + a #GstDevice + + + + name of new element, or %NULL to automatically +create a unique name. + + + + + + Getter for the #GstCaps that this device supports. + + + The #GstCaps supported by this device. Unref with +gst_caps_unref() when done. + + + + + a #GstDevice + + + + + + Gets the "class" of a device. This is a "/" separated list of +classes that represent this device. They are a subset of the +classes of the #GstDeviceProvider that produced this device. + + + The device class. Free with g_free() after use. + + + + + a #GstDevice + + + + + + Gets the user-friendly name of the device. + + + The device name. Free with g_free() after use. + + + + + a #GstDevice + + + + + + Gets the extra properties of a device. + + + The extra properties or %NULL when there are none. + Free with gst_structure_free() after use. + + + + + a #GstDevice + + + + + + Check if @device matches all of the given classes + + + %TRUE if @device matches. + + + + + a #GstDevice + + + + a "/"-separated list of device classes to match, only match if + all classes are matched + + + + + + Check if @factory matches all of the given classes + + + %TRUE if @device matches. + + + + + a #GstDevice + + + + a %NULL terminated array of classes + to match, only match if all classes are matched + + + + + + + + Tries to reconfigure an existing element to use the device. If this +function fails, then one must destroy the element and create a new one +using gst_device_create_element(). + +Note: This should only be implemented for elements can change their +device in the PLAYING state. + + + %TRUE if the element could be reconfigured to use this device, +%FALSE otherwise. + + + + + a #GstDevice + + + + a #GstElement + + + + + + + + + + + + + + + + + + The parent #GstObject structure. + + + + + + + + + + + + + + + + + + The class structure for a #GstDevice object. + + + The parent #GstObjectClass structure. + + + + + + + a new #GstElement configured to use +this device + + + + + a #GstDevice + + + + name of new element, or %NULL to automatically +create a unique name. + + + + + + + + + + %TRUE if the element could be reconfigured to use this device, +%FALSE otherwise. + + + + + a #GstDevice + + + + a #GstElement + + + + + + + + + + + + + Applications should create a #GstDeviceMonitor when they want +to probe, list and monitor devices of a specific type. The +#GstDeviceMonitor will create the appropriate +#GstDeviceProvider objects and manage them. It will then post +messages on its #GstBus for devices that have been added and +removed. + +The device monitor will monitor all devices matching the filters that +the application has set. + +The basic use pattern of a device monitor is as follows: +|[ + static gboolean + my_bus_func (GstBus * bus, GstMessage * message, gpointer user_data) + { + GstDevice *device; + gchar *name; + + switch (GST_MESSAGE_TYPE (message)) { + case GST_MESSAGE_DEVICE_ADDED: + gst_message_parse_device_added (message, &device); + name = gst_device_get_display_name (device); + g_print("Device added: %s\n", name); + g_free (name); + gst_object_unref (device); + break; + case GST_MESSAGE_DEVICE_REMOVED: + gst_message_parse_device_removed (message, &device); + name = gst_device_get_display_name (device); + g_print("Device removed: %s\n", name); + g_free (name); + gst_object_unref (device); + break; + default: + break; + } + + return G_SOURCE_CONTINUE; + } + + GstDeviceMonitor * + setup_raw_video_source_device_monitor (void) { + GstDeviceMonitor *monitor; + GstBus *bus; + GstCaps *caps; + + monitor = gst_device_monitor_new (); + + bus = gst_device_monitor_get_bus (monitor); + gst_bus_add_watch (bus, my_bus_func, NULL); + gst_object_unref (bus); + + caps = gst_caps_new_empty_simple ("video/x-raw"); + gst_device_monitor_add_filter (monitor, "Video/Source", caps); + gst_caps_unref (caps); + + gst_device_monitor_start (monitor); + + return monitor; + } +]| + + + Create a new #GstDeviceMonitor + + + a new device monitor. + + + + + Adds a filter for which #GstDevice will be monitored, any device that matches +all these classes and the #GstCaps will be returned. + +If this function is called multiple times to add more filters, each will be +matched independently. That is, adding more filters will not further restrict +what devices are matched. + +The #GstCaps supported by the device as returned by gst_device_get_caps() are +not intersected with caps filters added using this function. + +Filters must be added before the #GstDeviceMonitor is started. + + + The id of the new filter or 0 if no provider matched the filter's + classes. + + + + + a device monitor + + + + device classes to use as filter or %NULL for any class + + + + the #GstCaps to filter or %NULL for ANY + + + + + + Gets the #GstBus of this #GstDeviceMonitor + + + a #GstBus + + + + + a #GstDeviceProvider + + + + + + Gets a list of devices from all of the relevant monitors. This may actually +probe the hardware if the monitor is not currently started. + + + a #GList of + #GstDevice + + + + + + + A #GstDeviceProvider + + + + + + Get a list of the currently selected device provider factories. + +This + + + + A list of device provider factory names that are currently being + monitored by @monitor or %NULL when nothing is being monitored. + + + + + + + a #GstDeviceMonitor + + + + + + Get if @monitor is currently showing all devices, even those from hidden +providers. + + + %TRUE when all devices will be shown. + + + + + a #GstDeviceMonitor + + + + + + Removes a filter from the #GstDeviceMonitor using the id that was returned +by gst_device_monitor_add_filter(). + + + %TRUE of the filter id was valid, %FALSE otherwise + + + + + a device monitor + + + + the id of the filter + + + + + + Set if all devices should be visible, even those devices from hidden +providers. Setting @show_all to true might show some devices multiple times. + + + + + + + a #GstDeviceMonitor + + + + show all devices + + + + + + Starts monitoring the devices, one this has succeeded, the +%GST_MESSAGE_DEVICE_ADDED and %GST_MESSAGE_DEVICE_REMOVED messages +will be emitted on the bus when the list of devices changes. + + + %TRUE if the device monitoring could be started, i.e. at least a + single device provider was started successfully. + + + + + A #GstDeviceMonitor + + + + + + Stops monitoring the devices. + + + + + + + A #GstDeviceProvider + + + + + + + + + the parent #GstObject structure + + + + + + + + + + + + + Opaque device monitor class structure. + + + the parent #GstObjectClass structure + + + + + + + + + + + + + + + + A #GstDeviceProvider subclass is provided by a plugin that handles devices +if there is a way to programmatically list connected devices. It can also +optionally provide updates to the list of connected devices. + +Each #GstDeviceProvider subclass is a singleton, a plugin should +normally provide a single subclass for all devices. + +Applications would normally use a #GstDeviceMonitor to monitor devices +from all relevant providers. + + + Create a new device providerfactory capable of instantiating objects of the +@type and add the factory to @plugin. + + + %TRUE, if the registering succeeded, %FALSE on error + + + + + #GstPlugin to register the device provider with, or %NULL for + a static device provider. + + + + name of device providers of this type + + + + rank of device provider (higher rank means more importance when autoplugging) + + + + GType of device provider to register + + + + + + + + + + + + + + + + + + + Starts providering the devices. This will cause #GST_MESSAGE_DEVICE_ADDED +and #GST_MESSAGE_DEVICE_REMOVED messages to be posted on the provider's bus +when devices are added or removed from the system. + +Since the #GstDeviceProvider is a singleton, +gst_device_provider_start() may already have been called by another +user of the object, gst_device_provider_stop() needs to be called the same +number of times. + +After this function has been called, gst_device_provider_get_devices() will +return the same objects that have been received from the +#GST_MESSAGE_DEVICE_ADDED messages and will no longer probe. + + + %TRUE if the device providering could be started + + + + + A #GstDeviceProvider + + + + + + Decreases the use-count by one. If the use count reaches zero, this +#GstDeviceProvider will stop providering the devices. This needs to be +called the same number of times that gst_device_provider_start() was called. + + + + + + + A #GstDeviceProvider + + + + + + + + + + + + + + + + + Posts a message on the provider's #GstBus to inform applications that +a new device has been added. + +This is for use by subclasses. + +@device's reference count will be incremented, and any floating reference +will be removed (see gst_object_ref_sink()). + + + + + + + a #GstDeviceProvider + + + + a #GstDevice that has been added + + + + + + This function is used when @changed_device was modified into its new form +@device. This will post a `DEVICE_CHANGED` message on the bus to let +the application know that the device was modified. #GstDevice is immutable +for MT. safety purposes so this is an "atomic" way of letting the application +know when a device was modified. + + + + + + + + + + the new version of @changed_device + + + + the old version of the device that has been updated + + + + + + Posts a message on the provider's #GstBus to inform applications that +a device has been removed. + +This is for use by subclasses. + + + + + + + a #GstDeviceProvider + + + + a #GstDevice that has been removed + + + + + + Gets the #GstBus of this #GstDeviceProvider + + + a #GstBus + + + + + a #GstDeviceProvider + + + + + + Gets a list of devices that this provider understands. This may actually +probe the hardware if the provider is not currently started. + +If the provider has been started, this will returned the same #GstDevice +objedcts that have been returned by the #GST_MESSAGE_DEVICE_ADDED messages. + + + a #GList of + #GstDevice + + + + + + + A #GstDeviceProvider + + + + + + Retrieves the factory that was used to create this device provider. + + + the #GstDeviceProviderFactory used for + creating this device provider. no refcounting is needed. + + + + + a #GstDeviceProvider to request the device provider factory of. + + + + + + Get the provider factory names of the #GstDeviceProvider instances that +are hidden by @provider. + + + + a list of hidden providers factory names or %NULL when + nothing is hidden by @provider. Free with g_strfreev. + + + + + + + a #GstDeviceProvider + + + + + + Get metadata with @key in @provider. + + + the metadata for @key. + + + + + provider to get metadata for + + + + the key to get + + + + + + Make @provider hide the devices from the factory with @name. + +This function is used when @provider will also provide the devices reported +by provider factory @name. A monitor should stop monitoring the +device provider with @name to avoid duplicate devices. + + + + + + + a #GstDeviceProvider + + + + a provider factory name + + + + + + This function can be used to know if the @provider was successfully started. + + + + + + + a #GstDeviceProvider + + + + + + Starts providering the devices. This will cause #GST_MESSAGE_DEVICE_ADDED +and #GST_MESSAGE_DEVICE_REMOVED messages to be posted on the provider's bus +when devices are added or removed from the system. + +Since the #GstDeviceProvider is a singleton, +gst_device_provider_start() may already have been called by another +user of the object, gst_device_provider_stop() needs to be called the same +number of times. + +After this function has been called, gst_device_provider_get_devices() will +return the same objects that have been received from the +#GST_MESSAGE_DEVICE_ADDED messages and will no longer probe. + + + %TRUE if the device providering could be started + + + + + A #GstDeviceProvider + + + + + + Decreases the use-count by one. If the use count reaches zero, this +#GstDeviceProvider will stop providering the devices. This needs to be +called the same number of times that gst_device_provider_start() was called. + + + + + + + A #GstDeviceProvider + + + + + + Make @provider unhide the devices from factory @name. + +This function is used when @provider will no longer provide the devices +reported by provider factory @name. A monitor should start +monitoring the devices from provider factory @name in order to see +all devices again. + + + + + + + a #GstDeviceProvider + + + + a provider factory name + + + + + + The parent #GstObject + + + + a #GList of the #GstDevice objects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The structure of the base #GstDeviceProviderClass + + + the parent #GstObjectClass structure + + + + a pointer to the #GstDeviceProviderFactory that creates this + provider + + + + + + + + + + + + + + + + + + + + + + %TRUE if the device providering could be started + + + + + A #GstDeviceProvider + + + + + + + + + + + + + + A #GstDeviceProvider + + + + + + + + + + + + + + + Set @key with @value as metadata in @klass. + + + + + + + class to set metadata for + + + + the key to set + + + + the value to set + + + + + + Set @key with @value as metadata in @klass. + +Same as gst_device_provider_class_add_metadata(), but @value must be a static string +or an inlined string, as it will not be copied. (GStreamer plugins will +be made resident once loaded, so this function can be used even from +dynamically loaded plugins.) + + + + + + + class to set metadata for + + + + the key to set + + + + the value to set + + + + + + Get metadata with @key in @klass. + + + the metadata for @key. + + + + + class to get metadata for + + + + the key to get + + + + + + Sets the detailed information for a #GstDeviceProviderClass. + +> This function is for use in _class_init functions only. + + + + + + + class to set metadata for + + + + The long English name of the device provider. E.g. "File Sink" + + + + String describing the type of device provider, as an + unordered list separated with slashes ('/'). See draft-klass.txt of the + design docs +for more details and common types. E.g: "Sink/File" + + + + Sentence describing the purpose of the device provider. +E.g: "Write stream to a file" + + + + Name and contact details of the author(s). Use \n to separate +multiple author metadata. E.g: "Joe Bloggs &lt;joe.blogs at foo.com&gt;" + + + + + + Sets the detailed information for a #GstDeviceProviderClass. + +> This function is for use in _class_init functions only. + +Same as gst_device_provider_class_set_metadata(), but @longname, @classification, +@description, and @author must be static strings or inlined strings, as +they will not be copied. (GStreamer plugins will be made resident once +loaded, so this function can be used even from dynamically loaded plugins.) + + + + + + + class to set metadata for + + + + The long English name of the element. E.g. "File Sink" + + + + String describing the type of element, as +an unordered list separated with slashes ('/'). See draft-klass.txt of the +design docs for more details and common types. E.g: "Sink/File" + + + + Sentence describing the purpose of the +element. E.g: "Write stream to a file" + + + + Name and contact details of the author(s). Use \n +to separate multiple author metadata. E.g: "Joe Bloggs &lt;joe.blogs at +foo.com&gt;" + + + + + + + #GstDeviceProviderFactory is used to create instances of device providers. A +GstDeviceProviderfactory can be added to a #GstPlugin as it is also a +#GstPluginFeature. + +Use the gst_device_provider_factory_find() and +gst_device_provider_factory_get() functions to create device +provider instances or use gst_device_provider_factory_get_by_name() as a +convenient shortcut. + + + Search for an device provider factory of the given name. Refs the returned +device provider factory; caller is responsible for unreffing. + + + #GstDeviceProviderFactory if +found, %NULL otherwise + + + + + name of factory to find + + + + + + Returns the device provider of the type defined by the given device +provider factory. + + + a #GstDeviceProvider or %NULL +if unable to create device provider + + + + + a named factory to instantiate + + + + + + Get a list of factories with a rank greater or equal to @minrank. +The list of factories is returned by decreasing rank. + + + +a #GList of #GstDeviceProviderFactory device providers. Use +gst_plugin_feature_list_free() after usage. + + + + + + + Minimum rank + + + + + + Returns the device provider of the type defined by the given device +providerfactory. + + + the #GstDeviceProvider or %NULL +if the device provider couldn't be created + + + + + factory to instantiate + + + + + + Get the #GType for device providers managed by this factory. The type can +only be retrieved if the device provider factory is loaded, which can be +assured with gst_plugin_feature_load(). + + + the #GType for device providers managed by this factory. + + + + + factory to get managed #GType from + + + + + + Get the metadata on @factory with @key. + + + the metadata with @key on @factory or %NULL +when there was no metadata with the given @key. + + + + + a #GstDeviceProviderFactory + + + + a key + + + + + + Get the available keys for the metadata on @factory. + + + +a %NULL-terminated array of key strings, or %NULL when there is no +metadata. Free with g_strfreev() when no longer needed. + + + + + + + a #GstDeviceProviderFactory + + + + + + Check if @factory matches all of the given @classes + + + %TRUE if @factory matches or if @classes is %NULL. + + + + + a #GstDeviceProviderFactory + + + + a "/" separate list of classes to match, only match + if all classes are matched + + + + + + Check if @factory matches all of the given classes + + + %TRUE if @factory matches. + + + + + a #GstDeviceProviderFactory + + + + a %NULL terminated array + of classes to match, only match if all classes are matched + + + + + + + + + The opaque #GstDeviceProviderFactoryClass data structure. + + + + + + + A fundamental type that describes a #gdouble range + + + #GstDynamicTypeFactory is used to represent a type that can be +automatically loaded the first time it is used. For example, +a non-standard type for use in caps fields. + +In general, applications and plugins don't need to use the factory +beyond registering the type in a plugin init function. Once that is +done, the type is stored in the registry, and ready as soon as the +registry is loaded. + +## Registering a type for dynamic loading + +|[<!-- language="C" --> + +static gboolean +plugin_init (GstPlugin * plugin) +{ + return gst_dynamic_type_register (plugin, GST_TYPE_CUSTOM_CAPS_FIELD); +} +]| + + + + + + + + + + + + + + + + + + + + + + + + + Get the message bus of this element. This is not thread-safe by default +(i.e. you will have to make sure the object lock is taken yourself). +If in doubt use gst_element_get_bus() instead. + + + + A #GstElement to query + + + + + + + + + + + + + + + + + + + Get the clock of this element.This is not thread-safe by default +(i.e. you will have to make sure it is safe yourself). +If in doubt use gst_element_get_clock() instead. + + + + A #GstElement to query + + + + + Utility function that elements can use in case they encountered a fatal +data processing error. The pipeline will post an error message and the +application will be requested to stop further media processing. + + + + the element that generates the error + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + + + Utility function that elements can use in case they encountered a fatal +data processing error. The pipeline will post an error message and the +application will be requested to stop further media processing. + + + + the element that generates the error + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + optional name, type, value triplets, which will be stored + in the associated GstStructure. NULL terminator required. + Must be enclosed within parentheses. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Elements interacting with hardware devices should specify this classifier in +their metadata. You may need to put the element in "READY" state to test if +the hardware is present in the system. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Elements of any of the defined GST_ELEMENT_FACTORY_LIST types + + + + + All sinks handling audio, video or image media types + + + + + All encoders handling audio media types + + + + + All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types + +Note: Do not use this if you wish to not filter against any of the defined +media types. If you wish to do this, simply don't specify any +GST_ELEMENT_FACTORY_TYPE_MEDIA flag. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timestamp correcting elements + + + + + All encoders handling video or image media types + + + + + Utility function that elements can use in case they encountered a fatal +data processing error due to wrong flow processing. + + + + the element that generates the error + + + the GstFlowReturn leading to that ERROR message + + + + + + + + + + + + Utility function that elements can use in case they want to inform +the application of something noteworthy that is not an error. +The pipeline will post a info message and the +application will be informed. + + + + the element that generates the information + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + + + Utility function that elements can use in case they want to inform +the application of something noteworthy that is not an error. +The pipeline will post a info message and the +application will be informed. +Optional name, type, value triplets may be supplied, and will be stored +in the associated GstStructure. NULL terminator required. + + + + the element that generates the information + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + optional name, type, value triplets, which will be stored + in the associated GstStructure. NULL terminator required. + Must be enclosed within parentheses. + + + + + Check if the element is in the locked state and therefore will ignore state +changes from its parent object. + + + + A #GstElement to query + + + + + + + + + + + + Name and contact details of the author(s). Use \n to separate +multiple author details. +E.g: "Joe Bloggs &lt;joe.blogs at foo.com&gt;" + + + + + Sentence describing the purpose of the element. +E.g: "Write stream to a file" + + + + + Set uri pointing to user documentation. Applications can use this to show +help for e.g. effects to users. + + + + + Elements that bridge to certain other products can include an icon of that +used product. Application can show the icon in menus/selectors to help +identifying specific elements. + + + + + String describing the type of element, as an unordered list +separated with slashes ('/'). See draft-klass.txt of the design docs +for more details and common types. E.g: "Sink/File" + + + + + The long English name of the element. E.g. "File Sink" + + + + + Gets the name of this element. This is not thread-safe by default +(i.e. you will have to make sure the object lock is taken yourself). +If in doubt use gst_element_get_name() instead. + + + + A #GstElement to query + + + + + Get the pads of this elements. + + + + A #GstElement to query + + + + + Get the parent object of this element. This is not thread-safe by default +(i.e. you will have to make sure the object lock is taken yourself). +If in doubt use gst_object_get_parent() instead. + + + + A #GstElement to query + + + + + This macro can be used to register an element into a #GstPlugin. +This method will be usually called in the plugin init function +but can also be called with a NULL plugin, +for example with a static registration of the element. +It has to be used in combination with #GST_ELEMENT_REGISTER_DECLARE. + +``` +GstPlugin* plugin; + +... + +GST_ELEMENT_REGISTER (stream_filter, plugin); +``` + + + + The element name in lower case, with words separated by '_'. + + + The #GstPlugin where to register the element. + + + + + This macro can be used to declare a new element. +It has to be used in combination with #GST_ELEMENT_REGISTER_DEFINE macros +and must be placed outside any block to declare the element registration +function. +As an example, you may declare the element named "stream-filter" +with the namespace `my` as following: + +``` +GST_ELEMENT_REGISTER_DECLARE (stream_filter) +``` + + + + The element name in lower case, with words separated by '_'. + + + + + A convenience macro to define the entry point of an +element `gst_element_register_*(GstPlugin* plugin)`. +As an example, you may define the element named "streamer-filter" +with the namespace `my` as following: + +``` +GST_ELEMENT_REGISTER_REGISTER_DEFINE (stream_filter, "stream-filter", GST_RANK_PRIMARY, MY_TYPE_STREAM_FILTER) +``` + + + + The element name in lower case, with words separated by '_'. +Used to generate `gst_element_register_*(GstPlugin* plugin)`. + + + The public name of the element + + + The #GstRank of the element (higher rank means more importance when autoplugging, see #GstRank) + + + The #GType of the element. + + + + + A convenience macro to define the entry point of an +element `gst_element_register_*(GstPlugin* plugin)` which uses +register_func as the main registration method for the element. +As an example, you may define the element named "streamer-filter" +with the namespace `my` as following using `element_register_custom`: + +``` +GST_ELEMENT_REGISTER_DEFINE_CUSTOM (my_element, element_register_custom) +``` + + + + The element name in lower case, with words separated by '_'. +Used to generate `gst_element_register_*(GstPlugin* plugin)`. + + + pointer to a method with the format: `gboolean register_func (GstPlugin* plugin);` + + + + + A convenience macro to define the entry point of an +element `gst_element_register_*(GstPlugin* plugin)` executing code +before gst_element_register in `gst_element_register_*(GstPlugin* plugin)`. + +As an example, you may define the element named "stream-filter" +with the namespace `my` as following: + +``` +#define _pre_register_init * my_stream_filter_pre_register (plugin); +; +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (stream_filter, "stream-filter", GST_RANK_PRIMARY, MY_TYPE_STREAM_FILTER, _pre_register_init) +``` + + + + The element name in lower case, with words separated by '_'. +Used to generate `gst_element_register_*(GstPlugin* plugin)`. + + + The public name of the element + + + The #GstRank of the element (higher rank means more importance when autoplugging, see #GstRank) + + + The #GType of the element. + + + Custom code that gets inserted in the gst_element_register_*() function. + + + + + This macro returns the start_time of the @elem. The start_time is the +running_time of the pipeline when the element went to PAUSED. + + + + a #GstElement to return the start time for. + + + + + Utility function that elements can use in case they encountered a non-fatal +data processing problem. The pipeline will post a warning message and the +application will be informed. + + + + the element that generates the warning + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + + + Utility function that elements can use in case they encountered a non-fatal +data processing problem. The pipeline will post a warning message and the +application will be informed. + + + + the element that generates the warning + + + like CORE, LIBRARY, RESOURCE or STREAM (see [GstGError](gsterror)) + + + error code defined for that domain (see [GstGError](gsterror)) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + optional name, type, value triplets, which will be stored + in the associated GstStructure. NULL terminator required. + Must be enclosed within parentheses. + + + + + Builds a string using errno describing the previously failed system +call. To be used as the debug argument in #GST_ELEMENT_ERROR. + + + + + + + + + + + + + + + + + + + Check if an event can travel downstream. + + + + the event to query + + + + + Check if an event is serialized with the data stream. + + + + the event to query + + + + + Check if an event is sticky on the pads. + + + + the event to query + + + + + Check if an event can travel upstream. + + + + the event to query + + + + + when making custom event types, use this macro with the num and +the given flags + + + + the event number to create + + + the event flags + + + + + + + + + The sequence number of @event. + + + + the event to query + + + + + Get the #GstClockTime timestamp of the event. This is the time when the event +was created. + + + + the event to query + + + + + Get the #GstEventType of the event. + + + + the event to query + + + + + The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_DOWNSTREAM. + + + + + Get a constant string representation of the #GstEventType of the event. + + + + the event to query + + + + + GstElement is the abstract base class needed to construct an element that +can be used in a GStreamer pipeline. Please refer to the plugin writers +guide for more information on creating #GstElement subclasses. + +The name of a #GstElement can be get with gst_element_get_name() and set with +gst_element_set_name(). For speed, GST_ELEMENT_NAME() can be used in the +core when using the appropriate locking. Do not use this in plug-ins or +applications in order to retain ABI compatibility. + +Elements can have pads (of the type #GstPad). These pads link to pads on +other elements. #GstBuffer flow between these linked pads. +A #GstElement has a #GList of #GstPad structures for all their input (or sink) +and output (or source) pads. +Core and plug-in writers can add and remove pads with gst_element_add_pad() +and gst_element_remove_pad(). + +An existing pad of an element can be retrieved by name with +gst_element_get_static_pad(). A new dynamic pad can be created using +gst_element_request_pad() with a #GstPadTemplate. +An iterator of all pads can be retrieved with gst_element_iterate_pads(). + +Elements can be linked through their pads. +If the link is straightforward, use the gst_element_link() +convenience function to link two elements, or gst_element_link_many() +for more elements in a row. +Use gst_element_link_filtered() to link two elements constrained by +a specified set of #GstCaps. +For finer control, use gst_element_link_pads() and +gst_element_link_pads_filtered() to specify the pads to link on +each element by name. + +Each element has a state (see #GstState). You can get and set the state +of an element with gst_element_get_state() and gst_element_set_state(). +Setting a state triggers a #GstStateChange. To get a string representation +of a #GstState, use gst_element_state_get_name(). + +You can get and set a #GstClock on an element using gst_element_get_clock() +and gst_element_set_clock(). +Some elements can provide a clock for the pipeline if +the #GST_ELEMENT_FLAG_PROVIDE_CLOCK flag is set. With the +gst_element_provide_clock() method one can retrieve the clock provided by +such an element. +Not all elements require a clock to operate correctly. If the +#GST_ELEMENT_FLAG_REQUIRE_CLOCK() flag is set, a clock should be set on the +element with gst_element_set_clock(). + +Note that clock selection and distribution is normally handled by the +toplevel #GstPipeline so the clock functions are only to be used in very +specific situations. + + + Creates an element for handling the given URI. + + + a new element or %NULL if none +could be created + + + + + Whether to create a source or a sink + + + + URI to create an element for + + + + Name of created element, can be %NULL. + + + + + + Create a new elementfactory capable of instantiating objects of the +@type and add the factory to @plugin. + + + %TRUE, if the registering succeeded, %FALSE on error + + + + + #GstPlugin to register the element with, or %NULL for + a static element. + + + + name of elements of this type + + + + rank of element (higher rank means more importance when autoplugging) + + + + GType of element to register + + + + + + Gets a string representing the given state change result. + + + a string with the name of the state + result. + + + + + a #GstStateChangeReturn to get the name of. + + + + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstState to get the name of. + + + + + + Marks @type as "documentation should be skipped". +Can be useful for dynamically registered element to be excluded from +plugin documentation system. + +Example: +```c +GType my_type; +GTypeInfo my_type_info; + +// Fill "my_type_info" +... + +my_type = g_type_register_static (GST_TYPE_MY_ELEMENT, "my-type-name", + &my_type_info, 0); +gst_element_type_set_skip_documentation (my_type); +gst_element_register (plugin, "my-plugin-feature-name", rank, my_type); +``` + + + + + + + a #GType of element + + + + + + Perform @transition on @element. + +This function must be called with STATE_LOCK held and is mainly used +internally. + + + the #GstStateChangeReturn of the state transition. + + + + + a #GstElement + + + + the requested transition + + + + + + Gets the state of the element. + +For elements that performed an ASYNC state change, as reported by +gst_element_set_state(), this function will block up to the +specified timeout value for the state change to complete. +If the element completes the state change or goes into +an error, this function returns immediately with a return value of +%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively. + +For elements that did not return %GST_STATE_CHANGE_ASYNC, this function +returns the current and pending state immediately. + +This function returns %GST_STATE_CHANGE_NO_PREROLL if the element +successfully changed its state but is not able to provide data yet. +This mostly happens for live sources that only produce data in +%GST_STATE_PLAYING. While the state change return is equivalent to +%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that +some sink elements might not be able to complete their state change because +an element is not producing data to complete the preroll. When setting the +element to playing, the preroll will complete and playback will start. + + + %GST_STATE_CHANGE_SUCCESS if the element has no more pending state + and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the + element is still performing a state change or + %GST_STATE_CHANGE_FAILURE if the last state change failed. + +MT safe. + + + + + a #GstElement to get the state of. + + + + a pointer to #GstState to hold the state. + Can be %NULL. + + + + a pointer to #GstState to hold the pending + state. Can be %NULL. + + + + a #GstClockTime to specify the timeout for an async + state change or %GST_CLOCK_TIME_NONE for infinite timeout. + + + + + + Use this function to signal that the element does not expect any more pads +to show up in the current pipeline. This function should be called whenever +pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES +pad templates use this in combination with autopluggers to figure out that +the element is done initializing its pads. + +This function emits the #GstElement::no-more-pads signal. + +MT safe. + + + + + + + a #GstElement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Post a message on the element's #GstBus. This function takes ownership of the +message; if you want to access the message after this call, you should add an +additional reference before calling. + + + %TRUE if the message was successfully posted. The function returns +%FALSE if the element did not have a bus. + +MT safe. + + + + + a #GstElement posting the message + + + + a #GstMessage to post + + + + + + Get the clock provided by the given element. +> An element is only required to provide a clock in the PAUSED +> state. Some elements can provide a clock in other states. + + + the GstClock provided by the +element or %NULL if no clock could be provided. Unref after usage. + +MT safe. + + + + + a #GstElement to query + + + + + + Performs a query on the given element. + +For elements that don't implement a query handler, this function +forwards the query to a random srcpad or to the peer of a +random linked sinkpad of this element. + +Please note that some queries might need a running pipeline to work. + + + %TRUE if the query could be performed. + +MT safe. + + + + + a #GstElement to perform the query on. + + + + the #GstQuery. + + + + + + + + + + + + + + + + + + + + Retrieves a request pad from the element according to the provided template. +Pad templates can be looked up using +gst_element_factory_get_static_pad_templates(). + +The pad should be released with gst_element_release_request_pad(). + + + requested #GstPad if found, + otherwise %NULL. Release after usage. + + + + + a #GstElement to find a request pad of. + + + + a #GstPadTemplate of which we want a pad of. + + + + the name of the request #GstPad +to retrieve. Can be %NULL. + + + + the caps of the pad we want to +request. Can be %NULL. + + + + + + Sends an event to an element. If the element doesn't implement an +event handler, the event will be pushed on a random linked sink pad for +downstream events or a random linked source pad for upstream events. + +This function takes ownership of the provided event so you should +gst_event_ref() it if you want to reuse the event after this call. + +MT safe. + + + %TRUE if the event was handled. Events that trigger a preroll (such +as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. + + + + + a #GstElement to send the event to. + + + + the #GstEvent to send to the element. + + + + + + Sets the bus of the element. Increases the refcount on the bus. +For internal use only, unless you're testing elements. + +MT safe. + + + + + + + a #GstElement to set the bus of. + + + + the #GstBus to set. + + + + + + Sets the clock for the element. This function increases the +refcount on the clock. Any previously set clock on the object +is unreffed. + + + %TRUE if the element accepted the clock. An element can refuse a +clock when it, for example, is not able to slave its internal clock to the +@clock or when it requires a specific clock to operate. + +MT safe. + + + + + a #GstElement to set the clock for. + + + + the #GstClock to set for the element. + + + + + + Sets the context of the element. Increases the refcount of the context. + +MT safe. + + + + + + + a #GstElement to set the context of. + + + + the #GstContext to set. + + + + + + Sets the state of the element. This function will try to set the +requested state by going through all the intermediary states and calling +the class's state change function for each. + +This function can return #GST_STATE_CHANGE_ASYNC, in which case the +element will perform the remainder of the state change asynchronously in +another thread. +An application can use gst_element_get_state() to wait for the completion +of the state change or it can wait for a %GST_MESSAGE_ASYNC_DONE or +%GST_MESSAGE_STATE_CHANGED on the bus. + +State changes to %GST_STATE_READY or %GST_STATE_NULL never return +#GST_STATE_CHANGE_ASYNC. + + + Result of the state change using #GstStateChangeReturn. + +MT safe. + + + + + a #GstElement to change state of. + + + + the element's new #GstState. + + + + + + + + + + + + + + + + + + + + + + + + + + Abort the state change of the element. This function is used +by elements that do asynchronous state changes and find out +something is wrong. + +This function should be called with the STATE_LOCK held. + +MT safe. + + + + + + + a #GstElement to abort the state of. + + + + + + Adds a pad (link point) to @element. @pad's parent will be set to @element; +see gst_object_set_parent() for refcounting information. + +Pads are automatically activated when added in the PAUSED or PLAYING +state. + +The pad and the element should be unlocked when calling this function. + +This function will emit the #GstElement::pad-added signal on the element. + + + %TRUE if the pad could be added. This function can fail when +a pad with the same name already existed or the pad already had another +parent. + +MT safe. + + + + + a #GstElement to add the pad to. + + + + the #GstPad to add to the element. + + + + + + + + a watch id, which can be used in connection with + gst_element_remove_property_notify_watch() to remove the watch again. + + + + + a #GstElement to watch (recursively) for property changes + + + + name of property to watch for changes, or + NULL to watch all properties + + + + whether to include the new property value in the message + + + + + + + + a watch id, which can be used in connection with + gst_element_remove_property_notify_watch() to remove the watch again. + + + + + a #GstElement to watch for property changes + + + + name of property to watch for changes, or + NULL to watch all properties + + + + whether to include the new property value in the message + + + + + + Calls @func from another thread and passes @user_data to it. This is to be +used for cases when a state change has to be performed from a streaming +thread, directly via gst_element_set_state() or indirectly e.g. via SEEK +events. + +Calling those functions directly from the streaming thread will cause +deadlocks in many situations, as they might involve waiting for the +streaming thread to shut down from this very streaming thread. + +MT safe. + + + + + + + a #GstElement + + + + Function to call asynchronously from another thread + + + + Data to pass to @func + + + + GDestroyNotify for @user_data + + + + + + Perform @transition on @element. + +This function must be called with STATE_LOCK held and is mainly used +internally. + + + the #GstStateChangeReturn of the state transition. + + + + + a #GstElement + + + + the requested transition + + + + + + Commit the state change of the element and proceed to the next +pending state if any. This function is used +by elements that do asynchronous state changes. +The core will normally call this method automatically when an +element returned %GST_STATE_CHANGE_SUCCESS from the state change function. + +If after calling this method the element still has not reached +the pending state, the next state change is performed. + +This method is used internally and should normally not be called by plugins +or applications. + +This function must be called with STATE_LOCK held. + + + The result of the commit state change. + +MT safe. + + + + + a #GstElement to continue the state change of. + + + + The previous state return value + + + + + + Creates a pad for each pad template that is always available. +This function is only useful during object initialization of +subclasses of #GstElement. + + + + + + + a #GstElement to create pads for + + + + + + Creates a stream-id for @element by combining the upstream information with +the @stream_id. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending @stream_id to it. If the element +has no sinkpad it will generate an upstream stream-id by doing an URI query +on the element and in the worst case just uses a random number. Source +elements that don't implement the URI handler interface should ideally +generate a unique, deterministic stream-id manually instead. + +Since stream IDs are sorted alphabetically, any numbers in the stream ID +should be printed with a fixed number of characters, preceded by 0's, such as +by using the format \%03u instead of \%u. + + + A stream-id for @element. + + + + + The #GstElement to create a stream-id for + + + + The stream-id + + + + + + Creates a stream-id for @element by combining the upstream information with +the @format. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending the stream-id to it. If the element +has no sinkpad it will generate an upstream stream-id by doing an URI query +on the element and in the worst case just uses a random number. Source +elements that don't implement the URI handler interface should ideally +generate a unique, deterministic stream-id manually instead. + +Since stream IDs are sorted alphabetically, any numbers in the stream ID +should be printed with a fixed number of characters, preceded by 0's, such as +by using the format \%03u instead of \%u. + + + A stream-id for @element. + + + + + The #GstElement to create a stream-id for + + + + The stream-id + + + + + + + + + Creates a stream-id for @element by combining the upstream information with +the @format. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending @format to it. If the element +has no sinkpad it will generate an upstream stream-id by doing an URI query +on the element and in the worst case just uses a random number. Source +elements that don't implement the URI handler interface should ideally +generate a unique, deterministic stream-id manually instead. + +Since stream IDs are sorted alphabetically, any numbers in the stream ID +should be printed with a fixed number of characters, preceded by 0's, such as +by using the format \%03u instead of \%u. + + + A stream-id for @element. + + + + + The #GstElement to create a stream-id for + + + + The stream-id + + + + parameters for the @format string + + + + + + Call @func with @user_data for each of @element's pads. @func will be called +exactly once for each pad that exists at the time of this call, unless +one of the calls to @func returns %FALSE in which case we will stop +iterating pads and return early. If new pads are added or pads are removed +while pads are being iterated, this will not be taken into account until +next time this function is used. + + + %FALSE if @element had no pads or if one of the calls to @func + returned %FALSE. + + + + + a #GstElement to iterate pads of + + + + function to call for each pad + + + + user data passed to @func + + + + + + Call @func with @user_data for each of @element's sink pads. @func will be +called exactly once for each sink pad that exists at the time of this call, +unless one of the calls to @func returns %FALSE in which case we will stop +iterating pads and return early. If new sink pads are added or sink pads +are removed while the sink pads are being iterated, this will not be taken +into account until next time this function is used. + + + %FALSE if @element had no sink pads or if one of the calls to @func + returned %FALSE. + + + + + a #GstElement to iterate sink pads of + + + + function to call for each sink pad + + + + user data passed to @func + + + + + + Call @func with @user_data for each of @element's source pads. @func will be +called exactly once for each source pad that exists at the time of this call, +unless one of the calls to @func returns %FALSE in which case we will stop +iterating pads and return early. If new source pads are added or source pads +are removed while the source pads are being iterated, this will not be taken +into account until next time this function is used. + + + %FALSE if @element had no source pads or if one of the calls + to @func returned %FALSE. + + + + + a #GstElement to iterate source pads of + + + + function to call for each source pad + + + + user data passed to @func + + + + + + Returns the base time of the element. The base time is the +absolute time of the clock when this element was last put to +PLAYING. Subtracting the base time from the clock time gives +the running time of the element. + + + the base time of the element. + +MT safe. + + + + + a #GstElement. + + + + + + Returns the bus of the element. Note that only a #GstPipeline will provide a +bus for the application. + + + the element's #GstBus. unref after +usage. + +MT safe. + + + + + a #GstElement to get the bus of. + + + + + + Gets the currently configured clock of the element. This is the clock as was +last set with gst_element_set_clock(). + +Elements in a pipeline will only have their clock set when the +pipeline is in the PLAYING state. + + + the #GstClock of the element. unref after usage. + +MT safe. + + + + + a #GstElement to get the clock of. + + + + + + Looks for an unlinked pad to which the given pad can link. It is not +guaranteed that linking the pads will work, though it should work in most +cases. + +This function will first attempt to find a compatible unlinked ALWAYS pad, +and if none can be found, it will request a compatible REQUEST pad by looking +at the templates of @element. + + + the #GstPad to which a link + can be made, or %NULL if one cannot be found. gst_object_unref() + after usage. + + + + + a #GstElement in which the pad should be found. + + + + the #GstPad to find a compatible one for. + + + + the #GstCaps to use as a filter. + + + + + + Retrieves a pad template from @element that is compatible with @compattempl. +Pads from compatible templates can be linked together. + + + a compatible #GstPadTemplate, + or %NULL if none was found. No unreferencing is necessary. + + + + + a #GstElement to get a compatible pad template for + + + + the #GstPadTemplate to find a compatible + template for + + + + + + Gets the context with @context_type set on the element or NULL. + +MT safe. + + + A #GstContext or NULL + + + + + a #GstElement to get the context of. + + + + a name of a context to retrieve + + + + + + Gets the context with @context_type set on the element or NULL. + + + A #GstContext or NULL + + + + + a #GstElement to get the context of. + + + + a name of a context to retrieve + + + + + + Gets the contexts set on the element. + +MT safe. + + + List of #GstContext + + + + + + + a #GstElement to set the context of. + + + + + + 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. + + + the #GstElementFactory used for creating this + element or %NULL if element has not been registered (static element). no refcounting is needed. + + + + + a #GstElement to request the element factory of. + + + + + + Get metadata with @key in @klass. + + + the metadata for @key. + + + + + class to get metadata for + + + + the key to get + + + + + + Retrieves a padtemplate from @element with the given name. + + + the #GstPadTemplate with the + given name, or %NULL if none was found. No unreferencing is + necessary. + + + + + a #GstElement to get the pad template of. + + + + the name of the #GstPadTemplate to get. + + + + + + Retrieves a list of the pad templates associated with @element. The +list must not be modified by the calling code. + + + the #GList of + pad templates. + + + + + + + a #GstElement to get pad templates of. + + + + + + The name of this function is confusing to people learning GStreamer. +gst_element_request_pad_simple() aims at making it more explicit it is +a simplified gst_element_request_pad(). + Prefer using gst_element_request_pad_simple() which +provides the exact same functionality. + + + requested #GstPad if found, + otherwise %NULL. Release after usage. + + + + + a #GstElement to find a request pad of. + + + + the name of the request #GstPad to retrieve. + + + + + + Returns the start time of the element. The start time is the +running time of the clock when this element was last put to PAUSED. + +Usually the start_time is managed by a toplevel element such as +#GstPipeline. + +MT safe. + + + the start time of the element. + + + + + a #GstElement. + + + + + + Gets the state of the element. + +For elements that performed an ASYNC state change, as reported by +gst_element_set_state(), this function will block up to the +specified timeout value for the state change to complete. +If the element completes the state change or goes into +an error, this function returns immediately with a return value of +%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively. + +For elements that did not return %GST_STATE_CHANGE_ASYNC, this function +returns the current and pending state immediately. + +This function returns %GST_STATE_CHANGE_NO_PREROLL if the element +successfully changed its state but is not able to provide data yet. +This mostly happens for live sources that only produce data in +%GST_STATE_PLAYING. While the state change return is equivalent to +%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that +some sink elements might not be able to complete their state change because +an element is not producing data to complete the preroll. When setting the +element to playing, the preroll will complete and playback will start. + + + %GST_STATE_CHANGE_SUCCESS if the element has no more pending state + and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the + element is still performing a state change or + %GST_STATE_CHANGE_FAILURE if the last state change failed. + +MT safe. + + + + + a #GstElement to get the state of. + + + + a pointer to #GstState to hold the state. + Can be %NULL. + + + + a pointer to #GstState to hold the pending + state. Can be %NULL. + + + + a #GstClockTime to specify the timeout for an async + state change or %GST_CLOCK_TIME_NONE for infinite timeout. + + + + + + Retrieves a pad from @element by name. This version only retrieves +already-existing (i.e. 'static') pads. + + + the requested #GstPad if + found, otherwise %NULL. unref after usage. + +MT safe. + + + + + a #GstElement to find a static pad of. + + + + the name of the static #GstPad to retrieve. + + + + + + Checks if the state of an element is locked. +If the state of an element is locked, state changes of the parent don't +affect the element. +This way you can leave currently unused elements inside bins. Just lock their +state before changing the state from #GST_STATE_NULL. + +MT safe. + + + %TRUE, if the element's state is locked. + + + + + a #GstElement. + + + + + + Retrieves an iterator of @element's pads. The iterator should +be freed after usage. Also more specialized iterators exists such as +gst_element_iterate_src_pads() or gst_element_iterate_sink_pads(). + +The order of pads returned by the iterator will be the order in which +the pads were added to the element. + + + the #GstIterator of #GstPad. + +MT safe. + + + + + a #GstElement to iterate pads of. + + + + + + Retrieves an iterator of @element's sink pads. + +The order of pads returned by the iterator will be the order in which +the pads were added to the element. + + + the #GstIterator of #GstPad. + +MT safe. + + + + + a #GstElement. + + + + + + Retrieves an iterator of @element's source pads. + +The order of pads returned by the iterator will be the order in which +the pads were added to the element. + + + the #GstIterator of #GstPad. + +MT safe. + + + + + a #GstElement. + + + + + + Links @src to @dest. The link must be from source to +destination; the other direction will not be tried. The function looks for +existing pads that aren't linked yet. It will request new pads if necessary. +Such pads need to be released manually when unlinking. +If multiple links are possible, only one is established. + +Make sure you have added your elements to a bin or pipeline with +gst_bin_add() before trying to link them. + + + %TRUE if the elements could be linked, %FALSE otherwise. + + + + + a #GstElement containing the source pad. + + + + the #GstElement containing the destination pad. + + + + + + Links @src to @dest using the given caps as filtercaps. +The link must be from source to +destination; the other direction will not be tried. The function looks for +existing pads that aren't linked yet. It will request new pads if necessary. +If multiple links are possible, only one is established. + +Make sure you have added your elements to a bin or pipeline with +gst_bin_add() before trying to link them. + + + %TRUE if the pads could be linked, %FALSE otherwise. + + + + + a #GstElement containing the source pad. + + + + the #GstElement containing the destination pad. + + + + the #GstCaps to filter the link, + or %NULL for no filter. + + + + + + Chain together a series of elements. Uses gst_element_link(). +Make sure you have added your elements to a bin or pipeline with +gst_bin_add() before trying to link them. + + + %TRUE on success, %FALSE otherwise. + + + + + the first #GstElement in the link chain. + + + + the second #GstElement in the link chain. + + + + the %NULL-terminated list of elements to link in order. + + + + + + Links the two named pads of the source and destination elements. +Side effect is that if one of the pads has no parent, it becomes a +child of the parent of the other element. If they have different +parents, the link fails. + + + %TRUE if the pads could be linked, %FALSE otherwise. + + + + + a #GstElement containing the source pad. + + + + the name of the #GstPad in source element + or %NULL for any pad. + + + + the #GstElement containing the destination pad. + + + + the name of the #GstPad in destination element, +or %NULL for any pad. + + + + + + Links the two named pads of the source and destination elements. Side effect +is that if one of the pads has no parent, it becomes a child of the parent of +the other element. If they have different parents, the link fails. If @caps +is not %NULL, makes sure that the caps of the link is a subset of @caps. + + + %TRUE if the pads could be linked, %FALSE otherwise. + + + + + a #GstElement containing the source pad. + + + + the name of the #GstPad in source element + or %NULL for any pad. + + + + the #GstElement containing the destination pad. + + + + the name of the #GstPad in destination element + or %NULL for any pad. + + + + the #GstCaps to filter the link, + or %NULL for no filter. + + + + + + Links the two named pads of the source and destination elements. +Side effect is that if one of the pads has no parent, it becomes a +child of the parent of the other element. If they have different +parents, the link fails. + +Calling gst_element_link_pads_full() with @flags == %GST_PAD_LINK_CHECK_DEFAULT +is the same as calling gst_element_link_pads() and the recommended way of +linking pads with safety checks applied. + +This is a convenience function for gst_pad_link_full(). + + + %TRUE if the pads could be linked, %FALSE otherwise. + + + + + a #GstElement containing the source pad. + + + + the name of the #GstPad in source element + or %NULL for any pad. + + + + the #GstElement containing the destination pad. + + + + the name of the #GstPad in destination element, +or %NULL for any pad. + + + + the #GstPadLinkCheck to be performed when linking pads. + + + + + + Brings the element to the lost state. The current state of the +element is copied to the pending state so that any call to +gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC. + +An ASYNC_START message is posted. If the element was PLAYING, it will +go to PAUSED. The element will be restored to its PLAYING state by +the parent pipeline when it prerolls again. + +This is mostly used for elements that lost their preroll buffer +in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush, +they will go to their pending state again when a new preroll buffer is +queued. This function can only be called when the element is currently +not in error or an async state change. + +This function is used internally and should normally not be called from +plugins or applications. + + + + + + + a #GstElement the state is lost of + + + + + + Post an error, warning or info message on the bus from inside an element. + +@type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or +#GST_MESSAGE_INFO. + +MT safe. + + + + + + + a #GstElement to send message from + + + + the #GstMessageType + + + + the GStreamer GError domain this message belongs to + + + + the GError code belonging to the domain + + + + an allocated text string to be used + as a replacement for the default message connected to code, + or %NULL + + + + an allocated debug message to be + used as a replacement for the default debugging information, + or %NULL + + + + the source code file where the error was generated + + + + the source code function where the error was generated + + + + the source code line where the error was generated + + + + + + Post an error, warning or info message on the bus from inside an element. + +@type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or +#GST_MESSAGE_INFO. + + + + + + + a #GstElement to send message from + + + + the #GstMessageType + + + + the GStreamer GError domain this message belongs to + + + + the GError code belonging to the domain + + + + an allocated text string to be used + as a replacement for the default message connected to code, + or %NULL + + + + an allocated debug message to be + used as a replacement for the default debugging information, + or %NULL + + + + the source code file where the error was generated + + + + the source code function where the error was generated + + + + the source code line where the error was generated + + + + optional details structure + + + + + + Use this function to signal that the element does not expect any more pads +to show up in the current pipeline. This function should be called whenever +pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES +pad templates use this in combination with autopluggers to figure out that +the element is done initializing its pads. + +This function emits the #GstElement::no-more-pads signal. + +MT safe. + + + + + + + a #GstElement + + + + + + Post a message on the element's #GstBus. This function takes ownership of the +message; if you want to access the message after this call, you should add an +additional reference before calling. + + + %TRUE if the message was successfully posted. The function returns +%FALSE if the element did not have a bus. + +MT safe. + + + + + a #GstElement posting the message + + + + a #GstMessage to post + + + + + + Get the clock provided by the given element. +> An element is only required to provide a clock in the PAUSED +> state. Some elements can provide a clock in other states. + + + the GstClock provided by the +element or %NULL if no clock could be provided. Unref after usage. + +MT safe. + + + + + a #GstElement to query + + + + + + Performs a query on the given element. + +For elements that don't implement a query handler, this function +forwards the query to a random srcpad or to the peer of a +random linked sinkpad of this element. + +Please note that some queries might need a running pipeline to work. + + + %TRUE if the query could be performed. + +MT safe. + + + + + a #GstElement to perform the query on. + + + + the #GstQuery. + + + + + + Queries an element to convert @src_val in @src_format to @dest_format. + + + %TRUE if the query could be performed. + + + + + a #GstElement to invoke the convert query on. + + + + a #GstFormat to convert from. + + + + a value to convert. + + + + the #GstFormat to convert to. + + + + a pointer to the result. + + + + + + Queries an element (usually top-level pipeline or playbin element) for the +total stream duration in nanoseconds. This query will only work once the +pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application +will receive an ASYNC_DONE message on the pipeline bus when that is the case. + +If the duration changes for some reason, you will get a DURATION_CHANGED +message on the pipeline bus, in which case you should re-query the duration +using this function. + + + %TRUE if the query could be performed. + + + + + a #GstElement to invoke the duration query on. + + + + the #GstFormat requested + + + + A location in which to store the total duration, or %NULL. + + + + + + Queries an element (usually top-level pipeline or playbin element) for the +stream position in nanoseconds. This will be a value between 0 and the +stream duration (if the stream duration is known). This query will usually +only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING +state). The application will receive an ASYNC_DONE message on the pipeline +bus when that is the case. + +If one repeatedly calls this function one can also create a query and reuse +it in gst_element_query(). + + + %TRUE if the query could be performed. + + + + + a #GstElement to invoke the position query on. + + + + the #GstFormat requested + + + + a location in which to store the current + position, or %NULL. + + + + + + Makes the element free the previously requested pad as obtained +with gst_element_request_pad(). + +This does not unref the pad. If the pad was created by using +gst_element_request_pad(), gst_element_release_request_pad() needs to be +followed by gst_object_unref() to free the @pad. + +MT safe. + + + + + + + a #GstElement to release the request pad of. + + + + the #GstPad to release. + + + + + + Removes @pad from @element. @pad will be destroyed if it has not been +referenced elsewhere using gst_object_unparent(). + +This function is used by plugin developers and should not be used +by applications. Pads that were dynamically requested from elements +with gst_element_request_pad() should be released with the +gst_element_release_request_pad() function instead. + +Pads are not automatically deactivated so elements should perform the needed +steps to deactivate the pad in case this pad is removed in the PAUSED or +PLAYING state. See gst_pad_set_active() for more information about +deactivating pads. + +The pad and the element should be unlocked when calling this function. + +This function will emit the #GstElement::pad-removed signal on the element. + + + %TRUE if the pad could be removed. Can return %FALSE if the +pad does not belong to the provided element. + +MT safe. + + + + + a #GstElement to remove pad from. + + + + the #GstPad to remove from the element. + + + + + + + + + + + + a #GstElement being watched for property changes + + + + watch id to remove + + + + + + Retrieves a request pad from the element according to the provided template. +Pad templates can be looked up using +gst_element_factory_get_static_pad_templates(). + +The pad should be released with gst_element_release_request_pad(). + + + requested #GstPad if found, + otherwise %NULL. Release after usage. + + + + + a #GstElement to find a request pad of. + + + + a #GstPadTemplate of which we want a pad of. + + + + the name of the request #GstPad +to retrieve. Can be %NULL. + + + + the caps of the pad we want to +request. Can be %NULL. + + + + + + Retrieves a pad from the element by name (e.g. "src_\%d"). This version only +retrieves request pads. The pad should be released with +gst_element_release_request_pad(). + +This method is slower than manually getting the pad template and calling +gst_element_request_pad() if the pads should have a specific name (e.g. +@name is "src_1" instead of "src_\%u"). + +Note that this function was introduced in GStreamer 1.20 in order to provide +a better name to gst_element_get_request_pad(). Prior to 1.20, users +should use gst_element_get_request_pad() which provides the same +functionality. + + + requested #GstPad if found, + otherwise %NULL. Release after usage. + + + + + a #GstElement to find a request pad of. + + + + the name of the request #GstPad to retrieve. + + + + + + Sends a seek event to an element. See gst_event_new_seek() for the details of +the parameters. The seek event is sent to the element using +gst_element_send_event(). + +MT safe. + + + %TRUE if the event was handled. Flushing seeks will trigger a +preroll, which will emit %GST_MESSAGE_ASYNC_DONE. + + + + + a #GstElement to send the event to. + + + + The new playback rate + + + + The format of the seek values + + + + The optional seek flags. + + + + The type and flags for the new start position + + + + The value of the new start position + + + + The type and flags for the new stop position + + + + The value of the new stop position + + + + + + Simple API to perform a seek on the given element, meaning it just seeks +to the given position relative to the start of the stream. For more complex +operations like segment seeks (e.g. for looping) or changing the playback +rate or seeking relative to the last configured playback segment you should +use gst_element_seek(). + +In a completely prerolled PAUSED or PLAYING pipeline, seeking is always +guaranteed to return %TRUE on a seekable media type or %FALSE when the media +type is certainly not seekable (such as a live stream). + +Some elements allow for seeking in the READY state, in this +case they will store the seek event and execute it when they are put to +PAUSED. If the element supports seek in READY, it will always return %TRUE when +it receives the event in the READY state. + + + %TRUE if the seek operation succeeded. Flushing seeks will trigger a +preroll, which will emit %GST_MESSAGE_ASYNC_DONE. + + + + + a #GstElement to seek on + + + + a #GstFormat to execute the seek in, such as #GST_FORMAT_TIME + + + + seek options; playback applications will usually want to use + GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT here + + + + position to seek to (relative to the start); if you are doing + a seek in #GST_FORMAT_TIME this value is in nanoseconds - + multiply with #GST_SECOND to convert seconds to nanoseconds or + with #GST_MSECOND to convert milliseconds to nanoseconds. + + + + + + Sends an event to an element. If the element doesn't implement an +event handler, the event will be pushed on a random linked sink pad for +downstream events or a random linked source pad for upstream events. + +This function takes ownership of the provided event so you should +gst_event_ref() it if you want to reuse the event after this call. + +MT safe. + + + %TRUE if the event was handled. Events that trigger a preroll (such +as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. + + + + + a #GstElement to send the event to. + + + + the #GstEvent to send to the element. + + + + + + Set the base time of an element. See gst_element_get_base_time(). + +MT safe. + + + + + + + a #GstElement. + + + + the base time to set. + + + + + + Sets the bus of the element. Increases the refcount on the bus. +For internal use only, unless you're testing elements. + +MT safe. + + + + + + + a #GstElement to set the bus of. + + + + the #GstBus to set. + + + + + + Sets the clock for the element. This function increases the +refcount on the clock. Any previously set clock on the object +is unreffed. + + + %TRUE if the element accepted the clock. An element can refuse a +clock when it, for example, is not able to slave its internal clock to the +@clock or when it requires a specific clock to operate. + +MT safe. + + + + + a #GstElement to set the clock for. + + + + the #GstClock to set for the element. + + + + + + Sets the context of the element. Increases the refcount of the context. + +MT safe. + + + + + + + a #GstElement to set the context of. + + + + the #GstContext to set. + + + + + + Locks the state of an element, so state changes of the parent don't affect +this element anymore. + +Note that this is racy if the state lock of the parent bin is not taken. +The parent bin might've just checked the flag in another thread and as the +next step proceed to change the child element's state. + +MT safe. + + + %TRUE if the state was changed, %FALSE if bad parameters were given +or the elements state-locking needed no change. + + + + + a #GstElement + + + + %TRUE to lock the element's state + + + + + + Set the start time of an element. The start time of the element is the +running time of the element when it last went to the PAUSED state. In READY +or after a flushing seek, it is set to 0. + +Toplevel elements like #GstPipeline will manage the start_time and +base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE +on such a toplevel element will disable the distribution of the base_time to +the children and can be useful if the application manages the base_time +itself, for example if you want to synchronize capture from multiple +pipelines, and you can also ensure that the pipelines have the same clock. + +MT safe. + + + + + + + a #GstElement. + + + + the base time to set. + + + + + + Sets the state of the element. This function will try to set the +requested state by going through all the intermediary states and calling +the class's state change function for each. + +This function can return #GST_STATE_CHANGE_ASYNC, in which case the +element will perform the remainder of the state change asynchronously in +another thread. +An application can use gst_element_get_state() to wait for the completion +of the state change or it can wait for a %GST_MESSAGE_ASYNC_DONE or +%GST_MESSAGE_STATE_CHANGED on the bus. + +State changes to %GST_STATE_READY or %GST_STATE_NULL never return +#GST_STATE_CHANGE_ASYNC. + + + Result of the state change using #GstStateChangeReturn. + +MT safe. + + + + + a #GstElement to change state of. + + + + the element's new #GstState. + + + + + + Tries to change the state of the element to the same as its parent. +If this function returns %FALSE, the state of element is undefined. + + + %TRUE, if the element's state could be synced to the parent's state. + +MT safe. + + + + + a #GstElement. + + + + + + Unlinks all source pads of the source element with all sink pads +of the sink element to which they are linked. + +If the link has been made using gst_element_link(), it could have created an +requestpad, which has to be released using gst_element_release_request_pad(). + + + + + + + the source #GstElement to unlink. + + + + the sink #GstElement to unlink. + + + + + + Unlinks a series of elements. Uses gst_element_unlink(). + + + + + + + the first #GstElement in the link chain. + + + + the second #GstElement in the link chain. + + + + the %NULL-terminated list of elements to unlink in order. + + + + + + Unlinks the two named pads of the source and destination elements. + +This is a convenience function for gst_pad_unlink(). + + + + + + + a (transfer none): #GstElement containing the source pad. + + + + the name of the #GstPad in source element. + + + + a #GstElement containing the destination pad. + + + + the name of the #GstPad in destination element. + + + + + + + + + Used to serialize execution of gst_element_set_state() + + + + Used to signal completion of a state change + + + + Used to detect concurrent execution of +gst_element_set_state() and gst_element_get_state() + + + + the target state of an element as set by the application + + + + the current state of an element + + + + the next state of an element, can be #GST_STATE_VOID_PENDING if +the element is in the correct state. + + + + the final state the element should go to, can be +#GST_STATE_VOID_PENDING if the element is in the correct state + + + + the last return value of an element state change + + + + the bus of the element. This bus is provided to the element by the +parent element or the application. A #GstPipeline has a bus of its own. + + + + the clock of the element. This clock is usually provided to the +element by the toplevel #GstPipeline. + + + + the time of the clock right before the element is set to +PLAYING. Subtracting @base_time from the current clock time in the PLAYING +state will yield the running_time against the clock. + + + + the running_time of the last PAUSED state + + + + number of pads of the element, includes both source and sink pads. + + + + list of pads + + + + + + number of source pads of the element. + + + + list of source pads + + + + + + number of sink pads of the element. + + + + list of sink pads + + + + + + updated whenever the a pad is added or removed + + + + list of contexts + + + + + + + + + + + This signals that the element will not generate more dynamic pads. +Note that this signal will usually be emitted from the context of +the streaming thread. + + + + + + a new #GstPad has been added to the element. Note that this signal will +usually be emitted from the context of the streaming thread. Also keep in +mind that if you add new elements to the pipeline in the signal handler +you will need to set them to the desired target state with +gst_element_set_state() or gst_element_sync_state_with_parent(). + + + + + + the pad that has been added + + + + + + a #GstPad has been removed from the element + + + + + + the pad that has been removed + + + + + + + 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 + + + + + + GStreamer element class. Override the vmethods to implement the element +functionality. + + + the parent class structure + + + + metadata for elements of this class + + + + the #GstElementFactory that creates these elements + + + + a #GList of #GstPadTemplate + + + + + + the number of padtemplates + + + + changed whenever the padtemplates change + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstElement + + + + + + + + + + requested #GstPad if found, + otherwise %NULL. Release after usage. + + + + + a #GstElement to find a request pad of. + + + + a #GstPadTemplate of which we want a pad of. + + + + the name of the request #GstPad +to retrieve. Can be %NULL. + + + + the caps of the pad we want to +request. Can be %NULL. + + + + + + + + + + + + + + + + + + + + + + + + + + %GST_STATE_CHANGE_SUCCESS if the element has no more pending state + and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the + element is still performing a state change or + %GST_STATE_CHANGE_FAILURE if the last state change failed. + +MT safe. + + + + + a #GstElement to get the state of. + + + + a pointer to #GstState to hold the state. + Can be %NULL. + + + + a pointer to #GstState to hold the pending + state. Can be %NULL. + + + + a #GstClockTime to specify the timeout for an async + state change or %GST_CLOCK_TIME_NONE for infinite timeout. + + + + + + + + + + Result of the state change using #GstStateChangeReturn. + +MT safe. + + + + + a #GstElement to change state of. + + + + the element's new #GstState. + + + + + + + + + + the #GstStateChangeReturn of the state transition. + + + + + a #GstElement + + + + the requested transition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstElement to set the bus of. + + + + the #GstBus to set. + + + + + + + + + + the GstClock provided by the +element or %NULL if no clock could be provided. Unref after usage. + +MT safe. + + + + + a #GstElement to query + + + + + + + + + + %TRUE if the element accepted the clock. An element can refuse a +clock when it, for example, is not able to slave its internal clock to the +@clock or when it requires a specific clock to operate. + +MT safe. + + + + + a #GstElement to set the clock for. + + + + the #GstClock to set for the element. + + + + + + + + + + %TRUE if the event was handled. Events that trigger a preroll (such +as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE. + + + + + a #GstElement to send the event to. + + + + the #GstEvent to send to the element. + + + + + + + + + + %TRUE if the query could be performed. + +MT safe. + + + + + a #GstElement to perform the query on. + + + + the #GstQuery. + + + + + + + + + + %TRUE if the message was successfully posted. The function returns +%FALSE if the element did not have a bus. + +MT safe. + + + + + a #GstElement posting the message + + + + a #GstMessage to post + + + + + + + + + + + + + + a #GstElement to set the context of. + + + + the #GstContext to set. + + + + + + + + + + + + Set @key with @value as metadata in @klass. + + + + + + + class to set metadata for + + + + the key to set + + + + the value to set + + + + + + Adds a padtemplate to an element class. This is mainly used in the _class_init +functions of classes. If a pad template with the same name as an already +existing one is added the old one is replaced by the new one. + +@templ's reference count will be incremented, and any floating +reference will be removed (see gst_object_ref_sink()) + + + + + + + the #GstElementClass to add the pad template to. + + + + a #GstPadTemplate to add to the element class. + + + + + + Set @key with @value as metadata in @klass. + +Same as gst_element_class_add_metadata(), but @value must be a static string +or an inlined string, as it will not be copied. (GStreamer plugins will +be made resident once loaded, so this function can be used even from +dynamically loaded plugins.) + + + + + + + class to set metadata for + + + + the key to set + + + + the value to set + + + + + + Adds a pad template to an element class based on the static pad template +@templ. This is mainly used in the _class_init functions of element +implementations. If a pad template with the same name already exists, +the old one is replaced by the new one. + + + + + + + the #GstElementClass to add the pad template to. + + + + #GstStaticPadTemplate to add as pad template to the element class. + + + + + + Adds a pad template to an element class based on the static pad template +@templ. This is mainly used in the _class_init functions of element +implementations. If a pad template with the same name already exists, +the old one is replaced by the new one. + + + + + + + the #GstElementClass to add the pad template to. + + + + #GstStaticPadTemplate to add as pad template to the element class. + + + + The #GType of the pad to create + + + + + + Get metadata with @key in @klass. + + + the metadata for @key. + + + + + class to get metadata for + + + + the key to get + + + + + + Retrieves a padtemplate from @element_class with the given name. +> If you use this function in the GInstanceInitFunc of an object class +> that has subclasses, make sure to pass the g_class parameter of the +> GInstanceInitFunc here. + + + the #GstPadTemplate with the + given name, or %NULL if none was found. No unreferencing is + necessary. + + + + + a #GstElementClass to get the pad template of. + + + + the name of the #GstPadTemplate to get. + + + + + + Retrieves a list of the pad templates associated with @element_class. The +list must not be modified by the calling code. +> If you use this function in the GInstanceInitFunc of an object class +> that has subclasses, make sure to pass the g_class parameter of the +> GInstanceInitFunc here. + + + the #GList of + pad templates. + + + + + + + a #GstElementClass to get pad templates of. + + + + + + Sets the detailed information for a #GstElementClass. +> This function is for use in _class_init functions only. + + + + + + + class to set metadata for + + + + The long English name of the element. E.g. "File Sink" + + + + String describing the type of element, as an unordered list +separated with slashes ('/'). See draft-klass.txt of the design docs +for more details and common types. E.g: "Sink/File" + + + + Sentence describing the purpose of the element. +E.g: "Write stream to a file" + + + + Name and contact details of the author(s). Use \n to separate +multiple author metadata. E.g: "Joe Bloggs &lt;joe.blogs at foo.com&gt;" + + + + + + Sets the detailed information for a #GstElementClass. + +> This function is for use in _class_init functions only. + +Same as gst_element_class_set_metadata(), but @longname, @classification, +@description, and @author must be static strings or inlined strings, as +they will not be copied. (GStreamer plugins will be made resident once +loaded, so this function can be used even from dynamically loaded plugins.) + + + + + + + class to set metadata for + + + + The long English name of the element. E.g. "File Sink" + + + + String describing the type of element, as an unordered list +separated with slashes ('/'). See draft-klass.txt of the design docs +for more details and common types. E.g: "Sink/File" + + + + Sentence describing the purpose of the element. +E.g: "Write stream to a file" + + + + Name and contact details of the author(s). Use \n to separate +multiple author metadata. E.g: "Joe Bloggs &lt;joe.blogs at foo.com&gt;" + + + + + + + #GstElementFactory is used to create instances of elements. A +GstElementFactory can be added to a #GstPlugin as it is also a +#GstPluginFeature. + +Use the gst_element_factory_find() and gst_element_factory_create() +functions to create element instances or use gst_element_factory_make() as a +convenient shortcut. + +The following code example shows you how to create a GstFileSrc element. + +## Using an element factory +|[<!-- language="C" --> + #include <gst/gst.h> + + GstElement *src; + GstElementFactory *srcfactory; + + gst_init (&argc, &argv); + + srcfactory = gst_element_factory_find ("filesrc"); + g_return_if_fail (srcfactory != NULL); + src = gst_element_factory_create (srcfactory, "src"); + g_return_if_fail (src != NULL); + ... +]| + + + Search for an element factory of the given name. Refs the returned +element factory; caller is responsible for unreffing. + + + #GstElementFactory if found, +%NULL otherwise + + + + + name of factory to find + + + + + + Filter out all the elementfactories in @list that can handle @caps in +the given direction. + +If @subsetonly is %TRUE, then only the elements whose pads templates +are a complete superset of @caps will be returned. Else any element +whose pad templates caps can intersect with @caps will be returned. + + + a #GList of + #GstElementFactory elements that match the given requisites. + Use #gst_plugin_feature_list_free after usage. + + + + + + + a #GList of + #GstElementFactory to filter + + + + + + a #GstCaps + + + + a #GstPadDirection to filter on + + + + whether to filter on caps subsets or not. + + + + + + Get a list of factories that match the given @type. Only elements +with a rank greater or equal to @minrank will be returned. +The list of factories is returned by decreasing rank. + + + a #GList of + #GstElementFactory elements. Use gst_plugin_feature_list_free() after + usage. + + + + + + + a #GstElementFactoryListType + + + + Minimum rank + + + + + + Create a new element of the type defined by the given element factory. +If name is %NULL, then the element will receive a guaranteed unique name, +consisting of the element factory name and a number. +If name is given, it will be given the name supplied. + + + new #GstElement or %NULL +if unable to create element + + + + + a named factory to instantiate + + + + name of new element, or %NULL to automatically create + a unique name + + + + + + Create a new element of the type defined by the given element factory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL +if unable to create element + + + + + a named factory to instantiate + + + + name of first property + + + + %NULL terminated list of properties + + + + + + Create a new element of the type defined by the given element factory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL +if unable to create element + + + + + a named factory to instantiate + + + + name of first property + + + + list of properties + + + + + + Create a new element of the type defined by the given elementfactory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL + if the element couldn't be created + + + + + a named factory to instantiate + + + + count of properties + + + + array of properties names + + + + + + array of associated properties values + + + + + + + + Checks if the factory can sink all possible capabilities. + + + %TRUE if the caps are fully compatible. + + + + + factory to query + + + + the caps to check + + + + + + Checks if the factory can sink any possible capability. + + + %TRUE if the caps have a common subset. + + + + + factory to query + + + + the caps to check + + + + + + Checks if the factory can src all possible capabilities. + + + %TRUE if the caps are fully compatible. + + + + + factory to query + + + + the caps to check + + + + + + Checks if the factory can src any possible capability. + + + %TRUE if the caps have a common subset. + + + + + factory to query + + + + the caps to check + + + + + + Create a new element of the type defined by the given elementfactory. +It will be given the name supplied, since all elements require a name as +their first argument. + + + new #GstElement or %NULL + if the element couldn't be created + + + + + factory to instantiate + + + + name of new element, or %NULL to automatically create + a unique name + + + + + + Create a new element of the type defined by the given elementfactory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL + if the element couldn't be created + + + + + factory to instantiate + + + + name of the first property + + + + %NULL terminated list of properties + + + + + + Create a new element of the type defined by the given elementfactory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL + if the element couldn't be created + + + + + factory to instantiate + + + + name of the first property + + + + list of properties + + + + + + Create a new element of the type defined by the given elementfactory. +The supplied list of properties, will be passed at object construction. + + + new #GstElement or %NULL + if the element couldn't be created + + + + + factory to instantiate + + + + count of properties + + + + array of properties names + + + + + + array of associated properties values + + + + + + + + Get the #GType for elements managed by this factory. The type can +only be retrieved if the element factory is loaded, which can be +assured with gst_plugin_feature_load(). + + + the #GType for elements managed by this factory or 0 if +the factory is not loaded. + + + + + factory to get managed #GType from + + + + + + Get the metadata on @factory with @key. + + + the metadata with @key on @factory or %NULL +when there was no metadata with the given @key. + + + + + a #GstElementFactory + + + + a key + + + + + + Get the available keys for the metadata on @factory. + + + +a %NULL-terminated array of key strings, or %NULL when there is no +metadata. Free with g_strfreev() when no longer needed. + + + + + + + a #GstElementFactory + + + + + + Gets the number of pad_templates in this factory. + + + the number of pad_templates + + + + + a #GstElementFactory + + + + + + Queries whether registered element managed by @factory needs to +be excluded from documentation system or not. + + + %TRUE if documentation should be skipped + + + + + a #GstElementFactory to query documentation skip + + + + + + Gets the #GList of #GstStaticPadTemplate for this factory. + + + the + static pad templates + + + + + + + a #GstElementFactory + + + + + + Gets a %NULL-terminated array of protocols this element supports or %NULL if +no protocols are supported. You may not change the contents of the returned +array, as it is still owned by the element factory. Use g_strdupv() to +make a copy of the protocol string array if you need to. + + + the supported protocols + or %NULL + + + + + + + a #GstElementFactory + + + + + + Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none. + + + type of URIs this element supports + + + + + a #GstElementFactory + + + + + + Check if @factory implements the interface with name @interfacename. + + + %TRUE when @factory implement the interface. + + + + + a #GstElementFactory + + + + an interface name + + + + + + Check if @factory is of the given types. + + + %TRUE if @factory is of @type. + + + + + a #GstElementFactory + + + + a #GstElementFactoryListType + + + + + + + + + + The standard flags that an element may have. + + ignore state changes from parent + + + the element is a sink + + + the element is a source. + + + the element can provide a clock + + + the element requires a clock + + + the element can use an index + + + offset to define more flags + + + + Function called for each pad when using gst_element_foreach_sink_pad(), +gst_element_foreach_src_pad(), or gst_element_foreach_pad(). + + + %FALSE to stop iterating pads, %TRUE to continue + + + + + the #GstElement + + + + a #GstPad + + + + user data passed to the foreach function + + + + + + The event class provides factory methods to construct events for sending +and functions to query (parse) received events. + +Events are usually created with gst_event_new_*() which takes event-type +specific parameters as arguments. +To send an event application will usually use gst_element_send_event() and +elements will use gst_pad_send_event() or gst_pad_push_event(). +The event should be unreffed with gst_event_unref() if it has not been sent. + +Events that have been received can be parsed with their respective +gst_event_parse_*() functions. It is valid to pass %NULL for unwanted details. + +Events are passed between elements in parallel to the data stream. Some events +are serialized with buffers, others are not. Some events only travel downstream, +others only upstream. Some events can travel both upstream and downstream. + +The events are used to signal special conditions in the datastream such as +EOS (end of stream) or the start of a new stream-segment. +Events are also used to flush the pipeline of any pending data. + +Most of the event API is used inside plugins. Applications usually only +construct and use seek events. +To do that gst_event_new_seek() is used to create a seek event. It takes +the needed parameters to specify seeking time and mode. +|[<!-- language="C" --> + GstEvent *event; + gboolean result; + ... + // construct a seek event to play the media from second 2 to 5, flush + // the pipeline to decrease latency. + event = gst_event_new_seek (1.0, + GST_FORMAT_TIME, + GST_SEEK_FLAG_FLUSH, + GST_SEEK_TYPE_SET, 2 * GST_SECOND, + GST_SEEK_TYPE_SET, 5 * GST_SECOND); + ... + result = gst_element_send_event (pipeline, event); + if (!result) + g_warning ("seek failed"); + ... +]| + + + the parent structure + + + + the #GstEventType of the event + + + + the timestamp of the event + + + + the sequence number of the event + + + + Create a new buffersize event. The event is sent downstream and notifies +elements that they should provide a buffer of the specified dimensions. + +When the @async flag is set, a thread boundary is preferred. + + + a new #GstEvent + + + + + buffer format + + + + minimum buffer size + + + + maximum buffer size + + + + thread behavior + + + + + + Create a new CAPS event for @caps. The caps event can only travel downstream +synchronized with the buffer flow and contains the format of the buffers +that will follow after the event. + + + the new CAPS event. + + + + + a #GstCaps + + + + + + Create a new custom-typed event. This can be used for anything not +handled by other event-specific functions to pass an event to another +element. + +Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro, +assigning a free number and filling in the correct direction and +serialization flags. + +New custom events can also be created by subclassing the event type if +needed. + + + the new custom event. + + + + + The type of the new event + + + + the structure for the event. The event will + take ownership of the structure. + + + + + + Create a new EOS event. The eos event can only travel downstream +synchronized with the buffer flow. Elements that receive the EOS +event on a pad can return #GST_FLOW_EOS as a #GstFlowReturn +when data after the EOS event arrives. + +The EOS event will travel down to the sink elements in the pipeline +which will then post the #GST_MESSAGE_EOS on the bus after they have +finished playing any buffered data. + +When all sinks have posted an EOS message, an EOS message is +forwarded to the application. + +The EOS event itself will not cause any state transitions of the pipeline. + + + the new EOS event. + + + + + Allocate a new flush start event. The flush start event can be sent +upstream and downstream and travels out-of-bounds with the dataflow. + +It marks pads as being flushing and will make them return +#GST_FLOW_FLUSHING when used for data flow with gst_pad_push(), +gst_pad_chain(), gst_pad_get_range() and gst_pad_pull_range(). +Any event (except a #GST_EVENT_FLUSH_STOP) received +on a flushing pad will return %FALSE immediately. + +Elements should unlock any blocking functions and exit their streaming +functions as fast as possible when this event is received. + +This event is typically generated after a seek to flush out all queued data +in the pipeline so that the new media is played as soon as possible. + + + a new flush start event. + + + + + Allocate a new flush stop event. The flush stop event can be sent +upstream and downstream and travels serialized with the dataflow. +It is typically sent after sending a FLUSH_START event to make the +pads accept data again. + +Elements can process this event synchronized with the dataflow since +the preceding FLUSH_START event stopped the dataflow. + +This event is typically generated to complete a seek and to resume +dataflow. + + + a new flush stop event. + + + + + if time should be reset + + + + + + Create a new GAP event. A gap event can be thought of as conceptually +equivalent to a buffer to signal that there is no data for a certain +amount of time. This is useful to signal a gap to downstream elements +which may wait for data, such as muxers or mixers or overlays, especially +for sparse streams such as subtitle streams. + + + the new GAP event. + + + + + the start time (pts) of the gap + + + + the duration of the gap + + + + + + 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 +running time before synchronising against the clock. + +The latency is mostly used in live sinks and is always expressed in +the time format. + + + a new #GstEvent + + + + + the new latency value + + + + + + Create a new navigation event from the given description. + + + a new #GstEvent + + + + + description of the event. The event will take + ownership of the structure. See #GstNavigation for more specific + constructors. + + + + + + Creates a new event containing information specific to a particular +protection system (uniquely identified by @system_id), by which that +protection system can acquire key(s) to decrypt a protected stream. + +In order for a decryption element to decrypt media +protected using a specific system, it first needs all the +protection system specific information necessary to acquire the decryption +key(s) for that stream. The functions defined here enable this information +to be passed in events from elements that extract it +(e.g., ISOBMFF demuxers, MPEG DASH demuxers) to protection decrypter +elements that use it. + +Events containing protection system specific information are created using +#gst_event_new_protection, and they can be parsed by downstream elements +using #gst_event_parse_protection. + +In Common Encryption, protection system specific information may be located +within ISOBMFF files, both in movie (moov) boxes and movie fragment (moof) +boxes; it may also be contained in ContentProtection elements within MPEG +DASH MPDs. The events created by #gst_event_new_protection contain data +identifying from which of these locations the encapsulated protection system +specific information originated. This origin information is required as +some protection systems use different encodings depending upon where the +information originates. + +The events returned by gst_event_new_protection() are implemented +in such a way as to ensure that the most recently-pushed protection info +event of a particular @origin and @system_id will +be stuck to the output pad of the sending element. + + + a #GST_EVENT_PROTECTION event. + + + + + a string holding a UUID that uniquely +identifies a protection system. + + + + a #GstBuffer holding protection system specific +information. The reference count of the buffer will be incremented by one. + + + + a string indicating where the protection +information carried in the event was extracted from. The allowed values +of this string will depend upon the protection scheme. + + + + + + Allocate a new qos event with the given values. +The QOS event is generated in an element that wants an upstream +element to either reduce or increase its rate because of +high/low CPU load or other resource usage such as network performance or +throttling. Typically sinks generate these events for each buffer +they receive. + +@type indicates the reason for the QoS event. #GST_QOS_TYPE_OVERFLOW is +used when a buffer arrived in time or when the sink cannot keep up with +the upstream datarate. #GST_QOS_TYPE_UNDERFLOW is when the sink is not +receiving buffers fast enough and thus has to drop late buffers. +#GST_QOS_TYPE_THROTTLE is used when the datarate is artificially limited +by the application, for example to reduce power consumption. + +@proportion indicates the real-time performance of the streaming in the +element that generated the QoS event (usually the sink). The value is +generally computed based on more long term statistics about the streams +timestamps compared to the clock. +A value < 1.0 indicates that the upstream element is producing data faster +than real-time. A value > 1.0 indicates that the upstream element is not +producing data fast enough. 1.0 is the ideal @proportion value. The +proportion value can safely be used to lower or increase the quality of +the element. + +@diff is the difference against the clock in running time of the last +buffer that caused the element to generate the QOS event. A negative value +means that the buffer with @timestamp arrived in time. A positive value +indicates how late the buffer with @timestamp was. When throttling is +enabled, @diff will be set to the requested throttling interval. + +@timestamp is the timestamp of the last buffer that cause the element +to generate the QOS event. It is expressed in running time and thus an ever +increasing value. + +The upstream element can use the @diff and @timestamp values to decide +whether to process more buffers. For positive @diff, all buffers with +timestamp <= @timestamp + @diff will certainly arrive late in the sink +as well. A (negative) @diff value so that @timestamp + @diff would yield a +result smaller than 0 is not allowed. + +The application can use general event probes to intercept the QoS +event and implement custom application specific QoS handling. + + + a new QOS event. + + + + + the QoS type + + + + the proportion of the qos message + + + + The time difference of the last Clock sync + + + + The timestamp of the buffer + + + + + + Create a new reconfigure event. The purpose of the reconfigure event is +to travel upstream and make elements renegotiate their caps or reconfigure +their buffer pools. This is useful when changing properties on elements +or changing the topology of the pipeline. + + + a new #GstEvent + + + + + Allocate a new seek event with the given parameters. + +The seek event configures playback of the pipeline between @start to @stop +at the speed given in @rate, also called a playback segment. +The @start and @stop values are expressed in @format. + +A @rate of 1.0 means normal playback rate, 2.0 means double speed. +Negatives values means backwards playback. A value of 0.0 for the +rate is not allowed and should be accomplished instead by PAUSING the +pipeline. + +A pipeline has a default playback segment configured with a start +position of 0, a stop position of -1 and a rate of 1.0. The currently +configured playback segment can be queried with #GST_QUERY_SEGMENT. + +@start_type and @stop_type specify how to adjust the currently configured +start and stop fields in playback segment. Adjustments can be made relative +or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE +means that the position should not be updated. + +When the rate is positive and @start has been updated, playback will start +from the newly configured start position. + +For negative rates, playback will start from the newly configured stop +position (if any). If the stop position is updated, it must be different from +-1 (#GST_CLOCK_TIME_NONE) for negative rates. + +It is not possible to seek relative to the current playback position, to do +this, PAUSE the pipeline, query the current playback position with +#GST_QUERY_POSITION and update the playback segment current position with a +#GST_SEEK_TYPE_SET to the desired position. + + + a new seek event. + + + + + The new playback rate + + + + The format of the seek values + + + + The optional seek flags + + + + The type and flags for the new start position + + + + The value of the new start position + + + + The type and flags for the new stop position + + + + The value of the new stop position + + + + + + Create a new SEGMENT event for @segment. The segment event can only travel +downstream synchronized with the buffer flow and contains timing information +and playback properties for the buffers that will follow. + +The segment event marks the range of buffers to be processed. All +data not within the segment range is not to be processed. This can be +used intelligently by plugins to apply more efficient methods of skipping +unneeded data. The valid range is expressed with the @start and @stop +values. + +The time value of the segment is used in conjunction with the start +value to convert the buffer timestamps into the stream time. This is +usually done in sinks to report the current stream_time. +@time represents the stream_time of a buffer carrying a timestamp of +@start. @time cannot be -1. + +@start cannot be -1, @stop can be -1. If there +is a valid @stop given, it must be greater or equal the @start, including +when the indicated playback @rate is < 0. + +The @applied_rate value provides information about any rate adjustment that +has already been made to the timestamps and content on the buffers of the +stream. (@rate * @applied_rate) should always equal the rate that has been +requested for playback. For example, if an element has an input segment +with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust +incoming timestamps and buffer content by half and output a segment event +with @rate of 1.0 and @applied_rate of 2.0 + +After a segment event, the buffer stream time is calculated with: + + time + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate) + + + the new SEGMENT event. + + + + + a #GstSegment + + + + + + Create a new segment-done event. This event is sent by elements that +finish playback of a segment as a result of a segment seek. + + + a new #GstEvent + + + + + The format of the position being done + + + + The position of the segment being done + + + + + + Allocate a new select-streams event. + +The select-streams event requests the specified @streams to be activated. + +The list of @streams corresponds to the "Stream ID" of each stream to be +activated. Those ID can be obtained via the #GstStream objects present +in #GST_EVENT_STREAM_START, #GST_EVENT_STREAM_COLLECTION or +#GST_MESSAGE_STREAM_COLLECTION. + +Note: The list of @streams can not be empty. + + + a new select-streams event. + + + + + the list of streams to +activate + + + + + + + + Create a new sink-message event. The purpose of the sink-message event is +to instruct a sink to post the message contained in the event synchronized +with the stream. + +@name is used to store multiple sticky events on one pad. + + + a new #GstEvent + + + + + a name for the event + + + + the #GstMessage to be posted + + + + + + Create a new step event. The purpose of the step event is to instruct a sink +to skip @amount (expressed in @format) of media. It can be used to implement +stepping through the video frame by frame or for doing fast trick modes. + +A rate of <= 0.0 is not allowed. Pause the pipeline, for the effect of rate += 0.0 or first reverse the direction of playback using a seek event to get +the same effect as rate < 0.0. + +The @flush flag will clear any pending data in the pipeline before starting +the step operation. + +The @intermediate flag instructs the pipeline that this step operation is +part of a larger step operation. + + + a new #GstEvent + + + + + the format of @amount + + + + the amount of data to step + + + + the step rate + + + + flushing steps + + + + intermediate steps + + + + + + Create a new STREAM_COLLECTION event. The stream collection event can only +travel downstream synchronized with the buffer flow. + +Source elements, demuxers and other elements that manage collections +of streams and post #GstStreamCollection messages on the bus also send +this event downstream on each pad involved in the collection, so that +activation of a new collection can be tracked through the downstream +data flow. + + + the new STREAM_COLLECTION event. + + + + + Active collection for this data flow + + + + + + Create a new Stream Group Done event. The stream-group-done event can +only travel downstream synchronized with the buffer flow. Elements +that receive the event on a pad should handle it mostly like EOS, +and emit any data or pending buffers that would depend on more data +arriving and unblock, since there won't be any more data. + +This event is followed by EOS at some point in the future, and is +generally used when switching pads - to unblock downstream so that +new pads can be exposed before sending EOS on the existing pads. + + + the new stream-group-done event. + + + + + the group id of the stream group which is ending + + + + + + Create a new STREAM_START event. The stream start event can only +travel downstream synchronized with the buffer flow. It is expected +to be the first event that is sent for a new stream. + +Source elements, demuxers and other elements that create new streams +are supposed to send this event as the first event of a new stream. It +should not be sent after a flushing seek or in similar situations +and is used to mark the beginning of a new logical stream. Elements +combining multiple streams must ensure that this event is only forwarded +downstream once and not for every single input stream. + +The @stream_id should be a unique string that consists of the upstream +stream-id, / as separator and a unique stream-id for this specific +stream. A new stream-id should only be created for a stream if the upstream +stream is split into (potentially) multiple new streams, e.g. in a demuxer, +but not for every single element in the pipeline. +gst_pad_create_stream_id() or gst_pad_create_stream_id_printf() can be +used to create a stream-id. There are no particular semantics for the +stream-id, though it should be deterministic (to support stream matching) +and it might be used to order streams (besides any information conveyed by +stream flags). + + + the new STREAM_START event. + + + + + Identifier for this stream + + + + + + Generates a metadata tag event from the given @taglist. + +The scope of the taglist specifies if the taglist applies to the +complete medium or only to this specific stream. As the tag event +is a sticky event, elements should merge tags received from +upstream with a given scope with their own tags with the same +scope and create a new tag event from it. + + + a new #GstEvent + + + + + metadata list. The event will take ownership + of the taglist. + + + + + + Generate a TOC event from the given @toc. The purpose of the TOC event is to +inform elements that some kind of the TOC was found. + + + a new #GstEvent. + + + + + #GstToc structure. + + + + whether @toc was updated or not. + + + + + + Generate a TOC select event with the given @uid. The purpose of the +TOC select event is to start playback based on the TOC's entry with the +given @uid. + + + a new #GstEvent. + + + + + UID in the TOC to start playback from. + + + + + + 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. + + + + + + + The event to parse + + + + a pointer to a #GstSegment + + + + + + Retrieve the accumulated running time offset of the event. + +Events passing through #GstPads that have a running time +offset set via gst_pad_set_offset() will get their offset +adjusted according to the pad's offset. + +If the event contains any information that related to the +running time, this information will need to be updated +before usage with this offset. + + + The event's running time offset + +MT safe. + + + + + A #GstEvent. + + + + + + Retrieve the sequence number of a event. + +Events have ever-incrementing sequence numbers, which may also be set +explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to +indicate that a event corresponds to some other set of events or messages, +for example an EOS event corresponding to a SEEK event. It is considered good +practice to make this correspondence when possible, though it is not +required. + +Note that events and messages share the same sequence number incrementor; +two events or messages will never have the same sequence number unless +that correspondence was made explicitly. + + + The event's sequence number. + +MT safe. + + + + + A #GstEvent. + + + + + + Access the structure of the event. + + + The structure of the event. The +structure is still owned by the event, which means that you should not free +it and that the pointer becomes invalid when you free the event. + +MT safe. + + + + + The #GstEvent. + + + + + + Checks if @event has the given @name. This function is usually used to +check the name of a custom event. + + + %TRUE if @name matches the name of the event structure. + + + + + The #GstEvent. + + + + name to check + + + + + + Checks if @event has the given @name. This function is usually used to +check the name of a custom event. + + + %TRUE if @name matches the name of the event structure. + + + + + The #GstEvent. + + + + name to check as a GQuark + + + + + + Get the format, minsize, maxsize and async-flag in the buffersize event. + + + + + + + The event to query + + + + A pointer to store the format in + + + + A pointer to store the minsize in + + + + A pointer to store the maxsize in + + + + A pointer to store the async-flag in + + + + + + Get the caps from @event. The caps remains valid as long as @event remains +valid. + + + + + + + The event to parse + + + + A pointer to the caps + + + + + + Parse the FLUSH_STOP event and retrieve the @reset_time member. + + + + + + + The event to parse + + + + if time should be reset + + + + + + Extract timestamp and duration from a new GAP event. + + + + + + + a #GstEvent of type #GST_EVENT_GAP + + + + location where to store the + start time (pts) of the gap, or %NULL + + + + location where to store the duration of + the gap, or %NULL + + + + + + Retrieve the gap flags that may have been set on a gap event with +gst_event_set_gap_flags(). + + + + + + + a #GstEvent of type #GST_EVENT_GAP + + + + a #GstGapFlags or %NULL + + + + + + + + %TRUE if a group id was set on the event and could be parsed, + %FALSE otherwise. + + + + + a stream-start event + + + + address of variable where to store the group id + + + + + + 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. + + + + + + + The event to query + + + + A pointer to store the latency in. + + + + + + Parses an event containing protection system specific information and stores +the results in @system_id, @data and @origin. The data stored in @system_id, +@origin and @data are valid until @event is released. + + + + + + + a #GST_EVENT_PROTECTION event. + + + + pointer to store the UUID +string uniquely identifying a content protection system. + + + + pointer to store a #GstBuffer +holding protection system specific information. + + + + pointer to store a value that +indicates where the protection information carried by @event was extracted +from. + + + + + + Get the type, proportion, diff and timestamp in the qos event. See +gst_event_new_qos() for more information about the different QoS values. + +@timestamp will be adjusted for any pad offsets of pads it was passing through. + + + + + + + The event to query + + + + A pointer to store the QoS type in + + + + A pointer to store the proportion in + + + + A pointer to store the diff in + + + + A pointer to store the timestamp in + + + + + + Parses a seek @event and stores the results in the given result locations. + + + + + + + a seek event + + + + result location for the rate + + + + result location for the stream format + + + + result location for the #GstSeekFlags + + + + result location for the #GstSeekType of the start position + + + + result location for the start position expressed in @format + + + + result location for the #GstSeekType of the stop position + + + + result location for the stop position expressed in @format + + + + + + Retrieve the trickmode interval that may have been set on a +seek event with gst_event_set_seek_trickmode_interval(). + + + + + + + + + + interval + + + + + + Parses a segment @event and stores the result in the given @segment location. +@segment remains valid only until the @event is freed. Don't modify the segment +and make a copy if you want to modify it or store it for later use. + + + + + + + The event to parse + + + + a pointer to a #GstSegment + + + + + + Extracts the position and format from the segment done message. + + + + + + + A valid #GstEvent of type GST_EVENT_SEGMENT_DONE. + + + + Result location for the format, or %NULL + + + + Result location for the position, or %NULL + + + + + + Parse the SELECT_STREAMS event and retrieve the contained streams. + + + + + + + The event to parse + + + + the streams + + + + + + + + Parse the sink-message event. Unref @msg after usage. + + + + + + + The event to query + + + + a pointer to store the #GstMessage in. + + + + + + Parse the step event. + + + + + + + The event to query + + + + a pointer to store the format in + + + + a pointer to store the amount in + + + + a pointer to store the rate in + + + + a pointer to store the flush boolean in + + + + a pointer to store the intermediate + boolean in + + + + + + Parse a stream-start @event and extract the #GstStream from it. + + + + + + + a stream-start event + + + + address of variable to store the stream + + + + + + Retrieve new #GstStreamCollection from STREAM_COLLECTION event @event. + + + + + + + a stream-collection event + + + + pointer to store the collection. + + + + + + + + + + + + a stream-start event + + + + address of variable where to store the stream flags + + + + + + Parse a stream-group-done @event and store the result in the given +@group_id location. + + + + + + + a stream-group-done event. + + + + address of variable to store the group id into + + + + + + Parse a stream-id @event and store the result in the given @stream_id +location. The string stored in @stream_id must not be modified and will +remain valid only until @event gets freed. Make a copy if you want to +modify it or store it for later use. + + + + + + + a stream-start event. + + + + pointer to store the stream-id + + + + + + Parses a tag @event and stores the results in the given @taglist location. +No reference to the taglist will be returned, it remains valid only until +the @event is freed. Don't modify or free the taglist, make a copy if you +want to modify it or store it for later use. + + + + + + + a tag event + + + + pointer to metadata list + + + + + + Parse a TOC @event and store the results in the given @toc and @updated locations. + + + + + + + a TOC event. + + + + pointer to #GstToc structure. + + + + pointer to store TOC updated flag. + + + + + + Parse a TOC select @event and store the results in the given @uid location. + + + + + + + a TOC select event. + + + + storage for the selection UID. + + + + + + Increase the refcount of this event. + + + @event (for convenience when doing assignments) + + + + + The event to refcount + + + + + + Sets @flags on @event to give additional information about the reason for +the #GST_EVENT_GAP. + + + + + + + a #GstEvent of type #GST_EVENT_GAP + + + + a #GstGapFlags + + + + + + 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 +same group id but different stream ids. The group id should change +each time the stream is started, resulting in different group ids +each time a file is played for example. + +Use gst_util_group_id_next() to get a new group id. + + + + + + + a stream-start event + + + + the group id to set + + + + + + Set the running time offset of a event. See +gst_event_get_running_time_offset() for more information. + +MT safe. + + + + + + + A #GstEvent. + + + + A the new running time offset + + + + + + Sets a trickmode interval on a (writable) seek event. Elements +that support TRICKMODE_KEY_UNITS seeks SHOULD use this as the minimal +interval between each frame they may output. + + + + + + + + + + + + + + + Set the sequence number of a event. + +This function might be called by the creator of a event to indicate that the +event relates to other events or messages. See gst_event_get_seqnum() for +more information. + +MT safe. + + + + + + + A #GstEvent. + + + + A sequence number. + + + + + + Set the @stream on the stream-start @event + + + + + + + a stream-start event + + + + the stream object to set + + + + + + + + + + + + a stream-start event + + + + the stream flags to set + + + + + + Decrease the refcount of an event, freeing it if the refcount reaches 0. + + + + + + + the event to refcount + + + + + + Get a writable version of the structure. + + + The structure of the event. The structure +is still owned by the event, which means that you should not free +it and that the pointer becomes invalid when you free the event. +This function ensures that @event is writable, and if so, will +never return %NULL. + +MT safe. + + + + + A writable #GstEvent. + + + + + + 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. + +The custom event types can be used for private messages between elements +that can't be expressed using normal +GStreamer buffer passing semantics. Custom events carry an arbitrary +#GstStructure. +Specific custom events are distinguished by the name of the structure. + + unknown event. + + + Start a flush operation. This event clears all data + from the pipeline and unblock all streaming threads. + + + Stop a flush operation. This event resets the + running-time of the pipeline. + + + Event to mark the start of a new stream. Sent before any + other serialized event and only sent at the start of a new stream, + not after flushing seeks. + + + #GstCaps event. Notify the pad of a new media type. + + + A new media segment follows in the dataflow. The + segment events contains information for clipping buffers and + converting buffer timestamps to running-time and + stream-time. + + + A new #GstStreamCollection is available (Since: 1.10) + + + A new set of metadata tags has been found in the stream. + + + Notification of buffering requirements. Currently not + used yet. + + + An event that sinks turn into a message. Used to + send messages that should be emitted in sync with + rendering. + + + Indicates that there is no more data for + the stream group ID in the message. Sent before EOS + in some instances and should be handled mostly the same. (Since: 1.10) + + + End-Of-Stream. No more data is to be expected to follow + without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT + event. + + + An event which indicates that a new table of contents (TOC) + was found or updated. + + + An event which indicates that new or updated + encryption information has been found in the stream. + + + Marks the end of a segment playback. + + + 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 + rate. + + + A request for a new playback position and rate. + + + Navigation events are usually used for communicating + user requests, such as mouse or keyboard movements, + to upstream elements. + + + Notification of new latency adjustment. Sinks will use + the latency information to adjust their synchronisation. + + + A request for stepping through the media. Sinks will usually + execute the step operation. + + + A request for upstream renegotiating caps and reconfiguring. + + + A request for a new playback position based on TOC + entry's UID. + + + 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 + + + Downstream custom event that travels in the + data flow. + + + Custom out-of-band downstream event. + + + Custom sticky downstream event. + + + Custom upstream or downstream event. + In-band when travelling downstream. + + + Custom upstream or downstream out-of-band event. + + + Gets the #GstEventTypeFlags associated with @type. + + + a #GstEventTypeFlags. + + + + + a #GstEventType + + + + + + Get a printable name for the given event type. Do not modify or free. + + + a reference to the static name of the event. + + + + + the event type + + + + + + Get the unique quark for the given event type. + + + the quark associated with the event type + + + + + the event type + + + + + + Converts the #GstEventType to an unsigned integer that +represents the ordering of sticky events when re-sending them. +A lower value represents a higher-priority event. + + + an unsigned integer + + + + + a #GstEventType + + + + + + + #GstEventTypeFlags indicate the aspects of the different #GstEventType +values. You can get the type flags of a #GstEventType with the +gst_event_type_get_flags() function. + + Set if the event can travel upstream. + + + Set if the event can travel downstream. + + + Set if the event should be serialized with data + flow. + + + Set if the event is sticky on the pads. + + + Multiple sticky events can be on a pad, each + identified by the event name. + + + + A mask value with all bits set, for use as a +GstFlagSet mask where all flag bits must match +exactly + + + + + The PERCENT format is between 0 and this value + + + + + The value used to scale down the reported PERCENT format value to +its real value. + + + + + Can be used together with #GST_FOURCC_FORMAT to properly output a +#guint32 fourcc value in a printf\()-style text message. + + + + a #guint32 fourcc value to output + + + + + Can be used together with #GST_FOURCC_ARGS to properly output a +#guint32 fourcc value in a printf\()-style text message. + +|[ +printf ("fourcc: %" GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS (fcc)); +]| + + + + + A fundamental type that describes a 32-bit flag bitfield, with 32-bit +mask indicating which of the bits in the field are explicitly set. + + Create a new sub-class of #GST_TYPE_FLAG_SET +which will pretty-print the human-readable flags +when serializing, for easier debugging. + + + + + + + a #GType of a #G_TYPE_FLAGS type. + + + + + + + The result of passing data to a pad. + +Note that the custom return values should not be exposed outside of the +element scope. + + Pre-defined custom success code. + + + Pre-defined custom success code (define your + custom success code to this to avoid compiler + warnings). + + + Elements can use values starting from + this (and higher) to define custom success + codes. + + + Data passing was ok. + + + Pad is not linked. + + + Pad is flushing. + + + Pad is EOS. + + + Pad is not negotiated. + + + Some (fatal) error occurred. Element generating + this error should post an error message using + GST_ELEMENT_ERROR() with more details. + + + This operation is not supported. + + + Elements can use values starting from + this (and lower) to define custom error codes. + + + Pre-defined custom error code (define your + custom error code to this to avoid compiler + warnings). + + + Pre-defined custom error code. + + + + Standard predefined formats + + undefined format + + + the default format of the pad/element. This can be + samples for raw audio, frames/fields for raw video (some, but not all, + elements support this; use @GST_FORMAT_TIME if you don't have a good + reason to query for samples/frames) + + + bytes + + + time in nanoseconds + + + buffers (few, if any, elements implement this as of + May 2009) + + + percentage of stream (few, if any, elements implement + this as of May 2009) + + + Return the format registered with the given nick. + + + The format with @nick or GST_FORMAT_UNDEFINED +if the format was not registered. + + + + + The nick of the format + + + + + + Get details about the given format. + + + The #GstFormatDefinition for @format or %NULL +on failure. + +MT safe. + + + + + The format to get details of + + + + + + Get a printable name for the given format. Do not modify or free. + + + a reference to the static name of the format +or %NULL if the format is unknown. + + + + + a #GstFormat + + + + + + Iterate all the registered formats. The format definition is read +only. + + + a GstIterator of #GstFormatDefinition. + + + + + Create a new GstFormat based on the nick or return an +already registered format with that nick. + + + A new GstFormat or an already registered format +with the same nick. + +MT safe. + + + + + The nick of the new format + + + + The description of the new format + + + + + + Get the unique quark for the given format. + + + the quark associated with the format or 0 if the format +is unknown. + + + + + a #GstFormat + + + + + + + A format definition + + + The unique id of this format + + + + A short nick of the format + + + + A longer description of the format + + + + A quark for the nick + + + + + A fundamental type that describes a fraction of an integer numerator +over an integer denominator + + + A fundamental type that describes a #GstFractionRange range + + + + + + + + + + + + + + + + + + + + + + + + A value which is guaranteed to never be returned by +gst_util_group_id_next(). + +Can be used as a default value in variables used to store group_id. + + + + + The different flags that can be set on #GST_EVENT_GAP events. See +gst_event_set_gap_flags() for details. + + The #GST_EVENT_GAP signals missing data, + for example because of packet loss. + + + + GhostPads are useful when organizing pipelines with #GstBin like elements. +The idea here is to create hierarchical element graphs. The bin element +contains a sub-graph. Now one would like to treat the bin-element like any +other #GstElement. This is where GhostPads come into play. A GhostPad acts as +a proxy for another pad. Thus the bin can have sink and source ghost-pads +that are associated with sink and source pads of the child elements. + +If the target pad is known at creation time, gst_ghost_pad_new() is the +function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target() +to create the ghost-pad and use gst_ghost_pad_set_target() to establish the +association later on. + +Note that GhostPads add overhead to the data processing of a pipeline. + + + Create a new ghostpad with @target as the target. The direction will be taken +from the target pad. @target must be unlinked. + +Will ref the target. + + + a new #GstPad, or %NULL in +case of an error. + + + + + the name of the new pad, or %NULL to assign a default name + + + + the pad to ghost. + + + + + + Create a new ghostpad with @target as the target. The direction will be taken +from the target pad. The template used on the ghostpad will be @template. + +Will ref the target. + + + a new #GstPad, or %NULL in +case of an error. + + + + + the name of the new pad, or %NULL to assign a default name. + + + + the pad to ghost. + + + + the #GstPadTemplate to use on the ghostpad. + + + + + + Create a new ghostpad without a target with the given direction. +A target can be set on the ghostpad later with the +gst_ghost_pad_set_target() function. + +The created ghostpad will not have a padtemplate. + + + a new #GstPad, or %NULL in +case of an error. + + + + + the name of the new pad, or %NULL to assign a default name. + + + + the direction of the ghostpad + + + + + + Create a new ghostpad based on @templ, without setting a target. The +direction will be taken from the @templ. + + + a new #GstPad, or %NULL in +case of an error. + + + + + the name of the new pad, or %NULL to assign a default name + + + + the #GstPadTemplate to create the ghostpad from. + + + + + + Invoke the default activate mode function of a ghost pad. + + + %TRUE if the operation was successful. + + + + + the #GstPad to activate or deactivate. + + + + the parent of @pad or %NULL + + + + the requested activation mode + + + + whether the pad should be active or not. + + + + + + Invoke the default activate mode function of a proxy pad that is +owned by a ghost pad. + + + %TRUE if the operation was successful. + + + + + the #GstPad to activate or deactivate. + + + + the parent of @pad or %NULL + + + + the requested activation mode + + + + whether the pad should be active or not. + + + + + + Finish initialization of a newly allocated ghost pad. + +This function is most useful in language bindings and when subclassing +#GstGhostPad; plugin and application developers normally will not call this +function. Call this function directly after a call to g_object_new +(GST_TYPE_GHOST_PAD, "direction", @dir, ..., NULL). + This function is deprecated since 1.18 and does nothing +anymore. + + + %TRUE if the construction succeeds, %FALSE otherwise. + + + + + the newly allocated ghost pad + + + + + + Get the target pad of @gpad. Unref target pad after usage. + + + the target #GstPad, can be +%NULL if the ghostpad has no target set. Unref target pad after +usage. + + + + + the #GstGhostPad + + + + + + Set the new target of the ghostpad @gpad. Any existing target +is unlinked and links to the new target are established. if @newtarget is +%NULL the target will be cleared. + + + %TRUE if the new target could be set. This function + can return %FALSE when the internal pads could not be linked. + + + + + the #GstGhostPad + + + + the new pad target + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Macro to cast to a #GstIterator + + + + the #GstIterator value + + + + + Macro to get the cookie of a #GstIterator. The cookie of the +iterator is the value of the master cookie when the iterator +was created. +Whenever the iterator is iterated, the value is compared to the +value of the master cookie. If they are different, a concurrent +modification happened to the iterator and a resync is needed. + + + + the #GstIterator to get the cookie of + + + + + Macro to get the lock protecting the datastructure being iterated. + + + + the #GstIterator to get the lock of + + + + + Macro to get a pointer to where the master cookie is stored. The +master cookie protects the structure being iterated and gets updated +whenever the datastructure changes. + + + + the #GstIterator to get the master cookie of + + + + + A fundamental type that describes a #gint64 range + + + A fundamental type that describes a #gint range + + + A GstIterator is used to retrieve multiple objects from another object in +a threadsafe way. + +Various GStreamer objects provide access to their internal structures using +an iterator. + +Note that if calling a GstIterator function results in your code receiving +a refcounted object (with, say, g_value_get_object()), the refcount for that +object will not be increased. Your code is responsible for taking a reference +if it wants to continue using it later. + +The basic use pattern of an iterator is as follows: +|[<!-- language="C" --> + GstIterator *it = _get_iterator(object); + GValue item = G_VALUE_INIT; + done = FALSE; + while (!done) { + switch (gst_iterator_next (it, &item)) { + case GST_ITERATOR_OK: + ...get/use/change item here... + g_value_reset (&item); + break; + case GST_ITERATOR_RESYNC: + ...rollback changes to items... + gst_iterator_resync (it); + break; + case GST_ITERATOR_ERROR: + ...wrong parameters were given... + done = TRUE; + break; + case GST_ITERATOR_DONE: + done = TRUE; + break; + } + } + g_value_unset (&item); + gst_iterator_free (it); +]| + + + The function to copy the iterator + + + + The function to get the next item in the iterator + + + + The function to be called for each item retrieved + + + + The function to call when a resync is needed. + + + + The function to call when the iterator is freed + + + + The iterator that is currently pushed with gst_iterator_push() + + + + The type of the object that this iterator will return + + + + The lock protecting the data structure and the cookie. + + + + The cookie; the value of the master_cookie when this iterator was + created. + + + + A pointer to the master cookie. + + + + the size of the iterator + + + + + + + + + Create a new iterator. This function is mainly used for objects +implementing the next/resync/free function to iterate a data structure. + +For each item retrieved, the @item function is called with the lock +held. The @free function is called when the iterator is freed. + + + the new #GstIterator. + +MT safe. + + + + + the size of the iterator structure + + + + #GType of children + + + + pointer to a #GMutex. + + + + pointer to a guint32 that is changed when the items in the + iterator changed. + + + + copy function + + + + function to get next item + + + + function to call on each item retrieved + + + + function to resync the iterator + + + + function to free the iterator + + + + + + Create a new iterator designed for iterating @list. + +The list you iterate is usually part of a data structure @owner and is +protected with @lock. + +The iterator will use @lock to retrieve the next item of the list and it +will then call the @item function before releasing @lock again. + +When a concurrent update to the list is performed, usually by @owner while +holding @lock, @master_cookie will be updated. The iterator implementation +will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to +the user of the iterator in the next call to gst_iterator_next(). + + + the new #GstIterator for @list. + +MT safe. + + + + + #GType of elements + + + + pointer to a #GMutex protecting the list. + + + + pointer to a guint32 that is incremented when the list + is changed. + + + + pointer to the list + + + + + + object owning the list + + + + function to call on each item retrieved + + + + + + This #GstIterator is a convenient iterator for the common +case where a #GstIterator needs to be returned but only +a single object has to be considered. This happens often +for the #GstPadIterIntLinkFunction. + + + the new #GstIterator for @object. + + + + + #GType of the passed object + + + + object that this iterator should return + + + + + + Copy the iterator and its state. + + + a new copy of @it. + + + + + a #GstIterator + + + + + + Create a new iterator from an existing iterator. The new iterator +will only return those elements that match the given compare function @func. +The first parameter that is passed to @func is the #GValue of the current +iterator element and the second parameter is @user_data. @func should +return 0 for elements that should be included in the filtered iterator. + +When this iterator is freed, @it will also be freed. + + + a new #GstIterator. + +MT safe. + + + + + The #GstIterator to filter + + + + the compare function to select elements + + + + user data passed to the compare function + + + + + + Find the first element in @it that matches the compare function @func. +@func should return 0 when the element is found. The first parameter +to @func will be the current element of the iterator and the +second parameter will be @user_data. +The result will be stored in @elem if a result is found. + +The iterator will not be freed. + +This function will return %FALSE if an error happened to the iterator +or if the element wasn't found. + + + Returns %TRUE if the element was found, else %FALSE. + +MT safe. + + + + + The #GstIterator to iterate + + + + the compare function to use + + + + pointer to a #GValue where to store the result + + + + user data passed to the compare function + + + + + + Folds @func over the elements of @iter. That is to say, @func will be called +as @func (object, @ret, @user_data) for each object in @it. The normal use +of this procedure is to accumulate the results of operating on the objects in +@ret. + +This procedure can be used (and is used internally) to implement the +gst_iterator_foreach() and gst_iterator_find_custom() operations. + +The fold will proceed as long as @func returns %TRUE. When the iterator has no +more arguments, %GST_ITERATOR_DONE will be returned. If @func returns %FALSE, +the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs +will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as +appropriate. + +The iterator will not be freed. + + + A #GstIteratorResult, as described above. + +MT safe. + + + + + The #GstIterator to fold over + + + + the fold function + + + + the seed value passed to the fold function + + + + user data passed to the fold function + + + + + + Iterate over all element of @it and call the given function @func for +each element. + + + the result call to gst_iterator_fold(). The iterator will not be +freed. + +MT safe. + + + + + The #GstIterator to iterate + + + + the function to call for each element. + + + + user data passed to the function + + + + + + Free the iterator. + +MT safe. + + + + + + + The #GstIterator to free + + + + + + Get the next item from the iterator in @elem. + +Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid +value. @elem must have been initialized to the type of the iterator or +initialized to zeroes with g_value_unset(). The caller is responsible for +unsetting or resetting @elem with g_value_unset() or g_value_reset() +after usage. + +When this function returns %GST_ITERATOR_DONE, no more elements can be +retrieved from @it. + +A return value of %GST_ITERATOR_RESYNC indicates that the element list was +concurrently updated. The user of @it should call gst_iterator_resync() to +get the newly updated list. + +A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error. + + + The result of the iteration. Unset @elem after usage. + +MT safe. + + + + + The #GstIterator to iterate + + + + pointer to hold next element + + + + + + Pushes @other iterator onto @it. All calls performed on @it are +forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is +popped again and calls are handled by @it again. + +This function is mainly used by objects implementing the iterator +next function to recurse into substructures. + +When gst_iterator_resync() is called on @it, @other will automatically be +popped. + +MT safe. + + + + + + + The #GstIterator to use + + + + The #GstIterator to push + + + + + + Resync the iterator. this function is mostly called +after gst_iterator_next() returned %GST_ITERATOR_RESYNC. + +When an iterator was pushed on @it, it will automatically be popped again +with this function. + +MT safe. + + + + + + + The #GstIterator to resync + + + + + + + This function will be called when creating a copy of @it and should +create a copy of all custom iterator fields or increase their +reference counts. + + + + + + + The original iterator + + + + The copied iterator + + + + + + A function to be passed to gst_iterator_fold(). + + + %TRUE if the fold should continue, %FALSE if it should stop. + + + + + the item to fold + + + + a #GValue collecting the result + + + + data passed to gst_iterator_fold() + + + + + + A function that is called by gst_iterator_foreach() for every element. + + + + + + + The item + + + + User data + + + + + + This function will be called when the iterator is freed. + +Implementors of a #GstIterator should implement this +function and pass it to the constructor of the custom iterator. +The function will be called with the iterator lock held. + + + + + + + the iterator + + + + + + The result of a #GstIteratorItemFunction. + + Skip this item + + + Return item + + + Stop after this item. + + + + The function that will be called after the next item of the iterator +has been retrieved. This function can be used to skip items or stop +the iterator. + +The function will be called with the iterator lock held. + + + the result of the operation. + + + + + the iterator + + + + the item being retrieved. + + + + + + The function that will be called when the next element of the iterator +should be retrieved. + +Implementors of a #GstIterator should implement this +function and pass it to the constructor of the custom iterator. +The function will be called with the iterator lock held. + + + the result of the operation. + + + + + the iterator + + + + a pointer to hold the next item + + + + + + The result of gst_iterator_next(). + + No more items in the iterator + + + An item was retrieved + + + Datastructure changed while iterating + + + An error happened + + + + This function will be called whenever a concurrent update happened +to the iterated datastructure. The implementor of the iterator should +restart the iterator from the beginning and clean up any state it might +have. + +Implementors of a #GstIterator should implement this +function and pass it to the constructor of the custom iterator. +The function will be called with the iterator lock held. + + + + + + + the iterator + + + + + + To be used in GST_PLUGIN_DEFINE if unsure about the licence. + + + + + GstLockFlags value alias for GST_LOCK_FLAG_READ | GST_LOCK_FLAG_WRITE + + + + + Library errors are for errors from the library being used by elements +(initializing, finalizing, settings, ...) + + a general error which doesn't fit in any other +category. Make sure you add a custom message to the error call. + + + do not use this except as a placeholder for +deciding where to go while developing code. + + + used when the library could not be opened. + + + used when the library could not be closed. + + + used when the library doesn't accept settings. + + + used when the library generated an encoding error. + + + the number of library error types. + + + + + + + + + + Flags used when locking miniobjects + + lock for read access + + + lock for write access + + + lock for exclusive access + + + first flag that can be used for custom purposes + + + + Function prototype for a logging function that can be registered with +gst_debug_add_log_function(). +Use G_GNUC_NO_INSTRUMENT on that function. + + + + + + + a #GstDebugCategory + + + + a #GstDebugLevel + + + + file name + + + + function name + + + + line number + + + + a #GObject + + + + the message + + + + user data for the log function + + + + + + Transform four characters into a #guint32 fourcc value with host +endianness. + +|[ +guint32 fourcc = GST_MAKE_FOURCC ('M', 'J', 'P', 'G'); +]| + + + + the first character + + + the second character + + + the third character + + + the fourth character + + + + + GstMapFlags value alias for GST_MAP_READ | GST_MAP_WRITE + + + + + Output a hexdump of @data. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + Output a logging message belonging to the given object in the default category. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + An identifier of the message provider + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + Output a logging message belonging to the given object in the default category. + +There is no need to finish the end of the message string with a newline +character, a newline character will be added automatically. + + + + the #GObject the message belongs to + + + message string to log with the data + + + pointer to the data to output + + + length of the data to output + + + + + + + + + + + + A flags word containing #GstMemoryFlags flags set on @mem + + + + a #GstMemory. + + + + + Gives the status of a specific flag on a @mem. + + + + a #GstMemory. + + + the #GstMemoryFlags to check. + + + + + Clear a specific flag on a @mem. + + + + a #GstMemory. + + + the #GstMemoryFlags to clear. + + + + + Check if @mem can't be mapped via gst_memory_map() without any preconditions + + + + a #GstMemory. + + + + + Check if @mem cannot be shared between buffers + + + + a #GstMemory. + + + + + Check if @mem is physically contiguous. + + + + a #GstMemory. + + + + + Check if @mem is readonly. + + + + a #GstMemory. + + + + + Check if the padding in @mem is 0 filled. + + + + a #GstMemory. + + + + + Check if the prefix in @mem is 0 filled. + + + + a #GstMemory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the sequence number of @message. + + + + a #GstMessage + + + + + + + + + + + + Get the object that posted @message. + + + + a #GstMessage + + + + + Get the name of the object that posted @message. Returns "(NULL)" if +the message has no source object set. + + + + a #GstMessage + + + + + Get the timestamp of @message. This is the timestamp when the message +was created. + + + + a #GstMessage + + + + + Get the #GstMessageType of @message. + + + + a #GstMessage + + + + + Check if the message is in the extended message group + + + + a #GstMessage + + + + + Get a constant string representation of the #GstMessageType of @message. + + + + a #GstMessage + + + + + + + + + + + + + + + + + + + + + + + + + + A flags word containing #GstMetaFlags flags set on @meta + + + + a #GstMeta. + + + + + Gives the status of a specific flag on a metadata. + + + + a #GstMeta. + + + the #GstMetaFlags to check. + + + + + Sets a metadata flag on a metadata. + + + + a #GstMeta. + + + the #GstMetaFlags to set. + + + + + Clears a metadata flag. + + + + a #GstMeta. + + + the #GstMetaFlags to clear. + + + + + This metadata stays relevant until a deep copy is made. + + + + + This metadata stays relevant as long as memory layout is unchanged. +In hindsight, this tag should have been called "memory-layout". + + + + + Check if the transform type is a copy transform + + + + a transform type + + + + + + + + + + + + + + + + + + + + + + + + + + This macro returns the entire set of flags for the mini-object. + + + + MiniObject to return flags for. + + + + + This macro checks to see if the given flag is set. + + + + MiniObject to check for flags. + + + Flag to check for + + + + + This macro sets the given bits. + + + + MiniObject to set flag in. + + + Flag to set, can by any number of bits in guint32. + + + + + This macro unsets the given bits. + + + + MiniObject to unset flag in. + + + Flag to set, must be a single bit in guint32. + + + + + Check if @obj is lockable. A lockable object can be locked and unlocked with +gst_mini_object_lock() and gst_mini_object_unlock(). + + + + a #GstMiniObject + + + + + Get access to the reference count field of the mini-object. + + + + a #GstMiniObject + + + + + Get the reference count value of the mini-object. + + + + a #GstMiniObject + + + + + This macro returns the type of the mini-object. + + + + MiniObject to return type for. + + + + + Constant that defines one GStreamer millisecond. + + + + + Flags used when mapping memory + + map for read access + + + map for write access + + + first flag that can be used for custom purposes + + + + A structure containing the result of a map operation such as +gst_memory_map(). It contains the data and size. + +#GstMapInfo cannot be used with g_auto() because it is ambiguous whether it +needs to be unmapped using gst_buffer_unmap() or gst_memory_unmap(). Instead, +#GstBufferMapInfo and #GstMemoryMapInfo can be used in that case. + + + a pointer to the mapped memory + + + + flags used when mapping the memory + + + + a pointer to the mapped data + + + + + + the valid size in @data + + + + the maximum bytes in @data + + + + extra private user_data that the implementation of the memory + can use to store extra info. + + + + + + + + + + + + GstMemory is a lightweight refcounted object that wraps a region of memory. +They are typically used to manage the data of a #GstBuffer. + +A GstMemory object has an allocated region of memory of maxsize. The maximum +size does not change during the lifetime of the memory object. The memory +also has an offset and size property that specifies the valid range of memory +in the allocated region. + +Memory is usually created by allocators with a gst_allocator_alloc() +method call. When %NULL is used as the allocator, the default allocator will +be used. + +New allocators can be registered with gst_allocator_register(). +Allocators are identified by name and can be retrieved with +gst_allocator_find(). gst_allocator_set_default() can be used to change the +default allocator. + +New memory can be created with gst_memory_new_wrapped() that wraps the memory +allocated elsewhere. + +Refcounting of the memory block is performed with gst_memory_ref() and +gst_memory_unref(). + +The size of the memory can be retrieved and changed with +gst_memory_get_sizes() and gst_memory_resize() respectively. + +Getting access to the data of the memory is performed with gst_memory_map(). +The call will return a pointer to offset bytes into the region of memory. +After the memory access is completed, gst_memory_unmap() should be called. + +Memory can be copied with gst_memory_copy(), which will return a writable +copy. gst_memory_share() will create a new memory block that shares the +memory with an existing memory block at a custom offset and with a custom +size. + +Memory can be efficiently merged when gst_memory_is_span() returns %TRUE. + + + parent structure + + + + pointer to the #GstAllocator + + + + parent memory block + + + + the maximum size allocated + + + + the alignment of the memory + + + + the offset where valid data starts + + + + the size of valid data + + + + Allocate a new memory block that wraps the given @data. + +The prefix/padding must be filled with 0 if @flags contains +#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED respectively. + + + a new #GstMemory. + + + + + #GstMemoryFlags + + + + data to + wrap + + + + + + allocated size of @data + + + + offset in @data + + + + size of valid data + + + + user_data + + + + called with @user_data when the memory is freed + + + + + + Return a copy of @size bytes from @mem starting from @offset. This copy is +guaranteed to be writable. @size can be set to -1 to return a copy +from @offset to the end of the memory region. + + + a new copy of @mem if the copy succeeded, %NULL otherwise. + + + + + a #GstMemory + + + + offset to copy from + + + + size to copy, or -1 to copy to the end of the memory region + + + + + + Get the current @size, @offset and @maxsize of @mem. + + + the current size of @mem + + + + + a #GstMemory + + + + pointer to offset + + + + pointer to maxsize + + + + + + Initializes a newly allocated @mem with the given parameters. This function +will call gst_mini_object_init() with the default memory parameters. + + + + + + + a #GstMemory + + + + #GstMemoryFlags + + + + the #GstAllocator + + + + the parent of @mem + + + + the total size of the memory + + + + the alignment of the memory + + + + The offset in the memory + + + + the size of valid data in the memory + + + + + + Check if @mem1 and mem2 share the memory with a common parent memory object +and that the memory is contiguous. + +If this is the case, the memory of @mem1 and @mem2 can be merged +efficiently by performing gst_memory_share() on the parent object from +the returned @offset. + + + %TRUE if the memory is contiguous and of a common parent. + + + + + a #GstMemory + + + + a #GstMemory + + + + a pointer to a result offset + + + + + + Check if @mem if allocated with an allocator for @mem_type. + + + %TRUE if @mem was allocated from an allocator for @mem_type. + + + + + a #GstMemory + + + + a memory type + + + + + + Create a #GstMemory object that is mapped with @flags. If @mem is mappable +with @flags, this function returns the mapped @mem directly. Otherwise a +mapped copy of @mem is returned. + +This function takes ownership of old @mem and returns a reference to a new +#GstMemory. + + + a #GstMemory object mapped +with @flags or %NULL when a mapping is not possible. + + + + + a #GstMemory + + + + pointer for info + + + + mapping flags + + + + + + Fill @info with the pointer and sizes of the memory in @mem that can be +accessed according to @flags. + +This function can return %FALSE for various reasons: +- the memory backed by @mem is not accessible with the given @flags. +- the memory was already mapped with a different mapping. + +@info and its contents remain valid for as long as @mem is valid and +until gst_memory_unmap() is called. + +For each gst_memory_map() call, a corresponding gst_memory_unmap() call +should be done. + + + %TRUE if the map operation was successful. + + + + + a #GstMemory + + + + pointer for info + + + + mapping flags + + + + + + 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. + +#GST_MEMORY_FLAG_ZERO_PREFIXED and #GST_MEMORY_FLAG_ZERO_PADDED will be +cleared when offset or padding is increased respectively. + + + + + + + a #GstMemory + + + + a new offset + + + + a new size + + + + + + Return a shared copy of @size bytes from @mem starting from @offset. No +memory copy is performed and the memory region is simply shared. The result +is guaranteed to be non-writable. @size can be set to -1 to return a shared +copy from @offset to the end of the memory region. + + + a new #GstMemory. + + + + + a #GstMemory + + + + offset to share from + + + + size to share, or -1 to share to the end of the memory region + + + + + + Release the memory obtained with gst_memory_map() + + + + + + + a #GstMemory + + + + a #GstMapInfo + + + + + + 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 +new GstMemory object. +If @size is set to -1, all bytes starting at @offset are copied. + + + a new #GstMemory object wrapping a copy of the requested region in +@mem. + + + + + a #GstMemory + + + + an offset + + + + a size or -1 + + + + + + Flags for wrapped memory. + + memory is readonly. It is not allowed to map the +memory with #GST_MAP_WRITE. + + + memory must not be shared. Copies will have to be +made when this memory needs to be shared between buffers. (DEPRECATED: +do not use in new code, instead you should create a custom GstAllocator for +memory pooling instead of relying on the GstBuffer they were originally +attached to.) + + + the memory prefix is filled with 0 bytes + + + the memory padding is filled with 0 bytes + + + the memory is physically +contiguous. (Since: 1.2) + + + the memory can't be mapped via +gst_memory_map() without any preconditions. (Since: 1.2) + + + first flag that can be used for custom purposes + + + + Check if @mem1 and @mem2 occupy contiguous memory and return the offset of +@mem1 in the parent buffer in @offset. + + + %TRUE if @mem1 and @mem2 are in contiguous memory. + + + + + a #GstMemory + + + + a #GstMemory + + + + a result offset + + + + + + Get the memory of @mem that can be accessed according to the mode specified +in @info's flags. The function should return a pointer that contains at least +@maxsize bytes. + + + a pointer to memory of which at least @maxsize bytes can be +accessed according to the access pattern in @info's flags. + + + + + a #GstMemory + + + + the #GstMapInfo to map with + + + + size to map + + + + + + Get the memory of @mem that can be accessed according to the mode specified +in @flags. The function should return a pointer that contains at least +@maxsize bytes. + + + a pointer to memory of which at least @maxsize bytes can be +accessed according to the access pattern in @flags. + + + + + a #GstMemory + + + + size to map + + + + access mode for the memory + + + + + + Share @size bytes from @mem starting at @offset and return them wrapped in a +new GstMemory object. If @size is set to -1, all bytes starting at @offset are +shared. This function does not make a copy of the bytes in @mem. + + + a new #GstMemory object sharing the requested region in @mem. + + + + + a #GstMemory + + + + an offset + + + + a size or -1 + + + + + + Release the pointer previously retrieved with gst_memory_map() with @info. + + + + + + + a #GstMemory + + + + a #GstMapInfo + + + + + + Release the pointer previously retrieved with gst_memory_map(). + + + + + + + a #GstMemory + + + + + + Messages are implemented as a subclass of #GstMiniObject with a generic +#GstStructure as the content. This allows for writing custom messages without +requiring an API change while allowing a wide range of different types +of messages. + +Messages are posted by objects in the pipeline and are passed to the +application using the #GstBus. + +The basic use pattern of posting a message on a #GstBus is as follows: +|[<!-- language="C" --> + gst_bus_post (bus, gst_message_new_eos()); +]| + +A #GstElement usually posts messages on the bus provided by the parent +container using gst_element_post_message(). + + + the parent structure + + + + the #GstMessageType of the message + + + + the timestamp of the message + + + + the src of the message + + + + the sequence number of the message + + + + + + + + + + Create a new application-typed message. GStreamer will never create these +messages; they are a gift from us to you. Enjoy. + + + The new application message. + +MT safe. + + + + + The object originating the message. + + + + the structure for the message. The message + will take ownership of the structure. + + + + + + The message is posted when elements completed an ASYNC state change. +@running_time contains the time of the desired running_time when this +elements goes to PLAYING. A value of #GST_CLOCK_TIME_NONE for @running_time +means that the element has no clock interaction and thus doesn't care about +the running_time of the pipeline. + + + The new async_done message. + +MT safe. + + + + + The object originating the message. + + + + the desired running_time + + + + + + This message is posted by elements when they start an ASYNC state change. + + + The new async_start message. + +MT safe. + + + + + The object originating the message. + + + + + + Create a new buffering message. This message can be posted by an element that +needs to buffer data before it can continue processing. @percent should be a +value between 0 and 100. A value of 100 means that the buffering completed. + +When @percent is < 100 the application should PAUSE a PLAYING pipeline. When +@percent is 100, the application can set the pipeline (back) to PLAYING. +The application must be prepared to receive BUFFERING messages in the +PREROLLING state and may only set the pipeline to PLAYING after receiving a +message with @percent set to 100, which can happen after the pipeline +completed prerolling. + +MT safe. + + + The new buffering message. + + + + + The object originating the message. + + + + The buffering percent + + + + + + Create a clock lost message. This message is posted whenever the +clock is not valid anymore. + +If this message is posted by the pipeline, the pipeline will +select a new clock again when it goes to PLAYING. It might therefore +be needed to set the pipeline to PAUSED and PLAYING again. + + + The new clock lost message. + +MT safe. + + + + + The object originating the message. + + + + the clock that was lost + + + + + + Create a clock provide message. This message is posted whenever an +element is ready to provide a clock or lost its ability to provide +a clock (maybe because it paused or became EOS). + +This message is mainly used internally to manage the clock +selection. + + + the new provide clock message. + +MT safe. + + + + + The object originating the message. + + + + the clock it provides + + + + %TRUE if the sender can provide a clock + + + + + + Create a new custom-typed message. This can be used for anything not +handled by other message-specific functions to pass a message to the +app. The structure field can be %NULL. + + + The new message. + +MT safe. + + + + + The #GstMessageType to distinguish messages + + + + The object originating the message. + + + + the structure for the + message. The message will take ownership of the structure. + + + + + + Creates a new device-added message. The device-added message is produced by +#GstDeviceProvider or a #GstDeviceMonitor. They announce the appearance +of monitored devices. + + + a newly allocated #GstMessage + + + + + The #GstObject that created the message + + + + The new #GstDevice + + + + + + Creates a new device-changed message. The device-changed message is produced +by #GstDeviceProvider or a #GstDeviceMonitor. They announce that a device +properties has changed and @device represent the new modified version of @changed_device. + + + a newly allocated #GstMessage + + + + + The #GstObject that created the message + + + + The newly created device representing @changed_device + with its new configuration. + + + + The old version of the device. + + + + + + Creates a new device-removed message. The device-removed message is produced +by #GstDeviceProvider or a #GstDeviceMonitor. They announce the +disappearance of monitored devices. + + + a newly allocated #GstMessage + + + + + The #GstObject that created the message + + + + The removed #GstDevice + + + + + + Create a new duration changed message. This message is posted by elements +that know the duration of a stream when the duration changes. This message +is received by bins and is used to calculate the total duration of a +pipeline. + + + The new duration-changed message. + +MT safe. + + + + + The object originating the message. + + + + + + Create a new element-specific message. This is meant as a generic way of +allowing one-way communication from an element to an application, for example +"the firewire cable was unplugged". The format of the message should be +documented in the element's documentation. The structure field can be %NULL. + + + The new element message. + +MT safe. + + + + + The object originating the message. + + + + The structure for the + message. The message will take ownership of the structure. + + + + + + Create a new eos message. This message is generated and posted in +the sink elements of a GstBin. The bin will only forward the EOS +message to the application if all sinks have posted an EOS message. + + + The new eos message. + +MT safe. + + + + + The object originating the message. + + + + + + Create a new error message. The message will copy @error and +@debug. This message is posted by element when a fatal event +occurred. The pipeline will probably (partially) stop. The application +receiving this message should stop the pipeline. + + + the new error message. + +MT safe. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + + + Create a new error message. The message will copy @error and +@debug. This message is posted by element when a fatal event +occurred. The pipeline will probably (partially) stop. The application +receiving this message should stop the pipeline. + + + the new error message. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + A GstStructure with details + + + + + + This message is posted when an element has a new local #GstContext. + + + The new have-context message. + +MT safe. + + + + + The object originating the message. + + + + the context + + + + + + Create a new info message. The message will make copies of @error and +@debug. + + + the new info message. + +MT safe. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + + + Create a new info message. The message will make copies of @error and +@debug. + + + the new warning message. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + A GstStructure with details + + + + + + 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. + + + The new latency message. + +MT safe. + + + + + The object originating the message. + + + + + + This message is posted when an element needs a specific #GstContext. + + + The new need-context message. + +MT safe. + + + + + The object originating the message. + + + + The context type that is needed + + + + + + Create a new clock message. This message is posted whenever the +pipeline selects a new clock for the pipeline. + + + The new new clock message. + +MT safe. + + + + + The object originating the message. + + + + the new selected clock + + + + + + Progress messages are posted by elements when they use an asynchronous task +to perform actions triggered by a state change. + +@code contains a well defined string describing the action. +@text should contain a user visible string detailing the current action. + + + The new qos message. + + + + + The object originating the message. + + + + a #GstProgressType + + + + a progress code + + + + free, user visible text describing the progress + + + + + + + + a newly allocated #GstMessage + + + + + The #GstObject whose property changed (may or may not be a #GstElement) + + + + name of the property that changed + + + + new property value, or %NULL + + + + + + A QOS message is posted on the bus whenever an element decides to drop a +buffer because of QoS reasons or whenever it changes its processing strategy +because of QoS reasons (quality adjustments such as processing at lower +accuracy). + +This message can be posted by an element that performs synchronisation against the +clock (live) or it could be dropped by an element that performs QoS because of QOS +events received from a downstream element (!live). + +@running_time, @stream_time, @timestamp, @duration should be set to the +respective running-time, stream-time, timestamp and duration of the (dropped) +buffer that generated the QoS event. Values can be left to +GST_CLOCK_TIME_NONE when unknown. + + + The new qos message. + +MT safe. + + + + + The object originating the message. + + + + if the message was generated by a live element + + + + the running time of the buffer that generated the message + + + + the stream time of the buffer that generated the message + + + + the timestamps of the buffer that generated the message + + + + the duration of the buffer that generated the message + + + + + + Creates a new redirect message and adds a new entry to it. Redirect messages +are posted when an element detects that the actual data has to be retrieved +from a different location. This is useful if such a redirection cannot be +handled inside a source element, for example when HTTP 302/303 redirects +return a non-HTTP URL. + +The redirect message can hold multiple entries. The first one is added +when the redirect message is created, with the given location, tag_list, +entry_struct arguments. Use gst_message_add_redirect_entry() to add more +entries. + +Each entry has a location, a tag list, and a structure. All of these are +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 +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 +bitrate tag. + +The specified location string is copied. However, ownership over the tag +list and structure are transferred to the message. + + + a newly allocated #GstMessage + + + + + The #GstObject whose property changed (may or may not be a #GstElement) + + + + location string for the new entry + + + + tag list for the new entry + + + + structure for the new entry + + + + + + This message can be posted by elements when they want to have their state +changed. A typical use case would be an audio server that wants to pause the +pipeline because a higher priority stream is being played. + + + the new request state message. + +MT safe. + + + + + The object originating the message. + + + + The new requested state + + + + + + This message is posted when the pipeline running-time should be reset to +@running_time, like after a flushing seek. + + + The new reset_time message. + +MT safe. + + + + + The object originating the message. + + + + the requested running-time + + + + + + Create a new segment done message. This message is posted by elements that +finish playback of a segment as a result of a segment seek. This message +is received by the application after all elements that posted a segment_start +have posted the segment_done. + + + the new segment done message. + +MT safe. + + + + + The object originating the message. + + + + The format of the position being done + + + + The position of the segment being done + + + + + + Create a new segment message. This message is posted by elements that +start playback of a segment as a result of a segment seek. This message +is not received by the application but is used for maintenance reasons in +container elements. + + + the new segment start message. + +MT safe. + + + + + The object originating the message. + + + + The format of the position being played + + + + The position of the segment being played + + + + + + Create a state change message. This message is posted whenever an element +changed its state. + + + the new state change message. + +MT safe. + + + + + The object originating the message. + + + + the previous state + + + + the new (current) state + + + + the pending (target) state + + + + + + Create a state dirty message. This message is posted whenever an element +changed its state asynchronously and is used internally to update the +states of container objects. + + + the new state dirty message. + +MT safe. + + + + + The object originating the message + + + + + + This message is posted by elements when they complete a part, when @intermediate set +to %TRUE, or a complete step operation. + +@duration will contain the amount of time (in GST_FORMAT_TIME) of the stepped +@amount of media in format @format. + + + the new step_done message. + +MT safe. + + + + + The object originating the message. + + + + the format of @amount + + + + the amount of stepped data + + + + the rate of the stepped amount + + + + is this an flushing step + + + + is this an intermediate step + + + + the duration of the data + + + + the step caused EOS + + + + + + This message is posted by elements when they accept or activate a new step +event for @amount in @format. + +@active is set to %FALSE when the element accepted the new step event and has +queued it for execution in the streaming threads. + +@active is set to %TRUE when the element has activated the step operation and +is now ready to start executing the step in the streaming thread. After this +message is emitted, the application can queue a new step operation in the +element. + + + The new step_start message. + +MT safe. + + + + + The object originating the message. + + + + if the step is active or queued + + + + the format of @amount + + + + the amount of stepped data + + + + the rate of the stepped amount + + + + is this an flushing step + + + + is this an intermediate step + + + + + + Creates a new stream-collection message. The message is used to announce new +#GstStreamCollection + + + a newly allocated #GstMessage + + + + + The #GstObject that created the message + + + + The #GstStreamCollection + + + + + + Create a new stream_start message. This message is generated and posted in +the sink elements of a GstBin. The bin will only forward the STREAM_START +message to the application if all sinks have posted an STREAM_START message. + + + The new stream_start message. + +MT safe. + + + + + The object originating the message. + + + + + + Create a new stream status message. This message is posted when a streaming +thread is created/destroyed or when the state changed. + + + the new stream status message. + +MT safe. + + + + + The object originating the message. + + + + The stream status type. + + + + the owner element of @src. + + + + + + Creates a new steams-selected message. The message is used to announce +that an array of streams has been selected. This is generally in response +to a #GST_EVENT_SELECT_STREAMS event, or when an element (such as decodebin3) +makes an initial selection of streams. + +The message also contains the #GstStreamCollection to which the various streams +belong to. + +Users of gst_message_new_streams_selected() can add the selected streams with +gst_message_streams_selected_add(). + + + a newly allocated #GstMessage + + + + + The #GstObject that created the message + + + + The #GstStreamCollection + + + + + + Create a new structure change message. This message is posted when the +structure of a pipeline is in the process of being changed, for example +when pads are linked or unlinked. + +@src should be the sinkpad that unlinked or linked. + + + the new structure change message. + +MT safe. + + + + + The object originating the message. + + + + The change type. + + + + The owner element of @src. + + + + Whether the structure change is busy. + + + + + + Create a new tag message. The message will take ownership of the tag list. +The message is posted by elements that discovered a new taglist. + + + the new tag message. + +MT safe. + + + + + The object originating the message. + + + + the tag list for the message. + + + + + + Create a new TOC message. The message is posted by elements +that discovered or updated a TOC. + + + a new TOC message. + +MT safe. + + + + + the object originating the message. + + + + #GstToc structure for the message. + + + + whether TOC was updated or not. + + + + + + Create a new warning message. The message will make copies of @error and +@debug. + + + the new warning message. + +MT safe. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + + + Create a new warning message. The message will make copies of @error and +@debug. + + + the new warning message. + + + + + The object originating the message. + + + + The GError for this message. + + + + A debugging string. + + + + A GstStructure with details + + + + + + Creates and appends a new entry. + +The specified location string is copied. However, ownership over the tag +list and structure are transferred to the message. + + + + + + + a #GstMessage of type %GST_MESSAGE_REDIRECT + + + + location string for the new entry + + + + tag list for the new entry + + + + structure for the new entry + + + + + + Creates a copy of the message. Returns a copy of the message. + + + a new copy of @msg. + +MT safe + + + + + the message to copy + + + + + + + + the number of entries stored in the message + + + + + a #GstMessage of type %GST_MESSAGE_REDIRECT + + + + + + Retrieve the sequence number of a message. + +Messages have ever-incrementing sequence numbers, which may also be set +explicitly via gst_message_set_seqnum(). Sequence numbers are typically used +to indicate that a message corresponds to some other set of messages or +events, for example a SEGMENT_DONE message corresponding to a SEEK event. It +is considered good practice to make this correspondence when possible, though +it is not required. + +Note that events and messages share the same sequence number incrementor; +two events or messages will never have the same sequence number unless +that correspondence was made explicitly. + + + The message's sequence number. + +MT safe. + + + + + A #GstMessage. + + + + + + Extracts the object managing the streaming thread from @message. + + + a GValue containing the object that manages the +streaming thread. This object is usually of type GstTask but other types can +be added in the future. The object remains valid as long as @message is +valid. + + + + + A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS. + + + + + + Access the structure of the message. + + + The structure of the message. The +structure is still owned by the message, which means that you should not +free it and that the pointer becomes invalid when you free the message. + +MT safe. + + + + + The #GstMessage. + + + + + + Checks if @message has the given @name. This function is usually used to +check the name of a custom message. + + + %TRUE if @name matches the name of the message structure. + + + + + The #GstMessage. + + + + name to check + + + + + + Extract the running_time from the async_done message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_ASYNC_DONE. + + + + Result location for the running_time or %NULL + + + + + + Extracts the buffering percent from the GstMessage. see also +gst_message_new_buffering(). + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_BUFFERING. + + + + Return location for the percent. + + + + + + Extracts the buffering stats values from @message. + + + + + + + A valid #GstMessage of type GST_MESSAGE_BUFFERING. + + + + a buffering mode, or %NULL + + + + the average input rate, or %NULL + + + + the average output rate, or %NULL + + + + amount of buffering time left in + milliseconds, or %NULL + + + + + + Extracts the lost clock from the GstMessage. +The clock object returned remains valid until the message is freed. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_CLOCK_LOST. + + + + a pointer to hold the lost clock + + + + + + Extracts the clock and ready flag from the GstMessage. +The clock object returned remains valid until the message is freed. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_CLOCK_PROVIDE. + + + + a pointer to hold a clock + object, or %NULL + + + + a pointer to hold the ready flag, or %NULL + + + + + + Parse a context type from an existing GST_MESSAGE_NEED_CONTEXT message. + + + a #gboolean indicating if the parsing succeeded. + + + + + a GST_MESSAGE_NEED_CONTEXT type message + + + + the context type, or %NULL + + + + + + Parses a device-added message. The device-added message is produced by +#GstDeviceProvider or a #GstDeviceMonitor. It announces the appearance +of monitored devices. + + + + + + + a #GstMessage of type %GST_MESSAGE_DEVICE_ADDED + + + + A location where to store a + pointer to the new #GstDevice, or %NULL + + + + + + Parses a device-changed message. The device-changed message is produced by +#GstDeviceProvider or a #GstDeviceMonitor. It announces the +disappearance of monitored devices. * It announce that a device properties has +changed and @device represents the new modified version of @changed_device. + + + + + + + a #GstMessage of type %GST_MESSAGE_DEVICE_CHANGED + + + + A location where to store a + pointer to the updated version of the #GstDevice, or %NULL + + + + A location where to store a + pointer to the old version of the #GstDevice, or %NULL + + + + + + Parses a device-removed message. The device-removed message is produced by +#GstDeviceProvider or a #GstDeviceMonitor. It announces the +disappearance of monitored devices. + + + + + + + a #GstMessage of type %GST_MESSAGE_DEVICE_REMOVED + + + + A location where to store a + pointer to the removed #GstDevice, or %NULL + + + + + + Extracts the GError and debug string from the GstMessage. The values returned +in the output arguments are copies; the caller must free them when done. + +Typical usage of this function might be: +|[<!-- language="C" --> + ... + switch (GST_MESSAGE_TYPE (msg)) { + case GST_MESSAGE_ERROR: { + GError *err = NULL; + gchar *dbg_info = NULL; + + gst_message_parse_error (msg, &err, &dbg_info); + g_printerr ("ERROR from element %s: %s\n", + GST_OBJECT_NAME (msg->src), err->message); + g_printerr ("Debugging info: %s\n", (dbg_info) ? dbg_info : "none"); + g_error_free (err); + g_free (dbg_info); + break; + } + ... + } + ... +]| + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_ERROR. + + + + location for the GError + + + + location for the debug message, + or %NULL + + + + + + Returns the optional details structure, may be NULL if none. +The returned structure must not be freed. + + + + + + + The message object + + + + A pointer to the returned details + + + + + + Extract the group from the STREAM_START message. + + + %TRUE if the message had a group id set, %FALSE otherwise + +MT safe. + + + + + A valid #GstMessage of type GST_MESSAGE_STREAM_START. + + + + Result location for the group id or + %NULL + + + + + + Extract the context from the HAVE_CONTEXT message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_HAVE_CONTEXT. + + + + Result location for the + context or %NULL + + + + + + Extracts the GError and debug string from the GstMessage. The values returned +in the output arguments are copies; the caller must free them when done. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_INFO. + + + + location for the GError + + + + location for the debug message, + or %NULL + + + + + + Returns the optional details structure, may be NULL if none +The returned structure must not be freed. + + + + + + + The message object + + + + A pointer to the returned details + + + + + + 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. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_NEW_CLOCK. + + + + a pointer to hold the selected + new clock + + + + + + Parses the progress @type, @code and @text. + + + + + + + A valid #GstMessage of type GST_MESSAGE_PROGRESS. + + + + location for the type + + + + location for the code + + + + location for the text + + + + + + Parses a property-notify message. These will be posted on the bus only +when set up with gst_element_add_property_notify_watch() or +gst_element_add_property_deep_notify_watch(). + + + + + + + a #GstMessage of type %GST_MESSAGE_PROPERTY_NOTIFY + + + + location where to store a + pointer to the object whose property got changed, or %NULL + + + + return location for + the name of the property that got changed, or %NULL + + + + return location for + the new value of the property that got changed, or %NULL. This will + only be set if the property notify watch was told to include the value + when it was set up + + + + + + Extract the timestamps and live status from the QoS message. + +The returned values give the running_time, stream_time, timestamp and +duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown +values. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_QOS. + + + + if the message was generated by a live element + + + + the running time of the buffer that + generated the message + + + + the stream time of the buffer that + generated the message + + + + the timestamps of the buffer that + generated the message + + + + the duration of the buffer that + generated the message + + + + + + Extract the QoS stats representing the history of the current continuous +pipeline playback period. + +When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are +invalid. Values of -1 for either @processed or @dropped mean unknown values. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_QOS. + + + + Units of the 'processed' and 'dropped' fields. + Video sinks and video filters will use GST_FORMAT_BUFFERS (frames). + Audio sinks and audio filters will likely use GST_FORMAT_DEFAULT + (samples). + + + + Total number of units correctly processed + since the last state change to READY or a flushing operation. + + + + Total number of units dropped since the last + state change to READY or a flushing operation. + + + + + + Extract the QoS values that have been calculated/analysed from the QoS data + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_QOS. + + + + The difference of the running-time against + the deadline. + + + + Long term prediction of the ideal rate + relative to normal rate to get optimal quality. + + + + An element dependent integer value that + specifies the current quality level of the element. The default + maximum quality is 1000000. + + + + + + Parses the location and/or structure from the entry with the given index. +The index must be between 0 and gst_message_get_num_redirect_entries() - 1. +Returned pointers are valid for as long as this message exists. + + + + + + + a #GstMessage of type %GST_MESSAGE_REDIRECT + + + + index of the entry to parse + + + + return location for + the pointer to the entry's location string, or %NULL + + + + return location for + the pointer to the entry's tag list, or %NULL + + + + return location + for the pointer to the entry's structure, or %NULL + + + + + + Extract the requested state from the request_state message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_REQUEST_STATE. + + + + Result location for the requested state or %NULL + + + + + + Extract the running-time from the RESET_TIME message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_RESET_TIME. + + + + Result location for the running_time or + %NULL + + + + + + Extracts the position and format from the segment done message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_SEGMENT_DONE. + + + + Result location for the format, or %NULL + + + + Result location for the position, or %NULL + + + + + + Extracts the position and format from the segment start message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_SEGMENT_START. + + + + Result location for the format, or %NULL + + + + Result location for the position, or %NULL + + + + + + Extracts the old and new states from the GstMessage. + +Typical usage of this function might be: +|[<!-- language="C" --> + ... + switch (GST_MESSAGE_TYPE (msg)) { + case GST_MESSAGE_STATE_CHANGED: { + GstState old_state, new_state; + + gst_message_parse_state_changed (msg, &old_state, &new_state, NULL); + g_print ("Element %s changed state from %s to %s.\n", + GST_OBJECT_NAME (msg->src), + gst_element_state_get_name (old_state), + gst_element_state_get_name (new_state)); + break; + } + ... + } + ... +]| + +MT safe. + + + + + + + a valid #GstMessage of type GST_MESSAGE_STATE_CHANGED + + + + the previous state, or %NULL + + + + the new (current) state, or %NULL + + + + the pending (target) state, or %NULL + + + + + + Extract the values the step_done message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_STEP_DONE. + + + + result location for the format + + + + result location for the amount + + + + result location for the rate + + + + result location for the flush flag + + + + result location for the intermediate flag + + + + result location for the duration + + + + result location for the EOS flag + + + + + + Extract the values from step_start message. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_STEP_DONE. + + + + result location for the active flag + + + + result location for the format + + + + result location for the amount + + + + result location for the rate + + + + result location for the flush flag + + + + result location for the intermediate flag + + + + + + Parses a stream-collection message. + + + + + + + a #GstMessage of type %GST_MESSAGE_STREAM_COLLECTION + + + + A location where to store a + pointer to the #GstStreamCollection, or %NULL + + + + + + Extracts the stream status type and owner the GstMessage. The returned +owner remains valid for as long as the reference to @message is valid and +should thus not be unreffed. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS. + + + + A pointer to hold the status type + + + + The owner element of the message source + + + + + + Parses a streams-selected message. + + + + + + + a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED + + + + A location where to store a + pointer to the #GstStreamCollection, or %NULL + + + + + + Extracts the change type and completion status from the GstMessage. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_STRUCTURE_CHANGE. + + + + A pointer to hold the change type + + + + The owner element of the + message source + + + + a pointer to hold whether the change is in + progress or has been completed + + + + + + Extracts the tag list from the GstMessage. The tag list returned in the +output argument is a copy; the caller must free it when done. + +Typical usage of this function might be: +|[<!-- language="C" --> + ... + switch (GST_MESSAGE_TYPE (msg)) { + case GST_MESSAGE_TAG: { + GstTagList *tags = NULL; + + gst_message_parse_tag (msg, &tags); + g_print ("Got tags from element %s\n", GST_OBJECT_NAME (msg->src)); + handle_tags (tags); + gst_tag_list_unref (tags); + break; + } + ... + } + ... +]| + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_TAG. + + + + return location for the tag-list. + + + + + + Extract the TOC from the #GstMessage. The TOC returned in the +output argument is a copy; the caller must free it with +gst_toc_unref() when done. + +MT safe. + + + + + + + a valid #GstMessage of type GST_MESSAGE_TOC. + + + + return location for the TOC. + + + + return location for the updated flag. + + + + + + Extracts the GError and debug string from the GstMessage. The values returned +in the output arguments are copies; the caller must free them when done. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_WARNING. + + + + location for the GError + + + + location for the debug message, + or %NULL + + + + + + Returns the optional details structure, may be NULL if none +The returned structure must not be freed. + + + + + + + The message object + + + + A pointer to the returned details + + + + + + 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. + + + + + + + A valid #GstMessage of type GST_MESSAGE_BUFFERING. + + + + a buffering mode + + + + the average input rate + + + + the average output rate + + + + amount of buffering time left in milliseconds + + + + + + Sets the group id on the stream-start message. + +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 +same group id but different stream ids. The group id should change +each time the stream is started, resulting in different group ids +each time a file is played for example. + +MT safe. + + + + + + + the message + + + + the group id + + + + + + Set the QoS stats representing the history of the current continuous pipeline +playback period. + +When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are +invalid. Values of -1 for either @processed or @dropped mean unknown values. + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_QOS. + + + + Units of the 'processed' and 'dropped' fields. Video sinks and video +filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters +will likely use GST_FORMAT_DEFAULT (samples). + + + + Total number of units correctly processed since the last state +change to READY or a flushing operation. + + + + Total number of units dropped since the last state change to READY +or a flushing operation. + + + + + + Set the QoS values that have been calculated/analysed from the QoS data + +MT safe. + + + + + + + A valid #GstMessage of type GST_MESSAGE_QOS. + + + + The difference of the running-time against the deadline. + + + + Long term prediction of the ideal rate relative to normal rate +to get optimal quality. + + + + An element dependent integer value that specifies the current +quality level of the element. The default maximum quality is 1000000. + + + + + + Set the sequence number of a message. + +This function might be called by the creator of a message to indicate that +the message relates to other messages or events. See gst_message_get_seqnum() +for more information. + +MT safe. + + + + + + + A #GstMessage. + + + + A sequence number. + + + + + + Configures the object handling the streaming thread. This is usually a +GstTask object but other objects might be added in the future. + + + + + + + A valid #GstMessage of type GST_MESSAGE_STREAM_STATUS. + + + + the object controlling the streaming + + + + + + Adds the @stream to the @message. + + + + + + + a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED + + + + a #GstStream to add to @message + + + + + + Returns the number of streams contained in the @message. + + + The number of streams contained within. + + + + + a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED + + + + + + Retrieves the #GstStream with index @index from the @message. + + + A #GstStream + + + + + a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED + + + + Index of the stream to retrieve + + + + + + Convenience macro to decrease the reference count of the message, possibly +freeing it. + + + + + + + the message to unref + + + + + + Get a writable version of the structure. + + + The structure of the message. The structure +is still owned by the message, which means that you should not free +it and that the pointer becomes invalid when you free the message. +This function ensures that @message is writable, and if so, will +never return %NULL. + +MT safe. + + + + + A writable #GstMessage. + + + + + + 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. + + + + + + Modifies a pointer to a #GstMessage to point to a different #GstMessage. This +function is similar to gst_message_replace() except that it takes ownership +of @new_message. + + + %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. + + an undefined message + + + end-of-stream reached in a pipeline. The application will +only receive this message in the PLAYING state and every time it sets a +pipeline to PLAYING that is in the EOS state. The application can perform a +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. 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. + + + an info message occurred + + + a tag was found. + + + the pipeline is buffering. When the application +receives a buffering message in the PLAYING state for a non-live pipeline it +must PAUSE the pipeline until the buffering completes, when the percentage +field in the message is 100%. For live pipelines, no action must be +performed and the buffering percentage can be used to inform the user about +the progress. + + + a state change happened + + + an element changed state in a streaming thread. +This message is deprecated. + + + a stepping operation finished. + + + an element notifies its capability of providing + a clock. This message is used internally and + never forwarded to the application. + + + The current clock as selected by the pipeline became + unusable. The pipeline will select a new clock on + the next PLAYING state change. The application + should set the pipeline to PAUSED and back to + PLAYING when this message is received. + + + a new clock was selected in the pipeline. + + + the structure of the pipeline changed. This +message is used internally and never forwarded to the application. + + + status about a stream, emitted when it starts, + stops, errors, etc.. + + + message posted by the application, possibly + via an application-specific element. + + + element-specific message, see the specific element's + documentation + + + pipeline started playback of a segment. This +message is used internally and never forwarded to the application. + + + pipeline completed playback of a segment. This +message is forwarded to the application after all elements that posted +@GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message. + + + The duration of a pipeline changed. The +application can get the new duration with a duration query. + + + Posted by elements when their latency changes. The +application should recalculate and distribute a new latency. + + + Posted by elements when they start an ASYNC +#GstStateChange. This message is not forwarded to the application but is used +internally. + + + Posted by elements when they complete an ASYNC +#GstStateChange. The application will only receive this message from the toplevel +pipeline. + + + Posted by elements when they want the pipeline to +change state. This message is a suggestion to the application which can +decide to perform the state change on (part of) the pipeline. + + + A stepping operation was started. + + + A buffer was dropped or an element changed its processing +strategy for Quality of Service reasons. + + + A progress message. + + + A new table of contents (TOC) was found or previously found TOC +was updated. + + + Message to request resetting the pipeline's + running time from the pipeline. This is an internal message which + applications will likely never receive. + + + Message indicating start of a new stream. Useful + e.g. when using playbin in gapless playback mode, to get notified when + the next title actually starts playing (which will be some time after + the URI for the next title has been set). + + + Message indicating that an element wants a specific context (Since: 1.2) + + + Message indicating that an element created a context (Since: 1.2) + + + Message is an extended message type (see below). + These extended message IDs can't be used directly with mask-based API + like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still + filter for GST_MESSAGE_EXTENDED and then check the result for the + specific type. (Since: 1.4) + + + Message indicating a #GstDevice was added to + a #GstDeviceProvider (Since: 1.4) + + + Message indicating a #GstDevice was removed + from a #GstDeviceProvider (Since: 1.4) + + + Message indicating a #GObject property has + changed (Since: 1.10) + + + Message indicating a new #GstStreamCollection + is available (Since: 1.10) + + + Message indicating the active selection of + #GstStreams has changed (Since: 1.10) + + + Message indicating to request the application to + try to play the given URL(s). Useful if for example a HTTP 302/303 + response is received with a non-HTTP URL inside. (Since: 1.10) + + + 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. + + + Get a printable name for the given message type. Do not modify or free. + + + a reference to the static name of the message. + + + + + the message type + + + + + + Get the unique quark for the given message type. + + + the quark associated with the message type + + + + + the message type + + + + + + + The #GstMeta structure should be included as the first member of a #GstBuffer +metadata structure. The structure defines the API of the metadata and should +be accessible to all elements using the metadata. + +A metadata API is registered with gst_meta_api_type_register() which takes a +name for the metadata API and some tags associated with the metadata. +With gst_meta_api_type_has_tag() one can check if a certain metadata API +contains a given tag. + +Multiple implementations of a metadata API can be registered. +To implement a metadata API, gst_meta_register() should be used. This +function takes all parameters needed to create, free and transform metadata +along with the size of the metadata. The function returns a #GstMetaInfo +structure that contains the information for the implementation of the API. + +A specific implementation can be retrieved by name with gst_meta_get_info(). + +See #GstBuffer for how the metadata can be added, retrieved and removed from +buffers. + + + extra flags for the metadata + + + + pointer to the #GstMetaInfo + + + + Meta sequence number compare function. Can be used as #GCompareFunc +or a #GCompareDataFunc. + + + a negative number if @meta1 comes before @meta2, 0 if both metas + have an equal sequence number, or a positive integer if @meta1 comes + after @meta2. + + + + + a #GstMeta + + + + a #GstMeta + + + + + + Gets seqnum for this meta. + + + + + + + a #GstMeta + + + + + + + + an array of tags as strings. + + + + + + + an API + + + + + + Check if @api was registered with @tag. + + + %TRUE if @api was registered with @tag. + + + + + an API + + + + the tag to check + + + + + + Register and return a GType for the @api and associate it with +@tags. + + + a unique GType for @api. + + + + + an API to register + + + + tags for @api + + + + + + + + Lookup a previously registered meta info structure by its implementation name +@impl. + + + a #GstMetaInfo with @impl, or +%NULL when no such metainfo exists. + + + + + the name + + + + + + Register a new #GstMeta implementation. + +The same @info can be retrieved later with gst_meta_get_info() by using +@impl as the key. + + + a #GstMetaInfo that can be used to +access metadata. + + + + + the type of the #GstMeta API + + + + the name of the #GstMeta implementation + + + + the size of the #GstMeta structure + + + + a #GstMetaInitFunction + + + + a #GstMetaFreeFunction + + + + a #GstMetaTransformFunction + + + + + + Register a new custom #GstMeta implementation, backed by an opaque +structure holding a #GstStructure. + +The registered info can be retrieved later with gst_meta_get_info() by using +@name as the key. + +The backing #GstStructure can be retrieved with +gst_custom_meta_get_structure(), its mutability is conditioned by the +writability of the buffer the meta is attached to. + +When @transform_func is %NULL, the meta and its backing #GstStructure +will always be copied when the transform operation is copy, other operations +are discarded, copy regions are ignored. + + + a #GstMetaInfo that can be used to +access metadata. + + + + + the name of the #GstMeta implementation + + + + tags for @api + + + + + + a #GstMetaTransformFunction + + + + user data passed to @transform_func + + + + #GDestroyNotify for user_data + + + + + + + Extra metadata flags. + + no flags + + + metadata should not be modified + + + metadata is managed by a bufferpool + + + metadata should not be removed + + + additional flags can be added starting from this flag. + + + + Function called when @meta is freed in @buffer. + + + + + + + a #GstMeta + + + + a #GstBuffer + + + + + + The #GstMetaInfo provides information about a specific metadata +structure. + + + tag identifying the metadata structure and api + + + + type identifying the implementor of the api + + + + size of the metadata + + + + function for initializing the metadata + + + + function for freeing the metadata + + + + function for transforming the metadata + + + + + + whether @info was registered as a #GstCustomMeta with + gst_meta_register_custom() + + + + + + + + + + + Function called when @meta is initialized in @buffer. + + + + + + + a #GstMeta + + + + parameters passed to the init function + + + + a #GstBuffer + + + + + + Extra data passed to a "gst-copy" transform #GstMetaTransformFunction. + + + %TRUE if only region is copied + + + + the offset to copy, 0 if @region is %FALSE, otherwise > 0 + + + + the size to copy, -1 or the buffer size when @region is %FALSE + + + + + Function called for each @meta in @buffer as a result of performing a +transformation on @transbuf. Additional @type specific transform data +is passed to the function as @data. + +Implementations should check the @type of the transform and parse +additional type specific fields in @data that should be used to update +the metadata on @transbuf. + + + %TRUE if the transform could be performed + + + + + a #GstBuffer + + + + a #GstMeta + + + + a #GstBuffer + + + + the transform type + + + + transform specific data. + + + + + + #GstMiniObject is a simple structure that can be used to implement refcounted +types. + +Subclasses will include #GstMiniObject as the first member in their structure +and then call gst_mini_object_init() to initialize the #GstMiniObject fields. + +gst_mini_object_ref() and gst_mini_object_unref() increment and decrement the +refcount respectively. When the refcount of a mini-object reaches 0, the +dispose function is called first and when this returns %TRUE, the free +function of the miniobject is called. + +A copy can be made with gst_mini_object_copy(). + +gst_mini_object_is_writable() will return %TRUE when the refcount of the +object is exactly 1 and there is no parent or a single parent exists and is +writable itself, meaning the current caller has the only reference to the +object. gst_mini_object_make_writable() will return a writable version of +the object, which might be a new copy when the refcount was not 1. + +Opaque data can be associated with a #GstMiniObject with +gst_mini_object_set_qdata() and gst_mini_object_get_qdata(). The data is +meant to be specific to the particular object and is not automatically copied +with gst_mini_object_copy() or similar methods. + +A weak reference can be added and remove with gst_mini_object_weak_ref() +and gst_mini_object_weak_unref() respectively. + + + the GType of the object + + + + atomic refcount + + + + atomic state of the locks + + + + extra flags. + + + + a copy function + + + + a dispose function + + + + the free function + + + + + + + + + + This adds @parent as a parent for @object. Having one ore more parents affects the +writability of @object: if a @parent is not writable, @object is also not +writable, regardless of its refcount. @object is only writable if all +the parents are writable and its own refcount is exactly 1. + +Note: This function does not take ownership of @parent and also does not +take an additional reference. It is the responsibility of the caller to +remove the parent again at a later time. + + + + + + + a #GstMiniObject + + + + a parent #GstMiniObject + + + + + + Creates a copy of the mini-object. + +MT safe + + + the new mini-object if copying is +possible, %NULL otherwise. + + + + + the mini-object to copy + + + + + + This function gets back user data pointers stored via +gst_mini_object_set_qdata(). + + + The user data pointer set, or +%NULL + + + + + The GstMiniObject to get a stored user data pointer from + + + + A #GQuark, naming the user data pointer + + + + + + Initializes a mini-object with the desired type and copy/dispose/free +functions. + + + + + + + a #GstMiniObject + + + + initial #GstMiniObjectFlags + + + + the #GType of the mini-object to create + + + + the copy function, or %NULL + + + + the dispose function, or %NULL + + + + the free function or %NULL + + + + + + If @mini_object has the LOCKABLE flag set, check if the current EXCLUSIVE +lock on @object is the only one, this means that changes to the object will +not be visible to any other object. + +If the LOCKABLE flag is not set, check if the refcount of @mini_object is +exactly 1, meaning that no other reference exists to the object and that the +object is therefore writable. + +Modification of a mini-object should only be done after verifying that it +is writable. + + + %TRUE if the object is writable. + + + + + the mini-object to check + + + + + + Lock the mini-object with the specified access mode in @flags. + + + %TRUE if @object could be locked. + + + + + the mini-object to lock + + + + #GstLockFlags + + + + + + Checks if a mini-object is writable. If not, a writable copy is made and +returned. This gives away the reference to the original mini object, +and returns a reference to the new object. + +MT safe + + + a writable mini-object (which may or may not be + the same as @mini_object) or %NULL if copying is required but not possible. + + + + + the mini-object to make writable + + + + + + Increase the reference count of the mini-object. + +Note that the refcount affects the writability +of @mini-object, see gst_mini_object_is_writable(). It is +important to note that keeping additional references to +GstMiniObject instances can potentially increase the number +of memcpy operations in a pipeline, especially if the miniobject +is a #GstBuffer. + + + the mini-object. + + + + + the mini-object + + + + + + This removes @parent as a parent for @object. See +gst_mini_object_add_parent(). + + + + + + + a #GstMiniObject + + + + a parent #GstMiniObject + + + + + + This sets an opaque, named pointer on a miniobject. +The name is specified through a #GQuark (retrieved e.g. via +g_quark_from_static_string()), and the pointer +can be gotten back from the @object with gst_mini_object_get_qdata() +until the @object is disposed. +Setting a previously set user data pointer, overrides (frees) +the old pointer set, using %NULL as pointer essentially +removes the data stored. + +@destroy may be specified which is called with @data as argument +when the @object is disposed, or the data is being overwritten by +a call to gst_mini_object_set_qdata() with the same @quark. + + + + + + + a #GstMiniObject + + + + A #GQuark, naming the user data pointer + + + + An opaque user data pointer + + + + Function to invoke with @data as argument, when @data + needs to be freed + + + + + + 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 +any was set). + + + The user data pointer set, or +%NULL + + + + + The GstMiniObject to get a stored user data pointer from + + + + A #GQuark, naming the user data pointer + + + + + + Unlock the mini-object with the specified access mode in @flags. + + + + + + + the mini-object to unlock + + + + #GstLockFlags + + + + + + Decreases the reference count of the mini-object, possibly freeing +the mini-object. + + + + + + + the mini-object + + + + + + Adds a weak reference callback to a mini object. Weak references are +used for notification when a mini object is finalized. They are called +"weak references" because they allow you to safely hold a pointer +to the mini object without calling gst_mini_object_ref() +(gst_mini_object_ref() adds a strong reference, that is, forces the object +to stay alive). + + + + + + + #GstMiniObject to reference weakly + + + + callback to invoke before the mini object is freed + + + + extra data to pass to notify + + + + + + Removes a weak reference callback from a mini object. + + + + + + + #GstMiniObject to remove a weak reference from + + + + callback to search for + + + + data to search for + + + + + + Atomically modifies a pointer to point to a new mini-object. +The reference count of @olddata is decreased and the reference count of +@newdata is increased. + +Either @newdata and the value pointed to by @olddata may be %NULL. + + + %TRUE if @newdata was different from @olddata + + + + + pointer to a pointer to a + mini-object to be replaced + + + + pointer to new mini-object + + + + + + Replace the current #GstMiniObject pointer to by @olddata with %NULL and +return the old value. + + + the #GstMiniObject at @oldata + + + + + pointer to a pointer to a mini-object to + be stolen + + + + + + Modifies a pointer to point to a new mini-object. The modification +is done atomically. This version is similar to gst_mini_object_replace() +except that it does not increase the refcount of @newdata and thus +takes ownership of @newdata. + +Either @newdata and the value pointed to by @olddata may be %NULL. + + + %TRUE if @newdata was different from @olddata + + + + + pointer to a pointer to a mini-object to + be replaced + + + + pointer to new mini-object + + + + + + + Function prototype for methods to create copies of instances. + + + reference to cloned instance. + + + + + MiniObject to copy + + + + + + Function prototype for when a miniobject has lost its last refcount. +Implementation of the mini object are allowed to revive the +passed object by doing a gst_mini_object_ref(). If the object is not +revived after the dispose function, the function should return %TRUE +and the memory associated with the object is freed. + + + %TRUE if the object should be cleaned up. + + + + + MiniObject to dispose + + + + + + Flags for the mini object + + the object can be locked and unlocked with +gst_mini_object_lock() and gst_mini_object_unlock(). + + + the object is permanently locked in +READONLY mode. Only read locks can be performed on the object. + + + the object is expected to stay alive +even after gst_deinit() has been called and so should be ignored by leak +detection tools. (Since: 1.10) + + + first flag that can be used by subclasses. + + + + Virtual function prototype for methods to free resources used by +mini-objects. + + + + + + + MiniObject to free + + + + + + A #GstMiniObjectNotify function can be added to a mini object as a +callback that gets triggered when gst_mini_object_unref() drops the +last ref and @obj is about to be freed. + + + + + + + data that was provided when the notify was added + + + + the mini object + + + + + + Constant that defines one GStreamer nanosecond + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This macro returns the entire set of flags for the object. + + + + a #GstObject + + + + + This macro checks to see if the given flag is set. + + + + a #GstObject + + + Flag to check for + + + + + This macro sets the given bits. + + + + a #GstObject + + + Flag to set + + + + + This macro unsets the given bits. + + + + a #GstObject + + + Flag to set + + + + + + + + + + + + Acquire a reference to the mutex of this object. + + + + a #GstObject + + + + + This macro will obtain a lock on the object, making serialization possible. +It blocks until the lock can be obtained. + + + + a #GstObject to lock + + + + + Get the name of this object. This is not thread-safe by default +(i.e. you will have to make sure the object lock is taken yourself). +If in doubt use gst_object_get_name() instead. + + + + a #GstObject + + + + + Get the parent of this object. This is not thread-safe by default +(i.e. you will have to make sure the object lock is taken yourself). +If in doubt use gst_object_get_parent() instead. + + + + a #GstObject + + + + + Get access to the reference count field of the object. + + + + a #GstObject + + + + + Get the reference count value of the object. + + + + a #GstObject + + + + + This macro will try to obtain a lock on the object, but will return with +%FALSE if it can't get it immediately. + + + + a #GstObject. + + + + + This macro releases a lock on the object. + + + + a #GstObject to unlock. + + + + + #GstObject provides a root for the object hierarchy tree filed in by the +GStreamer library. It is currently a thin wrapper on top of +#GInitiallyUnowned. It is an abstract class that is not very usable on its own. + +#GstObject gives us basic refcounting, parenting functionality and locking. +Most of the functions are just extended for special GStreamer needs and can be +found under the same name in the base class of #GstObject which is #GObject +(e.g. g_object_ref() becomes gst_object_ref()). + +Since #GstObject derives from #GInitiallyUnowned, it also inherits the +floating reference. Be aware that functions such as gst_bin_add() and +gst_element_add_pad() take ownership of the floating reference. + +In contrast to #GObject instances, #GstObject adds a name property. The functions +gst_object_set_name() and gst_object_get_name() are used to set/get the name +of the object. + +## controlled properties + +Controlled properties offers a lightweight way to adjust gobject properties +over stream-time. It works by using time-stamped value pairs that are queued +for element-properties. At run-time the elements continuously pull value +changes for the current stream-time. + +What needs to be changed in a #GstElement? +Very little - it is just two steps to make a plugin controllable! + + * mark gobject-properties paramspecs that make sense to be controlled, + by GST_PARAM_CONTROLLABLE. + + * when processing data (get, chain, loop function) at the beginning call + gst_object_sync_values(element,timestamp). + This will make the controller update all GObject properties that are + under its control with the current values based on the timestamp. + +What needs to be done in applications? Again it's not a lot to change. + + * create a #GstControlSource. + csource = gst_interpolation_control_source_new (); + g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL); + + * Attach the #GstControlSource on the controller to a property. + gst_object_add_control_binding (object, gst_direct_control_binding_new (object, "prop1", csource)); + + * Set the control values + gst_timed_value_control_source_set ((GstTimedValueControlSource *)csource,0 * GST_SECOND, value1); + gst_timed_value_control_source_set ((GstTimedValueControlSource *)csource,1 * GST_SECOND, value2); + + * start your pipeline + + + Checks to see if there is any object named @name in @list. This function +does not do any locking of any kind. You might want to protect the +provided list with the lock of the owner of the list. This function +will lock each #GstObject in the list to compare the name, so be +careful when passing a list with a locked object. + + + %TRUE if a #GstObject named @name does not appear in @list, +%FALSE if it does. + +MT safe. Grabs and releases the LOCK of each object in the list. + + + + + a list of #GstObject to + check through + + + + + + the name to search for + + + + + + A default deep_notify signal callback for an object. The user data +should contain a pointer to an array of strings that should be excluded +from the notify. The default handler will print the new value of the property +using g_print. + +MT safe. This function grabs and releases @object's LOCK for getting its + path string. + + + + + + + the #GObject that signalled the notify. + + + + a #GstObject that initiated the notify. + + + + a #GParamSpec of the property. + + + + + a set of user-specified properties to exclude or %NULL to show + all changes. + + + + + + + + Increase the reference count of @object, and possibly remove the floating +reference, if @object has a floating reference. + +In other words, if the object is floating, then this call "assumes ownership" +of the floating reference, converting it to a normal reference by clearing +the floating flag while leaving the reference count unchanged. If the object +is not floating, then this call adds a new normal reference increasing the +reference count by one. + +For more background on "floating references" please see the #GObject +documentation. + + + + + + + a #GstObject to sink + + + + + + Atomically modifies a pointer to point to a new object. +The reference count of @oldobj is decreased and the reference count of +@newobj is increased. + +Either @newobj and the value pointed to by @oldobj may be %NULL. + + + %TRUE if @newobj was different from @oldobj + + + + + pointer to a place of + a #GstObject to replace + + + + a new #GstObject + + + + + + + + + + + + + + + + + + + + + + + Attach the #GstControlBinding to the object. If there already was a +#GstControlBinding for this property it will be replaced. + +The object's reference count will be incremented, and any floating +reference will be removed (see gst_object_ref_sink()) + + + %FALSE if the given @binding has not been setup for this object or +has been setup for a non suitable property, %TRUE otherwise. + + + + + the controller object + + + + the #GstControlBinding that should be used + + + + + + A default error function that uses g_printerr() to display the error message +and the optional debug string.. + +The default handler will simply print the error string using g_print. + + + + + + + the #GstObject that initiated the error. + + + + the GError. + + + + an additional debug information string, or %NULL + + + + + + Gets the corresponding #GstControlBinding for the property. This should be +unreferenced again after use. + + + the #GstControlBinding for +@property_name or %NULL if the property is not controlled. + + + + + the object + + + + name of the property + + + + + + Obtain the control-rate for this @object. Audio processing #GstElement +objects will use this rate to sub-divide their processing loop and call +gst_object_sync_values() in between. The length of the processing segment +should be up to @control-rate nanoseconds. + +If the @object is not under property control, this will return +%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing. + +The control-rate is not expected to change if the element is in +%GST_STATE_PAUSED or %GST_STATE_PLAYING. + + + the control rate in nanoseconds + + + + + the object that has controlled properties + + + + + + Gets a number of #GValues for the given controlled property starting at the +requested time. The array @values need to hold enough space for @n_values of +#GValue. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the object that has controlled properties + + + + the name of the property to get + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Returns a copy of the name of @object. +Caller should g_free() the return value after usage. +For a nameless object, this returns %NULL, which you can safely g_free() +as well. + +Free-function: g_free + + + the name of @object. g_free() +after usage. + +MT safe. This function grabs and releases @object's LOCK. + + + + + a #GstObject + + + + + + Returns the parent of @object. This function increases the refcount +of the parent object so you should gst_object_unref() it after usage. + + + parent of @object, this can be + %NULL if @object has no parent. unref after usage. + +MT safe. Grabs and releases @object's LOCK. + + + + + a #GstObject + + + + + + Generates a string describing the path of @object in +the object hierarchy. Only useful (or used) for debugging. + +Free-function: g_free + + + a string describing the path of @object. You must + g_free() the string after usage. + +MT safe. Grabs and releases the #GstObject's LOCK for all objects + in the hierarchy. + + + + + a #GstObject + + + + + + Gets the value for the given controlled property at the requested time. + + + the GValue of the property at the given time, +or %NULL if the property isn't controlled. + + + + + the object that has controlled properties + + + + the name of the property to get + + + + the time the control-change should be read from + + + + + + Gets a number of values for the given controlled property starting at the +requested time. The array @values need to hold enough space for @n_values of +the same type as the objects property's type. + +This function is useful if one wants to e.g. draw a graph of the control +curve or apply a control curve sample by sample. + +The values are unboxed and ready to be used. The similar function +gst_object_get_g_value_array() returns the array as #GValues and is +better suites for bindings. + + + %TRUE if the given array could be filled, %FALSE otherwise + + + + + the object that has controlled properties + + + + the name of the property to get + + + + the time that should be processed + + + + the time spacing between subsequent values + + + + the number of values + + + + array to put control-values in + + + + + + + + Check if the @object has active controlled properties. + + + %TRUE if the object has active controlled properties + + + + + the object that has controlled properties + + + + + + Check if @object has an ancestor @ancestor somewhere up in +the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline. + Use gst_object_has_as_ancestor() instead. + +MT safe. Grabs and releases @object's locks. + + + %TRUE if @ancestor is an ancestor of @object. + + + + + a #GstObject to check + + + + a #GstObject to check as ancestor + + + + + + Check if @object has an ancestor @ancestor somewhere up in +the hierarchy. One can e.g. check if a #GstElement is inside a #GstPipeline. + + + %TRUE if @ancestor is an ancestor of @object. + +MT safe. Grabs and releases @object's locks. + + + + + a #GstObject to check + + + + a #GstObject to check as ancestor + + + + + + Check if @parent is the parent of @object. +E.g. a #GstElement can check if it owns a given #GstPad. + + + %FALSE if either @object or @parent is %NULL. %TRUE if @parent is + the parent of @object. Otherwise %FALSE. + +MT safe. Grabs and releases @object's locks. + + + + + a #GstObject to check + + + + a #GstObject to check as parent + + + + + + Increments the reference count on @object. This function +does not take the lock on @object because it relies on +atomic refcounting. + +This object returns the input parameter to ease writing +constructs like : + result = gst_object_ref (object->parent); + + + A pointer to @object + + + + + a #GstObject to reference + + + + + + Removes the corresponding #GstControlBinding. If it was the +last ref of the binding, it will be disposed. + + + %TRUE if the binding could be removed. + + + + + the object + + + + the binding + + + + + + This function is used to disable the control bindings on a property for +some time, i.e. gst_object_sync_values() will do nothing for the +property. + + + + + + + the object that has controlled properties + + + + property to disable + + + + boolean that specifies whether to disable the controller +or not. + + + + + + This function is used to disable all controlled properties of the @object for +some time, i.e. gst_object_sync_values() will do nothing. + + + + + + + the object that has controlled properties + + + + boolean that specifies whether to disable the controller +or not. + + + + + + Change the control-rate for this @object. Audio processing #GstElement +objects will use this rate to sub-divide their processing loop and call +gst_object_sync_values() in between. The length of the processing segment +should be up to @control-rate nanoseconds. + +The control-rate should not change if the element is in %GST_STATE_PAUSED or +%GST_STATE_PLAYING. + + + + + + + the object that has controlled properties + + + + the new control-rate in nanoseconds. + + + + + + Sets the name of @object, or gives @object 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. + + + %TRUE if the name could be set. Since Objects that have +a parent cannot be renamed, this function returns %FALSE in those +cases. + +MT safe. This function grabs and releases @object's LOCK. + + + + + a #GstObject + + + + new name of object + + + + + + Sets the parent of @object to @parent. The object's reference count will +be incremented, and any floating reference will be removed (see gst_object_ref_sink()). + + + %TRUE if @parent could be set or %FALSE when @object +already had a parent or @object and @parent are the same. + +MT safe. Grabs and releases @object's LOCK. + + + + + a #GstObject + + + + new parent of object + + + + + + Returns a suggestion for timestamps where buffers should be split +to get best controller results. + + + Returns the suggested timestamp or %GST_CLOCK_TIME_NONE +if no control-rate was set. + + + + + the object that has controlled properties + + + + + + Sets the properties of the object, according to the #GstControlSources that +(maybe) handle them and for the given timestamp. + +If this function fails, it is most likely the application developers fault. +Most probably the control sources are not setup correctly. + + + %TRUE if the controller values could be applied to the object +properties, %FALSE otherwise + + + + + the object that has controlled properties + + + + the time that should be processed + + + + + + Clear the parent of @object, removing the associated reference. +This function decreases the refcount of @object. + +MT safe. Grabs and releases @object's lock. + + + + + + + a #GstObject to unparent + + + + + + Decrements the reference count on @object. If reference count hits +zero, destroy @object. This function does not take the lock +on @object as it relies on atomic refcounting. + +The unref method should never be called with the LOCK held since +this might deadlock the dispose function. + + + + + + + a #GstObject to unreference + + + + + + + + + The parent of the object. Please note, that when changing the 'parent' +property, we don't emit #GObject::notify and #GstObject::deep-notify +signals due to locking issues. In some cases one can use +#GstBin::element-added or #GstBin::element-removed signals on the parent to +achieve a similar effect. + + + + + + + object LOCK + + + + The name of the object + + + + this object's parent, weak ref + + + + flags for this object + + + + + + + + + + + + + + + + + + The deep notify signal is used to be notified of property changes. It is +typically attached to the toplevel bin to receive notifications from all +the elements contained in that bin. + + + + + + the object that originated the signal + + + + the property that changed + + + + + + + GStreamer base object class. + + + parent + + + + separator used by gst_object_get_path_string() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The standard flags that an gstobject may have. + + the object is expected to stay alive even +after gst_deinit() has been called and so should be ignored by leak +detection tools. (Since: 1.10) + + + subclasses can add additional flags starting from this flag + + + + + + + + + + + Get the #GstPadActivateFunction from @pad. + + + + a #GstPad + + + + + Get the #GstPadActivateModeFunction from the given @pad. + + + + a #GstPad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the #GstPadChainFunction from the given @pad. + + + + a #GstPad + + + + + Get the #GstPadChainListFunction from the given @pad. + + + + a #GstPad + + + + + + + + + + + + Get the #GstPadDirection of the given @pad. Accessor macro, use +gst_pad_get_direction() instead. + + + + a #GstPad + + + + + Get the private data of @pad, which is usually some pad- or stream-specific +structure created by the element and set on the pad when creating it. +No locking is performed in this function. + + + + a #GstPad + + + + + Get the #GstPadEventFullFunction from the given @pad, which +is the function that handles events on the pad. You can +use this to set your own event handling function on a pad +after you create it. If your element derives from a base +class, use the base class's virtual functions instead. + + + + a #GstPad + + + + + Get the #GstPadEventFunction from the given @pad, which +is the function that handles events on the pad. You can +use this to set your own event handling function on a pad +after you create it. If your element derives from a base +class, use the base class's virtual functions instead. + + + + a #GstPad + + + + + Get the #GstPadGetRangeFunction from the given @pad. + + + + a #GstPad + + + + + Get the stream lock of @pad. The stream lock is protecting the +resources used in the data processing functions of @pad. Accessor +macro, use GST_PAD_STREAM_LOCK() and GST_PAD_STREAM_UNLOCK() instead +to take/release the pad's stream lock. + + + + a #GstPad + + + + + Check if the given @pad has pending events. This is used internally by +GStreamer. + + + + a #GstPad + + + + + Check if the pad's accept intersect flag is set. The default accept-caps +handler will check if the caps intersect the query-caps result instead of +checking for a subset. This is interesting for parser elements that can +accept incompletely specified caps. + + + + a #GstPad + + + + + Check if the pad's accept caps operation will use the pad template caps. +The default accept-caps will do a query caps to get the caps, which might +be querying downstream causing unnecessary overhead. It is recommended to +implement a proper accept-caps query handler or to use this flag to prevent +recursive accept-caps handling. + + + + a #GstPad + + + + + + + + a #GstPad + + + + + Check if the dataflow on a @pad is blocked. Use gst_pad_is_blocked() instead. + + + + a #GstPad + + + + + Check if the @pad is currently blocking on a buffer or event. Use +gst_pad_is_blocking() instead. + + + + a #GstPad + + + + + Check if the @pad is in EOS state. + + + + a #GstPad + + + + + Check if the given @pad is using fixed caps, which means that +once the caps are set on the @pad, the caps query function will +only return those caps. See gst_pad_use_fixed_caps(). + + + + a #GstPad + + + + + Check if the given @pad is flushing. + + + + a #GstPad + + + + + + + + a #GstPad + + + + + Check if the given @pad is set as proxy allocation which means +that the default query handler will forward allocation queries to the +internally linked @pads instead of discarding them. + + + + a #GstPad + + + + + Check if the given @pad is set to proxy caps. This means that the default +event and query handler will forward all events and queries to the +internally linked @pads instead of discarding them. + + + + a #GstPad + + + + + Check if the given @pad is set to proxy scheduling queries, which means that +the default query handler will forward scheduling queries to the internally +linked @pads instead of discarding them. + + + + a #GstPad + + + + + + + + a #GstPad + + + + + + + + a #GstPad + + + + + Get the #GstPadIterIntLinkFunction from the given @pad. + + + + a #GstPad + + + + + Gets the last flow return on this pad + + + + a #GstPad + + + + + Get the #GstPadLinkFunction for the given @pad. + + + + a #GstPad + + + + + Macro to test if the given #GstPadLinkReturn value indicates a failed +link step. + + + + the #GstPadLinkReturn value + + + + + Macro to test if the given #GstPadLinkReturn value indicates a successful +link step. + + + + the #GstPadLinkReturn value + + + + + Get the #GstPadMode of pad, which will be GST_PAD_MODE_NONE if the pad +has not been activated yet, and otherwise either GST_PAD_MODE_PUSH or +GST_PAD_MODE_PULL depending on which mode the pad was activated in. + + + + a #GstPad + + + + + Get name of the given pad. +No locking is performed in this function, use gst_pad_get_name() instead. + + + + a #GstPad + + + + + Check if there is a parent object before calling into the @pad callbacks. +This is used internally by GStreamer. + + + + a #GstPad + + + + + Check if the @pad should be reconfigured/renegotiated. +The flag has to be unset manually after reconfiguration happened. +Use gst_pad_needs_reconfigure() or gst_pad_check_reconfigure() instead. + + + + a #GstPad + + + + + Get the @pad #GstPadTemplate. It describes the possible media types +a @pad or an element factory can handle. + + + + a #GstPad + + + + + Get the @pad parent. +No locking is performed in this function, use gst_pad_get_parent() instead. + + + + a #GstPad + + + + + Return the pad's peer member. This member is a pointer to the linked @pad. +No locking is performed in this function, use gst_pad_get_peer() instead. + + + + a #GstPad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the #GstPadQueryFunction from @pad, which is the function +that handles queries on the pad. You can use this to set your +own query handling function on a pad after you create it. If your +element derives from a base class, use the base class's virtual +functions instead. + + + + a #GstPad + + + + + Set @pad to by default accept caps by intersecting the result instead of +checking for a subset. This is interesting for parser elements that can +accept incompletely specified caps. + + + + a #GstPad + + + + + Set @pad to by default use the pad template caps to compare with +the accept caps instead of using a caps query result. + + + + a #GstPad + + + + + Set the given @pad to flushing state, which means it will not accept any +more events, queries or buffers, and return GST_FLOW_FLUSHING if any buffers +are pushed on it. This usually happens when the pad is shut down or when +a flushing seek happens. This is used inside GStreamer when flush start/stop +events pass through pads, or when an element state is changed and pads are +activated or deactivated. + + + + a #GstPad + + + + + Set @pad to proxy allocation queries, which means that the default query +handler will forward allocation queries to the internally linked @pads +instead of discarding them. +Set this if the element always outputs data in the exact same format as it +receives as input. This is just for convenience to avoid implementing some +standard query handling code in an element. + + + + a #GstPad + + + + + Set @pad to proxy caps, so that all caps-related events and queries are +proxied down- or upstream to the other side of the element automatically. +Set this if the element always outputs data in the exact same format as it +receives as input. This is just for convenience to avoid implementing some +standard event and query handling code in an element. + + + + a #GstPad + + + + + Set @pad to proxy scheduling queries, which means that the default query +handler will forward scheduling queries to the internally linked @pads +instead of discarding them. You will usually want to handle scheduling +queries explicitly if your element supports multiple scheduling modes. + + + + a #GstPad + + + + + Take the pad's stream lock. The stream lock is recursive and will be taken +when buffers or serialized downstream events are pushed on a pad. + + + + a #GstPad + + + + + Try to take the pad's stream lock, and return %TRUE if the lock could be +taken, and otherwise %FALSE. + + + + a #GstPad + + + + + Release the pad's stream lock. + + + + a #GstPad + + + + + Get the #GstTask of @pad. Accessor macro used by GStreamer. Use the +gst_pad_start_task(), gst_pad_stop_task() and gst_pad_pause_task() +functions instead. + + + + a #GstPad + + + + + + + + + + + + Get a handle to the padtemplate #GstCaps + + + + the template to query + + + + + + + + + + + + Get the #GstPadDirection of the padtemplate. + + + + the template to query + + + + + Get the #GType of the padtemplate + + + + the template to query + + + + + Check if the properties of the padtemplate are fixed + + + + the template to query + + + + + Get the nametemplate of the padtemplate. + + + + the template to query + + + + + Get the #GstPadPresence of the padtemplate. + + + + the template to query + + + + + Get the #GstPadUnlinkFunction from the given @pad. + + + + a #GstPad + + + + + Unset accept intersect flag. + + + + a #GstPad + + + + + Unset accept template flag. + + + + a #GstPad + + + + + Unset the flushing flag. + + + + a #GstPad + + + + + Unset proxy allocation flag. + + + + a #GstPad + + + + + Unset proxy caps flag. + + + + a #GstPad + + + + + Unset proxy scheduling flag. + + + + a #GstPad + + + + + Use this flag on GObject properties of GstObject to indicate that +they might not be available depending on environment such as OS, device, etc, +so such properties will be installed conditionally only if the GstObject is +able to support it. + + + + + Use this flag on GObject properties to signal they can make sense to be. +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. +This flag implies GST_PARAM_MUTABLE_READY. + + + + + Use this flag on GObject properties of GstElements to indicate that +they can be changed when the element is in the PLAYING or lower state. +This flag implies GST_PARAM_MUTABLE_PAUSED. + + + + + Use this flag on GObject properties of GstElements to indicate that +they can be changed when the element is in the READY or lower state. + + + + + + + + + + + + + + + + + + + Bits based on GST_PARAM_USER_SHIFT can be used by 3rd party applications. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This macro needs to be used to define the entry point and meta data of a +plugin. One would use this macro to export a plugin, so that it can be used +by other applications. + +The macro uses a define named PACKAGE for the #GstPluginDesc,source field. +When using autoconf, this is usually set automatically via the AC_INIT +macro, and set in config.h. If you are not using autoconf, you will need to +define PACKAGE yourself and set it to a short mnemonic string identifying +your application/package, e.g. 'someapp' or 'my-plugins-foo. + +If defined, the GST_PACKAGE_RELEASE_DATETIME will also be used for the +#GstPluginDesc,release_datetime field. + + + + major version number of the gstreamer-core that plugin was compiled for + + + minor version number of the gstreamer-core that plugin was compiled for + + + short, but unique name of the plugin + + + information about the purpose of the plugin + + + function pointer to the plugin_init method with the signature of <code>static gboolean plugin_init (GstPlugin * plugin)</code>. + + + full version string (e.g. VERSION from config.h) + + + under which licence the package has been released, e.g. GPL, LGPL. + + + the package-name (e.g. PACKAGE_NAME from config.h) + + + a description from where the package comes from (e.g. the homepage URL) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Debug the plugin feature names in @list. + + + + a #GList of + plugin features + + + + + + + + + + + + This macro can be used to initialize statically linked plugins. It is +necessary to call this macro before the plugin can be used. +It has to be used in combination with GST_PLUGIN_STATIC_REGISTER +and must be placed outside any block to declare the plugin initialization +function. + + + + short, but unique name of the plugin + + + + + This macro can be used to initialize statically linked plugins. It is +necessary to call this macro before the plugin can be used. +It has to be used in combination with GST_PLUGIN_STATIC_DECLARE and +calls the plugin initialization function. + + + + short, but unique name of the plugin + + + + + + + + + + + + + + + + + + + + + + + + + + The field name in a GstCaps that is used to signal the UUID of the protection +system. + + + + + The protection system value of the unspecified UUID. +In some cases the system protection ID is not present in the contents or in their +metadata, as encrypted WebM. +This define is used to set the value of the "system_id" field in GstProtectionEvent, +with this value, the application will use an external information to choose which +protection system to use. + +Example: The matroskademux uses this value in the case of encrypted WebM, +the application will choose the appropriate protection system based on the information +received through EME API. + + + + + + + + + + + + + + + + + + + printf format type used to debug GStreamer types. You can use this in +combination with GStreamer's debug logging system as well as the functions +gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf() +to pretty-print the following types: #GstCaps, #GstStructure, +#GstCapsFeatures, #GstTagList, #GstDateTime, #GstBuffer, #GstBufferList, +#GstMessage, #GstEvent, #GstQuery, #GstContext, #GstPad, #GstObject. All +#GObject types will be printed as typename plus pointer, and everything +else will simply be printed as pointer address. + +This can only be used on types whose size is >= sizeof(gpointer). + + + + + A #GstElement is linked to other elements via "pads", which are extremely +light-weight generic link points. + +Pads have a #GstPadDirection, source pads produce data, sink pads consume +data. + +Pads are typically created from a #GstPadTemplate with +gst_pad_new_from_template() and are then added to a #GstElement. This usually +happens when the element is created but it can also happen dynamically based +on the data that the element is processing or based on the pads that the +application requests. + +Pads without pad templates can be created with gst_pad_new(), +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 +dataflow on the pads. + +gst_pad_get_parent() will retrieve the #GstElement that owns the pad. + +After two pads are retrieved from an element by gst_element_get_static_pad(), +the pads can be linked with gst_pad_link(). (For quick links, +you can also use gst_element_link(), which will make the obvious +link for you if it's straightforward.). Pads can be unlinked again with +gst_pad_unlink(). gst_pad_get_peer() can be used to check what the pad is +linked to. + +Before dataflow is possible on the pads, they need to be activated with +gst_pad_set_active(). + +gst_pad_query() and gst_pad_peer_query() can be used to query various +properties of the pad and the stream. + +To send a #GstEvent on a pad, use gst_pad_send_event() and +gst_pad_push_event(). Some events will be sticky on the pad, meaning that +after they pass on the pad they can be queried later with +gst_pad_get_sticky_event() and gst_pad_sticky_events_foreach(). +gst_pad_get_current_caps() and gst_pad_has_current_caps() are convenience +functions to query the current sticky CAPS event on a pad. + +GstElements will use gst_pad_push() and gst_pad_pull_range() to push out +or pull in a buffer. + +The dataflow, events and queries that happen on a pad can be monitored with +probes that can be installed with gst_pad_add_probe(). gst_pad_is_blocked() +can be used to check if a block probe is installed on the pad. +gst_pad_is_blocking() checks if the blocking probe is currently blocking the +pad. gst_pad_remove_probe() is used to remove a previously installed probe +and unblock blocking probes if any. + +Pad have an offset that can be retrieved with gst_pad_get_offset(). This +offset will be applied to the running_time of all data passing over the pad. +gst_pad_set_offset() can be used to change the offset. + +Convenience functions exist to start, pause and stop the task on a pad with +gst_pad_start_task(), gst_pad_pause_task() and gst_pad_stop_task() +respectively. + + + Creates a new pad with the given name in the given direction. +If name is %NULL, a guaranteed unique name (across all pads) +will be assigned. +This function makes a copy of the name so you can safely free the name. + + + a new #GstPad. + +MT safe. + + + + + the name of the new pad. + + + + the #GstPadDirection of the pad. + + + + + + Creates a new pad with the given name from the given static template. +If name is %NULL, a guaranteed unique name (across all pads) +will be assigned. +This function makes a copy of the name so you can safely free the name. + + + a new #GstPad. + + + + + the #GstStaticPadTemplate to use + + + + the name of the pad + + + + + + Creates a new pad with the given name from the given template. +If name is %NULL, a guaranteed unique name (across all pads) +will be assigned. +This function makes a copy of the name so you can safely free the name. + + + a new #GstPad. + + + + + the pad template to use + + + + the name of the pad + + + + + + Gets a string representing the given pad-link return. + + + a static string with the name of the pad-link return. + + + + + a #GstPadLinkReturn to get the name of. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Activates or deactivates the given pad in @mode via dispatching to the +pad's activatemodefunc. For use from within pad activation functions only. + +If you don't know what this is, you probably don't want to call it. + + + %TRUE if the operation was successful. + +MT safe. + + + + + the #GstPad to activate or deactivate. + + + + the requested activation mode + + + + whether or not the pad should be active. + + + + + + Be notified of different states of pads. The provided callback is called for +every state that matches @mask. + +Probes are called in groups: First GST_PAD_PROBE_TYPE_BLOCK probes are +called, then others, then finally GST_PAD_PROBE_TYPE_IDLE. The only +exception here are GST_PAD_PROBE_TYPE_IDLE probes that are called +immediately if the pad is already idle while calling gst_pad_add_probe(). +In each of the groups, probes are called in the order in which they were +added. + + + an id or 0 if no probe is pending. The id can be used to remove the +probe with gst_pad_remove_probe(). When using GST_PAD_PROBE_TYPE_IDLE it can +happen that the probe can be run immediately and if the probe returns +GST_PAD_PROBE_REMOVE this functions returns 0. + +MT safe. + + + + + the #GstPad to add the probe to + + + + the probe mask + + + + #GstPadProbeCallback that will be called with notifications of + the pad state + + + + user data passed to the callback + + + + #GDestroyNotify for user_data + + + + + + Checks if the source pad and the sink pad are compatible so they can be +linked. + + + %TRUE if the pads can be linked. + + + + + the source #GstPad. + + + + the sink #GstPad. + + + + + + Chain a buffer to @pad. + +The function returns #GST_FLOW_FLUSHING if the pad was flushing. + +If the buffer type is not acceptable for @pad (as negotiated with a +preceding GST_EVENT_CAPS event), this function returns +#GST_FLOW_NOT_NEGOTIATED. + +The function proceeds calling the chain function installed on @pad (see +gst_pad_set_chain_function()) and the return value of that function is +returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no +chain function. + +In all cases, success or failure, the caller loses its reference to @buffer +after calling this function. + + + a #GstFlowReturn from the pad. + +MT safe. + + + + + a sink #GstPad, returns GST_FLOW_ERROR if not. + + + + the #GstBuffer to send, return GST_FLOW_ERROR + if not. + + + + + + Chain a bufferlist to @pad. + +The function returns #GST_FLOW_FLUSHING if the pad was flushing. + +If @pad was not negotiated properly with a CAPS event, this function +returns #GST_FLOW_NOT_NEGOTIATED. + +The function proceeds calling the chainlist function installed on @pad (see +gst_pad_set_chain_list_function()) and the return value of that function is +returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no +chainlist function. + +In all cases, success or failure, the caller loses its reference to @list +after calling this function. + +MT safe. + + + a #GstFlowReturn from the pad. + + + + + a sink #GstPad, returns GST_FLOW_ERROR if not. + + + + the #GstBufferList to send, return GST_FLOW_ERROR + if not. + + + + + + Check and clear the #GST_PAD_FLAG_NEED_RECONFIGURE flag on @pad and return %TRUE +if the flag was set. + + + %TRUE is the GST_PAD_FLAG_NEED_RECONFIGURE flag was set on @pad. + + + + + the #GstPad to check + + + + + + Creates a stream-id for the source #GstPad @pad by combining the +upstream information with the optional @stream_id of the stream +of @pad. @pad must have a parent #GstElement and which must have zero +or one sinkpad. @stream_id can only be %NULL if the parent element +of @pad has only a single source pad. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending @stream_id to it. If the +element has no sinkpad it will generate an upstream stream-id by +doing an URI query on the element and in the worst case just uses +a random number. Source elements that don't implement the URI +handler interface should ideally generate a unique, deterministic +stream-id manually instead. + +Since stream IDs are sorted alphabetically, any numbers in the +stream ID should be printed with a fixed number of characters, +preceded by 0's, such as by using the format \%03u instead of \%u. + + + A stream-id for @pad. g_free() after usage. + + + + + A source #GstPad + + + + Parent #GstElement of @pad + + + + The stream-id + + + + + + Creates a stream-id for the source #GstPad @pad by combining the +upstream information with the optional @stream_id of the stream +of @pad. @pad must have a parent #GstElement and which must have zero +or one sinkpad. @stream_id can only be %NULL if the parent element +of @pad has only a single source pad. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending @stream_id to it. If the +element has no sinkpad it will generate an upstream stream-id by +doing an URI query on the element and in the worst case just uses +a random number. Source elements that don't implement the URI +handler interface should ideally generate a unique, deterministic +stream-id manually instead. + + + A stream-id for @pad. g_free() after usage. + + + + + A source #GstPad + + + + Parent #GstElement of @pad + + + + The stream-id + + + + parameters for the @stream_id format string + + + + + + Creates a stream-id for the source #GstPad @pad by combining the +upstream information with the optional @stream_id of the stream +of @pad. @pad must have a parent #GstElement and which must have zero +or one sinkpad. @stream_id can only be %NULL if the parent element +of @pad has only a single source pad. + +This function generates an unique stream-id by getting the upstream +stream-start event stream ID and appending @stream_id to it. If the +element has no sinkpad it will generate an upstream stream-id by +doing an URI query on the element and in the worst case just uses +a random number. Source elements that don't implement the URI +handler interface should ideally generate a unique, deterministic +stream-id manually instead. + + + A stream-id for @pad. g_free() after usage. + + + + + A source #GstPad + + + + Parent #GstElement of @pad + + + + The stream-id + + + + parameters for the @stream_id format string + + + + + + Invokes the default event handler for the given pad. + +The EOS event will pause the task associated with @pad before it is forwarded +to all internally linked pads, + +The event is sent to all pads internally linked to @pad. This function +takes ownership of @event. + + + %TRUE if the event was sent successfully. + + + + + a #GstPad to call the default event handler on. + + + + the parent of @pad or %NULL + + + + the #GstEvent to handle. + + + + + + Calls @forward for all internally linked pads of @pad. This function deals with +dynamically changing internal pads and will make sure that the @forward +function is only called once for each pad. + +When @forward returns %TRUE, no further pads will be processed. + + + %TRUE if one of the dispatcher functions returned %TRUE. + + + + + a #GstPad + + + + a #GstPadForwardFunction + + + + user data passed to @forward + + + + + + Gets the capabilities of the allowed media types that can flow through +@pad and its peer. + +The allowed capabilities is calculated as the intersection of the results of +calling gst_pad_query_caps() on @pad and its peer. The caller owns a reference +on the resulting caps. + + + the allowed #GstCaps of the + pad link. Unref the caps when you no longer need it. This + function returns %NULL when @pad has no peer. + +MT safe. + + + + + a #GstPad. + + + + + + Gets the capabilities currently configured on @pad with the last +#GST_EVENT_CAPS event. + + + the current caps of the pad with +incremented ref-count or %NULL when pad has no caps. Unref after usage. + + + + + a #GstPad to get the current capabilities of. + + + + + + Gets the direction of the pad. The direction of the pad is +decided at construction time so this function does not take +the LOCK. + + + the #GstPadDirection of the pad. + +MT safe. + + + + + a #GstPad to get the direction of. + + + + + + Gets the private data of a pad. +No locking is performed in this function. + + + a #gpointer to the private data. + + + + + the #GstPad to get the private data of. + + + + + + Gets the #GstFlowReturn return from the last data passed by this pad. + + + + + + + the #GstPad + + + + + + Get the offset applied to the running time of @pad. @pad has to be a source +pad. + + + the offset. + + + + + a #GstPad + + + + + + Gets the template for @pad. + + + the #GstPadTemplate from which + this pad was instantiated, or %NULL if this pad has no + template. Unref after usage. + + + + + a #GstPad. + + + + + + Gets the capabilities for @pad's template. + + + the #GstCaps of this pad template. +Unref after usage. + + + + + a #GstPad to get the template capabilities from. + + + + + + Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or +its parent is not an element, return %NULL. + + + the parent of the pad. The +caller has a reference on the parent, so unref when you're finished +with it. + +MT safe. + + + + + a pad + + + + + + Gets the peer of @pad. This function refs the peer pad so +you need to unref it after use. + + + the peer #GstPad. Unref after usage. + +MT safe. + + + + + a #GstPad to get the peer of. + + + + + + When @pad is flushing this function returns #GST_FLOW_FLUSHING +immediately and @buffer is %NULL. + +Calls the getrange function of @pad, see #GstPadGetRangeFunction for a +description of a getrange function. If @pad has no getrange function +installed (see gst_pad_set_getrange_function()) this function returns +#GST_FLOW_NOT_SUPPORTED. + +If @buffer points to a variable holding %NULL, a valid new #GstBuffer will be +placed in @buffer when this function returns #GST_FLOW_OK. The new buffer +must be freed with gst_buffer_unref() after usage. + +When @buffer points to a variable that points to a valid #GstBuffer, the +buffer will be filled with the result data when this function returns +#GST_FLOW_OK. If the provided buffer is larger than @size, only +@size bytes will be filled in the result buffer and its size will be updated +accordingly. + +Note that less than @size bytes can be returned in @buffer when, for example, +an EOS condition is near or when @buffer is not large enough to hold @size +bytes. The caller should check the result buffer size to get the result size. + +When this function returns any other result value than #GST_FLOW_OK, @buffer +will be unchanged. + +This is a lowlevel function. Usually gst_pad_pull_range() is used. + + + a #GstFlowReturn from the pad. + +MT safe. + + + + + a src #GstPad, returns #GST_FLOW_ERROR if not. + + + + The start offset of the buffer + + + + The length of the buffer + + + + a pointer to hold the #GstBuffer, + returns #GST_FLOW_ERROR if %NULL. + + + + + + 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. + + + a #GstEvent of type +@event_type or %NULL when no event of @event_type was on +@pad. Unref after usage. + + + + + the #GstPad to get the event from. + + + + the #GstEventType that should be retrieved. + + + + the index of the event + + + + + + Returns the current #GstStream for the @pad, or %NULL if none has been +set yet, i.e. the pad has not received a stream-start event yet. + +This is a convenience wrapper around gst_pad_get_sticky_event() and +gst_event_parse_stream(). + + + the current #GstStream for @pad, or %NULL. + unref the returned stream when no longer needed. + + + + + A source #GstPad + + + + + + Returns the current stream-id for the @pad, or %NULL if none has been +set yet, i.e. the pad has not received a stream-start event yet. + +This is a convenience wrapper around gst_pad_get_sticky_event() and +gst_event_parse_stream_start(). + +The returned stream-id string should be treated as an opaque string, its +contents should not be interpreted. + + + a newly-allocated copy of the stream-id for + @pad, or %NULL. g_free() the returned string when no longer + needed. + + + + + A source #GstPad + + + + + + Get @pad task state. If no task is currently +set, #GST_TASK_STOPPED is returned. + + + The current state of @pad's task. + + + + + the #GstPad to get task state from + + + + + + Check if @pad has caps set on it with a #GST_EVENT_CAPS event. + + + %TRUE when @pad has caps associated with it. + + + + + a #GstPad to check + + + + + + Query if a pad is active + + + %TRUE if the pad is active. + +MT safe. + + + + + the #GstPad to query + + + + + + Checks if the pad is blocked or not. This function returns the +last requested state of the pad. It is not certain that the pad +is actually blocking at this point (see gst_pad_is_blocking()). + + + %TRUE if the pad is blocked. + +MT safe. + + + + + the #GstPad to query + + + + + + Checks if the pad is blocking or not. This is a guaranteed state +of whether the pad is actually blocking on a #GstBuffer or a #GstEvent. + + + %TRUE if the pad is blocking. + +MT safe. + + + + + the #GstPad to query + + + + + + Checks if a @pad is linked to another pad or not. + + + %TRUE if the pad is linked, %FALSE otherwise. + +MT safe. + + + + + pad to check + + + + + + Gets an iterator for the pads to which the given pad is linked to inside +of the parent element. + +Each #GstPad element yielded by the iterator will have its refcount increased, +so unref after use. + +Free-function: gst_iterator_free + + + a new #GstIterator of #GstPad + or %NULL when the pad does not have an iterator function + configured. Use gst_iterator_free() after usage. + + + + + the GstPad to get the internal links of. + + + + + + Iterate the list of pads to which the given pad is linked to inside of +the parent element. +This is the default handler, and thus returns an iterator of all of the +pads inside the parent element with opposite direction. + +The caller must free this iterator after use with gst_iterator_free(). + + + a #GstIterator of #GstPad, or %NULL if @pad +has no parent. Unref each returned pad with gst_object_unref(). + + + + + the #GstPad to get the internal links of. + + + + the parent of @pad or %NULL + + + + + + Links the source pad and the sink pad. + + + A result code indicating if the connection worked or + what went wrong. + +MT Safe. + + + + + the source #GstPad to link. + + + + the sink #GstPad to link. + + + + + + Links the source pad and the sink pad. + +This variant of #gst_pad_link provides a more granular control on the +checks being done when linking. While providing some considerable speedups +the caller of this method must be aware that wrong usage of those flags +can cause severe issues. Refer to the documentation of #GstPadLinkCheck +for more information. + +MT Safe. + + + A result code indicating if the connection worked or + what went wrong. + + + + + the source #GstPad to link. + + + + the sink #GstPad to link. + + + + the checks to validate when linking + + + + + + Links @src to @sink, creating any #GstGhostPad's in between as necessary. + +This is a convenience function to save having to create and add intermediate +#GstGhostPad's as required for linking across #GstBin boundaries. + +If @src or @sink pads don't have parent elements or do not share a common +ancestor, the link will fail. + + + whether the link succeeded. + + + + + a #GstPad + + + + a #GstPad + + + + + + Links @src to @sink, creating any #GstGhostPad's in between as necessary. + +This is a convenience function to save having to create and add intermediate +#GstGhostPad's as required for linking across #GstBin boundaries. + +If @src or @sink pads don't have parent elements or do not share a common +ancestor, the link will fail. + +Calling gst_pad_link_maybe_ghosting_full() with +@flags == %GST_PAD_LINK_CHECK_DEFAULT is the recommended way of linking +pads with safety checks applied. + + + whether the link succeeded. + + + + + a #GstPad + + + + a #GstPad + + + + some #GstPadLinkCheck flags + + + + + + Mark a pad for needing reconfiguration. The next call to +gst_pad_check_reconfigure() will return %TRUE after this call. + + + + + + + the #GstPad to mark + + + + + + Check the #GST_PAD_FLAG_NEED_RECONFIGURE flag on @pad and return %TRUE +if the flag was set. + + + %TRUE is the GST_PAD_FLAG_NEED_RECONFIGURE flag is set on @pad. + + + + + the #GstPad to check + + + + + + Pause the task of @pad. This function will also wait until the +function executed by the task is finished if this function is not +called from the task function. + + + a %TRUE if the task could be paused or %FALSE when the pad +has no task. + + + + + the #GstPad to pause the task of + + + + + + Performs gst_pad_query() on the peer of @pad. + +The caller is responsible for both the allocation and deallocation of +the query structure. + + + %TRUE if the query could be performed. This function returns %FALSE +if @pad has no peer. + + + + + a #GstPad to invoke the peer query on. + + + + the #GstQuery to perform. + + + + + + Check if the peer of @pad accepts @caps. If @pad has no peer, this function +returns %TRUE. + + + %TRUE if the peer of @pad can accept the caps or @pad has no peer. + + + + + a #GstPad to check the peer of + + + + a #GstCaps to check on the pad + + + + + + Gets the capabilities of the peer connected to this pad. Similar to +gst_pad_query_caps(). + +When called on srcpads @filter contains the caps that +upstream could produce in the order preferred by upstream. When +called on sinkpads @filter contains the caps accepted by +downstream in the preferred order. @filter might be %NULL but +if it is not %NULL the returned caps will be a subset of @filter. + + + the caps of the peer pad with incremented +ref-count. When there is no peer pad, this function returns @filter or, +when @filter is %NULL, ANY caps. + + + + + a #GstPad to get the capabilities of. + + + + a #GstCaps filter, or %NULL. + + + + + + Queries the peer pad of a given sink pad to convert @src_val in @src_format +to @dest_format. + + + %TRUE if the query could be performed. + + + + + a #GstPad, on whose peer pad to invoke the convert query on. + Must be a sink pad. + + + + a #GstFormat to convert from. + + + + a value to convert. + + + + the #GstFormat to convert to. + + + + a pointer to the result. + + + + + + Queries the peer pad of a given sink pad for the total stream duration. + + + %TRUE if the query could be performed. + + + + + a #GstPad on whose peer pad to invoke the duration query on. + Must be a sink pad. + + + + the #GstFormat requested + + + + a location in which to store the total + duration, or %NULL. + + + + + + Queries the peer of a given sink pad for the stream position. + + + %TRUE if the query could be performed. + + + + + a #GstPad on whose peer to invoke the position query on. + Must be a sink pad. + + + + the #GstFormat requested + + + + a location in which to store the current + position, or %NULL. + + + + + + Checks if all internally linked pads of @pad accepts the caps in @query and +returns the intersection of the results. + +This function is useful as a default accept caps query function for an element +that can handle any stream format, but requires caps that are acceptable for +all opposite pads. + + + %TRUE if @query could be executed + + + + + a #GstPad to proxy. + + + + an ACCEPT_CAPS #GstQuery. + + + + + + Calls gst_pad_query_caps() for all internally linked pads of @pad and returns +the intersection of the results. + +This function is useful as a default caps query function for an element +that can handle any stream format, but requires all its pads to have +the same caps. Two such elements are tee and adder. + + + %TRUE if @query could be executed + + + + + a #GstPad to proxy. + + + + a CAPS #GstQuery. + + + + + + Pulls a @buffer from the peer pad or fills up a provided buffer. + +This function will first trigger the pad block signal if it was +installed. + +When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this +function returns the result of gst_pad_get_range() on the peer pad. +See gst_pad_get_range() for a list of return values and for the +semantics of the arguments of this function. + +If @buffer points to a variable holding %NULL, a valid new #GstBuffer will be +placed in @buffer when this function returns #GST_FLOW_OK. The new buffer +must be freed with gst_buffer_unref() after usage. When this function +returns any other result value, @buffer will still point to %NULL. + +When @buffer points to a variable that points to a valid #GstBuffer, the +buffer will be filled with the result data when this function returns +#GST_FLOW_OK. When this function returns any other result value, +@buffer will be unchanged. If the provided buffer is larger than @size, only +@size bytes will be filled in the result buffer and its size will be updated +accordingly. + +Note that less than @size bytes can be returned in @buffer when, for example, +an EOS condition is near or when @buffer is not large enough to hold @size +bytes. The caller should check the result buffer size to get the result size. + + + a #GstFlowReturn from the peer pad. + +MT safe. + + + + + a sink #GstPad, returns GST_FLOW_ERROR if not. + + + + The start offset of the buffer + + + + The length of the buffer + + + + a pointer to hold the #GstBuffer, returns + GST_FLOW_ERROR if %NULL. + + + + + + Pushes a buffer to the peer of @pad. + +This function will call installed block probes before triggering any +installed data probes. + +The function proceeds calling gst_pad_chain() on the peer pad and returns +the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will +be returned. + +In all cases, success or failure, the caller loses its reference to @buffer +after calling this function. + + + a #GstFlowReturn from the peer pad. + +MT safe. + + + + + a source #GstPad, returns #GST_FLOW_ERROR if not. + + + + the #GstBuffer to push returns GST_FLOW_ERROR + if not. + + + + + + Sends the event to the peer of the given pad. This function is +mainly used by elements to send events to their peer +elements. + +This function takes ownership of the provided event so you should +gst_event_ref() it if you want to reuse the event after this call. + + + %TRUE if the event was handled. + +MT safe. + + + + + a #GstPad to push the event to. + + + + the #GstEvent to send to the pad. + + + + + + Pushes a buffer list to the peer of @pad. + +This function will call installed block probes before triggering any +installed data probes. + +The function proceeds calling the chain function on the peer pad and returns +the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will +be returned. If the peer pad does not have any installed chainlist function +every group buffer of the list will be merged into a normal #GstBuffer and +chained via gst_pad_chain(). + +In all cases, success or failure, the caller loses its reference to @list +after calling this function. + + + a #GstFlowReturn from the peer pad. + +MT safe. + + + + + a source #GstPad, returns #GST_FLOW_ERROR if not. + + + + the #GstBufferList to push returns GST_FLOW_ERROR + if not. + + + + + + Dispatches a query to a pad. The query should have been allocated by the +caller via one of the type-specific allocation functions. The element that +the pad belongs to is responsible for filling the query with an appropriate +response, which should then be parsed with a type-specific query parsing +function. + +Again, the caller is responsible for both the allocation and deallocation of +the query structure. + +Please also note that some queries might need a running pipeline to work. + + + %TRUE if the query could be performed. + + + + + a #GstPad to invoke the default query on. + + + + the #GstQuery to perform. + + + + + + Check if the given pad accepts the caps. + + + %TRUE if the pad can accept the caps. + + + + + a #GstPad to check + + + + a #GstCaps to check on the pad + + + + + + Gets the capabilities this pad can produce or consume. +Note that this method doesn't necessarily return the caps set by sending a +gst_event_new_caps() - use gst_pad_get_current_caps() for that instead. +gst_pad_query_caps returns all possible caps a pad can operate with, using +the pad's CAPS query function, If the query fails, this function will return +@filter, if not %NULL, otherwise ANY. + +When called on sinkpads @filter contains the caps that +upstream could produce in the order preferred by upstream. When +called on srcpads @filter contains the caps accepted by +downstream in the preferred order. @filter might be %NULL but +if it is not %NULL the returned caps will be a subset of @filter. + +Note that this function does not return writable #GstCaps, use +gst_caps_make_writable() before modifying the caps. + + + the caps of the pad with incremented ref-count. + + + + + a #GstPad to get the capabilities of. + + + + suggested #GstCaps, or %NULL + + + + + + Queries a pad to convert @src_val in @src_format to @dest_format. + + + %TRUE if the query could be performed. + + + + + a #GstPad to invoke the convert query on. + + + + a #GstFormat to convert from. + + + + a value to convert. + + + + the #GstFormat to convert to. + + + + a pointer to the result. + + + + + + Invokes the default query handler for the given pad. +The query is sent to all pads internally linked to @pad. Note that +if there are many possible sink pads that are internally linked to +@pad, only one will be sent the query. +Multi-sinkpad elements should implement custom query handlers. + + + %TRUE if the query was performed successfully. + + + + + a #GstPad to call the default query handler on. + + + + the parent of @pad or %NULL + + + + the #GstQuery to handle. + + + + + + Queries a pad for the total stream duration. + + + %TRUE if the query could be performed. + + + + + a #GstPad to invoke the duration query on. + + + + the #GstFormat requested + + + + a location in which to store the total + duration, or %NULL. + + + + + + Queries a pad for the stream position. + + + %TRUE if the query could be performed. + + + + + a #GstPad to invoke the position query on. + + + + the #GstFormat requested + + + + A location in which to store the current position, or %NULL. + + + + + + Remove the probe with @id from @pad. + +MT safe. + + + + + + + the #GstPad with the probe + + + + the probe id to remove + + + + + + Sends the event to the pad. This function can be used +by applications to send events in the pipeline. + +If @pad is a source pad, @event should be an upstream event. If @pad is a +sink pad, @event should be a downstream event. For example, you would not +send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream. +Furthermore, some downstream events have to be serialized with data flow, +like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If +the event needs to be serialized with data flow, this function will take the +pad's stream lock while calling its event function. + +To find out whether an event type is upstream, downstream, or downstream and +serialized, see #GstEventTypeFlags, gst_event_type_get_flags(), +#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and +#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or +plugin doesn't need to bother itself with this information; the core handles +all necessary locks and checks. + +This function takes ownership of the provided event so you should +gst_event_ref() it if you want to reuse the event after this call. + + + %TRUE if the event was handled. + + + + + a #GstPad to send the event to. + + + + the #GstEvent to send to the pad. + + + + + + Sets the given activate function for @pad. The activate function will +dispatch to gst_pad_activate_mode() to perform the actual activation. +Only makes sense to set on sink pads. + +Call this function if your sink pad can start a pull-based task. + + + + + + + a #GstPad. + + + + the #GstPadActivateFunction to set. + + + + user_data passed to @notify + + + + notify called when @activate will not be used anymore. + + + + + + Sets the given activate_mode function for the pad. An activate_mode function +prepares the element for data passing. + + + + + + + a #GstPad. + + + + the #GstPadActivateModeFunction to set. + + + + user_data passed to @notify + + + + notify called when @activatemode will not be used anymore. + + + + + + Activates or deactivates the given pad. +Normally called from within core state change functions. + +If @active, makes sure the pad is active. If it is already active, either in +push or pull mode, just return. Otherwise dispatches to the pad's activate +function to perform the actual activation. + +If not @active, calls gst_pad_activate_mode() with the pad's current mode +and a %FALSE argument. + + + %TRUE if the operation was successful. + +MT safe. + + + + + the #GstPad to activate or deactivate. + + + + whether or not the pad should be active. + + + + + + Sets the given chain function for the pad. The chain function is called to +process a #GstBuffer input buffer. see #GstPadChainFunction for more details. + + + + + + + a sink #GstPad. + + + + the #GstPadChainFunction to set. + + + + user_data passed to @notify + + + + notify called when @chain will not be used anymore. + + + + + + Sets the given chain list function for the pad. The chainlist function is +called to process a #GstBufferList input buffer list. See +#GstPadChainListFunction for more details. + + + + + + + a sink #GstPad. + + + + the #GstPadChainListFunction to set. + + + + user_data passed to @notify + + + + notify called when @chainlist will not be used anymore. + + + + + + Set the given private data gpointer on the pad. +This function can only be used by the element that owns the pad. +No locking is performed in this function. + + + + + + + the #GstPad to set the private data of. + + + + The private data to attach to the pad. + + + + + + Sets the given event handler for the pad. + + + + + + + a #GstPad of either direction. + + + + the #GstPadEventFullFunction to set. + + + + user_data passed to @notify + + + + notify called when @event will not be used anymore. + + + + + + Sets the given event handler for the pad. + + + + + + + a #GstPad of either direction. + + + + the #GstPadEventFunction to set. + + + + user_data passed to @notify + + + + notify called when @event will not be used anymore. + + + + + + Sets the given getrange function for the pad. The getrange function is +called to produce a new #GstBuffer to start the processing pipeline. see +#GstPadGetRangeFunction for a description of the getrange function. + + + + + + + a source #GstPad. + + + + the #GstPadGetRangeFunction to set. + + + + user_data passed to @notify + + + + notify called when @get will not be used anymore. + + + + + + Sets the given internal link iterator function for the pad. + + + + + + + a #GstPad of either direction. + + + + the #GstPadIterIntLinkFunction to set. + + + + user_data passed to @notify + + + + notify called when @iterintlink will not be used anymore. + + + + + + Sets the given link function for the pad. It will be called when +the pad is linked with another pad. + +The return value #GST_PAD_LINK_OK should be used when the connection can be +made. + +The return value #GST_PAD_LINK_REFUSED should be used when the connection +cannot be made for some reason. + +If @link is installed on a source pad, it should call the #GstPadLinkFunction +of the peer sink pad, if present. + + + + + + + a #GstPad. + + + + the #GstPadLinkFunction to set. + + + + user_data passed to @notify + + + + notify called when @link will not be used anymore. + + + + + + Set the offset that will be applied to the running time of @pad. + + + + + + + a #GstPad + + + + the offset + + + + + + Set the given query function for the pad. + + + + + + + a #GstPad of either direction. + + + + the #GstPadQueryFunction to set. + + + + user_data passed to @notify + + + + notify called when @query will not be used anymore. + + + + + + Sets the given unlink function for the pad. It will be called +when the pad is unlinked. + +Note that the pad's lock is already held when the unlink +function is called, so most pad functions cannot be called +from within the callback. + + + + + + + a #GstPad. + + + + the #GstPadUnlinkFunction to set. + + + + user_data passed to @notify + + + + notify called when @unlink will not be used anymore. + + + + + + Starts a task that repeatedly calls @func with @user_data. This function +is mostly used in pad activation functions to start the dataflow. +The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired +before @func is called. + + + a %TRUE if the task could be started. + + + + + the #GstPad to start the task of + + + + the task function to call + + + + user data passed to the task function + + + + called when @user_data is no longer referenced + + + + + + Iterates all sticky events on @pad and calls @foreach_func for every +event. If @foreach_func returns %FALSE the iteration is immediately stopped. + + + + + + + the #GstPad that should be used for iteration. + + + + the #GstPadStickyEventsForeachFunction that + should be called for every event. + + + + the optional user data. + + + + + + Stop the task of @pad. This function will also make sure that the +function executed by the task will effectively stop if not called +from the GstTaskFunction. + +This function will deadlock if called from the GstTaskFunction of +the task. Use gst_task_pause() instead. + +Regardless of whether the pad has a task, the stream lock is acquired and +released so as to ensure that streaming through this pad has finished. + + + a %TRUE if the task could be stopped or %FALSE on error. + + + + + the #GstPad to stop the task of + + + + + + Store the sticky @event on @pad + + + #GST_FLOW_OK on success, #GST_FLOW_FLUSHING when the pad +was flushing or #GST_FLOW_EOS when the pad was EOS. + + + + + a #GstPad + + + + a #GstEvent + + + + + + Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked +signal on both pads. + + + %TRUE if the pads were unlinked. This function returns %FALSE if +the pads were not linked together. + +MT safe. + + + + + the source #GstPad to unlink. + + + + the sink #GstPad to unlink. + + + + + + A helper function you can use that sets the FIXED_CAPS flag +This way the default CAPS query will always return the negotiated caps +or in case the pad is not negotiated, the padtemplate caps. + +The negotiated caps are the caps of the last CAPS event that passed on the +pad. Use this function on a pad that, once it negotiated to a CAPS, cannot +be renegotiated to something else. + + + + + + + the pad to use + + + + + + + + + + + + The offset that will be applied to the running time of the pad. + + + + + + + + + + private data owned by the parent element + + + + padtemplate for this pad + + + + the direction of the pad, cannot change after creating + the pad. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Signals that a pad has been linked to the peer pad. + + + + + + the peer pad that has been connected + + + + + + Signals that a pad has been unlinked from the peer pad. + + + + + + the peer pad that has been disconnected + + + + + + + This function is called when the pad is activated during the element +READY to PAUSED state change. By default this function will call the +activate function that puts the pad in push mode but elements can +override this function to activate the pad in pull mode if they wish. + + + %TRUE if the pad could be activated. + + + + + a #GstPad + + + + the parent of @pad + + + + + + The prototype of the push and pull activate functions. + + + %TRUE if the pad could be activated or deactivated. + + + + + a #GstPad + + + + the parent of @pad + + + + the requested activation mode of @pad + + + + activate or deactivate the pad. + + + + + + A function that will be called on sinkpads when chaining buffers. +The function typically processes the data contained in the buffer and +either consumes the data or passes it on to the internally linked pad(s). + +The implementer of this function receives a refcount to @buffer and should +gst_buffer_unref() when the buffer is no longer needed. + +When a chain function detects an error in the data stream, it must post an +error on the bus and return an appropriate #GstFlowReturn value. + + + #GST_FLOW_OK for success + + + + + the sink #GstPad that performed the chain. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the #GstBuffer that is chained, not %NULL. + + + + + + A function that will be called on sinkpads when chaining buffer lists. +The function typically processes the data contained in the buffer list and +either consumes the data or passes it on to the internally linked pad(s). + +The implementer of this function receives a refcount to @list and +should gst_buffer_list_unref() when the list is no longer needed. + +When a chainlist function detects an error in the data stream, it must +post an error on the bus and return an appropriate #GstFlowReturn value. + + + #GST_FLOW_OK for success + + + + + the sink #GstPad that performed the chain. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the #GstBufferList that is chained, not %NULL. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The direction of a pad. + + direction is unknown. + + + the pad is a source pad. + + + the pad is a sink pad. + + + + Function signature to handle an event for the pad. + +This variant is for specific elements that will take into account the +last downstream flow return (from a pad push), in which case they can +return it. + + + %GST_FLOW_OK if the event was handled properly, or any other +#GstFlowReturn dependent on downstream state. + + + + + the #GstPad to handle the event. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the #GstEvent to handle. + + + + + + Function signature to handle an event for the pad. + + + %TRUE if the pad could handle the event. + + + + + the #GstPad to handle the event. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the #GstEvent to handle. + + + + + + Pad state flags + + is dataflow on a pad blocked + + + is pad flushing + + + is pad in EOS state + + + is pad currently blocking on a buffer or event + + + ensure that there is a parent object before calling + into the pad callbacks. + + + the pad should be reconfigured/renegotiated. + The flag has to be unset manually after + reconfiguration happened. + + + the pad has pending events + + + the pad is using fixed caps. This means that + once the caps are set on the pad, the default caps query function + will only return those caps. + + + the default event and query handler will forward + all events and queries to the internally linked pads + instead of discarding them. + + + the default query handler will forward + allocation queries to the internally linked pads + instead of discarding them. + + + the default query handler will forward + scheduling queries to the internally linked pads + instead of discarding them. + + + the default accept-caps handler will check + it the caps intersect the query-caps result instead + of checking for a subset. This is interesting for + parsers that can accept incompletely specified caps. + + + the default accept-caps handler will use + the template pad caps instead of query caps to + compare with the accept caps. Use this in combination + with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since: 1.6) + + + offset to define more flags + + + + A forward function is called for all internally linked pads, see +gst_pad_forward(). + + + %TRUE if the dispatching procedure has to be stopped. + + + + + the #GstPad that is forwarded. + + + + the gpointer to optional user data. + + + + + + This function will be called on source pads when a peer element +request a buffer at the specified @offset and @length. If this function +returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The +contents of @buffer is invalid for any other return value. + +This function is installed on a source pad with +gst_pad_set_getrange_function() and can only be called on source pads after +they are successfully activated with gst_pad_activate_mode() with the +#GST_PAD_MODE_PULL. + +@offset and @length are always given in byte units. @offset must normally be a value +between 0 and the length in bytes of the data available on @pad. The +length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a +#GST_QUERY_SEEKING. + +Any @offset larger or equal than the length will make the function return +#GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not +contain a valid buffer. + +The buffer size of @buffer will only be smaller than @length when @offset is +near the end of the stream. In all other cases, the size of @buffer must be +exactly the requested size. + +It is allowed to call this function with a 0 @length and valid @offset, in +which case @buffer will contain a 0-sized buffer and the function returns +#GST_FLOW_OK. + +When this function is called with a -1 @offset, the sequentially next buffer +of length @length in the stream is returned. + +When this function is called with a -1 @length, a buffer with a default +optimal length is returned in @buffer. The length might depend on the value +of @offset. + + + #GST_FLOW_OK for success and a valid buffer in @buffer. Any other +return value leaves @buffer undefined. + + + + + the src #GstPad to perform the getrange on. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the offset of the range + + + + the length of the range + + + + a memory location to hold the result buffer, cannot be %NULL. + + + + + + The signature of the internal pad link iterator function. + + + a new #GstIterator that will iterate over all pads that are +linked to the given pad on the inside of the parent element. + +the caller must call gst_iterator_free() after usage. + + + + + The #GstPad to query. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + + + The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS +and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are +specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed. + +> Only disable some of the checks if you are 100% certain you know the link +> will not fail because of hierarchy/caps compatibility failures. If uncertain, +> use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods +> for linking the pads. + + Don't check hierarchy or caps compatibility. + + + Check the pads have same parents/grandparents. + Could be omitted if it is already known that the two elements that own the + pads are in the same bin. + + + Check if the pads are compatible by using + their template caps. This is much faster than @GST_PAD_LINK_CHECK_CAPS, but + would be unsafe e.g. if one pad has %GST_CAPS_ANY. + + + Check if the pads are compatible by comparing the + caps returned by gst_pad_query_caps(). + + + Disables pushing a reconfigure event when pads are + linked. + + + The default checks done when linking + pads (i.e. the ones used by gst_pad_link()). + + + + Function signature to handle a new link on the pad. + + + the result of the link with the specified peer. + + + + + the #GstPad that is linked. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the peer #GstPad of the link + + + + + + Result values from gst_pad_link and friends. + + link succeeded + + + pads have no common grandparent + + + pad was already linked + + + pads have wrong direction + + + pads do not have common format + + + pads cannot cooperate in scheduling + + + refused for some reason + + + + The status of a GstPad. After activating a pad, which usually happens when the +parent element goes from READY to PAUSED, the GstPadMode defines if the +pad operates in push or pull mode. + + Pad will not handle dataflow + + + Pad handles dataflow in downstream push mode + + + Pad handles dataflow in upstream pull mode + + + Return the name of a pad mode, for use in debug messages mostly. + + + short mnemonic for pad mode @mode + + + + + the pad mode + + + + + + + Indicates when this pad will become available. + + the pad is always available + + + the pad will become available depending on the media stream + + + the pad is only available on request with + gst_element_request_pad(). + + + + + + + Callback used by gst_pad_add_probe(). Gets called to notify about the current +blocking type. + +The callback is allowed to modify the data pointer in @info. + + + a #GstPadProbeReturn + + + + + the #GstPad that is blocked + + + + #GstPadProbeInfo + + + + the gpointer to optional user data. + + + + + + Info passed in the #GstPadProbeCallback. + + + the current probe type + + + + the id of the probe + + + + type specific data, check the @type field to know the + datatype. This field can be %NULL. + + + + offset of pull probe, this field is valid when @type contains + #GST_PAD_PROBE_TYPE_PULL + + + + size of pull probe, this field is valid when @type contains + #GST_PAD_PROBE_TYPE_PULL + + + + + + + + + + + + + + + + + + + + The #GstBuffer from the probe + + + + + a #GstPadProbeInfo + + + + + + + + The #GstBufferList from the probe + + + + + a #GstPadProbeInfo + + + + + + + + The #GstEvent from the probe + + + + + a #GstPadProbeInfo + + + + + + + + The #GstQuery from the probe + + + + + a #GstPadProbeInfo + + + + + + + Different return values for the #GstPadProbeCallback. + + drop data in data probes. For push mode this means that + the data item is not sent downstream. For pull mode, it means that + the data item is not passed upstream. In both cases, no other probes + are called for this item and %GST_FLOW_OK or %TRUE is returned to the + caller. + + + normal probe return value. This leaves the probe in + place, and defers decisions about dropping or passing data to other + probes, if any. If there are no other probes, the default behaviour + for the probe type applies ('block' for blocking probes, + and 'pass' for non-blocking probes). + + + remove this probe, passing the data. For blocking probes + this will cause data flow to unblock, unless there are also other + blocking probes installed. + + + pass the data item in the block probe and block on the + next item. Note, that if there are multiple pad probes installed and + any probe returns PASS, the data will be passed. + + + Data has been handled in the probe and will not be + forwarded further. For events and buffers this is the same behaviour as + %GST_PAD_PROBE_DROP (except that in this case you need to unref the buffer + or event yourself). For queries it will also return %TRUE to the caller. + The probe can also modify the #GstFlowReturn value by using the + #GST_PAD_PROBE_INFO_FLOW_RETURN() accessor. + Note that the resulting query must contain valid entries. + Since: 1.6 + + + + The different probing types that can occur. When either one of +@GST_PAD_PROBE_TYPE_IDLE or @GST_PAD_PROBE_TYPE_BLOCK is used, the probe will be a +blocking probe. + + invalid probe type + + + probe idle pads and block while the callback is called + + + probe and block pads + + + probe buffers + + + probe buffer lists + + + probe downstream events + + + probe upstream events + + + probe flush events. This probe has to be + explicitly enabled and is not included in the + @@GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM or + @@GST_PAD_PROBE_TYPE_EVENT_UPSTREAM probe types. + + + probe downstream queries + + + probe upstream queries + + + probe push + + + probe pull + + + probe and block at the next opportunity, at data flow or when idle + + + probe downstream data (buffers, buffer lists, and events) + + + probe upstream data (events) + + + probe upstream and downstream data (buffers, buffer lists, and events) + + + probe and block downstream data (buffers, buffer lists, and events) + + + probe and block upstream data (events) + + + probe upstream and downstream events + + + probe upstream and downstream queries + + + probe upstream events and queries and downstream buffers, buffer lists, events and queries + + + probe push and pull + + + + The signature of the query function. + + + %TRUE if the query could be performed. + + + + + the #GstPad to query. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + the #GstQuery object to execute + + + + + + Callback used by gst_pad_sticky_events_foreach(). + +When this function returns %TRUE, the next event will be +returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return. + +When @event is set to %NULL, the item will be removed from the list of sticky events. +@event can be replaced by assigning a new reference to it. +This function is responsible for unreffing the old event when +removing or modifying. + + + %TRUE if the iteration should continue + + + + + the #GstPad. + + + + a sticky #GstEvent. + + + + the #gpointer to optional user data. + + + + + + Padtemplates describe the possible media types a pad or an elementfactory can +handle. This allows for both inspection of handled types before loading the +element plugin as well as identifying pads on elements that are not yet +created (request or sometimes pads). + +Pad and PadTemplates have #GstCaps attached to it to describe the media type +they are capable of dealing with. gst_pad_template_get_caps() or +GST_PAD_TEMPLATE_CAPS() are used to get the caps of a padtemplate. It's not +possible to modify the caps of a padtemplate after creation. + +PadTemplates have a #GstPadPresence property which identifies the lifetime +of the pad and that can be retrieved with GST_PAD_TEMPLATE_PRESENCE(). Also +the direction of the pad can be retrieved from the #GstPadTemplate with +GST_PAD_TEMPLATE_DIRECTION(). + +The GST_PAD_TEMPLATE_NAME_TEMPLATE () is important for GST_PAD_REQUEST pads +because it has to be used as the name in the gst_element_request_pad_simple() +call to instantiate a pad from this template. + +Padtemplates can be created with gst_pad_template_new() or with +gst_static_pad_template_get (), which creates a #GstPadTemplate from a +#GstStaticPadTemplate that can be filled with the +convenient GST_STATIC_PAD_TEMPLATE() macro. + +A padtemplate can be used to create a pad (see gst_pad_new_from_template() +or gst_pad_new_from_static_template ()) or to add to an element class +(see gst_element_class_add_static_pad_template ()). + +The following code example shows the code to create a pad from a padtemplate. +|[<!-- language="C" --> + GstStaticPadTemplate my_template = + GST_STATIC_PAD_TEMPLATE ( + "sink", // the name of the pad + GST_PAD_SINK, // the direction of the pad + GST_PAD_ALWAYS, // when this pad will be present + GST_STATIC_CAPS ( // the capabilities of the padtemplate + "audio/x-raw, " + "channels = (int) [ 1, 6 ]" + ) + ); + void + my_method (void) + { + GstPad *pad; + pad = gst_pad_new_from_static_template (&my_template, "sink"); + ... + } +]| + +The following example shows you how to add the padtemplate to an +element class, this is usually done in the class_init of the class: +|[<!-- language="C" --> + static void + my_element_class_init (GstMyElementClass *klass) + { + GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); + + gst_element_class_add_static_pad_template (gstelement_class, &my_template); + } +]| + + + Creates a new pad template with a name according to the given template +and with the given arguments. + + + a new #GstPadTemplate. + + + + + the name template. + + + + the #GstPadDirection of the template. + + + + the #GstPadPresence of the pad. + + + + a #GstCaps set for the template. + + + + + + Converts a #GstStaticPadTemplate into a #GstPadTemplate with a type. + + + a new #GstPadTemplate. + + + + + the static pad template + + + + The #GType of the pad to create + + + + + + Creates a new pad template with a name according to the given template +and with the given arguments. + + + a new #GstPadTemplate. + + + + + the name template. + + + + the #GstPadDirection of the template. + + + + the #GstPadPresence of the pad. + + + + a #GstCaps set for the template. + + + + The #GType of the pad to create + + + + + + Emit the pad-created signal for this template when created by this pad. + + + + + + + a #GstPadTemplate that has been created + + + + the #GstPad that created it + + + + + + Gets the capabilities of the pad template. + + + the #GstCaps of the pad template. +Unref after usage. + + + + + a #GstPadTemplate to get capabilities of. + + + + + + See gst_pad_template_set_documentation_caps(). + + + The caps to document. For convenience, this will return + gst_pad_template_get_caps() when no documentation caps were set. + + + + + the pad template to get documented capabilities on + + + + + + Emit the pad-created signal for this template when created by this pad. + + + + + + + a #GstPadTemplate that has been created + + + + the #GstPad that created it + + + + + + Certain elements will dynamically construct the caps of their +pad templates. In order not to let environment-specific information +into the documentation, element authors should use this method to +expose "stable" caps to the reader. + + + + + + + the pad template to set documented capabilities on + + + + the documented capabilities + + + + + + The capabilities of the pad described by the pad template. + + + + The direction of the pad described by the pad template. + + + + The type of the pad described by the pad template. + + + + The name template of the pad template. + + + + When the pad described by the pad template will become available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This signal is fired when an element creates a pad from this template. + + + + + + the pad that was created. + + + + + + + + + + + + + + + + + + + a #GstPadTemplate that has been created + + + + the #GstPad that created it + + + + + + + + + + + + + Flags for the padtemplate + + first flag that can be used by subclasses. + + + + Function signature to handle a unlinking the pad prom its peer. + +The pad's lock is already held when the unlink function is called, so most +pad functions cannot be called from within the callback. + + + + + + + the #GstPad that is linked. + + + + the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT + flag is set, @parent is guaranteed to be not-%NULL and remain valid + during the execution of this function. + + + + + + A fundamental type that describes a #GParamSpec for arrays of +values + + + A fundamental type that describes a #GParamSpec for fractional +properties + + + A GParamSpec derived structure for arrays of values. + + + super class + + + + the #GParamSpec of the type of values in the array + + + + + A GParamSpec derived structure that contains the meta data for fractional +properties. + + + super class + + + + minimal numerator + + + + minimal denominator + + + + maximal numerator + + + + maximal denominator + + + + default numerator + + + + default denominator + + + + + The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer +to hold a reference to another buffer that is only released when the child +#GstBuffer is released. + +Typically, #GstParentBufferMeta is used when the child buffer is directly +using the #GstMemory of the parent buffer, and wants to prevent the parent +buffer from being returned to a buffer pool until the #GstMemory is available +for re-use. + + + the parent #GstMeta structure + + + + the #GstBuffer on which a reference is being held. + + + + Gets the global #GstMetaInfo describing the #GstParentBufferMeta meta. + + + The #GstMetaInfo + + + + + + Opaque structure. + + + Allocates a parse context for use with gst_parse_launch_full() or +gst_parse_launchv_full(). + +Free-function: gst_parse_context_free + + + a newly-allocated parse context. Free + with gst_parse_context_free() when no longer needed. + + + + + Copies the @context. + + + A copied #GstParseContext + + + + + a #GstParseContext + + + + + + Frees a parse context previously allocated with gst_parse_context_new(). + + + + + + + a #GstParseContext + + + + + + Retrieve missing elements from a previous run of gst_parse_launch_full() +or gst_parse_launchv_full(). Will only return results if an error code +of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned. + + + a + %NULL-terminated array of element factory name strings of missing + elements. Free with g_strfreev() when no longer needed. + + + + + + + a #GstParseContext + + + + + + + The different parsing errors that can occur. + + A syntax error occurred. + + + The description contained an unknown element + + + An element did not have a specified property + + + There was an error linking two pads. + + + There was an error setting a property + + + An empty bin was specified. + + + An empty description was specified + + + A delayed link did not get resolved. + + + Get the error quark used by the parsing subsystem. + + the quark of the parse errors. + + + + + + Parsing options. + + Do not use any special parsing options. + + + Always return %NULL when an error occurs + (default behaviour is to return partially constructed bins or elements + in some cases) + + + If a bin only has a single element, + just return the element. + + + If more than one toplevel element is described + by the pipeline description string, put them in a #GstBin instead of a + #GstPipeline. (Since: 1.10) + + + + A #GstPipeline is a special #GstBin used as the toplevel container for +the filter graph. The #GstPipeline will manage the selection and +distribution of a global #GstClock as well as provide a #GstBus to the +application. + +gst_pipeline_new() is used to create a pipeline. when you are done with +the pipeline, use gst_object_unref() to free its resources including all +added #GstElement objects (if not otherwise referenced). + +Elements are added and removed from the pipeline using the #GstBin +methods like gst_bin_add() and gst_bin_remove() (see #GstBin). + +Before changing the state of the #GstPipeline (see #GstElement) a #GstBus +should be retrieved with gst_pipeline_get_bus(). This #GstBus should then +be used to receive #GstMessage from the elements in the pipeline. Listening +to the #GstBus is necessary for retrieving error messages from the +#GstPipeline and otherwise the #GstPipeline might stop without any +indication, why. Furthermore, the #GstPipeline posts messages even if +nobody listens on the #GstBus, which will pile up and use up memory. + +By default, a #GstPipeline will automatically flush the pending #GstBus +messages when going to the NULL state to ensure that no circular +references exist when no messages are read from the #GstBus. This +behaviour can be changed with gst_pipeline_set_auto_flush_bus(). + +When the #GstPipeline performs the PAUSED to PLAYING state change it will +select a clock for the elements. The clock selection algorithm will by +default select a clock provided by an element that is most upstream +(closest to the source). For live pipelines (ones that return +#GST_STATE_CHANGE_NO_PREROLL from the gst_element_set_state() call) this +will select the clock provided by the live source. For normal pipelines +this will select a clock provided by the sinks (most likely the audio +sink). If no element provides a clock, a default #GstSystemClock is used. + +The clock selection can be controlled with the gst_pipeline_use_clock() +method, which will enforce a given clock on the pipeline. With +gst_pipeline_auto_clock() the default clock selection algorithm can be +restored. + +A #GstPipeline maintains a running time for the elements. The running +time is defined as the difference between the current clock time and +the base time. When the pipeline goes to READY or a flushing seek is +performed on it, the running time is reset to 0. When the pipeline is +set from PLAYING to PAUSED, the current clock time is sampled and used to +configure the base time for the elements when the pipeline is set +to PLAYING again. The effect is that the running time (as the difference +between the clock time and the base time) will count how much time was spent +in the PLAYING state. This default behaviour can be changed with the +gst_element_set_start_time() method. + + + + Create a new pipeline with the given name. + + + newly created GstPipeline + +MT safe. + + + + + name of new pipeline + + + + + + Let @pipeline select a clock automatically. This is the default +behaviour. + +Use this function if you previous forced a fixed clock with +gst_pipeline_use_clock() and want to restore the default +pipeline clock selection algorithm. + +MT safe. + + + + + + + a #GstPipeline + + + + + + Check if @pipeline will automatically flush messages when going to +the NULL state. + + + whether the pipeline will automatically flush its bus when +going from READY to NULL state or not. + +MT safe. + + + + + a #GstPipeline + + + + + + Gets the #GstBus of @pipeline. The bus allows applications to receive +#GstMessage packets. + + + a #GstBus, unref after usage. + +MT safe. + + + + + a #GstPipeline + + + + + + Gets the current clock used by @pipeline. Users of object +oriented languages should use gst_pipeline_get_pipeline_clock() +to avoid confusion with gst_element_get_clock() which has a different behavior. + +Unlike gst_element_get_clock(), this function will always return a +clock, even if the pipeline is not in the PLAYING state. + + + a #GstClock, unref after usage. + + + + + a #GstPipeline + + + + + + Get the configured delay (see gst_pipeline_set_delay()). + + + The configured delay. + +MT safe. + + + + + a #GstPipeline + + + + + + Gets the latency that should be configured on the pipeline. See +gst_pipeline_set_latency(). + + + Latency to configure on the pipeline or GST_CLOCK_TIME_NONE + + + + + a #GstPipeline + + + + + + Gets the current clock used by @pipeline. + +Unlike gst_element_get_clock(), this function will always return a +clock, even if the pipeline is not in the PLAYING state. + + + a #GstClock, unref after usage. + + + + + a #GstPipeline + + + + + + Usually, when a pipeline goes from READY to NULL state, it automatically +flushes all pending messages on the bus, which is done for refcounting +purposes, to break circular references. + +This means that applications that update state using (async) bus messages +(e.g. do certain things when a pipeline goes from PAUSED to READY) might +not get to see messages when the pipeline is shut down, because they might +be flushed before they can be dispatched in the main thread. This behaviour +can be disabled using this function. + +It is important that all messages on the bus are handled when the +automatic flushing is disabled else memory leaks will be introduced. + +MT safe. + + + + + + + a #GstPipeline + + + + whether or not to automatically flush the bus when +the pipeline goes from READY to NULL state + + + + + + Set the clock for @pipeline. The clock will be distributed +to all the elements managed by the pipeline. + + + %TRUE if the clock could be set on the pipeline. %FALSE if + some element did not accept the clock. + +MT safe. + + + + + a #GstPipeline + + + + the clock to set + + + + + + Set the expected delay needed for all elements to perform the +PAUSED to PLAYING state change. @delay will be added to the +base time of the elements so that they wait an additional @delay +amount of time before starting to process buffers and cannot be +#GST_CLOCK_TIME_NONE. + +This option is used for tuning purposes and should normally not be +used. + +MT safe. + + + + + + + a #GstPipeline + + + + the delay + + + + + + Sets the latency that should be configured on the pipeline. Setting +GST_CLOCK_TIME_NONE will restore the default behaviour of using the minimum +latency from the LATENCY query. Setting this is usually not required and +the pipeline will figure out an appropriate latency automatically. + +Setting a too low latency, especially lower than the minimum latency from +the LATENCY query, will most likely cause the pipeline to fail. + + + + + + + a #GstPipeline + + + + latency to configure + + + + + + Force @pipeline to use the given @clock. The pipeline will +always use the given clock even if new clock providers are added +to this pipeline. + +If @clock is %NULL all clocking will be disabled which will make +the pipeline run as fast as possible. + +MT safe. + + + + + + + a #GstPipeline + + + + the clock to use + + + + + + Whether or not to automatically flush all messages on the +pipeline's bus when going from READY to NULL state. Please see +gst_pipeline_set_auto_flush_bus() for more information on this option. + + + + The expected delay needed for elements to spin up to the +PLAYING state expressed in nanoseconds. +see gst_pipeline_set_delay() for more information on this option. + + + + Latency to configure on the pipeline. See gst_pipeline_set_latency(). + + + + + + + The fixed clock of the pipeline, used when + GST_PIPELINE_FLAG_FIXED_CLOCK is set. + + + + The stream time of the pipeline. A better name for this + property would be the running_time, the total time spent in the + PLAYING state without being flushed. (deprecated, use the start_time + on GstElement). + + + + Extra delay added to base_time to compensate for computing delays + when setting elements to PLAYING. + + + + + + + + + + + + + + + + + + + + + + + + Pipeline flags + + this pipeline works with a fixed clock + + + offset to define more flags + + + + + + + GStreamer is extensible, so #GstElement instances can be loaded at runtime. +A plugin system can provide one or more of the basic GStreamer +#GstPluginFeature subclasses. + +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 +`gst_plugin_desc`. + +Once you have a handle to a #GstPlugin (e.g. from the #GstRegistry), you +can add any object that subclasses #GstPluginFeature. + +Usually plugins are always automatically loaded so you don't need to call +gst_plugin_load() explicitly to bring it into memory. There are options to +statically link plugins to an app or even use GStreamer without a plugin +repository in which case gst_plugin_load() can be needed to bring the plugin +into memory. + + + Unrefs each member of @list, then frees the list. + + + + + + + list of #GstPlugin + + + + + + + + Load the named plugin. Refs the plugin. + + + a reference to a loaded plugin, or +%NULL on error. + + + + + name of plugin to load + + + + + + Loads the given plugin and refs it. Caller needs to unref after use. + + + a reference to the existing loaded GstPlugin, a +reference to the newly-loaded GstPlugin, or %NULL if an error occurred. + + + + + the plugin filename to load + + + + + + Registers a static plugin, ie. a plugin which is private to an application +or library and contained within the application or library (as opposed to +being shipped as a separate module file). + +You must make sure that GStreamer has been initialised (with gst_init() or +via gst_init_get_option_group()) before calling this function. + + + %TRUE if the plugin was registered correctly, otherwise %FALSE. + + + + + the major version number of the GStreamer core that the + plugin was compiled for, you can just use GST_VERSION_MAJOR here + + + + the minor version number of the GStreamer core that the + plugin was compiled for, you can just use GST_VERSION_MINOR here + + + + a unique name of the plugin (ideally prefixed with an application- or + library-specific namespace prefix in order to avoid name conflicts in + case a similar plugin with the same name ever gets added to GStreamer) + + + + description of the plugin + + + + pointer to the init function of this plugin. + + + + version string of the plugin + + + + effective license of plugin. Must be one of the approved licenses + (see #GstPluginDesc above) or the plugin will not be registered. + + + + source module plugin belongs to + + + + shipped package plugin belongs to + + + + URL to provider of plugin + + + + + + Registers a static plugin, ie. a plugin which is private to an application +or library and contained within the application or library (as opposed to +being shipped as a separate module file) with a #GstPluginInitFullFunc +which allows user data to be passed to the callback function (useful +for bindings). + +You must make sure that GStreamer has been initialised (with gst_init() or +via gst_init_get_option_group()) before calling this function. + + + %TRUE if the plugin was registered correctly, otherwise %FALSE. + + + + + the major version number of the GStreamer core that the + plugin was compiled for, you can just use GST_VERSION_MAJOR here + + + + the minor version number of the GStreamer core that the + plugin was compiled for, you can just use GST_VERSION_MINOR here + + + + a unique name of the plugin (ideally prefixed with an application- or + library-specific namespace prefix in order to avoid name conflicts in + case a similar plugin with the same name ever gets added to GStreamer) + + + + description of the plugin + + + + pointer to the init function with user data + of this plugin. + + + + version string of the plugin + + + + effective license of plugin. Must be one of the approved licenses + (see #GstPluginDesc above) or the plugin will not be registered. + + + + source module plugin belongs to + + + + shipped package plugin belongs to + + + + URL to provider of plugin + + + + gpointer to user data + + + + + + Make GStreamer aware of external dependencies which affect the feature +set of this plugin (ie. the elements or typefinders associated with it). + +GStreamer will re-inspect plugins with external dependencies whenever any +of the external dependencies change. This is useful for plugins which wrap +other plugin systems, e.g. a plugin which wraps a plugin-based visualisation +library and makes visualisations available as GStreamer elements, or a +codec loader which exposes elements and/or caps dependent on what external +codec libraries are currently installed. + + + + + + + a #GstPlugin + + + + %NULL-terminated array of environment variables affecting the + feature set of the plugin (e.g. an environment variable containing + paths where to look for additional modules/plugins of a library), + or %NULL. Environment variable names may be followed by a path component + which will be added to the content of the environment variable, e.g. + "HOME/.mystuff/plugins". + + + + + + %NULL-terminated array of directories/paths where dependent files + may be, or %NULL. + + + + + + %NULL-terminated array of file names (or file name suffixes, + depending on @flags) to be used in combination with the paths from + @paths and/or the paths extracted from the environment variables in + @env_vars, or %NULL. + + + + + + optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE + + + + + + Make GStreamer aware of external dependencies which affect the feature +set of this plugin (ie. the elements or typefinders associated with it). + +GStreamer will re-inspect plugins with external dependencies whenever any +of the external dependencies change. This is useful for plugins which wrap +other plugin systems, e.g. a plugin which wraps a plugin-based visualisation +library and makes visualisations available as GStreamer elements, or a +codec loader which exposes elements and/or caps dependent on what external +codec libraries are currently installed. + +Convenience wrapper function for gst_plugin_add_dependency() which +takes simple strings as arguments instead of string arrays, with multiple +arguments separated by predefined delimiters (see above). + + + + + + + the #GstPlugin + + + + one or more environment variables (separated by ':', ';' or ','), + or %NULL. Environment variable names may be followed by a path component + which will be added to the content of the environment variable, e.g. + "HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH" + + + + one ore more directory paths (separated by ':' or ';' or ','), + or %NULL. Example: "/usr/lib/mystuff/plugins" + + + + one or more file names or file name suffixes (separated by commas), + or %NULL + + + + optional flags, or #GST_PLUGIN_DEPENDENCY_FLAG_NONE + + + + + + Gets the plugin specific data cache. If it is %NULL there is no cached data +stored. This is the case when the registry is getting rebuilt. + + + The cached data as a +#GstStructure or %NULL. + + + + + a plugin + + + + + + Get the long descriptive name of the plugin + + + the long name of the plugin + + + + + plugin to get long name of + + + + + + get the filename of the plugin + + + the filename of the plugin + + + + + plugin to get the filename of + + + + + + get the license of the plugin + + + the license of the plugin + + + + + plugin to get the license of + + + + + + Get the short name of the plugin + + + the name of the plugin + + + + + plugin to get the name of + + + + + + get the URL where the plugin comes from + + + the origin of the plugin + + + + + plugin to get the origin of + + + + + + get the package the plugin belongs to. + + + the package of the plugin + + + + + plugin to get the package of + + + + + + Get the release date (and possibly time) in form of a string, if available. + +For normal GStreamer plugin releases this will usually just be a date in +the form of "YYYY-MM-DD", while pre-releases and builds from git may contain +a time component after the date as well, in which case the string will be +formatted like "YYYY-MM-DDTHH:MMZ" (e.g. "2012-04-30T09:30Z"). + +There may be plugins that do not have a valid release date set on them. + + + the date string of the plugin, or %NULL if not +available. + + + + + plugin to get the release date of + + + + + + get the source module the plugin belongs to. + + + the source of the plugin + + + + + plugin to get the source of + + + + + + get the version of the plugin + + + the version of the plugin + + + + + plugin to get the version of + + + + + + queries if the plugin is loaded into memory + + + %TRUE is loaded, %FALSE otherwise + + + + + plugin to query + + + + + + Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is +untouched. The normal use pattern of this function goes like this: + +|[ +GstPlugin *loaded_plugin; +loaded_plugin = gst_plugin_load (plugin); +// presumably, we're no longer interested in the potentially-unloaded plugin +gst_object_unref (plugin); +plugin = loaded_plugin; +]| + + + a reference to a loaded plugin, or +%NULL on error. + + + + + plugin to load + + + + + + Adds plugin specific data to cache. Passes the ownership of the structure to +the @plugin. + +The cache is flushed every time the registry is rebuilt. + + + + + + + a plugin + + + + a structure containing the data to cache + + + + + + + + Ignore enum members when generating + the plugins cache. This is useful if the members of the enum are generated + dynamically, in order not to expose incorrect documentation to the end user. + + + + + + + Flags used in connection with gst_plugin_add_dependency(). + + no special flags + + + recurse into subdirectories + + + use paths + argument only if none of the environment variables is set + + + interpret + filename argument as filter suffix and check all matching files in + the directory + + + interpret + filename argument as filter prefix and check all matching files in + the directory. Since: 1.8. + + + interpret + non-absolute paths as relative to the main executable directory. Since + 1.14. + + + + A plugin should export a variable of this type called plugin_desc. The plugin +loader will use the data provided there to initialize the plugin. + +The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL, +BSD, MIT/X11, Proprietary, unknown. + + + the major version number of core that plugin was compiled for + + + + the minor version number of core that plugin was compiled for + + + + a unique name of the plugin + + + + description of plugin + + + + pointer to the init function of this plugin. + + + + version of the plugin + + + + effective license of plugin + + + + source module plugin belongs to + + + + shipped package plugin belongs to + + + + URL to provider of plugin + + + + date time string in ISO 8601 + format (or rather, a subset thereof), or %NULL. Allowed are the + following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with + 'T' a separator and 'Z' indicating UTC/Zulu time). This field + should be set via the GST_PACKAGE_RELEASE_DATETIME + preprocessor macro. + + + + + + + + + + The plugin loading errors + + The plugin could not be loaded + + + The plugin has unresolved dependencies + + + The plugin has already be loaded from a different file + + + Get the error quark. + + The error quark used in GError messages + + + + + + This is a base class for anything that can be added to a #GstPlugin. + + + Copies the list of features. Caller should call @gst_plugin_feature_list_free +when done with the list. + + + a copy of @list, + with each feature's reference count incremented. + + + + + + + list + of #GstPluginFeature + + + + + + + + Debug the plugin feature names in @list. + + + + + + + a #GList of + plugin features + + + + + + + + Unrefs each member of @list, then frees the list. + + + + + + + list + of #GstPluginFeature + + + + + + + + Compares the two given #GstPluginFeature instances. This function can be +used as a #GCompareFunc when sorting by rank and then by name. + + + negative value if the rank of p1 > the rank of p2 or the ranks are +equal but the name of p1 comes before the name of p2; zero if the rank +and names are equal; positive value if the rank of p1 < the rank of p2 or the +ranks are equal but the name of p2 comes before the name of p1 + + + + + a #GstPluginFeature + + + + a #GstPluginFeature + + + + + + Checks whether the given plugin feature is at least + the required version + + + %TRUE if the plugin feature has at least + the required version, otherwise %FALSE. + + + + + a feature + + + + minimum required major version + + + + minimum required minor version + + + + minimum required micro version + + + + + + Get the plugin that provides this feature. + + + the plugin that provides this + feature, or %NULL. Unref with gst_object_unref() when no + longer needed. + + + + + a feature + + + + + + Get the name of the plugin that provides this feature. + + + the name of the plugin that provides this + feature, or %NULL if the feature is not associated with a + plugin. + + + + + a feature + + + + + + Gets the rank of a plugin feature. + + + The rank of the feature + + + + + a feature + + + + + + Loads the plugin containing @feature if it's not already loaded. @feature is +unaffected; use the return value instead. + +Normally this function is used like this: +|[<!-- language="C" --> +GstPluginFeature *loaded_feature; + +loaded_feature = gst_plugin_feature_load (feature); +// presumably, we're no longer interested in the potentially-unloaded feature +gst_object_unref (feature); +feature = loaded_feature; +]| + + + a reference to the loaded +feature, or %NULL on error + + + + + the plugin feature to check + + + + + + Specifies a rank for a plugin feature, so that autoplugging uses +the most appropriate feature. + + + + + + + feature to rank + + + + rank value - higher number means more priority rank + + + + + + + + + + A function that can be used with e.g. gst_registry_feature_filter() +to get a list of pluginfeature that match certain criteria. + + + %TRUE for a positive match, %FALSE otherwise + + + + + the pluginfeature to check + + + + the user_data that has been passed on e.g. + gst_registry_feature_filter() + + + + + + A function that can be used with e.g. gst_registry_plugin_filter() +to get a list of plugins that match certain criteria. + + + %TRUE for a positive match, %FALSE otherwise + + + + + the plugin to check + + + + the user_data that has been passed on e.g. gst_registry_plugin_filter() + + + + + + The plugin loading state + + Temporarily loaded plugins + + + The plugin won't be scanned (again) + + + + A plugin should provide a pointer to a function of either #GstPluginInitFunc +or this type in the plugin_desc struct. +The function will be called by the loader at startup. One would then +register each #GstPluginFeature. This version allows +user data to be passed to init function (useful for bindings). + + + %TRUE if plugin initialised successfully + + + + + The plugin object + + + + extra data + + + + + + A plugin should provide a pointer to a function of this type in the +plugin_desc struct. +This function will be called by the loader at startup. One would then +register each #GstPluginFeature. + + + %TRUE if plugin initialised successfully + + + + + The plugin object + + + + + + 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 +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 +later calling gst_poll_set_controllable()). + +New file descriptors are added to the set using gst_poll_add_fd(), and +removed using gst_poll_remove_fd(). Controlling which file descriptors +should be waited for to become readable and/or writable are done using +gst_poll_fd_ctl_read(), gst_poll_fd_ctl_write() and gst_poll_fd_ctl_pri(). + +Use gst_poll_wait() to wait for the file descriptors to actually become +readable and/or writable, or to timeout if no file descriptor is available +in time. The wait can be controlled by calling gst_poll_restart() and +gst_poll_set_flushing(). + +Once the file descriptor set has been waited for, one can use +gst_poll_fd_has_closed() to see if the file descriptor has been closed, +gst_poll_fd_has_error() to see if it has generated an error, +gst_poll_fd_can_read() to see if it is possible to read from the file +descriptor, and gst_poll_fd_can_write() to see if it is possible to +write to it. + + + Add a file descriptor to the file descriptor set. + + + %TRUE if the file descriptor was successfully added to the set. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Check if @fd in @set has data to be read. + + + %TRUE if the descriptor has data to be read. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Check if @fd in @set can be used for writing. + + + %TRUE if the descriptor can be used for writing. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Control whether the descriptor @fd in @set will be monitored for +exceptional conditions (POLLPRI). + +Not implemented on Windows (will just return %FALSE there). + + + %TRUE if the descriptor was successfully updated. + + + + + a file descriptor set. + + + + a file descriptor. + + + + a new status. + + + + + + Control whether the descriptor @fd in @set will be monitored for +readability. + + + %TRUE if the descriptor was successfully updated. + + + + + a file descriptor set. + + + + a file descriptor. + + + + a new status. + + + + + + Control whether the descriptor @fd in @set will be monitored for +writability. + + + %TRUE if the descriptor was successfully updated. + + + + + a file descriptor set. + + + + a file descriptor. + + + + a new status. + + + + + + Check if @fd in @set has closed the connection. + + + %TRUE if the connection was closed. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Check if @fd in @set has an error. + + + %TRUE if the descriptor has an error. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Check if @fd in @set has an exceptional condition (POLLPRI). + +Not implemented on Windows (will just return %FALSE there). + + + %TRUE if the descriptor has an exceptional condition. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Mark @fd as ignored so that the next call to gst_poll_wait() will yield +the same result for @fd as last time. This function must be called if no +operation (read/write/recv/send/etc.) will be performed on @fd before +the next call to gst_poll_wait(). + +The reason why this is needed is because the underlying implementation +might not allow querying the fd more than once between calls to one of +the re-enabling operations. + + + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Free a file descriptor set. + + + + + + + a file descriptor set. + + + + + + Get a GPollFD for the reading part of the control socket. This is useful when +integrating with a GSource and GMainLoop. + + + + + + + a #GstPoll + + + + a #GPollFD + + + + + + Read a byte from the control socket of the controllable @set. + +This function only works for timer #GstPoll objects created with +gst_poll_new_timer(). + + + %TRUE on success. %FALSE when when there was no byte to read or +reading the byte failed. If there was no byte to read, and only then, errno +will contain EWOULDBLOCK or EAGAIN. For all other values of errno this always signals a +critical error. + + + + + a #GstPoll. + + + + + + Remove a file descriptor from the file descriptor set. + + + %TRUE if the file descriptor was successfully removed from the set. + + + + + a file descriptor set. + + + + a file descriptor. + + + + + + Restart any gst_poll_wait() that is in progress. This function is typically +used after adding or removing descriptors to @set. + +If @set is not controllable, then this call will have no effect. + +This function only works for non-timer #GstPoll objects created with +gst_poll_new(). + + + + + + + a #GstPoll. + + + + + + When @controllable is %TRUE, this function ensures that future calls to +gst_poll_wait() will be affected by gst_poll_restart() and +gst_poll_set_flushing(). + +This function only works for non-timer #GstPoll objects created with +gst_poll_new(). + + + %TRUE if the controllability of @set could be updated. + + + + + a #GstPoll. + + + + new controllable state. + + + + + + When @flushing is %TRUE, this function ensures that current and future calls +to gst_poll_wait() will return -1, with errno set to EBUSY. + +Unsetting the flushing state will restore normal operation of @set. + +This function only works for non-timer #GstPoll objects created with +gst_poll_new(). + + + + + + + a #GstPoll. + + + + new flushing state. + + + + + + Wait for activity on the file descriptors in @set. This function waits up to +the specified @timeout. A timeout of #GST_CLOCK_TIME_NONE waits forever. + +For #GstPoll objects created with gst_poll_new(), this function can only be +called from a single thread at a time. If called from multiple threads, +-1 will be returned with errno set to EPERM. + +This is not true for timer #GstPoll objects created with +gst_poll_new_timer(), where it is allowed to have multiple threads waiting +simultaneously. + + + The number of #GstPollFD in @set that have activity or 0 when no +activity was detected after @timeout. If an error occurs, -1 is returned +and errno is set. + + + + + a #GstPoll. + + + + a timeout in nanoseconds. + + + + + + Write a byte to the control socket of the controllable @set. +This function is mostly useful for timer #GstPoll objects created with +gst_poll_new_timer(). + +It will make any current and future gst_poll_wait() function return with +1, meaning the control socket is set. After an equal amount of calls to +gst_poll_read_control() have been performed, calls to gst_poll_wait() will +block again until their timeout expired. + +This function only works for timer #GstPoll objects created with +gst_poll_new_timer(). + + + %TRUE on success. %FALSE when when the byte could not be written. +errno contains the detailed error code but will never be EAGAIN, EINTR or +EWOULDBLOCK. %FALSE always signals a critical error. + + + + + a #GstPoll. + + + + + + Create a new file descriptor set. If @controllable, it +is possible to restart or flush a call to gst_poll_wait() with +gst_poll_restart() and gst_poll_set_flushing() respectively. + +Free-function: gst_poll_free + + + a new #GstPoll, or %NULL in + case of an error. Free with gst_poll_free(). + + + + + whether it should be possible to control a wait. + + + + + + Create a new poll object that can be used for scheduling cancellable +timeouts. + +A timeout is performed with gst_poll_wait(). Multiple timeouts can be +performed from different threads. + +Free-function: gst_poll_free + + + a new #GstPoll, or %NULL in + case of an error. Free with gst_poll_free(). + + + + + + A file descriptor object. + + + a file descriptor + + + + + + + Initializes @fd. Alternatively you can initialize it with +#GST_POLL_FD_INIT. + + + + + + + a #GstPollFD + + + + + + + This interface offers methods to query and manipulate parameter preset sets. +A preset is a bunch of property settings, together with meta data and a name. +The name of a preset serves as key for subsequent method calls to manipulate +single presets. +All instances of one type will share the list of presets. The list is created +on demand, if presets are not used, the list is not created. + +The interface comes with a default implementation that serves most plugins. +Wrapper plugins will override most methods to implement support for the +native preset format of those wrapped plugins. +One method that is useful to be overridden is gst_preset_get_property_names(). +With that one can control which properties are saved and in which order. +When implementing support for read-only presets, one should set the vmethods +for gst_preset_save_preset() and gst_preset_delete_preset() to %NULL. +Applications can use gst_preset_is_editable() to check for that. + +The default implementation supports presets located in a system directory, +application specific directory and in the users home directory. When getting +a list of presets individual presets are read and overlaid in 1) system, +2) application and 3) user order. Whenever an earlier entry is newer, the +later entries will be updated. Since 1.8 you can also provide extra paths +where to find presets through the GST_PRESET_PATH environment variable. +Presets found in those paths will be considered as "app presets". + + + Gets the directory for application specific presets if set by the +application. + + + the directory or %NULL, don't free or modify +the string + + + + + Sets an extra directory as an absolute path that should be considered when +looking for presets. Any presets in the application dir will shadow the +system presets. + + + %TRUE for success, %FALSE if the dir already has been set + + + + + the application specific preset dir + + + + + + Delete the given preset. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to remove + + + + + + Gets the @value for an existing meta data @tag. Meta data @tag names can be +something like e.g. "comment". Returned values need to be released when done. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name +or no value for the given @tag + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + value + + + + + + Get a copy of preset names as a %NULL terminated string array. + + + + list with names, use g_strfreev() after usage. + + + + + + + a #GObject that implements #GstPreset + + + + + + Get a the names of the GObject properties that can be used for presets. + + + an + array of property names which should be freed with g_strfreev() after use. + + + + + + + a #GObject that implements #GstPreset + + + + + + Load the given preset. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to load + + + + + + Renames a preset. If there is already a preset by the @new_name it will be +overwritten. + + + %TRUE for success, %FALSE if e.g. there is no preset with @old_name + + + + + a #GObject that implements #GstPreset + + + + current preset name + + + + new preset name + + + + + + Save the current object settings as a preset under the given name. If there +is already a preset by this @name it will be overwritten. + + + %TRUE for success, %FALSE + + + + + a #GObject that implements #GstPreset + + + + preset name to save + + + + + + Sets a new @value for an existing meta data item or adds a new item. Meta +data @tag names can be something like e.g. "comment". Supplying %NULL for the +@value will unset an existing value. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + new value + + + + + + Delete the given preset. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to remove + + + + + + Gets the @value for an existing meta data @tag. Meta data @tag names can be +something like e.g. "comment". Returned values need to be released when done. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name +or no value for the given @tag + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + value + + + + + + Get a copy of preset names as a %NULL terminated string array. + + + + list with names, use g_strfreev() after usage. + + + + + + + a #GObject that implements #GstPreset + + + + + + Get a the names of the GObject properties that can be used for presets. + + + an + array of property names which should be freed with g_strfreev() after use. + + + + + + + a #GObject that implements #GstPreset + + + + + + Check if one can add new presets, change existing ones and remove presets. + + + %TRUE if presets are editable or %FALSE if they are static + + + + + a #GObject that implements #GstPreset + + + + + + Load the given preset. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to load + + + + + + Renames a preset. If there is already a preset by the @new_name it will be +overwritten. + + + %TRUE for success, %FALSE if e.g. there is no preset with @old_name + + + + + a #GObject that implements #GstPreset + + + + current preset name + + + + new preset name + + + + + + Save the current object settings as a preset under the given name. If there +is already a preset by this @name it will be overwritten. + + + %TRUE for success, %FALSE + + + + + a #GObject that implements #GstPreset + + + + preset name to save + + + + + + Sets a new @value for an existing meta data item or adds a new item. Meta +data @tag names can be something like e.g. "comment". Supplying %NULL for the +@value will unset an existing value. + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + new value + + + + + + + #GstPreset interface. + + + parent interface type. + + + + + + + + list with names, use g_strfreev() after usage. + + + + + + + a #GObject that implements #GstPreset + + + + + + + + + + an + array of property names which should be freed with g_strfreev() after use. + + + + + + + a #GObject that implements #GstPreset + + + + + + + + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to load + + + + + + + + + + %TRUE for success, %FALSE + + + + + a #GObject that implements #GstPreset + + + + preset name to save + + + + + + + + + + %TRUE for success, %FALSE if e.g. there is no preset with @old_name + + + + + a #GObject that implements #GstPreset + + + + current preset name + + + + new preset name + + + + + + + + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name to remove + + + + + + + + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + new value + + + + + + + + + + %TRUE for success, %FALSE if e.g. there is no preset with that @name +or no value for the given @tag + + + + + a #GObject that implements #GstPreset + + + + preset name + + + + meta data item name + + + + value + + + + + + + + + + + + + The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the +application of the status of asynchronous tasks. + + A new task started. + + + A task completed and a new one continues. + + + A task completed. + + + A task was canceled. + + + A task caused an error. An error message is also + posted on the bus. + + + + The #GstPromise object implements the container for values that may +be available later. i.e. a Future or a Promise in +<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. + +A #GstPromise is created with gst_promise_new() by the consumer and passed +to the producer to avoid thread safety issues with the change callback. +A #GstPromise can be replied to with a value (or an error) by the producer +with gst_promise_reply(). The exact value returned is defined by the API +contract of the producer and %NULL may be a valid reply. +gst_promise_interrupt() is for the consumer to +indicate to the producer that the value is not needed anymore and producing +that value can stop. The @GST_PROMISE_RESULT_EXPIRED state set by a call +to gst_promise_expire() indicates to the consumer that a value will never +be produced and is intended to be called by a third party that implements +some notion of message handling such as #GstBus. +A callback can also be installed at #GstPromise creation for +result changes with gst_promise_new_with_change_func(). +The change callback can be used to chain #GstPromises's together as in the +following example. +|[<!-- language="C" --> +const GstStructure *reply; +GstPromise *p; +if (gst_promise_wait (promise) != GST_PROMISE_RESULT_REPLIED) + return; // interrupted or expired value +reply = gst_promise_get_reply (promise); +if (error in reply) + return; // propagate error +p = gst_promise_new_with_change_func (another_promise_change_func, user_data, notify); +pass p to promise-using API +]| + +Each #GstPromise starts out with a #GstPromiseResult of +%GST_PROMISE_RESULT_PENDING and only ever transitions once +into one of the other #GstPromiseResult's. + +In order to support multi-threaded code, gst_promise_reply(), +gst_promise_interrupt() and gst_promise_expire() may all be from +different threads with some restrictions and the final result of the promise +is whichever call is made first. There are two restrictions on ordering: + +1. That gst_promise_reply() and gst_promise_interrupt() cannot be called +after gst_promise_expire() +2. That gst_promise_reply() and gst_promise_interrupt() +cannot be called twice. + +The change function set with gst_promise_new_with_change_func() is +called directly from either the gst_promise_reply(), +gst_promise_interrupt() or gst_promise_expire() and can be called +from an arbitrary thread. #GstPromise using APIs can restrict this to +a single thread or a subset of threads but that is entirely up to the API +that uses #GstPromise. + + + parent #GstMiniObject + + + + + + a new #GstPromise + + + + + @func will be called exactly once when transitioning out of +%GST_PROMISE_RESULT_PENDING into any of the other #GstPromiseResult +states. + + + a new #GstPromise + + + + + a #GstPromiseChangeFunc to call + + + + argument to call @func with + + + + notification function that @user_data is no longer needed + + + + + + Expire a @promise. This will wake up any waiters with +%GST_PROMISE_RESULT_EXPIRED. Called by a message loop when the parent +message is handled and/or destroyed (possibly unanswered). + + + + + + + a #GstPromise + + + + + + Retrieve the reply set on @promise. @promise must be in +%GST_PROMISE_RESULT_REPLIED and the returned structure is owned by @promise + + + The reply set on @promise + + + + + a #GstPromise + + + + + + Interrupt waiting for a @promise. This will wake up any waiters with +%GST_PROMISE_RESULT_INTERRUPTED. Called when the consumer does not want +the value produced anymore. + + + + + + + a #GstPromise + + + + + + Increases the refcount of the given @promise by one. + + + @promise + + + + + a #GstPromise. + + + + + + Set a reply on @promise. This will wake up any waiters with +%GST_PROMISE_RESULT_REPLIED. Called by the producer of the value to +indicate success (or failure). + +If @promise has already been interrupted by the consumer, then this reply +is not visible to the consumer. + + + + + + + a #GstPromise + + + + a #GstStructure with the the reply contents + + + + + + Decreases the refcount of the promise. If the refcount reaches 0, the +promise will be freed. + + + + + + + a #GstPromise. + + + + + + Wait for @promise to move out of the %GST_PROMISE_RESULT_PENDING state. +If @promise is not in %GST_PROMISE_RESULT_PENDING then it will return +immediately with the current result. + + + the result of the promise + + + + + a #GstPromise + + + + + + + + + + + + + a #GstPromise + + + + user data + + + + + + The result of a #GstPromise + + Initial state. Waiting for transition to any + other state. + + + Interrupted by the consumer as it doesn't + want the value anymore. + + + A producer marked a reply + + + The promise expired (the carrying object + lost all refs) and the promise will never be fulfilled. + + + + Metadata type that holds information about a sample from a protection-protected +track, including the information needed to decrypt it (if it is encrypted). + + + the parent #GstMeta. + + + + the cryptographic information needed to decrypt the sample. + + + + + + + + + + + + + Invoke the default chain function of the proxy pad. + + + a #GstFlowReturn from the pad. + + + + + a sink #GstPad, returns GST_FLOW_ERROR if not. + + + + the parent of @pad or %NULL + + + + the #GstBuffer to send, return GST_FLOW_ERROR + if not. + + + + + + Invoke the default chain list function of the proxy pad. + + + a #GstFlowReturn from the pad. + + + + + a sink #GstPad, returns GST_FLOW_ERROR if not. + + + + the parent of @pad or %NULL + + + + the #GstBufferList to send, return GST_FLOW_ERROR + if not. + + + + + + Invoke the default getrange function of the proxy pad. + + + a #GstFlowReturn from the pad. + + + + + a src #GstPad, returns #GST_FLOW_ERROR if not. + + + + the parent of @pad + + + + The start offset of the buffer + + + + The length of the buffer + + + + a pointer to hold the #GstBuffer, + returns #GST_FLOW_ERROR if %NULL. + + + + + + Invoke the default iterate internal links function of the proxy pad. + + + a #GstIterator of #GstPad, or %NULL if @pad +has no parent. Unref each returned pad with gst_object_unref(). + + + + + the #GstPad to get the internal links of. + + + + the parent of @pad or %NULL + + + + + + Get the internal pad of @pad. Unref target pad after usage. + +The internal pad of a #GstGhostPad is the internally used +pad of opposite direction, which is used to link to the target. + + + the target #GstProxyPad, can +be %NULL. Unref target pad after usage. + + + + + the #GstProxyPad + + + + + + + + + + + + + + + + + + + + + + + + + + + The different types of QoS events that can be given to the +gst_event_new_qos() method. + + The QoS event type that is produced when upstream + elements are producing data too quickly and the element can't keep up + processing the data. Upstream should reduce their production rate. This + type is also used when buffers arrive early or in time. + + + The QoS event type that is produced when upstream + elements are producing data too slowly and need to speed up their + production rate. + + + The QoS event type that is produced when the + application enabled throttling to limit the data rate. + + + + + + + + + + + + + + + + + + Check if an query can travel downstream. + + + + the query to query + + + + + Check if an query is serialized with the data stream. + + + + the query to query + + + + + Check if an query can travel upstream. + + + + the query to query + + + + + when making custom query types, use this macro with the num and +the given flags + + + + the query number to create + + + the query flags + + + + + + + + + Get the #GstQueryType of the query. + + + + the query to query + + + + + The same thing as #GST_QUERY_TYPE_UPSTREAM | #GST_QUERY_TYPE_DOWNSTREAM. + + + + + Get a constant string representation of the #GstQueryType of the query. + + + + the query to query + + + + + Queries can be performed on pads (gst_pad_query()) and elements +(gst_element_query()). Please note that some queries might need a running +pipeline to work. + +Queries can be created using the gst_query_new_*() functions. +Query values can be set using gst_query_set_*(), and parsed using +gst_query_parse_*() helpers. + +The following example shows how to query the duration of a pipeline: +|[<!-- language="C" --> + GstQuery *query; + gboolean res; + query = gst_query_new_duration (GST_FORMAT_TIME); + res = gst_element_query (pipeline, query); + if (res) { + gint64 duration; + gst_query_parse_duration (query, NULL, &duration); + g_print ("duration = %"GST_TIME_FORMAT, GST_TIME_ARGS (duration)); + } else { + g_print ("duration query failed..."); + } + gst_query_unref (query); +]| + + + The parent #GstMiniObject type + + + + the #GstQueryType + + + + Constructs a new query object for querying if @caps are accepted. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + a fixed #GstCaps + + + + + + Constructs a new query object for querying the allocation properties. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the negotiated caps + + + + return a pool + + + + + + Constructs a new query object for querying the bitrate. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Constructs a new query object for querying the buffering status of +a stream. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the default #GstFormat for the new query + + + + + + Constructs a new query object for querying the caps. + +The CAPS query should return the allowable caps for a pad in the context +of the element's state, its link to other elements, and the devices or files +it has opened. These caps must be a subset of the pad template caps. In the +NULL state with no links, the CAPS query should ideally return the same caps +as the pad template. In rare circumstances, an object property can affect +the caps returned by the CAPS query, but this is discouraged. + +For most filters, the caps returned by CAPS query is directly affected by the +allowed caps on other pads. For demuxers and decoders, the caps returned by +the srcpad's getcaps function is directly related to the stream data. Again, +the CAPS query should return the most specific caps it reasonably can, since this +helps with autoplugging. + +The @filter is used to restrict the result caps, only the caps matching +@filter should be returned from the CAPS query. Specifying a filter might +greatly reduce the amount of processing an element needs to do. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + a filter + + + + + + Constructs a new query object for querying the pipeline-local context. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Context type to query + + + + + + Constructs a new convert query object. Use gst_query_unref() +when done with it. A convert query is used to ask for a conversion between +one format and another. + +Free-function: gst_query_unref() + + + a #GstQuery + + + + + the source #GstFormat for the new query + + + + the value to convert + + + + the target #GstFormat + + + + + + Constructs a new custom query object. Use gst_query_unref() +when done with it. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the query type + + + + a structure for the query + + + + + + Constructs a new query object for querying the drain state. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Constructs a new stream duration query object to query in the given format. +Use gst_query_unref() when done with it. A duration query will give the +total length of the stream. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the #GstFormat for this duration query + + + + + + Constructs a new query object for querying formats of +the stream. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Constructs a new latency query object. +Use gst_query_unref() when done with it. A latency query is usually performed +by sinks to compensate for additional latency introduced by elements in the +pipeline. + +Free-function: gst_query_unref() + + + a #GstQuery + + + + + Constructs a new query stream position query object. Use gst_query_unref() +when done with it. A position query is used to query the current position +of playback in the streams, in some format. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the default #GstFormat for the new query + + + + + + Constructs a new query object for querying the scheduling properties. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Constructs a new query object for querying seeking properties of +the stream. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the default #GstFormat for the new query + + + + + + Constructs a new segment query object. Use gst_query_unref() +when done with it. A segment query is used to discover information about the +currently configured segment for playback. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + the #GstFormat for the new query + + + + + + Constructs a new query object for querying the stream selection capability. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Constructs a new query URI query object. Use gst_query_unref() +when done with it. An URI query is used to query the current URI +that is used by the source or sink. + +Free-function: gst_query_unref() + + + a new #GstQuery + + + + + Add @api with @params as one of the supported metadata API to @query. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + the metadata API + + + + API specific parameters + + + + + + Add @allocator and its @params as a supported memory allocator. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + the memory allocator + + + + a #GstAllocationParams + + + + + + Set the pool parameters in @query. + + + + + + + A valid #GstQuery of type GST_QUERY_ALLOCATION. + + + + the #GstBufferPool + + + + the buffer size + + + + the min buffers + + + + the max buffers + + + + + + Set the buffering-ranges array field in @query. The current last +start position of the array should be inferior to @start. + + + a #gboolean indicating if the range was added or not. + + + + + a GST_QUERY_BUFFERING type query #GstQuery + + + + start position of the range + + + + stop position of the range + + + + + + Add @mode as one of the supported scheduling modes to @query. + + + + + + + a GST_QUERY_SCHEDULING type query #GstQuery + + + + a #GstPadMode + + + + + + 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 +can be found. + + + %TRUE when @api is in the list of metadata. + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + the metadata API + + + + the index + + + + + + Retrieve the number of values currently stored in the +meta API array of the query's structure. + + + the metadata API array size as a #guint. + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + + + Retrieve the number of values currently stored in the +allocator params array of the query's structure. + +If no memory allocator is specified, the downstream element can handle +the default memory allocator. The first memory allocator in the query +should be generic and allow mapping to system memory, all following +allocators should be ordered by preference with the preferred one first. + + + the allocator array size as a #guint. + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + + + Retrieve the number of values currently stored in the +pool array of the query's structure. + + + the pool array size as a #guint. + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + + + Retrieve the number of values currently stored in the +buffered-ranges array of the query's structure. + + + the range array size as a #guint. + + + + + a GST_QUERY_BUFFERING type query #GstQuery + + + + + + Retrieve the number of values currently stored in the +scheduling mode array of the query's structure. + + + the scheduling mode array size as a #guint. + + + + + a GST_QUERY_SCHEDULING type query #GstQuery + + + + + + Get the structure of a query. + + + the #GstStructure of the query. The + structure is still owned by the query and will therefore be freed when the + query is unreffed. + + + + + a #GstQuery + + + + + + Check if @query has scheduling mode set. + +> When checking if upstream supports pull mode, it is usually not +> enough to just check for GST_PAD_MODE_PULL with this function, you +> also want to check whether the scheduling flags returned by +> gst_query_parse_scheduling() have the seeking flag set (meaning +> random access is supported, not only sequential pulls). + + + %TRUE when @mode is in the list of scheduling modes. + + + + + a GST_QUERY_SCHEDULING type query #GstQuery + + + + the scheduling mode + + + + + + Check if @query has scheduling mode set and @flags is set in +query scheduling flags. + + + %TRUE when @mode is in the list of scheduling modes + and @flags are compatible with query flags. + + + + + a GST_QUERY_SCHEDULING type query #GstQuery + + + + the scheduling mode + + + + #GstSchedulingFlags + + + + + + Get the caps from @query. The caps remains valid as long as @query remains +valid. + + + + + + + The query to parse + + + + A pointer to the caps + + + + + + Parse the result from @query and store in @result. + + + + + + + a GST_QUERY_ACCEPT_CAPS type query #GstQuery + + + + location for the result + + + + + + Parse an allocation query, writing the requested caps in @caps and +whether a pool is needed in @need_pool, if the respective parameters +are non-%NULL. + +Pool details can be retrieved using gst_query_get_n_allocation_pools() and +gst_query_parse_nth_allocation_pool(). + + + + + + + a #GstQuery + + + + The #GstCaps + + + + Whether a #GstBufferPool is needed + + + + + + Get the results of a bitrate query. See also gst_query_set_bitrate(). + + + + + + + a GST_QUERY_BITRATE type #GstQuery + + + + The resulting bitrate in bits per second + + + + + + Get the percentage of buffered data. This is a value between 0 and 100. +The @busy indicator is %TRUE when the buffering is in progress. + + + + + + + A valid #GstQuery of type GST_QUERY_BUFFERING. + + + + if buffering is busy, or %NULL + + + + a buffering percent, or %NULL + + + + + + Parse an available query, writing the format into @format, and +other results into the passed parameters, if the respective parameters +are non-%NULL + + + + + + + a GST_QUERY_BUFFERING type query #GstQuery + + + + the format to set for the @segment_start + and @segment_end values, or %NULL + + + + the start to set, or %NULL + + + + the stop to set, or %NULL + + + + estimated total amount of download + time remaining in milliseconds, or %NULL + + + + + + Extracts the buffering stats values from @query. + + + + + + + A valid #GstQuery of type GST_QUERY_BUFFERING. + + + + a buffering mode, or %NULL + + + + the average input rate, or %NULL + + + + the average output rat, or %NULL + + + + amount of buffering time left in + milliseconds, or %NULL + + + + + + Get the filter from the caps @query. The caps remains valid as long as +@query remains valid. + + + + + + + The query to parse + + + + A pointer to the caps filter + + + + + + Get the caps result from @query. The caps remains valid as long as +@query remains valid. + + + + + + + The query to parse + + + + A pointer to the caps + + + + + + Get the context from the context @query. The context remains valid as long as +@query remains valid. + + + + + + + The query to parse + + + + A pointer to store the #GstContext + + + + + + Parse a context type from an existing GST_QUERY_CONTEXT query. + + + a #gboolean indicating if the parsing succeeded. + + + + + a GST_QUERY_CONTEXT type query + + + + the context type, or %NULL + + + + + + Parse a convert query answer. Any of @src_format, @src_value, @dest_format, +and @dest_value may be %NULL, in which case that value is omitted. + + + + + + + a #GstQuery + + + + the storage for the #GstFormat of the + source value, or %NULL + + + + the storage for the source value, or %NULL + + + + the storage for the #GstFormat of the + destination value, or %NULL + + + + the storage for the destination value, + or %NULL + + + + + + Parse a duration query answer. Write the format of the duration into @format, +and the value into @duration, if the respective variables are non-%NULL. + + + + + + + a #GstQuery + + + + the storage for the #GstFormat of the duration + value, or %NULL. + + + + the storage for the total duration, or %NULL. + + + + + + Parse a latency query answer. + + + + + + + a #GstQuery + + + + storage for live or %NULL + + + + the storage for the min latency or %NULL + + + + the storage for the max latency or %NULL + + + + + + Parse the number of formats in the formats @query. + + + + + + + a #GstQuery + + + + the number of formats in this query. + + + + + + Parse an available query and get the metadata API +at @index of the metadata API array. + + + a #GType of the metadata API at @index. + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the metadata API array to read + + + + API specific parameters + + + + + + Parse an available query and get the allocator and its params +at @index of the allocator array. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the allocator array to read + + + + variable to hold the result + + + + parameters for the allocator + + + + + + Get the pool parameters in @query. + +Unref @pool with gst_object_unref() when it's not needed any more. + + + + + + + A valid #GstQuery of type GST_QUERY_ALLOCATION. + + + + index to parse + + + + the #GstBufferPool + + + + the buffer size + + + + the min buffers + + + + the max buffers + + + + + + Parse an available query and get the start and stop values stored +at the @index of the buffered ranges array. + + + a #gboolean indicating if the parsing succeeded. + + + + + a GST_QUERY_BUFFERING type query #GstQuery + + + + position in the buffered-ranges array to read + + + + the start position to set, or %NULL + + + + the stop position to set, or %NULL + + + + + + Parse the format query and retrieve the @nth format from it into +@format. If the list contains less elements than @nth, @format will be +set to GST_FORMAT_UNDEFINED. + + + + + + + a #GstQuery + + + + the nth format to retrieve. + + + + a pointer to store the nth format + + + + + + Parse an available query and get the scheduling mode +at @index of the scheduling modes array. + + + a #GstPadMode of the scheduling mode at @index. + + + + + a GST_QUERY_SCHEDULING type query #GstQuery + + + + position in the scheduling modes array to read + + + + + + Parse a position query, writing the format into @format, and the position +into @cur, if the respective parameters are non-%NULL. + + + + + + + a #GstQuery + + + + the storage for the #GstFormat of the + position values (may be %NULL) + + + + the storage for the current position (may be %NULL) + + + + + + Set the scheduling properties. + + + + + + + A valid #GstQuery of type GST_QUERY_SCHEDULING. + + + + #GstSchedulingFlags + + + + the suggested minimum size of pull requests + + + + the suggested maximum size of pull requests: + + + + the suggested alignment of pull requests + + + + + + Parse a seeking query, writing the format into @format, and +other results into the passed parameters, if the respective parameters +are non-%NULL + + + + + + + a GST_QUERY_SEEKING type query #GstQuery + + + + the format to set for the @segment_start + and @segment_end values, or %NULL + + + + the seekable flag to set, or %NULL + + + + the segment_start to set, or %NULL + + + + the segment_end to set, or %NULL + + + + + + Parse a segment query answer. Any of @rate, @format, @start_value, and +@stop_value may be %NULL, which will cause this value to be omitted. + +See gst_query_set_segment() for an explanation of the function arguments. + + + + + + + a #GstQuery + + + + the storage for the rate of the segment, or %NULL + + + + the storage for the #GstFormat of the values, + or %NULL + + + + the storage for the start value, or %NULL + + + + the storage for the stop value, or %NULL + + + + + + Get the results of a selectable query. See also gst_query_set_selectable(). + + + + + + + a GST_QUERY_SELECTABLE type #GstQuery + + + + The resulting stream selection capability + + + + + + Parse an URI query, writing the URI into @uri as a newly +allocated string, if the respective parameters are non-%NULL. +Free the string with g_free() after usage. + + + + + + + a #GstQuery + + + + the storage for the current URI + (may be %NULL) + + + + + + Parse an URI query, writing the URI into @uri as a newly +allocated string, if the respective parameters are non-%NULL. +Free the string with g_free() after usage. + + + + + + + a #GstQuery + + + + the storage for the redirect URI + (may be %NULL) + + + + + + Parse an URI query, and set @permanent to %TRUE if there is a redirection +and it should be considered permanent. If a redirection is permanent, +applications should update their internal storage of the URI, otherwise +they should make all future requests to the original URI. + + + + + + + a #GstQuery + + + + if the URI redirection is permanent + (may be %NULL) + + + + + + Increases the refcount of the given query by one. + + + @q + + + + + a #GstQuery to increase the refcount of. + + + + + + Remove the metadata API at @index of the metadata API array. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the metadata API array to remove + + + + + + Remove the allocation param at @index of the allocation param array. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the allocation param array to remove + + + + + + Remove the allocation pool at @index of the allocation pool array. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the allocation pool array to remove + + + + + + Set @result as the result for the @query. + + + + + + + a GST_QUERY_ACCEPT_CAPS type query #GstQuery + + + + the result to set + + + + + + Set the results of a bitrate query. The nominal bitrate is the average +bitrate expected over the length of the stream as advertised in file +headers (or similar). + + + + + + + a GST_QUERY_BITRATE type #GstQuery + + + + the nominal bitrate in bits per second + + + + + + Set the percentage of buffered data. This is a value between 0 and 100. +The @busy indicator is %TRUE when the buffering is in progress. + + + + + + + A valid #GstQuery of type GST_QUERY_BUFFERING. + + + + if buffering is busy + + + + a buffering percent + + + + + + Set the available query result fields in @query. + + + + + + + a #GstQuery + + + + the format to set for the @start and @stop values + + + + the start to set + + + + the stop to set + + + + estimated total amount of download time remaining in + milliseconds + + + + + + Configures the buffering stats values in @query. + + + + + + + A valid #GstQuery of type GST_QUERY_BUFFERING. + + + + a buffering mode + + + + the average input rate + + + + the average output rate + + + + amount of buffering time left in milliseconds + + + + + + Set the @caps result in @query. + + + + + + + The query to use + + + + A pointer to the caps + + + + + + Answer a context query by setting the requested context. + + + + + + + a #GstQuery with query type GST_QUERY_CONTEXT + + + + the requested #GstContext + + + + + + Answer a convert query by setting the requested values. + + + + + + + a #GstQuery + + + + the source #GstFormat + + + + the source value + + + + the destination #GstFormat + + + + the destination value + + + + + + Answer a duration query by setting the requested value in the given format. + + + + + + + a #GstQuery + + + + the #GstFormat for the duration + + + + the duration of the stream + + + + + + Set the formats query result fields in @query. The number of formats passed +must be equal to @n_formats. + + + + + + + a #GstQuery + + + + the number of formats to set. + + + + A number of @GstFormats equal to @n_formats. + + + + + + Set the formats query result fields in @query. The number of formats passed +in the @formats array must be equal to @n_formats. + + + + + + + a #GstQuery + + + + the number of formats to set. + + + + an array containing @n_formats + @GstFormat values. + + + + + + + + Answer a latency query by setting the requested values in the given format. + + + + + + + a #GstQuery + + + + if there is a live element upstream + + + + the minimal latency of the upstream elements + + + + the maximal latency of the upstream elements + + + + + + Parse an available query and get the allocator and its params +at @index of the allocator array. + + + + + + + a GST_QUERY_ALLOCATION type query #GstQuery + + + + position in the allocator array to set + + + + new allocator to set + + + + parameters for the allocator + + + + + + Set the pool parameters in @query. + + + + + + + A valid #GstQuery of type GST_QUERY_ALLOCATION. + + + + index to modify + + + + the #GstBufferPool + + + + the buffer size + + + + the min buffers + + + + the max buffers + + + + + + Answer a position query by setting the requested value in the given format. + + + + + + + a #GstQuery with query type GST_QUERY_POSITION + + + + the requested #GstFormat + + + + the position to set + + + + + + Set the scheduling properties. + + + + + + + A valid #GstQuery of type GST_QUERY_SCHEDULING. + + + + #GstSchedulingFlags + + + + the suggested minimum size of pull requests + + + + the suggested maximum size of pull requests + + + + the suggested alignment of pull requests + + + + + + Set the seeking query result fields in @query. + + + + + + + a #GstQuery + + + + the format to set for the @segment_start and @segment_end values + + + + the seekable flag to set + + + + the segment_start to set + + + + the segment_end to set + + + + + + Answer a segment query by setting the requested values. The normal +playback segment of a pipeline is 0 to duration at the default rate of +1.0. If a seek was performed on the pipeline to play a different +segment, this query will return the range specified in the last seek. + +@start_value and @stop_value will respectively contain the configured +playback range start and stop values expressed in @format. +The values are always between 0 and the duration of the media and +@start_value <= @stop_value. @rate will contain the playback rate. For +negative rates, playback will actually happen from @stop_value to +@start_value. + + + + + + + a #GstQuery + + + + the rate of the segment + + + + the #GstFormat of the segment values (@start_value and @stop_value) + + + + the start value + + + + the stop value + + + + + + Set the results of a selectable query. If the element answering the query can +handle stream selection, @selectable should be set to %TRUE. + + + + + + + a GST_QUERY_SELECTABLE type #GstQuery + + + + Whether the element can handle stream selection. + + + + + + Answer a URI query by setting the requested URI. + + + + + + + a #GstQuery with query type GST_QUERY_URI + + + + the URI to set + + + + + + Answer a URI query by setting the requested URI redirection. + + + + + + + a #GstQuery with query type GST_QUERY_URI + + + + the URI to set + + + + + + Answer a URI query by setting the requested URI redirection +to permanent or not. + + + + + + + a #GstQuery with query type %GST_QUERY_URI + + + + whether the redirect is 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. + + + the #GstStructure of the query. The structure is + still owned by the query and will therefore be freed when the query + is unreffed. + + + + + a #GstQuery + + + + + + 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. + + + + + + Modifies a pointer to a #GstQuery to point to a different #GstQuery. This +function is similar to gst_query_replace() except that it takes ownership of +@new_query. + +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 stolen. + + + + pointer to a #GstQuery that will + replace the query pointed to by @old_query. + + + + + + + Standard predefined Query types + + unknown query type + + + current position in stream + + + total duration of the stream + + + latency of stream + + + current jitter of stream + + + current rate of the stream + + + seeking capabilities + + + segment start/stop positions + + + convert values between formats + + + query supported formats for convert + + + query available media for efficient seeking. + + + a custom application or element defined query. + + + query the URI of the source or sink. + + + the buffer allocation properties + + + the scheduling properties + + + the accept caps query + + + the caps query + + + wait till all serialized data is consumed downstream + + + query the pipeline-local context from + downstream or upstream (since 1.2) + + + the bitrate query (since 1.16) + + + Query stream selection capability (Since: 1.22) + + + Gets the #GstQueryTypeFlags associated with @type. + + + a #GstQueryTypeFlags. + + + + + a #GstQueryType + + + + + + Get a printable name for the given query type. Do not modify or free. + + + a reference to the static name of the query. + + + + + the query type + + + + + + Get the unique quark for the given query type. + + + the quark associated with the query type + + + + + the query type + + + + + + + #GstQueryTypeFlags indicate the aspects of the different #GstQueryType +values. You can get the type flags of a #GstQueryType with the +gst_query_type_get_flags() function. + + Set if the query can travel upstream. + + + Set if the query can travel downstream. + + + Set if the query should be serialized with data + flow. + + + + Read a 16 bit unsigned integer value in big endian format from the memory buffer. + + + + memory location + + + + + Read a 16 bit unsigned integer value in little endian format from the memory buffer. + + + + memory location + + + + + Read a 24 bit unsigned integer value in big endian format from the memory buffer. + + + + memory location + + + + + Read a 24 bit unsigned integer value in little endian format from the memory buffer. + + + + memory location + + + + + Read a 32 bit unsigned integer value in big endian format from the memory buffer. + + + + memory location + + + + + Read a 32 bit unsigned integer value in little endian format from the memory buffer. + + + + memory location + + + + + Read a 64 bit unsigned integer value in big endian format from the memory buffer. + + + + memory location + + + + + Read a 64 bit unsigned integer value in little endian format from the memory buffer. + + + + memory location + + + + + Read an 8 bit unsigned integer value from the memory buffer. + + + + memory location + + + + + + + + + + + + + + + + + + + + + + + + + + Rounds an integer value down to the next multiple of 128. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 16. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 2. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 32. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 4. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 64. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of 8. + + + + integer value to round down + + + + + Rounds an integer value down to the next multiple of @align. @align MUST be a +power of two. + + + + integrer value to round down + + + a power of two to round down to + + + + + Rounds an integer value up to the next multiple of 128. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 16. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 2. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 32. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 4. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 64. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of 8. + + + + integer value to round up + + + + + Rounds an integer value up to the next multiple of @align. @align MUST be a +power of two. + + + + integrer value to round up + + + a power of two to round up to + + + + + Element priority ranks. Defines the order in which the autoplugger (or +similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri()) +will choose this element over an alternative one with the same function. + +These constants serve as a rough guidance for defining the rank of a +#GstPluginFeature. Any value is valid, including values bigger than +@GST_RANK_PRIMARY. + + will be chosen last or not at all + + + unlikely to be chosen + + + likely to be chosen + + + will be chosen first + + + + #GstReferenceTimestampMeta can be used to attach alternative timestamps and +possibly durations to a #GstBuffer. These are generally not according to +the pipeline clock and could be e.g. the NTP timestamp when the media was +captured. + +The reference is stored as a #GstCaps in @reference. Examples of valid +references would be + + * `timestamp/x-drivername-stream`: for timestamps that are locally + generated by some driver named `drivername` when generating the stream, + e.g. based on a frame counter + * `timestamp/x-ntp, host=pool.ntp.org, port=123`: for timestamps based on a + specific NTP server. Note that the host/port parameters might not always + be given. + * `timestamp/x-ptp, version=IEEE1588-2008, domain=1`: for timestamps based + on a given PTP clock. + * `timestamp/x-unix`: for timestamps based on the UNIX epoch according to + the local clock. + + + the parent #GstMeta structure + + + + identifier for the timestamp reference. + + + + timestamp + + + + duration, or %GST_CLOCK_TIME_NONE + + + + Gets the global #GstMetaInfo describing the #GstReferenceTimestampMeta meta. + + + The #GstMetaInfo + + + + + + One registry holds the metadata of a set of plugins. + +<emphasis role="bold">Design:</emphasis> + +The #GstRegistry object is a list of plugins and some functions for dealing +with them. Each #GstPlugin is matched 1-1 with a file on disk, and may or may +not be loaded at a given time. + +The primary source, at all times, of plugin information is each plugin file +itself. Thus, if an application wants information about a particular plugin, +or wants to search for a feature that satisfies given criteria, the primary +means of doing so is to load every plugin and look at the resulting +information that is gathered in the default registry. Clearly, this is a time +consuming process, so we cache information in the registry file. The format +and location of the cache file is internal to gstreamer. + +On startup, plugins are searched for in the plugin search path. The following +locations are checked in this order: + +* location from --gst-plugin-path commandline option. +* the GST_PLUGIN_PATH environment variable. +* the GST_PLUGIN_SYSTEM_PATH environment variable. +* default locations (if GST_PLUGIN_SYSTEM_PATH is not set). + Those default locations are: + `$XDG_DATA_HOME/gstreamer-$GST_API_VERSION/plugins/` + and `$prefix/libs/gstreamer-$GST_API_VERSION/`. + [$XDG_DATA_HOME](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) defaults to + `$HOME/.local/share`. + +The registry cache file is loaded from +`$XDG_CACHE_HOME/gstreamer-$GST_API_VERSION/registry-$ARCH.bin` +(where $XDG_CACHE_HOME defaults to `$HOME/.cache`) or the file listed in the `GST_REGISTRY` +env var. One reason to change the registry location is for testing. + +For each plugin that is found in the plugin search path, there could be 3 +possibilities for cached information: + + * the cache may not contain information about a given file. + * the cache may have stale information. + * the cache may have current information. + +In the first two cases, the plugin is loaded and the cache updated. In +addition to these cases, the cache may have entries for plugins that are not +relevant to the current process. These are marked as not available to the +current process. If the cache is updated for whatever reason, it is marked +dirty. + +A dirty cache is written out at the end of initialization. Each entry is +checked to make sure the information is minimally valid. If not, the entry is +simply dropped. + +## Implementation notes: + +The "cache" and "registry" are different concepts and can represent +different sets of plugins. For various reasons, at init time, the cache is +stored in the default registry, and plugins not relevant to the current +process are marked with the %GST_PLUGIN_FLAG_CACHED bit. These plugins are +removed at the end of initialization. + + + By default GStreamer will perform scanning and rebuilding of the +registry file using a helper child process. + +Applications might want to disable this behaviour with the +gst_registry_fork_set_enabled() function, in which case new plugins +are scanned (and loaded) into the application process. + + + %TRUE if GStreamer will use the child helper process when +rebuilding the registry. + + + + + Applications might want to disable/enable spawning of a child helper process +when rebuilding the registry. See gst_registry_fork_is_enabled() for more +information. + + + + + + + whether rebuilding the registry can use a temporary child helper process. + + + + + + Retrieves the singleton plugin registry. The caller does not own a +reference on the registry, as it is alive as long as GStreamer is +initialized. + + + the #GstRegistry. + + + + + Add the feature to the registry. The feature-added signal will be emitted. + +@feature's reference count will be incremented, and any floating +reference will be removed (see gst_object_ref_sink()) + + + %TRUE on success. + +MT safe. + + + + + the registry to add the plugin to + + + + the feature to add + + + + + + Add the plugin to the registry. The plugin-added signal will be emitted. + +@plugin's reference count will be incremented, and any floating +reference will be removed (see gst_object_ref_sink()) + + + %TRUE on success. + +MT safe. + + + + + the registry to add the plugin to + + + + the plugin to add + + + + + + Checks whether a plugin feature by the given name exists in +@registry and whether its version is at least the +version required. + + + %TRUE if the feature could be found and the version is +the same as the required version or newer, and %FALSE otherwise. + + + + + a #GstRegistry + + + + the name of the feature (e.g. "oggdemux") + + + + the minimum major version number + + + + the minimum minor version number + + + + the minimum micro version number + + + + + + Runs a filter against all features of the plugins in the registry +and returns a GList with the results. +If the first flag is set, only the first match is +returned (as a list with a single object). + + + a #GList of + #GstPluginFeature. Use gst_plugin_feature_list_free() after usage. + +MT safe. + + + + + + + registry to query + + + + the filter to use + + + + only return first match + + + + user data passed to the filter function + + + + + + Find the pluginfeature with the given name and type in the registry. + + + the pluginfeature with the + given name and type or %NULL if the plugin was not + found. gst_object_unref() after usage. + +MT safe. + + + + + the registry to search + + + + the pluginfeature name to find + + + + the pluginfeature type to find + + + + + + Find the plugin with the given name in the registry. +The plugin will be reffed; caller is responsible for unreffing. + + + the plugin with the given name + or %NULL if the plugin was not found. gst_object_unref() after + usage. + +MT safe. + + + + + the registry to search + + + + the plugin name to find + + + + + + Retrieves a #GList of #GstPluginFeature of @type. + + + a #GList of + #GstPluginFeature of @type. Use gst_plugin_feature_list_free() after use + +MT safe. + + + + + + + a #GstRegistry + + + + a #GType. + + + + + + Retrieves a #GList of features of the plugin with name @name. + + + a #GList of + #GstPluginFeature. Use gst_plugin_feature_list_free() after usage. + + + + + + + a #GstRegistry. + + + + a plugin name. + + + + + + Returns the registry's feature list cookie. This changes +every time a feature is added or removed from the registry. + + + the feature list cookie. + + + + + the registry + + + + + + Get a copy of all plugins registered in the given registry. The refcount +of each element in the list in incremented. + + + a #GList of #GstPlugin. + Use gst_plugin_list_free() after usage. + +MT safe. + + + + + + + the registry to search + + + + + + Look up a plugin in the given registry with the given filename. +If found, plugin is reffed. + + + the #GstPlugin if found, or + %NULL if not. gst_object_unref() after usage. + + + + + the registry to look up in + + + + the name of the file to look up + + + + + + Find a #GstPluginFeature with @name in @registry. + + + a #GstPluginFeature with its refcount incremented, + use gst_object_unref() after usage. + +MT safe. + + + + + a #GstRegistry + + + + a #GstPluginFeature name + + + + + + Runs a filter against all plugins in the registry and returns a #GList with +the results. If the first flag is set, only the first match is +returned (as a list with a single object). +Every plugin is reffed; use gst_plugin_list_free() after use, which +will unref again. + + + a #GList of #GstPlugin. + Use gst_plugin_list_free() after usage. + +MT safe. + + + + + + + registry to query + + + + the filter to use + + + + only return first match + + + + user data passed to the filter function + + + + + + Remove the feature from the registry. + +MT safe. + + + + + + + the registry to remove the feature from + + + + the feature to remove + + + + + + Remove the plugin from the registry. + +MT safe. + + + + + + + the registry to remove the plugin from + + + + the plugin to remove + + + + + + Scan the given path for plugins to add to the registry. The syntax of the +path is specific to the registry. + + + %TRUE if registry changed + + + + + the registry to add found plugins to + + + + the path to scan + + + + + + + + + + + + Signals that a feature has been added to the registry (possibly +replacing a previously-added one by the same name) + + + + + + the feature that has been added + + + + + + Signals that a plugin has been added to the registry (possibly +replacing a previously-added one by the same name) + + + + + + the plugin that has been added + + + + + + + + + + + + + + + + Resource errors are for any resource used by an element: +memory, files, network connections, process space, ... +They're typically used by source and sink elements. + + a general error which doesn't fit in any other +category. Make sure you add a custom message to the error call. + + + do not use this except as a placeholder for +deciding where to go while developing code. + + + used when the resource could not be found. + + + used when resource is busy. + + + used when resource fails to open for reading. + + + used when resource fails to open for writing. + + + used when resource cannot be opened for +both reading and writing, or either (but unspecified which). + + + used when the resource can't be closed. + + + used when the resource can't be read from. + + + used when the resource can't be written to. + + + used when a seek on the resource fails. + + + used when a synchronize on the resource fails. + + + used when settings can't be manipulated on. + + + used when the resource has no space left. + + + used when the resource can't be opened + due to missing authorization. + (Since: 1.2.4) + + + the number of resource error types. + + + + + + + + + + + + + + + + + + + + + + + + Constant that defines one GStreamer second. + + + + + printf format type used to debug GStreamer segments. You can use this in +combination with GStreamer's debug logging system as well as the functions +gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf() +to pretty-print #GstSegment structures. +This can only be used on pointers to GstSegment structures. + + + + + + + + + A value which is guaranteed to never be returned by +gst_util_seqnum_next(). + +Can be used as a default value in variables used to store seqnum. + + + + + + + + + + + + + + + + + + + + + + + + + + This macro returns the current #GstState of the element. + + + + a #GstElement to return state for. + + + + + + + + + + + + Get the conditional used to signal the completion of a state change. + + + + a #GstElement + + + + + Get a reference to the state lock of @elem. +This lock is used by the core. It is taken while getting or setting +the state, during state changes, and while finalizing. + + + + a #GstElement + + + + + Given a current state @cur and a target state @pending, calculate the next (intermediate) +#GstState. + + + + A starting #GstState + + + A target #GstState + + + + + + + + + + + + This macro returns the next #GstState of the element. + + + + a #GstElement to return the next state for. + + + + + This macro returns the currently pending #GstState of the element. + + + + a #GstElement to return the pending state for. + + + + + This macro returns the last #GstStateChangeReturn value. + + + + a #GstElement to return the last state result for. + + + + + + + + + + + + This macro returns the target #GstState of the element. + + + + a #GstElement to return the target state for. + + + + + Given a current state @cur and a next state @next, calculate the associated +#GstStateChange transition. + + + + A current state + + + A next state + + + + + Given a state transition @trans, extract the current #GstState. + + + + A #GstStateChange + + + + + Given a state transition @trans, extract the next #GstState. + + + + A #GstStateChange + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GstCaps static caps from an input string. +This can be used in pad templates. + + + + the string describing the caps + + + + + Convenience macro to fill the values of a #GstStaticPadTemplate +structure. +Example: +|[<!-- language="C" --> +static GstStaticPadTemplate my_src_template = * GST_STATIC_PAD_TEMPLATE("src", GST_PAD_SRC, GST_PAD_ALWAYS, +, + GST_STATIC_CAPS_ANY); +]| + + + + the name template of the pad + + + the GstPadDirection of the pad + + + the GstPadPresence of the pad + + + the GstStaticCaps of the pad + + + + + printf format type used to debug GStreamer signed time value pointers. You +can use this in combination with GStreamer's debug logging system as well as +the functions gst_info_vasprintf(), gst_info_strdup_vprintf() and +gst_info_strdup_printf() to pretty-print signed time (pointers to +#GstClockTimeDiff or #gint64). + + + + + Formats @t for the #GST_STIME_FORMAT format string. Note: @t will be +evaluated more than once. + + + + a #GstClockTimeDiff or #gint64 + + + + + A string that can be used in printf-like format strings to display a signed +#GstClockTimeDiff or #gint64 value in `h:m:s` format. Use GST_TIME_ARGS() to +construct the matching arguments. + +Example: + +``` C +printf("%" GST_STIME_FORMAT "\n", GST_STIME_ARGS(ts)); +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Transform an input string into a #guint32 fourcc value with host +endianness. +Caller is responsible for ensuring the input string consists of at least +four characters. + +|[ +guint32 fourcc = GST_STR_FOURCC ("MJPG"); +]| + + + + a string with at least four characters + + + + + Macro to use when a string must not be %NULL, but may be %NULL. If the string +is %NULL, "(NULL)" is printed instead. +In GStreamer printf string arguments may not be %NULL, because on some +platforms (ie Solaris) the libc crashes in that case. This includes debugging +strings. + + + + The string to check. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstSample is a small object containing data, a type, timing and +extra arbitrary information. + + + Create a new #GstSample with the provided details. + +Free-function: gst_sample_unref + + + the new #GstSample. gst_sample_unref() + after usage. + + + + + a #GstBuffer, or %NULL + + + + a #GstCaps, or %NULL + + + + a #GstSegment, or %NULL + + + + a #GstStructure, or %NULL + + + + + + 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 + + + the buffer of @sample or %NULL + when there is no buffer. The buffer remains valid as long as + @sample is valid. If you need to hold on to it for longer than + that, take a ref to the buffer with gst_buffer_ref(). + + + + + a #GstSample + + + + + + Get the buffer list associated with @sample + + + the buffer list of @sample or %NULL + when there is no buffer list. The buffer list remains valid as long as + @sample is valid. If you need to hold on to it for longer than + that, take a ref to the buffer list with gst_mini_object_ref (). + + + + + a #GstSample + + + + + + Get the caps associated with @sample + + + the caps of @sample or %NULL + when there is no caps. The caps remain valid as long as @sample is + valid. If you need to hold on to the caps for longer than that, + take a ref to the caps with gst_caps_ref(). + + + + + a #GstSample + + + + + + Get extra information associated with @sample. + + + the extra info of @sample. + The info remains valid as long as @sample is valid. + + + + + a #GstSample + + + + + + Get the segment associated with @sample + + + the segment of @sample. + The segment remains valid as long as @sample is valid. + + + + + a #GstSample + + + + + + Increases the refcount of the given sample by one. + + + @sample + + + + + a #GstSample + + + + + + Set the buffer associated with @sample. @sample must be writable. + + + + + + + A #GstSample + + + + A #GstBuffer + + + + + + Set the buffer list associated with @sample. @sample must be writable. + + + + + + + a #GstSample + + + + a #GstBufferList + + + + + + Set the caps associated with @sample. @sample must be writable. + + + + + + + A #GstSample + + + + A #GstCaps + + + + + + Set the info structure associated with @sample. @sample must be writable, +and @info must not have a parent set already. + + + + + + + A #GstSample + + + + A #GstStructure + + + + + + Set the segment associated with @sample. @sample must be writable. + + + + + + + A #GstSample + + + + A #GstSegment + + + + + + Decreases the refcount of the sample. If the refcount reaches 0, the +sample will be freed. + + + + + + + a #GstSample + + + + + + + The different scheduling flags. + + if seeking is possible + + + if sequential access is recommended + + + if bandwidth is limited and buffering possible (since 1.2) + + + + The different search modes. + + Only search for exact matches. + + + Search for an exact match or the element just before. + + + Search for an exact match or the element just after. + + + + Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags +can be used together. + +A non flushing seek might take some time to perform as the currently +playing data in the pipeline will not be cleared. + +An accurate seek might be slower for formats that don't have any indexes +or timestamp markers in the stream. Specifying this flag might require a +complete scan of the file in those cases. + +When performing a segment seek: after the playback of the segment completes, +no EOS will be emitted by the element that performed the seek, but a +%GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element. +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 +performance and decrease CPU usage because not all frames need to be decoded. + +Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to +request that decoders skip all frames except key units, and +%GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio +decoders do no decoding at all, and simple output silence. + +The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous +relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to +select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified, +the relevant location is a keyframe. If both flags are specified, the nearest +of these locations will be selected. If none are specified, the implementation is +free to select whichever it wants. + +The before and after here are in running time, so when playing backwards, +the next location refers to the one that will played in next, and not the +one that is located after in the actual source stream. + +Also see part-seeking.txt in the GStreamer design documentation for more +details on the meaning of these flags and the behaviour expected of +elements that handle them. + + no flag + + + flush pipeline + + + accurate position is requested, this might + be considerably slower for some formats. + + + seek to the nearest keyframe. This might be + faster but less accurate. + + + perform a segment seek. + + + when doing fast forward or fast reverse playback, allow + elements to skip frames instead of generating all + frames. (Since: 1.6) + + + Deprecated backward compatibility flag, replaced + by %GST_SEEK_FLAG_TRICKMODE + + + go to a location before the requested position, + if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before + the requested position the one at or before the seek target. + + + go to a location after the requested position, + if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the + requested position. + + + go to a position near the requested position, + if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest + to the requested position, if both keyframes are at an equal + distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE. + + + when doing fast forward or fast reverse + playback, request that elements only decode keyframes + and skip all other content, for formats that have + keyframes. (Since: 1.6) + + + when doing fast forward or fast reverse + 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 +gst_event_new_seek() or when doing gst_segment_do_seek (). + + no change in position is required + + + absolute position is requested + + + relative position to duration is requested + + + + This helper structure holds the relevant values for tracking the region of +interest in a media file, called a segment. + +The structure can be used for two purposes: + + * performing seeks (handling seek events) + * tracking playback regions (handling newsegment events) + +The segment is usually configured by the application with a seek event which +is propagated upstream and eventually handled by an element that performs the seek. + +The configured segment is then propagated back downstream with a newsegment event. +This information is then used to clip media to the segment boundaries. + +A segment structure is initialized with gst_segment_init(), which takes a #GstFormat +that will be used as the format of the segment values. The segment will be configured +with a start value of 0 and a stop/duration of -1, which is undefined. The default +rate and applied_rate is 1.0. + +The public duration field contains the duration of the segment. When using +the segment for seeking, the start and time members should normally be left +to their default 0 value. The stop position is left to -1 unless explicitly +configured to a different value after a seek event. + +The current position in the segment should be set by changing the position +member in the structure. + +For elements that perform seeks, the current segment should be updated with the +gst_segment_do_seek() and the values from the seek event. This method will update +all the segment fields. The position field will contain the new playback position. +If the start_type was different from GST_SEEK_TYPE_NONE, playback continues from +the position position, possibly with updated flags or rate. + +For elements that want to use #GstSegment to track the playback region, +update the segment fields with the information from the newsegment event. +The gst_segment_clip() method can be used to check and clip +the media data to the segment boundaries. + +For elements that want to synchronize to the pipeline clock, gst_segment_to_running_time() +can be used to convert a timestamp to a value that can be used to synchronize +to the clock. This function takes into account the base as well as +any rate or applied_rate conversions. + +For elements that need to perform operations on media data in stream_time, +gst_segment_to_stream_time() can be used to convert a timestamp and the segment +info to stream time (which is always between 0 and the duration of the stream). + + + flags for this segment + + + + the playback rate of the segment is set in response to a seek + event and, without any seek, the value should be `1.0`. This + value is used by elements that synchronize buffer [running + times](additional/design/synchronisation.md#running-time) on + the clock (usually the sink elements), leading to consuming + buffers faster (for a value `> 1.0`) or slower (for `0.0 < + value < 1.0`) than normal playback speed. The rate also + defines the playback direction, meaning that when the value is + lower than `0.0`, the playback happens in reverse, and the + [stream-time](additional/design/synchronisation.md#stream-time) + is going backward. The `rate` value should never be `0.0`. + + + + The applied rate is the rate that has been applied to the stream. + The effective/resulting playback rate of a stream is + `rate * applied_rate`. + The applied rate can be set by source elements when a server is + sending the stream with an already modified playback speed + rate. Filter elements that modify the stream in a way that + modifies the playback speed should also modify the applied + rate. For example the #videorate element when its + #videorate:rate property is set will set the applied rate of + the segment it pushed downstream. Also #scaletempo applies the + input segment rate to the stream and outputs a segment with + rate=1.0 and applied_rate=<inputsegment.rate>. + + + + the unit used for all of the segment's values. + + + + the running time (plus elapsed time, see offset) of the + segment [start](GstSegment.start) ([stop](GstSegment.stop) if + rate < 0.0). + + + + the offset expresses the elapsed time (in buffer timestamps) + before a seek with its start (stop if rate < 0.0) seek type + set to #GST_SEEK_TYPE_NONE, the value is set to the position + of the segment at the time of the seek. + + + + the start time of the segment (in buffer timestamps) + [(PTS)](GstBuffer.pts), that is the timestamp of the first + buffer to output inside the segment (last one during + reverse playback). For example decoders will + [clip](gst_segment_clip) out the buffers before the start + time. + + + + the stop time of the segment (in buffer timestamps) + [(PTS)](GstBuffer.pts), that is the timestamp of the last + buffer to output inside the segment (first one during + reverse playback). For example decoders will + [clip](gst_segment_clip) out buffers after the stop time. + + + + the stream time of the segment [start](GstSegment.start) + ([stop](GstSegment.stop) if rate < 0.0). + + + + the buffer timestamp position in the segment is supposed to be + updated by elements such as sources, demuxers or parsers to + track progress by setting it to the last pushed buffer' end time + ([timestamp](GstBuffer.pts) + #GstBuffer.duration) for that + specific segment. The position is used when reconfiguring the + segment with #gst_segment_do_seek when the seek is only + updating the segment (see [offset](GstSegment.offset)). + + + + the duration of the segment is the maximum absolute difference + between #GstSegment.start and #GstSegment.stop if stop is not + set, otherwise it should be the difference between those + two values. This should be set by elements that know the + overall stream duration (like demuxers) and will be used when + seeking with #GST_SEEK_TYPE_END. + + + + + + + + + Allocate a new #GstSegment structure and initialize it using +gst_segment_init(). + +Free-function: gst_segment_free + + + a new #GstSegment, free with gst_segment_free(). + + + + + Clip the given @start and @stop values to the segment boundaries given +in @segment. @start and @stop are compared and clipped to @segment +start and stop values. + +If the function returns %FALSE, @start and @stop are known to fall +outside of @segment and @clip_start and @clip_stop are not updated. + +When the function returns %TRUE, @clip_start and @clip_stop will be +updated. If @clip_start or @clip_stop are different from @start or @stop +respectively, the region fell partially in the segment. + +Note that when @stop is -1, @clip_stop will be set to the end of the +segment. Depending on the use case, this may or may not be what you want. + + + %TRUE if the given @start and @stop times fall partially or + completely in @segment, %FALSE if the values are completely outside + of the segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the start position in the segment + + + + the stop position in the segment + + + + the clipped start position in the segment + + + + the clipped stop position in the segment + + + + + + Create a copy of given @segment. + +Free-function: gst_segment_free + + + a new #GstSegment, free with gst_segment_free(). + + + + + a #GstSegment + + + + + + Copy the contents of @src into @dest. + + + + + + + a #GstSegment + + + + a #GstSegment + + + + + + Update the segment structure with the field values of a seek event (see +gst_event_new_seek()). + +After calling this method, the segment field position and time will +contain the requested new position in the segment. The new requested +position in the segment depends on @rate and @start_type and @stop_type. + +For positive @rate, the new position in the segment is the new @segment +start field when it was updated with a @start_type different from +#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position +(#GST_SEEK_TYPE_NONE), @start is ignored and @segment position is +unmodified. + +For negative @rate, the new position in the segment is the new @segment +stop field when it was updated with a @stop_type different from +#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the +duration of the segment will be used to update the stop position. +If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE), +@stop is ignored and @segment position is unmodified. + +The applied rate of the segment will be set to 1.0 by default. +If the caller can apply a rate change, it should update @segment +rate and applied_rate after calling this function. + +@update will be set to %TRUE if a seek should be performed to the segment +position field. This field can be %FALSE if, for example, only the @rate +has been changed but not the playback position. + + + %TRUE if the seek could be performed. + + + + + a #GstSegment structure. + + + + the rate of the segment. + + + + the format of the segment. + + + + the segment flags for the segment + + + + the seek method + + + + the seek start value + + + + the seek method + + + + the seek stop value + + + + boolean holding whether position was updated. + + + + + + Free the allocated segment @segment. + + + + + + + a #GstSegment + + + + + + The start/position fields are set to 0 and the stop/duration +fields are set to -1 (unknown). The default rate of 1.0 and no +flags are set. + +Initialize @segment to its default values. + + + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + + + Checks for two segments being equal. Equality here is defined +as perfect equality, including floating point values. + + + %TRUE if the segments are equal, %FALSE otherwise. + + + + + a #GstSegment structure. + + + + a #GstSegment structure. + + + + + + Adjust the values in @segment so that @offset is applied to all +future running-time calculations. + + + %TRUE if the segment could be updated successfully. If %FALSE is +returned, @offset is not in @segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the offset to apply in the segment + + + + + + Convert @running_time into a position in the segment so that +gst_segment_to_running_time() with that position returns @running_time. + + + the position in the segment for @running_time. This function returns +-1 when @running_time is -1 or when it is not inside @segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the running_time in the segment + + + + + + Translate @running_time to the segment position using the currently configured +segment. Compared to gst_segment_position_from_running_time() this function can +return negative segment position. + +This function is typically used by elements that need to synchronize buffers +against the clock or each other. + +@running_time can be any value and the result of this function for values +outside of the segment is extrapolated. + +When 1 is returned, @running_time resulted in a positive position returned +in @position. + +When this function returns -1, the returned @position was < 0, and the value +in the position variable should be negated to get the real negative segment +position. + + + a 1 or -1 on success, 0 on failure. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the running-time + + + + the resulting position in the segment + + + + + + Convert @stream_time into a position in the segment so that +gst_segment_to_stream_time() with that position returns @stream_time. + + + the position in the segment for @stream_time. This function returns +-1 when @stream_time is -1 or when it is not inside @segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the stream_time in the segment + + + + + + Translate @stream_time to the segment position using the currently configured +segment. Compared to gst_segment_position_from_stream_time() this function can +return negative segment position. + +This function is typically used by elements that need to synchronize buffers +against the clock or each other. + +@stream_time can be any value and the result of this function for values outside +of the segment is extrapolated. + +When 1 is returned, @stream_time resulted in a positive position returned +in @position. + +When this function returns -1, the returned @position should be negated +to get the real negative segment position. + + + a 1 or -1 on success, 0 on failure. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the stream-time + + + + the resulting position in the segment + + + + + + Adjust the start/stop and base values of @segment such that the next valid +buffer will be one with @running_time. + + + %TRUE if the segment could be updated successfully. If %FALSE is +returned, @running_time is -1 or not in @segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the running_time in the segment + + + + + + Convert @running_time into a position in the segment so that +gst_segment_to_running_time() with that position returns @running_time. + Use gst_segment_position_from_running_time() instead. + + + the position in the segment for @running_time. This function returns +-1 when @running_time is -1 or when it is not inside @segment. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the running_time in the segment + + + + + + Translate @position to the total running time using the currently configured +segment. Position is a value between @segment start and stop time. + +This function is typically used by elements that need to synchronize to the +global clock in a pipeline. The running time is a constantly increasing value +starting from 0. When gst_segment_init() is called, this value will reset to +0. + +This function returns -1 if the position is outside of @segment start and stop. + + + the position as the total running time or -1 when an invalid position +was given. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the position in the segment + + + + + + Translate @position to the total running time using the currently configured +segment. Compared to gst_segment_to_running_time() this function can return +negative running-time. + +This function is typically used by elements that need to synchronize buffers +against the clock or each other. + +@position can be any value and the result of this function for values outside +of the segment is extrapolated. + +When 1 is returned, @position resulted in a positive running-time returned +in @running_time. + +When this function returns -1, the returned @running_time should be negated +to get the real negative running time. + + + a 1 or -1 on success, 0 on failure. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the position in the segment + + + + result running-time + + + + + + Translate @position to stream time using the currently configured +segment. The @position value must be between @segment start and +stop value. + +This function is typically used by elements that need to operate on +the stream time of the buffers it receives, such as effect plugins. +In those use cases, @position is typically the buffer timestamp or +clock time that one wants to convert to the stream time. +The stream time is always between 0 and the total duration of the +media stream. + + + the position in stream_time or -1 when an invalid position +was given. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the position in the segment + + + + + + Translate @position to the total stream time using the currently configured +segment. Compared to gst_segment_to_stream_time() this function can return +negative stream-time. + +This function is typically used by elements that need to synchronize buffers +against the clock or each other. + +@position can be any value and the result of this function for values outside +of the segment is extrapolated. + +When 1 is returned, @position resulted in a positive stream-time returned +in @stream_time. + +When this function returns -1, the returned @stream_time should be negated +to get the real negative stream time. + + + a 1 or -1 on success, 0 on failure. + + + + + a #GstSegment structure. + + + + the format of the segment. + + + + the position in the segment + + + + result stream-time + + + + + + + Flags for the GstSegment structure. Currently mapped to the corresponding +values of the seek flags. + + no flags + + + reset the pipeline running_time to the segment + running_time + + + perform skip playback (Since: 1.6) + + + Deprecated backward compatibility flag, replaced + by @GST_SEGMENT_FLAG_TRICKMODE + + + send SEGMENT_DONE instead of EOS + + + 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) + + + + + No special flags specified. + + + Serialize using the old format for + nested structures. + + + + The #GstSharedTaskPool object. + + + Create a new shared task pool. The shared task pool will queue tasks on +a maximum number of threads, 1 by default. + +Do not use a #GstSharedTaskPool to manage potentially inter-dependent tasks such +as pad tasks, as having one task waiting on another to return before returning +would cause obvious deadlocks if they happen to share the same thread. + + + a new #GstSharedTaskPool. gst_object_unref() after usage. + + + + + + + the maximum number of threads @pool is configured to spawn + + + + + a #GstSharedTaskPool + + + + + + Update the maximal number of threads the @pool may spawn. When +the maximal number of threads is reduced, existing threads are not +immediately shut down, see g_thread_pool_set_max_threads(). + +Setting @max_threads to 0 effectively freezes the pool. + + + + + + + a #GstSharedTaskPool + + + + Maximum number of threads to spawn. + + + + + + + + + + + + + + + + + + The #GstSharedTaskPoolClass object. + + + + + + + + + + + + + + + + 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, + including source information when getting the + stack trace + + + + The possible states an element can be in. States can be changed using +gst_element_set_state() and checked using gst_element_get_state(). + + no pending state. + + + the NULL state or initial state of an element. + + + the element is ready to go to PAUSED. + + + the element is PAUSED, it is ready to accept and + process data. Sink elements however only accept one + buffer and then block. + + + the element is PLAYING, the #GstClock is running and + the data is flowing. + + + + These are the different state changes an element goes through. +%GST_STATE_NULL &rArr; %GST_STATE_PLAYING is called an upwards state change +and %GST_STATE_PLAYING &rArr; %GST_STATE_NULL a downwards state change. + + state change from NULL to READY. + * The element must check if the resources it needs are available. Device + sinks and -sources typically try to probe the device to constrain their + caps. + * The element opens the device (in case feature need to be probed). + + + state change from READY to PAUSED. + * The element pads are activated in order to receive data in PAUSED. + Streaming threads are started. + * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete + the state change when they have enough information. It is a requirement + for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change + when they receive the first buffer or %GST_EVENT_EOS (preroll). + Sinks also block the dataflow when in PAUSED. + * A pipeline resets the running_time to 0. + * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data. + + + state change from PAUSED to PLAYING. + * Most elements ignore this state change. + * The pipeline selects a #GstClock and distributes this to all the children + before setting them to PLAYING. This means that it is only allowed to + synchronize on the #GstClock in the PLAYING state. + * The pipeline uses the #GstClock and the running_time to calculate the + base_time. The base_time is distributed to all children when performing + the state change. + * Sink elements stop blocking on the preroll buffer or event and start + rendering the data. + * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed + to post %GST_MESSAGE_EOS when not in the PLAYING state. + * While streaming in PAUSED or PLAYING elements can create and remove + sometimes pads. + * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS. + + + state change from PLAYING to PAUSED. + * Most elements ignore this state change. + * The pipeline calculates the running_time based on the last selected + #GstClock and the base_time. It stores this information to continue + playback when going back to the PLAYING state. + * Sinks unblock any #GstClock wait calls. + * When a sink does not have a pending buffer to play, it returns + #GST_STATE_CHANGE_ASYNC from this state change and completes the state + change when it receives a new buffer or an %GST_EVENT_EOS. + * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted + when going back to the PLAYING state. The EOS messages are queued in + #GstBin containers. + * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL. + + + state change from PAUSED to READY. + * Sinks unblock any waits in the preroll. + * Elements unblock any waits on devices + * Chain or get_range functions return %GST_FLOW_FLUSHING. + * The element pads are deactivated so that streaming becomes impossible and + all streaming threads are stopped. + * The sink forgets all negotiated formats + * Elements remove all sometimes pads + + + state change from READY to NULL. + * Elements close devices + * Elements reset any internal state. + + + state change from NULL to NULL. (Since: 1.14) + + + state change from READY to READY, +This might happen when going to PAUSED asynchronously failed, in that case +elements should make sure they are in a proper, coherent READY state. (Since: 1.14) + + + state change from PAUSED to PAUSED. +This might happen when elements were in PLAYING state and 'lost state', +they should make sure to go back to real 'PAUSED' state (prerolling for example). (Since: 1.14) + + + state change from PLAYING to PLAYING. (Since: 1.14) + + + Gets a string representing the given state transition. + + + a string with the name of the state + result. + + + + + a #GstStateChange to get the name of. + + + + + + + The possible return values from a state change function such as +gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure. + + the state change failed + + + the state change succeeded + + + the state change will happen asynchronously + + + the state change succeeded but the element + cannot produce data in %GST_STATE_PAUSED. + This typically happens with live sources. + + + + Data structure to initialize #GstCaps from a string description usually +used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to +instantiate a #GstCaps. + + + the cached #GstCaps + + + + a string describing a caps + + + + + + + + + Cleans up the cached caps contained in @static_caps. + + + + + + + the #GstStaticCaps to clean + + + + + + Converts a #GstStaticCaps to a #GstCaps. + + + a pointer to the #GstCaps. Since the + core holds an additional ref to the returned caps, use + gst_caps_make_writable() on the returned caps to modify it. + + + + + the #GstStaticCaps to convert + + + + + + + Structure describing the #GstStaticPadTemplate. + + + the name of the template + + + + the direction of the template + + + + the presence of the template + + + + the caps of the template. + + + + Converts a #GstStaticPadTemplate into a #GstPadTemplate. + + + a new #GstPadTemplate. + + + + + the static pad template + + + + + + Gets the capabilities of the static pad template. + + + the #GstCaps of the static pad template. +Unref after usage. Since the core holds an additional +ref to the returned caps, use gst_caps_make_writable() +on the returned caps to modify it. + + + + + a #GstStaticPadTemplate to get capabilities of. + + + + + + + A high-level object representing a single stream. It might be backed, or +not, by an actual flow of data in a pipeline (#GstPad). + +A #GstStream does not care about data changes (such as decoding, encoding, +parsing,...) as long as the underlying data flow corresponds to the same +high-level flow (ex: a certain audio track). + +A #GstStream contains all the information pertinent to a stream, such as +stream-id, tags, caps, type, ... + +Elements can subclass a #GstStream for internal usage (to contain information +pertinent to streams of data). + + + Create a new #GstStream for the given @stream_id, @caps, @type +and @flags + + + The new #GstStream + + + + + the id for the new stream. If %NULL, +a new one will be automatically generated + + + + the #GstCaps of the stream + + + + the #GstStreamType of the stream + + + + the #GstStreamFlags of the stream + + + + + + Retrieve the caps for @stream, if any + + + The #GstCaps for @stream + + + + + a #GstStream + + + + + + Retrieve the current stream flags for @stream + + + The #GstStreamFlags for @stream + + + + + a #GstStream + + + + + + Returns the stream ID of @stream. + + + the stream ID of @stream. Only valid +during the lifetime of @stream. + + + + + a #GstStream + + + + + + Retrieve the stream type for @stream + + + The #GstStreamType for @stream + + + + + a #GstStream + + + + + + Retrieve the tags for @stream, if any + + + The #GstTagList for @stream + + + + + a #GstStream + + + + + + Set the caps for the #GstStream + + + + + + + a #GstStream + + + + a #GstCaps + + + + + + Set the @flags for the @stream. + + + + + + + a #GstStream + + + + the flags to set on @stream + + + + + + Set the stream type of @stream + + + + + + + a #GstStream + + + + the type to set on @stream + + + + + + Set the tags for the #GstStream + + + + + + + a #GstStream + + + + a #GstTagList + + + + + + The #GstCaps of the #GstStream. + + + + + + + The unique identifier of the #GstStream. Can only be set at construction +time. + + + + The #GstStreamType of the #GstStream. Can only be set at construction time. + + + + The #GstTagList of the #GstStream. + + + + + + + The Stream Identifier for this #GstStream + + + + + + + + + + + + + GstStream class structure + + + the parent class structure + + + + + + + + + + A collection of #GstStream that are available. + +A #GstStreamCollection will be provided by elements that can make those +streams available. Applications can use the collection to show the user +what streams are available by using %gst_stream_collection_get_stream() + +Once posted, a #GstStreamCollection is immutable. Updates are made by sending +a new #GstStreamCollection message, which may or may not share some of +the #GstStream objects from the collection it replaces. The receiver can check +the sender of a stream collection message to know which collection is +obsoleted. + +Several elements in a pipeline can provide #GstStreamCollection. + +Applications can activate streams from a collection by using the +#GST_EVENT_SELECT_STREAMS event on a pipeline, bin or element. + + + Create a new #GstStreamCollection. + + + The new #GstStreamCollection. + + + + + The stream id of the parent stream + + + + + + + + + + + + + + + + + + + + + + + Add the given @stream to the @collection. + + + %TRUE if the @stream was properly added, else %FALSE + + + + + a #GstStreamCollection + + + + the #GstStream to add + + + + + + Get the number of streams this collection contains + + + The number of streams that @collection contains + + + + + a #GstStreamCollection + + + + + + Retrieve the #GstStream with index @index from the collection. + +The caller should not modify the returned #GstStream + + + A #GstStream + + + + + a #GstStreamCollection + + + + Index of the stream to retrieve + + + + + + Returns the upstream id of the @collection. + + + The upstream id + + + + + a #GstStreamCollection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GstStreamCollection class structure + + + the parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stream errors are for anything related to the stream being processed: +format errors, media type errors, ... +They're typically used by decoders, demuxers, converters, ... + + a general error which doesn't fit in any other +category. Make sure you add a custom message to the error call. + + + do not use this except as a placeholder for +deciding where to go while developing code. + + + use this when you do not want to implement +this functionality yet. + + + used when the element doesn't know the +stream's type. + + + used when the element doesn't handle this type +of stream. + + + used when there's no codec to handle the +stream's type. + + + used when decoding fails. + + + used when encoding fails. + + + used when demuxing fails. + + + used when muxing fails. + + + used when the stream is of the wrong format +(for example, wrong caps). + + + used when the stream is encrypted and can't be +decrypted because this is not supported by the element. + + + used when the stream is encrypted and +can't be decrypted because no suitable key is available. + + + the number of stream error types. + + + + + + + + + + + This stream has no special attributes + + + This stream is a sparse stream (e.g. a subtitle + stream), data may flow only in irregular intervals with large gaps in + between. + + + This stream should be selected by default. This + flag may be used by demuxers to signal that a stream should be selected + by default in a playback scenario. + + + This stream should not be selected by default. + This flag may be used by demuxers to signal that a stream should not + be selected by default in a playback scenario, but only if explicitly + selected by the user (e.g. an audio track for the hard of hearing or + a director's commentary track). + + + + + + + The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the +application of new streaming threads and their status. + + A new thread need to be created. + + + a thread entered its loop function + + + a thread left its loop function + + + a thread is destroyed + + + a thread is started + + + a thread is paused + + + a thread is stopped + + + + #GstStreamType describes a high level classification set for +flows of data in #GstStream objects. + +Note that this is a flag, and therefore users should not assume it +will be a single value. Do not use the equality operator for checking +whether a stream is of a certain type. + + The stream is of unknown (unclassified) type. + + + The stream is of audio data + + + The stream carries video data + + + The stream is a muxed container type + + + The stream contains subtitle / subpicture data. + + + Get a descriptive string for a given #GstStreamType + + + A string describing the stream type + + + + + a #GstStreamType + + + + + + + A #GstStructure is a collection of key/value pairs. The keys are expressed as +GQuarks and the values can be of any GType. + +In addition to the key/value pairs, a #GstStructure also has a name. The name +starts with a letter and can be filled by letters, numbers and any of +"/-_.:". + +#GstStructure is used by various GStreamer subsystems to store information in +a flexible and extensible way. A #GstStructure does not have a refcount +because it usually is part of a higher level object such as #GstCaps, +#GstMessage, #GstEvent, #GstQuery. It provides a means to enforce mutability +using the refcount of the parent with the gst_structure_set_parent_refcount() +method. + +A #GstStructure can be created with gst_structure_new_empty() or +gst_structure_new(), which both take a name and an optional set of key/value +pairs along with the types of the values. + +Field values can be changed with gst_structure_set_value() or +gst_structure_set(). + +Field values can be retrieved with gst_structure_get_value() or the more +convenient gst_structure_get_*() functions. + +Fields can be removed with gst_structure_remove_field() or +gst_structure_remove_fields(). + +Strings in structures must be ASCII or UTF-8 encoded. Other encodings are not +allowed. Strings may be %NULL however. + +## The serialization format + +GstStructure serialization format serialize the GstStructure name, +keys/GType/values in a comma separated list with the structure name as first +field without value followed by separated key/value pairs in the form +`key=value`, for example: + +``` +a-structure, key=value +```` + +The values type will be inferred if not explicitly specified with the +`(GTypeName)value` syntax, for example the following struct will have one +field called 'is-string' which has the string 'true' as a value: + +``` +a-struct, field-is-string=(string)true, field-is-boolean=true +``` + +*Note*: without specifying `(string), `field-is-string` type would have been +inferred as boolean. + +*Note*: we specified `(string)` as a type even if `gchararray` is the actual +GType name as for convenience some well known types have been aliased or +abbreviated. + +To avoid specifying the type, you can give some hints to the "type system". +For example to specify a value as a double, you should add a decimal (ie. `1` +is an `int` while `1.0` is a `double`). + +*Note*: when a structure is serialized with #gst_structure_to_string, all +values are explicitly typed. + +Some types have special delimiters: + +- [GstValueArray](GST_TYPE_ARRAY) are inside curly brackets (`{` and `}`). + For example `a-structure, array={1, 2, 3}` +- Ranges are inside brackets (`[` and `]`). For example `a-structure, + range=[1, 6, 2]` 1 being the min value, 6 the maximum and 2 the step. To + specify a #GST_TYPE_INT64_RANGE you need to explicitly specify it like: + `a-structure, a-int64-range=(gint64) [1, 5]` +- [GstValueList](GST_TYPE_LIST) are inside "less and greater than" (`<` and + `>`). For example `a-structure, list=<1, 2, 3> + +Structures are delimited either by a null character `\0` or a semicolon `;` +the latter allowing to store multiple structures in the same string (see +#GstCaps). + +Quotes are used as "default" delimiters and can be used around any types that +don't use other delimiters (for example `a-struct, i=(int)"1"`). They are use +to allow adding spaces or special characters (such as delimiters, +semicolumns, etc..) inside strings and you can use backslashes `\` to escape +characters inside them, for example: + +``` +a-struct, special="\"{[(;)]}\" can be used inside quotes" +``` + +They also allow for nested structure, such as: + +``` +a-struct, nested=(GstStructure)"nested-struct, nested=true" +``` + +Since 1.20, nested structures and caps can be specified using brackets (`[` +and `]`), for example: + +``` +a-struct, nested=[nested-struct, nested=true] +``` + +> *note*: gst_structure_to_string() won't use that syntax for backward +> compatibility reason, gst_structure_serialize() has been added for +> that purpose. + + + the GType of a structure + + + + + + + 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. +Variable arguments should be passed as field name, field type, +and value. Last variable argument should be %NULL. + +Free-function: gst_structure_free + + + a new #GstStructure + + + + + name of new structure + + + + name of first field to set + + + + additional arguments + + + + + + Creates a new, empty #GstStructure with the given @name. + +See gst_structure_set_name() for constraints on the @name parameter. + +Free-function: gst_structure_free + + + a new, empty #GstStructure + + + + + name of new structure + + + + + + 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. + +The current implementation of serialization will lead to unexpected results +when there are nested #GstCaps / #GstStructure deeper than one level unless +the gst_structure_serialize() function is used (without +#GST_SERIALIZE_FLAG_BACKWARD_COMPAT) + +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 + + + + + + Creates a new #GstStructure with the given name as a GQuark, followed by +fieldname quark, GType, argument(s) "triplets" in the same format as +gst_structure_id_set(). Basically a convenience wrapper around +gst_structure_new_id_empty() and gst_structure_id_set(). + +The last variable argument must be %NULL (or 0). + +Free-function: gst_structure_free + + + a new #GstStructure + + + + + name of new structure + + + + the GQuark for the name of the field to set + + + + variable arguments + + + + + + Creates a new, empty #GstStructure with the given name as a GQuark. + +Free-function: gst_structure_free + + + a new, empty #GstStructure + + + + + name of new structure + + + + + + Creates a new #GstStructure with the given @name. Structure fields +are set according to the varargs in a manner similar to +gst_structure_new(). + +See gst_structure_set_name() for constraints on the @name parameter. + +Free-function: gst_structure_free + + + a new #GstStructure + + + + + name of new structure + + + + name of first field to set + + + + variable argument list + + + + + + Tries intersecting @struct1 and @struct2 and reports whether the result +would not be empty. + + + %TRUE if intersection would not be empty + + + + + a #GstStructure + + + + a #GstStructure + + + + + + Duplicates a #GstStructure and all its fields and values. + +Free-function: gst_structure_free + + + a new #GstStructure. + + + + + a #GstStructure to duplicate + + + + + + Calls the provided function once for each field in the #GstStructure. In +contrast to gst_structure_foreach(), the function may modify the fields. +In contrast to gst_structure_map_in_place(), the field is removed from +the structure if %FALSE is returned from the function. +The structure must be mutable. + + + + + + + a #GstStructure + + + + a function to call for each field + + + + private data + + + + + + Fixate all values in @structure using gst_value_fixate(). +@structure will be modified in-place and should be writable. + + + + + + + a #GstStructure + + + + + + Fixates a #GstStructure by changing the given field with its fixated value. + + + %TRUE if the structure field could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + + + Fixates a #GstStructure by changing the given @field_name field to the given +@target boolean if that field is not fixed yet. + + + %TRUE if the structure could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + the target value of the fixation + + + + + + Fixates a #GstStructure by changing the given field to the nearest +double to @target that is a subset of the existing field. + + + %TRUE if the structure could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + the target value of the fixation + + + + + + Fixates a #GstStructure by changing the given field to the nearest +fraction to @target_numerator/@target_denominator that is a subset +of the existing field. + + + %TRUE if the structure could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + The numerator of the target value of the fixation + + + + The denominator of the target value of the fixation + + + + + + Fixates a #GstStructure by changing the given field to the nearest +integer to @target that is a subset of the existing field. + + + %TRUE if the structure could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + the target value of the fixation + + + + + + Fixates a #GstStructure by changing the given @field_name field to the given +@target string if that field is not fixed yet. + + + %TRUE if the structure could be fixated + + + + + a #GstStructure + + + + a field in @structure + + + + the target value of the fixation + + + + + + Calls the provided function once for each field in the #GstStructure. The +function must not modify the fields. Also see gst_structure_map_in_place() +and gst_structure_filter_and_map_in_place(). + + + %TRUE if the supplied function returns %TRUE For each of the fields, +%FALSE otherwise. + + + + + a #GstStructure + + + + a function to call for each field + + + + private data + + + + + + Frees a #GstStructure and all its fields and values. The structure must not +have a parent when this function is called. + + + + + + + the #GstStructure to free + + + + + + Parses the variable arguments and reads fields from @structure accordingly. +Variable arguments should be in the form field name, field type +(as a GType), pointer(s) to a variable(s) to hold the return value(s). +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 +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. + + + %FALSE if there was a problem reading any of the fields (e.g. + because the field requested did not exist, or was of a type other + than the type specified), otherwise %TRUE. + + + + + a #GstStructure + + + + the name of the first field to read + + + + variable arguments + + + + + + This is useful in language bindings where unknown #GValue types are not +supported. This function will convert the %GST_TYPE_ARRAY into a newly +allocated #GValueArray and return it through @array. Be aware that this is +slower then getting the #GValue directly. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a %GST_TYPE_ARRAY, +this function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GValueArray + + + + + + Sets the boolean pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a boolean, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #gboolean to set + + + + + + Sets the clock time pointed to by @value corresponding to the clock time +of the given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a #GstClockTime, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GstClockTime to set + + + + + + Sets the date pointed to by @value corresponding to the date of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + +On success @value will point to a newly-allocated copy of the date which +should be freed with g_date_free() when no longer needed (note: this is +inconsistent with e.g. gst_structure_get_string() which doesn't return a +copy of the string). + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a data, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GDate to set + + + + + + Sets the datetime pointed to by @value corresponding to the datetime of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + +On success @value will point to a reference of the datetime which +should be unreffed with gst_date_time_unref() when no longer needed +(note: this is inconsistent with e.g. gst_structure_get_string() +which doesn't return a copy of the string). + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a data, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GstDateTime to set + + + + + + Sets the double pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a double, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a gdouble to set + + + + + + Sets the int pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists, +has the correct type and that the enumtype is correct. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain an enum of the given +type, this function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + the enum type of a field + + + + a pointer to an int to set + + + + + + Finds the field with the given name, and returns the type of the +value it contains. If the field is not found, G_TYPE_INVALID is +returned. + + + the #GValue of the field + + + + + a #GstStructure + + + + the name of the field + + + + + + Sets the unsigned int pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists, +has the correct type and that the flagstype is correct. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain flags or +did not contain flags of the given type, this function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + the flags type of a field + + + + a pointer to an unsigned int to set + + + + + + Read the GstFlagSet flags and mask out of the structure into the +provided pointers. + + + %TRUE if the values could be set correctly. If there was no field +with @fieldname or the existing field did not contain a GstFlagSet, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a guint for the flags field + + + + a pointer to a guint for the mask field + + + + + + Sets the integers pointed to by @value_numerator and @value_denominator +corresponding to the value of the given field. Caller is responsible +for making sure the field exists and has the correct type. + + + %TRUE if the values could be set correctly. If there was no field +with @fieldname or the existing field did not contain a GstFraction, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to an int to set + + + + a pointer to an int to set + + + + + + Sets the int pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain an int, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to an int to set + + + + + + Sets the #gint64 pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a #gint64, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #gint64 to set + + + + + + This is useful in language bindings where unknown #GValue types are not +supported. This function will convert the %GST_TYPE_LIST into a newly +allocated GValueArray and return it through @array. Be aware that this is +slower then getting the #GValue directly. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a %GST_TYPE_LIST, this +function returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GValueArray + + + + + + Get the name of @structure as a string. + + + the name of the structure. + + + + + a #GstStructure + + + + + + Get the name of @structure as a GQuark. + + + the quark representing the name of the structure. + + + + + a #GstStructure + + + + + + Finds the field corresponding to @fieldname, and returns the string +contained in the field's value. Caller is responsible for making +sure the field exists and has the correct type. + +The string should not be modified, and remains valid until the next +call to a gst_structure_*() function with the given structure. + + + a pointer to the string or %NULL when the +field did not exist or did not contain a string. + + + + + a #GstStructure + + + + the name of a field + + + + + + Sets the uint pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a uint, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a uint to set + + + + + + Sets the #guint64 pointed to by @value corresponding to the value of the +given field. Caller is responsible for making sure the field exists +and has the correct type. + + + %TRUE if the value could be set correctly. If there was no field +with @fieldname or the existing field did not contain a #guint64, this function +returns %FALSE. + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #guint64 to set + + + + + + Parses the variable arguments and reads fields from @structure accordingly. +valist-variant of gst_structure_get(). Look at the documentation of +gst_structure_get() for more details. + + + %TRUE, or %FALSE if there was a problem reading any of the fields + + + + + a #GstStructure + + + + the name of the first field to read + + + + variable arguments + + + + + + Get the value of the field with name @fieldname. + + + the #GValue corresponding to the field with the given +name. + + + + + a #GstStructure + + + + the name of the field to get + + + + + + Check if @structure contains a field named @fieldname. + + + %TRUE if the structure contains a field with the given name + + + + + a #GstStructure + + + + the name of a field + + + + + + Check if @structure contains a field named @fieldname and with GType @type. + + + %TRUE if the structure contains a field with the given name and type + + + + + a #GstStructure + + + + the name of a field + + + + the type of a value + + + + + + Checks if the structure has the given name + + + %TRUE if @name matches the name of the structure. + + + + + a #GstStructure + + + + structure name to check for + + + + + + Parses the variable arguments and reads fields from @structure accordingly. +Variable arguments should be in the form field id quark, field type +(as a GType), pointer(s) to a variable(s) to hold the return value(s). +The last variable argument should be %NULL (technically it should be a +0 quark, but we require %NULL so compilers that support it can check for +the %NULL terminator and warn if it's not there). + +This function is just like gst_structure_get() only that it is slightly +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 +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. + + + %FALSE if there was a problem reading any of the fields (e.g. + because the field requested did not exist, or was of a type other + than the type specified), otherwise %TRUE. + + + + + a #GstStructure + + + + the quark of the first field to read + + + + variable arguments + + + + + + Parses the variable arguments and reads fields from @structure accordingly. +valist-variant of gst_structure_id_get(). Look at the documentation of +gst_structure_id_get() for more details. + + + %TRUE, or %FALSE if there was a problem reading any of the fields + + + + + a #GstStructure + + + + the quark of the first field to read + + + + variable arguments + + + + + + Get the value of the field with GQuark @field. + + + the #GValue corresponding to the field with the given +name identifier. + + + + + a #GstStructure + + + + the #GQuark of the field to get + + + + + + Check if @structure contains a field named @field. + + + %TRUE if the structure contains a field with the given name + + + + + a #GstStructure + + + + #GQuark of the field name + + + + + + Check if @structure contains a field named @field and with GType @type. + + + %TRUE if the structure contains a field with the given name and type + + + + + a #GstStructure + + + + #GQuark of the field name + + + + the type of a value + + + + + + Identical to gst_structure_set, except that field names are +passed using the GQuark for the field name. This allows more efficient +setting of the structure if the caller already knows the associated +quark values. +The last variable argument must be %NULL. + + + + + + + a #GstStructure + + + + the GQuark for the name of the field to set + + + + variable arguments + + + + + + va_list form of gst_structure_id_set(). + + + + + + + a #GstStructure + + + + the name of the field to set + + + + variable arguments + + + + + + Sets the field with the given GQuark @field to @value. If the field +does not exist, it is created. If the field exists, the previous +value is replaced and freed. + + + + + + + a #GstStructure + + + + a #GQuark representing a field + + + + the new value of the field + + + + + + Sets the field with the given GQuark @field to @value. If the field +does not exist, it is created. If the field exists, the previous +value is replaced and freed. + + + + + + + a #GstStructure + + + + a #GQuark representing a field + + + + the new value of the field + + + + + + Intersects @struct1 and @struct2 and returns the intersection. + + + Intersection of @struct1 and @struct2 + + + + + a #GstStructure + + + + a #GstStructure + + + + + + Tests if the two #GstStructure are equal. + + + %TRUE if the two structures have the same name and field. + + + + + a #GstStructure. + + + + a #GstStructure. + + + + + + Checks if @subset is a subset of @superset, i.e. has the same +structure name and for all fields that are existing in @superset, +@subset has a value that is a subset of the value in @superset. + + + %TRUE if @subset is a subset of @superset + + + + + a #GstStructure + + + + a potentially greater #GstStructure + + + + + + Calls the provided function once for each field in the #GstStructure. In +contrast to gst_structure_foreach(), the function may modify but not delete the +fields. The structure must be mutable. + + + %TRUE if the supplied function returns %TRUE For each of the fields, +%FALSE otherwise. + + + + + a #GstStructure + + + + a function to call for each field + + + + private data + + + + + + Get the number of fields in the structure. + + + the number of fields in the structure + + + + + a #GstStructure + + + + + + Get the name of the given field number, counting from 0 onwards. + + + the name of the given field number + + + + + a #GstStructure + + + + the index to get the name of + + + + + + Removes all fields in a GstStructure. + + + + + + + a #GstStructure + + + + + + Removes the field with the given name. If the field with the given +name does not exist, the structure is unchanged. + + + + + + + a #GstStructure + + + + the name of the field to remove + + + + + + Removes the fields with the given names. If a field does not exist, the +argument is ignored. + + + + + + + a #GstStructure + + + + the name of the field to remove + + + + %NULL-terminated list of more fieldnames to remove + + + + + + va_list form of gst_structure_remove_fields(). + + + + + + + a #GstStructure + + + + the name of the field to remove + + + + %NULL-terminated list of more fieldnames to remove + + + + + + Converts @structure to a human-readable string representation. + +This version of the caps serialization function introduces support for nested +structures and caps but the resulting strings won't be parsable with +GStreamer prior to 1.20 unless #GST_SERIALIZE_FLAG_BACKWARD_COMPAT is passed +as @flag. + +Free-function: g_free + + + a pointer to string allocated by g_malloc(). + g_free() after usage. + + + + + a #GstStructure + + + + The flags to use to serialize structure + + + + + + Parses the variable arguments and sets fields accordingly. Fields that +weren't already part of the structure are added as needed. +Variable arguments should be in the form field name, field type +(as a GType), value(s). The last variable argument should be %NULL. + + + + + + + a #GstStructure + + + + the name of the field to set + + + + variable arguments + + + + + + This is useful in language bindings where unknown GValue types are not +supported. This function will convert a @array to %GST_TYPE_ARRAY and set +the field specified by @fieldname. Be aware that this is slower then using +%GST_TYPE_ARRAY in a #GValue directly. + + + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GValueArray + + + + + + This is useful in language bindings where unknown GValue types are not +supported. This function will convert a @array to %GST_TYPE_LIST and set +the field specified by @fieldname. Be aware that this is slower then using +%GST_TYPE_LIST in a #GValue directly. + + + + + + + a #GstStructure + + + + the name of a field + + + + a pointer to a #GValueArray + + + + + + Sets the name of the structure to the given @name. The string +provided is copied before being used. It must not be empty, start with a +letter and can be followed by letters, numbers and any of "/-_.:". + + + + + + + a #GstStructure + + + + the new name of the structure + + + + + + Sets the parent_refcount field of #GstStructure. This field is used to +determine whether a structure is mutable or not. This function should only be +called by code implementing parent objects of #GstStructure, as described in +the MT Refcounting section of the design documents. + + + %TRUE if the parent refcount could be set. + + + + + a #GstStructure + + + + a pointer to the parent's refcount + + + + + + va_list form of gst_structure_set(). + + + + + + + a #GstStructure + + + + the name of the field to set + + + + variable arguments + + + + + + Sets the field with the given name @field to @value. If the field +does not exist, it is created. If the field exists, the previous +value is replaced and freed. + + + + + + + a #GstStructure + + + + the name of the field to set + + + + the new value of the field + + + + + + Sets the field with the given name @field to @value. If the field +does not exist, it is created. If the field exists, the previous +value is replaced and freed. The function will take ownership of @value. + + + + + + + a #GstStructure + + + + the name of the field to set + + + + the new value of the field + + + + + + Converts @structure to a human-readable string representation. + +For debugging purposes its easier to do something like this: |[<!-- +language="C" --> GST_LOG ("structure is %" GST_PTR_FORMAT, structure); +]| +This prints the structure in human readable form. + +This function will lead to unexpected results when there are nested #GstCaps +/ #GstStructure deeper than one level, you should user +gst_structure_serialize() instead for those cases. + +Free-function: g_free + + + a pointer to string allocated by g_malloc(). + g_free() after usage. + + + + + a #GstStructure + + + + + + 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. + +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. + + + %TRUE if @newstr was different from @oldstr_ptr + + + + + pointer to a place of + a #GstStructure to take + + + + a new #GstStructure + + + + + + + The type of a %GST_MESSAGE_STRUCTURE_CHANGE. + + Pad linking is starting or done. + + + Pad unlinking is starting or done. + + + + A function that will be called in gst_structure_filter_and_map_in_place(). +The function may modify @value, and the value will be removed from +the structure if %FALSE is returned. + + + %TRUE if the field should be preserved, %FALSE if it +should be removed. + + + + + the #GQuark of the field name + + + + the #GValue of the field + + + + user data + + + + + + A function that will be called in gst_structure_foreach(). The function may +not modify @value. + + + %TRUE if the foreach operation should continue, %FALSE if +the foreach operation should stop with %FALSE. + + + + + the #GQuark of the field name + + + + the #GValue of the field + + + + user data + + + + + + A function that will be called in gst_structure_map_in_place(). The function +may modify @value. + + + %TRUE if the map operation should continue, %FALSE if +the map operation should stop with %FALSE. + + + + + the #GQuark of the field name + + + + the #GValue of the field + + + + user data + + + + + + The GStreamer core provides a GstSystemClock based on the system time. +Asynchronous callbacks are scheduled from an internal thread. + +Clock implementors are encouraged to subclass this systemclock as it +implements the async notification. + +Subclasses can however override all of the important methods for sync and +async notifications to implement their own callback methods or blocking +wait operations. + + + Get a handle to the default system clock. The refcount of the +clock will be increased so you need to unref the clock after +usage. + + + the default clock. + +MT safe. + + + + + Sets the default system clock that can be obtained with +gst_system_clock_obtain(). + +This is mostly used for testing and debugging purposes when you +want to have control over the time reported by the default system +clock. + +MT safe. + + + + + + + a #GstClock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + album containing this data (string) + +The album name as it should be displayed, e.g. 'The Jazz Guitar' + + + + + The artist of the entire album, as it should be displayed. + + + + + The artist of the entire album, as it should be sorted. + + + + + album gain in db (double) + + + + + peak of the album (double) + + + + + album containing this data, as used for sorting (string) + +The album name as it should be sorted, e.g. 'Jazz Guitar, The' + + + + + count of discs inside collection this disc belongs to (unsigned integer) + + + + + disc number inside a collection (unsigned integer) + + + + + Arbitrary application data (sample) + +Some formats allow applications to add their own arbitrary data +into files. This data is application dependent. + + + + + Name of the application used to create the media (string) + + + + + person(s) responsible for the recording (string) + +The artist name as it should be displayed, e.g. 'Jimi Hendrix' or +'The Guitar Heroes' + + + + + person(s) responsible for the recording, as used for sorting (string) + +The artist name as it should be sorted, e.g. 'Hendrix, Jimi' or +'Guitar Heroes, The' + + + + + generic file attachment (sample) (sample taglist should specify the content +type and if possible set "filename" to the file name of the +attachment) + + + + + codec the audio data is stored in (string) + + + + + number of beats per minute in audio (double) + + + + + exact or average bitrate in bits/s (unsigned integer) + + + + + codec the data is stored in (string) + + + + + free text commenting the data (string) + + + + + person(s) who composed the recording (string) + + + + + The composer's name, used for sorting (string) + + + + + conductor/performer refinement (string) + + + + + contact information (string) + + + + + container format the data is stored in (string) + + + + + copyright notice of the data (string) + + + + + URI to location where copyright details can be found (string) + + + + + date the data was created (#GDate structure) + + + + + date and time the data was created (#GstDateTime structure) + + + + + short text describing the content of the data (string) + + + + + Manufacturer of the device used to create the media (string) + + + + + Model of the device used to create the media (string) + + + + + length in GStreamer time units (nanoseconds) (unsigned 64-bit integer) + + + + + name of the person or organisation that encoded the file. May contain a +copyright message if the person or organisation also holds the copyright +(string) + +Note: do not use this field to describe the encoding application. Use +#GST_TAG_APPLICATION_NAME or #GST_TAG_COMMENT for that. + + + + + encoder used to encode this stream (string) + + + + + version of the encoder used to encode this stream (unsigned integer) + + + + + key/value text commenting the data (string) + +Must be in the form of 'key=comment' or +'key[lc]=comment' where 'lc' is an ISO-639 +language code. + +This tag is used for unknown Vorbis comment tags, +unknown APE tags and certain ID3v2 comment fields. + + + + + + + + + + + + genre this data belongs to (string) + + + + + Indicates the direction the device is pointing to when capturing +a media. It is represented as degrees in floating point representation, +0 means the geographic north, and increases clockwise (double from 0 to 360) + +See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION + + + + + The city (english name) where the media has been produced (string). + + + + + The country (english name) where the media has been produced (string). + + + + + geo elevation of where the media has been recorded or produced in meters +according to WGS84 (zero is average sea level) (double). + + + + + Represents the expected error on the horizontal positioning in +meters (double). + + + + + geo latitude location of where the media has been recorded or produced in +degrees according to WGS84 (zero at the equator, negative values for southern +latitudes) (double). + + + + + geo longitude location of where the media has been recorded or produced in +degrees according to WGS84 (zero at the prime meridian in Greenwich/UK, +negative values for western longitudes). (double). + + + + + Indicates the movement direction of the device performing the capture +of a media. It is represented as degrees in floating point representation, +0 means the geographic north, and increases clockwise (double from 0 to 360) + +See also #GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION + + + + + Speed of the capturing device when performing the capture. +Represented in m/s. (double) + +See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION + + + + + human readable descriptive location of where the media has been recorded or +produced. (string). + + + + + A location 'smaller' than GST_TAG_GEO_LOCATION_CITY that specifies better +where the media has been produced. (e.g. the neighborhood) (string). + +This tag has been added as this is how it is handled/named in XMP's +Iptc4xmpcore schema. + + + + + Groups together media that are related and spans multiple tracks. An +example are multiple pieces of a concerto. (string) + + + + + Homepage for this media (i.e. artist or movie homepage) (string) + + + + + image (sample) (sample taglist should specify the content type and preferably +also set "image-type" field as `GstTagImageType`) + + + + + Represents the 'Orientation' tag from EXIF. Defines how the image +should be rotated and mirrored for display. (string) + +This tag has a predefined set of allowed values: + "rotate-0" + "rotate-90" + "rotate-180" + "rotate-270" + "flip-rotate-0" + "flip-rotate-90" + "flip-rotate-180" + "flip-rotate-270" + +The naming is adopted according to a possible transformation to perform +on the image to fix its orientation, obviously equivalent operations will +yield the same result. + +Rotations indicated by the values are in clockwise direction and +'flip' means an horizontal mirroring. + + + + + Information about the people behind a remix and similar +interpretations of another existing piece (string) + + + + + International Standard Recording Code - see http://www.ifpi.org/isrc/ (string) + + + + + comma separated keywords describing the content (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()` + + + + + Name of the language the content is in (string) + +Free-form name of the language the content is in, if a language code +is not available. This tag should not be set in addition to a language +code. It is undefined what language or locale the language name is in. + + + + + license of data (string) + + + + + URI to location where license details can be found (string) + + + + + + + + + + + + Origin of media as a URI (location, where the original of the file or stream +is hosted) (string) + + + + + The lyrics of the media (string) + + + + + maximum bitrate in bits/s (unsigned integer) + + + + + [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. + + + + + minimum bitrate in bits/s (unsigned integer) + + + + + + + + + + + + nominal bitrate in bits/s (unsigned integer). The actual bitrate might be +different from this target bitrate. + + + + + organization (string) + + + + + person(s) performing (string) + + + + + image that is meant for preview purposes, e.g. small icon-sized version +(sample) (sample taglist should specify the content type) + + + + + Any private data that may be contained in tags (sample). + +It is represented by #GstSample in which #GstBuffer contains the +binary data and the sample's info #GstStructure may contain any +extra information that identifies the origin or meaning of the data. + +Private frames in ID3v2 tags ('PRIV' frames) will be represented +using this tag, in which case the GstStructure will be named +"ID3PrivateFrame" and contain a field named "owner" of type string +which contains the owner-identification string from the tag. + + + + + Name of the label or publisher (string) + + + + + reference level of track and album gain values (double) + + + + + serial number of track (unsigned integer) + + + + + + + + + + + + + + + + + + + Number of the episode within a season/show (unsigned integer) + + + + + Name of the show, used for displaying (string) + + + + + Number of the season of a show/series (unsigned integer) + + + + + Name of the show, used for sorting (string) + + + + + codec/format the subtitle data is stored in (string) + + + + + commonly used title (string) + +The title as it should be displayed, e.g. 'The Doll House' + + + + + commonly used title, as used for sorting (string) + +The title as it should be sorted, e.g. 'Doll House, The' + + + + + count of tracks inside collection this track belongs to (unsigned integer) + + + + + track gain in db (double) + + + + + track number inside a collection (unsigned integer) + + + + + peak of the track (double) + + + + + Rating attributed by a person (likely the application user). +The higher the value, the more the user likes this media +(unsigned int from 0 to 100) + + + + + version of this data (string) + + + + + codec the video data is stored in (string) + + + + + + + + + + + + Send a broadcast signal to all waiting task conds + + + + Task to broadcast + + + + + + + + + + + + + + + + + + + + + + + + + + Get access to the cond of the task. + + + + Task to get the cond of + + + + + Get access to the task lock. + + + + Task to get the lock of + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Signal the task cond + + + + Task to signal + + + + + Get access to the state of the task. + + + + Task to get the state of + + + + + Wait for the task cond to be signalled + + + + Task to wait for + + + + + printf format type used to debug GStreamer ClockTime pointers. You can use +this in combination with GStreamer's debug logging system as well as the +functions gst_info_vasprintf(), gst_info_strdup_vprintf() and +gst_info_strdup_printf() to pretty-print #GstClockTime pointers. This can +only be used on pointers to GstClockTime values. + + + + + Converts a struct timespec (see `man pselect`) to a #GstClockTime. + + + + the timespec to convert + + + + + Converts a GTimeVal to a #GstClockTime. + + + + the timeval to convert + + + + + Formats @t for the #GST_TIME_FORMAT format string. Note: @t will be +evaluated more than once. + + + + a #GstClockTime + + + + + Converts a #GstClockTime to milliseconds (1/1000 of a second). + + + + the time + + + + + Converts a #GstClockTime to nanoseconds (1/1000000000 of a second). + + + + the time + + + + + Converts a #GstClockTime to seconds. + + + + the time + + + + + Converts a #GstClockTime to microseconds (1/1000000 of a second). + + + + the time + + + + + A string that can be used in printf-like format strings to display a +#GstClockTime value in `h:m:s` format. Use GST_TIME_ARGS() to construct +the matching arguments. + +Example: + +``` C +printf("%" GST_TIME_FORMAT "\n", GST_TIME_ARGS(ts)); +``` + + + + + Converts a #GstClockTime to a struct timespec (see `man pselect`) + + + + The #GstClockTime to convert + + + The target timespec + + + + + Converts 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 +> in your pipeline for 2038. + + + + The #GstClockTime to convert + + + The target timeval + + + + + Checks if @entry_type indicates that its #GstTocEntry is an alternative. + + + + The #GstTocEntryType from a #GstTocEntry + + + + + Checks if @entry_type indicates that its #GstTocEntry is a sequence. + + + + The #GstTocEntryType from a #GstTocEntry + + + + + Special value for the repeat_count set in gst_toc_entry_set_loop() or +returned by gst_toc_entry_set_loop() to indicate infinite looping. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This macro can be used to register a type find into a #GstPlugin. +This method will be usually called in the plugin init function +but can also be called with a NULL plugin. + + + + The type find name in lower case, with words separated by '_'. + + + The #GstPlugin where to register the type find. + + + + + This macro can be used to declare a new type find. +It has to be used in combination with #GST_TYPE_FIND_REGISTER_DEFINE macro +and must be placed outside any block to declare the type find registration +function. + + + + The type find name in lower case, with words separated by '_'. + + + + + A convenience macro to define the entry point of a +type find `gst_type_find_register_*(GstPlugin* plugin)`. + + + + The type find name in lower case, with words separated by '_'. +Used to generate `gst_type_find_register_*(GstPlugin* plugin)`. + + + The public name of the type find + + + The #GstRank of the type find (higher rank means more importance when autoplugging, see #GstRank) + + + The #GstTypeFindFunction to use + + + Optional comma-separated list of extensions + that could belong to this type + + + Optionally the caps that could be returned when typefinding + succeeds + + + Optional user data. This user data must be available until the plugin + is unloaded. + + + a #GDestroyNotify that will be called on @data when the plugin + is unloaded. + + + + + A convenience macro to define the entry point of a +type find `gst_type_find_register_*(GstPlugin* plugin)` which uses +register_func as the main registration method for the type find. +As an example, you may define the type find named "custom-typefind" +as following using `type_find_register_custom`: + +``` +GST_TYPE_FIND_REGISTER_DEFINE_CUSTOM (plugin, type_find_register_custom) +``` + + + + The type find name in lower case, with words separated by '_'. +Used to generate `gst_type_find_register_*(GstPlugin* plugin)`. + + + pointer to a method with the format: `gboolean register_func (GstPlugin* plugin);` + + + + + Extra tag flags used when registering tags. + + undefined flag + + + tag is meta data + + + tag is encoded + + + tag is decoded + + + number of tag flags + + + + A function that will be called in gst_tag_list_foreach(). The function may +not modify the tag list. + + + + + + + the #GstTagList + + + + a name of a tag in @list + + + + user data + + + + + + List of tags and values used to describe media metadata. + +Strings in structures must be ASCII or UTF-8 encoded. Other encodings are +not allowed. Strings must not be empty or %NULL. + + + the parent type + + + + Creates a new taglist and appends the values for the given tags. It expects +tag-value pairs like gst_tag_list_add(), and a %NULL terminator after the +last pair. The type of the values is implicit and is documented in the API +reference, but can also be queried at runtime with gst_tag_get_type(). It +is an error to pass a value of a type not matching the tag type into this +function. The tag list will make copies of any arguments passed +(e.g. strings, buffers). + +After creation you might also want to set a #GstTagScope on the returned +taglist to signal if the contained tags are global or stream tags. By +default stream scope is assumes. See gst_tag_list_set_scope(). + +Free-function: gst_tag_list_unref + + + a new #GstTagList. Free with gst_tag_list_unref() + when no longer needed. + + + + + tag + + + + %NULL-terminated list of values to set + + + + + + Creates a new empty GstTagList. + +Free-function: gst_tag_list_unref + + + An empty tag list + + + + + Deserializes a tag list. + + + a new #GstTagList, or %NULL in case of an +error. + + + + + a string created with gst_tag_list_to_string() + + + + + + Just like gst_tag_list_new(), only that it takes a va_list argument. +Useful mostly for language bindings. + +Free-function: gst_tag_list_unref + + + a new #GstTagList. Free with gst_tag_list_unref() + when no longer needed. + + + + + tag / value pairs to set + + + + + + Sets the values for the given tags using the specified mode. + + + + + + + list to set tags in + + + + the mode to use + + + + tag + + + + %NULL-terminated list of values to set + + + + + + Sets the values for the given tags using the specified mode. + + + + + + + list to set tags in + + + + the mode to use + + + + tag + + + + tag / value pairs to set + + + + + + Sets the GValues for the given tags using the specified mode. + + + + + + + list to set tags in + + + + the mode to use + + + + tag + + + + tag / GValue pairs to set + + + + + + Sets the GValue for a given tag using the specified mode. + + + + + + + list to set tags in + + + + the mode to use + + + + tag + + + + GValue for this tag + + + + + + Sets the GValues for the given tags using the specified mode. + + + + + + + list to set tags in + + + + the mode to use + + + + tag + + + + GValues to set + + + + + + 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. + + + + + + + list to iterate over + + + + function to be called for each tag + + + + user specified data + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the first date for the given tag in the taglist into the variable +pointed to by @value. Free the date with g_date_free() when it is no longer +needed. + +Free-function: g_date_free + + + %TRUE, if a date was copied, %FALSE if the tag didn't exist in the + given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + address of a GDate pointer + variable to store the result into + + + + + + Gets the date that is at the given index for the given tag in the given +list and copies it into the variable pointed to by @value. Free the date +with g_date_free() when it is no longer needed. + +Free-function: g_date_free + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the first datetime for the given tag in the taglist into the variable +pointed to by @value. Unref the date with gst_date_time_unref() when +it is no longer needed. + +Free-function: gst_date_time_unref + + + %TRUE, if a datetime was copied, %FALSE if the tag didn't exist in + the given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + address of a #GstDateTime + pointer variable to store the result into + + + + + + Gets the datetime that is at the given index for the given tag in the given +list and copies it into the variable pointed to by @value. Unref the datetime +with gst_date_time_unref() when it is no longer needed. + +Free-function: gst_date_time_unref + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Copies the first sample for the given tag in the taglist into the variable +pointed to by @sample. Free the sample with gst_sample_unref() when it is +no longer needed. You can retrieve the buffer from the sample using +gst_sample_get_buffer() and the associated caps (if any) with +gst_sample_get_caps(). + +Free-function: gst_sample_unref + + + %TRUE, if a sample was returned, %FALSE if the tag didn't exist in + the given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + address of a GstSample + pointer variable to store the result into + + + + + + Gets the sample that is at the given index for the given tag in the given +list and copies it into the variable pointed to by @sample. Free the sample +with gst_sample_unref() when it is no longer needed. You can retrieve the +buffer from the sample using gst_sample_get_buffer() and the associated +caps (if any) with gst_sample_get_caps(). + +Free-function: gst_sample_unref + + + %TRUE, if a sample was copied, %FALSE if the tag didn't exist in the + given list or if it was %NULL. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + address of a GstSample + pointer variable to store the result into + + + + + + Gets the scope of @list. + + + The scope of @list + + + + + a #GstTagList + + + + + + Copies the contents for the given tag into the value, possibly merging +multiple values into one if multiple values are associated with the tag. + +Use gst_tag_list_get_string_index (list, tag, 0, value) if you want +to retrieve the first string associated with this tag unmodified. + +The resulting string in @value will be in UTF-8 encoding and should be +freed by the caller using g_free when no longer needed. The +returned string is also guaranteed to be non-%NULL and non-empty. + +Free-function: g_free + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + +The resulting string in @value will be in UTF-8 encoding and should be +freed by the caller using g_free when no longer needed. The +returned string is also guaranteed to be non-%NULL and non-empty. + +Free-function: g_free + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Checks how many value are stored in this tag list for the given tag. + + + The number of tags stored + + + + + a taglist + + + + the tag to query + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Copies the contents for the given tag into the value, merging multiple values +into one if multiple values are associated with the tag. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + Gets the value that is at the given index for the given tag in the given +list. + + + The GValue for the specified + entry or %NULL if the tag wasn't available or the tag + doesn't have as many entries + + + + + a #GstTagList + + + + tag to read out + + + + number of entry to read out + + + + + + Inserts the tags of the @from list into the first list using the given mode. + + + + + + + list to merge into + + + + list to merge from + + + + the mode to use + + + + + + Checks if the given taglist is empty. + + + %TRUE if the taglist is empty, otherwise %FALSE. + + + + + A #GstTagList. + + + + + + Checks if the two given taglists are equal. + + + %TRUE if the taglists are equal, otherwise %FALSE + + + + + a #GstTagList. + + + + a #GstTagList. + + + + + + Merges the two given lists into a new list. If one of the lists is %NULL, a +copy of the other is returned. If both lists are %NULL, %NULL is returned. + +Free-function: gst_tag_list_unref + + + the new list + + + + + first list to merge + + + + second list to merge + + + + the mode to use + + + + + + Get the number of tags in @list. + + + The number of tags in @list. + + + + + A #GstTagList. + + + + + + Get the name of the tag in @list at @index. + + + The name of the tag at @index. + + + + + A #GstTagList. + + + + the index + + + + + + Peeks at the value that is at the given index for the given tag in the given +list. + +The resulting string in @value will be in UTF-8 encoding and doesn't need +to be freed by the caller. The returned string is also guaranteed to +be non-%NULL and non-empty. + + + %TRUE, if a value was set, %FALSE if the tag didn't exist in the + given list. + + + + + a #GstTagList to get the tag from + + + + tag to read out + + + + number of entry to read out + + + + location for the result + + + + + + 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. + + + + + + + list to remove tag from + + + + tag to remove + + + + + + Sets the scope of @list to @scope. By default the scope +of a taglist is stream scope. + + + + + + + a #GstTagList + + + + new scope for @list + + + + + + Serializes a tag list to a string. + + + a newly-allocated string. + The string must be freed with g_free() when no longer + needed. + + + + + a #GstTagList + + + + + + 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 +with the tag. +You must g_value_unset() the value after use. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + uninitialized #GValue to copy into + + + + list to get the tag from + + + + tag to read out + + + + + + Modifies a pointer to a #GstTagList to point to a different #GstTagList. 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 tag list is unreffed, the new is reffed). + +Either @new_taglist or the #GstTagList pointed to by @old_taglist may be +%NULL. + + + %TRUE if @new_taglist was different from @old_taglist + + + + + pointer to a pointer to a + #GstTagList to be replaced. + + + + pointer to a #GstTagList that + will replace the tag list pointed to by @old_taglist. + + + + + + Modifies a pointer to a #GstTagList to point to a different #GstTagList. +This function is similar to gst_tag_list_replace() except that it takes +ownership of @new_taglist. + + + %TRUE if @new_taglist was different from @old_taglist + + + + + pointer to a pointer to a #GstTagList + to be replaced. + + + + pointer to a #GstTagList that + will replace the taglist pointed to by @old_taglist. + + + + + + + A function for merging multiple values of a tag used when registering +tags. + + + + + + + the destination #GValue + + + + the source #GValue + + + + + + The different tag merging modes are basically replace, overwrite and append, +but they can be seen from two directions. Given two taglists: (A) the tags +already in the element and (B) the ones that are supplied to the element ( +e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a +%GST_EVENT_TAG), how are these tags merged? +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. + +| 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 + + + replace all tags (clear list and append) + + + replace tags + + + append tags + + + prepend tags + + + keep existing tags + + + keep all existing tags + + + the number of merge modes + + + + GstTagScope specifies if a taglist applies to the complete +medium or only to one single stream. + + tags specific to this single stream + + + global tags for the complete medium + + + + Element interface that allows setting of media metadata. + +Elements that support changing a stream's metadata will implement this +interface. Examples of such elements are 'vorbisenc', 'theoraenc' and +'id3v2mux'. + +If you just want to retrieve metadata in your application then all you +need to do is watch for tag messages on your pipeline's bus. This +interface is only for setting metadata, not for extracting it. To set tags +from the application, find tagsetter elements and set tags using e.g. +gst_tag_setter_merge_tags() or gst_tag_setter_add_tags(). Also consider +setting the #GstTagMergeMode that is used for tag events that arrive at the +tagsetter element (default mode is to keep existing tags). +The application should do that before the element goes to %GST_STATE_PAUSED. + +Elements implementing the #GstTagSetter interface often have to merge +any tags received from upstream and the tags set by the application via +the interface. This can be done like this: + +|[<!-- language="C" --> +GstTagMergeMode merge_mode; +const GstTagList *application_tags; +const GstTagList *event_tags; +GstTagSetter *tagsetter; +GstTagList *result; + +tagsetter = GST_TAG_SETTER (element); + +merge_mode = gst_tag_setter_get_tag_merge_mode (tagsetter); +application_tags = gst_tag_setter_get_tag_list (tagsetter); +event_tags = (const GstTagList *) element->event_tags; + +GST_LOG_OBJECT (tagsetter, "merging tags, merge mode = %d", merge_mode); +GST_LOG_OBJECT (tagsetter, "event tags: %" GST_PTR_FORMAT, event_tags); +GST_LOG_OBJECT (tagsetter, "set tags: %" GST_PTR_FORMAT, application_tags); + +result = gst_tag_list_merge (application_tags, event_tags, merge_mode); + +GST_LOG_OBJECT (tagsetter, "final tags: %" GST_PTR_FORMAT, result); +]| + + + + Adds the given tag / value pairs on the setter using the given merge mode. +The list must be terminated with %NULL. + + + + + + + a #GstTagSetter + + + + the mode to use + + + + tag to set + + + + tag / value pairs to set + + + + + + Adds the given tag / GValue pairs on the setter using the given merge mode. +The list must be terminated with %NULL. + + + + + + + a #GstTagSetter + + + + the mode to use + + + + tag to set + + + + tag / GValue pairs to set + + + + + + Adds the given tag / GValue pair on the setter using the given merge mode. + + + + + + + a #GstTagSetter + + + + the mode to use + + + + tag to set + + + + GValue to set for the tag + + + + + + Adds the given tag / GValue pairs on the setter using the given merge mode. +The list must be terminated with %NULL. + + + + + + + a #GstTagSetter + + + + the mode to use + + + + tag to set + + + + more tag / GValue pairs to set + + + + + + Adds the given tag / value pairs on the setter using the given merge mode. +The list must be terminated with %NULL. + + + + + + + a #GstTagSetter + + + + the mode to use + + + + tag to set + + + + more tag / value pairs to set + + + + + + Returns the current list of tags the setter uses. The list should not be +modified or freed. + +This function is not thread-safe. + + + a current snapshot of the + taglist used in the setter or %NULL if none is used. + + + + + a #GstTagSetter + + + + + + Queries the mode by which tags inside the setter are overwritten by tags +from events + + + the merge mode used inside the element. + + + + + a #GstTagSetter + + + + + + Merges the given list into the setter's list using the given mode. + + + + + + + a #GstTagSetter + + + + a tag list to merge from + + + + the mode to merge with + + + + + + Reset the internal taglist. Elements should call this from within the +state-change handler. + + + + + + + a #GstTagSetter + + + + + + Sets the given merge mode that is used for adding tags from events to tags +specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps +the tags set with this interface and discards tags from events. + + + + + + + a #GstTagSetter + + + + The mode with which tags are added + + + + + + + #GstTagSetterInterface interface. + + + parent interface type. + + + + + #GstTask is used by #GstElement and #GstPad to provide the data passing +threads in a #GstPipeline. + +A #GstPad will typically start a #GstTask to push or pull data to/from the +peer pads. Most source elements start a #GstTask to push data. In some cases +a demuxer element can start a #GstTask to pull data from a peer element. This +is typically done when the demuxer can perform random access on the upstream +peer element for improved performance. + +Although convenience functions exist on #GstPad to start/pause/stop tasks, it +might sometimes be needed to create a #GstTask manually if it is not related to +a #GstPad. + +Before the #GstTask can be run, it needs a #GRecMutex that can be set with +gst_task_set_lock(). + +The task can be started, paused and stopped with gst_task_start(), gst_task_pause() +and gst_task_stop() respectively or with the gst_task_set_state() function. + +A #GstTask will repeatedly call the #GstTaskFunction with the user data +that was provided when creating the task with gst_task_new(). While calling +the function it will acquire the provided lock. The provided lock is released +when the task pauses or stops. + +Stopping a task with gst_task_stop() will not immediately make sure the task is +not running anymore. Use gst_task_join() to make sure the task is completely +stopped and the thread is stopped. + +After creating a #GstTask, use gst_object_unref() to free its resources. This can +only be done when the task is not running anymore. + +Task functions can send a #GstMessage to send out-of-band data to the +application. The application can receive messages from the #GstBus in its +mainloop. + +For debugging purposes, the task will configure its object name as the thread +name on Linux. Please note that the object name should be configured before the +task is started; changing the object name after the task has been started, has +no effect on the thread name. + + + Create a new Task that will repeatedly call the provided @func +with @user_data as a parameter. Typically the task will run in +a new thread. + +The function cannot be changed after the task has been created. You +must create a new #GstTask to change the function. + +This function will not yet create and start a thread. Use gst_task_start() or +gst_task_pause() to create and start the GThread. + +Before the task can be used, a #GRecMutex must be configured using the +gst_task_set_lock() function. This lock will always be acquired while +@func is called. + + + A new #GstTask. + +MT safe. + + + + + The #GstTaskFunction to use + + + + User data to pass to @func + + + + the function to call when @user_data is no longer needed. + + + + + + Wait for all tasks to be stopped. This is mainly used internally +to ensure proper cleanup of internal data structures in test suites. + +MT safe. + + + + + + + Get the #GstTaskPool that this task will use for its streaming +threads. + +MT safe. + + + the #GstTaskPool used by @task. gst_object_unref() +after usage. + + + + + a #GstTask + + + + + + Get the current state of the task. + + + The #GstTaskState of the task + +MT safe. + + + + + The #GstTask to query + + + + + + Joins @task. After this call, it is safe to unref the task +and clean up the lock set with gst_task_set_lock(). + +The task will automatically be stopped with this call. + +This function cannot be called from within a task function as this +would cause a deadlock. The function will detect this and print a +g_warning. + + + %TRUE if the task could be joined. + +MT safe. + + + + + The #GstTask to join + + + + + + Pauses @task. This method can also be called on a task in the +stopped state, in which case a thread will be started and will remain +in the paused state. This function does not wait for the task to complete +the paused state. + + + %TRUE if the task could be paused. + +MT safe. + + + + + The #GstTask to pause + + + + + + 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 +longer referenced. + + + + + + + The #GstTask to use + + + + a #GstTaskThreadFunc + + + + user data passed to @enter_func + + + + called when @user_data is no longer referenced + + + + + + Call @leave_func when the task function of @task is left. @user_data will +be passed to @leave_func and @notify will be called when @user_data is no +longer referenced. + + + + + + + The #GstTask to use + + + + a #GstTaskThreadFunc + + + + user data passed to @leave_func + + + + called when @user_data is no longer referenced + + + + + + Set the mutex used by the task. The mutex will be acquired before +calling the #GstTaskFunction. + +This function has to be called before calling gst_task_pause() or +gst_task_start(). + +MT safe. + + + + + + + The #GstTask to use + + + + The #GRecMutex to use + + + + + + Set @pool as the new GstTaskPool for @task. Any new streaming threads that +will be created by @task will now use @pool. + +MT safe. + + + + + + + a #GstTask + + + + a #GstTaskPool + + + + + + Sets the state of @task to @state. + +The @task must have a lock associated with it using +gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or +this function will return %FALSE. + +MT safe. + + + %TRUE if the state could be changed. + + + + + a #GstTask + + + + the new task state + + + + + + Starts @task. The @task must have a lock associated with it using +gst_task_set_lock() or this function will return %FALSE. + + + %TRUE if the task could be started. + +MT safe. + + + + + The #GstTask to start + + + + + + Stops @task. This method merely schedules the task to stop and +will not wait for the task to have completely stopped. Use +gst_task_join() to stop and wait for completion. + + + %TRUE if the task could be stopped. + +MT safe. + + + + + The #GstTask to stop + + + + + + + + + the state of the task + + + + used to pause/resume the task + + + + The lock taken when iterating the task function + + + + the function executed by this task + + + + user_data passed to the task function + + + + GDestroyNotify for @user_data + + + + a flag indicating that the task is running + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A function that will repeatedly be called in the thread created by +a #GstTask. + + + + + + + user data passed to the function + + + + + + This object provides an abstraction for creating threads. The default +implementation uses a regular GThreadPool to start tasks. + +Subclasses can be made to create custom threads. + + + Create a new default task pool. The default task pool will use a regular +GThreadPool for threads. + + + a new #GstTaskPool. gst_object_unref() after usage. + + + + + Wait for all tasks to be stopped. This is mainly used internally +to ensure proper cleanup of internal data structures in test suites. + +MT safe. + + + + + + + a #GstTaskPool + + + + + + Dispose of the handle returned by gst_task_pool_push(). This does +not need to be called with the default implementation as the default +#GstTaskPoolClass::push implementation always returns %NULL. This does not need to be +called either when calling gst_task_pool_join(), but should be called +when joining is not necessary, but gst_task_pool_push() returned a +non-%NULL value. + +This method should only be called with the same @pool instance that provided +@id. + + + + + + + a #GstTaskPool + + + + the id + + + + + + Join a task and/or return it to the pool. @id is the id obtained from +gst_task_pool_push(). The default implementation does nothing, as the +default #GstTaskPoolClass::push implementation always returns %NULL. + +This method should only be called with the same @pool instance that provided +@id. + + + + + + + a #GstTaskPool + + + + the id + + + + + + Prepare the taskpool for accepting gst_task_pool_push() operations. + +MT safe. + + + + + + + a #GstTaskPool + + + + + + Start the execution of a new thread from @pool. + + + a pointer that should be used +for the gst_task_pool_join function. This pointer can be %NULL, you +must check @error to detect errors. If the pointer is not %NULL and +gst_task_pool_join() is not used, call gst_task_pool_dispose_handle() +instead. + + + + + a #GstTaskPool + + + + the function to call + + + + data to pass to @func + + + + + + Wait for all tasks to be stopped. This is mainly used internally +to ensure proper cleanup of internal data structures in test suites. + +MT safe. + + + + + + + a #GstTaskPool + + + + + + Dispose of the handle returned by gst_task_pool_push(). This does +not need to be called with the default implementation as the default +#GstTaskPoolClass::push implementation always returns %NULL. This does not need to be +called either when calling gst_task_pool_join(), but should be called +when joining is not necessary, but gst_task_pool_push() returned a +non-%NULL value. + +This method should only be called with the same @pool instance that provided +@id. + + + + + + + a #GstTaskPool + + + + the id + + + + + + Join a task and/or return it to the pool. @id is the id obtained from +gst_task_pool_push(). The default implementation does nothing, as the +default #GstTaskPoolClass::push implementation always returns %NULL. + +This method should only be called with the same @pool instance that provided +@id. + + + + + + + a #GstTaskPool + + + + the id + + + + + + Prepare the taskpool for accepting gst_task_pool_push() operations. + +MT safe. + + + + + + + a #GstTaskPool + + + + + + Start the execution of a new thread from @pool. + + + a pointer that should be used +for the gst_task_pool_join function. This pointer can be %NULL, you +must check @error to detect errors. If the pointer is not %NULL and +gst_task_pool_join() is not used, call gst_task_pool_dispose_handle() +instead. + + + + + a #GstTaskPool + + + + the function to call + + + + data to pass to @func + + + + + + + + + + + + + + + + + + The #GstTaskPoolClass object. + + + the parent class structure + + + + + + + + + + + a #GstTaskPool + + + + + + + + + + + + + + a #GstTaskPool + + + + + + + + + + a pointer that should be used +for the gst_task_pool_join function. This pointer can be %NULL, you +must check @error to detect errors. If the pointer is not %NULL and +gst_task_pool_join() is not used, call gst_task_pool_dispose_handle() +instead. + + + + + a #GstTaskPool + + + + the function to call + + + + data to pass to @func + + + + + + + + + + + + + + a #GstTaskPool + + + + the id + + + + + + + + + + + + + + a #GstTaskPool + + + + the id + + + + + + + + + + + + + Task function, see gst_task_pool_push(). + + + + + + + user data for the task function + + + + + + + + + The different states a task can be in + + the task is started and running + + + the task is stopped + + + the task is paused + + + + Custom GstTask thread callback functions that can be installed. + + + + + + + The #GstTask + + + + The #GThread + + + + user data + + + + + + Structure for storing a timestamp and a value. + + + timestamp of the value change + + + + the corresponding value + + + + + #GstToc functions are used to create/free #GstToc and #GstTocEntry structures. +Also they are used to convert #GstToc into #GstStructure and vice versa. + +#GstToc lets you to inform other elements in pipeline or application that playing +source has some kind of table of contents (TOC). These may be chapters, editions, +angles or other types. For example: DVD chapters, Matroska chapters or cue sheet +TOC. Such TOC will be useful for applications to display instead of just a +playlist. + +Using TOC is very easy. Firstly, create #GstToc structure which represents root +contents of the source. You can also attach TOC-specific tags to it. Then fill +it with #GstTocEntry entries by appending them to the #GstToc using +gst_toc_append_entry(), and appending subentries to a #GstTocEntry using +gst_toc_entry_append_sub_entry(). + +Note that root level of the TOC can contain only either editions or chapters. You +should not mix them together at the same level. Otherwise you will get serialization +/deserialization errors. Make sure that no one of the entries has negative start and + stop values. + +Use gst_event_new_toc() to create a new TOC #GstEvent, and gst_event_parse_toc() to +parse received TOC event. Use gst_event_new_toc_select() to create a new TOC select #GstEvent, +and gst_event_parse_toc_select() to parse received TOC select event. The same rule for +the #GstMessage: gst_message_new_toc() to create new TOC #GstMessage, and +gst_message_parse_toc() to parse received TOC message. + +TOCs can have global scope or current scope. Global scope TOCs contain +all entries that can possibly be selected using a toc select event, and +are what an application is usually interested in. TOCs with current scope +only contain the parts of the TOC relevant to the currently selected/playing +stream; the current scope TOC is used by downstream elements such as muxers +to write correct TOC entries when transcoding files, for example. When +playing a DVD, the global TOC would contain a hierarchy of all titles, +chapters and angles, for example, while the current TOC would only contain +the chapters for the currently playing title if playback of a specific +title was requested. + +Applications and plugins should not rely on TOCs having a certain kind of +structure, but should allow for different alternatives. For example, a +simple CUE sheet embedded in a file may be presented as a flat list of +track entries, or could have a top-level edition node (or some other +alternative type entry) with track entries underneath that node; or even +multiple top-level edition nodes (or some other alternative type entries) +each with track entries underneath, in case the source file has extracted +a track listing from different sources). + + + Create a new #GstToc structure. + + + newly allocated #GstToc structure, free it + with gst_toc_unref(). + + + + + scope of this TOC + + + + + + Appends the #GstTocEntry @entry to @toc. + + + + + + + A #GstToc instance + + + + A #GstTocEntry + + + + + + + + + + + + + + + + + Find #GstTocEntry with given @uid in the @toc. + + + #GstTocEntry with specified +@uid from the @toc, or %NULL if not found. + + + + + #GstToc to search in. + + + + UID to find #GstTocEntry with. + + + + + + Gets the list of #GstTocEntry of @toc. + + + A #GList of #GstTocEntry for @entry + + + + + + + A #GstToc instance + + + + + + + + scope of @toc + + + + + a #GstToc instance + + + + + + Gets the tags for @toc. + + + A #GstTagList for @entry + + + + + A #GstToc instance + + + + + + Merge @tags into the existing tags of @toc using @mode. + + + + + + + A #GstToc instance + + + + A #GstTagList or %NULL + + + + A #GstTagMergeMode + + + + + + Set a #GstTagList with tags for the complete @toc. + + + + + + + A #GstToc instance + + + + A #GstTagList or %NULL + + + + + + + + + Create new #GstTocEntry structure. + + + newly allocated #GstTocEntry structure, free it with gst_toc_entry_unref(). + + + + + entry type. + + + + unique ID (UID) in the whole TOC. + + + + + + Appends the #GstTocEntry @subentry to @entry. + + + + + + + A #GstTocEntry instance + + + + A #GstTocEntry + + + + + + + + @entry's entry type + + + + + a #GstTocEntry + + + + + + Get @loop_type and @repeat_count values from the @entry and write them into +appropriate storages. Loops are e.g. used by sampled instruments. GStreamer +is not automatically applying the loop. The application can process this +meta data and use it e.g. to send a seek-event to loop a section. + + + %TRUE if all non-%NULL storage pointers were filled with appropriate +values, %FALSE otherwise. + + + + + #GstTocEntry to get values from. + + + + the storage for the loop_type + value, leave %NULL if not need. + + + + the storage for the repeat_count + value, leave %NULL if not need. + + + + + + Gets the parent #GstTocEntry of @entry. + + + The parent #GstTocEntry of @entry + + + + + A #GstTocEntry instance + + + + + + Get @start and @stop values from the @entry and write them into appropriate +storages. + + + %TRUE if all non-%NULL storage pointers were filled with appropriate +values, %FALSE otherwise. + + + + + #GstTocEntry to get values from. + + + + the storage for the start value, leave + %NULL if not need. + + + + the storage for the stop value, leave + %NULL if not need. + + + + + + Gets the sub-entries of @entry. + + + A #GList of #GstTocEntry of @entry + + + + + + + A #GstTocEntry instance + + + + + + Gets the tags for @entry. + + + A #GstTagList for @entry + + + + + A #GstTocEntry instance + + + + + + Gets the parent #GstToc of @entry. + + + The parent #GstToc of @entry + + + + + A #GstTocEntry instance + + + + + + Gets the UID of @entry. + + + The UID of @entry + + + + + A #GstTocEntry instance + + + + + + + + %TRUE if @entry's type is an alternative type, otherwise %FALSE + + + + + a #GstTocEntry + + + + + + + + %TRUE if @entry's type is a sequence type, otherwise %FALSE + + + + + a #GstTocEntry + + + + + + Merge @tags into the existing tags of @entry using @mode. + + + + + + + A #GstTocEntry instance + + + + A #GstTagList or %NULL + + + + A #GstTagMergeMode + + + + + + Set @loop_type and @repeat_count values for the @entry. + + + + + + + #GstTocEntry to set values. + + + + loop_type value to set. + + + + repeat_count value to set. + + + + + + Set @start and @stop values for the @entry. + + + + + + + #GstTocEntry to set values. + + + + start value to set. + + + + stop value to set. + + + + + + Set a #GstTagList with tags for the complete @entry. + + + + + + + A #GstTocEntry instance + + + + A #GstTagList or %NULL + + + + + + + The different types of TOC entries (see #GstTocEntry). + +There are two types of TOC entries: alternatives or parts in a sequence. + + entry is an angle (i.e. an alternative) + + + entry is a version (i.e. alternative) + + + entry is an edition (i.e. alternative) + + + invalid entry type value + + + entry is a title (i.e. a part of a sequence) + + + entry is a track (i.e. a part of a sequence) + + + entry is a chapter (i.e. a part of a sequence) + + + Converts @type to a string representation. + + + Returns a human-readable string for @type. This string is + only for debugging purpose and should not be displayed in a user + interface. + + + + + a #GstTocEntryType. + + + + + + + How a #GstTocEntry should be repeated. By default, entries are played a +single time. + + single forward playback + + + repeat forward + + + repeat backward + + + repeat forward and backward + + + + The scope of a TOC. + + global TOC representing all selectable options + (this is what applications are usually interested in) + + + TOC for the currently active/selected stream + (this is a TOC representing the current stream from start to EOS, + and is what a TOC writer / muxer is usually interested in; it will + usually be a subset of the global TOC, e.g. just the chapters of + the current title, or the chapters selected for playback from the + current title) + + + + Element interface that allows setting of the TOC. + +Elements that support some kind of chapters or editions (or tracks like in +the FLAC cue sheet) will implement this interface. + +If you just want to retrieve the TOC in your application then all you +need to do is watch for TOC messages on your pipeline's bus (or you can +perform TOC query). This interface is only for setting TOC data, not for +extracting it. To set TOC from the application, find proper tocsetter element +and set TOC using gst_toc_setter_set_toc(). + +Elements implementing the #GstTocSetter interface can extend existing TOC +by getting extend UID for that (you can use gst_toc_find_entry() to retrieve it) +with any TOC entries received from downstream. + + + + Return current TOC the setter uses. The TOC should not be +modified without making it writable first. + + + TOC set, or %NULL. Unref with + gst_toc_unref() when no longer needed + + + + + a #GstTocSetter. + + + + + + Reset the internal TOC. Elements should call this from within the +state-change handler. + + + + + + + a #GstTocSetter. + + + + + + Set the given TOC on the setter. Previously set TOC will be +unreffed before setting a new one. + + + + + + + a #GstTocSetter. + + + + a #GstToc to set. + + + + + + + #GstTocSetterInterface interface. + + + parent interface type. + + + + + Tracing modules will subclass #GstTracer and register through +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Use gst_tracer_factory_get_list() to get a list of tracer factories known to +GStreamer. + + + Gets the list of all registered tracer factories. You must free the +list using gst_plugin_feature_list_free(). + +The returned factories are sorted by factory name. + +Free-function: gst_plugin_feature_list_free + + + the list of all + registered #GstTracerFactory. + + + + + + + Get the #GType for elements managed by this factory. The type can +only be retrieved if the element factory is loaded, which can be +assured with gst_plugin_feature_load(). + + + the #GType for tracers managed by this factory or 0 if +the factory is not loaded. + + + + + factory to get managed #GType from + + + + + + + + + + + + + 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(). +%NULL terminator required after the last argument. + +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- + + + + + + + + + + Flag that describe the value. These flags help applications processing the +logs to understand the values. + + no flags + + + the value is optional. When using this flag + one need to have an additional boolean arg before this value in the + var-args list passed to gst_tracer_record_log(). + + + the value is a combined figure, since the + start of tracing. Examples are averages or timestamps. + + + + Tracing record will contain fields that contain a measured value or extra +meta-data. One such meta data are values that tell where a measurement was +taken. This enumerating declares to which scope such a meta data field +relates to. If it is e.g. %GST_TRACER_VALUE_SCOPE_PAD, then each of the log +events may contain values for different #GstPads. + + the value is related to the process + + + the value is related to a thread + + + the value is related to an #GstElement + + + the value is related to a #GstPad + + + + The following functions allow you to detect the media type of an unknown +stream. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The data used by the caller of the typefinding function. + + + + + + + + + + + + + + + + + + + + + + Get the length of the data stream. + + + The length of the data stream, or 0 if it is not available. + + + + + The #GstTypeFind the function was called with + + + + + + Returns the @size bytes of the stream to identify beginning at offset. If +offset is a positive number, the offset is relative to the beginning of the +stream, if offset is a negative number the offset is relative to the end of +the stream. The returned memory is valid until the typefinding function +returns and must not be freed. + + + the + requested data, or %NULL if that data is not available. + + + + + The #GstTypeFind object the function was called with + + + + The offset + + + + The number of bytes to return + + + + + + If a #GstTypeFindFunction calls this function it suggests the caps with the +given probability. A #GstTypeFindFunction may supply different suggestions +in one call. +It is up to the caller of the #GstTypeFindFunction to interpret these values. + + + + + + + The #GstTypeFind object the function was called with + + + + The probability in percent that the suggestion is right + + + + The fixed #GstCaps to suggest + + + + + + If a #GstTypeFindFunction calls this function it suggests caps of the +given @media_type with the given @probability. + +This function is similar to gst_type_find_suggest_simple(), but uses +a #GstCaps with no fields. + + + + + + + The #GstTypeFind object the function was called with + + + + The probability in percent that the suggestion is right + + + + the media type of the suggested caps + + + + + + If a #GstTypeFindFunction calls this function it suggests the caps with the +given probability. A #GstTypeFindFunction may supply different suggestions +in one call. It is up to the caller of the #GstTypeFindFunction to interpret +these values. + +This function is similar to gst_type_find_suggest(), only that instead of +passing a #GstCaps argument you can create the caps on the fly in the same +way as you can with gst_caps_new_simple(). + +Make sure you terminate the list of arguments with a %NULL argument and that +the values passed have the correct type (in terms of width in bytes when +passed to the vararg function - this applies particularly to gdouble and +guint64 arguments). + + + + + + + The #GstTypeFind object the function was called with + + + + The probability in percent that the suggestion is right + + + + the media type of the suggested caps + + + + first field of the suggested caps, or %NULL + + + + additional arguments to the suggested caps in the same format as the + arguments passed to gst_structure_new() (ie. triplets of field name, + field GType and field value). If @fieldname is %NULL, this list + must be exactly one %NULL. + + + + + + Registers a new typefind function to be used for typefinding. After +registering this function will be available for typefinding. +This function is typically called during an element's plugin initialization. + + + %TRUE on success, %FALSE otherwise + + + + + A #GstPlugin, or %NULL for a static typefind function + + + + The name for registering + + + + The rank (or importance) of this typefind function + + + + The #GstTypeFindFunction to use + + + + Optional comma-separated list of extensions + that could belong to this type + + + + Optionally the caps that could be returned when typefinding + succeeds + + + + Optional user data. This user data must be available until the plugin + is unloaded. + + + + a #GDestroyNotify that will be called on @data when the plugin + is unloaded. + + + + + + + These functions allow querying information about registered typefind +functions. How to create and register these functions is described in +the section <link linkend="gstreamer-Writing-typefind-functions"> +"Writing typefind functions"</link>. + +The following example shows how to write a very simple typefinder that +identifies the given data. You can get quite a bit more complicated than +that though. +|[<!-- language="C" --> + typedef struct { + guint8 *data; + guint size; + guint probability; + GstCaps *data; + } MyTypeFind; + static void + my_peek (gpointer data, gint64 offset, guint size) + { + MyTypeFind *find = (MyTypeFind *) data; + if (offset >= 0 && offset + size <= find->size) { + return find->data + offset; + } + return NULL; + } + static void + my_suggest (gpointer data, guint probability, GstCaps *caps) + { + MyTypeFind *find = (MyTypeFind *) data; + if (probability > find->probability) { + find->probability = probability; + gst_caps_replace (&find->caps, caps); + } + } + static GstCaps * + find_type (guint8 *data, guint size) + { + GList *walk, *type_list; + MyTypeFind find = {data, size, 0, NULL}; + GstTypeFind gst_find = {my_peek, my_suggest, &find, }; + walk = type_list = gst_type_find_factory_get_list (); + while (walk) { + GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk->data); + walk = g_list_next (walk) + gst_type_find_factory_call_function (factory, &gst_find); + } + g_list_free (type_list); + return find.caps; + }; +]| + + + Gets the list of all registered typefind factories. You must free the +list using gst_plugin_feature_list_free(). + +The returned factories are sorted by highest rank first, and then by +factory name. + +Free-function: gst_plugin_feature_list_free + + + the list of all + registered #GstTypeFindFactory. + + + + + + + Calls the #GstTypeFindFunction associated with this factory. + + + + + + + A #GstTypeFindFactory + + + + a properly setup #GstTypeFind entry. The get_data + and suggest_type members must be set. + + + + + + Gets the #GstCaps associated with a typefind factory. + + + the #GstCaps associated with this factory + + + + + A #GstTypeFindFactory + + + + + + Gets the extensions associated with a #GstTypeFindFactory. The returned +array should not be changed. If you need to change stuff in it, you should +copy it using g_strdupv(). This function may return %NULL to indicate +a 0-length list. + + + + a %NULL-terminated array of extensions associated with this factory + + + + + + + A #GstTypeFindFactory + + + + + + Check whether the factory has a typefind function. Typefind factories +without typefind functions are a last-effort fallback mechanism to +e.g. assume a certain media type based on the file extension. + + + %TRUE if the factory has a typefind functions set, otherwise %FALSE + + + + + A #GstTypeFindFactory + + + + + + + + + + A function that will be called by typefinding. + + + + + + + A #GstTypeFind structure + + + + optional data to pass to the function + + + + + + The probability of the typefind function. Higher values have more certainty +in doing a reliable typefind. + + type undetected. + + + unlikely typefind. + + + possible type detected. + + + likely a type was detected. + + + nearly certain that a type was detected. + + + very certain a type was detected. + + + + + + + + + + + Different URI-related errors that can occur. + + The protocol is not supported + + + There was a problem with the URI + + + Could not set or change the URI because the + URI handler was in a state where that is not possible or not permitted + + + There was a problem with the entity that + the URI references + + + + + + + + + + The #GstURIHandler is an interface that is implemented by Source and Sink +#GstElement to unify handling of URI. + +An application can use the following functions to quickly get an element +that handles the given URI for reading or writing +(gst_element_make_from_uri()). + +Source and Sink plugins should implement this interface when possible. + + + Gets the currently handled URI. + + + the URI currently handled by + the @handler. Returns %NULL if there are no URI currently + handled. The returned string must be freed with g_free() when no + longer needed. + + + + + A #GstURIHandler + + + + + + Tries to set the URI of the given handler. + + + %TRUE if the URI was set successfully, else %FALSE. + + + + + A #GstURIHandler + + + + URI to set + + + + + + Gets the list of protocols supported by @handler. This list may not be +modified. + + + the + supported protocols. Returns %NULL if the @handler isn't + implemented properly, or the @handler doesn't support any + protocols. + + + + + + + A #GstURIHandler. + + + + + + Gets the currently handled URI. + + + the URI currently handled by + the @handler. Returns %NULL if there are no URI currently + handled. The returned string must be freed with g_free() when no + longer needed. + + + + + A #GstURIHandler + + + + + + Gets the type of the given URI handler + + + the #GstURIType of the URI handler. +Returns #GST_URI_UNKNOWN if the @handler isn't implemented correctly. + + + + + A #GstURIHandler. + + + + + + Tries to set the URI of the given handler. + + + %TRUE if the URI was set successfully, else %FALSE. + + + + + A #GstURIHandler + + + + URI to set + + + + + + + Any #GstElement using this interface should implement these methods. + + + The parent interface type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the URI currently handled by + the @handler. Returns %NULL if there are no URI currently + handled. The returned string must be freed with g_free() when no + longer needed. + + + + + A #GstURIHandler + + + + + + + + + + %TRUE if the URI was set successfully, else %FALSE. + + + + + A #GstURIHandler + + + + URI to set + + + + + + + + The different types of URI direction. + + The URI direction is unknown + + + The URI is a consumer. + + + The URI is a producer. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Value for #GstUri<!-- -->.port to indicate no port number. + + + + + Tests if the type direction is valid. + + + + A #GstURIType + + + + + Constant that defines one GStreamer microsecond. + + + + + A #GstUri object can be used to parse and split a URI string into its +constituent parts. Two #GstUri objects can be joined to make a new #GstUri +using the algorithm described in RFC3986. + + + Creates a new #GstUri object with the given URI parts. The path and query +strings will be broken down into their elements. All strings should not be +escaped except where indicated. + + + A new #GstUri object. + + + + + The scheme for the new URI. + + + + The user-info for the new URI. + + + + The host name for the new URI. + + + + The port number for the new URI or %GST_URI_NO_PORT. + + + + The path for the new URI with '/' separating path + elements. + + + + The query string for the new URI with '&' separating + query elements. Elements containing '&' characters + should encode them as "&percnt;26". + + + + The fragment name for the new URI. + + + + + + Append a path onto the end of the path in the URI. The path is not +normalized, call #gst_uri_normalize() to normalize the path. + + + %TRUE if the path was appended successfully. + + + + + The #GstUri to modify. + + + + Relative path to append to the end of the current path. + + + + + + Append a single path segment onto the end of the URI path. + + + %TRUE if the path was appended successfully. + + + + + The #GstUri to modify. + + + + The path segment string to append to the URI path. + + + + + + Create a new #GstUri object with the same data as this #GstUri object. +If @uri is %NULL then returns %NULL. + + + A new #GstUri object which is a copy of this + #GstUri or %NULL. + + + + + This #GstUri object. + + + + + + Compares two #GstUri objects to see if they represent the same normalized +URI. + + + %TRUE if the normalized versions of the two URI's would be equal. + + + + + First #GstUri to compare. + + + + Second #GstUri to compare. + + + + + + Like gst_uri_from_string() but also joins with a base URI. + + + A new #GstUri object. + + + + + The base URI to join the new URI with. + + + + The URI string to parse. + + + + + + Get the fragment name from the URI or %NULL if it doesn't exist. +If @uri is %NULL then returns %NULL. + + + The host name from the #GstUri object or %NULL. + + + + + This #GstUri object. + + + + + + Get the host name from the URI or %NULL if it doesn't exist. +If @uri is %NULL then returns %NULL. + + + The host name from the #GstUri object or %NULL. + + + + + This #GstUri object. + + + + + + Get the media fragment table from the URI, as defined by "Media Fragments URI 1.0". +Hash table returned by this API is a list of "key-value" pairs, and the each +pair is generated by splitting "URI fragment" per "&" sub-delims, then "key" +and "value" are split by "=" sub-delims. The "key" returned by this API may +be undefined keyword by standard. +A value may be %NULL to indicate that the key should appear in the fragment +string in the URI, but does not have a value. Free the returned #GHashTable +with #g_hash_table_unref() when it is no longer required. +Modifying this hash table does not affect the fragment in the URI. + +See more about Media Fragments URI 1.0 (W3C) at https://www.w3.org/TR/media-frags/ + + + The + fragment hash table from the URI. + + + + + + + + The #GstUri to get the fragment table from. + + + + + + Extract the path string from the URI object. + + + The path from the URI. Once finished + with the string should be g_free()'d. + + + + + The #GstUri to get the path from. + + + + + + Get a list of path segments from the URI. + + + A #GList of path segment + strings or %NULL if no path segments are available. Free the list + when no longer needed with g_list_free_full(list, g_free). + + + + + + + The #GstUri to get the path from. + + + + + + Extract the path string from the URI object as a percent encoded URI path. + + + The path from the URI. Once finished + with the string should be g_free()'d. + + + + + The #GstUri to get the path from. + + + + + + Get the port number from the URI or %GST_URI_NO_PORT if it doesn't exist. +If @uri is %NULL then returns %GST_URI_NO_PORT. + + + The port number from the #GstUri object or %GST_URI_NO_PORT. + + + + + This #GstUri object. + + + + + + Get a list of the query keys from the URI. + + + A list of keys from + the URI query. Free the list with g_list_free(). + + + + + + + The #GstUri to examine. + + + + + + Get a percent encoded URI query string from the @uri. + + + A percent encoded query string. Use + g_free() when no longer needed. + + + + + The #GstUri to get the query string from. + + + + + + Get a percent encoded URI query string from the @uri, with query parameters +in the order provided by the @keys list. Only parameter keys in the list will +be added to the resulting URI string. This method can be used by retrieving +the keys with gst_uri_get_query_keys() and then sorting the list, for +example. + + + A percent encoded query string. Use +g_free() when no longer needed. + + + + + The #GstUri to get the query string from. + + + + A GList containing the + query argument key strings. + + + + + + + + Get the query table from the URI. Keys and values in the table are freed +with g_free when they are deleted. A value may be %NULL to indicate that +the key should appear in the query string in the URI, but does not have a +value. Free the returned #GHashTable with #g_hash_table_unref() when it is +no longer required. Modifying this hash table will modify the query in the +URI. + + + The query + hash table from the URI. + + + + + + + + The #GstUri to get the query table from. + + + + + + Get the value associated with the @query_key key. Will return %NULL if the +key has no value or if the key does not exist in the URI query table. Because +%NULL is returned for both missing keys and keys with no value, you should +use gst_uri_query_has_key() to determine if a key is present in the URI +query. + + + The value for the given key, or %NULL if not found. + + + + + The #GstUri to examine. + + + + The key to lookup. + + + + + + Get the scheme name from the URI or %NULL if it doesn't exist. +If @uri is %NULL then returns %NULL. + + + The scheme from the #GstUri object or %NULL. + + + + + This #GstUri object. + + + + + + Get the userinfo (usually in the form "username:password") from the URI +or %NULL if it doesn't exist. If @uri is %NULL then returns %NULL. + + + The userinfo from the #GstUri object or %NULL. + + + + + This #GstUri object. + + + + + + Tests the @uri to see if it is normalized. A %NULL @uri is considered to be +normalized. + + + TRUE if the URI is normalized or is %NULL. + + + + + The #GstUri to test to see if it is normalized. + + + + + + Check if it is safe to write to this #GstUri. + +Check if the refcount of @uri is exactly 1, meaning that no other +reference exists to the #GstUri and that the #GstUri is therefore writable. + +Modification of a #GstUri should only be done after verifying that it is +writable. + + + %TRUE if it is safe to write to the object. + + + + + The #GstUri object to test. + + + + + + Join a reference URI onto a base URI using the method from RFC 3986. +If either URI is %NULL then the other URI will be returned with the ref count +increased. + + + A #GstUri which represents the base + with the reference URI joined on. + + + + + The base URI to join another to. + + + + The reference URI to join onto the + base URI. + + + + + + Make the #GstUri writable. + +Checks if @uri is writable, and if so the original object is returned. If +not, then a writable copy is made and returned. This gives away the +reference to @uri and returns a reference to the new #GstUri. +If @uri is %NULL then %NULL is returned. + + + A writable version of @uri. + + + + + The #GstUri object to make writable. + + + + + + Like gst_uri_new(), but joins the new URI onto a base URI. + + + The new URI joined onto @base. + + + + + The base URI to join the new URI to. + + + + The scheme for the new URI. + + + + The user-info for the new URI. + + + + The host name for the new URI. + + + + The port number for the new URI or %GST_URI_NO_PORT. + + + + The path for the new URI with '/' separating path + elements. + + + + The query string for the new URI with '&' separating + query elements. Elements containing '&' characters + should encode them as "&percnt;26". + + + + The fragment name for the new URI. + + + + + + Normalization will remove extra path segments ("." and "..") from the URI. It +will also convert the scheme and host name to lower case and any +percent-encoded values to uppercase. + +The #GstUri object must be writable. Check with gst_uri_is_writable() or use +gst_uri_make_writable() first. + + + TRUE if the URI was modified. + + + + + The #GstUri to normalize. + + + + + + Check if there is a query table entry for the @query_key key. + + + %TRUE if @query_key exists in the URI query table. + + + + + The #GstUri to examine. + + + + The key to lookup. + + + + + + Add a reference to this #GstUri object. See gst_mini_object_ref() for further +info. + + + This object with the reference count incremented. + + + + + This #GstUri object. + + + + + + Remove an entry from the query table by key. + + + %TRUE if the key existed in the table and was removed. + + + + + The #GstUri to modify. + + + + The key to remove. + + + + + + Sets the fragment string in the URI. Use a value of %NULL in @fragment to +unset the fragment string. + + + %TRUE if the fragment was set/unset successfully. + + + + + The #GstUri to modify. + + + + The fragment string to set. + + + + + + Set or unset the host for the URI. + + + %TRUE if the host was set/unset successfully. + + + + + The #GstUri to modify. + + + + The new host string to set or %NULL to unset. + + + + + + Sets or unsets the path in the URI. + + + %TRUE if the path was set successfully. + + + + + The #GstUri to modify. + + + + The new path to set with path segments separated by '/', or use %NULL + to unset the path. + + + + + + Replace the path segments list in the URI. + + + %TRUE if the path segments were set successfully. + + + + + The #GstUri to modify. + + + + The new + path list to set. + + + + + + + + Sets or unsets the path in the URI. + + + %TRUE if the path was set successfully. + + + + + The #GstUri to modify. + + + + The new percent encoded path to set with path segments separated by +'/', or use %NULL to unset the path. + + + + + + Set or unset the port number for the URI. + + + %TRUE if the port number was set/unset successfully. + + + + + The #GstUri to modify. + + + + The new port number to set or %GST_URI_NO_PORT to unset. + + + + + + Sets or unsets the query table in the URI. + + + %TRUE if the query table was set successfully. + + + + + The #GstUri to modify. + + + + The new percent encoded query string to use to populate the query + table, or use %NULL to unset the query table. + + + + + + Set the query table to use in the URI. The old table is unreferenced and a +reference to the new one is used instead. A value if %NULL for @query_table +will remove the query string from the URI. + + + %TRUE if the new table was successfully used for the query table. + + + + + The #GstUri to modify. + + + + The new + query table to use. + + + + + + + + + This inserts or replaces a key in the query table. A @query_value of %NULL +indicates that the key has no associated value, but will still be present in +the query string. + + + %TRUE if the query table was successfully updated. + + + + + The #GstUri to modify. + + + + The key for the query entry. + + + + The value for the key. + + + + + + Set or unset the scheme for the URI. + + + %TRUE if the scheme was set/unset successfully. + + + + + The #GstUri to modify. + + + + The new scheme to set or %NULL to unset the scheme. + + + + + + Set or unset the user information for the URI. + + + %TRUE if the user information was set/unset successfully. + + + + + The #GstUri to modify. + + + + The new user-information string to set or %NULL to unset. + + + + + + Convert the URI to a string. + +Returns the URI as held in this object as a #gchar* nul-terminated string. +The caller should g_free() the string once they are finished with it. +The string is put together as described in RFC 3986. + + + The string version of the URI. + + + + + This #GstUri to convert to a string. + + + + + + Convert the URI to a string, with the query arguments in a specific order. +Only the keys in the @keys list will be added to the resulting string. + +Returns the URI as held in this object as a #gchar* nul-terminated string. +The caller should g_free() the string once they are finished with it. +The string is put together as described in RFC 3986. + + + The string version of the URI. + + + + + This #GstUri to convert to a string. + + + + A GList containing + the query argument key strings. + + + + + + + + Decrement the reference count to this #GstUri object. + +If the reference count drops to 0 then finalize this object. + +See gst_mini_object_unref() for further info. + + + + + + + This #GstUri object. + + + + + + Constructs a URI for a given valid protocol and location. + +Free-function: g_free + Use GstURI instead. + + + a new string for this URI. + + + + + Protocol for URI + + + + Location for URI + + + + + + Parses a URI string into a new #GstUri object. Will return NULL if the URI +cannot be parsed. + + + A new #GstUri object, or NULL. + + + + + The URI string to parse. + + + + + + Parses a URI string into a new #GstUri object. Will return NULL if the URI +cannot be parsed. This is identical to gst_uri_from_string() except that +the userinfo and fragment components of the URI will not be unescaped while +parsing. + +Use this when you need to extract a username and password from the userinfo +such as https://user:password@example.com since either may contain +a URI-escaped ':' character. gst_uri_from_string() will unescape the entire +userinfo component, which will make it impossible to know which ':' +delineates the username and password. + +The same applies to the fragment component of the URI, such as +https://example.com/path#fragment which may contain a URI-escaped '#'. + + + A new #GstUri object, or NULL. + + + + + The URI string to parse. + + + + + + Extracts the location out of a given valid URI, ie. the protocol and "://" +are stripped from the URI, which means that the location returned includes +the hostname if one is specified. The returned string must be freed using +g_free(). + +Free-function: g_free + + + the location for this URI. Returns + %NULL if the URI isn't valid. If the URI does not contain a location, an + empty string is returned. + + + + + A URI string + + + + + + Extracts the protocol out of a given valid URI. The returned string must be +freed using g_free(). + + + The protocol for this URI. + + + + + A URI string + + + + + + Checks if the protocol of a given valid URI matches @protocol. + + + %TRUE if the protocol matches. + + + + + a URI string + + + + a protocol string (e.g. "http") + + + + + + Tests if the given string is a valid URI identifier. URIs start with a valid +scheme followed by ":" and maybe a string identifying the location. + + + %TRUE if the string is a valid URI + + + + + A URI string + + + + + + This is a convenience function to join two URI strings and return the result. +The returned string should be g_free()'d after use. + + + A string representing the percent-encoded join of + the two URIs. + + + + + The percent-encoded base URI. + + + + The percent-encoded reference URI to join to the @base_uri. + + + + + + Checks if an element exists that supports the given URI protocol. Note +that a positive return value does not imply that a subsequent call to +gst_element_make_from_uri() is guaranteed to work. + + + %TRUE + + + + + Whether to check for a source or a sink + + + + Protocol that should be checked for (e.g. "http" or "smb") + + + + + + Tests if the given string is a valid protocol identifier. Protocols +must consist of alphanumeric characters, '+', '-' and '.' and must +start with a alphabetic character. See RFC 3986 Section 3.1. + + + %TRUE if the string is a valid protocol identifier, %FALSE otherwise. + + + + + A string + + + + + + + Indicates that the first value provided to a comparison function +(gst_value_compare()) is equal to the second one. + + + + + Indicates that the first value provided to a comparison function +(gst_value_compare()) is greater than the second one. + + + + + Checks if the given #GValue contains a #GstValueArray value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstBitmask value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstBuffer value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstCaps value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstCapsFeatures value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstDateTime value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstDoubleRange value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstFlagSet value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstFraction value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstFractionRange value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstInt64Range value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstIntRange value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstValueList value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstSample value. + + + + the #GValue to check + + + + + Checks if the given #GValue contains a #GstStructure value. + + + + the #GValue to check + + + + + Indicates that the first value provided to a comparison function +(gst_value_compare()) is lesser than the second one. + + + + + Indicates that the comparison function (gst_value_compare()) can not +determine a order for the two provided values. + + + + + The major version of GStreamer at compile time: + + + + + 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-... + + + + + A fundamental type that describes an ordered list of #GValue + + Appends @append_value to the GstValueArray in @value. + + + + + + + a #GValue of type #GST_TYPE_ARRAY + + + + the value to append + + + + + + Appends @append_value to the GstValueArray in @value. + + + + + + + a #GValue of type #GST_TYPE_ARRAY + + + + the value to append + + + + + + Gets the number of values contained in @value. + + + the number of values + + + + + a #GValue of type #GST_TYPE_ARRAY + + + + + + Gets the value that is a member of the array contained in @value and +has the index @index. + + + the value at the given index + + + + + a #GValue of type #GST_TYPE_ARRAY + + + + index of value to get from the array + + + + + + Initializes and pre-allocates a #GValue of type #GST_TYPE_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. + + + + + + + a #GValue of type #GST_TYPE_ARRAY + + + + the value to prepend + + + + + + + Used together with gst_value_compare() to compare #GValue items. + + + one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN +or GST_VALUE_UNORDERED + + + + + first value for comparison + + + + second value for comparison + + + + + + Used by gst_value_deserialize() to parse a non-binary form into the #GValue. + + + %TRUE for success + + + + + a #GValue + + + + a string + + + + + + Used by gst_value_deserialize_with_pspec() to parse a non-binary form into the #GValue. + + + %TRUE for success + + + + + a #GValue + + + + a string + + + + a #GParamSpec describing the expected value + + + + + + A fundamental type that describes an unordered list of #GValue + + Appends @append_value to the GstValueList in @value. + + + + + + + a #GValue of type #GST_TYPE_LIST + + + + the value to append + + + + + + Appends @append_value to the GstValueList in @value. + + + + + + + a #GValue of type #GST_TYPE_LIST + + + + the value to append + + + + + + Concatenates copies of @value1 and @value2 into a list. Values that are not +of type #GST_TYPE_LIST are treated as if they were lists of length 1. +@dest will be initialized to the type #GST_TYPE_LIST. + + + + + + + an uninitialized #GValue to take the result + + + + a #GValue + + + + a #GValue + + + + + + Gets the number of values contained in @value. + + + the number of values + + + + + a #GValue of type #GST_TYPE_LIST + + + + + + Gets the value that is a member of the list contained in @value and +has the index @index. + + + the value at the given index + + + + + a #GValue of type #GST_TYPE_LIST + + + + index of value to get from the list + + + + + + Initializes and pre-allocates a #GValue of type #GST_TYPE_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. + +The result will be put into @dest and will either be a list that will not +contain any duplicates, or a non-list type (if @value1 and @value2 +were equal). + + + + + + + an uninitialized #GValue to take the result + + + + a #GValue + + + + a #GValue + + + + + + Prepends @prepend_value to the GstValueList in @value. + + + + + + + a #GValue of type #GST_TYPE_LIST + + + + the value to prepend + + + + + + + Used by gst_value_serialize() to obtain a non-binary form of the #GValue. + +Free-function: g_free + + + the string representation of the value + + + + + a #GValue + + + + + + VTable for the #GValue @type. + + + a #GType + + + + a #GstValueCompareFunc + + + + a #GstValueSerializeFunc + + + + a #GstValueDeserializeFunc + + + + a #GstValueDeserializeWithPSpecFunc + + + + + + + + + + Store a 16 bit unsigned integer value in big endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 16 bit unsigned integer value in little endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 24 bit unsigned integer value in big endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 24 bit unsigned integer value in little endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 32 bit unsigned integer value in big endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 32 bit unsigned integer value in little endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 64 bit unsigned integer value in big endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store a 64 bit unsigned integer value in little endian format into the memory buffer. + + + + memory location + + + value to store + + + + + Store an 8 bit unsigned integer value into the memory buffer. + + + + memory location + + + value to store + + + + + Gets the maximum amount of memory blocks that a buffer can hold. This is a +compile time constant that can be queried with the function. + +When more memory blocks are added, existing memory blocks will be merged +together to make room for the new block. + + + the maximum amount of memory blocks that a buffer can hold. + + + + + Finds and returns a #GstParentBufferMeta if one exists on the +buffer + + + + a #GstBuffer + + + + + + + + + + + + Tests if you can safely write to a buffer's metadata or its memory array. +It is only safe to change buffer metadata when the current reference is +writable, i.e. nobody can see the modifications you will make. + + + + a #GstBuffer + + + + + Append @b at the end of @l. + + + + a #GstBufferList + + + a #GstBuffer + + + + + Tests if you can safely add buffers and groups into a buffer list. + + + + a #GstBufferList + + + + + Makes a writable buffer list from the given buffer list. If the source buffer +list is already writable, this will simply return the same buffer list. A +copy will otherwise be made using gst_buffer_list_copy(). + + + + a #GstBufferList + + + + + Modifies a pointer to a #GstBufferList to point to a different +#GstBufferList. 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 list is unreffed, the new is reffed). + +Either @new_list or the #GstBufferList pointed to by @old_list may be %NULL. + + + %TRUE if @new_list was different from @old_list + + + + + pointer to a pointer to a + #GstBufferList to be replaced. + + + + pointer to a #GstBufferList that + will replace the buffer list pointed to by @old_list. + + + + + + Modifies a pointer to a #GstBufferList to point to a different +#GstBufferList. This function is similar to gst_buffer_list_replace() except +that it takes ownership of @new_list. + + + %TRUE if @new_list was different from @old_list + + + + + pointer to a pointer to a #GstBufferList + to be replaced. + + + + pointer to a #GstBufferList + that will replace the bufferlist pointed to by @old_list. + + + + + + Returns a writable copy of @buf. If the source buffer is +already writable, this will simply return the same buffer. + +Use this function to ensure that a buffer can be safely modified before +making changes to it, including changing the metadata such as PTS/DTS. + +If the reference count of the source buffer @buf is exactly one, the caller +is the sole owner and this function will return the buffer object unchanged. + +If there is more than one reference on the object, a copy will be made using +gst_buffer_copy(). The passed-in @buf will be unreffed in that case, and the +caller will now own a reference to the new returned buffer object. Note +that this just copies the buffer structure itself, the underlying memory is +not copied if it can be shared amongst multiple buffers. + +In short, this function unrefs the buf in the argument and refs the buffer +that it returns. Don't access the argument after calling this function unless +you have an additional reference to it. + + + + a #GstBuffer + + + + + + + + + + + + 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 + y(x) = m_num/m_denom * (x - xbase) + b +that has the least-square distance from all points @x and @y. + +@r_squared will contain the remaining error. + +If @temp is not %NULL, it will be used as temporary space for the function, +in which case the function works without any allocation at all. If @temp is +%NULL, an allocation will take place. @temp should have at least the same +amount of memory allocated as @xy, i.e. 2*n*sizeof(GstClockTime). + +> This function assumes (x,y) values with reasonable large differences +> between them. It will not calculate the exact results if the differences +> between neighbouring values are too small due to not being able to +> represent sub-integer values during the calculations. + + + %TRUE if the linear regression was successfully calculated + + + + + Pairs of (x,y) values + + + + Temporary scratch space used by the function + + + + number of (x,y) pairs + + + + numerator of calculated slope + + + + denominator of calculated slope + + + + Offset at Y-axis + + + + Offset at X-axis + + + + R-squared + + + + + + Creates a #GstCapsFeatures from a string representation. + + + a new #GstCapsFeatures or + %NULL when the string could not be parsed. + + + + + a string representation of a #GstCapsFeatures. + + + + + + Converts @caps from a string representation. + +The implementation of serialization up to 1.20 would lead to unexpected results +when there were nested #GstCaps / #GstStructure deeper than one level. + + + a newly allocated #GstCaps + + + + + a string to convert to #GstCaps + + + + + + Tests if you can safely modify @caps. It is only safe to modify caps when +there is only one owner of the caps - ie, the object is writable. + + + + a #GstCaps + + + + + Returns a writable copy of @caps. + +If there is only one reference count on @caps, the caller must be the owner, +and so this function will return the caps object unchanged. If on the other +hand there is more than one reference on the object, a new caps object will +be returned. The caller's reference on @caps will be removed, and instead the +caller will own a reference to the returned object. + +In short, this function unrefs the caps in the argument and refs the caps +that it returns. Don't access the argument after calling this function. See +also: gst_caps_ref(). + + + + a #GstCaps + + + + + 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 #GstBuffer. + +@buf_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the buffer is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstBuffer reference + + + + + + Clears a reference to a #GstBufferList. + +@list_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the list is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstBufferList reference + + + + + + Clears a reference to a #GstCaps. + +@caps_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the caps is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstCaps reference + + + + + + Clears a reference to a #GstEvent. + +@event_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the event is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstEvent reference + + + + + + Clears a reference to a #GstMessage. + +@msg_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the message is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstMessage reference + + + + + + Clears a reference to a #GstMiniObject. + +@object_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. +Otherwise, the reference count of the object is decreased using +gst_mini_object_unref() and the pointer is set to %NULL. + +A macro is also included that allows this function to be used without +pointer casts. + + + + + + + a pointer to a #GstMiniObject reference + + + + + + Clears a reference to a #GstObject. + +@object_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. +Otherwise, the reference count of the object is decreased using +gst_object_unref() and the pointer is set to %NULL. + +A macro is also included that allows this function to be used without +pointer casts. + + + + + + + a pointer to a #GstObject reference + + + + + + Clears a reference to a #GstQuery. + +@query_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the query is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstQuery reference + + + + + + Clears a reference to a #GstStructure. + +@structure_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. +Otherwise, the structure is free'd using gst_structure_free() and the +pointer is set to %NULL. + +A macro is also included that allows this function to be used without +pointer casts. + + + + + + + a pointer to a #GstStructure reference + + + + + + Clears a reference to a #GstTagList. + +@taglist_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the taglist is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstTagList reference + + + + + + Clears a reference to a #GstUri. + +@uri_ptr must not be %NULL. + +If the reference is %NULL then this function does nothing. Otherwise, the +reference count of the uri is decreased and the pointer is set to %NULL. + + + + + + + a pointer to a #GstUri reference + + + + + + Tests if you can safely write into a context's structure or validly +modify the seqnum and timestamp fields. + + + + a #GstContext + + + + + Checks if a context is writable. If not, a writable copy is made and +returned. + + + + the context to make writable + + + + + Modifies a pointer to a #GstContext to point to a different #GstContext. 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 +context is unreffed, the new one is reffed). + +Either @new_context or the #GstContext pointed to by @old_context may be %NULL. + + + %TRUE if @new_context was different from @old_context + + + + + pointer to a pointer to a #GstContext + to be replaced. + + + + pointer to a #GstContext that will + replace the context pointed to by @old_context. + + + + + + + + + + + + Adds the logging function to the list of logging functions. +Be sure to use #G_GNUC_NO_INSTRUMENT on that function, it is needed. + + + + + + + the function to use + + + + user data + + + + called when @user_data is not used anymore + + + + + + Adds a memory ringbuffer based debug logger that stores up to +@max_size_per_thread bytes of logs per thread and times out threads after +@thread_timeout seconds of inactivity. + +Logs can be fetched with gst_debug_ring_buffer_logger_get_logs() and the +logger can be removed again with gst_debug_remove_ring_buffer_logger(). +Only one logger at a time is possible. + + + + + + + Maximum size of log per thread in bytes + + + + Timeout for threads in seconds + + + + + + To aid debugging applications one can use this method to obtain the whole +network of gstreamer elements that form the pipeline into a dot file. +This data can be processed with graphviz to get an image. + + + a string containing the pipeline in graphviz +dot format. + + + + + the top-level pipeline that should be analyzed + + + + type of #GstDebugGraphDetails to use + + + + + + To aid debugging applications one can use this method to write out the whole +network of gstreamer elements that form the pipeline into a dot file. +This file can be processed with graphviz to get an image. + +``` shell + dot -Tpng -oimage.png graph_lowlevel.dot +``` + + + + + + + the top-level pipeline that should be analyzed + + + + type of #GstDebugGraphDetails to use + + + + output base filename (e.g. "myplayer") + + + + + + This works like gst_debug_bin_to_dot_file(), but adds the current timestamp +to the filename, so that it can be used to take multiple snapshots. + + + + + + + the top-level pipeline that should be analyzed + + + + type of #GstDebugGraphDetails to use + + + + output base filename (e.g. "myplayer") + + + + + + Constructs a string that can be used for getting the desired color in color +terminals. +You need to free the string after use. + + + a string containing the color + definition + + + + + the color info + + + + + + Constructs an integer that can be used for getting the desired color in +windows' terminals (cmd.exe). As there is no mean to underline, we simply +ignore this attribute. + +This function returns 0 on non-windows machines. + + + an integer containing the color definition + + + + + the color info + + + + + + Returns a snapshot of a all categories that are currently in use . This list +may change anytime. +The caller has to free the list after use. + + + the list of + debug categories + + + + + + + Changes the coloring mode for debug output. + + + see @GstDebugColorMode for possible values. + + + + + Returns the default threshold that is used for new categories. + + + the default threshold level + + + + + + + a stack trace, if libunwind or glibc backtrace are +present, else %NULL. + + + + + A set of #GstStackTraceFlags to determine how the stack trace should +look like. Pass #GST_STACK_TRACE_SHOW_NONE to retrieve a minimal backtrace. + + + + + + Checks if debugging output is activated. + + + %TRUE, if debugging is activated + + + + + Checks if the debugging output should be colored. + + + %TRUE, if the debug output should be colored. + + + + + Get the string representation of a debugging level + + + the name + + + + + the level to get the name for + + + + + + Logs the given message using the currently registered debugging handlers. + + + + + + + category to log + + + + level of the message is in + + + + 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 + + + + a printf style format string + + + + optional arguments for the format + + + + + + The default logging handler used by GStreamer. Logging functions get called +whenever a macro like GST_DEBUG or similar is used. By default this function +is setup to output the message and additional info to stderr (or the log file +specified via the GST_DEBUG_FILE environment variable) as received via +@user_data. + +You can add other handlers by using gst_debug_add_log_function(). +And you can remove this handler by calling +gst_debug_remove_log_function(gst_debug_log_default); + + + + + + + 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 + + + + the FILE* to log to + + + + + + 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. + + + + + + + category to log + + + + level of the message is in + + + + 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 identifier of the object this message + relates to, or %NULL if none. + + + + a printf style format string + + + + optional arguments for the format + + + + + + Logs the given message using the currently registered debugging handlers. + + + + + + + category to log + + + + level of the message is in + + + + 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 identifier of the object this message relates to + or %NULL if none + + + + a message string + + + + + + Logs the given message using the currently registered debugging handlers. + + + + + + + category to log + + + + level of the message is in + + + + 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 identifier of the object this message + relates to or %NULL if none. + + + + a printf style format string + + + + optional arguments for the format + + + + + + Logs the given message using the currently registered debugging handlers. + + + + + + + category to log + + + + level of the message is in + + + + 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 + + + + a message string + + + + + + Logs the given message using the currently registered debugging handlers. + + + + + + + category to log + + + + level of the message is in + + + + 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 + + + + a printf style format string + + + + optional arguments for the format + + + + + + If libunwind, glibc backtrace or DbgHelp are present +a stack trace is printed. + + + + + + + Removes all registered instances of the given logging functions. + + + How many instances of the function were removed + + + + + the log function to remove, or %NULL to + remove the default log function + + + + + + Removes all registered instances of log functions with the given user data. + + + How many instances of the function were removed + + + + + user data of the log function to remove + + + + + + Removes any previously added ring buffer logger with +gst_debug_add_ring_buffer_logger(). + + + + + + + Fetches the current logs per thread from the ring buffer logger. See +gst_debug_add_ring_buffer_logger() for details. + + + NULL-terminated array of +strings with the debug output per thread + + + + + + + If activated, debugging messages are sent to the debugging +handlers. +It makes sense to deactivate it for speed issues. +> This function is not threadsafe. It makes sense to only call it +during initialization. + + + + + + + Whether to use debugging output or not + + + + + + Changes the coloring mode for debug output. + +This function may be called before gst_init(). + + + + + + + The coloring mode for debug output. See @GstDebugColorMode. + + + + + + Changes the coloring mode for debug output. + +This function may be called before gst_init(). + + + + + + + The coloring mode for debug output. One of the following: +"on", "auto", "off", "disable", "unix". + + + + + + Sets or unsets the use of coloured debugging output. +Same as gst_debug_set_color_mode () with the argument being +being GST_DEBUG_COLOR_MODE_ON or GST_DEBUG_COLOR_MODE_OFF. + +This function may be called before gst_init(). + + + + + + + Whether to use colored output or not + + + + + + Sets the default threshold to the given level and updates all categories to +use this threshold. + +This function may be called before gst_init(). + + + + + + + level to set + + + + + + Sets all categories which match the given glob style pattern to the given +level. + + + + + + + name of the categories to set + + + + level to set them to + + + + + + Sets the debug logging wanted in the same form as with the GST_DEBUG +environment variable. You can use wildcards such as '*', but note that +the order matters when you use wild cards, e.g. "foosrc:6,*src:3,*:2" sets +everything to log level 2. + + + + + + + comma-separated list of "category:level" pairs to be used + as debug logging levels + + + + %TRUE to clear all previously-set debug levels before setting + new thresholds +%FALSE if adding the threshold described by @list to the one already set. + + + + + + Resets all categories with the given name back to the default level. + + + + + + + name of the categories to set + + + + + + Clean up any resources created by GStreamer in gst_init(). + +It is normally not needed to call this function in a normal application +as the resources will automatically be freed when the program terminates. +This function is therefore mostly used by testsuites and other memory +profiling tools. + +After this call 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns a copy of the name of @elem. +Caller should g_free() the return value after usage. +For a nameless element, this returns %NULL, which you can safely g_free() +as well. + + + + a #GstElement to get the name of @elem. + + + + + Get the parent of an element. + + + + a #GstElement to get the parent of. + + + + + Sets the name of the element, getting rid of the old name if there was one. + + + + a #GstElement to set the name of. + + + the new name + + + + + Sets the parent of an element. + + + + a #GstElement to set the parent of. + + + the new parent #GstObject of the element. + + + + + Get a string describing the error message in the current locale. + + + a newly allocated string describing + the error message (in UTF-8 encoding) + + + + + the GStreamer error domain this error belongs to. + + + + the error code belonging to the domain. + + + + + + Tests if you can safely write data into a event's structure or validly +modify the seqnum and timestamp field. + + + + a #GstEvent + + + + + Makes a writable event from the given event. If the source event is +already writable, this will simply return the same event. A copy will +otherwise be made using gst_event_copy(). + + + + a #GstEvent + + + + + 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. + + + a #GstEventTypeFlags. + + + + + a #GstEventType + + + + + + Get a printable name for the given event type. Do not modify or free. + + + a reference to the static name of the event. + + + + + the event type + + + + + + Get the unique quark for the given event type. + + + the quark associated with the event type + + + + + the event type + + + + + + Converts the #GstEventType to an unsigned integer that +represents the ordering of sticky events when re-sending them. +A lower value represents a higher-priority event. + + + an unsigned integer + + + + + a #GstEventType + + + + + + Similar to g_filename_to_uri(), but attempts to handle relative file paths +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. + + + newly-allocated URI string, or NULL on error. The caller must + free the URI string with g_free() when no longer needed. + + + + + absolute or relative file name path + + + + + + Gets a string representing the given flow return. + + + a static string with the name of the flow return. + + + + + a #GstFlowReturn to get the name of. + + + + + + Get the unique quark for the given GstFlowReturn. + + + the quark associated with the flow return or 0 if an +invalid return was specified. + + + + + a #GstFlowReturn to get the quark of. + + + + + + Return the format registered with the given nick. + + + The format with @nick or GST_FORMAT_UNDEFINED +if the format was not registered. + + + + + The nick of the format + + + + + + Get details about the given format. + + + The #GstFormatDefinition for @format or %NULL +on failure. + +MT safe. + + + + + The format to get details of + + + + + + Get a printable name for the given format. Do not modify or free. + + + a reference to the static name of the format +or %NULL if the format is unknown. + + + + + a #GstFormat + + + + + + Iterate all the registered formats. The format definition is read +only. + + + a GstIterator of #GstFormatDefinition. + + + + + Create a new GstFormat based on the nick or return an +already registered format with that nick. + + + A new GstFormat or an already registered format +with the same nick. + +MT safe. + + + + + The nick of the new format + + + + The description of the new format + + + + + + Get the unique quark for the given format. + + + the quark associated with the format or 0 if the format +is unknown. + + + + + a #GstFormat + + + + + + See if the given format is inside the format array. + + + %TRUE if the format is found inside the array + + + + + The format array to search + + + + + + the format to find + + + + + + Convert @value to a guint64. + + + + the #gdouble value to convert + + + + + This helper is mostly helpful for plugins that need to +inspect the folder of the main executable to determine +their set of features. + +When a plugin is initialized from the gst-plugin-scanner +external process, the returned path will be the same as from the +parent process. + + + The path of the executable that + initialized GStreamer, or %NULL if it could not be determined. + + + + + Convert @value to a gdouble. + + + + the #guint64 value to convert + + + + + Allocates, fills and returns a 0-terminated string from the printf style +@format string and corresponding arguments. + +See gst_info_vasprintf() for when this function is required. + +Free with g_free(). + + + a newly allocated null terminated string or %NULL on any error + + + + + a printf style format string + + + + the printf arguments for @format + + + + + + Allocates, fills and returns a null terminated string from the printf style +@format string and @args. + +See gst_info_vasprintf() for when this function is required. + +Free with g_free(). + + + a newly allocated null terminated string or %NULL on any error + + + + + a printf style format string + + + + the va_list of printf arguments for @format + + + + + + Allocates and fills a string large enough (including the terminating null +byte) to hold the specified printf style @format and @args. + +This function deals with the GStreamer specific printf specifiers +#GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. If you do not have these specifiers +in your @format string, you do not need to use this function and can use +alternatives such as g_vasprintf(). + +Free @result with g_free(). + + + the length of the string allocated into @result or -1 on any error + + + + + the resulting string + + + + a printf style format string + + + + the va_list of printf arguments for @format + + + + + + Initializes the GStreamer library, setting up internal path lists, +registering built-in elements, and loading standard plugins. + +Unless the plugin registry is disabled at compile time, the registry will be +loaded. By default this will also check if the registry cache needs to be +updated and rescan all plugins if needed. See gst_update_registry() for +details and section +<link linkend="gst-running">Running GStreamer Applications</link> +for how to disable automatic registry updates. + +WARNING: This function will terminate your program if it was unable to +initialize GStreamer for some reason. If you want your program to fall back, +use gst_init_check() instead. + + + + + + + pointer to application's argc + + + + pointer to application's argv + + + + + + + + Initializes the GStreamer library, setting up internal path lists, +registering built-in elements, and loading standard plugins. + +This function will return %FALSE if GStreamer could not be initialized +for some reason. If you want your program to fail fatally, +use gst_init() instead. + + + %TRUE if GStreamer could be initialized. + + + + + pointer to application's argc + + + + pointer to application's argv + + + + + + + + Returns a #GOptionGroup with GStreamer's argument specifications. The +group is set up to use standard GOption callbacks, so when using this +group in combination with GOption parsing methods, all argument parsing +and initialization is automated. + +This function is useful if you want to integrate GStreamer with other +libraries that use GOption (see g_option_context_add_group() ). + +If you use this function, you should make sure you initialise the GLib +threading system as one of the very first things in your program +(see the example at the beginning of this section). + + + a pointer to GStreamer's option group. + + + + + Checks if @obj is a #GstCapsFeatures + + + %TRUE if @obj is a #GstCapsFeatures %FALSE otherwise + + + + + + + + + + Use this function to check if GStreamer has been initialized with gst_init() +or gst_init_check(). + + + %TRUE if initialization has been done, %FALSE otherwise. + + + + + + + + + + + Create a #GstStructure to be used with #gst_element_message_full_with_details. +%NULL terminator required. + + + + + + + Name of the first field to set + + + + variable arguments in the same form as #GstStructure + + + + + + + + + + + + + + + + + + + + + + Returns a writable copy of @m. If the source memory is +already writable, this will simply return the same memory. + + + + a #GstMemory + + + + + + + + + + + + + + Tests if you can safely write into a message's structure or validly +modify the seqnum and timestamp fields. + + + + a #GstMessage + + + + + Checks if a message is writable. If not, a writable copy is made and +returned. + + + + the message to make writable + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + Modifies a pointer to a #GstMessage to point to a different #GstMessage. This +function is similar to gst_message_replace() except that it takes ownership +of @new_message. + + + %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. + + + a reference to the static name of the message. + + + + + the message type + + + + + + Get the unique quark for the given message type. + + + the quark associated with the message type + + + + + the message type + + + + + + + + an array of tags as strings. + + + + + + + an API + + + + + + Check if @api was registered with @tag. + + + %TRUE if @api was registered with @tag. + + + + + an API + + + + the tag to check + + + + + + Register and return a GType for the @api and associate it with +@tags. + + + a unique GType for @api. + + + + + an API to register + + + + tags for @api + + + + + + + + Lookup a previously registered meta info structure by its implementation name +@impl. + + + a #GstMetaInfo with @impl, or +%NULL when no such metainfo exists. + + + + + the name + + + + + + Register a new #GstMeta implementation. + +The same @info can be retrieved later with gst_meta_get_info() by using +@impl as the key. + + + a #GstMetaInfo that can be used to +access metadata. + + + + + the type of the #GstMeta API + + + + the name of the #GstMeta implementation + + + + the size of the #GstMeta structure + + + + a #GstMetaInitFunction + + + + a #GstMetaFreeFunction + + + + a #GstMetaTransformFunction + + + + + + Register a new custom #GstMeta implementation, backed by an opaque +structure holding a #GstStructure. + +The registered info can be retrieved later with gst_meta_get_info() by using +@name as the key. + +The backing #GstStructure can be retrieved with +gst_custom_meta_get_structure(), its mutability is conditioned by the +writability of the buffer the meta is attached to. + +When @transform_func is %NULL, the meta and its backing #GstStructure +will always be copied when the transform operation is copy, other operations +are discarded, copy regions are ignored. + + + a #GstMetaInfo that can be used to +access metadata. + + + + + the name of the #GstMeta implementation + + + + tags for @api + + + + + + a #GstMetaTransformFunction + + + + user data passed to @transform_func + + + + #GDestroyNotify for user_data + + + + + + Atomically modifies a pointer to point to a new mini-object. +The reference count of @olddata is decreased and the reference count of +@newdata is increased. + +Either @newdata and the value pointed to by @olddata may be %NULL. + + + %TRUE if @newdata was different from @olddata + + + + + pointer to a pointer to a + mini-object to be replaced + + + + pointer to new mini-object + + + + + + Replace the current #GstMiniObject pointer to by @olddata with %NULL and +return the old value. + + + the #GstMiniObject at @oldata + + + + + pointer to a pointer to a mini-object to + be stolen + + + + + + Modifies a pointer to point to a new mini-object. The modification +is done atomically. This version is similar to gst_mini_object_replace() +except that it does not increase the refcount of @newdata and thus +takes ownership of @newdata. + +Either @newdata and the value pointed to by @olddata may be %NULL. + + + %TRUE if @newdata was different from @olddata + + + + + pointer to a pointer to a mini-object to + be replaced + + + + pointer to new mini-object + + + + + + + + + + + + + Get a copy of the name of the pad. g_free() after usage. + +MT safe. + + + + the pad to get the name from + + + + + Get the parent of @pad. This function increases the refcount +of the parent object so you should gst_object_unref() it after usage. +Can return %NULL if the pad did not have a parent. + +MT safe. + + + + the pad to get the parent of + + + + + Return the name of a pad mode, for use in debug messages mostly. + + + short mnemonic for pad mode @mode + + + + + the pad mode + + + + + + + + + + + + + Calls gst_pad_set_activate_function_full() with %NULL for the user_data and +notify. + + + + a #GstPad. + + + the #GstPadActivateFunction to set. + + + + + Calls gst_pad_set_activatemode_function_full() with %NULL for the user_data and +notify. + + + + a #GstPad. + + + the #GstPadActivateModeFunction to set. + + + + + Calls gst_pad_set_chain_function_full() with %NULL for the user_data and +notify. + + + + a sink #GstPad. + + + the #GstPadChainFunction to set. + + + + + Calls gst_pad_set_chain_list_function_full() with %NULL for the user_data and +notify. + + + + a sink #GstPad. + + + the #GstPadChainListFunction to set. + + + + + Calls gst_pad_set_event_full_function_full() with %NULL for the user_data and +notify. + + + + a #GstPad of either direction. + + + the #GstPadEventFullFunction to set. + + + + + Calls gst_pad_set_event_function_full() with %NULL for the user_data and +notify. + + + + a #GstPad of either direction. + + + the #GstPadEventFunction to set. + + + + + Calls gst_pad_set_getrange_function_full() with %NULL for the user_data and +notify. + + + + a source #GstPad. + + + the #GstPadGetRangeFunction to set. + + + + + Calls gst_pad_set_iterate_internal_links_function_full() with %NULL +for the user_data and notify. + + + + a #GstPad of either direction. + + + the #GstPadIterIntLinkFunction to set. + + + + + Calls gst_pad_set_link_function_full() with %NULL +for the user_data and notify. + + + + a #GstPad. + + + the #GstPadLinkFunction to set. + + + + + Calls gst_pad_set_query_function_full() with %NULL for the user_data and +notify. + + + + a #GstPad of either direction. + + + the #GstPadQueryFunction to set. + + + + + Calls gst_pad_set_unlink_function_full() with %NULL +for the user_data and notify. + + + + a #GstPad. + + + the #GstPadUnlinkFunction to set. + + + + + This function creates a GstArray GParamSpec for use by objects/elements +that want to expose properties of GstArray type. This function is +typically * used in connection with g_object_class_install_property() in a +GObjects's instance_init function. + + + a newly created parameter specification + + + + + canonical name of the property specified + + + + nick name for the property specified + + + + description of the property specified + + + + GParamSpec of the array + + + + flags for the property specified + + + + + + This function creates a fraction GParamSpec for use by objects/elements +that want to expose properties of fraction type. This function is typically +used in connection with g_object_class_install_property() in a GObjects's +instance_init function. + + + a newly created parameter specification + + + + + canonical name of the property specified + + + + nick name for the property specified + + + + description of the property specified + + + + minimum value (fraction numerator) + + + + minimum value (fraction denominator) + + + + maximum value (fraction numerator) + + + + maximum value (fraction denominator) + + + + default value (fraction numerator) + + + + default value (fraction denominator) + + + + flags for the property specified + + + + + + + + + + + + + Gets the global #GstMetaInfo describing the #GstParentBufferMeta meta. + + + The #GstMetaInfo + + + + + This is a convenience wrapper around gst_parse_launch() to create a +#GstBin from a gst-launch-style pipeline description. See +gst_parse_launch() and the gst-launch man page for details about the +syntax. Ghost pads on the bin for unlinked source or sink pads +within the bin can automatically be created (but only a maximum of +one ghost pad for each direction will be created; if you expect +multiple unlinked source pads or multiple unlinked sink pads +and want them all ghosted, you will have to create the ghost pads +yourself). + + + a + newly-created bin, or %NULL if an error occurred. + + + + + command line describing the bin + + + + whether to automatically create ghost pads + for unlinked source or sink pads within the bin + + + + + + This is a convenience wrapper around gst_parse_launch() to create a +#GstBin from a gst-launch-style pipeline description. See +gst_parse_launch() and the gst-launch man page for details about the +syntax. Ghost pads on the bin for unlinked source or sink pads +within the bin can automatically be created (but only a maximum of +one ghost pad for each direction will be created; if you expect +multiple unlinked source pads or multiple unlinked sink pads +and want them all ghosted, you will have to create the ghost pads +yourself). + + + a newly-created + element, which is guaranteed to be a bin unless + #GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS was passed, or %NULL if an error + occurred. + + + + + command line describing the bin + + + + whether to automatically create ghost pads + for unlinked source or sink pads within the bin + + + + a parse context allocated with + gst_parse_context_new(), or %NULL + + + + parsing options, or #GST_PARSE_FLAG_NONE + + + + + + Get the error quark used by the parsing subsystem. + + the quark of the parse errors. + + + + + 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. + +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 + failure. If more than one toplevel element is specified by the + @pipeline_description, all elements are put into a #GstPipeline, which + than is returned. + + + + + the command line describing 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. + +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 + failure. If more than one toplevel element is specified by the + @pipeline_description, all elements are put into a #GstPipeline, which + then is returned (unless the GST_PARSE_FLAG_PLACE_IN_BIN flag is set, in + which case they are put in a #GstBin instead). + + + + + the command line describing the pipeline + + + + a parse context allocated with + gst_parse_context_new(), or %NULL + + + + parsing options, or #GST_PARSE_FLAG_NONE + + + + + + Create a new element based on command line syntax. +@error will contain an error message if an erroneous pipeline is specified. +An error does not mean that the pipeline could not be constructed. + + + a new element on success and %NULL +on failure. + + + + + null-terminated array of arguments + + + + + + + + Create a new element based on command line syntax. +@error will contain an error message if an erroneous pipeline is specified. +An error does not mean that the pipeline could not be constructed. + + + a new element on success; on + failure, either %NULL or a partially-constructed bin or element will be + returned and @error will be set (unless you passed + #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will always be returned + on failure) + + + + + null-terminated array of arguments + + + + + + a parse context allocated with + gst_parse_context_new(), or %NULL + + + + parsing options, or #GST_PARSE_FLAG_NONE + + + + + + Get the error quark. + + The error quark used in GError messages + + + + + Returns the name of @feature. +For a nameless plugin feature, this returns %NULL. + + + + a #GstPluginFeature to get the name of @feature. + + + + + Sets the name of the plugin feature, getting rid of the old name if there was one. + + + + a #GstPluginFeature to set the name of. + + + the new name + + + + + Create a new file descriptor set. If @controllable, it +is possible to restart or flush a call to gst_poll_wait() with +gst_poll_restart() and gst_poll_set_flushing() respectively. + +Free-function: gst_poll_free + + + a new #GstPoll, or %NULL in + case of an error. Free with gst_poll_free(). + + + + + whether it should be possible to control a wait. + + + + + + Create a new poll object that can be used for scheduling cancellable +timeouts. + +A timeout is performed with gst_poll_wait(). Multiple timeouts can be +performed from different threads. + +Free-function: gst_poll_free + + + a new #GstPoll, or %NULL in + case of an error. Free with gst_poll_free(). + + + + + Gets the directory for application specific presets if set by the +application. + + + the directory or %NULL, don't free or modify +the string + + + + + Sets an extra directory as an absolute path that should be considered when +looking for presets. Any presets in the application dir will shadow the +system presets. + + + %TRUE for success, %FALSE if the dir already has been set + + + + + the application specific preset dir + + + + + + Outputs a formatted message via the GLib print handler. The default print +handler simply outputs the message to stdout. + +This function will not append a new-line character at the end, unlike +gst_println() which will. + +All strings must be in ASCII or UTF-8 encoding. + +This function differs from g_print() in that it supports all the additional +printf specifiers that are supported by GStreamer's debug logging system, +such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. + +This function is primarily for printing debug output. + + + + + + + a printf style format string + + + + the printf arguments for @format + + + + + + Outputs a formatted message via the GLib error message handler. The default +handler simply outputs the message to stderr. + +This function will not append a new-line character at the end, unlike +gst_printerrln() which will. + +All strings must be in ASCII or UTF-8 encoding. + +This function differs from g_printerr() in that it supports the additional +printf specifiers that are supported by GStreamer's debug logging system, +such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. + +This function is primarily for printing debug output. + + + + + + + a printf style format string + + + + the printf arguments for @format + + + + + + Outputs a formatted message via the GLib error message handler. The default +handler simply outputs the message to stderr. + +This function will append a new-line character at the end, unlike +gst_printerr() which will not. + +All strings must be in ASCII or UTF-8 encoding. + +This function differs from g_printerr() in that it supports the additional +printf specifiers that are supported by GStreamer's debug logging system, +such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. + +This function is primarily for printing debug output. + + + + + + + a printf style format string + + + + the printf arguments for @format + + + + + + Outputs a formatted message via the GLib print handler. The default print +handler simply outputs the message to stdout. + +This function will append a new-line character at the end, unlike +gst_print() which will not. + +All strings must be in ASCII or UTF-8 encoding. + +This function differs from g_print() in that it supports all the additional +printf specifiers that are supported by GStreamer's debug logging system, +such as #GST_PTR_FORMAT and #GST_SEGMENT_FORMAT. + +This function is primarily for printing debug output. + + + + + + + a printf style format string + + + + the printf arguments for @format + + + + + + Iterates the supplied list of UUIDs and checks the GstRegistry for +all the decryptors supporting one of the supplied UUIDs. + + + +A null terminated array containing all +the @system_identifiers supported by the set of available decryptors, or +%NULL if no matches were found. + + + + + + + +A null terminated array of strings that contains the UUID values of each +protection system that is to be checked. + + + + + + + + + + + + + + + + + + + + + Iterates the supplied list of UUIDs and checks the GstRegistry for +an element that supports one of the supplied UUIDs. If more than one +element matches, the system ID of the highest ranked element is selected. + + + One of the strings from +@system_identifiers that indicates the highest ranked element that +implements the protection system indicated by that system ID, or %NULL if no +element has been found. + + + + + A null terminated array of strings +that contains the UUID values of each protection system that is to be +checked. + + + + + + + + Tests if you can safely write data into a query's structure. + + + + a #GstQuery + + + + + Makes a writable query from the given query. + + + + a #GstQuery to make writable + + + + + 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. + + + + + + Modifies a pointer to a #GstQuery to point to a different #GstQuery. This +function is similar to gst_query_replace() except that it takes ownership of +@new_query. + +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 stolen. + + + + pointer to a #GstQuery that will + replace the query pointed to by @old_query. + + + + + + Gets the #GstQueryTypeFlags associated with @type. + + + a #GstQueryTypeFlags. + + + + + a #GstQueryType + + + + + + Get a printable name for the given query type. Do not modify or free. + + + a reference to the static name of the query. + + + + + the query type + + + + + + Get the unique quark for the given query type. + + + the quark associated with the query type + + + + + the query type + + + + + + + + + + + + + Gets the global #GstMetaInfo describing the #GstReferenceTimestampMeta meta. + + + The #GstMetaInfo + + + + + + + + + + + Tests if you can safely set the buffer and / or buffer list of @sample. + + + + A #GstSample + + + + + Returns a writable copy of @sample. If the source sample is +already writable, this will simply return the same sample. + +Use this function to ensure that a sample can be safely modified before +making changes to it, for example before calling gst_sample_set_buffer() + +If the reference count of the source sample @sample is exactly one, the caller +is the sole owner and this function will return the sample object unchanged. + +If there is more than one reference on the object, a copy will be made using +gst_sample_copy(). The passed-in @sample will be unreffed in that case, and the +caller will now own a reference to the new returned sample object. + +In short, this function unrefs the sample in the argument and refs the sample +that it returns. Don't access the argument after calling this function unless +you have an additional reference to it. + + + + A #GstSample + + + + + Some functions in the GStreamer core might install a custom SIGSEGV handler +to better catch and report errors to the application. Currently this feature +is enabled by default when loading plugins. + +Applications might want to disable this behaviour with the +gst_segtrap_set_enabled() function. This is typically done if the application +wants to install its own handler without GStreamer interfering. + + + %TRUE if GStreamer is allowed to install a custom SIGSEGV handler. + + + + + Applications might want to disable/enable the SIGSEGV handling of +the GStreamer core. See gst_segtrap_is_enabled() for more information. + + + + + + + whether a custom SIGSEGV handler should be installed. + + + + + + Gets a string representing the given state transition. + + + a string with the name of the state + result. + + + + + a #GstStateChange to get the name of. + + + + + + + + + + + + + + + + + + + + + + + + + + Get a descriptive string for a given #GstStreamType + + + A string describing the stream type + + + + + a #GstStreamType + + + + + + 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. + +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. + + + %TRUE if @newstr was different from @oldstr_ptr + + + + + pointer to a place of + a #GstStructure to take + + + + a new #GstStructure + + + + + + Checks if the given type is already registered. + + + %TRUE if the type is already registered + + + + + name of the tag + + + + + + Returns the human-readable description of this tag, You must not change or +free this string. + + + the human-readable description of this tag + + + + + the tag + + + + + + Gets the flag of @tag. + + + the flag of this tag. + + + + + the tag + + + + + + Returns the human-readable name of this tag, You must not change or free +this string. + + + the human-readable name of this tag + + + + + the tag + + + + + + Gets the #GType used for this tag. + + + the #GType of this tag + + + + + the tag + + + + + + Checks if the given tag is fixed. A fixed tag can only contain one value. +Unfixed tags can contain lists of values. + + + %TRUE, if the given tag is fixed. + + + + + tag to check + + + + + + Copies the contents for the given tag into the value, +merging multiple values into one if multiple values are associated +with the tag. +You must g_value_unset() the value after use. + + + %TRUE, if a value was copied, %FALSE if the tag didn't exist in the + given list. + + + + + uninitialized #GValue to copy into + + + + list to get the tag from + + + + tag to read out + + + + + + + + + + + + + Tests if you can safely modify @taglist. It is only safe to modify taglist +when there is only one owner of the taglist - ie, the refcount is 1. + + + + a #GstTagList + + + + + Returns a writable copy of @taglist. + +If there is only one reference count on @taglist, the caller must be the +owner, and so this function will return the taglist object unchanged. If on +the other hand there is more than one reference on the object, a new taglist +object will be returned (which will be a copy of @taglist). The caller's +reference on @taglist will be removed, and instead the caller will own a +reference to the returned object. + +In short, this function unrefs the taglist in the argument and refs the +taglist that it returns. Don't access the argument after calling this +function. See also: gst_tag_list_ref(). + + + + a #GstTagList + + + + + Modifies a pointer to a #GstTagList to point to a different #GstTagList. 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 tag list is unreffed, the new is reffed). + +Either @new_taglist or the #GstTagList pointed to by @old_taglist may be +%NULL. + + + %TRUE if @new_taglist was different from @old_taglist + + + + + pointer to a pointer to a + #GstTagList to be replaced. + + + + pointer to a #GstTagList that + will replace the tag list pointed to by @old_taglist. + + + + + + Modifies a pointer to a #GstTagList to point to a different #GstTagList. +This function is similar to gst_tag_list_replace() except that it takes +ownership of @new_taglist. + + + %TRUE if @new_taglist was different from @old_taglist + + + + + pointer to a pointer to a #GstTagList + to be replaced. + + + + pointer to a #GstTagList that + will replace the taglist pointed to by @old_taglist. + + + + + + This is a convenience function for the func argument of gst_tag_register(). +It concatenates all given strings using a comma. The tag must be registered +as a G_TYPE_STRING or this function will fail. + + + + + + + uninitialized GValue to store result in + + + + GValue to copy from + + + + + + This is a convenience function for the func argument of gst_tag_register(). +It creates a copy of the first value from the list. + + + + + + + uninitialized GValue to store result in + + + + GValue to copy from + + + + + + Registers a new tag type for the use with GStreamer's type system. If a type +with that name is already registered, that one is used. +The old registration may have used a different type however. So don't rely +on your supplied values. + +Important: if you do not supply a merge function the implication will be +that there can only be one single value for this tag in a tag list and +any additional values will silently be discarded when being added (unless +#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or +#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new +value will replace the old one in the list). + +The merge function will be called from gst_tag_list_copy_value() when +it is required that one or more values for a tag be condensed into +one single value. This may happen from gst_tag_list_get_string(), +gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen +exactly in that case depends on how the tag was registered and if a +merge function was supplied and if so which one. + +Two default merge functions are provided: gst_tag_merge_use_first() and +gst_tag_merge_strings_with_comma(). + + + + + + + the name or identifier string + + + + a flag describing the type of tag info + + + + the type this data is in + + + + human-readable name + + + + a human-readable description about this tag + + + + function for merging multiple values of this tag, or %NULL + + + + + + Registers a new tag type for the use with GStreamer's type system. + +Same as gst_tag_register(), but @name, @nick, and @blurb must be +static strings or inlined strings, as they will not be copied. (GStreamer +plugins will be made resident once loaded, so this function can be used +even from dynamically loaded plugins.) + + + + + + + the name or identifier string (string constant) + + + + a flag describing the type of tag info + + + + the type this data is in + + + + human-readable name or short description (string constant) + + + + a human-readable description for this tag (string constant) + + + + function for merging multiple values of this tag, or %NULL + + + + + + Copy #GstToc with all subentries (deep copy). + + + + #GstToc to copy. + + + + + Copy #GstTocEntry with all subentries (deep copy). + + + + #GstTocEntry to copy. + + + + + + + + + + + + + + + + + + + Converts @type to a string representation. + + + Returns a human-readable string for @type. This string is + only for debugging purpose and should not be displayed in a user + interface. + + + + + a #GstTocEntryType. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + Registers a new typefind function to be used for typefinding. After +registering this function will be available for typefinding. +This function is typically called during an element's plugin initialization. + + + %TRUE on success, %FALSE otherwise + + + + + A #GstPlugin, or %NULL for a static typefind function + + + + The name for registering + + + + The rank (or importance) of this typefind function + + + + The #GstTypeFindFunction to use + + + + Optional comma-separated list of extensions + that could belong to this type + + + + Optionally the caps that could be returned when typefinding + succeeds + + + + Optional user data. This user data must be available until the plugin + is unloaded. + + + + a #GDestroyNotify that will be called on @data when the plugin + is unloaded. + + + + + + Checks if @type is plugin API. See gst_type_mark_as_plugin_api() for +details. + + + %TRUE if @type is plugin API or %FALSE otherwise. + + + + + a GType + + + + What #GstPluginAPIFlags the plugin was marked with + + + + + + Marks @type as plugin API. This should be called in `class_init` of +elements that expose new types (i.e. enums, flags or internal GObjects) via +properties, signals or pad templates. + +Types exposed by plugins are not automatically added to the documentation +as they might originate from another library and should in that case be +documented via that library instead. + +By marking a type as plugin API it will be included in the documentation of +the plugin that defines it. + + + + + + + a GType + + + + a set of #GstPluginAPIFlags to further inform cache generation. + + + + + + Forces GStreamer to re-scan its plugin paths and update the default +plugin registry. + +Applications will almost never need to call this function, it is only +useful if the application knows new plugins have been installed (or old +ones removed) since the start of the application (or, to be precise, the +first call to gst_init()) and the application wants to make use of any +newly-installed plugins without restarting the application. + +Applications should assume that the registry update is neither atomic nor +thread-safe and should therefore not have any dynamic pipelines running +(including the playbin and decodebin elements) and should also not create +any elements or access the GStreamer registry while the update is in +progress. + +Note that this function may block for a significant amount of time. + + + %TRUE if the registry has been updated successfully (does not + imply that there were changes), otherwise %FALSE. + + + + + Constructs a URI for a given valid protocol and location. + +Free-function: g_free + Use GstURI instead. + + + a new string for this URI. + + + + + Protocol for URI + + + + Location for URI + + + + + + + + + + + + Parses a URI string into a new #GstUri object. Will return NULL if the URI +cannot be parsed. + + + A new #GstUri object, or NULL. + + + + + The URI string to parse. + + + + + + Parses a URI string into a new #GstUri object. Will return NULL if the URI +cannot be parsed. This is identical to gst_uri_from_string() except that +the userinfo and fragment components of the URI will not be unescaped while +parsing. + +Use this when you need to extract a username and password from the userinfo +such as https://user:password@example.com since either may contain +a URI-escaped ':' character. gst_uri_from_string() will unescape the entire +userinfo component, which will make it impossible to know which ':' +delineates the username and password. + +The same applies to the fragment component of the URI, such as +https://example.com/path#fragment which may contain a URI-escaped '#'. + + + A new #GstUri object, or NULL. + + + + + The URI string to parse. + + + + + + Extracts the location out of a given valid URI, ie. the protocol and "://" +are stripped from the URI, which means that the location returned includes +the hostname if one is specified. The returned string must be freed using +g_free(). + +Free-function: g_free + + + the location for this URI. Returns + %NULL if the URI isn't valid. If the URI does not contain a location, an + empty string is returned. + + + + + A URI string + + + + + + Extracts the protocol out of a given valid URI. The returned string must be +freed using g_free(). + + + The protocol for this URI. + + + + + A URI string + + + + + + Checks if the protocol of a given valid URI matches @protocol. + + + %TRUE if the protocol matches. + + + + + a URI string + + + + a protocol string (e.g. "http") + + + + + + Tests if the given string is a valid URI identifier. URIs start with a valid +scheme followed by ":" and maybe a string identifying the location. + + + %TRUE if the string is a valid URI + + + + + A URI string + + + + + + This is a convenience function to join two URI strings and return the result. +The returned string should be g_free()'d after use. + + + A string representing the percent-encoded join of + the two URIs. + + + + + The percent-encoded base URI. + + + + The percent-encoded reference URI to join to the @base_uri. + + + + + + Checks if an element exists that supports the given URI protocol. Note +that a positive return value does not imply that a subsequent call to +gst_element_make_from_uri() is guaranteed to work. + + + %TRUE + + + + + Whether to check for a source or a sink + + + + Protocol that should be checked for (e.g. "http" or "smb") + + + + + + Tests if the given string is a valid protocol identifier. Protocols +must consist of alphanumeric characters, '+', '-' and '.' and must +start with a alphabetic character. See RFC 3986 Section 3.1. + + + %TRUE if the string is a valid protocol identifier, %FALSE otherwise. + + + + + A string + + + + + + Searches inside @array for @search_data by using the comparison function +@search_func. @array must be sorted ascending. + +As @search_data is always passed as second argument to @search_func it's +not required that @search_data has the same type as the array elements. + +The complexity of this search function is O(log (num_elements)). + + + The address of the found +element or %NULL if nothing was found + + + + + the sorted input array + + + + number of elements in the array + + + + size of every element in bytes + + + + function to compare two elements, @search_data will always be passed as second argument + + + + search mode that should be used + + + + element that should be found + + + + data to pass to @search_func + + + + + + Transforms a #gdouble to a fraction and simplifies +the result. + + + + + + + #gdouble to transform + + + + pointer to a #gint to hold the result numerator + + + + pointer to a #gint to hold the result denominator + + + + + + Dumps the buffer memory into a hex representation. Useful for debugging. + + + + + + + a #GstBuffer whose memory to dump + + + + + + Dumps the memory block into a hex representation. Useful for debugging. + + + + + + + a pointer to the memory to dump + + + + + + the size of the memory block to dump + + + + + + Adds the fractions @a_n/@a_d and @b_n/@b_d and stores +the result in @res_n and @res_d. + + + %FALSE on overflow, %TRUE otherwise. + + + + + Numerator of first value + + + + Denominator of first value + + + + Numerator of second value + + + + Denominator of second value + + + + Pointer to #gint to hold the result numerator + + + + Pointer to #gint to hold the result denominator + + + + + + Compares the fractions @a_n/@a_d and @b_n/@b_d and returns +-1 if a < b, 0 if a = b and 1 if a > b. + + + -1 if a < b; 0 if a = b; 1 if a > b. + + + + + Numerator of first value + + + + Denominator of first value + + + + Numerator of second value + + + + Denominator of second value + + + + + + Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores +the result in @res_n and @res_d. + + + %FALSE on overflow, %TRUE otherwise. + + + + + Numerator of first value + + + + Denominator of first value + + + + Numerator of second value + + + + Denominator of second value + + + + Pointer to #gint to hold the result numerator + + + + Pointer to #gint to hold the result denominator + + + + + + Transforms a fraction to a #gdouble. + + + + + + + Fraction numerator as #gint + + + + Fraction denominator #gint + + + + pointer to a #gdouble for the result + + + + + + + + @value casted to #guint64 + + + + + The #gdouble value to convert guint64 double + + + + + + Get a property of type %GST_TYPE_ARRAY and transform it into a +#GValueArray. This allow language bindings to get GST_TYPE_ARRAY +properties which are otherwise not an accessible type. + + + + + + + the object to set the array to + + + + the name of the property to set + + + + a return #GValueArray + + + + + + Get a timestamp as GstClockTime to be used for interval measurements. +The timestamp should not be interpreted in any other way. + + + the timestamp + + + + + Calculates the greatest common divisor of @a +and @b. + + + Greatest common divisor of @a and @b + + + + + First value as #gint + + + + Second value as #gint + + + + + + Calculates the greatest common divisor of @a +and @b. + + + Greatest common divisor of @a and @b + + + + + First value as #gint64 + + + + Second value as #gint64 + + + + + + Return a constantly incrementing group id. + +This function is used to generate a new group-id for the +stream-start event. + +This function never returns %GST_GROUP_ID_INVALID (which is 0) + + + A constantly incrementing unsigned integer, which might +overflow back to 0 at some point. + + + + + + + @value casted to #gdouble + + + + + The #guint64 value to convert to double + + + + + + Compare two sequence numbers, handling wraparound. + +The current implementation just returns (gint32)(@s1 - @s2). + + + A negative number if @s1 is before @s2, 0 if they are equal, or a +positive number if @s1 is after @s2. + + + + + A sequence number. + + + + Another sequence number. + + + + + + Return a constantly incrementing sequence number. + +This function is used internally to GStreamer to be able to determine which +events and messages are "the same". For example, elements may set the seqnum +on a segment-done message to be the same as that of the last seek event, to +indicate that event and the message correspond to the same segment. + +This function never returns %GST_SEQNUM_INVALID (which is 0). + + + A constantly incrementing 32-bit unsigned integer, which might +overflow at some point. Use gst_util_seqnum_compare() to make sure +you handle wraparound correctly. + + + + + Converts the string value to the type of the objects argument and +sets the argument with it. + +Note that this function silently returns if @object has no property named +@name or when @value cannot be converted to the type of the property. + + + + + + + the object to set the argument of + + + + the name of the argument to set + + + + the string value to set + + + + + + Transfer a #GValueArray to %GST_TYPE_ARRAY and set this value on the +specified property name. This allow language bindings to set GST_TYPE_ARRAY +properties which are otherwise not an accessible type. + + + + + + + the object to set the array to + + + + the name of the property to set + + + + a #GValueArray containing the values + + + + + + Converts the string to the type of the value and +sets the value with it. + +Note that this function is dangerous as it does not return any indication +if the conversion worked or not. + + + + + + + the value to set + + + + the string to get the value from + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. + +This function can potentially be very slow if val and num are both +greater than G_MAXUINT32. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer it is truncated. See also +gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(), +gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(), +gst_util_uint64_scale_int_ceil(). + + + + + the number to scale + + + + the numerator of the scale ratio + + + + the denominator of the scale ratio + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. + +This function can potentially be very slow if val and num are both +greater than G_MAXUINT32. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer, it is rounded up. See also +gst_util_uint64_scale(), gst_util_uint64_scale_round(), +gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(), +gst_util_uint64_scale_int_ceil(). + + + + + the number to scale + + + + the numerator of the scale ratio + + + + the denominator of the scale ratio + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. @num must be non-negative and +@denom must be positive. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer, it is truncated. See also +gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(), +gst_util_uint64_scale(), gst_util_uint64_scale_round(), +gst_util_uint64_scale_ceil(). + + + + + guint64 (such as a #GstClockTime) to scale. + + + + numerator of the scale factor. + + + + denominator of the scale factor. + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. @num must be non-negative and +@denom must be positive. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer, it is rounded up. See also +gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(), +gst_util_uint64_scale(), gst_util_uint64_scale_round(), +gst_util_uint64_scale_ceil(). + + + + + guint64 (such as a #GstClockTime) to scale. + + + + numerator of the scale factor. + + + + denominator of the scale factor. + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. @num must be non-negative and +@denom must be positive. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer, it is rounded to the nearest integer +(half-way cases are rounded up). See also gst_util_uint64_scale_int(), +gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(), +gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(). + + + + + guint64 (such as a #GstClockTime) to scale. + + + + numerator of the scale factor. + + + + denominator of the scale factor. + + + + + + Scale @val by the rational number @num / @denom, avoiding overflows and +underflows and without loss of precision. + +This function can potentially be very slow if val and num are both +greater than G_MAXUINT32. + + + @val * @num / @denom. In the case of an overflow, this +function returns G_MAXUINT64. If the result is not exactly +representable as an integer, it is rounded to the nearest integer +(half-way cases are rounded up). See also gst_util_uint64_scale(), +gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(), +gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(). + + + + + the number to scale + + + + the numerator of the scale ratio + + + + the denominator of the scale ratio + + + + + + Determines if @value1 and @value2 can be compared. + + + %TRUE if the values can be compared + + + + + a value to compare + + + + another value to compare + + + + + + Determines if intersecting two values will produce a valid result. +Two values will produce a valid intersection if they have the same +type. + + + %TRUE if the values can intersect + + + + + a value to intersect + + + + another value to intersect + + + + + + Checks if it's possible to subtract @subtrahend from @minuend. + + + %TRUE if a subtraction is possible + + + + + the value to subtract from + + + + the value to subtract + + + + + + Determines if @value1 and @value2 can be non-trivially unioned. +Any two values can be trivially unioned by adding both of them +to a GstValueList. However, certain types have the possibility +to be unioned in a simpler way. For example, an integer range +and an integer can be unioned if the integer is a subset of the +integer range. If there is the possibility that two values can +be unioned, this function returns %TRUE. + + + %TRUE if there is a function allowing the two values to +be unioned. + + + + + a value to union + + + + another value to union + + + + + + Compares @value1 and @value2. If @value1 and @value2 cannot be +compared, the function returns GST_VALUE_UNORDERED. Otherwise, +if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned. +If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned. +If the values are equal, GST_VALUE_EQUAL is returned. + + + comparison result + + + + + a value to compare + + + + another value to compare + + + + + + Tries to deserialize a string into the type specified by the given GValue. +If the operation succeeds, %TRUE is returned, %FALSE otherwise. + + + %TRUE on success + + + + + #GValue to fill with contents of + deserialization + + + + string to deserialize + + + + + + Tries to deserialize a string into the type specified by the given GValue. +@pspec may be used to guide the deserializing of nested members. +If the operation succeeds, %TRUE is returned, %FALSE otherwise. + + + %TRUE on success + + + + + #GValue to fill with contents of + deserialization + + + + string to deserialize + + + + the #GParamSpec describing the expected value + + + + + + Fixate @src into a new value @dest. +For ranges, the first element is taken. For lists and arrays, the +first item is fixated and returned. +If @src is already fixed, this function returns %FALSE. + + + %TRUE if @dest contains a fixated version of @src. + + + + + the #GValue destination + + + + the #GValue to fixate + + + + + + Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets +@product to the product of the two fractions. + + + %FALSE in case of an error (like integer overflow), %TRUE otherwise. + + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + + + Subtracts the @subtrahend from the @minuend and sets @dest to the result. + + + %FALSE in case of an error (like integer overflow), %TRUE otherwise. + + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + + + Gets the bitmask specified by @value. + + + the bitmask. + + + + + a GValue initialized to #GST_TYPE_BITMASK + + + + + + Receives a #GstBuffer as the value of @v. Does not return a reference to +the buffer, so the pointer is only valid for as long as the caller owns +a reference to @v. + + + + a #GValue to query + + + + + Gets the contents of @value. The reference count of the returned +#GstCaps will not be modified, therefore the caller must take one +before getting rid of the @value. + + + the contents of @value + + + + + a GValue initialized to GST_TYPE_CAPS + + + + + + Gets the contents of @value. + + + the contents of @value + + + + + a GValue initialized to GST_TYPE_CAPS_FEATURES + + + + + + Gets the maximum of the range specified by @value. + + + the maximum of the range + + + + + a GValue initialized to GST_TYPE_DOUBLE_RANGE + + + + + + Gets the minimum of the range specified by @value. + + + the minimum of the range + + + + + a GValue initialized to GST_TYPE_DOUBLE_RANGE + + + + + + Retrieve the flags field of a GstFlagSet @value. + + + the flags field of the flagset instance. + + + + + a GValue initialized to #GST_TYPE_FLAG_SET + + + + + + Retrieve the mask field of a GstFlagSet @value. + + + the mask field of the flagset instance. + + + + + a GValue initialized to #GST_TYPE_FLAG_SET + + + + + + Gets the denominator of the fraction specified by @value. + + + the denominator of the fraction. + + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + + + Gets the numerator of the fraction specified by @value. + + + the numerator of the fraction. + + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + + + Gets the maximum of the range specified by @value. + + + the maximum of the range + + + + + a GValue initialized to GST_TYPE_FRACTION_RANGE + + + + + + Gets the minimum of the range specified by @value. + + + the minimum of the range + + + + + a GValue initialized to GST_TYPE_FRACTION_RANGE + + + + + + Gets the maximum of the range specified by @value. + + + the maximum of the range + + + + + a GValue initialized to GST_TYPE_INT64_RANGE + + + + + + Gets the minimum of the range specified by @value. + + + the minimum of the range + + + + + a GValue initialized to GST_TYPE_INT64_RANGE + + + + + + Gets the step of the range specified by @value. + + + the step of the range + + + + + a GValue initialized to GST_TYPE_INT64_RANGE + + + + + + Gets the maximum of the range specified by @value. + + + the maximum of the range + + + + + a GValue initialized to GST_TYPE_INT_RANGE + + + + + + Gets the minimum of the range specified by @value. + + + the minimum of the range + + + + + a GValue initialized to GST_TYPE_INT_RANGE + + + + + + Gets the step of the range specified by @value. + + + the step of the range + + + + + a GValue initialized to GST_TYPE_INT_RANGE + + + + + + Receives a #GstSample as the value of @v. Does not return a reference to +the sample, so the pointer is only valid for as long as the caller owns +a reference to @v. + + + + a #GValue to query + + + + + Gets the contents of @value. + + + the contents of @value + + + + + a GValue initialized to GST_TYPE_STRUCTURE + + + + + + Initialises the target value to be of the same type as source and then copies +the contents from source to target. + + + + + + + the target value + + + + the source value + + + + + + Calculates the intersection of two values. If the values have +a non-empty intersection, the value representing the intersection +is placed in @dest, unless %NULL. If the intersection is non-empty, +@dest is not modified. + + + %TRUE if the intersection is non-empty + + + + + + a uninitialized #GValue that will hold the calculated + intersection value. May be %NULL if the resulting set if not + needed. + + + + a value to intersect + + + + another value to intersect + + + + + + Tests if the given GValue, if available in a GstStructure (or any other +container) contains a "fixed" (which means: one value) or an "unfixed" +(which means: multiple possible values, such as data lists or data +ranges) value. + + + true if the value is "fixed". + + + + + the #GValue to check + + + + + + Check that @value1 is a subset of @value2. + + + %TRUE is @value1 is a subset of @value2 + + + + + a #GValue + + + + a #GValue + + + + + + Registers functions to perform calculations on #GValue items of a given +type. Each type can only be added once. + + + + + + + structure containing functions to register + + + + + + tries to transform the given @value into a string representation that allows +getting back this string later on using gst_value_deserialize(). + +Free-function: g_free + + + the serialization for @value +or %NULL if none exists + + + + + a #GValue to serialize + + + + + + Sets @value to the bitmask specified by @bitmask. + + + + + + + a GValue initialized to #GST_TYPE_BITMASK + + + + the bitmask + + + + + + Sets @b as the value of @v. Caller retains reference to buffer. + + + + a #GValue to receive the data + + + a #GstBuffer to assign to the GstValue + + + + + Sets the contents of @value to @caps. A reference to the +provided @caps will be taken by the @value. + + + + + + + a GValue initialized to GST_TYPE_CAPS + + + + the caps to set the value to + + + + + + Sets the contents of @value to @features. + + + + + + + a GValue initialized to GST_TYPE_CAPS_FEATURES + + + + the features to set the value to + + + + + + Sets @value to the range specified by @start and @end. + + + + + + + a GValue initialized to GST_TYPE_DOUBLE_RANGE + + + + the start of the range + + + + the end of the range + + + + + + Sets @value to the flags and mask values provided in @flags and @mask. +The @flags value indicates the values of flags, the @mask represents +which bits in the flag value have been set, and which are "don't care" + + + + + + + a GValue initialized to %GST_TYPE_FLAG_SET + + + + The value of the flags set or unset + + + + The mask indicate which flags bits must match for comparisons + + + + + + Sets @value to the fraction specified by @numerator over @denominator. +The fraction gets reduced to the smallest numerator and denominator, +and if necessary the sign is moved to the numerator. + + + + + + + a GValue initialized to #GST_TYPE_FRACTION + + + + the numerator of the fraction + + + + the denominator of the fraction + + + + + + Sets @value to the range specified by @start and @end. + + + + + + + a GValue initialized to GST_TYPE_FRACTION_RANGE + + + + the start of the range (a GST_TYPE_FRACTION GValue) + + + + the end of the range (a GST_TYPE_FRACTION GValue) + + + + + + Sets @value to the range specified by @numerator_start/@denominator_start +and @numerator_end/@denominator_end. + + + + + + + a GValue initialized to GST_TYPE_FRACTION_RANGE + + + + the numerator start of the range + + + + the denominator start of the range + + + + the numerator end of the range + + + + the denominator end of the range + + + + + + Sets @value to the range specified by @start and @end. + + + + + + + a GValue initialized to GST_TYPE_INT64_RANGE + + + + the start of the range + + + + the end of the range + + + + + + Sets @value to the range specified by @start, @end and @step. + + + + + + + a GValue initialized to GST_TYPE_INT64_RANGE + + + + the start of the range + + + + the end of the range + + + + the step of the range + + + + + + Sets @value to the range specified by @start and @end. + + + + + + + a GValue initialized to GST_TYPE_INT_RANGE + + + + the start of the range + + + + the end of the range + + + + + + Sets @value to the range specified by @start, @end and @step. + + + + + + + a GValue initialized to GST_TYPE_INT_RANGE + + + + the start of the range + + + + the end of the range + + + + the step of the range + + + + + + Sets @b as the value of @v. Caller retains reference to sample. + + + + a #GValue to receive the data + + + a #GstSample to assign to the GstValue + + + + + Sets the contents of @value to @structure. + + + + + + + a GValue initialized to GST_TYPE_STRUCTURE + + + + the structure to set the value to + + + + + + Subtracts @subtrahend from @minuend and stores the result in @dest. +Note that this means subtraction as in sets, not as in mathematics. + + + %TRUE if the subtraction is not empty + + + + + the destination value + for the result if the subtraction is not empty. May be %NULL, + in which case the resulting set will not be computed, which can + give a fair speedup. + + + + the value to subtract from + + + + the value to subtract + + + + + + Sets @b as the value of @v. Caller gives away reference to buffer. + + + + a #GValue to receive the data + + + a #GstBuffer to assign to the GstValue + + + + + Sets @b as the value of @v. Caller gives away reference to sample. + + + + a #GValue to receive the data + + + a #GstSample to assign to the GstValue + + + + + Creates a GValue corresponding to the union of @value1 and @value2. + + + %TRUE if the union succeeded. + + + + + the destination value + + + + a value to union + + + + another value to union + + + + + + Gets the version number of the GStreamer library. + + + + + + + pointer to a guint to store the major version number + + + + pointer to a guint to store the minor version number + + + + pointer to a guint to store the micro version number + + + + pointer to a guint to store the nano version number + + + + + + This function returns a string that is useful for describing this version +of GStreamer to the outside world: user agent strings, logging, ... + + + a newly allocated string describing this version + of GStreamer. + + + + + diff --git a/girs/GstAllocators-1.0.gir b/girs/GstAllocators-1.0.gir new file mode 100644 index 0000000000..f1b8b2ef08 --- /dev/null +++ b/girs/GstAllocators-1.0.gir @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + Constant that defines the caps feature name for DMA buffer sharing. + +It has to be used for non-mappable dma-buf only, i.e. when the underlying +memory is not mappable to user space. Or when the mapped memory contains +non meaningful data. It can be the case for protected content or when the +user wants explicitly avoid any software post processing. + +In these cases all elements between the exported and the importer has to work +in passthrough mode. This is done by adding this caps feature. + +When the memory is mappable for read and write requests then it is assumes +to be a fast path and so this caps feature should not be used. Though +according to the dma-buf protocol, while it is mapped it prevents the +exporter to migrate the buffer. + +This caps feature should not serve at all the purpose of selecting the +@GST_ALLOCATOR_DMABUF allocator during caps negotiation. +When the exporter is the upstream element from the importer point of view, +the exporter should try to map the dma buffer at runtime (preferably during +decide_allocation phase). When it succeeds for #GST_MAP_READWRITE this caps +feature should not be used. This allows scalers, color converts and any image +processing filters to work directly on the dma buffer. +In this case the importer element should check all incoming memory using +gst_is_dmabuf_memory(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Private intance object for #GstDRMDumbAllocator. + + + Creates a new #GstDRMDumbAllocator for the specific device path. This +function can fail if the path does not exist, is not a DRM device or if +the DRM device doesnot support DUMB allocation. + + + a new DRM Dumb allocator. Use gst_object_unref() + to release the allocator after usage. + + + + + path to the DRM device to open + + + + + + Creates a new #GstDRMDumbAllocator for the specific file desciptor. This +function can fail if the file descriptor is not a DRM device or if +the DRM device does not support DUMB allocation. + + + a new DRM Dumb allocator. Use gst_object_unref() + to release the allocator after usage. + + + + + file descriptor of the DRM device + + + + + + Allocated a DRM buffer object for the specific @drm_fourcc, @width and +@height. Note that the DRM Dumb allocation interface is agnostic to the +pixel format. This @drm_fourcc is converted into a bpp (bit-per-pixel) +number and the height is scaled according to the sub-sampling. + + + a new DRM Dumb #GstMemory. Use gst_memory_unref() + to release the memory after usage. + + + + + the allocator instance + + + + the DRM format to allocate for + + + + padded width for this allocation + + + + padded height for this allocation + + + + the pitch as returned by the driver + + + + + + This function allow verifying if the driver support dma-buf exportation. + + + %TRUE if the allocator support exporting dma-buf. + + + + + the #GstAllocator + + + + + + + + + + + + + + + + + + + Base class for allocators with dmabuf-backed memory + + + Return a new dmabuf allocator. + + + a new dmabuf allocator. Use gst_object_unref() to +release the allocator after usage + + + + + Return a %GstMemory that wraps a dmabuf file descriptor. + + + a GstMemory based on @allocator. +When the buffer will be released dmabuf allocator will close the @fd. +The memory is only mmapped on gst_buffer_map() request. + + + + + allocator to be used for this memory + + + + dmabuf file descriptor + + + + memory size + + + + + + Return a %GstMemory that wraps a dmabuf file descriptor. + + + a GstMemory based on @allocator. + +When the buffer will be released the allocator will close the @fd unless +the %GST_FD_MEMORY_FLAG_DONT_CLOSE flag is specified. +The memory is only mmapped on gst_buffer_mmap() request. + + + + + allocator to be used for this memory + + + + dmabuf file descriptor + + + + memory size + + + + extra #GstFdMemoryFlags + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for allocators with fd-backed memory + + + Return a new fd allocator. + + + a new fd allocator. Use gst_object_unref() to +release the allocator after usage + + + + + Return a %GstMemory that wraps a generic file descriptor. + + + a GstMemory based on @allocator. +When the buffer will be released the allocator will close the @fd unless +the %GST_FD_MEMORY_FLAG_DONT_CLOSE flag is specified. +The memory is only mmapped on gst_buffer_map() request. + + + + + allocator to be used for this memory + + + + file descriptor + + + + memory size + + + + extra #GstFdMemoryFlags + + + + + + + + + + + + + + + + Various flags to control the operation of the fd backed memory. + + + no flag + + + once the memory is mapped, + keep it mapped until the memory is destroyed. + + + do a private mapping instead of + the default shared mapping. + + + don't close the file descriptor when + the memory is freed. Since: 1.10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Marker interface for allocators with physical address backed memory + + + + + + + + + + + + + + + + + + + + + + + Return the file descriptor associated with @mem. + + + the file descriptor associated with the memory, or -1. The file + descriptor is still owned by the GstMemory. Use dup to take a copy + if you intend to use it beyond the lifetime of this GstMemory. + + + + + the memory to get the file descriptor + + + + + + Exports a DMABuf from the DRM Bumb buffer object. One can check if this +feature is supported using gst_drm_dumb_allocator_has_prime_export(); + + + a #GstMemory from #GstDmaBufAllocator wrapping the exported dma-buf + file descriptor. + + + + + the memory to export from + + + + + + Return the DRM buffer object handle associated with @mem. + + + the DRM buffer object handle associated with the memory, or 0. + The handle is still owned by the GstMemory and cannot be used + beyond the lifetime of this GstMemory unless it is being passed + to DRM driver, which does handle a refcount internally. + + + + + the memory to get the handle from + + + + + + Get the fd from @mem. Call gst_is_fd_memory() to check if @mem has +an fd. + + + the fd of @mem or -1 when there is no fd on @mem + + + + + #GstMemory + + + + + + Check if @mem is dmabuf memory. + + + %TRUE if @mem is dmabuf memory, otherwise %FALSE + + + + + the memory to be check + + + + + + + + %TRUE if @mem is DRM Dumb memory, otherwise %FALSE + + + + + the memory to be checked + + + + + + Check if @mem is memory backed by an fd + + + %TRUE when @mem has an fd that can be retrieved with +gst_fd_memory_get_fd(). + + + + + #GstMemory + + + + + + + + whether the memory at @mem is backed by physical memory + + + + + a #GstMemory + + + + + + + + Physical memory address that is backing @mem, or 0 if none + + + + + a #GstMemory + + + + + + diff --git a/girs/GstApp-1.0.gir b/girs/GstApp-1.0.gir new file mode 100644 index 0000000000..e233663eec --- /dev/null +++ b/girs/GstApp-1.0.gir @@ -0,0 +1,2421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Buffer dropping scheme to avoid the element's internal queue to block when +full. + + Not Leaky + + + Leaky on upstream (new buffers) + + + Leaky on downstream (old buffers) + + + + Appsink is a sink plugin that supports many different methods for making +the application get a handle on the GStreamer data in a pipeline. Unlike +most GStreamer elements, Appsink provides external API functions. + +appsink can be used by linking to the gstappsink.h header file to access the +methods or by using the appsink action signals and properties. + +The normal way of retrieving samples from appsink is by using the +gst_app_sink_pull_sample() and gst_app_sink_pull_preroll() methods. +These methods block until a sample becomes available in the sink or when the +sink is shut down or reaches EOS. There are also timed variants of these +methods, gst_app_sink_try_pull_sample() and gst_app_sink_try_pull_preroll(), +which accept a timeout parameter to limit the amount of time to wait. + +Appsink will internally use a queue to collect buffers from the streaming +thread. If the application is not pulling samples fast enough, this queue +will consume a lot of memory over time. The "max-buffers" property can be +used to limit the queue size. The "drop" property controls whether the +streaming thread blocks or if older buffers are dropped when the maximum +queue size is reached. Note that blocking the streaming thread can negatively +affect real-time performance and should be avoided. + +If a blocking behaviour is not desirable, setting the "emit-signals" property +to %TRUE will make appsink emit the "new-sample" and "new-preroll" signals +when a sample can be pulled without blocking. + +The "caps" property on appsink can be used to control the formats that +appsink can receive. This property can contain non-fixed caps, the format of +the pulled samples can be obtained by getting the sample caps. + +If one of the pull-preroll or pull-sample methods return %NULL, the appsink +is stopped or in the EOS state. You can check for the EOS state with the +"eos" property or with the gst_app_sink_is_eos() method. + +The eos signal can also be used to be informed when the EOS state is reached +to avoid polling. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample(). + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + +This function blocks until a preroll sample or EOS is received or the appsink +element is set to the READY/NULL state. + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers will be put in a queue so that the application +can pull samples at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + This function blocks until a sample or an event or EOS becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers and events will be put in a queue so that the application +can pull them at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. +Events can be pulled when the appsink is in the READY, PAUSED or PLAYING state. + +This function will only pull serialized events, excluding +the EOS event for which this functions returns +%NULL. Use gst_app_sink_is_eos() to check for the EOS condition. + +This method is a variant of gst_app_sink_try_pull_sample() that can be used +to handle incoming events events as well as samples. + +Note that future releases may extend this API to return other object types +so make sure that your code is checking for the actual type it is handling. + + + a #GstSample, or #GstEvent or NULL when the appsink is stopped or EOS or the timeout expires. +Call gst_mini_object_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample(). + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS +condition. + +This function blocks until a preroll sample or EOS is received, the appsink +element is set to the READY/NULL state, or the timeout expires. + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for the preroll sample + + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers will be put in a queue so that the application +can pull samples at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS +condition. + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + Check if @appsink supports buffer lists. + + + %TRUE if @appsink supports buffer lists. + + + + + a #GstAppSink + + + + + + Get the configured caps on @appsink. + + + the #GstCaps accepted by the sink. gst_caps_unref() after usage. + + + + + a #GstAppSink + + + + + + Check if @appsink will drop old buffers when the maximum amount of queued +buffers is reached. + + + %TRUE if @appsink is dropping old buffers when the queue is +filled. + + + + + a #GstAppSink + + + + + + Check if appsink will emit the "new-preroll" and "new-sample" signals. + + + %TRUE if @appsink is emitting the "new-preroll" and "new-sample" +signals. + + + + + a #GstAppSink + + + + + + Get the maximum amount of buffers that can be queued in @appsink. + + + The maximum amount of buffers that can be queued. + + + + + a #GstAppSink + + + + + + Check if @appsink will wait for all buffers to be consumed when an EOS is +received. + + + %TRUE if @appsink will wait for all buffers to be consumed when an +EOS is received. + + + + + a #GstAppSink + + + + + + Check if @appsink is EOS, which is when no more samples can be pulled because +an EOS event was received. + +This function also returns %TRUE when the appsink is not in the PAUSED or +PLAYING state. + + + %TRUE if no more samples can be pulled and the appsink is EOS. + + + + + a #GstAppSink + + + + + + This function blocks until a sample or an event becomes available or the appsink +element is set to the READY/NULL state. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers and events will be put in a queue so that the application +can pull them at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. +Events can be pulled when the appsink is in the READY, PAUSED or PLAYING state. + +This function will only pull serialized events, excluding +the EOS event for which this functions returns +%NULL. Use gst_app_sink_is_eos() to check for the EOS condition. + +This method is a variant of gst_app_sink_pull_sample() that can be used +to handle incoming events events as well as samples. + +Note that future releases may extend this API to return other object types +so make sure that your code is checking for the actual type it is handling. + + + a #GstSample, or a #GstEvent or NULL when the appsink is stopped or EOS. + Call gst_mini_object_unref() after usage. + + + + + a #GstAppSink + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample(). + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + +This function blocks until a preroll sample or EOS is received or the appsink +element is set to the READY/NULL state. + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers will be put in a queue so that the application +can pull samples at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + Instruct @appsink to enable or disable buffer list support. + +For backwards-compatibility reasons applications need to opt in +to indicate that they will be able to handle buffer lists. + + + + + + + a #GstAppSink + + + + enable or disable buffer list support + + + + + + Set callbacks which will be executed for each new preroll, new sample and eos. +This is an alternative to using the signals, it has lower overhead and is thus +less expensive, but also less flexible. + +If callbacks are installed, no signals will be emitted for performance +reasons. + +Before 1.16.3 it was not possible to change the callbacks in a thread-safe +way. + + + + + + + a #GstAppSink + + + + the callbacks + + + + a user_data argument for the callbacks + + + + a destroy notify function + + + + + + Set the capabilities on the appsink element. This function takes +a copy of the caps structure. After calling this method, the sink will only +accept caps that match @caps. If @caps is non-fixed, or incomplete, +you must check the caps on the samples to get the actual used caps. + + + + + + + a #GstAppSink + + + + caps to set + + + + + + Instruct @appsink to drop old buffers when the maximum amount of queued +buffers is reached. + + + + + + + a #GstAppSink + + + + the new state + + + + + + Make appsink emit the "new-preroll" and "new-sample" signals. This option is +by default disabled because signal emission is expensive and unneeded when +the application prefers to operate in pull mode. + + + + + + + a #GstAppSink + + + + the new state + + + + + + Set the maximum amount of buffers that can be queued in @appsink. After this +amount of buffers are queued in appsink, any more buffers will block upstream +elements until a sample is pulled from @appsink. + + + + + + + a #GstAppSink + + + + the maximum number of buffers to queue + + + + + + Instruct @appsink to wait for all buffers to be consumed when an EOS is received. + + + + + + + a #GstAppSink + + + + the new state + + + + + + This function blocks until a sample or an event or EOS becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers and events will be put in a queue so that the application +can pull them at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. +Events can be pulled when the appsink is in the READY, PAUSED or PLAYING state. + +This function will only pull serialized events, excluding +the EOS event for which this functions returns +%NULL. Use gst_app_sink_is_eos() to check for the EOS condition. + +This method is a variant of gst_app_sink_try_pull_sample() that can be used +to handle incoming events events as well as samples. + +Note that future releases may extend this API to return other object types +so make sure that your code is checking for the actual type it is handling. + + + a #GstSample, or #GstEvent or NULL when the appsink is stopped or EOS or the timeout expires. +Call gst_mini_object_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample(). + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS +condition. + +This function blocks until a preroll sample or EOS is received, the appsink +element is set to the READY/NULL state, or the timeout expires. + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for the preroll sample + + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered buffers will be put in a queue so that the application +can pull samples at its own rate. Note that when the application does not +pull samples fast enough, the queued buffers could consume a lot of memory, +especially when dealing with raw video frames. + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS +condition. + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Signal that the end-of-stream has been reached. This signal is emitted from +the streaming thread. + + + + + + Signal that a new preroll sample is available. + +This signal is emitted from the streaming thread and only when the +"emit-signals" property is %TRUE. + +The new preroll sample can be retrieved with the "pull-preroll" action +signal or gst_app_sink_pull_preroll() either from this signal callback +or from any other thread. + +Note that this signal is only emitted when the "emit-signals" property is +set to %TRUE, which it is not by default for performance reasons. + + + + + + Signal that a new sample is available. + +This signal is emitted from the streaming thread and only when the +"emit-signals" property is %TRUE. + +The new sample can be retrieved with the "pull-sample" action +signal or gst_app_sink_pull_sample() either from this signal callback +or from any other thread. + +Note that this signal is only emitted when the "emit-signals" property is +set to %TRUE, which it is not by default for performance reasons. + + + + + + Signal that a new downstream serialized event is available. + +This signal is emitted from the streaming thread and only when the +"emit-signals" property is %TRUE. + +The new event can be retrieved with the "try-pull-object" action +signal or gst_app_sink_pull_object() either from this signal callback +or from any other thread. + +EOS will not be notified using this signal, use #GstAppSink::eos instead. +EOS cannot be pulled either, use gst_app_sink_is_eos() to check for it. + +Note that this signal is only emitted when the "emit-signals" property is +set to %TRUE, which it is not by default for performance reasons. + +The callback should return %TRUE if the event has been handled, which will +skip basesink handling of the event, %FALSE otherwise. + + + + + + Signal that a new propose_allocation query is available. + +This signal is emitted from the streaming thread and only when the +"emit-signals" property is %TRUE. + + + + + + the allocation query + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample() or the "pull-sample" action signal. + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + +This function blocks until a preroll sample or EOS is received or the appsink +element is set to the READY/NULL state. + + a #GstSample or NULL when the appsink is stopped or EOS. + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered samples will be put in a queue so that the application +can pull samples at its own rate. + +Note that when the application does not pull samples fast enough, the +queued samples could consume a lot of memory, especially when dealing with +raw video frames. It's possible to control the behaviour of the queue with +the "drop" and "max-buffers" properties. + +If an EOS event was received before any buffers, this function returns +%NULL. Use gst_app_sink_is_eos () to check for the EOS condition. + + a #GstSample or NULL when the appsink is stopped or EOS. + + + + + This function blocks until a sample or an event becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered samples and events will be put in a queue so that the application +can pull them at its own rate. +Events can be pulled when the appsink is in the READY, PAUSED or PLAYING state. + +Note that when the application does not pull samples fast enough, the +queued samples could consume a lot of memory, especially when dealing with +raw video frames. It's possible to control the behaviour of the queue with +the "drop" and "max-buffers" properties. + +This function will only pull serialized events, excluding +the EOS event for which this functions returns +%NULL. Use gst_app_sink_is_eos() to check for the EOS condition. + +This signal is a variant of #GstAppSink::try-pull-sample: that can be used +to handle incoming events as well as samples. + +Note that future releases may extend this API to return other object types +so make sure that your code is checking for the actual type it is handling. + + a #GstSample or a #GstEvent or NULL when the appsink is stopped or EOS or the timeout expires. + + + + + the maximum amount of time to wait for a sample + + + + + + Get the last preroll sample in @appsink. This was the sample that caused the +appsink to preroll in the PAUSED state. + +This function is typically used when dealing with a pipeline in the PAUSED +state. Calling this function after doing a seek will give the sample right +after the seek position. + +Calling this function will clear the internal reference to the preroll +buffer. + +Note that the preroll sample will also be returned as the first sample +when calling gst_app_sink_pull_sample() or the "pull-sample" action signal. + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check for the EOS +condition. + +This function blocks until a preroll sample or EOS is received, the appsink +element is set to the READY/NULL state, or the timeout expires. + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + + + + + the maximum amount of time to wait for the preroll sample + + + + + + This function blocks until a sample or EOS becomes available or the appsink +element is set to the READY/NULL state or the timeout expires. + +This function will only return samples when the appsink is in the PLAYING +state. All rendered samples will be put in a queue so that the application +can pull samples at its own rate. + +Note that when the application does not pull samples fast enough, the +queued samples could consume a lot of memory, especially when dealing with +raw video frames. It's possible to control the behaviour of the queue with +the "drop" and "max-buffers" properties. + +If an EOS event was received before any buffers or the timeout expires, +this function returns %NULL. Use gst_app_sink_is_eos () to check +for the EOS condition. + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + + + + + the maximum amount of time to wait for a sample + + + + + + + A set of callbacks that can be installed on the appsink with +gst_app_sink_set_callbacks(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + + + + + a #GstSample or NULL when the appsink is stopped or EOS. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + + + + + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for the preroll sample + + + + + + + + + + a #GstSample or NULL when the appsink is stopped or EOS or the timeout expires. + Call gst_sample_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + + + + + a #GstSample, or #GstEvent or NULL when the appsink is stopped or EOS or the timeout expires. +Call gst_mini_object_unref() after usage. + + + + + a #GstAppSink + + + + the maximum amount of time to wait for a sample + + + + + + + + + + + + + + + + The appsrc element can be used by applications to insert data into a +GStreamer pipeline. Unlike most GStreamer elements, appsrc provides +external API functions. + +appsrc can be used by linking with the libgstapp library to access the +methods directly or by using the appsrc action signals. + +Before operating appsrc, the caps property must be set to fixed caps +describing the format of the data that will be pushed with appsrc. An +exception to this is when pushing buffers with unknown caps, in which case no +caps should be set. This is typically true of file-like sources that push raw +byte buffers. If you don't want to explicitly set the caps, you can use +gst_app_src_push_sample. This method gets the caps associated with the +sample and sets them on the appsrc replacing any previously set caps (if +different from sample's caps). + +The main way of handing data to the appsrc element is by calling the +gst_app_src_push_buffer() method or by emitting the push-buffer action signal. +This will put the buffer onto a queue from which appsrc will read from in its +streaming thread. It is important to note that data transport will not happen +from the thread that performed the push-buffer call. + +The "max-bytes", "max-buffers" and "max-time" properties control how much +data can be queued in appsrc before appsrc considers the queue full. A +filled internal queue will always signal the "enough-data" signal, which +signals the application that it should stop pushing data into appsrc. The +"block" property will cause appsrc to block the push-buffer method until +free data becomes available again. + +When the internal queue is running out of data, the "need-data" signal is +emitted, which signals the application that it should start pushing more data +into appsrc. + +In addition to the "need-data" and "enough-data" signals, appsrc can emit the +"seek-data" signal when the "stream-mode" property is set to "seekable" or +"random-access". The signal argument will contain the new desired position in +the stream expressed in the unit set with the "format" property. After +receiving the seek-data signal, the application should push-buffers from the +new position. + +These signals allow the application to operate the appsrc in two different +ways: + +The push mode, in which the application repeatedly calls the push-buffer/push-sample +method with a new buffer/sample. Optionally, the queue size in the appsrc +can be controlled with the enough-data and need-data signals by respectively +stopping/starting the push-buffer/push-sample calls. This is a typical +mode of operation for the stream-type "stream" and "seekable". Use this +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 accessible sources. In this mode, a +buffer of exactly the amount of bytes given by the need-data signal should be +pushed into appsrc. + +In all modes, the size property on appsrc should contain the total stream +size in bytes. Setting this property is mandatory in the random-access mode. +For the stream and seekable modes, setting this property is optional but +recommended. + +When the application has finished pushing data into appsrc, it should call +gst_app_src_end_of_stream() or emit the end-of-stream action signal. After +this call, no more buffers can be pushed into appsrc until a flushing seek +occurs or the state of the appsrc has gone through READY. + + + + Indicates to the appsrc element that the last buffer queued in the +element is the last buffer of the stream. + + + #GST_FLOW_OK when the EOS was successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. + + + + + a #GstAppSrc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds a buffer to the queue of buffers that the appsrc element will +push to its source pad. This function takes ownership of the buffer. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstBuffer to push + + + + + + Adds a buffer list to the queue of buffers and buffer lists that the +appsrc element will push to its source pad. This function takes ownership +of @buffer_list. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstBufferList to push + + + + + + Extract a buffer from the provided sample and adds it to the queue of +buffers that the appsrc element will push to its source pad. Any +previous caps that were set on appsrc will be replaced by the caps +associated with the sample if not equal. + +This function does not take ownership of the +sample so the sample needs to be unreffed after calling this function. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstSample from which buffer and caps may be +extracted + + + + + + + + + + + + + + + + + + + + Indicates to the appsrc element that the last buffer queued in the +element is the last buffer of the stream. + + + #GST_FLOW_OK when the EOS was successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. + + + + + a #GstAppSrc + + + + + + Get the configured caps on @appsrc. + + + the #GstCaps produced by the source. gst_caps_unref() after usage. + + + + + a #GstAppSrc + + + + + + Get the number of currently queued buffers inside @appsrc. + + + The number of currently queued buffers. + + + + + a #GstAppSrc + + + + + + Get the number of currently queued bytes inside @appsrc. + + + The number of currently queued bytes. + + + + + a #GstAppSrc + + + + + + Get the amount of currently queued time inside @appsrc. + + + The amount of currently queued time. + + + + + a #GstAppSrc + + + + + + Get the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is +not known. + + + the duration of the stream previously set with gst_app_src_set_duration(); + + + + + a #GstAppSrc + + + + + + Check if appsrc will emit the "new-preroll" and "new-buffer" signals. + + + %TRUE if @appsrc is emitting the "new-preroll" and "new-buffer" +signals. + + + + + a #GstAppSrc + + + + + + Retrieve the min and max latencies in @min and @max respectively. + + + + + + + a #GstAppSrc + + + + the min latency + + + + the max latency + + + + + + Returns the currently set #GstAppLeakyType. See gst_app_src_set_leaky_type() +for more details. + + + The currently set #GstAppLeakyType. + + + + + a #GstAppSrc + + + + + + Get the maximum amount of buffers that can be queued in @appsrc. + + + The maximum amount of buffers that can be queued. + + + + + a #GstAppSrc + + + + + + Get the maximum amount of bytes that can be queued in @appsrc. + + + The maximum amount of bytes that can be queued. + + + + + a #GstAppSrc + + + + + + Get the maximum amount of time that can be queued in @appsrc. + + + The maximum amount of time that can be queued. + + + + + a #GstAppSrc + + + + + + Get the size of the stream in bytes. A value of -1 means that the size is +not known. + + + the size of the stream previously set with gst_app_src_set_size(); + + + + + a #GstAppSrc + + + + + + Get the stream type. Control the stream type of @appsrc +with gst_app_src_set_stream_type(). + + + the stream type. + + + + + a #GstAppSrc + + + + + + Adds a buffer to the queue of buffers that the appsrc element will +push to its source pad. This function takes ownership of the buffer. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstBuffer to push + + + + + + Adds a buffer list to the queue of buffers and buffer lists that the +appsrc element will push to its source pad. This function takes ownership +of @buffer_list. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstBufferList to push + + + + + + Extract a buffer from the provided sample and adds it to the queue of +buffers that the appsrc element will push to its source pad. Any +previous caps that were set on appsrc will be replaced by the caps +associated with the sample if not equal. + +This function does not take ownership of the +sample so the sample needs to be unreffed after calling this function. + +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 successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstSample from which buffer and caps may be +extracted + + + + + + Set callbacks which will be executed when data is needed, enough data has +been collected or when a seek should be performed. +This is an alternative to using the signals, it has lower overhead and is thus +less expensive, but also less flexible. + +If callbacks are installed, no signals will be emitted for performance +reasons. + +Before 1.16.3 it was not possible to change the callbacks in a thread-safe +way. + + + + + + + a #GstAppSrc + + + + the callbacks + + + + a user_data argument for the callbacks + + + + a destroy notify function + + + + + + Set the capabilities on the appsrc element. This function takes +a copy of the caps structure. After calling this method, the source will +only produce caps that match @caps. @caps must be fixed and the caps on the +buffers must match the caps or left NULL. + + + + + + + a #GstAppSrc + + + + caps to set + + + + + + Set the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is +not known. + + + + + + + a #GstAppSrc + + + + the duration to set + + + + + + Make appsrc emit the "new-preroll" and "new-buffer" signals. This option is +by default disabled because signal emission is expensive and unneeded when +the application prefers to operate in pull mode. + + + + + + + a #GstAppSrc + + + + the new state + + + + + + Configure the @min and @max latency in @src. If @min is set to -1, the +default latency calculations for pseudo-live sources will be used. + + + + + + + a #GstAppSrc + + + + the min latency + + + + the max latency + + + + + + When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc +will drop any buffers that are pushed into it once its internal queue is +full. The selected type defines whether to drop the oldest or new +buffers. + + + + + + + a #GstAppSrc + + + + the #GstAppLeakyType + + + + + + Set the maximum amount of buffers that can be queued in @appsrc. +After the maximum amount of buffers are queued, @appsrc will emit the +"enough-data" signal. + + + + + + + a #GstAppSrc + + + + the maximum number of buffers to queue + + + + + + Set the maximum amount of bytes that can be queued in @appsrc. +After the maximum amount of bytes are queued, @appsrc will emit the +"enough-data" signal. + + + + + + + a #GstAppSrc + + + + the maximum number of bytes to queue + + + + + + Set the maximum amount of time that can be queued in @appsrc. +After the maximum amount of time are queued, @appsrc will emit the +"enough-data" signal. + + + + + + + a #GstAppSrc + + + + the maximum amonut of time to queue + + + + + + Set the size of the stream in bytes. A value of -1 means that the size is +not known. + + + + + + + a #GstAppSrc + + + + the size to set + + + + + + Set the stream type on @appsrc. For seekable streams, the "seek" signal must +be connected to. + +A stream_type stream + + + + + + + a #GstAppSrc + + + + the new state + + + + + + When max-bytes are queued and after the enough-data signal has been emitted, +block any further push-buffer calls until the amount of queued bytes drops +below the max-bytes limit. + + + + The GstCaps that will negotiated downstream and will be put +on outgoing buffers. + + + + The number of currently queued buffers inside appsrc. + + + + The number of currently queued bytes inside appsrc. + + + + The amount of currently queued time inside appsrc. + + + + The total duration in nanoseconds of the data stream. If the total duration is known, it +is recommended to configure it with this property. + + + + Make appsrc emit the "need-data", "enough-data" and "seek-data" signals. +This option is by default enabled for backwards compatibility reasons but +can disabled when needed because signal emission is expensive. + + + + The format to use for segment events. When the source is producing +timestamped buffers this property should be set to GST_FORMAT_TIME. + + + + When enabled, appsrc will check GstSegment in GstSample which was +pushed via gst_app_src_push_sample() or "push-sample" signal action. +If a GstSegment is changed, corresponding segment event will be followed +by next data flow. + +FIXME: currently only GST_FORMAT_TIME format is supported and therefore +GstAppSrc::format should be time. However, possibly #GstAppSrc can support +other formats. + + + + Instruct the source to behave like a live source. This includes that it +will only push out buffers in the PLAYING state. + + + + When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc +will drop any buffers that are pushed into it once its internal queue is +full. The selected type defines whether to drop the oldest or new +buffers. + + + + The maximum amount of buffers that can be queued internally. +After the maximum amount of buffers are queued, appsrc will emit the +"enough-data" signal. + + + + The maximum amount of bytes that can be queued internally. +After the maximum amount of bytes are queued, appsrc will emit the +"enough-data" signal. + + + + + + + The maximum amount of time that can be queued internally. +After the maximum amount of time are queued, appsrc will emit the +"enough-data" signal. + + + + The minimum latency of the source. A value of -1 will use the default +latency calculations of #GstBaseSrc. + + + + Make appsrc emit the "need-data" signal when the amount of bytes in the +queue drops below this percentage of max-bytes. + + + + The total size in bytes of the data stream. If the total size is known, it +is recommended to configure it with this property. + + + + The type of stream that this source is producing. For seekable streams the +application should connect to the seek-data signal. + + + + + + + + + + + + + + + Notify @appsrc that no more buffer are available. + + + + + + Signal that the source has enough data. It is recommended that the +application stops calling push-buffer until the need-data signal is +emitted again to avoid excessive buffer queueing. + + + + + + Signal that the source needs more data. In the callback or from another +thread you should call push-buffer or end-of-stream. + +@length is just a hint and when it is set to -1, any number of bytes can be +pushed into @appsrc. + +You can call push-buffer multiple times until the enough-data signal is +fired. + + + + + + the amount of bytes needed. + + + + + + Adds a buffer to the queue of buffers that the appsrc element will +push to its source pad. + +This function does not take ownership of the buffer, but it takes a +reference so the buffer can be unreffed at any time after calling this +function. + +When the block property is TRUE, this function can block until free space +becomes available in the queue. + + + + + + a buffer to push + + + + + + Adds a buffer list to the queue of buffers and buffer lists that the +appsrc element will push to its source pad. + +This function does not take ownership of the buffer list, but it takes a +reference so the buffer list can be unreffed at any time after calling +this function. + +When the block property is TRUE, this function can block until free space +becomes available in the queue. + + + + + + a buffer list to push + + + + + + Extract a buffer from the provided sample and adds the extracted buffer +to the queue of buffers that the appsrc element will +push to its source pad. This function set the appsrc caps based on the caps +in the sample and reset the caps if they change. +Only the caps and the buffer of the provided sample are used and not +for example the segment in the sample. + +This function does not take ownership of the sample, but it takes a +reference so the sample can be unreffed at any time after calling this +function. + +When the block property is TRUE, this function can block until free space +becomes available in the queue. + + + + + + a sample from which extract buffer to push + + + + + + Seek to the given offset. The next push-buffer should produce buffers from +the new @offset. +This callback is only called for seekable stream types. + + %TRUE if the seek succeeded. + + + + + the offset to seek to + + + + + + + A set of callbacks that can be installed on the appsrc with +gst_app_src_set_callbacks(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GST_FLOW_OK when the buffer was successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstBuffer to push + + + + + + + + + + #GST_FLOW_OK when the EOS was successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. + + + + + a #GstAppSrc + + + + + + + + + + #GST_FLOW_OK when the buffer was successfully queued. +#GST_FLOW_FLUSHING when @appsrc is not PAUSED or PLAYING. +#GST_FLOW_EOS when EOS occurred. + + + + + a #GstAppSrc + + + + a #GstSample from which buffer and caps may be +extracted + + + + + + + + + + #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 occurred. + + + + + a #GstAppSrc + + + + a #GstBufferList to push + + + + + + + + + + + + + + + + The stream type. + + No seeking is supported in the stream, such as a +live stream. + + + The stream is seekable but seeking might not +be very fast, such as data from a webserver. + + + The stream is seekable and seeking is fast, +such as in a local file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/girs/GstAudio-1.0.gir b/girs/GstAudio-1.0.gir new file mode 100644 index 0000000000..f967075685 --- /dev/null +++ b/girs/GstAudio-1.0.gir @@ -0,0 +1,10931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the #GstClock of @obj. + + + + a #GstAudioBaseSink + + + + + + + + + + + + Get the sink #GstPad of @obj. + + + + a #GstAudioBaseSink + + + + + + + + + + + + + + + + + + + + + + + + + + Get the #GstClock of @obj. + + + + a #GstAudioBaseSrc + + + + + + + + + + + + Get the source #GstPad of @obj. + + + + a #GstAudioBaseSrc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generic caps string for audio, for use in pad templates. + + + + string format that describes the sample layout, as string + (e.g. "S16LE", "S8", etc.) + + + + + + + + + + + + + + + + + + + + + + + + + + Maximum range of allowed channels, for use in template caps strings. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioDitherMethod, The dither method to use when +changing bit depth. +Default is #GST_AUDIO_DITHER_NONE. + + + + + Threshold for the output bit depth at/below which to apply dithering. + +Default is 20 bit. + + + + + #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 +number of input channels. + +## Example matrix generation code +To generate the matrix using code: + +|[ +GValue v = G_VALUE_INIT; +GValue v2 = G_VALUE_INIT; +GValue v3 = G_VALUE_INIT; + +g_value_init (&v2, GST_TYPE_ARRAY); +g_value_init (&v3, G_TYPE_DOUBLE); +g_value_set_double (&v3, 1); +gst_value_array_append_value (&v2, &v3); +g_value_unset (&v3); +[ Repeat for as many double as your input channels - unset and reinit v3 ] +g_value_init (&v, GST_TYPE_ARRAY); +gst_value_array_append_value (&v, &v2); +g_value_unset (&v2); +[ Repeat for as many v2's as your output channels - unset and reinit v2] +g_object_set_property (G_OBJECT (audiomixmatrix), "matrix", &v); +g_value_unset (&v); +]| + + + + + #GstAudioNoiseShapingMethod, The noise shaping method to use +to mask noise from quantization errors. +Default is #GST_AUDIO_NOISE_SHAPING_NONE. + + + + + #G_TYPE_UINT, The quantization amount. Components will be +quantized to multiples of this value. +Default is 1 + + + + + #GstAudioResamplerMethod, The resampler method to use when +changing sample rates. +Default is #GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL. + + + + + + + + + + + + + + + + + + + + + + + + + + Utility function that audio decoder elements can use in case they encountered +a data processing error that may be fatal for the current "data unit" but +need not prevent subsequent decoding. Such errors are counted and if there +are too many, as configured in the context's max_errors, the pipeline will +post an error message and the application will be requested to stop further +media processing. Otherwise, it is considered a "glitch" and only a warning +is logged. In either case, @ret is set to the proper value to +return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK). + + + + the base audio decoder element that generates the error + + + element defined weight of the error, added to error count + + + like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + + + error code defined for that domain (see #gstreamer-GstGError) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + variable to receive return value + + + + + + + + + + + + Gives the input segment of the element. + + + + audio decoder instance + + + + + Default maximum number of errors tolerated before signaling error. + + + + + Gives the output segment of the element. + + + + audio decoder instance + + + + + The name of the templates for the sink pad. + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + base audio codec instance + + + + + The name of the templates for the source pad. + + + + + Gives the pointer to the source #GstPad object of the element. + + + + base audio codec instance + + + + + + + + + + + + + + + + + + + Standard number of channels used in consumer audio. + + + + + Standard format used in consumer audio. + + + + + Standard sampling rate used in consumer audio. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gives the input segment of the element. + + + + base parse instance + + + + + Gives the output segment of the element. + + + + base parse instance + + + + + the name of the templates for the sink pad + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + audio encoder instance + + + + + the name of the templates for the source pad + + + + + Gives the pointer to the source #GstPad object of the element. + + + + audio encoder instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of all audio formats, for use in template caps strings. + +Formats are sorted by decreasing "quality", using these criteria by priority: + - depth + - width + - Float > Signed > Unsigned + - native endianness preferred + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests that the given #GstAudioFormatInfo represents a valid un-encoded +format. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Turns audio format string @s into the format string for native endianness. + + + + format string without endianness marker + + + + + Turns audio format string @s into the format string for other endianness. + + + + format string without endianness marker + + + + + Maximum range of allowed sample rates, for use in template caps strings. + + + + + G_TYPE_DOUBLE, B parameter of the cubic filter. +Values between 0.0 and 2.0 are accepted. 1.0 is the default. + +Below are some values of popular filters: + B C +Hermite 0.0 0.0 +Spline 1.0 0.0 +Catmull-Rom 0.0 1/2 + + + + + G_TYPE_DOUBLE, C parameter of the cubic filter. +Values between 0.0 and 2.0 are accepted. 0.0 is the default. + +See #GST_AUDIO_RESAMPLER_OPT_CUBIC_B for some more common values + + + + + G_TYPE_DOUBLE, Cutoff parameter for the filter. 0.940 is the default. + + + + + GST_TYPE_AUDIO_RESAMPLER_INTERPOLATION: how the filter coefficients should be + interpolated. +GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC is default. + + + + + GST_TYPE_AUDIO_RESAMPLER_FILTER_MODE: how the filter tables should be +constructed. +GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO is the default. + + + + + G_TYPE_UINT: the amount of memory to use for full filter tables before +switching to interpolated filter tables. +1048576 is the default. + + + + + G_TYPE_UINT, oversampling to use when interpolating filters +8 is the default. + + + + + G_TYPE_DOUBLE: The maximum allowed phase error when switching sample +rates. +0.1 is the default. + + + + + G_TYPE_INT: the number of taps to use for the filter. +0 is the default and selects the taps automatically. + + + + + G_TYPE_DOUBLE, stopband attenuation in decibels. The attenuation +after the stopband for the kaiser window. 85 dB is the default. + + + + + G_TYPE_DOUBLE, transition bandwidth. The width of the +transition band for the kaiser window. 0.087 is the default. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses must use (a subclass of) #GstAudioAggregatorPad for both +their source and sink pads, +gst_element_class_add_static_pad_template_with_gtype() is a convenient +helper. + +#GstAudioAggregator can perform conversion on the data arriving +on its sink pads, based on the format expected downstream: in order +to enable that behaviour, the GType of the sink pads must either be +a (subclass of) #GstAudioAggregatorConvertPad to use the default +#GstAudioConverter implementation, or a subclass of #GstAudioAggregatorPad +implementing #GstAudioAggregatorPadClass.convert_buffer. + +To allow for the output caps to change, the mechanism is the same as +above, with the GType of the source pad. + +See #GstAudioMixer for an example. + +When conversion is enabled, #GstAudioAggregator will accept +any type of raw audio caps and perform conversion +on the data arriving on its sink pads, with whatever downstream +expects as the target format. + +In case downstream caps are not fully fixated, it will use +the first configured sink pad to finish fixating its source pad +caps. + +A notable exception for now is the sample rate, sink pads must +have the same sample rate as either the downstream requirement, +or the first configured pad, or a combination of both (when +downstream specifies a range or a set of acceptable rates). + +The #GstAggregator::samples-selected signal is provided with some +additional information about the output buffer: +- "offset" G_TYPE_UINT64 Offset in samples since segment start + for the position that is next to be filled in the output buffer. +- "frames" G_TYPE_UINT Number of frames per output buffer. + +In addition the gst_aggregator_peek_next_sample() function returns +additional information in the info #GstStructure of the returned sample: +- "output-offset" G_TYPE_UINT64 Sample offset in output segment relative to + the output segment's start where the current position of this input + buffer would be placed +- "position" G_TYPE_UINT current position in the input buffer in samples +- "size" G_TYPE_UINT size of the input buffer in samples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Causes the element to aggregate on a timeout even when no live source is +connected to its sinks. See #GstAggregator:min-upstream-latency for a +companion property: in the vast majority of cases where you plan to plug in +live sources with a non-zero latency, you should set it to a non-zero value. + + + + Don't wait for inactive pads when live. An inactive pad +is a pad that hasn't yet received a buffer, but that has +been waited on at least once. + +The purpose of this property is to avoid aggregating on +timeout when new pads are requested in advance of receiving +data flow, for example the user may decide to connect it later, +but wants to configure it already. + + + + + + + Output block size in nanoseconds, expressed as a fraction. + + + + + + + The caps set by the subclass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An implementation of GstPad that can be used with #GstAudioAggregator. + +See #GstAudioAggregator for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The default implementation of GstPad used with #GstAudioAggregator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Emit QoS messages when dropping buffers. + + + + + + + The audio info for this pad set from the incoming caps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the base class for audio sinks. Subclasses need to implement the +::create_ringbuffer vmethod. This base class will then take care of +writing samples to the ringbuffer, synchronisation, clipping and flushing. + + + Create and return the #GstAudioRingBuffer for @sink. This function will +call the ::create_ringbuffer vmethod and will set @sink as the parent of +the returned buffer (see gst_object_set_parent()). + + + The new ringbuffer of @sink. + + + + + a #GstAudioBaseSink. + + + + + + + + + + + + + + + + + + + + Create and return the #GstAudioRingBuffer for @sink. This function will +call the ::create_ringbuffer vmethod and will set @sink as the parent of +the returned buffer (see gst_object_set_parent()). + + + The new ringbuffer of @sink. + + + + + a #GstAudioBaseSink. + + + + + + Get the current alignment threshold, in nanoseconds, used by @sink. + + + The current alignment threshold used by @sink. + + + + + a #GstAudioBaseSink + + + + + + Get the current discont wait, in nanoseconds, used by @sink. + + + The current discont wait used by @sink. + + + + + a #GstAudioBaseSink + + + + + + Get the current drift tolerance, in microseconds, used by @sink. + + + The current drift tolerance used by @sink. + + + + + a #GstAudioBaseSink + + + + + + Queries whether @sink will provide a clock or not. See also +gst_audio_base_sink_set_provide_clock. + + + %TRUE if @sink will provide a clock. + + + + + a #GstAudioBaseSink + + + + + + Get the current slave method used by @sink. + + + The current slave method used by @sink. + + + + + a #GstAudioBaseSink + + + + + + Informs this base class that the audio output device has failed for +some reason, causing a discontinuity (for example, because the device +recovered from the error, but lost all contents of its ring buffer). +This function is typically called by derived classes, and is useful +for the custom slave method. + + + + + + + a #GstAudioBaseSink + + + + + + Controls the sink's alignment threshold. + + + + + + + a #GstAudioBaseSink + + + + the new alignment threshold in nanoseconds + + + + + + Sets the custom slaving callback. This callback will +be invoked if the slave-method property is set to +GST_AUDIO_BASE_SINK_SLAVE_CUSTOM and the audio sink +receives and plays samples. + +Setting the callback to NULL causes the sink to +behave as if the GST_AUDIO_BASE_SINK_SLAVE_NONE +method were used. + + + + + + + a #GstAudioBaseSink + + + + a #GstAudioBaseSinkCustomSlavingCallback + + + + user data passed to the callback + + + + called when user_data becomes unused + + + + + + Controls how long the sink will wait before creating a discontinuity. + + + + + + + a #GstAudioBaseSink + + + + the new discont wait in nanoseconds + + + + + + Controls the sink's drift tolerance. + + + + + + + a #GstAudioBaseSink + + + + the new drift tolerance in microseconds + + + + + + Controls whether @sink will provide a clock or not. If @provide is %TRUE, +gst_element_provide_clock() will return a clock that reflects the datarate +of @sink. If @provide is %FALSE, gst_element_provide_clock() will return +NULL. + + + + + + + a #GstAudioBaseSink + + + + new state + + + + + + Controls how clock slaving will be performed in @sink. + + + + + + + a #GstAudioBaseSink + + + + the new slave method + + + + + + + + + + + + + + + A window of time in nanoseconds to wait before creating a discontinuity as +a result of breaching the drift-tolerance. + + + + Controls the amount of time in microseconds that clocks are allowed +to drift before resynchronisation happens. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioBaseSink class. Override the vmethod to implement +functionality. + + + the parent class. + + + + + + + The new ringbuffer of @sink. + + + + + a #GstAudioBaseSink. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function is set with gst_audio_base_sink_set_custom_slaving_callback() +and is called during playback. It receives the current time of external and +internal clocks, which the callback can then use to apply any custom +slaving/synchronization schemes. + +The external clock is the sink's element clock, the internal one is the +internal audio clock. The internal audio clock's calibration is applied to +the timestamps before they are passed to the callback. The difference between +etime and itime is the skew; how much internal and external clock lie apart +from each other. A skew of 0 means both clocks are perfectly in sync. +itime > etime means the external clock is going slower, while itime < etime +means it is going faster than the internal clock. etime and itime are always +valid timestamps, except for when a discontinuity happens. + +requested_skew is an output value the callback can write to. It informs the +sink of whether or not it should move the playout pointer, and if so, by how +much. This pointer is only NULL if a discontinuity occurs; otherwise, it is +safe to write to *requested_skew. The default skew is 0. + +The sink may experience discontinuities. If one happens, discont is TRUE, +itime, etime are set to GST_CLOCK_TIME_NONE, and requested_skew is NULL. +This makes it possible to reset custom clock slaving algorithms when a +discontinuity happens. + + + + + + + a #GstAudioBaseSink + + + + external clock time + + + + internal clock time + + + + skew amount requested by the callback + + + + reason for discontinuity (if any) + + + + user data + + + + + + Different possible reasons for discontinuities. This enum is useful for the custom +slave method. + + No discontinuity occurred + + + New caps are set, causing renegotiotion + + + Samples have been flushed + + + Sink was synchronized to the estimated latency (occurs during initialization) + + + Aligning buffers failed because the timestamps are too discontinuous + + + Audio output device experienced and recovered from an error but introduced latency in the process (see also gst_audio_base_sink_report_device_failure()) + + + + + + + Different possible clock slaving algorithms used when the internal audio +clock is not selected as the pipeline master clock. + + Resample to match the master clock + + + Adjust playout pointer when master clock +drifts too much. + + + No adjustment is done. + + + Use custom clock slaving algorithm (Since: 1.6) + + + + This is the base class for audio sources. Subclasses need to implement the +::create_ringbuffer vmethod. This base class will then take care of +reading samples from the ringbuffer, synchronisation and flushing. + + + Create and return the #GstAudioRingBuffer for @src. This function will call +the ::create_ringbuffer vmethod and will set @src as the parent of the +returned buffer (see gst_object_set_parent()). + + + The new ringbuffer of @src. + + + + + a #GstAudioBaseSrc. + + + + + + Create and return the #GstAudioRingBuffer for @src. This function will call +the ::create_ringbuffer vmethod and will set @src as the parent of the +returned buffer (see gst_object_set_parent()). + + + The new ringbuffer of @src. + + + + + a #GstAudioBaseSrc. + + + + + + Queries whether @src will provide a clock or not. See also +gst_audio_base_src_set_provide_clock. + + + %TRUE if @src will provide a clock. + + + + + a #GstAudioBaseSrc + + + + + + Get the current slave method used by @src. + + + The current slave method used by @src. + + + + + a #GstAudioBaseSrc + + + + + + Controls whether @src will provide a clock or not. If @provide is %TRUE, +gst_element_provide_clock() will return a clock that reflects the datarate +of @src. If @provide is %FALSE, gst_element_provide_clock() will return NULL. + + + + + + + a #GstAudioBaseSrc + + + + new state + + + + + + Controls how clock slaving will be performed in @src. + + + + + + + a #GstAudioBaseSrc + + + + the new slave method + + + + + + Actual configured size of audio buffer in microseconds. + + + + Actual configured audio latency in microseconds. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioBaseSrc class. Override the vmethod to implement +functionality. + + + the parent class. + + + + + + + The new ringbuffer of @src. + + + + + a #GstAudioBaseSrc. + + + + + + + + + + + + + + + + Different possible clock slaving algorithms when the internal audio clock was +not selected as the pipeline clock. + + Resample to match the master clock. + + + Retimestamp output buffers with master +clock time. + + + Adjust capture pointer when master clock +drifts too much. + + + No adjustment is done. + + + + A structure containing the result of an audio buffer map operation, +which is executed with gst_audio_buffer_map(). For non-interleaved (planar) +buffers, the beginning of each channel in the buffer has its own pointer in +the @planes array. For interleaved buffers, the @planes array only contains +one item, which is the pointer to the beginning of the buffer, and @n_planes +equals 1. + +The different channels in @planes are always in the GStreamer channel order. + + + a #GstAudioInfo describing the audio properties of this buffer + + + + the size of the buffer in samples + + + + the number of planes available + + + + an array of @n_planes pointers pointing to the start of each + plane in the mapped buffer + + + + the mapped buffer + + + + + + + + + + + + + + + + + + + + + + Unmaps an audio buffer that was previously mapped with +gst_audio_buffer_map(). + + + + + + + the #GstAudioBuffer to unmap + + + + + + Clip the buffer to the given %GstSegment. + +After calling this function the caller does not own a reference to +@buffer anymore. + + + %NULL if the buffer is completely outside the configured segment, +otherwise the clipped buffer is returned. + +If the buffer has no timestamp, it is assumed to be inside the segment and +is not clipped + + + + + The buffer to clip. + + + + Segment in %GST_FORMAT_TIME or %GST_FORMAT_DEFAULT to which + the buffer should be clipped. + + + + sample rate. + + + + size of one audio frame in bytes. This is the size of one sample * +number of channels. + + + + + + Maps an audio @gstbuffer so that it can be read or written and stores the +result of the map operation in @buffer. + +This is especially useful when the @gstbuffer is in non-interleaved (planar) +layout, in which case this function will use the information in the +@gstbuffer's attached #GstAudioMeta in order to map each channel in a +separate "plane" in #GstAudioBuffer. If a #GstAudioMeta is not attached +on the @gstbuffer, then it must be in interleaved layout. + +If a #GstAudioMeta is attached, then the #GstAudioInfo on the meta is checked +against @info. Normally, they should be equal, but in case they are not, +a g_critical will be printed and the #GstAudioInfo from the meta will be +used. + +In non-interleaved buffers, it is possible to have each channel on a separate +#GstMemory. In this case, each memory will be mapped separately to avoid +copying their contents in a larger memory area. Do note though that it is +not supported to have a single channel spanning over two or more different +#GstMemory objects. Although the map operation will likely succeed in this +case, it will be highly sub-optimal and it is recommended to merge all the +memories in the buffer before calling this function. + +Note: The actual #GstBuffer is not ref'ed, but it is required to stay valid +as long as it's mapped. + + + %TRUE if the map operation succeeded or %FALSE on failure + + + + + pointer to a #GstAudioBuffer + + + + the audio properties of the buffer + + + + the #GstBuffer to be mapped + + + + the access mode for the memory + + + + + + Reorders @buffer from the channel positions @from to the channel +positions @to. @from and @to must contain the same number of +positions and the same positions, only in a different order. +@buffer must be writable. + + + %TRUE if the reordering was possible. + + + + + The buffer to reorder. + + + + The %GstAudioFormat of the buffer. + + + + The number of channels. + + + + The channel positions in the buffer. + + + + + + The channel positions to convert to. + + + + + + + + Truncate the buffer to finally have @samples number of samples, removing +the necessary amount of samples from the end and @trim number of samples +from the beginning. + +This function does not know the audio rate, therefore the caller is +responsible for re-setting the correct timestamp and duration to the +buffer. However, timestamp will be preserved if trim == 0, and duration +will also be preserved if there is no trimming to be done. Offset and +offset end will be preserved / updated. + +After calling this function the caller does not own a reference to +@buffer anymore. + + + the truncated buffer + + + + + The buffer to truncate. + + + + size of one audio frame in bytes. This is the size of one sample * +number of channels. + + + + the number of samples to remove from the beginning of the buffer + + + + the final number of samples that should exist in this buffer or -1 +to use all the remaining samples if you are only removing samples from the +beginning. + + + + + + + Provides a base class for CD digital audio (CDDA) sources, which handles +things like seeking, querying, discid calculation, tags, and buffer +timestamping. + +## Using GstAudioCdSrc-based elements in applications + +GstAudioCdSrc registers two #GstFormat<!-- -->s of its own, namely +the "track" format and the "sector" format. Applications will usually +only find the "track" format interesting. You can retrieve that #GstFormat +for use in seek events or queries with gst_format_get_by_nick("track"). + +In order to query the number of tracks, for example, an application would +set the CDDA source element to READY or PAUSED state and then query the +the number of tracks via gst_element_query_duration() using the track +format acquired above. Applications can query the currently playing track +in the same way. + +Alternatively, applications may retrieve the currently playing track and +the total number of tracks from the taglist that will posted on the bus +whenever the CD is opened or the currently playing track changes. The +taglist will contain GST_TAG_TRACK_NUMBER and GST_TAG_TRACK_COUNT tags. + +Applications playing back CD audio using playbin and cdda://n URIs should +issue a seek command in track format to change between tracks, rather than +setting a new cdda://n+1 URI on playbin (as setting a new URI on playbin +involves closing and re-opening the CD device, which is much much slower). + +## Tags and meta-information + +CDDA sources will automatically emit a number of tags, details about which +can be found in the libgsttag documentation. Those tags are: +#GST_TAG_CDDA_CDDB_DISCID, #GST_TAG_CDDA_CDDB_DISCID_FULL, +#GST_TAG_CDDA_MUSICBRAINZ_DISCID, #GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL, +among others. + +## Tracks and Table of Contents (TOC) + +Applications will be informed of the available tracks via a TOC message +on the pipeline's #GstBus. The #GstToc will contain a #GstTocEntry for +each track, with information about each track. The duration for each +track can be retrieved via the #GST_TAG_DURATION tag from each entry's +tag list, or calculated via gst_toc_entry_get_start_stop_times(). +The track entries in the TOC will be sorted by track number. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CDDA sources use this function from their start vfunc to announce the +available data and audio tracks to the base source class. The caller +should allocate @track on the stack, the base source will do a shallow +copy of the structure (and take ownership of the taglist if there is one). + + + FALSE on error, otherwise TRUE. + + + + + a #GstAudioCdSrc + + + + address of #GstAudioCdSrcTrack to add + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Audio CD source base class. + + + the parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mode in which the CD audio source operates. Influences timestamping, +EOS handling and seeking. + + each single track is a stream + + + the entire disc is a single stream + + + + + + + CD track abstraction to communicate TOC entries to the base class. + +This structure is only for use by sub-classed in connection with +gst_audio_cd_src_add_track(). + +Applications will be informed of the available tracks via a TOC message +on the pipeline's #GstBus instead. + + + Whether this is an audio track + + + + Track number in TOC (usually starts from 1, but not always) + + + + The first sector of this track (LBA) + + + + The last sector of this track (LBA) + + + + Track-specific tags (e.g. from cd-text information), or NULL + + + + + + + + + + + + + + + + + Free memory allocated by @mix. + + + + + + + a #GstAudioChannelMixer + + + + + + Check if @mix is in passthrough. + +Only N x N mix identity matrices are considered passthrough, +this is determined by comparing the contents of the matrix +with 0.0 and 1.0. + +As this is floating point comparisons, if the values have been +generated, they should be rounded up or down by explicit +assignment of 0.0 or 1.0 to values within a user-defined +epsilon, this code doesn't make assumptions as to what may +constitute an appropriate epsilon. + + + %TRUE is @mix is passthrough. + + + + + a #GstAudioChannelMixer + + + + + + In case the samples are interleaved, @in and @out must point to an +array with a single element pointing to a block of interleaved samples. + +If non-interleaved samples are used, @in and @out must point to an +array with pointers to memory blocks, one for each channel. + +Perform channel mixing on @in_data and write the result to @out_data. +@in_data and @out_data need to be in @format and @layout. + + + + + + + a #GstAudioChannelMixer + + + + input samples + + + + output samples + + + + number of samples + + + + + + Create a new channel mixer object for the given parameters. + + + a new #GstAudioChannelMixer object. + Free with gst_audio_channel_mixer_free() after usage. + + + + + #GstAudioChannelMixerFlags + + + + + + + number of input channels + + + + positions of input channels + + + + number of output channels + + + + positions of output channels + + + + + + Create a new channel mixer object for the given parameters. + + + a new #GstAudioChannelMixer object. + Free with gst_audio_channel_mixer_free() after usage. + + + + + #GstAudioChannelMixerFlags + + + + + + + number of input channels + + + + number of output channels + + + + channel conversion matrix, m[@in_channels][@out_channels]. + If identity matrix, passthrough applies. If %NULL, a (potentially truncated) + identity matrix is generated. + + + + + + + Flags passed to gst_audio_channel_mixer_new() + + no flag + + + input channels are not interleaved + + + output channels are not interleaved + + + input channels are explicitly unpositioned + + + output channels are explicitly unpositioned + + + + Audio channel positions. + +These are the channels defined in SMPTE 2036-2-2008 +Table 1 for 22.2 audio systems with the Surround and Wide channels from +DTS Coherent Acoustics (v.1.3.1) and 10.2 and 7.1 layouts. In the caps the +actual channel layout is expressed with a channel count and a channel mask, +which describes the existing channels. The positions in the bit mask correspond +to the enum values. +For negotiation it is allowed to have more bits set in the channel mask than +the number of channels to specify the allowed channel positions but this is +not allowed in negotiated caps. It is not allowed in any situation other +than the one mentioned below to have less bits set in the channel mask than +the number of channels. + +@GST_AUDIO_CHANNEL_POSITION_MONO can only be used with a single mono channel that +has no direction information and would be mixed into all directional channels. +This is expressed in caps by having a single channel and no channel mask. + +@GST_AUDIO_CHANNEL_POSITION_NONE can only be used if all channels have this position. +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 implicitly means that this is a stereo stream with a front left and front right +channel. + + used for position-less channels, e.g. + from a sound card that records 1024 channels; mutually exclusive with + any other channel position + + + Mono without direction; + can only be used with 1 channel + + + invalid position + + + Front left + + + Front right + + + Front center + + + Low-frequency effects 1 (subwoofer) + + + Rear left + + + Rear right + + + Front left of center + + + Front right of center + + + Rear center + + + Low-frequency effects 2 (subwoofer) + + + Side left + + + Side right + + + Top front left + + + Top front right + + + Top front center + + + Top center + + + Top rear left + + + Top rear right + + + Top side right + + + Top rear right + + + Top rear center + + + Bottom front center + + + Bottom front left + + + Bottom front right + + + Wide left (between front left and side left) + + + Wide right (between front right and side right) + + + Surround left (between rear left and side left) + + + Surround right (between rear right and side right) + + + + Extra buffer metadata describing how much audio has to be clipped from +the start or end of a buffer. This is used for compressed formats, where +the first frame usually has some additional samples due to encoder and +decoder delays, and the last frame usually has some additional samples to +be able to fill the complete last frame. + +This is used to ensure that decoded data in the end has the same amount of +samples, and multiply decoded streams can be gaplessly concatenated. + +Note: If clipping of the start is done by adjusting the segment, this meta +has to be dropped from buffers as otherwise clipping could happen twice. + + + parent #GstMeta + + + + GstFormat of @start and @stop, GST_FORMAT_DEFAULT is samples + + + + Amount of audio to clip from start of buffer + + + + Amount of to clip from end of buffer + + + + + + + + + + + #GstAudioClock makes it easy for elements to implement a #GstClock, they +simply need to provide a function that returns the current clock time. + +This object is internally used to implement the clock in #GstAudioBaseSink. + + + Create a new #GstAudioClock instance. Whenever the clock time should be +calculated it will call @func with @user_data. When @func returns +#GST_CLOCK_TIME_NONE, the clock will return the last reported time. + + + a new #GstAudioClock casted to a #GstClock. + + + + + the name of the clock + + + + a function + + + + user data + + + + #GDestroyNotify for @user_data + + + + + + Adjust @time with the internal offset of the audio clock. + + + @time adjusted with the internal offset. + + + + + a #GstAudioClock + + + + a #GstClockTime + + + + + + Report the time as returned by the #GstAudioClockGetTimeFunc without applying +any offsets. + + + the time as reported by the time function of the audio clock + + + + + a #GstAudioClock + + + + + + Invalidate the clock function. Call this function when the provided +#GstAudioClockGetTimeFunc cannot be called anymore, for example, when the +user_data becomes invalid. + +After calling this function, @clock will return the last returned time for +the rest of its lifetime. + + + + + + + a #GstAudioClock + + + + + + Inform @clock that future calls to #GstAudioClockGetTimeFunc will return values +starting from @time. The clock will update an internal offset to make sure that +future calls to internal_time will return an increasing result as required by +the #GstClock object. + + + + + + + a #GstAudioClock + + + + a #GstClockTime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function will be called whenever the current clock time needs to be +calculated. If this function returns #GST_CLOCK_TIME_NONE, the last reported +time will be returned by the clock. + + + the current time or #GST_CLOCK_TIME_NONE if the previous time should +be used. + + + + + the #GstAudioClock + + + + user data + + + + + + This object is used to convert audio samples from one format to another. +The object can perform conversion of: + + * audio format with optional dithering and noise shaping + + * audio samplerate + + * audio channels and channel layout + + + 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_*` +parameters for details about the options and values. + + + a #GstAudioConverter or %NULL if conversion is not possible. + + + + + extra #GstAudioConverterFlags + + + + a source #GstAudioInfo + + + + a destination #GstAudioInfo + + + + a #GstStructure with configuration options + + + + + + Convenience wrapper around gst_audio_converter_samples(), which will +perform allocation of the output buffer based on the result from +gst_audio_converter_get_out_frames(). + + + %TRUE is the conversion could be performed. + + + + + a #GstAudioConverter + + + + extra #GstAudioConverterFlags + + + + input data + + + + + + size of @in + + + + a pointer where + the output data will be written + + + + + + a pointer where the size of @out will be written + + + + + + Free a previously allocated @convert instance. + + + + + + + a #GstAudioConverter + + + + + + Get the current configuration of @convert. + + + + a #GstStructure that remains valid for as long as @convert is valid + or until gst_audio_converter_update_config() is called. + + + + + a #GstAudioConverter + + + + result input rate + + + + result output rate + + + + + + Calculate how many input frames are currently needed by @convert to produce +@out_frames of output frames. + + + the number of input frames + + + + + a #GstAudioConverter + + + + number of output frames + + + + + + Get the maximum number of input frames that the converter would +need before producing output. + + + the latency of @convert as expressed in the number of +frames. + + + + + a #GstAudioConverter + + + + + + Calculate how many output frames can be produced when @in_frames input +frames are given to @convert. + + + the number of output frames + + + + + a #GstAudioConverter + + + + number of input frames + + + + + + Returns whether the audio converter will operate in passthrough mode. +The return value would be typically input to gst_base_transform_set_passthrough() + + + %TRUE when no conversion will actually occur. + + + + + + + + + + Reset @convert to the state it was when it was first created, clearing +any history it might currently have. + + + + + + + a #GstAudioConverter + + + + + + Perform the conversion with @in_frames in @in to @out_frames in @out +using @convert. + +In case the samples are interleaved, @in and @out must point to an +array with a single element pointing to a block of interleaved samples. + +If non-interleaved samples are used, @in and @out must point to an +array with pointers to memory blocks, one for each channel. + +@in may be %NULL, in which case @in_frames of silence samples are processed +by the converter. + +This function always produces @out_frames of output and consumes @in_frames of +input. Use gst_audio_converter_get_out_frames() and +gst_audio_converter_get_in_frames() to make sure @in_frames and @out_frames +are matching and @in and @out point to enough memory. + + + %TRUE is the conversion could be performed. + + + + + a #GstAudioConverter + + + + extra #GstAudioConverterFlags + + + + input frames + + + + number of input frames + + + + output frames + + + + number of output frames + + + + + + Returns whether the audio converter can perform the conversion in-place. +The return value would be typically input to gst_base_transform_set_in_place() + + + %TRUE when the conversion can be done in place. + + + + + a #GstAudioConverter + + + + + + Set @in_rate, @out_rate and @config as extra configuration for @convert. + +@in_rate and @out_rate specify the new sample rates of input and output +formats. A value of 0 leaves the sample rate unchanged. + +@config can be %NULL, in which case, the current configuration is not +changed. + +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 +option and values. + + + %TRUE when the new parameters could be set + + + + + a #GstAudioConverter + + + + input rate + + + + output rate + + + + a #GstStructure or %NULL + + + + + + + Extra flags passed to gst_audio_converter_new() and gst_audio_converter_samples(). + + no flag + + + the input sample arrays are writable and can be + used as temporary storage during conversion. + + + allow arbitrary rate updates with + gst_audio_converter_update_config(). + + + + This base class is for audio decoders turning encoded data into +raw audio samples. + +GstAudioDecoder and subclass should cooperate as follows. + +## Configuration + + * Initially, GstAudioDecoder calls @start when the decoder element + is activated, which allows subclass to perform any global setup. + Base class (context) parameters can already be set according to subclass + capabilities (or possibly upon receive more information in subsequent + @set_format). + * GstAudioDecoder calls @set_format to inform subclass of the format + of input audio data that it is about to receive. + While unlikely, it might be called more than once, if changing input + parameters require reconfiguration. + * GstAudioDecoder calls @stop at end of all processing. + +As of configuration stage, and throughout processing, GstAudioDecoder +provides various (context) parameters, e.g. describing the format of +output audio data (valid when output caps have been set) or current parsing state. +Conversely, subclass can and should configure context to inform +base class of its expectation w.r.t. buffer handling. + +## Data processing + * Base class gathers input data, and optionally allows subclass + to parse this into subsequently manageable (as defined by subclass) + chunks. Such chunks are subsequently referred to as 'frames', + though they may or may not correspond to 1 (or more) audio format frame. + * Input frame is provided to subclass' @handle_frame. + * If codec processing results in decoded data, subclass should call + @gst_audio_decoder_finish_frame to have decoded data pushed + downstream. + * Just prior to actually pushing a buffer downstream, + it is passed to @pre_push. Subclass should either use this callback + to arrange for additional downstream pushing or otherwise ensure such + custom pushing occurs after at least a method call has finished since + setting src pad caps. + * During the parsing process GstAudioDecoderClass will handle both + srcpad and sinkpad events. Sink events will be passed to subclass + if @event callback has been provided. + +## Shutdown phase + + * GstAudioDecoder class calls @stop to inform the subclass that data + parsing will be stopped. + +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 set the fixed caps on srcpad, when the format is ensured. This +is typically when base class calls subclass' @set_format function, though +it might be delayed until calling @gst_audio_decoder_finish_frame. + +In summary, above process should have subclass concentrating on +codec data processing while leaving other matters to base class, +such as most notably timestamp handling. While it may exert more control +in this area (see e.g. @pre_push), it is very much not recommended. + +In particular, base class will try to arrange for perfect output timestamps +as much as possible while tracking upstream timestamps. +To this end, if deviation between the next ideal expected perfect timestamp +and upstream exceeds #GstAudioDecoder:tolerance, then resync to upstream +occurs (which would happen always if the tolerance mechanism is disabled). + +In non-live pipelines, baseclass can also (configurably) arrange for +output buffer aggregation which may help to redue large(r) numbers of +small(er) buffers being pushed and processed downstream. Note that this +feature is only available if the buffer layout is interleaved. For planar +buffers, the decoder implementation is fully responsible for the output +buffer size. + +On the other hand, it should be noted that baseclass only provides limited +seeking support (upon explicit subclass request), as full-fledged support +should rather be left to upstream demuxer, parser or alike. This simple +approach caters for seeking and duration reporting using estimated input +bitrates. + +Things that subclass need to take care of: + + * Provide pad templates + * Set source pad caps when appropriate + * Set user-configurable properties to sane defaults for format and + implementing codec at hand, and convey some subclass capabilities and + expectations in context. + + * Accept data in @handle_frame and provide encoded results to + @gst_audio_decoder_finish_frame. If it is prepared to perform + PLC, it should also accept NULL data in @handle_frame and provide for + data for indicated duration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Negotiate with downstream elements to currently configured #GstAudioInfo. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helper function that allocates a buffer to hold an audio frame +for @dec's current output format. + + + allocated buffer + + + + + a #GstAudioDecoder + + + + size of the buffer + + + + + + Collects decoded data and pushes it downstream. + +@buf may be NULL in which case the indicated number of frames +are discarded and considered to have produced no output +(e.g. lead-in or setup frames). +Otherwise, source pad caps must be set when it is called with valid +data in @buf. + +Note that a frame received in #GstAudioDecoderClass.handle_frame() may be +invalidated by a call to this function. + + + a #GstFlowReturn that should be escalated to caller (of caller) + + + + + a #GstAudioDecoder + + + + decoded data + + + + number of decoded frames represented by decoded data + + + + + + Collects decoded data and pushes it downstream. This function may be called +multiple times for a given input frame. + +@buf may be NULL in which case it is assumed that the current input frame is +finished. This is equivalent to calling gst_audio_decoder_finish_subframe() +with a NULL buffer and frames=1 after having pushed out all decoded audio +subframes using this function. + +When called with valid data in @buf the source pad caps must have been set +already. + +Note that a frame received in #GstAudioDecoderClass.handle_frame() may be +invalidated by a call to this function. + + + a #GstFlowReturn that should be escalated to caller (of caller) + + + + + a #GstAudioDecoder + + + + decoded data + + + + + + Lets #GstAudioDecoder sub-classes to know the memory @allocator +used by the base class and its @params. + +Unref the @allocator after use it. + + + + + + + a #GstAudioDecoder + + + + the #GstAllocator +used + + + + the +#GstAllocationParams of @allocator + + + + + + + + a #GstAudioInfo describing the input audio format + + + + + a #GstAudioDecoder + + + + + + + + currently configured decoder delay + + + + + a #GstAudioDecoder + + + + + + Queries decoder drain handling. + + + TRUE if drainable handling is enabled. + +MT safe. + + + + + a #GstAudioDecoder + + + + + + + + currently configured byte to time conversion setting + + + + + a #GstAudioDecoder + + + + + + Sets the variables pointed to by @min and @max to the currently configured +latency. + + + + + + + a #GstAudioDecoder + + + + a pointer to storage to hold minimum latency + + + + a pointer to storage to hold maximum latency + + + + + + + + currently configured decoder tolerated error count. + + + + + a #GstAudioDecoder + + + + + + Queries decoder's latency aggregation. + + + aggregation latency. + +MT safe. + + + + + a #GstAudioDecoder + + + + + + Queries decoder required format handling. + + + TRUE if required format handling is enabled. + +MT safe. + + + + + a #GstAudioDecoder + + + + + + Return current parsing (sync and eos) state. + + + + + + + a #GstAudioDecoder + + + + a pointer to a variable to hold the current sync state + + + + a pointer to a variable to hold the current eos state + + + + + + Queries decoder packet loss concealment handling. + + + TRUE if packet loss concealment is enabled. + +MT safe. + + + + + a #GstAudioDecoder + + + + + + + + currently configured plc handling + + + + + a #GstAudioDecoder + + + + + + Queries current audio jitter tolerance threshold. + + + decoder audio jitter tolerance threshold. + +MT safe. + + + + + a #GstAudioDecoder + + + + + + Sets the audio decoder tags and how they should be merged with any +upstream stream tags. This will override any tags previously-set +with gst_audio_decoder_merge_tags(). + +Note that this is provided for convenience, and the subclass is +not required to use this and can still do tag handling on its own. + + + + + + + a #GstAudioDecoder + + + + a #GstTagList to merge, or NULL + + + + the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE + + + + + + Negotiate with downstream elements to currently configured #GstAudioInfo. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioDecoder + + + + + + Returns caps that express @caps (or sink template caps if @caps == NULL) +restricted to rate/channels/... combinations supported by downstream +elements. + + + a #GstCaps owned by caller + + + + + a #GstAudioDecoder + + + + initial caps + + + + filter caps + + + + + + Sets a caps in allocation query which are different from the set +pad's caps. Use this function before calling +gst_audio_decoder_negotiate(). Setting to %NULL the allocation +query will use the caps from the pad. + + + + + + + a #GstAudioDecoder + + + + a #GstCaps or %NULL + + + + + + Configures decoder drain handling. If drainable, subclass might +be handed a NULL buffer to have it return any leftover decoded data. +Otherwise, it is not considered so capable and will only ever be passed +real data. + +MT safe. + + + + + + + a #GstAudioDecoder + + + + new state + + + + + + Allows baseclass to perform byte to time estimated conversion. + + + + + + + a #GstAudioDecoder + + + + whether to enable byte to time conversion + + + + + + Sets decoder latency. If the provided values changed from +previously provided ones, this will also post a LATENCY message on the bus +so the pipeline can reconfigure its global latency. + + + + + + + a #GstAudioDecoder + + + + minimum latency + + + + maximum latency + + + + + + Sets numbers of tolerated decoder errors, where a tolerated one is then only +warned about, but more than tolerated will lead to fatal error. You can set +-1 for never returning fatal errors. Default is set to +GST_AUDIO_DECODER_MAX_ERRORS. + + + + + + + a #GstAudioDecoder + + + + max tolerated errors + + + + + + Sets decoder minimum aggregation latency. + +MT safe. + + + + + + + a #GstAudioDecoder + + + + new minimum latency + + + + + + Configures decoder format needs. If enabled, subclass needs to be +negotiated with format caps before it can process any data. It will then +never be handed any data before it has been configured. +Otherwise, it might be handed data without having been configured and +is then expected being able to do so either by default +or based on the input data. + +MT safe. + + + + + + + a #GstAudioDecoder + + + + new state + + + + + + Configure output caps on the srcpad of @dec. Similar to +gst_audio_decoder_set_output_format(), but allows subclasses to specify +output caps that can't be expressed via #GstAudioInfo e.g. caps that have +caps features. + + + %TRUE on success. + + + + + a #GstAudioDecoder + + + + (fixed) #GstCaps + + + + + + Configure output info on the srcpad of @dec. + + + %TRUE on success. + + + + + a #GstAudioDecoder + + + + #GstAudioInfo + + + + + + Enable or disable decoder packet loss concealment, provided subclass +and codec are capable and allow handling plc. + +MT safe. + + + + + + + a #GstAudioDecoder + + + + new state + + + + + + Indicates whether or not subclass handles packet loss concealment (plc). + + + + + + + a #GstAudioDecoder + + + + new plc state + + + + + + Configures decoder audio jitter tolerance threshold. + +MT safe. + + + + + + + a #GstAudioDecoder + + + + new tolerance + + + + + + Lets #GstAudioDecoder sub-classes decide if they want the sink pad +to use the default pad query handler to reply to accept-caps queries. + +By setting this to true it is possible to further customize the default +handler with %GST_PAD_SET_ACCEPT_INTERSECT and +%GST_PAD_SET_ACCEPT_TEMPLATE + + + + + + + a #GstAudioDecoder + + + + if the default pad accept-caps query handling should be used + + + + + + Maximum number of tolerated consecutive decode errors. See +gst_audio_decoder_set_max_errors() for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum @handle_frame (and likely @set_format) needs to be +overridden. + + + The parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set of available dithering methods. + + No dithering + + + Rectangular dithering + + + Triangular dithering (default) + + + High frequency triangular dithering + + + + Extra buffer metadata describing audio downmixing matrix. This metadata is +attached to audio buffers and contains a matrix to downmix the buffer number +of channels to @channels. + +@matrix is an two-dimensional array of @to_channels times @from_channels +coefficients, i.e. the i-th output channels is constructed by multiplicating +the input channels with the coefficients in @matrix[i] and taking the sum +of the results. + + + parent #GstMeta + + + + the channel positions of the source + + + + the channel positions of the destination + + + + the number of channels of the source + + + + the number of channels of the destination + + + + the matrix coefficients. + + + + + + + + + + + This base class is for audio encoders turning raw audio samples into +encoded audio data. + +GstAudioEncoder and subclass should cooperate as follows. + +## Configuration + + * Initially, GstAudioEncoder calls @start when the encoder element + is activated, which allows subclass to perform any global setup. + + * GstAudioEncoder calls @set_format to inform subclass of the format + of input audio data that it is about to receive. Subclass should + setup for encoding and configure various base class parameters + appropriately, notably those directing desired input data handling. + While unlikely, it might be called more than once, if changing input + parameters require reconfiguration. + + * GstAudioEncoder calls @stop at end of all processing. + +As of configuration stage, and throughout processing, GstAudioEncoder +maintains various parameters that provide required context, +e.g. describing the format of input audio data. +Conversely, subclass can and should configure these context parameters +to inform base class of its expectation w.r.t. buffer handling. + +## Data processing + + * Base class gathers input sample data (as directed by the context's + frame_samples and frame_max) and provides this to subclass' @handle_frame. + * If codec processing results in encoded data, subclass should call + gst_audio_encoder_finish_frame() to have encoded data pushed + downstream. Alternatively, it might also call + gst_audio_encoder_finish_frame() (with a NULL buffer and some number of + dropped samples) to indicate dropped (non-encoded) samples. + * Just prior to actually pushing a buffer downstream, + it is passed to @pre_push. + * During the parsing process GstAudioEncoderClass will handle both + srcpad and sinkpad events. Sink events will be passed to subclass + if @event callback has been provided. + +## Shutdown phase + + * GstAudioEncoder class calls @stop to inform the subclass that data + parsing will be stopped. + +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 set the fixed caps on srcpad, when the format is ensured. This +is typically when base class calls subclass' @set_format function, though +it might be delayed until calling @gst_audio_encoder_finish_frame. + +In summary, above process should have subclass concentrating on +codec data processing while leaving other matters to base class, +such as most notably timestamp handling. While it may exert more control +in this area (see e.g. @pre_push), it is very much not recommended. + +In particular, base class will either favor tracking upstream timestamps +(at the possible expense of jitter) or aim to arrange for a perfect stream of +output timestamps, depending on #GstAudioEncoder:perfect-timestamp. +However, in the latter case, the input may not be so perfect or ideal, which +is handled as follows. An input timestamp is compared with the expected +timestamp as dictated by input sample stream and if the deviation is less +than #GstAudioEncoder:tolerance, the deviation is discarded. +Otherwise, it is considered a discontuinity and subsequent output timestamp +is resynced to the new position after performing configured discontinuity +processing. In the non-perfect-timestamp case, an upstream variation +exceeding tolerance only leads to marking DISCONT on subsequent outgoing +(while timestamps are adjusted to upstream regardless of variation). +While DISCONT is also marked in the perfect-timestamp case, this one +optionally (see #GstAudioEncoder:hard-resync) +performs some additional steps, such as clipping of (early) input samples +or draining all currently remaining input data, depending on the direction +of the discontuinity. + +If perfect timestamps are arranged, it is also possible to request baseclass +(usually set by subclass) to provide additional buffer metadata (in OFFSET +and OFFSET_END) fields according to granule defined semantics currently +needed by oggmux. Specifically, OFFSET is set to granulepos (= sample count +including buffer) and OFFSET_END to corresponding timestamp (as determined +by same sample count and sample rate). + +Things that subclass need to take care of: + + * Provide pad templates + * Set source pad caps when appropriate + * Inform base class of buffer processing needs using context's + frame_samples and frame_bytes. + * Set user-configurable properties to sane defaults for format and + implementing codec at hand, e.g. those controlling timestamp behaviour + and discontinuity processing. + * Accept data in @handle_frame and provide encoded results to + gst_audio_encoder_finish_frame(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Negotiate with downstream elements to currently configured #GstCaps. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helper function that allocates a buffer to hold an encoded audio frame +for @enc's current output format. + + + allocated buffer + + + + + a #GstAudioEncoder + + + + size of the buffer + + + + + + Collects encoded data and pushes encoded data downstream. +Source pad caps must be set when this is called. + +If @samples < 0, then best estimate is all samples provided to encoder +(subclass) so far. @buf may be NULL, in which case next number of @samples +are considered discarded, e.g. as a result of discontinuous transmission, +and a discontinuity is marked. + +Note that samples received in #GstAudioEncoderClass.handle_frame() +may be invalidated by a call to this function. + + + a #GstFlowReturn that should be escalated to caller (of caller) + + + + + a #GstAudioEncoder + + + + encoded data + + + + number of samples (per channel) represented by encoded data + + + + + + Lets #GstAudioEncoder sub-classes to know the memory @allocator +used by the base class and its @params. + +Unref the @allocator after use it. + + + + + + + a #GstAudioEncoder + + + + the #GstAllocator +used + + + + the +#GstAllocationParams of @allocator + + + + + + + + a #GstAudioInfo describing the input audio format + + + + + a #GstAudioEncoder + + + + + + Queries encoder drain handling. + + + TRUE if drainable handling is enabled. + +MT safe. + + + + + a #GstAudioEncoder + + + + + + + + currently configured maximum handled frames + + + + + a #GstAudioEncoder + + + + + + + + currently maximum requested samples per frame + + + + + a #GstAudioEncoder + + + + + + + + currently minimum requested samples per frame + + + + + a #GstAudioEncoder + + + + + + Queries encoder hard minimum handling. + + + TRUE if hard minimum handling is enabled. + +MT safe. + + + + + a #GstAudioEncoder + + + + + + + + + + + + + + + + + Sets the variables pointed to by @min and @max to the currently configured +latency. + + + + + + + a #GstAudioEncoder + + + + a pointer to storage to hold minimum latency + + + + a pointer to storage to hold maximum latency + + + + + + + + currently configured encoder lookahead + + + + + a #GstAudioEncoder + + + + + + Queries if the encoder will handle granule marking. + + + TRUE if granule marking is enabled. + +MT safe. + + + + + a #GstAudioEncoder + + + + + + Queries encoder perfect timestamp behaviour. + + + TRUE if perfect timestamp setting enabled. + +MT safe. + + + + + a #GstAudioEncoder + + + + + + Queries current audio jitter tolerance threshold. + + + encoder audio jitter tolerance threshold. + +MT safe. + + + + + a #GstAudioEncoder + + + + + + Sets the audio encoder tags and how they should be merged with any +upstream stream tags. This will override any tags previously-set +with gst_audio_encoder_merge_tags(). + +Note that this is provided for convenience, and the subclass is +not required to use this and can still do tag handling on its own. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + a #GstTagList to merge, or NULL to unset + previously-set tags + + + + the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE + + + + + + Negotiate with downstream elements to currently configured #GstCaps. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioEncoder + + + + + + Returns caps that express @caps (or sink template caps if @caps == NULL) +restricted to channel/rate combinations supported by downstream elements +(e.g. muxers). + + + a #GstCaps owned by caller + + + + + a #GstAudioEncoder + + + + initial caps + + + + filter caps + + + + + + Sets a caps in allocation query which are different from the set +pad's caps. Use this function before calling +gst_audio_encoder_negotiate(). Setting to %NULL the allocation +query will use the caps from the pad. + + + + + + + a #GstAudioEncoder + + + + a #GstCaps or %NULL + + + + + + Configures encoder drain handling. If drainable, subclass might +be handed a NULL buffer to have it return any leftover encoded data. +Otherwise, it is not considered so capable and will only ever be passed +real data. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + new state + + + + + + Sets max number of frames accepted at once (assumed minimally 1). +Requires @frame_samples_min and @frame_samples_max to be the equal. + +Note: This value will be reset to 0 every time before +#GstAudioEncoderClass.set_format() is called. + + + + + + + a #GstAudioEncoder + + + + number of frames + + + + + + Sets number of samples (per channel) subclass needs to be handed, +at most or will be handed all available if 0. + +If an exact number of samples is required, gst_audio_encoder_set_frame_samples_min() +must be called with the same number. + +Note: This value will be reset to 0 every time before +#GstAudioEncoderClass.set_format() is called. + + + + + + + a #GstAudioEncoder + + + + number of samples per frame + + + + + + Sets number of samples (per channel) subclass needs to be handed, +at least or will be handed all available if 0. + +If an exact number of samples is required, gst_audio_encoder_set_frame_samples_max() +must be called with the same number. + +Note: This value will be reset to 0 every time before +#GstAudioEncoderClass.set_format() is called. + + + + + + + a #GstAudioEncoder + + + + number of samples per frame + + + + + + Configures encoder hard minimum handling. If enabled, subclass +will never be handed less samples than it configured, which otherwise +might occur near end-of-data handling. Instead, the leftover samples +will simply be discarded. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + new state + + + + + + + + + + + + + + + + + + + + Set the codec headers to be sent downstream whenever requested. + + + + + + + a #GstAudioEncoder + + + + a list of + #GstBuffer containing the codec header + + + + + + + + Sets encoder latency. If the provided values changed from +previously provided ones, this will also post a LATENCY message on the bus +so the pipeline can reconfigure its global latency. + + + + + + + a #GstAudioEncoder + + + + minimum latency + + + + maximum latency + + + + + + Sets encoder lookahead (in units of input rate samples) + +Note: This value will be reset to 0 every time before +#GstAudioEncoderClass.set_format() is called. + + + + + + + a #GstAudioEncoder + + + + lookahead + + + + + + Enable or disable encoder granule handling. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + new state + + + + + + Configure output caps on the srcpad of @enc. + + + %TRUE on success. + + + + + a #GstAudioEncoder + + + + #GstCaps + + + + + + Enable or disable encoder perfect output timestamp preference. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + new state + + + + + + Configures encoder audio jitter tolerance threshold. + +MT safe. + + + + + + + a #GstAudioEncoder + + + + new tolerance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum @set_format and @handle_frame needs to be overridden. + + + The parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAudioEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioFilter is a #GstBaseTransform<!-- -->-derived base class for simple audio +filters, ie. those that output the same format that they get as input. + +#GstAudioFilter will parse the input format for you (with error checking) +before calling your setup function. Also, elements deriving from +#GstAudioFilter may use gst_audio_filter_class_add_pad_templates() from +their class_init function to easily configure the set of caps/formats that +the element is able to handle. + +Derived classes should override the #GstAudioFilterClass.setup() and +#GstBaseTransformClass.transform_ip() and/or +#GstBaseTransformClass.transform() +virtual functions in their class_init function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In addition to the @setup virtual function, you should also override the +GstBaseTransform::transform and/or GstBaseTransform::transform_ip virtual +function. + + + parent class + + + + + + + + + + + + + + + + + + + + + + + + + Convenience function to add pad templates to this element class, with +@allowed_caps as the caps that can be handled. + +This function is usually used from within a GObject class_init function. + + + + + + + an #GstAudioFilterClass + + + + what formats the filter can handle, as #GstCaps + + + + + + + Extra audio flags + + no valid flag + + + the position array explicitly + contains unpositioned channels. + + + + Enum value describing the most common audio formats. + + unknown or unset audio format + + + encoded audio format + + + 8 bits in 8 bits, signed + + + 8 bits in 8 bits, unsigned + + + 16 bits in 16 bits, signed, little endian + + + 16 bits in 16 bits, signed, big endian + + + 16 bits in 16 bits, unsigned, little endian + + + 16 bits in 16 bits, unsigned, big endian + + + 24 bits in 32 bits, signed, little endian + + + 24 bits in 32 bits, signed, big endian + + + 24 bits in 32 bits, unsigned, little endian + + + 24 bits in 32 bits, unsigned, big endian + + + 32 bits in 32 bits, signed, little endian + + + 32 bits in 32 bits, signed, big endian + + + 32 bits in 32 bits, unsigned, little endian + + + 32 bits in 32 bits, unsigned, big endian + + + 24 bits in 24 bits, signed, little endian + + + 24 bits in 24 bits, signed, big endian + + + 24 bits in 24 bits, unsigned, little endian + + + 24 bits in 24 bits, unsigned, big endian + + + 20 bits in 24 bits, signed, little endian + + + 20 bits in 24 bits, signed, big endian + + + 20 bits in 24 bits, unsigned, little endian + + + 20 bits in 24 bits, unsigned, big endian + + + 18 bits in 24 bits, signed, little endian + + + 18 bits in 24 bits, signed, big endian + + + 18 bits in 24 bits, unsigned, little endian + + + 18 bits in 24 bits, unsigned, big endian + + + 32-bit floating point samples, little endian + + + 32-bit floating point samples, big endian + + + 64-bit floating point samples, little endian + + + 64-bit floating point samples, big endian + + + 16 bits in 16 bits, signed, native endianness + + + 16 bits in 16 bits, unsigned, native endianness + + + 24 bits in 32 bits, signed, native endianness + + + 24 bits in 32 bits, unsigned, native endianness + + + 32 bits in 32 bits, signed, native endianness + + + 32 bits in 32 bits, unsigned, native endianness + + + 24 bits in 24 bits, signed, native endianness + + + 24 bits in 24 bits, unsigned, native endianness + + + 20 bits in 24 bits, signed, native endianness + + + 20 bits in 24 bits, unsigned, native endianness + + + 18 bits in 24 bits, signed, native endianness + + + 18 bits in 24 bits, unsigned, native endianness + + + 32-bit floating point samples, native endianness + + + 64-bit floating point samples, native endianness + + + Construct a #GstAudioFormat with given parameters. + + + a #GstAudioFormat or GST_AUDIO_FORMAT_UNKNOWN when no audio format +exists with the given parameters. + + + + + signed or unsigned format + + + + G_LITTLE_ENDIAN or G_BIG_ENDIAN + + + + amount of bits used per sample + + + + amount of used bits in @width + + + + + + Fill @length bytes in @dest with silence samples for @info. + Use gst_audio_format_info_fill_silence() instead. + + + + + + + a #GstAudioFormatInfo + + + + a destination + to fill + + + + + + the length to fill + + + + + + Convert the @format string to its #GstAudioFormat. + + + the #GstAudioFormat for @format or GST_AUDIO_FORMAT_UNKNOWN when the +string is not a known format. + + + + + a format string + + + + + + Get the #GstAudioFormatInfo for @format + + + The #GstAudioFormatInfo for @format. + + + + + a #GstAudioFormat + + + + + + + + + + + + + + + + + + The different audio flags that a format info can have. + + integer samples + + + float samples + + + signed samples + + + complex layout + + + the format can be used in +#GstAudioFormatUnpack and #GstAudioFormatPack functions + + + + Information for an audio format. + + + #GstAudioFormat + + + + string representation of the format + + + + user readable description of the format + + + + #GstAudioFormatFlags + + + + the endianness + + + + amount of bits used for one sample + + + + amount of valid bits in @width + + + + @width/8 bytes with 1 silent sample + + + + + + the format of the unpacked samples + + + + function to unpack samples + + + + function to pack samples + + + + + + + + + Fill @length bytes in @dest with silence samples for @info. + + + + + + + a #GstAudioFormatInfo + + + + a destination + to fill + + + + + + the length to fill + + + + + + + Packs @length samples from @src to the data array in format @info. +The samples from source have each channel interleaved +and will be packed into @data. + + + + + + + a #GstAudioFormatInfo + + + + #GstAudioPackFlags + + + + a source array + + + + + + pointer to the destination + data + + + + + + the amount of samples to pack. + + + + + + Unpacks @length samples from the given data of format @info. +The samples will be unpacked into @dest which each channel +interleaved. @dest should at least be big enough to hold @length * +channels * size(unpack_format) bytes. + + + + + + + a #GstAudioFormatInfo + + + + #GstAudioPackFlags + + + + a destination array + + + + + + pointer to the audio data + + + + + + the amount of samples to unpack. + + + + + + Information describing audio properties. This information can be filled +in from GstCaps with gst_audio_info_from_caps(). + +Use the provided macros to access the info in this structure. + + + the format info of the audio + + + + additional audio flags + + + + audio layout + + + + the audio sample rate + + + + the number of channels + + + + the number of bytes for one frame, this is the size of one + sample * @channels + + + + the positions for each channel + + + + + + + + + + + Allocate a new #GstAudioInfo that is also initialized with +gst_audio_info_init(). + + + a new #GstAudioInfo. free with gst_audio_info_free(). + + + + + Parse @caps to generate a #GstAudioInfo. + + + A #GstAudioInfo, or %NULL if @caps couldn't be parsed + + + + + a #GstCaps + + + + + + Converts among various #GstFormat types. This function handles +GST_FORMAT_BYTES, GST_FORMAT_TIME, and GST_FORMAT_DEFAULT. For +raw audio, GST_FORMAT_DEFAULT corresponds to audio frames. This +function can be used to handle pad queries of the type GST_QUERY_CONVERT. + + + TRUE if the conversion was successful. + + + + + a #GstAudioInfo + + + + #GstFormat of the @src_val + + + + value to convert + + + + #GstFormat of the @dest_val + + + + pointer to destination value + + + + + + Copy a GstAudioInfo structure. + + + a new #GstAudioInfo. free with gst_audio_info_free. + + + + + a #GstAudioInfo + + + + + + Free a GstAudioInfo structure previously allocated with gst_audio_info_new() +or gst_audio_info_copy(). + + + + + + + a #GstAudioInfo + + + + + + Compares two #GstAudioInfo and returns whether they are equal or not + + + %TRUE if @info and @other are equal, else %FALSE. + + + + + a #GstAudioInfo + + + + a #GstAudioInfo + + + + + + Set the default info for the audio info of @format and @rate and @channels. + +Note: This initializes @info first, no values are preserved. + + + + + + + a #GstAudioInfo + + + + the format + + + + the samplerate + + + + the number of channels + + + + the channel positions + + + + + + + + Convert the values of @info into a #GstCaps. + + + the new #GstCaps containing the + info of @info. + + + + + a #GstAudioInfo + + + + + + Parse @caps and update @info. + + + TRUE if @caps could be parsed + + + + + a #GstAudioInfo + + + + a #GstCaps + + + + + + Initialize @info with default values. + + + + + + + a #GstAudioInfo + + + + + + + Layout of the audio samples for the different channels. + + interleaved audio + + + non-interleaved audio + + + + Meta containing Audio Level Indication: https://tools.ietf.org/html/rfc6464 + + + parent #GstMeta + + + + the -dBov from 0-127 (127 is silence). + + + + whether the buffer contains voice activity + + + + Return the #GstMetaInfo associated with #GstAudioLevelMeta. + + + a #GstMetaInfo + + + + + + #GstAudioDownmixMeta defines an audio downmix matrix to be send along with +audio buffers. These functions in this module help to create and attach the +meta as well as extracting it. + + + parent #GstMeta + + + + the audio properties of the buffer + + + + the number of valid samples in the buffer + + + + the offsets (in bytes) where each channel plane starts in the + buffer or %NULL if the buffer has interleaved layout; if not %NULL, this + is guaranteed to be an array of @info.channels elements + + + + + + + + + + + + + + + + + + + + + Set of available noise shaping methods + + No noise shaping (default) + + + Error feedback + + + Simple 2-pole noise shaping + + + Medium 5-pole noise shaping + + + High 8-pole noise shaping + + + + The different flags that can be used when packing and unpacking. + + No flag + + + When the source has a smaller depth + than the target format, set the least significant bits of the target + 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. + + + + + + Free a #GstAudioQuantize. + + + + + + + a #GstAudioQuantize + + + + + + Reset @quant to the state is was when created, clearing any +history it might have. + + + + + + + a #GstAudioQuantize + + + + + + Perform quantization on @samples in @in and write the result to @out. + +In case the samples are interleaved, @in and @out must point to an +array with a single element pointing to a block of interleaved samples. + +If non-interleaved samples are used, @in and @out must point to an +array with pointers to memory blocks, one for each channel. + +@in and @out may point to the same memory location, in which case samples will be +modified in-place. + + + + + + + a #GstAudioQuantize + + + + input samples + + + + output samples + + + + number of samples + + + + + + Create a new quantizer object with the given parameters. + +Output samples will be quantized to a multiple of @quantizer. Better +performance is achieved when @quantizer is a power of 2. + +Dithering and noise-shaping can be performed during quantization with +the @dither and @ns parameters. + + + a new #GstAudioQuantize. Free with gst_audio_quantize_free(). + + + + + a #GstAudioDitherMethod + + + + a #GstAudioNoiseShapingMethod + + + + #GstAudioQuantizeFlags + + + + the #GstAudioFormat of the samples + + + + the amount of channels in the samples + + + + the quantizer to use + + + + + + + Extra flags that can be passed to gst_audio_quantize_new() + + no flags + + + samples are non-interleaved + + + + #GstAudioResampler is a structure which holds the information +required to perform various kinds of resampling filtering. + + + Free a previously allocated #GstAudioResampler @resampler. + + + + + + + a #GstAudioResampler + + + + + + Get the number of input frames that would currently be needed +to produce @out_frames from @resampler. + + + The number of input frames needed for producing +@out_frames of data from @resampler. + + + + + a #GstAudioResampler + + + + number of input frames + + + + + + Get the maximum number of input samples that the resampler would +need before producing output. + + + the latency of @resampler as expressed in the number of +frames. + + + + + a #GstAudioResampler + + + + + + Get the number of output frames that would be currently available when +@in_frames are given to @resampler. + + + The number of frames that would be available after giving +@in_frames as input to @resampler. + + + + + a #GstAudioResampler + + + + number of input frames + + + + + + Perform resampling on @in_frames frames in @in and write @out_frames to @out. + +In case the samples are interleaved, @in and @out must point to an +array with a single element pointing to a block of interleaved samples. + +If non-interleaved samples are used, @in and @out must point to an +array with pointers to memory blocks, one for each channel. + +@in may be %NULL, in which case @in_frames of silence samples are pushed +into the resampler. + +This function always produces @out_frames of output and consumes @in_frames of +input. Use gst_audio_resampler_get_out_frames() and +gst_audio_resampler_get_in_frames() to make sure @in_frames and @out_frames +are matching and @in and @out point to enough memory. + + + + + + + a #GstAudioResampler + + + + input samples + + + + number of input frames + + + + output samples + + + + number of output frames + + + + + + Reset @resampler to the state it was when it was first created, discarding +all sample history. + + + + + + + a #GstAudioResampler + + + + + + Update the resampler parameters for @resampler. This function should +not be called concurrently with any other function on @resampler. + +When @in_rate or @out_rate is 0, its value is unchanged. + +When @options is %NULL, the previously configured options are reused. + + + %TRUE if the new parameters could be set + + + + + a #GstAudioResampler + + + + new input rate + + + + new output rate + + + + new options or %NULL + + + + + + Make a new resampler. + + + The new #GstAudioResampler. + + + + + a #GstAudioResamplerMethod + + + + #GstAudioResamplerFlags + + + + the #GstAudioFormat + + + + the number of channels + + + + input rate + + + + output rate + + + + extra options + + + + + + Set the parameters for resampling from @in_rate to @out_rate using @method +for @quality in @options. + + + + + + + a #GstAudioResamplerMethod + + + + the quality + + + + the input rate + + + + the output rate + + + + a #GstStructure + + + + + + + The different filter interpolation methods. + + no interpolation + + + linear interpolation of the + filter coefficients. + + + cubic interpolation of the + filter coefficients. + + + + Select for the filter tables should be set up. + + Use interpolated filter tables. This + uses less memory but more CPU and is slightly less accurate but it allows for more + efficient variable rate resampling with gst_audio_resampler_update(). + + + Use full filter table. This uses more memory + but less CPU. + + + Automatically choose between interpolated + and full filter tables. + + + + Different resampler flags. + + no flags + + + input samples are non-interleaved. + an array of blocks of samples, one for each channel, should be passed to the + resample function. + + + output samples are non-interleaved. + an array of blocks of samples, one for each channel, should be passed to the + resample function. + + + optimize for dynamic updates of the sample + rates with gst_audio_resampler_update(). This will select an interpolating filter + when #GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO is configured. + + + + Different subsampling and upsampling methods + + Duplicates the samples when + upsampling and drops when downsampling + + + Uses linear interpolation to reconstruct + missing samples and averaging to downsample + + + Uses cubic interpolation + + + Uses Blackman-Nuttall windowed sinc interpolation + + + Uses Kaiser windowed sinc interpolation + + + + This object is the base class for audio ringbuffers used by the base +audio source and sink classes. + +The ringbuffer abstracts a circular buffer of data. One reader and +one writer can operate on the data from different threads in a lockfree +manner. The base class is sufficiently flexible to be used as an +abstraction for DMA based ringbuffers as well as a pure software +implementations. + + + Print debug info about the buffer sized in @spec to the debug log. + + + + + + + the spec to debug + + + + + + Print debug info about the parsed caps in @spec to the debug log. + + + + + + + the spec to debug + + + + + + Parse @caps into @spec. + + + TRUE if the caps could be parsed. + + + + + a spec + + + + a #GstCaps + + + + + + Allocate the resources for the ringbuffer. This function fills +in the data pointer of the ring buffer with a valid #GstBuffer +to which samples can be written. + + + TRUE if the device could be acquired, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to acquire + + + + the specs of the buffer + + + + + + Activate @buf to start or stop pulling data. + +MT safe. + + + TRUE if the device could be activated in the requested mode, +FALSE on error. + + + + + the #GstAudioRingBuffer to activate + + + + the new mode + + + + + + Clear all samples from the ringbuffer. + +MT safe. + + + + + + + the #GstAudioRingBuffer to clear + + + + + + Close the audio device associated with the ring buffer. The ring buffer +should already have been released via gst_audio_ring_buffer_release(). + + + TRUE if the device could be closed, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + Commit @in_samples samples pointed to by @data to the ringbuffer @buf. + +@in_samples and @out_samples define the rate conversion to perform on the +samples in @data. For negative rates, @out_samples must be negative and +@in_samples positive. + +When @out_samples is positive, the first sample will be written at position @sample +in the ringbuffer. When @out_samples is negative, the last sample will be written to +@sample in reverse order. + +@out_samples does not need to be a multiple of the segment size of the ringbuffer +although it is recommended for optimal performance. + +@accum will hold a temporary accumulator used in rate conversion and should be +set to 0 when this function is first called. In case the commit operation is +interrupted, one can resume the processing by passing the previously returned +@accum value back to this function. + +MT safe. + + + The number of samples written to the ringbuffer or -1 on error. The +number of samples written can be less than @out_samples when @buf was interrupted +with a flush or stop. + + + + + the #GstAudioRingBuffer to commit + + + + the sample position of the data + + + + the data to commit + + + + + + the number of samples in the data to commit + + + + the number of samples to write to the ringbuffer + + + + accumulator for rate conversion. + + + + + + Get the number of samples queued in the audio device. This is +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 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 transferred to the ringbuffer. + + + The number of samples queued in the audio device. + +MT safe. + + + + + the #GstAudioRingBuffer to query + + + + + + Open the audio device associated with the ring buffer. Does not perform any +setup on the device. You must open the device before acquiring the ring +buffer. + + + TRUE if the device could be opened, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + Pause processing samples from the ringbuffer. + + + TRUE if the device could be paused, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to pause + + + + + + Free the resources of the ringbuffer. + + + TRUE if the device could be released, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to release + + + + + + + + + + + + + + + + + Start processing samples from the ringbuffer. + + + TRUE if the device could be started, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to start + + + + + + Stop processing samples from the ringbuffer. + + + TRUE if the device could be stopped, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to stop + + + + + + Allocate the resources for the ringbuffer. This function fills +in the data pointer of the ring buffer with a valid #GstBuffer +to which samples can be written. + + + TRUE if the device could be acquired, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to acquire + + + + the specs of the buffer + + + + + + Activate @buf to start or stop pulling data. + +MT safe. + + + TRUE if the device could be activated in the requested mode, +FALSE on error. + + + + + the #GstAudioRingBuffer to activate + + + + the new mode + + + + + + Subclasses should call this function to notify the fact that +@advance segments are now processed by the device. + +MT safe. + + + + + + + the #GstAudioRingBuffer to advance + + + + the number of segments written + + + + + + Clear the given segment of the buffer with silence samples. +This function is used by subclasses. + +MT safe. + + + + + + + the #GstAudioRingBuffer to clear + + + + the segment to clear + + + + + + Clear all samples from the ringbuffer. + +MT safe. + + + + + + + the #GstAudioRingBuffer to clear + + + + + + Close the audio device associated with the ring buffer. The ring buffer +should already have been released via gst_audio_ring_buffer_release(). + + + TRUE if the device could be closed, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + Commit @in_samples samples pointed to by @data to the ringbuffer @buf. + +@in_samples and @out_samples define the rate conversion to perform on the +samples in @data. For negative rates, @out_samples must be negative and +@in_samples positive. + +When @out_samples is positive, the first sample will be written at position @sample +in the ringbuffer. When @out_samples is negative, the last sample will be written to +@sample in reverse order. + +@out_samples does not need to be a multiple of the segment size of the ringbuffer +although it is recommended for optimal performance. + +@accum will hold a temporary accumulator used in rate conversion and should be +set to 0 when this function is first called. In case the commit operation is +interrupted, one can resume the processing by passing the previously returned +@accum value back to this function. + +MT safe. + + + The number of samples written to the ringbuffer or -1 on error. The +number of samples written can be less than @out_samples when @buf was interrupted +with a flush or stop. + + + + + the #GstAudioRingBuffer to commit + + + + the sample position of the data + + + + the data to commit + + + + + + the number of samples in the data to commit + + + + the number of samples to write to the ringbuffer + + + + accumulator for rate conversion. + + + + + + Convert @src_val in @src_fmt to the equivalent value in @dest_fmt. The result +will be put in @dest_val. + + + TRUE if the conversion succeeded. + + + + + the #GstAudioRingBuffer + + + + the source format + + + + the source value + + + + the destination format + + + + a location to store the converted value + + + + + + Get the number of samples queued in the audio device. This is +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 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 transferred to the ringbuffer. + + + The number of samples queued in the audio device. + +MT safe. + + + + + the #GstAudioRingBuffer to query + + + + + + Checks the status of the device associated with the ring buffer. + + + TRUE if the device was open, FALSE if it was closed. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + Check if the ringbuffer is acquired and ready to use. + + + TRUE if the ringbuffer is acquired, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to check + + + + + + Check if @buf is activated. + +MT safe. + + + TRUE if the device is active. + + + + + the #GstAudioRingBuffer + + + + + + Check if @buf is flushing. + +MT safe. + + + TRUE if the device is flushing. + + + + + the #GstAudioRingBuffer + + + + + + Tell the ringbuffer that it is allowed to start playback when +the ringbuffer is filled with samples. + +MT safe. + + + + + + + the #GstAudioRingBuffer + + + + the new value + + + + + + Open the audio device associated with the ring buffer. Does not perform any +setup on the device. You must open the device before acquiring the ring +buffer. + + + TRUE if the device could be opened, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + Pause processing samples from the ringbuffer. + + + TRUE if the device could be paused, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to pause + + + + + + Returns a pointer to memory where the data from segment @segment +can be found. This function is mostly used by subclasses. + + + FALSE if the buffer is not started. + +MT safe. + + + + + the #GstAudioRingBuffer to read from + + + + the segment to read + + + + + the pointer to the memory where samples can be read + + + + + + the number of bytes to read + + + + + + Read @len samples from the ringbuffer into the memory pointed +to by @data. +The first sample should be read from position @sample in +the ringbuffer. + +@len should not be a multiple of the segment size of the ringbuffer +although it is recommended. + +@timestamp will return the timestamp associated with the data returned. + + + The number of samples read from the ringbuffer or -1 on +error. + +MT safe. + + + + + the #GstAudioRingBuffer to read from + + + + the sample position of the data + + + + where the data should be read + + + + + + the number of samples in data to read + + + + where the timestamp is returned + + + + + + Free the resources of the ringbuffer. + + + TRUE if the device could be released, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to release + + + + + + Get the number of samples that were processed by the ringbuffer +since it was last started. This does not include the number of samples not +yet processed (see gst_audio_ring_buffer_delay()). + + + The number of samples processed by the ringbuffer. + +MT safe. + + + + + the #GstAudioRingBuffer to query + + + + + + Sets the given callback function on the buffer. This function +will be called every time a segment has been written to a device. + +MT safe. + + + + + + + the #GstAudioRingBuffer to set the callback on + + + + the callback to set + + + + user data passed to the callback + + + + + + Sets the given callback function on the buffer. This function +will be called every time a segment has been written to a device. + +MT safe. + + + + + + + the #GstAudioRingBuffer to set the callback on + + + + the callback to set + + + + user data passed to the callback + + + + function to be called when @user_data is no longer needed + + + + + + Tell the ringbuffer about the device's channel positions. This must +be called in when the ringbuffer is acquired. + + + + + + + the #GstAudioRingBuffer + + + + the device channel positions + + + + + + + + Set the ringbuffer to flushing mode or normal mode. + +MT safe. + + + + + + + the #GstAudioRingBuffer to flush + + + + the new mode + + + + + + Make sure that the next sample written to the device is +accounted for as being the @sample sample written to the +device. This value will be used in reporting the current +sample position of the ringbuffer. + +This function will also clear the buffer with silence. + +MT safe. + + + + + + + the #GstAudioRingBuffer to use + + + + the sample number to set + + + + + + + + + + + + + + + + + + + + + + + Start processing samples from the ringbuffer. + + + TRUE if the device could be started, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to start + + + + + + Stop processing samples from the ringbuffer. + + + TRUE if the device could be stopped, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to stop + + + + + + + + + used to signal start/stop/pause/resume actions + + + + boolean indicating that the ringbuffer is open + + + + boolean indicating that the ringbuffer is acquired + + + + data in the ringbuffer + + + + size of data in the ringbuffer + + + + + + + format and layout of the ringbuffer data + + + + number of samples in one segment + + + + pointer to memory holding one segment of silence samples + + + + state of the buffer + + + + readpointer in the ringbuffer + + + + segment corresponding to segment 0 (unused) + + + + is a reader or writer waiting for a free segment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function is set with gst_audio_ring_buffer_set_callback() and is +called to fill the memory at @data with @len bytes of samples. + + + + + + + a #GstAudioRingBuffer + + + + target to fill + + + + + + amount to fill + + + + user data + + + + + + The vmethods that subclasses can override to implement the ringbuffer. + + + parent class + + + + + + + TRUE if the device could be opened, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + + + + + TRUE if the device could be acquired, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to acquire + + + + the specs of the buffer + + + + + + + + + + TRUE if the device could be released, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to release + + + + + + + + + + TRUE if the device could be closed, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer + + + + + + + + + + TRUE if the device could be started, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to start + + + + + + + + + + TRUE if the device could be paused, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to pause + + + + + + + + + + + + + + + + + + + + + + + TRUE if the device could be stopped, FALSE on error. + +MT safe. + + + + + the #GstAudioRingBuffer to stop + + + + + + + + + + The number of samples queued in the audio device. + +MT safe. + + + + + the #GstAudioRingBuffer to query + + + + + + + + + + TRUE if the device could be activated in the requested mode, +FALSE on error. + + + + + the #GstAudioRingBuffer to activate + + + + the new mode + + + + + + + + + + The number of samples written to the ringbuffer or -1 on error. The +number of samples written can be less than @out_samples when @buf was interrupted +with a flush or stop. + + + + + the #GstAudioRingBuffer to commit + + + + the sample position of the data + + + + the data to commit + + + + + + the number of samples in the data to commit + + + + the number of samples to write to the ringbuffer + + + + accumulator for rate conversion. + + + + + + + + + + + + + + the #GstAudioRingBuffer to clear + + + + + + + + + + + + + The format of the samples in the ringbuffer. + + samples in linear or float + + + samples in mulaw + + + samples in alaw + + + samples in ima adpcm + + + samples in mpeg audio (but not AAC) format + + + samples in gsm format + + + samples in IEC958 frames (e.g. AC3) + + + samples in AC3 format + + + samples in EAC3 format + + + samples in DTS format + + + samples in MPEG-2 AAC ADTS format + + + samples in MPEG-4 AAC ADTS format + + + samples in MPEG-2 AAC raw format (Since: 1.12) + + + samples in MPEG-4 AAC raw format (Since: 1.12) + + + samples in FLAC format (Since: 1.12) + + + + The structure containing the format specification of the ringbuffer. + + + The caps that generated the Spec. + + + + the sample type + + + + the #GstAudioInfo + + + + the latency in microseconds + + + + the total buffer size in microseconds + + + + the size of one segment in bytes + + + + the total number of segments + + + + number of segments queued in the lower level device, + defaults to segtotal + + + + + + + + + + The state of the ringbuffer. + + The ringbuffer is stopped + + + The ringbuffer is paused + + + The ringbuffer is started + + + The ringbuffer has encountered an + error after it has been started, e.g. because the device was + disconnected (Since: 1.2) + + + + This is the most simple base class for audio sinks that only requires +subclasses to implement a set of simple functions: + +* `open()` :Open the device. + +* `prepare()` :Configure the device with the specified format. + +* `write()` :Write samples to the device. + +* `reset()` :Unblock writes and flush the device. + +* `delay()` :Get the number of samples written but not yet played +by the device. + +* `unprepare()` :Undo operations done by prepare. + +* `close()` :Close the device. + +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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Write samples to the device. + + + + + + + + + + the sample data + + + + + + + + + + + + + + + + + + + + + + + + + the parent class structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the sample data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class extension structure. Since: 1.18 + + + + + + + + + + + + + + + + + + + + + This is the most simple base class for audio sources that only requires +subclasses to implement a set of simple functions: + +* `open()` :Open the device. +* `prepare()` :Configure the device with the specified format. +* `read()` :Read samples from the device. +* `reset()` :Unblock reads and flush the device. +* `delay()` :Get the number of samples in the device but not yet read. +* `unprepare()` :Undo operations done by prepare. +* `close()` :Close the device. + +All scheduling of samples and timestamps is done in this base class +together with #GstAudioBaseSrc using a default implementation of a +#GstAudioRingBuffer that uses threads. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Read samples from the device. + + + + + + + + + + the sample data + + + + + + + + + a #GstClockTime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioSrc class. Override the vmethod to implement +functionality. + + + the parent class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the sample data + + + + + + + + + a #GstClockTime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstAudioStreamAlign provides a helper object that helps tracking audio +stream alignment and discontinuities, and detects discontinuities if +possible. + +See gst_audio_stream_align_new() for a description of its parameters and +gst_audio_stream_align_process() for the details of the processing. + + + Allocate a new #GstAudioStreamAlign with the given configuration. All +processing happens according to sample rate @rate, until +gst_audio_stream_align_set_rate() is called with a new @rate. +A negative rate can be used for reverse playback. + +@alignment_threshold gives the tolerance in nanoseconds after which a +timestamp difference is considered a discontinuity. Once detected, +@discont_wait nanoseconds have to pass without going below the threshold +again until the output buffer is marked as a discontinuity. These can later +be re-configured with gst_audio_stream_align_set_alignment_threshold() and +gst_audio_stream_align_set_discont_wait(). + + + a new #GstAudioStreamAlign. free with gst_audio_stream_align_free(). + + + + + a sample rate + + + + a alignment threshold in nanoseconds + + + + discont wait in nanoseconds + + + + + + Copy a GstAudioStreamAlign structure. + + + a new #GstAudioStreamAlign. free with gst_audio_stream_align_free. + + + + + a #GstAudioStreamAlign + + + + + + Free a GstAudioStreamAlign structure previously allocated with gst_audio_stream_align_new() +or gst_audio_stream_align_copy(). + + + + + + + a #GstAudioStreamAlign + + + + + + Gets the currently configured alignment threshold. + + + The currently configured alignment threshold + + + + + a #GstAudioStreamAlign + + + + + + Gets the currently configured discont wait. + + + The currently configured discont wait + + + + + a #GstAudioStreamAlign + + + + + + Gets the currently configured sample rate. + + + The currently configured sample rate + + + + + a #GstAudioStreamAlign + + + + + + Returns the number of samples that were processed since the last +discontinuity was detected. + + + The number of samples processed since the last discontinuity. + + + + + a #GstAudioStreamAlign + + + + + + Timestamp that was passed when a discontinuity was detected, i.e. the first +timestamp after the discontinuity. + + + The last timestamp at when a discontinuity was detected + + + + + a #GstAudioStreamAlign + + + + + + Marks the next buffer as discontinuous and resets timestamp tracking. + + + + + + + a #GstAudioStreamAlign + + + + + + Processes data with @timestamp and @n_samples, and returns the output +timestamp, duration and sample position together with a boolean to signal +whether a discontinuity was detected or not. All non-discontinuous data +will have perfect timestamps and durations. + +A discontinuity is detected once the difference between the actual +timestamp and the timestamp calculated from the sample count since the last +discontinuity differs by more than the alignment threshold for a duration +longer than discont wait. + +Note: In reverse playback, every buffer is considered discontinuous in the +context of buffer flags because the last sample of the previous buffer is +discontinuous with the first sample of the current one. However for this +function they are only considered discontinuous in reverse playback if the +first sample of the previous buffer is discontinuous with the last sample +of the current one. + + + %TRUE if a discontinuity was detected, %FALSE otherwise. + + + + + a #GstAudioStreamAlign + + + + if this data is considered to be discontinuous + + + + a #GstClockTime of the start of the data + + + + number of samples to process + + + + output timestamp of the data + + + + output duration of the data + + + + output sample position of the start of the data + + + + + + Sets @alignment_treshold as new alignment threshold for the following processing. + + + + + + + a #GstAudioStreamAlign + + + + a new alignment threshold + + + + + + Sets @alignment_treshold as new discont wait for the following processing. + + + + + + + a #GstAudioStreamAlign + + + + a new discont wait + + + + + + Sets @rate as new sample rate for the following processing. If the sample +rate differs this implicitly marks the next data as discontinuous. + + + + + + + a #GstAudioStreamAlign + + + + a new sample rate + + + + + + + Calculate frames from @clocktime and sample @rate. + + + + clock time + + + sampling rate + + + + + Calculate clocktime from sample @frames and @rate. + + + + sample frames + + + sampling rate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This metadata stays relevant as long as channels are unchanged. + + + + + This metadata stays relevant as long as sample rate is unchanged. + + + + + This metadata is relevant for audio streams. + + + + + + + + + + + + This interface is implemented by elements that provide a stream volume. Examples for +such elements are #volume and #playbin. + +Applications can use this interface to get or set the current stream volume. For this +the "volume" #GObject property can be used or the helper functions gst_stream_volume_set_volume() +and gst_stream_volume_get_volume(). This volume is always a linear factor, i.e. 0.0 is muted +1.0 is 100%. For showing the volume in a GUI it might make sense to convert it to +a different format by using gst_stream_volume_convert_volume(). Volume sliders should usually +use a cubic volume. + +Separate from the volume the stream can also be muted by the "mute" #GObject property or +gst_stream_volume_set_mute() and gst_stream_volume_get_mute(). + +Elements that provide some kind of stream volume should implement the "volume" and +"mute" #GObject properties and handle setting and getting of them properly. +The volume property is defined to be a linear volume factor. + + + + + the converted volume + + + + + #GstStreamVolumeFormat to convert from + + + + #GstStreamVolumeFormat to convert to + + + + Volume in @from format that should be converted + + + + + + + + Returns %TRUE if the stream is muted + + + + + #GstStreamVolume that should be used + + + + + + + + The current stream volume as linear factor + + + + + #GstStreamVolume that should be used + + + + #GstStreamVolumeFormat which should be returned + + + + + + + + + + + + #GstStreamVolume that should be used + + + + Mute state that should be set + + + + + + + + + + + + #GstStreamVolume that should be used + + + + #GstStreamVolumeFormat of @val + + + + Linear volume factor that should be set + + + + + + + + + + + + + Different representations of a stream volume. gst_stream_volume_convert_volume() +allows to convert between the different representations. + +Formulas to convert from a linear to a cubic or dB volume are +cbrt(val) and 20 * log10 (val). + + + Linear scale factor, 1.0 = 100% + + + Cubic volume scale + + + Logarithmic volume scale (dB, amplitude not power) + + + + + + + + + + Clip the buffer to the given %GstSegment. + +After calling this function the caller does not own a reference to +@buffer anymore. + + + %NULL if the buffer is completely outside the configured segment, +otherwise the clipped buffer is returned. + +If the buffer has no timestamp, it is assumed to be inside the segment and +is not clipped + + + + + The buffer to clip. + + + + Segment in %GST_FORMAT_TIME or %GST_FORMAT_DEFAULT to which + the buffer should be clipped. + + + + sample rate. + + + + size of one audio frame in bytes. This is the size of one sample * +number of channels. + + + + + + Maps an audio @gstbuffer so that it can be read or written and stores the +result of the map operation in @buffer. + +This is especially useful when the @gstbuffer is in non-interleaved (planar) +layout, in which case this function will use the information in the +@gstbuffer's attached #GstAudioMeta in order to map each channel in a +separate "plane" in #GstAudioBuffer. If a #GstAudioMeta is not attached +on the @gstbuffer, then it must be in interleaved layout. + +If a #GstAudioMeta is attached, then the #GstAudioInfo on the meta is checked +against @info. Normally, they should be equal, but in case they are not, +a g_critical will be printed and the #GstAudioInfo from the meta will be +used. + +In non-interleaved buffers, it is possible to have each channel on a separate +#GstMemory. In this case, each memory will be mapped separately to avoid +copying their contents in a larger memory area. Do note though that it is +not supported to have a single channel spanning over two or more different +#GstMemory objects. Although the map operation will likely succeed in this +case, it will be highly sub-optimal and it is recommended to merge all the +memories in the buffer before calling this function. + +Note: The actual #GstBuffer is not ref'ed, but it is required to stay valid +as long as it's mapped. + + + %TRUE if the map operation succeeded or %FALSE on failure + + + + + pointer to a #GstAudioBuffer + + + + the audio properties of the buffer + + + + the #GstBuffer to be mapped + + + + the access mode for the memory + + + + + + Reorders @buffer from the channel positions @from to the channel +positions @to. @from and @to must contain the same number of +positions and the same positions, only in a different order. +@buffer must be writable. + + + %TRUE if the reordering was possible. + + + + + The buffer to reorder. + + + + The %GstAudioFormat of the buffer. + + + + The number of channels. + + + + The channel positions in the buffer. + + + + + + The channel positions to convert to. + + + + + + + + Truncate the buffer to finally have @samples number of samples, removing +the necessary amount of samples from the end and @trim number of samples +from the beginning. + +This function does not know the audio rate, therefore the caller is +responsible for re-setting the correct timestamp and duration to the +buffer. However, timestamp will be preserved if trim == 0, and duration +will also be preserved if there is no trimming to be done. Offset and +offset end will be preserved / updated. + +After calling this function the caller does not own a reference to +@buffer anymore. + + + the truncated buffer + + + + + The buffer to truncate. + + + + size of one audio frame in bytes. This is the size of one sample * +number of channels. + + + + the number of samples to remove from the beginning of the buffer + + + + the final number of samples that should exist in this buffer or -1 +to use all the remaining samples if you are only removing samples from the +beginning. + + + + + + Get the fallback channel-mask for the given number of channels. + +This function returns a reasonable fallback channel-mask and should be +called as a last resort when the specific channel map is unknown. + + + a fallback channel-mask for @channels or 0 when there is no +mask and mono. + + + + + the number of channels + + + + + + Create a new channel mixer object for the given parameters. + + + a new #GstAudioChannelMixer object. + Free with gst_audio_channel_mixer_free() after usage. + + + + + #GstAudioChannelMixerFlags + + + + + + + number of input channels + + + + positions of input channels + + + + number of output channels + + + + positions of output channels + + + + + + Create a new channel mixer object for the given parameters. + + + a new #GstAudioChannelMixer object. + Free with gst_audio_channel_mixer_free() after usage. + + + + + #GstAudioChannelMixerFlags + + + + + + + number of input channels + + + + number of output channels + + + + channel conversion matrix, m[@in_channels][@out_channels]. + If identity matrix, passthrough applies. If %NULL, a (potentially truncated) + identity matrix is generated. + + + + + + Convert the @channels present in @channel_mask to a @position array +(which should have at least @channels entries ensured by caller). +If @channel_mask is set to 0, it is considered as 'not present' for purpose +of conversion. +A partially valid @channel_mask with less bits set than the number +of channels is considered valid. + + + %TRUE if channel and channel mask are valid and could be converted + + + + + The number of channels + + + + The input channel_mask + + + + The + %GstAudioChannelPosition<!-- -->s + + + + + + + + Convert the @position array of @channels channels to a bitmask. + +If @force_order is %TRUE it additionally checks if the channels are +in the order required by GStreamer. + + + %TRUE if the channel positions are valid and could be converted. + + + + + The %GstAudioChannelPositions + + + + + + The number of channels. + + + + Only consider the GStreamer channel order. + + + + the output channel mask + + + + + + Converts @position to a human-readable string representation for +debugging purposes. + + + a newly allocated string representing +@position + + + + + The %GstAudioChannelPositions + to convert. + + + + + + The number of channels. + + + + + + Reorders the channel positions in @position from any order to +the GStreamer channel order. + + + %TRUE if the channel positions are valid and reordering +was successful. + + + + + The channel positions to + reorder to. + + + + + + The number of channels. + + + + + + Checks if @position contains valid channel positions for +@channels channels. If @force_order is %TRUE it additionally +checks if the channels are in the order required by GStreamer. + + + %TRUE if the channel positions are valid. + + + + + The %GstAudioChannelPositions + to check. + + + + + + The number of channels. + + + + Only consider the GStreamer channel order. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Construct a #GstAudioFormat with given parameters. + + + a #GstAudioFormat or GST_AUDIO_FORMAT_UNKNOWN when no audio format +exists with the given parameters. + + + + + signed or unsigned format + + + + G_LITTLE_ENDIAN or G_BIG_ENDIAN + + + + amount of bits used per sample + + + + amount of used bits in @width + + + + + + Fill @length bytes in @dest with silence samples for @info. + Use gst_audio_format_info_fill_silence() instead. + + + + + + + a #GstAudioFormatInfo + + + + a destination + to fill + + + + + + the length to fill + + + + + + Convert the @format string to its #GstAudioFormat. + + + the #GstAudioFormat for @format or GST_AUDIO_FORMAT_UNKNOWN when the +string is not a known format. + + + + + a format string + + + + + + Get the #GstAudioFormatInfo for @format + + + The #GstAudioFormatInfo for @format. + + + + + a #GstAudioFormat + + + + + + + + + + + + + + + + + + + + + + + Return all the raw audio formats supported by GStreamer. + + + an array of #GstAudioFormat + + + + + + + the number of elements in the returned array + + + + + + Returns a reorder map for @from to @to that can be used in +custom channel reordering code, e.g. to convert from or to the +GStreamer channel order. @from and @to must contain the same +number of positions and the same positions, only in a +different order. + +The resulting @reorder_map can be used for reordering by assigning +channel i of the input to channel reorder_map[i] of the output. + + + %TRUE if the channel positions are valid and reordering +is possible. + + + + + The number of channels. + + + + The channel positions to reorder from. + + + + + + The channel positions to reorder to. + + + + + + Pointer to the reorder map. + + + + + + + + Calculated the size of the buffer expected by gst_audio_iec61937_payload() for +payloading type from @spec. + + + the size or 0 if the given @type is not supported or cannot be +payloaded. + + + + + the ringbufer spec + + + + + + Payloads @src in the form specified by IEC 61937 for the type from @spec and +stores the result in @dst. @src must contain exactly one frame of data and +the frame is not checked for errors. + + + transfer-full: %TRUE if the payloading was successful, %FALSE +otherwise. + + + + + a buffer containing the data to payload + + + + + + size of @src in bytes + + + + the destination buffer to store the + payloaded contents in. Should not overlap with @src + + + + + + size of @dst in bytes + + + + the ringbufer spec for @src + + + + the expected byte order of the payloaded data + + + + + + Parse @caps and update @info. + + + TRUE if @caps could be parsed + + + + + a #GstAudioInfo + + + + a #GstCaps + + + + + + Initialize @info with default values. + + + + + + + a #GstAudioInfo + + + + + + Return the #GType associated with #GstAudioLevelMeta. + + + a #GType + + + + + Return the #GstMetaInfo associated with #GstAudioLevelMeta. + + + a #GstMetaInfo + + + + + Return a generic raw audio caps for formats defined in @formats. +If @formats is %NULL returns a caps for all the supported raw audio formats, +see gst_audio_formats_raw(). + + + an audio @GstCaps + + + + + an array of raw #GstAudioFormat, or %NULL + + + + + + the size of @formats + + + + the layout of audio samples + + + + + + + + + + + + + + + + + + Create a new quantizer object with the given parameters. + +Output samples will be quantized to a multiple of @quantizer. Better +performance is achieved when @quantizer is a power of 2. + +Dithering and noise-shaping can be performed during quantization with +the @dither and @ns parameters. + + + a new #GstAudioQuantize. Free with gst_audio_quantize_free(). + + + + + a #GstAudioDitherMethod + + + + a #GstAudioNoiseShapingMethod + + + + #GstAudioQuantizeFlags + + + + the #GstAudioFormat of the samples + + + + the amount of channels in the samples + + + + the quantizer to use + + + + + + Reorders @data from the channel positions @from to the channel +positions @to. @from and @to must contain the same number of +positions and the same positions, only in a different order. + +Note: this function assumes the audio data is in interleaved layout + + + %TRUE if the reordering was possible. + + + + + The pointer to + the memory. + + + + + + The size of the memory. + + + + The %GstAudioFormat of the buffer. + + + + The number of channels. + + + + The channel positions in the buffer. + + + + + + The channel positions to convert to. + + + + + + + + Make a new resampler. + + + The new #GstAudioResampler. + + + + + a #GstAudioResamplerMethod + + + + #GstAudioResamplerFlags + + + + the #GstAudioFormat + + + + the number of channels + + + + input rate + + + + output rate + + + + extra options + + + + + + Set the parameters for resampling from @in_rate to @out_rate using @method +for @quality in @options. + + + + + + + a #GstAudioResamplerMethod + + + + the quality + + + + the input rate + + + + the output rate + + + + a #GstStructure + + + + + + Attaches #GstAudioClippingMeta metadata to @buffer with the given parameters. + + + the #GstAudioClippingMeta on @buffer. + + + + + a #GstBuffer + + + + GstFormat of @start and @stop, GST_FORMAT_DEFAULT is samples + + + + Amount of audio to clip from start of buffer + + + + Amount of to clip from end of buffer + + + + + + Attaches #GstAudioDownmixMeta metadata to @buffer with the given parameters. + +@matrix is an two-dimensional array of @to_channels times @from_channels +coefficients, i.e. the i-th output channels is constructed by multiplicating +the input channels with the coefficients in @matrix[i] and taking the sum +of the results. + + + the #GstAudioDownmixMeta on @buffer. + + + + + a #GstBuffer + + + + the channel positions + of the source + + + + + + The number of channels of the source + + + + the channel positions of + the destination + + + + + + The number of channels of the destination + + + + The matrix coefficients. + + + + + + Attaches audio level information to @buffer. (RFC 6464) + + + the #GstAudioLevelMeta on @buffer. + + + + + a #GstBuffer + + + + the -dBov from 0-127 (127 is silence). + + + + whether the buffer contains voice activity. + + + + + + Allocates and attaches a #GstAudioMeta on @buffer, which must be writable +for that purpose. The fields of the #GstAudioMeta are directly populated +from the arguments of this function. + +When @info->layout is %GST_AUDIO_LAYOUT_NON_INTERLEAVED and @offsets is +%NULL, the offsets are calculated with a formula that assumes the planes are +tightly packed and in sequence: +offsets[channel] = channel * @samples * sample_stride + +It is not allowed for channels to overlap in memory, +i.e. for each i in [0, channels), the range +[@offsets[i], @offsets[i] + @samples * sample_stride) must not overlap +with any other such range. This function will assert if the parameters +specified cause this restriction to be violated. + +It is, obviously, also not allowed to specify parameters that would cause +out-of-bounds memory access on @buffer. This is also checked, which means +that you must add enough memory on the @buffer before adding this meta. + + + the #GstAudioMeta that was attached on the @buffer + + + + + a #GstBuffer + + + + the audio properties of the buffer + + + + the number of valid samples in the buffer + + + + the offsets (in bytes) where each channel plane starts + in the buffer or %NULL to calculate it (see below); must be %NULL also + when @info->layout is %GST_AUDIO_LAYOUT_INTERLEAVED + + + + + + + + + + + + + + + + + + + + Find the #GstAudioDownmixMeta on @buffer for the given destination +channel positions. + + + the #GstAudioDownmixMeta on @buffer. + + + + + a #GstBuffer + + + + the channel positions of + the destination + + + + + + The number of channels of the destination + + + + + + Find the #GstAudioLevelMeta on @buffer. + + + the #GstAudioLevelMeta or %NULL when +there is no such metadata on @buffer. + + + + + a #GstBuffer + + + + + + + + + + + + + + + the converted volume + + + + + #GstStreamVolumeFormat to convert from + + + + #GstStreamVolumeFormat to convert to + + + + Volume in @from format that should be converted + + + + + + diff --git a/girs/GstBadAudio-1.0.gir b/girs/GstBadAudio-1.0.gir new file mode 100644 index 0000000000..9ba916248b --- /dev/null +++ b/girs/GstBadAudio-1.0.gir @@ -0,0 +1,1479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Locks the decoder mutex. + +Internally, the mutex is locked before one of the class vfuncs are +called, when position and duration queries are handled, and when +properties are set/retrieved. + +Derived classes should call lock during decoder related modifications +(for example, setting/clearing filter banks), when at the same time +audio might get decoded. An example are configuration changes that +happen when properties are set. Properties might be set from another +thread, so while the derived decoder is reconfigured, the mutex +should be locked. + + + + base nonstream audio codec instance + + + + + The name of the template for the sink pad. + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + base nonstream audio codec instance + + + + + The name of the template for the source pad. + + + + + Gives the pointer to the source #GstPad object of the element. + + + + base nonstream audio codec instance + + + + + + + + + + + + This base class is for decoders which do not operate on a streaming model. +That is: they load the encoded media at once, as part of an initialization, +and afterwards can decode samples (sometimes referred to as "rendering the +samples"). + +This sets it apart from GstAudioDecoder, which is a base class for +streaming audio decoders. + +The base class is conceptually a mix between decoder and parser. This is +unavoidable, since virtually no format that isn't streaming based has a +clear distinction between parsing and decoding. As a result, this class +also handles seeking. + +Non-streaming audio formats tend to have some characteristics unknown to +more "regular" bitstreams. These include subsongs and looping. + +Subsongs are a set of songs-within-a-song. An analogy would be a multitrack +recording, where each track is its own song. The first subsong is typically +the "main" one. Subsongs were popular for video games to enable context- +aware music; for example, subsong `#0` would be the "main" song, `#1` would be +an alternate song playing when a fight started, `#2` would be heard during +conversations etc. The base class is designed to always have at least one +subsong. If the subclass doesn't provide any, the base class creates a +"pseudo" subsong, which is actually the whole song. +Downstream is informed about the subsong using a table of contents (TOC), +but only if there are at least 2 subsongs. + +Looping refers to jumps within the song, typically backwards to the loop +start (although bi-directional looping is possible). The loop is defined +by a chronological start and end; once the playback position reaches the +loop end, it jumps back to the loop start. +Depending on the subclass, looping may not be possible at all, or it +may only be possible to enable/disable it (that is, either no looping, or +an infinite amount of loops), or it may allow for defining a finite number +of times the loop is repeated. +Looping can affect output in two ways. Either, the playback position is +reset to the start of the loop, similar to what happens after a seek event. +Or, it is not reset, so the pipeline sees playback steadily moving forwards, +the playback position monotonically increasing. However, seeking must +always happen within the confines of the defined subsong duration; for +example, if a subsong is 2 minutes long, steady playback is at 5 minutes +(because infinite looping is enabled), then seeking will still place the +position within the 2 minute period. +Loop count 0 means no looping. Loop count -1 means infinite looping. +Nonzero positive values indicate how often a loop shall occur. + +If the initial subsong and loop count are set to values the subclass does +not support, the subclass has a chance to correct these values. +@get_property then reports the corrected versions. + +The base class operates as follows: +* Unloaded mode + - Initial values are set. If a current subsong has already been + defined (for example over the command line with gst-launch), then + the subsong index is copied over to current_subsong . + Same goes for the num-loops and output-mode properties. + Media is NOT loaded yet. + - Once the sinkpad is activated, the process continues. The sinkpad is + activated in push mode, and the class accumulates the incoming media + data in an adapter inside the sinkpad's chain function until either an + EOS event is received from upstream, or the number of bytes reported + by upstream is reached. Then it loads the media, and starts the decoder + output task. + - If upstream cannot respond to the size query (in bytes) of @load_from_buffer + fails, an error is reported, and the pipeline stops. + - If there are no errors, @load_from_buffer is called to load the media. The + subclass must at least call gst_nonstream_audio_decoder_set_output_format() + there, and is free to make use of the initial subsong, output mode, and + position. If the actual output mode or position differs from the initial + value,it must set the initial value to the actual one (for example, if + the actual starting position is always 0, set *initial_position to 0). + If loading is unsuccessful, an error is reported, and the pipeline + stops. Otherwise, the base class calls @get_current_subsong to retrieve + the actual current subsong, @get_subsong_duration to report the current + subsong's duration in a duration event and message, and @get_subsong_tags + to send tags downstream in an event (these functions are optional; if + set to NULL, the associated operation is skipped). Afterwards, the base + class switches to loaded mode, and starts the decoder output task. + +* Loaded mode</title> + - Inside the decoder output task, the base class repeatedly calls @decode, + which returns a buffer with decoded, ready-to-play samples. If the + subclass reached the end of playback, @decode returns FALSE, otherwise + TRUE. + - Upon reaching a loop end, subclass either ignores that, or loops back + to the beginning of the loop. In the latter case, if the output mode is set + to LOOPING, the subclass must call gst_nonstream_audio_decoder_handle_loop() + *after* the playback position moved to the start of the loop. In + STEADY mode, the subclass must *not* call this function. + Since many decoders only provide a callback for when the looping occurs, + and that looping occurs inside the decoding operation itself, the following + mechanism for subclass is suggested: set a flag inside such a callback. + Then, in the next @decode call, before doing the decoding, check this flag. + If it is set, gst_nonstream_audio_decoder_handle_loop() is called, and the + flag is cleared. + (This function call is necessary in LOOPING mode because it updates the + current segment and makes sure the next buffer that is sent downstream + has its DISCONT flag set.) + - When the current subsong is switched, @set_current_subsong is called. + If it fails, a warning is reported, and nothing else is done. Otherwise, + it calls @get_subsong_duration to get the new current subsongs's + duration, @get_subsong_tags to get its tags, reports a new duration + (i.e. it sends a duration event downstream and generates a duration + message), updates the current segment, and sends the subsong's tags in + an event downstream. (If @set_current_subsong has been set to NULL by + the subclass, attempts to set a current subsong are ignored; likewise, + if @get_subsong_duration is NULL, no duration is reported, and if + @get_subsong_tags is NULL, no tags are sent downstream.) + - When an attempt is made to switch the output mode, it is checked against + the bitmask returned by @get_supported_output_modes. If the proposed + new output mode is supported, the current segment is updated + (it is open-ended in STEADY mode, and covers the (sub)song length in + LOOPING mode), and the subclass' @set_output_mode function is called + unless it is set to NULL. Subclasses should reset internal loop counters + in this function. + +The relationship between (sub)song duration, output mode, and number of loops +is defined this way (this is all done by the base class automatically): + +* Segments have their duration and stop values set to GST_CLOCK_TIME_NONE in + STEADY mode, and to the duration of the (sub)song in LOOPING mode. + +* The duration that is returned to a DURATION query is always the duration + of the (sub)song, regardless of number of loops or output mode. The same + goes for DURATION messages and tags. + +* If the number of loops is >0 or -1, durations of TOC entries are set to + the duration of the respective subsong in LOOPING mode and to G_MAXINT64 in + STEADY mode. If the number of loops is 0, entry durations are set to the + subsong duration regardless of the output mode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocates an output buffer with the internally configured buffer pool. + +This function may only be called from within @load_from_buffer, +@load_from_custom, and @decode. + + + Newly allocated output buffer, or NULL +if allocation failed + + + + + Decoder instance + + + + Size of the output buffer, in bytes + + + + + + Gets sample format, sample rate, channel count from the allowed srcpad caps. + +This is useful for when the subclass wishes to adjust one or more output +parameters to whatever downstream is supporting. For example, the output +sample rate is often a freely adjustable value in module players. + +This function tries to find a value inside the srcpad peer's caps for +@format, @sample_rate, @num_chnanels . Any of these can be NULL; they +(and the corresponding downstream caps) are then skipped while retrieving +information. Non-fixated caps are fixated first; the value closest to +their present value is then chosen. For example, if the variables pointed +to by the arguments are GST_AUDIO_FORMAT_16, 48000 Hz, and 2 channels, +and the downstream caps are: + +"audio/x-raw, format={S16LE,S32LE}, rate=[1,32000], channels=[1,MAX]" + +Then @format and @channels stay the same, while @sample_rate is set to 32000 Hz. +This way, the initial values the the variables pointed to by the arguments +are set to can be used as default output values. Note that if no downstream +caps can be retrieved, then this function does nothing, therefore it is +necessary to ensure that @format, @sample_rate, and @channels have valid +initial values. + +Decoder lock is not held by this function, so it can be called from within +any of the class vfuncs. + + + + + + + a #GstNonstreamAudioDecoder + + + + #GstAudioFormat value to fill with a sample format + + + + Integer to fill with a sample rate + + + + Integer to fill with a channel count + + + + + + Reports that a loop has been completed and creates a new appropriate +segment for the next loop. + +@new_position exists because a loop may not start at the beginning. + +This function is only useful for subclasses which can be in the +GST_NONSTREAM_AUDIO_OUTPUT_MODE_LOOPING output mode, since in the +GST_NONSTREAM_AUDIO_OUTPUT_MODE_STEADY output mode, this function +does nothing. See #GstNonstreamAudioOutputMode for more details. + +The subclass calls this during playback when it loops. It produces +a new segment with updated base time and internal time values, to allow +for seamless looping. It does *not* check the number of elapsed loops; +this is up the subclass. + +Note that if this function is called, then it must be done after the +last samples of the loop have been decoded and pushed downstream. + +This function must be called with the decoder mutex lock held, since it +is typically called from within @decode (which in turn are called with +the lock already held). + + + + + + + a #GstNonstreamAudioDecoder +@new_position New position the next loop starts with + + + + + + + + + Sets the output caps by means of a GstAudioInfo structure. + +This must be called latest in the first @decode call, to ensure src caps are +set before decoded samples are sent downstream. Typically, this is called +from inside @load_from_buffer or @load_from_custom. + +This function must be called with the decoder mutex lock held, since it +is typically called from within the aforementioned vfuncs (which in turn +are called with the lock already held). + + + TRUE if setting the output format succeeded, FALSE otherwise + + + + + a #GstNonstreamAudioDecoder + + + + Valid audio info structure containing the output format + + + + + + Convenience function; sets the output caps by means of common parameters. + +Internally, this fills a GstAudioInfo structure and calls +gst_nonstream_audio_decoder_set_output_format(). + + + TRUE if setting the output format succeeded, FALSE otherwise + + + + + a #GstNonstreamAudioDecoder + + + + Output sample rate to use, in Hz + + + + Output sample format to use + + + + Number of output channels to use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available optional virtual methods or not, as +needed. At minimum, @load_from_buffer (or @load_from_custom), @get_supported_output_modes, +and @decode need to be overridden. + +All functions are called with a locked decoder mutex. + +> If GST_ELEMENT_ERROR, GST_ELEMENT_WARNING, or GST_ELEMENT_INFO are called from +> inside one of these functions, it is strongly recommended to unlock the decoder mutex +> before and re-lock it after these macros to prevent potential deadlocks in case the +> application does something with the element when it receives an ERROR/WARNING/INFO +> message. Same goes for gst_element_post_message() calls and non-serialized events. + +By default, this class works by reading media data from the sinkpad, and then commencing +playback. Some decoders cannot be given data from a memory block, so the usual way of +reading all upstream data and passing it to @load_from_buffer doesn't work then. In this case, +set the value of loads_from_sinkpad to FALSE. This changes the way this class operates; +it does not require a sinkpad to exist anymore, and will call @load_from_custom instead. +One example of a decoder where this makes sense is UADE (Unix Amiga Delitracker Emulator). +For some formats (such as TFMX), it needs to do the file loading by itself. +Since most decoders can read input data from a memory block, the default value of +loads_from_sinkpad is TRUE. + + + The parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The output mode defines how the output behaves with regards to looping. Either the playback position is +moved back to the beginning of the loop, acting like a backwards seek, or it increases steadily, as if +loop were "unrolled". + + + Playback position is moved back to the beginning of the loop + + + Playback position increases steadily, even when looping + + + + The subsong mode defines how the decoder shall handle subsongs. + + + Only the current subsong is played + + + All subsongs are played (current subsong index is ignored) + + + Use decoder specific default behavior + + + + + + + + + + + + + + + + + + + + + + + + + This class is similar to GstAdapter, but it is made to work with +non-interleaved (planar) audio buffers. Before using, an audio format +must be configured with gst_planar_audio_adapter_configure() + + + Creates a new #GstPlanarAudioAdapter. Free with g_object_unref(). + + + a new #GstPlanarAudioAdapter + + + + + Gets the maximum amount of samples available, that is it returns the maximum +value that can be supplied to gst_planar_audio_adapter_get_buffer() without +that function returning %NULL. + + + number of samples available in @adapter + + + + + a #GstPlanarAudioAdapter + + + + + + Removes all buffers from @adapter. + + + + + + + a #GstPlanarAudioAdapter + + + + + + Sets up the @adapter to handle audio data of the specified audio format. +Note that this will internally clear the adapter and re-initialize it. + + + + + + + a #GstPlanarAudioAdapter + + + + a #GstAudioInfo describing the format of the audio data + + + + + + + + + + + + + + + + + Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_CLOCK_TIME_NONE. + + + The DTS at the last discont or GST_CLOCK_TIME_NONE. + + + + + a #GstPlanarAudioAdapter + + + + + + Flushes the first @to_flush samples in the @adapter. The caller must ensure +that at least this many samples are available. + + + + + + + a #GstPlanarAudioAdapter + + + + the number of samples to flush + + + + + + Returns a #GstBuffer containing the first @nsamples of the @adapter, but +does not flush them from the adapter. +Use gst_planar_audio_adapter_take_buffer() for flushing at the same time. + +The map @flags can be used to give an optimization hint to this function. +When the requested buffer is meant to be mapped only for reading, it might +be possible to avoid copying memory in some cases. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nsamples of the adapter, or %NULL if @nsamples samples are not + available. gst_buffer_unref() when no longer needed. + + + + + a #GstPlanarAudioAdapter + + + + the number of samples to get + + + + hint the intended use of the returned buffer + + + + + + Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_BUFFER_OFFSET_NONE. + + + The offset at the last discont or GST_BUFFER_OFFSET_NONE. + + + + + a #GstPlanarAudioAdapter + + + + + + Get the dts that was before the current sample in the adapter. When +@distance is given, the amount of bytes between the dts and the current +position is returned. + +The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that +before the first sample with a dts is removed from the adapter, the dts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen dts. + + + + + a #GstPlanarAudioAdapter + + + + pointer to location for distance, or %NULL + + + + + + Get the offset that was before the current sample in the adapter. When +@distance is given, the amount of samples between the offset and the current +position is returned. + +The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0 +when the adapter is first created or when it is cleared. This also means that +before the first sample with an offset is removed from the adapter, the +offset and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively. + + + The previous seen offset. + + + + + a #GstPlanarAudioAdapter + + + + pointer to a location for distance, or %NULL + + + + + + Get the pts that was before the current sample in the adapter. When +@distance is given, the amount of samples between the pts and the current +position is returned. + +The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that before +the first sample with a pts is removed from the adapter, the pts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen pts. + + + + + a #GstPlanarAudioAdapter + + + + pointer to location for distance, or %NULL + + + + + + Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_CLOCK_TIME_NONE. + + + The PTS at the last discont or GST_CLOCK_TIME_NONE. + + + + + a #GstPlanarAudioAdapter + + + + + + Adds the data from @buf to the data stored inside @adapter and takes +ownership of the buffer. + + + + + + + a #GstPlanarAudioAdapter + + + + a #GstBuffer to queue in the adapter + + + + + + Returns a #GstBuffer containing the first @nsamples bytes of the +@adapter. The returned bytes will be flushed from the adapter. + +See gst_planar_audio_adapter_get_buffer() for more details. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nsamples of the adapter, or %NULL if @nsamples samples are not + available. gst_buffer_unref() when no longer needed. + + + + + a #GstPlanarAudioAdapter + + + + the number of samples to take + + + + hint the intended use of the returned buffer + + + + + + + + + + diff --git a/girs/GstBase-1.0.gir b/girs/GstBase-1.0.gir new file mode 100644 index 0000000000..227002dc89 --- /dev/null +++ b/girs/GstBase-1.0.gir @@ -0,0 +1,14254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convenience macro to access the source pad of #GstAggregator + + + + a #GstAggregator + + + + + This class is for elements that receive buffers in an undesired size. +While for example raw video contains one image per buffer, the same is not +true for a lot of other formats, especially those that come directly from +a file. So if you have undefined buffer sizes and require a specific size, +this object is for you. + +An adapter is created with gst_adapter_new(). It can be freed again with +g_object_unref(). + +The theory of operation is like this: All buffers received are put +into the adapter using gst_adapter_push() and the data is then read back +in chunks of the desired size using gst_adapter_map()/gst_adapter_unmap() +and/or gst_adapter_copy(). After the data has been processed, it is freed +using gst_adapter_unmap(). + +Other methods such as gst_adapter_take() and gst_adapter_take_buffer() +combine gst_adapter_map() and gst_adapter_unmap() in one method and are +potentially more convenient for some use cases. + +For example, a sink pad's chain function that needs to pass data to a library +in 512-byte chunks could be implemented like this: +|[<!-- language="C" --> +static GstFlowReturn +sink_pad_chain (GstPad *pad, GstObject *parent, GstBuffer *buffer) +{ + MyElement *this; + GstAdapter *adapter; + GstFlowReturn ret = GST_FLOW_OK; + + this = MY_ELEMENT (parent); + + adapter = this->adapter; + + // put buffer into adapter + gst_adapter_push (adapter, buffer); + + // while we can read out 512 bytes, process them + while (gst_adapter_available (adapter) >= 512 && ret == GST_FLOW_OK) { + const guint8 *data = gst_adapter_map (adapter, 512); + // use flowreturn as an error value + ret = my_library_foo (data); + gst_adapter_unmap (adapter); + gst_adapter_flush (adapter, 512); + } + return ret; +} +]| + +For another example, a simple element inside GStreamer that uses #GstAdapter +is the libvisual element. + +An element using #GstAdapter in its sink pad chain function should ensure that +when the FLUSH_STOP event is received, that any queued data is cleared using +gst_adapter_clear(). Data should also be cleared or processed on EOS and +when changing state from %GST_STATE_PAUSED to %GST_STATE_READY. + +Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might +need to clear the adapter after a discontinuity. + +The adapter will keep track of the timestamps of the buffers +that were pushed. The last seen timestamp before the current position +can be queried with gst_adapter_prev_pts(). This function can +optionally return the number of bytes between the start of the buffer that +carried the timestamp and the current adapter position. The distance is +useful when dealing with, for example, raw audio samples because it allows +you to calculate the timestamp of the current adapter position by using the +last seen timestamp and the amount of bytes since. Additionally, the +gst_adapter_prev_pts_at_offset() can be used to determine the last +seen timestamp at a particular offset in the adapter. + +The adapter will also keep track of the offset of the buffers +(#GST_BUFFER_OFFSET) that were pushed. The last seen offset before the +current position can be queried with gst_adapter_prev_offset(). This function +can optionally return the number of bytes between the start of the buffer +that carried the offset and the current adapter position. + +Additionally the adapter also keeps track of the PTS, DTS and buffer offset +at the last discontinuity, which can be retrieved with +gst_adapter_pts_at_discont(), gst_adapter_dts_at_discont() and +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 +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) +user provided buffer. + +#GstAdapter is not MT safe. All operations on an adapter must be serialized by +the caller. This is not normally a problem, however, as the normal use case +of #GstAdapter is inside one pad's chain function, in which case access is +serialized via the pad's STREAM_LOCK. + +Note that gst_adapter_push() takes ownership of the buffer passed. Use +gst_buffer_ref() before pushing it into the adapter if you still want to +access the buffer later. The adapter will never modify the data in the +buffer pushed in it. + + + Creates a new #GstAdapter. Free with g_object_unref(). + + + a new #GstAdapter + + + + + Gets the maximum amount of bytes available, that is it returns the maximum +value that can be supplied to gst_adapter_map() without that function +returning %NULL. + + + number of bytes available in @adapter + + + + + a #GstAdapter + + + + + + Gets the maximum number of bytes that are immediately available without +requiring any expensive operations (like copying the data into a +temporary buffer). + + + number of bytes that are available in @adapter without expensive +operations + + + + + a #GstAdapter + + + + + + Removes all buffers from @adapter. + + + + + + + a #GstAdapter + + + + + + Copies @size bytes of data starting at @offset out of the buffers +contained in #GstAdapter into an array @dest provided by the caller. + +The array @dest should be large enough to contain @size bytes. +The user should check that the adapter has (@offset + @size) bytes +available before calling this function. + + + + + + + a #GstAdapter + + + + + the memory to copy into + + + + + + the bytes offset in the adapter to start from + + + + the number of bytes to copy + + + + + + Similar to gst_adapter_copy, but more suitable for language bindings. @size +bytes of data starting at @offset will be copied out of the buffers contained +in @adapter and into a new #GBytes structure which is returned. Depending on +the value of the @size argument an empty #GBytes structure may be returned. + + + A new #GBytes structure containing the copied data. + + + + + a #GstAdapter + + + + the bytes offset in the adapter to start from + + + + the number of bytes to copy + + + + + + Get the distance in bytes since the last buffer with the +%GST_BUFFER_FLAG_DISCONT flag. + +The distance will be reset to 0 for all buffers with +%GST_BUFFER_FLAG_DISCONT on them, and then calculated for all other +following buffers based on their size. + + + The offset. Can be %GST_BUFFER_OFFSET_NONE. + + + + + a #GstAdapter + + + + + + Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_CLOCK_TIME_NONE. + + + The DTS at the last discont or GST_CLOCK_TIME_NONE. + + + + + a #GstAdapter + + + + + + Flushes the first @flush bytes in the @adapter. The caller must ensure that +at least this many bytes are available. + +See also: gst_adapter_map(), gst_adapter_unmap() + + + + + + + a #GstAdapter + + + + the number of bytes to flush + + + + + + Returns a #GstBuffer containing the first @nbytes of the @adapter, but +does not flush them from the adapter. See gst_adapter_take_buffer() +for details. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nbytes of the adapter, or %NULL if @nbytes bytes are not available. + gst_buffer_unref() when no longer needed. + + + + + a #GstAdapter + + + + the number of bytes to get + + + + + + Returns a #GstBuffer containing the first @nbytes of the @adapter, but +does not flush them from the adapter. See gst_adapter_take_buffer_fast() +for details. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nbytes of the adapter, or %NULL if @nbytes bytes are not available. + gst_buffer_unref() when no longer needed. + + + + + a #GstAdapter + + + + the number of bytes to get + + + + + + Returns a #GstBufferList of buffers containing the first @nbytes bytes of +the @adapter but does not flush them from the adapter. See +gst_adapter_take_buffer_list() for details. + +Caller owns the returned list. Call gst_buffer_list_unref() to free +the list after usage. + + + a #GstBufferList of buffers containing + the first @nbytes of the adapter, or %NULL if @nbytes bytes are not + available + + + + + a #GstAdapter + + + + the number of bytes to get + + + + + + Returns a #GList of buffers containing the first @nbytes bytes of the +@adapter, but does not flush them from the adapter. See +gst_adapter_take_list() for details. + +Caller owns returned list and contained buffers. gst_buffer_unref() each +buffer in the list before freeing the list after usage. + + + a #GList of + buffers containing the first @nbytes of the adapter, or %NULL if @nbytes + bytes are not available + + + + + + + a #GstAdapter + + + + the number of bytes to get + + + + + + Gets the first @size bytes stored in the @adapter. The returned pointer is +valid until the next function is called on the adapter. + +Note that setting the returned pointer as the data of a #GstBuffer is +incorrect for general-purpose plugins. The reason is that if a downstream +element stores the buffer so that it has access to it outside of the bounds +of its chain function, the buffer will have an invalid data pointer after +your element flushes the bytes. In that case you should use +gst_adapter_take(), which returns a freshly-allocated buffer that you can set +as #GstBuffer memory or the potentially more performant +gst_adapter_take_buffer(). + +Returns %NULL if @size bytes are not available. + + + + a pointer to the first @size bytes of data, or %NULL + + + + + + + a #GstAdapter + + + + the number of bytes to map/peek + + + + + + Scan for pattern @pattern with applied mask @mask in the adapter data, +starting from offset @offset. + +The bytes in @pattern and @mask are interpreted left-to-right, regardless +of endianness. All four bytes of the pattern must be present in the +adapter for it to match, even if the first or last bytes are masked out. + +It is an error to call this function without making sure that there is +enough data (offset+size bytes) in the adapter. + +This function calls gst_adapter_masked_scan_uint32_peek() passing %NULL +for value. + + + offset of the first match, or -1 if no match was found. + +Example: +|[ +// Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff + +gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256); +// -> returns 0 +gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255); +// -> returns -1 +gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255); +// -> returns 1 +gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256); +// -> returns -1 +gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256); +// -> returns 0 +gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256); +// -> returns 2 +gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4); +// -> returns -1 +]| + + + + + a #GstAdapter + + + + mask to apply to data before matching against @pattern + + + + pattern to match (after mask is applied) + + + + offset into the adapter data from which to start scanning, returns + the last scanned position. + + + + number of bytes to scan from offset + + + + + + Scan for pattern @pattern with applied mask @mask in the adapter data, +starting from offset @offset. If a match is found, the value that matched +is returned through @value, otherwise @value is left untouched. + +The bytes in @pattern and @mask are interpreted left-to-right, regardless +of endianness. All four bytes of the pattern must be present in the +adapter for it to match, even if the first or last bytes are masked out. + +It is an error to call this function without making sure that there is +enough data (offset+size bytes) in the adapter. + + + offset of the first match, or -1 if no match was found. + + + + + a #GstAdapter + + + + mask to apply to data before matching against @pattern + + + + pattern to match (after mask is applied) + + + + offset into the adapter data from which to start scanning, returns + the last scanned position. + + + + number of bytes to scan from offset + + + + pointer to uint32 to return matching data + + + + + + Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_BUFFER_OFFSET_NONE. + + + The offset at the last discont or GST_BUFFER_OFFSET_NONE. + + + + + a #GstAdapter + + + + + + Get the dts that was before the current byte in the adapter. When +@distance is given, the amount of bytes between the dts and the current +position is returned. + +The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that before +the first byte with a dts is removed from the adapter, the dts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen dts. + + + + + a #GstAdapter + + + + pointer to location for distance, or %NULL + + + + + + Get the dts that was before the byte at offset @offset in the adapter. When +@distance is given, the amount of bytes between the dts and the current +position is returned. + +The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that before +the first byte with a dts is removed from the adapter, the dts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen dts at given offset. + + + + + a #GstAdapter + + + + the offset in the adapter at which to get timestamp + + + + pointer to location for distance, or %NULL + + + + + + Get the offset that was before the current byte in the adapter. When +@distance is given, the amount of bytes between the offset and the current +position is returned. + +The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0 +when the adapter is first created or when it is cleared. This also means that +before the first byte with an offset is removed from the adapter, the offset +and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively. + + + The previous seen offset. + + + + + a #GstAdapter + + + + pointer to a location for distance, or %NULL + + + + + + Get the pts that was before the current byte in the adapter. When +@distance is given, the amount of bytes between the pts and the current +position is returned. + +The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that before +the first byte with a pts is removed from the adapter, the pts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen pts. + + + + + a #GstAdapter + + + + pointer to location for distance, or %NULL + + + + + + Get the pts that was before the byte at offset @offset in the adapter. When +@distance is given, the amount of bytes between the pts and the current +position is returned. + +The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when +the adapter is first created or when it is cleared. This also means that before +the first byte with a pts is removed from the adapter, the pts +and distance returned are GST_CLOCK_TIME_NONE and 0 respectively. + + + The previously seen pts at given offset. + + + + + a #GstAdapter + + + + the offset in the adapter at which to get timestamp + + + + pointer to location for distance, or %NULL + + + + + + Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT +flag, or GST_CLOCK_TIME_NONE. + + + The PTS at the last discont or GST_CLOCK_TIME_NONE. + + + + + a #GstAdapter + + + + + + Adds the data from @buf to the data stored inside @adapter and takes +ownership of the buffer. + + + + + + + a #GstAdapter + + + + a #GstBuffer to add to queue in the adapter + + + + + + Returns a freshly allocated buffer containing the first @nbytes bytes of the +@adapter. The returned bytes will be flushed from the adapter. + +Caller owns returned value. g_free after usage. + +Free-function: g_free + + + + oven-fresh hot data, or %NULL if @nbytes bytes are not available + + + + + + + a #GstAdapter + + + + the number of bytes to take + + + + + + Returns a #GstBuffer containing the first @nbytes bytes of the +@adapter. The returned bytes will be flushed from the adapter. +This function is potentially more performant than +gst_adapter_take() since it can reuse the memory in pushed buffers +by subbuffering or merging. This function will always return a +buffer with a single memory region. + +Note that no assumptions should be made as to whether certain buffer +flags such as the DISCONT flag are set on the returned buffer, or not. +The caller needs to explicitly set or unset flags that should be set or +unset. + +Since 1.6 this will also copy over all GstMeta of the input buffers except +for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nbytes of the adapter, or %NULL if @nbytes bytes are not available. + gst_buffer_unref() when no longer needed. + + + + + a #GstAdapter + + + + the number of bytes to take + + + + + + Returns a #GstBuffer containing the first @nbytes of the @adapter. +The returned bytes will be flushed from the adapter. This function +is potentially more performant than gst_adapter_take_buffer() since +it can reuse the memory in pushed buffers by subbuffering or +merging. Unlike gst_adapter_take_buffer(), the returned buffer may +be composed of multiple non-contiguous #GstMemory objects, no +copies are made. + +Note that no assumptions should be made as to whether certain buffer +flags such as the DISCONT flag are set on the returned buffer, or not. +The caller needs to explicitly set or unset flags that should be set or +unset. + +This will also copy over all GstMeta of the input buffers except +for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag. + +This function can return buffer up to the return value of +gst_adapter_available() without making copies if possible. + +Caller owns a reference to the returned buffer. gst_buffer_unref() after +usage. + +Free-function: gst_buffer_unref + + + a #GstBuffer containing the first + @nbytes of the adapter, or %NULL if @nbytes bytes are not available. + gst_buffer_unref() when no longer needed. + + + + + a #GstAdapter + + + + the number of bytes to take + + + + + + Returns a #GstBufferList of buffers containing the first @nbytes bytes of +the @adapter. The returned bytes will be flushed from the adapter. +When the caller can deal with individual buffers, this function is more +performant because no memory should be copied. + +Caller owns the returned list. Call gst_buffer_list_unref() to free +the list after usage. + + + a #GstBufferList of buffers containing + the first @nbytes of the adapter, or %NULL if @nbytes bytes are not + available + + + + + a #GstAdapter + + + + the number of bytes to take + + + + + + Returns a #GList of buffers containing the first @nbytes bytes of the +@adapter. The returned bytes will be flushed from the adapter. +When the caller can deal with individual buffers, this function is more +performant because no memory should be copied. + +Caller owns returned list and contained buffers. gst_buffer_unref() each +buffer in the list before freeing the list after usage. + + + a #GList of + buffers containing the first @nbytes of the adapter, or %NULL if @nbytes + bytes are not available + + + + + + + a #GstAdapter + + + + the number of bytes to take + + + + + + Releases the memory obtained with the last gst_adapter_map(). + + + + + + + a #GstAdapter + + + + + + + + + + Manages a set of pads with the purpose of aggregating their buffers. +Control is given to the subclass when all pads have data. + + * Base class for mixers and muxers. Subclasses should at least implement + the #GstAggregatorClass::aggregate virtual method. + + * Installs a #GstPadChainFunction, a #GstPadEventFullFunction and a + #GstPadQueryFunction to queue all serialized data packets per sink pad. + Subclasses should not overwrite those, but instead implement + #GstAggregatorClass::sink_event and #GstAggregatorClass::sink_query as + needed. + + * When data is queued on all pads, the aggregate vmethod is called. + + * One can peek at the data on any given GstAggregatorPad with the + gst_aggregator_pad_peek_buffer() method, and remove it from the pad + with the gst_aggregator_pad_pop_buffer () method. When a buffer + has been taken with pop_buffer (), a new buffer can be queued + on that pad. + + * When gst_aggregator_pad_peek_buffer() or gst_aggregator_pad_has_buffer() + are called, a reference is taken to the returned buffer, which stays + valid until either: + + - gst_aggregator_pad_pop_buffer() is called, in which case the caller + is guaranteed that the buffer they receive is the same as the peeked + buffer. + - gst_aggregator_pad_drop_buffer() is called, in which case the caller + is guaranteed that the dropped buffer is the one that was peeked. + - the subclass implementation of #GstAggregatorClass.aggregate returns. + + Subsequent calls to gst_aggregator_pad_peek_buffer() or + gst_aggregator_pad_has_buffer() return / check the same buffer that was + returned / checked, until one of the conditions listed above is met. + + Subclasses are only allowed to call these methods from the aggregate + thread. + + * If the subclass wishes to push a buffer downstream in its aggregate + implementation, it should do so through the + gst_aggregator_finish_buffer() method. This method will take care + of sending and ordering mandatory events such as stream start, caps + and segment. Buffer lists can also be pushed out with + gst_aggregator_finish_buffer_list(). + + * Same goes for EOS events, which should not be pushed directly by the + subclass, it should instead return GST_FLOW_EOS in its aggregate + implementation. + + * Note that the aggregator logic regarding gap event handling is to turn + these into gap buffers with matching PTS and duration. It will also + flag these buffers with GST_BUFFER_FLAG_GAP and GST_BUFFER_FLAG_DROPPABLE + to ease their identification and subsequent processing. + In addition, if the gap event was flagged with GST_GAP_FLAG_MISSING_DATA, + a custom meta is added to the resulting gap buffer (GstAggregatorMissingDataMeta). + + * Subclasses must use (a subclass of) #GstAggregatorPad for both their + sink and source pads. + See gst_element_class_add_static_pad_template_with_gtype(). + +This class used to live in gst-plugins-bad and was moved to core. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This method will push the provided output buffer downstream. If needed, +mandatory events such as stream-start, caps, and segment events will be +sent before pushing the buffer. + + + + + + + The #GstAggregator + + + + the #GstBuffer to push. + + + + + + This method will push the provided output buffer list downstream. If needed, +mandatory events such as stream-start, caps, and segment events will be +sent before pushing the buffer. + + + + + + + The #GstAggregator + + + + the #GstBufferList to push. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + Use this function to determine what input buffers will be aggregated +to produce the next output buffer. This should only be called from +a #GstAggregator::samples-selected handler, and can be used to precisely +control aggregating parameters for a given set of input samples. + + + The sample that is about to be aggregated. It may hold a #GstBuffer + or a #GstBufferList. The contents of its info structure is subclass-dependent, + and documented on a subclass basis. The buffers held by the sample are + not writable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This method will push the provided output buffer downstream. If needed, +mandatory events such as stream-start, caps, and segment events will be +sent before pushing the buffer. + + + + + + + The #GstAggregator + + + + the #GstBuffer to push. + + + + + + This method will push the provided output buffer list downstream. If needed, +mandatory events such as stream-start, caps, and segment events will be +sent before pushing the buffer. + + + + + + + The #GstAggregator + + + + the #GstBufferList to push. + + + + + + Lets #GstAggregator sub-classes get the memory @allocator +acquired by the base class and its @params. + +Unref the @allocator after use it. + + + + + + + a #GstAggregator + + + + the #GstAllocator +used + + + + the +#GstAllocationParams of @allocator + + + + + + + + the instance of the #GstBufferPool used +by @trans; free it after use it + + + + + a #GstAggregator + + + + + + Subclasses may use the return value to inform whether they should return +%GST_FLOW_EOS from their aggregate implementation. + + + whether live status was forced on @self. + + + + + + + + + + + + whether inactive pads will not be waited on + + + + + + + + + + Retrieves the latency values reported by @self in response to the latency +query, or %GST_CLOCK_TIME_NONE if there is not live source connected and the element +will not wait for the clock. + +Typically only called by subclasses. + + + The latency or %GST_CLOCK_TIME_NONE if the element does not sync + + + + + a #GstAggregator + + + + + + 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 + + + + + + Use this function to determine what input buffers will be aggregated +to produce the next output buffer. This should only be called from +a #GstAggregator::samples-selected handler, and can be used to precisely +control aggregating parameters for a given set of input samples. + + + The sample that is about to be aggregated. It may hold a #GstBuffer + or a #GstBufferList. The contents of its info structure is subclass-dependent, + and documented on a subclass basis. The buffers held by the sample are + not writable. + + + + + + + + + + + + + Subclasses should call this when they have prepared the +buffers they will aggregate for each of their sink pads, but +before using any of the properties of the pads that govern +*how* aggregation should be performed, for example z-index +for video aggregators. + +If gst_aggregator_update_segment() is used by the subclass, +it MUST be called before gst_aggregator_selected_samples(). + +This function MUST only be called from the #GstAggregatorClass::aggregate() +function. + + + + + + + + + + The presentation timestamp of the next output buffer + + + + The decoding timestamp of the next output buffer + + + + The duration of the next output buffer + + + + a #GstStructure containing additional information + + + + + + Subclasses should call this at construction time in order for @self to +aggregate on a timeout even when no live source is connected. + + + + + + + + + + + + + + + Subclasses should call this when they don't want to time out +waiting for a pad that hasn't yet received any buffers in live +mode. + +#GstAggregator will still wait once on each newly-added pad, making +sure upstream has had a fair chance to start up. + + + + + + + + + + whether inactive pads should not be waited on + + + + + + Lets #GstAggregator sub-classes tell the baseclass what their internal +latency is. Will also post a LATENCY message on the bus so the pipeline +can reconfigure its global latency if the values changed. + + + + + + + a #GstAggregator + + + + minimum latency + + + + maximum latency + + + + + + Sets the caps to be used on the src pad. + + + + + + + The #GstAggregator + + + + The #GstCaps to set on the src pad. + + + + + + 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. + +This is the desired behaviour in most cases where you have a live source +and you have a dead line based aggregator subclass. + + + The running time based on the position + + + + + A #GstAggregator + + + + + + Subclasses should use this to update the segment on their +source pad, instead of directly pushing new segment events +downstream. + +Subclasses MUST call this before gst_aggregator_selected_samples(), +if it is used at all. + + + + + + + + + + + + + + + Enables the emission of signals such as #GstAggregator::samples-selected + + + + + + + Force minimum upstream latency (in nanoseconds). When sources with a +higher latency are expected to be plugged in dynamically after the +aggregator has started playing, this allows overriding the minimum +latency reported by the initial source(s). This is only taken into +account when larger than the actually reported minimum latency. + + + + + + + + + + + + + the aggregator's source pad + + + + + + + + + + + + Signals that the #GstAggregator subclass has selected the next set +of input samples it will aggregate. Handlers may call +gst_aggregator_peek_next_sample() at that point. + + + + + + The #GstSegment the next output buffer is part of + + + + The presentation timestamp of the next output buffer + + + + The decoding timestamp of the next output buffer + + + + The duration of the next output buffer + + + + a #GstStructure containing additional information + + + + + + + The aggregator base class will handle in a thread-safe way all manners of +concurrent flushes, seeks, pad additions and removals, leaving to the +subclass the responsibility of clipping buffers, and aggregating buffers in +the way the implementor sees fit. + +It will also take care of event ordering (stream-start, segment, eos). + +Basically, a simple implementation will override @aggregate, and call +_finish_buffer from inside that function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstAggregator + + + + the #GstBuffer to push. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstAggregator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstAggregator + + + + the #GstBufferList to push. + + + + + + + + + + The sample that is about to be aggregated. It may hold a #GstBuffer + or a #GstBufferList. The contents of its info structure is subclass-dependent, + and documented on a subclass basis. The buffers held by the sample are + not writable. + + + + + + + + + + + + + + + + + + + + Pads managed by a #GstAggregator subclass. + +This class used to live in gst-plugins-bad and was moved to core. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Drop the buffer currently queued in @pad. + + + TRUE if there was a buffer queued in @pad, or FALSE if not. + + + + + the pad where to drop any pending buffer + + + + + + This checks if a pad has a buffer available that will be returned by +a call to gst_aggregator_pad_peek_buffer() or +gst_aggregator_pad_pop_buffer(). + + + %TRUE if the pad has a buffer available as the next thing. + + + + + the pad to check the buffer on + + + + + + + + %TRUE if the pad is EOS, otherwise %FALSE. + + + + + an aggregator pad + + + + + + It is only valid to call this method from #GstAggregatorClass::aggregate() + + + %TRUE if the pad is inactive, %FALSE otherwise. + See gst_aggregator_ignore_inactive_pads() for more info. + + + + + an aggregator pad + + + + + + + + A reference to the buffer in @pad or +NULL if no buffer was queued. You should unref the buffer after +usage. + + + + + the pad to get buffer from + + + + + + Steal the ref to the buffer currently queued in @pad. + + + The buffer in @pad or NULL if no buffer was + queued. You should unref the buffer after usage. + + + + + the pad to get buffer from + + + + + + Enables the emission of signals such as #GstAggregatorPad::buffer-consumed + + + + + + + last segment received. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Start at running time 0. + + + Start at the running time of +the first buffer that is received. + + + Start at the running time +selected by the `start-time` property. + + + + + + + + + + + + + + + + + + + + + + + + + Obtains current drain status (ie. whether EOS has been received and +the parser is now processing the frames at the end of the stream) + + + + base parse instance + + + + + + + + + + + + + + + + + + + + Obtains current sync status. + + + + base parse instance + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + base parse instance + + + + + Gives the pointer to the source #GstPad object of the element. + + + + base parse instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gives the pointer to the #GstPad object of the element. + + + + base sink instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gives the pointer to the #GstPad object of the element. + + + + base source instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the templates for the sink pad. + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + base transform instance + + + + + The name of the templates for the source pad. + + + + + Gives the pointer to the source #GstPad object of the element. + + + + base transform instance + + + + + + + + + + + + A #GstBitReader must be initialized with this macro, before it can be +used. This macro can used be to initialize a variable, but it cannot +be assigned to a variable. In that case you have to use +gst_bit_reader_init(). + + + + Data from which the #GstBitReader should read + + + Size of @data in bytes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstByteReader must be initialized with this macro, before it can be +used. This macro can used be to initialize a variable, but it cannot +be assigned to a variable. In that case you have to use +gst_byte_reader_init(). + + + + Data from which the #GstByteReader should read + + + Size of @data in bytes + + + + + + + + + + + + This base class is for parser elements that process data and splits it +into separate audio/video/whatever frames. + +It provides for: + + * provides one sink pad and one source pad + * handles state changes + * can operate in pull mode or push mode + * handles seeking in both modes + * handles events (SEGMENT/EOS/FLUSH) + * handles queries (POSITION/DURATION/SEEKING/FORMAT/CONVERT) + * handles flushing + +The purpose of this base class is to provide the basic functionality of +a parser and share a lot of rather complex code. + +# Description of the parsing mechanism: + +## Set-up phase + + * #GstBaseParse calls #GstBaseParseClass::start to inform subclass + that data processing is about to start now. + + * #GstBaseParse class calls #GstBaseParseClass::set_sink_caps to + inform the subclass about incoming sinkpad caps. Subclass could + already set the srcpad caps accordingly, but this might be delayed + until calling gst_base_parse_finish_frame() with a non-queued frame. + + * At least at this point subclass needs to tell the #GstBaseParse class + how big data chunks it wants to receive (minimum frame size ). It can + do this with gst_base_parse_set_min_frame_size(). + + * #GstBaseParse class sets up appropriate data passing mode (pull/push) + and starts to process the data. + +## Parsing phase + + * #GstBaseParse gathers at least min_frame_size bytes of data either + by pulling it from upstream or collecting buffers in an internal + #GstAdapter. + + * A buffer of (at least) min_frame_size bytes is passed to subclass + with #GstBaseParseClass::handle_frame. Subclass checks the contents + and can optionally return #GST_FLOW_OK along with an amount of data + to be skipped to find a valid frame (which will result in a + subsequent DISCONT). If, otherwise, the buffer does not hold a + complete frame, #GstBaseParseClass::handle_frame can merely return + and will be called again when additional data is available. In push + mode this amounts to an additional input buffer (thus minimal + additional latency), in pull mode this amounts to some arbitrary + reasonable buffer size increase. + + Of course, gst_base_parse_set_min_frame_size() could also be used if + a very specific known amount of additional data is required. If, + however, the buffer holds a complete valid frame, it can pass the + size of this frame to gst_base_parse_finish_frame(). + + If acting as a converter, it can also merely indicate consumed input + data while simultaneously providing custom output data. Note that + baseclass performs some processing (such as tracking overall consumed + data rate versus duration) for each finished frame, but other state + is only updated upon each call to #GstBaseParseClass::handle_frame + (such as tracking upstream input timestamp). + + Subclass is also responsible for setting the buffer metadata + (e.g. buffer timestamp and duration, or keyframe if applicable). + (although the latter can also be done by #GstBaseParse if it is + appropriately configured, see below). Frame is provided with + timestamp derived from upstream (as much as generally possible), + duration obtained from configuration (see below), and offset + if meaningful (in pull mode). + + Note that #GstBaseParseClass::handle_frame might receive any small + amount of input data when leftover data is being drained (e.g. at + EOS). + + * As part of finish frame processing, just prior to actually pushing + the buffer in question, it is passed to + #GstBaseParseClass::pre_push_frame which gives subclass yet one last + chance to examine buffer metadata, or to send some custom (tag) + events, or to perform custom (segment) filtering. + + * During the parsing process #GstBaseParseClass will handle both srcpad + and sinkpad events. They will be passed to subclass if + #GstBaseParseClass::sink_event or #GstBaseParseClass::src_event + implementations have been provided. + +## Shutdown phase + +* #GstBaseParse class calls #GstBaseParseClass::stop to inform the + subclass that data parsing will be stopped. + +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 +set the fixed caps on srcpad, when the format is ensured (e.g. when +base class calls subclass' #GstBaseParseClass::set_sink_caps function). + +This base class uses %GST_FORMAT_DEFAULT as a meaning of frames. So, +subclass conversion routine needs to know that conversion from +%GST_FORMAT_TIME to %GST_FORMAT_DEFAULT must return the +frame number that can be found from the given byte position. + +#GstBaseParse uses subclasses conversion methods also for seeking (or +otherwise uses its own default one, see also below). + +Subclass @start and @stop functions will be called to inform the beginning +and end of data processing. + +Things that subclass need to take care of: + +* Provide pad templates +* Fixate the source pad caps when appropriate +* Inform base class how big data chunks should be retrieved. This is + done with gst_base_parse_set_min_frame_size() function. +* Examine data chunks passed to subclass with + #GstBaseParseClass::handle_frame and pass proper frame(s) to + gst_base_parse_finish_frame(), and setting src pad caps and timestamps + on frame. +* Provide conversion functions +* Update the duration information with gst_base_parse_set_duration() +* Optionally passthrough using gst_base_parse_set_passthrough() +* Configure various baseparse parameters using + gst_base_parse_set_average_bitrate(), gst_base_parse_set_syncable() + and gst_base_parse_set_frame_rate(). + +* In particular, if subclass is unable to determine a duration, but + parsing (or specs) yields a frames per seconds rate, then this can be + provided to #GstBaseParse to enable it to cater for buffer time + metadata (which will be taken from upstream as much as + possible). Internally keeping track of frame durations and respective + sizes that have been pushed provides #GstBaseParse with an estimated + bitrate. A default #GstBaseParseClass::convert (used if not + overridden) will then use these rates to perform obvious conversions. + These rates are also used to update (estimated) duration at regular + frame intervals. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses the input data into valid frames as defined by subclass +which should be passed to gst_base_parse_finish_frame(). +The frame's input buffer is guaranteed writable, +whereas the input frame ownership is held by caller +(so subclass should make a copy if it needs to hang on). +Input buffer (data) is provided by baseclass with as much +metadata set as possible by baseclass according to upstream +information and/or subclass settings, +though subclass may still set buffer timestamp and duration +if desired. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adds an entry to the index associating @offset to @ts. It is recommended +to only add keyframe entries. @force allows to bypass checks, such as +whether the stream is (upstream) seekable, another entry is already "close" +to the new entry, etc. + + + #gboolean indicating whether entry was added + + + + + #GstBaseParse. + + + + offset of entry + + + + timestamp associated with offset + + + + whether entry refers to keyframe + + + + add entry disregarding sanity checks + + + + + + Default implementation of #GstBaseParseClass::convert. + + + %TRUE if conversion was successful. + + + + + #GstBaseParse. + + + + #GstFormat describing the source format. + + + + Source value to be converted. + + + + #GstFormat defining the converted format. + + + + Pointer where the conversion result will be put. + + + + + + Drains the adapter until it is empty. It decreases the min_frame_size to +match the current adapter size and calls chain method until the adapter +is emptied or chain returns with error. + + + + + + + a #GstBaseParse + + + + + + Collects parsed data and pushes this downstream. +Source pad caps must be set when this is called. + +If @frame's out_buffer is set, that will be used as subsequent frame data. +Otherwise, @size samples will be taken from the input and used for output, +and the output's metadata (timestamps etc) will be taken as (optionally) +set by the subclass on @frame's (input) buffer (which is otherwise +ignored for any but the above purpose/information). + +Note that the latter buffer is invalidated by this call, whereas the +caller retains ownership of @frame. + + + a #GstFlowReturn that should be escalated to caller (of caller) + + + + + a #GstBaseParse + + + + a #GstBaseParseFrame + + + + consumed input data represented by frame + + + + + + Sets the parser subclass's tags and how they should be merged with any +upstream stream tags. This will override any tags previously-set +with gst_base_parse_merge_tags(). + +Note that this is provided for convenience, and the subclass is +not required to use this and can still do tag handling on its own. + + + + + + + a #GstBaseParse + + + + a #GstTagList to merge, or NULL to unset + previously-set tags + + + + the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE + + + + + + Pushes the frame's buffer downstream, sends any pending events and +does some timestamp and segment handling. Takes ownership of +frame's buffer, though caller retains ownership of @frame. + +This must be called with sinkpad STREAM_LOCK held. + + + #GstFlowReturn + + + + + #GstBaseParse. + + + + a #GstBaseParseFrame + + + + + + Optionally sets the average bitrate detected in media (if non-zero), +e.g. based on metadata, as it will be posted to the application. + +By default, announced average bitrate is estimated. The average bitrate +is used to estimate the total duration of the stream and to estimate +a seek position, if there's no index and the format is syncable +(see gst_base_parse_set_syncable()). + + + + + + + #GstBaseParse. + + + + average bitrate in bits/second + + + + + + Sets the duration of the currently playing media. Subclass can use this +when it is able to determine duration and/or notices a change in the media +duration. Alternatively, if @interval is non-zero (default), then stream +duration is determined based on estimated bitrate, and updated every @interval +frames. + + + + + + + #GstBaseParse. + + + + #GstFormat. + + + + duration value. + + + + how often to update the duration estimate based on bitrate, or 0. + + + + + + If frames per second is configured, parser can take care of buffer duration +and timestamping. When performing segment clipping, or seeking to a specific +location, a corresponding decoder might need an initial @lead_in and a +following @lead_out number of frames to ensure the desired segment is +entirely filled upon decoding. + + + + + + + the #GstBaseParse to set + + + + frames per second (numerator). + + + + frames per second (denominator). + + + + frames needed before a segment for subsequent decode + + + + frames needed after a segment + + + + + + Set if frames carry timing information which the subclass can (generally) +parse and provide. In particular, intrinsic (rather than estimated) time +can be obtained following a seek. + + + + + + + a #GstBaseParse + + + + whether frames carry timing information + + + + + + By default, the base class might try to infer PTS from DTS and vice +versa. While this is generally correct for audio data, it may not +be otherwise. Sub-classes implementing such formats should disable +timestamp inferring. + + + + + + + a #GstBaseParse + + + + %TRUE if parser should infer DTS/PTS from each other + + + + + + Sets the minimum and maximum (which may likely be equal) latency introduced +by the parsing process. If there is such a latency, which depends on the +particular parsing of the format, it typically corresponds to 1 frame duration. + +If the provided values changed from previously provided ones, this will +also post a LATENCY message on the bus so the pipeline can reconfigure its +global latency. + + + + + + + a #GstBaseParse + + + + minimum parse latency + + + + maximum parse latency + + + + + + Subclass can use this function to tell the base class that it needs to +be given buffers of at least @min_size bytes. + + + + + + + #GstBaseParse. + + + + Minimum size in bytes of the data that this base class should + give to subclass. + + + + + + Set if the nature of the format or configuration does not allow (much) +parsing, and the parser should operate in passthrough mode (which only +applies when operating in push mode). That is, incoming buffers are +pushed through unmodified, i.e. no #GstBaseParseClass::handle_frame +will be invoked, but #GstBaseParseClass::pre_push_frame will still be +invoked, so subclass can perform as much or as little is appropriate for +passthrough semantics in #GstBaseParseClass::pre_push_frame. + + + + + + + a #GstBaseParse + + + + %TRUE if parser should run in passthrough mode + + + + + + By default, the base class will guess PTS timestamps using a simple +interpolation (previous timestamp + duration), which is incorrect for +data streams with reordering, where PTS can go backward. Sub-classes +implementing such formats should disable PTS interpolation. + + + + + + + a #GstBaseParse + + + + %TRUE if parser should interpolate PTS timestamps + + + + + + Set if frame starts can be identified. This is set by default and +determines whether seeking based on bitrate averages +is possible for a format/stream. + + + + + + + a #GstBaseParse + + + + set if frame starts can be identified + + + + + + This function should only be called from a @handle_frame implementation. + +#GstBaseParse creates initial timestamps for frames by using the last +timestamp seen in the stream before the frame starts. In certain +cases, the correct timestamps will occur in the stream after the +start of the frame, but before the start of the actual picture data. +This function can be used to set the timestamps based on the offset +into the frame data that the picture starts. + + + + + + + a #GstBaseParse + + + + offset into current buffer + + + + + + If set to %TRUE, baseparse will unconditionally force parsing of the +incoming data. This can be required in the rare cases where the incoming +side-data (caps, pts, dts, ...) is not trusted by the user and wants to +force validation and parsing of the incoming data. +If set to %FALSE, decision of whether to parse the data or not is up to +the implementation (standard behaviour). + + + + the parent element. + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum @handle_frame needs to be overridden. + + + the parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Frame (context) data passed to each frame parsing virtual methods. In +addition to providing the data to be checked for a valid frame or an already +identified frame, it conveys additional metadata or control information +from and to the subclass w.r.t. the particular frame in question (rather +than global parameters). Some of these may apply to each parsing stage, others +only to some a particular one. These parameters are effectively zeroed at start +of each frame's processing, i.e. parsing virtual method invocation sequence. + + + input data to be parsed for frames. + + + + output data. + + + + a combination of input and output #GstBaseParseFrameFlags that + convey additional context to subclass or allow subclass to tune + subsequent #GstBaseParse actions. + + + + media specific offset of input frame + Note that a converter may have a different one on the frame's buffer. + + + + subclass can set this to indicates the metadata overhead + for the given frame, which is then used to enable more accurate bitrate + computations. If this is -1, it is assumed that this frame should be + skipped in bitrate calculation. + + + + + + + + + + + + + + + + + + + + Allocates a new #GstBaseParseFrame. This function is mainly for bindings, +elements written in C should usually allocate the frame on the stack and +then use gst_base_parse_frame_init() to initialise it. + + + a newly-allocated #GstBaseParseFrame. Free with + gst_base_parse_frame_free() when no longer needed. + + + + + a #GstBuffer + + + + the flags + + + + number of bytes in this frame which should be counted as + metadata overhead, ie. not used to calculate the average bitrate. + Set to -1 to mark the entire frame as metadata. If in doubt, set to 0. + + + + + + Copies a #GstBaseParseFrame. + + + A copy of @frame + + + + + a #GstBaseParseFrame + + + + + + Frees the provided @frame. + + + + + + + A #GstBaseParseFrame + + + + + + Sets a #GstBaseParseFrame to initial state. Currently this means +all public fields are zero-ed and a private flag is set to make +sure gst_base_parse_frame_free() only frees the contents but not +the actual frame. Use this function to initialise a #GstBaseParseFrame +allocated on the stack. + + + + + + + #GstBaseParseFrame. + + + + + + + Flags to be used in a #GstBaseParseFrame. + + + no flag + + + set by baseclass if current frame + is passed for processing to the subclass for the first time + (and not set on subsequent calls with same data). + + + set to indicate this buffer should not be + counted as frame, e.g. if this frame is dependent on a previous one. + As it is not counted as a frame, bitrate increases but frame to time + conversions are maintained. + + + @pre_push_frame can set this to indicate + that regular segment clipping can still be performed (as opposed to + any custom one having been done). + + + indicates to @finish_frame that the + the frame should be dropped (and might be handled internally by subclass) + + + indicates to @finish_frame that the + the frame should be queued for now and processed fully later + when the first non-queued frame is finished + + + + + + + #GstBaseSink is the base class for sink elements in GStreamer, such as +xvimagesink or filesink. It is a layer on top of #GstElement that provides a +simplified interface to plugin writers. #GstBaseSink handles many details +for you, for example: preroll, clock synchronization, state changes, +activation in push or pull mode, and queries. + +In most cases, when writing sink elements, there is no need to implement +class methods from #GstElement or to set functions on pads, because the +#GstBaseSink infrastructure should be sufficient. + +#GstBaseSink provides support for exactly one sink pad, which should be +named "sink". A sink implementation (subclass of #GstBaseSink) should +install a pad template in its class_init function, like so: +|[<!-- language="C" --> +static void +my_element_class_init (GstMyElementClass *klass) +{ + GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); + + // sinktemplate should be a #GstStaticPadTemplate with direction + // %GST_PAD_SINK and name "sink" + gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate); + + gst_element_class_set_static_metadata (gstelement_class, + "Sink name", + "Sink", + "My Sink element", + "The author <my.sink@my.email>"); +} +]| + +#GstBaseSink will handle the prerolling correctly. This means that it will +return %GST_STATE_CHANGE_ASYNC from a state change to PAUSED until the first +buffer arrives in this element. The base class will call the +#GstBaseSinkClass::preroll vmethod with this preroll buffer and will then +commit the state change to the next asynchronously pending state. + +When the element is set to PLAYING, #GstBaseSink will synchronise on the +clock using the times returned from #GstBaseSinkClass::get_times. If this +function returns %GST_CLOCK_TIME_NONE for the start time, no synchronisation +will be done. Synchronisation can be disabled entirely by setting the object +#GstBaseSink:sync property to %FALSE. + +After synchronisation the virtual method #GstBaseSinkClass::render will be +called. Subclasses should minimally implement this method. + +Subclasses that synchronise on the clock in the #GstBaseSinkClass::render +method are supported as well. These classes typically receive a buffer in +the render method and can then potentially block on the clock while +rendering. A typical example is an audiosink. +These subclasses can use gst_base_sink_wait_preroll() to perform the +blocking wait. + +Upon receiving the EOS event in the PLAYING state, #GstBaseSink will wait +for the clock to reach the time indicated by the stop time of the last +#GstBaseSinkClass::get_times call before posting an EOS message. When the +element receives EOS in PAUSED, preroll completes, the event is queued and an +EOS message is posted when going to PLAYING. + +#GstBaseSink will internally use the %GST_EVENT_SEGMENT events to schedule +synchronisation and clipping of buffers. Buffers that fall completely outside +of the current segment are dropped. Buffers that fall partially in the +segment are rendered (and prerolled). Subclasses should do any subbuffer +clipping themselves when needed. + +#GstBaseSink will by default report the current playback position in +%GST_FORMAT_TIME based on the current clock time and segment information. +If no clock has been set on the element, the query will be forwarded +upstream. + +The #GstBaseSinkClass::set_caps function will be called when the subclass +should configure itself to process a specific media type. + +The #GstBaseSinkClass::start and #GstBaseSinkClass::stop virtual methods +will be called when resources should be allocated. Any +#GstBaseSinkClass::preroll, #GstBaseSinkClass::render and +#GstBaseSinkClass::set_caps function will be called between the +#GstBaseSinkClass::start and #GstBaseSinkClass::stop calls. + +The #GstBaseSinkClass::event virtual method will be called when an event is +received by #GstBaseSink. Normally this method should only be overridden by +very specific elements (such as file sinks) which need to handle the +newsegment event specially. + +The #GstBaseSinkClass::unlock method is called when the elements should +unblock any blocking operations they perform in the +#GstBaseSinkClass::render method. This is mostly useful when the +#GstBaseSinkClass::render method performs a blocking write on a file +descriptor, for example. + +The #GstBaseSink:max-lateness property affects how the sink deals with +buffers that arrive too late in the sink. A buffer arrives too late in the +sink when the presentation time (as a combination of the last segment, buffer +timestamp and element base_time) plus the duration is before the current +time of the clock. +If the frame is later than max-lateness, the sink will drop the buffer +without calling the render method. +This feature is disabled if sync is disabled, the +#GstBaseSinkClass::get_times method does not return a valid start time or +max-lateness is set to -1 (the default). +Subclasses can use gst_base_sink_set_max_lateness() to configure the +max-lateness value. + +The #GstBaseSink:qos property will enable the quality-of-service features of +the basesink which gather statistics about the real-time performance of the +clock synchronisation. For each buffer received in the sink, statistics are +gathered and a QOS event is sent upstream with these numbers. This +information can then be used by upstream elements to reduce their processing +rate, for example. + +The #GstBaseSink:async property can be used to instruct the sink to never +perform an ASYNC state change. This feature is mostly usable when dealing +with non-synchronized streams or sparse streams. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Called to get sink pad caps from the subclass. + + + + + + + + + + + + + + + Get the start and end times for syncing on this buffer. + + + + + + + + + + + + + the start #GstClockTime + + + + the end #GstClockTime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the @sink spawns its own thread for pulling buffers from upstream it +should call this method after it has pulled a buffer. If the element needed +to preroll, this function will perform the preroll and will then block +until the element state is changed. + +This function should be called with the PREROLL_LOCK held. + + + %GST_FLOW_OK if the preroll completed and processing can +continue. Any other return value should be returned from the render vmethod. + + + + + the sink + + + + the mini object that caused the preroll + + + + + + Get the number of bytes that the sink will pull when it is operating in pull +mode. + + + the number of bytes @sink will pull in pull mode. + + + + + a #GstBaseSink + + + + + + Checks if @sink is currently configured to drop buffers which are outside +the current segment + + + %TRUE if the sink is configured to drop buffers outside the +current segment. + + + + + the sink + + + + + + Get the last sample that arrived in the sink and was used for preroll or for +rendering. This property can be used to generate thumbnails. + +The #GstCaps on the sample can be used to determine the type of the buffer. + +Free-function: gst_sample_unref + + + a #GstSample. gst_sample_unref() after + usage. This function returns %NULL when no buffer has arrived in the + sink yet or when the sink is not in PAUSED or PLAYING. + + + + + the sink + + + + + + Get the currently configured latency. + + + The configured latency. + + + + + the sink + + + + + + Get the maximum amount of bits per second that the sink will render. + + + the maximum number of bits per second @sink will render. + + + + + a #GstBaseSink + + + + + + Gets the max lateness value. See gst_base_sink_set_max_lateness() for +more details. + + + The maximum time in nanoseconds that a buffer can be late +before it is dropped and not rendered. A value of -1 means an +unlimited time. + + + + + the sink + + + + + + Get the processing deadline of @sink. see +gst_base_sink_set_processing_deadline() for more information about +the processing deadline. + + + the processing deadline + + + + + a #GstBaseSink + + + + + + Get the render delay of @sink. see gst_base_sink_set_render_delay() for more +information about the render delay. + + + the render delay of @sink. + + + + + a #GstBaseSink + + + + + + 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. + + + %TRUE if the sink is configured to synchronize against the clock. + + + + + the sink + + + + + + Get the time that will be inserted between frames to control the +maximum buffers per second. + + + the number of nanoseconds @sink will put between frames. + + + + + a #GstBaseSink + + + + + + Get the synchronisation offset of @sink. + + + The synchronisation offset. + + + + + the sink + + + + + + Checks if @sink is currently configured to perform asynchronous state +changes to PAUSED. + + + %TRUE if the sink is configured to perform asynchronous state +changes. + + + + + the sink + + + + + + Checks if @sink is currently configured to store the last received sample in +the last-sample property. + + + %TRUE if the sink is configured to store the last received sample. + + + + + the sink + + + + + + Checks if @sink is currently configured to send Quality-of-Service events +upstream. + + + %TRUE if the sink is configured to perform Quality-of-Service. + + + + + the sink + + + + + + Query the sink for the latency parameters. The latency will be queried from +the upstream elements. @live will be %TRUE if @sink is configured to +synchronize against the clock. @upstream_live will be %TRUE if an upstream +element is live. + +If both @live and @upstream_live are %TRUE, the sink will want to compensate +for the latency introduced by the upstream elements by setting the +@min_latency to a strictly positive value. + +This function is mostly used by subclasses. + + + %TRUE if the query succeeded. + + + + + the sink + + + + if the sink is live + + + + if an upstream element is live + + + + the min latency of the upstream elements + + + + the max latency of the upstream elements + + + + + + Configures @sink to perform all state changes asynchronously. When async is +disabled, the sink will immediately go to PAUSED instead of waiting for a +preroll buffer. This feature is useful if the sink does not synchronize +against the clock or when it is dealing with sparse streams. + + + + + + + the sink + + + + the new async value. + + + + + + Set the number of bytes that the sink will pull when it is operating in pull +mode. + + + + + + + a #GstBaseSink + + + + the blocksize in bytes + + + + + + Configure @sink to drop buffers which are outside the current segment + + + + + + + the sink + + + + drop buffers outside the segment + + + + + + Configures @sink to store the last received sample in the last-sample +property. + + + + + + + the sink + + + + the new enable-last-sample value. + + + + + + Set the maximum amount of bits per second that the sink will render. + + + + + + + a #GstBaseSink + + + + the max_bitrate in bits per second + + + + + + Sets the new max lateness value to @max_lateness. This value is +used to decide if a buffer should be dropped or not based on the +buffer timestamp and the current clock time. A value of -1 means +an unlimited time. + + + + + + + the sink + + + + the new max lateness value. + + + + + + Maximum amount of time (in nanoseconds) that the pipeline can take +for processing the buffer. This is added to the latency of live +pipelines. + +This function is usually called by subclasses. + + + + + + + a #GstBaseSink + + + + the new processing deadline in nanoseconds. + + + + + + Configures @sink to send Quality-of-Service events upstream. + + + + + + + the sink + + + + the new qos value. + + + + + + Set the render delay in @sink to @delay. The render delay is the time +between actual rendering of a buffer and its synchronisation time. Some +devices might delay media rendering which can be compensated for with this +function. + +After calling this function, this sink will report additional latency and +other sinks will adjust their latency to delay the rendering of their media. + +This function is usually called by subclasses. + + + + + + + a #GstBaseSink + + + + the new delay + + + + + + Configures @sink to synchronize on the clock or not. When +@sync is %FALSE, incoming samples will be played as fast as +possible. If @sync is %TRUE, the timestamps of the incoming +buffers will be used to schedule the exact render time of its +contents. + + + + + + + the sink + + + + the new sync value. + + + + + + Set the time that will be inserted between rendered buffers. This +can be used to control the maximum buffers per second that the sink +will render. + + + + + + + a #GstBaseSink + + + + the throttle time in nanoseconds + + + + + + Adjust the synchronisation of @sink with @offset. A negative value will +render buffers earlier than their timestamp. A positive value will delay +rendering. This function can be used to fix playback of badly timestamped +buffers. + + + + + + + the sink + + + + the new offset + + + + + + This function will wait for preroll to complete and will then block until @time +is reached. It is usually called by subclasses that use their own internal +synchronisation but want to let some synchronization (like EOS) be handled +by the base class. + +This function should only be called with the PREROLL_LOCK held (like when +receiving an EOS event in the ::event vmethod or when handling buffers in +::render). + +The @time argument should be the running_time of when the timeout should happen +and will be adjusted with any latency and offset configured in the sink. + + + #GstFlowReturn + + + + + the sink + + + + the running_time to be reached + + + + the jitter to be filled with time diff, or %NULL + + + + + + This function will block until @time is reached. It is usually called by +subclasses that use their own internal synchronisation. + +If @time is not valid, no synchronisation is done and %GST_CLOCK_BADTIME is +returned. Likewise, if synchronisation is disabled in the element or there +is no clock, no synchronisation is done and %GST_CLOCK_BADTIME is returned. + +This function should only be called with the PREROLL_LOCK held, like when +receiving an EOS event in the #GstBaseSinkClass::event vmethod or when +receiving a buffer in +the #GstBaseSinkClass::render vmethod. + +The @time argument should be the running_time of when this method should +return and is not adjusted with any latency or offset configured in the +sink. + + + #GstClockReturn + + + + + the sink + + + + the running_time to be reached + + + + the jitter to be filled with time diff, or %NULL + + + + + + If the #GstBaseSinkClass::render method performs its own synchronisation +against the clock it must unblock when going from PLAYING to the PAUSED state +and call this method before continuing to render the remaining data. + +If the #GstBaseSinkClass::render method can block on something else than +the clock, it must also be ready to unblock immediately on +the #GstBaseSinkClass::unlock method and cause the +#GstBaseSinkClass::render method to immediately call this function. +In this case, the subclass must be prepared to continue rendering where it +left off if this function returns %GST_FLOW_OK. + +This function will block until a state change to PLAYING happens (in which +case this function returns %GST_FLOW_OK) or the processing must be stopped due +to a state change to READY or a FLUSH event (in which case this function +returns %GST_FLOW_FLUSHING). + +This function should only be called with the PREROLL_LOCK held, like in the +render function. + + + %GST_FLOW_OK if the preroll completed and processing can +continue. Any other return value should be returned from the render vmethod. + + + + + the sink + + + + + + If set to %TRUE, the basesink will perform asynchronous state changes. +When set to %FALSE, the sink will not signal the parent when it prerolls. +Use this option when dealing with sparse streams or when synchronisation is +not required. + + + + The amount of bytes to pull when operating in pull mode. + + + + Enable the last-sample property. If %FALSE, basesink doesn't keep a +reference to the last buffer arrived and the last-sample property is always +set to %NULL. This can be useful if you need buffers to be released as soon +as possible, eg. if you're using a buffer pool. + + + + The last buffer that arrived in the sink and was used for preroll or for +rendering. This property can be used to generate thumbnails. This property +can be %NULL when the sink has not yet received a buffer. + + + + Control the maximum amount of bits that will be rendered per second. +Setting this property to a value bigger than 0 will make the sink delay +rendering of the buffers when it would exceed to max-bitrate. + + + + + + + Maximum amount of time (in nanoseconds) that the pipeline can take +for processing the buffer. This is added to the latency of live +pipelines. + + + + + + + The additional delay between synchronisation and actual rendering of the +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 + + + + + + + The time to insert between buffers. This property can be used to control +the maximum amount of buffers per second to render. Setting this property +to a value bigger than 0 will make the sink create THROTTLE QoS events. + + + + Controls the final synchronisation, a negative value will render the buffer +earlier while a positive value delays playback. This property can be +used to fix synchronisation in bad files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At the minimum, the @render method should be overridden to +output/present buffers. + + + Element parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the start #GstClockTime + + + + the end #GstClockTime + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a generic base class for source elements. The following +types of sources are supported: + + * random access sources like files + * seekable sources + * live sources + +The source can be configured to operate in any #GstFormat with the +gst_base_src_set_format() method. The currently set format determines +the format of the internal #GstSegment and any %GST_EVENT_SEGMENT +events. The default format for #GstBaseSrc is %GST_FORMAT_BYTES. + +#GstBaseSrc always supports push mode scheduling. If the following +conditions are met, it also supports pull mode scheduling: + + * The format is set to %GST_FORMAT_BYTES (default). + * #GstBaseSrcClass::is_seekable returns %TRUE. + +If all the conditions are met for operating in pull mode, #GstBaseSrc is +automatically seekable in push mode as well. The following conditions must +be met to make the element seekable in push mode when the format is not +%GST_FORMAT_BYTES: + +* #GstBaseSrcClass::is_seekable returns %TRUE. +* #GstBaseSrcClass::query can convert all supported seek formats to the + internal format as set with gst_base_src_set_format(). +* #GstBaseSrcClass::do_seek is implemented, performs the seek and returns + %TRUE. + +When the element does not meet the requirements to operate in pull mode, the +offset and length in the #GstBaseSrcClass::create method should be ignored. +It is recommended to subclass #GstPushSrc instead, in this situation. If the +element can operate in pull mode but only with specific offsets and +lengths, it is allowed to generate an error when the wrong values are passed +to the #GstBaseSrcClass::create function. + +#GstBaseSrc has support for live sources. Live sources are sources that when +paused discard data, such as audio or video capture devices. A typical live +source also produces data at a fixed rate and thus provides a clock to publish +this rate. +Use gst_base_src_set_live() to activate the live source mode. + +A live source does not produce data in the PAUSED state. This means that the +#GstBaseSrcClass::create method will not be called in PAUSED but only in +PLAYING. To signal the pipeline that the element will not produce data, the +return value from the READY to PAUSED state will be +%GST_STATE_CHANGE_NO_PREROLL. + +A typical live source will timestamp the buffers it creates with the +current running time of the pipeline. This is one reason why a live source +can only produce data in the PLAYING state, when the clock is actually +distributed and running. + +Live sources that synchronize and block on the clock (an audio source, for +example) can use gst_base_src_wait_playing() when the +#GstBaseSrcClass::create function was interrupted by a state change to +PAUSED. + +The #GstBaseSrcClass::get_times method can be used to implement pseudo-live +sources. It only makes sense to implement the #GstBaseSrcClass::get_times +function if the source is a live source. The #GstBaseSrcClass::get_times +function should return timestamps starting from 0, as if it were a non-live +source. The base class will make sure that the timestamps are transformed +into the current running_time. The base source will then wait for the +calculated running_time before pushing out the buffer. + +For live sources, the base class will by default report a latency of 0. +For pseudo live sources, the base class will by default measure the difference +between the first buffer timestamp and the start time of get_times and will +report this value as the latency. +Subclasses should override the query function when this behaviour is not +acceptable. + +There is only support in #GstBaseSrc for exactly one source pad, which +should be named "src". A source implementation (subclass of #GstBaseSrc) +should install a pad template in its class_init function, like so: +|[<!-- language="C" --> +static void +my_element_class_init (GstMyElementClass *klass) +{ + GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); + // srctemplate should be a #GstStaticPadTemplate with direction + // %GST_PAD_SRC and name "src" + gst_element_class_add_static_pad_template (gstelement_class, &srctemplate); + + gst_element_class_set_static_metadata (gstelement_class, + "Source name", + "Source", + "My Source element", + "The author <my.sink@my.email>"); +} +]| + +## Controlled shutdown of live sources in applications + +Applications that record from a live source may want to stop recording +in a controlled way, so that the recording is stopped, but the data +already in the pipeline is processed to the end (remember that many live +sources would go on recording forever otherwise). For that to happen the +application needs to make the source stop recording and send an EOS +event down the pipeline. The application would then wait for an +EOS message posted on the pipeline's bus to know when all data has +been processed and the pipeline can safely be stopped. + +An application may send an EOS event to a source element to make it +perform the EOS logic (send EOS event downstream or post a +%GST_MESSAGE_SEGMENT_DONE on the bus). This can typically be done +with the gst_element_send_event() function on the element or its parent bin. + +After the EOS has been sent to the element, the application should wait for +an EOS message to be posted on the pipeline's bus. Once this EOS message is +received, it may safely shut down the entire pipeline. + + + Ask the subclass to allocate an output buffer with @offset and @size, the default +implementation will use the negotiated allocator. + + + + + + + + + + + + + + + + + + + + + Ask the subclass to create a buffer with @offset and @size, the default +implementation will call alloc if no allocated @buf is provided and then call fill. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Called if, in negotiation, caps need fixating. + + + the fixated caps + + + + + + + + + + + + + Called to get the caps to report. + + + + + + + + + + + + + + + Get the total size of the resource in the format set by +gst_base_src_set_format(). + + + %TRUE if the size is available and has been set. + + + + + + + + + + + + + Given @buffer, return @start and @end time when it should be pushed +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set new caps on the basesrc source pad. + + + %TRUE if the caps could be set + + + + + a #GstBaseSrc + + + + a #GstCaps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lets #GstBaseSrc sub-classes to know the memory @allocator +used by the base class and its @params. + +Unref the @allocator after usage. + + + + + + + a #GstBaseSrc + + + + the #GstAllocator +used + + + + the #GstAllocationParams of @allocator + + + + + + Get the number of bytes that @src will push out with each buffer. + + + the number of bytes pushed with each buffer. + + + + + the source + + + + + + + + the instance of the #GstBufferPool used +by the src; unref it after usage. + + + + + a #GstBaseSrc + + + + + + Query if @src timestamps outgoing buffers based on the current running_time. + + + %TRUE if the base class will automatically timestamp outgoing buffers. + + + + + the source + + + + + + Get the current async behaviour of @src. See also gst_base_src_set_async(). + + + %TRUE if @src is operating in async mode. + + + + + base source instance + + + + + + Check if an element is in live mode. + + + %TRUE if element is in live mode. + + + + + base source instance + + + + + + 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 #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 +configured with gst_base_src_set_format() + Use gst_base_src_new_segment() + + + %TRUE if preparation of the seamless segment succeeded. + + + + + The source + + + + The new start value for the segment + + + + Stop value for the new segment + + + + The new time value for the start of the new segment + + + + + + Prepare a new segment for emission downstream. This function must +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 @segment must be identical with the current format +of the source, as configured with gst_base_src_set_format(). + +The format of @src must not be %GST_FORMAT_UNDEFINED and the format +should be configured via gst_base_src_set_format() before calling this method. + + + %TRUE if preparation of new segment succeeded. + + + + + a #GstBaseSrc + + + + a pointer to a #GstSegment + + + + + + Send a new segment downstream. This function must +only be called by derived sub-classes, and only from the #GstBaseSrcClass::create function, +as the stream-lock needs to be held. +This method also requires that an out caps has been configured, so +gst_base_src_set_caps() needs to have been called before. + +The format for the @segment must be identical with the current format +of the source, as configured with gst_base_src_set_format(). + +The format of @src must not be %GST_FORMAT_UNDEFINED and the format +should be configured via gst_base_src_set_format() before calling this method. + +This is a variant of gst_base_src_new_segment() sending the segment right away, +which can be useful to ensure events ordering. + + + %TRUE if sending of new segment succeeded. + + + + + a #GstBaseSrc + + + + a pointer to a #GstSegment + + + + + + Query the source for the latency parameters. @live will be %TRUE when @src is +configured as a live source. @min_latency and @max_latency will be set +to the difference between the running time and the timestamp of the first +buffer. + +This function is mostly used by subclasses. + + + %TRUE if the query succeeded. + + + + + the source + + + + if the source is live + + + + the min latency of the source + + + + the max latency of the source + + + + + + Configure async behaviour in @src, no state change will block. The open, +close, start, stop, play and pause virtual methods will be executed in a +different thread and are thus allowed to perform blocking operations. Any +blocking operation should be unblocked with the unlock vmethod. + + + + + + + base source instance + + + + new async mode + + + + + + If @automatic_eos is %TRUE, @src will automatically go EOS if a buffer +after the total size is returned. By default this is %TRUE but sources +that can't return an authoritative size and only know that they're EOS +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 #GstBaseSrcClass::create implementation +returns %GST_FLOW_EOS. + + + + + + + base source instance + + + + automatic eos + + + + + + Set the number of bytes that @src will push out with each buffer. When +@blocksize is set to -1, a default length will be used. + + + + + + + the source + + + + the new blocksize in bytes + + + + + + Set new caps on the basesrc source pad. + + + %TRUE if the caps could be set + + + + + a #GstBaseSrc + + + + a #GstCaps + + + + + + Configure @src to automatically timestamp outgoing buffers based on the +current running_time of the pipeline. This property is mostly useful for live +sources. + + + + + + + the source + + + + enable or disable timestamping + + + + + + If not @dynamic, size is only updated when needed, such as when trying to +read past current tracked size. Otherwise, size is checked for upon each +read. + + + + + + + base source instance + + + + new dynamic size mode + + + + + + Sets the default format of the source. This will be the format used +for sending SEGMENT events and for performing seeks. + +If a format of GST_FORMAT_BYTES is set, the element will be able to +operate in pull mode if the #GstBaseSrcClass::is_seekable returns %TRUE. + +This function must only be called in states < %GST_STATE_PAUSED. + + + + + + + base source instance + + + + the format to use + + + + + + If the element listens to a live source, @live should +be set to %TRUE. + +A live source will not produce data in the PAUSED state and +will therefore not be able to participate in the PREROLL phase +of a pipeline. To signal this fact to the application and the +pipeline, the state change return value of the live source will +be GST_STATE_CHANGE_NO_PREROLL. + + + + + + + base source instance + + + + new live-mode + + + + + + Complete an asynchronous start operation. When the subclass overrides the +start method, it should call gst_base_src_start_complete() when the start +operation completes either from the same thread or from an asynchronous +helper thread. + + + + + + + base source instance + + + + a #GstFlowReturn + + + + + + Wait until the start operation completes. + + + a #GstFlowReturn. + + + + + base source instance + + + + + + Subclasses can call this from their create virtual method implementation +to submit a buffer list to be pushed out later. This is useful in +cases where the create function wants to produce multiple buffers to be +pushed out in one go in form of a #GstBufferList, which can reduce overhead +drastically, especially for packetised inputs (for data streams where +the packetisation/chunking is not important it is usually more efficient +to return larger buffers instead). + +Subclasses that use this function from their create function must return +%GST_FLOW_OK and no buffer from their create virtual method implementation. +If a buffer is returned after a buffer list has also been submitted via this +function the behaviour is undefined. + +Subclasses must only call this function once per create function call and +subclasses must only call this function when the source operates in push +mode. + + + + + + + a #GstBaseSrc + + + + a #GstBufferList + + + + + + If the #GstBaseSrcClass::create method performs its own synchronisation +against the clock it must unblock when going from PLAYING to the PAUSED state +and call this method before continuing to produce the remaining data. + +This function will block until a state change to PLAYING happens (in which +case this function returns %GST_FLOW_OK) or the processing must be stopped due +to a state change to READY or a FLUSH event (in which case this function +returns %GST_FLOW_FLUSHING). + + + %GST_FLOW_OK if @src is PLAYING and processing can +continue. Any other return value should be returned from the create vmethod. + + + + + the src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At the minimum, the @create method should be overridden to produce +buffers. + + + Element parent class + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + base source instance + + + + + + + + + + the fixated caps + + + + + + + + + + + + + + + + + %TRUE if the caps could be set + + + + + a #GstBaseSrc + + + + a #GstCaps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the size is available and has been set. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstElement flags that a basesrc element may have. + + + has source is starting + + + has source been started + + + offset to define more flags + + + + + + + This base class is for filter elements that process data. Elements +that are suitable for implementation using #GstBaseTransform are ones +where the size and caps of the output is known entirely from the input +caps and buffer sizes. These include elements that directly transform +one buffer into another, modify the contents of a buffer in-place, as +well as elements that collate multiple input buffers into one output buffer, +or that expand one input buffer into multiple output buffers. See below +for more concrete use cases. + +It provides for: + +* one sinkpad and one srcpad +* Possible formats on sink and source pad implemented + with custom transform_caps function. By default uses + same format on sink and source. + +* Handles state changes +* Does flushing +* Push mode +* Pull mode if the sub-class transform can operate on arbitrary data + +# Use Cases + +## Passthrough mode + + * Element has no interest in modifying the buffer. It may want to inspect it, + in which case the element should have a transform_ip function. If there + is no transform_ip function in passthrough mode, the buffer is pushed + intact. + + * The #GstBaseTransformClass.passthrough_on_same_caps variable + will automatically set/unset passthrough based on whether the + element negotiates the same caps on both pads. + + * #GstBaseTransformClass.passthrough_on_same_caps on an element that + doesn't implement a transform_caps function is useful for elements that + only inspect data (such as level) + + * Example elements + + * Level + * Videoscale, audioconvert, videoconvert, audioresample in certain modes. + +## Modifications in-place - input buffer and output buffer are the same thing. + +* The element must implement a transform_ip function. +* Output buffer size must <= input buffer size +* If the always_in_place flag is set, non-writable buffers will be copied + and passed to the transform_ip function, otherwise a new buffer will be + created and the transform function called. + +* Incoming writable buffers will be passed to the transform_ip function + immediately. +* only implementing transform_ip and not transform implies always_in_place = %TRUE + + * Example elements: + * Volume + * Audioconvert in certain modes (signed/unsigned conversion) + * videoconvert in certain modes (endianness swapping) + +## Modifications only to the caps/metadata of a buffer + +* The element does not require writable data, but non-writable buffers + should be subbuffered so that the meta-information can be replaced. + +* Elements wishing to operate in this mode should replace the + prepare_output_buffer method to create subbuffers of the input buffer + and set always_in_place to %TRUE + +* Example elements + * Capsfilter when setting caps on outgoing buffers that have + none. + * identity when it is going to re-timestamp buffers by + datarate. + +## Normal mode + * always_in_place flag is not set, or there is no transform_ip function + * Element will receive an input buffer and output buffer to operate on. + * Output buffer is allocated by calling the prepare_output_buffer function. + * Example elements: + * Videoscale, videoconvert, audioconvert when doing + scaling/conversions + +## Special output buffer allocations + * Elements which need to do special allocation of their output buffers + beyond allocating output buffers via the negotiated allocator or + buffer pool should implement the prepare_output_buffer method. + + * Example elements: + * efence + +# Sub-class settable flags on GstBaseTransform + +* passthrough + + * Implies that in the current configuration, the sub-class is not interested in modifying the buffers. + * Elements which are always in passthrough mode whenever the same caps has been negotiated on both pads can set the class variable passthrough_on_same_caps to have this behaviour automatically. + +* always_in_place + * Determines whether a non-writable buffer will be copied before passing + to the transform_ip function. + + * Implied %TRUE if no transform function is implemented. + * Implied %FALSE if ONLY transform function is implemented. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lets #GstBaseTransform sub-classes know the memory @allocator +used by the base class and its @params. + +Unref the @allocator after use. + + + + + + + a #GstBaseTransform + + + + the #GstAllocator +used + + + + the #GstAllocationParams of @allocator + + + + + + + + the instance of the #GstBufferPool used +by @trans; free it after use + + + + + a #GstBaseTransform + + + + + + See if @trans is configured as a in_place transform. + + + %TRUE if the transform is configured in in_place mode. + +MT safe. + + + + + the #GstBaseTransform to query + + + + + + See if @trans is configured as a passthrough transform. + + + %TRUE if the transform is configured in passthrough mode. + +MT safe. + + + + + the #GstBaseTransform to query + + + + + + Queries if the transform will handle QoS. + + + %TRUE if QoS is enabled. + +MT safe. + + + + + a #GstBaseTransform + + + + + + 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 +influence the input format. + + + + + + + a #GstBaseTransform + + + + + + Instructs @trans to renegotiate a new downstream transform on the next +buffer. This function is typically called after properties on the transform +were set that influence the output format. + + + + + + + a #GstBaseTransform + + + + + + If @gap_aware is %FALSE (the default), output buffers will have the +%GST_BUFFER_FLAG_GAP flag unset. + +If set to %TRUE, the element must handle output buffers with this flag set +correctly, i.e. it can assume that the buffer contains neutral data but must +unset the flag if the output is no neutral data. + +MT safe. + + + + + + + a #GstBaseTransform + + + + New state + + + + + + Determines whether a non-writable buffer will be copied before passing +to the transform_ip function. + + * Always %TRUE if no transform function is implemented. + * Always %FALSE if ONLY transform function is implemented. + +MT safe. + + + + + + + the #GstBaseTransform to modify + + + + Boolean value indicating that we would like to operate +on in_place buffers. + + + + + + Set passthrough mode for this filter by default. This is mostly +useful for filters that do not care about negotiation. + +Always %TRUE for filters which don't implement either a transform +or transform_ip or generate_output method. + +MT safe. + + + + + + + the #GstBaseTransform to set + + + + boolean indicating passthrough mode. + + + + + + If @prefer_passthrough is %TRUE (the default), @trans will check and +prefer passthrough caps from the list of caps returned by the +transform_caps vmethod. + +If set to %FALSE, the element must order the caps returned from the +transform_caps function in such a way that the preferred format is +first in the list. This can be interesting for transforms that can do +passthrough transforms but prefer to do something else, like a +capsfilter. + +MT safe. + + + + + + + a #GstBaseTransform + + + + New state + + + + + + Enable or disable QoS handling in the transform. + +MT safe. + + + + + + + a #GstBaseTransform + + + + new state + + + + + + Set the QoS parameters in the transform. This function is called internally +when a QOS event is received but subclasses can provide custom information +when needed. + +MT safe. + + + + + + + a #GstBaseTransform + + + + the proportion + + + + the diff against the clock + + + + the timestamp of the buffer generating the QoS expressed in +running_time. + + + + + + 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 sent downstream %FALSE otherwise + + + + + a #GstBaseTransform + + + + An updated version of the srcpad caps to be pushed +downstream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum either @transform or @transform_ip need to be overridden. +If the element can overwrite the input data with the results (data is of the +same type and quantity) it should provide @transform_ip. + + + Element parent class + + + + If set to %TRUE, passthrough mode will be + automatically enabled if the caps are the same. + Set to %FALSE by default. + + + + If set to %TRUE, @transform_ip will be called in + passthrough mode. The passed buffer might not be + writable. When %FALSE, neither @transform nor + @transform_ip will be called in passthrough mode. + Set to %TRUE by default. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstBitReader provides a bit reader that can read any number of bits +from a memory buffer. It provides functions for reading any number of bits +into 8, 16, 32 and 64 bit variables. + + + Data from which the bit reader will + read + + + + + + Size of @data in bytes + + + + Current byte position + + + + Bit position in the current byte + + + + + + + + + Frees a #GstBitReader instance, which was previously allocated by +gst_bit_reader_new(). + + + + + + + a #GstBitReader instance + + + + + + Read @nbits bits into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint16 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint32 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint64 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint8 to store the result + + + + number of bits to read + + + + + + Returns the current position of a #GstBitReader instance in bits. + + + The current position of @reader in bits. + + + + + a #GstBitReader instance + + + + + + Returns the remaining number of bits of a #GstBitReader instance. + + + The remaining number of bits of @reader instance. + + + + + a #GstBitReader instance + + + + + + Returns the total number of bits of a #GstBitReader instance. + + + The total number of bits of @reader instance. + + + + + a #GstBitReader instance + + + + + + Initializes a #GstBitReader instance to read from @data. This function +can be called on already initialized instances. + + + + + + + a #GstBitReader instance + + + + data from which the bit reader should read + + + + + + Size of @data in bytes + + + + + + Read @nbits bits into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint16 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint32 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint64 to store the result + + + + number of bits to read + + + + + + Read @nbits bits into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + Pointer to a #guint8 to store the result + + + + number of bits to read + + + + + + Sets the new position of a #GstBitReader instance to @pos in bits. + + + %TRUE if the position could be set successfully, %FALSE +otherwise. + + + + + a #GstBitReader instance + + + + The new position in bits + + + + + + Skips @nbits bits of the #GstBitReader instance. + + + %TRUE if @nbits bits could be skipped, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + the number of bits to skip + + + + + + Skips until the next byte. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitReader instance + + + + + + Create a new #GstBitReader instance, which will read from @data. + +Free-function: gst_bit_reader_free + + + a new #GstBitReader instance + + + + + Data from which the #GstBitReader + should read + + + + + + Size of @data in bytes + + + + + + + #GstBitWriter provides a bit writer that can write any number of +bits into a memory buffer. It provides functions for writing any +number of bits into 8, 16, 32 and 64 bit variables. + + + Allocated @data for bit writer to write + + + + Size of written @data in bits + + + + + + + + + + + + + + + + + + Write trailing bit to align last byte of @data. @trailing_bit can +only be 1 or 0. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + trailing bits of last byte, 0 or 1 + + + + + + Frees @bitwriter and the allocated data inside. + + + + + + + #GstBitWriter instance + + + + + + Frees @bitwriter without destroying the internal data, which is +returned as #GstBuffer. + +Free-function: gst_buffer_unref + + + a new allocated #GstBuffer wrapping the + data inside. gst_buffer_unref() after usage. + + + + + #GstBitWriter instance + + + + + + Frees @bitwriter without destroying the internal data, which is +returned. + +Free-function: g_free + + + the current data. g_free() after + usage. + + + + + + + #GstBitWriter instance + + + + + + Get written data pointer + + + data pointer + + + + + + + a #GstBitWriter instance + + + + + + + + + + + + + + + + + Get size of written @data + + + size of bits written in @data + + + + + a #GstBitWriter instance + + + + + + Initializes @bitwriter to an empty instance. + + + + + + + #GstBitWriter instance + + + + + + Initializes @bitwriter with the given memory area @data. IF +@initialized is %TRUE it is possible to read @size bits from the +#GstBitWriter from the beginning. + + + + + + + #GstBitWriter instance + + + + Memory area for writing + + + + + + Size of @data in bytes + + + + If %TRUE the complete data can be read from the beginning + + + + + + Initializes a #GstBitWriter instance and allocates the given data +@size. + + + + + + + #GstBitWriter instance + + + + the size on bytes to allocate for data + + + + If %TRUE the data can't be reallocated + + + + + + Write @nbits bits of @value to #GstBitWriter. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + value of #guint16 to write + + + + number of bits to write + + + + + + Write @nbits bits of @value to #GstBitWriter. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + value of #guint32 to write + + + + number of bits to write + + + + + + Write @nbits bits of @value to #GstBitWriter. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + value of #guint64 to write + + + + number of bits to write + + + + + + Write @nbits bits of @value to #GstBitWriter. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + value of #guint8 to write + + + + number of bits to write + + + + + + Write @nbytes bytes of @data to #GstBitWriter. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstBitWriter instance + + + + pointer of data to write + + + + + + number of bytes to write + + + + + + Resets @bitwriter and frees the data if it's owned by @bitwriter. + + + + + + + #GstBitWriter instance + + + + + + Resets @bitwriter and returns the current data as #GstBuffer. + +Free-function: gst_buffer_unref + + + a new allocated #GstBuffer wrapping the + current data. gst_buffer_unref() after usage. + + + + + a #GstBitWriter instance + + + + + + Resets @bitwriter and returns the current data. + +Free-function: g_free + + + the current data. g_free() after + usage. + + + + + + + a #GstBitWriter instance + + + + + + + + + + + + + + + + + + + + Creates a new, empty #GstBitWriter instance. + +Free-function: gst_bit_writer_free + + + a new, empty #GstByteWriter instance + + + + + 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 beginning. + +Free-function: gst_bit_writer_free + + + a new #GstBitWriter instance + + + + + Memory area for writing + + + + + + Size of @data in bytes + + + + if %TRUE the complete data can be read from the beginning + + + + + + Creates a #GstBitWriter instance with the given initial data size. + +Free-function: gst_bit_writer_free + + + a new #GstBitWriter instance + + + + + Initial size of data in bytes + + + + If %TRUE the data can't be reallocated + + + + + + + #GstByteReader provides a byte reader that can read different integer and +floating point types from a memory buffer. It provides functions for reading +signed/unsigned, little/big endian integers of 8, 16, 24, 32 and 64 bits +and functions for reading little/big endian floating points numbers of +32 and 64 bits. It also provides functions to read NUL-terminated strings +in various character encodings. + + + Data from which the bit reader will + read + + + + + + Size of @data in bytes + + + + Current byte position + + + + + + + + + Free-function: g_free + +Returns a newly-allocated copy of the current data +position if at least @size bytes are left and +updates the current position. Free with g_free() when no longer needed. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Size in bytes + + + + address of a + #guint8 pointer variable in which to store the result + + + + + + + + Free-function: g_free + +Returns a newly-allocated copy of the current data position if there is +a NUL-terminated UTF-16 string in the data (this could be an empty string +as well), and advances the current position. + +No input checking for valid UTF-16 is done. This function is endianness +agnostic - you should not assume the UTF-16 characters are in host +endianness. + +This function will fail if no NUL-terminator was found in in the data. + +Note: there is no peek or get variant of this function to ensure correct +byte alignment of the UTF-16 string. + + + %TRUE if a string could be read, %FALSE otherwise. The + string put into @str must be freed with g_free() when no longer needed. + + + + + a #GstByteReader instance + + + + address of a + #guint16 pointer variable in which to store the result + + + + + + + + Free-function: g_free + +Returns a newly-allocated copy of the current data position if there is +a NUL-terminated UTF-32 string in the data (this could be an empty string +as well), and advances the current position. + +No input checking for valid UTF-32 is done. This function is endianness +agnostic - you should not assume the UTF-32 characters are in host +endianness. + +This function will fail if no NUL-terminator was found in in the data. + +Note: there is no peek or get variant of this function to ensure correct +byte alignment of the UTF-32 string. + + + %TRUE if a string could be read, %FALSE otherwise. The + string put into @str must be freed with g_free() when no longer needed. + + + + + a #GstByteReader instance + + + + address of a + #guint32 pointer variable in which to store the result + + + + + + + + Free-function: g_free + +FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance, +advancing the current position to the byte after the string. This will work +for any NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be read into @str, %FALSE otherwise. The + string put into @str must be freed with g_free() when no longer needed. + + + + + a #GstByteReader instance + + + + address of a + #gchar pointer variable in which to store the result + + + + + + + + Frees a #GstByteReader instance, which was previously allocated by +gst_byte_reader_new(). + + + + + + + a #GstByteReader instance + + + + + + Returns a constant pointer to the current data +position if at least @size bytes are left and +updates the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Size in bytes + + + + address of a + #guint8 pointer variable in which to store the result + + + + + + + + Read a 32 bit big endian floating point value into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gfloat to store the result + + + + + + Read a 32 bit little endian floating point value into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gfloat to store the result + + + + + + Read a 64 bit big endian floating point value into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gdouble to store the result + + + + + + Read a 64 bit little endian floating point value into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gdouble to store the result + + + + + + Read a signed 16 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint16 to store the result + + + + + + Read a signed 16 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint16 to store the result + + + + + + Read a signed 24 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 24 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 32 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 32 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 64 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint64 to store the result + + + + + + Read a signed 64 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint64 to store the result + + + + + + Read a signed 8 bit integer into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint8 to store the result + + + + + + Returns the current position of a #GstByteReader instance in bytes. + + + The current position of @reader in bytes. + + + + + a #GstByteReader instance + + + + + + Returns the remaining number of bytes of a #GstByteReader instance. + + + The remaining number of bytes of @reader instance. + + + + + a #GstByteReader instance + + + + + + Returns the total number of bytes of a #GstByteReader instance. + + + The total number of bytes of @reader instance. + + + + + a #GstByteReader instance + + + + + + Returns a constant pointer to the current data position if there is +a NUL-terminated string in the data (this could be just a NUL terminator), +advancing the current position to the byte after the string. This will work +for any NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. + +No input checking for valid UTF-8 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be found, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + address of a + #gchar pointer variable in which to store the result + + + + + + + + Initializes a #GstByteReader sub-reader instance to contain @size bytes of +data from the current position of @reader. This is useful to read chunked +formats and make sure that one doesn't read beyond the size of the sub-chunk. + +Unlike gst_byte_reader_peek_sub_reader(), this function also modifies the +position of @reader and moves it forward by @size bytes. + + + FALSE on error or if @reader does not contain @size more bytes from + the current position, and otherwise TRUE + + + + + an existing and initialized #GstByteReader instance + + + + a #GstByteReader instance to initialize as sub-reader + + + + size of @sub_reader in bytes + + + + + + Read an unsigned 16 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint16 to store the result + + + + + + Read an unsigned 16 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint16 to store the result + + + + + + Read an unsigned 24 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 24 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 32 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 32 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 64 bit big endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint64 to store the result + + + + + + Read an unsigned 64 bit little endian integer into @val +and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint64 to store the result + + + + + + Read an unsigned 8 bit integer into @val and update the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint8 to store the result + + + + + + Initializes a #GstByteReader instance to read from @data. This function +can be called on already initialized instances. + + + + + + + a #GstByteReader instance + + + + data from which + the #GstByteReader should read + + + + + + Size of @data in bytes + + + + + + Scan for pattern @pattern with applied mask @mask in the byte reader data, +starting from offset @offset relative to the current position. + +The bytes in @pattern and @mask are interpreted left-to-right, regardless +of endianness. All four bytes of the pattern must be present in the +byte reader data for it to match, even if the first or last bytes are masked +out. + +It is an error to call this function without making sure that there is +enough data (offset+size bytes) in the byte reader. + + + offset of the first match, or -1 if no match was found. + +Example: +|[ +// Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff + +gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256); +// -> returns 0 +gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255); +// -> returns -1 +gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255); +// -> returns 1 +gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256); +// -> returns -1 +gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256); +// -> returns 0 +gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256); +// -> returns 2 +gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4); +// -> returns -1 +]| + + + + + a #GstByteReader + + + + mask to apply to data before matching against @pattern + + + + pattern to match (after mask is applied) + + + + offset from which to start scanning, relative to the current + position + + + + number of bytes to scan from offset + + + + + + Scan for pattern @pattern with applied mask @mask in the byte reader data, +starting from offset @offset relative to the current position. + +The bytes in @pattern and @mask are interpreted left-to-right, regardless +of endianness. All four bytes of the pattern must be present in the +byte reader data for it to match, even if the first or last bytes are masked +out. + +It is an error to call this function without making sure that there is +enough data (offset+size bytes) in the byte reader. + + + offset of the first match, or -1 if no match was found. + + + + + a #GstByteReader + + + + mask to apply to data before matching against @pattern + + + + pattern to match (after mask is applied) + + + + offset from which to start scanning, relative to the current + position + + + + number of bytes to scan from offset + + + + pointer to uint32 to return matching data + + + + + + Returns a constant pointer to the current data +position if at least @size bytes are left and +keeps the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Size in bytes + + + + address of a + #guint8 pointer variable in which to store the result + + + + + + + + Read a 32 bit big endian floating point value into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gfloat to store the result + + + + + + Read a 32 bit little endian floating point value into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gfloat to store the result + + + + + + Read a 64 bit big endian floating point value into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gdouble to store the result + + + + + + Read a 64 bit little endian floating point value into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gdouble to store the result + + + + + + Read a signed 16 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint16 to store the result + + + + + + Read a signed 16 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint16 to store the result + + + + + + Read a signed 24 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 24 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 32 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 32 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint32 to store the result + + + + + + Read a signed 64 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint64 to store the result + + + + + + Read a signed 64 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint64 to store the result + + + + + + Read a signed 8 bit integer into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #gint8 to store the result + + + + + + Returns a constant pointer to the current data position if there is +a NUL-terminated string in the data (this could be just a NUL terminator). +The current position will be maintained. This will work for any +NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. + +No input checking for valid UTF-8 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be skipped, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + address of a + #gchar pointer variable in which to store the result + + + + + + + + Initializes a #GstByteReader sub-reader instance to contain @size bytes of +data from the current position of @reader. This is useful to read chunked +formats and make sure that one doesn't read beyond the size of the sub-chunk. + +Unlike gst_byte_reader_get_sub_reader(), this function does not modify the +current position of @reader. + + + FALSE on error or if @reader does not contain @size more bytes from + the current position, and otherwise TRUE + + + + + an existing and initialized #GstByteReader instance + + + + a #GstByteReader instance to initialize as sub-reader + + + + size of @sub_reader in bytes + + + + + + Read an unsigned 16 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint16 to store the result + + + + + + Read an unsigned 16 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint16 to store the result + + + + + + Read an unsigned 24 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 24 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 32 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 32 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint32 to store the result + + + + + + Read an unsigned 64 bit big endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint64 to store the result + + + + + + Read an unsigned 64 bit little endian integer into @val +but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint64 to store the result + + + + + + Read an unsigned 8 bit integer into @val but keep the current position. + + + %TRUE if successful, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + Pointer to a #guint8 to store the result + + + + + + Sets the new position of a #GstByteReader instance to @pos in bytes. + + + %TRUE if the position could be set successfully, %FALSE +otherwise. + + + + + a #GstByteReader instance + + + + The new position in bytes + + + + + + Skips @nbytes bytes of the #GstByteReader instance. + + + %TRUE if @nbytes bytes could be skipped, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + the number of bytes to skip + + + + + + Skips a NUL-terminated UTF-16 string in the #GstByteReader instance, +advancing the current position to the byte after the string. + +No input checking for valid UTF-16 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be skipped, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + + + Skips a NUL-terminated UTF-32 string in the #GstByteReader instance, +advancing the current position to the byte after the string. + +No input checking for valid UTF-32 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be skipped, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + + + Skips a NUL-terminated string in the #GstByteReader instance, advancing +the current position to the byte after the string. This will work for +any NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done. + +This function will fail if no NUL-terminator was found in in the data. + + + %TRUE if a string could be skipped, %FALSE otherwise. + + + + + a #GstByteReader instance + + + + + + Create a new #GstByteReader instance, which will read from @data. + +Free-function: gst_byte_reader_free + + + a new #GstByteReader instance + + + + + data from which the + #GstByteReader should read + + + + + + Size of @data in bytes + + + + + + + #GstByteWriter provides a byte writer and reader that can write/read different +integer and floating point types to/from a memory buffer. It provides functions +for writing/reading signed/unsigned, little/big endian integers of 8, 16, 24, +32 and 64 bits and functions for reading little/big endian floating points numbers of +32 and 64 bits. It also provides functions to write/read NUL-terminated strings +in various character encodings. + + + #GstByteReader parent + + + + Allocation size of the data + + + + If %TRUE no reallocations are allowed + + + + If %FALSE no reallocations are allowed and copies of data are returned + + + + + + + + + Checks if enough free space from the current write cursor is +available and reallocates if necessary. + + + %TRUE if at least @size bytes are still available + + + + + #GstByteWriter instance + + + + Number of bytes that should be available + + + + + + Writes @size bytes containing @value to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to be written + + + + Number of bytes to be written + + + + + + Frees @writer and all memory allocated by it. + + + + + + + #GstByteWriter instance + + + + + + Frees @writer and all memory allocated by it except +the current data, which is returned as #GstBuffer. + +Free-function: gst_buffer_unref + + + the current data as buffer. gst_buffer_unref() + after usage. + + + + + #GstByteWriter instance + + + + + + Frees @writer and all memory allocated by it except +the current data, which is returned. + +Free-function: g_free + + + the current data. g_free() after usage. + + + + + #GstByteWriter instance + + + + + + Returns the remaining size of data that can still be written. If +-1 is returned the remaining size is only limited by system resources. + + + the remaining size of data that can still be written + + + + + #GstByteWriter instance + + + + + + Initializes @writer to an empty instance + + + + + + + #GstByteWriter instance + + + + + + Initializes @writer with the given +memory area. If @initialized is %TRUE it is possible to +read @size bytes from the #GstByteWriter from the beginning. + + + + + + + #GstByteWriter instance + + + + Memory area for writing + + + + + + Size of @data in bytes + + + + If %TRUE the complete data can be read from the beginning + + + + + + Initializes @writer with the given initial data size. + + + + + + + #GstByteWriter instance + + + + Initial size of data + + + + If %TRUE the data can't be reallocated + + + + + + Writes @size bytes of @data to @writer. + + + %TRUE if the data could be written + + + + + #GstByteWriter instance + + + + source #GstBuffer + + + + offset to copy from + + + + total size to copy. If -1, all data is copied + + + + + + Writes @size bytes of @data to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Data to write + + + + + + Size of @data in bytes + + + + + + Writes a big endian 32 bit float to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a little endian 32 bit float to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a big endian 64 bit float to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a little endian 64 bit float to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed big endian 16 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed little endian 16 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed big endian 24 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed little endian 24 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed big endian 32 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed little endian 32 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed big endian 64 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed little endian 64 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a signed 8 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a NUL-terminated UTF16 string to @writer (including the terminator). + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + UTF16 string to write + + + + + + + + Writes a NUL-terminated UTF32 string to @writer (including the terminator). + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + UTF32 string to write + + + + + + + + Writes a NUL-terminated UTF8 string to @writer (including the terminator). + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + UTF8 string to write + + + + + + Writes a unsigned big endian 16 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned little endian 16 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned big endian 24 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned little endian 24 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned big endian 32 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned little endian 32 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned big endian 64 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned little endian 64 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Writes a unsigned 8 bit integer to @writer. + + + %TRUE if the value could be written + + + + + #GstByteWriter instance + + + + Value to write + + + + + + Resets @writer and frees the data if it's +owned by @writer. + + + + + + + #GstByteWriter instance + + + + + + Resets @writer and returns the current data as buffer. + +Free-function: gst_buffer_unref + + + the current data as buffer. gst_buffer_unref() + after usage. + + + + + #GstByteWriter instance + + + + + + Resets @writer and returns the current data. + +Free-function: g_free + + + the current data. g_free() after +usage. + + + + + + + #GstByteWriter instance + + + + + + Creates a new, empty #GstByteWriter instance + +Free-function: gst_byte_writer_free + + + a new, empty #GstByteWriter instance + + + + + Creates a new #GstByteWriter instance with the given +memory area. If @initialized is %TRUE it is possible to +read @size bytes from the #GstByteWriter from the beginning. + +Free-function: gst_byte_writer_free + + + a new #GstByteWriter instance + + + + + Memory area for writing + + + + Size of @data in bytes + + + + If %TRUE the complete data can be read from the beginning + + + + + + Creates a new #GstByteWriter instance with the given +initial data size. + +Free-function: gst_byte_writer_free + + + a new #GstByteWriter instance + + + + + Initial size of data + + + + If %TRUE the data can't be reallocated + + + + + + + + + + + + + + + + + + + + + Returns the DTS that has been converted to running time when using +gst_collect_pads_clip_running_time(). Unlike the value saved into +the buffer, this value is of type gint64 and may be negative. This allow +properly handling streams with frame reordering where the first DTS may +be negative. If the initial DTS was not set, this value will be +set to %G_MININT64. + + + + A #GstCollectData. + + + + + Check if running DTS value store is valid. + + + + A #GstCollectData. + + + + + + + + + + + + Get the stream lock of @pads. The stream lock is used to coordinate and +serialize execution among the various streams being collected, and in +protecting the resources used to accomplish this. + + + + a #GstCollectPads + + + + + A flags word containing #GstCollectPadsStateFlags flags set +on this collected pad. + + + + a #GstCollectData. + + + + + Gives the status of a specific flag on a collected pad. + + + + a #GstCollectData. + + + the #GstCollectPadsStateFlags to check. + + + + + Sets a state flag on a collected pad. + + + + a #GstCollectData. + + + the #GstCollectPadsStateFlags to set. + + + + + Clears a state flag on a collected pad. + + + + a #GstCollectData. + + + the #GstCollectPadsStateFlags to clear. + + + + + Lock the stream lock of @pads. + + + + a #GstCollectPads + + + + + Unlock the stream lock of @pads. + + + + a #GstCollectPads + + + + + Structure used by the collect_pads. + + + owner #GstCollectPads + + + + #GstPad managed by this data + + + + currently queued buffer. + + + + position in the buffer + + + + last segment received. + + + + + + + + + + + + + + + + + + + + + + + + + A function that will be called when the #GstCollectData will be freed. +It is passed the pointer to the structure and should free any custom +memory and resources allocated for it. + + + + + + + the #GstCollectData that will be freed + + + + + + + + + Manages a set of pads that operate in collect mode. This means that control +is given to the manager of this object when all pads have data. + + * Collectpads are created with gst_collect_pads_new(). A callback should then + be installed with gst_collect_pads_set_function (). + + * Pads are added to the collection with gst_collect_pads_add_pad()/ + gst_collect_pads_remove_pad(). The pad has to be a sinkpad. When added, + the chain, event and query functions of the pad are overridden. The + element_private of the pad is used to store private information for the + collectpads. + + * For each pad, data is queued in the _chain function or by + performing a pull_range. + + * When data is queued on all pads in waiting mode, the callback function is called. + + * Data can be dequeued from the pad with the gst_collect_pads_pop() method. + One can peek at the data with the gst_collect_pads_peek() function. + These functions will return %NULL if the pad received an EOS event. When all + pads return %NULL from a gst_collect_pads_peek(), the element can emit an EOS + event itself. + + * Data can also be dequeued in byte units using the gst_collect_pads_available(), + gst_collect_pads_read_buffer() and gst_collect_pads_flush() calls. + + * Elements should call gst_collect_pads_start() and gst_collect_pads_stop() in + their state change functions to start and stop the processing of the collectpads. + The gst_collect_pads_stop() call should be called before calling the parent + element state change function in the PAUSED_TO_READY state change to ensure + no pad is blocked and the element can finish streaming. + + * gst_collect_pads_set_waiting() sets a pad to waiting or non-waiting mode. + CollectPads element is not waiting for data to be collected on non-waiting pads. + Thus these pads may but need not have data when the callback is called. + All pads are in waiting mode by default. + + + Create a new instance of #GstCollectPads. + +MT safe. + + + a new #GstCollectPads, or %NULL in case of an error. + + + + + Add a pad to the collection of collect pads. The pad has to be +a sinkpad. The refcount of the pad is incremented. Use +gst_collect_pads_remove_pad() to remove the pad from the collection +again. + +You specify a size for the returned #GstCollectData structure +so that you can use it to store additional information. + +You can also specify a #GstCollectDataDestroyNotify that will be called +just before the #GstCollectData structure is freed. It is passed the +pointer to the structure and should free any custom memory and resources +allocated for it. + +Keeping a pad locked in waiting state is only relevant when using +the default collection algorithm (providing the oldest buffer). +It ensures a buffer must be available on this pad for a collection +to take place. This is of typical use to a muxer element where +non-subtitle streams should always be in waiting state, +e.g. to assure that caps information is available on all these streams +when initial headers have to be written. + +The pad will be automatically activated in push mode when @pads is +started. + +MT safe. + + + a new #GstCollectData to identify the + new pad. Or %NULL if wrong parameters are supplied. + + + + + the collectpads to use + + + + the pad to add + + + + the size of the returned #GstCollectData structure + + + + function to be called before the returned + #GstCollectData structure is freed + + + + whether to lock this pad in usual waiting state + + + + + + Query how much bytes can be read from each queued buffer. This means +that the result of this call is the maximum number of bytes that can +be read from each of the pads. + +This function should be called with @pads STREAM_LOCK held, such as +in the callback. + +MT safe. + + + The maximum number of bytes queued on all pads. This function +returns 0 if a pad has no queued buffer. + + + + + the collectpads to query + + + + + + Convenience clipping function that converts incoming buffer's timestamp +to running time, or clips the buffer if outside configured segment. + +Since 1.6, this clipping function also sets the DTS parameter of the +GstCollectData structure. This version of the running time DTS can be +negative. G_MININT64 is used to indicate invalid value. + + + + + + + the collectpads to use + + + + collect data of corresponding pad + + + + buffer being clipped + + + + output buffer with running time, or NULL if clipped + + + + user data (unused) + + + + + + Default #GstCollectPads event handling that elements should always +chain up to to ensure proper operation. Element might however indicate +event should not be forwarded downstream. + + + + + + + the collectpads to use + + + + collect data of corresponding pad + + + + event being processed + + + + process but do not send event downstream + + + + + + Flush @size bytes from the pad @data. + +This function should be called with @pads STREAM_LOCK held, such as +in the callback. + +MT safe. + + + The number of bytes flushed This can be less than @size and +is 0 if the pad was end-of-stream. + + + + + the collectpads to query + + + + the data to use + + + + the number of bytes to flush + + + + + + Peek at the buffer currently queued in @data. This function +should be called with the @pads STREAM_LOCK held, such as in the callback +handler. + +MT safe. + + + The buffer in @data or %NULL if no +buffer is queued. should unref the buffer after usage. + + + + + the collectpads to peek + + + + the data to use + + + + + + Pop the buffer currently queued in @data. This function +should be called with the @pads STREAM_LOCK held, such as in the callback +handler. + +MT safe. + + + The buffer in @data or %NULL if no +buffer was queued. You should unref the buffer after usage. + + + + + the collectpads to pop + + + + the data to use + + + + + + Default #GstCollectPads query handling that elements should always +chain up to to ensure proper operation. Element might however indicate +query should not be forwarded downstream. + + + + + + + the collectpads to use + + + + collect data of corresponding pad + + + + query being processed + + + + process but do not send event downstream + + + + + + Get a subbuffer of @size bytes from the given pad @data. + +This function should be called with @pads STREAM_LOCK held, such as in the +callback. + +MT safe. + + + A sub buffer. The size of the buffer can +be less that requested. A return of %NULL signals that the pad is +end-of-stream. Unref the buffer after use. + + + + + the collectpads to query + + + + the data to use + + + + the number of bytes to read + + + + + + Remove a pad from the collection of collect pads. This function will also +free the #GstCollectData and all the resources that were allocated with +gst_collect_pads_add_pad(). + +The pad will be deactivated automatically when @pads is stopped. + +MT safe. + + + %TRUE if the pad could be removed. + + + + + the collectpads to use + + + + the pad to remove + + + + + + Set the callback function and user data that will be called with +the oldest buffer when all pads have been collected, or %NULL on EOS. +If a buffer is passed, the callback owns a reference and must unref +it. + +MT safe. + + + + + + + the collectpads to use + + + + the function to set + + + + user data passed to the function + + + + + + Install a clipping function that is called right after a buffer is received +on a pad managed by @pads. See #GstCollectPadsClipFunction for more info. + + + + + + + the collectpads to use + + + + clip function to install + + + + user data to pass to @clip_func + + + + + + Set the timestamp comparison function. + +MT safe. + + + + + + + the pads to use + + + + the function to set + + + + user data passed to the function + + + + + + Set the event callback function and user data that will be called when +collectpads has received an event originating from one of the collected +pads. If the event being processed is a serialized one, this callback is +called with @pads STREAM_LOCK held, otherwise not. As this lock should be +held when calling a number of CollectPads functions, it should be acquired +if so (unusually) needed. + +MT safe. + + + + + + + the collectpads to use + + + + the function to set + + + + user data passed to the function + + + + + + Install a flush function that is called when the internal +state of all pads should be flushed as part of flushing seek +handling. See #GstCollectPadsFlushFunction for more info. + + + + + + + the collectpads to use + + + + flush function to install + + + + user data to pass to @func + + + + + + Change the flushing state of all the pads in the collection. No pad +is able to accept anymore data when @flushing is %TRUE. Calling this +function with @flushing %FALSE makes @pads accept data again. +Caller must ensure that downstream streaming (thread) is not blocked, +e.g. by sending a FLUSH_START downstream. + +MT safe. + + + + + + + the collectpads to use + + + + desired state of the pads + + + + + + CollectPads provides a default collection algorithm that will determine +the oldest buffer available on all of its pads, and then delegate +to a configured callback. +However, if circumstances are more complicated and/or more control +is desired, this sets a callback that will be invoked instead when +all the pads added to the collection have buffers queued. +Evidently, this callback is not compatible with +gst_collect_pads_set_buffer_function() callback. +If this callback is set, the former will be unset. + +MT safe. + + + + + + + the collectpads to use + + + + the function to set + + + + user data passed to the function + + + + + + Set the query callback function and user data that will be called after +collectpads has received a query originating from one of the collected +pads. If the query being processed is a serialized one, this callback is +called with @pads STREAM_LOCK held, otherwise not. As this lock should be +held when calling a number of CollectPads functions, it should be acquired +if so (unusually) needed. + +MT safe. + + + + + + + the collectpads to use + + + + the function to set + + + + user data passed to the function + + + + + + Sets a pad to waiting or non-waiting mode, if at least this pad +has not been created with locked waiting state, +in which case nothing happens. + +This function should be called with @pads STREAM_LOCK held, such as +in the callback. + +MT safe. + + + + + + + the collectpads + + + + the data to use + + + + boolean indicating whether this pad should operate + in waiting or non-waiting mode + + + + + + Default #GstCollectPads event handling for the src pad of elements. +Elements can chain up to this to let flushing seek event handling +be done by #GstCollectPads. + + + + + + + the #GstCollectPads to use + + + + src #GstPad that received the event + + + + event being processed + + + + + + Starts the processing of data in the collect_pads. + +MT safe. + + + + + + + the collectpads to use + + + + + + Stops the processing of data in the collect_pads. this function +will also unblock any blocking operations. + +MT safe. + + + + + + + the collectpads to use + + + + + + Get a subbuffer of @size bytes from the given pad @data. Flushes the amount +of read bytes. + +This function should be called with @pads STREAM_LOCK held, such as in the +callback. + +MT safe. + + + A sub buffer. The size of the buffer can +be less that requested. A return of %NULL signals that the pad is +end-of-stream. Unref the buffer after use. + + + + + the collectpads to query + + + + the data to use + + + + the number of bytes to read + + + + + + + + + #GList of #GstCollectData managed + by this #GstCollectPads. + + + + + + + + + + + + + + + + + + A function that will be called when a (considered oldest) buffer can be muxed. +If all pads have reached EOS, this function is called with %NULL @buffer +and %NULL @data. + + + %GST_FLOW_OK for success + + + + + the #GstCollectPads that triggered the callback + + + + the #GstCollectData of pad that has received the buffer + + + + the #GstBuffer + + + + user data passed to gst_collect_pads_set_buffer_function() + + + + + + + + + + + + + + + + + A function that will be called when @inbuffer is received on the pad managed +by @data in the collectpad object @pads. + +The function should use the segment of @data and the negotiated media type on +the pad to perform clipping of @inbuffer. + +This function takes ownership of @inbuffer and should output a buffer in +@outbuffer or return %NULL in @outbuffer if the buffer should be dropped. + + + a #GstFlowReturn that corresponds to the result of clipping. + + + + + a #GstCollectPads + + + + a #GstCollectData + + + + the input #GstBuffer + + + + the output #GstBuffer + + + + user data + + + + + + A function for comparing two timestamps of buffers or newsegments collected on one pad. + + + Integer less than zero when first timestamp is deemed older than the second one. + Zero if the timestamps are deemed equally old. + Integer greater than zero when second timestamp is deemed older than the first one. + + + + + the #GstCollectPads that is comparing the timestamps + + + + the first #GstCollectData + + + + the first timestamp + + + + the second #GstCollectData + + + + the second timestamp + + + + user data passed to gst_collect_pads_set_compare_function() + + + + + + A function that will be called while processing an event. It takes +ownership of the event and is responsible for chaining up (to +gst_collect_pads_event_default()) or dropping events (such typical cases +being handled by the default handler). + + + %TRUE if the pad could handle the event + + + + + the #GstCollectPads that triggered the callback + + + + the #GstPad that received an event + + + + the #GstEvent received + + + + user data passed to gst_collect_pads_set_event_function() + + + + + + A function that will be called while processing a flushing seek event. + +The function should flush any internal state of the element and the state of +all the pads. It should clear only the state not directly managed by the +@pads object. It is therefore not necessary to call +gst_collect_pads_set_flushing nor gst_collect_pads_clear from this function. + + + + + + + a #GstCollectPads + + + + user data + + + + + + A function that will be called when all pads have received data. + + + %GST_FLOW_OK for success + + + + + the #GstCollectPads that triggered the callback + + + + user data passed to gst_collect_pads_set_function() + + + + + + + + + A function that will be called while processing a query. It takes +ownership of the query and is responsible for chaining up (to +events downstream (with gst_pad_event_default()). + + + %TRUE if the pad could handle the event + + + + + the #GstCollectPads that triggered the callback + + + + the #GstPad that received an event + + + + the #GstEvent received + + + + user data passed to gst_collect_pads_set_query_function() + + + + + + + + Set if collectdata's pad is EOS. + + + Set if collectdata's pad is flushing. + + + Set if collectdata's pad received a + new_segment event. + + + Set if collectdata's pad must be waited + for when collecting. + + + Set collectdata's pad WAITING state must + not be changed. +#GstCollectPadsStateFlags indicate private state of a collectdata('s pad). + + + + + + + + + + + + + + + + + + #GstDataQueue is an object that handles threadsafe queueing of objects. It +also provides size-related functionality. This object should be used for +any #GstElement that wishes to provide some sort of queueing functionality. + + + Creates a new #GstDataQueue. If @fullcallback or @emptycallback are supplied, then +the #GstDataQueue will call the respective callback to signal full or empty condition. +If the callbacks are NULL the #GstDataQueue will instead emit 'full' and 'empty' +signals. + + + a new #GstDataQueue. + + + + + the callback used to tell if the element considers the queue full +or not. + + + + the callback which will be called when the queue is considered full. + + + + the callback which will be called when the queue is considered empty. + + + + a #gpointer that will be passed to the @checkfull, @fullcallback, + and @emptycallback callbacks. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pop and unref the head-most #GstMiniObject with the given #GType. + + + %TRUE if an element was removed. + + + + + The #GstDataQueue to drop an item from. + + + + The #GType of the item to drop. + + + + + + Flushes all the contents of the @queue. Any call to #gst_data_queue_push and +#gst_data_queue_pop will be released. +MT safe. + + + + + + + a #GstDataQueue. + + + + + + Get the current level of the queue. + + + + + + + The #GstDataQueue + + + + the location to store the result + + + + + + Queries if there are any items in the @queue. +MT safe. + + + %TRUE if @queue is empty. + + + + + a #GstDataQueue. + + + + + + Queries if @queue is full. This check will be done using the +#GstDataQueueCheckFullFunction registered with @queue. +MT safe. + + + %TRUE if @queue is full. + + + + + a #GstDataQueue. + + + + + + Inform the queue that the limits for the fullness check have changed and that +any blocking gst_data_queue_push() should be unblocked to recheck the limits. + + + + + + + The #GstDataQueue + + + + + + Retrieves the first @item available on the @queue without removing it. +If the queue is currently empty, the call will block until at least +one item is available, OR the @queue is set to the flushing state. +MT safe. + + + %TRUE if an @item was successfully retrieved from the @queue. + + + + + a #GstDataQueue. + + + + pointer to store the returned #GstDataQueueItem. + + + + + + Retrieves the first @item available on the @queue. If the queue is currently +empty, the call will block until at least one item is available, OR the +@queue is set to the flushing state. +MT safe. + + + %TRUE if an @item was successfully retrieved from the @queue. + + + + + a #GstDataQueue. + + + + pointer to store the returned #GstDataQueueItem. + + + + + + Pushes a #GstDataQueueItem (or a structure that begins with the same fields) +on the @queue. If the @queue is full, the call will block until space is +available, OR the @queue is set to flushing state. +MT safe. + +Note that this function has slightly different semantics than gst_pad_push() +and gst_pad_push_event(): this function only takes ownership of @item and +the #GstMiniObject contained in @item if the push was successful. If %FALSE +is returned, the caller is responsible for freeing @item and its contents. + + + %TRUE if the @item was successfully pushed on the @queue. + + + + + a #GstDataQueue. + + + + a #GstDataQueueItem. + + + + + + Pushes a #GstDataQueueItem (or a structure that begins with the same fields) +on the @queue. It ignores if the @queue is full or not and forces the @item +to be pushed anyway. +MT safe. + +Note that this function has slightly different semantics than gst_pad_push() +and gst_pad_push_event(): this function only takes ownership of @item and +the #GstMiniObject contained in @item if the push was successful. If %FALSE +is returned, the caller is responsible for freeing @item and its contents. + + + %TRUE if the @item was successfully pushed on the @queue. + + + + + a #GstDataQueue. + + + + a #GstDataQueueItem. + + + + + + Sets the queue to flushing state if @flushing is %TRUE. If set to flushing +state, any incoming data on the @queue will be discarded. Any call currently +blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight +away with a return value of %FALSE. While the @queue is in flushing state, +all calls to those two functions will return %FALSE. + +MT Safe. + + + + + + + a #GstDataQueue. + + + + a #gboolean stating if the queue will be flushing or not. + + + + + + + + + + + + + + + the parent structure + + + + + + + + + + + + Reports that the queue became empty (empty). +A queue is empty if the total amount of visible items inside it (num-visible, time, +size) is lower than the boundary values which can be set through the GObject +properties. + + + + + + Reports that the queue became full (full). +A queue is full if the total amount of data inside it (num-visible, time, +size) is higher than the boundary values which can be set through the GObject +properties. + + + + + + + The prototype of the function used to inform the queue that it should be +considered as full. + + + %TRUE if the queue should be considered full. + + + + + a #GstDataQueue. + + + + The number of visible items currently in the queue. + + + + The amount of bytes currently in the queue. + + + + The accumulated duration of the items currently in the queue. + + + + The #gpointer registered when the #GstDataQueue was created. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Structure used by #GstDataQueue. You can supply a different structure, as +long as the top of the structure is identical to this structure. + + + the #GstMiniObject to queue. + + + + the size in bytes of the miniobject. + + + + the duration in #GstClockTime of the miniobject. Can not be +%GST_CLOCK_TIME_NONE. + + + + %TRUE if @object should be considered as a visible object. + + + + The #GDestroyNotify function to use to free the #GstDataQueueItem. +This function should also drop the reference to @object the owner of the +#GstDataQueueItem is assumed to hold. + + + + + + + + + + + + + Structure describing the size of a queue. + + + number of buffers + + + + number of bytes + + + + amount of time + + + + + Utility struct to help handling #GstFlowReturn combination. Useful for +#GstElement<!-- -->s that have multiple source pads and need to combine +the different #GstFlowReturn for those pads. + +#GstFlowCombiner works by using the last #GstFlowReturn for all #GstPad +it has in its list and computes the combined return value and provides +it to the caller. + +To add a new pad to the #GstFlowCombiner use gst_flow_combiner_add_pad(). +The new #GstPad is stored with a default value of %GST_FLOW_OK. + +In case you want a #GstPad to be removed, use gst_flow_combiner_remove_pad(). + +Please be aware that this struct isn't thread safe as its designed to be + used by demuxers, those usually will have a single thread operating it. + +These functions will take refs on the passed #GstPad<!-- -->s. + +Aside from reducing the user's code size, the main advantage of using this +helper struct is to follow the standard rules for #GstFlowReturn combination. +These rules are: + +* %GST_FLOW_EOS: only if all returns are EOS too +* %GST_FLOW_NOT_LINKED: only if all returns are NOT_LINKED too +* %GST_FLOW_ERROR or below: if at least one returns an error return +* %GST_FLOW_NOT_NEGOTIATED: if at least one returns a not-negotiated return +* %GST_FLOW_FLUSHING: if at least one returns flushing +* %GST_FLOW_OK: otherwise + +%GST_FLOW_ERROR or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are +returned immediately from the gst_flow_combiner_update_flow() function. + + + Creates a new #GstFlowCombiner, use gst_flow_combiner_free() to free it. + + + A new #GstFlowCombiner + + + + + Adds a new #GstPad to the #GstFlowCombiner. + + + + + + + the #GstFlowCombiner + + + + the #GstPad that is being added + + + + + + Removes all pads from a #GstFlowCombiner and resets it to its initial state. + + + + + + + the #GstFlowCombiner to clear + + + + + + Frees a #GstFlowCombiner struct and all its internal data. + + + + + + + the #GstFlowCombiner to free + + + + + + Increments the reference count on the #GstFlowCombiner. + + + the #GstFlowCombiner. + + + + + the #GstFlowCombiner to add a reference to. + + + + + + Removes a #GstPad from the #GstFlowCombiner. + + + + + + + the #GstFlowCombiner + + + + the #GstPad to remove + + + + + + Reset flow combiner and all pads to their initial state without removing pads. + + + + + + + the #GstFlowCombiner to clear + + + + + + Decrements the reference count on the #GstFlowCombiner. + + + + + + + the #GstFlowCombiner to unreference. + + + + + + Computes the combined flow return for the pads in it. + +The #GstFlowReturn parameter should be the last flow return update for a pad +in this #GstFlowCombiner. It will use this value to be able to shortcut some +combinations and avoid looking over all pads again. e.g. The last combined +return is the same as the latest obtained #GstFlowReturn. + + + The combined #GstFlowReturn + + + + + the #GstFlowCombiner + + + + the latest #GstFlowReturn received for a pad in this #GstFlowCombiner + + + + + + Sets the provided pad's last flow return to provided value and computes +the combined flow return for the pads in it. + +The #GstFlowReturn parameter should be the last flow return update for a pad +in this #GstFlowCombiner. It will use this value to be able to shortcut some +combinations and avoid looking over all pads again. e.g. The last combined +return is the same as the latest obtained #GstFlowReturn. + + + The combined #GstFlowReturn + + + + + the #GstFlowCombiner + + + + the #GstPad whose #GstFlowReturn to update + + + + the latest #GstFlowReturn received for a pad in this #GstFlowCombiner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This class is mostly useful for elements that cannot do +random access, or at least very slowly. The source usually +prefers to push out a fixed size buffer. + +Subclasses usually operate in a format that is different from the +default GST_FORMAT_BYTES format of #GstBaseSrc. + +Classes extending this base class will usually be scheduled +in a push based mode. If the peer accepts to operate without +offsets and within the limits of the allowed block size, this +class can operate in getrange based mode automatically. To make +this possible, the subclass should implement and override the +SCHEDULING query. + +The subclass should extend the methods from the baseclass in +addition to the ::create method. + +Seeking, flushing, scheduling and sync is all handled by this +base class. + + + Allocate memory for a buffer. + + + + + + + + + + + + + + + Ask the subclass to create a buffer, the default implementation will call alloc if +no allocated @buf is provided and then call fill. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At the minimum, the @fill method should be overridden to produce +buffers. + + + Element parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstQueueArray is an object that provides standard queue functionality +based on an array instead of linked lists. This reduces the overhead +caused by memory management by a large factor. + + + Clears queue @array and frees all memory associated to it. + + + + + + + a #GstQueueArray object + + + + + + Drops the queue element at position @idx from queue @array. + + + the dropped element + + + + + a #GstQueueArray object + + + + index to drop + + + + + + Drops the queue element at position @idx from queue @array and copies the +data of the element or structure that was removed into @p_struct if +@p_struct is set (not NULL). + + + TRUE on success, or FALSE on error + + + + + a #GstQueueArray object + + + + index to drop + + + + address into which to store the data of the dropped structure, or NULL + + + + + + Finds an element in the queue @array, either by comparing every element +with @func or by looking up @data if no compare function @func is provided, +and returning the index of the found element. + + + Index of the found element or -1 if nothing was found. + + + + + a #GstQueueArray object + + + + comparison function, or %NULL to find @data by value + + + + data for comparison function + + + + + + Frees queue @array and all memory associated to it. + + + + + + + a #GstQueueArray object + + + + + + Returns the length of the queue @array + + + the length of the queue @array. + + + + + a #GstQueueArray object + + + + + + Checks if the queue @array is empty. + + + %TRUE if the queue @array is empty + + + + + a #GstQueueArray object + + + + + + Returns the head of the queue @array and does not +remove it from the queue. + + + The head of the queue + + + + + a #GstQueueArray object + + + + + + Returns the head of the queue @array without removing it from the queue. + + + pointer to element or struct, or NULL if @array was empty. The + data pointed to by the returned pointer stays valid only as long as + the queue array is not modified further! + + + + + a #GstQueueArray object + + + + + + Returns the item at @idx in @array, but does not remove it from the queue. + + + The item, or %NULL if @idx was out of bounds + + + + + + + + + + + + + Returns the item at @idx in @array, but does not remove it from the queue. + + + The item, or %NULL if @idx was out of bounds + + + + + + + + + + + + + Returns the tail of the queue @array, but does not remove it from the queue. + + + The tail of the queue + + + + + a #GstQueueArray object + + + + + + Returns the tail of the queue @array, but does not remove it from the queue. + + + The tail of the queue + + + + + a #GstQueueArray object + + + + + + Returns and head of the queue @array and removes +it from the queue. + + + The head of the queue + + + + + a #GstQueueArray object + + + + + + Returns the head of the queue @array and removes it from the queue. + + + pointer to element or struct, or NULL if @array was empty. The + data pointed to by the returned pointer stays valid only as long as + the queue array is not modified further! + + + + + a #GstQueueArray object + + + + + + Returns the tail of the queue @array and removes +it from the queue. + + + The tail of the queue + + + + + a #GstQueueArray object + + + + + + Returns the tail of the queue @array and removes +it from the queue. + + + The tail of the queue + + + + + a #GstQueueArray object + + + + + + Pushes @data to the tail of the queue @array. + + + + + + + a #GstQueueArray object + + + + object to push + + + + + + + + + + + + + + + + + + + + Sets a function to clear an element of @array. + +The @clear_func will be called when an element in the array +data segment is removed and when the array is freed and data +segment is deallocated as well. @clear_func will be passed a +pointer to the element to clear, rather than the element itself. + +Note that in contrast with other uses of #GDestroyNotify +functions, @clear_func is expected to clear the contents of +the array element it is given, but not free the element itself. + + + + + + + a #GstQueueArray object + + + + a function to clear an element of @array + + + + + + Allocates a new #GstQueueArray object with an initial +queue size of @initial_size. + + + a new #GstQueueArray object + + + + + Initial size of the new queue + + + + + + Allocates a new #GstQueueArray object for elements (e.g. structures) +of size @struct_size, with an initial queue size of @initial_size. + + + a new #GstQueueArray object + + + + + Size of each element (e.g. structure) in the array + + + + Initial size of the new queue + + + + + + + The opaque #GstTypeFindData structure. + + + + + + + + + GstTypeFindData * to free + + + + + + Returns #GstCaps associated with #GstTypeFindData + + + #GstCaps. + + + + + GstTypeFindData * + + + + + + Returns #GstTypeFindProbability associated with #GstTypeFindData + + + #GstTypeFindProbability. + + + + + GstTypeFindData * + + + + + + Returns #GstTypeFind associated with #GstTypeFindData + + + #GstTypeFind. + + + + + GstTypeFindData * + + + + + + Free-function: gst_type_find_data_free + + + the #GstTypeFindData. The caller should free + the returned #GstTypeFindData with gst_type_find_data_free(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a pointer with data to typefind + + + + + + the size of @data + + + + + + + This function will be called by gst_type_find_helper_get_range() when +typefinding functions request to peek at the data of a stream at certain +offsets. If this function returns GST_FLOW_OK, the result buffer will be +stored in @buffer. The contents of @buffer is invalid for any other +return value. + +This function is supposed to behave exactly like a #GstPadGetRangeFunction. + + + GST_FLOW_OK for success + + + + + a #GstObject that will handle the getrange request + + + + the parent of @obj or %NULL + + + + the offset of the range + + + + the length of the range + + + + a memory location to hold the result buffer + + + + + + Create a new #GstBitReader instance, which will read from @data. + +Free-function: gst_bit_reader_free + + + a new #GstBitReader instance + + + + + Data from which the #GstBitReader + should read + + + + + + Size of @data in bytes + + + + + + Creates a new, empty #GstBitWriter instance. + +Free-function: gst_bit_writer_free + + + a new, empty #GstByteWriter instance + + + + + 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 beginning. + +Free-function: gst_bit_writer_free + + + a new #GstBitWriter instance + + + + + Memory area for writing + + + + + + Size of @data in bytes + + + + if %TRUE the complete data can be read from the beginning + + + + + + Creates a #GstBitWriter instance with the given initial data size. + +Free-function: gst_bit_writer_free + + + a new #GstBitWriter instance + + + + + Initial size of data in bytes + + + + If %TRUE the data can't be reallocated + + + + + + + + + + + + + + + + + + + + + + + + Create a new #GstByteReader instance, which will read from @data. + +Free-function: gst_byte_reader_free + + + a new #GstByteReader instance + + + + + data from which the + #GstByteReader should read + + + + + + Size of @data in bytes + + + + + + Returns a constant pointer to the current data position if there is +a NUL-terminated string in the data (this could be just a NUL terminator). +The current position will be maintained. This will work for any +NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. + +This function will fail if no NUL-terminator was found in in the data. + + + + a #GstByteReader instance + + + address of a + #gchar pointer variable in which to store the result + + + + + Skips a NUL-terminated string in the #GstByteReader instance, advancing +the current position to the byte after the string. This will work for +any NUL-terminated string with a character width of 8 bits, so ASCII, +UTF-8, ISO-8859-N etc. + +This function will fail if no NUL-terminator was found in in the data. + + + + a #GstByteReader instance + + + + + Creates a new, empty #GstByteWriter instance + +Free-function: gst_byte_writer_free + + + a new, empty #GstByteWriter instance + + + + + Creates a new #GstByteWriter instance with the given +memory area. If @initialized is %TRUE it is possible to +read @size bytes from the #GstByteWriter from the beginning. + +Free-function: gst_byte_writer_free + + + a new #GstByteWriter instance + + + + + Memory area for writing + + + + Size of @data in bytes + + + + If %TRUE the complete data can be read from the beginning + + + + + + Creates a new #GstByteWriter instance with the given +initial data size. + +Free-function: gst_byte_writer_free + + + a new #GstByteWriter instance + + + + + Initial size of data + + + + If %TRUE the data can't be reallocated + + + + + + Write a NUL-terminated string to @writer (including the terminator). The +string is assumed to be in an 8-bit encoding (e.g. ASCII,UTF-8 or +ISO-8859-1). + + + + #GstByteWriter instance + + + Null terminated string + + + + + Allocates a new #GstQueueArray object with an initial +queue size of @initial_size. + + + a new #GstQueueArray object + + + + + Initial size of the new queue + + + + + + Allocates a new #GstQueueArray object for elements (e.g. structures) +of size @struct_size, with an initial queue size of @initial_size. + + + a new #GstQueueArray object + + + + + Size of each element (e.g. structure) in the array + + + + Initial size of the new queue + + + + + + Free-function: gst_type_find_data_free + + + the #GstTypeFindData. The caller should free + the returned #GstTypeFindData with gst_type_find_data_free(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a pointer with data to typefind + + + + + + the size of @data + + + + + + Tries to find what type of data is flowing from the given source #GstPad. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data + stream. Returns %NULL if no #GstCaps matches the data stream. + + + + + A source #GstPad + + + + The length in bytes + + + + + + Tries to find what type of data is contained in the given #GstBuffer, the +assumption being that the buffer represents the beginning of the stream or +file. + +All available typefinders will be called on the data in order of rank. If +a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM, +typefinding is stopped immediately and the found caps will be returned +right away. Otherwise, all available typefind functions will the tried, +and the caps with the highest probability will be returned, or %NULL if +the content of the buffer could not be identified. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a #GstBuffer with data to typefind + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find if type of media contained in the given #GstBuffer, matches +@caps specified, assumption being that the buffer represents the beginning +of the stream or file. + +Tries to find what type of data is contained in the given @data, the +assumption being that the data represents the beginning of the stream or +file. + +Only the typefinder matching the given caps will be called, if found. The +caps with the highest probability will be returned, or %NULL if the content +of the @data could not be identified. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a #GstBuffer with data to typefind + + + + caps of the media + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find what type of data is contained in the given #GstBuffer, the +assumption being that the buffer represents the beginning of the stream or +file. + +All available typefinders will be called on the data in order of rank. If +a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM, +typefinding is stopped immediately and the found caps will be returned +right away. Otherwise, all available typefind functions will the tried, +and the caps with the highest probability will be returned, or %NULL if +the content of the buffer could not be identified. + +When @extension is not %NULL, this function will first try the typefind +functions for the given extension, which might speed up the typefinding +in many cases. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a #GstBuffer with data to typefind + + + + extension of the media, or %NULL + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find what type of data is contained in the given @data, the +assumption being that the data represents the beginning of the stream or +file. + +All available typefinders will be called on the data in order of rank. If +a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM, +typefinding is stopped immediately and the found caps will be returned +right away. Otherwise, all available typefind functions will the tried, +and the caps with the highest probability will be returned, or %NULL if +the content of @data could not be identified. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + * a pointer with data to typefind + + + + + + the size of @data + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find if type of media contained in the given @data, matches the +@caps specified, assumption being that the data represents the beginning +of the stream or file. + +Only the typefinder matching the given caps will be called, if found. The +caps with the highest probability will be returned, or %NULL if the content +of the @data could not be identified. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + a pointer with data to typefind + + + + + + the size of @data + + + + caps of the media + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find what type of data is contained in the given @data, the +assumption being that the data represents the beginning of the stream or +file. + +All available typefinders will be called on the data in order of rank. If +a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM, +typefinding is stopped immediately and the found caps will be returned +right away. Otherwise, all available typefind functions will the tried, +and the caps with the highest probability will be returned, or %NULL if +the content of @data could not be identified. + +When @extension is not %NULL, this function will first try the typefind +functions for the given extension, which might speed up the typefinding +in many cases. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data, + or %NULL if no type could be found. The caller should free the caps + returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + * a pointer with data to typefind + + + + + + the size of @data + + + + extension of the media, or %NULL + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find the best #GstCaps associated with @extension. + +All available typefinders will be checked against the extension in order +of rank. The caps of the first typefinder that can handle @extension will be +returned. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to + @extension, or %NULL if no type could be found. The caller should free + the caps returned with gst_caps_unref(). + + + + + object doing the typefinding, or %NULL (used for logging) + + + + an extension + + + + + + Utility function to do pull-based typefinding. Unlike gst_type_find_helper() +however, this function will use the specified function @func to obtain the +data needed by the typefind functions, rather than operating on a given +source pad. This is useful mostly for elements like tag demuxers which +strip off data at the beginning and/or end of a file and want to typefind +the stripped data stream before adding their own source pad (the specified +callback can then call the upstream peer pad with offsets adjusted for the +tag size, for example). + +When @extension is not %NULL, this function will first try the typefind +functions for the given extension, which might speed up the typefinding +in many cases. + +Free-function: gst_caps_unref + + + the #GstCaps corresponding to the data + stream. Returns %NULL if no #GstCaps matches the data stream. + + + + + A #GstObject that will be passed as first argument to @func + + + + the parent of @obj or %NULL + + + + A generic #GstTypeFindHelperGetRangeFunction that will + be used to access data at random offsets when doing the typefinding + + + + The length in bytes + + + + extension of the media, or %NULL + + + + location to store the probability of the found + caps, or %NULL + + + + + + Utility function to do pull-based typefinding. Unlike gst_type_find_helper() +however, this function will use the specified function @func to obtain the +data needed by the typefind functions, rather than operating on a given +source pad. This is useful mostly for elements like tag demuxers which +strip off data at the beginning and/or end of a file and want to typefind +the stripped data stream before adding their own source pad (the specified +callback can then call the upstream peer pad with offsets adjusted for the +tag size, for example). + +When @extension is not %NULL, this function will first try the typefind +functions for the given extension, which might speed up the typefinding +in many cases. + + + the last %GstFlowReturn from pulling a buffer or %GST_FLOW_OK if + typefinding was successful. + + + + + A #GstObject that will be passed as first argument to @func + + + + the parent of @obj or %NULL + + + + A generic #GstTypeFindHelperGetRangeFunction that will + be used to access data at random offsets when doing the typefinding + + + + The length in bytes + + + + extension of the media, or %NULL + + + + returned caps + + + + location to store the probability of the found + caps, or %NULL + + + + + + Tries to find the best #GstTypeFindFactory associated with @caps. + +The typefinder that can handle @caps will be returned. + +Free-function: g_list_free + + + the list of #GstTypeFindFactory + corresponding to @caps, or %NULL if no typefinder could be + found. Caller should free the returned list with g_list_free() + and list elements with gst_object_unref(). + + + + + + + object doing the typefinding, or %NULL (used for logging) + + + + caps of the media + + + + + + diff --git a/girs/GstCheck-1.0.gir b/girs/GstCheck-1.0.gir new file mode 100644 index 0000000000..2bb5ddc2e5 --- /dev/null +++ b/girs/GstCheck-1.0.gir @@ -0,0 +1,3771 @@ + + + + + + + + + + + + + + + + + + + + The name of the structure + + + + The current size of a structure + + + + The reference size of the structure + + + + + Opaque structure containing data about a log filter +function. + + + + A function that is called for messages matching the filter added by +@gst_check_add_log_filter. + + + %TRUE if message should be discarded by GstCheck. + + + + + the log domain of the message + + + + the log level of the message + + + + the message that has occurred + + + + user data + + + + + + #GstHarness is meant to make writing unit test for GStreamer much easier. +It can be thought of as a way of treating a #GstElement as a black box, +deterministically feeding it data, and controlling what data it outputs. + +The basic structure of #GstHarness is two "floating" #GstPads that connect +to the harnessed #GstElement src and sink #GstPads like so: + +|[ + __________________________ + _____ | _____ _____ | _____ +| | | | | | | | | | +| src |--+-| sink| Element | src |-+--| sink| +|_____| | |_____| |_____| | |_____| + |__________________________| + +]| + +With this, you can now simulate any environment the #GstElement might find +itself in. By specifying the #GstCaps of the harness #GstPads, using +functions like gst_harness_set_src_caps() or gst_harness_set_sink_caps_str(), +you can test how the #GstElement interacts with different caps sets. + +Your harnessed #GstElement can of course also be a bin, and using +gst_harness_new_parse() supporting standard gst-launch syntax, you can +easily test a whole pipeline instead of just one element. + +You can then go on to push #GstBuffers and #GstEvents on to the srcpad, +using functions like gst_harness_push() and gst_harness_push_event(), and +then pull them out to examine them with gst_harness_pull() and +gst_harness_pull_event(). + +## A simple buffer-in buffer-out example + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gstharness.h> + GstHarness *h; + GstBuffer *in_buf; + GstBuffer *out_buf; + + // attach the harness to the src and sink pad of GstQueue + h = gst_harness_new ("queue"); + + // we must specify a caps before pushing buffers + gst_harness_set_src_caps_str (h, "mycaps"); + + // create a buffer of size 42 + in_buf = gst_harness_create_buffer (h, 42); + + // push the buffer into the queue + gst_harness_push (h, in_buf); + + // pull the buffer from the queue + out_buf = gst_harness_pull (h); + + // validate the buffer in is the same as buffer out + fail_unless (in_buf == out_buf); + + // cleanup + gst_buffer_unref (out_buf); + gst_harness_teardown (h); + + ]| + +Another main feature of the #GstHarness is its integration with the +#GstTestClock. Operating the #GstTestClock can be very challenging, but +#GstHarness simplifies some of the most desired actions a lot, like wanting +to manually advance the clock while at the same time releasing a #GstClockID +that is waiting, with functions like gst_harness_crank_single_clock_wait(). + +#GstHarness also supports sub-harnesses, as a way of generating and +validating data. A sub-harness is another #GstHarness that is managed by +the "parent" harness, and can either be created by using the standard +gst_harness_new type functions directly on the (GstHarness *)->src_harness, +or using the much more convenient gst_harness_add_src() or +gst_harness_add_sink_parse(). If you have a decoder-element you want to test, +(like vp8dec) it can be very useful to add a src-harness with both a +src-element (videotestsrc) and an encoder (vp8enc) to feed the decoder data +with different configurations, by simply doing: + +|[<!-- language="C" --> + GstHarness * h = gst_harness_new ("vp8dec"); + gst_harness_add_src_parse (h, "videotestsrc is-live=1 ! vp8enc", TRUE); +]| + +and then feeding it data with: + +|[<!-- language="C" --> +gst_harness_push_from_src (h); +]| + + + the element inside the harness + + + + the internal harness source pad + + + + the internal harness sink pad + + + + the source (input) harness (if any) + + + + the sink (output) harness (if any) + + + + + + + Adds a #GstElement to an empty #GstHarness + +MT safe. + + + + + + + a #GstHarness + + + + a #GstElement to add to the harness (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Links the specified #GstPad the @GstHarness srcpad. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstPad to link to the harness srcpad + + + + + + Links the specified #GstPad the @GstHarness sinkpad. This can be useful if +perhaps the srcpad did not exist at the time of creating the harness, +like a demuxer that provides a sometimes-pad after receiving data. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstPad to link to the harness sinkpad + + + + + + Parses the @launchline and puts that in a #GstBin, +and then attches the supplied #GstHarness to the bin. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar describing a gst-launch type line + + + + + + A convenience function to allows you to call gst_pad_add_probe on a +#GstPad of a #GstElement that are residing inside the #GstHarness, +by using normal gst_pad_add_probe syntax + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the name of the pad to attach the probe to + + + + a #GstPadProbeType (see gst_pad_add_probe) + + + + a #GstPadProbeCallback (see gst_pad_add_probe) + + + + a #gpointer (see gst_pad_add_probe) + + + + a #GDestroyNotify (see gst_pad_add_probe) + + + + + + Add api with params as one of the supported metadata API to propose when +receiving an allocation query. + +MT safe. + + + + + + + a #GstHarness + + + + a metadata API + + + + API specific parameters + + + + + + Similar to gst_harness_add_sink_harness, this is a convenience to +directly create a sink-harness using the @sink_element_name name specified. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + + + Similar to gst_harness_add_src, this allows you to send the data coming out +of your harnessed #GstElement to a sink-element, allowing to test different +responses the element output might create in sink elements. An example might +be an existing sink providing some analytical data on the input it receives that +can be useful to your testing. If the goal is to test a sink-element itself, +this is better achieved using gst_harness_new directly on the sink. + +If a sink-harness already exists it will be replaced. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstHarness to be added as a sink-harness. + + + + + + Similar to gst_harness_add_sink, this allows you to specify a launch-line +instead of just an element name. See gst_harness_add_src_parse for details. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + + + Similar to gst_harness_add_src_harness, this is a convenience to +directly create a src-harness using the @src_element_name name specified. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with the name of a #GstElement + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + A src-harness is a great way of providing the #GstHarness with data. +By adding a src-type #GstElement, it is then easy to use functions like +gst_harness_push_from_src or gst_harness_src_crank_and_push_many +to provide your harnessed element with input. The @has_clock_wait variable +is a great way to control you src-element with, in that you can have it +produce a buffer for you by simply cranking the clock, and not have it +spin out of control producing buffers as fast as possible. + +If a src-harness already exists it will be replaced. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstHarness to be added as a src-harness. + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + Similar to gst_harness_add_src, this allows you to specify a launch-line, +which can be useful for both having more then one #GstElement acting as your +src (Like a src producing raw buffers, and then an encoder, providing encoded +data), but also by allowing you to set properties like "is-live" directly on +the elements. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar describing a gst-launch type line + + + + a #gboolean specifying if the #GstElement uses +gst_clock_wait_id internally. + + + + + + The number of #GstBuffers currently in the #GstHarness sinkpad #GAsyncQueue + +MT safe. + + + a #guint number of buffers in the queue + + + + + a #GstHarness + + + + + + The total number of #GstBuffers that has arrived on the #GstHarness sinkpad. +This number includes buffers that have been dropped as well as buffers +that have already been pulled out. + +MT safe. + + + a #guint number of buffers received + + + + + a #GstHarness + + + + + + Similar to gst_harness_crank_single_clock_wait(), this is the function to use +if your harnessed element(s) are using more then one gst_clock_id_wait. +Failing to do so can (and will) make it racy which #GstClockID you actually +are releasing, where as this function will process all the waits at the +same time, ensuring that one thread can't register another wait before +both are released. + +MT safe. + + + a @gboolean %TRUE if the "crank" was successful, %FALSE if not. + + + + + a #GstHarness + + + + a #guint describing the number of #GstClockIDs to crank + + + + + + A "crank" consists of three steps: +1: Wait for a #GstClockID to be registered with the #GstTestClock. +2: Advance the #GstTestClock to the time the #GstClockID is waiting for. +3: Release the #GstClockID wait. +Together, this provides an easy way to not have to think about the details +around clocks and time, but still being able to write deterministic tests +that are dependent on this. A "crank" can be though of as the notion of +manually driving the clock forward to its next logical step. + +MT safe. + + + a @gboolean %TRUE if the "crank" was successful, %FALSE if not. + + + + + a #GstHarness + + + + + + Allocates a buffer using a #GstBufferPool if present, or else using the +configured #GstAllocator and #GstAllocationParams + +MT safe. + + + a #GstBuffer of size @size + + + + + a #GstHarness + + + + a #gsize specifying the size of the buffer + + + + + + Allows you to dump the #GstBuffers the #GstHarness sinkpad #GAsyncQueue +to a file. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with a the name of a file + + + + + + The number of #GstEvents currently in the #GstHarness sinkpad #GAsyncQueue + +MT safe. + + + a #guint number of events in the queue + + + + + a #GstHarness + + + + + + The total number of #GstEvents that has arrived on the #GstHarness sinkpad +This number includes events handled by the harness as well as events +that have already been pulled out. + +MT safe. + + + a #guint number of events received + + + + + a #GstHarness + + + + + + Most useful in conjunction with gst_harness_new_parse, this will scan the +#GstElements inside the #GstHarness, and check if any of them matches +@element_name. Typical usecase being that you need to access one of the +harnessed elements for properties and/or signals. + +MT safe. + + + a #GstElement or %NULL if not found + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + + + A convenience function to allows you to call g_object_get on a #GstElement +that are residing inside the #GstHarness, by using normal g_object_get +syntax. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the first property name + + + + return location for the first property, followed optionally by more + name/return location pairs, followed by %NULL + + + + + + Gets the @allocator and its @params that has been decided to use after an +allocation query. + +MT safe. + + + + + + + a #GstHarness + + + + the #GstAllocator used + + + + the #GstAllocationParams of + @allocator + + + + + + Get the timestamp of the last #GstBuffer pushed on the #GstHarness srcpad, +typically with gst_harness_push or gst_harness_push_from_src. + +MT safe. + + + a #GstClockTime with the timestamp or %GST_CLOCK_TIME_NONE if no +#GstBuffer has been pushed on the #GstHarness srcpad + + + + + a #GstHarness + + + + + + Get the #GstTestClock. Useful if specific operations on the testclock is +needed. + +MT safe. + + + a #GstTestClock, or %NULL if the testclock is not +present. + + + + + a #GstHarness + + + + + + This will set the harnessed #GstElement to %GST_STATE_PLAYING. +#GstElements without a sink-#GstPad and with the %GST_ELEMENT_FLAG_SOURCE +flag set is considered a src #GstElement +Non-src #GstElements (like sinks and filters) are automatically set to +playing by the #GstHarness, but src #GstElements are not to avoid them +starting to produce buffers. +Hence, for src #GstElement you must call gst_harness_play() explicitly. + +MT safe. + + + + + + + a #GstHarness + + + + + + Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull +will timeout in 60 seconds. This is the standard way of getting a buffer +from a harnessed #GstElement. + +MT safe. + + + a #GstBuffer or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad. +Timeouts after 60 seconds similar to gst_harness_pull. + +MT safe. + + + a #GstEvent or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pulls 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. + +MT safe. + + + a #GstEvent or %NULL if timed out. + + + + + a #GstHarness + + + + + + Pushes a #GstBuffer on the #GstHarness srcpad. The standard way of +interacting with an harnessed element. + +MT safe. + + + a #GstFlowReturn with the result from the push + + + + + a #GstHarness + + + + a #GstBuffer to push + + + + + + Basically a gst_harness_push and a gst_harness_pull in one line. Reflects +the fact that you often want to do exactly this in your test: Push one buffer +in, and inspect the outcome. + +MT safe. + + + a #GstBuffer or %NULL if timed out. + + + + + a #GstHarness + + + + a #GstBuffer to push + + + + + + Pushes an #GstEvent on the #GstHarness srcpad. + +MT safe. + + + a #gboolean with the result from the push + + + + + a #GstHarness + + + + a #GstEvent to push + + + + + + Transfer data from the src-#GstHarness to the main-#GstHarness. It consists +of 4 steps: +1: Make sure the src is started. (see: gst_harness_play) +2: Crank the clock (see: gst_harness_crank_single_clock_wait) +3: Pull a #GstBuffer from the src-#GstHarness (see: gst_harness_pull) +4: Push the same #GstBuffer into the main-#GstHarness (see: gst_harness_push) + +MT safe. + + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + + + Transfer one #GstBuffer from the main-#GstHarness to the sink-#GstHarness. +See gst_harness_push_from_src for details. + +MT safe. + + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + + + Pushes an #GstEvent on the #GstHarness sinkpad. + +MT safe. + + + a #gboolean with the result from the push + + + + + a #GstHarness + + + + a #GstEvent to push + + + + + + Get the min latency reported by any harnessed #GstElement. + +MT safe. + + + a #GstClockTime with min latency + + + + + a #GstHarness + + + + + + A convenience function to allows you to call g_object_set on a #GstElement +that are residing inside the #GstHarness, by using normal g_object_set +syntax. + +MT safe. + + + + + + + a #GstHarness + + + + a #gchar with a #GstElementFactory name + + + + a #gchar with the first property name + + + + value for the first property, followed optionally by more + name/value pairs, followed by %NULL + + + + + + Setting this will make the harness block in the chain-function, and +then release when gst_harness_pull() or gst_harness_try_pull() is called. +Can be useful when wanting to control a src-element that is not implementing +gst_clock_id_wait() so it can't be controlled by the #GstTestClock, since +it otherwise would produce buffers as fast as possible. + +MT safe. + + + + + + + a #GstHarness + + + + + + Sets the @GstHarness srcpad and sinkpad caps. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness srcpad + + + + a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness srcpad and sinkpad caps using strings. + +MT safe. + + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness srcpad + + + + a @gchar describing a #GstCaps to set on the harness sinkpad + + + + + + When set to %TRUE, instead of placing the buffers arriving from the harnessed +#GstElement inside the sinkpads #GAsyncQueue, they are instead unreffed. + +MT safe. + + + + + + + a #GstHarness + + + + a #gboolean specifying to drop outgoing buffers or not + + + + + + As a convenience, a src-harness will forward %GST_EVENT_STREAM_START, +%GST_EVENT_CAPS and %GST_EVENT_SEGMENT to the main-harness if forwarding +is enabled, and forward any sticky-events from the main-harness to +the sink-harness. It will also forward the %GST_QUERY_ALLOCATION. + +If forwarding is disabled, the user will have to either manually push +these events from the src-harness using gst_harness_src_push_event(), or +create and push them manually. While this will allow full control and +inspection of these events, for the most cases having forwarding enabled +will be sufficient when writing a test where the src-harness' main function +is providing data for the main-harness. + +Forwarding is enabled by default. + +MT safe. + + + + + + + a #GstHarness + + + + a #gboolean to enable/disable forwarding + + + + + + Sets the liveness reported by #GstHarness when receiving a latency-query. +The default is %TRUE. + + + + + + + a #GstHarness + + + + %TRUE for live, %FALSE for non-live + + + + + + Sets the @allocator and @params to propose when receiving an allocation +query. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstAllocator + + + + a #GstAllocationParams + + + + + + Sets the @GstHarness sinkpad caps. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness sinkpad caps using a string. + +MT safe. + + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness sinkpad + + + + + + Sets the @GstHarness srcpad caps. This must be done before any buffers +can legally be pushed from the harness to the element. + +MT safe. + + + + + + + a #GstHarness + + + + a #GstCaps to set on the harness srcpad + + + + + + Sets the @GstHarness srcpad caps using a string. This must be done before +any buffers can legally be pushed from the harness to the element. + +MT safe. + + + + + + + a #GstHarness + + + + a @gchar describing a #GstCaps to set on the harness srcpad + + + + + + Advance the #GstTestClock to a specific time. + +MT safe. + + + a @gboolean %TRUE if the time could be set. %FALSE if not. + + + + + a #GstHarness + + + + a #GstClockTime to advance the clock to + + + + + + Sets the min latency reported by #GstHarness when receiving a latency-query + + + + + + + a #GstHarness + + + + a #GstClockTime specifying the latency + + + + + + Convenience that calls gst_harness_push_to_sink @pushes number of times. +Will abort the pushing if any one push fails. + +MT safe. + + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + a #gint with the number of calls to gst_harness_push_to_sink + + + + + + Transfer data from the src-#GstHarness to the main-#GstHarness. Similar to +gst_harness_push_from_src, this variant allows you to specify how many cranks +and how many pushes to perform. This can be useful for both moving a lot +of data at the same time, as well as cases when one crank does not equal one +buffer to push and v.v. + +MT safe. + + + a #GstFlowReturn with the result of the push + + + + + a #GstHarness + + + + a #gint with the number of calls to gst_harness_crank_single_clock_wait + + + + a #gint with the number of calls to gst_harness_push + + + + + + Similar to what gst_harness_src_push does with #GstBuffers, this transfers +a #GstEvent from the src-#GstHarness to the main-#GstHarness. Note that +some #GstEvents are being transferred automagically. Look at sink_forward_pad +for details. + +MT safe. + + + a #gboolean with the result of the push + + + + + a #GstHarness + + + + + + Start a custom stress-thread that will call your @callback for every +iteration allowing you to do something nasty. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GFunc that is called initially and only once + + + + a #GFunc that is called as often as possible + + + + a #gpointer with custom data to pass to the @callback function + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to the @callback + + + + + + Call g_object_set with @name and @value in intervals of @sleep microseconds + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #gchar specifying a property name + + + + a #GValue to set the property to + + + + a #gulong specifying how long to sleep in (microseconds) for +each g_object_set with @name and @value + + + + + + Push a #GstBuffer in intervals of @sleep microseconds. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstCaps for the #GstBuffer + + + + a #GstSegment + + + + a #GstBuffer to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push a #GstBuffer returned by @func in intervals of @sleep microseconds. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstCaps for the #GstBuffer + + + + a #GstSegment + + + + a #GstHarnessPrepareBufferFunc function called before every iteration +to prepare / create a #GstBuffer for pushing + + + + a #gpointer with data to the #GstHarnessPrepareBufferFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push the @event onto the harnessed #GstElement sinkpad in intervals of +@sleep microseconds + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstEvent to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_event_push with @event + + + + + + Push a #GstEvent returned by @func onto the harnessed #GstElement sinkpad +in intervals of @sleep microseconds. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstHarnessPrepareEventFunc function called before every iteration +to prepare / create a #GstEvent for pushing + + + + a #gpointer with data to the #GstHarnessPrepareEventFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Push the @event onto the harnessed #GstElement srcpad in intervals of +@sleep microseconds. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstEvent to push + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_event_push with @event + + + + + + Push a #GstEvent returned by @func onto the harnessed #GstElement srcpad +in intervals of @sleep microseconds. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstHarnessPrepareEventFunc function called before every iteration +to prepare / create a #GstEvent for pushing + + + + a #gpointer with data to the #GstHarnessPrepareEventFunc function + + + + a #GDestroyNotify that is called when thread is stopped + + + + a #gulong specifying how long to sleep in (microseconds) for +each call to gst_pad_push + + + + + + Call gst_element_request_pad in intervals of @sleep microseconds + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #GstPadTemplate + + + + a #gchar + + + + a #GstCaps + + + + a #gboolean + + + + a #gulong specifying how long to sleep in (microseconds) for +each gst_element_request_pad + + + + + + Change the state of your harnessed #GstElement from NULL to PLAYING and +back again, only pausing for @sleep microseconds every time. + +MT safe. + + + a #GstHarnessThread + + + + + a #GstHarness + + + + a #gulong specifying how long to sleep in (microseconds) for +each state-change + + + + + + Pulls all pending data from the harness and returns it as a single +data slice. + + + a pointer to the data, newly allocated. Free + with g_free() when no longer needed. Will return %NULL if there is no + data. + + + + + a #GstHarness + + + + the size of the data in bytes + + + + + + Pulls all pending data from the harness and returns it as a single buffer. + + + the data as a buffer. Unref with gst_buffer_unref() + when no longer needed. + + + + + a #GstHarness + + + + + + Pulls all pending data from the harness and returns it as a single #GBytes. + + + a pointer to the data, newly allocated. Free + with g_free() when no longer needed. + + + + + a #GstHarness + + + + + + Tears down a @GstHarness, freeing all resources allocated using it. + +MT safe. + + + + + + + a #GstHarness + + + + + + Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. Unlike +gst_harness_pull this will not wait for any buffers if not any are present, +and return %NULL straight away. + +MT safe. + + + a #GstBuffer or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad. +See gst_harness_try_pull for details. + +MT safe. + + + a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad. +See gst_harness_try_pull for details. + +MT safe. + + + a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue + + + + + a #GstHarness + + + + + + The number of #GstEvents currently in the #GstHarness srcpad #GAsyncQueue + +MT safe. + + + a #guint number of events in the queue + + + + + a #GstHarness + + + + + + The total number of #GstEvents that has arrived on the #GstHarness srcpad +This number includes events handled by the harness as well as events +that have already been pulled out. + +MT safe. + + + a #guint number of events received + + + + + a #GstHarness + + + + + + Sets the system #GstClock on the @GstHarness #GstElement + +MT safe. + + + + + + + a #GstHarness + + + + + + Sets the #GstTestClock on the #GstHarness #GstElement + +MT safe. + + + + + + + a #GstHarness + + + + + + Waits for @timeout seconds until @waits number of #GstClockID waits is +registered with the #GstTestClock. Useful for writing deterministic tests, +where you want to make sure that an expected number of waits have been +reached. + +MT safe. + + + a @gboolean %TRUE if the waits have been registered, %FALSE if not. +(Could be that it timed out waiting or that more waits than waits was found) + + + + + a #GstHarness + + + + a #guint describing the numbers of #GstClockID registered with +the #GstTestClock + + + + a #guint describing how many seconds to wait for @waits to be true + + + + + + Creates a new harness. Works like gst_harness_new_with_padnames(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + + + Creates a new empty harness. Use gst_harness_add_element_full() to add +an #GstElement to it. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + Creates a new harness. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Creates a new harness, parsing the @launchline and putting that in a #GstBin, +and then attches the harness to the bin. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing a gst-launch type line + + + + + + Creates a new harness. Works in the same way as gst_harness_new_full(), only +that generic padtemplates are used for the harness src and sinkpads, which +will be sufficient in most usecases. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness. Works like gst_harness_new_with_element(), +except you specify the factoryname of the #GstElement + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness, like gst_harness_new_full(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + + + Stop the running #GstHarnessThread + +MT safe. + + + + + + + a #GstHarnessThread + + + + + + + + + + + + + a #GstHarness + + + + user data + + + + + + + + + + + + a #GstHarness + + + + user data + + + + + + + + + Opaque handle representing a GstHarness stress testing thread. + + + + + + + + + + + + + + + + + + Opaque consistency checker handle. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GstTestClock is an implementation of #GstClock which has different +behaviour compared to #GstSystemClock. Time for #GstSystemClock advances +according to the system time, while time for #GstTestClock changes only +when gst_test_clock_set_time() or gst_test_clock_advance_time() are +called. #GstTestClock provides unit tests with the possibility to +precisely advance the time in a deterministic manner, independent of the +system time or any other external factors. + +## Advancing the time of a #GstTestClock + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gsttestclock.h> + + GstClock *clock; + GstTestClock *test_clock; + + clock = gst_test_clock_new (); + test_clock = GST_TEST_CLOCK (clock); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + gst_test_clock_advance_time ( test_clock, 1 * GST_SECOND); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + g_usleep (10 * G_USEC_PER_SEC); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + gst_test_clock_set_time (test_clock, 42 * GST_SECOND); + GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock))); + ... +]| + +#GstClock allows for setting up single shot or periodic clock notifications +as well as waiting for these notifications synchronously (using +gst_clock_id_wait()) or asynchronously (using gst_clock_id_wait_async() or +gst_clock_id_wait_async()). This is used by many GStreamer elements, +among them #GstBaseSrc and #GstBaseSink. + +#GstTestClock keeps track of these clock notifications. By calling +gst_test_clock_wait_for_next_pending_id() or +gst_test_clock_wait_for_multiple_pending_ids() a unit tests may wait for the +next one or several clock notifications to be requested. Additionally unit +tests may release blocked waits in a controlled fashion by calling +gst_test_clock_process_next_clock_id(). This way a unit test can control the +inaccuracy (jitter) of clock notifications, since the test can decide to +release blocked waits when the clock time has advanced exactly to, or past, +the requested clock notification time. + +There are also interfaces for determining if a notification belongs to a +#GstTestClock or not, as well as getting the number of requested clock +notifications so far. + +N.B.: When a unit test waits for a certain amount of clock notifications to +be requested in gst_test_clock_wait_for_next_pending_id() or +gst_test_clock_wait_for_multiple_pending_ids() then these functions may block +for a long time. If they block forever then the expected clock notifications +were never requested from #GstTestClock, and so the assumptions in the code +of the unit test are wrong. The unit test case runner in gstcheck is +expected to catch these cases either by the default test case timeout or the +one set for the unit test by calling tcase_set_timeout\(\). + +The sample code below assumes that the element under test will delay a +buffer pushed on the source pad by some latency until it arrives on the sink +pad. Moreover it is assumed that the element will at some point call +gst_clock_id_wait() to synchronously wait for a specific time. The first +buffer sent will arrive exactly on time only delayed by the latency. The +second buffer will arrive a little late (7ms) due to simulated jitter in the +clock notification. + +## Demonstration of how to work with clock notifications and #GstTestClock + +|[<!-- language="C" --> + #include <gst/gst.h> + #include <gst/check/gstcheck.h> + #include <gst/check/gsttestclock.h> + + GstClockTime latency; + GstElement *element; + GstPad *srcpad; + GstClock *clock; + GstTestClock *test_clock; + GstBuffer buf; + GstClockID pending_id; + GstClockID processed_id; + + latency = 42 * GST_MSECOND; + element = create_element (latency, ...); + srcpad = get_source_pad (element); + + clock = gst_test_clock_new (); + test_clock = GST_TEST_CLOCK (clock); + gst_element_set_clock (element, clock); + + GST_INFO ("Set time, create and push the first buffer\n"); + gst_test_clock_set_time (test_clock, 0); + buf = create_test_buffer (gst_clock_get_time (clock), ...); + gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK); + + GST_INFO ("Block until element is waiting for a clock notification\n"); + gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id); + GST_INFO ("Advance to the requested time of the clock notification\n"); + gst_test_clock_advance_time (test_clock, latency); + GST_INFO ("Release the next blocking wait and make sure it is the one from element\n"); + processed_id = gst_test_clock_process_next_clock_id (test_clock); + g_assert (processed_id == pending_id); + g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK); + gst_clock_id_unref (pending_id); + gst_clock_id_unref (processed_id); + + GST_INFO ("Validate that element produced an output buffer and check its timestamp\n"); + g_assert_cmpint (get_number_of_output_buffer (...), ==, 1); + buf = get_buffer_pushed_by_element (element, ...); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, latency); + gst_buffer_unref (buf); + GST_INFO ("Check that element does not wait for any clock notification\n"); + g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL)); + + GST_INFO ("Set time, create and push the second buffer\n"); + gst_test_clock_advance_time (test_clock, 10 * GST_SECOND); + buf = create_test_buffer (gst_clock_get_time (clock), ...); + gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK); + + GST_INFO ("Block until element is waiting for a new clock notification\n"); + (gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id); + GST_INFO ("Advance past 7ms beyond the requested time of the clock notification\n"); + gst_test_clock_advance_time (test_clock, latency + 7 * GST_MSECOND); + GST_INFO ("Release the next blocking wait and make sure it is the one from element\n"); + processed_id = gst_test_clock_process_next_clock_id (test_clock); + g_assert (processed_id == pending_id); + g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK); + gst_clock_id_unref (pending_id); + gst_clock_id_unref (processed_id); + + GST_INFO ("Validate that element produced an output buffer and check its timestamp\n"); + g_assert_cmpint (get_number_of_output_buffer (...), ==, 1); + buf = get_buffer_pushed_by_element (element, ...); + g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, + 10 * GST_SECOND + latency + 7 * GST_MSECOND); + gst_buffer_unref (buf); + GST_INFO ("Check that element does not wait for any clock notification\n"); + g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL)); + ... +]| + +Since #GstTestClock is only supposed to be used in unit tests it calls +g_assert(), g_assert_cmpint() or g_assert_cmpuint() to validate all function +arguments. This will highlight any issues with the unit test code itself. + + + Creates a new test clock with its time set to zero. + +MT safe. + + + a #GstTestClock cast to #GstClock. + + + + + Creates a new test clock with its time set to the specified time. + +MT safe. + + + a #GstTestClock cast to #GstClock. + + + + + a #GstClockTime set to the desired start time of the clock. + + + + + + Finds the latest time inside the list. + +MT safe. + + + + + + + List + of of pending #GstClockIDs + + + + + + + + Advances the time of the @test_clock by the amount given by @delta. The +time of @test_clock is monotonically increasing, therefore providing a +@delta which is negative or zero is a programming error. + +MT safe. + + + + + + + a #GstTestClock for which to increase the time + + + + a positive #GstClockTimeDiff to be added to the time of the clock + + + + + + A "crank" consists of three steps: +1: Wait for a #GstClockID to be registered with the #GstTestClock. +2: Advance the #GstTestClock to the time the #GstClockID is waiting, 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. + + + %TRUE if the crank was successful, %FALSE otherwise. + +MT safe. + + + + + #GstTestClock to crank + + + + + + Retrieve the requested time for the next pending clock notification. + +MT safe. + + + a #GstClockTime set to the time of the next pending clock +notification. If no clock notifications have been requested +%GST_CLOCK_TIME_NONE will be returned. + + + + + a #GstTestClock to fetch the next clock notification time for + + + + + + Checks whether @test_clock was requested to provide the clock notification +given by @id. + +MT safe. + + + %TRUE if the clock has been asked to provide the given clock +notification, %FALSE otherwise. + + + + + a #GstTestClock to ask if it provided the notification + + + + a #GstClockID clock notification + + + + + + Determine the number of pending clock notifications that have been +requested from the @test_clock. + +MT safe. + + + the number of pending clock notifications. + + + + + a #GstTestClock for which to count notifications + + + + + + Determines if the @pending_id is the next clock notification scheduled to +be triggered given the current time of the @test_clock. + +MT safe. + + + %TRUE if @pending_id is the next clock notification to be +triggered, %FALSE otherwise. + + + + + a #GstTestClock to check the clock notifications for + + + + a #GstClockID clock +notification to look for + + + + + + Processes and releases the pending ID. + +MT safe. + + + + + + + #GstTestClock for which to process the pending IDs + + + + #GstClockID + + + + + + Processes and releases the pending IDs in the list. + +MT safe. + + + + + + + #GstTestClock for which to process the pending IDs + + + + List + of pending #GstClockIDs + + + + + + + + MT safe. + + + a #GstClockID containing the next pending clock +notification. + + + + + a #GstTestClock for which to retrieve the next pending clock +notification + + + + + + Sets the time of @test_clock to the time given by @new_time. The time of +@test_clock is monotonically increasing, therefore providing a @new_time +which is earlier or equal to the time of the clock as given by +gst_clock_get_time() is a programming error. + +MT safe. + + + + + + + a #GstTestClock of which to set the time + + + + a #GstClockTime later than that returned by gst_clock_get_time() + + + + + + Blocks until at least @count clock notifications have been requested from +@test_clock, or the timeout expires. + +MT safe. + + + a @gboolean %TRUE if the waits have been registered, %FALSE if not. +(Could be that it timed out waiting or that more waits than waits was found) + + + + + #GstTestClock for which to await having enough pending clock + + + + the number of pending clock notifications to wait for + + + + the timeout in milliseconds + + + + Address + of a #GList pointer variable to store the list of pending #GstClockIDs + that expired, or %NULL + + + + + + + + Blocks until at least @count clock notifications have been requested from +@test_clock. There is no timeout for this wait, see the main description of +#GstTestClock. + +MT safe. + + + + + + + #GstTestClock for which to await having enough pending clock + + + + the number of pending clock notifications to wait for + + + + Address + of a #GList pointer variable to store the list of pending #GstClockIDs + that expired, or %NULL + + + + + + + + Waits until a clock notification is requested from @test_clock. There is no +timeout for this wait, see the main description of #GstTestClock. A reference +to the pending clock notification is stored in @pending_id. + +MT safe. + + + + + + + #GstTestClock for which to get the pending clock notification + + + + #GstClockID +with information about the pending clock notification + + + + + + Blocks until at least @count clock notifications have been requested from +@test_clock. There is no timeout for this wait, see the main description of +#GstTestClock. + use gst_test_clock_wait_for_multiple_pending_ids() instead. + + + + + + + #GstTestClock for which to await having enough pending clock + + + + the number of pending clock notifications to wait for + + + + + + + + + When a #GstTestClock is constructed it will have a certain start time set. +If the clock was created using gst_test_clock_new_with_start_time() then +this property contains the value of the @start_time argument. If +gst_test_clock_new() was called the clock started at time zero, and thus +this property contains the value 0. + + + + + + + + + + + The class of a #GstTestClock, which has no virtual methods to override. + + + the parent class structure + + + + + + + + Get one buffer from @pad. Implemented via buffer probes. This function will +block until the pipeline passes a buffer over @pad, so for robust behavior +in unit tests, you need to use check's timeout to fail out in the case that a +buffer never arrives. + +You must have previously called gst_buffer_straw_start_pipeline() on +@pipeline and @pad. + + + the captured #GstBuffer. + + + + + the pipeline previously started via gst_buffer_straw_start_pipeline() + + + + the pad previously passed to gst_buffer_straw_start_pipeline() + + + + + + Sets up a pipeline for buffer sucking. This will allow you to call +gst_buffer_straw_get_buffer() to access buffers as they pass over @pad. + +This function is normally used in unit tests that want to verify that a +particular element is outputting correct buffers. For example, you would make +a pipeline via gst_parse_launch(), pull out the pad you want to monitor, then +call gst_buffer_straw_get_buffer() to get the buffers that pass through @pad. +The pipeline will block until you have sucked off the buffers. + +This function will set the state of @bin to PLAYING; to clean up, be sure to +call gst_buffer_straw_stop_pipeline(). + +Note that you may not start two buffer straws at the same time. This function +is intended for unit tests, not general API use. In fact it calls fail_if +from libcheck, so you cannot use it outside unit tests. + + + + + + + the pipeline to run + + + + a pad on an element in @bin + + + + + + Set @bin to #GST_STATE_NULL and release resource allocated in +gst_buffer_straw_start_pipeline(). + +You must have previously called gst_buffer_straw_start_pipeline() on +@pipeline and @pad. + + + + + + + the pipeline previously started via gst_buffer_straw_start_pipeline() + + + + the pad previously passed to gst_buffer_straw_start_pipeline() + + + + + + Verifies that reference values and current values are equals in @list. + + + + + + + A list of GstCheckABIStruct to be verified + + + + Whether there is a reference ABI size already specified, +if it is %FALSE and the `GST_ABI` environment variable is set, usable code +for @list will be printed. + + + + + + Add a callback @func to be called for all log messages that matches +@log_domain, @log_level and @regex. If @func is NULL the +matching logs will be silently discarded by GstCheck. + +MT safe. + + + A filter that can be passed to @gst_check_remove_log_filter. + + + + + the log domain of the message + + + + the log level of the message + + + + a #GRegex to match the message + + + + the function to call for matching messages + + + + the user data to pass to @func + + + + #GDestroyNotify for @user_data + + + + + + Compare the buffer contents with @data and @size. + + + + + + + buffer to compare + + + + data to compare to + + + + size of data to compare + + + + + + Compare two caps with gst_caps_is_equal and fail unless they are +equal. + + + + + + + first caps to compare + + + + second caps to compare + + + + + + A fake chain function that appends the buffer to the internal list of +buffers. + + + + + + + + + + + + + + + + + + Clear all filters added by @gst_check_add_log_filter. + +MT safe. + + + + + + + Unref and remove all buffers that are in the global @buffers GList, +emptying the list. + + + + + + + Create an element using the factory providing the @element_name and +push the @buffer_in to this element. The element should create one buffer +and this will be compared with @buffer_out. We only check the caps +and the data of the buffers. This function unrefs the buffers. + + + + + + + name of the element that needs to be created + + + + push this buffer to the element + + + + the #GstCaps expected of the sinkpad of the element + + + + compare the result with this buffer + + + + the #GstCaps expected of the srcpad of the element + + + + + + Create an element using the factory providing the @element_name and push the +buffers in @buffer_in to this element. The element should create the buffers +equal to the buffers in @buffer_out. We only check the size and the data of +the buffers. This function unrefs the buffers in the two lists. +The last_flow_return parameter indicates the expected flow return value from +pushing the final buffer in the list. +This can be used to set up a test which pushes some buffers and then an +invalid buffer, when the final buffer is expected to fail, for example. + + + + + + + name of the element that needs to be created + + + + a list of buffers that needs to be + pushed to the element + + + + + + the #GstCaps expected of the sinkpad of the element + + + + a list of buffers that we expect from +the element + + + + + + the #GstCaps expected of the srcpad of the element + + + + the last buffer push needs to give this GstFlowReturn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrefs @object_to_unref and checks that is has properly been +destroyed. + + + + + + + The #GObject to unref + + + + + + Unrefs @object_to_unref and checks that is has properly been +destroyed, also checks that the other objects passed in +parameter have been destroyed as a concequence of +unrefing @object_to_unref. Last variable argument should be NULL. + + + + + + + The #GObject to unref + + + + The first object that should be destroyed as a +concequence of unrefing @object_to_unref. + + + + Additional object that should have been destroyed. + + + + + + Remove a filter that has been added by @gst_check_add_log_filter. + +MT safe. + + + + + + + Filter returned by @gst_check_add_log_filter + + + + + + + + number of failed tests + + + + + the check test suite + + + + name + + + + file name + + + + + + setup an element for a filter test with mysrcpad and mysinkpad + + + a new element + + + + + factory + + + + + + Push stream-start, caps and segment event, which consist of the minimum +required events to allow streaming. Caps is optional to allow raw src +testing. If @element has more than one src or sink pad, use +gst_check_setup_events_with_stream_id() instead. + + + + + + + The src #GstPad to push on + + + + The #GstElement use to create the stream id + + + + #GstCaps in case caps event must be sent + + + + The #GstFormat of the default segment to send + + + + + + Push stream-start, caps and segment event, which consist of the minimum +required events to allow streaming. Caps is optional to allow raw src +testing. + + + + + + + The src #GstPad to push on + + + + The #GstElement use to create the stream id + + + + #GstCaps in case caps event must be sent + + + + The #GstFormat of the default segment to send + + + + A unique identifier for the stream + + + + + + Does the same as #gst_check_setup_sink_pad_by_name with the <emphasis> name </emphasis> parameter equal to "src". + + + a new pad that can be used to check the output of @element + + + + + element to setup pad on + + + + pad template + + + + + + Creates a new sink pad (based on the given @tmpl) and links it to the given @element src pad +(the pad that matches the given @name). +You can set event/chain/query functions on this pad to check the output of the @element. + + + a new pad that can be used to check the output of @element + + + + + element to setup pad on + + + + pad template + + + + Name of the @element src pad that will be linked to the sink pad that will be setup + + + + + + + + a new pad + + + + + element to setup pad on + + + + pad template + + + + name + + + + + + + + a new pad + + + + + element to setup pad on + + + + pad template + + + + + + Does the same as #gst_check_setup_src_pad_by_name with the <emphasis> name </emphasis> parameter equal to "sink". + + + A new pad that can be used to inject data on @element + + + + + element to setup pad on + + + + pad template + + + + + + Creates a new src pad (based on the given @tmpl) and links it to the given @element sink pad (the pad that matches the given @name). +Before using the src pad to push data on @element you need to call #gst_check_setup_events on the created src pad. + +Example of how to push a buffer on @element: + +|[<!-- language="C" --> +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", +GST_PAD_SINK, +GST_PAD_ALWAYS, +GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING) +); +static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", +GST_PAD_SRC, +GST_PAD_ALWAYS, +GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING) +); + +GstElement * element = gst_check_setup_element ("element"); +GstPad * mysrcpad = gst_check_setup_src_pad (element, &srctemplate); +GstPad * mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate); + +gst_pad_set_active (mysrcpad, TRUE); +gst_pad_set_active (mysinkpad, TRUE); +fail_unless (gst_element_set_state (element, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); + +GstCaps * caps = gst_caps_from_string (YOUR_DESIRED_SINK_CAPS); +gst_check_setup_events (mysrcpad, element, caps, GST_FORMAT_TIME); +gst_caps_unref (caps); + +fail_unless (gst_pad_push (mysrcpad, gst_buffer_new_and_alloc(2)) == GST_FLOW_OK); +]| + +For very simple input/output test scenarios checkout #gst_check_element_push_buffer_list and #gst_check_element_push_buffer. + + + A new pad that can be used to inject data on @element + + + + + element to setup src pad on + + + + pad template + + + + Name of the @element sink pad that will be linked to the src pad that will be setup + + + + + + + + a new pad + + + + + element to setup pad on + + + + pad template + + + + name + + + + + + + + a new pad + + + + + element to setup pad on + + + + pad template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sets up a data probe on the given pad which will raise assertions if the +data flow is inconsistent. + + + %TRUE if the pad was added + + + + + The #GstStreamConsistency handle + + + + The #GstPad on which the dataflow will be checked. + + + + + + Frees the allocated data and probes associated with @consist. + + + + + + + The #GstStreamConsistency to free. + + + + + + Sets up a data probe on the given pad which will raise assertions if the +data flow is inconsistent. + + + A #GstStreamConsistency structure used to track data flow. + + + + + The #GstPad on which the dataflow will be checked. + + + + + + Reset the stream checker's internal variables. + + + + + + + The #GstStreamConsistency to reset. + + + + + + Creates a new harness. Works like gst_harness_new_with_padnames(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + + + Creates a new empty harness. Use gst_harness_add_element_full() to add +an #GstElement to it. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + Creates a new harness. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. Can be a static or request +or a sometimes pad that has been added. %NULL will not get/request a sinkpad +from the element. (Like if the element is a src.) + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad, similar to the +@element_sinkpad_name. + + + + + + Creates a new harness, parsing the @launchline and putting that in a #GstBin, +and then attches the harness to the bin. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing a gst-launch type line + + + + + + Creates a new harness. Works in the same way as gst_harness_new_full(), only +that generic padtemplates are used for the harness src and sinkpads, which +will be sufficient in most usecases. + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #GstElement to attach the harness to (transfer none) + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness. Works like gst_harness_new_with_element(), +except you specify the factoryname of the #GstElement + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #gchar with the name of the element +sinkpad that is then linked to the harness srcpad. %NULL does not attach a +sinkpad + + + + a #gchar with the name of the element +srcpad that is then linked to the harness sinkpad. %NULL does not attach a +srcpad + + + + + + Creates a new harness, like gst_harness_new_full(), except it +assumes the #GstElement sinkpad is named "sink" and srcpad is named "src" + +MT safe. + + + a #GstHarness, or %NULL if the harness could +not be created + + + + + a #gchar describing the #GstElement name + + + + a #GstStaticPadTemplate describing the harness srcpad. +%NULL will not create a harness srcpad. + + + + a #GstStaticPadTemplate describing the harness sinkpad. +%NULL will not create a harness sinkpad. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stop the running #GstHarnessThread + +MT safe. + + + + + + + a #GstHarnessThread + + + + + + diff --git a/girs/GstCodecs-1.0.gir b/girs/GstCodecs-1.0.gir new file mode 100644 index 0000000000..e4316d62f3 --- /dev/null +++ b/girs/GstCodecs-1.0.gir @@ -0,0 +1,5314 @@ + + + + + + + + + + + + + The opaque #GstAV1Decoder data structure. + + + Provides the tile data with tile group header and required raw +bitstream for subclass to decode it. + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + a #GstAV1Tile + + + + + + Called when need to duplicate an existing #GstAV1Picture. As +duplicated key-frame will populate the DPB, this virtual +function is not optional. + + + + + + + a #GstAV1Decoder + + + + the current #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + Optional. Called per one #GstAV1Picture to notify subclass to finish +decoding process for the #GstAV1Picture + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + + + Optional. Called by baseclass to query whether delaying output is +preferred by subclass or not. + + + the number of perferred delayed output frame + + + + + a #GstAV1Decoder + + + + whether upstream is live or not + + + + + + Optional. Called whenever new #GstAV1Picture is created. +Subclass can set implementation specific user data +on the #GstAV1Picture via gst_av1_picture_set_user_data() + + + + + + + a #GstAV1Decoder + + + + a #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + Notifies subclass of SPS update + + + + + + + a #GstAV1Decoder + + + + a #GstAV1SequenceHeaderOBU + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + Called with a #GstAV1Picture which is required to be outputted. +The #GstVideoCodecFrame must be consumed by subclass. + + + + + + + a #GstAV1Decoder + + + + a #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + Optional. Called per one #GstAV1Picture to notify subclass to prepare +decoding process for the #GstAV1Picture + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + a #GstAV1Dpb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstAV1SequenceHeaderOBU + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + + + + + + + + + a #GstAV1Decoder + + + + the current #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + a #GstAV1Dpb + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + a #GstAV1Tile + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstAV1Picture + + + + + + + + + + + + + + a #GstAV1Decoder + + + + a #GstVideoCodecFrame + + + + a #GstAV1Picture + + + + + + + + + + the number of perferred delayed output frame + + + + + a #GstAV1Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + + + + + + + + Store the @picture + + + + + + + a #GstAV1Dpb + + + + a #GstAV1Picture + + + + + + Clear all stored #GstAV1Picture + + + + + + + a #GstAV1Dpb + + + + + + Free the @dpb + + + + + + + a #GstAV1Dpb to free + + + + + + Create new #GstAV1Dpb + + + a new #GstAV1Dpb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstAV1Picture + + + a new #GstAV1Picture + + + + + Gets private data set on the picture via +gst_av1_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstAV1Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstAV1Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The opaque #GstH264Decoder data structure. + + + Provides per slice data with parsed slice header and required raw bitstream +for subclass to decode it. If gst_h264_decoder_set_process_ref_pic_lists() +is called with %TRUE by the subclass, @ref_pic_list0 and @ref_pic_list1 +are non-%NULL. +In case of interlaced stream, @ref_pic_list0 and @ref_pic_list1 will +contain only the first field of complementary reference field pair +if currently being decoded picture is a frame picture. Subclasses might +need to retrive the other field (i.e., the second field) of the picture +if needed. + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + a #GstH264Slice + + + + + an array of #GstH264Picture pointers + + + + + + + an array of #GstH264Picture pointers + + + + + + + + Optional. Called per one #GstH264Picture to notify subclass to finish +decoding process for the #GstH264Picture + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + + + Optional. Called by baseclass to query whether delaying output is +preferred by subclass or not. + + + the number of perferred delayed output frame + + + + + a #GstH264Decoder + + + + whether upstream is live or not + + + + + + Called when a new field picture is created for interlaced field picture. +Subclass can attach implementation specific user data on @second_field via +gst_h264_picture_set_user_data() + + + + + + + a #GstH264Decoder + + + + the first field #GstH264Picture already decoded + + + + a #GstH264Picture for the second field + + + + + + Optional. Called whenever new #GstH264Picture is created. +Subclass can set implementation specific user data +on the #GstH264Picture via gst_h264_picture_set_user_data() + + + + + + + a #GstH264Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH264Picture + + + + + + Notifies subclass of SPS update + + + + + + + a #GstH264Decoder + + + + a #GstH264SPS + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + Called with a #GstH264Picture which is required to be outputted. +The #GstVideoCodecFrame must be consumed by subclass. + + + + + + + a #GstH264Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH264Picture + + + + + + Optional. Called per one #GstH264Picture to notify subclass to prepare +decoding process for the #GstH264Picture + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + a #GstH264Slice + + + + a #GstH264Dpb + + + + + + Retrive DPB and return a #GstH264Picture corresponding to +the @system_frame_number + + + a #GstH264Picture if successful, or %NULL otherwise + + + + + a #GstH264Decoder + + + + a target system frame number of #GstH264Picture + + + + + + Called to en/disable reference picture modification process. + + + + + + + a #GstH264Decoder + + + + whether subclass is requiring reference picture modification process + + + + + + The compliance controls the behavior of the decoder to handle some +subtle cases and contexts, such as the low-latency DPB bumping or +mapping the baseline profile as the constrained-baseline profile, +etc. + + + + + + + + + + + + + + + + + + + The opaque #GstH264DecoderClass data structure. + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstH264SPS + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH264Picture + + + + + + + + + + + + + + a #GstH264Decoder + + + + the first field #GstH264Picture already decoded + + + + a #GstH264Picture for the second field + + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + a #GstH264Slice + + + + a #GstH264Dpb + + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + a #GstH264Slice + + + + + an array of #GstH264Picture pointers + + + + + + + an array of #GstH264Picture pointers + + + + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstH264Picture + + + + + + + + + + + + + + a #GstH264Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH264Picture + + + + + + + + + + the number of perferred delayed output frame + + + + + a #GstH264Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + The decoder behavior is + automatically choosen. + + + The decoder behavior strictly + conforms to the SPEC. All the decoder behaviors conform to the + SPEC, not including any nonstandard behavior which is not + mentioned in the SPEC. + + + The decoder behavior normally + conforms to the SPEC. Most behaviors conform to the SPEC but + including some nonstandard features which are widely used or + often used in the industry practice. This meets the request of + real streams and usages, but may not 100% conform to the + SPEC. It has very low risk. E.g., we will output pictures + without waiting DPB being full for the lower latency, which may + cause B frame disorder when there are reference frames with + smaller POC after it in decoder order. And the baseline profile + may be mapped to the constrained-baseline profile, but it may + have problems when a real baseline stream comes with FMO or + ASO. + + + The decoder behavior + flexibly conforms to the SPEC. It uses the nonstandard features + more aggressively in order to get better performance(for + example, lower latency). It may change the result of the + decoder and should be used carefully. Besides including all + risks in *normal* mode, it has more risks, such as frames + disorder when reference frames POC decrease in decoder order. + + + + + + + + + Store the @picture + + + + + + + a #GstH264Dpb + + + + a #GstH264Picture + + + + + + Perform bumping process as defined in C.4.5.3 "Bumping" process. +If @drain is %TRUE, @dpb will remove a #GstH264Picture from internal array +so that returned #GstH264Picture could hold the last reference of it + + + a #GstH264Picture which is needed to be +outputted + + + + + a #GstH265Dpb + + + + whether draining or not + + + + + + Clear all stored #GstH264Picture + + + + + + + a #GstH264Dpb + + + + + + Delete already outputted and not referenced all pictures from dpb + + + + + + + a #GstH264Dpb + + + + + + Free the @dpb + + + + + + + a #GstH264Dpb to free + + + + + + + + %TRUE if @dpb is configured for interlaced stream + + + + + a #GstH264Dpb + + + + + + Find a long term reference picture which has matching long term picture number + + + a #GstH264Picture + + + + + a #GstH264Dpb + + + + a long term picture number + + + + + + Find a short term reference picture which has the lowest frame_num_wrap + + + a #GstH264Picture + + + + + a #GstH264Dpb + + + + + + + + the number of maximum frames + + + + + a #GstH264Dpb + + + + + + + + Maximum number of reorder frames + + + + + a #GstH264Dpb + + + + + + + + the picture identified with the specified +@system_frame_number, or %NULL if DPB does not contain a #GstH264Picture +corresponding to the @system_frame_number + + + + + a #GstH264Dpb +@system_frame_number The system frame number + + + + + + + + + + + a #GArray of + #GstH264Picture stored in @dpb + + + + + + + a #GstH264Dpb + + + + + + Retrieve all long-term reference pictures from @dpb. The picture will be +appended to the array. + + + + + + + a #GstH264Dpb + + + + %TRUE if the second field pictures need to be included + + + + an array + of #GstH264Picture pointer + + + + + + + + Retrieve all short-term reference pictures from @dpb. The picture will be +appended to the array. + + + + + + + a #GstH264Dpb + + + + %TRUE if non-existing pictures need to be included + + + + %TRUE if the second field pictures need to be included + + + + an array + of #GstH264Picture pointers + + + + + + + + Find a short term reference picture which has matching picture number + + + a #GstH264Picture + + + + + a #GstH264Dpb + + + + a picture number + + + + + + + + the length of stored dpb array + + + + + a #GstH264Dpb + + + + + + + + %TRUE if @dpb still has empty frame buffers. + + + + + a #GstH264Dpb + + + + + + Mark all pictures are not referenced + + + + + + + a #GstH264Dpb + + + + + + + + %TRUE if bumping is required + + + + + a #GstH264Dpb + + + + the current #GstH264Picture to insert to dpb. + + + + The required #GstH264DpbBumpMode for bumping. + + + + + + + + The number of referenced frames + + + + + a #GstH264Dpb + + + + + + Perform "8.2.5.4 Adaptive memory control decoded reference picture marking process" + + + %TRUE if successful + + + + + a #GstH265Dpb + + + + a #GstH264RefPicMarking + + + + a #GstH264Picture + + + + + + + + + + + + a #GstH264Dpb + + + + %TRUE if interlaced + + + + + + Notify the DPB that @picture is output directly without storing +in the DPB. + + + + + + + a #GstH264Dpb + + + + a #GstH264Picture of the last output. + + + + + + Set the number of maximum allowed frames to store + + + + + + + a #GstH264Dpb + + + + the maximum number of picture + + + + + + + + + + + + a #GstH264Dpb + + + + the max number of reorder frames, which +should not exceed the max size of DPB. + + + + + + Create new #GstH264Dpb + + + a new #GstH264Dpb + + + + + + + + No latency requirement for DBP bumping. + + + Low-latency requirement for DBP bumping. + + + Very low-latency requirement for DBP bumping. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstH264Picture + + + a new #GstH264Picture + + + + + Gets private data set on the picture via +gst_h264_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstH264Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstH264Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + + + + + + + + + + + + Not used for reference picture + + + Used for short-term reference picture + + + Used for long-term reference picture + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check whether @picture is a frame (not a field picture) + + + + a #GstH264Picture + + + + + Check whether @picture is used for long-term reference + + + + a #GstH264Picture + + + + + Check whether @picture is used for short-term or long-term reference + + + + a #GstH264Picture + + + + + Check whether @picture is used for short-term reference + + + + a #GstH264Picture + + + + + The opaque #GstH265Decoder data structure. + + + Provides per slice data with parsed slice header and required raw bitstream +for subclass to decode it. If gst_h265_decoder_set_process_ref_pic_lists() +is called with %TRUE by the subclass, @ref_pic_list0 and @ref_pic_list1 +are non-%NULL. + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + a #GstH265Slice + + + + + an array of #GstH265Picture pointers + + + + + + + an array of #GstH265Picture pointers + + + + + + + + Optional. Called per one #GstH265Picture to notify subclass to finish +decoding process for the #GstH265Picture + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + + + Optional. Called by baseclass to query whether delaying output is +preferred by subclass or not. + + + the number of perferred delayed output frame + + + + + a #GstH265Decoder + + + + whether upstream is live or not + + + + + + Optional. Called whenever new #GstH265Picture is created. +Subclass can set implementation specific user data +on the #GstH265Picture via gst_h265_picture_set_user_data() + + + + + + + a #GstH265Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH265Picture + + + + + + Notifies subclass of video sequence update + + + + + + + a #GstH265Decoder + + + + a #GstH265SPS + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + + + + + + + + + + Optional. Called per one #GstH265Picture to notify subclass to prepare +decoding process for the #GstH265Picture + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + a #GstH265Slice + + + + a #GstH265Dpb + + + + + + Retrive DPB and return a #GstH265Picture corresponding to +the @system_frame_number + + + a #GstH265Picture if successful, or %NULL otherwise + + + + + a #GstH265Decoder + + + + a target system frame number of #GstH265Picture + + + + + + Called to en/disable reference picture modification process. + + + + + + + a #GstH265Decoder + + + + whether subclass is requiring reference picture modification process + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The opaque #GstH265DecoderClass data structure. + + + + + + + + + + + + + a #GstH265Decoder + + + + a #GstH265SPS + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + a #GstH265Decoder + + + + a #GstVideoCodecFrame + + + + a #GstH265Picture + + + + + + + + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + a #GstH265Slice + + + + a #GstH265Dpb + + + + + + + + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + a #GstH265Slice + + + + + an array of #GstH265Picture pointers + + + + + + + an array of #GstH265Picture pointers + + + + + + + + + + + + + + + + a #GstH265Decoder + + + + a #GstH265Picture + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the number of perferred delayed output frame + + + + + a #GstH265Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + + + Store the @picture and perform increase pic_latency_cnt as defined in +"C.5.2.3 Additional bumping" process + + + + + + + a #GstH265Dpb + + + + a #GstH265Picture + + + + + + Perform bumping process as defined in C.5.2.4 "Bumping" process. +If @drain is %TRUE, @dpb will remove a #GstH265Picture from internal array +so that returned #GstH265Picture could hold the last reference of it + + + a #GstH265Picture which is needed to be +outputted + + + + + a #GstH265Dpb + + + + whether draining or not + + + + + + Clear all stored #GstH265Picture + + + + + + + a #GstH265Dpb + + + + + + Delete not needed for output and not referenced all pictures from dpb + + + + + + + a #GstH265Dpb + + + + + + Free the @dpb + + + + + + + a #GstH265Dpb to free + + + + + + Find a long term reference picture which has matching poc + + + a #GstH265Picture + + + + + a #GstH265Dpb + + + + a picture order count + + + + + + + + the number of maximum pictures + + + + + a #GstH265Dpb + + + + + + + + the picture identified with the specified +@system_frame_number, or %NULL if DPB does not contain a #GstH265Picture +corresponding to the @system_frame_number + + + + + a #GstH265Dpb +@system_frame_number The system frame number + + + + + + + + + + + a #GArray of + #GstH265Picture stored in @dpb + + + + + + + a #GstH265Dpb + + + + + + Find a short or long term reference picture which has matching poc + + + a #GstH265Picture + + + + + a #GstH265Dpb + + + + a picture order count + + + + + + Find a short or long term reference picture which has matching poc_lsb + + + a #GstH265Picture + + + + + a #GstH265Dpb + + + + a picture order count lsb + + + + + + Find a short term reference picture which has matching poc + + + a #GstH265Picture + + + + + a #GstH265Dpb + + + + a picture order count + + + + + + + + the length of stored dpb array + + + + + a #GstH265Dpb + + + + + + Mark all pictures are not referenced + + + + + + + a #GstH265Dpb + + + + + + + + %TRUE if bumping is required + + + + + a #GstH265Dpb + + + + sps_max_num_reorder_pics[HighestTid] + + + + SpsMaxLatencyPictures[HighestTid] + + + + sps_max_dec_pic_buffering_minus1[HighestTid ] + 1 + or zero if this shouldn't be used for bumping decision + + + + + + + + The number of referenced pictures + + + + + a #GstH265Dpb + + + + + + Set the number of maximum allowed pictures to store + + + + + + + a #GstH265Dpb + + + + the maximum number of picture + + + + + + Create new #GstH265Dpb + + + a new #GstH265Dpb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstH265Picture + + + a new #GstH265Picture + + + + + Gets private data set on the picture via +gst_h265_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstH265Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstH265Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check whether @picture's type is I or P + + + + a #GstMpeg2Picture + + + + + The opaque #GstMpeg2Decoder data structure. + + + Provides per slice data with parsed slice header and required raw bitstream +for subclass to decode it. + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Slice + + + + + + Optional. Called per one #GstMpeg2Picture to notify subclass to finish +decoding process for the #GstMpeg2Picture + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + + + Optional. Called by baseclass to query whether delaying output is +preferred by subclass or not. + + + the number of perferred delayed output frames + + + + + a #GstMpeg2Decoder + + + + whether upstream is live or not + + + + + + Called when a new field picture is created for interlaced field picture. +Subclass can attach implementation specific user data on @second_field via +gst_mpeg2_picture_set_user_data() + + + + + + + a #GstMpeg2Decoder + + + + the first field #GstMpeg2Picture already decoded + + + + a #GstMpeg2Picture for the second field + + + + + + Optional. Called whenever new #GstMpeg2Picture is created. +Subclass can set implementation specific user data +on the #GstMpeg2Picture via gst_mpeg2_picture_set_user_data() + + + + + + + a #GstMpeg2Decoder + + + + a #GstVideoCodecFrame + + + + a #GstMpeg2Picture + + + + + + Notifies subclass of SPS update + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpegVideoSequenceHdr + + + + a #GstMpegVideoSequenceExt + + + + + + + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + Called with a #GstMpeg2Picture which is required to be outputted. +The #GstVideoCodecFrame must be consumed by subclass. + + + + + + + a #GstMpeg2Decoder + + + + a #GstVideoCodecFrame + + + + a #GstMpeg2Picture + + + + + + Optional. Called per one #GstMpeg2Picture to notify subclass to prepare +decoding process for the #GstMpeg2Picture + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Slice + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Picture + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpegVideoSequenceHdr + + + + a #GstMpegVideoSequenceExt + + + + + + + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstVideoCodecFrame + + + + a #GstMpeg2Picture + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + the first field #GstMpeg2Picture already decoded + + + + a #GstMpeg2Picture for the second field + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Slice + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Picture + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + a #GstMpeg2Slice + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstMpeg2Picture + + + + + + + + + + + + + + a #GstMpeg2Decoder + + + + a #GstVideoCodecFrame + + + + a #GstMpeg2Picture + + + + + + + + + + the number of perferred delayed output frames + + + + + a #GstMpeg2Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + + + Store the @picture + + + + + + + a #GstMpeg2Dpb + + + + a #GstMpeg2Picture + + + + + + + + a #GstMpeg2Picture which is needed to be +outputted + + + + + a #GstMpeg2Dpb + + + + + + Clear all stored #GstMpeg2Picture + + + + + + + a #GstMpeg2Dpb + + + + + + Free the @dpb + + + + + + + a #GstMpeg2Dpb to free + + + + + + Gets the neighbours #GstMpeg2Picture of @picture in @dpb. + + + + + + + a #GstMpeg2Dpb + + + + current #GstMpeg2Picture + + + + previuous + #GstMpeg2Picture in @dpb + + + + next + #GstMpeg2Picture in @dpb + + + + + + Checks if @dbp has a new picture. + + + #TRUE if @dpb needs to be bumped; otherwise, #FALSE + + + + + a #GstMpeg2Dpb + + + + + + Create new #GstMpeg2Dpb + + + a new #GstMpeg2Dpb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstMpeg2Picture + + + a new #GstMpeg2Picture + + + + + Gets private data set on the picture via +gst_mpeg2_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstMpeg2Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstMpeg2Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of contexts when decoding intra_mode + + + + + Number of values for mv_classO_bit + + + + + Number of contexts for comp_mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of contexts for interp_filter + + + + + Number of values for inter_mode + + + + + Number of contexts for inter_mode + + + + + Number of values for intra_mode + + + + + Number of contexts for interp_filter + + + + + Number of values for mv_class + + + + + Number of values that can be decoded for mv_fr + + + + + Number of values for partition + + + + + Maximum number of bits for decoding motion vectors + + + + + Number of contexts when decoding partition + + + + + Number of values for partition + + + + + + + + + + + + + + + + + + + Number of contexts for single_ref and comp_ref + + + + + Index for loop filter segment feature + + + + + Index for quantizer segment feature + + + + + Number of segment features + + + + + Index for reference frame segment feature + + + + + Index for skip segment feature + + + + + Number of contexts for decoding skip + + + + + Number of contexts for interp_filter + + + + + Number of values for tx_mode + + + + + Number of values for tx_size + + + + + Number of contexts for transform size + + + + + The opaque #GstVp8Decoder data structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Optional. Called by baseclass to query whether delaying output is +preferred by subclass or not. + + + the number of perferred delayed output frame + + + + + a #GstVp8Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the number of perferred delayed output frame + + + + + a #GstVp8Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstVp8Picture + + + a new #GstVp8Picture + + + + + Gets private data set on the picture via +gst_vp8_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstVp8Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstVp8Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + The opaque #GstVp9Decoder data structure. + + + Called to notify decoding for subclass to decoder given @picture with +given @dpb + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture to decoder + + + + a #GstVp9Dpb + + + + + + Optional. Called to duplicate @picture when show_existing_frame flag is set +in the parsed vp9 frame header. Returned #GstVp9Picture from this method +should hold already decoded picture data corresponding to the @picture, +since the returned #GstVp9Picture from this method will be passed to +the output_picture method immediately without additional decoding process. + +If this method is not implemented by subclass, baseclass will drop +current #GstVideoCodecFrame without additional processing for the current +frame. + + + a #GstVp9Picture or %NULL if failed to duplicate +@picture. + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture to be duplicated + + + + + + Optional. Called per one #GstVp9Picture to notify subclass to finish +decoding process for the #GstVp9Picture + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture + + + + + + Optional. Retrieve the preferred output delay from child classes. +controls how many frames to delay when calling +GstVp9DecoderClass::output_picture + + + the number of perferred delayed output frame + + + + + a #GstVp9Decoder + + + + whether upstream is live or not + + + + + + Optional. Called whenever new #GstVp9Picture is created. +Subclass can set implementation specific user data on the #GstVp9Picture +via gst_vp9_picture_set_user_data() + + + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture + + + + + + Notifies subclass of video sequence update such as resolution, bitdepth, +profile. + + + + + + + a #GstVp9Decoder + + + + a #GstVp9FrameHeader + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + Called to notify @picture is ready to be outputted. + + + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture + + + + + + Optional. Called to notify subclass to prepare decoding process for +@picture + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture + + + + + + Called to set non-keyframe format change awareness + + + + + + + a #GstVp9Decoder + + + + whether subclass can support non-keyframe format change + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVp9FrameHeader + + + + the size of dpb including preferred output delay + by subclass reported via get_preferred_output_delay method. + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture + + + + + + + + + + a #GstVp9Picture or %NULL if failed to duplicate +@picture. + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture to be duplicated + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture to decoder + + + + a #GstVp9Dpb + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVp9Picture + + + + + + + + + + + + + + a #GstVp9Decoder + + + + a #GstVideoCodecFrame + + + + a #GstVp9Picture + + + + + + + + + + the number of perferred delayed output frame + + + + + a #GstVp9Decoder + + + + whether upstream is live or not + + + + + + + + + + + + + + + + Stores probabilities updates. This is from the spec +and can be used as a binary. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Store the @picture + + + + + + + a #GstVp9Dpb + + + + a #GstVp9Picture + + + + + + Clear all stored #GstVp9Picture + + + + + + + a #GstVp9Dpb + + + + + + Free the @dpb + + + + + + + a #GstVp9Dpb to free + + + + + + Create new #GstVp9Dpb + + + a new #GstVp9Dpb + + + + + + + + encoded profile + + + + encoded bit depth + + + + specify the chroma subsampling format for x coordinate + + + + specify the chroma subsampling format for y coordinate + + + + specifies the color space of the stream + + + + specifies the black level and range of the luma and chroma + signals + + + + equal to 1, indicates the frame indexed by + frame_to_show_map_idx is to be displayed + + + + specifies the frame to be displayed. + It is only available if show_existing_frame is 1 + + + + equal to 0 indicates that the current frame is a key frame + + + + indicate whether it is a displayable frame or not + + + + equal to 1 indicates that error resilient mode is + enabled + + + + coded frame width + + + + coded frame height + + + + equal to 0 means that the render width and + height are inferred from the frame width and height + + + + render width of the frame + + + + render width of the frame + + + + equal to 1 indicates that the frame is an intra-only frame + + + + specifies whether the frame context should be reset to + default values + + + + contains a bitmask that specifies which reference frame + slots will be updated with the current frame after it is decoded + + + + specifies which reference frames are used by inter frames + + + + + + specifies the intended direction of the motion vector + in time for each reference frame. A sign bias equal to 0 indicates that + the reference frame is a backwards reference + + + + + + equal to 0 specifies that motion vectors are + specified to quarter pel precision + + + + specifies the filter selection used for performing + inter prediction + + + + equal to 1 indicates that the probabilities computed + for this frame + + + + equal to 1 indicates that parallel decoding + mode is enabled + + + + indicates the frame context to use + + + + a #GstVp9LoopFilterParams + + + + a #GstVp9QuantizationParams + + + + a #GstVp9SegmentationParams + + + + specifies the base 2 logarithm of the width of each tile + + + + specifies the base 2 logarithm of the height of each tile + + + + + + + specifies how the transform size is determined + + + + is a derived syntax element that specifies the type of + inter prediction to be used + + + + modification to the probabilities encoded in the + bitstream + + + + lossless mode decode + + + + length of uncompressed header + + + + + Loop filter params. See "6.2.8 Loop filter params syntax" and +"7.2.8 Loop filter semantics". + +If syntax elements for @update_ref_delta +and/or @loop_filter_mode_deltas are not present in bitstream, +parser will fill @loop_filter_ref_deltas and @loop_filter_mode_deltas values +by using previously parsed values. + + + indicates the loop filter strength + + + + indicates the sharpness level + + + + equal to 1 means that the filter level depends + on the mode and reference frame used to predict a block + + + + equal to 1 means that the bitstream contains + additional syntax elements that specify which mode and reference frame + deltas are to be updated + + + + equal to 1 means that the bitstream contains the syntax + element loop_filter_ref_delta + + + + + + contains the adjustment needed for the filter level + based on the chosen reference frame + + + + + + equal to 1 means that the bitstream contains the syntax + element loop_filter_mode_deltas + + + + + + contains the adjustment needed for the filter level + based on the chosen mode + + + + + + + Stores motion vectors probabilities updates. This is from the spec +and can be used as a binary. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create new #GstVp9Picture + + + a new #GstVp9Picture + + + + + Gets private data set on the picture via +gst_vp9_picture_set_user_data() previously. + + + The previously set user_data + + + + + a #GstVp9Picture + + + + + + Sets @user_data on the picture and the #GDestroyNotify that will be called when +the picture is freed. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstVp9Picture + + + + private data + + + + a #GDestroyNotify + + + + + + + + + indicates the base frame qindex. This is used for Y AC + coefficients and as the base value for the other quantizers + + + + indicates the Y DC quantizer relative to base_q_idx + + + + indicates the UV DC quantizer relative to base_q_idx + + + + indicates the UV AC quantizer relative to base_q_idx + + + + + Reference modes: Specify the type of inter prediction to be used + + + Indicates that all the inter blocks use only a single reference frame + + + Requires all the inter blocks to use compound mode + + + Allows each individual inter block to select between single and compound prediction modes + + + + See "6.2.11 Segmentation params syntax" and +"7.2.10 Segmentation params syntax". When @segmentation_update_data is equal +to zero, parser will fill @feature_enabled and by @feature_data +using previously parsed values. + + + equal to 1 indicates that this frame makes use of the + segmentation tool + + + + equal to 1 indicates that the segmentation map + should be updated during the decoding of this frame + + + + specify the probability values to be used when + decoding segment_id + + + + + + specify the probability values to be used when + decoding seg_id_predicted + + + + + + equal to 1 indicates that the updates to + the segmentation map are coded relative to the existing segmentation map + + + + equal to 1 indicates that new parameters are + about to be specified for each segment + + + + equal to 0 indicates that the segmentation + parameters represent adjustments relative to the standard values. + equal to 1 indicates that the segmentation parameters represent the actual + values to be used + + + + indicates whether feature is enabled or not + + + + + + segmentation feature data + + + + + + + This object is used to parse VP9 bitstream header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Frees @parser. + + + + + + + the #GstVp9StatefulParser to free + + + + + + Parses the compressed information in the VP9 bitstream contained in @data, +and fills in @header with the parsed values. +The @size argument represent the whole frame size. + + + a #GstVp9ParserResult + + + + + The #GstVp9StatefulParser + + + + The #GstVp9FrameHeader to fill + + + + The data to parse + + + + The size of the @data to parse + + + + + + Parses the VP9 bitstream contained in @data, and fills in @header +with the information. The @size argument represent the whole frame size. + + + a #GstVp9ParserResult + + + + + The #GstVp9StatefulParser + + + + The #GstVp9FrameHeader to fill + + + + The data to parse + + + + The size of the @data to parse + + + + + + Creates a new #GstVp9StatefulParser. It should be freed with +gst_vp9_stateful_parser_free() after use. + + + a new #GstVp9StatefulParser + + + + + + TxMode: Specifies how the transform size is determined + + + Only 4x4 + + + Allow 8x8 + + + Allow 16x16 + + + Allow 32x32 + + + The choice is specified explicitly for each block + + + + TxSize: Specifies the transform size + + + 4x4 + + + 8x8 + + + 16x16 + + + 32x32 + + + + Create new #GstAV1Dpb + + + a new #GstAV1Dpb + + + + + Create new #GstH264Dpb + + + a new #GstH264Dpb + + + + + Create new #GstH265Dpb + + + a new #GstH265Dpb + + + + + Create new #GstMpeg2Dpb + + + a new #GstMpeg2Dpb + + + + + Create new #GstVp9Dpb + + + a new #GstVp9Dpb + + + + + An implementation of "ac_q" function specified in +"8.6.1 Dequantization functions" + + + the quantizer value for the ac coefficient + + + + + the quantizer index + + + + a delta_q_ac value + + + + coded bit depth + + + + + + An implementation of "dc_q" function specified in +"8.6.1 Dequantization functions" + + + the quantizer value for the dc coefficient + + + + + the quantizer index + + + + a delta_q_dc value + + + + coded bit depth + + + + + + An implementation of "get_qindex" function specfied in +"8.6.1 Dequantization functions" + + + the quantizer index + + + + + a #GstVp9SegmentationParams + + + + a #GstVp9QuantizationParams + + + + a segment id + + + + + + An implementation of "seg_feature_active" function specified in +"6.4.9 Segmentation feature active syntax" + + + %TRUE if feature is active + + + + + a #GstVp9SegmentationParams + + + + a segment id + + + + a segmentation feature + + + + + + diff --git a/girs/GstController-1.0.gir b/girs/GstController-1.0.gir new file mode 100644 index 0000000000..0c3b8f52e3 --- /dev/null +++ b/girs/GstController-1.0.gir @@ -0,0 +1,1074 @@ + + + + + + + + + + + A value mapping object that attaches multiple control sources to a guint +gobject properties representing a color. A control value of 0.0 will turn the +color component off and a value of 1.0 will be the color level. + + + Create a new control-binding that attaches the given #GstControlSource to the +#GObject property. + + + the new #GstARGBControlBinding + + + + + the object of the property + + + + the property-name to attach the control source + + + + the control source for the alpha channel + + + + the control source for the red channel + + + + the control source for the green channel + + + + the control source for the blue channel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The class structure of #GstARGBControlBinding. + + + Parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An internal structure for value+time and various temporary +values used for interpolation. This "inherits" from +GstTimedValue. + + + timestamp of the value change + + + + the new value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copies a #GstControlPoint + + + A copy of @cp + + + + + The control point to copy + + + + + + Frees all data allocated by a #GstControlPoint instance. + + + + + + + the object to free + + + + + + + + + + + + + + + + + + + + + + + + + + + + A value mapping object that attaches control sources to gobject properties. It +will map the control values directly to the target property range. If a +non-absolute direct control binding is used, the value range [0.0 ... 1.0] +is mapped to full target property range, and all values outside the range +will be clipped. An absolute control binding will not do any value +transformations. + + + Create a new control-binding that attaches the #GstControlSource to the +#GObject property. It will map the control source range [0.0 ... 1.0] to +the full target property range, and clip all values outside this range. + + + the new #GstDirectControlBinding + + + + + the object of the property + + + + the property-name to attach the control source + + + + the control source + + + + + + Create a new control-binding that attaches the #GstControlSource to the +#GObject property. It will directly map the control source values to the +target property range without any transformations. + + + the new #GstDirectControlBinding + + + + + the object of the property + + + + the property-name to attach the control source + + + + the control source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The class structure of #GstDirectControlBinding. + + + Parent class + + + + + + + + + + Function to map a control-value to the target GValue. + + + + + + + the #GstDirectControlBinding instance + + + + the value returned by the cotnrol source + + + + the target GValue + + + + + + Function to map a control-value to the target plain data type. + + + + + + + the #GstDirectControlBinding instance + + + + the value returned by the cotnrol source + + + + the target location + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstInterpolationControlSource is a #GstControlSource, that interpolates values between user-given +control points. It supports several interpolation modes and property types. + +To use #GstInterpolationControlSource get a new instance by calling +gst_interpolation_control_source_new(), bind it to a #GParamSpec and set some +control points by calling gst_timed_value_control_source_set(). + +All functions are MT-safe. + + + This returns a new, unbound #GstInterpolationControlSource. + + + a new, unbound #GstInterpolationControlSource. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The various interpolation modes available. + + steps-like interpolation, default + + + linear interpolation + + + cubic interpolation (natural), may overshoot + the min or max values set by the control point, but is more 'curvy' + + + monotonic cubic interpolation, will not + produce any values outside of the min-max range set by the control points + (Since: 1.8) + + + + #GstLFOControlSource is a #GstControlSource, that provides several periodic +waveforms as control values. + +To use #GstLFOControlSource get a new instance by calling +gst_lfo_control_source_new(), bind it to a #GParamSpec and set the relevant +properties. + +All functions are MT-safe. + + + This returns a new, unbound #GstLFOControlSource. + + + a new, unbound #GstLFOControlSource. + + + + + Specifies the amplitude for the waveform of this #GstLFOControlSource. + + + + Specifies the frequency that should be used for the waveform +of this #GstLFOControlSource. It should be large enough +so that the period is longer than one nanosecond. + + + + Specifies the value offset for the waveform of this #GstLFOControlSource. + + + + Specifies the timeshift to the right that should be used for the waveform +of this #GstLFOControlSource in nanoseconds. + +To get a n nanosecond shift to the left use +"(GST_SECOND / frequency) - n". + + + + Specifies the waveform that should be used for this #GstLFOControlSource. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The various waveform modes available. + + sine waveform + + + square waveform + + + saw waveform + + + reverse saw waveform + + + triangle waveform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstControlBinding that forwards requests to another #GstControlBinding + + + #GstProxyControlBinding forwards all access to data or `sync_values()` +requests from @property_name on @object to the control binding at +@ref_property_name on @ref_object. + + + a new #GstControlBinding that proxies the control interface between +properties on different #GstObject's + + + + + a #GstObject + + + + the property name in @object to control + + + + a #GstObject to forward all + #GstControlBinding requests to + + + + the property_name in @ref_object to control + + + + + + + + + + + + + + + + + + + + + Opaque #GstProxyControlBindingClass struct + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for #GstControlSource that use time-stamped values. + +When overriding bind, chain up first to give this bind implementation a +chance to setup things. + +All functions are MT-safe. + + + Find last value before given timestamp in control point list. +If all values in the control point list come after the given +timestamp or no values exist, %NULL is returned. + +For use in control source implementations. + + + the found #GSequenceIter or %NULL + + + + + the control source to search in + + + + the search key + + + + + + Returns a read-only copy of the list of #GstTimedValue for the given property. +Free the list after done with it. + + + a copy +of the list, or %NULL if the property isn't handled by the controller + + + + + + + the #GstTimedValueControlSource to get the list from + + + + + + Get the number of control points that are set. + + + the number of control points that are set. + + + + + the #GstTimedValueControlSource to get the number of values from + + + + + + Set the value of given controller-handled property at a certain time. + + + FALSE if the values couldn't be set, TRUE otherwise. + + + + + the #GstTimedValueControlSource object + + + + the time the control-change is scheduled for + + + + the control-value + + + + + + Sets multiple timed values at once. + + + FALSE if the values couldn't be set, TRUE otherwise. + + + + + the #GstTimedValueControlSource object + + + + a list +with #GstTimedValue items + + + + + + + + Used to remove the value of given controller-handled property at a certain +time. + + + FALSE if the value couldn't be unset (i.e. not found, TRUE otherwise. + + + + + the #GstTimedValueControlSource object + + + + the time the control-change should be removed from + + + + + + Used to remove all time-stamped values of given controller-handled property + + + + + + + the #GstTimedValueControlSource object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Emitted right after the new value has been added to @self + + + + + + The newly added #GstTimedValue + + + + + + Emitted right after the new value has been set on @timed_signals + + + + + + The #GstTimedValue where the value changed + + + + + + Emitted when @timed_value is removed from @self + + + + + + The removed #GstTimedValue + + + + + + + + + + + + + + + + + + + + + #GstTriggerControlSource is a #GstControlSource, that returns values from user-given +control points. It allows for a tolerance on the time-stamps. + +To use #GstTriggerControlSource get a new instance by calling +gst_trigger_control_source_new(), bind it to a #GParamSpec and set some +control points by calling gst_timed_value_control_source_set(). + +All functions are MT-safe. + + + This returns a new, unbound #GstTriggerControlSource. + + + a new, unbound #GstTriggerControlSource. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reset the controlled value cache. + + + + + + + the #GstTimedValueControlSource + + + + + + diff --git a/girs/GstCuda-1.0.gir b/girs/GstCuda-1.0.gir new file mode 100644 index 0000000000..5a1f529afe --- /dev/null +++ b/girs/GstCuda-1.0.gir @@ -0,0 +1,1251 @@ + + + + + + + + + + + Name of the caps feature for indicating the use of #GstCudaMemory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of cuda memory type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstAllocator subclass for cuda memory + + + Controls the active state of @allocator. Default #GstCudaAllocator is +stateless and therefore active state is ignored, but subclass implementation +(e.g., #GstCudaPoolAllocator) will require explicit active state control +for its internal resource management. + +This method is conceptually identical to gst_buffer_pool_set_active method. + + + %TRUE if active state of @allocator was successfully updated. + + + + + a #GstCudaAllocator + + + + the new active state + + + + + + + + a newly allocated #GstCudaMemory + + + + + a #GstCudaAllocator + + + + a #GstCudaContext + + + + a #GstCudaStream + + + + a #GstVideoInfo + + + + + + Allocates a new memory that wraps the given CUDA device memory. + +@info must represent actual memory layout, in other words, offset, stride +and size fields of @info should be matched with memory layout of @dev_ptr + +By default, wrapped @dev_ptr will be freed at the time when #GstMemory +is freed if @notify is %NULL. Otherwise, if caller sets @notify, +freeing @dev_ptr is callers responsibility and default #GstCudaAllocator +will not free it. + + + a new #GstMemory + + + + + a #GstCudaAllocator + + + + a #GstCudaContext + + + + a #GstCudaStream + + + + a #GstVideoInfo + + + + a CUdeviceptr CUDA device memory + + + + user data + + + + + Called with @user_data when the memory is freed + + + + + + Controls the active state of @allocator. Default #GstCudaAllocator is +stateless and therefore active state is ignored, but subclass implementation +(e.g., #GstCudaPoolAllocator) will require explicit active state control +for its internal resource management. + +This method is conceptually identical to gst_buffer_pool_set_active method. + + + %TRUE if active state of @allocator was successfully updated. + + + + + a #GstCudaAllocator + + + + the new active state + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if active state of @allocator was successfully updated. + + + + + a #GstCudaAllocator + + + + the new active state + + + + + + + + + + + + + + + + + + + + A newly created #GstCudaBufferPool + + + + + The #GstCudaContext to use for the new buffer pool + + + + + + + + + + + + + + + + + + + + + + + + + + + Create #GstCudaContext with given device_id + + + a new #GstCudaContext or %NULL on +failure + + + + + device-id for creating #GstCudaContext + + + + + + Note: The caller is responsible for ensuring that the CUcontext and CUdevice +represented by @handle and @device stay alive while the returned +#GstCudaContext is active. + + + A newly created #GstCudaContext + + + + + A +[CUcontext](https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__TYPES.html#group__CUDA__TYPES_1gf9f5bd81658f866613785b3a0bb7d7d9) +to wrap + + + + A +[CUDevice](https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__TYPES.html#group__CUDA__TYPES_1gf9f5bd81658f866613785b3a0bb7d7d9) +to wrap + + + + + + Pops the current CUDA context from CPU thread + + + %TRUE if @ctx was pushed without error. + + + + + + + + + + Query whether @ctx can access any memory which belongs to @peer directly. + + + %TRUE if @ctx can access @peer directly + + + + + a #GstCudaContext + + + + a #GstCudaContext + + + + + + Get CUDA device context. Caller must not modify and/or destroy +returned device context. + + + the `CUcontext` of @ctx + + + + + a #GstCudaContext + + + + + + Get required texture alignment by device + + + the `CUcontext` of @ctx + + + + + a #GstCudaContext + + + + + + Pushes the given @ctx onto the CPU thread's stack of current contexts. +The specified context becomes the CPU thread's current context, +so all CUDA functions that operate on the current context are affected. + + + %TRUE if @ctx was pushed without error. + + + + + a #GstCudaContext to push current thread + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Free @resource + + + + + + + a #GstCudaGraphicsResource + + + + + + Map previously registered resource with map flags + + + the `CUgraphicsResource` if successful or %NULL when failed + + + + + a #GstCudaGraphicsResource + + + + a CUstream + + + + a CUgraphicsMapResourceFlags + + + + + + @resource a #GstCudaGraphicsResource +Register the @buffer for access by CUDA. +Must be called from the gl context thread with current cuda context was +pushed on the current thread + + + whether @buffer was registered or not + + + + + + + + a GL buffer object + + + + a `CUgraphicsRegisterFlags` + + + + + + Unmap previously mapped resource + + + + + + + a #GstCudaGraphicsResource + + + + a `CUstream` + + + + + + Unregister previously registered resource. +For GL resource, this method must be called from gl context thread. +Also, current cuda context should be pushed on the current thread +before calling this method. + + + + + + + a #GstCudaGraphicsResource + + + + + + Create new #GstCudaGraphicsResource with given @context and @type + + + a new #GstCudaGraphicsResource. +Free with gst_cuda_graphics_resource_free + + + + + a #GstCudaContext + + + + a graphics API specific context object + + + + a #GstCudaGraphicsResourceType of resource registration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets CUDA stream object associated with @mem + + + a #GstCudaStream or %NULL if default +CUDA stream is in use + + + + + A #GstCudaMemory + + + + + + Creates CUtexObject with given parameters + + + %TRUE if successful + + + + + A #GstCudaMemory + + + + the plane index + + + + filter mode + + + + a pointer to CUtexObject object + + + + + + Gets back user data pointer stored via gst_cuda_memory_set_token_data() + + + user data pointer or %NULL + + + + + a #GstCudaMemory + + + + an user token + + + + + + Gets user data pointer stored via gst_cuda_allocator_alloc_wrapped() + + + the user data pointer + + + + + A #GstCudaMemory + + + + + + Sets an opaque user data on a #GstCudaMemory + + + + + + + a #GstCudaMemory + + + + an user token + + + + an user data + + + + function to invoke with @data as argument, when @data needs to be + freed + + + + + + Performs synchronization if needed + + + + + + + A #GstCudaMemory + + + + + + Ensures that the #GstCudaAllocator is initialized and ready to be used. + + + + + + + + + + + CUDA memory transfer flags + + + + + + + + + + A #GstCudaAllocator subclass for cuda memory pool + + + Creates a new #GstCudaPoolAllocator instance. + + + a new #GstCudaPoolAllocator instance + + + + + a #GstCudaContext + + + + a #GstCudaStream + + + + a #GstVideoInfo + + + + + + Acquires a #GstMemory from @allocator. @memory should point to a memory +location that can hold a pointer to the new #GstMemory. + + + a #GstFlowReturn such as %GST_FLOW_FLUSHING when the allocator is +inactive. + + + + + a #GstCudaPoolAllocator + + + + a #GstMemory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GstCudaStream + + + a new #GstCudaStream or %NULL on +failure + + + + + a #GstCudaContext + + + + + + Get CUDA stream handle + + + a `CUstream` handle of @stream or %NULL if @stream is %NULL + + + + + a #GstCudaStream + + + + + + Increase the reference count of @stream. + + + @stream + + + + + a #GstCudaStream + + + + + + Decrease the reference count of @stream. + + + + + + + a #GstCudaStream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Flag indicating that we should map the CUDA device memory +instead of to system memory. + +Combining #GST_MAP_CUDA with #GST_MAP_WRITE has the same semantics as though +you are writing to CUDA device/host memory. +Conversely, combining #GST_MAP_CUDA with +#GST_MAP_READ has the same semantics as though you are reading from +CUDA device/host memory + + + + + + + the currently configured #GstCudaStream +on @config or %NULL if @config doesn't hold #GstCudaStream + + + + + a buffer pool config + + + + + + Sets @stream on @config + + + + + + + a buffer pool config + + + + a #GstCudaStream + + + + + + Clears a reference to a #GstCudaStream. + + + + + + + a pointer to a #GstCudaStream reference + + + + + + + + a new #GstContext embedding the @cuda_ctx + + + + + a #GstCudaContext + + + + + + Creates new user token value + + + user token value + + + + + Perform the steps necessary for retrieving a #GstCudaContext from the +surrounding elements or from the application using the #GstContext mechanism. + +If the content of @cuda_ctx is not %NULL, then no #GstContext query is +necessary for #GstCudaContext. + + + whether a #GstCudaContext exists in @cuda_ctx + + + + + the #GstElement running the query + + + + preferred device-id, pass device_id >=0 when + the device_id explicitly required. Otherwise, set -1. + + + + the resulting #GstCudaContext + + + + + + Create new #GstCudaGraphicsResource with given @context and @type + + + a new #GstCudaGraphicsResource. +Free with gst_cuda_graphics_resource_free + + + + + a #GstCudaContext + + + + a graphics API specific context object + + + + a #GstCudaGraphicsResourceType of resource registration + + + + + + + + Whether the @query was successfully responded to from the passed + @context. + + + + + a #GstElement + + + + a #GstQuery of type %GST_QUERY_CONTEXT + + + + a #GstCudaContext + + + + + + Helper function for implementing #GstElementClass.set_context() in +CUDA capable elements. + +Retrieves the #GstCudaContext in @context and places the result in @cuda_ctx. + + + whether the @cuda_ctx could be set successfully + + + + + a #GstElement + + + + a #GstContext + + + + preferred device-id, pass device_id >=0 when + the device_id explicitly required. Otherwise, set -1. + + + + location of a #GstCudaContext + + + + + + Loads the cuda library + + + %TRUE if the libcuda could be loaded %FALSE otherwise + + + + + Ensures that the #GstCudaAllocator is initialized and ready to be used. + + + + + + + + + + + + + Source code to compile + + + + + + Loads the nvrtc library. + + + %TRUE if the library could be loaded, %FALSE otherwise + + + + + + + the GQuark for given @id or 0 if @id is unknown value + + + + + a #GstCudaQuarkId + + + + + + + + + CUDA device API return code `CUresult` + + + + + Check if @mem is a cuda memory + + + + + + + A #GstMemory + + + + + + diff --git a/girs/GstGL-1.0.gir b/girs/GstGL-1.0.gir new file mode 100644 index 0000000000..8c9f84166f --- /dev/null +++ b/girs/GstGL-1.0.gir @@ -0,0 +1,11089 @@ + + + + + + + + + + An option that can be activated on bufferpools to request OpenGL +synchronization metadata on buffers from the pool. + + + + + String used for %GST_GL_TEXTURE_TARGET_2D as a #GstBufferPool pool option + + + + + String used for %GST_GL_TEXTURE_TARGET_EXTERNAL_OES as a #GstBufferPool pool option + + + + + String used for %GST_GL_TEXTURE_TARGET_RECTANGLE as a #GstBufferPool pool option + + + + + Name of the caps feature indicating the use of GL buffers + + + + + Name of the caps feature for indicating the use of #GstGLMemory + + + + + + no API + + + Desktop OpenGL up to and including 3.1. The + compatibility profile when the OpenGL version is >= 3.2 + + + Desktop OpenGL >= 3.2 core profile + + + OpenGL ES 1.x + + + OpenGL ES 2.x and 3.x + + + Any OpenGL API + + + + + The #GstGLAPI represented by @api_s + + + + + a space separated string of OpenGL apis + + + + + + + + A space separated string of the OpenGL api's enabled in @api + + + + + a #GstGLAPI to stringify + + + + + + + + + the size of the struct (including and subclass data) + + + + a #GstGLAllocationParamsCopyFunc + + + + a #GstGLAllocationParamsFreeFunc + + + + allocation flags + + + + the allocation size + + + + the #GstAllocationParams + + + + a #GstGLContext + + + + a #GDestroyNotify + + + + argument to call @notify with + + + + the wrapped data pointer + + + + the wrapped OpenGL handle + + + + + + + + + + + a copy of the #GstGLAllocationParams specified by + @src + + + + + the #GstGLAllocationParams to initialize + + + + + + Copies the dynamically allocated data from @src to @dest. Direct subclasses +should call this function in their own overridden copy function. + + + + + + + the source #GstGLAllocationParams + + + + the destination #GstGLAllocationParams + + + + + + Frees the #GstGLAllocationParams and all associated data. + + + + + + + the #GstGLAllocationParams to initialize + + + + + + Frees the dynamically allocated data in @params. Direct subclasses +should call this function in their own overridden free function. + + + + + + + the source #GstGLAllocationParams + + + + + + @notify will be called once for each allocated memory using these @params +when freeing the memory. + + + whether the parameters could be initialized + + + + + the #GstGLAllocationParams to initialize + + + + the struct size of the implementation + + + + some alloc flags + + + + a copy function + + + + a free function + + + + a #GstGLContext + + + + the number of bytes to allocate. + + + + a #GstAllocationParams to apply + + + + a sysmem data pointer to initialize the allocation with + + + + a GL handle to initialize the allocation with + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + + Copies the parameters from @src into @dest. The subclass must compose copy +functions from the superclass. + + + + + + + the source #GstGLAllocationParams to copy from + + + + the source #GstGLAllocationParams to copy + + + + + + Free any dynamically allocated data. The subclass must call the superclass' +free. + + + + + + + a #GstGLAllocationParams + + + + + + #GstGLAsyncDebug an opaque structure and should only be accessed through the +provided API. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Frees @ad + + + + + + + a #GstGLAsyncDebug + + + + + + freeze the debug output. While frozen, any call to +gst_gl_async_debug_output_log_msg() will not output any messages but +subsequent calls to gst_gl_async_debug_store_log_msg() will overwrite previous +messages. + + + + + + + a #GstGLAsyncDebug + + + + + + Initialize @ad. Intended for use with #GstGLAsyncDebug's that are embedded +in other structs. + + + + + + + a #GstGLAsyncDebug + + + + + + Outputs a previously stored debug message. + + + + + + + the #GstGLAsyncDebug to store the message in + + + + + + Stores a debug message for later output by gst_gl_async_debug_output_log_msg() + + + + + + + the #GstGLAsyncDebug to store the message in + + + + the #GstDebugCategory to output the message in + + + + the #GstDebugLevel + + + + the file where the debug message originates from + + + + the function where the debug message originates from + + + + the line in @file where the debug message originates from + + + + a #GObject to associate with the debug message + + + + a printf style format string + + + + the list of arguments for @format + + + + + + Stores a debug message for later output by gst_gl_async_debug_output_log_msg() + + + + + + + the #GstGLAsyncDebug to store the message in + + + + the #GstDebugCategory to output the message in + + + + the #GstDebugLevel + + + + the file where the debug message originates from + + + + the function where the debug message originates from + + + + the line in @file where the debug message originates from + + + + a #GObject to associate with the debug message + + + + a printf style format string + + + + the list of arguments for @format + + + + + + unfreeze the debug output. See gst_gl_async_debug_freeze() for what freezing means + + + + + + + a #GstGLAsyncDebug + + + + + + Unset any dynamically allocated data. Intended for use with +#GstGLAsyncDebug's that are embedded in other structs. + + + + + + + a #GstGLAsyncDebug + + + + + + Free with gst_gl_async_debug_free() + + + a new #GstGLAsyncDebug + + + + + + + + + + + + + + + + + #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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether an OpenGL context could be retrieved or created successfully + + + + + a #GstGLBaseFilter + + + + + + + + the #GstGLContext found by @filter + + + + + a #GstGLBaseFilter + + + + + + + + + + + + the currently configured #GstGLDisplay + + + + the currently configured #GstGLContext + + + + the currently configured input #GstCaps + + + + the currently configured output #GstCaps + + + + + + + + + + + + + The base class for GStreamer GL Filter. + + + + + + the logical-OR of #GstGLAPI's supported by this element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GstGLBaseMemory is a #GstMemory subclass providing the basis of support +for the mapping of GL buffers. + +Data is uploaded or downloaded from the GPU as is necessary. + + + the parent object + + + + the #GstGLContext to use for GL operations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + whether the system memory could be allocated + + + + + a #GstGLBaseMemory + + + + + + Initializes @mem with the required parameters + + + + + + + the #GstGLBaseMemory to initialize + + + + the #GstAllocator to initialize with + + + + the parent #GstMemory to initialize with + + + + the #GstGLContext to initialize with + + + + the @GstAllocationParams to initialize with + + + + the number of bytes to be allocated + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + + + whether the copy succeeded. + + + + + the source #GstGLBaseMemory + + + + the destination #GstGLBaseMemory + + + + the offset to start at + + + + the number of bytes to copy + + + + + + + + a new #GstGLBaseMemory from @allocator with the requested @params. + + + + + a #GstGLBaseMemoryAllocator + + + + the #GstGLAllocationParams to allocate the memory with + + + + + + Initializes the GL Base Memory allocator. It is safe to call this function +multiple times. This must be called before any other GstGLBaseMemory operation. + + + + + + + + Opaque #GstGLBaseMemoryAllocator struct + + + + + a newly allocated #GstGLBaseMemory from @allocator and @params + + + + + a #GstGLBaseMemoryAllocator + + + + the #GstGLAllocationParams to allocate the memory with + + + + + + + + + + + + + + + + + + Note: not called with a GL context current + + + a newly allocated #GstGLBaseMemory from @allocator and @params + + + + + a #GstGLBaseMemoryAllocator + + + + the #GstGLAllocationParams to allocate the memory with + + + + + + + + the parent class + + + + a #GstGLBaseMemoryAllocatorAllocFunction + + + + a #GstGLBaseMemoryAllocatorCreateFunction + + + + a #GstGLBaseMemoryAllocatorMapFunction + + + + a #GstGLBaseMemoryAllocatorUnmapFunction + + + + a #GstGLBaseMemoryAllocatorCopyFunction + + + + a #GstGLBaseMemoryAllocatorDestroyFunction + + + + + + + + + + Also see gst_memory_copy(); + + + the newly copied #GstGLMemory or %NULL + + + + + a #GstGLBaseMemory + + + + the offset to copy from + + + + the number of bytes to copy + + + + + + As this virtual method is called with an OpenGL context current, use this +function to allocate and OpenGL resources needed for your application + + + whether the creation succeeded + + + + + a #GstGLBaseMemory + + + + + + Destroy any resources allocated throughout the lifetime of @mem + + + + + + + a #GstGLBaseMemory + + + + + + Also see gst_memory_map(); + + + the mapped pointer + + + + + a #GstGLBaseMemory + + + + a #GstMapInfo to map with + + + + the size to map + + + + + + Also see gst_memory_unmap(); + + + + + + + a #GstGLBaseMemory + + + + a #GstMapInfo to map with + + + + + + + generic failure + + + the implementation is too old and doesn't + implement enough features + + + a resource could not be found + + + + the quark used for #GstGLBaseMemory in #GError's + + + + + + + the texture needs downloading + to the data pointer + + + the data pointer needs uploading + 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. + +Data is uploaded or downloaded from the GPU as is necessary. + + + the parent object + + + + the buffer id for this memory + + + + the OpenGL target of this texture for binding purposes + + + + the OpenGL usage hints this buffer was created with + + + + Initializes the GL Buffer allocator. It is safe to call this function +multiple times. This must be called before any other #GstGLBuffer operation. + + + + + + + + + + parent object + + + + the OpenGL target to bind the buffer to + + + + the OpenGL usage hint to create the buffer with + + + + + + + + + + + a new #GstGLBufferAllocationParams for allocating OpenGL buffer + objects + + + + + a #GstGLContext + + + + the size in bytes to allocate + + + + the #GstAllocationParams for @tex_id + + + + the OpenGL target to allocate + + + + the OpenGL usage hint to allocate with + + + + + + + Opaque #GstGLBufferAllocator struct + + + + + + + + + + + + The #GstGLBufferAllocatorClass only contains private data + + + + + + + + + + + + a #GstGLBufferPool is an object that allocates buffers with #GstGLBaseMemory + +A #GstGLBufferPool is created with gst_gl_buffer_pool_new() + +#GstGLBufferPool implements the VideoMeta buffer pool option +%GST_BUFFER_POOL_OPTION_VIDEO_META, the VideoAligment buffer pool option +%GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT as well as the OpenGL specific +%GST_BUFFER_POOL_OPTION_GL_SYNC_META buffer pool option. + + + + + a #GstBufferPool that allocates buffers with #GstGLMemory + + + + + the #GstGLContext to use + + + + + + The returned #GstGLAllocationParams will by %NULL before the first successful +call to gst_buffer_pool_set_config(). Subsequent successful calls to +gst_buffer_pool_set_config() will cause this function to return a new +#GstGLAllocationParams which may or may not contain the same information. + + + a copy of the #GstGLAllocationParams being used by the @pool + + + + + the #GstGLBufferPool + + + + + + + + + + + + + + + + + + + + + The #GstGLBufferPoolClass structure contains only private data + + + + + + + + + + + + + + + #GstGLColorConvert is an object that converts between color spaces and/or +formats using OpenGL Shaders. + +A #GstGLColorConvert can be created with gst_gl_color_convert_new(), the +configuration negotiated with gst_gl_color_convert_transform_caps() and the +conversion performed with gst_gl_color_convert_perform(). + +The glcolorconvertelement provides a GStreamer element that uses +#GstGLColorConvert to convert between video formats and color spaces. + + + + + a new #GstGLColorConvert object + + + + + a #GstGLContext + + + + + + Provides an implementation of #GstBaseTransformClass.fixate_caps() + + + the fixated #GstCaps + + + + + a #GstGLContext to use for transforming @caps + + + + a #GstPadDirection + + + + the #GstCaps of @direction + + + + the #GstCaps to fixate + + + + + + Provides an implementation of #GstBaseTransformClass.transform_caps() + + + the converted #GstCaps + + + + + a #GstGLContext to use for transforming @caps + + + + a #GstPadDirection + + + + the #GstCaps to transform + + + + a set of filter #GstCaps + + + + + + Provides an implementation of #GstBaseTransformClass.decide_allocation() + + + whether the allocation parameters were successfully chosen + + + + + a #GstGLColorConvert + + + + a completed ALLOCATION #GstQuery + + + + + + Converts the data contained by @inbuf using the formats specified by the +#GstCaps passed to gst_gl_color_convert_set_caps() + + + a converted #GstBuffer or %NULL + + + + + a #GstGLColorConvert + + + + the #GstGLMemory filled #GstBuffer to convert + + + + + + Initializes @convert with the information required for conversion. + + + + + + + a #GstGLColorConvert + + + + input #GstCaps + + + + output #GstCaps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstGLColorConvertClass struct only contains private data + + + + + + + + + + + + + + + + none + + + slow + + + non-conformant + + + + + a string version of @caveat or %NULL if @caveat does not + exist. + + + + + the #GstGLConfigCaveat + + + + + + + + none + + + window + + + pbuffer + + + pixmap + + + + + a string version of @caveat or %NULL if @surface_type does not + exist. + + + + + the #GstGLConfigSurfaceType + + + + + + + #GstGLContext wraps an OpenGL context object in a uniform API. As a result +of the limitation on OpenGL context, this object is not thread safe unless +specified and must only be activated in a single thread. + +Environment variables: +- `GST_GL_API`: select which OpenGL API to create and OpenGL context for. + Depending on the platform, the available values are + 'opengl', 'opengl3' (core profile), and 'gles2'. See the + the #GstGLAPI enumeration for more details. +- `GST_GL_PLATFORM`: select which OpenGL platform to create an OpenGL + context with. Depending on the platform and the + dependencies available build-time, the available values + are, 'glx', 'egl', 'cgl', 'wgl', and 'eagl' +- `GST_GL_CONFIG`: select the configuration used for creating the OpenGL + context and OpenGL surface. Written out as a GstStructure + that has been serialized to string. e.g. + `GST_GL_CONFIG="gst-gl-context-config,red-size=8,green-size=8,blue-size=8,alpha-size=8,depth-size=16"`. + Not all platforms will support the same level of + functionality. + + + Create a new #GstGLContext with the specified @display + + + a new #GstGLContext + + + + + a #GstGLDisplay + + + + + + Wraps an existing OpenGL context into a #GstGLContext. + +Note: The caller is responsible for ensuring that the OpenGL context +represented by @handle stays alive while the returned #GstGLContext is +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 + + + + + a #GstGLDisplay + + + + the OpenGL context to wrap + + + + a #GstGLPlatform specifying the type of context in @handle + + + + a #GstGLAPI containing the available OpenGL apis in @handle + + + + + + A default implementation of the various GetProcAddress functions that looks +for @name in the OpenGL shared libraries or in the current process. + +See also: gst_gl_context_get_proc_address() + + + an address pointing to @name or %NULL + + + + + a #GstGLAPI + + + + then function to get the address of + + + + + + See also gst_gl_context_activate(). + + + the #GstGLContext active in the current thread or %NULL + + + + + If an error occurs, @major and @minor are not modified and %GST_GL_API_NONE is +returned. + + + The version supported by the OpenGL context current in the calling + thread or %GST_GL_API_NONE + + + + + the #GstGLPlatform to retrieve the API for + + + + the major version + + + + the minor version + + + + + + + + The OpenGL context handle current in the calling thread or %NULL + + + + + a #GstGLPlatform specifying the type of context to retrieve + + + + + + Attempts to use the @context_type specific GetProcAddress implementations +to retrieve @name. + +See also gst_gl_context_get_proc_address(). + + + a function pointer for @name, or %NULL + + + + + a #GstGLPlatform + + + + a #GstGLAPI + + + + the name of the function to retrieve + + + + + + (De)activate the OpenGL context represented by this @context. + +In OpenGL terms, calls eglMakeCurrent or similar with this context and the +currently set window. See gst_gl_context_set_window() for details. + + + Whether the activation succeeded + + + + + a #GstGLContext + + + + %TRUE to activate, %FALSE to deactivate + + + + + + Check for an OpenGL @feature being supported. + +Note: Most features require that the context be created before it is +possible to determine their existence and so will fail if that is not the +case. + + + Whether @feature is supported by @context + + + + + a #GstGLContext + + + + a platform specific feature + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Retrieve the OpenGL configuration for this context. The context must +have been successfully created for this function to return a valid value. + +Not all implementations currently support retrieving the config and will +return %NULL when not supported. + + + the configuration chosen for this OpenGL context. + + + + + the #GstGLContext + + + + + + Get the currently enabled OpenGL api. + +The currently available API may be limited by the #GstGLDisplay in use and/or +the #GstGLWindow chosen. + + + the available OpenGL api + + + + + a #GstGLContext + + + + + + Gets the backing OpenGL context used by @context. + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + Gets the OpenGL platform that used by @context. + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid +after a call to gst_gl_context_create(). + + + + + + + a #GstGLContext + + + + return for the major version + + + + return for the minor version + + + + + + Set the OpenGL configuration for this context. The context must not +have been created for this function to succeed. Setting a %NULL +@config has the affect of removing any specific configuration request. + +Not all implementations currently support retrieving the config and this +function will return FALSE when not supported. + +Note that calling this function may cause a subsequent +gst_gl_context_create() to fail if @config could not be matched with +the platform-specific configuration. + +Note that the actual config used may be differ from the requested values. + + + whether @gl_config could be successfully set on @context + + + + + the #GstGLContext + + + + a configuration structure for + configuring the OpenGL context + + + + + + Swap the front and back buffers on the window attached to @context. +This will display the frame on the next refresh cycle. + + + + + + + a #GstGLContext + + + + + + (De)activate the OpenGL context represented by this @context. + +In OpenGL terms, calls eglMakeCurrent or similar with this context and the +currently set window. See gst_gl_context_set_window() for details. + + + Whether the activation succeeded + + + + + a #GstGLContext + + + + %TRUE to activate, %FALSE to deactivate + + + + + + Note: This will always fail for two wrapped #GstGLContext's + + + whether @context and @other_context are able to share OpenGL + resources. + + + + + a #GstGLContext + + + + another #GstGLContext + + + + + + Check for an OpenGL @feature being supported. + +Note: Most features require that the context be created before it is +possible to determine their existence and so will fail if that is not the +case. + + + Whether @feature is supported by @context + + + + + a #GstGLContext + + + + a platform specific feature + + + + + + Must be called with @context current. + + + whether whether the current framebuffer is complete + + + + + a #GstGLContext + + + + the GL value of the framebuffer target, GL_FRAMEBUFFER, + GL_READ_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER + + + + + + + + whether OpenGL context implements the required api and specified +version. + + + + + a #GstGLContext + + + + api type required + + + + major version required + + + + minor version required + + + + + + Unbind the current framebuffer + + + + + + + a #GstGLContext + + + + + + Clear's the currently set shader from the GL state machine. + +Note: must be called in the GL thread. + + + + + + + a #GstGLContext + + + + + + Creates an OpenGL context with the specified @other_context as a context +to share shareable OpenGL objects with. See the OpenGL specification for +what is shared between OpenGL contexts. + +Since 1.20, the configuration can be overriden with the environment variable +`GST_GL_CONFIG` which is a stringified #GstStructure as would be returned +from gst_gl_context_get_config(). If `GST_GL_CONFIG` is not set, then the +config will be chosen from @other_context by calling +gst_gl_context_get_config() on @other_context. Otherwise, a default +configuration is used. + +Calling gst_gl_context_request_config()) before calling +gst_gl_context_create() will override the config from @other_context but +will not override the `GST_GL_CONFIG` environment variable. + +If an error occurs, and @error is not %NULL, then @error will contain +details of the error and %FALSE will be returned. + +Should only be called once. + + + whether the context could successfully be created + + + + + a #GstGLContext: + + + + a #GstGLContext to share OpenGL objects with + + + + + + Destroys an OpenGL context. + +Should only be called after gst_gl_context_create() has been successfully +called for this context. + + + + + + + a #GstGLContext: + + + + + + Fills @context's info (version, extensions, vtable, etc) from the GL +context in the current thread. Typically used with wrapped contexts to +allow wrapped contexts to be used as regular #GstGLContext's. + + + + + + + a #GstGLContext: + + + + + + Retrieve the OpenGL configuration for this context. The context must +have been successfully created for this function to return a valid value. + +Not all implementations currently support retrieving the config and will +return %NULL when not supported. + + + the configuration chosen for this OpenGL context. + + + + + the #GstGLContext + + + + + + + + the #GstGLDisplay associated with this @context + + + + + a #GstGLContext: + + + + + + Get the currently enabled OpenGL api. + +The currently available API may be limited by the #GstGLDisplay in use and/or +the #GstGLWindow chosen. + + + the available OpenGL api + + + + + a #GstGLContext + + + + + + Gets the backing OpenGL context used by @context. + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + Gets the OpenGL platform that used by @context. + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + Get the version of the OpenGL platform (GLX, EGL, etc) used. Only valid +after a call to gst_gl_context_create(). + + + + + + + a #GstGLContext + + + + return for the major version + + + + return for the minor version + + + + + + Returns the OpenGL version implemented by @context. See +gst_gl_context_get_gl_api() for retrieving the OpenGL api implemented by +@context. + + + + + + + a #GstGLContext + + + + resulting major version + + + + resulting minor version + + + + + + Get a function pointer to a specified opengl function, @name. If the the +specific function does not exist, NULL is returned instead. + +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 +to call in @context. The caller is responsible for ensuring that the +returned function is a valid function to call in @context by either checking +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. +e.g. + +|[<!-- language="C" --> +void (GSTGLAPI *PFN_glGetIntegerv) (GLenum name, GLint * ret) +]| + + + a function pointer or %NULL + + + + + a #GstGLContext + + + + an opengl function name + + + + + + + + The #GThread, @context is current in or NULL + + + + + a #GstGLContext + + + + + + + + the currently set window + + + + + a #GstGLContext + + + + + + + + Whether the #GstGLContext has been shared with another #GstGLContext + + + + + a #GstGLContext + + + + + + Set the OpenGL configuration for this context. The context must not +have been created for this function to succeed. Setting a %NULL +@config has the affect of removing any specific configuration request. + +Not all implementations currently support retrieving the config and this +function will return FALSE when not supported. + +Note that calling this function may cause a subsequent +gst_gl_context_create() to fail if @config could not be matched with +the platform-specific configuration. + +Note that the actual config used may be differ from the requested values. + + + whether @gl_config could be successfully set on @context + + + + + the #GstGLContext + + + + a configuration structure for + configuring the OpenGL context + + + + + + Will internally set @context as shared with @share + + + + + + + a wrapped #GstGLContext + + + + another #GstGLContext + + + + + + Set's the current window on @context to @window. The window can only be +changed before gst_gl_context_create() has been called and the @window is not +already running. + + + Whether the window was successfully updated + + + + + a #GstGLContext + + + + a #GstGLWindow + + + + + + + + Whether @context supports the combination of @version with @profile + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + + + whether @context supports the 'precision' specifier in GLSL shaders + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + + + whether @context supports the 'precision highp' specifier in GLSL shaders + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + Swap the front and back buffers on the window attached to @context. +This will display the frame on the next refresh cycle. + + + + + + + a #GstGLContext + + + + + + Execute @func in the OpenGL thread of @context with @data + +MT-safe + + + + + + + a #GstGLContext + + + + a #GstGLContextThreadFunc + + + + user data to call @func with + + + + + + + + + + + + + + + a list of OpenGL function pointers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + + + + + the available OpenGL api + + + + + a #GstGLContext + + + + + + + + + + The platform specific backing OpenGL context + + + + + a #GstGLContext: + + + + + + + + + + + + + + + + + + + + + + + + + + Whether the activation succeeded + + + + + a #GstGLContext + + + + %TRUE to activate, %FALSE to deactivate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstGLContext + + + + + + + + + + Whether @feature is supported by @context + + + + + a #GstGLContext + + + + a platform specific feature + + + + + + + + + + + + + + a #GstGLContext + + + + return for the major version + + + + return for the minor version + + + + + + + + + + the configuration chosen for this OpenGL context. + + + + + the #GstGLContext + + + + + + + + + + whether @gl_config could be successfully set on @context + + + + + the #GstGLContext + + + + a configuration structure for + configuring the OpenGL context + + + + + + + + + + + + + OpenGL context errors. + + Failed for an unspecified reason + + + The configuration requested is not correct + + + The OpenGL API requested is not correct + + + The OpenGL libraries are too old + + + glXCreateContext (or similar) failed + + + A resource is not available + + + + the quark used for #GstGLContext in #GError's + + + + + + + + + Represents a function to run in the GL thread with @context and @data + + + + + + + a #GstGLContext + + + + user data + + + + + + #GstGLDisplay represents a connection to the underlying windowing system. +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 +platform and window system specific functionality. +- GST_GL_WINDOW influences the window system to use. Common values are + 'x11', 'wayland', 'win32' or 'cocoa'. +- GST_GL_PLATFORM influences the OpenGL platform to use. Common values are + 'egl', 'glx', 'wgl' or 'cgl'. +- GST_GL_API influences the OpenGL API requested by the OpenGL platform. + Common values are 'opengl', 'opengl3' and 'gles2'. + +> Certain window systems require a special function to be called to +> initialize threading support. As this GStreamer GL library does not preclude +> concurrent access to the windowing system, it is strongly advised that +> applications ensure that threading support has been initialized before any +> other toolkit/library functionality is accessed. Failure to do so could +> result in sudden application abortion during execution. The most notably +> example of such a function is X11's XInitThreads\(). + + + + + a new #GstGLDisplay + + + + + Will always return a #GstGLDisplay of a single type. This differs from +gst_gl_display_new() and the seemingly equivalent call +gst_gl_display_new_with_type (GST_GL_DISPLAY_TYPE_ANY) in that the latter +may return NULL. + + + a new #GstGLDisplay or %NULL if @type is + not supported + + + + + #GstGLDisplayType + + + + + + + + a new #GstGLWindow for @display or %NULL. + + + + + a #GstGLDisplay + + + + + + + + the native handle for the display + + + + + a #GstGLDisplay + + + + + + + + whether @context was successfully added. %FALSE may be returned +if there already exists another context for @context's active thread. + +Must be called with the object lock held. + + + + + a #GstGLDisplay + + + + a #GstGLContext + + + + + + It requires the display's object lock to be held. + + + whether a new context could be created. + + + + + a #GstGLDisplay + + + + other #GstGLContext to share resources with. + + + + resulting #GstGLContext + + + + + + + + a new #GstGLWindow for @display or %NULL. + + + + + a #GstGLDisplay + + + + + + Ensures that the display has a valid GL context for the current thread. If +@context already contains a valid context, this does nothing. + + + wether @context contains a valid context. + + + + + a #GstGLDisplay + + + + other #GstGLContext to share resources with. + + + + the resulting #GstGLContext + + + + + + 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 retrieving the +API supported by a #GstGLContext. + + + + + + + a #GstGLDisplay + + + + a #GstGLAPI to filter with + + + + + + 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. + Use gst_gl_display_retrieve_window() instead. + + + The first #GstGLWindow that causes a match + from @compare_func + + + + + a #GstGLDisplay + + + + some data to pass to @compare_func + + + + a comparison function to run + + + + + + see gst_gl_display_filter_gl_api() for what the returned value represents + + + the #GstGLAPI configured for @display + + + + + a #GstGLDisplay + + + + + + + + + + + + + + + + + + + the #GstGLContext current on @thread or %NULL + +Must be called with the object lock held. + + + + + a #GstGLDisplay + + + + a #GThread + + + + + + + + the native handle for the display + + + + + a #GstGLDisplay + + + + + + + + the #GstGLDisplayType of @display + + + + + a #GstGLDisplay + + + + + + Must be called with the object lock held. + + + + + + + a #GstGLDisplay + + + + the #GstGLContext to remove + + + + + + + + if @window could be removed from @display + + + + + a #GstGLDisplay + + + + a #GstGLWindow to remove + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overrides the @GstGLContext creation mechanism. +It can be called in any thread and it is emitted with +display's object lock held. + + the new context. + + + + + other context to share resources with. + + + + + + + + + + + + + + + the native handle for the display + + + + + a #GstGLDisplay + + + + + + + + + + a new #GstGLWindow for @display or %NULL. + + + + + a #GstGLDisplay + + + + + + + + + + + + + + + + + no display type + + + X11 display + + + Wayland display + + + Cocoa display + + + Win32 display + + + Dispmanx display + + + EGL display + + + Vivante Framebuffer display + + + Mesa3D GBM display + + + + + + + + + + + any display type + + + + #GstGLFilter helps to implement simple OpenGL filter elements taking a +single input and producing a single output with a #GstGLFramebuffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Calls filter_texture vfunc with correctly mapped #GstGLMemorys + + + whether the transformation succeeded + + + + + a #GstGLFilter + + + + an input buffer + + + + an output buffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Render a fullscreen quad using the current GL state. The only GL state this +modifies is the necessary vertex/index buffers and, if necessary, a +Vertex Array Object for drawing a fullscreen quad. Framebuffer state, +any shaders, viewport state, etc must be setup by the caller. + + + + + + + a #GstGLFilter + + + + + + Calls filter_texture vfunc with correctly mapped #GstGLMemorys + + + whether the transformation succeeded + + + + + a #GstGLFilter + + + + an input buffer + + + + an output buffer + + + + + + Transforms @input into @output using @func on through FBO. + + + the return value of @func + + + + + a #GstGLFilter + + + + the input texture + + + + the output texture + + + + the function to transform @input into @output. called with @data + + + + the data associated with @func + + + + + + Transforms @input into @output using @shader with a FBO. + +See also: gst_gl_filter_render_to_target() + + + + + + + a #GstGLFilter + + + + the input texture + + + + the output texture + + + + the shader to use. + + + + + + + + + the video info for input buffers + + + + the video info for output buffers + + + + The texture target of the input buffers (usually 2D) + + + + The texture target of the output buffers (usually 2D) + + + + the output #GstCaps + + + + #GstGLFramebuffer object used for transformations (only for subclass usage) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + whether the transformation succeeded + + + + + a #GstGLFilter + + + + an input buffer + + + + an output buffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + whether the render succeeded + + + + + the #GstGLFilter + + + + the input #GstGLMemory to render + + + + user data + + + + + + + Single component replicated across R, G, and B textures + components + + + Single component stored in the A texture component + + + Combination of #GST_GL_LUMINANCE and #GST_GL_ALPHA + + + Single component stored in the R texture component + + + Single 8-bit component stored in the R texture component + + + Two components stored in the R and G texture components + + + Two 8-bit components stored in the R and G texture components + + + Three components stored in the R, G, and B texture components + + + Three 8-bit components stored in the R, G, and B + texture components + + + Three components of bit depth 5, 6 and 5 stored in the R, G, + and B texture components respectively. + + + Three 16-bit components stored in the R, G, and B + texture components + + + Four components stored in the R, G, B, and A texture + components respectively. + + + Four 8-bit components stored in the R, G, B, and A texture + components respectively. + + + Four 16-bit components stored in the R, G, B, and A texture + components respectively. + + + A single 16-bit component for depth information. + + + 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 + + + + + the #GstGLFormat necessary for holding the data in @plane of @vinfo + + + + + a #GstGLContext + + + + a #GstVideoInfo + + + + the plane number in @vinfo + + + + + + + + Whether @format is supported by @context based on the OpenGL API, + version, or available OpenGL extension/s. + + + + + a #GstGLContext + + + + the #GstGLFormat to check is supported by @context + + + + + + Get the unsized format and type from @format for usage in glReadPixels, +glTex{Sub}Image*, glTexImage* and similar functions. + + + + + + + the sized internal #GstGLFormat + + + + location for the resulting unsized #GstGLFormat + + + + location for the resulting GL type + + + + + + + + the number of bytes the specified @format, @type combination takes +per pixel + + + + + the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc + + + + the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc + + + + + + + A #GstGLFramebuffer represents and holds an OpenGL framebuffer object with +it's associated attachments. + +A #GstGLFramebuffer can be created with gst_gl_framebuffer_new() or +gst_gl_framebuffer_new_with_default_depth() and bound with +gst_gl_framebuffer_bind(). Other resources can be bound with +gst_gl_framebuffer_attach() + +Note: OpenGL framebuffers are not shareable resources so cannot be used +between multiple OpenGL contexts. + + + This function will internally create an OpenGL framebuffer object and must +be called on @context's OpenGL thread. + + + a new #GstGLFramebuffer + + + + + a #GstGLContext + + + + + + This function will internally create an OpenGL framebuffer object and must +be called on @context's OpenGL thread. + + + a new #GstGLFramebuffer with a depth buffer of @width and @height + + + + + a #GstGLContext + + + + width for the depth buffer + + + + for the depth buffer + + + + + + attach @mem to @attachment_point + +Must be called with the same OpenGL context current that @fb was created +with. + + + + + + + a #GstGLFramebuffer + + + + the OpenGL attachment point to bind @mem to + + + + the memory object to bind to @attachment_point + + + + + + Bind @fb into the current thread + +Must be called with the same OpenGL context current that @fb was created +with. + + + + + + + a #GstGLFramebuffer + + + + + + Perform the steps necessary to have the output of a glDraw* command in +@func update the contents of @mem. + +Note: this function does not map @mem for writing with OpenGL and that must +be done manually by the caller using any of the mapping functions such as +gst_memory_map() with the map flags %GST_MAP_WRITE | %GST_MAP_GL. + +Must be called with the same OpenGL context current that @fb was created +with. + + + the result of executing @func + + + + + a #GstGLFramebuffer + + + + the #GstGLMemory to draw to + + + + the function to run + + + + data to pass to @func + + + + + + Retrieve the effective dimensions from the current attachments attached to +@fb. + + + + + + + a #GstGLFramebuffer + + + + output width + + + + output height + + + + + + + + the OpenGL id for @fb + + + + + a #GstGLFramebuffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opaque #GstGLFramebufferClass struct + + + + + + + + + + + + callback definition for operating through a #GstGLFramebuffer object + + + + + + + user data + + + + + + + + + Structure containing function pointers to OpenGL functions. + +Each field is named exactly the same as the OpenGL function without the +`gl` prefix. + + + + GstGLMemory is a #GstGLBaseMemory subclass providing support for the mapping of +OpenGL textures. + +#GstGLMemory is created or wrapped through gst_gl_base_memory_alloc() +with #GstGLVideoAllocationParams. + +Data is uploaded or downloaded from the GPU as is necessary. + +The #GstCaps that is used for #GstGLMemory based buffers should contain +the %GST_CAPS_FEATURE_MEMORY_GL_MEMORY as a #GstCapsFeatures and should +contain a 'texture-target' field with one of the #GstGLTextureTarget values +as a string, i.e. some combination of 'texture-target=(string){2D, +rectangle, external-oes}'. + + + the parent #GstGLBaseMemory object + + + + the GL texture id for this memory + + + + the GL texture target for this memory + + + + the texture type + + + + the texture's #GstVideoInfo + + + + data alignment for system memory mapping + + + + data plane in @info + + + + GL shader scaling parameters for @valign and/or width/height + + + + + + + + + + + + + + + + + + + + Copies @gl_mem into the texture specified by @tex_id. The format of @tex_id +is specified by @tex_format, @width and @height. + + + Whether the copy succeeded + + + + + a #GstGLMemory + + + + OpenGL texture id + + + + the #GstGLTextureTarget + + + + the #GstGLFormat + + + + width of @tex_id + + + + height of @tex_id + + + + + + Copies the texture in #GstGLMemory into the texture specified by @tex_id, +@out_target, @out_tex_format, @out_width and @out_height. + + + whether the copy succeeded. + + + + + the source #GstGLMemory + + + + the destination texture id + + + + the destination #GstGLTextureTarget + + + + the destination #GstGLFormat + + + + the destination width + + + + the destination height + + + + + + + + the #GstGLFormat of @gl_mem + + + + + a #GstGLMemory + + + + + + + + the texture height of @gl_mem + + + + + a #GstGLMemory + + + + + + + + the OpenGL texture handle of @gl_mem + + + + + a #GstGLMemory + + + + + + + + the #GstGLTextureTarget of @gl_mem + + + + + a #GstGLMemory + + + + + + + + the texture width of @gl_mem + + + + + a #GstGLMemory + + + + + + Initializes @mem with the required parameters. @info is assumed to have +already have been modified with gst_video_info_align(). + + + + + + + the #GstGLBaseMemory to initialize + + + + the #GstAllocator to initialize with + + + + the parent #GstMemory to initialize with + + + + the #GstGLContext to initialize with + + + + the #GstGLTextureTarget for this #GstGLMemory + + + + the #GstGLFormat for this #GstGLMemory + + + + the @GstAllocationParams to initialize with + + + + the #GstVideoInfo for this #GstGLMemory + + + + the plane number (starting from 0) for this #GstGLMemory + + + + optional #GstVideoAlignment parameters + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + Reads the texture in #GstGLMemory into @write_pointer if no buffer is bound +to `GL_PIXEL_PACK_BUFFER`. Otherwise @write_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. + + + whether theread operation succeeded + + + + + a #GstGLMemory + + + + the data pointer to pass to glReadPixels + + + + + + Reads the texture in @read_pointer into @gl_mem. + +See gst_gl_memory_read_pixels() for what @read_pointer signifies. + + + + + + + a #GstGLMemory + + + + the data pointer to pass to glTexSubImage + + + + + + Initializes the GL Base Texture allocator. It is safe to call this function +multiple times. This must be called before any other GstGLMemory operation. + + + + + + + + + whether the buffer was correctly setup + + + + + the @GstGLMemoryAllocator to allocate from + + + + a #GstBuffer to setup + + + + the #GstGLVideoAllocationParams to allocate with + + + + + a list of #GstGLFormat's to allocate with. + + + + + + + a list of wrapped data pointers + + + + + + the number of elements in @tex_formats and @wrapped_data + + + + + + + Opaque #GstGLMemoryAllocator struct + + + + + the default #GstGLMemoryAllocator supported by + @context + + + + + a #GstGLContext + + + + + + + + + + + + + + + + + + + + provide a custom map implementation + + + + provide a custom copy implementation + + + + provide a custom unmap implementation + + + + + + + + + + #GstGLMemoryPBO is created or wrapped through gst_gl_base_memory_alloc() +with #GstGLVideoAllocationParams. + +Data is uploaded or downloaded from the GPU as is necessary. + + + + + + + + + + + + + + Copies @gl_mem into the texture specified by @tex_id. The format of @tex_id +is specified by @tex_format, @width and @height. + +If @respecify is %TRUE, then the copy is performed in terms of the texture +data. This is useful for splitting RGBA textures into RG or R textures or +vice versa. The requirement for this to succeed is that the backing texture +data must be the same size, i.e. say a RGBA8 texture is converted into a RG8 +texture, then the RG texture must have twice as many pixels available for +output as the RGBA texture. + +Otherwise, if @respecify is %FALSE, then the copy is performed per texel +using glCopyTexImage. See the OpenGL specification for details on the +mappings between texture formats. + + + Whether the copy succeeded + + + + + a #GstGLMemoryPBO + + + + the destination texture id + + + + the destination #GstGLTextureTarget + + + + the destination #GstGLFormat + + + + width of @tex_id + + + + height of @tex_id + + + + stride of the backing texture data + + + + whether to copy the data or copy per texel + + + + + + Transfer the texture data from the texture into the PBO if necessary. + + + + + + + a #GstGLMemoryPBO + + + + + + Transfer the texture data from the PBO into the texture if necessary. + + + + + + + a #GstGLMemoryPBO + + + + + + + + + + + + + Opaque #GstGLMemoryPBOAllocator struct + + + + + + + + + + + + Only contains private data + + + + + + + + + + + + Opaque #GstGLOverlayCompositor object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no platform + + + the EGL platform used primarily with the X11, wayland + and android window systems as well as on embedded Linux + + + the GLX platform used primarily with the X11 window system + + + the WGL platform used primarily on Windows + + + the CGL platform used primarily on OS X + + + the EAGL platform used primarily on iOS + + + any OpenGL platform + + + + + The #GstGLPlatform represented by @platform_s + + + + + a space separated string of OpenGL platformss + + + + + + + + A space separated string of the OpenGL platforms enabled in @platform + + + + + a #GstGLPlatform to stringify + + + + + + + A #GstGLQuery represents and holds an OpenGL query object. Various types of +queries can be run or counters retrieved. + + + + + + + + + + + + + + + + + + + + + + + + + + Record the result of a counter + + + + + + + a #GstGLQuery + + + + + + End counting the query + + + + + + + a #GstGLQuery + + + + + + Frees a #GstGLQuery + + + + + + + a #GstGLQuery + + + + + + + + + + + + a #GstGLQuery + + + + a #GstGLContext + + + + the #GstGLQueryType + + + + + + + + the result of the query + + + + + a #GstGLQuery + + + + + + Start counting the query + + + + + + + a #GstGLQuery + + + + + + Free any dynamically allocated resources + + + + + + + a #GstGLQuery + + + + + + Performs a GST_QUERY_CONTEXT query of type "gst.gl.local_context" on all +#GstPads in @element of @direction for the local OpenGL context used by +GStreamer elements. + + + whether @context_ptr contains a #GstGLContext + + + + + a #GstElement to query from + + + + the #GstPadDirection to query + + + + location containing the current and/or resulting + #GstGLContext + + + + + + Free with gst_gl_query_free() + + + a new #GstGLQuery + + + + + a #GstGLContext + + + + the #GstGLQueryType to create + + + + + + + + no query + + + query the time elapsed + + + query the current time + + + + GstGLRenderbuffer is a #GstGLBaseMemory subclass providing support for +OpenGL renderbuffers. + +#GstGLRenderbuffer is created or wrapped through gst_gl_base_memory_alloc() +with #GstGLRenderbufferAllocationParams. + + + + + + the GL texture id for this memory + + + + the texture type + + + + the width + + + + the height + + + + + + + + + + + + + + the #GstGLFormat of @gl_mem + + + + + a #GstGLRenderbuffer + + + + + + + + the configured height of @gl_mem + + + + + a #GstGLRenderbuffer + + + + + + + + the OpenGL renderbuffer handle of @gl_mem + + + + + a #GstGLRenderbuffer + + + + + + + + the configured width of @gl_mem + + + + + a #GstGLRenderbuffer + + + + + + Initializes the GL Base Texture allocator. It is safe to call this function +multiple times. This must be called before any other GstGLRenderbuffer operation. + + + + + + + + Allocation parameters + + + + + + the #GstGLFormat + + + + the width + + + + the height + + + + + + + + + + + a new #GstGLRenderbufferAllocationParams for allocating #GstGLRenderbuffer's + + + + + a #GstGLContext + + + + the #GstAllocationParams for sysmem mappings of the texture + + + + the #GstGLFormat for the created textures + + + + the width of the renderbuffer + + + + the height of the renderbuffer + + + + + + + + a new #GstGLRenderbufferAllocationParams for wrapping @gl_handle as a + renderbuffer + + + + + a #GstGLContext + + + + the #GstAllocationParams for @tex_id + + + + the #GstGLFormat for @tex_id + + + + the width of the renderbuffer + + + + the height of the renderbuffer + + + + the GL handle to wrap + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + + Opaque #GstGLRenderbufferAllocator struct + + + + + + + + + + + + The #GstGLRenderbufferAllocatorClass only contains private data + + + + + + + + + + + + Compilation stage that caused an error + + Compilation error occurred + + + Link error occurred + + + General program error occurred + + + + the quark used for GstGLSL in #GError's + + + + + + GLSL profiles + + no profile supported/available + + + OpenGL|ES profile + + + OpenGL core profile + + + OpenGL compatibility profile + + + any OpenGL/OpenGL|ES profile + + + + + the #GstGLSLProfile of @string or %GST_GLSL_PROFILE_NONE on error + + + + + a GLSL version string + + + + + + + + the name for @profile or %NULL on error + + + + + a #GstGLSLProfile + + + + + + + #GstGLSLStage holds and represents a single OpenGL shader stage. + + + + + a new #GstGLSLStage of the specified @type + + + + + a #GstGLContext + + + + the GL enum shader stage type + + + + + + + + a new #GstGLSLStage with the default fragment shader + + + + + a #GstGLContext + + + + + + + + a new #GstGLSLStage with the default vertex shader + + + + + a #GstGLContext + + + + + + + + a new #GstGLSLStage of the specified @type + + + + + a #GstGLContext + + + + the GL enum shader stage type + + + + the #GstGLSLVersion + + + + the #GstGLSLProfile + + + + a shader string + + + + + + + + a new #GstGLSLStage of the specified @type + + + + + a #GstGLContext + + + + the GL enum shader stage type + + + + the #GstGLSLVersion + + + + the #GstGLSLProfile + + + + the number of strings in @str + + + + + an array of strings concatted together to produce a shader + + + + + + + + + + whether the compilation succeeded + + + + + a #GstGLSLStage + + + + + + + + The GL handle for this shader stage + + + + + a #GstGLSLStage + + + + + + + + The GLSL profile for the current shader stage + + + + + a #GstGLSLStage + + + + + + + + The GL shader type for this shader stage + + + + + a #GstGLSLStage + + + + + + + + The GLSL version for the current shader stage + + + + + a #GstGLSLStage + + + + + + Replaces the current shader string with @str. + + + + + + + a #GstGLSLStage + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + number of strings in @str + + + + a GLSL shader string + + + + + + + + + + + + + + + + + + + + + + + Opaque #GstGLSLStageClass struct + + + + + + + + + + + + + + + GLSL version list + + no version + + + version 100 (only valid for ES) + + + version 110 (only valid for compatibility desktop GL) + + + version 120 (only valid for compatibility desktop GL) + + + version 130 (only valid for compatibility desktop GL) + + + version 140 (only valid for compatibility desktop GL) + + + version 150 (valid for compatibility/core desktop GL) + + + version 300 (only valid for ES) + + + version 310 (only valid for ES) + + + version 320 (only valid for ES) + + + version 330 (valid for compatibility/core desktop GL) + + + version 400 (valid for compatibility/core desktop GL) + + + version 410 (valid for compatibility/core desktop GL) + + + version 420 (valid for compatibility/core desktop GL) + + + version 430 (valid for compatibility/core desktop GL) + + + version 440 (valid for compatibility/core desktop GL) + + + version 450 (valid for compatibility/core desktop GL) + + + + + the #GstGLSLVersion of @string or %GST_GLSL_VERSION_NONE on error + + + + + a GLSL version string + + + + + + 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 + + + + + a valid GLSL `#version` string + + + + resulting #GstGLSLVersion + + + + resulting #GstGLSLVersion + + + + + + + + the combined GLSL `#version` string for @version and @profile + + + + + a #GstGLSLVersion + + + + a #GstGLSLVersion + + + + + + + + the name of @version or %NULL on error + + + + + a #GstGLSLVersion + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: must be called in the GL thread + + + a new empty @shader + + + + + a #GstGLContext + + + + + + Note: must be called in the GL thread + + + a default @shader or %NULL on failure + + + + + a #GstGLContext + + + + + + Each stage will attempt to be compiled and attached to @shader. Then +the shader will be linked. On error, %NULL will be returned and @error will +contain the details of the error. + +Note: must be called in the GL thread + + + a new @shader with the specified stages. + + + + + a #GstGLContext + + + + a #GError + + + + a NULL terminated list of #GstGLSLStage's + + + + + + Each stage will attempt to be compiled and attached to @shader. On error, +%NULL will be returned and @error will contain the details of the error. + +Note: must be called in the GL thread + + + a new @shader with the specified stages. + + + + + a #GstGLContext + + + + a #GError + + + + a NULL terminated list of #GstGLSLStage's + + + + + + + + a passthrough shader string for copying an input external-oes + texture to the output + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + + + a passthrough shader string for copying an input texture to + the output + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + Generates a shader string that defines the precision of float types in +GLSL shaders. This is particularly needed for fragment shaders in a +GLSL ES context where there is no default precision specified. + +Practically, this will return the string 'precision mediump float' +or 'precision highp float' depending on if high precision floats are +determined to be supported. + + + a shader string defining the precision of float types based on + @context, @version and @profile + + + + + a #GstGLContext + + + + a #GstGLSLVersion + + + + a #GstGLSLProfile + + + + + + Attaches @stage to @shader. @stage must have been successfully compiled +with gst_glsl_stage_compile(). + +Note: must be called in the GL thread + + + whether @stage could be attached to @shader + + + + + a #GstGLShader + + + + a #GstGLSLStage to attach + + + + + + Attaches @stage to @shader. @stage must have been successfully compiled +with gst_glsl_stage_compile(). + +Note: must be called in the GL thread + + + whether @stage could be attached to @shader + + + + + a #GstGLShader + + + + a #GstGLSLStage to attach + + + + + + Bind attribute @name to the specified location @index using +`glBindAttributeLocation()`. + + + + + + + a #GstGLShader + + + + attribute index to set + + + + name of the attribute + + + + + + Bind attribute @name to the specified location @index using +`glBindFragDataLocation()`. + + + + + + + a #GstGLShader + + + + attribute index to set + + + + name of the attribute + + + + + + Compiles @stage and attaches it to @shader. + +Note: must be called in the GL thread + + + whether @stage could be compiled and attached to @shader + + + + + a #GstGLShader + + + + a #GstGLSLStage to attach + + + + + + Detaches @stage from @shader. @stage must have been successfully attached +to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked(). + +Note: must be called in the GL thread + + + + + + + a #GstGLShader + + + + a #GstGLSLStage to attach + + + + + + Detaches @stage from @shader. @stage must have been successfully attached +to @shader with gst_gl_shader_attach() or gst_gl_shader_attach_unlocked(). + +Note: must be called in the GL thread + + + + + + + a #GstGLShader + + + + a #GstGLSLStage to attach + + + + + + + + the attribute index for @name in @shader or -1 on failure + + + + + a #GstGLShader + + + + name of the attribute + + + + + + + + the GL program handle for this shader + + + + + a #GstGLShader + + + + + + Note: must be called in the GL thread + + + whether @shader has been successfully linked + + + + + a #GstGLShader + + + + + + Links the current list of #GstGLSLStage's in @shader. + +Note: must be called in the GL thread + + + whether @shader could be linked together. + + + + + a #GstGLShader + + + + + + Releases the shader and stages. + +Note: must be called in the GL thread + + + + + + + a #GstGLShader + + + + + + Releases the shader and stages. + +Note: must be called in the GL thread + + + + + + + a #GstGLShader + + + + + + Perform `glUniform1f()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + value to set + + + + + + Perform `glUniform1fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform1i()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + value to set + + + + + + Perform `glUniform1iv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform2f()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + + + Perform `glUniform2fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform2i()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + + + Perform `glUniform2iv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform3f()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + third value to set + + + + + + Perform `glUniform3fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform3i()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + third value to set + + + + + + Perform `glUniform3iv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform4f()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + third value to set + + + + fourth value to set + + + + + + Perform `glUniform4fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniform4i()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + first value to set + + + + second value to set + + + + third value to set + + + + fourth value to set + + + + + + Perform `glUniform4iv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of values to set + + + + values to set + + + + + + + + Perform `glUniformMatrix2fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 2x2 matrices to set + + + + transpose the matrix + + + + matrix to set + + + + + + Perform `glUniformMatrix2x3fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 2x3 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix2x4fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 2x4 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix3fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 3x3 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix3x2fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 3x2 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix3x4fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 3x4 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix4fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 4x4 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix4x2fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 4x2 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Perform `glUniformMatrix4x3fv()` for @name on @shader + + + + + + + a #GstGLShader + + + + name of the uniform + + + + number of 4x3 matrices to set + + + + transpose the matrix + + + + values to set + + + + + + Mark's @shader as being used for the next GL draw command. + +Note: must be called in the GL thread and @shader must have been linked. + + + + + + + a #GstGLShader + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Output anaglyph type to generate when downmixing to mono + + Dubois optimised Green-Magenta anaglyph + + + Dubois optimised Red-Cyan anaglyph + + + Dubois optimised Amber-Blue anaglyph + + + + #GstGLSyncMeta provides the ability to synchronize the OpenGL command stream +with the CPU or with other OpenGL contexts. + + + the parent #GstMeta + + + + the #GstGLContext used to allocate the meta + + + + a custom data pointer for the implementation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set a sync point to possibly wait on at a later time. + + + + + + + a #GstGLSyncMeta + + + + a #GstGLContext + + + + + + Insert a wait into @context's command stream ensuring all previous OpenGL +commands before @sync_meta have completed. + + + + + + + a #GstGLSyncMeta + + + + a #GstGLContext + + + + + + Perform a wait so that the sync point has passed from the CPU's perspective +What that means, is that all GL operations changing CPU-visible data before +the sync point are now visible. + + + + + + + a #GstGLSyncMeta + + + + a #GstGLContext + + + + + + + + + + + + + The OpenGL texture target that an OpenGL texture can be bound to. The +gst_gl_value_set_texture_target_from_mask(), +gst_gl_value_get_texture_target_mask(), and +gst_gl_value_set_texture_target() functions can be used for handling texture +targets with #GValue's when e.g. dealing with #GstCaps. + + no texture target + + + 2D texture target (`GL_TEXTURE_2D`) + + + rectangle texture target + (`GL_TEXTURE_RECTANGLE`) + + + external oes texture target + (`GL_TEXTURE_EXTERNAL_OES`) + + + + + the #GstGLTextureTarget that's equiavalant to @target or + %GST_GL_TEXTURE_TARGET_NONE + + + + + an OpenGL texture binding target + + + + + + + + the #GstGLTextureTarget represented by @str or + %GST_GL_TEXTURE_TARGET_NONE + + + + + a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values + + + + + + + + a string representing the @GstBufferPoolOption specified by @target + + + + + a #GstGLTextureTarget + + + + + + + + the OpenGL value for binding the @target with glBindTexture() and + similar functions or 0 + + + + + a #GstGLTextureTarget + + + + + + + + the stringified version of @target or %NULL + + + + + a #GstGLTextureTarget + + + + + + + #GstGLUpload is an object that uploads data from system memory into GL textures. + +A #GstGLUpload can be created with gst_gl_upload_new() + + + + + a new #GstGLUpload object + + + + + a #GstGLContext + + + + + + + + + + + + + + + + + + a #GstGLUpload + + + + the input #GstCaps + + + + the output #GstCaps + + + + + + Uploads @buffer using the transformation specified by +gst_gl_upload_set_caps() creating a new #GstBuffer in @outbuf_ptr. + + + whether the upload was successful + + + + + a #GstGLUpload + + + + input #GstBuffer + + + + resulting #GstBuffer + + + + + + Adds the required allocation parameters to support uploading. + + + + + + + a #GstGLUpload + + + + a #GstQuery from a decide allocation + + + + the proposed allocation query + + + + + + Initializes @upload with the information required for upload. + + + whether @in_caps and @out_caps could be set on @upload + + + + + a #GstGLUpload + + + + input #GstCaps + + + + output #GstCaps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstGLUploadClass struct only contains private data + + + + + + + + + + + + + + + + No further processing required + + + An unspecified error occurred + + + The configuration is unsupported. + + + This element requires a reconfiguration. + + + private return value. + + + + + + the parent #GstGLAllocationParams structure + + + + the #GstVideoInfo to allocate + + + + the video plane index to allocate + + + + the #GstVideoAlignment to align the system representation to (may be %NULL for the default) + + + + the #GstGLTextureTarget to allocate + + + + the #GstGLFormat to allocate + + + + + + + + + + + a new #GstGLVideoAllocationParams for allocating #GstGLMemory's + + + + + a #GstGLContext + + + + the #GstAllocationParams for sysmem mappings of the texture + + + + the #GstVideoInfo for the texture + + + + the video plane of @v_info to allocate + + + + any #GstVideoAlignment applied to symem mappings of the texture + + + + the #GstGLTextureTarget for the created textures + + + + the #GstGLFormat for the created textures + + + + + + + + a new #GstGLVideoAllocationParams for wrapping @wrapped_data + + + + + a #GstGLContext + + + + the #GstAllocationParams for @wrapped_data + + + + the #GstVideoInfo for @wrapped_data + + + + the video plane @wrapped_data represents + + + + any #GstVideoAlignment applied to symem mappings of @wrapped_data + + + + the #GstGLTextureTarget for @wrapped_data + + + + the #GstGLFormat for @wrapped_data + + + + the data pointer to wrap + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + @gl_handle is defined by the specific OpenGL handle being wrapped +For #GstGLMemory and #GstGLMemoryPBO it is an OpenGL texture id. +Other memory types may define it to require a different type of parameter. + + + a new #GstGLVideoAllocationParams for wrapping @gl_handle + + + + + a #GstGLContext + + + + the #GstAllocationParams for @tex_id + + + + the #GstVideoInfo for @tex_id + + + + the video plane @tex_id represents + + + + any #GstVideoAlignment applied to symem mappings of @tex_id + + + + the #GstGLTextureTarget for @tex_id + + + + the #GstGLFormat for @tex_id + + + + the GL handle to wrap + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + + + a new #GstGLVideoAllocationParams for wrapping @tex_id + + + + + a #GstGLContext + + + + the #GstAllocationParams for @tex_id + + + + the #GstVideoInfo for @tex_id + + + + the video plane @tex_id represents + + + + any #GstVideoAlignment applied to symem mappings of @tex_id + + + + the #GstGLTextureTarget for @tex_id + + + + the #GstGLFormat for @tex_id + + + + the GL texture to wrap + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + Copy and set any dynamically allocated resources in @dest_vid. Intended +for subclass usage only to chain up at the end of a subclass copy function. + + + + + + + source #GstGLVideoAllocationParams to copy from + + + + destination #GstGLVideoAllocationParams to copy into + + + + + + Unset and free any dynamically allocated resources. Intended for subclass +usage only to chain up at the end of a subclass free function. + + + + + + + a #GstGLVideoAllocationParams + + + + + + Intended for subclass usage + + + initializes @params with the parameters specified + + + + + a #GstGLVideoAllocationParams to initialize + + + + the size of the struct in @params + + + + some allocation flags + + + + a copy function + + + + a free function + + + + a #GstGLContext + + + + the #GstAllocationParams for @wrapped_data + + + + the #GstVideoInfo for @wrapped_data + + + + the video plane @wrapped_data represents + + + + any #GstVideoAlignment applied to symem mappings of @wrapped_data + + + + the #GstGLTextureTarget + + + + the #GstGLFormat + + + + the optional data pointer to wrap + + + + the optional OpenGL handle to wrap or 0 + + + + user data to call @notify with + + + + a #GDestroyNotify + + + + + + + Convert stereoscopic/multiview video using fragment shaders. + + + + + a new #GstGLViewConvert + + + + + Provides an implementation of #GstBaseTransformClass.fixate_caps() + + + the fixated #GstCaps + + + + + a #GstGLViewConvert + + + + a #GstPadDirection + + + + the #GstCaps of @direction + + + + the #GstCaps to fixate + + + + + + Retrieve the processed output buffer placing the output in @outbuf_ptr. + + + a #GstFlowReturn + + + + + a #GstGLViewConvert + + + + a #GstBuffer + + + + + + Converts the data contained by @inbuf using the formats specified by the +#GstCaps passed to gst_gl_view_convert_set_caps() + + + a converted #GstBuffer or %NULL + + + + + a #GstGLViewConvert + + + + the #GstGLMemory filled #GstBuffer to convert + + + + + + Reset @viewconvert to the default state. Further operation will require +setting the caps with gst_gl_view_convert_set_caps(). + + + + + + + a #GstGLViewConvert + + + + + + Initializes @viewconvert with the information required for conversion. + + + + + + + a #GstGLViewConvert + + + + input #GstCaps + + + + output #GstCaps + + + + + + Set @context on @viewconvert + + + + + + + a #GstGLViewConvert + + + + the #GstGLContext to set + + + + + + Submit @input to be processed by @viewconvert + + + a #GstFlowReturn + + + + + a #GstGLViewConvert + + + + true if we have a discontinuity + + + + a #GstBuffer + + + + + + Provides an implementation of #GstBaseTransformClass.transform_caps() + + + the converted #GstCaps + + + + + a #GstGLViewConvert + + + + a #GstPadDirection + + + + the #GstCaps to transform + + + + a set of filter #GstCaps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opaque #GstGLViewConvertClass struct + + + + + + + + + + + + + + + GstGLWindow represents a window that elements can render into. A window can +either be a user visible window (onscreen) or hidden (offscreen). + + + + + a new #GstGLWindow using @display's connection + + + + + a #GstGLDisplay + + + + + + + + + + + + + + + + + Checks if @window controls the GL viewport. + + + %TRUE if @window controls the GL viewport, otherwise %FALSE + + + + + a #GstGLWindow + + + + + + Redraw the window contents. Implementations should invoke the draw callback. + + + + + + + a #GstGLWindow + + + + + + + + the windowing system display handle for this @window + + + + + a #GstGLWindow + + + + + + + + the window handle we are currently rendering into + + + + + a #GstGLWindow + + + + + + Tell a @window that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window systems +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the @window. + + + + + + + a #GstGLWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + Query whether @window has output surface or not + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + + + + + + + + + + + + + + Queue resizing of @window. + + + + + + + a #GstGLWindow + + + + + + Quit the runloop's execution. + + + + + + + a #GstGLWindow + + + + + + Start the execution of the runloop. + + + + + + + a #GstGLWindow + + + + + + Invoke @callback with data on the window thread. @callback is guaranteed to +have executed when this function returns. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + + + Invoke @callback with @data on the window thread. The callback may not +have been executed when this function returns. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed anymore + + + + + + Set the preferred width and height of the window. Implementations are free +to ignore this information. + + + + + + + a #GstGLWindow + + + + new preferred width + + + + new preferred height + + + + + + Tell a @window that it should render into a specific region of the window +according to the #GstVideoOverlay interface. + + + whether the specified region could be set + + + + + a #GstGLWindow + + + + x position + + + + y position + + + + width + + + + height + + + + + + Sets the window that this @window should render into. Some implementations +require this to be called with a valid handle before drawing can commence. + + + + + + + a #GstGLWindow + + + + handle to the window + + + + + + Present the window to the screen. + + + + + + + a #GstGLWindow + + + + + + Checks if @window controls the GL viewport. + + + %TRUE if @window controls the GL viewport, otherwise %FALSE + + + + + a #GstGLWindow + + + + + + Redraw the window contents. Implementations should invoke the draw callback. + + + + + + + a #GstGLWindow + + + + + + + + the #GstGLContext associated with this @window + + + + + a #GstGLWindow + + + + + + + + the windowing system display handle for this @window + + + + + a #GstGLWindow + + + + + + + + + + + + a #GstGLWindow + + + + resulting surface width + + + + resulting surface height + + + + + + + + the window handle we are currently rendering into + + + + + a #GstGLWindow + + + + + + Tell a @window that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window systems +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the @window. + + + + + + + a #GstGLWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + Query whether @window has output surface or not + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + + + Queue resizing of @window. + + + + + + + a #GstGLWindow + + + + + + Quit the runloop's execution. + + + + + + + a #GstGLWindow + + + + + + Resize @window to the given @width and @height. + + + + + + + a #GstGLWindow + + + + new width + + + + new height + + + + + + Start the execution of the runloop. + + + + + + + a #GstGLWindow + + + + + + + + + + + + + + + + + + + + + + + Invoke @callback with data on the window thread. @callback is guaranteed to +have executed when this function returns. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + + + Invoke @callback with @data on the window thread. The callback may not +have been executed when this function returns. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed anymore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Notify a @window about a scroll event. A scroll signal holding the event +coordinates will be emitted. + + + + + + + a #GstGLWindow + + + + x position of the mouse cursor + + + + y position of the mouse cursor + + + + the x offset of the scroll event + + + + the y offset of the scroll event + + + + + + Sets the callback called when the window is about to close. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed any more + + + + + + Sets the draw callback called every time gst_gl_window_draw() is called + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed any more + + + + + + Set the preferred width and height of the window. Implementations are free +to ignore this information. + + + + + + + a #GstGLWindow + + + + new preferred width + + + + new preferred height + + + + + + Tell a @window that it should render into a specific region of the window +according to the #GstVideoOverlay interface. + + + whether the specified region could be set + + + + + a #GstGLWindow + + + + x position + + + + y position + + + + width + + + + height + + + + + + Sets the resize callback called every time a resize of the window occurs. + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed any more + + + + + + Sets the window that this @window should render into. Some implementations +require this to be called with a valid handle before drawing can commence. + + + + + + + a #GstGLWindow + + + + handle to the window + + + + + + Present the window to the screen. + + + + + + + a #GstGLWindow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Will be emitted when a key event is received by the GstGLwindow. + + + + + + the name of the event + + + + the id of the key pressed + + + + + + Will be emitted when a mouse event is received by the GstGLwindow. + + + + + + the name of the event + + + + the id of the button + + + + the x coordinate of the mouse event + + + + the y coordinate of the mouse event + + + + + + 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 + + + + + + Will be emitted when the window handle has been set into the native +implementation, but before the context is re-activated. By using this +signal, elements can refresh associated resource without relying on +direct handle comparision. + + + + + + + + + + + + + + + + + + + + Parent class + + + + + + + the windowing system display handle for this @window + + + + + a #GstGLWindow + + + + + + + + + + + + + + a #GstGLWindow + + + + handle to the window + + + + + + + + + + the window handle we are currently rendering into + + + + + a #GstGLWindow + + + + + + + + + + + + + + a #GstGLWindow + + + + + + + + + + + + + + a #GstGLWindow + + + + + + + + + + + + + + a #GstGLWindow + + + + + + + + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + + + + + + + + + + + a #GstGLWindow + + + + function to invoke + + + + data to invoke @callback with + + + + called when @data is not needed anymore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstGLWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + + + + + + + a #GstGLWindow + + + + new preferred width + + + + new preferred height + + + + + + + + + + + + + + a #GstGLWindow + + + + + + + + + + whether the specified region could be set + + + + + a #GstGLWindow + + + + x position + + + + y position + + + + width + + + + height + + + + + + + + + + + + + + a #GstGLWindow + + + + + + + + + + %TRUE if @window controls the GL viewport, otherwise %FALSE + + + + + a #GstGLWindow + + + + + + + + + + %TRUE if @window has useable output surface + + + + + a #GstGLWindow + + + + + + + + + + + + + + failed for a unspecified reason + + + the implementation is too old + + + no such resource was found + + + + the quark used for #GstGLWindow in #GError's + + + + + + + + + + + + + + + + + + + + + + + + + + GL Allocation flag indicating that the implementation should allocate the +necessary resources. + + + + + GL allocation flag indicating the allocation of a GL buffer. + + + + + Values >= than #GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_USER can be used for +user-defined purposes. + + + + + GL allocation flag indicating the allocation of 2D video frames + + + + + GL Allocation flag for using the provided GPU handle as storage. + + + + + GL Allocation flag for using the provided system memory data as storage. + + + + + The name for %GST_GL_API_GLES1 used in various places + + + + + The name for %GST_GL_API_GLES2 used in various places + + + + + The name for %GST_GL_API_OPENGL3 used in various places + + + + + The name for %GST_GL_API_OPENGL used in various places + + + + + Stores a debug message in @ad for later output + + + + the #GstGLAsyncDebug to store the message in + + + the #GstDebugCategory to output the message in + + + the #GstDebugLevel + + + a #GObject to associate with the debug message + + + a printf style format string + + + the list of arguments for @format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the GL buffer allocator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the GL buffer allocator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The currently supported formats that can be converted + + + + + The currently supported #GstCaps that can be converted + + + + + Get a reference to the #GType of a particular configuration field. + +e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_GTYPE (CONFIG_ID)` + + + + + + + + Get a reference to the variable name of a particular configuration field. + +e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)` + + + + + + + + The canonical name of a #GstStructure that contains a configuration for a +#GstGLContext. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name used in #GstContext queries for requesting a #GstGLDisplay + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the GL memory allocator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the GL Memory PBO allocator + + + + + + + + + List of video formats that are supported by #GstGLMemory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the GL renderbuffer allocator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String used for %GST_GL_TEXTURE_TARGET_2D in things like caps values + + + + + String used for %GST_GL_TEXTURE_TARGET_EXTERNAL_OES in things like caps values + + + + + String used for %GST_GL_TEXTURE_TARGET_RECTANGLE in things like caps values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cast to the current function type for generic window callbacks + + + + the function to cast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cast to the current function type for window resize callbacks + + + + the function to cast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Flag indicating that we should map the GL object instead of to system memory. + +Combining #GST_MAP_GL with #GST_MAP_WRITE has the same semantics as though +you are writing to OpenGL. Conversely, combining #GST_MAP_GL with +#GST_MAP_READ has the same semantics as though you are reading from OpenGL. + + + + + + + the #GstGLSyncMeta added to #GstBuffer + + + + + a #GstGLContext + + + + a #GstBuffer + + + + + + + + the #GstGLSyncMeta added to #GstBuffer + + + + + a #GstGLContext + + + + a #GstBuffer + + + + sync data to hold + + + + + + + + + + + + + + + the currently set #GstGLAllocationParams or %NULL + + + + + a buffer pool config + + + + + + Sets @params on @config + + + + + + + a buffer pool config + + + + a #GstGLAllocationParams + + + + + + + + Whether @display was in @context + + + + + a #GstContext + + + + resulting #GstGLDisplay + + + + + + Sets @display on @context + + + + + + + a #GstContext + + + + resulting #GstGLDisplay + + + + + + + + The #GstGLAPI represented by @api_s + + + + + a space separated string of OpenGL apis + + + + + + + + A space separated string of the OpenGL api's enabled in @api + + + + + a #GstGLAPI to stringify + + + + + + Free with gst_gl_async_debug_free() + + + a new #GstGLAsyncDebug + + + + + + + a new #GstGLBaseMemory from @allocator with the requested @params. + + + + + a #GstGLBaseMemoryAllocator + + + + the #GstGLAllocationParams to allocate the memory with + + + + + + + the quark used for #GstGLBaseMemory in #GError's + + + + + Initializes the GL Base Memory allocator. It is safe to call this function +multiple times. This must be called before any other GstGLBaseMemory operation. + + + + + + + Initializes the GL Buffer allocator. It is safe to call this function +multiple times. This must be called before any other #GstGLBuffer operation. + + + + + + + + + whether @name is in the space separated list of @ext + + + + + the extension to search for + + + + the list of possible extensions + + + + + + + + a string version of @caveat or %NULL if @caveat does not + exist. + + + + + the #GstGLConfigCaveat + + + + + + + + a string version of @caveat or %NULL if @surface_type does not + exist. + + + + + the #GstGLConfigSurfaceType + + + + + + + the quark used for #GstGLContext in #GError's + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Perform the steps necessary for retrieving a #GstGLDisplay and (optionally) +an application provided #GstGLContext from the surrounding elements or from +the application using the #GstContext mechanism. + +If the contents of @display_ptr or @other_context_ptr are not %NULL, then no +#GstContext query is necessary for #GstGLDisplay or #GstGLContext retrieval +or is performed. + +This performs #GstContext queries (if necessary) for a winsys display +connection with %GST_GL_DISPLAY_CONTEXT_TYPE, "gst.x11.display.handle", and +"GstWaylandDisplayHandleContextType" stopping after the first successful +retrieval. + +This also performs a #GstContext query (if necessary) for an optional +application provided #GstGLContext using the name "gst.gl.app_context". +The returned #GstGLContext will be shared with a GStreamer created OpenGL context. + + + whether a #GstGLDisplay exists in @display_ptr + + + + + the #GstElement running the query + + + + the resulting #GstGLDisplay + + + + the resulting #GstGLContext + + + + + + + + the #GstGLFormat necessary for holding the data in @plane of @vinfo + + + + + a #GstGLContext + + + + a #GstVideoInfo + + + + the plane number in @vinfo + + + + + + + + Whether @format is supported by @context based on the OpenGL API, + version, or available OpenGL extension/s. + + + + + a #GstGLContext + + + + the #GstGLFormat to check is supported by @context + + + + + + Get the unsized format and type from @format for usage in glReadPixels, +glTex{Sub}Image*, glTexImage* and similar functions. + + + + + + + the sized internal #GstGLFormat + + + + location for the resulting unsized #GstGLFormat + + + + location for the resulting GL type + + + + + + + + the number of bytes the specified @format, @type combination takes +per pixel + + + + + the OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc + + + + the OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc + + + + + + Retrieves the stored 4x4 affine transformation matrix stored in @meta in +NDC coordinates. if @meta is NULL, an identity matrix is returned. + +NDC is a left-handed coordinate system +- x - [-1, 1] - +ve X moves right +- y - [-1, 1] - +ve Y moves up +- z - [-1, 1] - +ve Z moves into + + + + + + + a #GstVideoAffineTransformationMeta + + + + result of the 4x4 matrix + + + + + + + + Retrieve the size in bytes of a video plane of data with a certain alignment + + + + + + + a #GstVideoInfo + + + + a #GstVideoAlignment or %NULL + + + + plane number in @info to retrieve the data size of + + + + + + + + difference between the supposed start of the plane from the @info + and where the data from the previous plane ends. + + + + + a #GstVideoInfo + + + + a #GstVideoAlignment or %NULL + + + + plane number in @info to retrieve the data size of + + + + + + + + Whether the @query was successfully responded to from the passed + @display, @context, and @other_context. + + + + + a #GstElement + + + + a #GstQuery of type %GST_QUERY_CONTEXT + + + + a #GstGLDisplay + + + + a #GstGLContext + + + + application provided #GstGLContext + + + + + + Helper function for implementing #GstElementClass.set_context() in +OpenGL capable elements. + +Retrieve's the #GstGLDisplay or #GstGLContext in @context and places the +result in @display or @other_context respectively. + + + whether the @display or @other_context could be set successfully + + + + + a #GstElement + + + + a #GstContext + + + + location of a #GstGLDisplay + + + + location of a #GstGLContext + + + + + + Inserts a marker into a GL debug stream. Requires the 'gldebugmarker' +debug category to be at least %GST_LEVEL_FIXME. + + + + + + + a #GstGLContext + + + + a printf-style format string + + + + arguments form @format + + + + + + Initializes the GL Base Texture allocator. It is safe to call this function +multiple times. This must be called before any other GstGLMemory operation. + + + + + + + + + + + + + + + whether the buffer was correctly setup + + + + + the @GstGLMemoryAllocator to allocate from + + + + a #GstBuffer to setup + + + + the #GstGLVideoAllocationParams to allocate with + + + + + a list of #GstGLFormat's to allocate with. + + + + + + + a list of wrapped data pointers + + + + + + the number of elements in @tex_formats and @wrapped_data + + + + + + Multiplies two 4x4 matrices, @a and @b, and stores the result, a +2-dimensional array of #gfloat, in @result. + + + + + + + a 2-dimensional 4x4 array of #gfloat + + + + + + another 2-dimensional 4x4 array of #gfloat + + + + + + the result of the multiplication + + + + + + + + + + The #GstGLPlatform represented by @platform_s + + + + + a space separated string of OpenGL platformss + + + + + + + + A space separated string of the OpenGL platforms enabled in @platform + + + + + a #GstGLPlatform to stringify + + + + + + + + + + + + + + + + + + + + + + + Performs a GST_QUERY_CONTEXT query of type "gst.gl.local_context" on all +#GstPads in @element of @direction for the local OpenGL context used by +GStreamer elements. + + + whether @context_ptr contains a #GstGLContext + + + + + a #GstElement to query from + + + + the #GstPadDirection to query + + + + location containing the current and/or resulting + #GstGLContext + + + + + + Free with gst_gl_query_free() + + + a new #GstGLQuery + + + + + a #GstGLContext + + + + the #GstGLQueryType to create + + + + + + + + + + + + + + + + + + + + + + + Initializes the GL Base Texture allocator. It is safe to call this function +multiple times. This must be called before any other GstGLRenderbuffer operation. + + + + + + + Set the 4x4 affine transformation matrix stored in @meta from the +NDC coordinates in @matrix. + + + + + + + a #GstVideoAffineTransformationMeta + + + + a 4x4 matrix + + + + + + + + + + the sized internal format specified by @format and @type that can + be used in @context + + + + + a #GstGLContext + + + + an OpenGL format, `GL_RGBA`, `GL_LUMINANCE`, etc + + + + an OpenGL type, `GL_UNSIGNED_BYTE`, `GL_FLOAT`, etc + + + + + + + + + + + + + + + + + + + + + + + + + + the #GstGLTextureTarget that's equiavalant to @target or + %GST_GL_TEXTURE_TARGET_NONE + + + + + an OpenGL texture binding target + + + + + + + + the #GstGLTextureTarget represented by @str or + %GST_GL_TEXTURE_TARGET_NONE + + + + + a string equivalent to one of the GST_GL_TEXTURE_TARGET_*_STR values + + + + + + + + a string representing the @GstBufferPoolOption specified by @target + + + + + a #GstGLTextureTarget + + + + + + + + the OpenGL value for binding the @target with glBindTexture() and + similar functions or 0 + + + + + a #GstGLTextureTarget + + + + + + + + the stringified version of @target or %NULL + + + + + a #GstGLTextureTarget + + + + + + See gst_gl_value_set_texture_target_from_mask() for what entails a mask + + + the mask of #GstGLTextureTarget's in @value or + %GST_GL_TEXTURE_TARGET_NONE on failure + + + + + an initialized #GValue of type G_TYPE_STRING + + + + + + + + whether the @target could be set on @value + + + + + an initialized #GValue of type G_TYPE_STRING + + + + a #GstGLTextureTarget's + + + + + + A mask is a bitwise OR of (1 << target) where target is a valid +#GstGLTextureTarget + + + whether the @target_mask could be set on @value + + + + + an uninitialized #GValue + + + + a bitwise mask of #GstGLTextureTarget's + + + + + + + + The minimum supported #GstGLSLVersion available for @gl_api, @maj and @min + + + + + the #GstGLAPI + + + + the major GL version + + + + the minor GL version + + + + + + + the quark used for #GstGLWindow in #GError's + + + + + + the quark used for GstGLSL in #GError's + + + + + + + the #GstGLSLProfile of @string or %GST_GLSL_PROFILE_NONE on error + + + + + a GLSL version string + + + + + + + + the name for @profile or %NULL on error + + + + + a #GstGLSLProfile + + + + + + 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 + + + + + string to search for a valid `#version` string + + + + resulting #GstGLSLVersion + + + + resulting #GstGLSLProfile + + + + + + + + the #GstGLSLVersion of @string or %GST_GLSL_VERSION_NONE on error + + + + + a GLSL version string + + + + + + 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 + + + + + a valid GLSL `#version` string + + + + resulting #GstGLSLVersion + + + + resulting #GstGLSLVersion + + + + + + + + the combined GLSL `#version` string for @version and @profile + + + + + a #GstGLSLVersion + + + + a #GstGLSLVersion + + + + + + + + the name of @version or %NULL on error + + + + + a #GstGLSLVersion + + + + + + + + whether the memory at @mem is a #GstGLBaseMemory + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstGLBuffer + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstGLMemory + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstGLMemoryPBO + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstGLRenderbuffer + + + + + a #GstMemory + + + + + + diff --git a/girs/GstInsertBin-1.0.gir b/girs/GstInsertBin-1.0.gir new file mode 100644 index 0000000000..a6f3c31b53 --- /dev/null +++ b/girs/GstInsertBin-1.0.gir @@ -0,0 +1,392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This element is a #GstBin that has a single source and sink pad. It allows +the user (the application) to easily add and remove filter-like element +(that has a single source and sink pad), to the pipeline while it is running. +It features a fully asynchronous API inspired by GLib's GAsyncResult based +APIs. + +Each operation (addition or removal) can take a callback, this callback +is guaranteed to be called. Unlike GIO, there is no guarantee about where +this callback will be called from, it could be called before the action +returns or it could be called later from another thread. The signature of +this callback GstInsertBinCallback(). + + + + Creates a new #GstInsertBin + + + The new #GstInsertBin + + + + + The name of the new #GstInsertBin element (or %NULL) + + + + + + This action signal adds the filter like element after any other element +in the bin. + +Same as the #GstInsertBin::append signal. + + + + + + + + + + the #GstElement to add + + + + the callback to call when the element has been + added or not, or %NULL + + + + The data to pass to the callback + + + + + + This action signal adds the filter like element after the @sibling +element in the bin. + +Same as the #GstInsertBin::insert-after signal. + + + + + + + + + + the #GstElement to add + + + + the #GstElement to add @element after + + + + the callback to call when the element has been + added or not, or %NULL + + + + The data to pass to the callback + + + + + + This action signal adds the filter like element before the @sibling +element in the bin. + +Same as the #GstInsertBin::insert-before signal. + + + + + + + + + + the #GstElement to add + + + + the #GstElement to add @element before + + + + the callback to call when the element has been + added or not, or %NULL + + + + The data to pass to the callback + + + + + + This action signal adds the filter like element before any other element +in the bin. + +Same as the #GstInsertBin::prepend signal. + + + + + + + + + + the #GstElement to add + + + + the callback to call when the element has been + added or not, or %NULL + + + + The data to pass to the callback + + + + + + This action signal removed the filter like element from the bin. + +Same as the #GstInsertBin::remove signal. + + + + + + + + + + the #GstElement to remove + + + + the callback to call when the element has been + removed or not, or %NULL + + + + The data to pass to the callback + + + + + + + + + + + + This action signal adds the filter like element after any other element +in the bin. + +Same as gst_insert_bin_append() + + + + + + the callback to call when the element has been added or not, or + %NULL + + + + The data to pass to the callback + + + + The user data of the signal (ignored) + + + + + + This action signal adds the filter like element after the @sibling +element in the bin. +element in the bin. + +Same as gst_insert_bin_insert_after() + + + + + + the #GstElement to add @element after + + + + the callback to call when the element has been added or not, or + %NULL + + + + The data to pass to the callback + + + + The user data of the signal (ignored) + + + + + + This action signal adds the filter like element before the @sibling +element in the bin. + +Same as gst_insert_bin_insert_before() + + + + + + the #GstElement to add @element before + + + + the callback to call when the element has been added or not, or + %NULL + + + + The data to pass to the callback + + + + The user data of the signal (ignored) + + + + + + This action signal adds the filter like element before any other element +in the bin. + +Same as gst_insert_bin_prepend() + + + + + + the callback to call when the element has been added or not, or + %NULL + + + + The data to pass to the callback + + + + The user data of the signal (ignored) + + + + + + This action signal removed the filter like element from the bin. + +Same as gst_insert_bin_remove() + + + + + + the callback to call when the element has been removed or not, +or %NULL + + + + The data to pass to the callback + + + + The user data of the signal (ignored) + + + + + + + This is the prototype of callbacks to be called when the operation completes. +It could be called at any time, including as a re-entrant call while the +operation is requested. + + + + + + + A #GstInsertBin + + + + The #GstElement on which the operation was performed + + + + %TRUE if the operation was successful + + + + The user data passed + + + + + + The object class structure. + + + + + + + + + + diff --git a/girs/GstMpegts-1.0.gir b/girs/GstMpegts-1.0.gir new file mode 100644 index 0000000000..c7ba32c4e5 --- /dev/null +++ b/girs/GstMpegts-1.0.gir @@ -0,0 +1,5425 @@ + + + + + + + + These values correspond to the registered descriptor type from +the various ATSC specifications. + +Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Type of mpeg-ts streams for ATSC, as defined by the ATSC Code Points +Registry. For convenience, some stream types from %GstMpegtsScteStreamType +are also included. + + + DigiCipher II video | Identical to ITU-T Rec. H.262 | ISO/IEC 13818-2 Video + + + ATSC A/53 Audio | AC-3 + + + SCTE-27 Subtitling + + + SCTE-19 Isochronous data | Reserved + + + SCTE-35 Splice Information Table + + + E-AC-3 A/52:2018 + + + E-AC-3 A/107 (ATSC 2.0) + + + + Event Information Table (ATSC) + + + The source id + + + + The protocol version + + + + Events + + + + + + + An ATSC EIT Event + + + The event id + + + + The start time + + + + The etm location + + + + The length in seconds + + + + the titles + + + + + + descriptors + + + + + + + Extended Text Table (ATSC) + + + + + + The protocol version + + + + The etm id + + + + List of texts + + + + + + + Master Guide Table (A65) + + + The protocol version + + + + The numbers of subtables + + + + the tables + + + + + + descriptors + + + + + + + + + + + + + Source from a @GstMpegtsAtscMGT + + + #GstMpegtsAtscMGTTableType + + + + The packet ID + + + + The version number + + + + + + + descriptors + + + + + + + + + + + + + + + + + + + + The ISO639 language code + + + + + + + + + + + + Region Rating Table (A65) + + + The protocol version + + + + the names + + + + + + the number of dimensions defined for this rating table + + + + A set of dimensions + + + + + + descriptors + + + + + + + + + + + + + + + the names + + + + + + whether the ratings represent a graduated scale + + + + the number of values defined for this dimension + + + + set of values + + + + + + + + + + + + + + + the abbreviated ratings + + + + + + the ratings + + + + + + + + + + + + + System Time Table (A65) + + + The protocol version + + + + The system time + + + + The GPS to UTC offset + + + + + + + The day of month + + + + The hour + + + + descriptors + + + + + + The UTC date and time + + + + + + + + + + + + + + + + + + + + + + A string segment + + + The compression type + + + + The mode + + + + The size of compressed data + + + + The compressed data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents both: + Terrestrial Virtual Channel Table (A65) + Cable Virtual Channel Table (A65) + + + The transport stream + + + + The protocol version + + + + sources + + + + + + descriptors + + + + + + + Source from a %GstMpegtsAtscVCT, can be used both for TVCT and CVCT tables + + + The short name of a source + + + + The major channel number + + + + The minor channel number + + + + The modulation mode + + + + The carrier frequency + + + + The transport stream ID + + + + The program number (see #GstMpegtsPatProgram) + + + + The ETM location + + + + is access controlled + + + + is hidden + + + + is path select, CVCT only + + + + is out of band, CVCT only + + + + is hide guide + + + + The service type + + + + The source id + + + + an array of #GstMpegtsDescriptor + + + + + + + Table 110: Audio Preselection Descriptor (ETSI EN 300 468 v1.16.1) + + + 5-bit + + + + 3-bit field + + + + visually impaired + + + + + + + + + + + + + + + + + + + indicates if this PID conveys a complete audio programme + + + + + + + NULL terminated ISO 639 language code. + + + + + + + + DVB Bouquet Association Table (EN 300 468) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cable Delivery System Descriptor (EN 300 468 v.1.13.1) + + + the frequency in Hz (Hertz) + + + + the outer FEC scheme used + + + + Modulation scheme used + + + + Symbol rate (in symbols per second) + + + + inner FEC scheme used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of #GstMpegtsDescriptor + +These values correspond to the registered descriptor type from +the various DVB specifications. + +Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of #GstMpegtsDescriptor + +These values correspond to the registered extended descriptor +type from the various DVB specifications. + +Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the transport id + + + + the original network id + + + + the service id + + + + the type which @linkage_data has + + + + + + + the length for @private_data_bytes + + + + additional data bytes + + + + + + + + + + + + + + + + + The #GstMpegtsDVBLinkageEvent or %NULL if an error happened + + + + + the #GstMpegtsDVBLinkageDescriptor + + + + + + + + an #GstMpegtsDVBLinkageExtendedEvent array or %NULL if an error happened + + + + + + + the #GstMpegtsDVBLinkageDescriptor + + + + + + + + The #GstMpegtsDVBLinkageMobileHandOver or %NULL if an error happened + + + + + the #GstMpegtsDVBLinkageDescriptor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Linkage Type (EN 300 468 v.1.13.1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the id of a service + + + + the type of a service + + + + + The type of service of a channel. + +As specified in Table 87 of ETSI EN 300 468 v1.13.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of teletext page. + +As specified in Table 100 of ETSI EN 300 468 v1.13.1 + + + + + + + + + + + + + + + + the data broadcast id + + + + the component tag + + + + + + + the selector byte field + + + + language of @text + + + + description of data broadcast + + + + + + + + + + + + + + + + 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 mentioned in the documentation. + + + the type of descriptor + + + + the extended type (if @descriptor_tag is 0x7f) + + + + the length of the descriptor content (excluding tag/length field) + + + + the full descriptor data (including tag, extension, length). The first +two bytes are the @tag and @length. + + + + + + + + + Frees @desc + + + + + + + The descriptor to free + + + + + + Parses out a list of audio preselection from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_EXT_DVB_AUDIO_PRESELECTION #GstMpegtsDescriptor + + + + +the list of audio preselection + + + + + + + + Extracts the Conditional Access information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_CA #GstMpegtsDescriptor + + + + the type of CA system used + + + + The PID containing ECM or EMM data + + + + The private data + + + + + + The size of @private_data in bytes + + + + + + Extracts the cable delivery system information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM #GstMpegtsDescriptor + + + + the #GstMpegtsCableDeliverySystemDescriptor to fill + + + + + + Extracts the bouquet name from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + + + + the bouquet name + + + + + + Extracts ca id's from @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_CA_IDENTIFIER #GstMpegtsDescriptor + + + + a list of ca identifier. +Edge entry identifies the CA system. Allocations of the value of this field +are found in http://www.dvbservices.com + + + + + + + + Extracts the DVB component information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_COMPONENT #GstMpegtsDescriptor + + + + the #GstMpegtsComponentDescriptor to fill + + + + + + Extracts the DVB content information from @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_CONTENT #GstMpegtsDescriptor + + + + #GstMpegtsContent + + + + + + + + Parses out the data broadcast from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_DATA_BROADCAST #GstMpegtsDescriptor + + + + #GstMpegtsDataBroadcastDescriptor + + + + + + Parses out the data broadcast id from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_DATA_BROADCAST_ID #GstMpegtsDescriptor + + + + the data broadcast id + + + + the selector bytes, if present + + + + + + the length of @id_selector_bytes + + + + + + Extracts the DVB extended event information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_EXTENDED_EVENT #GstMpegtsDescriptor + + + + the #GstMpegtsExtendedEventDescriptor to fill + + + + + + Parses out a list of frequencies from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_FREQUENCY_LIST #GstMpegtsDescriptor + + + + %FALSE in Hz, %TRUE in kHz + + + + a list of all frequencies in Hz/kHz +depending on @offset + + + + + + + + Extracts the DVB linkage information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_LINKAGE #GstMpegtsDescriptor + + + + the #GstMpegtsDVBLinkageDescriptor to fill + + + + + + Parses out the multilingual bouquet name from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME +#GstMpegtsDescriptor + + + + +a #GstMpegtsDvbMultilingualBouquetNameItem + + + + + + + + Parses out the multilingual component from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT +#GstMpegtsDescriptor + + + + the component tag + + + + +a #GstMpegtsDvbMultilingualComponentItem + + + + + + + + Parses out the multilingual network name from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME +#GstMpegtsDescriptor + + + + +a #GstMpegtsDvbMultilingualNetworkNameItem + + + + + + + + Parses out the multilingual service name from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME +#GstMpegtsDescriptor + + + + +a #GstMpegtsDvbMultilingualServiceNameItem + + + + + + + + Parses out the dvb network name from the @descriptor: + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_NETWORK_NAME #GstMpegtsDescriptor + + + + the extracted name + + + + + + Extracts the DVB parental rating information from @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_PARENTAL_RATING #GstMpegtsDescriptor + + + + +#GstMpegtsDVBParentalRatingItem + + + + + + + + Parses out the private data specifier from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER #GstMpegtsDescriptor + + + + the private data specifier id +registered by http://www.dvbservices.com/ + + + + additional data or NULL + + + + + + length of @private_data + + + + + + Parses out the scrambling mode from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SCRAMBLING #GstMpegtsDescriptor + + + + This 8-bit field identifies the selected +mode of the scrambling algorithm (#GstMpegtsDVBScramblingModeType). +The technical details of the scrambling algorithm are available only +to bona-fide users upon signature of a Non Disclosure Agreement (NDA) +administered by the DVB Common Scrambling Algorithm Custodian. + + + + + + Extracts the dvb service information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SERVICE #GstMpegtsDescriptor + + + + the service type + + + + the service name + + + + the provider name + + + + + + Parses out a list of services from the @descriptor: + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SERVICE_LIST #GstMpegtsDescriptor + + + + +the list of services + + + + + + + + Extracts the DVB short event information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SHORT_EVENT #GstMpegtsDescriptor + + + + the language code + + + + the event name + + + + the event text + + + + + + Extracts the component tag from @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_CONTENT #GstMpegtsDescriptor + + + + the component tag + + + + + + Parses out the stuffing bytes from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_STUFFING #GstMpegtsDescriptor + + + + the stuffing bytes + + + + + + Extracts the DVB subtitling informatio from specific table id in @descriptor. + +Note: Use #gst_tag_get_language_code if you want to get the the +ISO 639-1 language code from the returned ISO 639-2 one. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SUBTITLING #GstMpegtsDescriptor + + + + Table id of the entry to parse + + + + the language code + + + + the type of subtitling + + + + the composition page id + + + + the ancillary page id + + + + + + + + The number of entries in @descriptor + + + + + a %GST_MTS_DESC_DVB_SUBTITLING #GstMpegtsDescriptor + + + + + + Parses out the DVB-T2 delivery system from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM #GstMpegtsDescriptor + + + + #GstMpegtsT2DeliverySystemDescriptor + + + + + + Parses teletext number @idx in the @descriptor. The language is in ISO639 format. + + + FALSE on out-of-bounds and errors + + + + + a %GST_MTS_DESC_DVB_TELETEXT #GstMpegtsDescriptor + + + + The id of the teletext to get + + + + a null-terminated string + + + + #GstMpegtsDVBTeletextType + + + + + + + + + + + + Find the number of teletext entries in @descriptor + + + Number of teletext entries + + + + + a %GST_MTS_DESC_DVB_TELETEXT #GstMpegtsDescriptor + + + + + + Extracts the iso 639-2 language information from @descriptor. + +Note: Use #gst_tag_get_language_code if you want to get the the +ISO 639-1 language code from the returned ISO 639-2 one. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor + + + + the #GstMpegtsISO639LanguageDescriptor to fill + + + + + + Extracts the iso 639-2 language information from specific table id in @descriptor. + +Note: Use #gst_tag_get_language_code if you want to get the the +ISO 639-1 language code from the returned ISO 639-2 one. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor + + + + Table id of the language to parse + + + + 4-byte gchar array to hold the language code + + + + the #GstMpegtsIso639AudioType to set + + + + + + + + The number of languages in @descriptor + + + + + a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor + + + + + + Extracts the logical channels from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegtsDescriptor + + + + the #GstMpegtsLogicalChannelDescriptor to fill + + + + + + Parses out the metadata descriptor from the @descriptor. + +See ISO/IEC 13818-1:2018 Section 2.6.60 and 2.6.61 for details. +metadata_application_format is provided in Table 2-82. metadata_format is +provided in Table 2-85. + + + %TRUE if the parsing worked correctly, else %FALSE. + + + + + a %GST_TYPE_MPEGTS_METADATA_DESCRIPTOR #GstMpegtsDescriptor + + + + #GstMpegtsMetadataDescriptor + + + + + + Extracts the metadata STD descriptor from @descriptor. + +See ISO/IEC 13818-1:2018 Section 2.6.62 and 2.6.63 for details. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_METADATA_STD #GstMpegtsDescriptor +@metadata_input_leak_rate (out): the input leak rate in units of 400bits/sec. +@metadata_buffer_size (out): the buffer size in units of 1024 bytes +@metadata_output_leak_rate (out): the output leak rate in units of 400bits/sec. + + + + + + + + + + + + + + + Extracts the Registration information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_REGISTRATION #GstMpegtsDescriptor + + + + The registration ID (in host endiannes) + + + + The additional information + + + + + + The size of @additional_info in bytes. + + + + + + Extracts the satellite delivery system information from @descriptor. + + + %TRUE if parsing succeeded, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM #GstMpegtsDescriptor + + + + the #GstMpegtsSatelliteDeliverySystemDescriptor to fill + + + + + + Parses out the terrestrial delivery system from the @descriptor. + + + %TRUE if the parsing happened correctly, else %FALSE. + + + + + a %GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM #GstMpegtsDescriptor + + + + #GstMpegtsTerrestrialDeliverySystemDescriptor + + + + + + Creates a #GstMpegtsDescriptor with custom @tag and @data + + + #GstMpegtsDescriptor + + + + + descriptor tag + + + + descriptor data (after tag and length field) + + + + + + length of @data + + + + + + Creates a #GstMpegtsDescriptor with custom @tag, @tag_extension and @data + + + #GstMpegtsDescriptor + + + + + descriptor tag + + + + descriptor tag extension + + + + descriptor data (after tag and length field) + + + + + + length of @data + + + + + + Creates a #GstMpegtsDescriptor to be a %GST_MTS_DESC_DVB_NETWORK_NAME, +with the network name @name. The data field of the #GstMpegtsDescriptor +will be allocated, and transferred to the caller. + + + the #GstMpegtsDescriptor or %NULL on fail + + + + + the network name to set + + + + + + Fills a #GstMpegtsDescriptor to be a %GST_MTS_DESC_DVB_SERVICE. +The data field of the #GstMpegtsDescriptor will be allocated, +and transferred to the caller. + + + the #GstMpegtsDescriptor or %NULL on fail + + + + + Service type defined as a #GstMpegtsDVBServiceType + + + + Name of the service + + + + Name of the service provider + + + + + + + + + + + + a string containing the ISO639 language + + + + subtitling type + + + + composition page id + + + + ancillary page id + + + + + + Creates a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor with +a single language + + + #GstMpegtsDescriptor, %NULL on failure + + + + + ISO-639-2 language 3-char code + + + + + + Creates a %GST_MTS_DESC_REGISTRATION #GstMpegtsDescriptor + + + #GstMpegtsDescriptor, %NULL on failure + + + + + a 4 character format identifier string + + + + pointer to optional additional info + + + + + + length of the optional @additional_info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of #GstMpegtsDescriptor + +These values correspond to the registered descriptor type from +the base MPEG-TS specifications (ITU H.222.0 | ISO/IEC 13818-1). + +Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a multilingual bouquet name entry + + + the ISO 639 language code + + + + the bouquet name + + + + + + + the ISO 639 language code + + + + the component description + + + + + a multilingual network name entry + + + the ISO 639 language code + + + + the network name + + + + + a multilingual service name entry + + + the ISO 639 language code + + + + the provider name + + + + the service name + + + + + Event Information Table (EN 300 468) + + + + + + + + + + + + + + + + + + + + + List of events + + + + + + + Event from a @GstMpegtsEIT + + + + + + + + + + + + + + + + + + List of descriptors + + + + + + + Extended Event Descriptor (EN 300 468 v.1.13.1) + + + + + + + + + NULL terminated language code. + + + + the #GstMpegtsExtendedEventItem + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Type of mpeg-ts streams for Blu-ray formats. To be matched with the +stream-type of a #GstMpegtsSection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These values correspond to the registered descriptor type from +the various ISDB specifications. + +Consult the relevant specifications for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The metadata descriptor specifies parameters of a metadata service carried in an MPEG-2 Transport Stream (or Program Stream). The descriptor is included in the PMT in the descriptor loop for the elementary stream that carries the +metadata service. The descriptor specifies the format of the associated metadata, and contains the value of the +metadata_service_id to identify the metadata service to which the metadata descriptor applies. + +Note that this structure does not include all of the metadata_descriptor items, and will need extension to support DSM-CC and private data. +See ISO/IEC 13818-1:2018 Section 2.6.60 and Section 2.6.61 for more information. + + + specifies the application responsible for defining usage, syntax and semantics + + + + indicates the format and coding of the metadata + + + + format identifier (equivalent to registration descriptor), for example 0x4B4C4641 ('KLVA') to indicate SMPTE 336 KLV. + + + + metadata service to which this metadata descriptor applies, typically 0x00 + + + + decoder flags, see ISO/IEC 13818-1:2018 Table 2-88. + + + + true if stream associated with this descriptor is in an ISO/IEC 13818-6 data or object carousel. + + + + + metadata_descriptor metadata_format valid values. See ISO/IEC 13818-1:2018(E) Table 2-85. + + + + + + + + + + + + The type of #GstMpegtsDescriptor + +These values correspond to miscellaneous descriptor types that are +not yet identified from known specifications. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Information Table (ISO/IEC 13818-1 / EN 300 468) + + + Whether this NIT corresponds to the actual stream + + + + ID of the network that this NIT describes + + + + the global descriptors + + + + + + the streams + + + + + + Allocates and initializes a #GstMpegtsNIT. + + + A newly allocated #GstMpegtsNIT + + + + + + + + + + + + + + + + + + + Allocates and initializes a #GstMpegtsNITStream + + + A newly allocated #GstMpegtsNITStream + + + + + + Extra buffer metadata describing the PES Metadata context. +This is based on the Metadata AU cell header in +ISO/IEC 13818-1:2018 Section 2.12.4. + +AU_cell_data_length is not provided, since it matches the length of the buffer + + + parent #GstMeta + + + + metadata service identifier + + + + bit flags, see spec for details + + + + Gets the global #GstMetaInfo describing the #GstMpegtsPESMetadataMeta meta. + + + The #GstMetaInfo + + + + + + Program Map Table (ISO/IEC 13818-1). Provides the mappings between program +numbers and the program elements that comprise them. + +The program_number is contained in the subtable_extension field of the +container #GstMpegtsSection. + + + PID of the stream containing the PCR for this program. + + + + The program to which this PMT is applicable. + + + + Array of #GstMpegtsDescriptor + + + + + + Array of #GstMpegtsPMTStream + + + + + + Allocates and initializes a new #GstMpegtsPMT. #GstMpegtsPMTStream can be +added to the streams array, and global PMT #GstMpegtsDescriptor to the +descriptors array. + + + #GstMpegtsPMT + + + + + + An individual stream definition of a #GstMpegtsPMT. + + + the type of stream. See #GstMpegtsStreamType + + + + the PID of the stream + + + + the descriptors of the +stream + + + + + + Allocates and initializes a new #GstMpegtsPMTStream. + + + #GstMpegtsPMTStream + + + + + + + + + + + + + + + + + + A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1). + + + the program number + + + + the network of program map PID + + + + Allocates a new #GstMpegtsPatProgram. + + + A newly allocated #GstMpegtsPatProgram + + + + + + Well-known registration ids, expressed as native-endian 32bit integers. These +are used in descriptors of type %GST_MTS_DESC_REGISTRATION. Unless specified +otherwise (by use of the "OTHER" prefix), they are all registered by the +[SMPTE Registration Authority](https://smpte-ra.org/) or specified in +"official" documentation for the given format. + + + Undefined registration id + + + Audio AC-3, ATSC A/52 + + + SCTE 35, "Digital Program Insertion Cueing Message" + + + Dirac Video codec + + + DTS Audio + + + DTS Audio + + + DTS Audio + + + SMPTE 302M, Mapping of AES3 Data in mpeg-ts + + + Enhanced AC-3 (i.e. EAC3) + + + Cablelabs ETV + + + ATSC A/53 compliant stream (i.e. ATSC) + + + Blu-ray, "System Description Blu-ray Disc + Read-Only Format part 3 Audio Visual Basic Specifications" + + + SMPTE RP217 : Non-synchronized Mapping of KLV + Packets in mpeg-ts + + + Opus Audio + + + HDV (Sony) + + + Video VC-1, SMPTE RP227 "VC-1 Bitstream Transport Encodings" + + + Audio AC-4, ETSI 103 190-2 + + + HEVC / h265 + + + + Running status of a service. + +Corresponds to table 6 of ETSI EN 300 468 (v1.13.0) + + + + + + + + + + + + + + + + These values correspond to the ones defined by SCTE (amongst other in ANSI/SCTE 57) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocates and initializes a #GstMpegtsSCTESIT. + + + A newly allocated #GstMpegtsSCTESIT + + + + + + + + + + + + + + + + + + + + + Per-PID splice information. + + + the elementary PID stream containing the Splice Point + + + + Whether @splice_time was specified + + + + the presentation time of the signaled splice event + + + + The UTC time of the signaled splice event + + + + Allocates and initializes a #GstMpegtsSCTESpliceComponent. + + + A newly allocated #GstMpegtsSCTESpliceComponent + + + + + the elementary PID stream identifier + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocates and initializes a #GstMpegtsSCTESpliceEvent. + + + A newly allocated #GstMpegtsSCTESpliceEvent + + + + + + Service Description Table (EN 300 468) + + + Network ID of the originating delivery system + + + + True if the table describes this transport stream + + + + ID of this transport stream + + + + List of services + + + + + + Allocates and initializes a #GstMpegtsSDT. + + + A newly allocated #GstMpegtsSDT + + + + + + + + The program number this table belongs to + + + + EIT schedule information is present in this transport stream + + + + EIT present/following information is present in this transport stream + + + + Status of this service + + + + True if one or more streams is controlled by a CA system + + + + List of descriptors + + + + + + Allocates and initializes a #GstMpegtsSDTService. + + + A newly allocated #GstMpegtsSDTService + + + + + + + + + + + + + + + + + + + + Selection Information Table (EN 300 468) + + + List of descriptors + + + + + + List of services + + + + + + + SIT Service entry + + + The Program number this table belongs to + + + + Status of this service + + + + List of descriptors + + + + + + + Satellite Delivery System Descriptor (EN 300 468 v.1.13.1) + + + the frequency in kHz (kiloHertz) + + + + the orbital position in degrees + + + + If %TRUE, the satellite is in the eastern part of the orbit, +else in the western part. + + + + The polarization of the transmitted signal + + + + Roll-off factor used in DVB-S2 + + + + modulation system, %TRUE if DVB-S2, else DVB-S + + + + Modulation scheme used + + + + Symbol rate (in symbols per second) + + + + inner FEC scheme used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Type of mpeg-ts streams for SCTE. Most users would want to use the +#GstMpegtsATSCStreamType instead since it also covers these stream types + + + SCTE-27 Subtitling + + + SCTE-19 Isochronous data + + + SCTE-35 Splice Information Table + + + SCTE-07 Data Service or +Network Resource Table + + + Type B - DSM-CC Data Carousel +[IEC 13818-6]) + + + Enhanced Television Application +Signaling (OC-SP-ETV-AM1.0.1-120614) + + + SCTE-07 Synchronous data + + + SCTE-53 Asynchronous data + + + + ## Generic usage of sections with %GstMpegtsSection + +The %GstMpegtsSection object is the representation of MPEG-TS Section (SI or +PSI). + +Various elements can post those on the bus via %GstMessage of type +%GST_MESSAGE_ELEMENT. The gst_message_parse_mpegts_section() function +provides access to the section. + +Applications (or other elements) can create them either by using one of the +`gst_mpegts_section_from_*` functions, or by providing the raw SI data via +gst_mpegts_section_new(). + +Elements outputting MPEG-TS streams can also create sections using the +various convenience functions and then get the packetized data (to be +inserted in MPEG-TS packets) using gst_mpegts_section_packetize(). + +For more details, refer to the ITU H.222.0 or ISO/IEC 13818-1 specifications +and other specifications mentioned in the documentation. + +# Supported base MPEG-TS sections +These are the sections for which parsing and packetizing code exists. + +## Program Association Table (PAT) +See: +* gst_mpegts_section_get_pat() +* gst_mpegts_pat_program_new() +* %GstMpegtsPatProgram + +## Conditional Access Table (CAT) +See: +* gst_mpegts_section_get_cat() + +## Program Map Table (PMT) +See: +* %GstMpegtsPMT +* gst_mpegts_section_get_pmt() +* gst_mpegts_pmt_new() +* %GstMpegtsPMTStream + +## Transport Stream Description Table (TSDT) +See: +* gst_mpegts_section_get_tsdt() +# API + + + + + + The type of section. + + + + The PID on which this section was found or belongs to. + + + + The table id of this section. See %GstMpegtsSectionTableID and + derivates for more information. + + + + This meaning differs per section. See the documentation + of the parsed section type for the meaning of this field + + + + Version of the section. + + + + Applies to current/next stream or not + + + + Number of the section (if multiple) + + + + Number of the last expected section (if multiple) + + + + Checksum (if applicable) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GstMpegtsSection from the provided @data. + +Note: Ensuring @data is big enough to contain the full section is the +responsibility of the caller. If it is not big enough, %NULL will be +returned. + +Note: it is the responsibility of the caller to ensure @data does point +to the beginning of the section. + + + A new #GstMpegtsSection if the data was valid, +else %NULL + + + + + the PID to which this section belongs + + + + a pointer to the beginning of +the section (i.e. the first byte should contain the `table_id` field). + + + + + + size of the @data argument. + + + + + + Returns the #GstMpegtsAtscVCT contained in the @section + + + The #GstMpegtsAtscVCT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_CVCT + + + + + + Returns the #GstMpegtsAtscEIT contained in the @section. + + + The #GstMpegtsAtscEIT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_EIT + + + + + + Returns the #GstMpegtsAtscETT contained in the @section. + + + The #GstMpegtsAtscETT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_ETT + + + + + + Returns the #GstMpegtsAtscMGT contained in the @section. + + + The #GstMpegtsAtscMGT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_MGT + + + + + + 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. + + + The #GstMpegtsAtscSTT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_STT + + + + + + Returns the #GstMpegtsAtscVCT contained in the @section + + + The #GstMpegtsAtscVCT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_ATSC_TVCT + + + + + + Returns the #GstMpegtsBAT contained in the @section. + + + The #GstMpegtsBAT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_BAT + + + + + + Parses a Conditional Access Table. + +Returns the array of #GstMpegtsDescriptor contained in the Conditional +Access Table. + + + The array +of #GstMpegtsDescriptor contained in the section, or %NULL if an error +happened. Release with #g_array_unref when done. + + + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_CAT + + + + + + Gets the original unparsed section data. + + + The original unparsed section data. + + + + + a #GstMpegtsSection + + + + + + Returns the #GstMpegtsEIT contained in the @section. + + + The #GstMpegtsEIT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_EIT + + + + + + Returns the #GstMpegtsNIT contained in the @section. + + + The #GstMpegtsNIT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_NIT + + + + + + Parses a Program Association Table (ITU H.222.0, ISO/IEC 13818-1). + +Returns the array of #GstMpegtsPatProgram contained in the section. + +Note: The PAT `transport_stream_id` field corresponds to the +"subtable_extension" field of the provided @section. + + + The +#GstMpegtsPatProgram contained in the section, or %NULL if an error happened +or the @section did not contain a valid PAT. Release with #g_ptr_array_unref +when done. + + + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_PAT + + + + + + Parses the Program Map Table contained in the @section. + + + The #GstMpegtsPMT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_PMT + + + + + + 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. + + + The #GstMpegtsSDT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_SDT + + + + + + Returns the #GstMpegtsSIT contained in the @section. + + + The #GstMpegtsSIT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_SIT + + + + + + Returns the #GstDateTime of the TDT + + + The #GstDateTime contained in the section, or %NULL +if an error happened. Release with #gst_date_time_unref when done. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TDT + + + + + + Returns the #GstMpegtsTOT contained in the @section. + + + The #GstMpegtsTOT contained in the section, or %NULL if an error +happened. + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TOT + + + + + + Parses a Transport Stream Description Table. + +Returns the array of #GstMpegtsDescriptor contained in the section + + + The array +of #GstMpegtsDescriptor contained in the section, or %NULL if an error +happened. Release with #g_array_unref when done. + + + + + + + a #GstMpegtsSection of type %GST_MPEGTS_SECTION_TSDT + + + + + + Packetize (i.e. serialize) the @section. If the data in @section has already +been packetized, the data pointer is returned immediately. Otherwise, the +data field is allocated and populated. + + + pointer to section data, or %NULL on failure. + + + + + the #GstMpegtsSection that holds the data + + + + #gsize to hold the size of the data + + + + + + Creates a custom #GstEvent with a @GstMpegtsSection and send it the @element +#GstElement. + + + %TRUE if the event was sent to the element. + + + + + The #GstMpegtsSection to put in the event + + + + The #GstElement to send to section event to + + + + + + + + the #GstMpegtsSection + + + + + a #GstMpegtsAtscMGT to create the #GstMpegtsSection from + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ownership of @nit is taken. The data in @nit is managed by the #GstMpegtsSection + + + the #GstMpegtsSection + + + + + a #GstMpegtsNIT to create the #GstMpegtsSection from + + + + + + Creates a PAT #GstMpegtsSection from the @programs array of #GstMpegtsPatPrograms + + + a #GstMpegtsSection + + + + + an array of #GstMpegtsPatProgram + + + + + + Transport stream ID of the PAT + + + + + + Creates a #GstMpegtsSection from @pmt that is bound to @pid + + + #GstMpegtsSection + + + + + a #GstMpegtsPMT to create a #GstMpegtsSection from + + + + The PID that the #GstMpegtsPMT belongs to + + + + + + 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 + + + the #GstMpegtsSection + + + + + a #GstMpegtsSDT to create the #GstMpegtsSection from + + + + + + + Values for a #GstMpegtsSection table_id. + +These are the registered ATSC section `table_id` variants. Unless specified +otherwise, they are defined in the "ATSC A/65" specification. + +see also: #GstMpegtsSectionTableID and other variants. + + + Master Guide Table (MGT) + + + Terrestrial Virtual Channel Table (TVCT) + + + Cable Virtual Channel Table (CVCT) + + + Rating Region Table (RRT) + + + Event Information Table (EIT) + + + Extended Text Table (ETT) + + + System Time Table (STT) + + + A/90: Data Event Table (DET) + + + A/90: Data Service Table (DST) + + + + + A/90: Network Resources Table (NRT) + + + A/90: Long Term Service Table (LTST) + + + Directed Channel Change Table (DCCT) + + + Directed Channel Change Selection Code Table (DCCSCT) + + + + + + + + + A/81: Satellite Virtual Channel Table + + + + Values for a #GstMpegtsSection table_id. + +These are the registered DVB table_id variants. Unless specified otherwise, +they come from the DVB Specification for SI (ETSI EN 300 468). + +see also: #GstMpegtsSectionTableID + + + Network Information Table (NIT), Actual Network + + + Network Information Table (NIT), Other Network + + + Service Description Table (SDT), Actual Transport Stream + + + Service Description Table (SDT), Other Transport Stream + + + Bouquet Association Table (BAT) + + + + + + + Event Information Table (EIT), Actual Transport Stream, present/following + + + Event Information Table (EIT), Other Transport Stream, present/following + + + Event Information Table (EIT), Actual Transport Stream, Schedule (first) + + + Event Information Table (EIT), Actual Transport Stream, Schedule (last) + + + Event Information Table (EIT), Other Transport Stream, Schedule (first) + + + Event Information Table (EIT), Other Transport Stream, Schedule (last) + + + Time Date Table (TDT) + + + Running Status Table (RST) + + + Stuffing Table (ST) + + + Time Offset Table (TOT) + + + ETSI TS 102 323: Application Information Table (AIT) + + + ETSI TS 102 323: Container Section + + + ETSI TS 102 323: Related Content Table (RCT) + + + ETSI TS 102 323: Content Identifier Table (CIT) + + + ETSI TS 301 192: MPE-FEC Section + + + ETSI 103 323: Resolution Provider Notification Table (RNT) + + + ETSI TS 102 772: MPE-IFEC Section + + + + + Discontinuity Information Table (DIT) + + + Selection Information Table (SIT) + + + ETSI TR 289: CA Message Table (CMT): ECM 0 + + + ETSI TR 289: CA Message Table (CMT): ECM 1 + + + ETSI TR 289: CA Message Table (CMT): CA System Private (First) + + + ETSI TR 289: CA Message Table (CMT): CA System Private (Last) + + + + + + + + + + + + + + + + + + + + + + + + Values for a #GstMpegtsSection table_id. + +These are the registered SCTE table_id variants. + +see also: #GstMpegtsSectionTableID + + + SCTE-18 Emergency Alert System + + + CL-SP-ETV-AM 1.0.1 EBIF message + + + + + CL-SP-ETV-AM 1.0.1 EBIF Int. Signaling Sect. + + + CL-SP-ETV-AM 1.0.1 DSMCC DII message + + + CL-SP-ETV-AM 1.0.1 DSMCC Data Download Block + + + SCTE-35 splice information is carried in a +section stream on a separate PID in the program’s Map Table (PMT) allowing +Splice Event notifications to remain associated with the program and pass +through multiplexers. + + + + Values for a #GstMpegtsSection table_id + +These are the registered ITU H.222.0 | ISO/IEC 13818-1 table_id variants. + +see also #GstMpegtsSectionATSCTableID, #GstMpegtsSectionDVBTableID, and +#GstMpegtsSectionSCTETableID + + + Program Association Table (PAT) + + + Conditional Access Table (CAT) + + + Program Map Table (PMT) + + + Transport Stream Description Table + + + ISO/IEC 14496 Scene Description Table + + + ISO/IEC 14496 Object Descriptor Table + + + Metadata Section + + + IPMP Control Information + + + + + + + + + DSM-CC Multi-Protocol Encapsulated (MPE) Data + + + DSM-CC U-N Messages + + + DSM-CC Download Data Messages + + + DSM-CC Stream Descriptors + + + DSM-CC Private Data + + + DSM-CC Addressable Section + + + Unset section table_id (value is forbidden to use in actual sections) + + + + Types of #GstMpegtsSection that the library handles. This covers all the +MPEG-TS and derivate specification that the library can properly identify and +use. + + + Unknown section type + + + Program Association Table (ISO/IEC 13818-1) + + + Program Map Table (ISO/IEC 13818-1) + + + Conditional Access Table (ISO/IEC 13818-1) + + + Transport Stream Description Table (ISO/IEC 13818-1) + + + Event Information Table (EN 300 468) + + + Network Information Table (ISO/IEC 13818-1 / EN 300 468) + + + Bouquet Association Table ((EN 300 468) + + + Service Description Table (EN 300 468) + + + Time and Date Table (EN 300 468) + + + Time Offset Table (EN 300 468) + + + + + ATSC Terrestrial Virtual Channel Table (A65) + + + ATSC Cable Virtual Channel Table (A65) + + + ATSC Master Guide Table (A65) + + + ATSC Extended Text Table (A65) + + + ATSC Event Information Table (A65) + + + ATSC System Time Table (A65) + + + ATSC Rating Region Table (A65) + + + SCTE Splice Information Table (SCTE-35) + + + + Type of MPEG-TS stream type. + +These values correspond to the base standard registered types. Depending +on the variant of mpeg-ts being used (Bluray, ATSC, DVB, ...), other +types might also be used, but will not conflict with these. + +Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1 + + + ITU-T | ISO/IEC Reserved + + + ISO/IEC 11172-2 Video (i.e. MPEG-1 Video) + + + Rec. ITU-T H.262 | ISO/IEC 13818-2 + Video or ISO/IEC 11172-2 constrained parameter video stream (i.e. + MPEG-2 Video) + + + ISO/IEC 11172-3 Audio + + + ISO/IEC 13818-3 Audio + + + private sections + + + PES packets containing private data + + + ISO/IEC 13522 MHEG + + + Annex A DSM-CC + + + Rec. ITU-T H.222.1 + + + ISO/IEC 13818-6 type A + + + ISO/IEC 13818-6 type B + + + ISO/IEC 13818-6 type C + + + ISO/IEC 13818-6 type D + + + auxiliary streams + + + ISO/IEC 13818-7 Audio (AAC) with ADTS + transport syntax + + + ISO/IEC 14496-2 Visual (MPEG-4 Video) + + + ISO/IEC 14496-3 Audio (AAC) with the LATM + transport syntax as defined in ISO/IEC 14496-3 + + + ISO/IEC 14496-1 + SL-packetized stream or FlexMux stream carried in PES packets + + + ISO/IEC 14496-1 SL-packetized + stream or FlexMux stream carried in ISO/IEC 14496_sections + + + ISO/IEC 13818-6 Synchronized + Download Protocol + + + Metadata carried in PES packets + + + Metadata carried in metadata_sections + + + Metadata carried in ISO/IEC + 13818-6 Data Carousel + + + Metadata carried in + ISO/IEC 13818-6 Object Carousel + + + Metadata carried in + ISO/IEC 13818-6 Synchronized Download Protocol + + + IPMP stream (defined in ISO/IEC 13818-11, + MPEG-2 IPMP) + + + AVC video stream conforming to one or +more profiles defined in Annex A of Rec. ITU-T H.264 | ISO/IEC 14496-10 or +AVC video sub-bitstream of SVC as defined in 2.1.78 or MVC base view +sub-bitstream, as defined in 2.1.85, or AVC video sub-bitstream of MVC, as +defined in 2.1.88 + + + ISO/IEC 14496-3 (AAC) Audio, without + using any additional transport syntax, such as DST, ALS and SLS + + + ISO/IEC 14496-17 Text + + + Auxiliary video stream as defined in +ISO/IEC 23002-3 + + + SVC video sub-bitstream +of an AVC video stream conforming to one or more profiles defined in Annex G +of Rec. ITU-T H.264 | ISO/IEC 14496-10 + + + MVC video sub-bitstream +of an AVC video stream conforming to one or more profiles defined in Annex H +of Rec. ITU-T H.264 | ISO/IEC 14496-10 + + + Video stream conforming to one or more + profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1 (i.e. JPEG 2000) + + + Additional view +Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible +stereoscopic 3D services + + + Additional view +Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more +profiles defined in Annex A for service-compatible stereoscopic 3D services + + + Rec. ITU-T H.265 | ISO/IEC 23008-2 video + stream or an HEVC temporal video sub-bitstream + + + IPMP stream + + + + + + + + id of the cell + + + + centre frequencies in Hz + + + + + + + + + + + + + + id of the sub cell + + + + centre frequency of the sub cell in Hz + + + + + describe DVB-T2 transmissions according to EN 302 755 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Time Offset Table (EN 300 468) + + + + + + List of descriptors + + + + + + + Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1) + + + the frequency in Hz (Hertz) + + + + the bandwidth in Hz (Hertz) + + + + %TRUE High Priority %FALSE Low Priority + + + + %TRUE no time slicing %FALSE time slicing + + + + %TRUE no mpe-fec is used %FALSE mpe-fec is use + + + + the constellation + + + + the hierarchy + + + + + + + + + + + + + + + + %TRUE more frequency are use, else not + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates and adds a #GstMpegtsPESMetadataMeta to a @buffer. + + + a newly created #GstMpegtsPESMetadataMeta + + + + + a #GstBuffer + + + + + + Creates a #GstMpegtsDescriptor with custom @tag and @data + + + #GstMpegtsDescriptor + + + + + descriptor tag + + + + descriptor data (after tag and length field) + + + + + + length of @data + + + + + + Creates a #GstMpegtsDescriptor with custom @tag, @tag_extension and @data + + + #GstMpegtsDescriptor + + + + + descriptor tag + + + + descriptor tag extension + + + + descriptor data (after tag and length field) + + + + + + length of @data + + + + + + Creates a #GstMpegtsDescriptor to be a %GST_MTS_DESC_DVB_NETWORK_NAME, +with the network name @name. The data field of the #GstMpegtsDescriptor +will be allocated, and transferred to the caller. + + + the #GstMpegtsDescriptor or %NULL on fail + + + + + the network name to set + + + + + + Fills a #GstMpegtsDescriptor to be a %GST_MTS_DESC_DVB_SERVICE. +The data field of the #GstMpegtsDescriptor will be allocated, +and transferred to the caller. + + + the #GstMpegtsDescriptor or %NULL on fail + + + + + Service type defined as a #GstMpegtsDVBServiceType + + + + Name of the service + + + + Name of the service provider + + + + + + + + + + + + a string containing the ISO639 language + + + + subtitling type + + + + composition page id + + + + ancillary page id + + + + + + Creates a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor with +a single language + + + #GstMpegtsDescriptor, %NULL on failure + + + + + ISO-639-2 language 3-char code + + + + + + Creates a %GST_MTS_DESC_REGISTRATION #GstMpegtsDescriptor + + + #GstMpegtsDescriptor, %NULL on failure + + + + + a 4 character format identifier string + + + + pointer to optional additional info + + + + + + length of the optional @additional_info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GstEvent for a #GstMpegtsSection. + + + The new custom #GstEvent. + + + + + The #GstMpegtsSection to put in a message + + + + + + Extracts the #GstMpegtsSection contained in the @event #GstEvent + + + The extracted #GstMpegtsSection , or %NULL if the +event did not contain a valid #GstMpegtsSection. + + + + + #GstEvent containing a #GstMpegtsSection + + + + + + Finds the first descriptor of type @tag in the array. + +Note: To look for descriptors that can be present more than once in an +array of descriptors, iterate the #GArray manually. + + + the first descriptor matching @tag, else %NULL. + + + + + an array +of #GstMpegtsDescriptor + + + + + + the tag to look for + + + + + + Finds the first descriptor of type @tag with @tag_extension in the array. + +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 with @tag_extension, else %NULL. + + + + + an array +of #GstMpegtsDescriptor + + + + + + the tag to look for + + + + + + + + + Initializes the MPEG-TS helper library. Must be called before any +usage. + + + + + + + Creates a new #GstMessage for a @GstMpegtsSection. + + + The new #GstMessage to be posted, or %NULL if the +section is not valid. + + + + + The creator of the message + + + + The #GstMpegtsSection to put in a message + + + + + + Returns the #GstMpegtsSection contained in a message. + + + the contained #GstMpegtsSection, or %NULL. + + + + + a #GstMessage + + + + + + Parses the descriptors present in @buffer and returns them as an +array. + +Note: The data provided in @buffer will not be copied. + + + an +array of the parsed descriptors or %NULL if there was an error. +Release with #g_array_unref when done with it. + + + + + + + descriptors to parse + + + + Size of @buffer + + + + + + Allocates a new #GPtrArray for #GstMpegtsPatProgram. The array can be filled +and then converted to a PAT section with gst_mpegts_section_from_pat(). + + + A newly allocated #GPtrArray + + + + + + + Return the #GType associated with #GstMpegtsPESMetadataMeta + + + a #GType + + + + + Gets the global #GstMetaInfo describing the #GstMpegtsPESMetadataMeta meta. + + + The #GstMetaInfo + + + + + 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 running 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 running 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 + + + the #GstMpegtsSection + + + + + a #GstMpegtsNIT to create the #GstMpegtsSection from + + + + + + Creates a PAT #GstMpegtsSection from the @programs array of #GstMpegtsPatPrograms + + + a #GstMpegtsSection + + + + + an array of #GstMpegtsPatProgram + + + + + + Transport stream ID of the PAT + + + + + + Creates a #GstMpegtsSection from @pmt that is bound to @pid + + + #GstMpegtsSection + + + + + a #GstMpegtsPMT to create a #GstMpegtsSection from + + + + The PID that the #GstMpegtsPMT belongs to + + + + + + 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 + + + the #GstMpegtsSection + + + + + a #GstMpegtsSDT to create the #GstMpegtsSection from + + + + + + + + + + + + + + + + + + + + diff --git a/girs/GstNet-1.0.gir b/girs/GstNet-1.0.gir new file mode 100644 index 0000000000..cc9fc3df24 --- /dev/null +++ b/girs/GstNet-1.0.gir @@ -0,0 +1,915 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The size of the packets sent between network clocks. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstNetAddressMeta can be used to store a network address (a #GSocketAddress) +in a #GstBuffer so that it network elements can track the to and from address +of the buffer. + + + the parent type + + + + a #GSocketAddress stored as metadata + + + + + + + + + + + #GstNetClientClock implements a custom #GstClock that synchronizes its time +to a remote time provider such as #GstNetTimeProvider. #GstNtpClock +implements a #GstClock that synchronizes its time to a remote NTPv4 server. + +A new clock is created with gst_net_client_clock_new() or +gst_ntp_clock_new(), which takes the address and port of the remote time +provider along with a name and an initial time. + +This clock will poll the time provider and will update its calibration +parameters based on the local and remote observations. + +The "round-trip" property limits the maximum round trip packets can take. + +Various parameters of the clock can be configured with the parent #GstClock +"timeout", "window-size" and "window-threshold" object properties. + +A #GstNetClientClock and #GstNtpClock is typically set on a #GstPipeline with +gst_pipeline_use_clock(). + +If you set a #GstBus on the clock via the "bus" object property, it will +send @GST_MESSAGE_ELEMENT messages with an attached #GstStructure containing +statistics about clock accuracy and network traffic. + + + Create a new #GstNetClientClock that will report the time +provided by the #GstNetTimeProvider on @remote_address and +@remote_port. + + + a new #GstClock that receives a time from the remote +clock. + + + + + a name for the clock + + + + the address or hostname of the remote clock provider + + + + the port of the remote clock provider + + + + initial time of the clock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstNetControlMessageMeta can be used to store control messages (ancillary +data) which was received with or is to be sent alongside the buffer data. +When used with socket sinks and sources which understand this meta it allows +sending and receiving ancillary data such as unix credentials (See +#GUnixCredentialsMessage) and Unix file descriptions (See #GUnixFDMessage). + + + the parent type + + + + a #GSocketControlMessage stored as metadata + + + + + + + + + + + Various functions for receiving, sending an serializing #GstNetTimePacket +structures. + + + the local time when this packet was sent + + + + the remote time observation + + + + Creates a new #GstNetTimePacket from a buffer received over the network. The +caller is responsible for ensuring that @buffer is at least +#GST_NET_TIME_PACKET_SIZE bytes long. + +If @buffer is %NULL, the local and remote times will be set to +#GST_CLOCK_TIME_NONE. + +MT safe. Caller owns return value (gst_net_time_packet_free to free). + + + The new #GstNetTimePacket. + + + + + a buffer from which to construct the packet, or NULL + + + + + + + + Make a copy of @packet. + + + a copy of @packet, free with gst_net_time_packet_free(). + + + + + the #GstNetTimePacket + + + + + + Free @packet. + + + + + + + the #GstNetTimePacket + + + + + + Sends a #GstNetTimePacket over a socket. + +MT safe. + + + TRUE if successful, FALSE in case an error occurred. + + + + + the #GstNetTimePacket to send + + + + socket to send the time packet on + + + + address to send the time packet to + + + + + + Serialized a #GstNetTimePacket into a newly-allocated sequence of +#GST_NET_TIME_PACKET_SIZE bytes, in network byte order. The value returned is +suitable for passing to write(2) or sendto(2) for communication over the +network. + +MT safe. Caller owns return value (g_free to free). + + + A newly allocated sequence of #GST_NET_TIME_PACKET_SIZE bytes. + + + + + + + the #GstNetTimePacket + + + + + + Receives a #GstNetTimePacket over a socket. Handles interrupted system +calls, but otherwise returns NULL on error. + + + a new #GstNetTimePacket, or NULL on error. Free + with gst_net_time_packet_free() when done. + + + + + socket to receive the time packet on + + + + address of variable to return sender address + + + + + + + This object exposes the time of a #GstClock on the network. + +A #GstNetTimeProvider is created with gst_net_time_provider_new() which +takes a #GstClock, an address and a port number as arguments. + +After creating the object, a client clock such as #GstNetClientClock can +query the exposed clock over the network for its values. + +The #GstNetTimeProvider typically wraps the clock used by a #GstPipeline. + + + + Allows network clients to get the current time of @clock. + + + the new #GstNetTimeProvider, or NULL on error + + + + + a #GstClock to export over the network + + + + an address to bind on as a dotted quad + (xxx.xxx.xxx.xxx), IPv6 address, or NULL to bind to all addresses + + + + a port to bind on, or 0 to let the kernel choose + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create a new #GstNtpClock that will report the time provided by +the NTPv4 server on @remote_address and @remote_port. + + + a new #GstClock that receives a time from the remote +clock. + + + + + a name for the clock + + + + the address or hostname of the remote clock provider + + + + the port of the remote clock provider + + + + initial time of the clock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PTP clock identification that can be passed to gst_ptp_init() to +automatically select one based on the MAC address of interfaces + + + + + + + + + + + + + + + + + + + + + GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in slave-only +mode, that allows a GStreamer pipeline to synchronize to a PTP network +clock in some specific domain. + +The PTP subsystem can be initialized with gst_ptp_init(), which then starts +a helper process to do the actual communication via the PTP ports. This is +required as PTP listens on ports < 1024 and thus requires special +privileges. Once this helper process is started, the main process will +synchronize to all PTP domains that are detected on the selected +interfaces. + +gst_ptp_clock_new() then allows to create a GstClock that provides the PTP +time from a master clock inside a specific PTP domain. This clock will only +return valid timestamps once the timestamps in the PTP domain are known. To +check this, you can use gst_clock_wait_for_sync(), the GstClock::synced +signal and gst_clock_is_synced(). + +To gather statistics about the PTP clock synchronization, +gst_ptp_statistics_callback_add() can be used. This gives the application +the possibility to collect all kinds of statistics from the clock +synchronization. + + + Creates a new PTP clock instance that exports the PTP time of the master +clock in @domain. This clock can be slaved to other clocks as needed. + +If gst_ptp_init() was not called before, this will call gst_ptp_init() with +default parameters. + +This clock only returns valid timestamps after it received the first +times from the PTP master clock on the network. Once this happens the +GstPtpClock::internal-clock property will become non-NULL. You can +check this with gst_clock_wait_for_sync(), the GstClock::synced signal and +gst_clock_is_synced(). + + + A new #GstClock + + + + + Name of the clock + + + + PTP domain + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opaque #GstPtpClockClass structure. + + + parented to #GstSystemClockClass + + + + + + + + + + + + + The statistics can be the following structures: + +GST_PTP_STATISTICS_NEW_DOMAIN_FOUND: +"domain" G_TYPE_UINT The domain identifier of the domain +"clock" GST_TYPE_CLOCK The internal clock that is slaved to the + PTP domain + +GST_PTP_STATISTICS_BEST_MASTER_CLOCK_SELECTED: +"domain" G_TYPE_UINT The domain identifier of the domain +"master-clock-id" G_TYPE_UINT64 PTP clock identifier of the selected master + clock +"master-clock-port" G_TYPE_UINT PTP port number of the selected master clock +"grandmaster-clock-id" G_TYPE_UINT64 PTP clock identifier of the grandmaster clock + +GST_PTP_STATISTICS_PATH_DELAY_MEASURED: +"domain" G_TYPE_UINT The domain identifier of the domain +"mean-path-delay-avg" GST_TYPE_CLOCK_TIME Average mean path delay +"mean-path-delay" GST_TYPE_CLOCK_TIME Latest mean path delay +"delay-request-delay" GST_TYPE_CLOCK_TIME Delay of DELAY_REQ / DELAY_RESP messages + +GST_PTP_STATISTICS_TIME_UPDATED: +"domain" G_TYPE_UINT The domain identifier of the domain +"mean-path-delay-avg" GST_TYPE_CLOCK_TIME Average mean path delay +"local-time" GST_TYPE_CLOCK_TIME Local time that corresponds to ptp-time +"ptp-time" GST_TYPE_CLOCK_TIME Newly measured PTP time at local-time +"estimated-ptp-time" GST_TYPE_CLOCK_TIME Estimated PTP time based on previous measurements +"discontinuity" G_TYPE_INT64 Difference between estimated and measured PTP time +"synced" G_TYPE_BOOLEAN Currently synced to the remote clock +"r-squared" G_TYPE_DOUBLE R² of clock estimation regression +"internal-time" GST_TYPE_CLOCK_TIME Internal time clock parameter +"external-time" GST_TYPE_CLOCK_TIME External time clock parameter +"rate-num" G_TYPE_UINT64 Internal/external rate numerator +"rate-den" G_TYPE_UINT64 Internal/external rate denominator +"rate" G_TYPE_DOUBLE Internal/external rate + +If %FALSE is returned, the callback is removed and never called again. + + + + + + + PTP domain identifier + + + + New statistics + + + + Data passed to gst_ptp_statistics_callback_add() + + + + + + Attaches @addr as metadata in a #GstNetAddressMeta to @buffer. + + + a #GstNetAddressMeta connected to @buffer + + + + + a #GstBuffer + + + + a @GSocketAddress to connect to @buffer + + + + + + Attaches @message as metadata in a #GstNetControlMessageMeta to @buffer. + + + a #GstNetControlMessageMeta connected to @buffer + + + + + a #GstBuffer + + + + a @GSocketControlMessage to attach to @buffer + + + + + + Find the #GstNetAddressMeta on @buffer. + + + the #GstNetAddressMeta or %NULL when there +is no such metadata on @buffer. + + + + + a #GstBuffer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Receives a #GstNetTimePacket over a socket. Handles interrupted system +calls, but otherwise returns NULL on error. + + + a new #GstNetTimePacket, or NULL on error. Free + with gst_net_time_packet_free() when done. + + + + + socket to receive the time packet on + + + + address of variable to return sender address + + + + + + 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 +to the PTP network clock. + + + + + + + Initialize the GStreamer PTP subsystem and create a PTP ordinary clock in +slave-only mode for all domains on the given @interfaces with the +given @clock_id. + +If @clock_id is %GST_PTP_CLOCK_ID_NONE, a clock id is automatically +generated from the MAC address of the first network interface. + +This function is automatically called by gst_ptp_clock_new() with default +parameters if it wasn't called before. + + + %TRUE if the GStreamer PTP clock subsystem could be initialized. + + + + + PTP clock id of this process' clock or %GST_PTP_CLOCK_ID_NONE + + + + network interfaces to run the clock on + + + + + + + + Check if the GStreamer PTP clock subsystem is initialized. + + + %TRUE if the GStreamer PTP clock subsystem is initialized. + + + + + Check if PTP clocks are generally supported on this system, and if previous +initializations did not fail. + + + %TRUE if PTP clocks are generally supported on this system, and +previous initializations did not fail. + + + + + Installs a new statistics callback for gathering PTP statistics. See +GstPtpStatisticsCallback for a list of statistics that are provided. + + + Id for the callback that can be passed to +gst_ptp_statistics_callback_remove() + + + + + GstPtpStatisticsCallback to call + + + + Data to pass to the callback + + + + GDestroyNotify to destroy the data + + + + + + Removes a PTP statistics callback that was previously added with +gst_ptp_statistics_callback_add(). + + + + + + + Callback id to remove + + + + + + diff --git a/girs/GstPbutils-1.0.gir b/girs/GstPbutils-1.0.gir new file mode 100644 index 0000000000..d415a50b01 --- /dev/null +++ b/girs/GstPbutils-1.0.gir @@ -0,0 +1,4328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A baseclass for scopes (visualizers). It takes care of re-fitting the +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 +new frame. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Different types of supported background shading functions. + + no shading + + + plain fading + + + fade and move up + + + fade and move down + + + fade and move left + + + fade and move right + + + fade and move horizontally out + + + fade and move horizontally in + + + fade and move vertically out + + + fade and move vertically in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstDiscoverer is a utility object which allows to get as much +information as possible from one or many URIs. + +It provides two APIs, allowing usage in blocking or non-blocking mode. + +The blocking mode just requires calling gst_discoverer_discover_uri() +with the URI one wishes to discover. + +The non-blocking mode requires a running #GMainLoop iterating a +#GMainContext, where one connects to the various signals, appends the +URIs to be processed (through gst_discoverer_discover_uri_async()) and then +asks for the discovery to begin (through gst_discoverer_start()). +By default this will use the GLib default main context unless you have +set a custom context using g_main_context_push_thread_default(). + +All the information is returned in a #GstDiscovererInfo structure. + + + Creates a new #GstDiscoverer with the provided timeout. + + + The new #GstDiscoverer. +If an error occurred when creating the discoverer, @err will be set +accordingly and %NULL will be returned. If @err is set, the caller must +free it when no longer needed using g_error_free(). + + + + + timeout per file, in nanoseconds. Allowed are values between + one second (#GST_SECOND) and one hour (3600 * #GST_SECOND) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Synchronously discovers the given @uri. + +A copy of @uri will be made internally, so the caller can safely g_free() +afterwards. + + + the result of the scanning. Can be %NULL if an +error occurred. + + + + + A #GstDiscoverer + + + + The URI to run on. + + + + + + Appends the given @uri to the list of URIs to discoverer. The actual +discovery of the @uri will only take place if gst_discoverer_start() has +been called. + +A copy of @uri will be made internally, so the caller can safely g_free() +afterwards. + + + %TRUE if the @uri was successfully appended to the list of pending +uris, else %FALSE + + + + + A #GstDiscoverer + + + + the URI to add. + + + + + + Allow asynchronous discovering of URIs to take place. +A #GMainLoop must be available for #GstDiscoverer to properly work in +asynchronous mode. + + + + + + + A #GstDiscoverer + + + + + + Stop the discovery of any pending URIs and clears the list of +pending URIS (if any). + + + + + + + A #GstDiscoverer + + + + + + The duration (in nanoseconds) after which the discovery of an individual +URI will timeout. + +If the discovery of a URI times out, the %GST_DISCOVERER_TIMEOUT will be +set on the result flags. + + + + + + + + + + + + + + + + + + Will be emitted in async mode when all information on a URI could be +discovered, or an error occurred. + +When an error occurs, @info might still contain some partial information, +depending on the circumstances of the error. + + + + + + the results #GstDiscovererInfo + + + + #GError, which will be non-NULL + if an error occurred during + discovery. You must not free + this #GError, it will be freed by + the discoverer. + + + + + + Will be emitted in async mode when all pending URIs have been processed. + + + + + + This signal is emitted after the source element has been created for, so +the URI being discovered, so it can be configured by setting additional +properties (e.g. set a proxy server for an http source, or set the device +and read speed for an audio cd source). + +This signal is usually emitted from the context of a GStreamer streaming +thread. + + + + + + source element + + + + + + Will be emitted when the discover starts analyzing the pending URIs + + + + + + + #GstDiscovererStreamInfo specific to audio streams. + + + + the average or nominal bitrate of the stream in bits/second. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the channel-mask of the stream, refer to +gst_audio_channel_positions_from_mask() for more +information. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the number of channels in the stream. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the number of bits used per sample in each channel. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the language of the stream, or NULL if unknown. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the maximum bitrate of the stream in bits/second. + + + + + a #GstDiscovererAudioInfo + + + + + + + + the sample rate of the stream in Hertz. + + + + + a #GstDiscovererAudioInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstDiscovererStreamInfo specific to container streams. + + + + the list of +#GstDiscovererStreamInfo this container stream offers. +Free with gst_discoverer_stream_info_list_free() after usage. + + + + + + + a #GstDiscovererStreamInfo + + + + + + + + tags specific to the given container. If you wish to use +the tags after the life-time of @info, you will need to copy them. + + + + + a #GstDiscovererStreamInfo + + + + + + + Structure containing the information of a URI analyzed by #GstDiscoverer. + + Parses a #GVariant as produced by gst_discoverer_info_to_variant() +back to a #GstDiscovererInfo. + + + A newly-allocated #GstDiscovererInfo. + + + + + A #GVariant to deserialize into a #GstDiscovererInfo. + + + + + + + + A copy of the #GstDiscovererInfo + + + + + a #GstDiscovererInfo + + + + + + Finds all the #GstDiscovererAudioInfo contained in @info + + + A #GList of +matching #GstDiscovererStreamInfo. The caller should free it with +gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + + + Finds all the #GstDiscovererContainerInfo contained in @info + + + A #GList of +matching #GstDiscovererStreamInfo. The caller should free it with +gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + + + + + the duration of the URI in #GstClockTime (nanoseconds). + + + + + a #GstDiscovererInfo + + + + + + + + whether the URI is live. + + + + + a #GstDiscovererInfo + + + + + + This functions is deprecated since version 1.4, use +#gst_discoverer_info_get_missing_elements_installer_details + + + Miscellaneous information stored as a #GstStructure +(for example: information about missing plugins). If you wish to use the +#GstStructure after the life-time of @info, you will need to copy it. + + + + + a #GstDiscovererInfo + + + + + + Get the installer details for missing elements + + + An array of strings +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. + + + + + + + a #GstDiscovererStreamInfo to retrieve installer detail +for the missing element + + + + + + + + the result of the discovery as a #GstDiscovererResult. + + + + + a #GstDiscovererInfo + + + + + + + + the whether the URI is seekable. + + + + + a #GstDiscovererInfo + + + + + + + + the structure (or topology) of the URI as a +#GstDiscovererStreamInfo. +This structure can be traversed to see the original hierarchy. Unref with +gst_discoverer_stream_info_unref() after usage. + + + + + a #GstDiscovererInfo + + + + + + + + the list of +all streams contained in the #info. Free after usage +with gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + + + Finds the #GstDiscovererStreamInfo contained in @info that match the +given @streamtype. + + + A #GList of +matching #GstDiscovererStreamInfo. The caller should free it with +gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + a #GType derived from #GstDiscovererStreamInfo + + + + + + Finds all the #GstDiscovererSubtitleInfo contained in @info + + + A #GList of +matching #GstDiscovererStreamInfo. The caller should free it with +gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + + + Use gst_discoverer_{container,stream}_info_get_tags() instead. + + + all tags contained in the URI. If you wish to use +the tags after the life-time of @info, you will need to copy them. + + + + + a #GstDiscovererInfo + + + + + + + + TOC contained in the URI. If you wish to use +the TOC after the life-time of @info, you will need to copy it. + + + + + a #GstDiscovererInfo + + + + + + + + the URI to which this information corresponds to. +Copy it if you wish to use it after the life-time of @info. + + + + + a #GstDiscovererInfo + + + + + + Finds all the #GstDiscovererVideoInfo contained in @info + + + A #GList of +matching #GstDiscovererStreamInfo. The caller should free it with +gst_discoverer_stream_info_list_free(). + + + + + + + a #GstDiscovererInfo + + + + + + Serializes @info to a #GVariant that can be parsed again +through gst_discoverer_info_from_variant(). + +Note that any #GstToc (s) that might have been discovered will not be serialized +for now. + + + A newly-allocated #GVariant representing @info. + + + + + A #GstDiscovererInfo + + + + A combination of #GstDiscovererSerializeFlags to specify +what needs to be serialized. + + + + + + + + + + Result values for the discovery process. + + The discovery was successful + + + the URI is invalid + + + an error happened and the GError is set + + + the discovery timed-out + + + the discoverer was already discovering a file + + + Some plugins are missing for full discovery + + + + You can use these flags to control what is serialized by +gst_discoverer_info_to_variant() + + Serialize only basic information, excluding +caps, tags and miscellaneous information + + + Serialize the caps for each stream + + + Serialize the tags for each stream + + + Serialize miscellaneous information for each stream + + + Serialize all the available info, including +caps, tags and miscellaneous information + + + + Base structure for information concerning a media stream. Depending on the +stream type, one can find more media-specific information in +#GstDiscovererAudioInfo, #GstDiscovererVideoInfo, and +#GstDiscovererContainerInfo. + +The #GstDiscovererStreamInfo represents the topology of the stream. Siblings +can be iterated over with gst_discoverer_stream_info_get_next() and +gst_discoverer_stream_info_get_previous(). Children (sub-streams) of a +stream can be accessed using the #GstDiscovererContainerInfo API. + +As a simple example, if you run #GstDiscoverer on an AVI file with one audio +and one video stream, you will get a #GstDiscovererContainerInfo +corresponding to the AVI container, which in turn will have a +#GstDiscovererAudioInfo sub-stream and a #GstDiscovererVideoInfo sub-stream +for the audio and video streams respectively. + + Decrements the reference count of all contained #GstDiscovererStreamInfo +and fress the #GList. + + + + + + + a #GList of #GstDiscovererStreamInfo + + + + + + + + + + the #GstCaps of the stream. Unref with +#gst_caps_unref after usage. + + + + + a #GstDiscovererStreamInfo + + + + + + This functions is deprecated since version 1.4, use +#gst_discoverer_info_get_missing_elements_installer_details + + + additional information regarding the stream (for +example codec version, profile, etc..). If you wish to use the #GstStructure +after the life-time of @info you will need to copy it. + + + + + a #GstDiscovererStreamInfo + + + + + + + + the next #GstDiscovererStreamInfo in a chain. %NULL +for final streams. +Unref with #gst_discoverer_stream_info_unref after usage. + + + + + a #GstDiscovererStreamInfo + + + + + + + + the previous #GstDiscovererStreamInfo in a chain. +%NULL for starting points. Unref with #gst_discoverer_stream_info_unref +after usage. + + + + + a #GstDiscovererStreamInfo + + + + + + + + the stream ID of this stream. If you wish to +use the stream ID after the life-time of @info you will need to copy it. + + + + + a #GstDiscovererStreamInfo + + + + + + + + the stream number, -1 if no index could be determined. This property +acts as a unique identifier as a 'int' for the stream. + + + + + a #GstDiscovererStreamInfo + + + + + + + + a human readable name for the stream type of the given @info (ex : "audio", +"container",...). + + + + + a #GstDiscovererStreamInfo + + + + + + + + the tags contained in this stream. If you wish to +use the tags after the life-time of @info you will need to copy them. + + + + + a #GstDiscovererStreamInfo + + + + + + + + the TOC contained in this stream. If you wish to +use the TOC after the life-time of @info you will need to copy it. + + + + + a #GstDiscovererStreamInfo + + + + + + + #GstDiscovererStreamInfo specific to subtitle streams (this includes text and +image based ones). + + + + the language of the stream, or NULL if unknown. + + + + + a #GstDiscovererSubtitleInfo + + + + + + + #GstDiscovererStreamInfo specific to video streams (this includes images). + + + + the average or nominal bitrate of the video stream in bits/second. + + + + + a #GstDiscovererVideoInfo + + + + + + + + the depth in bits of the video stream. + + + + + a #GstDiscovererVideoInfo + + + + + + + + the framerate of the video stream (denominator). + + + + + a #GstDiscovererVideoInfo + + + + + + + + the framerate of the video stream (numerator). + + + + + a #GstDiscovererVideoInfo + + + + + + + + the height of the video stream in pixels. + + + + + a #GstDiscovererVideoInfo + + + + + + + + the maximum bitrate of the video stream in bits/second. + + + + + a #GstDiscovererVideoInfo + + + + + + + + the Pixel Aspect Ratio (PAR) of the video stream (denominator). + + + + + a #GstDiscovererVideoInfo + + + + + + + + the Pixel Aspect Ratio (PAR) of the video stream (numerator). + + + + + a #GstDiscovererVideoInfo + + + + + + + + the width of the video stream in pixels. + + + + + a #GstDiscovererVideoInfo + + + + + + + + %TRUE if the video stream corresponds to an image (i.e. only contains +one frame). + + + + + a #GstDiscovererVideoInfo + + + + + + + + %TRUE if the stream is interlaced, else %FALSE. + + + + + a #GstDiscovererVideoInfo + + + + + + + + + + + + + + #GstEncodingTarget category for recording and capture. +Targets within this category are optimized for low latency encoding. + + + + + #GstEncodingTarget category for device-specific targets. +The name of the target will usually be the constructor and model of the device, +and that target will contain #GstEncodingProfiles suitable for that device. + + + + + #GstEncodingTarget category for file extensions. +The name of the target will be the name of the file extensions possible +for a particular target. Those targets are defining like 'default' formats +usually used for a particular file extension. + + + + + #GstEncodingTarget category for online-services. +The name of the target will usually be the name of the online service +and that target will contain #GstEncodingProfiles suitable for that online +service. + + + + + #GstEncodingTarget category for storage, archiving and editing targets. +Those targets can be lossless and/or provide very fast random access content. +The name of the target will usually be the container type or editing target, +and that target will contain #GstEncodingProfiles suitable for editing or +storage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Variant of #GstEncodingProfile for audio streams. + + + Creates a new #GstEncodingAudioProfile + +All provided allocatable arguments will be internally copied, so can be +safely freed/unreferenced after calling this method. + + + the newly created #GstEncodingAudioProfile. + + + + + the #GstCaps + + + + the preset(s) to use on the encoder, can be %NULL + + + + the #GstCaps used to restrict the input to the encoder, can be +NULL. See gst_encoding_profile_get_restriction() for more details. + + + + the number of time this stream must be used. 0 means any number of + times (including never) + + + + + + + + + + Encoding profiles for containers. Keeps track of a list of #GstEncodingProfile + + + Creates a new #GstEncodingContainerProfile. + + + The newly created #GstEncodingContainerProfile. + + + + + The name of the container profile, can be %NULL + + + + The description of the container profile, + can be %NULL + + + + The format to use for this profile + + + + The preset to use for this profile. + + + + + + Add a #GstEncodingProfile to the list of profiles handled by @container. + +No copy of @profile will be made, if you wish to use it elsewhere after this +method you should increment its reference count. + + + %TRUE if the @stream was properly added, else %FALSE. + + + + + the #GstEncodingContainerProfile to use + + + + the #GstEncodingProfile to add. + + + + + + Checks if @container contains a #GstEncodingProfile identical to +@profile. + + + %TRUE if @container contains a #GstEncodingProfile identical +to @profile, else %FALSE. + + + + + a #GstEncodingContainerProfile + + + + a #GstEncodingProfile + + + + + + + + +the list of contained #GstEncodingProfile. + + + + + + + a #GstEncodingContainerProfile + + + + + + + + + + The opaque base class object for all encoding profiles. This contains generic +information like name, description, format and preset. + + + Find the #GstEncodingProfile with the specified name and category. + + + The matching #GstEncodingProfile or %NULL. + + + + + The name of the target + + + + The name of the profile, if %NULL +provided, it will default to the encoding profile called `default`. + + + + The target category. Can be %NULL + + + + + + Creates a #GstEncodingProfile matching the formats from the given +#GstDiscovererInfo. Streams other than audio or video (eg, +subtitles), are currently ignored. + + + The new #GstEncodingProfile or %NULL. + + + + + The #GstDiscovererInfo to read from + + + + + + Makes a deep copy of @self + + + The copy of @self + + + + + The #GstEncodingProfile to copy + + + + + + Get whether the format that has been negotiated in at some point can be renegotiated +later during the encoding. + + + + + + + a #GstEncodingProfile + + + + + + + + the description of the profile, can be %NULL. + + + + + a #GstEncodingProfile + + + + + + + + The properties that are going to be set on the underlying element + + + + + a #GstEncodingProfile + + + + + + + + a suitable file extension for @profile, or NULL. + + + + + a #GstEncodingProfile + + + + + + + + (nullable): the #GstCaps corresponding to the media format used +in the profile. Unref after usage. + + + + + a #GstEncodingProfile + + + + + + Computes the full output caps that this @profile will be able to consume. + + + The full caps the given @profile can consume. Call +gst_caps_unref() when you are done with the caps. + + + + + a #GstEncodingProfile + + + + + + + + the name of the profile, can be %NULL. + + + + + a #GstEncodingProfile + + + + + + + + The number of times the profile is used in its parent +container profile. If 0, it is not a mandatory stream. + + + + + a #GstEncodingProfile + + + + + + + + the name of the #GstPreset to be used in the profile. +This is the name that has been set when saving the preset. + + + + + a #GstEncodingProfile + + + + + + + + the name of the #GstPreset factory to be used in the profile. + + + + + a #GstEncodingProfile + + + + + + + + The restriction #GstCaps to apply before the encoder +that will be used in the profile. The fields present in restriction caps are +properties of the raw stream (that is before encoding), such as height and +width for video and depth and sampling rate for audio. Does not apply to +#GstEncodingContainerProfile (since there is no corresponding raw stream). +Can be %NULL. Unref after usage. + + + + + a #GstEncodingProfile + + + + + + + + #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 + + + + + + + + the human-readable name of the type of @profile. + + + + + a #GstEncodingProfile + + + + + + + + + + + + + + + + + Checks whether the two #GstEncodingProfile are equal + + + %TRUE if @a and @b are equal, else %FALSE. + + + + + a #GstEncodingProfile + + + + a #GstEncodingProfile + + + + + + Sets whether the format that has been negotiated in at some point can be renegotiated +later during the encoding. + + + + + + + a #GstEncodingProfile + + + + Whether the format that has been negotiated first can be renegotiated +during the encoding + + + + + + Set @description as the given description for the @profile. A copy of +@description will be made internally. + + + + + + + a #GstEncodingProfile + + + + the description to set on the profile + + + + + + This allows setting the muxing/encoding element properties. + +**Set properties generically** + +``` properties + [element-properties, boolean-prop=true, string-prop="hi"] +``` + +**Mapping properties with well known element factories** + +``` properties +element-properties-map, map = { + [openh264enc, gop-size=32, ], + [x264enc, key-int-max=32, tune=zerolatency], + } +``` + + + + + + + a #GstEncodingProfile + + + + A #GstStructure defining the properties +to be set to the element the profile represents. + + + + + + Set whether the profile should be used or not. + + + + + + + a #GstEncodingProfile + + + + %FALSE to disable @profile, %TRUE to enable it + + + + + + Sets the media format used in the profile. + + + + + + + a #GstEncodingProfile + + + + the media format to use in the profile. + + + + + + Set @name as the given name for the @profile. A copy of @name will be made +internally. + + + + + + + a #GstEncodingProfile + + + + the name to set on the profile + + + + + + Set the number of time the profile is used in its parent +container profile. If 0, it is not a mandatory stream + + + + + + + a #GstEncodingProfile + + + + the number of time the profile can be used + + + + + + Sets the name of the #GstElement that implements the #GstPreset interface +to use for the profile. +This is the name that has been set when saving the preset. + + + + + + + a #GstEncodingProfile + + + + the element preset to use + + + + + + Sets the name of the #GstPreset's factory to be used in the profile. + + + + + + + a #GstEncodingProfile + + + + The name of the preset to use in this @profile. + + + + + + Set the restriction #GstCaps to apply before the encoder +that will be used in the profile. See gst_encoding_profile_get_restriction() +for more about restrictions. Does not apply to #GstEncodingContainerProfile. + + + + + + + a #GstEncodingProfile + + + + the restriction to apply + + + + + + If using a single segment, buffers will be retimestamped and segments will be +eat so as to appear as one segment. + +> *NOTE*: Single segment is not property supported when using +> #encodebin:avoid-reencoding + + + + + + + a #GstEncodingProfile + + + + #TRUE if the stream represented by @profile should use a +single segment before the encoder, #FALSE otherwise. + + + + + + A #GstStructure defining the properties to be set to the element +the profile represents. + +For example for `av1enc`: + +``` +element-properties,row-mt=true, end-usage=vbr +``` + + + + + + + + + + + Collection of #GstEncodingProfile for a specific target or use-case. + +When being stored/loaded, targets come from a specific category, like +#GST_ENCODING_CATEGORY_DEVICE. + + Creates a new #GstEncodingTarget. + +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 *should* be one of the existing +well-defined categories, like #GST_ENCODING_CATEGORY_DEVICE, but it +*can* be a application or user specific category if +needed. + + + The newly created #GstEncodingTarget or %NULL if +there was an error. + + + + + The name of the target. + + + + The name of the category to which this @target +belongs. For example: #GST_ENCODING_CATEGORY_DEVICE. + + + + A description of #GstEncodingTarget in the +current locale. + + + + A #GList of +#GstEncodingProfile. + + + + + + + + Searches for the #GstEncodingTarget with the given name, loads it +and returns it. + +If the category name is specified only targets from that category will be +searched for. + + + The #GstEncodingTarget if available, else %NULL. + + + + + the name of the #GstEncodingTarget to load (automatically +converted to lower case internally as capital letters are not +valid for target names). + + + + the name of the target category, like +#GST_ENCODING_CATEGORY_DEVICE. Can be %NULL + + + + + + Opens the provided file and returns the contained #GstEncodingTarget. + + + The #GstEncodingTarget contained in the file, else +%NULL + + + + + The file location to load the #GstEncodingTarget from + + + + + + Adds the given @profile to the @target. Each added profile must have +a unique name within the profile. + +The @target will steal a reference to the @profile. If you wish to use +the profile after calling this method, you should increase its reference +count. + + + %TRUE if the profile was added, else %FALSE. + + + + + the #GstEncodingTarget to add a profile to + + + + the #GstEncodingProfile to add + + + + + + + + The category of the @target. For example: +#GST_ENCODING_CATEGORY_DEVICE. + + + + + a #GstEncodingTarget + + + + + + + + The description of the @target. + + + + + a #GstEncodingTarget + + + + + + + + The name of the @target. + + + + + a #GstEncodingTarget + + + + + + + + The path to the @target file. + + + + + a #GstEncodingTarget + + + + + + + + The matching #GstEncodingProfile, or %NULL. + + + + + a #GstEncodingTarget + + + + the name of the profile to retrieve + + + + + + + + A list of +#GstEncodingProfile(s) this @target handles. + + + + + + + a #GstEncodingTarget + + + + + + Saves the @target to a default user-local directory. + + + %TRUE if the target was correctly saved, else %FALSE. + + + + + a #GstEncodingTarget + + + + + + Saves the @target to the provided file location. + + + %TRUE if the target was correctly saved, else %FALSE. + + + + + a #GstEncodingTarget + + + + the location to store the @target at. + + + + + + + Variant of #GstEncodingProfile for video streams, allows specifying the @pass. + + + Creates a new #GstEncodingVideoProfile + +All provided allocatable arguments will be internally copied, so can be +safely freed/unreferenced after calling this method. + +If you wish to control the pass number (in case of multi-pass scenarios), +please refer to the gst_encoding_video_profile_set_pass() documentation. + +If you wish to use/force a constant framerate please refer to the +gst_encoding_video_profile_set_variableframerate() documentation. + + + the newly created #GstEncodingVideoProfile. + + + + + the #GstCaps + + + + the preset(s) to use on the encoder, can be %NULL + + + + the #GstCaps used to restrict the input to the encoder, can be +NULL. See gst_encoding_profile_get_restriction() for more details. + + + + the number of time this stream must be used. 0 means any number of + times (including never) + + + + + + Get the pass number if this is part of a multi-pass profile. + + + The pass number. Starts at 1 for multi-pass. 0 if this is +not a multi-pass profile + + + + + a #GstEncodingVideoProfile + + + + + + > *NOTE*: Fixed framerate won't be enforced when #encodebin:avoid-reencoding +> is set. + + + Whether non-constant video framerate is allowed for encoding. + + + + + a #GstEncodingVideoProfile + + + + + + Sets the pass number of this video profile. The first pass profile should have +this value set to 1. If this video profile isn't part of a multi-pass profile, +you may set it to 0 (the default value). + + + + + + + a #GstEncodingVideoProfile + + + + the pass number for this profile + + + + + + If set to %TRUE, then the incoming stream will be allowed to have non-constant +framerate. If set to %FALSE (default value), then the incoming stream will +be normalized by dropping/duplicating frames in order to produce a +constance framerate. + + + + + + + a #GstEncodingVideoProfile + + + + a boolean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opaque context structure for the plugin installation. Use the provided +API to set details on it. + + + Creates a new #GstInstallPluginsContext. + + + a new #GstInstallPluginsContext. Free with +gst_install_plugins_context_free() when no longer needed + + + + + Copies a #GstInstallPluginsContext. + + + A copy of @ctx + + + + + a #GstInstallPluginsContext + + + + + + Frees a #GstInstallPluginsContext. + + + + + + + a #GstInstallPluginsContext + + + + + + This function is used to tell the external installer process whether it +should ask for confirmation or not before searching for missing plugins. + +If set, this option will be passed to the installer via a +--interaction=[show-confirm-search|hide-confirm-search] command line option. + + + + + + + a #GstInstallPluginsContext + + + + whether to ask for confirmation before searching for plugins + + + + + + This function is used to pass the calling application's desktop file ID to +the external installer process. + +A desktop file ID is the basename of the desktop file, including the +.desktop extension. + +If set, the desktop file ID will be passed to the installer via a +--desktop-id= command line option. + + + + + + + a #GstInstallPluginsContext + + + + the desktop file ID of the calling application + + + + + + Sets the startup notification ID for the launched process. + +This is typically used to to pass the current X11 event timestamp to the +external installer process. + +Startup notification IDs are defined in the +[FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt). + +If set, the ID will be passed to the installer via a +--startup-notification-id= command line option. + +GTK+/GNOME applications should be able to create a startup notification ID +like this: +|[ + timestamp = gtk_get_current_event_time (); + startup_id = g_strdup_printf ("_TIME%u", timestamp); +... +]| + + + + + + + a #GstInstallPluginsContext + + + + the startup notification ID + + + + + + This function is for X11-based applications (such as most Gtk/Qt +applications on linux/unix) only. You can use it to tell the external +installer the XID of your main application window. That way the installer +can make its own window transient to your application window during the +installation. + +If set, the XID will be passed to the installer via a --transient-for=XID +command line option. + +Gtk+/Gnome application should be able to obtain the XID of the top-level +window like this: +|[ +##include <gtk/gtk.h> +##ifdef GDK_WINDOWING_X11 +##include <gdk/gdkx.h> +##endif +... +##ifdef GDK_WINDOWING_X11 + xid = GDK_WINDOW_XWINDOW (GTK_WIDGET (application_window)->window); +##endif +... +]| + + + + + + + a #GstInstallPluginsContext + + + + the XWindow ID (XID) of the top-level application + + + + + + + The prototype of the callback function that will be called once the +external plugin installer program has returned. You only need to provide +a callback function if you are using the asynchronous interface. + + + + + + + whether the installation of the requested plugins succeeded or not + + + + the user data passed to gst_install_plugins_async() + + + + + + Result codes returned by gst_install_plugins_async() and +gst_install_plugins_sync(), and also the result code passed to the +#GstInstallPluginsResultFunc specified with gst_install_plugins_async(). + +These codes indicate success or failure of starting an external installer +program and to what extent the requested plugins could be installed. + + all of the requested plugins could be + installed + + + no appropriate installation candidate for + any of the requested plugins could be found. Only return this if nothing + has been installed. Return #GST_INSTALL_PLUGINS_PARTIAL_SUCCESS if + some (but not all) of the requested plugins could be installed. + + + an error occurred during the installation. If + this happens, the user has already seen an error message and another + one should not be displayed + + + some of the requested plugins could + be installed, but not all + + + the user has aborted the installation + + + the installer had an unclean exit code + (ie. death by signal) + + + the helper returned an invalid status code + + + returned by gst_install_plugins_async() to + indicate that everything went fine so far and the provided callback + will be called with the result of the installation later + + + some internal failure has + occurred when trying to start the installer + + + the helper script to call the + actual installer is not installed + + + a previously-started plugin + installation is still in progress, try again later + + + Convenience function to return the descriptive string associated +with a status code. This function returns English strings and +should not be used for user messages. It is here only to assist +in debugging. + + + a descriptive string for the status code in @ret + + + + + the return status code + + + + + + + + + + + + + + The major version of GStreamer's gst-plugins-base libraries at compile time. + + + + + 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-... + + + + + Flags that are returned by gst_pb_utils_get_caps_description_flags() and +describe the format of the caps. + + Caps describe a container format. + + + Caps describe an audio format, or a + container format that can store audio. + + + Caps describe an video format, or a + container format that can store video. + + + Caps describe an image format, or a + container format that can store image. + + + Caps describe an subtitle format, or a + container format that can store subtitles. + + + Container format is a tags container. + + + Container format can store any kind of + stream type. + + + Caps describe a metadata + format, or a container format that can store metadata. + + + + Sets the level and profile on @caps if it can be determined from +@audio_config. See gst_codec_utils_aac_get_level() and +gst_codec_utils_aac_get_profile() for more details on the parameters. +@caps must be audio/mpeg caps with an "mpegversion" field of either 2 or 4. +If mpegversion is 4, the "base-profile" field is also set in @caps. + + + %TRUE if the level and profile could be set, %FALSE otherwise. + + + + + the #GstCaps to which level and profile fields are to be added + + + + a pointer to the AudioSpecificConfig + as specified in the Elementary Stream Descriptor (esds) + in ISO/IEC 14496-1. (See below for more details) + + + + + + Length of @audio_config in bytes + + + + + + Returns the channels of the given AAC stream. + + + The channels or 0 if the channel could not be determined. + + + + + a pointer to the AudioSpecificConfig + as specified in the Elementary Stream Descriptor (esds) + in ISO/IEC 14496-1. + + + + + + Length of @audio_config in bytes + + + + + + Translates the sample rate to the index corresponding to it in AAC spec. + + + The AAC index for this sample rate, -1 if the rate is not a +valid AAC sample rate. + + + + + Sample rate + + + + + + Determines the level of a stream as defined in ISO/IEC 14496-3. For AAC LC +streams, the constraints from the AAC audio profile are applied. For AAC +Main, LTP, SSR and others, the Main profile is used. + +The @audio_config parameter follows the following format, starting from the +most significant bit of the first byte: + + * Bit 0:4 contains the AudioObjectType (if this is 0x5, then the + real AudioObjectType is carried after the rate and channel data) + * Bit 5:8 contains the sample frequency index (if this is 0xf, then the + next 24 bits define the actual sample frequency, and subsequent + fields are appropriately shifted). + * Bit 9:12 contains the channel configuration + + + The level as a const string and %NULL if the level could not be +determined. + + + + + a pointer to the AudioSpecificConfig + as specified in the Elementary Stream Descriptor (esds) + in ISO/IEC 14496-1. + + + + + + Length of @audio_config in bytes + + + + + + Returns the profile of the given AAC stream as a string. The profile is +normally determined using the AudioObjectType field which is in the first +5 bits of @audio_config + + + The profile as a const string and %NULL if the profile could not be +determined. + + + + + a pointer to the AudioSpecificConfig + as specified in the Elementary Stream Descriptor (esds) + in ISO/IEC 14496-1. + + + + + + Length of @audio_config in bytes + + + + + + Translates the sample rate index found in AAC headers to the actual sample +rate. + + + The sample rate if sr_idx is valid, 0 otherwise. + + + + + a pointer to the AudioSpecificConfig + as specified in the Elementary Stream Descriptor (esds) + in ISO/IEC 14496-1. + + + + + + Length of @audio_config + + + + + + Translates the sample rate index found in AAC headers to the actual sample +rate. + + + The sample rate if @sr_idx is valid, 0 otherwise. + + + + + Sample rate index as from the AudioSpecificConfig (MPEG-4 + container) or ADTS frame header + + + + + + Converts a RFC 6381 compatible codec string to #GstCaps. More than one codec +string can be present (separated by `,`). + +Registered codecs can be found at http://mp4ra.org/#/codecs + + + The corresponding #GstCaps or %NULL + + + + + A mime codec string field + + + + + + Converts @caps to a RFC 6381 compatible codec string if possible. + +Useful for providing the 'codecs' field inside the 'Content-Type' HTTP +header for containerized formats, such as mp4 or matroska. + +Registered codecs can be found at http://mp4ra.org/#/codecs + + + a RFC 6381 compatible codec string or %NULL + + + + + A #GstCaps to convert to mime codec + + + + + + Sets the level and profile in @caps if it can be determined from @sps. See +gst_codec_utils_h264_get_level() and gst_codec_utils_h264_get_profile() +for more details on the parameters. + + + %TRUE if the level and profile could be set, %FALSE otherwise. + + + + + the #GstCaps to which the level and profile are to be added + + + + Pointer to the sequence parameter set for the stream. + + + + + + Length of the data available in @sps. + + + + + + Converts the level indication (level_idc) in the stream's +sequence parameter set into a string. The SPS is expected to have the +same format as for gst_codec_utils_h264_get_profile(). + + + The level as a const string, or %NULL if there is an error. + + + + + Pointer to the sequence parameter set for the stream. + + + + + + Length of the data available in @sps. + + + + + + Transform a level string from the caps into the level_idc + + + the level_idc or 0 if the level is unknown + + + + + A level string from caps + + + + + + Converts the profile indication (profile_idc) in the stream's +sequence parameter set into a string. The SPS is expected to have the +following format, as defined in the H.264 specification. The SPS is viewed +as a bitstream here, with bit 0 being the most significant bit of the first +byte. + +* Bit 0:7 - Profile indication +* Bit 8 - constraint_set0_flag +* Bit 9 - constraint_set1_flag +* Bit 10 - constraint_set2_flag +* Bit 11 - constraint_set3_flag +* Bit 12 - constraint_set3_flag +* Bit 13:15 - Reserved +* Bit 16:24 - Level indication + + + The profile as a const string, or %NULL if there is an error. + + + + + Pointer to the sequence parameter set for the stream. + + + + + + Length of the data available in @sps. + + + + + + Parses profile, flags, and level from a H264 AVCC extradata/sequence_header. +These are most commonly retrieved from a video/x-h264 caps with a codec_data +buffer. + +The format of H264 AVCC extradata/sequence_header is documented in the +ITU-T H.264 specification section 7.3.2.1.1 as well as in ISO/IEC 14496-15 +section 5.3.3.1.2. + + + %TRUE on success, %FALSE on failure + + + + + H264 AVCC extradata + + + + + + length of @codec_data + + + + return location for h264 profile_idc or %NULL + + + + return location for h264 constraint set flags or %NULL + + + + return location h264 level_idc or %NULL + + + + + + Sets the level, tier and profile in @caps if it can be determined from +@profile_tier_level. See gst_codec_utils_h265_get_level(), +gst_codec_utils_h265_get_tier() and gst_codec_utils_h265_get_profile() +for more details on the parameters. + + + %TRUE if the level, tier, profile could be set, %FALSE otherwise. + + + + + the #GstCaps to which the level, tier and profile are to be added + + + + Pointer to the profile_tier_level + struct + + + + + + Length of the data available in @profile_tier_level. + + + + + + Converts the level indication (general_level_idc) in the stream's +profile_tier_level structure into a string. The profiel_tier_level is +expected to have the same format as for gst_codec_utils_h264_get_profile(). + + + The level as a const string, or %NULL if there is an error. + + + + + Pointer to the profile_tier_level + for the stream + + + + + + Length of the data available in @profile_tier_level. + + + + + + Transform a level string from the caps into the level_idc + + + the level_idc or 0 if the level is unknown + + + + + A level string from caps + + + + + + Converts the profile indication (general_profile_idc) in the stream's +profile_level_tier structure into a string. The profile_tier_level is +expected to have the following format, as defined in the H.265 +specification. The profile_tier_level is viewed as a bitstream here, +with bit 0 being the most significant bit of the first byte. + +* Bit 0:1 - general_profile_space +* Bit 2 - general_tier_flag +* Bit 3:7 - general_profile_idc +* Bit 8:39 - gernal_profile_compatibility_flags +* Bit 40 - general_progressive_source_flag +* Bit 41 - general_interlaced_source_flag +* Bit 42 - general_non_packed_constraint_flag +* Bit 43 - general_frame_only_constraint_flag +* Bit 44:87 - See below +* Bit 88:95 - general_level_idc + + + The profile as a const string, or %NULL if there is an error. + + + + + Pointer to the profile_tier_level + structure for the stream. + + + + + + Length of the data available in @profile_tier_level + + + + + + Converts the tier indication (general_tier_flag) in the stream's +profile_tier_level structure into a string. The profile_tier_level +is expected to have the same format as for gst_codec_utils_h264_get_profile(). + + + The tier as a const string, or %NULL if there is an error. + + + + + Pointer to the profile_tier_level + for the stream. + + + + + + Length of the data available in @profile_tier_level. + + + + + + Sets the level and profile in @caps if it can be determined from +@vis_obj_seq. See gst_codec_utils_mpeg4video_get_level() and +gst_codec_utils_mpeg4video_get_profile() for more details on the +parameters. + + + %TRUE if the level and profile could be set, %FALSE otherwise. + + + + + the #GstCaps to which the level and profile are to be added + + + + Pointer to the visual object + sequence for the stream. + + + + + + Length of the data available in @sps. + + + + + + Converts the level indication in the stream's visual object sequence into +a string. @vis_obj_seq is expected to be the data following the visual +object sequence start code. Only the first byte +(profile_and_level_indication) is used. + + + The level as a const string, or NULL if there is an error. + + + + + Pointer to the visual object + sequence for the stream. + + + + + + Length of the data available in @sps. + + + + + + Converts the profile indication in the stream's visual object sequence into +a string. @vis_obj_seq is expected to be the data following the visual +object sequence start code. Only the first byte +(profile_and_level_indication) is used. + + + The profile as a const string, or NULL if there is an error. + + + + + Pointer to the visual object + sequence for the stream. + + + + + + Length of the data available in @sps. + + + + + + Creates Opus caps from the given parameters. + + + The #GstCaps, or %NULL if the parameters would lead to +invalid Opus caps. + + + + + the sample rate + + + + the number of channels + + + + the channel mapping family + + + + the number of independent streams + + + + the number of stereo streams + + + + the mapping between the streams + + + + + + + + Creates Opus caps from the given OpusHead @header and comment header +@comments. + + + The #GstCaps. + + + + + OpusHead header + + + + Comment header or NULL + + + + + + Creates OpusHead header from the given parameters. + + + The #GstBuffer containing the OpusHead. + + + + + the sample rate + + + + the number of channels + + + + the channel mapping family + + + + the number of independent streams + + + + the number of stereo streams + + + + the mapping between the streams + + + + + + Pre-skip in 48kHz samples or 0 + + + + Output gain or 0 + + + + + + Parses Opus caps and fills the different fields with defaults if possible. + + + %TRUE if parsing was successful, %FALSE otherwise. + + + + + the #GstCaps to parse the data from + + + + the sample rate + + + + the number of channels + + + + the channel mapping family + + + + the number of independent streams + + + + the number of stereo streams + + + + the mapping between the streams + + + + + + + + Parses the OpusHead header. + + + %TRUE if parsing was successful, %FALSE otherwise. + + + + + the OpusHead #GstBuffer + + + + the sample rate + + + + the number of channels + + + + the channel mapping family + + + + the number of independent streams + + + + the number of stereo streams + + + + the mapping between the streams + + + + + + Pre-skip in 48kHz samples or 0 + + + + Output gain or 0 + + + + + + Increments the reference count of @info. + + + + a #GstDiscovererInfo + + + + + Decrements the reference count of @info. + + + + a #GstDiscovererInfo + + + + + Increments the reference count of @info. + + + + a #GstDiscovererStreamInfo + + + + + Decrements the reference count of @info. + + + + a #GstDiscovererStreamInfo + + + + + List all available #GstEncodingTarget for the specified category, or all categories +if @categoryname is %NULL. + + + The list of #GstEncodingTarget + + + + + + + The category, for ex: #GST_ENCODING_CATEGORY_DEVICE. +Can be %NULL. + + + + + + Lists all #GstEncodingTarget categories present on disk. + + + A list +of #GstEncodingTarget categories. + + + + + + + Increases the reference count of the @profile. + + + + a #GstEncodingProfile + + + + + Decreases the reference count of the @profile, possibly freeing the @profile. + + + + a #GstEncodingProfile + + + + + Increases the reference count of the @target. + + + + a #GstEncodingTarget + + + + + Decreases the reference count of the @target, possibly freeing it. + + + + a #GstEncodingTarget + + + + + Requests plugin installation without blocking. Once the plugins have been +installed or installation has failed, @func will be called with the result +of the installation and your provided @user_data pointer. + +This function requires a running GLib/Gtk main loop. If you are not +running a GLib/Gtk main loop, make sure to regularly call +g_main_context_iteration(NULL,FALSE). + +The installer strings that make up @detail are typically obtained by +calling gst_missing_plugin_message_get_installer_detail() on missing-plugin +messages that have been caught on a pipeline's bus or created by the +application via the provided API, such as gst_missing_element_message_new(). + +It is possible to request the installation of multiple missing plugins in +one go (as might be required if there is a demuxer for a certain format +installed but no suitable video decoder and no suitable audio decoder). + + + result code whether an external installer could be started + + + + + NULL-terminated array + of installer string details (see below) + + + + + + a #GstInstallPluginsContext, or NULL + + + + the function to call when the installer program returns + + + + the user data to pass to @func when called, or NULL + + + + + + Checks whether plugin installation (initiated by this application only) +is currently in progress. + + + TRUE if plugin installation is in progress, otherwise FALSE + + + + + Convenience function to return the descriptive string associated +with a status code. This function returns English strings and +should not be used for user messages. It is here only to assist +in debugging. + + + a descriptive string for the status code in @ret + + + + + the return status code + + + + + + Checks whether plugin installation is likely to be supported by the +current environment. This currently only checks whether the helper script +that is to be provided by the distribution or operating system vendor +exists. + + + TRUE if plugin installation is likely to be supported. + + + + + Requests plugin installation and block until the plugins have been +installed or installation has failed. + +This function should almost never be used, it only exists for cases where +a non-GLib main loop is running and the user wants to run it in a separate +thread and marshal the result back asynchronously into the main thread +using the other non-GLib main loop. You should almost always use +gst_install_plugins_async() instead of this function. + + + the result of the installation. + + + + + NULL-terminated array + of installer string details + + + + + + a #GstInstallPluginsContext, or NULL + + + + + + Checks whether @msg is a missing plugins message. + + + %TRUE if @msg is a missing-plugins message, otherwise %FALSE. + + + + + a #GstMessage + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions in +the case where the application knows exactly what kind of plugin it is +missing. + + + a newly-allocated detail string. Free string + with g_free() when not needed any longer. + + + + + the (fixed) caps for which a decoder element is needed + + + + + + Creates a missing-plugin message for @element to notify the application +that a decoder element for a particular set of (fixed) caps is missing. +This function is mainly for use in plugins. + + + a new #GstMessage + + + + + the #GstElement posting the message + + + + the (fixed) caps for which a decoder element is needed + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions in +the case where the application knows exactly what kind of plugin it is +missing. + + + a newly-allocated detail string. Free string + with g_free() when not needed any longer. + + + + + the name of the missing element (element factory), + e.g. "videoscale" or "cdparanoiasrc" + + + + + + Creates a missing-plugin message for @element to notify the application +that a certain required element is missing. This function is mainly for +use in plugins. + + + a new #GstMessage + + + + + the #GstElement posting the message + + + + the name of the missing element (element factory), + e.g. "videoscale" or "cdparanoiasrc" + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions in +the case where the application knows exactly what kind of plugin it is +missing. + + + a newly-allocated detail string. Free string + with g_free() when not needed any longer. + + + + + the (fixed) caps for which an encoder element is needed + + + + + + Creates a missing-plugin message for @element to notify the application +that an encoder element for a particular set of (fixed) caps is missing. +This function is mainly for use in plugins. + + + a new #GstMessage + + + + + the #GstElement posting the message + + + + the (fixed) caps for which an encoder element is needed + + + + + + Returns a localised string describing the missing feature, for use in +error dialogs and the like. Should never return NULL unless @msg is not +a valid missing-plugin message. + +This function is mainly for applications that need a human-readable string +describing a missing plugin, given a previously collected missing-plugin +message + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + a missing-plugin #GstMessage of type #GST_MESSAGE_ELEMENT + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions. + + + a newly-allocated detail string, or NULL on error. Free string + with g_free() when not needed any longer. + + + + + a missing-plugin #GstMessage of type #GST_MESSAGE_ELEMENT + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions in +the case where the application knows exactly what kind of plugin it is +missing. + + + a newly-allocated detail string. Free string + with g_free() when not needed any longer. + + + + + the URI protocol the missing source needs to implement, + e.g. "http" or "mms" + + + + + + Creates a missing-plugin message for @element to notify the application +that a sink element for a particular URI protocol is missing. This +function is mainly for use in plugins. + + + a new #GstMessage + + + + + the #GstElement posting the message + + + + the URI protocol the missing sink needs to implement, + e.g. "http" or "smb" + + + + + + Returns an opaque string containing all the details about the missing +element to be passed to an external installer called via +gst_install_plugins_async() or gst_install_plugins_sync(). + +This function is mainly for applications that call external plugin +installation mechanisms using one of the two above-mentioned functions in +the case where the application knows exactly what kind of plugin it is +missing. + + + a newly-allocated detail string. Free string + with g_free() when not needed any longer. + + + + + the URI protocol the missing source needs to implement, + e.g. "http" or "mms" + + + + + + Creates a missing-plugin message for @element to notify the application +that a source element for a particular URI protocol is missing. This +function is mainly for use in plugins. + + + a new #GstMessage + + + + + the #GstElement posting the message + + + + the URI protocol the missing source needs to implement, + e.g. "http" or "mms" + + + + + + Adds a codec tag describing the format specified by @caps to @taglist. + + + TRUE if a codec tag was added, FALSE otherwise. + + + + + a #GstTagList + + + + a GStreamer codec tag such as #GST_TAG_AUDIO_CODEC, + #GST_TAG_VIDEO_CODEC or #GST_TAG_CODEC. If none is specified, + the function will attempt to detect the appropriate category. + + + + the (fixed) #GstCaps for which a codec tag should be added. + + + + + + Returns flags that describe the format of the caps if known. No flags are +set for unknown caps. + + + #GstPbUtilsCapsDescriptionFlags that describe @caps, or no flags + if the caps are unknown. + + + + + the (fixed) #GstCaps for which flags are requested + + + + + + Returns a localised (as far as this is possible) string describing the +media format specified in @caps, for use in error dialogs or other messages +to be seen by the user. Should never return NULL unless @caps is invalid. + +Also see the convenience function +gst_pb_utils_add_codec_description_to_tag_list(). + + + a newly-allocated description string, or NULL on error. Free + string with g_free() when not needed any longer. + + + + + the (fixed) #GstCaps for which an format description is needed + + + + + + Returns a localised string describing an decoder for the format specified +in @caps, for use in error dialogs or other messages to be seen by the user. + +This function is mainly for internal use, applications would typically +use gst_missing_plugin_message_get_description() to get a description of +a missing feature from a missing-plugin message. + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + the (fixed) #GstCaps for which an decoder description is needed + + + + + + Returns a localised string describing the given element, for use in +error dialogs or other messages to be seen by the user. + +This function is mainly for internal use, applications would typically +use gst_missing_plugin_message_get_description() to get a description of +a missing feature from a missing-plugin message. + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + the name of the element, e.g. "giosrc" + + + + + + Returns a localised string describing an encoder for the format specified +in @caps, for use in error dialogs or other messages to be seen by the user. + +This function is mainly for internal use, applications would typically +use gst_missing_plugin_message_get_description() to get a description of +a missing feature from a missing-plugin message. + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + the (fixed) #GstCaps for which an encoder description is needed + + + + + + Returns a possible file extension for the given caps, if known. + + + a newly-allocated file extension string, or NULL on error. Free + string with g_free() when not needed any longer. + + + + + the (fixed) #GstCaps for which a file extension is needed + + + + + + Returns a localised string describing a sink element handling the protocol +specified in @protocol, for use in error dialogs or other messages to be +seen by the user. + +This function is mainly for internal use, applications would typically +use gst_missing_plugin_message_get_description() to get a description of +a missing feature from a missing-plugin message. + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + the protocol the sink element needs to handle, e.g. "http" + + + + + + Returns a localised string describing a source element handling the protocol +specified in @protocol, for use in error dialogs or other messages to be +seen by the user. + +This function is mainly for internal use, applications would typically +use gst_missing_plugin_message_get_description() to get a description of +a missing feature from a missing-plugin message. + + + a newly-allocated description string. Free + string with g_free() when not needed any longer. + + + + + the protocol the source element needs to handle, e.g. "http" + + + + + + Initialises the base utils support library. This function is not +thread-safe. Applications should call it after calling gst_init(), +plugins should call it from their plugin_init function. + +This function may be called multiple times. It will do nothing if the +library has already been initialised. + + + + + + + Gets the version number of the GStreamer Plugins Base libraries. + + + + + + + pointer to a guint to store the major version number, or %NULL + + + + pointer to a guint to store the minor version number, or %NULL + + + + pointer to a guint to store the micro version number, or %NULL + + + + pointer to a guint to store the nano version number, or %NULL + + + + + + This function returns a string that is useful for describing this version +of GStreamer's gst-plugins-base libraries to the outside world: user agent +strings, logging, about dialogs ... + + + a newly allocated string describing this version of gst-plugins-base + + + + + diff --git a/girs/GstPlay-1.0.gir b/girs/GstPlay-1.0.gir new file mode 100644 index 0000000000..d6c2c93317 --- /dev/null +++ b/girs/GstPlay-1.0.gir @@ -0,0 +1,2901 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a new #GstPlay instance. + +Video is going to be rendered by @video_renderer, or if %NULL is provided +no special video set up will be done and some default handling will be +performed. + + + a new #GstPlay instance + + + + + GstPlayVideoRenderer to use + + + + + + + + current position update interval in milliseconds + + + + + a #GstPlay configuration + + + + + + + + %TRUE if accurate seeking is enabled + + + + + a #GstPlay configuration + + + + + + Return the user agent which has been configured using +gst_play_config_set_user_agent() if any. + + + the configured agent, or %NULL + + + + + a #GstPlay configuration + + + + + + set desired interval in milliseconds between two position-updated messages. +pass 0 to stop updating the position. + + + + + + + a #GstPlay configuration + + + + interval in ms + + + + + + Enable or disable accurate seeking. When enabled, elements will try harder +to seek as accurately as possible to the requested seek position. Generally +it will be slower especially for formats that don't have any indexes or +timestamp markers in the stream. + +If accurate seeking is disabled, elements will seek as close as the request +position without slowing down seeking too much. + +Accurate seeking is disabled by default. + + + + + + + a #GstPlay configuration + + + + accurate seek or not + + + + + + Set the user agent to pass to the server if @play needs to connect +to a server during playback. This is typically used when playing HTTP +or RTSP streams. + + + + + + + a #GstPlay configuration + + + + the string to use as user agent + + + + + + + + A #GList of +matching #GstPlayAudioInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + A #GList of +matching #GstPlaySubtitleInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + A #GList of +matching #GstPlayVideoInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + A #gboolean indicating wheter the passes message represents a #GstPlay message or not. + + + + + A #GstMessage + + + + + + Frees a %NULL terminated array of #GstPlayVisualization. + + + + + + + a %NULL terminated array of #GstPlayVisualization to free + + + + + + + + + a %NULL terminated array containing all available + visualizations. Use gst_play_visualizations_free() after + usage. + + + + + + + Retrieve the current value of audio-video-offset property + + + The current value of audio-video-offset in nanoseconds + + + + + #GstPlay instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, between [0,1]. In case of + error -1 is returned. + + + + + #GstPlay instance + + + + #GstPlayColorBalanceType + + + + + + Get a copy of the current configuration of the play. This configuration +can either be modified and used for the gst_play_set_config() call +or it must be freed after usage. + + + a copy of the current configuration of @play. Use +gst_structure_free() after usage or gst_play_set_config(). + + + + + #GstPlay instance + + + + + + A Function to get current audio #GstPlayAudioInfo instance. + + + current audio track. + +The caller should free it with g_object_unref() + + + + + #GstPlay instance + + + + + + A Function to get current subtitle #GstPlaySubtitleInfo instance. + + + current subtitle track. + +The caller should free it with g_object_unref() + + + + + #GstPlay instance + + + + + + A Function to get current video #GstPlayVideoInfo instance. + + + current video track. + +The caller should free it with g_object_unref() + + + + + #GstPlay instance + + + + + + + + Name of the currently enabled + visualization. + g_free() after usage. + + + + + #GstPlay instance + + + + + + Retrieves the duration of the media stream that self represents. + + + the duration of the currently-playing media stream, in +nanoseconds. + + + + + #GstPlay instance + + + + + + A Function to get the current media info #GstPlayMediaInfo instance. + + + media info instance. + +The caller should free it with g_object_unref() + + + + + #GstPlay instance + + + + + + GstPlay API exposes a #GstBus instance which purpose is to provide data +structures representing play-internal events in form of #GstMessage<!-- -->s of +type GST_MESSAGE_APPLICATION. + +Each message carries a "play-message" field of type #GstPlayMessage. +Further fields of the message data are specific to each possible value of +that enumeration. + +Applications can consume the messages asynchronously within their own +event-loop / UI-thread etc. Note that in case the application does not +consume the messages, the bus will accumulate these internally and eventually +fill memory. To avoid that, the bus has to be set "flushing". + + + The play message bus instance + + + + + #GstPlay instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, Default: 0x00000000 "none + + + + + #GstPlay instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, Default: -1 "none" + + + + + #GstPlay instance + + + + + + + + %TRUE if the currently-playing stream is muted. + + + + + #GstPlay instance + + + + + + + + The internal playbin instance. + +The caller should free it with g_object_unref() + + + + + #GstPlay instance + + + + + + + + the absolute position time, in nanoseconds, of the +currently-playing stream. + + + + + #GstPlay instance + + + + + + + + current playback rate + + + + + #GstPlay instance + + + + + + current subtitle URI + + + URI of the current external subtitle. + g_free() after usage. + + + + + #GstPlay instance + + + + + + Retrieve the current value of subtitle-video-offset property + + + The current value of subtitle-video-offset in nanoseconds + + + + + #GstPlay instance + + + + + + Gets the URI of the currently-playing stream. + + + a string containing the URI of the +currently-playing stream. g_free() after usage. + + + + + #GstPlay instance + + + + + + Get a snapshot of the currently selected video stream, if any. The format can be +selected with @format and optional configuration is possible with @config +Currently supported settings are: +- width, height of type G_TYPE_INT +- pixel-aspect-ratio of type GST_TYPE_FRACTION + Except for GST_PLAY_THUMBNAIL_RAW_NATIVE format, if no config is set, pixel-aspect-ratio would be 1/1 + + + Current video snapshot sample or %NULL on failure + + + + + #GstPlay instance + + + + output format of the video snapshot + + + + Additional configuration + + + + + + Returns the current volume level, as a percentage between 0 and 1. + + + the volume as percentage between 0 and 1. + + + + + #GstPlay instance + + + + + + Checks whether the @play has color balance support available. + + + %TRUE if @play has color balance support. Otherwise, + %FALSE. + + + + + #GstPlay instance + + + + + + Pauses the current stream. + + + + + + + #GstPlay instance + + + + + + Request to play the loaded stream. + + + + + + + #GstPlay instance + + + + + + Seeks the currently-playing stream to the absolute @position time +in nanoseconds. + + + + + + + #GstPlay instance + + + + position to seek in nanoseconds + + + + + + + + %TRUE or %FALSE + +Sets the audio track @stream_index. + + + + + #GstPlay instance + + + + stream index + + + + + + Enable or disable the current audio track. + + + + + + + #GstPlay instance + + + + TRUE or FALSE + + + + + + Sets audio-video-offset property by value of @offset + + + + + + + #GstPlay instance + + + + #gint64 in nanoseconds + + + + + + Sets the current value of the indicated channel @type to the passed +value. + + + + + + + #GstPlay instance + + + + #GstPlayColorBalanceType + + + + The new value for the @type, ranged [0,1] + + + + + + Set the configuration of the play. If the play is already configured, and +the configuration haven't change, this function will return %TRUE. If the +play is not in the GST_PLAY_STATE_STOPPED, this method will return %FALSE +and active configuration will remain. + +@config is a #GstStructure that contains the configuration parameters for +the play. + +This function takes ownership of @config. + + + %TRUE when the configuration could be set. + + + + + #GstPlay instance + + + + a #GstStructure + + + + + + Sets the current value of the indicated mode @type to the passed +value. + + + + + + + #GstPlay instance + + + + The new value for the @type + + + + + + Sets the current value of the indicated mode @type to the passed +value. + + + + + + + #GstPlay instance + + + + The new value for the @type + + + + + + %TRUE if the currently-playing stream should be muted. + + + + + + + #GstPlay instance + + + + Mute state the should be set + + + + + + Playback at specified rate + + + + + + + #GstPlay instance + + + + playback rate + + + + + + + + %TRUE or %FALSE + +Sets the subtitle stack @stream_index. + + + + + #GstPlay instance + + + + stream index + + + + + + Enable or disable the current subtitle track. + + + + + + + #GstPlay instance + + + + TRUE or FALSE + + + + + + Sets the external subtitle URI. This should be combined with a call to +gst_play_set_subtitle_track_enabled(@play, TRUE) so the subtitles are actually +rendered. + + + + + + + #GstPlay instance + + + + subtitle URI + + + + + + Sets subtitle-video-offset property by value of @offset + + + + + + + #GstPlay instance + + + + #gint64 in nanoseconds + + + + + + Sets the next URI to play. + + + + + + + #GstPlay instance + + + + next URI to play. + + + + + + + + %TRUE or %FALSE + +Sets the video track @stream_index. + + + + + #GstPlay instance + + + + stream index + + + + + + Enable or disable the current video track. + + + + + + + #GstPlay instance + + + + TRUE or FALSE + + + + + + + + %TRUE if the visualizations was set correctly. Otherwise, +%FALSE. + + + + + #GstPlay instance + + + + visualization element obtained from +#gst_play_visualizations_get() + + + + + + Enable or disable the visualization. + + + + + + + #GstPlay instance + + + + TRUE or FALSE + + + + + + Sets the volume level of the stream as a percentage between 0 and 1. + + + + + + + #GstPlay instance + + + + the new volume level, as a percentage between 0 and 1 + + + + + + Stops playing the current stream and resets to the first position +in the stream. + + + + + + + #GstPlay instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstPlayStreamInfo specific to audio streams. + + + + + the audio bitrate in #GstPlayAudioInfo or -1 if unknown. + + + + + a #GstPlayAudioInfo + + + + + + + + the number of audio channels in #GstPlayAudioInfo or 0 if unknown. + + + + + a #GstPlayAudioInfo + + + + + + + + the language of the stream, or %NULL if unknown. + + + + + a #GstPlayAudioInfo + + + + + + + + the audio maximum bitrate in #GstPlayAudioInfo or -1 if unknown. + + + + + a #GstPlayAudioInfo + + + + + + + + the audio sample rate in #GstPlayAudioInfo or 0 if unknown. + + + + + a #GstPlayAudioInfo + + + + + + + + + + + + + + hue or color balance. + + + brightness or black level. + + + color saturation or chroma +gain. + + + contrast or luma gain. + + + Gets a string representing the given color balance type. + + + a string with the name of the color + balance type. + + + + + a #GstPlayColorBalanceType + + + + + + + + generic error. + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstPlayError + + + + + + + + + + + + Structure containing the media information of a URI. + + + + + A #GList of +matching #GstPlayAudioInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + the container format or %NULL if unknown. + + + + + a #GstPlayMediaInfo + + + + + + + + duration of the media. + + + + + a #GstPlayMediaInfo + + + + + + Function to get the image (or preview-image) stored in taglist. +Application can use `gst_sample_*_()` API's to get caps, buffer etc. + + + GstSample or %NULL. + + + + + a #GstPlayMediaInfo + + + + + + + + number of audio streams. + + + + + a #GstPlayMediaInfo + + + + + + + + number of total streams. + + + + + a #GstPlayMediaInfo + + + + + + + + number of subtitle streams. + + + + + a #GstPlayMediaInfo + + + + + + + + number of video streams. + + + + + a #GstPlayMediaInfo + + + + + + + + A #GList of +matching #GstPlayStreamInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + A #GList of +matching #GstPlaySubtitleInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + the tags contained in media info. + + + + + a #GstPlayMediaInfo + + + + + + + + the media title or %NULL if unknown. + + + + + a #GstPlayMediaInfo + + + + + + + + the URI associated with #GstPlayMediaInfo. + + + + + a #GstPlayMediaInfo + + + + + + + + A #GList of +matching #GstPlayVideoInfo. + + + + + + + a #GstPlayMediaInfo + + + + + + + + %TRUE if the media is live. + + + + + a #GstPlayMediaInfo + + + + + + + + %TRUE if the media is seekable. + + + + + a #GstPlayMediaInfo + + + + + + + + + + + +Types of messages that will be posted on the play API bus. + +See also #gst_play_get_message_bus() + + Source element was initalized for set URI + + + Sink position changed + + + Duration of stream changed + + + State changed, see #GstPlayState + + + Pipeline is in buffering state, message contains the percentage value of the decoding buffer + + + Sink has received EOS + + + Message contains an error + + + Message contains an error + + + Video sink received format in different dimensions than before + + + A media-info property has changed, message contains current #GstPlayMediaInfo + + + The volume of the audio ouput has changed + + + Audio muting flag has been toggled + + + Any pending seeking operation has been completed + + + + + a string with the name of the message. + + + + + a #GstPlayMessage + + + + + + Parse the given buffering-percent @msg and extract the corresponding value + + + + + + + A #GstMessage + + + + the resulting buffering percent + + + + + + Parse the given duration @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting duration + + + + + + Parse the given error @msg and extract the corresponding #GError + + + + + + + A #GstMessage + + + + the resulting error + + + + A #GstStructure containing additional details about the error + + + + + + Parse the given @msg and extract the corresponding media information + + + + + + + A #GstMessage + + + + the resulting media info + + + + + + Parse the given @msg and extract the corresponding audio muted state + + + + + + + A #GstMessage + + + + the resulting audio muted state + + + + + + Parse the given position @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting position + + + + + + Parse the given state @msg and extract the corresponding #GstPlayState + + + + + + + A #GstMessage + + + + the resulting play state + + + + + + Parse the given @msg and extract its #GstPlayMessage type. + + + + + + + A #GstMessage + + + + the resulting message type + + + + + + Parse the given @msg and extract the corresponding video dimensions + + + + + + + A #GstMessage + + + + the resulting video width + + + + the resulting video height + + + + + + Parse the given @msg and extract the corresponding audio volume + + + + + + + A #GstMessage + + + + the resulting audio volume + + + + + + Parse the given error @msg and extract the corresponding #GError warning + + + + + + + A #GstMessage + + + + the resulting warning + + + + A #GstStructure containing additional details about the warning + + + + + + + + + A bus-watching #GSource will be created and attached to the the +thread-default #GMainContext. The attached callback will emit the +corresponding signal for the message received. Matching signals for play +messages from the bus will be emitted by it on the created adapter object. + + + A new #GstPlaySignalAdapter to connect signal handlers to. + + + + + #GstPlay instance to emit signals for. + + + + + + Create an adapter that synchronously emits its signals, from the thread in +which the messages have been posted. + + + A new #GstPlaySignalAdapter to connect signal handlers to. + + + + + #GstPlay instance to emit signals for. + + + + + + A bus-watching #GSource will be created and attached to the @context. The +attached callback will emit the corresponding signal for the message +received. Matching signals for play messages from the bus will be emitted by +it on the created adapter object. + + + A new #GstPlaySignalAdapter to connect signal handlers to. + + + + + #GstPlay instance to emit signals for. + + + + A #GMainContext on which the main-loop will process play bus messages on. + + + + + + + + The #GstPlay owning this signal adapter. + + + + + #GstPlaySignalAdapter instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Emitted on errors. + + + + + + The error + + + + Additional error details + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Emitted on warnings. + + + + + + The warning + + + + Additional warning details + + + + + + + + + + + + raw native format. + + + raw xRGB format. + + + raw BGRx format. + + + jpeg format. + + + png format. + + + + + the play is stopped. + + + the play is buffering. + + + the play is paused. + + + the play is currently playing a +stream. + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstPlayState + + + + + + + Base structure for information concerning a media stream. Depending on +the stream type, one can find more media-specific information in +#GstPlayVideoInfo, #GstPlayAudioInfo, #GstPlaySubtitleInfo. + + + + + the #GstCaps of the stream or %NULL if +unknown. + + + + + a #GstPlayStreamInfo + + + + + + A string describing codec used in #GstPlayStreamInfo. + + + codec string or %NULL on unknown. + + + + + a #GstPlayStreamInfo + + + + + + Function to get stream index from #GstPlayStreamInfo instance or -1 if +unknown. + + + the stream index of this stream. + + + + + a #GstPlayStreamInfo + + + + + + Function to return human readable name for the stream type +of the given @info (ex: "audio", "video", "subtitle") + + + a human readable name + + + + + a #GstPlayStreamInfo + + + + + + + + the tags contained in this stream. + + + + + a #GstPlayStreamInfo + + + + + + + + + + #GstPlayStreamInfo specific to subtitle streams. + + + + + the language of the stream, or %NULL if unknown. + + + + + a #GstPlaySubtitleInfo + + + + + + + + + + #GstPlayStreamInfo specific to video streams. + + + + + the current bitrate of video in #GstPlayVideoInfo or -1 if unknown. + + + + + a #GstPlayVideoInfo + + + + + + + + + + + + a #GstPlayVideoInfo + + + + Numerator of frame rate + + + + Denominator of frame rate + + + + + + + + the height of video in #GstPlayVideoInfo or -1 if unknown. + + + + + a #GstPlayVideoInfo + + + + + + + + the maximum bitrate of video in #GstPlayVideoInfo or -1 if unknown. + + + + + a #GstPlayVideoInfo + + + + + + Returns the pixel aspect ratio in @par_n and @par_d + + + + + + + a #GstPlayVideoInfo + + + + numerator + + + + denominator + + + + + + + + the width of video in #GstPlayVideoInfo or -1 if unknown. + + + + + a #GstPlayVideoInfo + + + + + + + + + + + + + + + + + + + Window handle to use or %NULL + + + + + + + + + + + + Window handle to use or %NULL + + + + the custom video_sink element to be set for the video renderer + + + + + + Tell an overlay that it has been exposed. This will redraw the current frame +in the drawable even if the pipeline is PAUSED. + + + + + + + a #GstPlayVideoOverlayVideoRenderer instance. + + + + + + Return the currently configured render rectangle. See gst_play_video_overlay_video_renderer_set_render_rectangle() +for details. + + + + + + + a #GstPlayVideoOverlayVideoRenderer instance + + + + the horizontal offset of the render area inside the window + + + + the vertical offset of the render area inside the window + + + + the width of the render area inside the window + + + + the height of the render area inside the window + + + + + + + + The currently set, platform specific window +handle + + + + + #GstPlayVideoRenderer instance + + + + + + Configure a subregion as a video target within the window set by +gst_play_video_overlay_video_renderer_set_window_handle(). If this is not +used or not supported the video will fill the area of the window set as the +overlay to 100%. By specifying the rectangle, the video can be overlaid to +a specific region of that window only. After setting the new rectangle one +should call gst_play_video_overlay_video_renderer_expose() to force a +redraw. To unset the region pass -1 for the @width and @height parameters. + +This method is needed for non fullscreen video overlay in UI toolkits that +do not support subwindows. + + + + + + + a #GstPlayVideoOverlayVideoRenderer instance + + + + the horizontal offset of the render area inside the window + + + + the vertical offset of the render area inside the window + + + + the width of the render area inside the window + + + + the height of the render area inside the window + + + + + + Sets the platform specific window handle into which the video +should be rendered + + + + + + + #GstPlayVideoRenderer instance + + + + handle referencing to the platform specific window + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstPlayVisualization descriptor. + + + name of the visualization. + + + + description of the visualization. + + + + Makes a copy of the #GstPlayVisualization. The result must be +freed using gst_play_visualization_free(). + + + an allocated copy of @vis. + + + + + #GstPlayVisualization instance + + + + + + Frees a #GstPlayVisualization. + + + + + + + #GstPlayVisualization instance + + + + + + + Gets a string representing the given color balance type. + + + a string with the name of the color + balance type. + + + + + a #GstPlayColorBalanceType + + + + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstPlayError + + + + + + + + + + + + + a string with the name of the message. + + + + + a #GstPlayMessage + + + + + + Parse the given buffering-percent @msg and extract the corresponding value + + + + + + + A #GstMessage + + + + the resulting buffering percent + + + + + + Parse the given duration @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting duration + + + + + + Parse the given error @msg and extract the corresponding #GError + + + + + + + A #GstMessage + + + + the resulting error + + + + A #GstStructure containing additional details about the error + + + + + + Parse the given @msg and extract the corresponding media information + + + + + + + A #GstMessage + + + + the resulting media info + + + + + + Parse the given @msg and extract the corresponding audio muted state + + + + + + + A #GstMessage + + + + the resulting audio muted state + + + + + + Parse the given position @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting position + + + + + + Parse the given state @msg and extract the corresponding #GstPlayState + + + + + + + A #GstMessage + + + + the resulting play state + + + + + + Parse the given @msg and extract its #GstPlayMessage type. + + + + + + + A #GstMessage + + + + the resulting message type + + + + + + Parse the given @msg and extract the corresponding video dimensions + + + + + + + A #GstMessage + + + + the resulting video width + + + + the resulting video height + + + + + + Parse the given @msg and extract the corresponding audio volume + + + + + + + A #GstMessage + + + + the resulting audio volume + + + + + + Parse the given error @msg and extract the corresponding #GError warning + + + + + + + A #GstMessage + + + + the resulting warning + + + + A #GstStructure containing additional details about the warning + + + + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstPlayState + + + + + + diff --git a/girs/GstPlayer-1.0.gir b/girs/GstPlayer-1.0.gir new file mode 100644 index 0000000000..6e153adef2 --- /dev/null +++ b/girs/GstPlayer-1.0.gir @@ -0,0 +1,2422 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Starting from GStreamer 1.20, application developers are strongly advised to migrate to #GstPlay. +#GstPlayer will be deprecated in 1.20 and most likely removed by 1.24. + + + Creates a new #GstPlayer instance that uses @signal_dispatcher to dispatch +signals to some event loop system, or emits signals directly if NULL is +passed. See gst_player_g_main_context_signal_dispatcher_new(). + +Video is going to be rendered by @video_renderer, or if %NULL is provided +no special video set up will be done and some default handling will be +performed. + + + a new #GstPlayer instance + + + + + GstPlayerVideoRenderer to use + + + + GstPlayerSignalDispatcher to use + + + + + + + + current position update interval in milliseconds + + + + + a #GstPlayer configuration + + + + + + + + %TRUE if accurate seeking is enabled + + + + + a #GstPlayer configuration + + + + + + Return the user agent which has been configured using +gst_player_config_set_user_agent() if any. + + + the configured agent, or %NULL + + + + + a #GstPlayer configuration + + + + + + set interval in milliseconds between two position-updated signals. +pass 0 to stop updating the position. + + + + + + + a #GstPlayer configuration + + + + interval in ms + + + + + + Enable or disable accurate seeking. When enabled, elements will try harder +to seek as accurately as possible to the requested seek position. Generally +it will be slower especially for formats that don't have any indexes or +timestamp markers in the stream. + +If accurate seeking is disabled, elements will seek as close as the request +position without slowing down seeking too much. + +Accurate seeking is disabled by default. + + + + + + + a #GstPlayer configuration + + + + accurate seek or not + + + + + + Set the user agent to pass to the server if @player needs to connect +to a server during playback. This is typically used when playing HTTP +or RTSP streams. + + + + + + + a #GstPlayer configuration + + + + the string to use as user agent + + + + + + + + A #GList of +matching #GstPlayerAudioInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + A #GList of +matching #GstPlayerSubtitleInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + A #GList of +matching #GstPlayerVideoInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + Frees a %NULL terminated array of #GstPlayerVisualization. + + + + + + + a %NULL terminated array of #GstPlayerVisualization to free + + + + + + + + + a %NULL terminated array containing all available + visualizations. Use gst_player_visualizations_free() after + usage. + + + + + + + Retrieve the current value of audio-video-offset property + + + The current value of audio-video-offset in nanoseconds + + + + + #GstPlayer instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, between [0,1]. In case of + error -1 is returned. + + + + + #GstPlayer instance + + + + #GstPlayerColorBalanceType + + + + + + Get a copy of the current configuration of the player. This configuration +can either be modified and used for the gst_player_set_config() call +or it must be freed after usage. + + + a copy of the current configuration of @player. Use +gst_structure_free() after usage or gst_player_set_config(). + + + + + #GstPlayer instance + + + + + + A Function to get current audio #GstPlayerAudioInfo instance. + + + current audio track. + +The caller should free it with g_object_unref() + + + + + #GstPlayer instance + + + + + + A Function to get current subtitle #GstPlayerSubtitleInfo instance. + + + current subtitle track. + +The caller should free it with g_object_unref() + + + + + #GstPlayer instance + + + + + + A Function to get current video #GstPlayerVideoInfo instance. + + + current video track. + +The caller should free it with g_object_unref() + + + + + #GstPlayer instance + + + + + + + + Name of the currently enabled + visualization. + g_free() after usage. + + + + + #GstPlayer instance + + + + + + Retrieves the duration of the media stream that self represents. + + + the duration of the currently-playing media stream, in +nanoseconds. + + + + + #GstPlayer instance + + + + + + A Function to get the current media info #GstPlayerMediaInfo instance. + + + media info instance. + +The caller should free it with g_object_unref() + + + + + #GstPlayer instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, Default: 0x00000000 "none + + + + + #GstPlayer instance + + + + + + Retrieve the current value of the indicated @type. + + + The current value of @type, Default: -1 "none" + + + + + #GstPlayer instance + + + + + + + + %TRUE if the currently-playing stream is muted. + + + + + #GstPlayer instance + + + + + + + + The internal playbin instance. + +The caller should free it with g_object_unref() + + + + + #GstPlayer instance + + + + + + + + the absolute position time, in nanoseconds, of the +currently-playing stream. + + + + + #GstPlayer instance + + + + + + + + current playback rate + + + + + #GstPlayer instance + + + + + + current subtitle URI + + + URI of the current external subtitle. + g_free() after usage. + + + + + #GstPlayer instance + + + + + + Retrieve the current value of subtitle-video-offset property + + + The current value of subtitle-video-offset in nanoseconds + + + + + #GstPlayer instance + + + + + + Gets the URI of the currently-playing stream. + + + a string containing the URI of the +currently-playing stream. g_free() after usage. + + + + + #GstPlayer instance + + + + + + Get a snapshot of the currently selected video stream, if any. The format can be +selected with @format and optional configuration is possible with @config +Currently supported settings are: +- width, height of type G_TYPE_INT +- pixel-aspect-ratio of type GST_TYPE_FRACTION + Except for GST_PLAYER_THUMBNAIL_RAW_NATIVE format, if no config is set, pixel-aspect-ratio would be 1/1 + + + Current video snapshot sample or %NULL on failure + + + + + #GstPlayer instance + + + + output format of the video snapshot + + + + Additional configuration + + + + + + Returns the current volume level, as a percentage between 0 and 1. + + + the volume as percentage between 0 and 1. + + + + + #GstPlayer instance + + + + + + Checks whether the @player has color balance support available. + + + %TRUE if @player has color balance support. Otherwise, + %FALSE. + + + + + #GstPlayer instance + + + + + + Pauses the current stream. + + + + + + + #GstPlayer instance + + + + + + Request to play the loaded stream. + + + + + + + #GstPlayer instance + + + + + + Seeks the currently-playing stream to the absolute @position time +in nanoseconds. + + + + + + + #GstPlayer instance + + + + position to seek in nanoseconds + + + + + + + + %TRUE or %FALSE + +Sets the audio track @stream_idex. + + + + + #GstPlayer instance + + + + stream index + + + + + + Enable or disable the current audio track. + + + + + + + #GstPlayer instance + + + + TRUE or FALSE + + + + + + Sets audio-video-offset property by value of @offset + + + + + + + #GstPlayer instance + + + + #gint64 in nanoseconds + + + + + + Sets the current value of the indicated channel @type to the passed +value. + + + + + + + #GstPlayer instance + + + + #GstPlayerColorBalanceType + + + + The new value for the @type, ranged [0,1] + + + + + + Set the configuration of the player. If the player is already configured, and +the configuration haven't change, this function will return %TRUE. If the +player is not in the GST_PLAYER_STATE_STOPPED, this method will return %FALSE +and active configuration will remain. + +@config is a #GstStructure that contains the configuration parameters for +the player. + +This function takes ownership of @config. + + + %TRUE when the configuration could be set. + + + + + #GstPlayer instance + + + + a #GstStructure + + + + + + Sets the current value of the indicated mode @type to the passed +value. + + + + + + + #GstPlayer instance + + + + The new value for the @type + + + + + + Sets the current value of the indicated mode @type to the passed +value. + + + + + + + #GstPlayer instance + + + + The new value for the @type + + + + + + %TRUE if the currently-playing stream should be muted. + + + + + + + #GstPlayer instance + + + + Mute state the should be set + + + + + + Playback at specified rate + + + + + + + #GstPlayer instance + + + + playback rate + + + + + + + + %TRUE or %FALSE + +Sets the subtitle stack @stream_index. + + + + + #GstPlayer instance + + + + stream index + + + + + + Enable or disable the current subtitle track. + + + + + + + #GstPlayer instance + + + + TRUE or FALSE + + + + + + Sets the external subtitle URI. This should be combined with a call to +gst_player_set_subtitle_track_enabled(@player, TRUE) so the subtitles are actually +rendered. + + + + + + + #GstPlayer instance + + + + subtitle URI + + + + + + Sets subtitle-video-offset property by value of @offset + + + + + + + #GstPlayer instance + + + + #gint64 in nanoseconds + + + + + + Sets the next URI to play. + + + + + + + #GstPlayer instance + + + + next URI to play. + + + + + + + + %TRUE or %FALSE + +Sets the video track @stream_index. + + + + + #GstPlayer instance + + + + stream index + + + + + + Enable or disable the current video track. + + + + + + + #GstPlayer instance + + + + TRUE or FALSE + + + + + + + + %TRUE if the visualizations was set correctly. Otherwise, +%FALSE. + + + + + #GstPlayer instance + + + + visualization element obtained from +#gst_player_visualizations_get() + + + + + + Enable or disable the visualization. + + + + + + + #GstPlayer instance + + + + TRUE or FALSE + + + + + + Sets the volume level of the stream as a percentage between 0 and 1. + +This volume is a linear factor. For showing the volume in a GUI it +might make sense to first convert from a different format. Volume sliders +should usually use a cubic volume. See gst_stream_volume_convert_volume(). + + + + + + + #GstPlayer instance + + + + the new volume level, as a percentage between 0 and 1 + + + + + + Stops playing the current stream and resets to the first position +in the stream. + + + + + + + #GstPlayer instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstPlayerStreamInfo specific to audio streams. + + + + + the audio bitrate in #GstPlayerAudioInfo or -1 if unknown. + + + + + a #GstPlayerAudioInfo + + + + + + + + the number of audio channels in #GstPlayerAudioInfo or 0 if +unknown. + + + + + a #GstPlayerAudioInfo + + + + + + + + the language of the stream, or NULL if unknown. + + + + + a #GstPlayerAudioInfo + + + + + + + + the audio maximum bitrate in #GstPlayerAudioInfo or -1 if unknown. + + + + + a #GstPlayerAudioInfo + + + + + + + + the audio sample rate in #GstPlayerAudioInfo or 0 if unknown. + + + + + a #GstPlayerAudioInfo + + + + + + + + + + + + + + hue or color balance. + + + brightness or black level. + + + color saturation or chroma +gain. + + + contrast or luma gain. + + + Gets a string representing the given color balance type. + + + a string with the name of the color + balance type. + + + + + a #GstPlayerColorBalanceType + + + + + + + + generic error. + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstPlayerError + + + + + + + + + + + + + + + Creates a new GstPlayerSignalDispatcher that uses @application_context, +or the thread default one if %NULL is used. See gst_player_new(). + + + the new GstPlayerSignalDispatcher + + + + + GMainContext to use or %NULL + + + + + + + + + + + + + Structure containing the media information of a URI. + + + + + A #GList of +matching #GstPlayerAudioInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + the container format or %NULL if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + duration of the media or %GST_CLOCK_TIME_NONE if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + Function to get the image (or preview-image) stored in taglist. +Application can use `gst_sample_*_()` API's to get caps, buffer etc. + + + GstSample or %NULL. + + + + + a #GstPlayerMediaInfo + + + + + + + + number of audio streams or 0 if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + number of total streams or 0 if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + number of subtitle streams or 0 if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + number of video streams or 0 if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + A #GList of +matching #GstPlayerStreamInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + A #GList of +matching #GstPlayerSubtitleInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + the tags contained in media info. + + + + + a #GstPlayerMediaInfo + + + + + + + + the media title or %NULL if unknown. + + + + + a #GstPlayerMediaInfo + + + + + + + + the URI associated with #GstPlayerMediaInfo. + + + + + a #GstPlayerMediaInfo + + + + + + + + A #GList of +matching #GstPlayerVideoInfo. + + + + + + + a #GstPlayerMediaInfo + + + + + + + + %TRUE if the media is live. + + + + + a #GstPlayerMediaInfo + + + + + + + + %TRUE if the media is seekable. + + + + + a #GstPlayerMediaInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the player is stopped. + + + the player is buffering. + + + the player is paused. + + + the player is currently playing a +stream. + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstPlayerState + + + + + + + Base structure for information concerning a media stream. Depending on +the stream type, one can find more media-specific information in +#GstPlayerVideoInfo, #GstPlayerAudioInfo, #GstPlayerSubtitleInfo. + + + + + the #GstCaps of the stream. + + + + + a #GstPlayerStreamInfo + + + + + + A string describing codec used in #GstPlayerStreamInfo. + + + codec string or %NULL on unknown. + + + + + a #GstPlayerStreamInfo + + + + + + Function to get stream index from #GstPlayerStreamInfo instance or -1 if +unknown. + + + the stream index of this stream. + + + + + a #GstPlayerStreamInfo + + + + + + Function to return human readable name for the stream type +of the given @info (ex: "audio", "video", "subtitle") + + + a human readable name + + + + + a #GstPlayerStreamInfo + + + + + + + + the tags contained in this stream. + + + + + a #GstPlayerStreamInfo + + + + + + + + + + #GstPlayerStreamInfo specific to subtitle streams. + + + + + the language of the stream, or %NULL if unknown. + + + + + a #GstPlayerSubtitleInfo + + + + + + + + + + #GstPlayerStreamInfo specific to video streams. + + + + + the current bitrate of video in #GstPlayerVideoInfo or -1 if +unknown. + + + + + a #GstPlayerVideoInfo + + + + + + + + + + + + a #GstPlayerVideoInfo + + + + Numerator of frame rate + + + + Denominator of frame rate + + + + + + + + the height of video in #GstPlayerVideoInfo or -1 if unknown. + + + + + a #GstPlayerVideoInfo + + + + + + + + the maximum bitrate of video in #GstPlayerVideoInfo or -1 if +unknown. + + + + + a #GstPlayerVideoInfo + + + + + + Returns the pixel aspect ratio in @par_n and @par_d + + + + + + + a #GstPlayerVideoInfo + + + + numerator + + + + denominator + + + + + + + + the width of video in #GstPlayerVideoInfo or -1 if unknown. + + + + + a #GstPlayerVideoInfo + + + + + + + + + + + + + + + + + + + Window handle to use or %NULL + + + + + + + + + + + + Window handle to use or %NULL + + + + the custom video_sink element to be set for the video renderer + + + + + + Tell an overlay that it has been exposed. This will redraw the current frame +in the drawable even if the pipeline is PAUSED. + + + + + + + a #GstPlayerVideoOverlayVideoRenderer instance. + + + + + + Return the currently configured render rectangle. See gst_player_video_overlay_video_renderer_set_render_rectangle() +for details. + + + + + + + a #GstPlayerVideoOverlayVideoRenderer instance + + + + the horizontal offset of the render area inside the window + + + + the vertical offset of the render area inside the window + + + + the width of the render area inside the window + + + + the height of the render area inside the window + + + + + + + + The currently set, platform specific window +handle + + + + + #GstPlayerVideoRenderer instance + + + + + + Configure a subregion as a video target within the window set by +gst_player_video_overlay_video_renderer_set_window_handle(). If this is not +used or not supported the video will fill the area of the window set as the +overlay to 100%. By specifying the rectangle, the video can be overlaid to +a specific region of that window only. After setting the new rectangle one +should call gst_player_video_overlay_video_renderer_expose() to force a +redraw. To unset the region pass -1 for the @width and @height parameters. + +This method is needed for non fullscreen video overlay in UI toolkits that +do not support subwindows. + + + + + + + a #GstPlayerVideoOverlayVideoRenderer instance + + + + the horizontal offset of the render area inside the window + + + + the vertical offset of the render area inside the window + + + + the width of the render area inside the window + + + + the height of the render area inside the window + + + + + + Sets the platform specific window handle into which the video +should be rendered + + + + + + + #GstPlayerVideoRenderer instance + + + + handle referencing to the platform specific window + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstPlayerVisualization descriptor. + + + name of the visualization. + + + + description of the visualization. + + + + Makes a copy of the #GstPlayerVisualization. The result must be +freed using gst_player_visualization_free(). + + + an allocated copy of @vis. + + + + + #GstPlayerVisualization instance + + + + + + Frees a #GstPlayerVisualization. + + + + + + + #GstPlayerVisualization instance + + + + + + + Gets a string representing the given color balance type. + + + a string with the name of the color + balance type. + + + + + a #GstPlayerColorBalanceType + + + + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstPlayerError + + + + + + + + + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstPlayerState + + + + + + diff --git a/girs/GstRtp-1.0.gir b/girs/GstRtp-1.0.gir new file mode 100644 index 0000000000..4dad967d07 --- /dev/null +++ b/girs/GstRtp-1.0.gir @@ -0,0 +1,6561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: The API in this module is not yet declared stable. + +The GstRTPCBuffer helper functions makes it easy to parse and create regular +#GstBuffer objects that contain compound RTCP packets. These buffers are typically +of 'application/x-rtcp' #GstCaps. + +An RTCP buffer consists of 1 or more #GstRTCPPacket structures that you can +retrieve with gst_rtcp_buffer_get_first_packet(). #GstRTCPPacket acts as a pointer +into the RTCP buffer; you can move to the next packet with +gst_rtcp_packet_move_to_next(). + + + + + + + + + Add a new packet of @type to @rtcp. @packet will point to the newly created +packet. + + + %TRUE if the packet could be created. This function returns %FALSE +if the max mtu is exceeded for the buffer. + + + + + a valid RTCP buffer + + + + the #GstRTCPType of the new packet + + + + pointer to new packet + + + + + + Initialize a new #GstRTCPPacket pointer that points to the first packet in +@rtcp. + + + TRUE if the packet existed in @rtcp. + + + + + a valid RTCP buffer + + + + a #GstRTCPPacket + + + + + + Get the number of RTCP packets in @rtcp. + + + the number of RTCP packets in @rtcp. + + + + + a valid RTCP buffer + + + + + + Finish @rtcp after being constructed. This function is usually called +after gst_rtcp_buffer_map() and after adding the RTCP items to the new buffer. + +The function adjusts the size of @rtcp with the total length of all the +added packets. + + + + + + + a buffer with an RTCP packet + + + + + + Open @buffer for reading or writing, depending on @flags. The resulting RTCP +buffer state is stored in @rtcp. + + + + + + + a buffer with an RTCP packet + + + + flags for the mapping + + + + resulting #GstRTCPBuffer + + + + + + Create a new buffer for constructing RTCP packets. The packet will have a +maximum size of @mtu. + + + A newly allocated buffer. + + + + + the maximum mtu size. + + + + + + Create a new buffer and set the data to a copy of @len +bytes of @data and the size to @len. The data will be freed when the buffer +is freed. + + + A newly allocated buffer with a copy of @data and of size @len. + + + + + data for the new buffer + + + + + + the length of data + + + + + + Create a new buffer and set the data and size of the buffer to @data and @len +respectively. @data will be freed when the buffer is unreffed, so this +function transfers ownership of @data to the new buffer. + + + A newly allocated buffer with @data and of size @len. + + + + + data for the new buffer + + + + + + the length of data + + + + + + Check if the data pointed to by @buffer is a valid RTCP packet using +gst_rtcp_buffer_validate_data(). + + + TRUE if @buffer is a valid RTCP packet. + + + + + the buffer to validate + + + + + + Check if the @data and @size point to the data of a valid compound, +non-reduced size RTCP packet. +Use this function to validate a packet before using the other functions in +this module. + + + TRUE if the data points to a valid RTCP packet. + + + + + the data to validate + + + + + + the length of @data to validate + + + + + + Check if the @data and @size point to the data of a valid RTCP packet. +Use this function to validate a packet before using the other functions in +this module. + +This function is updated to support reduced size rtcp packets according to +RFC 5506 and will validate full compound RTCP packets as well as reduced +size RTCP packets. + + + TRUE if the data points to a valid RTCP packet. + + + + + the data to validate + + + + + + the length of @data to validate + + + + + + Check if the data pointed to by @buffer is a valid RTCP packet using +gst_rtcp_buffer_validate_reduced(). + + + TRUE if @buffer is a valid RTCP packet. + + + + + the buffer to validate + + + + + + + Different types of feedback messages. + + Invalid type + + + Generic NACK + + + Temporary Maximum Media Stream Bit Rate Request + + + Temporary Maximum Media Stream Bit Rate + Notification + + + Request an SR packet for early + synchronization + + + + + Picture Loss Indication + + + Slice Loss Indication + + + Reference Picture Selection Indication + + + Application layer Feedback + + + Full Intra Request Command + + + Temporal-Spatial Trade-off Request + + + Temporal-Spatial Trade-off Notification + + + Video Back Channel Message + + + + Data structure that points to a packet at @offset in @buffer. +The size of the structure is made public to allow stack allocations. + + + pointer to RTCP buffer + + + + offset of packet in buffer data + + + + + + + + + + + + + + + + + + + + + + + + + Add profile-specific extension @data to @packet. If @packet already +contains profile-specific extension @data will be appended to the existing +extension. + + + %TRUE if the profile specific extension data was added. + + + + + a valid SR or RR #GstRTCPPacket + + + + profile-specific data + + + + + + length of the profile-specific data in bytes + + + + + + Add a new report block to @packet with the given values. + + + %TRUE if the packet was created. This function can return %FALSE if +the max MTU is exceeded or the number of report blocks is greater than +#GST_RTCP_MAX_RB_COUNT. + + + + + a valid SR or RR #GstRTCPPacket + + + + data source being reported + + + + fraction lost since last SR/RR + + + + the cumululative number of packets lost + + + + the extended last sequence number received + + + + the interarrival jitter + + + + the last SR packet from this source + + + + the delay since last SR packet + + + + + + Get the application-dependent data attached to a RTPFB or PSFB @packet. + + + A pointer to the data + + + + + a valid APP #GstRTCPPacket + + + + + + Get the length of the application-dependent data attached to an APP +@packet. + + + The length of data in 32-bit words. + + + + + a valid APP #GstRTCPPacket + + + + + + Get the name field of the APP @packet. + + + The 4-byte name field, not zero-terminated. + + + + + a valid APP #GstRTCPPacket + + + + + + Get the SSRC/CSRC field of the APP @packet. + + + The SSRC/CSRC. + + + + + a valid APP #GstRTCPPacket + + + + + + Get the subtype field of the APP @packet. + + + The subtype. + + + + + a valid APP #GstRTCPPacket + + + + + + Set the length of the application-dependent data attached to an APP +@packet. + + + %TRUE if there was enough space in the packet to add this much +data. + + + + + a valid APP #GstRTCPPacket + + + + Length of the data in 32-bit words + + + + + + Set the name field of the APP @packet. + + + + + + + a valid APP #GstRTCPPacket + + + + 4-byte ASCII name + + + + + + Set the SSRC/CSRC field of the APP @packet. + + + + + + + a valid APP #GstRTCPPacket + + + + SSRC/CSRC of the packet + + + + + + Set the subtype field of the APP @packet. + + + + + + + a valid APP #GstRTCPPacket + + + + subtype of the packet + + + + + + Add @ssrc to the BYE @packet. + + + %TRUE if the ssrc was added. This function can return %FALSE if +the max MTU is exceeded or the number of sources blocks is greater than +#GST_RTCP_MAX_BYE_SSRC_COUNT. + + + + + a valid BYE #GstRTCPPacket + + + + an SSRC to add + + + + + + Adds @len SSRCs in @ssrc to BYE @packet. + + + %TRUE if the all the SSRCs were added. This function can return %FALSE if +the max MTU is exceeded or the number of sources blocks is greater than +#GST_RTCP_MAX_BYE_SSRC_COUNT. + + + + + a valid BYE #GstRTCPPacket + + + + an array of SSRCs to add + + + + + + number of elements in @ssrc + + + + + + Get the @nth SSRC of the BYE @packet. + + + The @nth SSRC of @packet. + + + + + a valid BYE #GstRTCPPacket + + + + the nth SSRC to get + + + + + + Get the reason in @packet. + + + The reason for the BYE @packet or NULL if the packet did not contain +a reason string. The string must be freed with g_free() after usage. + + + + + a valid BYE #GstRTCPPacket + + + + + + Get the length of the reason string. + + + The length of the reason string or 0 when there is no reason string +present. + + + + + a valid BYE #GstRTCPPacket + + + + + + Get the number of SSRC fields in @packet. + + + The number of SSRC fields in @packet. + + + + + a valid BYE #GstRTCPPacket + + + + + + Set the reason string to @reason in @packet. + + + TRUE if the string could be set. + + + + + a valid BYE #GstRTCPPacket + + + + a reason string + + + + + + The profile-specific extension data is copied into a new allocated +memory area @data. This must be freed with g_free() after usage. + + + %TRUE if there was valid data. + + + + + a valid SR or RR #GstRTCPPacket + + + + result profile-specific data + + + + + + length of the profile-specific extension data + + + + + + Get the Feedback Control Information attached to a RTPFB or PSFB @packet. + + + a pointer to the FCI + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + + + Get the length of the Feedback Control Information attached to a +RTPFB or PSFB @packet. + + + The length of the FCI in 32-bit words. + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + + + Get the media SSRC field of the RTPFB or PSFB @packet. + + + the media SSRC. + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + + + Get the sender SSRC field of the RTPFB or PSFB @packet. + + + the sender SSRC. + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + + + Get the feedback message type of the FB @packet. + + + The feedback message type. + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + + + Set the length of the Feedback Control Information attached to a +RTPFB or PSFB @packet. + + + %TRUE if there was enough space in the packet to add this much FCI + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + Length of the FCI in 32-bit words + + + + + + Set the media SSRC field of the RTPFB or PSFB @packet. + + + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + a media SSRC + + + + + + Set the sender SSRC field of the RTPFB or PSFB @packet. + + + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + a sender SSRC + + + + + + Set the feedback message type of the FB @packet. + + + + + + + a valid RTPFB or PSFB #GstRTCPPacket + + + + the #GstRTCPFBType to set + + + + + + Get the count field in @packet. + + + The count field in @packet or -1 if @packet does not point to a +valid packet. + + + + + a valid #GstRTCPPacket + + + + + + Get the length field of @packet. This is the length of the packet in +32-bit words minus one. + + + The length field of @packet. + + + + + a valid #GstRTCPPacket + + + + + + Get the packet padding of the packet pointed to by @packet. + + + If the packet has the padding bit set. + + + + + a valid #GstRTCPPacket + + + + + + + + %TRUE if there was valid data. + + + + + a valid SR or RR #GstRTCPPacket + + + + result profile-specific data + + + + + + result length of the profile-specific data + + + + + + + + The number of 32-bit words containing profile-specific extension + data from @packet. + + + + + a valid SR or RR #GstRTCPPacket + + + + + + Parse the values of the @nth report block in @packet and store the result in +the values. + + + + + + + a valid SR or RR #GstRTCPPacket + + + + the nth report block in @packet + + + + result for data source being reported + + + + result for fraction lost since last SR/RR + + + + result for the cumululative number of packets lost + + + + result for the extended last sequence number received + + + + result for the interarrival jitter + + + + result for the last SR packet from this source + + + + result for the delay since last SR packet + + + + + + Get the number of report blocks in @packet. + + + The number of report blocks in @packet. + + + + + a valid SR or RR #GstRTCPPacket + + + + + + Get the packet type of the packet pointed to by @packet. + + + The packet type or GST_RTCP_TYPE_INVALID when @packet is not +pointing to a valid packet. + + + + + a valid #GstRTCPPacket + + + + + + Move the packet pointer @packet to the next packet in the payload. +Use gst_rtcp_buffer_get_first_packet() to initialize @packet. + + + TRUE if @packet is pointing to a valid packet after calling this +function. + + + + + a #GstRTCPPacket + + + + + + Removes the packet pointed to by @packet and moves pointer to the next one + + + TRUE if @packet is pointing to a valid packet after calling this +function. + + + + + a #GstRTCPPacket + + + + + + Get the ssrc field of the RR @packet. + + + the ssrc. + + + + + a valid RR #GstRTCPPacket + + + + + + Set the ssrc field of the RR @packet. + + + + + + + a valid RR #GstRTCPPacket + + + + the SSRC to set + + + + + + Add a new SDES entry to the current item in @packet. + + + %TRUE if the item could be added, %FALSE if the MTU has been +reached. + + + + + a valid SDES #GstRTCPPacket + + + + the #GstRTCPSDESType of the SDES entry + + + + the data length + + + + the data + + + + + + + + Add a new SDES item for @ssrc to @packet. + + + %TRUE if the item could be added, %FALSE if the maximum amount of +items has been exceeded for the SDES packet or the MTU has been reached. + + + + + a valid SDES #GstRTCPPacket + + + + the SSRC of the new item to add + + + + + + This function is like gst_rtcp_packet_sdes_get_entry() but it returns a +null-terminated copy of the data instead. use g_free() after usage. + + + %TRUE if there was valid data. + + + + + a valid SDES #GstRTCPPacket + + + + result of the entry type + + + + result length of the entry data + + + + result entry data + + + + + + + + Move to the first SDES entry in the current item. + + + %TRUE if there was a first entry. + + + + + a valid SDES #GstRTCPPacket + + + + + + Move to the first SDES item in @packet. + + + TRUE if there was a first item. + + + + + a valid SDES #GstRTCPPacket + + + + + + Get the data of the current SDES item entry. @type (when not NULL) will +contain the type of the entry. @data (when not NULL) will point to @len +bytes. + +When @type refers to a text item, @data will point to a UTF8 string. Note +that this UTF8 string is NOT null-terminated. Use +gst_rtcp_packet_sdes_copy_entry() to get a null-terminated copy of the entry. + + + %TRUE if there was valid data. + + + + + a valid SDES #GstRTCPPacket + + + + result of the entry type + + + + result length of the entry data + + + + result entry data + + + + + + + + Get the number of items in the SDES packet @packet. + + + The number of items in @packet. + + + + + a valid SDES #GstRTCPPacket + + + + + + Get the SSRC of the current SDES item. + + + the SSRC of the current item. + + + + + a valid SDES #GstRTCPPacket + + + + + + Move to the next SDES entry in the current item. + + + %TRUE if there was a next entry. + + + + + a valid SDES #GstRTCPPacket + + + + + + Move to the next SDES item in @packet. + + + TRUE if there was a next item. + + + + + a valid SDES #GstRTCPPacket + + + + + + Set the @nth new report block in @packet with the given values. + +Note: Not implemented. + + + + + + + a valid SR or RR #GstRTCPPacket + + + + the nth report block to set + + + + data source being reported + + + + fraction lost since last SR/RR + + + + the cumululative number of packets lost + + + + the extended last sequence number received + + + + the interarrival jitter + + + + the last SR packet from this source + + + + the delay since last SR packet + + + + + + Parse the SR sender info and store the values. + + + + + + + a valid SR #GstRTCPPacket + + + + result SSRC + + + + result NTP time + + + + result RTP time + + + + result packet count + + + + result octet count + + + + + + Set the given values in the SR packet @packet. + + + + + + + a valid SR #GstRTCPPacket + + + + the SSRC + + + + the NTP time + + + + the RTP time + + + + the packet count + + + + the octet count + + + + + + Move to the first extended report block in XR @packet. + + + TRUE if there was a first extended report block. + + + + + a valid XR #GstRTCPPacket + + + + + + + + The number of 32-bit words containing type-specific block + data from @packet. + + + + + a valid XR #GstRTCPPacket + + + + + + Get the extended report block type of the XR @packet. + + + The extended report block type. + + + + + a valid XR #GstRTCPPacket + + + + + + Parse the extended report block for DLRR report block type. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has DLRR Report Block. + + + + the index of sub-block to retrieve. + + + + the SSRC of the receiver. + + + + the last receiver reference timestamp of @ssrc. + + + + the delay since @last_rr. + + + + + + Retrieve the packet receipt time of @seq which ranges in [begin_seq, end_seq). + + + %TRUE if the report block returns the receipt time correctly. + + + + + a valid XR #GstRTCPPacket which has the Packet Recept Times Report Block. + + + + the sequence to retrieve the time. + + + + the packet receipt time of @seq. + + + + + + Parse the Packet Recept Times Report Block from a XR @packet + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has a Packet Receipt Times Report Block + + + + the SSRC of the RTP data packet source being reported upon by this report block. + + + + the amount of thinning performed on the sequence number space. + + + + the first sequence number that this block reports on. + + + + the last sequence number that this block reports on plus one. + + + + + + Parse the extended report block for Loss RLE and Duplicated LRE block type. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which is Loss RLE or Duplicate RLE report. + + + + the SSRC of the RTP data packet source being reported upon by this report block. + + + + the amount of thinning performed on the sequence number space. + + + + the first sequence number that this block reports on. + + + + the last sequence number that this block reports on plus one. + + + + the number of chunks calculated by block length. + + + + + + Retrieve actual chunk data. + + + %TRUE if the report block returns chunk correctly. + + + + + a valid XR #GstRTCPPacket which is Loss RLE or Duplicate RLE report. + + + + the index of chunk to retrieve. + + + + the @nth chunk. + + + + + + + + %TRUE if the report block returns the reference time correctly. + + + + + a valid XR #GstRTCPPacket which has the Receiver Reference Time. + + + + NTP timestamp + + + + + + Get the ssrc field of the XR @packet. + + + the ssrc. + + + + + a valid XR #GstRTCPPacket + + + + + + Extract a basic information from static summary report block of XR @packet. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has Statics Summary Report Block. + + + + the SSRC of the source. + + + + the first sequence number that this block reports on. + + + + the last sequence number that this block reports on plus one. + + + + + + Extract jitter information from the statistics summary. If the jitter flag in +a block header is set as zero, all of jitters will be zero. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has Statics Summary Report Block. + + + + the minimum relative transit time between two sequences. + + + + the maximum relative transit time between two sequences. + + + + the mean relative transit time between two sequences. + + + + the standard deviation of the relative transit time between two sequences. + + + + + + Get the number of lost or duplicate packets. If the flag in a block header +is set as zero, @lost_packets or @dup_packets will be zero. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has Statics Summary Report Block. + + + + the number of lost packets between begin_seq and end_seq. + + + + the number of duplicate packets between begin_seq and end_seq. + + + + + + Extract the value of ttl for ipv4, or hop limit for ipv6. + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has Statics Summary Report Block. + + + + the flag to indicate that the return values are ipv4 ttl or ipv6 hop limits. + + + + the minimum TTL or Hop Limit value of data packets between two sequences. + + + + the maximum TTL or Hop Limit value of data packets between two sequences. + + + + the mean TTL or Hop Limit value of data packets between two sequences. + + + + the standard deviation of the TTL or Hop Limit value of data packets between two sequences. + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the fraction of RTP data packets within burst periods. + + + + the fraction of RTP data packets within inter-burst gaps. + + + + the mean duration(ms) of the burst periods. + + + + the mean duration(ms) of the gap periods. + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the gap threshold. + + + + the receiver configuration byte. + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the most recently calculated round trip time between RTP interfaces(ms) + + + + the most recently estimated end system delay(ms) + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the current nominal jitter buffer delay(ms) + + + + the current maximum jitter buffer delay(ms) + + + + the absolute maximum delay(ms) + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the SSRC of source + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the fraction of RTP data packets from the source lost. + + + + the fraction of RTP data packets from the source that have been discarded. + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the R factor is a voice quality metric describing the segment of the call. + + + + the external R factor is a voice quality metric. + + + + the estimated mean opinion score for listening quality. + + + + the estimated mean opinion score for conversational quality. + + + + + + + + %TRUE if the report block is correctly parsed. + + + + + a valid XR #GstRTCPPacket which has VoIP Metrics Report Block. + + + + the ratio of the signal level to a 0 dBm reference. + + + + the ratio of the silent period background noise level to a 0 dBm reference. + + + + the residual echo return loss value. + + + + the gap threshold. + + + + + + Move to the next extended report block in XR @packet. + + + TRUE if there was a next extended report block. + + + + + a valid XR #GstRTCPPacket + + + + + + + Different types of SDES content. + + Invalid SDES entry + + + End of SDES list + + + Canonical name + + + User name + + + User's electronic mail address + + + User's phone number + + + Geographic user location + + + Name of application or tool + + + Notice about the source + + + Private extensions + + + + + + + + + + + + + + + + + + Different RTCP packet types. + + Invalid type + + + Sender report + + + Receiver report + + + Source description + + + Goodbye + + + Application defined + + + Transport layer feedback. + + + Payload-specific feedback. + + + Extended report. + + + + Types of RTCP Extended Reports, those are defined in RFC 3611 and other RFCs +according to the [IANA registry](https://www.iana.org/assignments/rtcp-xr-block-types/rtcp-xr-block-types.xhtml). + + Invalid XR Report Block + + + Loss RLE Report Block + + + Duplicate RLE Report Block + + + Packet Receipt Times Report Block + + + Receiver Reference Time Report Block + + + Delay since the last Receiver Report + + + Statistics Summary Report Block + + + VoIP Metrics Report Block + + + + The maximum amount of SSRCs in a BYE packet. + + + + + The maximum amount of Receiver report blocks in RR and SR messages. + + + + + The maximum text length for an SDES item. + + + + + The maximum amount of SDES items. + + + + + Mask for version and packet type pair allowing reduced size +packets, basically it accepts other types than RR and SR + + + + + Mask for version, padding bit and packet type pair + + + + + Valid value for the first two bytes of an RTCP packet after applying +#GST_RTCP_VALID_MASK to them. + + + + + The supported RTCP version 2. + + + + + Provides a base class for audio RTP payloaders for frame or sample based +audio codecs (constant bitrate) + +This class derives from GstRTPBasePayload. It can be used for payloading +audio codecs. It will only work with constant bitrate codecs. It supports +both frame based and sample based codecs. It takes care of packing up the +audio data into RTP packets and filling up the headers accordingly. The +payloading is done based on the maximum MTU (mtu) and the maximum time per +packet (max-ptime). The general idea is to divide large data buffers into +smaller RTP packets. The RTP packet size is the minimum of either the MTU, +max-ptime (if set) or available data. The RTP packet size is always larger or +equal to min-ptime (if set). If min-ptime is not set, any residual data is +sent in a last RTP packet. In the case of frame based codecs, the resulting +RTP packets always contain full frames. + +## Usage + +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 +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 +GstRTPBaseAudioPayload derives from GstRTPBasePayload, the child element +must set any variables or call/override any functions required by that base +class. The child element does not need to override any other functions +specific to GstRTPBaseAudioPayload. + + + Create an RTP buffer and store @payload_len bytes of the adapter as the +payload. Set the timestamp on the new buffer to @timestamp before pushing +the buffer downstream. + +If @payload_len is -1, all pending bytes will be flushed. If @timestamp is +-1, the timestamp will be calculated automatically. + + + a #GstFlowReturn + + + + + a #GstRTPBasePayload + + + + length of payload + + + + a #GstClockTime + + + + + + Gets the internal adapter used by the depayloader. + + + a #GstAdapter. + + + + + a #GstRTPBaseAudioPayload + + + + + + Create an RTP buffer and store @payload_len bytes of @data as the +payload. Set the timestamp on the new buffer to @timestamp before pushing +the buffer downstream. + + + a #GstFlowReturn + + + + + a #GstRTPBasePayload + + + + data to set as payload + + + + + + length of payload + + + + a #GstClockTime + + + + + + Tells #GstRTPBaseAudioPayload that the child element is for a frame based +audio codec + + + + + + + a pointer to the element. + + + + + + Sets the options for frame based audio codecs. + + + + + + + a pointer to the element. + + + + The duraction of an audio frame in milliseconds. + + + + The size of an audio frame in bytes. + + + + + + Tells #GstRTPBaseAudioPayload that the child element is for a sample based +audio codec + + + + + + + a pointer to the element. + + + + + + Sets the options for sample based audio codecs. + + + + + + + a pointer to the element. + + + + Size per sample in bytes. + + + + + + Sets the options for sample based audio codecs. + + + + + + + a pointer to the element. + + + + Size per sample in bits. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base class for audio RTP payloader. + + + the parent class + + + + + + + + + + + + + Provides a base class for RTP depayloaders + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Queries whether #GstRTPSourceMeta will be added to depayloaded buffers. + + + %TRUE if source-info is enabled. + + + + + a #GstRTPBaseDepayload + + + + + + Push @out_buf to the peer of @filter. This function takes ownership of +@out_buf. + +This function will by default apply the last incoming timestamp on +the outgoing buffer when it didn't have a timestamp already. + + + a #GstFlowReturn. + + + + + a #GstRTPBaseDepayload + + + + a #GstBuffer + + + + + + Push @out_list to the peer of @filter. This function takes ownership of +@out_list. + + + a #GstFlowReturn. + + + + + a #GstRTPBaseDepayload + + + + a #GstBufferList + + + + + + Enable or disable adding #GstRTPSourceMeta to depayloaded buffers. + + + + + + + a #GstRTPBaseDepayload + + + + whether to add meta about RTP sources to buffer + + + + + + If enabled, the depayloader will automatically try to enable all the +RTP header extensions provided in the sink caps, saving the application +the need to handle these extensions manually using the +GstRTPBaseDepayload::request-extension: signal. + + + + 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. + + + + Various depayloader statistics retrieved atomically (and are therefore +synchroized with each other). This property return a GstStructure named +application/x-rtp-depayload-stats containing the following fields relating to +the last processed buffer and current state of the stream being depayloaded: + + * `clock-rate`: #G_TYPE_UINT, clock-rate of the stream + * `npt-start`: #G_TYPE_UINT64, time of playback start + * `npt-stop`: #G_TYPE_UINT64, time of playback stop + * `play-speed`: #G_TYPE_DOUBLE, the playback speed + * `play-scale`: #G_TYPE_DOUBLE, the playback scale + * `running-time-dts`: #G_TYPE_UINT64, the last running-time of the + last DTS + * `running-time-pts`: #G_TYPE_UINT64, the last running-time of the + last PTS + * `seqnum`: #G_TYPE_UINT, the last seen seqnum + * `timestamp`: #G_TYPE_UINT, the last seen RTP timestamp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add @ext as an extension for reading part of an RTP header extension from +incoming RTP packets. + + + + + + the #GstRTPHeaderExtension + + + + + + Clear all RTP header extensions used by this depayloader. + + + + + + The returned @ext must be configured with the correct @ext_id and with the +necessary attributes as required by the extension implementation. + + the #GstRTPHeaderExtension for @ext_id, or %NULL + + + + + the extension id being requested + + + + the extension URI being requested + + + + + + + Base class for RTP depayloaders. + + + the parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides a base class for RTP payloaders + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocate a new #GstBuffer with enough data to hold an RTP packet with +minimum @csrc_count CSRCs, a payload length of @payload_len and padding of +@pad_len. If @payload has #GstRTPBasePayload:source-info %TRUE additional +CSRCs may be allocated and filled with RTP source information. + + + A newly allocated buffer that can hold an RTP packet with given +parameters. + + + + + a #GstRTPBasePayload + + + + the length of the payload + + + + the amount of padding + + + + the minimum number of CSRC entries + + + + + + Count the total number of RTP sources found in the meta of @buffer, which +will be automically added by gst_rtp_base_payload_allocate_output_buffer(). +If #GstRTPBasePayload:source-info is %FALSE the count will be 0. + + + The number of sources. + + + + + a #GstRTPBasePayload + + + + a #GstBuffer, typically the buffer to payload + + + + + + Check if the packet with @size and @duration would exceed the configured +maximum size. + + + %TRUE if the packet of @size and @duration would exceed the +configured MTU or max_ptime. + + + + + a #GstRTPBasePayload + + + + the size of the packet + + + + the duration of the packet + + + + + + Queries whether the payloader will add contributing sources (CSRCs) to the +RTP header from #GstRTPSourceMeta. + + + %TRUE if source-info is enabled. + + + + + a #GstRTPBasePayload + + + + + + Push @buffer to the peer element of the payloader. The SSRC, payload type, +seqnum and timestamp of the RTP buffer will be updated first. + +This function takes ownership of @buffer. + + + a #GstFlowReturn. + + + + + a #GstRTPBasePayload + + + + a #GstBuffer + + + + + + Push @list to the peer element of the payloader. The SSRC, payload type, +seqnum and timestamp of the RTP buffer will be updated first. + +This function takes ownership of @list. + + + a #GstFlowReturn. + + + + + a #GstRTPBasePayload + + + + a #GstBufferList + + + + + + Set the rtp options of the payloader. These options will be set in the caps +of the payloader. Subclasses must call this method before calling +gst_rtp_base_payload_push() or gst_rtp_base_payload_set_outcaps(). + + + + + + + a #GstRTPBasePayload + + + + the media type (typically "audio" or "video") + + + + if the payload type is dynamic + + + + the encoding name + + + + the clock rate of the media + + + + + + Configure the output caps with the optional parameters. + +Variable arguments should be in the form field name, field type +(as a GType), value(s). The last variable argument should be NULL. + + + %TRUE if the caps could be set. + + + + + a #GstRTPBasePayload + + + + the first field name or %NULL + + + + field values + + + + + + Configure the output caps with the optional fields. + + + %TRUE if the caps could be set. + + + + + a #GstRTPBasePayload + + + + a #GstStructure with the caps fields + + + + + + Enable or disable adding contributing sources to RTP packets from +#GstRTPSourceMeta. + + + + + + + a #GstRTPBasePayload + + + + whether to add contributing sources to RTP packets + + + + + + If enabled, the payloader will automatically try to enable all the +RTP header extensions provided in the src caps, saving the application +the need to handle these extensions manually using the +GstRTPBasePayload::request-extension: signal. + + + + + + + Minimum duration of the packet data in ns (can't go above MTU) + + + + + + + Make the payloader timestamp packets according to the Rate-Control=no +behaviour specified in the ONVIF replay spec. + + + + Try to use the offset fields to generate perfect RTP timestamps. When this +option is disabled, RTP timestamps are generated from GST_BUFFER_PTS of +each payloaded buffer. The PTSes of buffers may not necessarily increment +with the amount of data in each input buffer, consider e.g. the case where +the buffer arrives from a network which means that the PTS is unrelated to +the amount of data. Because the RTP timestamps are generated from +GST_BUFFER_PTS this can result in RTP timestamps that also don't increment +with the amount of data in the payloaded packet. To circumvent this it is +possible to set the perfect rtptime option enabled. When this option is +enabled the payloader will increment the RTP timestamps based on +GST_BUFFER_OFFSET which relates to the amount of data in each packet +rather than the GST_BUFFER_PTS of each buffer and therefore the RTP +timestamps will more closely correlate with the amount of data in each +buffer. Currently GstRTPBasePayload is limited to handling perfect RTP +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. + + + + + + + + + + Enable writing the CSRC field in allocated RTP header based on RTP source +information found in the input buffer's #GstRTPSourceMeta. + + + + + + + Various payloader statistics retrieved atomically (and are therefore +synchroized with each other), these can be used e.g. to generate an +RTP-Info header. This property return a GstStructure named +application/x-rtp-payload-stats containing the following fields relating to +the last processed buffer and current state of the stream being payloaded: + + * `clock-rate` :#G_TYPE_UINT, clock-rate of the stream + * `running-time` :#G_TYPE_UINT64, running time + * `seqnum` :#G_TYPE_UINT, sequence number, same as #GstRTPBasePayload:seqnum + * `timestamp` :#G_TYPE_UINT, RTP timestamp, same as #GstRTPBasePayload:timestamp + * `ssrc` :#G_TYPE_UINT, The SSRC in use + * `pt` :#G_TYPE_UINT, The Payload type in use, same as #GstRTPBasePayload:pt + * `seqnum-offset` :#G_TYPE_UINT, The current offset added to the seqnum + * `timestamp-offset` :#G_TYPE_UINT, The current offset added to the timestamp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add @ext as an extension for writing part of an RTP header extension onto +outgoing RTP packets. + + + + + + the #GstRTPHeaderExtension + + + + + + Clear all RTP header extensions used by this payloader. + + + + + + The returned @ext must be configured with the correct @ext_id and with the +necessary attributes as required by the extension implementation. + + the #GstRTPHeaderExtension for @ext_id, or %NULL + + + + + the extension id being requested + + + + the extension URI being requested + + + + + + + Base class for audio RTP payloader. + + + the parent class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The GstRTPBuffer helper functions makes it easy to parse and create regular +#GstBuffer objects that contain RTP payloads. These buffers are typically of +'application/x-rtp' #GstCaps. + + + pointer to RTP buffer + + + + internal state + + + + array of data + + + + + + array of size + + + + + + array of #GstMapInfo + + + + + + Adds a RFC 5285 header extension with a one byte header to the end of the +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 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() + + + %TRUE if header extension could be added + + + + + the RTP packet + + + + The ID of the header extension (between 1 and 14). + + + + location for data + + + + + + the size of the data in bytes + + + + + + Adds a RFC 5285 header extension with a two bytes header to the end of the +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 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() + + + %TRUE if header extension could be added + + + + + the RTP packet + + + + Application specific bits + + + + The ID of the header extension + + + + location for data + + + + + + the size of the data in bytes + + + + + + Get the CSRC at index @idx in @buffer. + + + the CSRC at index @idx in host order. + + + + + the RTP packet + + + + the index of the CSRC to get + + + + + + Get the CSRC count of the RTP packet in @buffer. + + + the CSRC count of @buffer. + + + + + the RTP packet + + + + + + Check if the extension bit is set on the RTP packet in @buffer. + + + TRUE if @buffer has the extension bit set. + + + + + the RTP packet + + + + + + Similar to gst_rtp_buffer_get_extension_data, but more suitable for language +bindings usage. @bits will contain the extension 16 bits of custom data and +the extension data (not including the extension header) is placed in a new +#GBytes structure. + +If @rtp did not contain an extension, this function will return %NULL, with +@bits unchanged. If there is an extension header but no extension data then +an empty #GBytes will be returned. + + + A new #GBytes if an extension header was present +and %NULL otherwise. + + + + + the RTP packet + + + + location for header bits + + + + + + Get the extension data. @bits will contain the extension 16 bits of custom +data. @data will point to the data in the extension and @wordlen will contain +the length of @data in 32 bits words. + +If @buffer did not contain an extension, this function will return %FALSE +with @bits, @data and @wordlen unchanged. + + + TRUE if @buffer had the extension bit set. + + + + + the RTP packet + + + + location for result bits + + + + location for data + + + + + + location for length of @data in 32 bits words + + + + + + Parses RFC 5285 style header extensions with a one byte header. It will +return the nth extension with the requested id. + + + TRUE if @buffer had the requested header extension + + + + + the RTP packet + + + + 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 + + + + + + Parses RFC 5285 style header extensions with a two bytes header. It will +return the nth extension with the requested id. + + + TRUE if @buffer had the requested header extension + + + + + the RTP packet + + + + Application specific bits + + + + 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 + + + + + + Return the total length of the header in @buffer. This include the length of +the fixed header, the CSRC list and the extension header. + + + The total length of the header in @buffer. + + + + + the RTP packet + + + + + + Check if the marker bit is set on the RTP packet in @buffer. + + + TRUE if @buffer has the marker bit set. + + + + + the RTP packet + + + + + + Return the total length of the packet in @buffer. + + + The total length of the packet in @buffer. + + + + + the RTP packet + + + + + + Check if the padding bit is set on the RTP packet in @buffer. + + + TRUE if @buffer has the padding bit set. + + + + + the RTP packet + + + + + + Get a pointer to the payload data in @buffer. This pointer is valid as long +as a reference to @buffer is held. + + + A pointer +to the payload data in @buffer. + + + + + + + the RTP packet + + + + + + Create a buffer of the payload of the RTP packet in @buffer. This function +will internally create a subbuffer of @buffer so that a memcpy can be +avoided. + + + A new buffer with the data of the payload. + + + + + the RTP packet + + + + + + Similar to gst_rtp_buffer_get_payload, but more suitable for language +bindings usage. The return value is a pointer to a #GBytes structure +containing the payload data in @rtp. + + + A new #GBytes containing the payload data in @rtp. + + + + + the RTP packet + + + + + + Get the length of the payload of the RTP packet in @buffer. + + + The length of the payload in @buffer. + + + + + the RTP packet + + + + + + Create a subbuffer of the payload of the RTP packet in @buffer. @offset bytes +are skipped in the payload and the subbuffer will be of size @len. +If @len is -1 the total payload starting from @offset is subbuffered. + + + A new buffer with the specified data of the payload. + + + + + the RTP packet + + + + the offset in the payload + + + + the length in the payload + + + + + + Get the payload type of the RTP packet in @buffer. + + + The payload type. + + + + + the RTP packet + + + + + + Get the sequence number of the RTP packet in @buffer. + + + The sequence number in host order. + + + + + the RTP packet + + + + + + Get the SSRC of the RTP packet in @buffer. + + + the SSRC of @buffer in host order. + + + + + the RTP packet + + + + + + Get the timestamp of the RTP packet in @buffer. + + + The timestamp in host order. + + + + + the RTP packet + + + + + + Get the version number of the RTP packet in @buffer. + + + The version of @buffer. + + + + + the RTP packet + + + + + + Set the amount of padding in the RTP packet in @buffer to +@len. If @len is 0, the padding is removed. + +NOTE: This function does not work correctly. + + + + + + + the RTP packet + + + + the new amount of padding + + + + + + Unsets the extension bit of the RTP buffer and removes the extension header +and data. + +If the RTP buffer has no header extension data, the action has no effect. +The RTP buffer must be mapped READWRITE only once and the underlying +GstBuffer must be writable. + + + + + + + the RTP packet + + + + + + Modify the CSRC at index @idx in @buffer to @csrc. + + + + + + + the RTP packet + + + + the CSRC index to set + + + + the CSRC in host order to set at @idx + + + + + + Set the extension bit on the RTP packet in @buffer to @extension. + + + + + + + the RTP packet + + + + the new extension + + + + + + Set the extension bit of the rtp buffer and fill in the @bits and @length of the +extension header. If the existing extension data is not large enough, it will +be made larger. + +Will also shorten the extension data from 1.20. + + + True if done. + + + + + the RTP packet + + + + the bits specific for the extension + + + + the length that counts the number of 32-bit words in +the extension, excluding the extension header ( therefore zero is a valid length) + + + + + + Set the marker bit on the RTP packet in @buffer to @marker. + + + + + + + the RTP packet + + + + the new marker + + + + + + Set the total @rtp size to @len. The data in the buffer will be made +larger if needed. Any padding will be removed from the packet. + + + + + + + the RTP packet + + + + the new packet length + + + + + + Set the padding bit on the RTP packet in @buffer to @padding. + + + + + + + the buffer + + + + the new padding + + + + + + Set the payload type of the RTP packet in @buffer to @payload_type. + + + + + + + the RTP packet + + + + the new type + + + + + + Set the sequence number of the RTP packet in @buffer to @seq. + + + + + + + the RTP packet + + + + the new sequence number + + + + + + Set the SSRC on the RTP packet in @buffer to @ssrc. + + + + + + + the RTP packet + + + + the new SSRC + + + + + + Set the timestamp of the RTP packet in @buffer to @timestamp. + + + + + + + the RTP packet + + + + the new timestamp + + + + + + Set the version of the RTP packet in @buffer to @version. + + + + + + + the RTP packet + + + + the new version + + + + + + Unmap @rtp previously mapped with gst_rtp_buffer_map(). + + + + + + + a #GstRTPBuffer + + + + + + Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs, +a payload length of @payload_len and padding of @pad_len. +@buffer must be writable and all previous memory in @buffer will be freed. +If @pad_len is >0, the padding bit will be set. All other RTP header fields +will be set to 0/FALSE. + + + + + + + a #GstBuffer + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Calculate the header length of an RTP packet with @csrc_count CSRC entries. +An RTP packet can have at most 15 CSRC entries. + + + The length of an RTP header with @csrc_count CSRC entries. + + + + + the number of CSRC entries + + + + + + Calculate the total length of an RTP packet with a payload size of @payload_len, +a padding of @pad_len and a @csrc_count CSRC entries. + + + The total length of an RTP header with given parameters. + + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Calculate the length of the payload of an RTP packet with size @packet_len, +a padding of @pad_len and a @csrc_count CSRC entries. + + + The length of the payload of an RTP packet with given parameters. + + + + + the length of the total RTP packet + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Compare two sequence numbers, taking care of wraparounds. This function +returns the difference between @seqnum1 and @seqnum2. + + + a negative value if @seqnum1 is bigger than @seqnum2, 0 if they +are equal or a positive value if @seqnum1 is smaller than @segnum2. + + + + + a sequence number + + + + a sequence number + + + + + + Get the default clock-rate for the static payload type @payload_type. + + + the default clock rate or -1 if the payload type is not static or +the clock-rate is undefined. + + + + + the static payload type + + + + + + Update the @exttimestamp field with the extended timestamp of @timestamp +For the first call of the method, @exttimestamp should point to a location +with a value of -1. + +This function is able to handle both forward and backward timestamps taking +into account: + - timestamp wraparound making sure that the returned value is properly increased. + - timestamp unwraparound making sure that the returned value is properly decreased. + + + The extended timestamp of @timestamp or 0 if the result can't go anywhere backwards. + + + + + a previous extended timestamp + + + + a new timestamp + + + + + + 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. + + + %TRUE if @buffer could be mapped. + + + + + a #GstBuffer + + + + #GstMapFlags + + + + a #GstRTPBuffer + + + + + + Allocate a new #GstBuffer with enough data to hold an RTP packet with +@csrc_count CSRCs, a payload length of @payload_len and padding of @pad_len. +All other RTP header fields will be set to 0/FALSE. + + + A newly allocated buffer that can hold an RTP packet with given +parameters. + + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Create a new #GstBuffer that can hold an RTP packet that is exactly +@packet_len long. The length of the payload depends on @pad_len and +@csrc_count and can be calculated with gst_rtp_buffer_calc_payload_len(). +All RTP header fields will be set to 0/FALSE. + + + A newly allocated buffer that can hold an RTP packet of @packet_len. + + + + + the total length of the packet + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Create a new buffer and set the data to a copy of @len +bytes of @data and the size to @len. The data will be freed when the buffer +is freed. + + + A newly allocated buffer with a copy of @data and of size @len. + + + + + data for the new + buffer + + + + + + the length of data + + + + + + Create a new buffer and set the data and size of the buffer to @data and @len +respectively. @data will be freed when the buffer is unreffed, so this +function transfers ownership of @data to the new buffer. + + + A newly allocated buffer with @data and of size @len. + + + + + + data for the new buffer + + + + + + the length of data + + + + + + + Additional RTP buffer flags. These flags can potentially be used on any +buffers carrying RTP packets. + +Note that these are only valid for #GstCaps of type: application/x-rtp (x-rtcp). +They can conflict with other extended buffer flags. + + The #GstBuffer was once wrapped + in a retransmitted packet as specified by RFC 4588. + + + The packet represents redundant RTP packet. + The flag is used in gstrtpstorage to be able to hold the packetback + and use it only for recovery from packet loss. + Since: 1.14 + + + Offset to define more flags. + + + + Additional mapping flags for gst_rtp_buffer_map(). + + Skip mapping and validation of RTP + padding and RTP pad count when present. Useful for buffers where + the padding may be encrypted. + + + Offset to define more flags + + + + Instance struct for a RTP Audio/Video header extension. + + + + + the #GstRTPHeaderExtension for @uri or %NULL + + + + + the rtp header extension URI to search for + + + + + + This is used to know how much data a certain header extension will need for +both allocating the resulting data, and deciding how much payload data can +be generated. + +Implementations should return as accurate a value as is possible using the +information given in the input @buffer. + + + the maximum size of the data written by this extension + + + + + a #GstRTPHeaderExtension + + + + a #GstBuffer + + + + + + + + the flags supported by this instance of @ext + + + + + a #GstRTPHeaderExtension + + + + + + Read the RTP header extension from @data. + + + whether the extension could be read from @data + + + + + a #GstRTPHeaderExtension + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + location to read the rtp header extension from + + + + + + size of @data + + + + a #GstBuffer to modify if necessary + + + + + + + + + + + + + + + + + + + + + + + gst_rtp_header_extension_set_id() must have been called with a valid +extension id that is contained in these caps. + +The only current known caps format is based on the SDP standard as produced +by gst_sdp_media_attributes_to_caps(). + + + whether the configured attributes on @ext can successfully be set on + @caps + + + + + a #GstRTPHeaderExtension + + + + writable #GstCaps to modify + + + + + + Passes RTP payloader's sink (i.e. not payloaded) @caps to the header +extension. + + + Whether @caps could be read successfully + + + + + a #GstRTPHeaderExtension + + + + sink #GstCaps + + + + + + Updates depayloader src caps based on the information received in RTP header. +@caps must be writable as this function may modify them. + + + whether @caps were modified successfully + + + + + a #GstRTPHeaderExtension + + + + src #GstCaps to modify + + + + + + Writes the RTP header extension to @data using information available from +the @input_meta. @data will be sized to be at least the value returned +from gst_rtp_header_extension_get_max_size(). + + + the size of the data written, < 0 on failure + + + + + a #GstRTPHeaderExtension + + + + the input #GstBuffer to read information from if necessary + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + output RTP #GstBuffer + + + + location to write the rtp header extension into + + + + + + size of @data + + + + + + Retrieve the direction + + + The direction + + + + + the #GstRTPHeaderExtension + + + + + + + + the RTP extension id configured on @ext + + + + + a #GstRTPHeaderExtension + + + + + + This is used to know how much data a certain header extension will need for +both allocating the resulting data, and deciding how much payload data can +be generated. + +Implementations should return as accurate a value as is possible using the +information given in the input @buffer. + + + the maximum size of the data written by this extension + + + + + a #GstRTPHeaderExtension + + + + a #GstBuffer + + + + + + + + the #GstStructure field name used in SDP-like #GstCaps for this @ext configuration + + + + + the #GstRTPHeaderExtension + + + + + + + + the flags supported by this instance of @ext + + + + + a #GstRTPHeaderExtension + + + + + + + + the RTP extension URI for this object + + + + + a #GstRTPHeaderExtension + + + + + + Read the RTP header extension from @data. + + + whether the extension could be read from @data + + + + + a #GstRTPHeaderExtension + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + location to read the rtp header extension from + + + + + + size of @data + + + + a #GstBuffer to modify if necessary + + + + + + gst_rtp_header_extension_set_id() must have been called with a valid +extension id that is contained in these caps. + +The only current known caps format is based on the SDP standard as produced +by gst_sdp_media_attributes_to_caps(). + + + whether the @caps could be successfully set on @ext. + + + + + a #GstRTPHeaderExtension + + + + the #GstCaps to configure this extension with + + + + + + gst_rtp_header_extension_set_id() must have been called with a valid +extension id that is contained in these caps. + +The only current known caps format is based on the SDP standard as produced +by gst_sdp_media_attributes_to_caps(). + + + whether the configured attributes on @ext can successfully be set on + @caps + + + + + a #GstRTPHeaderExtension + + + + writable #GstCaps to modify + + + + + + Helper implementation for GstRTPExtensionClass::set_caps_from_attributes +that sets the @ext uri on caps with the specified extension id as required +for sdp #GstCaps. + +Requires that the extension does not have any attributes or direction +advertised in @caps. + + + whether the @ext attributes could be set on @caps. + + + + + the #GstRTPHeaderExtension + + + + #GstCaps to write fields into + + + + + + + + + Set the direction that this header extension should be used in. +If #GST_RTP_HEADER_EXTENSION_DIRECTION_INHERITED is included, the +direction will not be included in the caps (as it shouldn't be in the +extmap line in the SDP). + + + + + + + the #GstRTPHeaderExtension + + + + The direction + + + + + + sets the RTP extension id on @ext + + + + + + + a #GstRTPHeaderExtension + + + + The id of this extension + + + + + + Passes RTP payloader's sink (i.e. not payloaded) @caps to the header +extension. + + + Whether @caps could be read successfully + + + + + a #GstRTPHeaderExtension + + + + sink #GstCaps + + + + + + Call this function in a subclass from #GstRTPHeaderExtensionClass::read to +tell the depayloader whether the data just parsed from RTP packet require +updating its src (non-RTP) caps. If @state is TRUE, #GstRTPBaseDepayload will +eventually invoke gst_rtp_header_extension_update_non_rtp_src_caps() to +have the caps update applied. Applying the update also flips the internal +"wants update" flag back to FALSE. + + + + + + + a #GstRTPHeaderExtension + + + + TRUE if caps update is needed + + + + + + Updates depayloader src caps based on the information received in RTP header. +@caps must be writable as this function may modify them. + + + whether @caps were modified successfully + + + + + a #GstRTPHeaderExtension + + + + src #GstCaps to modify + + + + + + Call this function after gst_rtp_header_extension_read() to check if +the depayloader's src caps need updating with data received in the last RTP +packet. + + + Whether @ext wants to update depayloader's src caps. + + + + + a #GstRTPHeaderExtension + + + + + + Writes the RTP header extension to @data using information available from +the @input_meta. @data will be sized to be at least the value returned +from gst_rtp_header_extension_get_max_size(). + + + the size of the data written, < 0 on failure + + + + + a #GstRTPHeaderExtension + + + + the input #GstBuffer to read information from if necessary + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + output RTP #GstBuffer + + + + location to write the rtp header extension into + + + + + + size of @data + + + + + + the parent #GObject + + + + + + + + + + Base class for RTP Header extensions. + + + the parent class + + + + + + + the flags supported by this instance of @ext + + + + + a #GstRTPHeaderExtension + + + + + + + + + + the maximum size of the data written by this extension + + + + + a #GstRTPHeaderExtension + + + + a #GstBuffer + + + + + + + + + + the size of the data written, < 0 on failure + + + + + a #GstRTPHeaderExtension + + + + the input #GstBuffer to read information from if necessary + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + output RTP #GstBuffer + + + + location to write the rtp header extension into + + + + + + size of @data + + + + + + + + + + whether the extension could be read from @data + + + + + a #GstRTPHeaderExtension + + + + #GstRTPHeaderExtensionFlags for how the extension should + be written + + + + location to read the rtp header extension from + + + + + + size of @data + + + + a #GstBuffer to modify if necessary + + + + + + + + + + Whether @caps could be read successfully + + + + + a #GstRTPHeaderExtension + + + + sink #GstCaps + + + + + + + + + + whether @caps were modified successfully + + + + + a #GstRTPHeaderExtension + + + + src #GstCaps to modify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + whether the configured attributes on @ext can successfully be set on + @caps + + + + + a #GstRTPHeaderExtension + + + + writable #GstCaps to modify + + + + + + + + + + + + Set the URI for this RTP header extension implementation. + + + + + + + the #GstRTPHeaderExtensionClass + + + + the RTP Header extension uri for @klass + + + + + + + Direction to which to apply the RTP Header Extension + + Neither send nor +receive RTP Header Extensions + + + Only send RTP Header +Extensions @GST_RTP_HEADER_EXTENSION_DIRECTION_RECVONLY: Only +receive RTP Header Extensions + + + + + Send and receive RTP +Header Extensions ext + + + RTP header extension +direction is inherited from the stream + + + + Flags that apply to a RTP Audio/Video header extension. + + The one byte rtp extension header. + 1-16 data bytes per extension with a maximum of + 14 extension ids in total. + + + The two byte rtp extension header. + 256 data bytes per extension with a maximum of 255 (or 256 + including appbits) extensions in total. + + + + Standard predefined fixed payload types. + +The official list is at: +http://www.iana.org/assignments/rtp-parameters + +Audio: +reserved: 19 +unassigned: 20-23, + +Video: +unassigned: 24, 27, 29, 30, 35-71, 77-95 +Reserved for RTCP conflict avoidance: 72-76 + + ITU-T G.711. mu-law audio (RFC 3551) + + + RFC 3551 says reserved + + + RFC 3551 says reserved + + + GSM audio + + + ITU G.723.1 audio + + + IMA ADPCM wave type (RFC 3551) + + + IMA ADPCM wave type (RFC 3551) + + + experimental linear predictive encoding + + + ITU-T G.711 A-law audio (RFC 3551) + + + ITU-T G.722 (RFC 3551) + + + stereo PCM + + + mono PCM + + + EIA & TIA standard IS-733 + + + Comfort Noise (RFC 3389) + + + Audio MPEG 1-3. + + + ITU-T G.728 Speech coder (RFC 3551) + + + IMA ADPCM wave type (RFC 3551) + + + IMA ADPCM wave type (RFC 3551) + + + ITU-T G.729 Speech coder (RFC 3551) + + + See RFC 2029 + + + ISO Standards 10918-1 and 10918-2 (RFC 2435) + + + nv encoding by Ron Frederick + + + ITU-T Recommendation H.261 (RFC 2032) + + + Video MPEG 1 & 2 (RFC 2250) + + + MPEG-2 transport stream (RFC 2250) + + + Video H263 (RFC 2190) + + + + Structure holding default payload type information. + + + payload type, -1 means dynamic + + + + the media type(s), usually "audio", "video", "application", "text", +"message". + + + + the encoding name of @pt + + + + default clock rate, 0 = unknown/variable + + + + encoding parameters. For audio this is the number of +channels. NULL = not applicable. + + + + the bitrate of the media. 0 = unknown/variable. + + + + + + + + + Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is +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 insensitive way. + + + a #GstRTPPayloadInfo or NULL when no info could be found. + + + + + the media to find + + + + the encoding name to find + + + + + + Get the #GstRTPPayloadInfo for @payload_type. This function is +mostly used to get the default clock-rate and bandwidth for static payload +types specified with @payload_type. + + + a #GstRTPPayloadInfo or NULL when no info could be found. + + + + + the payload_type to find + + + + + + + The transfer profile to use. + + invalid profile + + + the Audio/Visual profile (RFC 3551) + + + the secure Audio/Visual profile (RFC 3711) + + + the Audio/Visual profile with feedback (RFC 4585) + + + the secure Audio/Visual profile with feedback (RFC 5124) + + + + Meta describing the source(s) of the buffer. + + + parent #GstMeta + + + + the SSRC + + + + whether @ssrc is set and valid + + + + pointer to the CSRCs + + + + + + number of elements in @csrc + + + + Appends @csrc to the list of contributing sources in @meta. + + + %TRUE if all elements in @csrc was added, %FALSE otherwise. + + + + + a #GstRTPSourceMeta + + + + the csrcs to append + + + + + + number of elements in @csrc + + + + + + Count the total number of RTP sources found in @meta, both SSRC and CSRC. + + + The number of RTP sources + + + + + a #GstRTPSourceMeta + + + + + + Sets @ssrc in @meta. If @ssrc is %NULL the ssrc of @meta will be unset. + + + %TRUE on success, %FALSE otherwise. + + + + + a #GstRTPSourceMeta + + + + pointer to the SSRC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get access to the configured MTU of @payload. + + + + a #GstRTPBasePayload + + + + + Get access to the configured payload type of @payload. + + + + a #GstRTPBasePayload + + + + + Get access to the sinkpad of @payload. + + + + a #GstRTPBasePayload + + + + + Get access to the srcpad of @payload. + + + + a #GstRTPBasePayload + + + + + + + + + Constant string used in element classification to signal that this element +is a RTP header extension. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if @pt is a dynamic payload type. + + + + a payload type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The supported RTP version 2. + + + + + Attaches RTP source information to @buffer. + + + the #GstRTPSourceMeta on @buffer. + + + + + a #GstBuffer + + + + pointer to the SSRC + + + + pointer to the CSRCs + + + + + + number of elements in @csrc + + + + + + Find the #GstRTPSourceMeta on @buffer. + + + the #GstRTPSourceMeta or %NULL when there +is no such metadata on @buffer. + + + + + a #GstBuffer + + + + + + Open @buffer for reading or writing, depending on @flags. The resulting RTCP +buffer state is stored in @rtcp. + + + + + + + a buffer with an RTCP packet + + + + flags for the mapping + + + + resulting #GstRTCPBuffer + + + + + + Create a new buffer for constructing RTCP packets. The packet will have a +maximum size of @mtu. + + + A newly allocated buffer. + + + + + the maximum mtu size. + + + + + + Create a new buffer and set the data to a copy of @len +bytes of @data and the size to @len. The data will be freed when the buffer +is freed. + + + A newly allocated buffer with a copy of @data and of size @len. + + + + + data for the new buffer + + + + + + the length of data + + + + + + Create a new buffer and set the data and size of the buffer to @data and @len +respectively. @data will be freed when the buffer is unreffed, so this +function transfers ownership of @data to the new buffer. + + + A newly allocated buffer with @data and of size @len. + + + + + data for the new buffer + + + + + + the length of data + + + + + + Check if the data pointed to by @buffer is a valid RTCP packet using +gst_rtcp_buffer_validate_data(). + + + TRUE if @buffer is a valid RTCP packet. + + + + + the buffer to validate + + + + + + Check if the @data and @size point to the data of a valid compound, +non-reduced size RTCP packet. +Use this function to validate a packet before using the other functions in +this module. + + + TRUE if the data points to a valid RTCP packet. + + + + + the data to validate + + + + + + the length of @data to validate + + + + + + Check if the @data and @size point to the data of a valid RTCP packet. +Use this function to validate a packet before using the other functions in +this module. + +This function is updated to support reduced size rtcp packets according to +RFC 5506 and will validate full compound RTCP packets as well as reduced +size RTCP packets. + + + TRUE if the data points to a valid RTCP packet. + + + + + the data to validate + + + + + + the length of @data to validate + + + + + + Check if the data pointed to by @buffer is a valid RTCP packet using +gst_rtcp_buffer_validate_reduced(). + + + TRUE if @buffer is a valid RTCP packet. + + + + + the buffer to validate + + + + + + Converts an NTP time to UNIX nanoseconds. @ntptime can typically be +the NTP time of an SR RTCP message and contains, in the upper 32 bits, the +number of seconds since 1900 and, in the lower 32 bits, the fractional +seconds. The resulting value will be the number of nanoseconds since 1970. + + + the UNIX time for @ntptime in nanoseconds. + + + + + an NTP timestamp + + + + + + Convert @name into a @GstRTCPSDESType. @name is typically a key in a +#GstStructure containing SDES items. + + + the #GstRTCPSDESType for @name or #GST_RTCP_SDES_PRIV when @name +is a private sdes item. + + + + + a SDES name + + + + + + Converts @type to the string equivalent. The string is typically used as a +key in a #GstStructure containing SDES items. + + + the string equivalent of @type + + + + + a #GstRTCPSDESType + + + + + + Converts a UNIX timestamp in nanoseconds to an NTP time. The caller should +pass a value with nanoseconds since 1970. The NTP time will, in the upper +32 bits, contain the number of seconds since 1900 and, in the lower 32 +bits, the fractional seconds. The resulting value can be used as an ntptime +for constructing SR RTCP packets. + + + the NTP time for @unixtime. + + + + + an UNIX timestamp in nanoseconds + + + + + + Allocate enough data in @buffer to hold an RTP packet with @csrc_count CSRCs, +a payload length of @payload_len and padding of @pad_len. +@buffer must be writable and all previous memory in @buffer will be freed. +If @pad_len is >0, the padding bit will be set. All other RTP header fields +will be set to 0/FALSE. + + + + + + + a #GstBuffer + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Calculate the header length of an RTP packet with @csrc_count CSRC entries. +An RTP packet can have at most 15 CSRC entries. + + + The length of an RTP header with @csrc_count CSRC entries. + + + + + the number of CSRC entries + + + + + + Calculate the total length of an RTP packet with a payload size of @payload_len, +a padding of @pad_len and a @csrc_count CSRC entries. + + + The total length of an RTP header with given parameters. + + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Calculate the length of the payload of an RTP packet with size @packet_len, +a padding of @pad_len and a @csrc_count CSRC entries. + + + The length of the payload of an RTP packet with given parameters. + + + + + the length of the total RTP packet + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Compare two sequence numbers, taking care of wraparounds. This function +returns the difference between @seqnum1 and @seqnum2. + + + a negative value if @seqnum1 is bigger than @seqnum2, 0 if they +are equal or a positive value if @seqnum1 is smaller than @segnum2. + + + + + a sequence number + + + + a sequence number + + + + + + Get the default clock-rate for the static payload type @payload_type. + + + the default clock rate or -1 if the payload type is not static or +the clock-rate is undefined. + + + + + the static payload type + + + + + + Update the @exttimestamp field with the extended timestamp of @timestamp +For the first call of the method, @exttimestamp should point to a location +with a value of -1. + +This function is able to handle both forward and backward timestamps taking +into account: + - timestamp wraparound making sure that the returned value is properly increased. + - timestamp unwraparound making sure that the returned value is properly decreased. + + + The extended timestamp of @timestamp or 0 if the result can't go anywhere backwards. + + + + + a previous extended timestamp + + + + a new timestamp + + + + + + 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. + + + %TRUE if @buffer could be mapped. + + + + + a #GstBuffer + + + + #GstMapFlags + + + + a #GstRTPBuffer + + + + + + Allocate a new #GstBuffer with enough data to hold an RTP packet with +@csrc_count CSRCs, a payload length of @payload_len and padding of @pad_len. +All other RTP header fields will be set to 0/FALSE. + + + A newly allocated buffer that can hold an RTP packet with given +parameters. + + + + + the length of the payload + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Create a new #GstBuffer that can hold an RTP packet that is exactly +@packet_len long. The length of the payload depends on @pad_len and +@csrc_count and can be calculated with gst_rtp_buffer_calc_payload_len(). +All RTP header fields will be set to 0/FALSE. + + + A newly allocated buffer that can hold an RTP packet of @packet_len. + + + + + the total length of the packet + + + + the amount of padding + + + + the number of CSRC entries + + + + + + Create a new buffer and set the data to a copy of @len +bytes of @data and the size to @len. The data will be freed when the buffer +is freed. + + + A newly allocated buffer with a copy of @data and of size @len. + + + + + data for the new + buffer + + + + + + the length of data + + + + + + Create a new buffer and set the data and size of the buffer to @data and @len +respectively. @data will be freed when the buffer is unreffed, so this +function transfers ownership of @data to the new buffer. + + + A newly allocated buffer with @data and of size @len. + + + + + + data for the new buffer + + + + + + the length of data + + + + + + Retrieve all the factories of the currently registered RTP header +extensions. Call gst_element_factory_create() with each factory to create +the associated #GstRTPHeaderExtension. + + + a #GList of + #GstElementFactory's. Use gst_plugin_feature_list_free() after use + + + + + + + Reads the NTP time from the @size NTP-56 extension bytes in @data and store the +result in @ntptime. + + + %TRUE on success. + + + + + the data to read from + + + + + + the size of @data + + + + the result NTP time + + + + + + Reads the NTP time from the @size NTP-64 extension bytes in @data and store the +result in @ntptime. + + + %TRUE on success. + + + + + the data to read from + + + + + + the size of @data + + + + the result NTP time + + + + + + Writes the NTP time in @ntptime to the format required for the NTP-56 header +extension. @data must hold at least #GST_RTP_HDREXT_NTP_56_SIZE bytes. + + + %TRUE on success. + + + + + the data to write to + + + + the size of @data + + + + the NTP time + + + + + + Writes the NTP time in @ntptime to the format required for the NTP-64 header +extension. @data must hold at least #GST_RTP_HDREXT_NTP_64_SIZE bytes. + + + %TRUE on success. + + + + + the data to write to + + + + the size of @data + + + + the NTP time + + + + + + Get the #GstRTPPayloadInfo for @media and @encoding_name. This function is +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 insensitive way. + + + a #GstRTPPayloadInfo or NULL when no info could be found. + + + + + the media to find + + + + the encoding name to find + + + + + + Get the #GstRTPPayloadInfo for @payload_type. This function is +mostly used to get the default clock-rate and bandwidth for static payload +types specified with @payload_type. + + + a #GstRTPPayloadInfo or NULL when no info could be found. + + + + + the payload_type to find + + + + + + + + + + + + + + + + + + diff --git a/girs/GstRtsp-1.0.gir b/girs/GstRtsp-1.0.gir new file mode 100644 index 0000000000..2046099a58 --- /dev/null +++ b/girs/GstRtsp-1.0.gir @@ -0,0 +1,4842 @@ + + + + + + + + + + + + + + + + + + RTSP Authentication credentials + + + a #GstRTSPAuthMethod + + + + A NULL-terminated array of #GstRTSPAuthParam + + + + The authorization for the basic schem + + + + + Authentication methods, ordered by strength + + no authentication + + + basic authentication + + + digest authentication + + + + RTSP Authentication parameter + + + The name of the parameter + + + + The value of the parameter + + + + + + + + + + + + + + + + + + + + + + + + + + + This object manages the RTSP connection to the server. It provides function +to receive and send bytes and messages. + + + Clear the list of authentication directives stored in @conn. + + + + + + + a #GstRTSPConnection + + + + + + Close the connected @conn. After this call, the connection is in the same +state as when it was first created. + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + + + 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 +#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 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 +#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 GTimeVal timeout + + + + a #GstRTSPMessage + + + + + + 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 +@conn manages the tunneled connection. + +After this call, @conn2 cannot be used anymore and must be freed with +gst_rtsp_connection_free(). + +If @conn2 is %NULL then only the base64 decoding context will be setup for +@conn. + + + return GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + a #GstRTSPConnection or %NULL + + + + + + Start or stop the flushing action on @conn. When flushing, all current +and future actions on @conn will return #GST_RTSP_EINTR until the connection +is set to non-flushing mode again. + + + #GST_RTSP_OK. + + + + + a #GstRTSPConnection + + + + start or stop the flush + + + + + + Close and free @conn. + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + + + Get the ignore_x_server_reply value. + + + returns %TRUE if the x-server-ip-address header reply will be + ignored, else returns %FALSE + + + + + a #GstRTSPConnection + + + + + + Retrieve the IP address of the other end of @conn. + + + The IP address as a string. this value remains valid until the +connection is closed. + + + + + a #GstRTSPConnection + + + + + + Get the file descriptor for reading. + + + the file descriptor used for reading or %NULL on +error. The file descriptor remains valid until the connection is closed. + + + + + a #GstRTSPConnection + + + + + + + + %TRUE if the #GstRTSPConnection remembers the session id in the +last response to set it on any further request. + + + + + a #GstRTSPConnection + + + + + + Get the TLS connection of @conn. + +For client side this will return the #GTlsClientConnection when connected +over TLS. + +For server side connections, this function will create a GTlsServerConnection +when called the first time and will return that same connection on subsequent +calls. The server is then responsible for configuring the TLS connection. + + + the TLS connection for @conn. + + + + + a #GstRTSPConnection + + + + + + Gets the anchor certificate authorities database that will be used +after a server certificate can't be verified with the default +certificate database. + + + the anchor certificate authorities database, or NULL if no +database has been previously set. Use g_object_unref() to release the +certificate database. + + + + + a #GstRTSPConnection + + + + + + Gets a #GTlsInteraction object to be used when the connection or certificate +database need to interact with the user. This will be used to prompt the +user for passwords where necessary. + + + a reference on the #GTlsInteraction. Use +g_object_unref() to release. + + + + + a #GstRTSPConnection + + + + + + Gets the TLS validation flags used to verify the peer certificate +when a TLS connection is established. + +GLib guarantees that if certificate verification fails, at least one error +will be set, but it does not guarantee that all possible errors will be +set. Accordingly, you may not safely decide to ignore any particular type +of error. + +For example, it would be incorrect to ignore %G_TLS_CERTIFICATE_EXPIRED if +you want to allow expired certificates, because this could potentially be +the only error flag set even if other problems exist with the certificate. + + + the validation flags. + + + + + a #GstRTSPConnection + + + + + + Get the tunnel session id the connection. + + + returns a non-empty string if @conn is being tunneled over HTTP. + + + + + a #GstRTSPConnection + + + + + + Retrieve the URL of the other end of @conn. + + + The URL. This value remains valid until the +connection is freed. + + + + + a #GstRTSPConnection + + + + + + Get the file descriptor for writing. + + + the file descriptor used for writing or NULL on +error. The file descriptor remains valid until the connection is closed. + + + + + a #GstRTSPConnection + + + + + + Get the tunneling state of the connection. + + + if @conn is using HTTP tunneling. + + + + + a #GstRTSPConnection + + + + + + Calculate the next timeout for @conn, storing the result in @timeout. + + + #GST_RTSP_OK. + + + + + a #GstRTSPConnection + + + + a timeout + + + + + + 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 +@conn. + +@timeout can be %NULL, 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 + + + + + + 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. + +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 or %NULL + + + + + + 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. + +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 %NULL + + + + + + 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. + + + #GST_RTSP_OK. + + + + + a #GstRTSPConnection + + + + + + 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. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the message to send + + + + a timeout value or %NULL + + + + + + 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. + +This function can be cancelled with gst_rtsp_connection_flush(). + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + the messages to send + + + + + + the number of messages to send + + + + a timeout value or %NULL + + + + + + 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" +signal and be performed after the default checks of #GstRTSPConnection +(checking against the #GTlsDatabase with the given #GTlsCertificateFlags) +have failed. If no #GTlsDatabase is set on this connection, only @func will +be called. + + + + + + + a #GstRTSPConnection + + + + a #GstRTSPConnectionAcceptCertificateFunc to check certificates + + + + User data passed to @func + + + + #GDestroyNotify for @user_data + + + + + + Configure @conn for authentication mode @method with @user and @pass as the +user and password respectively. + + + #GST_RTSP_OK. + + + + + a #GstRTSPConnection + + + + authentication method + + + + the user + + + + the password + + + + + + 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, +nonce, opaque, stale, algorithm, qop as per RFC2617. + + + + + + + a #GstRTSPConnection + + + + authentication directive + + + + value + + + + + + 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 +automatic handling of setting up an HTTP tunnel. + + + + + + + a #GstRTSPConnection + + + + %TRUE to enable manual HTTP mode + + + + + + Set whether to ignore the x-server-ip-address header reply or not. If the +header is ignored, the original address will be used instead. + + + + + + + a #GstRTSPConnection + + + + %TRUE to ignore the x-server-ip-address header reply or %FALSE to + comply with it (%FALSE is the default). + + + + + + Set the IP address of the server. + + + + + + + a #GstRTSPConnection + + + + an ip address + + + + + + Set the proxy host and port. + + + #GST_RTSP_OK. + + + + + a #GstRTSPConnection + + + + the proxy host + + + + the proxy port + + + + + + Configure @conn to use the specified DSCP value. + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPConnection + + + + DSCP value + + + + + + Sets if the #GstRTSPConnection should remember the session id from the last +response received and force it onto any further requests. + +The default value is %TRUE + + + + + + + a #GstRTSPConnection + + + + %TRUE if the connection should remember the session id + + + + + + Sets the anchor certificate authorities database. This certificate +database will be used to verify the server's certificate in case it +can't be verified with the default certificate database first. + + + + + + + a #GstRTSPConnection + + + + a #GTlsDatabase + + + + + + Sets a #GTlsInteraction object to be used when the connection or certificate +database need to interact with the user. This will be used to prompt the +user for passwords where necessary. + + + + + + + a #GstRTSPConnection + + + + a #GTlsInteraction + + + + + + Sets the TLS validation flags to be used to verify the peer +certificate when a TLS connection is established. + +GLib guarantees that if certificate verification fails, at least one error +will be set, but it does not guarantee that all possible errors will be +set. Accordingly, you may not safely decide to ignore any particular type +of error. + +For example, it would be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if +you want to allow expired certificates, because this could potentially be +the only error flag set even if other problems exist with the certificate. + + + TRUE if the validation flags are set correctly, or FALSE if +@conn is NULL or is not a TLS connection. + + + + + a #GstRTSPConnection + + + + the validation flags. + + + + + + Set the HTTP tunneling state of the connection. This must be configured before +the @conn is connected. + + + + + + + a #GstRTSPConnection + + + + the new state + + + + + + 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. + +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 %NULL + + + + + + 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. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a socket + + + + storage for a #GstRTSPConnection + + + + a #GCancellable to cancel the operation + + + + + + Create a newly allocated #GstRTSPConnection from @url and store it in @conn. +The connection will not yet attempt to connect to @url, use +gst_rtsp_connection_connect(). + +A copy of @url will be made. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a #GstRTSPUrl + + + + storage for a #GstRTSPConnection + + + + + + Create a new #GstRTSPConnection for handling communication on the existing +socket @socket. The @initial_buffer contains zero terminated data already +read from @socket which should be used before starting to read new data. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a #GSocket + + + + the IP address of the other end + + + + the port used by the other end + + + + data already read from @fd + + + + storage for a #GstRTSPConnection + + + + + + + + + + + + + + + + + + + + + + + + + + + The possible events for the connection. + + connection is readable + + + connection is writable + + + + This interface is implemented e.g. by the Windows Media Streaming RTSP + exentension (rtspwms) and the RealMedia RTSP extension (rtspreal). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An interface representing RTSP extensions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The possible network families. + + unknown network family + + + internet + + + internet V6 + + + + Enumeration of rtsp header fields + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The different transport methods. + + invalid transport flag + + + stream data over UDP + + + stream data over UDP multicast + + + stream data over TCP + + + stream data tunneled over HTTP. + + + encrypt TCP and HTTP with TLS + + + + Provides methods for creating and parsing request, response and data messages. + + + the message type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add a header with key @field and @value to @msg. This function takes a copy +of @value. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + the value of the header + + + + + + Add a header with key @header and @value to @msg. This function takes a copy +of @value. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + header string + + + + the value of the header + + + + + + Append the currently configured headers in @msg to the #GString @str suitable +for transmission. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + a string + + + + + + Allocate a new copy of @msg and store the result in @copy. The value in +@copy should be release with gst_rtsp_message_free function. + + + a #GstRTSPResult + + + + + a #GstRTSPMessage + + + + pointer to new #GstRTSPMessage + + + + + + Dump the contents of @msg to stdout. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + + + Free the memory used by @msg. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + + + Get the body of @msg. @data remains valid for as long as @msg is valid and +unchanged. + +If the message body was set as a #GstBuffer before this will cause the data +to be copied and stored in the message. The #GstBuffer will no longer be +kept in the message. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + location for the data + + + + + + location for the size of @data + + + + + + Get the body of @msg. @buffer remains valid for as long as @msg is valid and +unchanged. + +If body data was set from raw memory instead of a #GstBuffer this function +will always return %NULL. The caller can check if there is a body buffer by +calling gst_rtsp_message_has_body_buffer(). + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + location for the buffer + + + + + + Get the @indx header value with key @field from @msg. The result in @value +stays valid as long as it remains present in @msg. + + + #GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key +was not found. + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + pointer to hold the result + + + + the index of the header + + + + + + Get the @index header value with key @header from @msg. The result in @value +stays valid as long as it remains present in @msg. + + + #GST_RTSP_OK when @field was found, #GST_RTSP_ENOTIMPL if the key +was not found. + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + pointer to hold the result + + + + the index of the header + + + + + + Get the message type of @msg. + + + the message type. + + + + + a #GstRTSPMessage + + + + + + Checks if @msg has a body and the body is stored as #GstBuffer. + + + %TRUE if @msg has a body and it's stored as #GstBuffer, %FALSE +otherwise. + + + + + a #GstRTSPMessage + + + + + + Initialize @msg. This function is mostly used when @msg is allocated on the +stack. The reverse operation of this is gst_rtsp_message_unset(). + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + + + Initialize a new data #GstRTSPMessage for @channel. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + a channel + + + + + + Initialize @msg as a request message with @method and @uri. To clear @msg +again, use gst_rtsp_message_unset(). + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + the request method to use + + + + the uri of the request + + + + + + Initialize @msg with @code and @reason. + +When @reason is %NULL, the default reason for @code will be used. + +When @request is not %NULL, the relevant headers will be copied to the new +response message. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + the status code + + + + the status reason or %NULL + + + + the request that triggered the response or %NULL + + + + + + Parses the credentials given in a WWW-Authenticate or Authorization header. + + + + %NULL-terminated array of GstRTSPAuthCredential or %NULL. + + + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + + + Parse the data message @msg and store the channel in @channel. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + location to hold the channel + + + + + + Parse the request message @msg and store the values @method, @uri and +@version. The result locations can be %NULL if one is not interested in its +value. + +@uri remains valid for as long as @msg is valid and unchanged. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + location to hold the method + + + + location to hold the uri + + + + location to hold the version + + + + + + Parse the response message @msg and store the values @code, @reason and +@version. The result locations can be %NULL if one is not interested in its +value. + +@reason remains valid for as long as @msg is valid and unchanged. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + location to hold the status code + + + + location to hold the status reason + + + + location to hold the version + + + + + + Remove the @indx header with key @field from @msg. If @indx equals -1, all +headers will be removed. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + the index of the header + + + + + + Remove the @index header with key @header from @msg. If @index equals -1, +all matching headers will be removed. + + + a #GstRTSPResult + + + + + a #GstRTSPMessage + + + + the header string + + + + the index of the header + + + + + + Set the body of @msg to a copy of @data. Any existing body or body buffer +will be replaced by the new body. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + the data + + + + + + the size of @data + + + + + + Set the body of @msg to @buffer. Any existing body or body buffer +will be replaced by the new body. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + a #GstBuffer + + + + + + Take the body of @msg and store it in @data and @size. After this method, +the body and size of @msg will be set to %NULL and 0 respectively. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + location for the data + + + + + + location for the size of @data + + + + + + Take the body of @msg and store it in @buffer. After this method, +the body and size of @msg will be set to %NULL and 0 respectively. + +If body data was set from raw memory instead of a #GstBuffer this function +will always return %NULL. The caller can check if there is a body buffer by +calling gst_rtsp_message_has_body_buffer(). + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + location for the buffer + + + + + + Set the body of @msg to @data and @size. This method takes ownership of +@data. Any existing body or body buffer will be replaced by the new body. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + the data + + + + + + the size of @data + + + + + + Set the body of @msg to @buffer. This method takes ownership of @buffer. +Any existing body or body buffer will be replaced by the new body. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + a #GstBuffer + + + + + + Add a header with key @field and @value to @msg. This function takes +ownership of @value. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + a #GstRTSPHeaderField + + + + the value of the header + + + + + + Add a header with key @header and @value to @msg. This function takes +ownership of @value, but not of @header. + + + a #GstRTSPResult. + + + + + a #GstRTSPMessage + + + + a header string + + + + the value of the header + + + + + + Unset the contents of @msg so that it becomes an uninitialized +#GstRTSPMessage again. This function is mostly used in combination with +gst_rtsp_message_init_request(), gst_rtsp_message_init_response() and +gst_rtsp_message_init_data() on stack allocated #GstRTSPMessage structures. + + + #GST_RTSP_OK. + + + + + a #GstRTSPMessage + + + + + + + The different supported RTSP methods. + + invalid method + + + the DESCRIBE method + + + the ANNOUNCE method + + + the GET_PARAMETER method + + + the OPTIONS method + + + the PAUSE method + + + the PLAY method + + + the RECORD method + + + the REDIRECT method + + + the SETUP method + + + the SET_PARAMETER method + + + the TEARDOWN method + + + the GET method (HTTP). + + + the POST method (HTTP). + + + Convert @method to a string. + + + a string representation of @method. + + + + + a #GstRTSPMethod + + + + + + + The type of a message. + + invalid message type + + + RTSP request message + + + RTSP response message + + + HTTP request message. + + + HTTP response message. + + + data message + + + + The transfer profile to use. + + invalid profile + + + the Audio/Visual profile (RFC 3551) + + + the secure Audio/Visual profile (RFC 3711) + + + the Audio/Visual profile with feedback (RFC 4585) + + + the secure Audio/Visual profile with feedback (RFC 5124) + + + + Provides helper functions to deal with time ranges. + + + minimum value of the range + + + + maximum value of the range + + + + Converts the range in-place between different types of units. +Ranges containing the special value #GST_RTSP_TIME_NOW can not be +converted as these are only valid for #GST_RTSP_RANGE_NPT. + + + %TRUE if the range could be converted + + + + + a #GstRTSPTimeRange + + + + the unit to convert the range into + + + + + + Free the memory allocated by @range. + + + + + + + a #GstRTSPTimeRange + + + + + + Retrieve the minimum and maximum values from @range converted to +#GstClockTime in @min and @max. + +A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW +and #GST_RTSP_TIME_END for @min and @max respectively. + +UTC times will be converted to nanoseconds since 1900. + + + %TRUE on success. + + + + + a #GstRTSPTimeRange + + + + result minimum #GstClockTime + + + + result maximum #GstClockTime + + + + + + Parse @rangestr to a #GstRTSPTimeRange. + + + #GST_RTSP_OK on success. + + + + + a range string to parse + + + + location to hold the #GstRTSPTimeRange result + + + + + + Convert @range into a string representation. + + + The string representation of @range. g_free() after usage. + + + + + a #GstRTSPTimeRange + + + + + + + Different possible time range units. + + SMPTE timecode + + + 29.97 frames per second + + + 25 frames per second + + + Normal play time + + + Absolute time expressed as ISO 8601 timestamps + + + + Result codes from the RTSP functions. + + no error + + + some unspecified error occurred + + + invalid arguments were provided to a function + + + an operation was canceled + + + no memory was available for the operation + + + a host resolve error occurred + + + function not implemented + + + a system error occurred, errno contains more details + + + a parsing error occurred + + + windows networking could not start + + + windows networking stack has wrong version + + + end-of-file was reached + + + a network problem occurred, h_errno contains more details + + + the host is not an IP host + + + a timeout occurred + + + the tunnel GET request has been performed + + + the tunnel POST request has been performed + + + last error + + + + The different RTSP states. + + invalid state + + + initializing + + + ready for operation + + + seeking in progress + + + playing + + + recording + + + + Enumeration of rtsp status codes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A time indication. + + + the time of the time + + + + seconds when @type is GST_RTSP_TIME_SECONDS, + GST_RTSP_TIME_UTC and GST_RTSP_TIME_FRAMES + + + + + Extra fields for a time indication. + + + frames and subframes when type in GstRTSPTime is + GST_RTSP_TIME_FRAMES + + + + year when type is GST_RTSP_TIME_UTC + + + + month when type is GST_RTSP_TIME_UTC + + + + day when type is GST_RTSP_TIME_UTC + + + + + A time range. + + + the time units used + + + + the minimum interval + + + + the maximum interval + + + + extra fields in the minimum interval (Since: 1.2) + + + + extra fields in the maximum interval (Since: 1.2) + + + + + Possible time types. + + seconds + + + now + + + end + + + frames and subframes + + + UTC time + + + + The transfer mode to use. + + invalid tansport mode + + + transfer RTP data + + + transfer RDT (RealMedia) data + + + + Provides helper functions to deal with RTSP transport strings. + + + the transport mode + + + + the tansport profile + + + + the lower transport + + + + the destination ip/hostname + + + + the source ip/hostname + + + + the number of layers + + + + if play mode was selected + + + + if record mode was selected + + + + is append mode was selected + + + + the interleave range + + + + the time to live for multicast UDP + + + + the port pair for multicast sessions + + + + the client port pair for receiving data. For TCP + based transports, applications can use this field to store the + sender and receiver ports of the client. + + + + the server port pair for receiving data. For TCP + based transports, applications can use this field to store the + sender and receiver ports of the server. + + + + the ssrc that the sender/receiver will use + + + + + + + + + Convert @transport into a string that can be used to signal the transport in +an RTSP SETUP response. + + + a string describing the RTSP transport +or %NULL when the transport is invalid. + + + + + a #GstRTSPTransport + + + + + + Free the memory used by @transport. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransport + + + + + + Get the media type of @transport. This media type is typically +used to generate #GstCaps events. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransport + + + + media type of @transport + + + + + + Get the #GstElement that can handle the buffers transported over @trans. + +It is possible that there are several managers available, use @option to +selected one. + +@manager will contain an element name or %NULL when no manager is +needed/available for @trans. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransMode + + + + location to hold the result + + + + option index. + + + + + + Get the mime type of the transport mode @trans. This mime type is typically +used to generate #GstCaps events. + This functions only deals with the GstRTSPTransMode and only + returns the mime type for #GST_RTSP_PROFILE_AVP. Use + gst_rtsp_transport_get_media_type() instead. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransMode + + + + location to hold the result + + + + + + Initialize @transport so that it can be used. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransport + + + + + + Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free() +after usage. + + + a #GstRTSPResult. + + + + + location to hold the new #GstRTSPTransport + + + + + + Parse the RTSP transport string @str into @transport. + + + a #GstRTSPResult. + + + + + a transport string + + + + a #GstRTSPTransport + + + + + + + Provides helper functions to handle RTSP urls. + + + the transports allowed + + + + the family + + + + the user + + + + the password + + + + the host + + + + the port + + + + the absolute path + + + + additional query parameters + + + + Make a copy of @url. + + + a copy of @url. Free with gst_rtsp_url_free () after usage. + + + + + a #GstRTSPUrl + + + + + + Splits the path of @url on '/' boundaries, decoding the resulting components, + +The decoding performed by this routine is "URI decoding", as defined in RFC +3986, commonly known as percent-decoding. For example, a string "foo\%2fbar" +will decode to "foo/bar" -- the \%2f being replaced by the corresponding byte +with hex value 0x2f. Note that there is no guarantee that the resulting byte +sequence is valid in any given encoding. As a special case, \%00 is not +unescaped to NUL, as that would prematurely terminate the string. + +Also note that since paths usually start with a slash, the first component +will usually be the empty string. + + + %NULL-terminated array of URL components. Free with +g_strfreev() when no longer needed. + + + + + + + a #GstRTSPUrl + + + + + + Free the memory used by @url. + + + + + + + a #GstRTSPUrl + + + + + + Get the port number of @url. + + + #GST_RTSP_OK. + + + + + a #GstRTSPUrl + + + + location to hold the port + + + + + + Get a newly allocated string describing the request URI for @url. + + + a string with the request URI. g_free() after usage. + + + + + a #GstRTSPUrl + + + + + + 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. + + + + + a #GstRTSPUrl + + + + an RTSP aggregate control path + + + + + + Set the port number in @url to @port. + + + #GST_RTSP_OK. + + + + + a #GstRTSPUrl + + + + the port + + + + + + Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage +with gst_rtsp_url_free(). + + + a #GstRTSPResult. + + + + + the url string to parse + + + + location to hold the result. + + + + + + + The supported RTSP versions. + + unknown/invalid version + + + version 1.0 + + + version 1.1. + + + version 2.0. + + + Convert @version to a string. + + + a string representation of @version. + + + + + a #GstRTSPVersion + + + + + + + Opaque RTSP watch object that can be used for asynchronous RTSP +operations. + + + Adds a #GstRTSPWatch to a context so that it will be executed within that context. + + + the ID (greater than 0) for the watch within the GMainContext. + + + + + a #GstRTSPWatch + + + + a GMainContext (if NULL, the default context will be used) + + + + + + Get the maximum amount of bytes and messages that will be queued in @watch. +See gst_rtsp_watch_set_send_backlog(). + + + + + + + a #GstRTSPWatch + + + + maximum bytes + + + + maximum messages + + + + + + Reset @watch, this is usually called after gst_rtsp_connection_do_tunnel() +when the file descriptors of the connection might have changed. + + + + + + + a #GstRTSPWatch + + + + + + Send a @message using the connection of the @watch. If it cannot be sent +immediately, it will be queued for transmission in @watch. The contents of +@message will then be serialized and transmitted when the connection of the +@watch becomes writable. In case the @message is queued, the ID returned in +@id will be non-zero and used as the ID argument in the message_sent +callback. + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPWatch + + + + a #GstRTSPMessage + + + + location for a message ID or %NULL + + + + + + Sends @messages using the connection of the @watch. If they cannot be sent +immediately, they will be queued for transmission in @watch. The contents of +@messages will then be serialized and transmitted when the connection of the +@watch becomes writable. In case the @messages are queued, the ID returned in +@id will be non-zero and used as the ID argument in the message_sent +callback once the last message is sent. The callback will only be called +once for the last message. + + + #GST_RTSP_OK on success. + + + + + a #GstRTSPWatch + + + + the messages to send + + + + + + the number of messages to send + + + + location for a message ID or %NULL + + + + + + When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog() +and make sure gst_rtsp_watch_write_data() returns immediately with +#GST_RTSP_EINTR. And empty the queue. + + + + + + + a #GstRTSPWatch + + + + new flushing state + + + + + + Set the maximum amount of bytes and messages that will be queued in @watch. +When the maximum amounts are exceeded, gst_rtsp_watch_write_data() and +gst_rtsp_watch_send_message() will return #GST_RTSP_ENOMEM. + +A value of 0 for @bytes or @messages means no limits. + + + + + + + a #GstRTSPWatch + + + + maximum bytes + + + + maximum messages + + + + + + Decreases the reference count of @watch by one. If the resulting reference +count is zero the watch and associated memory will be destroyed. + + + + + + + a #GstRTSPWatch + + + + + + Wait until there is place in the backlog queue, @timeout is reached +or @watch is set to flushing. + +If @timeout is %NULL 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 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 +@message will then be serialized and transmitted when the connection of the +@watch becomes writable. In case the @message is queued, the ID returned in +@id will be non-zero and used as the ID argument in the message_sent +callback. + +This function will take ownership of @data and g_free() it after use. + +If the amount of queued data exceeds the limits set with +gst_rtsp_watch_set_send_backlog(), this function will return +#GST_RTSP_ENOMEM. + + + #GST_RTSP_OK on success. #GST_RTSP_ENOMEM when the backlog limits +are reached. #GST_RTSP_EINTR when @watch was flushing. + + + + + a #GstRTSPWatch + + + + the data to queue + + + + + + the size of @data + + + + location for a message ID or %NULL + + + + + + Create a watch object for @conn. The functions provided in @funcs will be +called with @user_data when activity happened on the watch. + +The new watch is usually created so that it can be attached to a +maincontext with gst_rtsp_watch_attach(). + +@conn must exist for the entire lifetime of the watch. + + + a #GstRTSPWatch that can be used for asynchronous RTSP +communication. Free with gst_rtsp_watch_unref () after usage. + + + + + a #GstRTSPConnection + + + + watch functions + + + + user data to pass to @funcs + + + + notify when @user_data is not referenced anymore + + + + + + + Callback functions from a #GstRTSPWatch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Macro that checks the return value of @stmt and jumps to @label when it does +not equal #GST_RTSP_OK. + + + + a statement + + + a label + + + + + The default RTSP port to connect to. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Free a %NULL-terminated array of credentials returned from +gst_rtsp_message_parse_auth_credentials(). + + + + + + + a %NULL-terminated array of #GstRTSPAuthCredential + + + + + + Accept a new connection on @socket and create a new #GstRTSPConnection for +handling communication on new socket. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a socket + + + + storage for a #GstRTSPConnection + + + + a #GCancellable to cancel the operation + + + + + + Create a newly allocated #GstRTSPConnection from @url and store it in @conn. +The connection will not yet attempt to connect to @url, use +gst_rtsp_connection_connect(). + +A copy of @url will be made. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a #GstRTSPUrl + + + + storage for a #GstRTSPConnection + + + + + + Create a new #GstRTSPConnection for handling communication on the existing +socket @socket. The @initial_buffer contains zero terminated data already +read from @socket which should be used before starting to read new data. + + + #GST_RTSP_OK when @conn contains a valid connection. + + + + + a #GSocket + + + + the IP address of the other end + + + + the port used by the other end + + + + data already read from @fd + + + + storage for a #GstRTSPConnection + + + + + + Convert @header to a #GstRTSPHeaderField. + + + a #GstRTSPHeaderField for @header or #GST_RTSP_HDR_INVALID if the +header field is unknown. + + + + + a header string + + + + + + Convert @method to a #GstRTSPMethod. + + + a #GstRTSPMethod for @method or #GST_RTSP_INVALID if the +method is unknown. + + + + + a method + + + + + + Calculates the digest auth response from the values given by the server and +the username and password. See RFC2069 for details. + +Currently only supported algorithm "md5". + + + Authentication response or %NULL if unsupported + + + + + Hash algorithm to use, or %NULL for MD5 + + + + Request method, e.g. PLAY + + + + Realm + + + + Username + + + + Password + + + + Original request URI + + + + Nonce + + + + + + Calculates the digest auth response from the values given by the server and +the md5sum. See RFC2069 for details. + +This function is useful when the passwords are not stored in clear text, +but instead in the same format as the .htdigest file. + +Currently only supported algorithm "md5". + + + Authentication response or %NULL if unsupported + + + + + Hash algorithm to use, or %NULL for MD5 + + + + Request method, e.g. PLAY + + + + The md5 sum of username:realm:password + + + + Original request URI + + + + Nonce + + + + + + Check whether @field may appear multiple times in a message. + + + %TRUE if multiple headers are allowed. + + + + + a #GstRTSPHeaderField + + + + + + Convert @field to a string. + + + a string representation of @field. + + + + + a #GstRTSPHeaderField + + + + + + Create a new initialized #GstRTSPMessage. Free with gst_rtsp_message_free(). + + + a #GstRTSPResult. + + + + + a location for the new #GstRTSPMessage + + + + + + Create a new data #GstRTSPMessage with @channel and store the +result message in @msg. Free with gst_rtsp_message_free(). + + + a #GstRTSPResult. + + + + + a location for the new #GstRTSPMessage + + + + the channel + + + + + + Create a new #GstRTSPMessage with @method and @uri and store the result +request message in @msg. Free with gst_rtsp_message_free(). + + + a #GstRTSPResult. + + + + + a location for the new #GstRTSPMessage + + + + the request method to use + + + + the uri of the request + + + + + + Create a new response #GstRTSPMessage with @code and @reason and store the +result message in @msg. Free with gst_rtsp_message_free(). + +When @reason is %NULL, the default reason for @code will be used. + +When @request is not %NULL, the relevant headers will be copied to the new +response message. + + + a #GstRTSPResult. + + + + + a location for the new #GstRTSPMessage + + + + the status code + + + + the status reason or %NULL + + + + the request that triggered the response or %NULL + + + + + + Convert @method to a string. + + + a string representation of @method. + + + + + a #GstRTSPMethod + + + + + + Convert @options to a string. + + + a new string of @options. g_free() after usage. + + + + + one or more #GstRTSPMethod + + + + + + Convert the comma separated list @options to a #GstRTSPMethod bitwise or +of methods. This functions is the reverse of gst_rtsp_options_as_text(). + + + a #GstRTSPMethod + + + + + a comma separated list of options + + + + + + Converts the range in-place between different types of units. +Ranges containing the special value #GST_RTSP_TIME_NOW can not be +converted as these are only valid for #GST_RTSP_RANGE_NPT. + + + %TRUE if the range could be converted + + + + + a #GstRTSPTimeRange + + + + the unit to convert the range into + + + + + + Free the memory allocated by @range. + + + + + + + a #GstRTSPTimeRange + + + + + + Retrieve the minimum and maximum values from @range converted to +#GstClockTime in @min and @max. + +A value of %GST_CLOCK_TIME_NONE will be used to signal #GST_RTSP_TIME_NOW +and #GST_RTSP_TIME_END for @min and @max respectively. + +UTC times will be converted to nanoseconds since 1900. + + + %TRUE on success. + + + + + a #GstRTSPTimeRange + + + + result minimum #GstClockTime + + + + result maximum #GstClockTime + + + + + + Parse @rangestr to a #GstRTSPTimeRange. + + + #GST_RTSP_OK on success. + + + + + a range string to parse + + + + location to hold the #GstRTSPTimeRange result + + + + + + Convert @range into a string representation. + + + The string representation of @range. g_free() after usage. + + + + + a #GstRTSPTimeRange + + + + + + Convert @code to a string. + + + a string representation of @code. + + + + + a #GstRTSPStatusCode + + + + + + Convert @result in a human readable string. + + + a newly allocated string. g_free() after usage. + + + + + a #GstRTSPResult + + + + + + Get the #GstElement that can handle the buffers transported over @trans. + +It is possible that there are several managers available, use @option to +selected one. + +@manager will contain an element name or %NULL when no manager is +needed/available for @trans. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransMode + + + + location to hold the result + + + + option index. + + + + + + Get the mime type of the transport mode @trans. This mime type is typically +used to generate #GstCaps events. + This functions only deals with the GstRTSPTransMode and only + returns the mime type for #GST_RTSP_PROFILE_AVP. Use + gst_rtsp_transport_get_media_type() instead. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransMode + + + + location to hold the result + + + + + + Initialize @transport so that it can be used. + + + #GST_RTSP_OK. + + + + + a #GstRTSPTransport + + + + + + Allocate a new initialized #GstRTSPTransport. Use gst_rtsp_transport_free() +after usage. + + + a #GstRTSPResult. + + + + + location to hold the new #GstRTSPTransport + + + + + + Parse the RTSP transport string @str into @transport. + + + a #GstRTSPResult. + + + + + a transport string + + + + a #GstRTSPTransport + + + + + + Parse the RTSP @urlstr into a newly allocated #GstRTSPUrl. Free after usage +with gst_rtsp_url_free(). + + + a #GstRTSPResult. + + + + + the url string to parse + + + + location to hold the result. + + + + + + Convert @version to a string. + + + a string representation of @version. + + + + + a #GstRTSPVersion + + + + + + Create a watch object for @conn. The functions provided in @funcs will be +called with @user_data when activity happened on the watch. + +The new watch is usually created so that it can be attached to a +maincontext with gst_rtsp_watch_attach(). + +@conn must exist for the entire lifetime of the watch. + + + a #GstRTSPWatch that can be used for asynchronous RTSP +communication. Free with gst_rtsp_watch_unref () after usage. + + + + + a #GstRTSPConnection + + + + watch functions + + + + user data to pass to @funcs + + + + notify when @user_data is not referenced anymore + + + + + + diff --git a/girs/GstRtspServer-1.0.gir b/girs/GstRtspServer-1.0.gir new file mode 100644 index 0000000000..15a7a11b16 --- /dev/null +++ b/girs/GstRtspServer-1.0.gir @@ -0,0 +1,12379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An address + + + the #GstRTSPAddressPool owner of this address + + + + the address + + + + the port number + + + + number of ports + + + + TTL or 0 for unicast addresses + + + + + + + Make a copy of @addr. + + + a copy of @addr. + + + + + a #GstRTSPAddress + + + + + + Free @addr and releasing it back into the pool when owned by a +pool. + + + + + + + a #GstRTSPAddress + + + + + + + Flags used to control allocation of addresses + + + no flags + + + an IPv4 address + + + and IPv6 address + + + address with an even port + + + a multicast address + + + a unicast address + + + + An address pool, all member are private + + + Make a new #GstRTSPAddressPool. + + + a new #GstRTSPAddressPool + + + + + Take an address and ports from @pool. @flags can be used to control the +allocation. @n_ports consecutive ports will be allocated of which the first +one can be found in @port. + + + a #GstRTSPAddress that should be freed with +gst_rtsp_address_free after use or %NULL when no address could be +acquired. + + + + + a #GstRTSPAddressPool + + + + flags + + + + the amount of ports + + + + + + Adds the addresses from @min_addess to @max_address (inclusive) +to @pool. The valid port range for the addresses will be from @min_port to +@max_port inclusive. + +When @ttl is 0, @min_address and @max_address should be unicast addresses. +@min_address and @max_address can be set to +#GST_RTSP_ADDRESS_POOL_ANY_IPV4 or #GST_RTSP_ADDRESS_POOL_ANY_IPV6 to bind +to all available IPv4 or IPv6 addresses. + +When @ttl > 0, @min_address and @max_address should be multicast addresses. + + + %TRUE if the addresses could be added. + + + + + a #GstRTSPAddressPool + + + + a minimum address to add + + + + a maximum address to add + + + + the minimum port + + + + the maximum port + + + + a TTL or 0 for unicast addresses + + + + + + Clear all addresses in @pool. There should be no outstanding +allocations. + + + + + + + a #GstRTSPAddressPool + + + + + + Dump the free and allocated addresses to stdout. + + + + + + + a #GstRTSPAddressPool + + + + + + Used to know if the pool includes any unicast addresses. + + + %TRUE if the pool includes any unicast addresses, %FALSE otherwise + + + + + a #GstRTSPAddressPool + + + + + + Take a specific address and ports from @pool. @n_ports consecutive +ports will be allocated of which the first one can be found in +@port. + +If @ttl is 0, @address should be a unicast address. If @ttl > 0, @address +should be a valid multicast address. + + + #GST_RTSP_ADDRESS_POOL_OK if an address was reserved. The address +is returned in @address and should be freed with gst_rtsp_address_free +after use. + + + + + a #GstRTSPAddressPool + + + + The IP address to reserve + + + + The first port to reserve + + + + The number of ports + + + + The requested ttl + + + + storage for a #GstRTSPAddress + + + + + + the parent GObject + + + + + + + + + + + + + Opaque Address pool class. + + + + + + + + + + + + + + + Result codes from RTSP address pool functions. + + + no error + + + invalid arguments were provided to a function + + + the addres has already been reserved + + + the address is not in the pool + + + last error + + + + The authentication structure. + + + Create a new #GstRTSPAuth instance. + + + a new #GstRTSPAuth + + + + + Check if @check is allowed in the current context. + + + FALSE if check failed. + + + + + the item to check + + + + + + Construct a Basic authorisation token from @user and @pass. + + + the base64 encoding of the string @user:@pass. +g_free() after usage. + + + + + a userid + + + + a password + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add a basic token for the default authentication algorithm that +enables the client with privileges listed in @token. + + + + + + + a #GstRTSPAuth + + + + the basic token + + + + authorisation token + + + + + + Add a digest @user and @pass for the default authentication algorithm that +enables the client with privileges listed in @token. + + + + + + + a #GstRTSPAuth + + + + the digest user name + + + + the digest password + + + + authorisation token + + + + + + Get the default token for @auth. This token will be used for unauthenticated +users. + + + the #GstRTSPToken of @auth. gst_rtsp_token_unref() after +usage. + + + + + a #GstRTSPAuth + + + + + + + + the @realm of @auth + + + + + + + + + + Gets the supported authentication methods of @auth. + + + The supported authentication methods + + + + + a #GstRTSPAuth + + + + + + Get the #GTlsAuthenticationMode. + + + the #GTlsAuthenticationMode. + + + + + a #GstRTSPAuth + + + + + + Get the #GTlsCertificate used for negotiating TLS @auth. + + + the #GTlsCertificate of @auth. g_object_unref() after +usage. + + + + + a #GstRTSPAuth + + + + + + Get the #GTlsDatabase used for verifying client certificate. + + + the #GTlsDatabase of @auth. g_object_unref() after +usage. + + + + + a #GstRTSPAuth + + + + + + Parse the contents of the file at @path and enable the privileges +listed in @token for the users it describes. + +The format of the file is expected to match the format described by +<https://en.wikipedia.org/wiki/Digest_access_authentication#The_.htdigest_file>, +as output by the `htdigest` command. + + + %TRUE if the file was successfully parsed, %FALSE otherwise. + + + + + + + + Path to the htdigest file + + + + authorisation token + + + + + + Removes @basic authentication token. + + + + + + + a #GstRTSPAuth + + + + the basic token + + + + + + Removes a digest user. + + + + + + + a #GstRTSPAuth + + + + the digest user name + + + + + + Set the default #GstRTSPToken to @token in @auth. The default token will +be used for unauthenticated users. + + + + + + + a #GstRTSPAuth + + + + a #GstRTSPToken + + + + + + Set the @realm of @auth + + + + + + + + + + The realm to set + + + + + + Sets the supported authentication @methods for @auth. + + + + + + + a #GstRTSPAuth + + + + supported methods + + + + + + The #GTlsAuthenticationMode to set on the underlying GTlsServerConnection. +When set to another value than %G_TLS_AUTHENTICATION_NONE, +#GstRTSPAuth::accept-certificate signal will be emitted and must be handled. + + + + + + + a #GstRTSPAuth + + + + a #GTlsAuthenticationMode + + + + + + Set the TLS certificate for the auth. Client connections will only +be accepted when TLS is negotiated. + + + + + + + a #GstRTSPAuth + + + + a #GTlsCertificate + + + + + + Sets the certificate database that is used to verify peer certificates. +If set to %NULL (the default), then peer certificate validation will always +set the %G_TLS_CERTIFICATE_UNKNOWN_CA error. + + + + + + + a #GstRTSPAuth + + + + a #GTlsDatabase + + + + + + + + + + + + + + + + + Emitted during the TLS handshake after the client certificate has +been received. See also gst_rtsp_auth_set_tls_authentication_mode(). + + %TRUE to accept @peer_cert (which will also +immediately end the signal emission). %FALSE to allow the signal +emission to continue, which will cause the handshake to fail if +no one else overrides it. + + + + + a #GTlsConnection + + + + the peer's #GTlsCertificate + + + + the problems with @peer_cert. + + + + + + + The authentication class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The client object represents the connection and its state with a client. + + + Create a new #GstRTSPClient instance. + + + a new #GstRTSPClient + + + + + Called before sending error response to give the application the +possibility to adjust the error code. + + + a #GstRTSPStatusCode, containing the adjusted error code. + + + + + a #GstRTSPClient + + + + a #GstRTSPContext + + + + a #GstRTSPStatusCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attaches @client to @context. When the mainloop for @context is run, the +client will be dispatched. When @context is %NULL, the default context will be +used). + +This function should be called when the client properties and urls are fully +configured and the client is ready to start. + + + the ID (greater than 0) for the source within the GMainContext. + + + + + a #GstRTSPClient + + + + a #GMainContext + + + + + + Close the connection of @client and remove all media it was managing. + + + + + + + a #GstRTSPClient + + + + + + Get the #GstRTSPAuth used as the authentication manager of @client. + + + the #GstRTSPAuth of @client. +g_object_unref() after usage. + + + + + a #GstRTSPClient + + + + + + Get the #GstRTSPConnection of @client. + + + the #GstRTSPConnection of @client. +The connection object returned remains valid until the client is freed. + + + + + a #GstRTSPClient + + + + + + Get the Content-Length limit of @client. + + + the Content-Length limit. + + + + + a #GstRTSPClient + + + + + + Get the #GstRTSPMountPoints object that @client uses to manage its sessions. + + + a #GstRTSPMountPoints, unref after usage. + + + + + a #GstRTSPClient + + + + + + Get the #GstRTSPSessionPool object that @client uses to manage its sessions. + + + a #GstRTSPSessionPool, unref after usage. + + + + + a #GstRTSPClient + + + + + + 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. + + + the #GstRTSPThreadPool of @client. g_object_unref() after +usage. + + + + + a #GstRTSPClient + + + + + + Let the client handle @message. + + + a #GstRTSPResult. + + + + + a #GstRTSPClient + + + + an #GstRTSPMessage + + + + + + Send a message message to the remote end. @message must be a +#GST_RTSP_MESSAGE_REQUEST or a #GST_RTSP_MESSAGE_RESPONSE. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPSession to send + the message to or %NULL + + + + The #GstRTSPMessage to send + + + + + + Call @func for each session managed by @client. The result value of @func +determines what happens to the session. @func will be called with @client +locked so no further actions on @client can be performed from @func. + +If @func returns #GST_RTSP_FILTER_REMOVE, the session will be removed from +@client. + +If @func returns #GST_RTSP_FILTER_KEEP, the session will remain in @client. + +If @func returns #GST_RTSP_FILTER_REF, the session will remain in @client but +will also be added with an additional ref to the result #GList of this +function.. + +When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each session. + + + a #GList with all +sessions for which @func returned #GST_RTSP_FILTER_REF. After usage, each +element in the #GList should be unreffed before the list is freed. + + + + + + + a #GstRTSPClient + + + + a callback + + + + user data passed to @func + + + + + + configure @auth to be used as the authentication manager of @client. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPAuth + + + + + + Set the #GstRTSPConnection of @client. This function takes ownership of +@conn. + + + %TRUE on success. + + + + + a #GstRTSPClient + + + + a #GstRTSPConnection + + + + + + 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 +created the client but can be overriden later. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPMountPoints + + + + + + Set @func as the callback that will be called when a new message needs to be +sent to the client. @user_data is passed to @func and @notify is called when +@user_data is no longer in use. + +By default, the client will send the messages on the #GstRTSPConnection that +was configured with gst_rtsp_client_attach() was called. + +It is only allowed to set either a `send_func` or a `send_messages_func` +but not both at the same time. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPClientSendFunc + + + + user data passed to @func + + + + called when @user_data is no longer in use + + + + + + Set @func as the callback that will be called when new messages needs to be +sent to the client. @user_data is passed to @func and @notify is called when +@user_data is no longer in use. + +By default, the client will send the messages on the #GstRTSPConnection that +was configured with gst_rtsp_client_attach() was called. + +It is only allowed to set either a `send_func` or a `send_messages_func` +but not both at the same time. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPClientSendMessagesFunc + + + + user data passed to @func + + + + called when @user_data is no longer in use + + + + + + Set @pool as the sessionpool for @client which it will use to find +or allocate sessions. the sessionpool is usually inherited from the server +that created the client but can be overridden later. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPSessionPool + + + + + + configure @pool to be used as the thread pool of @client. + + + + + + + a #GstRTSPClient + + + + a #GstRTSPThreadPool + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstRTSPContext + + + + + + + a newly allocated string with comma-separated list of + unsupported options. An empty string must be returned if + all options are supported. + + + + + a #GstRTSPContext + + + + a NULL-terminated array of strings + + + + + + + + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + a #GstRTSPStatusCode, GST_RTSP_STS_OK in case of success, + otherwise an appropriate return code + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + The session + + + + The message + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + + + + + a #GstRTSPContext + + + + + + + The client class structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstRTSPStatusCode, containing the adjusted error code. + + + + + a #GstRTSPClient + + + + a #GstRTSPContext + + + + a #GstRTSPStatusCode + + + + + + + + + + + + + + + + This callback is called when @client wants to send @message. When @close is +%TRUE, the connection should be closed when the message has been sent. + + + %TRUE on success. + + + + + a #GstRTSPClient + + + + a #GstRTSPMessage + + + + close the connection + + + + user data when registering the callback + + + + + + This callback is called when @client wants to send @messages. When @close is +%TRUE, the connection should be closed when the message has been sent. + + + %TRUE on success. + + + + + a #GstRTSPClient + + + + #GstRTSPMessage + + + + number of messages + + + + close the connection + + + + user data when registering the callback + + + + + + This function will be called by the gst_rtsp_client_session_filter(). An +implementation should return a value of #GstRTSPFilterResult. + +When this function returns #GST_RTSP_FILTER_REMOVE, @sess will be removed +from @client. + +A return value of #GST_RTSP_FILTER_KEEP will leave @sess untouched in +@client. + +A value of #GST_RTSP_FILTER_REF will add @sess to the result #GList of +gst_rtsp_client_session_filter(). + + + a #GstRTSPFilterResult. + + + + + a #GstRTSPClient object + + + + a #GstRTSPSession in @client + + + + user data that has been given to gst_rtsp_client_session_filter() + + + + + + Information passed around containing the context of a request. + + + the server + + + + the connection + + + + the client + + + + the complete request + + + + the complete url parsed from @request + + + + the parsed method of @uri + + + + the current auth object or %NULL + + + + authorisation token + + + + the session, can be %NULL + + + + the session media for the url can be %NULL + + + + the media factory for the url, can be %NULL + + + + the media for the url can be %NULL + + + + the stream for the url can be %NULL + + + + the response + + + + the stream transport, can be %NULL + + + + + + + + + Pops @ctx off the context stack (verifying that @ctx +is on the top of the stack). + + + + + + + a #GstRTSPContext + + + + + + Pushes @ctx onto the context stack. The current +context can then be received using gst_rtsp_context_get_current(). + + + + + + + a #GstRTSPContext + + + + + + Set the token for @ctx. + + + + + + + a #GstRTSPContext + + + + a #GstRTSPToken + + + + + + Get the current #GstRTSPContext. This object is retrieved from the +current thread that is handling the request for a client. + + + a #GstRTSPContext + + + + + + Possible return values for gst_rtsp_session_pool_filter(). + + + Remove session + + + Keep session in the pool + + + Ref session in the result list + + + + Function registered with gst_rtsp_stream_transport_set_keepalive() and called +when the stream is active. + + + + + + + user data + + + + + + A class that contains the GStreamer element along with a list of +#GstRTSPStream objects that can produce data. + +This object is usually created from a #GstRTSPMediaFactory. + + + Create a new #GstRTSPMedia instance. @element is the bin element that +provides the different streams. The #GstRTSPMedia object contains the +element to produce RTP data for one or more related (audio/video/..) +streams. + +Ownership is taken of @element. + + + a new #GstRTSPMedia object. + + + + + a #GstElement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Configure an SDP on @media for receiving streams + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Prepare @media for streaming. This function will create the objects +to manage the streaming. A pipeline must have been set on @media with +gst_rtsp_media_take_pipeline(). + +It will preroll the pipeline and collect vital information about the streams +such as the duration. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPThread to run the + bus handler or %NULL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add @media specific info to @sdp. @info is used to configure the connection +information in the SDP. + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + a #GstSDPInfo + + + + + + Suspend @media. The state of the pipeline managed by @media is set to +GST_STATE_NULL but all streams are kept. @media can be prepared again +with gst_rtsp_media_unsuspend() + +@media must be prepared with gst_rtsp_media_prepare(); + + + %TRUE on success. + + + + + 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 +must be created. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + + + + + + + + + + + + Unsuspend @media if it was in a suspended state. This method does nothing +when the media was not in the suspended state. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + Find all payloader elements, they should be named pay\%d in the +element of @media, and create #GstRTSPStreams for them. + +Collect all dynamic elements, named dynpay\%d, and add them to +the list of dynamic elements. + +Find all depayloader elements, they should be named depay\%d in the +element of @media, and create #GstRTSPStreams for them. + + + + + + + a #GstRTSPMedia + + + + + + Add a receiver and sender parts to the pipeline based on the transport from +SETUP. + + + %TRUE if the media pipeline has been sucessfully updated. + + + + + a #GstRTSPMedia + + + + a list of #GstRTSPTransport + + + + + + + + Create a new stream in @media that provides RTP data on @pad. +@pad should be a pad of an element inside @media->element. + + + a new #GstRTSPStream that remains valid for as long +as @media exists. + + + + + a #GstRTSPMedia + + + + a #GstElement + + + + a #GstPad + + + + + + Find a stream in @media with @control as the control uri. + + + the #GstRTSPStream with +control uri @control or %NULL when a stream with that control did +not exist. + + + + + a #GstRTSPMedia + + + + the control of the stream + + + + + + Get the #GstRTSPAddressPool used as the address pool of @media. + + + the #GstRTSPAddressPool of @media. +g_object_unref() after usage. + + + + + a #GstRTSPMedia + + + + + + Get the base_time that is used by the pipeline in @media. + +@media must be prepared before this method returns a valid base_time. + + + the base_time used by @media. + + + + + a #GstRTSPMedia + + + + + + Get the kernel UDP buffer size. + + + the kernel UDP buffer size. + + + + + a #GstRTSPMedia + + + + + + Get the clock that is used by the pipeline in @media. + +@media must be prepared before this method returns a valid clock object. + + + the #GstClock used by @media. unref after usage. + + + + + a #GstRTSPMedia + + + + + + + + Whether retransmission requests will be sent + + + + + + + + + + Get the configured DSCP QoS of attached media. + + + the DSCP QoS value of attached streams or -1 if disabled. + + + + + a #GstRTSPMedia + + + + + + Get the element that was used when constructing @media. + + + a #GstElement. Unref after usage. + + + + + a #GstRTSPMedia + + + + + + Get the latency that is used for receiving media. + + + latency in milliseconds + + + + + a #GstRTSPMedia + + + + + + Get the the maximum time-to-live value of outgoing multicast packets. + + + the maximum time-to-live value of outgoing multicast packets. + + + + + a #GstRTSPMedia + + + + + + Get the multicast interface used for @media. + + + the multicast interface for @media. +g_free() after usage. + + + + + a #GstRTSPMedia + + + + + + Get the permissions object from @media. + + + a #GstRTSPPermissions object, unref after usage. + + + + + a #GstRTSPMedia + + + + + + Get the allowed profiles of @media. + + + a #GstRTSPProfile + + + + + a #GstRTSPMedia + + + + + + Get the allowed protocols of @media. + + + a #GstRTSPLowerTrans + + + + + a #GstRTSPMedia + + + + + + Gets if and how the media clock should be published according to RFC7273. + + + The GstRTSPPublishClockMode + + + + + a #GstRTSPMedia + + + + + + Get the current range as a string. @media must be prepared with +gst_rtsp_media_prepare (). + + + The range as a string, g_free() after usage. + + + + + a #GstRTSPMedia + + + + for the PLAY request + + + + the unit to use for the string + + + + + + + + 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 + + + + the rate of the current segment + + + + the applied_rate of the current segment + + + + + + Get the amount of time to store retransmission data. + + + the amount of time to store retransmission data. + + + + + a #GstRTSPMedia + + + + + + Get the status of @media. When @media is busy preparing, this function waits +until @media is prepared or in error. + + + the status of @media. + + + + + a #GstRTSPMedia + + + + + + Retrieve the stream with index @idx from @media. + + + the #GstRTSPStream at index +@idx or %NULL when a stream with that index did not exist. + + + + + a #GstRTSPMedia + + + + the stream index + + + + + + Get how @media will be suspended. + + + #GstRTSPSuspendMode. + + + + + a #GstRTSPMedia + + + + + + Get the #GstNetTimeProvider for the clock used by @media. The time provider +will listen on @address and @port for client time requests. + + + the #GstNetTimeProvider of @media. + + + + + a #GstRTSPMedia + + + + an address or %NULL + + + + a port or 0 + + + + + + Check if the pipeline for @media can be used for PLAY or RECORD methods. + + + The transport mode. + + + + + a #GstRTSPMedia + + + + + + Configure an SDP on @media for receiving streams + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + + + 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. + + + %TRUE if multicast sockets are configured to be bound to multicast addresses. + + + + + a #GstRTSPMedia + + + + + + Check if the pipeline for @media will send an EOS down the pipeline before +unpreparing. + + + %TRUE if the media will send EOS before unpreparing. + + + + + a #GstRTSPMedia + + + + + + + + %TRUE if @media is receive-only, %FALSE otherwise. + + + + + + + + + + Check if the pipeline for @media can be reused after an unprepare. + + + %TRUE if the media can be reused + + + + + a #GstRTSPMedia + + + + + + Check if the pipeline for @media can be shared between multiple clients. + + + %TRUE if the media can be shared between clients. + + + + + a #GstRTSPMedia + + + + + + Check if the pipeline for @media will be stopped when a client disconnects +without sending TEARDOWN. + + + %TRUE if the media will be stopped when a client disconnects + without sending TEARDOWN. + + + + + a #GstRTSPMedia + + + + + + Check if @media can provide a #GstNetTimeProvider for its pipeline clock. + +Use gst_rtsp_media_get_time_provider() to get the network clock. + + + %TRUE if @media can provide a #GstNetTimeProvider. + + + + + a #GstRTSPMedia + + + + + + 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. + + + The number of streams. + + + + + a #GstRTSPMedia + + + + + + Prepare @media for streaming. This function will create the objects +to manage the streaming. A pipeline must have been set on @media with +gst_rtsp_media_take_pipeline(). + +It will preroll the pipeline and collect vital information about the streams +such as the duration. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPThread to run the + bus handler or %NULL + + + + + + Seek the pipeline of @media to @range. @media must be prepared with +gst_rtsp_media_prepare(). + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPTimeRange + + + + + + Seek the pipeline of @media to @range with the given @flags. +@media must be prepared with gst_rtsp_media_prepare(). + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPTimeRange + + + + The minimal set of #GstSeekFlags to use + + + + + + 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. + + + -1 if the stream is not seekable, 0 if seekable only to the beginning +and > 0 to indicate the longest duration between any two random access points. +%G_MAXINT64 means any value is possible. + + + + + a #GstRTSPMedia + + + + + + configure @pool to be used as the address pool of @media. + + + + + + + a #GstRTSPMedia + + + + a #GstRTSPAddressPool + + + + + + Decide whether the multicast socket should be bound to a multicast address or +INADDR_ANY. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Set the kernel UDP buffer size. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Configure the clock used for the media. + + + + + + + a #GstRTSPMedia + + + + #GstClock to be used + + + + + + Set whether retransmission requests will be sent + + + + + + + + + + + + + + + Configure the dscp qos of attached streams to @dscp_qos. + + + + + + + a #GstRTSPMedia + + + + a new dscp qos value (0-63, or -1 to disable) + + + + + + Set or unset if an EOS event will be sent to the pipeline for @media before +it is unprepared. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Configure the latency used for receiving media. + + + + + + + a #GstRTSPMedia + + + + latency in milliseconds + + + + + + Set the maximum time-to-live value of outgoing multicast packets. + + + %TRUE if the requested ttl has been set successfully. + + + + + a #GstRTSPMedia + + + + the new multicast ttl value + + + + + + configure @multicast_iface to be used for @media. + + + + + + + a #GstRTSPMedia + + + + a multicast interface name + + + + + + Set @permissions on @media. + + + + + + + a #GstRTSPMedia + + + + a #GstRTSPPermissions + + + + + + Set the state of the pipeline managed by @media to @state + + + + + + + a #GstRTSPMedia + + + + the target state of the pipeline + + + + + + Configure the allowed lower transport for @media. + + + + + + + a #GstRTSPMedia + + + + the new flags + + + + + + Configure the allowed lower transport for @media. + + + + + + + a #GstRTSPMedia + + + + the new flags + + + + + + Sets if and how the media clock should be published according to RFC7273. + + + + + + + a #GstRTSPMedia + + + + the clock publish mode + + + + + + 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. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Set or unset if the pipeline for @media can be reused after the pipeline has +been unprepared. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Set or unset if the pipeline for @media can be shared will multiple clients. +When @shared is %TRUE, client requests for this media will share the media +pipeline. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Set the state of @media to @state and for the transports in @transports. + +@media must be prepared with gst_rtsp_media_prepare(); + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + the target state of the media + + + + +a #GPtrArray of #GstRTSPStreamTransport pointers + + + + + + + + Set or unset if the pipeline for @media should be stopped when a +client disconnects without sending TEARDOWN. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Control how @ media will be suspended after the SDP has been generated and +after a PAUSE request has been performed. + +Media must be unprepared when setting the suspend mode. + + + + + + + a #GstRTSPMedia + + + + the new #GstRTSPSuspendMode + + + + + + Sets if the media pipeline can work in PLAY or RECORD mode + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Add @media specific info to @sdp. @info is used to configure the connection +information in the SDP. + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + a #GstSDPInfo + + + + + + Suspend @media. The state of the pipeline managed by @media is set to +GST_STATE_NULL but all streams are kept. @media can be prepared again +with gst_rtsp_media_unsuspend() + +@media must be prepared with gst_rtsp_media_prepare(); + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + Set @pipeline as the #GstPipeline for @media. Ownership is +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 +must be created. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + Unsuspend @media if it was in a suspended state. This method does nothing +when the media was not in the suspended state. + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + Set @media to provide a #GstNetTimeProvider. + + + + + + + a #GstRTSPMedia + + + + if a #GstNetTimeProvider should be used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Will be emitted when a message appears on the pipeline bus. + + a #gboolean indicating if the call was successful or not. + + + + + a #GstMessage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The RTSP media class + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstRTSPThread to run the + bus handler or %NULL + + + + + + + + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + + + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + + + + + %TRUE on success. + + + + + a #GstRTSPMedia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + a #GstSDPInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TRUE on success. + + + + + a #GstRTSPMedia + + + + a #GstSDPMessage + + + + + + + + + + + + + The definition and logic for constructing the pipeline for a media. The media +can contain multiple streams like audio and video. + + + Create a new #GstRTSPMediaFactory instance. + + + a new #GstRTSPMediaFactory object. + + + + + + + + + + + + + + + + + + + Construct the media object and create its streams. Implementations +should create the needed gstreamer elements and add them to the result +object. No state changes should be performed on them yet. + +One or more GstRTSPStream objects should be created from the result +with gst_rtsp_media_create_stream (). + +After the media is constructed, it can be configured and then prepared +with gst_rtsp_media_prepare (). + + + a new #GstRTSPMedia if the media could be prepared. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + Construct and return a #GstElement that is a #GstBin containing +the elements to use for streaming the media. + +The bin should contain payloaders pay\%d for each stream. The default +implementation of this function returns the bin created from the +launch parameter. + + + a new #GstElement. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A convenience method to add @role with @fieldname and additional arguments to +the permissions of @factory. If @factory had no permissions, new permissions +will be created and the role will be added to it. + + + + + + + a #GstRTSPMediaFactory + + + + a role + + + + the first field name + + + + additional arguments + + + + + + A convenience wrapper around gst_rtsp_permissions_add_role_from_structure(). +If @factory had no permissions, new permissions will be created and the +role will be added to it. + + + + + + + + + + + + + + + Construct the media object and create its streams. Implementations +should create the needed gstreamer elements and add them to the result +object. No state changes should be performed on them yet. + +One or more GstRTSPStream objects should be created from the result +with gst_rtsp_media_create_stream (). + +After the media is constructed, it can be configured and then prepared +with gst_rtsp_media_prepare (). + + + a new #GstRTSPMedia if the media could be prepared. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + Construct and return a #GstElement that is a #GstBin containing +the elements to use for streaming the media. + +The bin should contain payloaders pay\%d for each stream. The default +implementation of this function returns the bin created from the +launch parameter. + + + a new #GstElement. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + Get the #GstRTSPAddressPool used as the address pool of @factory. + + + the #GstRTSPAddressPool of @factory. g_object_unref() after +usage. + + + + + a #GstRTSPMediaFactory + + + + + + Get the kernel UDP buffer size. + + + the kernel UDP buffer size. + + + + + a #GstRTSPMedia + + + + + + Returns the clock that is going to be used by the pipelines +of all medias created from this factory. + + + The GstClock + + + + + a #GstRTSPMediaFactory + + + + + + + + Whether retransmission requests will be sent for receiving media + + + + + + + + + + Get the configured media DSCP QoS. + + + the media DSCP QoS value or -1 if disabled. + + + + + a #GstRTSPMediaFactory + + + + + + Get the latency that is used for receiving media + + + latency in milliseconds + + + + + a #GstRTSPMediaFactory + + + + + + Get the gst_parse_launch() pipeline description that will be used in the +default prepare vmethod. + + + the configured launch description. g_free() after +usage. + + + + + a #GstRTSPMediaFactory + + + + + + Get the the maximum time-to-live value of outgoing multicast packets. + + + the maximum time-to-live value of outgoing multicast packets. + + + + + a #GstRTSPMedia + + + + + + Return the GType of the GstRTSPMedia subclass this +factory will create. + + + + + + + a #GstRTSPMediaFactory + + + + + + Get the multicast interface used for @factory. + + + the multicast interface for @factory. g_free() after +usage. + + + + + a #GstRTSPMediaFactory + + + + + + Get the permissions object from @factory. + + + a #GstRTSPPermissions object, unref after usage. + + + + + a #GstRTSPMediaFactory + + + + + + Get the allowed profiles of @factory. + + + a #GstRTSPProfile + + + + + a #GstRTSPMediaFactory + + + + + + Get the allowed protocols of @factory. + + + a #GstRTSPLowerTrans + + + + + a #GstRTSPMediaFactory + + + + + + Gets if and how the media clock should be published according to RFC7273. + + + The GstRTSPPublishClockMode + + + + + a #GstRTSPMediaFactory + + + + + + Get the time that is stored for retransmission purposes + + + a #GstClockTime + + + + + a #GstRTSPMediaFactory + + + + + + Get how media created from this factory will be suspended. + + + a #GstRTSPSuspendMode. + + + + + a #GstRTSPMediaFactory + + + + + + Get if media created from this factory can be used for PLAY or RECORD +methods. + + + The transport mode. + + + + + a #GstRTSPMediaFactory + + + + + + Check if multicast sockets are configured to be bound to multicast addresses. + + + %TRUE if multicast sockets are configured to be bound to multicast addresses. + + + + + a #GstRTSPMediaFactory + + + + + + Check if created media will send and receive RTCP + + + %TRUE if created media will send and receive RTCP + + + + + a #GstRTSPMediaFactory + + + + + + Get if media created from this factory will have an EOS event sent to the +pipeline before shutdown. + + + %TRUE if the media will receive EOS before shutdown. + + + + + a #GstRTSPMediaFactory + + + + + + Get if media created from this factory can be shared between clients. + + + %TRUE if the media will be shared between clients. + + + + + a #GstRTSPMediaFactory + + + + + + + + + + + + + + + + + configure @pool to be used as the address pool of @factory. + + + + + + + a #GstRTSPMediaFactory + + + + a #GstRTSPAddressPool + + + + + + Decide whether the multicast socket should be bound to a multicast address or +INADDR_ANY. + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + Set the kernel UDP buffer size. + + + + + + + a #GstRTSPMedia + + + + the new value + + + + + + Configures a specific clock to be used by the pipelines +of all medias created from this factory. + + + + + + + a #GstRTSPMediaFactory + + + + the clock to be used by the media factory + + + + + + Set whether retransmission requests will be sent for +receiving media + + + + + + + + + + + + + + + Configure the media dscp qos to @dscp_qos. + + + + + + + a #GstRTSPMediaFactory + + + + a new dscp qos value (0-63, or -1 to disable) + + + + + + Decide whether the created media should send and receive RTCP + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + Configure if media created from this factory will have an EOS sent to the +pipeline before shutdown. + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + Configure the latency used for receiving media + + + + + + + a #GstRTSPMediaFactory + + + + latency in milliseconds + + + + + + The gst_parse_launch() line to use for constructing the pipeline in the +default prepare vmethod. + +The pipeline description should return a GstBin as the toplevel element +which can be accomplished by enclosing the description with brackets '(' +')'. + +The description should return a pipeline with payloaders named pay0, pay1, +etc.. Each of the payloaders will result in a stream. + + + + + + + a #GstRTSPMediaFactory + + + + the launch description + + + + + + Set the maximum time-to-live value of outgoing multicast packets. + + + %TRUE if the requested ttl has been set successfully. + + + + + a #GstRTSPMedia + + + + the new multicast ttl value + + + + + + Configure the GType of the GstRTSPMedia subclass to +create (by default, overridden construct vmethods +may of course do something different) + + + + + + + a #GstRTSPMediaFactory + + + + the GType of the class to create + + + + + + configure @multicast_iface to be used for @factory. + + + + + + + a #GstRTSPMediaFactory + + + + a multicast interface name + + + + + + Set @permissions on @factory. + + + + + + + a #GstRTSPMediaFactory + + + + a #GstRTSPPermissions + + + + + + Configure the allowed profiles for @factory. + + + + + + + a #GstRTSPMediaFactory + + + + the new flags + + + + + + Configure the allowed lower transport for @factory. + + + + + + + a #GstRTSPMediaFactory + + + + the new flags + + + + + + Sets if and how the media clock should be published according to RFC7273. + + + + + + + a #GstRTSPMediaFactory + + + + the clock publish mode + + + + + + Configure the time to store for possible retransmission + + + + + + + a #GstRTSPMediaFactory + + + + a #GstClockTime + + + + + + Configure if media created from this factory can be shared between clients. + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + Configure if media created from this factory should be stopped +when a client disconnects without sending TEARDOWN. + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + Configure how media created from this factory will be suspended. + + + + + + + a #GstRTSPMediaFactory + + + + the new #GstRTSPSuspendMode + + + + + + Configure if this factory creates media for PLAY or RECORD modes. + + + + + + + a #GstRTSPMediaFactory + + + + the new value + + + + + + + + + + + + + + + + + + Whether the created media should send and receive RTCP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstRTSPMediaFactory class structure. + + + + + + + + + + + + + + + + + + + + + + + + + a new #GstElement. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + + + + + a new #GstRTSPMedia if the media could be prepared. + + + + + a #GstRTSPMediaFactory + + + + the url used + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A media factory that creates a pipeline to play any uri. + + + Create a new #GstRTSPMediaFactoryURI instance. + + + a new #GstRTSPMediaFactoryURI object. + + + + + Get the URI that will provide media for this factory. + + + the configured URI. g_free() after usage. + + + + + a #GstRTSPMediaFactory + + + + + + Set the URI of the resource that will be streamed by this factory. + + + + + + + a #GstRTSPMediaFactory + + + + the uri the stream + + + + + + + + + + + + + + + + + + + + + + + + The #GstRTSPMediaFactoryURI class structure. + + + + + + + + + + + + + + + + + + The state of the media pipeline. + + + media pipeline not prerolled + + + media pipeline is busy doing a clean + shutdown. + + + media pipeline is prerolling + + + media pipeline is prerolled + + + media is suspended + + + media pipeline is in error + + + + Function registered with gst_rtsp_stream_transport_set_message_sent() +and called when a message has been sent on the transport. + + + + + + + user data + + + + + + Function registered with gst_rtsp_stream_transport_set_message_sent_full() +and called when a message has been sent on the transport. + + + + + + + + + + user data + + + + + + Creates a #GstRTSPMediaFactory object for a given url. + + + Make a new mount points object. + + + a new #GstRTSPMountPoints + + + + + Make a path string from @url. + + + a path string for @url, g_free() after usage. + + + + + a #GstRTSPMountPoints + + + + a #GstRTSPUrl + + + + + + Attach @factory to the mount point @path in @mounts. + +@path is either of the form (/node)+ or the root path '/'. (An empty path is +not allowed.) Any previous mount point will be freed. + +Ownership is taken of the reference on @factory so that @factory should not be +used after calling this function. + + + + + + + a #GstRTSPMountPoints + + + + a mount point + + + + a #GstRTSPMediaFactory + + + + + + Make a path string from @url. + + + a path string for @url, g_free() after usage. + + + + + a #GstRTSPMountPoints + + + + a #GstRTSPUrl + + + + + + Find the factory in @mounts that has the longest match with @path. + +If @matched is %NULL, @path will match the factory exactly otherwise +the amount of characters that matched is returned in @matched. + + + the #GstRTSPMediaFactory for @path. +g_object_unref() after usage. + + + + + a #GstRTSPMountPoints + + + + a mount point + + + + the amount of @path matched + + + + + + Remove the #GstRTSPMediaFactory associated with @path in @mounts. + + + + + + + a #GstRTSPMountPoints + + + + a mount point + + + + + + + + + + + + + + + + + + The class for the media mounts object. + + + + + + + + + a path string for @url, g_free() after usage. + + + + + a #GstRTSPMountPoints + + + + a #GstRTSPUrl + + + + + + + + + + + + + + + + + + Create a new #GstRTSPOnvifClient instance. + + + a new #GstRTSPOnvifClient + + + + + + + + + + + + + + + + + + + + + + + + + + + Find the ONVIF backchannel depayloader element. It should be named +'depay_backchannel', be placed in a bin called 'onvif-backchannel' +and return all supported RTP caps on a caps query. Complete RTP caps with +at least the payload type, clock-rate and encoding-name are required. + +A new #GstRTSPStream is created for the backchannel if found. + + + %TRUE if a backchannel stream could be found and created + + + + + a #GstRTSPOnvifMedia + + + + + + Get the configured/supported bandwidth of the ONVIF backchannel pipeline in +bits per second. + + + the configured/supported backchannel bandwidth. + + + + + a #GstRTSPMedia + + + + + + Set the configured/supported bandwidth of the ONVIF backchannel pipeline in +bits per second. + + + + + + + a #GstRTSPMedia + + + + the bandwidth in bits per second + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create a new #GstRTSPOnvifMediaFactory + + + A new #GstRTSPOnvifMediaFactory + + + + + Checks whether the client request requires backchannel. + + + %TRUE if the client request requires backchannel. + + + + + a #GstRTSPMediaFactory + + + + + + + + + Returns %TRUE if an ONVIF backchannel is supported by the media factory. + + + %TRUE if an ONVIF backchannel is supported by the media factory. + + + + + a #GstRTSPMediaFactory + + + + + + Get the configured/supported bandwidth of the ONVIF backchannel pipeline in +bits per second. + + + the configured/supported backchannel bandwidth. + + + + + a #GstRTSPMediaFactory + + + + + + Get the gst_parse_launch() pipeline description that will be used in the +default prepare vmethod for generating the ONVIF backchannel pipeline. + + + the configured backchannel launch description. g_free() after +usage. + + + + + a #GstRTSPMediaFactory + + + + + + Returns %TRUE if an ONVIF backchannel is supported by the media factory. + + + %TRUE if an ONVIF backchannel is supported by the media factory. + + + + + a #GstRTSPMediaFactory + + + + + + + + %TRUE if ONVIF replay is supported by the media factory. + + + + + + + + + + Set the configured/supported bandwidth of the ONVIF backchannel pipeline in +bits per second. + + + + + + + a #GstRTSPMediaFactory + + + + the bandwidth in bits per second + + + + + + The gst_parse_launch() line to use for constructing the ONVIF backchannel +pipeline in the default prepare vmethod if requested by the client. + +The pipeline description should return a GstBin as the toplevel element +which can be accomplished by enclosing the description with brackets '(' +')'. + +The description should return a pipeline with a single depayloader named +depay_backchannel. A caps query on the depayloader's sinkpad should return +all possible, complete RTP caps that are going to be supported. At least +the payload type, clock-rate and encoding-name need to be specified. + +Note: The pipeline part passed here must end in sinks that are not waiting +until pre-rolling before reaching the PAUSED state, i.e. setting +async=false on #GstBaseSink. Otherwise the whole media will not be able to +prepare. + + + + + + + a #GstRTSPMediaFactory + + + + the launch description + + + + + + Set to %TRUE if ONVIF replay is supported by the media factory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if an ONVIF backchannel is supported by the media factory. + + + + + a #GstRTSPMediaFactory + + + + + + + + + + + + + + + + + + + + + Create a new #GstRTSPOnvifServer instance. + + + a new #GstRTSPOnvifServer + + + + + + + + + + + + + + + + + + + + + + + + + The opaque permissions structure. It is used to define the permissions +of objects in different roles. + + + + + + Create a new empty Authorization permissions. + + + a new empty authorization permissions. + + + + + Add a new @permission for @role to @permissions with the access in @allowed. + + + + + + + a #GstRTSPPermissions + + + + a role + + + + the permission + + + + whether the role has this permission or not + + + + + + Add a new @role to @permissions with the given variables. The fields +are the same layout as gst_structure_new(). + + + + + + + a #GstRTSPPermissions + + + + a role + + + + the first field name + + + + additional arguments + + + + + + Add a new @role to @permissions without any permissions. You can add +permissions for the role with gst_rtsp_permissions_add_permission_for_role(). + + + + + + + a #GstRTSPPermissions + + + + a role + + + + + + Add a new role to @permissions based on @structure, for example +given a role named `tester`, which should be granted a permission named +`permission1`, the structure could be created with: + +``` +gst_structure_new ("tester", "permission1", G_TYPE_BOOLEAN, TRUE, NULL); +``` + + + + + + + + + + + + + + + Add a new @role to @permissions with the given variables. Structure fields +are set according to the varargs in a manner similar to gst_structure_new(). + + + + + + + a #GstRTSPPermissions + + + + a role + + + + the first field name + + + + additional fields to add + + + + + + Get all permissions for @role in @permissions. + + + the structure with permissions for @role. It +remains valid for as long as @permissions is valid. + + + + + a #GstRTSPPermissions + + + + a role + + + + + + Check if @role in @permissions is given permission for @permission. + + + %TRUE if @role is allowed @permission. + + + + + a #GstRTSPPermissions + + + + a role + + + + a permission + + + + + + Remove all permissions for @role in @permissions. + + + + + + + a #GstRTSPPermissions + + + + a role + + + + + + + Whether the clock and possibly RTP/clock offset should be published according to RFC7273. + + Publish nothing + + + Publish the clock but not the offset + + + Publish the clock and offset + + + + Function registered with gst_rtsp_stream_transport_set_callbacks() and +called when @buffer must be sent on @channel. + + + %TRUE on success + + + + + a #GstBuffer + + + + a channel + + + + user data + + + + + + Function registered with gst_rtsp_stream_transport_set_callbacks() and +called when @buffer_list must be sent on @channel. + + + %TRUE on success + + + + + a #GstBufferList + + + + a channel + + + + user data + + + + + + This object listens on a port, creates and manages the clients connected to +it. + + + Create a new #GstRTSPServer instance. + + + a new #GstRTSPServer + + + + + A default #GSocketSourceFunc that creates a new #GstRTSPClient to accept and handle a +new connection on @socket or @server. + + + TRUE if the source could be connected, FALSE if an error occurred. + + + + + a #GSocket + + + + the condition on @source + + + + a #GstRTSPServer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attaches @server to @context. When the mainloop for @context is run, the +server will be dispatched. When @context is %NULL, the default context will be +used). + +This function should be called when the server properties and urls are fully +configured and the server is ready to start. + +This takes a reference on @server until the source is destroyed. Note that +if @context is not the default main context as returned by +g_main_context_default() (or %NULL), g_source_remove() cannot be used to +destroy the source. In that case it is recommended to use +gst_rtsp_server_create_source() and attach it to @context manually. + + + the ID (greater than 0) for the source within the GMainContext. + + + + + a #GstRTSPServer + + + + a #GMainContext + + + + + + Call @func for each client managed by @server. The result value of @func +determines what happens to the client. @func will be called with @server +locked so no further actions on @server can be performed from @func. + +If @func returns #GST_RTSP_FILTER_REMOVE, the client will be removed from +@server. + +If @func returns #GST_RTSP_FILTER_KEEP, the client will remain in @server. + +If @func returns #GST_RTSP_FILTER_REF, the client will remain in @server but +will also be added with an additional ref to the result #GList of this +function.. + +When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each client. + + + a #GList with all +clients for which @func returned #GST_RTSP_FILTER_REF. After usage, each +element in the #GList should be unreffed before the list is freed. + + + + + + + a #GstRTSPServer + + + + a callback + + + + user data passed to @func + + + + + + Create a #GSocket for @server. The socket will listen on the +configured service. + + + the #GSocket for @server or %NULL when an error +occurred. + + + + + a #GstRTSPServer + + + + a #GCancellable + + + + + + Create a #GSource for @server. The new source will have a default +#GSocketSourceFunc of gst_rtsp_server_io_func(). + +@cancellable if not %NULL can be used to cancel the source, which will cause +the source to trigger, reporting the current condition (which is likely 0 +unless cancellation happened at the same time as a condition change). You can +check for this in the callback using g_cancellable_is_cancelled(). + +This takes a reference on @server until @source is destroyed. + + + the #GSource for @server or %NULL when an error +occurred. Free with g_source_unref () + + + + + a #GstRTSPServer + + + + a #GCancellable or %NULL. + + + + + + Get the address on which the server will accept connections. + + + the server address. g_free() after usage. + + + + + a #GstRTSPServer + + + + + + Get the #GstRTSPAuth used as the authentication manager of @server. + + + the #GstRTSPAuth of @server. g_object_unref() after +usage. + + + + + a #GstRTSPServer + + + + + + The maximum amount of queued requests for the server. + + + the server backlog. + + + + + a #GstRTSPServer + + + + + + Get the port number where the server was bound to. + + + the port number + + + + + a #GstRTSPServer + + + + + + Get the Content-Length limit of @server. + + + the Content-Length limit. + + + + + a #GstRTSPServer + + + + + + Get the #GstRTSPMountPoints used as the mount points of @server. + + + the #GstRTSPMountPoints of @server. g_object_unref() after +usage. + + + + + a #GstRTSPServer + + + + + + Get the service on which the server will accept connections. + + + the service. use g_free() after usage. + + + + + a #GstRTSPServer + + + + + + Get the #GstRTSPSessionPool used as the session pool of @server. + + + the #GstRTSPSessionPool used for sessions. g_object_unref() after +usage. + + + + + a #GstRTSPServer + + + + + + Get the #GstRTSPThreadPool used as the thread pool of @server. + + + the #GstRTSPThreadPool of @server. g_object_unref() after +usage. + + + + + a #GstRTSPServer + + + + + + Configure @server to accept connections on the given address. + +This function must be called before the server is bound. + + + + + + + a #GstRTSPServer + + + + the address + + + + + + configure @auth to be used as the authentication manager of @server. + + + + + + + a #GstRTSPServer + + + + a #GstRTSPAuth + + + + + + configure the maximum amount of requests that may be queued for the +server. + +This function must be called before the server is bound. + + + + + + + a #GstRTSPServer + + + + the backlog + + + + + + 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. + + + + + + + a #GstRTSPServer + + + + a #GstRTSPMountPoints + + + + + + Configure @server to accept connections on the given service. +@service should be a string containing the service name (see services(5)) or +a string containing a port number between 1 and 65535. + +When @service is set to "0", the server will listen on a random free +port. The actual used port can be retrieved with +gst_rtsp_server_get_bound_port(). + +This function must be called before the server is bound. + + + + + + + a #GstRTSPServer + + + + the service + + + + + + configure @pool to be used as the session pool of @server. + + + + + + + a #GstRTSPServer + + + + a #GstRTSPSessionPool + + + + + + configure @pool to be used as the thread pool of @server. + + + + + + + a #GstRTSPServer + + + + a #GstRTSPThreadPool + + + + + + Take an existing network socket and use it for an RTSP connection. This +is used when transferring a socket from an HTTP server which should be used +as an RTSP over HTTP tunnel. The @initial_buffer contains any remaining data +that the HTTP server read from the socket while parsing the HTTP header. + + + TRUE if all was ok, FALSE if an error occurred. + + + + + a #GstRTSPServer + + + + a network socket + + + + the IP address of the remote client + + + + the port used by the other end + + + + any initial data that was already read from the socket + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The RTSP server class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function will be called by the gst_rtsp_server_client_filter(). An +implementation should return a value of #GstRTSPFilterResult. + +When this function returns #GST_RTSP_FILTER_REMOVE, @client will be removed +from @server. + +A return value of #GST_RTSP_FILTER_KEEP will leave @client untouched in +@server. + +A value of #GST_RTSP_FILTER_REF will add @client to the result #GList of +gst_rtsp_server_client_filter(). + + + a #GstRTSPFilterResult. + + + + + a #GstRTSPServer object + + + + a #GstRTSPClient in @server + + + + user data that has been given to gst_rtsp_server_client_filter() + + + + + + + + + Session information kept by the server for a specific client. +One client session, identified with a session id, can handle multiple medias +identified with the url of a media. + + + Create a new #GstRTSPSession instance with @sessionid. + + + a new #GstRTSPSession + + + + + a session id + + + + + + Allow @session to expire. This method must be called an equal +amount of time as gst_rtsp_session_prevent_expire(). + + + + + + + a #GstRTSPSession + + + + + + Gets the session media for @path, increasing its reference count. @matched +will contain the number of matched characters of @path. + + + the configuration for @path in @sess, +should be unreferenced when no longer needed. + + + + + a #GstRTSPSession + + + + the path for the media + + + + the amount of matched characters + + + + + + Call @func for each media in @sess. The result value of @func determines +what happens to the media. @func will be called with @sess +locked so no further actions on @sess can be performed from @func. + +If @func returns #GST_RTSP_FILTER_REMOVE, the media will be removed from +@sess. + +If @func returns #GST_RTSP_FILTER_KEEP, the media will remain in @sess. + +If @func returns #GST_RTSP_FILTER_REF, the media will remain in @sess but +will also be added with an additional ref to the result #GList of this +function.. + +When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for all media. + + + a GList with all +media for which @func returned #GST_RTSP_FILTER_REF. After usage, each +element in the #GList should be unreffed before the list is freed. + + + + + + + a #GstRTSPSession + + + + a callback + + + + user data passed to @func + + + + + + Get the string that can be placed in the Session header field. + + + the Session header of @session. +g_free() after usage. + + + + + a #GstRTSPSession + + + + + + Gets the session media for @path. @matched will contain the number of matched +characters of @path. + + + the configuration for @path in @sess. + + + + + a #GstRTSPSession + + + + the path for the media + + + + the amount of matched characters + + + + + + Get the sessionid of @session. + + + the sessionid of @session. +The value remains valid as long as @session is alive. + + + + + a #GstRTSPSession + + + + + + Get the timeout value of @session. + + + the timeout of @session in seconds. + + + + + a #GstRTSPSession + + + + + + Check if @session timeout out. + Use gst_rtsp_session_is_expired_usec() instead. + + + %TRUE if @session timed out + + + + + a #GstRTSPSession + + + + the current system time + + + + + + Check if @session timeout out. + + + %TRUE if @session timed out + + + + + a #GstRTSPSession + + + + the current monotonic time + + + + + + Manage the media object @obj in @sess. @path will be used to retrieve this +media from the session with gst_rtsp_session_get_media(). + +Ownership is taken from @media. + + + a new @GstRTSPSessionMedia object. + + + + + a #GstRTSPSession + + + + the path for the media + + + + a #GstRTSPMedia + + + + + + Get the amount of milliseconds till the session will expire. + Use gst_rtsp_session_next_timeout_usec() instead. + + + the amount of milliseconds since the session will time out. + + + + + a #GstRTSPSession + + + + the current system time + + + + + + Get the amount of milliseconds till the session will expire. + + + the amount of milliseconds since the session will time out. + + + + + a #GstRTSPSession + + + + the current monotonic time + + + + + + Prevent @session from expiring. + + + + + + + a #GstRTSPSession + + + + + + Release the managed @media in @sess, freeing the memory allocated by it. + + + %TRUE if there are more media session left in @sess. + + + + + a #GstRTSPSession + + + + a #GstRTSPMedia + + + + + + Configure @session for a timeout of @timeout seconds. The session will be +cleaned up when there is no activity for @timeout seconds. + + + + + + + a #GstRTSPSession + + + + the new timeout + + + + + + Update the last_access time of the session to the current time. + + + + + + + a #GstRTSPSession + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function will be called by the gst_rtsp_session_filter(). An +implementation should return a value of #GstRTSPFilterResult. + +When this function returns #GST_RTSP_FILTER_REMOVE, @media will be removed +from @sess. + +A return value of #GST_RTSP_FILTER_KEEP will leave @media untouched in +@sess. + +A value of GST_RTSP_FILTER_REF will add @media to the result #GList of +gst_rtsp_session_filter(). + + + a #GstRTSPFilterResult. + + + + + a #GstRTSPSession object + + + + a #GstRTSPSessionMedia in @sess + + + + user data that has been given to gst_rtsp_session_filter() + + + + + + State of a client session regarding a specific media identified by path. + + + Create a new #GstRTSPSessionMedia that manages the streams +in @media for @path. @media should be prepared. + +Ownership is taken of @media. + + + a new #GstRTSPSessionMedia. + + + + + the path + + + + the #GstRTSPMedia + + + + + + Fill @range with the next available min and max channels for +interleaved transport. + + + %TRUE on success. + + + + + a #GstRTSPSessionMedia + + + + a #GstRTSPRange + + + + + + Get the base_time of the #GstRTSPMedia in @media + + + the base_time of the media. + + + + + a #GstRTSPSessionMedia + + + + + + Get the #GstRTSPMedia that was used when constructing @media + + + the #GstRTSPMedia of @media. +Remains valid as long as @media is valid. + + + + + a #GstRTSPSessionMedia + + + + + + Retrieve the RTP-Info header string for all streams in @media +with configured transports. + + + The RTP-Info as a string or +%NULL when no RTP-Info could be generated, g_free() after usage. + + + + + a #GstRTSPSessionMedia + + + + + + Get the current RTSP state of @media. + + + the current RTSP state of @media. + + + + + a #GstRTSPSessionMedia + + + + + + Get a previously created #GstRTSPStreamTransport for the stream at @idx. + + + a #GstRTSPStreamTransport that is +valid until the session of @media is unreffed. + + + + + a #GstRTSPSessionMedia + + + + the stream index + + + + + + Get a list of all available #GstRTSPStreamTransport in this session. + + + a +list of #GstRTSPStreamTransport, g_ptr_array_unref () after usage. + + + + + + + a #GstRTSPSessionMedia + + + + + + Check if the path of @media matches @path. It @path matches, the amount of +matched characters is returned in @matched. + + + %TRUE when @path matches the path of @media. + + + + + a #GstRTSPSessionMedia + + + + a path + + + + the amount of matched characters of @path + + + + + + Set the RTSP state of @media to @state. + + + + + + + a #GstRTSPSessionMedia + + + + a #GstRTSPState + + + + + + Tell the media object @media to change to @state. + + + %TRUE on success. + + + + + a #GstRTSPSessionMedia + + + + the new state + + + + + + Configure the transport for @stream to @tr in @media. + + + the new or updated #GstRTSPStreamTransport for @stream. + + + + + a #GstRTSPSessionMedia + + + + a #GstRTSPStream + + + + a #GstRTSPTransport + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An object that keeps track of the active sessions. This object is usually +attached to a #GstRTSPServer object to manage the sessions in that server. + + + Create a new #GstRTSPSessionPool instance. + + + A new #GstRTSPSessionPool. g_object_unref() after +usage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inspect all the sessions in @pool and remove the sessions that are inactive +for more than their timeout. + + + the amount of sessions that got removed. + + + + + a #GstRTSPSessionPool + + + + + + Create a new #GstRTSPSession object in @pool. + + + a new #GstRTSPSession. + + + + + a #GstRTSPSessionPool + + + + + + Create a #GSource that will be dispatched when the session should be cleaned +up. + + + a #GSource + + + + + a #GstRTSPSessionPool + + + + + + Call @func for each session in @pool. The result value of @func determines +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 and removed from @pool. + +If @func returns #GST_RTSP_FILTER_KEEP, the session will remain in @pool. + +If @func returns #GST_RTSP_FILTER_REF, the session will remain in @pool but +will also be added with an additional ref to the result GList of this +function.. + +When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for all sessions. + + + a GList with all +sessions for which @func returned #GST_RTSP_FILTER_REF. After usage, each +element in the GList should be unreffed before the list is freed. + + + + + + + a #GstRTSPSessionPool + + + + a callback + + + + user data passed to @func + + + + + + Find the session with @sessionid in @pool. The access time of the session +will be updated with gst_rtsp_session_touch(). + + + the #GstRTSPSession with @sessionid +or %NULL when the session did not exist. g_object_unref() after usage. + + + + + the pool to search + + + + the session id + + + + + + Get the maximum allowed number of sessions in @pool. 0 means an unlimited +amount of sessions. + + + the maximum allowed number of sessions. + + + + + a #GstRTSPSessionPool + + + + + + Get the amount of active sessions in @pool. + + + the amount of active sessions in @pool. + + + + + a #GstRTSPSessionPool + + + + + + Remove @sess from @pool, releasing the ref that the pool has on @sess. + + + %TRUE if the session was found and removed. + + + + + a #GstRTSPSessionPool + + + + a #GstRTSPSession + + + + + + Configure the maximum allowed number of sessions in @pool to @max. +A value of 0 means an unlimited amount of sessions. + + + + + + + a #GstRTSPSessionPool + + + + the maximum number of sessions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This function will be called by the gst_rtsp_session_pool_filter(). An +implementation should return a value of #GstRTSPFilterResult. + +When this function returns #GST_RTSP_FILTER_REMOVE, @session will be removed +from @pool. + +A return value of #GST_RTSP_FILTER_KEEP will leave @session untouched in +@pool. + +A value of GST_RTSP_FILTER_REF will add @session to the result #GList of +gst_rtsp_session_pool_filter(). + + + a #GstRTSPFilterResult. + + + + + a #GstRTSPSessionPool object + + + + a #GstRTSPSession in @pool + + + + user data that has been given to gst_rtsp_session_pool_filter() + + + + + + The function that will be called from the GSource watch on the session pool. + +The function will be called when the pool must be cleaned up because one or +more sessions timed out. + + + %FALSE if the source should be removed. + + + + + a #GstRTSPSessionPool object + + + + user data that has been given when registering the handler + + + + + + + + + + + + The definition of a media stream. + + + Create a new media stream with index @idx that handles RTP data on +@pad and has a payloader element @payloader if @pad is a source pad +or a depayloader element @payloader if @pad is a sink pad. + + + a new #GstRTSPStream + + + + + an index + + + + a #GstElement + + + + a #GstPad + + + + + + Add multicast client address to stream. At this point, the sockets that +will stream RTP and RTCP data to @destination are supposed to be +allocated. + + + %TRUE if @destination can be addedd and handled by @stream. + + + + + a #GstRTSPStream + + + + a multicast address to add + + + + RTP port + + + + RTCP port + + + + socket family + + + + + + Add the transport in @trans to @stream. The media of @stream will +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. + +@trans must contain a valid #GstRTSPTransport. + + + %TRUE if @trans was added + + + + + a #GstRTSPStream + + + + a #GstRTSPStreamTransport + + + + + + Allocates RTP and RTCP ports. + + + %TRUE if the RTP and RTCP sockets have been succeccully allocated. + + + + + a #GstRTSPStream + + + + protocol family + + + + transport method + + + + Whether to use client settings or not + + + + + + Add a receiver and sender part to the pipeline based on the transport from +SETUP. + + + %TRUE if the stream has been successfully updated. + + + + + a #GstRTSPStream + + + + a #GstRTSPTransport + + + + + + Get the #GstRTSPAddressPool used as the address pool of @stream. + + + the #GstRTSPAddressPool of @stream. +g_object_unref() after usage. + + + + + a #GstRTSPStream + + + + + + Get the size of the UDP transmission buffer (in bytes) + + + the size of the UDP TX buffer + + + + + a #GstRTSPStream + + + + + + Retrieve the current caps of @stream. + + + the #GstCaps of @stream. +use gst_caps_unref() after usage. + + + + + a #GstRTSPStream + + + + + + Get the control string to identify this stream. + + + the control string. g_free() after usage. + + + + + a #GstRTSPStream + + + + + + + + + + + + + + + + + Get the configured DSCP QoS in of the outgoing sockets. + + + the DSCP QoS value of the outgoing sockets, or -1 if disbled. + + + + + a #GstRTSPStream + + + + + + Get the stream index. + + + the stream index. + + + + + a #GstRTSPStream + + + + + + Get the previous joined bin with gst_rtsp_stream_join_bin() or NULL. + + + the joined bin or NULL. + + + + + a #GstRTSPStream + + + + + + Get the the maximum time-to-live value of outgoing multicast packets. + + + the maximum time-to-live value of outgoing multicast packets. + + + + + a #GstRTSPStream + + + + + + Get the configured MTU in the payloader of @stream. + + + the MTU of the payloader. + + + + + a #GstRTSPStream + + + + + + Get the multicast address of @stream for @family. The original +#GstRTSPAddress is cached and copy is returned, so freeing the return value +won't release the address from the pool. + + + the #GstRTSPAddress of @stream +or %NULL when no address could be allocated. gst_rtsp_address_free() +after usage. + + + + + a #GstRTSPStream + + + + the #GSocketFamily + + + + + + Get all multicast client addresses that RTP data will be sent to + + + A comma separated list of host:port pairs with destinations + + + + + a #GstRTSPStream + + + + + + Get the multicast interface used for @stream. + + + the multicast interface for @stream. +g_free() after usage. + + + + + a #GstRTSPStream + + + + + + Get the allowed profiles of @stream. + + + a #GstRTSPProfile + + + + + a #GstRTSPStream + + + + + + Get the allowed protocols of @stream. + + + a #GstRTSPLowerTrans + + + + + a #GstRTSPStream + + + + + + Get the stream payload type. + + + the stream payload type. + + + + + a #GstRTSPStream + + + + + + Gets if and how the stream clock should be published according to RFC7273. + + + The GstRTSPPublishClockMode + + + + + a #GstRTSPStream + + + + + + + + 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 + + + The retransmission PT. + + + + + a #GstRTSPStream + + + + + + Get the amount of time to store retransmission data. + + + the amount of time to store retransmission data. + + + + + a #GstRTSPStream + + + + + + Get the multicast RTCP socket from @stream for a @family. + + + the multicast RTCP socket or %NULL if no +socket could be allocated for @family. Unref after usage + + + + + a #GstRTSPStream + + + + the socket family + + + + + + Get the RTCP socket from @stream for a @family. + +@stream must be joined to a bin. + + + the RTCP socket or %NULL if no +socket could be allocated for @family. Unref after usage + + + + + a #GstRTSPStream + + + + the socket family + + + + + + Get the multicast RTP socket from @stream for a @family. + + + the multicast RTP socket or %NULL if no + +socket could be allocated for @family. Unref after usage + + + + + a #GstRTSPStream + + + + the socket family + + + + + + Get the RTP socket from @stream for a @family. + +@stream must be joined to a bin. + + + the RTP socket or %NULL if no +socket could be allocated for @family. Unref after usage + + + + + a #GstRTSPStream + + + + the socket family + + + + + + Retrieve the current rtptime, seq and running-time. This is used to +construct a RTPInfo reply header. + + + %TRUE when rtptime, seq and running-time could be determined. + + + + + a #GstRTSPStream + + + + result RTP timestamp + + + + result RTP seqnum + + + + the clock rate + + + + result running-time + + + + + + Get the RTP session of this stream. + + + The RTP session of this stream. Unref after usage. + + + + + a #GstRTSPStream + + + + + + Fill @server_port with the port pair used by the server. This function can +only be called when @stream has been joined. + + + + + + + a #GstRTSPStream + + + + result server port + + + + the port family to get + + + + + + Get the sinkpad associated with @stream. + + + the sinkpad. Unref after usage. + + + + + a #GstRTSPStream + + + + + + Get the srcpad associated with @stream. + + + the srcpad. Unref after usage. + + + + + a #GstRTSPStream + + + + + + Get the SRTP encoder for this stream. + + + The SRTP encoder for this stream. Unref after usage. + + + + + a #GstRTSPStream + + + + + + Get the SSRC used by the RTP session of this stream. This function can only +be called when @stream has been joined. + + + + + + + a #GstRTSPStream + + + + result ssrc + + + + + + + + + + + + + + + + + + + the amount of redundancy applied when creating ULPFEC +protection packets. + + + + + + + + + + + + the payload type used for ULPFEC protection packets + + + + + + + + + + Parse and handle a KeyMgmt header. + + + + + + + a #GstRTSPStream + + + + a keymgmt header + + + + + + Check if @stream has the control string @control. + + + %TRUE is @stream has @control as the control string + + + + + a #GstRTSPStream + + + + a control string + + + + + + Check if multicast sockets are configured to be bound to multicast addresses. + + + %TRUE if multicast sockets are configured to be bound to multicast addresses. + + + + + a #GstRTSPStream + + + + + + Check if @stream is blocking on a #GstBuffer. + + + %TRUE if @stream is blocking + + + + + a #GstRTSPStream + + + + + + See gst_rtsp_stream_set_client_side() + + + TRUE if this #GstRTSPStream is client-side. + + + + + a #GstRTSPStream + + + + + + Checks whether the stream is complete, contains the receiver and the sender +parts. As the stream contains sink(s) element(s), it's possible to perform +seek operations on it. + + + %TRUE if the stream contains at least one sink element. + + + + + a #GstRTSPStream + + + + + + Checks whether the stream is a receiver. + + + %TRUE if the stream is a receiver and %FALSE otherwise. + + + + + a #GstRTSPStream + + + + + + Checks whether the stream is a sender. + + + %TRUE if the stream is a sender and %FALSE otherwise. + + + + + a #GstRTSPStream + + + + + + Check if @transport can be handled by stream + + + %TRUE if @transport can be handled by @stream. + + + + + a #GstRTSPStream + + + + a #GstRTSPTransport + + + + + + Join the #GstBin @bin that contains the element @rtpbin. + +@stream will link to @rtpbin, which must be inside @bin. The elements +added to @bin will be set to the state given in @state. + + + %TRUE on success. + + + + + a #GstRTSPStream + + + + a #GstBin to join + + + + a rtpbin element in @bin + + + + the target state of the new elements + + + + + + Remove the elements of @stream from @bin. + + + %TRUE on success. + + + + + a #GstRTSPStream + + + + a #GstBin + + + + a rtpbin #GstElement + + + + + + Query the position of the stream in %GST_FORMAT_TIME. This only considers +the RTP parts of the pipeline and not the RTCP parts. + + + %TRUE if the position could be queried + + + + + a #GstRTSPStream + + + + current position of a #GstRTSPStream + + + + + + Query the stop of the stream in %GST_FORMAT_TIME. This only considers +the RTP parts of the pipeline and not the RTCP parts. + + + %TRUE if the stop could be queried + + + + + a #GstRTSPStream + + + + current stop of a #GstRTSPStream + + + + + + Handle an RTCP buffer for the stream. This method is usually called when a +message has been received from a client using the TCP transport. + +This function takes ownership of @buffer. + + + a GstFlowReturn. + + + + + a #GstRTSPStream + + + + a #GstBuffer + + + + + + Handle an RTP buffer for the stream. This method is usually called when a +message has been received from a client using the TCP transport. + +This function takes ownership of @buffer. + + + a GstFlowReturn. + + + + + a #GstRTSPStream + + + + a #GstBuffer + + + + + + Remove the transport in @trans from @stream. The media of @stream will +not be sent to the values configured in @trans. + +@stream must be joined to a bin. + +@trans must contain a valid #GstRTSPTransport. + + + %TRUE if @trans was removed + + + + + a #GstRTSPStream + + + + a #GstRTSPStreamTransport + + + + + + Creating a rtxreceive bin + + + a #GstElement. + + + + + a #GstRTSPStream + + + + the session id + + + + + + Creating a rtxsend bin + + + a #GstElement. + + + + + a #GstRTSPStream + + + + the session id + + + + + + Creating a rtpulpfecdec element + + + a #GstElement. + + + + + + + + + + + + + + + + Creating a rtpulpfecenc element + + + a #GstElement. + + + + + + + + + + + + + Reserve @address and @port as the address and port of @stream. The original +#GstRTSPAddress is cached and copy is returned, so freeing the return value +won't release the address from the pool. + + + the #GstRTSPAddress of @stream or %NULL when +the address could not be reserved. gst_rtsp_address_free() after +usage. + + + + + a #GstRTSPStream + + + + an address + + + + a port + + + + n_ports + + + + a TTL + + + + + + Checks whether the individual @stream is seekable. + + + %TRUE if @stream is seekable, else %FALSE. + + + + + a #GstRTSPStream + + + + + + configure @pool to be used as the address pool of @stream. + + + + + + + a #GstRTSPStream + + + + a #GstRTSPAddressPool + + + + + + Decide whether the multicast socket should be bound to a multicast address or +INADDR_ANY. + + + + + + + a #GstRTSPStream, + + + + the new value + + + + + + Blocks or unblocks the dataflow on @stream. + + + %TRUE on success + + + + + a #GstRTSPStream + + + + boolean indicating we should block or unblock + + + + + + Set the size of the UDP transmission buffer (in bytes) +Needs to be set before the stream is joined to a bin. + + + + + + + a #GstRTSPStream + + + + the buffer size + + + + + + Sets the #GstRTSPStream as a 'client side' stream - used for sending +streams to an RTSP server via RECORD. This has the practical effect +of changing which UDP port numbers are used when setting up the local +side of the stream sending to be either the 'server' or 'client' pair +of a configured UDP transport. + + + + + + + a #GstRTSPStream + + + + TRUE if this #GstRTSPStream is running on the 'client' side of +an RTSP connection. + + + + + + Set the control string in @stream. + + + + + + + a #GstRTSPStream + + + + a control string + + + + + + Configure the dscp qos of the outgoing sockets to @dscp_qos. + + + + + + + a #GstRTSPStream + + + + a new dscp qos value (0-63, or -1 to disable) + + + + + + Set the maximum time-to-live value of outgoing multicast packets. + + + %TRUE if the requested ttl has been set successfully. + + + + + a #GstRTSPStream + + + + the new multicast ttl value + + + + + + Configure the mtu in the payloader of @stream to @mtu. + + + + + + + a #GstRTSPStream + + + + a new MTU + + + + + + configure @multicast_iface to be used for @stream. + + + + + + + a #GstRTSPStream + + + + a multicast interface name + + + + + + Configure the allowed profiles for @stream. + + + + + + + a #GstRTSPStream + + + + the new profiles + + + + + + Configure the allowed lower transport for @stream. + + + + + + + a #GstRTSPStream + + + + the new flags + + + + + + Configure a pt map between @pt and @caps. + + + + + + + a #GstRTSPStream + + + + the pt + + + + a #GstCaps + + + + + + Sets if and how the stream clock should be published according to RFC7273. + + + + + + + a #GstRTSPStream + + + + the clock publish mode + + + + + + 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. + + + + + + + a #GstRTSPStream + + + + a #guint + + + + + + Set the amount of time to store retransmission packets. + + + + + + + a #GstRTSPStream + + + + a #GstClockTime + + + + + + + + + + + + + + + + + + + + Sets the amount of redundancy to apply when creating ULPFEC +protection packets. + + + + + + + + + + + + + + + Set the payload type to be used for ULPFEC protection packets + + + + + + + + + + + + + + + Call @func for each transport managed by @stream. The result value of @func +determines what happens to the transport. @func will be called with @stream +locked so no further actions on @stream can be performed from @func. + +If @func returns #GST_RTSP_FILTER_REMOVE, the transport will be removed from +@stream. + +If @func returns #GST_RTSP_FILTER_KEEP, the transport will remain in @stream. + +If @func returns #GST_RTSP_FILTER_REF, the transport will remain in @stream but +will also be added with an additional ref to the result #GList of this +function.. + +When @func is %NULL, #GST_RTSP_FILTER_REF will be assumed for each transport. + + + a #GList with all +transports for which @func returned #GST_RTSP_FILTER_REF. After usage, each +element in the #GList should be unreffed before the list is freed. + + + + + + + a #GstRTSPStream + + + + a callback + + + + user data passed to @func + + + + + + + + + + + + + + + + + Remove blocking probe from the RTCP source. When creating an UDP source for +RTCP it is initially blocked until this function is called. +This functions should be called once the pipeline is ready for handling RTCP +packets. + + + + + + + + + + + + Update the new crypto information for @ssrc in @stream. If information +for @ssrc did not exist, it will be added. If information +for @ssrc existed, it will be replaced. If @crypto is %NULL, it will +be removed from @stream. + + + %TRUE if @crypto could be updated + + + + + a #GstRTSPStream + + + + the SSRC + + + + a #GstCaps with crypto info + + + + + + Check if the requested multicast ttl value is allowed. + + + TRUE if the requested ttl value is allowed. + + + + + a #GstRTSPStream + + + + a requested multicast ttl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Transport description for a stream + + + Create a new #GstRTSPStreamTransport that can be used to manage +@stream with transport @tr. + + + a new #GstRTSPStreamTransport + + + + + a #GstRTSPStream + + + + a GstRTSPTransport + + + + + + Get the RTP-Info string for @trans and @start_time. + + + the RTPInfo string for @trans +and @start_time or %NULL when the RTP-Info could not be +determined. g_free() after usage. + + + + + a #GstRTSPStreamTransport + + + + a star time + + + + + + Get the #GstRTSPStream used when constructing @trans. + + + the stream used when constructing @trans. + + + + + a #GstRTSPStreamTransport + + + + + + Get the transport configured in @trans. + + + the transport configured in @trans. It remains +valid for as long as @trans is valid. + + + + + a #GstRTSPStreamTransport + + + + + + Get the url configured in @trans. + + + the url configured in @trans. +It remains valid for as long as @trans is valid. + + + + + a #GstRTSPStreamTransport + + + + + + Check if @trans is timed out. + + + %TRUE if @trans timed out. + + + + + a #GstRTSPStreamTransport + + + + + + Signal the installed keep_alive callback for @trans. + + + + + + + a #GstRTSPStreamTransport + + + + + + Signal the installed message_sent / message_sent_full callback for @trans. + + + + + + + a #GstRTSPStreamTransport + + + + + + Receive @buffer on @channel @trans. + + + a #GstFlowReturn. Returns GST_FLOW_NOT_LINKED when @channel is not + configured in the transport of @trans. + + + + + a #GstRTSPStreamTransport + + + + a channel + + + + a #GstBuffer + + + + + + Send @buffer to the installed RTCP callback for @trans. + + + %TRUE on success + + + + + a #GstRTSPStreamTransport + + + + a #GstBuffer + + + + + + Send @buffer_list to the installed RTCP callback for @trans. + + + %TRUE on success + + + + + a #GstRTSPStreamTransport + + + + a #GstBuffer + + + + + + Send @buffer to the installed RTP callback for @trans. + + + %TRUE on success + + + + + a #GstRTSPStreamTransport + + + + a #GstBuffer + + + + + + Send @buffer_list to the installed RTP callback for @trans. + + + %TRUE on success + + + + + a #GstRTSPStreamTransport + + + + a #GstBufferList + + + + + + Activate or deactivate datatransfer configured in @trans. + + + %TRUE when the state was changed. + + + + + a #GstRTSPStreamTransport + + + + new state of @trans + + + + + + Install callbacks that will be called when data for a stream should be sent +to a client. This is usually used when sending RTP/RTCP over TCP. + + + + + + + a #GstRTSPStreamTransport + + + + a callback called when RTP should be sent + + + + a callback called when RTCP should be sent + + + + user data passed to callbacks + + + + called with the user_data when no longer needed. + + + + + + Install callbacks that will be called when RTCP packets are received from the +receiver of @trans. + + + + + + + a #GstRTSPStreamTransport + + + + a callback called when the receiver is active + + + + user data passed to callback + + + + called with the user_data when no longer needed. + + + + + + Install callbacks that will be called when data for a stream should be sent +to a client. This is usually used when sending RTP/RTCP over TCP. + + + + + + + a #GstRTSPStreamTransport + + + + a callback called when RTP should be sent + + + + a callback called when RTCP should be sent + + + + user data passed to callbacks + + + + called with the user_data when no longer needed. + + + + + + Install a callback that will be called when a message has been sent on @trans. + + + + + + + a #GstRTSPStreamTransport + + + + a callback called when a message has been sent + + + + user data passed to callback + + + + called with the user_data when no longer needed + + + + + + Install a callback that will be called when a message has been sent on @trans. + + + + + + + a #GstRTSPStreamTransport + + + + a callback called when a message has been sent + + + + user data passed to callback + + + + called with the user_data when no longer needed + + + + + + Set the timed out state of @trans to @timedout + + + + + + + a #GstRTSPStreamTransport + + + + timed out value + + + + + + Set @tr as the client transport. This function takes ownership of the +passed @tr. + + + + + + + a #GstRTSPStreamTransport + + + + a client #GstRTSPTransport + + + + + + Set @url as the client url. + + + + + + + a #GstRTSPStreamTransport + + + + a client #GstRTSPUrl + + + + + + parent instance + + + + + + + + + + + + + + + + + + + + + + + + This function will be called by the gst_rtsp_stream_transport_filter(). An +implementation should return a value of #GstRTSPFilterResult. + +When this function returns #GST_RTSP_FILTER_REMOVE, @trans will be removed +from @stream. + +A return value of #GST_RTSP_FILTER_KEEP will leave @trans untouched in +@stream. + +A value of #GST_RTSP_FILTER_REF will add @trans to the result #GList of +gst_rtsp_stream_transport_filter(). + + + a #GstRTSPFilterResult. + + + + + a #GstRTSPStream object + + + + a #GstRTSPStreamTransport in @stream + + + + user data that has been given to gst_rtsp_stream_transport_filter() + + + + + + + + + The suspend mode of the media pipeline. A media pipeline is suspended right +after creating the SDP and when the client performs a PAUSED request. + + Media is not suspended + + + Media is PAUSED in suspend + + + The media is set to NULL when suspended + + + + Structure holding info about a mainloop running in a thread + + + parent #GstMiniObject + + + + the thread type + + + + a #GMainContext + + + + a #GMainLoop + + + + Create a new thread object that can run a mainloop. + + + a #GstRTSPThread. + + + + + the thread type + + + + + + Reuse the mainloop of @thread + + + %TRUE if the mainloop could be reused + + + + + a #GstRTSPThread + + + + + + Stop and unref @thread. When no threads are using the mainloop, the thread +will be stopped and the final ref to @thread will be released. + + + + + + + a #GstRTSPThread + + + + + + + The thread pool structure. + + + Create a new #GstRTSPThreadPool instance. + + + a new #GstRTSPThreadPool + + + + + Wait for all tasks to be stopped and free all allocated resources. This is +mainly used in test suites to ensure proper cleanup of internal data +structures. + + + + + + + + + + + + + + + + + + + + + + + + Get a new #GstRTSPThread for @type and @ctx. + + + a new #GstRTSPThread, +gst_rtsp_thread_stop() after usage + + + + + a #GstRTSPThreadPool + + + + the #GstRTSPThreadType + + + + a #GstRTSPContext + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get the maximum number of threads used for client connections. +See gst_rtsp_thread_pool_set_max_threads(). + + + the maximum number of threads. + + + + + a #GstRTSPThreadPool + + + + + + Get a new #GstRTSPThread for @type and @ctx. + + + a new #GstRTSPThread, +gst_rtsp_thread_stop() after usage + + + + + a #GstRTSPThreadPool + + + + the #GstRTSPThreadType + + + + a #GstRTSPContext + + + + + + Set the maximum threads used by the pool to handle client requests. +A value of 0 will use the pool mainloop, a value of -1 will use an +unlimited number of threads. + + + + + + + a #GstRTSPThreadPool + + + + maximum threads + + + + + + + + + + + + + + + + + + + + + Class for managing threads. + + + + + + a #GThreadPool used internally + + + + + + + a new #GstRTSPThread, +gst_rtsp_thread_stop() after usage + + + + + a #GstRTSPThreadPool + + + + the #GstRTSPThreadType + + + + a #GstRTSPContext + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Different thread types + + + a thread to handle the client communication + + + a thread to handle media + + + + An opaque object used for checking authorisations. +It is generated after successful authentication. + + + + + + Create a new Authorization token with the given fieldnames and values. +Arguments are given similar to gst_structure_new(). + + + a new authorization token. + + + + + the first fieldname + + + + additional arguments + + + + + + Create a new empty Authorization token. + + + a new empty authorization token. + + + + + Create a new Authorization token with the given fieldnames and values. +Arguments are given similar to gst_structure_new_valist(). + + + a new authorization token. + + + + + the first fieldname + + + + additional arguments + + + + + + Get the string value of @field in @token. + + + the string value of @field in +@token or %NULL when @field is not defined in @token. The string +becomes invalid when you free @token. + + + + + a #GstRTSPToken + + + + a field name + + + + + + Access the structure of the token. + + + The structure of the token. The structure is still +owned by the token, which means that you should not free it and that the +pointer becomes invalid when you free the token. + +MT safe. + + + + + The #GstRTSPToken. + + + + + + Check if @token has a boolean @field and if it is set to %TRUE. + + + %TRUE if @token has a boolean field named @field set to %TRUE. + + + + + a #GstRTSPToken + + + + a field name + + + + + + Sets a boolean value on @token. + + + + + + + The #GstRTSPToken. + + + + field to set + + + + boolean value to set + + + + + + Sets a string value on @token. + + + + + + + The #GstRTSPToken. + + + + field to set + + + + string value to set + + + + + + Get a writable version of the structure. + + + The structure of the token. The structure is still +owned by the token, which means that you should not free it and that the +pointer becomes invalid when you free the token. This function ensures +that @token is writable, and if so, will never return %NULL. + +MT safe. + + + + + A writable #GstRTSPToken. + + + + + + + The supported modes of the media. + + Transport supports PLAY mode + + + Transport supports RECORD mode + + + + + + + + + + + Used with gst_rtsp_address_pool_add_range() to bind to all +IPv4 addresses + + + + + Used with gst_rtsp_address_pool_add_range() to bind to all +IPv6 addresses + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check a new connection + + + + + Check if access is allowed to a factory. +When access is not allowed an 404 Not Found is sent in the response. + + + + + Check if media can be constructed from a media factory +A response should be sent on error. + + + + + Check if the client can specify TTL, destination and +port pair in multicast. No response is sent when the check returns +%FALSE. + + + + + Check the URL and methods + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + G_TYPE_BOOLEAN, %TRUE if the media can be accessed, %FALSE will +return a 404 Not Found error when trying to access the media. + + + + + G_TYPE_BOOLEAN, %TRUE if the media can be constructed, %FALSE will +return a 404 Not Found error when trying to access the media. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + G_TYPE_STRING, the role to use when dealing with media factories + +The default #GstRTSPAuth object uses this string in the token to find the +role of the media factory. It will then retrieve the #GstRTSPPermissions of +the media factory and retrieve the role with the same name. + + + + + G_TYPE_BOOLEAN, %TRUE if the client can specify TTL, destination and + port pair in multicast. + + + + + + + + + + + + + + Get the current #GstRTSPContext. This object is retrieved from the +current thread that is handling the request for a client. + + + a #GstRTSPContext + + + + + + + + + + + Get parameters (not implemented yet) + + + a #GstRTSPResult + + + + + a #GstRTSPClient + + + + a #GstRTSPContext + + + + + + Set parameters (not implemented yet) + + + a #GstRTSPResult + + + + + a #GstRTSPClient + + + + a #GstRTSPContext + + + + + + Add @media specific info to @sdp. @info is used to configure the connection +information in the SDP. + + + TRUE on success. + + + + + a #GstSDPMessage + + + + a #GstSDPInfo + + + + a #GstRTSPMedia + + + + + + Add info from @stream to @sdp. + + + TRUE on success. + + + + + a #GstSDPMessage + + + + a #GstSDPInfo + + + + a #GstRTSPStream + + + + + + Creates a #GstSDPMedia from the parameters and stores it in @sdp. + + + %TRUE on success + + + + + a #GstRTSPMessage + + + + a #GstSDPInfo + + + + a #GstRTSPStream + + + + a #GstCaps + + + + a #GstRTSPProfile + + + + + + diff --git a/girs/GstSdp-1.0.gir b/girs/GstSdp-1.0.gir new file mode 100644 index 0000000000..6a519fd06d --- /dev/null +++ b/girs/GstSdp-1.0.gir @@ -0,0 +1,4327 @@ + + + + + + + + The different cache types + + + The envelope key MUST NOT be cached + + + The envelope key MUST be cached + + + The envelope key MUST be cached, but only + to be used for the specific CSB. + + + + + + + The encryption algorithm used to encrypt the Encr data field + + + no encryption + + + AES-CM using a 128-bit key + + + AES Key Wrap using a 128-bit key + + + AES-GCM using a 128-bit key (Since: 1.16) + + + + + + + The key validity type + + + No specific usage rule + + + The key is associated with the SPI/MKI + + + The key has a start and expiration time + + + + The type of key. + + + a TEK Generation Key + + + Traffic-Encrypting Key + + + + Specifies the authentication algorithm used + + + no authentication + + + HMAC-SHA-1-160 + + + + The Security policy Map item for SRTP + + + The security policy applied for the stream with @ssrc + + + + the SSRC that must be used for the stream + + + + current rollover counter + + + + + Specifies the method of uniquely mapping Crypto Sessions to the security +protocol sessions. + + + SRTP + + + + Structure holding the information of the MIKEY message + + + + + + the version + + + + the #GstMIKEYType message type + + + + verify flag + + + + a #GstMIKEYPRFFunc + + + + Identifies the Crypto Session Bundle + + + + a #GstMIKEYMapType + + + + map info array of type depending on @map_type + + + + + + the payload array of #GstMIKEYPayload + + + + + + Make a new MIKEY message. + + + a new #GstMIKEYMessage on success + + + + + Make a new #GstMIKEYMessage from @bytes. + + + a new #GstMIKEYMessage + + + + + a #GBytes + + + + a #GstMIKEYDecryptInfo + + + + + + Makes mikey message including: + - Security Policy Payload + - Key Data Transport Payload + - Key Data Sub-Payload + + + a #GstMIKEYMessage, +or %NULL if there is no srtp information in the caps. + + + + + a #GstCaps, including SRTP parameters (srtp/srtcp cipher, authorization, key data) + + + + + + Parse @size bytes from @data into a #GstMIKEYMessage. @info contains the +parameters to decrypt and verify the data. + + + a #GstMIKEYMessage on success or %NULL when parsing failed and +@error will be set. + + + + + bytes to read + + + + + + length of @data + + + + #GstMIKEYDecryptInfo + + + + + + Add a Crypto policy for SRTP to @msg. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + The security policy applied for the stream with @ssrc + + + + the SSRC that must be used for the stream + + + + current rollover counter + + + + + + Add a new payload to @msg. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + a #GstMIKEYPayload + + + + + + Add a new PKE payload to @msg with the given parameters. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + envelope key cache indicator + + + + the length of @data + + + + the encrypted envelope key + + + + + + + + Add a new RAND payload to @msg with the given parameters. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + the length of @rand + + + + random data + + + + + + + + Add a new RAND payload to @msg with @len random bytes. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + length + + + + + + Add a new T payload to @msg with the given parameters. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + specifies the timestamp type used + + + + The timestamp value of the specified @type + + + + + + + + Add a new T payload to @msg that contains the current time +in NTP-UTC format. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + + + + + a #gchar, base64-encoded data + + + + + a #GstMIKEYMessage + + + + + + Find the @nth occurrence of the payload with @type in @msg. + + + the @nth #GstMIKEYPayload of @type. + + + + + a #GstMIKEYMessage + + + + a #GstMIKEYPayloadType + + + + payload to find + + + + + + Get the policy information of @msg at @idx. + + + a #GstMIKEYMapSRTP + + + + + a #GstMIKEYMessage + + + + an index + + + + + + Get the number of crypto sessions in @msg. + + + the number of crypto sessions + + + + + a #GstMIKEYMessage + + + + + + Get the number of payloads in @msg. + + + the number of payloads in @msg + + + + + a #GstMIKEYMessage + + + + + + Get the #GstMIKEYPayload at @idx in @msg + + + the #GstMIKEYPayload at @idx. The payload +remains valid for as long as it is part of @msg. + + + + + a #GstMIKEYMessage + + + + an index + + + + + + Insert a Crypto Session map for SRTP in @msg at @idx + +When @idx is -1, the policy will be appended. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + the index to insert at + + + + the map info + + + + + + Insert the @payload at index @idx in @msg. If @idx is -1, the payload +will be appended to @msg. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + an index + + + + a #GstMIKEYPayload + + + + + + Remove the SRTP policy at @idx. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + the index to remove + + + + + + Remove the payload in @msg at @idx + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + an index + + + + + + Replace a Crypto Session map for SRTP in @msg at @idx with @map. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + the index to insert at + + + + the map info + + + + + + Replace the payload at @idx in @msg with @payload. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + an index + + + + a #GstMIKEYPayload + + + + + + Set the information in @msg. + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + a version + + + + a #GstMIKEYType + + + + verify flag + + + + the #GstMIKEYPRFFunc function to use + + + + the Crypto Session Bundle id + + + + the #GstMIKEYMapType + + + + + + Convert @msg to a #GBytes. + + + a new #GBytes for @msg. + + + + + a #GstMIKEYMessage + + + + a #GstMIKEYEncryptInfo + + + + + + + + %TRUE on success + + + + + a #GstMIKEYMessage + + + + a #GstCaps to be filled with SRTP parameters (srtp/srtcp cipher, authorization, key data) + + + + + + + The PRF function that has been/will be used for key derivation + + + MIKEY-1 PRF function + + + + Hold the common fields for all payloads + + + + + + the payload type + + + + length of the payload + + + + Make a new #GstMIKEYPayload with @type. + + + a new #GstMIKEYPayload or %NULL on failure. + + + + + a #GstMIKEYPayloadType + + + + + + Add a new sub payload to @payload. + + + %TRUE on success. + + + + + a #GstMIKEYPayload + + + + a #GstMIKEYPayload to add + + + + + + Get the number of sub payloads of @payload. @payload should be of type +%GST_MIKEY_PT_KEMAC. + + + the number of sub payloads in @payload + + + + + a #GstMIKEYPayload + + + + + + Get the sub payload of @payload at @idx. @payload should be of type +%GST_MIKEY_PT_KEMAC. + + + the #GstMIKEYPayload at @idx. + + + + + a #GstMIKEYPayload + + + + an index + + + + + + Remove the sub payload at @idx in @payload. + + + %TRUE on success. + + + + + a #GstMIKEYPayload + + + + the index to remove + + + + + + Set the KEMAC parameters. @payload should point to a %GST_MIKEY_PT_KEMAC +payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the #GstMIKEYEncAlg + + + + a #GstMIKEYMacAlg + + + + + + Set the key validity period in the %GST_MIKEY_PT_KEY_DATA @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the length of @vf_data + + + + the Valid From data + + + + + + the length of @vt_data + + + + the Valid To data + + + + + + + + Set @key_len bytes of @key_data of type @key_type as the key for the +%GST_MIKEY_PT_KEY_DATA @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + a #GstMIKEYKeyDataType + + + + the length of @key_data + + + + the key of type @key_type + + + + + + + + Set the salt key data. If @salt_len is 0 and @salt_data is %NULL, the +salt data will be removed. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the length of @salt_data + + + + the salt + + + + + + + + Set the SPI/MKI validity in the %GST_MIKEY_PT_KEY_DATA @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the length of @spi_data + + + + the SPI/MKI data + + + + + + + + Set the PKE values in @payload. @payload must be of type +%GST_MIKEY_PT_PKE. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + envelope key cache indicator + + + + the length of @data + + + + the encrypted envelope key + + + + + + + + Set the random values in a %GST_MIKEY_PT_RAND @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the length of @rand + + + + random values + + + + + + + + Add a new parameter to the %GST_MIKEY_PT_SP @payload with @type, @len +and @val. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + a type + + + + a length + + + + @len bytes of data + + + + + + + + Get the number of security policy parameters in a %GST_MIKEY_PT_SP +@payload. + + + the number of parameters in @payload + + + + + a #GstMIKEYPayload + + + + + + Get the Security Policy parameter in a %GST_MIKEY_PT_SP @payload +at @idx. + + + the #GstMIKEYPayloadSPParam at @idx in @payload + + + + + a #GstMIKEYPayload + + + + an index + + + + + + Remove the Security Policy parameters from a %GST_MIKEY_PT_SP +@payload at @idx. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + an index + + + + + + Set the Security Policy parameters for @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the policy number + + + + a #GstMIKEYSecProto + + + + + + Set the timestamp in a %GST_MIKEY_PT_T @payload. + + + %TRUE on success + + + + + a #GstMIKEYPayload + + + + the #GstMIKEYTSType + + + + the timestamp value + + + + + + + + + A structure holding the KEMAC payload + + + the common #GstMIKEYPayload + + + + the #GstMIKEYEncAlg + + + + the #GstMIKEYMacAlg + + + + the subpayloads + + + + + + + The Key data payload contains key material. It should be added as sub +payload to the KEMAC. + + + the payload header + + + + the #GstMIKEYKeyDataType of @key_data + + + + length of @key_data + + + + the key data + + + + the length of @salt_data, can be 0 + + + + salt data + + + + the Key Validity type + + + + length of @kv_data + + + + + + key validity data + + + + + + + The Envelope data payload contains the encrypted envelope key that is +used in the public-key transport to protect the data in the Key data +transport payload. The encryption algorithm used is implicit from +the certificate/public key used. + + + the common #GstMIKEYPayload + + + + envelope key cache indicator + + + + length of @data + + + + the encrypted envelope key + + + + + The RAND payload consists of a (pseudo-)random bit-string + + + the payload header + + + + the length of @rand + + + + random values + + + + + The Security Policy payload defines a set of policies that apply to a +specific security protocol + + + the payload header + + + + the policy number + + + + the security protocol + + + + array of #GstMIKEYPayloadSPParam + + + + + + + A Type/Length/Value field for security parameters + + + specifies the type of the parameter + + + + specifies the length of @val + + + + specifies the value of the parameter + + + + + The timestamp payload carries the timestamp information + + + the payload header + + + + a #GstMIKEYTSType + + + + the timestamp value + + + + + Different MIKEY Payload types. + + + Last payload + + + Key data transport payload + + + Envelope data payload + + + DH data payload + + + Signature payload + + + Timestamp payload + + + ID payload + + + Certificate Payload + + + Cert hash payload + + + Verification message payload + + + Security Policy payload + + + RAND payload + + + Error payload + + + Key data sub-payload + + + General Extension Payload + + + + Specifies the security protocol + + + SRTP + + + + This policy specifies the parameters for SRTP and SRTCP + + + Encryption algorithm + + + Session Encr. key length + + + Authentication algorithm + + + Session Auth. key length + + + Session Salt key length + + + SRTP Pseudo Random Function + + + Key derivation rate + + + SRTP encryption off/on, 0 if off, 1 if on + + + SRTCP encryption off/on, 0 if off, 1 if on + + + sender's FEC order + + + SRTP authentication off/on, 0 if off, 1 if on + + + Authentication tag length + + + SRTP prefix length + + + AEAD authentication tag length (Since: 1.16) + + + + Specifies the timestamp type. + + + an NTP time in UTC timezone + + + an NTP time + + + a counter + + + + Different MIKEY data types. + + + Invalid type + + + Initiator's pre-shared key message + + + Verification message of a Pre-shared key message + + + Initiator's public-key transport message + + + Verification message of a public-key message + + + Initiator's DH exchange message + + + Responder's DH exchange message + + + Error message + + + + The supported MIKEY version 1. + + + + + The contents of the SDP "a=" field which contains a key/value pair. + + + the attribute key + + + + the attribute value or NULL when it was a property attribute + + + + Clear the attribute. + + + @GST_SDP_OK. + + + + + a #GstSDPAttribute + + + + + + Set the attribute with @key and @value. + + + @GST_SDP_OK. + + + + + a #GstSDPAttribute + + + + the key + + + + the value + + + + + + + The contents of the SDP "b=" field which specifies the proposed bandwidth to +be used by the session or media. + + + the bandwidth modifier type + + + + the bandwidth in kilobits per second + + + + Reset the bandwidth information in @bw. + + + a #GstSDPResult. + + + + + a #GstSDPBandwidth + + + + + + Set bandwidth information in @bw. + + + a #GstSDPResult. + + + + + a #GstSDPBandwidth + + + + the bandwidth modifier type + + + + the bandwidth in kilobits per second + + + + + + + The contents of the SDP "c=" field which contains connection data. + + + the type of network. "IN" is defined to have the meaning + "Internet". + + + + the type of @address. + + + + the address + + + + the time to live of the address + + + + the number of layers + + + + Clear the connection. + + + @GST_SDP_OK. + + + + + a #GstSDPConnection + + + + + + Set the connection with the given parameters. + + + @GST_SDP_OK. + + + + + a #GstSDPConnection + + + + the type of network. "IN" is defined to have the meaning +"Internet". + + + + the type of address. + + + + the address + + + + the time to live of the address + + + + the number of layers + + + + + + + The contents of the SDP "k=" field which is used to convey encryption +keys. + + + the encryption type + + + + the encryption data + + + + + The contents of the SDP "m=" field with all related fields. + + + the media type + + + + the transport port to which the media stream will be sent + + + + the number of ports or -1 if only one port was specified + + + + the transport protocol + + + + an array of #gchar formats + + + + + + the media title + + + + array of #GstSDPConnection with media connection information + + + + + + array of #GstSDPBandwidth with media bandwidth information + + + + + + the encryption key + + + + array of #GstSDPAttribute with the additional media attributes + + + + + + Add the attribute with @key and @value to @media. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + a key + + + + a value + + + + + + Add the bandwidth information with @bwtype and @bandwidth to @media. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the bandwidth modifier type + + + + the bandwidth in kilobits per second + + + + + + Add the given connection parameters to @media. + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + the type of network. "IN" is defined to have the meaning +"Internet". + + + + the type of address. + + + + the address + + + + the time to live of the address + + + + the number of layers + + + + + + Add the format information to @media. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the format + + + + + + Convert the contents of @media to a text string. + + + A dynamically allocated string representing the media. + + + + + a #GstSDPMedia + + + + + + Get the number of attribute fields in @media. + + + the number of attributes in @media. + + + + + a #GstSDPMedia + + + + + + Mapping of attributes of #GstSDPMedia to #GstCaps + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + a #GstCaps + + + + + + Get the number of bandwidth fields in @media. + + + the number of bandwidths in @media. + + + + + a #GstSDPMedia + + + + + + Get the number of connection fields in @media. + + + the number of connections in @media. + + + + + a #GstSDPMedia + + + + + + Allocate a new copy of @media and store the result in @copy. The value in +@copy should be release with gst_sdp_media_free function. + + + a #GstSDPResult + + + + + a #GstSDPMedia + + + + pointer to new #GstSDPMedia + + + + + + Get the number of formats in @media. + + + the number of formats in @media. + + + + + a #GstSDPMedia + + + + + + Free all resources allocated by @media. @media should not be used anymore after +this function. This function should be used when @media was dynamically +allocated with gst_sdp_media_new(). + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + + + Get the attribute at position @idx in @media. + + + the #GstSDPAttribute at position @idx. + + + + + a #GstSDPMedia + + + + an index + + + + + + Get the first attribute value for @key in @media. + + + the first attribute value for @key. + + + + + a #GstSDPMedia + + + + a key + + + + + + Get the @nth attribute value for @key in @media. + + + the @nth attribute value. + + + + + a #GstSDPMedia + + + + a key + + + + an index + + + + + + Get the bandwidth at position @idx in @media. + + + the #GstSDPBandwidth at position @idx. + + + + + a #GstSDPMedia + + + + an index + + + + + + Mapping of caps from SDP fields: + +a=rtpmap:(payload) (encoding_name)/(clock_rate)[/(encoding_params)] + +a=framesize:(payload) (width)-(height) + +a=fmtp:(payload) (param)[=(value)];... + +Note that the extmap, ssrc and rid attributes are set only by gst_sdp_media_attributes_to_caps(). + + + a #GstCaps, or %NULL if an error happened + + + + + a #GstSDPMedia + + + + a payload type + + + + + + Get the connection at position @idx in @media. + + + the #GstSDPConnection at position @idx. + + + + + a #GstSDPMedia + + + + an index + + + + + + Get the format information at position @idx in @media. + + + the format at position @idx. + + + + + a #GstSDPMedia + + + + an index + + + + + + Get the information of @media + + + the information of @media. + + + + + a #GstSDPMedia + + + + + + Get the encryption information from @media. + + + a #GstSDPKey. + + + + + a #GstSDPMedia + + + + + + Get the media description of @media. + + + the media description. + + + + + a #GstSDPMedia + + + + + + Get the number of ports for @media. + + + the number of ports for @media. + + + + + a #GstSDPMedia + + + + + + Get the port number for @media. + + + the port number of @media. + + + + + a #GstSDPMedia + + + + + + Get the transport protocol of @media + + + the transport protocol of @media. + + + + + a #GstSDPMedia + + + + + + Insert the attribute to @media at @idx. When @idx is -1, +the attribute is appended. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPAttribute + + + + + + Insert the bandwidth information to @media at @idx. When @idx is -1, +the bandwidth is appended. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPBandwidth + + + + + + Insert the connection information to @media at @idx. When @idx is -1, +the connection is appended. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPConnection + + + + + + Insert the format information to @media at @idx. When @idx is -1, +the format is appended. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + the format + + + + + + Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute +from a #GstSDPMedia. + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + pointer to new #GstMIKEYMessage + + + + + + Remove the attribute in @media at @idx. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + + + Remove the bandwidth information in @media at @idx. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + + + Remove the connection information in @media at @idx. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + + + Remove the format information in @media at @idx. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + + + Replace the attribute in @media at @idx with @attr. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPAttribute + + + + + + Replace the bandwidth information in @media at @idx with @bw. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPBandwidth + + + + + + Replace the connection information in @media at @idx with @conn. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + a #GstSDPConnection + + + + + + Replace the format information in @media at @idx with @format. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + an index + + + + the format + + + + + + Set the media information of @media to @information. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the media information + + + + + + Adds the encryption information to @media. + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + the encryption type + + + + the encryption data + + + + + + Set the media description of @media to @med. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the media description + + + + + + Set the port information in @media. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the port number + + + + the number of ports + + + + + + Set the media transport protocol of @media to @proto. + + + #GST_SDP_OK. + + + + + a #GstSDPMedia + + + + the media transport protocol + + + + + + Free all resources allocated in @media. @media should not be used anymore after +this function. This function should be used when @media was allocated on the +stack and initialized with gst_sdp_media_init(). + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + + + Initialize @media so that its contents are as if it was freshly allocated +with gst_sdp_media_new(). This function is mostly used to initialize a media +allocated on the stack. gst_sdp_media_uninit() undoes this operation. + +When this function is invoked on newly allocated data (with malloc or on the +stack), its contents should be set to 0 before calling this function. + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + + + Allocate a new GstSDPMedia and store the result in @media. + + + a #GstSDPResult. + + + + + pointer to new #GstSDPMedia + + + + + + Mapping of caps to SDP fields: + +a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)] + +a=framesize:(payload) (width)-(height) + +a=fmtp:(payload) (param)[=(value)];... + +a=rtcp-fb:(payload) (param1) [param2]... + +a=extmap:(id)[/direction] (extensionname) (extensionattributes) + + + a #GstSDPResult. + + + + + a #GstCaps + + + + a #GstSDPMedia + + + + + + + The GstSDPMessage helper functions makes it easy to parse and create SDP +messages. + + + the protocol version + + + + owner/creator and session identifier + + + + session name + + + + session information + + + + URI of description + + + + array of #gchar with email addresses + + + + + + array of #gchar with phone numbers + + + + + + connection information for the session + + + + array of #GstSDPBandwidth with bandwidth information + + + + + + array of #GstSDPTime with time descriptions + + + + + + array of #GstSDPZone with time zone adjustments + + + + + + encryption key + + + + array of #GstSDPAttribute with session attributes + + + + + + array of #GstSDPMedia with media descriptions + + + + + + Add the attribute with @key and @value to @msg. + + + @GST_SDP_OK. + + + + + a #GstSDPMessage + + + + the key + + + + the value + + + + + + Add the specified bandwidth information to @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the bandwidth modifier type + + + + the bandwidth in kilobits per second + + + + + + Add @email to the list of emails in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an email + + + + + + Adds @media to the array of medias in @msg. This function takes ownership of +the contents of @media so that @media will have to be reinitialized with +gst_sdp_media_init() before it can be used again. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a #GstSDPMedia to add + + + + + + Add @phone to the list of phones in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a phone + + + + + + Add time information @start and @stop to @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the start time + + + + the stop time + + + + the repeat times + + + + + + + + Add time zone information to @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the NTP time that a time zone adjustment happens + + + + the offset from the time when the session was first scheduled + + + + + + Convert the contents of @msg to a text string. + + + A dynamically allocated string representing the SDP description. + + + + + a #GstSDPMessage + + + + + + Get the number of attributes in @msg. + + + the number of attributes in @msg. + + + + + a #GstSDPMessage + + + + + + Mapping of attributes of #GstSDPMessage to #GstCaps + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a #GstCaps + + + + + + Get the number of bandwidth information in @msg. + + + the number of bandwidth information in @msg. + + + + + a #GstSDPMessage + + + + + + Allocate a new copy of @msg and store the result in @copy. The value in +@copy should be release with gst_sdp_message_free function. + + + a #GstSDPResult + + + + + a #GstSDPMessage + + + + pointer to new #GstSDPMessage + + + + + + Dump the parsed contents of @msg to stdout. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get the number of emails in @msg. + + + the number of emails in @msg. + + + + + a #GstSDPMessage + + + + + + Free all resources allocated by @msg. @msg should not be used anymore after +this function. This function should be used when @msg was dynamically +allocated with gst_sdp_message_new(). + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get the attribute at position @idx in @msg. + + + the #GstSDPAttribute at position @idx. + + + + + a #GstSDPMessage + + + + the index + + + + + + Get the first attribute with key @key in @msg. + + + the attribute value of the first attribute with @key. + + + + + a #GstSDPMessage + + + + the key + + + + + + Get the @nth attribute with key @key in @msg. + + + the attribute value of the @nth attribute with @key. + + + + + a #GstSDPMessage + + + + the key + + + + the index + + + + + + Get the bandwidth at index @idx from @msg. + + + a #GstSDPBandwidth. + + + + + a #GstSDPMessage + + + + the bandwidth index + + + + + + Get the connection of @msg. + + + a #GstSDPConnection. The result remains valid as long as @msg is valid. + + + + + a #GstSDPMessage + + + + + + Get the email with number @idx from @msg. + + + the email at position @idx. + + + + + a #GstSDPMessage + + + + an email index + + + + + + Get the information in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get the encryption information from @msg. + + + a #GstSDPKey. + + + + + a #GstSDPMessage + + + + + + Get the media description at index @idx in @msg. + + + a #GstSDPMedia. + + + + + a #GstSDPMessage + + + + the index + + + + + + Get the origin of @msg. + + + a #GstSDPOrigin. The result remains valid as long as @msg is valid. + + + + + a #GstSDPMessage + + + + + + Get the phone with number @idx from @msg. + + + the phone at position @idx. + + + + + a #GstSDPMessage + + + + a phone index + + + + + + Get the session name in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get time information with index @idx from @msg. + + + a #GstSDPTime. + + + + + a #GstSDPMessage + + + + the time index + + + + + + Get the URI in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get the version in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get time zone information with index @idx from @msg. + + + a #GstSDPZone. + + + + + a #GstSDPMessage + + + + the zone index + + + + + + Insert attribute into the array of attributes in @msg +at index @idx. +When -1 is given as @idx, the attribute is inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an index + + + + a #GstSDPAttribute + + + + + + Insert bandwidth parameters into the array of bandwidths in @msg +at index @idx. +When -1 is given as @idx, the bandwidth is inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an index + + + + the bandwidth + + + + + + Insert @email into the array of emails in @msg at index @idx. +When -1 is given as @idx, the email is inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an index + + + + an email + + + + + + Insert @phone into the array of phone numbers in @msg at index @idx. +When -1 is given as @idx, the phone is inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a phone index + + + + a phone + + + + + + Insert time parameters into the array of times in @msg +at index @idx. +When -1 is given as @idx, the times are inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an index + + + + a #GstSDPTime + + + + + + Insert zone parameters into the array of zones in @msg +at index @idx. +When -1 is given as @idx, the zone is inserted at the end. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an index + + + + a #GstSDPZone + + + + + + Get the number of media descriptions in @msg. + + + the number of media descriptions in @msg. + + + + + a #GstSDPMessage + + + + + + Creates a new #GstMIKEYMessage after parsing the key-mgmt attribute +from a #GstSDPMessage. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + pointer to new #GstMIKEYMessage + + + + + + Get the number of phones in @msg. + + + the number of phones in @msg. + + + + + a #GstSDPMessage + + + + + + Remove the attribute in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + + + Remove the bandwidth information in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the bandwidth index + + + + + + Remove the email in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an email index + + + + + + Remove the phone number in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a phone index + + + + + + Remove the time information in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + + + Remove the zone information in @msg at index @idx. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + + + Replace the attribute in @msg at index @idx with @attr. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + a #GstSDPAttribute + + + + + + Replace the bandwidth information in @msg at index @idx with @bw. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the bandwidth index + + + + the bandwidth + + + + + + Replace the email in @msg at index @idx with @email. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + an email index + + + + an email + + + + + + Replace the phone number in @msg at index @idx with @phone. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + a phone index + + + + a phone + + + + + + Replace the time information in @msg at index @idx with @t. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + a #GstSDPTime + + + + + + Replace the zone information in @msg at index @idx with @zone. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the index + + + + a #GstSDPZone + + + + + + Configure the SDP connection in @msg with the given parameters. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the type of network. "IN" is defined to have the meaning +"Internet". + + + + the type of address. + + + + the address + + + + the time to live of the address + + + + the number of layers + + + + + + Set the information in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the information + + + + + + Adds the encryption information to @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the encryption type + + + + the encryption data + + + + + + Configure the SDP origin in @msg with the given parameters. + + + #GST_SDP_OK. + + + + + a #GstSDPMessage + + + + the user name + + + + a session id + + + + a session version + + + + a network type + + + + an address type + + + + an address + + + + + + Set the session name in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the session name + + + + + + Set the URI in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the URI + + + + + + Set the version in @msg. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + the version + + + + + + Get the number of time information entries in @msg. + + + the number of time information entries in @msg. + + + + + a #GstSDPMessage + + + + + + Free all resources allocated in @msg. @msg should not be used anymore after +this function. This function should be used when @msg was allocated on the +stack and initialized with gst_sdp_message_init(). + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Get the number of time zone information entries in @msg. + + + the number of time zone information entries in @msg. + + + + + a #GstSDPMessage + + + + + + Creates a uri from @msg with the given @scheme. The uri has the format: + + \@scheme:///[#type=value *[&type=value]] + + Where each value is url encoded. + + + a uri for @msg. + + + + + the uri scheme + + + + the #GstSDPMessage + + + + + + Initialize @msg so that its contents are as if it was freshly allocated +with gst_sdp_message_new(). This function is mostly used to initialize a message +allocated on the stack. gst_sdp_message_uninit() undoes this operation. + +When this function is invoked on newly allocated data (with malloc or on the +stack), its contents should be set to 0 before calling this function. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Allocate a new GstSDPMessage and store the result in @msg. + + + a #GstSDPResult. + + + + + pointer to new #GstSDPMessage + + + + + + Parse @text and create a new SDPMessage from these. + + + a #GstSDPResult. + + + + + A dynamically allocated string representing the SDP description + + + + pointer to new #GstSDPMessage + + + + + + Parse the contents of @size bytes pointed to by @data and store the result in +@msg. + + + #GST_SDP_OK on success. + + + + + the start of the buffer + + + + + + the size of the buffer + + + + the result #GstSDPMessage + + + + + + Parse the null-terminated @uri and store the result in @msg. + +The uri should be of the form: + + scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname] + [#type=value *[&type=value]] + + where value is url encoded. This looslely resembles + http://tools.ietf.org/html/draft-fujikawa-sdp-url-01 + + + #GST_SDP_OK on success. + + + + + the start of the uri + + + + the result #GstSDPMessage + + + + + + + The contents of the SDP "o=" field which gives the originator of the session +(their username and the address of the user's host) plus a session id and +session version number. + + + the user's login on the originating host, or it is "-" + if the originating host does not support the concept of user ids. + + + + is a numeric string such that the tuple of @username, @sess_id, + @nettype, @addrtype and @addr form a globally unique identifier for the + session. + + + + a version number for this announcement + + + + the type of network. "IN" is defined to have the meaning + "Internet". + + + + the type of @addr. + + + + the globally unique address of the machine from which the session was + created. + + + + + Return values for the SDP functions. + + + A successful return value + + + a function was given invalid parameters + + + + The contents of the SDP "t=" field which specify the start and stop times for +a conference session. + + + start time for the conference. The value is the decimal + representation of Network Time Protocol (NTP) time values in seconds + + + + stop time for the conference. The value is the decimal + representation of Network Time Protocol (NTP) time values in seconds + + + + repeat times for a session + + + + + + Reset the time information in @t. + + + a #GstSDPResult. + + + + + a #GstSDPTime + + + + + + Set time information @start, @stop and @repeat in @t. + + + a #GstSDPResult. + + + + + a #GstSDPTime + + + + the start time + + + + the stop time + + + + the repeat times + + + + + + + + + The contents of the SDP "z=" field which allows the sender to +specify a list of time zone adjustments and offsets from the base +time. + + + the NTP time that a time zone adjustment happens + + + + the offset from the time when the session was first scheduled + + + + Reset the zone information in @zone. + + + a #GstSDPResult. + + + + + a #GstSDPZone + + + + + + Set zone information in @zone. + + + a #GstSDPResult. + + + + + a #GstSDPZone + + + + the NTP time that a time zone adjustment happens + + + + the offset from the time when the session was first scheduled + + + + + + + The Application-Specific Maximum bandwidth modifier. + + + + + The Conference Total bandwidth modifier. + + + + + The extension prefix bandwidth modifier. + + + + + RTCP bandwidth allocated to data receivers (RFC 3556). + + + + + RTCP bandwidth allocated to active data senders (RFC 3556). + + + + + Transport Independent Application Specific Maximum bandwidth (RFC 3890). + + + + + + + + + + + + + + + + + + + Check if the given @addr is a multicast address. + + + TRUE when @addr is multicast. + + + + + a network type + + + + an address type + + + + an address + + + + + + Makes key management data + + + a #gchar key-mgmt data, + + + + + a #gchar URI + + + + a #gchar base64-encoded key data + + + + + + Initialize @media so that its contents are as if it was freshly allocated +with gst_sdp_media_new(). This function is mostly used to initialize a media +allocated on the stack. gst_sdp_media_uninit() undoes this operation. + +When this function is invoked on newly allocated data (with malloc or on the +stack), its contents should be set to 0 before calling this function. + + + a #GstSDPResult. + + + + + a #GstSDPMedia + + + + + + Allocate a new GstSDPMedia and store the result in @media. + + + a #GstSDPResult. + + + + + pointer to new #GstSDPMedia + + + + + + Mapping of caps to SDP fields: + +a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)] + +a=framesize:(payload) (width)-(height) + +a=fmtp:(payload) (param)[=(value)];... + +a=rtcp-fb:(payload) (param1) [param2]... + +a=extmap:(id)[/direction] (extensionname) (extensionattributes) + + + a #GstSDPResult. + + + + + a #GstCaps + + + + a #GstSDPMedia + + + + + + Creates a uri from @msg with the given @scheme. The uri has the format: + + \@scheme:///[#type=value *[&type=value]] + + Where each value is url encoded. + + + a uri for @msg. + + + + + the uri scheme + + + + the #GstSDPMessage + + + + + + Initialize @msg so that its contents are as if it was freshly allocated +with gst_sdp_message_new(). This function is mostly used to initialize a message +allocated on the stack. gst_sdp_message_uninit() undoes this operation. + +When this function is invoked on newly allocated data (with malloc or on the +stack), its contents should be set to 0 before calling this function. + + + a #GstSDPResult. + + + + + a #GstSDPMessage + + + + + + Allocate a new GstSDPMessage and store the result in @msg. + + + a #GstSDPResult. + + + + + pointer to new #GstSDPMessage + + + + + + Parse @text and create a new SDPMessage from these. + + + a #GstSDPResult. + + + + + A dynamically allocated string representing the SDP description + + + + pointer to new #GstSDPMessage + + + + + + Parse the contents of @size bytes pointed to by @data and store the result in +@msg. + + + #GST_SDP_OK on success. + + + + + the start of the buffer + + + + + + the size of the buffer + + + + the result #GstSDPMessage + + + + + + Parse the null-terminated @uri and store the result in @msg. + +The uri should be of the form: + + scheme://[address[:ttl=ttl][:noa=noa]]/[sessionname] + [#type=value *[&type=value]] + + where value is url encoded. This looslely resembles + http://tools.ietf.org/html/draft-fujikawa-sdp-url-01 + + + #GST_SDP_OK on success. + + + + + the start of the uri + + + + the result #GstSDPMessage + + + + + + diff --git a/girs/GstTag-1.0.gir b/girs/GstTag-1.0.gir new file mode 100644 index 0000000000..4634e02333 --- /dev/null +++ b/girs/GstTag-1.0.gir @@ -0,0 +1,1764 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AcoustID Fingerprint (Chromaprint) + + + + + AcoustID Identifier + + + + + Direction of contrast processing applied when capturing an image. (string) + +The allowed values are: + "normal" + "soft" + "hard" + + + + + Digital zoom ratio used when capturing an image. (double) + + + + + Exposure compensation using when capturing an image in EV. (double) + + + + + Exposure mode used when capturing an image. (string) + +The allowed values are: + "auto-exposure" + "manual-exposure" + "auto-bracket" + + + + + Type of exposure control used when capturing an image. (string) + +The allowed values are: + "undefined" + "manual" + "normal" - automatically controlled + "aperture-priority" - user selects aperture value + "shutter-priority" - user selects shutter speed + "creative" - biased towards depth of field + "action" - biased towards fast shutter speed + "portrait" - closeup, leaving background out of focus + "landscape" - landscape photos, background in focus + + + + + If flash was fired during the capture of an image. (boolean) + +Note that if this tag isn't present, it should not be assumed that +the flash did not fire. It should be treated as unknown. + + + + + The flash mode selected during the capture of an image. (string) + +The allowed values are: + "auto" + "always" + "never" + + + + + Focal length used when capturing an image, in mm. (double) + + + + + 35 mm equivalent focal length used when capturing an image, in mm. (double) + + + + + Focal ratio (f-number) used when capturing an image. (double) + +The value stored is the denominator of the focal ratio (f-number). +For example, if this tag value is 2, the focal ratio is f/2. + + + + + Gain adjustment applied to an image. (string) + +The allowed values are: + "none" + "low-gain-up" + "high-gain-up" + "low-gain-down" + "high-gain-down" + + + + + ISO speed used when capturing an image. (integer) + + + + + Defines the way a camera determines the exposure. (string) + +The allowed values are: + "unknown" + "average" + "center-weighted-average" + "spot" + "multi-spot" + "pattern" + "partial" + "other" + + + + + Direction of saturation processing applied when capturing an image. (string) + +The allowed values are: + "normal" + "low-saturation" + "high-saturation" + + + + + Scene mode used when capturing an image. (string) + +The allowed values are: + "standard" + "landscape" + "portrait" + "night-scene" + + + + + Direction of sharpness processing applied when capturing an image. (string) + +The allowed values are: + "normal" + "soft" + "hard" + + + + + Shutter speed used when capturing an image, in seconds. (fraction) + + + + + Indicates the source of capture. The device/medium used to do the +capture. (string) + +Allowed values are: + "dsc" (= digital still camera) + "transparent-scanner" + "reflex-scanner" + "other" + + + + + White balance mode used when capturing an image. (string) + +The allowed values are: + "auto" + "manual" + "daylight" + "cloudy" + "tungsten" + "fluorescent" + "fluorescent h" (newer daylight-calibrated fluorescents) + "flash" + + + + + CDDB disc id in its short form (e.g. 'aa063d0f') + + + + + CDDB disc id including all details + + + + + Musicbrainz disc id (e.g. 'ahg7JUcfR3vCYBphSDIogOOWrr0-') + + + + + Musicbrainz disc id details + + + + + Annodex CMML clip element tag + + + + + Annodex CMML head element tag + + + + + Annodex CMML stream element tag + + + + + + + + + + + + + + + + + + + ID3V2 header size considered minimum input for some functions such as +gst_tag_list_from_id3v2_tag() and gst_tag_get_id3v2_tag_size() for example. + + + + + Media (image/video) intended horizontal pixel density in ppi. (double) + + + + + Media (image/video) intended vertical pixel density in ppi. (double) + + + + + Musical key in which the sound starts. It is represented as a string +with a maximum length of three characters. The ground keys are +represented with "A","B","C","D","E", "F" and "G" and halfkeys +represented with "b" and "#". Minor is represented as "m" (e.g. "Dbm"). +Off key is represented with an "o" only. +This notation might be extended in the future to support non-minor/major +keys. + + + + + MusicBrainz album artist ID + + + + + MusicBrainz album ID + + + + + MusicBrainz artist ID + + + + + MusicBrainz Release Group ID + + + + + MusicBrainz Release Track ID + + + + + MusicBrainz track ID + + + + + MusicBrainz track TRM ID + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides a base class for demuxing tags at the beginning or end of a +stream and handles things like typefinding, querying, seeking, and +different modes of operation (chain-based, pull_range-based, and providing +downstream elements with random access if upstream supports that). The tag +is stripped from the output, and all offsets are adjusted for the tag +sizes, so that to the downstream element the stream will appear as if +there was no tag at all. Also, once the tag has been parsed, GstTagDemux +will try to determine the media type of the resulting stream and add a +source pad with the appropriate caps in order to facilitate auto-plugging. + +## Deriving from GstTagDemux + +Subclasses have to do four things: + + * In their base init function, they must add a pad template for the sink + pad to the element class, describing the media type they can parse in + the caps of the pad template. + * In their class init function, they must override + GST_TAG_DEMUX_CLASS(demux_klass)->identify_tag with their own identify + function. + * In their class init function, they must override + GST_TAG_DEMUX_CLASS(demux_klass)->parse_tag with their own parse + function. + * In their class init function, they must also set + GST_TAG_DEMUX_CLASS(demux_klass)->min_start_size and/or + GST_TAG_DEMUX_CLASS(demux_klass)->min_end_size to the minimum size required + for the identify function to decide whether the stream has a supported tag + or not. A class parsing ID3v1 tags, for example, would set min_end_size to + 128 bytes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent element + + + + + + + + + + + + + The #GstTagDemuxClass structure. See documentation at beginning of section +for details about what subclasses need to override and do. + + + the parent class. + + + + minimum size required to identify a tag at the start and +determine its total size. Set to 0 if not interested in start tags. +Subclasses should set this in their class_init function. + + + + minimum size required to identify a tag at the end and +determine its total size. Set to 0 if not interested in end tags. +Subclasses should set this in their class_init function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Result values from the parse_tag virtual function. + + cannot parse tag, just skip it + + + call again with less or more data + + + parsed tag successfully + + + + Type of image contained in an image tag (specified as "image-type" field in +the info structure in the image's #GstSample) + + No image type. Can be used to + tell functions such as gst_tag_image_data_to_image_sample() that no + image type should be set. + + + Undefined/other image type + + + Cover (front) + + + Cover (back) + + + Leaflet page + + + Medium (e.g. label side of CD) + + + Lead artist/lead performer/soloist + + + Artist/performer + + + Conductor + + + Band/orchestra + + + Composer + + + Lyricist/text writer + + + Recording location + + + During recording + + + During performance + + + Movie/video screen capture + + + A fish as funny as the ID3v2 spec + + + Illustration + + + Band/artist logotype + + + Publisher/studio logotype + + + + See http://creativecommons.org/ns for more information. + + making multiple copies + is allowed + + + distribution, public display + and public performance are allowed + + + distribution of derivative + works is allowed + + + commercial derivatives are allowed, + but only non-commercial distribution is allowed + + + copyright and license notices + must be kept intact + + + credit must be given to + copyright holder and/or author + + + derivative works must be + licensed under the same terms or compatible terms as the original work + + + source code (the preferred + form for making modifications) must be provided when exercising some + rights granted by the license + + + derivative and combined works + must be licensed under specified terms, similar to those of the original + work + + + derivative works must be + licensed under specified terms, with at least the same conditions as + the original work; combinations with the work may be licensed under + different terms + + + exercising rights for + commercial purposes is prohibited + + + use in a + non-developing country is prohibited + + + this license was created + by the Creative Commons project + + + this license was + created by the Free Software Foundation (FSF) + + + + Provides a base class for adding tags at the beginning or end of a +stream. + +## Deriving from GstTagMux + +Subclasses have to do the following things: + + * In their base init function, they must add pad templates for the sink + pad and the source pad to the element class, describing the media type + they accept and output in the caps of the pad template. + * In their class init function, they must override the + GST_TAG_MUX_CLASS(mux_klass)->render_start_tag and/or + GST_TAG_MUX_CLASS(mux_klass)->render_end_tag vfuncs and set up a render + function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent element + + + + + + + + + + + + + The #GstTagMuxClass structure. Subclasses need to override at least one +of the two render vfuncs. + + + the parent class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This interface is implemented by elements that are able to do XMP serialization. Examples for +such elements are #jifmux and #qtmux. + +Applications can use this interface to configure which XMP schemas should be used when serializing +tags into XMP. Schemas are represented by their names, a full list of the supported schemas can be +obtained from gst_tag_xmp_list_schemas(). By default, all schemas are used. + + + + Adds all available XMP schemas to the configuration. Meaning that +all will be used. + + + + + + + a #GstTagXmpWriter + + + + + + Adds @schema to the list schemas + + + + + + + a #GstTagXmpWriter + + + + the schema to be added + + + + + + Checks if @schema is going to be used + + + %TRUE if it is going to be used + + + + + a #GstTagXmpWriter + + + + the schema to test + + + + + + Removes all schemas from the list of schemas to use. Meaning that no +XMP will be generated. + + + + + + + a #GstTagXmpWriter + + + + + + Removes a schema from the list of schemas to use. Nothing is done if +the schema wasn't in the list + + + + + + + a #GstTagXmpWriter + + + + the schema to remove + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if a given string contains a known ISO 639 language code. + +This is useful in situations where it's not clear whether a given +string is a language code (which should be put into a #GST_TAG_LANGUAGE_CODE +tag) or a free-form language name descriptor (which should be put into a +#GST_TAG_LANGUAGE_NAME tag instead). + + + TRUE if the two- or three-letter language code in @lang_code + is a valid ISO-639 language code. + + + + + ISO-639 language code (e.g. "deu" or "ger" or "de") + + + + + + Convenience function to read a string with unknown character encoding. If +the string is already in UTF-8 encoding, it will be returned right away. +If not it tries to detect byte-order-mark for UTF-16/32 cases and use that. +Otherwise, the environment will be searched for a number of environment +variables (whose names are specified in the NULL-terminated string array +@env_vars) containing a list of character encodings to try/use. If none +are specified, the current locale will be tried. If that also doesn't work, +WINDOWS-1252/ISO-8859-1 is assumed (which will almost always succeed). + + + a newly-allocated string in UTF-8 encoding, or NULL + + + + + string data + + + + + + length of string data, or -1 if the string is NUL-terminated + + + + + a NULL-terminated string array of environment variable names, or NULL + + + + + + + + Looks up the GStreamer tag for a ID3v2 tag. + + + The corresponding GStreamer tag or NULL if none exists. + + + + + ID3v2 tag to convert to GStreamer tag + + + + + + Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in +TXXX frame or owner in UFID frame). + + + The corresponding GStreamer tag or NULL if none exists. + + + + + the type of ID3v2 user tag (e.g. "TXXX" or "UDIF") + + + + ID3v2 user tag to convert to GStreamer tag + + + + + + Looks up the GStreamer tag for a vorbiscomment tag. + + + The corresponding GStreamer tag or NULL if none exists. + + + + + vorbiscomment tag to convert to GStreamer tag + + + + + + Determines size of an ID3v2 tag on buffer containing at least ID3v2 header, +i.e. at least #GST_TAG_ID3V2_HEADER_SIZE (10) bytes; + + + Size of tag, or 0 if header is invalid or too small. + + + + + buffer holding ID3v2 tag (or at least the start of one) + + + + + + Convenience macro wrapping gst_tag_get_language_code_iso_639_1(). + + + + ISO-639 language code (e.g. "deu" or "ger" or "de") + + + + + Returns two-letter ISO-639-1 language code given a three-letter ISO-639-2 +language code or two-letter ISO-639-1 language code (both are accepted for +convenience). + +Language codes are case-sensitive and expected to be lower case. + + + two-letter ISO-639-1 language code string that maps to @lang_code, + or NULL if no mapping is known. The returned string must not be + modified or freed. + + + + + ISO-639 language code (e.g. "deu" or "ger" or "de") + + + + + + Returns three-letter ISO-639-2 "bibliographic" language code given a +two-letter ISO-639-1 language code or a three-letter ISO-639-2 language +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 preferred. + +Language codes are case-sensitive and expected to be lower case. + + + three-letter ISO-639-2 language code string that maps to @lang_code, + or NULL if no mapping is known. The returned string must not be + modified or freed. + + + + + ISO-639 language code (e.g. "deu" or "ger" or "de") + + + + + + Returns three-letter ISO-639-2 "terminological" language code given a +two-letter ISO-639-1 language code or a three-letter ISO-639-2 language +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 preferred over the "bibliographic" ones. + +Language codes are case-sensitive and expected to be lower case. + + + three-letter ISO-639-2 language code string that maps to @lang_code, + or NULL if no mapping is known. The returned string must not be + modified or freed. + + + + + ISO-639 language code (e.g. "deu" or "ger" or "de") + + + + + + Returns a list of known language codes (in form of two-letter ISO-639-1 +codes). This is useful for UIs to build a list of available languages for +tagging purposes (e.g. to tag an audio track appropriately in a video or +audio editor). + + + NULL-terminated string array with two-letter + language codes. Free with g_strfreev() when no longer needed. + + + + + + + Returns the name of the language given an ISO-639 language code as +found in a GST_TAG_LANGUAGE_CODE tag. The name will be translated +according to the current locale (if the library was built against the +iso-codes package, otherwise the English name will be returned). + +Language codes are case-sensitive and expected to be lower case. + + + language name in UTF-8 format, or NULL if @language_code could + not be mapped to a language name. The returned string must not be + modified and does not need to freed; it will stay valid until the + application is terminated. + + + + + two or three-letter ISO-639 language code + + + + + + Get the description of a license, which is a translated description +of the license's main features. + + + the description of the license, or NULL if the license is unknown + or a description is not available. + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Get the flags of a license, which describe most of the features of +a license in their most general form. + + + the flags of the license, or 0 if the license is unknown + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Get the jurisdiction code of a license. This is usually a two-letter +ISO 3166-1 alpha-2 code, but there is also the special case of Scotland, +for which no code exists and which is thus represented as "scotland". + +Known jurisdictions: ar, at, au, be, bg, br, ca, ch, cl, cn, co, de, +dk, es, fi, fr, hr, hu, il, in, it, jp, kr, mk, mt, mx, my, nl, pe, pl, +pt, scotland, se, si, tw, uk, us, za. + + + the jurisdiction code of the license, or NULL if the license is + unknown or is not specific to a particular jurisdiction. + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Get the nick name of a license, which is a short (untranslated) string +such as e.g. "CC BY-NC-ND 2.0 UK". + + + the nick name of the license, or NULL if the license is unknown + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Get the title of a license, which is a short translated description +of the license's features (generally not very pretty though). + + + the title of the license, or NULL if the license is unknown or + no title is available. + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Get the version of a license. + + + the version of the license, or NULL if the license is not known or + has no version + + + + + a license reference string in form of a URI, + e.g. "http://creativecommons.org/licenses/by-nc-nd/2.0/" + + + + + + Returns a list of known license references (in form of URIs). This is +useful for UIs to build a list of available licenses for tagging purposes +(e.g. to tag an audio track appropriately in a video or audio editor, or +an image in a camera application). + + + NULL-terminated array of license strings. Free + with g_strfreev() when no longer needed. + + + + + + + Gets the number of ID3v1 genres that can be identified. Winamp genres are +included. + + + the number of ID3v1 genres that can be identified + + + + + Gets the ID3v1 genre name for a given ID. + + + the genre or NULL if no genre is associated with that ID. + + + + + ID of genre to query + + + + + + Helper function for tag-reading plugins to create a #GstSample suitable to +add to a #GstTagList as an image tag (such as #GST_TAG_IMAGE or +#GST_TAG_PREVIEW_IMAGE) from the encoded image data and an (optional) image +type. + +Background: cover art and other images in tags are usually stored as a +blob of binary image data, often accompanied by a MIME type or some other +content type string (e.g. 'png', 'jpeg', 'jpg'). Sometimes there is also an +'image type' to indicate what kind of image this is (e.g. front cover, +back cover, artist, etc.). The image data may also be an URI to the image +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 #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. + +This function will do various checks and typefind the encoded image +data (we can't trust the declared mime type). + + + a newly-allocated image sample for use in tag lists, or NULL + + + + + the (encoded) image + + + + + + the length of the encoded image data at @image_data + + + + type of the image, or #GST_TAG_IMAGE_TYPE_UNDEFINED. Pass + #GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g. + for preview images) + + + + + + Adds an image from an ID3 APIC frame (or similar, such as used in FLAC) +to the given tag list. Also see gst_tag_image_data_to_image_sample() for +more information on image tags in GStreamer. + + + %TRUE if the image was processed, otherwise %FALSE + + + + + a tag list + + + + the (encoded) image + + + + + + the length of the encoded image data at @image_data + + + + picture type as per the ID3 (v2.4.0) specification for + the APIC frame (0 = unknown/other) + + + + + + Parses the IFD and IFD tags data contained in the buffer and puts it +on a taglist. The base_offset is used to subtract from the offset in +the tag entries and be able to get the offset relative to the buffer +start + + + The parsed taglist + + + + + The exif buffer + + + + byte order of the data + + + + Offset from the tiff header to this buffer + + + + + + Parses the exif tags starting with a tiff header structure. + + + The taglist + + + + + The exif buffer + + + + + + Creates a new tag list that contains the information parsed out of a +ID3 tag. + + + A new #GstTagList with all tags that could be extracted from the + given vorbiscomment buffer or NULL on error. + + + + + buffer to convert + + + + + + Creates a new tag list that contains the information parsed out of a +vorbiscomment packet. + + + A new #GstTagList with all tags that could be extracted from the + given vorbiscomment buffer or NULL on error. + + + + + data to convert + + + + + + size of @data + + + + identification data at start of stream + + + + + + length of identification data + + + + pointer to a string that should take the + vendor string of this vorbis comment or NULL if you don't need it. + + + + + + Creates a new tag list that contains the information parsed out of a +vorbiscomment packet. + + + A new #GstTagList with all tags that could be extracted from the + given vorbiscomment buffer or NULL on error. + + + + + buffer to convert + + + + identification data at start of stream + + + + + + length of identification data + + + + pointer to a string that should take the + vendor string of this vorbis comment or NULL if you don't need it. + + + + + + Parse a xmp packet into a taglist. + + + new taglist or %NULL, free the list when done + + + + + buffer + + + + + + Parses the data containing an ID3v1 tag and returns a #GstTagList from the +parsed data. + + + A new tag list or NULL if the data was not an ID3v1 tag. + + + + + 128 bytes of data containing the ID3v1 tag + + + + + + + + Formats the tags in taglist on exif format. The resulting buffer contains +the tags IFD and is followed by the data pointed by the tag entries. + + + A GstBuffer containing the tag entries followed by the tag data + + + + + The taglist + + + + byte order used in writing (G_LITTLE_ENDIAN or G_BIG_ENDIAN) + + + + Offset from the tiff header first byte + + + + + + Formats the tags in taglist into exif structure, a tiff header +is put in the beginning of the buffer. + + + A GstBuffer containing the data + + + + + The taglist + + + + + + Creates a new vorbiscomment buffer from a tag list. + + + A new #GstBuffer containing a vorbiscomment buffer with all tags + that could be converted from the given tag list. + + + + + tag list to convert + + + + identification data at start of stream + + + + + + length of identification data, may be 0 if @id_data is NULL + + + + string that describes the vendor string or NULL + + + + + + Formats a taglist as a xmp packet using only the selected +schemas. An empty list (%NULL) means that all schemas should +be used + + + new buffer or %NULL, unref the buffer when done + + + + + tags + + + + does the container forbid inplace editing + + + + + %NULL terminated array of schemas to be used on serialization + + + + + + + + Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and +separate it into its components. + +If successful, @key, @lang and/or @value will be set to newly allocated +strings that you need to free with g_free() when done. @key and @lang +may also be set to NULL by this function if there is no key or no language +code in the extended comment string. + + + TRUE if the string could be parsed, otherwise FALSE + + + + + an extended comment string, see #GST_TAG_EXTENDED_COMMENT + + + + + return location for the comment description key, or NULL + + + + + return location for the comment ISO-639 language code, or NULL + + + + return location for the actual comment string, or NULL + + + + whether to fail if strings are not in key=value form + + + + + + Registers additional musicbrainz-specific tags with the GStreamer tag +system. Plugins and applications that use these tags should call this +function before using them. Can be called multiple times. + + + + + + + Looks up the ID3v2 tag for a GStreamer tag. + + + The corresponding ID3v2 tag or NULL if none exists. + + + + + GStreamer tag to convert to vorbiscomment tag + + + + + + Creates a new tag list that contains the information parsed out of a +vorbiscomment packet. + + + A #GList of newly-allocated + key=value strings. Free with g_list_foreach (list, (GFunc) g_free, NULL) + plus g_list_free (list) + + + + + + + a #GstTagList + + + + a GStreamer tag identifier, such as #GST_TAG_ARTIST + + + + + + Looks up the vorbiscomment tag for a GStreamer tag. + + + The corresponding vorbiscomment tag or NULL if none exists. + + + + + GStreamer tag to convert to vorbiscomment tag + + + + + + Gets the list of supported schemas in the xmp lib + + + a %NULL terminated array of strings with the + schema names + + + + + + + Convenience function using gst_tag_from_vorbis_tag(), parsing +a vorbis comment string into the right type and adding it to the +given taglist @list. + +Unknown vorbiscomment tags will be added to the tag list in form +of a #GST_TAG_EXTENDED_COMMENT. + + + + + + + a #GstTagList + + + + a vorbiscomment tag string (key in key=value), must be valid UTF-8 + + + + a vorbiscomment value string (value in key=value), must be valid UTF-8 + + + + + + diff --git a/girs/GstTranscoder-1.0.gir b/girs/GstTranscoder-1.0.gir new file mode 100644 index 0000000000..c29ca1060c --- /dev/null +++ b/girs/GstTranscoder-1.0.gir @@ -0,0 +1,763 @@ + + + + + + + + + + + + + a new #GstTranscoder instance + + + + + The URI of the media stream to transcode + + + + The URI of the destination of the transcoded stream + + + + The serialized #GstEncodingProfile defining the output +format. Have a look at the #GstEncodingProfile documentation to find more +about the serialization format. + + + + + + + + a new #GstTranscoder instance + + + + + The URI of the media stream to transcode + + + + The URI of the destination of the transcoded stream + + + + The #GstEncodingProfile defining the output format +have a look at the #GstEncodingProfile documentation to find more +about the serialization format. + + + + + + + + A #gboolean indicating whether the passes message represents a #GstTranscoder message or not. + + + + + A #GstMessage + + + + + + + + %TRUE if the transcoder tries to avoid reencoding streams where +reencoding is not strictly needed, %FALSE otherwise. + + + + + The #GstTranscoder to check whether reencoding is avoided or not. + + + + + + Gets the URI of the destination of the transcoded stream. + + + a string containing the URI of the +destination of the transcoded stream. g_free() after usage. + + + + + #GstTranscoder instance + + + + + + Retrieves the duration of the media stream that self represents. + + + the duration of the transcoding media stream, in +nanoseconds. + + + + + #GstTranscoder instance + + + + + + GstTranscoder API exposes a #GstBus instance which purpose is to provide data +structures representing transcoder-internal events in form of #GstMessage-s of +type GST_MESSAGE_APPLICATION. + +Each message carries a "transcoder-message" field of type #GstTranscoderMessage. +Further fields of the message data are specific to each possible value of +that enumeration. + +Applications can consume the messages asynchronously within their own +event-loop / UI-thread etc. Note that in case the application does not +consume the messages, the bus will accumulate these internally and eventually +fill memory. To avoid that, the bus has to be set "flushing". + + + The transcoder message bus instance + + + + + #GstTranscoder instance + + + + + + + + The internal uritranscodebin instance + + + + + #GstTranscoder instance + + + + + + + + the absolute position time, in nanoseconds, of the +transcoding stream. + + + + + #GstTranscoder instance + + + + + + + + current position update interval in milliseconds + + + + + #GstTranscoder instance + + + + + + Gets the #GstTranscoderSignalAdapter attached to @self if it is attached to +the right #GMainContext. If no #GstTranscoderSignalAdapter has been created +yet, it will be created and returned, other calls will return that same +adapter until it is destroyed, at which point, a new one can be attached the +same way. + + + The #GstTranscoderSignalAdapter to +connect signal handlers to. + + + + + #GstTranscoder instance to emit signals for. + + + + A #GMainContext on which the main-loop will process + transcoder bus messages on. Can be NULL (thread-default + context will be used then). + + + + + + Gets the URI of the currently-transcoding stream. + + + a string containing the URI of the +source stream. g_free() after usage. + + + + + #GstTranscoder instance + + + + + + Gets the #GstTranscoderSignalAdapter attached to @self to emit signals from +its thread of emission. + + + The #GstTranscoderSignalAdapter to connect signal +handlers to. + + + + + #GstTranscoder instance to emit signals synchronously +for. + + + + + + Run the transcoder task synchonously. You can connect +to the 'position' signal to get information about the +progress of the transcoding. + + + + + + + The GstTranscoder to run + + + + + + Run the transcoder task asynchronously. You should connect +to the 'done' signal to be notified about when the +transcoding is done, and to the 'error' signal to be +notified about any error. + + + + + + + The GstTranscoder to run + + + + + + + + + + + + The #GstTranscoder to set whether reencoding should be avoided or not. + + + + %TRUE if the transcoder should try to avoid reencoding +streams where * reencoding is not strictly needed, %FALSE otherwise. + + + + + + Sets @cpu_usage as target percentage CPU usage of the process running the +transcoding task. It will modulate the transcoding speed to reach that target +usage. + + + + + + + The GstTranscoder to limit CPU usage on. + + + + The percentage of the CPU the process running the transcoder +should try to use. It takes into account the number of cores available. + + + + + + Set interval in milliseconds between two position-updated signals. +Pass 0 to stop updating the position. + + + + + + + #GstTranscoder instance + + + + interval in ms + + + + + + See #encodebin:avoid-reencoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + generic error. + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstTranscoderError + + + + + + + + + + + + Types of messages that will be posted on the transcoder API bus. + +See also #gst_transcoder_get_message_bus() + + Sink position changed + + + Duration of stream changed + + + Pipeline state changed + + + Transcoding is done + + + Message contains an error + + + Message contains an error + + + Returns (transfer none): The message name + + + + + + + a #GstTranscoderMessage + + + + + + Parse the given duration @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting duration + + + + + + Parse the given error @msg and extract the corresponding #GError + + + + + + + A #GstMessage + + + + the resulting error + + + + (transfer full): A GstStructure containing extra details about the error + + + + + + Parse the given position @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting position + + + + + + Parse the given state @msg and extract the corresponding #GstTranscoderState + + + + + + + A #GstMessage + + + + the resulting state + + + + + + Parse the given error @msg and extract the corresponding #GError warning + + + + + + + A #GstMessage + + + + the resulting warning + + + + (transfer full): A GstStructure containing extra details about the warning + + + + + + + Transforms #GstTranscoder bus messages to signals from the adapter object. + + + + + The #GstTranscoder @self is tracking + + + + + The #GstTranscoderSignalAdapter + + + + + + The #GstTranscoder tracked by the adapter. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + High level representation of the transcoder pipeline state. + + the transcoder is stopped. + + + the transcoder is paused. + + + the transcoder is currently transcoding a +stream. + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstTranscoderState + + + + + + + Gets a string representing the given error. + + + a string with the given error. + + + + + a #GstTranscoderError + + + + + + + + + + + Returns (transfer none): The message name + + + + + + + a #GstTranscoderMessage + + + + + + Parse the given duration @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting duration + + + + + + Parse the given error @msg and extract the corresponding #GError + + + + + + + A #GstMessage + + + + the resulting error + + + + (transfer full): A GstStructure containing extra details about the error + + + + + + Parse the given position @msg and extract the corresponding #GstClockTime + + + + + + + A #GstMessage + + + + the resulting position + + + + + + Parse the given state @msg and extract the corresponding #GstTranscoderState + + + + + + + A #GstMessage + + + + the resulting state + + + + + + Parse the given error @msg and extract the corresponding #GError warning + + + + + + + A #GstMessage + + + + the resulting warning + + + + (transfer full): A GstStructure containing extra details about the warning + + + + + + Gets a string representing the given state. + + + a string with the name of the state. + + + + + a #GstTranscoderState + + + + + + diff --git a/girs/GstValidate-1.0.gir b/girs/GstValidate-1.0.gir new file mode 100644 index 0000000000..312ad090ed --- /dev/null +++ b/girs/GstValidate-1.0.gir @@ -0,0 +1,4625 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The GstValidateAction defined to be executed as part of a scenario + +Only access it from the default main context. + + + + + + The type of the #GstValidateAction, which is the name of the + GstValidateActionType registered with + #gst_validate_register_action_type + + + + The name of the action, set from the user in the scenario + + + + the #GstStructure defining the action + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A newly created #GstValidateAction + + + + + The scenario executing the action + + + + The action type + + + + The structure containing the action arguments + + + + Weather the action should be added to the scenario action list + + + + + + Retrieve the scenario from which @action is executed. + + + The scenario from which the action is being executed. + + + + + The action for which to retrieve the scenario + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get a time value for the @name parameter of an action. This +method should be called to retrieve and compute a timed value of a given +action. It will first try to retrieve the value as a double, +then get it as a string and execute any formula taking into account +the 'position' and 'duration' variables. And it will always convert that +value to a GstClockTime. + + + %TRUE if the time value could be retrieved/computed or %FALSE otherwise + + + + + The #GstValidateScenario from which to get a time + for a parameter of an action + + + + The action from which to retrieve the time for @name + parameter. + + + + The name of the parameter for which to retrieve a time + + + + The return value for the wanted time + + + + + + + + + The name of the parameter + + + + The description of the parameter + + + + Whether the parameter is mandatory for + a specific action type + + + + The types the parameter can take described as a + string. It can be precisely describing how the typing works + using '\n' between the various acceptable types. + NOTE: The types should end with `(GstClockTime)` if its final + type is a GstClockTime, this way it will be processed when preparing + the actions. + + + + The name of the variables that can be + used to compute the value of the parameter. + For example for the start value of a seek + action, we will accept to take 'duration' + which will be replace by the total duration + of the stream on which the action is executed. + + + + The default value of a parameter as a string, should be %NULL + for mandatory streams. + + + + + + + + + + + + + + + + GST_VALIDATE_EXECUTE_ACTION_ERROR: +GST_VALIDATE_EXECUTE_ACTION_OK: +GST_VALIDATE_EXECUTE_ACTION_ASYNC: +GST_VALIDATE_EXECUTE_ACTION_ERROR_REPORTED: +GST_VALIDATE_EXECUTE_ACTION_IN_PROGRESS: +GST_VALIDATE_EXECUTE_ACTION_NONE: +GST_VALIDATE_EXECUTE_ACTION_DONE: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the new action type to add + + + + The namespace of the implementer of the action type + + + + + + + The function to be called to execute the action + + + + The #GstValidateActionParameter usable as parameter of the type + + + + + + A description of the new type + + + + The flags of the action type + + + + + + + + + + + + + + + + + + + + No special flag + + + The action is a config + + + The action can be executed ASYNC + + + + + + + The action will be executed on 'element-added' + for a particular element type if no playback-time + is specified + + + The pipeline will need to be synchronized with the clock + for that action type to be used. + + + Do not consider the non execution of the action + as a fatal error. + + + The action can use the 'optional' keyword. Such action + instances will have the #GST_VALIDATE_ACTION_TYPE_NO_EXECUTION_NOT_FATAL + flag set and won't be considered as fatal if they fail. + + + + + The action can be used in config files even if it is not strictly a config + action (ie. it needs a scenario to run). + + + + + + + + + GStreamer Validate BinMonitor class. + +Class that wraps a #GstBin for Validate checks + + + + + + A #GstValidateBinMonitor + + + + + a #GstBin to run Validate on + + + + a #GstValidateRunner + + + + The parent of the new monitor + + + + + + + + The #GstValidateScenario being executed +under @monitor watch + + + + + A #GstValidateBinMonitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate BinMonitor object class. + + + parent + + + + + + + + + + GST_VALIDATE_FATAL_DEFAULT: +GST_VALIDATE_FATAL_ISSUES: +GST_VALIDATE_FATAL_WARNINGS: +GST_VALIDATE_FATAL_CRITICALS: +GST_VALIDATE_PRINT_ISSUES: +GST_VALIDATE_PRINT_WARNINGS: +GST_VALIDATE_PRINT_CRITICALS: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate ElementMonitor class. + +Class that wraps a #GstElement for Validate checks + + + + + + A #GstValidateElementMonitor + + + + + a #GstElement to run Validate on + + + + a #GstValidateRunner + + + + The parent of the new monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate ElementMonitor object class. + + + parent + + + + + + + + + + A function that executes a #GstValidateAction + + + a #GstValidateExecuteActionReturn + + + + + The #GstValidateScenario from which the @action is executed + + + + The #GstValidateAction being executed + + + + + + + + + + + + + + + + + + + + + + + + + + + The report will be completely ignored. + + + The report will be kept by the reporter, + but not reported to the runner. + + + The report will be kept by the reporter + and reported to the runner. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The newly created #GstValidateIssue + + + + + The ID of the issue, should be a GQuark + + + + A summary of the issue + + + + A more complete description of the issue + + + + The level at which the issue will be reported by default + + + + + + + + The newly created #GstValidateIssue + + + + + The ID of the issue, should be a GQuark + + + + A summary of the issue + + + + A more complete description of the issue + + + + The level at which the issue will be reported by default + + + + The flags to determine behaviour of the issue + + + + + + + + + + + + + + + + + Registers @issue in the issue type system + + + + + + + The #GstValidateIssue to register + + + + + + + + + + + + + + + + + + + + + + The issue if found or NULL otherwise + + + + + The issue id + + + + + + + GST_VALIDATE_ISSUE_FLAGS_NONE: No special flags for the issue type +GST_VALIDATE_ISSUE_FLAGS_FULL_DETAILS: Always show all occurrences of the issue in full details +GST_VALIDATE_ISSUE_FLAGS_NO_BACKTRACE: Do not generate backtrace for the issue type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate MediaInfo struct. + +Stores extracted information about a media + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate Monitor class. + +Class that wraps a #GObject for Validate checks + + + + Create a new monitor for @target and starts monitoring it. + + + The newly created #GstValidateMonitor + + + + + The #GstObject to create a #GstValidateMonitor for + + + + The #GstValidateRunner to use for the new monitor + + + + The parent of the new monitor + + + + + + + + The GstElement associated with @monitor + + + + + The monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The GstElement associated with @monitor + + + + + The monitor + + + + + + + + The name of the element associated with @monitor + + + + + The monitor + + + + + + + + The pipeline in which @monitor +target is in. + + + + + The monitor to get the pipeline from + + + + + + + + The target object + + + + + The monitor to get the target from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate Monitor object class. + + + parent + + + + + + + + + + + + + + + + + + + + The GstElement associated with @monitor + + + + + The monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a list of #GstValidateOverride + + + + + + + the override registry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate PadMonitor class. + +Class that wraps a #GstPad for Validate checks + + + + + + A #GstValidatePadMonitor + + + + + a #GstPad to run Validate on + + + + a #GstValidateRunner + + + + The parent of the new monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate PadMonitor object class. + + + parent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate PipelineMonitor class. + +Class that wraps a #GstPipeline for Validate checks + + + + + + A #GstValidatePipelineMonitor + + + + + a #GstPipeline to run Validate on + + + + a #GstValidateRunner + + + + The parent of the new monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate PipelineMonitor object class. + + + parent + + + + + + + + + + A function that prepares @action so it can be executed right after. +Most of the time this function is used to parse and set fields with +equations in the action structure. + + + %TRUE if the action could be prepared and is ready to be run + , %FALSE otherwise + + + + + The #GstValidateAction to prepare before execution + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + report dot file name + + + + + + + + + + + + report issue + + + + + + + + + + + + + + + + + + + + + + + report level + + + + + + + + + + + + report message + + + + + + + + + + + + report reporter + + + + + + + + + + + + report issue + + + + + + + + + + + + reporting level + + + + + + + + + + + + report timestamp + + + + + + + + + + + + report backtrace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reports a new issue in the GstValidate reporting system specifying @action +as failling action . + +You can also use #GST_VALIDATE_REPORT instead. + + + + + + + The source of the new report + + + + The action reporting the issue + + + + The #GstValidateIssueId of the issue + + + + The format of the message describing the issue in a printf + format followed by the parameters. + + + + Substitution arguments for @format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstPipeline + + + + + The reporter to get the pipeline from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets @name of @reporter + + + The name of the reporter + + + + + The reporter to get the name from + + + + + + + + The #GstPipeline + + + + + The reporter to get the pipeline from + + + + + + + + The #GstValidateReport + + + + + The reporter to get the report from + + + + The issue id to get the report from + + + + + + + + + + + + + + + + + Get the list of reports present in the reporter. + + + the list of +#GstValidateReport present in the reporter. +The caller should unref each report once it is done with them. + + + + + + + a #GstValidateReporter + + + + + + Get the number of reports present in the reporter. + + + the number of reports currently present in @reporter. + + + + + a #GstValidateReporter + + + + + + + + The runner + + + + + The reporter to get the runner from + + + + + + + + + + + + + + + + + + + + Remove all the #GstValidateReport from @reporter. This should be called +before unreffing the reporter to break cyclic references. + + + + + + + a #GstValidateReporter + + + + + + + + + + + + + + + + + + + + + + + Set @reporter has the 'source' of any g_log happening during the +execution. Usually the monitor of the first #GstPipeline is used +to handle g_logs. + +Basically this function is used in order to start tracking any +issue reported with g_log in the process into GstValidate report +in the GstValidate reporting system. + + + + + + + The #GstValidateReporter to set has the handler for g_log + + + + + + Sets @name on @reporter + + + + + + + The reporter to set the name on + + + + The name of the reporter + + + + + + + + + + + + + + + + + + + + + + + + + + parent interface type. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstPipeline + + + + + The reporter to get the pipeline from + + + + + + + + + + + + + Setting the reporting level allows to control the way issues are reported +when calling #gst_validate_runner_printf. + +The reporting level can be set through the "GST_VALIDATE_REPORTING_DETAILS" +environment variable, as a comma-separated list of (optional) object categories / names +and levels. No object category / name sets the global level. + +Examples: GST_VALIDATE_REPORTING_DETAILS=synthetic,h264parse:all + GST_VALIDATE_REPORTING_DETAILS=none,h264parse::sink_0:synthetic + + No reporting level known, +reporting will default to the global reporting level. + + + No debugging level specified or desired. Used to deactivate + debugging output. + + + Summary of the issues found, with no + details. + + + If set as the default level, similar + issues can be reported multiple times for different subchains. + If set as the level for a particular object (my_object:subchain), validate + will report the issues where the object is the first to report an issue for + a subchain. + + + If set as the default level, all the +distinct issues for all the monitors will be reported. +If set as the level for a particular object, all the distinct issues for this object +will be reported. +Note that if the same issue happens twice on the same object, up until this +level that issue is only reported once. + + + All the issues will be reported, even those +that repeat themselves inside the same object. This can be *very* verbose if +set globally. + + + Sythetic for not fatal issues and detailed for +others + + + + + + GStreamer Validate Runner class. + +Class that manages a Validate test run for some pipeline + + + Create a new #GstValidateRunner + + + A newly created #GstValidateRunner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The list of reports + + + + + + + The #GstValidateRunner + + + + + + Get the number of reports present in the runner: + + + The number of reports present in the runner. + + + + + The #GstValidateRunner to get the number of reports from + + + + + + Prints all the reports on the terminal or on wherever is set +in the `GST_VALIDATE_FILE` env variable. + + + 0 if no critical error has been found and 18 if a critical +error has been detected. That return value is usually to be used as +exit code of the application. + + + + + The #GstValidateRunner to print all the reports for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GStreamer Validate Runner object class. + + + parent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstValidateScenario or NULL + + + + + The #GstValidateRunner to use to report issues + + + + The pipeline to run the scenario on + + + + The name (or path) of the scenario to run + + + + + + Executes a seek event on the scenario's pipeline. You should always use +this method when you want to execute a seek inside a new action type +so that the scenario state is updated taking into account that seek. + +For more information you should have a look at #gst_event_new_seek + + + %TRUE if the seek could be executed, %FALSE otherwise + + + + + The #GstValidateScenario for which to execute a seek action + + + + The seek action to execute + + + + The playback rate of the seek + + + + The #GstFormat of the seek + + + + The #GstSeekFlags of the seek + + + + The #GstSeekType of the start value of the seek + + + + The start time of the seek + + + + The #GstSeekType of the stop value of the seek + + + + The stop time of the seek + + + + + + Get remaining actions from @scenario. + + + A list of #GstValidateAction. + + + + + + + The scenario to retrieve remaining actions for + + + + + + + + The #GstPipeline the scenario is running +against + + + + + The scenario to retrieve a pipeline from + + + + + + Get current target state from @scenario. + + + Current target state. + + + + + The scenario to retrieve the current target state for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Emitted when an action is done. + + + + + + The #GstValidateAction that is done running + + + + + + Emitted once all actions have been executed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines the level of verbosity of -validate (ie, printing on stdout). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Get a time value for the @name parameter of an action. This +method should be called to retrieve and compute a timed value of a given +action. It will first try to retrieve the value as a double, +then get it as a string and execute any formula taking into account +the 'position' and 'duration' variables. And it will always convert that +value to a GstClockTime. + + + %TRUE if the time value could be retrieved/computed or %FALSE otherwise + + + + + The #GstValidateScenario from which to get a time + for a parameter of an action + + + + The action from which to retrieve the time for @name + parameter. + + + + The name of the parameter for which to retrieve a time + + + + The return value for the wanted time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if @element matches one of the 'target-element-name', +'target-element-klass' or 'target-element-factory-name' defined in @s. + + + %TRUE if it matches, %FALSE otherwise or if @s doesn't contain any +target-element field. + + + + + a #GstElement to check + + + + a #GstStructure to use for matching + + + + + + + + + + + + + + + + + + + + + + + Executes @action + + + + + + + The #GstValidateActionType to execute + + + + The #GstValidateAction to execute + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes GstValidate. Call this before any usage of GstValidate. +You should take care of initializing GStreamer before calling this +function. + + + + + + + + + + + + + + + + + + + + + The issue if found or NULL otherwise + + + + + The issue id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return the configuration specific to @plugin, or the "core" one if @plugin +is #NULL + + + a list of #GstStructure + + + + + + + a #GstPlugin, or #NULL + + + + + + Print @message to the GstValidate logging system + + + + + + + The source object to log + + + + The message to print out in the GstValidate logging system + + + + + + Prints the action types details wanted in @wanted_types + + + True if all types could be printed + + + + + (optional): List of types to be printed + + + + + + Length of @wanted_types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Register a new action type to the action type system. If the action type already +exists, it will be overridden by the new definition + + + The newly created action type or the already registered action type +if it had a higher rank + + + + + The name of the new action type to add + + + + The namespace of the implementer of the action type. + That should always be the name of the GstPlugin as + retrieved with #gst_plugin_get_name when the action type + is registered inside a plugin. + + + + The function to be called to execute the action + + + + The #GstValidateActionParameter usable as parameter of the type + + + + + + A description of the new type + + + + The #GstValidateActionTypeFlags to set on the new action type + + + + + + + + The newly created action type or the already registered action type +if it had a higher rank + + + + + The #GstPlugin that register the action type, + or NULL for a static element. + + + + The name of the new action type to add + + + + The ranking of that implementation of the action type called + @type_name. If an action type has been registered with the same + name with a higher rank, the new implementation will not be used, + and the already registered action type is returned. + If the already registered implementation has a lower rank, the + new implementation will be used and returned. + + + + The function to be called to execute the action + + + + The #GstValidateActionParameter usable as parameter of the type + + + + + + A description of the new type + + + + The #GstValidateActionTypeFlags to be set on the new action type + + + + + + + + + + + + + + + + + + + + + + + + + + Reports a new issue in the GstValidate reporting system. + +You can also use #GST_VALIDATE_REPORT instead. + + + + + + + The source of the new report + + + + The #GstValidateIssueId of the issue + + + + The format of the message describing the issue in a printf + format followed by the parameters. + + + + Substitution arguments for @format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE on success %FALSE otherwise + + + + + The #GType of the enum we are trying to retrieve the enum value from + + + + The string representation of the value + + + + The value of the enum + + + + + + + + The flags set in @str_flags + + + + + The #GType of the flags we are trying to retrieve the flags from + + + + The string representation of the value + + + + + + Get @name from @structure as a #GstClockTime, it handles various types +for the value, if it is a double, it considers the value to be in second +it can be a gint, gint64 a guint, a gint64. + + + %TRUE in case of success, %FALSE otherwise. + + + + + A #GstStructure to retrieve @name as a GstClockTime. + + + + The name of the field containing a #GstClockTime + + + + The clocktime contained in @structure + + + + + + + + An array of strings from the GstValueList defined in @fieldname + + + + + + + A GstStructure + + + + A fieldname containing a GstValueList or is not defined + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/girs/GstVideo-1.0.gir b/girs/GstVideo-1.0.gir new file mode 100644 index 0000000000..64b8c395db --- /dev/null +++ b/girs/GstVideo-1.0.gir @@ -0,0 +1,19238 @@ + + + + + + + + + + + + + A bufferpool option to enable extra padding. When a bufferpool supports this +option, gst_buffer_pool_config_set_video_alignment() can be called. + +When this option is enabled on the bufferpool, +#GST_BUFFER_POOL_OPTION_VIDEO_META should also be enabled. + + + + + An option that can be activated on a bufferpool to request gl texture upload +meta on buffers from the pool. + +When this option is enabled on the bufferpool, +@GST_BUFFER_POOL_OPTION_VIDEO_META should also be enabled. + + + + + An option that can be activated on bufferpool to request video metadata +on buffers from the pool. + + + + + 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). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This interface is implemented by elements which can perform some color +balance operation on video frames they process. For example, modifying +the brightness, contrast, hue or saturation. + +Example elements are 'xvimagesink' and 'colorbalance' + + + Get the #GstColorBalanceType of this implementation. + + + A the #GstColorBalanceType. + + + + + The #GstColorBalance implementation + + + + + + Retrieve the current value of the indicated channel, between min_value +and max_value. + +See Also: The #GstColorBalanceChannel.min_value and + #GstColorBalanceChannel.max_value members of the + #GstColorBalanceChannel object. + + + The current value of the channel. + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + + + Retrieve a list of the available channels. + + + A + GList containing pointers to #GstColorBalanceChannel + objects. The list is owned by the #GstColorBalance + instance and must not be freed. + + + + + + + A #GstColorBalance instance + + + + + + Sets the current value of the channel to the passed value, which must +be between min_value and max_value. + +See Also: The #GstColorBalanceChannel.min_value and + #GstColorBalanceChannel.max_value members of the + #GstColorBalanceChannel object. + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + The new value for the channel. + + + + + + A helper function called by implementations of the GstColorBalance +interface. It fires the #GstColorBalance::value-changed signal on the +instance, and the #GstColorBalanceChannel::value-changed signal on the +channel object. + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel whose value has changed + + + + The new value of the channel + + + + + + Get the #GstColorBalanceType of this implementation. + + + A the #GstColorBalanceType. + + + + + The #GstColorBalance implementation + + + + + + Retrieve the current value of the indicated channel, between min_value +and max_value. + +See Also: The #GstColorBalanceChannel.min_value and + #GstColorBalanceChannel.max_value members of the + #GstColorBalanceChannel object. + + + The current value of the channel. + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + + + Retrieve a list of the available channels. + + + A + GList containing pointers to #GstColorBalanceChannel + objects. The list is owned by the #GstColorBalance + instance and must not be freed. + + + + + + + A #GstColorBalance instance + + + + + + Sets the current value of the channel to the passed value, which must +be between min_value and max_value. + +See Also: The #GstColorBalanceChannel.min_value and + #GstColorBalanceChannel.max_value members of the + #GstColorBalanceChannel object. + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + The new value for the channel. + + + + + + A helper function called by implementations of the GstColorBalance +interface. It fires the #GstColorBalance::value-changed signal on the +instance, and the #GstColorBalanceChannel::value-changed signal on the +channel object. + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel whose value has changed + + + + The new value of the channel + + + + + + Fired when the value of the indicated channel has changed. + + + + + + The #GstColorBalanceChannel + + + + The new value + + + + + + + The #GstColorBalanceChannel object represents a parameter +for modifying the color balance implemented by an element providing the +#GstColorBalance interface. For example, Hue or Saturation. + + + + + + + + + + + + + + + + + + + + A string containing a descriptive name for this channel + + + + The minimum valid value for this channel. + + + + The maximum valid value for this channel. + + + + + + + + + Fired when the value of the indicated channel has changed. + + + + + + The new value + + + + + + + Color-balance channel class. + + + the parent class + + + + + + + + + + + + + + + + + + + + + + + + + + Color-balance interface. + + + the parent interface + + + + + + + A + GList containing pointers to #GstColorBalanceChannel + objects. The list is owned by the #GstColorBalance + instance and must not be freed. + + + + + + + A #GstColorBalance instance + + + + + + + + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + The new value for the channel. + + + + + + + + + + The current value of the channel. + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel instance + + + + + + + + + + A the #GstColorBalanceType. + + + + + The #GstColorBalance implementation + + + + + + + + + + + + + + A #GstColorBalance instance + + + + A #GstColorBalanceChannel whose value has changed + + + + The new value of the channel + + + + + + + + + + + + + An enumeration indicating whether an element implements color balancing +operations in software or in dedicated hardware. In general, dedicated +hardware implementations (such as those provided by xvimagesink) are +preferred. + + Color balance is implemented with dedicated + hardware. + + + Color balance is implemented via software + processing. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This metadata stays relevant as long as video colorspace is unchanged. + + + + + This metadata stays relevant as long as video orientation is unchanged. + + + + + This metadata stays relevant as long as video size is unchanged. + + + + + This metadata is relevant for video streams. + + + + + + + + + + + + + + + + + + + The Navigation interface is used for creating and injecting navigation +related events such as mouse button presses, cursor motion and key presses. +The associated library also provides methods for parsing received events, and +for sending and receiving navigation related bus events. One main usecase is +DVD menu navigation. + +The main parts of the API are: + +* The GstNavigation interface, implemented by elements which provide an + application with the ability to create and inject navigation events into + the pipeline. +* GstNavigation event handling API. GstNavigation events are created in + response to calls on a GstNavigation interface implementation, and sent in + the pipeline. Upstream elements can use the navigation event API functions + to parse the contents of received messages. + +* GstNavigation message handling API. GstNavigation messages may be sent on + the message bus to inform applications of navigation related changes in the + pipeline, such as the mouse moving over a clickable region, or the set of + available angles changing. + +The GstNavigation message functions provide functions for creating and +parsing custom bus messages for signaling GstNavigation changes. + + + Try to retrieve x and y coordinates of a #GstNavigation event. + + + A boolean indicating success. + + + + + The #GstEvent to inspect. + + + + Pointer to a gdouble to receive the x coordinate of the + navigation event. + + + + Pointer to a gdouble to receive the y coordinate of the + navigation event. + + + + + + Inspect a #GstEvent and return the #GstNavigationEventType of the event, or +#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event. + + + + + + + A #GstEvent to inspect. + + + + + + Create a new navigation event given navigation command.. + + + a new #GstEvent + + + + + The navigation command to use. + + + + + + Create a new navigation event for the given key press. + + + a new #GstEvent + + + + + A string identifying the key press. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key release. + + + a new #GstEvent + + + + + A string identifying the released key. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key mouse button press. + + + a new #GstEvent + + + + + The number of the pressed mouse button. + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key mouse button release. + + + a new #GstEvent + + + + + The number of the released mouse button. + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the new mouse location. + + + a new #GstEvent + + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the mouse scroll. + + + a new #GstEvent + + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + The x component of the scroll movement. + + + + The y component of the scroll movement. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event signalling that all currently active touch +points are cancelled and should be discarded. For example, under Wayland +this event might be sent when a swipe passes the threshold to be recognized +as a gesture by the compositor. + + + a new #GstEvent + + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for an added touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must stay + unique to this touch point at least until an up event is sent for + the same identifier, or all touch points are cancelled. + + + + The x coordinate of the new touch point. + + + + The y coordinate of the new touch point. + + + + Pressure data of the touch point, from 0.0 to 1.0, or NaN if no + data is available. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event signalling the end of a touch frame. Touch +frames signal that all previous down, motion and up events not followed by +another touch frame event already should be considered simultaneous. + + + a new #GstEvent + + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for a moved touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must + correlate to exactly one previous touch_start event. + + + + The x coordinate of the touch point. + + + + The y coordinate of the touch point. + + + + Pressure data of the touch point, from 0.0 to 1.0, or NaN if no + data is available. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for a removed touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must + correlate to exactly one previous down event, but can be reused + after sending this event. + + + + The x coordinate of the touch point. + + + + The y coordinate of the touch point. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Inspect a #GstNavigation command event and retrieve the enum value of the +associated command. + + + TRUE if the navigation command could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to GstNavigationCommand to receive the + type of the navigation event. + + + + + + Note: Modifier keys (as defined in #GstNavigationModifierType) +[press](GST_NAVIGATION_EVENT_KEY_PRESS) and +[release](GST_NAVIGATION_KEY_PRESS) events are generated even if those states are +present on all other related events + + + + + + + A #GstEvent to inspect. + + + + A pointer to a location to receive + the string identifying the key press. The returned string is owned by the + event, and valid only until the event is unreffed. + + + + + + + + TRUE if the event is a #GstNavigation event with associated +modifiers state, otherwise FALSE. + + + + + The #GstEvent to modify. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Retrieve the details of either a #GstNavigation mouse button press event or +a mouse button release event. Determine which type the event is using +gst_navigation_event_get_type() to retrieve the #GstNavigationEventType. + + + TRUE if the button number and both coordinates could be extracted, + otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a gint that will receive the button + number associated with the event. + + + + Pointer to a gdouble to receive the x coordinate of the + mouse button event. + + + + Pointer to a gdouble to receive the y coordinate of the + mouse button event. + + + + + + Inspect a #GstNavigation mouse movement event and extract the coordinates +of the event. + + + TRUE if both 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. + + + + + + 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. + + + + + + Retrieve the details of a #GstNavigation touch-down or touch-motion event. +Determine which type the event is using gst_navigation_event_get_type() +to retrieve the #GstNavigationEventType. + + + TRUE if all details could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a guint that will receive the + identifier unique to this touch point. + + + + Pointer to a gdouble that will receive the x + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the y + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the + force of the touch event, in the range from 0.0 to 1.0. If pressure + data is not available, NaN will be set instead. + + + + + + Retrieve the details of a #GstNavigation touch-up event. + + + TRUE if all details could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a guint that will receive the + identifier unique to this touch point. + + + + Pointer to a gdouble that will receive the x + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the y + coordinate of the touch event. + + + + + + Try to set x and y coordinates on a #GstNavigation event. The event must +be writable. + + + A boolean indicating success. + + + + + The #GstEvent to modify. + + + + The x coordinate to set. + + + + The y coordinate to set. + + + + + + Check a bus message to see if it is a #GstNavigation event, and return +the #GstNavigationMessageType identifying the type of the message if so. + + + The type of the #GstMessage, or +#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation +notification. + + + + + A #GstMessage to inspect. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application +that the current angle, or current number of angles available in a +multiangle video has changed. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + The currently selected angle. + + + + The number of viewing angles now available. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_EVENT. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + A navigation #GstEvent + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_MOUSE_OVER. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + %TRUE if the mouse has entered a clickable area of the display. +%FALSE if it over a non-clickable area. + + + + + + Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED +and extract the @cur_angle and @n_angles parameters. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + A pointer to a #guint to receive the new + current angle number, or NULL + + + + A pointer to a #guint to receive the new angle + count, or NULL. + + + + + + Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_EVENT +and extract contained #GstEvent. The caller must unref the @event when done +with it. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + a pointer to a #GstEvent to receive + the contained navigation event. + + + + + + Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER +and extract the active/inactive flag. If the mouse over event is marked +active, it indicates that the mouse is over a clickable area. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + A pointer to a gboolean to receive the + active/inactive state, or NULL. + + + + + + Inspect a #GstQuery and return the #GstNavigationQueryType associated with +it if it is a #GstNavigation query. + + + The #GstNavigationQueryType of the query, or +#GST_NAVIGATION_QUERY_INVALID + + + + + The query to inspect + + + + + + Create a new #GstNavigation angles query. When executed, it will +query the pipeline for the set of currently available angles, which may be +greater than one in a multiangle video. + + + The new query. + + + + + Create a new #GstNavigation commands query. When executed, it will +query the pipeline for the set of currently available commands. + + + The new query. + + + + + Parse the current angle number in the #GstNavigation angles @query into the +#guint pointed to by the @cur_angle variable, and the number of available +angles into the #guint pointed to by the @n_angles variable. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + Pointer to a #guint into which to store the + currently selected angle value from the query, or NULL + + + + Pointer to a #guint into which to store the + number of angles value from the query, or NULL + + + + + + Parse the number of commands in the #GstNavigation commands @query. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + the number of commands in this query. + + + + + + Parse the #GstNavigation command query and retrieve the @nth command from +it into @cmd. If the list contains less elements than @nth, @cmd will be +set to #GST_NAVIGATION_COMMAND_INVALID. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + the nth command to retrieve. + + + + a pointer to store the nth command into. + + + + + + Set the #GstNavigation angles query result field in @query. + + + + + + + a #GstQuery + + + + the current viewing angle to set. + + + + the number of viewing angles to set. + + + + + + Set the #GstNavigation command query result fields in @query. The number +of commands passed must be equal to @n_commands. + + + + + + + a #GstQuery + + + + the number of commands to set. + + + + A list of @GstNavigationCommand values, @n_cmds entries long. + + + + + + Set the #GstNavigation command query result fields in @query. The number +of commands passed must be equal to @n_commands. + + + + + + + a #GstQuery + + + + the number of commands to set. + + + + An array containing @n_cmds + @GstNavigationCommand values. + + + + + + + + sending a navigation event. + Use #GstNavigationInterface.send_event_simple() instead. + + + + + + + + + + + + + + + Sends an event to the navigation interface. + + + + + + + The navigation interface instance + + + + The event to send + + + + + + Sends the indicated command to the navigation interface. + + + + + + + The navigation interface instance + + + + The command to issue + + + + + + + + + + + + + + + + + + + + Sends an event to the navigation interface. + + + + + + + The navigation interface instance + + + + The event to send + + + + + + + + + + + + The navigation interface instance + + + + The type of the key event. Recognised values are "key-press" and +"key-release" + + + + Character representation of the key. This is typically as produced +by XKeysymToString. + + + + + + Sends a mouse 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 type of mouse event, as a text string. Recognised values are +"mouse-button-press", "mouse-button-release" and "mouse-move". + + + + The button number of the button being pressed or released. Pass 0 +for mouse-move events. + + + + The x coordinate of the mouse event. + + + + The y coordinate of the mouse event. + + + + + + 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 +#GstNavigation interface. The available commands can be queried via +the gst_navigation_query_new_commands() query. + +For convenience in handling DVD navigation, the MENU commands are aliased as: + GST_NAVIGATION_COMMAND_DVD_MENU = @GST_NAVIGATION_COMMAND_MENU1 + GST_NAVIGATION_COMMAND_DVD_TITLE_MENU = @GST_NAVIGATION_COMMAND_MENU2 + GST_NAVIGATION_COMMAND_DVD_ROOT_MENU = @GST_NAVIGATION_COMMAND_MENU3 + GST_NAVIGATION_COMMAND_DVD_SUBPICTURE_MENU = @GST_NAVIGATION_COMMAND_MENU4 + GST_NAVIGATION_COMMAND_DVD_AUDIO_MENU = @GST_NAVIGATION_COMMAND_MENU5 + GST_NAVIGATION_COMMAND_DVD_ANGLE_MENU = @GST_NAVIGATION_COMMAND_MENU6 + GST_NAVIGATION_COMMAND_DVD_CHAPTER_MENU = @GST_NAVIGATION_COMMAND_MENU7 + + An invalid command entry + + + Execute navigation menu command 1. For DVD, +this enters the DVD root menu, or exits back to the title from the menu. + + + Execute navigation menu command 2. For DVD, +this jumps to the DVD title menu. + + + Execute navigation menu command 3. For DVD, +this jumps into the DVD root menu. + + + Execute navigation menu command 4. For DVD, +this jumps to the Subpicture menu. + + + Execute navigation menu command 5. For DVD, +the jumps to the audio menu. + + + Execute navigation menu command 6. For DVD, +this jumps to the angles menu. + + + Execute navigation menu command 7. For DVD, +this jumps to the chapter menu. + + + Select the next button to the left in a menu, +if such a button exists. + + + Select the next button to the right in a menu, +if such a button exists. + + + Select the button above the current one in a +menu, if such a button exists. + + + Select the button below the current one in a +menu, if such a button exists. + + + Activate (click) the currently selected +button in a menu, if such a button exists. + + + Switch to the previous angle in a +multiangle feature. + + + Switch to the next angle in a multiangle +feature. + + + + Enum values for the various events that an element implementing the +GstNavigation interface might send up the pipeline. Touch events have been +inspired by the libinput API, and have the same meaning here. + + Returned from +gst_navigation_event_get_type() when the passed event is not a navigation event. + + + A key press event. Use +gst_navigation_event_parse_key_event() to extract the details from the event. + + + A key release event. Use +gst_navigation_event_parse_key_event() to extract the details from the event. + + + A mouse button press event. Use +gst_navigation_event_parse_mouse_button_event() to extract the details from the +event. + + + A mouse button release event. Use +gst_navigation_event_parse_mouse_button_event() to extract the details from the +event. + + + A mouse movement event. Use +gst_navigation_event_parse_mouse_move_event() to extract the details from the +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. (Since: 1.18) + + + An event describing a new touch point, +which will be assigned an identifier that is unique to it for the duration +of its movement on the screen. Use gst_navigation_event_parse_touch_event() +to extract the details from the event. (Since: 1.22) + + + An event describing the movement of an +active touch point across the screen. Use +gst_navigation_event_parse_touch_event() to extract the details from the +event. (Since: 1.22) + + + An event describing a removed touch point. +After this event, its identifier may be reused for any new touch points. Use +gst_navigation_event_parse_touch_up_event() to extract the details from the +event. (Since: 1.22) + + + An event signaling the end of a sequence +of simultaneous touch events. (Since: 1.22) + + + An event cancelling all currently active +touch points. (Since: 1.22) + + + + Navigation interface. + + + the parent interface + + + + + + + + + + + + + + + + + + + + + + + + + + + The navigation interface instance + + + + The event to send + + + + + + + + A set of notifications that may be received on the bus when navigation +related status changes. + + Returned from +gst_navigation_message_get_type() when the passed message is not a +navigation message. + + + Sent when the mouse moves over or leaves a +clickable region of the output, such as a DVD menu button. + + + Sent when the set of available commands +changes and should re-queried by interested applications. + + + Sent when display angles in a multi-angle +feature (such as a multiangle DVD) change - either angles have appeared or +disappeared. + + + Sent when a navigation event was not handled +by any element in the pipeline (Since: 1.6) + + + + Flags to indicate the state of modifier keys and mouse buttons +in events. + +Typical modifier keys are Shift, Control, Meta, Super, Hyper, Alt, Compose, +Apple, CapsLock or ShiftLock. + + + + the Shift key. + + + + + the Control key. + + + the third modifier key + + + the fourth modifier key + + + the fifth modifier key + + + the sixth modifier key + + + the seventh modifier key + + + the first mouse button (usually the left button). + + + the second mouse button (usually the right button). + + + the third mouse button (usually the mouse wheel button or middle button). + + + the fourth mouse button (typically the "Back" button). + + + the fifth mouse button (typically the "forward" button). + + + the Super modifier + + + the Hyper modifier + + + the Meta modifier + + + A mask covering all entries in #GdkModifierType. + + + the Meta modifier + + + + Types of navigation interface queries. + + invalid query + + + command query + + + viewing angle query + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the #GstVideoAncillaryDID16 of the ancillary data. + + + + a #GstVideoAncillary + + + + + 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 + + + + + + + + + + + + + + + + + + + Generic caps string for video, for use in pad templates. + + + + string format that describes the pixel layout, as string + (e.g. "I420", "RGB", "YV12", "YUY2", "AYUV", etc.) + + + + + Generic caps string for video, for use in pad templates. + + + + Requires caps features as a string, e.g. + "memory:SystemMemory". + + + string format that describes the pixel layout, as string + (e.g. "I420", "RGB", "YV12", "YUY2", "AYUV", etc.) + + + + + The entire set of flags for the @frame + + + + a #GstVideoCodecFrame + + + + + Checks whether the given @flag is set + + + + a #GstVideoCodecFrame + + + a flag to check for + + + + + This macro sets the given bits + + + + a #GstVideoCodecFrame + + + Flag to set, can be any number of bits in guint32. + + + + + This macro usets the given bits. + + + + a #GstVideoCodecFrame + + + Flag to unset + + + + + Tests if the buffer should only be decoded but not sent downstream. + + + + a #GstVideoCodecFrame + + + + + Tests if the frame must be encoded as a keyframe. Applies only to +frames provided to encoders. Decoders can safely ignore this field. + + + + a #GstVideoCodecFrame + + + + + Tests if encoder should output stream headers before outputting the +resulting encoded buffer for the given frame. + +Applies only to frames provided to encoders. Decoders can safely +ignore this field. + + + + a #GstVideoCodecFrame + + + + + Tests if the frame is a synchronization point (like a keyframe). + +Decoder implementations can use this to detect keyframes. + + + + a #GstVideoCodecFrame + + + + + Sets the buffer to not be sent downstream. + +Decoder implementation can use this if they have frames that +are not meant to be displayed. + +Encoder implementation can safely ignore this field. + + + + a #GstVideoCodecFrame + + + + + + + + + + + + + + + + + + + Sets the frame to be a synchronization point (like a keyframe). + +Encoder implementations should set this accordingly. + +Decoder implementing parsing features should set this when they +detect such a synchronization point. + + + + a #GstVideoCodecFrame + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #GstVideoAlphaMode, the alpha mode to use. +Default is #GST_VIDEO_ALPHA_MODE_COPY. + + + + + #G_TYPE_DOUBLE, the alpha color value to use. +Default to 1.0 + + + + + #G_TYPE_BOOLEAN, whether gst_video_converter_frame() will return immediately +without waiting for the conversion to complete. A subsequent +gst_video_converter_frame_finish() must be performed to ensure completion of the +conversion before subsequent use. Default %FALSE + + + + + #G_TYPE_UINT, the border color to use if #GST_VIDEO_CONVERTER_OPT_FILL_BORDER +is set to %TRUE. The color is in ARGB format. +Default 0xff000000 + + + + + #GstVideoChromaMode, set the chroma resample mode subsampled +formats. Default is #GST_VIDEO_CHROMA_MODE_FULL. + + + + + #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 + + + + + #G_TYPE_INT, height in the destination frame, default destination height + + + + + #G_TYPE_INT, width in the destination frame, default destination width + + + + + #G_TYPE_INT, x position in the destination frame, default 0 + + + + + #G_TYPE_INT, y position in the destination frame, default 0 + + + + + #GstVideoDitherMethod, The dither method to use when +changing bit depth. +Default is #GST_VIDEO_DITHER_BAYER. + + + + + #G_TYPE_UINT, The quantization amount to dither to. Components will be +quantized to multiples of this value. +Default is 1 + + + + + #G_TYPE_BOOLEAN, if the destination rectangle does not fill the complete +destination image, render a border with +#GST_VIDEO_CONVERTER_OPT_BORDER_ARGB. Otherwise the unusded pixels in the +destination are untouched. Default %TRUE. + + + + + #GstVideoGammaMode, set the gamma mode. +Default is #GST_VIDEO_GAMMA_MODE_NONE. + + + + + #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. + + + + + #GstVideoPrimariesMode, set the primaries conversion mode. +Default is #GST_VIDEO_PRIMARIES_MODE_NONE. + + + + + #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 + + + + + #G_TYPE_UINT, The number of taps for the resampler. +Default is 0: let the resampler choose a good value. + + + + + #G_TYPE_INT, source height to convert, default source height + + + + + #G_TYPE_INT, source width to convert, default source width + + + + + #G_TYPE_INT, source x position to start conversion, default 0 + + + + + #G_TYPE_INT, source y position to start conversion, default 0 + + + + + #G_TYPE_UINT, maximum number of threads to use. Default 1, 0 for the number +of cores. + + + + + + + + + + + + + + + + + + + + + + + + + + Utility function that video decoder elements can use in case they encountered +a data processing error that may be fatal for the current "data unit" but +need not prevent subsequent decoding. Such errors are counted and if there +are too many, as configured in the context's max_errors, the pipeline will +post an error message and the application will be requested to stop further +media processing. Otherwise, it is considered a "glitch" and only a warning +is logged. In either case, @ret is set to the proper value to +return to upstream/caller (indicating either GST_FLOW_ERROR or GST_FLOW_OK). + + + + the base video decoder element that generates the error + + + element defined weight of the error, added to error count + + + like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError) + + + error code defined for that domain (see #gstreamer-GstGError) + + + the message to display (format string and args enclosed in + parentheses) + + + debugging information for the message (format string and args + enclosed in parentheses) + + + variable to receive return value + + + + + + + + + + + + Gives the segment of the element. + + + + base decoder instance + + + + + Default maximum number of errors tolerated before signaling error. + + + + + Gives the segment of the element. + + + + base decoder instance + + + + + The name of the templates for the sink pad. + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + a #GstVideoDecoder + + + + + The name of the templates for the source pad. + + + + + Gives the pointer to the source #GstPad object of the element. + + + + a #GstVideoDecoder + + + + + Obtain a lock to protect the decoder function from concurrent access. + + + + video decoder instance + + + + + Release the lock that protects the decoder function from concurrent access. + + + + video decoder instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gives the segment of the element. + + + + base parse instance + + + + + Gives the segment of the element. + + + + base parse instance + + + + + The name of the templates for the sink pad. + + + + + Gives the pointer to the sink #GstPad object of the element. + + + + a #GstVideoEncoder + + + + + The name of the templates for the source pad. + + + + + Gives the pointer to the source #GstPad object of the element. + + + + a #GstVideoEncoder + + + + + Obtain a lock to protect the encoder function from concurrent access. + + + + video encoder instance + + + + + Release the lock that protects the encoder function from concurrent access. + + + + video encoder instance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of all video formats, for use in template caps strings. + +Formats are sorted by decreasing "quality", using these criteria by priority: + - number of components + - depth + - subsampling factor of the width + - subsampling factor of the height + - number of planes + - native endianness preferred + - pixel stride + - poffset + - prefer non-complex formats + - prefer YUV formats over RGB ones + - prefer I420 over YV12 + - format name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This macro checks if %GST_VIDEO_FORMAT_FLAG_SUBTILES is set. When this +flag is set, it means that the tile sizes must be scaled as per the +subsampling. + + + + a #GstVideoFormatInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tests that the given #GstVideoFormatInfo represents a valid un-encoded +format. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of planes. This is the number of planes the pixel layout is +organized in in memory. The number of planes can be less than the +number of components (e.g. Y,U,V,A or R, G, B, A) when multiple +components are packed into one plane. + +Examples: RGB/RGBx/RGBA: 1 plane, 3/3/4 components; +I420: 3 planes, 3 components; NV21/NV12: 2 planes, 3 components. + + + + a #GstVideoFormatInfo + + + + + + + + + + + + + + + + Plane number where the given component can be found. A plane may +contain data for multiple components. + + + + a #GstVideoFormatInfo + + + the component index + + + + + + + + + + + + + + pixel stride for the given component. This is the amount of bytes to the +pixel immediately to the right, so basically bytes from one pixel to the +next. When bits < 8, the stride is expressed in bits. + +Examples: for 24-bit RGB, the pixel stride would be 3 bytes, while it +would be 4 bytes for RGBx or ARGB, and 8 bytes for ARGB64 or AYUV64. +For planar formats such as I420 the pixel stride is usually 1. For +YUY2 it would be 2 bytes. + + + + a #GstVideoFormatInfo + + + the component index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Row stride in bytes, that is number of bytes from the first pixel component +of a row to the first pixel component in the next row. This might include +some row padding (memory not actually used for anything, to make sure the +beginning of the next row is aligned in a particular way). + + + + a #GstVideoFormatInfo + + + an array of strides + + + the component index + + + + + See #GstVideoTileInfo.height. + +Returns the tile height. + + + + a #GstVideoFormatInfo + + + the plane index + + + + + + + + + + + + + + + + + + + Provides the size in bytes of a tile in the specified @plane. This replaces +the width and height shift, which was limited to power of two dimensions. + + + + a #GstVideoFormatInfo + + + the plane index + + + + + See #GstVideoTileInfo.stride. + +Returns the stride of one tile, regardless of the internal details of the +tile (could be a complex system with subtile) the tiles size should alway +match the tile width multiplied by the tile stride. + + + + a #GstVideoFormatInfo + + + the plane index + + + + + See #GstVideoTileInfo.width. + +Return the width of one tile in pixels, zero if its not an integer. + + + + a #GstVideoFormatInfo + + + the plane index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The height of a field. It's the height of the full frame unless split-field +(alternate) interlacing is in use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + G_TYPE_DOUBLE, B parameter of the cubic filter. The B +parameter controls the bluriness. Values between 0.0 and +2.0 are accepted. 1/3 is the default. + +Below are some values of popular filters: + B C +Hermite 0.0 0.0 +Spline 1.0 0.0 +Catmull-Rom 0.0 1/2 +Mitchell 1/3 1/3 +Robidoux 0.3782 0.3109 +Robidoux + Sharp 0.2620 0.3690 +Robidoux + Soft 0.6796 0.1602 + + + + + G_TYPE_DOUBLE, C parameter of the cubic filter. The C +parameter controls the Keys alpha value. Values between 0.0 and +2.0 are accepted. 1/3 is the default. + +See #GST_VIDEO_RESAMPLER_OPT_CUBIC_B for some more common values + + + + + G_TYPE_DOUBLE, specifies the size of filter envelope for +@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between +1.0 and 5.0. 2.0 is the default. + + + + + G_TYPE_INT, limits the maximum number of taps to use. +16 is the default. + + + + + G_TYPE_DOUBLE, specifies sharpening of the filter for +@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between +0.0 and 1.0. 0.0 is the default. + + + + + G_TYPE_DOUBLE, specifies sharpness of the filter for +@GST_VIDEO_RESAMPLER_METHOD_LANCZOS. values are clamped between +0.5 and 1.5. 1.0 is the default. + + + + + #GstVideoDitherMethod, The dither method to use for propagating +quatization errors. + + + + + + + + + + + + Cast @obj to a #GstVideoSink without runtime type check. + + + + a #GstVideoSink or derived object + + + + + + + + + + + + + + + + + + + + + + + + + + Get the sink #GstPad of @obj. + + + + a #GstVideoSink + + + + + + + + + + + + + + + + + + + + + + + + + use this macro to create new tile modes. + + + + the mode number to create + + + the tile mode type + + + + + Encode the number of tile in X and Y into the stride. + + + + number of tiles in X + + + number of tiles in Y + + + + + Check if @mode is an indexed tile type + + + + a tile mode + + + + + Get the tile mode type of @mode + + + + the tile mode + + + + + + + + + + + + + Extract the number of tiles in X from the stride value. + + + + plane stride + + + + + + + + + Extract the number of tiles in Y from the stride value. + + + + plane stride + + + + + + + + + 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: + + 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. + + + + + + + + + + + + + + + + + + Extra buffer metadata for performing an affine transformation using a 4x4 +matrix. The transformation matrix can be composed with +gst_video_affine_transformation_meta_apply_matrix(). + +The vertices operated on are all in the range 0 to 1, not in +Normalized Device Coordinates (-1 to +1). Transforming points in this space +are assumed to have an origin at (0.5, 0.5, 0.5) in a left-handed coordinate +system with the x-axis moving horizontally (positive values to the right), +the y-axis moving vertically (positive values up the screen) and the z-axis +perpendicular to the screen (positive values into the screen). + + + parent #GstMeta + + + + the column-major 4x4 transformation matrix + + + + + + Apply a transformation using the given 4x4 transformation matrix. +Performs the multiplication, meta->matrix X matrix. + + + + + + + a #GstVideoAffineTransformationMeta + + + + a 4x4 transformation matrix to be applied + + + + + + + + + + + + + + + VideoAggregator can accept AYUV, ARGB and BGRA video streams. For each of the requested +sink pads it will compare the incoming geometry and framerate to define the +output parameters. Indeed output video frames will have the geometry of the +biggest incoming video stream and the framerate of the fastest incoming one. + +VideoAggregator will do colorspace conversion. + +Zorder for each input stream can be configured on the +#GstVideoAggregatorPad. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The returned #GstTaskPool is used internally for performing parallel +video format conversions/scaling/etc during the +#GstVideoAggregatorPadClass::prepare_frame_start() process. +Subclasses can add their own operation to perform using the returned +#GstTaskPool during #GstVideoAggregatorClass::aggregate_frames(). + + + the #GstTaskPool that can be used by subclasses + for performing concurrent operations + + + + + the #GstVideoAggregator + + + + + + Causes the element to aggregate on a timeout even when no live source is +connected to its sinks. See #GstAggregator:min-upstream-latency for a +companion property: in the vast majority of cases where you plan to plug in +live sources with a non-zero latency, you should set it to a non-zero value. + + + + + + + The #GstVideoInfo representing the currently set +srcpad caps. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An implementation of GstPad that can be used with #GstVideoAggregator. + +See #GstVideoAggregator for more details. + + + + + + + + + + + + + + + + + + + + Requests the pad to check and update the converter before the next usage to +update for any changes that have happened. + + + + + + + a #GstVideoAggregatorPad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Finish preparing @prepared_frame. + +If overriden, `prepare_frame_start` must also be overriden. + + + + + + + the #GstVideoAggregatorPad + + + + the parent #GstVideoAggregator + + + + the #GstVideoFrame to prepare into + + + + + + Begin preparing the frame from the pad buffer and sets it to prepared_frame. + +If overriden, `prepare_frame_finish` must also be overriden. + + + + + + + the #GstVideoAggregatorPad + + + + the parent #GstVideoAggregator + + + + the input #GstBuffer to prepare + + + + the #GstVideoFrame to prepare into + + + + + + + + + + + + + + + + + Returns the currently queued buffer that is going to be used +for the current output frame. + +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 #GstVideoAggregatorClass::aggregate_frames or #GstVideoAggregatorPadClass::prepare_frame +returns. + + + The currently queued buffer + + + + + a #GstVideoAggregatorPad + + + + + + Returns the currently prepared video frame that has to be aggregated into +the current output frame. + +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 #GstVideoAggregatorClass::aggregate_frames or #GstVideoAggregatorPadClass::prepare_frame +returns. + + + The currently prepared video frame + + + + + a #GstVideoAggregatorPad + + + + + + 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 #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 + + + + + a #GstVideoAggregatorPad + + + + + + Allows selecting that this pad requires an output format with alpha + + + + + + + a #GstVideoAggregatorPad + + + + %TRUE if this pad requires alpha output + + + + + + + + + + + + + + + + + + The #GstVideoInfo currently set on the pad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the #GstVideoAggregatorPad + + + + the parent #GstVideoAggregator + + + + the input #GstBuffer to prepare + + + + the #GstVideoFrame to prepare into + + + + + + + + + + + + + + the #GstVideoAggregatorPad + + + + the parent #GstVideoAggregator + + + + the #GstVideoFrame to prepare into + + + + + + + + + + + + + + + + An implementation of GstPad that can be used with #GstVideoAggregator. + +See #GstVideoAggregator for more details. + + + + + + + + + + + + + + + + + + + + + Extra alignment parameters for the memory of video buffers. This +structure is usually used to configure the bufferpool if it supports the +#GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. + + + extra pixels on the top + + + + extra pixels on the bottom + + + + extra pixels on the left side + + + + extra pixels on the right side + + + + array with extra alignment requirements for the strides + + + + + + Set @align to its default values with no padding and no alignment. + + + + + + + a #GstVideoAlignment + + + + + + + Different alpha modes. + + When input and output have alpha, it will be copied. + When the input has no alpha, alpha will be set to + #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE + + + set all alpha to + #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE + + + multiply all alpha with + #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE. + When the input format has no alpha but the output format has, the + alpha value will be set to #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE + + + + Video Ancillary data, according to SMPTE-291M specification. + +Note that the contents of the data are always stored as 8bit data (i.e. do not contain +the parity check bits). + + + The Data Identifier + + + + The Secondary Data Identifier (if type 2) or the Data + Block Number (if type 1) + + + + The amount of data (in bytes) in @data (max 255 bytes) + + + + The user data content of the Ancillary packet. + Does not contain the ADF, DID, SDID nor CS. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Some know types of Ancillary Data identifiers. + + CEA 708 Ancillary data according to SMPTE 334 + + + CEA 608 Ancillary data according to SMPTE 334 + + + 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 closed caption data, or video data - even encoded data. + +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 + interlace-mode, this flags specifies if the frame is + interlaced or progressive. + + + If the #GstBuffer is interlaced, then the first field + in the video frame is the top field. If unset, the + bottom field is first. + + + If the #GstBuffer is interlaced, then the first field + (as defined by the %GST_VIDEO_BUFFER_FLAG_TFF flag setting) + is repeated. + + + If the #GstBuffer is interlaced, then only the + first field (as defined by the %GST_VIDEO_BUFFER_FLAG_TFF + flag setting) is to be displayed (Since: 1.16). + + + The #GstBuffer contains one or more specific views, + 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 absence of the flag marks + mono buffers. + + + When conveying stereo/multiview content with + frame-by-frame methods, this flag marks the first buffer + in a bundle of frames that belong together. + + + 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). + Use GST_VIDEO_BUFFER_IS_TOP_FIELD() to check for this flag. + + + If the #GstBuffer is interlaced, then only the + first field (as defined by the %GST_VIDEO_BUFFER_FLAG_TFF + flag setting) is to be displayed (Since: 1.16). + + + 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). + 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 + + + + + + Create a new bufferpool that can allocate video frames. This bufferpool +supports all the video bufferpool options. + + + a new #GstBufferPool to allocate video frames + + + + + + + + + + + + + + + + + + + + + Extra buffer metadata providing Closed Caption. + + + parent #GstMeta + + + + The type of Closed Caption contained in the meta. + + + + The Closed Caption data. + + + + + + The size in bytes of @data + + + + + + + + + + + The various known types of Closed Caption (CC). + + Unknown type of CC + + + CEA-608 as byte pairs. Note that + this format is not recommended since is does not specify to + which field the caption comes from and therefore assumes + it comes from the first field (and that there is no information + on the second field). Use @GST_VIDEO_CAPTION_TYPE_CEA708_RAW + if you wish to store CEA-608 from two fields and prefix each byte pair + with 0xFC for the first field and 0xFD for the second field. + + + CEA-608 as byte triplets as defined + in SMPTE S334-1 Annex A. The second and third byte of the byte triplet + is the raw CEA608 data, the first byte is a bitfield: The top/7th bit is + 0 for the second field, 1 for the first field, bit 6 and 5 are 0 and + bits 4 to 0 are a 5 bit unsigned integer that represents the line + offset relative to the base-line of the original image format (line 9 + for 525-line field 1, line 272 for 525-line field 2, line 5 for + 625-line field 1 and line 318 for 625-line field 2). + + + CEA-708 as cc_data byte triplets. They + can also contain 608-in-708 and the first byte of each triplet has to + be inspected for detecting the type. + + + CEA-708 (and optionally CEA-608) in + a CDP (Caption Distribution Packet) defined by SMPTE S-334-2. + Contains the whole CDP (starting with 0x9669). + + + Parses fixed Closed Caption #GstCaps and returns the corresponding caption +type, or %GST_VIDEO_CAPTION_TYPE_UNKNOWN. + + + #GstVideoCaptionType. + + + + + Fixed #GstCaps to parse + + + + + + Creates new caps corresponding to @type. + + + new #GstCaps + + + + + #GstVideoCaptionType + + + + + + + Extra flags that influence the result from gst_video_chroma_resample_new(). + + no flags + + + the input is interlaced + + + + Different subsampling and upsampling methods + + Duplicates the chroma samples when + upsampling and drops when subsampling + + + Uses linear interpolation to reconstruct + missing chroma and averaging to subsample + + + + Different chroma downsampling and upsampling modes + + do full chroma up and down sampling + + + only perform chroma upsampling + + + only perform chroma downsampling + + + disable chroma resampling + + + + + + Perform resampling of @width chroma pixels in @lines. + + + + + + + a #GstVideoChromaResample + + + + pixel lines + + + + the number of pixels on one line + + + + + + Free @resample + + + + + + + a #GstVideoChromaResample + + + + + + The resampler must be fed @n_lines at a time. The first line should be +at @offset. + + + + + + + a #GstVideoChromaResample + + + + the number of input lines + + + + the first line + + + + + + Create a new resampler object for the given parameters. When @h_factor or +@v_factor is > 0, upsampling will be used, otherwise subsampling is +performed. + + + a new #GstVideoChromaResample that should be freed with + gst_video_chroma_resample_free() after usage. + + + + + a #GstVideoChromaMethod + + + + a #GstVideoChromaSite + + + + #GstVideoChromaFlags + + + + the #GstVideoFormat + + + + horizontal resampling factor + + + + vertical resampling factor + + + + + + + Various Chroma sitings. + + unknown cositing + + + no cositing + + + chroma is horizontally cosited + + + chroma is vertically cosited + + + choma samples are sited on alternate lines + + + chroma samples cosited with luma samples + + + jpeg style cositing, also for mpeg1 and mjpeg + + + mpeg2 style cositing + + + DV style cositing + + + Convert @s to a #GstVideoChromaSite + + + a #GstVideoChromaSite or %GST_VIDEO_CHROMA_SITE_UNKNOWN when @s does +not contain a valid chroma-site description. + + + + + a chromasite string + + + + + + Converts @site to its string representation. + + + a string representation of @site + or %NULL if @site contains undefined value or + is equal to %GST_VIDEO_CHROMA_SITE_UNKNOWN + + + + + a #GstVideoChromaSite + + + + + + + This meta is primarily for internal use in GStreamer elements to support +VP8/VP9 transparent video stored into WebM or Matroska containers, or +transparent static AV1 images. Nothing prevents you from using this meta +for custom purposes, but it generally can't be used to easily to add support +for alpha channels to CODECs or formats that don't support that out of the +box. + + + parent #GstMeta + + + + the encoded alpha frame + + + + + + #GstMetaInfo pointer that describes #GstVideoCodecAlphaMeta. + + + + + + A #GstVideoCodecFrame represents a video frame both in raw and +encoded form. + + + + + + + + + Unique identifier for the frame. Use this if you need + to get hold of the frame later (like when data is being decoded). + Typical usage in decoders is to set this on the opaque value provided + to the library and get back the frame using gst_video_decoder_get_frame() + + + + + + + + + + Decoding timestamp + + + + Presentation timestamp + + + + Duration of the frame + + + + Distance in frames from the last synchronization point. + + + + the input #GstBuffer that created this frame. The buffer is owned + by the frame and references to the frame instead of the buffer should + be kept. + + + + the output #GstBuffer. Implementations should set this either + directly, or by using the + gst_video_decoder_allocate_output_frame() or + gst_video_decoder_allocate_output_buffer() methods. The buffer is + owned by the frame and references to the frame instead of the + buffer should be kept. + + + + Running time when the frame will be used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets private data set on the frame by the subclass via +gst_video_codec_frame_set_user_data() previously. + + + The previously set user_data + + + + + a #GstVideoCodecFrame + + + + + + Increases the refcount of the given frame by one. + + + @buf + + + + + a #GstVideoCodecFrame + + + + + + Sets @user_data on the frame and the #GDestroyNotify that will be called when +the frame is freed. Allows to attach private data by the subclass to frames. + +If a @user_data was previously set, then the previous set @notify will be called +before the @user_data is replaced. + + + + + + + a #GstVideoCodecFrame + + + + private data + + + + a #GDestroyNotify + + + + + + Decreases the refcount of the frame. If the refcount reaches 0, the frame +will be freed. + + + + + + + a #GstVideoCodecFrame + + + + + + + Flags for #GstVideoCodecFrame + + is the frame only meant to be decoded + + + is the frame a synchronization point (keyframe) + + + should the output frame be made a keyframe + + + should the encoder output stream headers + + + the buffer data is corrupted (Since: 1.20) + + + + Structure representing the state of an incoming or outgoing video +stream for encoders and decoders. + +Decoders and encoders will receive such a state through their +respective @set_format vmethods. + +Decoders and encoders can set the downstream state, by using the +gst_video_decoder_set_output_state() or +gst_video_encoder_set_output_state() methods. + + + + + + The #GstVideoInfo describing the stream + + + + The #GstCaps used in the caps negotiation of the pad. + + + + a #GstBuffer corresponding to the + 'codec_data' field of a stream, or NULL. + + + + The #GstCaps for allocation query and pool + negotiation. Since: 1.10 + + + + Mastering display color volume information + (HDR metadata) for the stream. Since: 1.20 + + + + Content light level information for the stream. + Since: 1.20 + + + + + + + + + Increases the refcount of the given state by one. + + + @buf + + + + + a #GstVideoCodecState + + + + + + Decreases the refcount of the state. If the refcount reaches 0, the state +will be freed. + + + + + + + a #GstVideoCodecState + + + + + + + The color matrix is used to convert between Y'PbPr and +non-linear RGB (R'G'B') + + unknown matrix + + + identity matrix. Order of coefficients is +actually GBR, also IEC 61966-2-1 (sRGB) + + + FCC Title 47 Code of Federal Regulations 73.682 (a)(20) + + + ITU-R BT.709 color matrix, also ITU-R BT1361 +/ IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B + + + ITU-R BT.601 color matrix, also SMPTE170M / ITU-R BT1358 525 / ITU-R BT1700 NTSC + + + SMPTE 240M color matrix + + + 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. + +When: + +|[ + 0.0 <= [Y',R',G',B'] <= 1.0) + (-0.5 <= [Pb,Pr] <= 0.5) +]| + +the general conversion is given by: + +|[ + Y' = Kr*R' + (1-Kr-Kb)*G' + Kb*B' + Pb = (B'-Y')/(2*(1-Kb)) + Pr = (R'-Y')/(2*(1-Kr)) +]| + +and the other way around: + +|[ + R' = Y' + Cr*2*(1-Kr) + G' = Y' - Cb*2*(1-Kb)*Kb/(1-Kr-Kb) - Cr*2*(1-Kr)*Kr/(1-Kr-Kb) + B' = Y' + Cb*2*(1-Kb) +]| + + + TRUE if @matrix was a YUV color format and @Kr and @Kb contain valid + values. + + + + + a #GstVideoColorMatrix + + + + result red channel coefficient + + + + result blue channel coefficient + + + + + + 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 +the CIE XYZ colorspace. + + unknown color primaries + + + BT709 primaries, also ITU-R BT1361 / IEC +61966-2-4 / SMPTE RP177 Annex B + + + BT470M primaries, also FCC Title 47 Code +of Federal Regulations 73.682 (a)(20) + + + BT470BG primaries, also ITU-R BT601-6 +625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM + + + SMPTE170M primaries, also ITU-R +BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + + + SMPTE240M primaries + + + Generic film (colour filters using +Illuminant C) + + + ITU-R BT2020 primaries. Since: 1.6 + + + Adobe RGB primaries. Since: 1.8 + + + SMPTE ST 428 primaries (CIE 1931 +XYZ). Since: 1.16 + + + SMPTE RP 431 primaries (ST 431-2 +(2011) / DCI P3). Since: 1.16 + + + SMPTE EG 432 primaries (ST 432-1 +(2010) / P3 D65). Since: 1.16 + + + EBU 3213 primaries (JEDEC P22 +phosphors). 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. + + + a #GstVideoColorPrimariesInfo for @primaries. + + + + + a #GstVideoColorPrimaries + + + + + + Checks whether @primaries and @other are functionally equivalent + + + TRUE if @primaries and @other can be considered equivalent. + + + + + a #GstVideoColorPrimaries + + + + another #GstVideoColorPrimaries + + + + + + 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 +values can be used to construct a matrix to transform RGB to and from the +XYZ colorspace. + + + a #GstVideoColorPrimaries + + + + reference white x coordinate + + + + reference white y coordinate + + + + red x coordinate + + + + red y coordinate + + + + green x coordinate + + + + green y coordinate + + + + blue x coordinate + + + + blue y coordinate + + + + + Possible color range values. These constants are defined for 8 bit color +values and can be scaled for other bit depths. + + unknown range + + + [0..255] for 8 bit components + + + [16..235] for 8 bit components. Chroma has + [16..240] range. + + + 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 +range [0.0 .. 1.0]. + +The reverse operation (c[i] * scale[i]) + offset[i] can be used to convert +the component values in range [0.0 .. 1.0] back to their representation in +@info and @range. + + + + + + + a #GstVideoColorRange + + + + a #GstVideoFormatInfo + + + + output offsets + + + + + + output scale + + + + + + + + + Structure describing the color info. + + + the color range. This is the valid range for the samples. + It is used to convert the samples to Y'PbPr values. + + + + the color matrix. Used to convert between Y'PbPr and + non-linear RGB (R'G'B') + + + + the transfer function. used to convert between R'G'B' and RGB + + + + color primaries. used to convert between R'G'B' and CIE XYZ + + + + Parse the colorimetry string and update @cinfo with the parsed +values. + + + %TRUE if @color points to valid colorimetry info. + + + + + a #GstVideoColorimetry + + + + a colorimetry string + + + + + + Compare the 2 colorimetry sets for equality + + + %TRUE if @cinfo and @other are equal. + + + + + a #GstVideoColorimetry + + + + another #GstVideoColorimetry + + + + + + Compare the 2 colorimetry sets for functionally equality + + + %TRUE if @cinfo and @other are equivalent. + + + + + a #GstVideoColorimetry + + + + bitdepth of a format associated with @cinfo + + + + another #GstVideoColorimetry + + + + bitdepth of a format associated with @other + + + + + + Check if the colorimetry information in @info matches that of the +string @color. + + + %TRUE if @color conveys the same colorimetry info as the color +information in @info. + + + + + a #GstVideoInfo + + + + a colorimetry string + + + + + + Make a string representation of @cinfo. + + + a string representation of @cinfo +or %NULL if all the entries of @cinfo are unknown values. + + + + + a #GstVideoColorimetry + + + + + + + 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 + + + + + + Checks equality between @linfo and @other. + + + %TRUE if @linfo and @other are equal. + + + + + a #GstVideoContentLightLevel + + + + a #GstVideoContentLightLevel + + + + + + Convert @linfo to its string representation. + + + a string representation of @linfo. + + + + + a #GstVideoContentLightLevel + + + + + + + + + + + + + + + + + + + + + + + + + + Convert the pixels of @src into @dest using @convert. + +If #GST_VIDEO_CONVERTER_OPT_ASYNC_TASKS is %TRUE then this function will +return immediately and needs to be followed by a call to +gst_video_converter_frame_finish(). + + + + + + + a #GstVideoConverter + + + + a #GstVideoFrame + + + + a #GstVideoFrame + + + + + + Wait for a previous async conversion performed using +gst_video_converter_frame() to complete. + + + + + + + a #GstVideoConverter + + + + + + Free @convert + + + + + + + a #GstVideoConverter + + + + + + Get the current configuration of @convert. + + + a #GstStructure that remains valid for as long as @convert is valid + or until gst_video_converter_set_config() is called. + + + + + a #GstVideoConverter + + + + + + Retrieve the input format of @convert. + + + a #GstVideoInfo + + + + + a #GstVideoConverter + + + + + + Retrieve the output format of @convert. + + + a #GstVideoInfo + + + + + a #GstVideoConverter + + + + + + 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 +option and values. + + + %TRUE when @config could be set. + + + + + a #GstVideoConverter + + + + a #GstStructure + + + + + + Create a new converter object to convert between @in_info and @out_info +with @config. + +Returns (nullable): a #GstVideoConverter or %NULL if conversion is not possible. + + + + + + + a #GstVideoInfo + + + + a #GstVideoInfo + + + + a #GstStructure with configuration options + + + + + + Create a new converter object to convert between @in_info and @out_info +with @config. + +The optional @pool can be used to spawn threads, this is useful when +creating new converters rapidly, for example when updating cropping. + +Returns (nullable): a #GstVideoConverter or %NULL if conversion is not possible. + + + + + + + a #GstVideoInfo + + + + a #GstVideoInfo + + + + a #GstStructure with configuration options + + + + a #GstTaskPool to spawn threads from + + + + + + + Extra buffer metadata describing image cropping. + + + parent #GstMeta + + + + the horizontal offset + + + + the vertical offset + + + + the cropped width + + + + the cropped height + + + + + + + + + + + This base class is for video decoders turning encoded data into raw video +frames. + +The GstVideoDecoder base class and derived subclasses should cooperate as +follows: + +## Configuration + + * Initially, GstVideoDecoder calls @start when the decoder element + is activated, which allows the subclass to perform any global setup. + + * GstVideoDecoder calls @set_format to inform the subclass of caps + describing input video data that it is about to receive, including + possibly configuration data. + While unlikely, it might be called more than once, if changing input + parameters require reconfiguration. + + * Incoming data buffers are processed as needed, described in Data + Processing below. + + * GstVideoDecoder calls @stop at end of all processing. + +## 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'. + + * Each input frame is provided in turn to the subclass' @handle_frame + callback. + * When the subclass enables the subframe mode with `gst_video_decoder_set_subframe_mode`, + the base class will provide to the subclass the same input frame with + different input buffers to the subclass @handle_frame + callback. During this call, the subclass needs to take + ownership of the input_buffer as @GstVideoCodecFrame.input_buffer + will have been changed before the next subframe buffer is received. + The subclass will call `gst_video_decoder_have_last_subframe` + when a new input frame can be created by the base class. + Every subframe will share the same @GstVideoCodecFrame.output_buffer + to write the decoding result. The subclass is responsible to protect + its access. + + * If codec processing results in decoded data, the subclass should call + @gst_video_decoder_finish_frame to have decoded data pushed + downstream. In subframe mode + the subclass should call @gst_video_decoder_finish_subframe until the + last subframe where it should call @gst_video_decoder_finish_frame. + The subclass can detect the last subframe using GST_VIDEO_BUFFER_FLAG_MARKER + on buffers or using its own logic to collect the subframes. + In case of decoding failure, the subclass must call + @gst_video_decoder_drop_frame or @gst_video_decoder_drop_subframe, + 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 + + * The GstVideoDecoder class calls @stop to inform the subclass that data + parsing will be stopped. + +## Additional Notes + + * Seeking/Flushing + + * When the pipeline is seeked or otherwise flushed, the subclass is + informed via a call to its @reset callback, with the hard parameter + set to true. This indicates the subclass should drop any internal data + queues and timestamps and prepare for a fresh set of buffers to arrive + for parsing and decoding. + + * End Of Stream + + * At end-of-stream, the subclass @parse function may be called some final + times with the at_eos parameter set to true, indicating that the element + should not expect any more data to be arriving, and it should parse and + remaining frames and call gst_video_decoder_have_frame() if possible. + +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 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 +@gst_video_decoder_set_output_state + +The subclass is also responsible for providing (presentation) timestamps +(likely based on corresponding input ones). If that is not applicable +or possible, the base class provides limited framerate based interpolation. + +Similarly, the base class provides some limited (legacy) seeking support +if specifically requested by the subclass, as full-fledged support +should rather be left to upstream demuxer, parser or alike. This simple +approach caters for seeking and duration reporting using estimated input +bitrates. To enable it, a subclass should call +@gst_video_decoder_set_estimate_rate to enable handling of incoming +byte-streams. + +The base class provides some support for reverse playback, in particular +in case incoming data is not packetized or upstream does not provide +fragments on keyframe boundaries. However, the subclass should then be +prepared for the parsing and frame processing stage to occur separately +(in normal forward processing, the latter immediately follows the former), +The subclass also needs to ensure the parsing stage properly marks +keyframes, unless it knows the upstream elements will do so properly for +incoming data. + +The bare minimum that a functional subclass needs to implement is: + + * Provide pad templates + * Inform the base class of output caps via + @gst_video_decoder_set_output_state + + * Parse input data, if it is not considered packetized from upstream + Data will be provided to @parse which should invoke + @gst_video_decoder_add_to_frame and @gst_video_decoder_have_frame to + separate the data belonging to each video frame. + + * Accept data in @handle_frame and provide decoded results to + @gst_video_decoder_finish_frame, or call @gst_video_decoder_drop_frame. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstVideoDecoder + + + + The frame to handle + + + + + + + + %TRUE if the decoder should be drained afterwards. + + + + + The #GstVideoDecoder + + + + Timestamp of the missing data + + + + Duration of the missing data + + + + + + Negotiate with downstream elements to currently configured #GstVideoCodecState. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removes next @n_bytes of input data and adds it to currently parsed frame. + + + + + + + a #GstVideoDecoder + + + + the number of bytes to add + + + + + + Helper function that allocates a buffer to hold a video frame for @decoder's +current #GstVideoCodecState. + +You should use gst_video_decoder_allocate_output_frame() instead of this +function, if possible at all. + + + allocated buffer, or NULL if no buffer could be + allocated (e.g. when downstream is flushing or shutting down) + + + + + a #GstVideoDecoder + + + + + + Helper function that allocates a buffer to hold a video frame for @decoder's +current #GstVideoCodecState. Subclass should already have configured video +state and set src pad caps. + +The buffer allocated here is owned by the frame and you should only +keep references to the frame, not the buffer. + + + %GST_FLOW_OK if an output buffer could be allocated + + + + + a #GstVideoDecoder + + + + a #GstVideoCodecFrame + + + + + + Same as #gst_video_decoder_allocate_output_frame except it allows passing +#GstBufferPoolAcquireParams to the sub call gst_buffer_pool_acquire_buffer. + + + %GST_FLOW_OK if an output buffer could be allocated + + + + + a #GstVideoDecoder + + + + a #GstVideoCodecFrame + + + + a #GstBufferPoolAcquireParams + + + + + + Similar to gst_video_decoder_finish_frame(), but drops @frame in any +case and posts a QoS message with the frame's details on the bus. +In any case, the frame is considered finished and released. + + + a #GstFlowReturn, usually GST_FLOW_OK. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame to drop + + + + + + Drops input data. +The frame is not considered finished until the whole frame +is finished or dropped by the subclass. + + + a #GstFlowReturn, usually GST_FLOW_OK. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame + + + + + + @frame should have a valid decoded data buffer, whose metadata fields +are then appropriately set according to frame data and pushed downstream. +If no output data is provided, @frame is considered skipped. +In any case, the frame is considered finished and released. + +After calling this function the output buffer of the frame is to be +considered read-only. This function will also change the metadata +of the buffer. + + + a #GstFlowReturn resulting from sending data downstream + + + + + a #GstVideoDecoder + + + + a decoded #GstVideoCodecFrame + + + + + + Indicate that a subframe has been finished to be decoded +by the subclass. This method should be called for all subframes +except the last subframe where @gst_video_decoder_finish_frame +should be called instead. + + + a #GstFlowReturn, usually GST_FLOW_OK. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame + + + + + + Lets #GstVideoDecoder sub-classes to know the memory @allocator +used by the base class and its @params. + +Unref the @allocator after use it. + + + + + + + a #GstVideoDecoder + + + + the #GstAllocator +used + + + + the +#GstAllocationParams of @allocator + + + + + + + + the instance of the #GstBufferPool used +by the decoder; free it after use it + + + + + a #GstVideoDecoder + + + + + + + + currently configured byte to time conversion setting + + + + + a #GstVideoDecoder + + + + + + Get a pending unfinished #GstVideoCodecFrame + + + pending unfinished #GstVideoCodecFrame identified by @frame_number. + + + + + a #GstVideoDecoder + + + + system_frame_number of a frame + + + + + + Get all pending unfinished #GstVideoCodecFrame + + + pending unfinished #GstVideoCodecFrame. + + + + + + + a #GstVideoDecoder + + + + + + Queries the number of the last subframe received by +the decoder baseclass in the @frame. + + + the current subframe index received in subframe mode, 1 otherwise. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame to update + + + + + + Query the configured decoder latency. Results will be returned via +@min_latency and @max_latency. + + + + + + + a #GstVideoDecoder + + + + address of variable in which to store the + configured minimum latency, or %NULL + + + + address of variable in which to store the + configured mximum latency, or %NULL + + + + + + Determines maximum possible decoding time for @frame that will +allow it to decode and arrive in time (as determined by QoS events). +In particular, a negative result means decoding in time is no longer possible +and should therefore occur as soon/skippy as possible. + + + max decoding time. + + + + + a #GstVideoDecoder + + + + a #GstVideoCodecFrame + + + + + + + + currently configured decoder tolerated error count. + + + + + a #GstVideoDecoder + + + + + + Queries decoder required format handling. + + + %TRUE if required format handling is enabled. + + + + + a #GstVideoDecoder + + + + + + Queries if the decoder requires a sync point before it starts outputting +data in the beginning. + + + %TRUE if a sync point is required in the beginning. + + + + + a #GstVideoDecoder + + + + + + Get the oldest pending unfinished #GstVideoCodecFrame + + + oldest pending unfinished #GstVideoCodecFrame. + + + + + a #GstVideoDecoder + + + + + + Get the #GstVideoCodecState currently describing the output stream. + + + #GstVideoCodecState describing format of video data. + + + + + a #GstVideoDecoder + + + + + + Queries whether input data is considered packetized or not by the +base class. + + + TRUE if input data is considered packetized. + + + + + a #GstVideoDecoder + + + + + + Returns the number of bytes previously added to the current frame +by calling gst_video_decoder_add_to_frame(). + + + The number of bytes pending for the current frame + + + + + a #GstVideoDecoder + + + + + + Queries the number of subframes in the frame processed by +the decoder baseclass. + + + the current subframe processed received in subframe mode. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame to update + + + + + + + + The current QoS proportion. + + + + + a #GstVideoDecoder + current QoS proportion, or %NULL + + + + + + Queries whether input data is considered as subframes or not by the +base class. If FALSE, each input buffer will be considered as a full +frame. + + + TRUE if input data is considered as sub frames. + + + + + a #GstVideoDecoder + + + + + + Gathers all data collected for currently parsed frame, gathers corresponding +metadata and passes it along for further processing, i.e. @handle_frame. + + + a #GstFlowReturn + + + + + a #GstVideoDecoder + + + + + + Indicates that the last subframe has been processed by the decoder +in @frame. This will release the current frame in video decoder +allowing to receive new frames from upstream elements. This method +must be called in the subclass @handle_frame callback. + + + a #GstFlowReturn, usually GST_FLOW_OK. + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame to update + + + + + + Sets the audio decoder tags and how they should be merged with any +upstream stream tags. This will override any tags previously-set +with gst_audio_decoder_merge_tags(). + +Note that this is provided for convenience, and the subclass is +not required to use this and can still do tag handling on its own. + +MT safe. + + + + + + + a #GstVideoDecoder + + + + a #GstTagList to merge, or NULL to unset + previously-set tags + + + + the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE + + + + + + Negotiate with downstream elements to currently configured #GstVideoCodecState. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoDecoder + + + + + + Returns caps that express @caps (or sink template caps if @caps == NULL) +restricted to resolution/format/... combinations supported by downstream +elements. + + + a #GstCaps owned by caller + + + + + a #GstVideoDecoder + + + + initial caps + + + + filter caps + + + + + + Similar to gst_video_decoder_drop_frame(), but simply releases @frame +without any processing other than removing it from list of pending frames, +after which it is considered finished and released. + + + + + + + a #GstVideoDecoder + + + + the #GstVideoCodecFrame to release + + + + + + Allows the #GstVideoDecoder subclass to request from the base class that +a new sync should be requested from upstream, and that @frame was the frame +when the subclass noticed that a new sync point is required. A reason for +the subclass to do this could be missing reference frames, for example. + +The base class will then request a new sync point from upstream as long as +the time that passed since the last one is exceeding +#GstVideoDecoder:min-force-key-unit-interval. + +The subclass can signal via @flags how the frames until the next sync point +should be handled: + + * If %GST_VIDEO_DECODER_REQUEST_SYNC_POINT_DISCARD_INPUT is selected then + all following input frames until the next sync point are discarded. + This can be useful if the lack of a sync point will prevent all further + decoding and the decoder implementation is not very robust in handling + missing references frames. + * If %GST_VIDEO_DECODER_REQUEST_SYNC_POINT_CORRUPT_OUTPUT is selected + then all output frames following @frame are marked as corrupted via + %GST_BUFFER_FLAG_CORRUPTED. Corrupted frames can be automatically + dropped by the base class, see #GstVideoDecoder:discard-corrupted-frames. + Subclasses can manually mark frames as corrupted via %GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED + before calling gst_video_decoder_finish_frame(). + + + + + + + a #GstVideoDecoder + + + + a #GstVideoCodecFrame + + + + #GstVideoDecoderRequestSyncPointFlags + + + + + + Allows baseclass to perform byte to time estimated conversion. + + + + + + + a #GstVideoDecoder + + + + whether to enable byte to time conversion + + + + + + Same as #gst_video_decoder_set_output_state() but also allows you to also set +the interlacing mode. + + + the newly configured output state. + + + + + a #GstVideoDecoder + + + + a #GstVideoFormat + + + + A #GstVideoInterlaceMode + + + + The width in pixels + + + + The height in pixels + + + + An optional reference #GstVideoCodecState + + + + + + Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder latency +is. If the provided values changed from previously provided ones, this will +also post a LATENCY message on the bus so the pipeline can reconfigure its +global latency. + + + + + + + a #GstVideoDecoder + + + + minimum latency + + + + maximum latency + + + + + + Sets numbers of tolerated decoder errors, where a tolerated one is then only +warned about, but more than tolerated will lead to fatal error. You can set +-1 for never returning fatal errors. Default is set to +GST_VIDEO_DECODER_MAX_ERRORS. + +The '-1' option was added in 1.4 + + + + + + + a #GstVideoDecoder + + + + max tolerated errors + + + + + + Configures decoder format needs. If enabled, subclass needs to be +negotiated with format caps before it can process any data. It will then +never be handed any data before it has been configured. +Otherwise, it might be handed data without having been configured and +is then expected being able to do so either by default +or based on the input data. + + + + + + + a #GstVideoDecoder + + + + new state + + + + + + Configures whether the decoder requires a sync point before it starts +outputting data in the beginning. If enabled, the base class will discard +all non-sync point frames in the beginning and after a flush and does not +pass it to the subclass. + +If the first frame is not a sync point, the base class will request a sync +point via the force-key-unit event. + + + + + + + a #GstVideoDecoder + + + + new state + + + + + + Creates a new #GstVideoCodecState with the specified @fmt, @width and @height +as the output state for the decoder. +Any previously set output state on @decoder will be replaced by the newly +created one. + +If the subclass wishes to copy over existing fields (like pixel aspec ratio, +or framerate) from an existing #GstVideoCodecState, it can be provided as a +@reference. + +If the subclass wishes to override some fields from the output state (like +pixel-aspect-ratio or framerate) it can do so on the returned #GstVideoCodecState. + +The new output state will only take effect (set on pads and buffers) starting +from the next call to #gst_video_decoder_finish_frame(). + + + the newly configured output state. + + + + + a #GstVideoDecoder + + + + a #GstVideoFormat + + + + The width in pixels + + + + The height in pixels + + + + An optional reference #GstVideoCodecState + + + + + + Allows baseclass to consider input data as packetized or not. If the +input is packetized, then the @parse method will not be called. + + + + + + + a #GstVideoDecoder + + + + whether the input data should be considered as packetized. + + + + + + If this is set to TRUE, it informs the base class that the subclass +can receive the data at a granularity lower than one frame. + +Note that in this mode, the subclass has two options. It can either +require the presence of a GST_VIDEO_BUFFER_FLAG_MARKER to mark the +end of a frame. Or it can operate in such a way that it will decode +a single frame at a time. In this second case, every buffer that +arrives to the element is considered part of the same frame until +gst_video_decoder_finish_frame() is called. + +In either case, the same #GstVideoCodecFrame will be passed to the +GstVideoDecoderClass:handle_frame vmethod repeatedly with a +different GstVideoCodecFrame:input_buffer every time until the end of the +frame has been signaled using either method. +This method must be called during the decoder subclass @set_format call. + + + + + + + a #GstVideoDecoder + + + + whether the input data should be considered as subframes. + + + + + + Lets #GstVideoDecoder sub-classes decide if they want the sink pad +to use the default pad query handler to reply to accept-caps queries. + +By setting this to true it is possible to further customize the default +handler with %GST_PAD_SET_ACCEPT_INTERSECT and +%GST_PAD_SET_ACCEPT_TEMPLATE + + + + + + + a #GstVideoDecoder + + + + if the default pad accept-caps query handling should be used + + + + + + GstVideoDecoderRequestSyncPointFlags to use for the automatically +requested sync points if `automatic-request-sync-points` is enabled. + + + + If set to %TRUE the decoder will automatically request sync points when +it seems like a good idea, e.g. if the first frames are not key frames or +if packet loss was reported by upstream. + + + + If set to %TRUE the decoder will discard frames that are marked as +corrupted instead of outputting them. + + + + Maximum number of tolerated consecutive decode errors. See +gst_video_decoder_set_max_errors() for more details. + + + + Minimum interval between force-key-unit events sent upstream by the +decoder. Setting this to 0 will cause every event to be handled, setting +this to %GST_CLOCK_TIME_NONE will cause every event to be ignored. + +See gst_video_event_new_upstream_force_key_unit() for more details about +force-key-unit events. + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum @handle_frame needs to be overridden, and @set_format +and likely as well. If non-packetized input is supported or expected, +@parse needs to be overridden as well. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The #GstVideoDecoder + + + + The frame to handle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoDecoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the decoder should be drained afterwards. + + + + + The #GstVideoDecoder + + + + Timestamp of the missing data + + + + Duration of the missing data + + + + + + + + + + + + + + + + Flags to be used in combination with gst_video_decoder_request_sync_point(). +See the function documentation for more details. + + discard all following + input until the next sync point. + + + discard all following + output until the next sync point. + + + + The interface allows unified access to control flipping and rotation +operations of video-sources or operators. + + + + + + + #GstVideoDirectionInterface interface. + + + parent interface type. + + + + + GstVideoDither provides implementations of several dithering algorithms +that can be applied to lines of video pixels to quantize and dither them. + + + Free @dither + + + + + + + a #GstVideoDither + + + + + + Dither @width pixels starting from offset @x in @line using @dither. + +@y is the line number of @line in the output image. + + + + + + + a #GstVideoDither + + + + pointer to the pixels of the line + + + + x coordinate + + + + y coordinate + + + + the width + + + + + + Make a new dither object for dithering lines of @format using the +algorithm described by @method. + +Each component will be quantized to a multiple of @quantizer. Better +performance is achieved when @quantizer is a power of 2. + +@width is the width of the lines that this ditherer will handle. + + + a new #GstVideoDither + + + + + a #GstVideoDitherMethod + + + + a #GstVideoDitherFlags + + + + a #GstVideoFormat + + + + quantizer + + + + the width of the lines + + + + + + + Extra flags that influence the result from gst_video_chroma_resample_new(). + + no flags + + + the input is interlaced + + + quantize values in addition to adding dither. + + + + Different dithering methods to use. + + no dithering + + + propagate rounding errors downwards + + + Dither with floyd-steinberg error diffusion + + + Dither with Sierra Lite error diffusion + + + ordered dither using a bayer pattern + + + + This base class is for video encoders turning raw video into +encoded video data. + +GstVideoEncoder and subclass should cooperate as follows. + +## Configuration + + * Initially, GstVideoEncoder calls @start when the encoder element + is activated, which allows subclass to perform any global setup. + * GstVideoEncoder calls @set_format to inform subclass of the format + of input video data that it is about to receive. Subclass should + setup for encoding and configure base class as appropriate + (e.g. latency). While unlikely, it might be called more than once, + if changing input parameters require reconfiguration. Baseclass + will ensure that processing of current configuration is finished. + * GstVideoEncoder calls @stop at end of all processing. + +## Data processing + + * Base class collects input data and metadata into a frame and hands + this to subclass' @handle_frame. + + * If codec processing results in encoded data, subclass should call + @gst_video_encoder_finish_frame to have encoded data pushed + downstream. + + * If implemented, baseclass calls subclass @pre_push just prior to + pushing to allow subclasses to modify some metadata on the buffer. + If it returns GST_FLOW_OK, the buffer is pushed downstream. + + * GstVideoEncoderClass will handle both srcpad and sinkpad events. + Sink events will be passed to subclass if @event callback has been + provided. + +## Shutdown phase + + * GstVideoEncoder class calls @stop to inform the subclass that data + parsing will be stopped. + +Subclass is responsible for providing pad template caps for +source and sink pads. The pads need to be named "sink" and "src". It should +also be able to provide fixed src pad caps in @getcaps by the time it calls +@gst_video_encoder_finish_frame. + +Things that subclass need to take care of: + + * Provide pad templates + * Provide source pad caps before pushing the first buffer + * Accept data in @handle_frame and provide encoded results to + @gst_video_encoder_finish_frame. + + +The #GstVideoEncoder:qos property will enable the Quality-of-Service +features of the encoder which gather statistics about the real-time +performance of the downstream elements. If enabled, subclasses can +use gst_video_encoder_get_max_encode_time() to check if input frames +are already late and drop them right away to give a chance to the +pipeline to catch up. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Negotiate with downstream elements to currently configured #GstVideoCodecState. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Helper function that allocates a buffer to hold an encoded video frame +for @encoder's current #GstVideoCodecState. + + + allocated buffer + + + + + a #GstVideoEncoder + + + + size of the buffer + + + + + + Helper function that allocates a buffer to hold an encoded video frame for @encoder's +current #GstVideoCodecState. Subclass should already have configured video +state and set src pad caps. + +The buffer allocated here is owned by the frame and you should only +keep references to the frame, not the buffer. + + + %GST_FLOW_OK if an output buffer could be allocated + + + + + a #GstVideoEncoder + + + + a #GstVideoCodecFrame + + + + size of the buffer + + + + + + @frame must have a valid encoded data buffer, whose metadata fields +are then appropriately set according to frame data or no buffer at +all if the frame should be dropped. +It is subsequently pushed downstream or provided to @pre_push. +In any case, the frame is considered finished and released. + +After calling this function the output buffer of the frame is to be +considered read-only. This function will also change the metadata +of the buffer. + + + a #GstFlowReturn resulting from sending data downstream + + + + + a #GstVideoEncoder + + + + an encoded #GstVideoCodecFrame + + + + + + 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. + +Unref the @allocator after use it. + + + + + + + a #GstVideoEncoder + + + + the #GstAllocator +used + + + + the +#GstAllocationParams of @allocator + + + + + + Get a pending unfinished #GstVideoCodecFrame + + + pending unfinished #GstVideoCodecFrame identified by @frame_number. + + + + + a #GstVideoEncoder + + + + system_frame_number of a frame + + + + + + Get all pending unfinished #GstVideoCodecFrame + + + pending unfinished #GstVideoCodecFrame. + + + + + + + a #GstVideoEncoder + + + + + + Query the configured encoding latency. Results will be returned via +@min_latency and @max_latency. + + + + + + + a #GstVideoEncoder + + + + address of variable in which to store the + configured minimum latency, or %NULL + + + + address of variable in which to store the + configured maximum latency, or %NULL + + + + + + Determines maximum possible encoding time for @frame that will +allow it to encode and arrive in time (as determined by QoS events). +In particular, a negative result means encoding in time is no longer possible +and should therefore occur as soon/skippy as possible. + +If no QoS events have been received from downstream, or if +#GstVideoEncoder:qos is disabled this function returns #G_MAXINT64. + + + max decoding time. + + + + + a #GstVideoEncoder + + + + a #GstVideoCodecFrame + + + + + + Returns the minimum force-keyunit interval, see gst_video_encoder_set_min_force_key_unit_interval() +for more details. + + + the minimum force-keyunit interval + + + + + the encoder + + + + + + Get the oldest unfinished pending #GstVideoCodecFrame + + + oldest unfinished pending #GstVideoCodecFrame + + + + + a #GstVideoEncoder + + + + + + Get the current #GstVideoCodecState + + + #GstVideoCodecState describing format of video data. + + + + + a #GstVideoEncoder + + + + + + Checks if @encoder is currently configured to handle Quality-of-Service +events from downstream. + + + %TRUE if the encoder is configured to perform Quality-of-Service. + + + + + the encoder + + + + + + Sets the video encoder tags and how they should be merged with any +upstream stream tags. This will override any tags previously-set +with gst_video_encoder_merge_tags(). + +Note that this is provided for convenience, and the subclass is +not required to use this and can still do tag handling on its own. + +MT safe. + + + + + + + a #GstVideoEncoder + + + + a #GstTagList to merge, or NULL to unset + previously-set tags + + + + the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE + + + + + + Negotiate with downstream elements to currently configured #GstVideoCodecState. +Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if +negotiate fails. + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoEncoder + + + + + + Returns caps that express @caps (or sink template caps if @caps == NULL) +restricted to resolution/format/... combinations supported by downstream +elements (e.g. muxers). + + + a #GstCaps owned by caller + + + + + a #GstVideoEncoder + + + + initial caps + + + + filter caps + + + + + + Set the codec headers to be sent downstream whenever requested. + + + + + + + a #GstVideoEncoder + + + + a list of #GstBuffer containing the codec header + + + + + + + + Informs baseclass of encoding latency. If the provided values changed from +previously provided ones, this will also post a LATENCY message on the bus +so the pipeline can reconfigure its global latency. + + + + + + + a #GstVideoEncoder + + + + minimum latency + + + + maximum latency + + + + + + Sets the minimum interval for requesting keyframes based on force-keyunit +events. Setting this to 0 will allow to handle every event, setting this to +%GST_CLOCK_TIME_NONE causes force-keyunit events to be ignored. + + + + + + + the encoder + + + + minimum interval + + + + + + 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 accommodate first DTS, which may be less than first PTS + + + + + + + a #GstVideoEncoder + + + + minimal PTS that will be passed to handle_frame + + + + + + Creates a new #GstVideoCodecState with the specified caps as the output state +for the encoder. +Any previously set output state on @encoder will be replaced by the newly +created one. + +The specified @caps should not contain any resolution, pixel-aspect-ratio, +framerate, codec-data, .... Those should be specified instead in the returned +#GstVideoCodecState. + +If the subclass wishes to copy over existing fields (like pixel aspect ratio, +or framerate) from an existing #GstVideoCodecState, it can be provided as a +@reference. + +If the subclass wishes to override some fields from the output state (like +pixel-aspect-ratio or framerate) it can do so on the returned #GstVideoCodecState. + +The new output state will only take effect (set on pads and buffers) starting +from the next call to #gst_video_encoder_finish_frame(). + + + the newly configured output state. + + + + + a #GstVideoEncoder + + + + the #GstCaps to use for the output + + + + An optional reference @GstVideoCodecState + + + + + + Configures @encoder to handle Quality-of-Service events from downstream. + + + + + + + the encoder + + + + the new qos value. + + + + + + Minimum interval between force-keyunit requests in nanoseconds. See +gst_video_encoder_set_min_force_key_unit_interval() for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subclasses can override any of the available virtual methods or not, as +needed. At minimum @handle_frame needs to be overridden, and @set_format +and @get_caps are likely needed as well. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %TRUE if the negotiation succeeded, else %FALSE. + + + + + a #GstVideoEncoder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Field order of interlaced content. This is only valid for +interlace-mode=interleaved and not interlace-mode=mixed. In the case of +mixed or GST_VIDEO_FIELD_ORDER_UNKOWN, the field order is signalled via +buffer flags. + + unknown field order for interlaced content. + The actual field order is signalled via buffer flags. + + + top field is first + + + bottom field is first + + + Convert @order to a #GstVideoFieldOrder + + + the #GstVideoFieldOrder of @order or + #GST_VIDEO_FIELD_ORDER_UNKNOWN when @order is not a valid + string representation for a #GstVideoFieldOrder. + + + + + a field order + + + + + + Convert @order to its string representation. + + + @order as a string. + + + + + a #GstVideoFieldOrder + + + + + + + Provides useful functions and a base class for video filters. + +The videofilter will by default enable QoS on the parent GstBaseTransform +to implement frame dropping. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The video filter class structure. + + + the parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extra video flags + + no flags + + + a variable fps is selected, fps_n and fps_d + denote the maximum fps of the video + + + Each color has been scaled by the alpha + value. + + + + Enum value describing the most common video 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 + + + Encoded video format. Only ever use that in caps for + special video formats in combination with non-system + memory GstCapsFeatures where it does not make sense + to specify a real video format. + + + planar 4:2:0 YUV + + + planar 4:2:0 YVU (like I420 but UV planes swapped) + + + packed 4:2:2 YUV (Y0-U0-Y1-V0 Y2-U2-Y3-V2 Y4 ...) + + + packed 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...) + + + packed 4:4:4 YUV with alpha channel (A0-Y0-U0-V0 ...) + + + sparse rgb packed into 32 bit, space last + + + sparse reverse rgb packed into 32 bit, space last + + + sparse rgb packed into 32 bit, space first + + + sparse reverse rgb packed into 32 bit, space first + + + rgb with alpha channel last + + + reverse rgb with alpha channel last + + + rgb with alpha channel first + + + reverse rgb with alpha channel first + + + RGB packed into 24 bits without padding (`R-G-B-R-G-B`) + + + reverse RGB packed into 24 bits without padding (`B-G-R-B-G-R`) + + + planar 4:1:1 YUV + + + planar 4:2:2 YUV + + + packed 4:2:2 YUV (Y0-V0-Y1-U0 Y2-V2-Y3-U2 Y4 ...) + + + planar 4:4:4 YUV + + + packed 4:2:2 10-bit YUV, complex format + + + packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order + + + planar 4:2:0 YUV with interleaved UV plane + + + planar 4:2:0 YUV with interleaved VU plane + + + 8-bit grayscale + + + 16-bit grayscale, most significant byte first + + + 16-bit grayscale, least significant byte first + + + packed 4:4:4 YUV (Y-U-V ...) + + + rgb 5-6-5 bits per component + + + reverse rgb 5-6-5 bits per component + + + rgb 5-5-5 bits per component + + + reverse rgb 5-5-5 bits per component + + + packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...) + + + planar 4:4:2:0 AYUV + + + 8-bit paletted RGB + + + planar 4:1:0 YUV + + + planar 4:1:0 YUV (like YUV9 but UV planes swapped) + + + packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...) + + + rgb with alpha channel first, 16 bits (native endianness) per channel + + + packed 4:4:4 YUV with alpha channel, 16 bits (native endianness) per channel (A0-Y0-U0-V0 ...) + + + packed 4:4:4 RGB, 10 bits per channel + + + planar 4:2:0 YUV, 10 bits per channel + + + planar 4:2:0 YUV, 10 bits per channel + + + planar 4:2:2 YUV, 10 bits per channel + + + planar 4:2:2 YUV, 10 bits per channel + + + planar 4:4:4 YUV, 10 bits per channel (Since: 1.2) + + + planar 4:4:4 YUV, 10 bits per channel (Since: 1.2) + + + planar 4:4:4 RGB, 8 bits per channel (Since: 1.2) + + + planar 4:4:4 RGB, 10 bits per channel (Since: 1.2) + + + planar 4:4:4 RGB, 10 bits per channel (Since: 1.2) + + + planar 4:2:2 YUV with interleaved UV plane (Since: 1.2) + + + planar 4:4:4 YUV with interleaved UV plane (Since: 1.2) + + + NV12 with 64x32 tiling in zigzag pattern (Since: 1.4) + + + planar 4:4:2:0 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:4:2:0 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:4:2:2 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:4:2:2 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:4:4:4 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:4:4:4 YUV, 10 bits per channel (Since: 1.6) + + + planar 4:2:2 YUV with interleaved VU plane (Since: 1.6) + + + planar 4:2:0 YUV with interleaved UV plane, 10 bits per channel (Since: 1.10) + + + planar 4:2:0 YUV with interleaved UV plane, 10 bits per channel (Since: 1.10) + + + packed 4:4:4 YUV (U-Y-V ...) (Since: 1.10) + + + packed 4:2:2 YUV (V0-Y0-U0-Y1 V2-Y2-U2-Y3 V4 ...) + + + planar 4:4:4:4 ARGB, 8 bits per channel (Since: 1.12) + + + planar 4:4:4:4 ARGB, 10 bits per channel (Since: 1.12) + + + planar 4:4:4:4 ARGB, 10 bits per channel (Since: 1.12) + + + planar 4:4:4 RGB, 12 bits per channel (Since: 1.12) + + + planar 4:4:4 RGB, 12 bits per channel (Since: 1.12) + + + planar 4:4:4:4 ARGB, 12 bits per channel (Since: 1.12) + + + planar 4:4:4:4 ARGB, 12 bits per channel (Since: 1.12) + + + planar 4:2:0 YUV, 12 bits per channel (Since: 1.12) + + + planar 4:2:0 YUV, 12 bits per channel (Since: 1.12) + + + planar 4:2:2 YUV, 12 bits per channel (Since: 1.12) + + + planar 4:2:2 YUV, 12 bits per channel (Since: 1.12) + + + planar 4:4:4 YUV, 12 bits per channel (Since: 1.12) + + + planar 4:4:4 YUV, 12 bits per channel (Since: 1.12) + + + 10-bit grayscale, packed into 32bit words (2 bits padding) (Since: 1.14) + + + 10-bit variant of @GST_VIDEO_FORMAT_NV12, packed into 32bit words (MSB 2 bits padding) (Since: 1.14) + + + 10-bit variant of @GST_VIDEO_FORMAT_NV16, packed into 32bit words (MSB 2 bits padding) (Since: 1.14) + + + Fully packed variant of NV12_10LE32 (Since: 1.16) + + + packed 4:2:2 YUV, 10 bits per channel (Since: 1.16) + + + packed 4:4:4 YUV, 10 bits per channel(A-V-Y-U...) (Since: 1.16) + + + packed 4:4:4 YUV with alpha channel (V0-U0-Y0-A0...) (Since: 1.16) + + + 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) + + + NV12 with 4x4 tiles in linear order (Since: 1.18) + + + NV12 with 32x32 tiles in linear order (Since: 1.18) + + + planar 4:4:4 RGB, 8 bits per channel (Since: 1.20) + + + planar 4:4:4 RGB, 8 bits per channel (Since: 1.20) + + + Planar 4:2:0 YUV with interleaved UV plane with alpha as 3rd plane (Since: 1.20) + + + RGB with alpha channel first, 16 bits per channel + + + RGB with alpha channel first, 16 bits per channel + + + RGB with alpha channel last, 16 bits per channel + + + RGB with alpha channel last, 16 bits per channel + + + reverse RGB with alpha channel last, 16 bits per channel + + + reverse RGB with alpha channel last, 16 bits per channel + + + reverse RGB with alpha channel first, 16 bits per channel + + + reverse RGB with alpha channel first, 16 bits per channel + + + NV12 with 16x32 Y tiles and 16x16 UV tiles. (Since: 1.22) + + + NV12 with 8x128 tiles in linear order (Since: 1.22) + + + NV12 10bit big endian with 8x128 tiles in linear order (Since: 1.22) + + + Converts a FOURCC value into the corresponding #GstVideoFormat. +If the FOURCC cannot be represented by #GstVideoFormat, +#GST_VIDEO_FORMAT_UNKNOWN is returned. + + + the #GstVideoFormat describing the FOURCC value + + + + + a FOURCC value representing raw YUV video + + + + + + Find the #GstVideoFormat for the given parameters. + + + a #GstVideoFormat or GST_VIDEO_FORMAT_UNKNOWN when the parameters to +not specify a known format. + + + + + the amount of bits used for a pixel + + + + the amount of bits used to store a pixel. This value is bigger than + @depth + + + + the endianness of the masks, #G_LITTLE_ENDIAN or #G_BIG_ENDIAN + + + + the red mask + + + + the green mask + + + + the blue mask + + + + the alpha mask, or 0 if no alpha mask + + + + + + Convert the @format string to its #GstVideoFormat. + + + the #GstVideoFormat for @format or GST_VIDEO_FORMAT_UNKNOWN when the +string is not a known format. + + + + + a format string + + + + + + Get the #GstVideoFormatInfo for @format + + + The #GstVideoFormatInfo for @format. + + + + + a #GstVideoFormat + + + + + + Get the default palette of @format. This the palette used in the pack +function for paletted formats. + + + the default palette of @format or %NULL when +@format does not have a palette. + + + + + a #GstVideoFormat + + + + size of the palette in bytes + + + + + + Converts a #GstVideoFormat value into the corresponding FOURCC. Only +a few YUV formats have corresponding FOURCC values. If @format has +no corresponding FOURCC value, 0 is returned. + + + the FOURCC corresponding to @format + + + + + a #GstVideoFormat video format + + + + + + Returns a string containing a descriptive name for +the #GstVideoFormat if there is one, or NULL otherwise. + + + the name corresponding to @format + + + + + a #GstVideoFormat video format + + + + + + + The different video flags that a format info can have. + + The video format is YUV, components are numbered + 0=Y, 1=U, 2=V. + + + The video format is RGB, components are numbered + 0=R, 1=G, 2=B. + + + The video is gray, there is one gray component + with index 0. + + + The video format has an alpha components with + the number 3. + + + The video format has data stored in little + endianness. + + + The video format has a palette. The palette + is stored in the second plane and indexes are stored in the first plane. + + + The video format has a complex layout that + can't be described with the usual information in the #GstVideoFormatInfo. + + + This format can be used in a + #GstVideoFormatUnpack and #GstVideoFormatPack function. + + + The format is tiled, there is tiling information + in the last plane. + + + The tile size varies per plane + according to the subsampling. (Since: 1.22) + + + + Information for a video format. + + + #GstVideoFormat + + + + string representation of the format + + + + use readable description of the format + + + + #GstVideoFormatFlags + + + + The number of bits used to pack data items. This can be less than 8 + when multiple pixels are stored in a byte. for values > 8 multiple bytes + should be read according to the endianness flag before applying the shift + and mask. + + + + the number of components in the video format. + + + + the number of bits to shift away to get the component data + + + + + + the depth in bits for each component + + + + + + the pixel stride of each component. This is the amount of + bytes to the pixel immediately to the right. When bits < 8, the stride is + expressed in bits. For 24-bit RGB, this would be 3 bytes, for example, + while it would be 4 bytes for RGBx or ARGB. + + + + + + the number of planes for this format. The number of planes can be + less than the amount of components when multiple components are packed into + one plane. + + + + the plane number where a component can be found + + + + + + the offset in the plane where the first pixel of the components + can be found. + + + + + + subsampling factor of the width for the component. Use + GST_VIDEO_SUB_SCALE to scale a width. + + + + + + subsampling factor of the height for the component. Use + GST_VIDEO_SUB_SCALE to scale a height. + + + + + + the format of the unpacked pixels. This format must have the + #GST_VIDEO_FORMAT_FLAG_UNPACK flag set. + + + + an unpack function for this format + + + + the amount of lines that will be packed + + + + an pack function for this format + + + + The tiling mode + + + + The width of a tile, in bytes, represented as a shift. DEPRECATED, +use tile_info[] array instead. + + + + The height of a tile, in bytes, represented as a shift. DEPREACTED, +use tile_info[] array instead. + + + + Per-plane tile information + + + + + + 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 + + + + + + Extrapolate @plane stride from the first stride of an image. This helper is +useful to support legacy API were only one stride is supported. + + + The extrapolated stride for @plane + + + + + #GstVideoFormatInfo + + + + a plane number + + + + The fist plane stride + + + + + + + Packs @width pixels from @src to the given planes and strides in the +format @info. The pixels from source have each component interleaved +and will be packed into the planes in @data. + +This function operates on pack_lines lines, meaning that @src should +contain at least pack_lines lines with a stride of @sstride and @y +should be a multiple of pack_lines. + +Subsampled formats will use the horizontally and vertically cosited +component from the source. Subsampling should be performed before +packing. + +Because this function does not have a x coordinate, it is not possible to +pack pixels starting from an unaligned position. For tiled images this +means that packing should start from a tile coordinate. For subsampled +formats this means that a complete pixel needs to be packed. + + + + + + + a #GstVideoFormatInfo + + + + flags to control the packing + + + + a source array + + + + the source array stride + + + + pointers to the destination data planes + + + + strides of the destination planes + + + + the chroma siting of the target when subsampled (not used) + + + + the y position in the image to pack to + + + + the amount of pixels to pack. + + + + + + Unpacks @width pixels from the given planes and strides containing data of +format @info. The pixels will be unpacked into @dest with each component +interleaved as per @info's unpack_format, which will usually be one of +#GST_VIDEO_FORMAT_ARGB, #GST_VIDEO_FORMAT_AYUV, #GST_VIDEO_FORMAT_ARGB64 or +#GST_VIDEO_FORMAT_AYUV64 depending on the format to unpack. +@dest should at least be big enough to hold @width * bytes_per_pixel bytes +where bytes_per_pixel relates to the unpack format and will usually be +either 4 or 8 depending on the unpack format. bytes_per_pixel will be +the same as the pixel stride for plane 0 for the above formats. + +For subsampled formats, the components will be duplicated in the destination +array. Reconstruction of the missing components can be performed in a +separate step after unpacking. + + + + + + + a #GstVideoFormatInfo + + + + flags to control the unpacking + + + + a destination array + + + + pointers to the data planes + + + + strides of the planes + + + + the x position in the image to start from + + + + the y position in the image to start from + + + + the amount of pixels to unpack. + + + + + + A video frame obtained from gst_video_frame_map() + + + the #GstVideoInfo + + + + #GstVideoFrameFlags for the frame + + + + the mapped buffer + + + + pointer to metadata if any + + + + id of the mapped frame. the id can for example be used to + identify the frame in case of multiview video. + + + + pointers to the plane data + + + + + + mappings of the planes + + + + + + + + + + + Copy the contents from @src to @dest. + +Note: Since: 1.18, @dest dimensions are allowed to be +smaller than @src dimensions. + + + TRUE if the contents could be copied. + + + + + a #GstVideoFrame + + + + a #GstVideoFrame + + + + + + Copy the plane with index @plane from @src to @dest. + +Note: Since: 1.18, @dest dimensions are allowed to be +smaller than @src dimensions. + + + TRUE if the contents could be copied. + + + + + a #GstVideoFrame + + + + a #GstVideoFrame + + + + a plane + + + + + + Unmap the memory previously mapped with gst_video_frame_map. + + + + + + + a #GstVideoFrame + + + + + + Use @info and @buffer to fill in the values of @frame. @frame is usually +allocated on the stack, and you will pass the address to the #GstVideoFrame +structure allocated on the stack; gst_video_frame_map() will then fill in +the structures with the various video-specific information you need to access +the pixels of the video buffer. You can then use accessor macros such as +GST_VIDEO_FRAME_COMP_DATA(), GST_VIDEO_FRAME_PLANE_DATA(), +GST_VIDEO_FRAME_COMP_STRIDE(), GST_VIDEO_FRAME_PLANE_STRIDE() etc. +to get to the pixels. + +|[<!-- language="C" --> + GstVideoFrame vframe; + ... + // set RGB pixels to black one at a time + if (gst_video_frame_map (&vframe, video_info, video_buffer, GST_MAP_WRITE)) { + guint8 *pixels = GST_VIDEO_FRAME_PLANE_DATA (vframe, 0); + guint stride = GST_VIDEO_FRAME_PLANE_STRIDE (vframe, 0); + guint pixel_stride = GST_VIDEO_FRAME_COMP_PSTRIDE (vframe, 0); + + for (h = 0; h < height; ++h) { + for (w = 0; w < width; ++w) { + guint8 *pixel = pixels + h * stride + w * pixel_stride; + + memset (pixel, 0, pixel_stride); + } + } + + gst_video_frame_unmap (&vframe); + } + ... +]| + +All video planes of @buffer will be mapped and the pointers will be set in +@frame->data. + +The purpose of this function is to make it easy for you to get to the video +pixels in a generic way, without you having to worry too much about details +such as whether the video data is allocated in one contiguous memory chunk +or multiple memory chunks (e.g. one for each plane); or if custom strides +and custom plane offsets are used or not (as signalled by GstVideoMeta on +each buffer). This function will just fill the #GstVideoFrame structure +with the right values and if you use the accessor macros everything will +just work and you can access the data easily. It also maps the underlying +memory chunks for you. + + + %TRUE on success. + + + + + pointer to #GstVideoFrame + + + + a #GstVideoInfo + + + + the buffer to map + + + + #GstMapFlags + + + + + + Use @info and @buffer to fill in the values of @frame with the video frame +information of frame @id. + +When @id is -1, the default frame is mapped. When @id != -1, this function +will return %FALSE when there is no GstVideoMeta with that id. + +All video planes of @buffer will be mapped and the pointers will be set in +@frame->data. + + + %TRUE on success. + + + + + pointer to #GstVideoFrame + + + + a #GstVideoInfo + + + + the buffer to map + + + + the frame id to map + + + + #GstMapFlags + + + + + + + Extra video frame flags + + no flags + + + The video frame is interlaced. In mixed + interlace-mode, this flag specifies if the frame is interlaced or + progressive. + + + The video frame has the top field first + + + The video frame has the repeat flag + + + The video frame has one field + + + The video contains one or + more non-mono views + + + The video frame is the first + in a set of corresponding views provided as sequential frames. + + + The video frame has the top field only. This + is the same as GST_VIDEO_FRAME_FLAG_TFF | GST_VIDEO_FRAME_FLAG_ONEFIELD + (Since: 1.16). + + + The video frame has one field + + + The video frame has the bottom field + only. This is the same as GST_VIDEO_FRAME_FLAG_ONEFIELD + (GST_VIDEO_FRAME_FLAG_TFF flag unset) (Since: 1.16). + + + + Additional mapping flags for gst_video_frame_map(). + + Don't take another reference of the buffer and store it in + the GstVideoFrame. This makes sure that the buffer stays + writable while the frame is mapped, but requires that the + buffer reference stays valid until the frame is unmapped again. + + + Offset to define more flags + + + + The orientation of the GL texture. + + Top line first in memory, left row first + + + Bottom line first in memory, left row first + + + Top line first in memory, right row first + + + Bottom line first in memory, right row first + + + + The GL texture type. + + Luminance texture, GL_LUMINANCE + + + Luminance-alpha texture, GL_LUMINANCE_ALPHA + + + RGB 565 texture, GL_RGB + + + RGB texture, GL_RGB + + + RGBA texture, GL_RGBA + + + R texture, GL_RED_EXT + + + RG texture, GL_RG_EXT + + + + + + + + + + + + + + + + + + Extra buffer metadata for uploading a buffer to an OpenGL texture +ID. The caller of gst_video_gl_texture_upload_meta_upload() must +have OpenGL set up and call this from a thread where it is valid +to upload something to an OpenGL texture. + + + parent #GstMeta + + + + Orientation of the textures + + + + Number of textures that are generated + + + + Type of each texture + + + + + + + + + + + + + + + + + + + + + Uploads the buffer which owns the meta to a specific texture ID. + + + %TRUE if uploading succeeded, %FALSE otherwise. + + + + + a #GstVideoGLTextureUploadMeta + + + + the texture IDs to upload to + + + + + + + + + + + + + + disable gamma handling + + + convert between input and output gamma +Different gamma conversion modes + + + + Information describing image properties. This information can be filled +in from GstCaps with gst_video_info_from_caps(). The information is also used +to store the specific video info when mapping a video frame with +gst_video_frame_map(). + +Use the provided macros to access the info in this structure. + + + the format info of the video + + + + the interlace mode + + + + additional video flags + + + + the width of the video + + + + the height of the video + + + + the default size of one frame + + + + the number of views for multiview video + + + + a #GstVideoChromaSite. + + + + the colorimetry info + + + + the pixel-aspect-ratio numerator + + + + the pixel-aspect-ratio denominator + + + + the framerate numerator + + + + the framerate denominator + + + + offsets of the planes + + + + + + strides of the planes + + + + + + + + + + + + + + + + + + + + + + + + + + Allocate a new #GstVideoInfo that is also initialized with +gst_video_info_init(). + + + a new #GstVideoInfo. free with gst_video_info_free(). + + + + + Parse @caps to generate a #GstVideoInfo. + + + A #GstVideoInfo, or %NULL if @caps couldn't be parsed + + + + + a #GstCaps + + + + + + Adjust the offset and stride fields in @info so that the padding and +stride alignment in @align is respected. + +Extra padding will be added to the right side when stride alignment padding +is required and @align will be updated with the new padding values. + + + %FALSE if alignment could not be applied, e.g. because the + size of a frame can't be represented as a 32 bit integer (Since: 1.12) + + + + + a #GstVideoInfo + + + + alignment parameters + + + + + + Extra padding will be added to the right side when stride alignment padding +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 +raw video, GST_FORMAT_DEFAULT corresponds to video frames. This +function can be used to handle pad queries of the type GST_QUERY_CONVERT. + + + TRUE if the conversion was successful. + + + + + a #GstVideoInfo + + + + #GstFormat of the @src_value + + + + value to convert + + + + #GstFormat of the @dest_value + + + + pointer to destination value + + + + + + Copy a GstVideoInfo structure. + + + a new #GstVideoInfo. free with gst_video_info_free. + + + + + a #GstVideoInfo + + + + + + Free a GstVideoInfo structure previously allocated with gst_video_info_new() +or gst_video_info_copy(). + + + + + + + a #GstVideoInfo + + + + + + Compares two #GstVideoInfo and returns whether they are equal or not + + + %TRUE if @info and @other are equal, else %FALSE. + + + + + a #GstVideoInfo + + + + a #GstVideoInfo + + + + + + Set the default info for a video frame of @format and @width and @height. + +Note: This initializes @info first, no values are preserved. This function +does not set the offsets correctly for interlaced vertically +subsampled formats. + + + %FALSE if the returned video info is invalid, e.g. because the + size of a frame can't be represented as a 32 bit integer (Since: 1.12) + + + + + a #GstVideoInfo + + + + the format + + + + a width + + + + a height + + + + + + Same as #gst_video_info_set_format but also allowing to set the interlaced +mode. + + + %FALSE if the returned video info is invalid, e.g. because the + size of a frame can't be represented as a 32 bit integer. + + + + + a #GstVideoInfo + + + + the format + + + + a #GstVideoInterlaceMode + + + + a width + + + + a height + + + + + + Convert the values of @info into a #GstCaps. + + + a new #GstCaps containing the info of @info. + + + + + a #GstVideoInfo + + + + + + Parse @caps and update @info. + + + TRUE if @caps could be parsed + + + + + #GstVideoInfo + + + + a #GstCaps + + + + + + Initialize @info with default values. + + + + + + + a #GstVideoInfo + + + + + + + Information describing a DMABuf image properties. It wraps #GstVideoInfo and +adds DRM information such as drm-fourcc and drm-modifier, required for +negotiation and mapping. + + + the associated #GstVideoInfo + + + + the fourcc defined by drm + + + + the drm modifier + + + + + + + + + Allocate a new #GstVideoInfoDmaDrm that is also initialized with +gst_video_info_dma_drm_init(). + + + a new #GstVideoInfoDmaDrm. +Free it with gst_video_info_dma_drm_free(). + + + + + Parse @caps to generate a #GstVideoInfoDmaDrm. Please note that the +@caps should be a dma drm caps. The gst_video_is_dma_drm_caps() can +be used to verify it before calling this function. + + + A #GstVideoInfoDmaDrm, + or %NULL if @caps couldn't be parsed. + + + + + a #GstCaps + + + + + + Free a #GstVideoInfoDmaDrm structure previously allocated with +gst_video_info_dma_drm_new() + + + + + + + a #GstVideoInfoDmaDrm + + + + + + Convert the values of @drm_info into a #GstCaps. Please note that the +@caps returned will be a dma drm caps which does not contain format field, +but contains a drm-format field instead. The value of drm-format field is +composed of a drm fourcc and a modifier, such as NV12:0x0100000000000002. + + + a new #GstCaps containing the +info in @drm_info. + + + + + a #GstVideoInfoDmaDrm + + + + + + Parse @caps and update @info. Please note that the @caps should be +a dma drm caps. The gst_video_is_dma_drm_caps() can be used to verify +it before calling this function. + + + TRUE if @caps could be parsed + + + + + #GstVideoInfoDmaDrm + + + + a #GstCaps + + + + + + Initialize @drm_info with default values. + + + + + + + a #GstVideoInfoDmaDrm + + + + + + + The possible values of the #GstVideoInterlaceMode describing the interlace +mode of the stream. + + all frames are progressive + + + 2 fields are interleaved in one video + frame. Extra buffer flags describe the field order. + + + frames contains both interlaced and + progressive video, the buffer flags describe the frame and fields. + + + 2 fields are stored in one buffer, use the + frame ID to get access to the required field. For multiview (the + 'views' property > 1) the fields of view N can be found at frame ID + (N * 2) and (N * 2) + 1. + Each field has only half the amount of lines as noted in the + height property. This mode requires multiple GstVideoMeta metadata + to describe the fields. + + + 1 field is stored in one buffer, + @GST_VIDEO_BUFFER_FLAG_TF or @GST_VIDEO_BUFFER_FLAG_BF indicates if + the buffer is carrying the top or bottom field, respectively. The top and + bottom buffers must alternate in the pipeline, with this mode + (Since: 1.16). + + + Convert @mode to a #GstVideoInterlaceMode + + + the #GstVideoInterlaceMode of @mode or + #GST_VIDEO_INTERLACE_MODE_PROGRESSIVE when @mode is not a valid + string representation for a #GstVideoInterlaceMode. + + + + + a mode + + + + + + Convert @mode to its string representation. + + + @mode as a string. + + + + + a #GstVideoInterlaceMode + + + + + + + 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 + + do conversion between color matrices + + + use the input color matrix to convert + to and from R'G'B + + + use the output color matrix to convert + to and from R'G'B + + + disable color matrix conversion. + + + + 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 + + + + the buffer this metadata belongs to + + + + additional video flags + + + + the video format + + + + identifier of the frame + + + + the video width + + + + the video height + + + + the number of planes in the image + + + + array of offsets for the planes. This field might not always be + valid, it is used by the default implementation of @map. + + + + + + array of strides for the planes. This field might not always be + valid, it is used by the default implementation of @map. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + TRUE if the map operation was successful. + + + + + a #GstVideoMeta + + + + a plane + + + + a #GstMapInfo + + + + the data of @plane + + + + the stride of @plane + + + + @GstMapFlags + + + + + + 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(). + + + TRUE if the memory was successfully unmapped. + + + + + a #GstVideoMeta + + + + a plane + + + + a #GstMapInfo + + + + + + + + + + + + + Extra data passed to a video transform #GstMetaTransformFunction such as: +"gst-video-scale". + + + the input #GstVideoInfo + + + + the output #GstVideoInfo + + + + Get the #GQuark for the "gst-video-scale" metadata transform operation. + + + a #GQuark + + + + + + GstVideoMultiviewFlags are used to indicate extra properties of a +stereo/multiview stream beyond the frame layout and buffer mapping +that is conveyed in the #GstVideoMultiviewMode. + + No flags + + + For stereo streams, the + normal arrangement of left and right views is reversed. + + + The left view is vertically + mirrored. + + + The left view is horizontally + mirrored. + + + The right view is + vertically mirrored. + + + The right view is + horizontally mirrored. + + + For frame-packed + multiview modes, indicates that the individual + views have been encoded with half the true width or height + and should be scaled back up for display. This flag + is used for overriding input layout interpretation + by adjusting pixel-aspect-ratio. + For side-by-side, column interleaved or checkerboard packings, the + pixel width will be doubled. For row interleaved and top-bottom + encodings, pixel height will be doubled. + + + The video stream contains both + mono and multiview portions, signalled on each buffer by the + absence or presence of the @GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW + buffer flag. + + + + See #GstVideoMultiviewFlags. + + + #GstVideoMultiviewFramePacking represents the subset of #GstVideoMultiviewMode +values that can be applied to any video frame without needing extra metadata. +It can be used by elements that provide a property to override the +multiview interpretation of a video stream when the video doesn't contain +any markers. + +This enum is used (for example) on playbin, to re-interpret a played +video stream as a stereoscopic video. The individual enum values are +equivalent to and have the same value as the matching #GstVideoMultiviewMode. + + A special value indicating +no frame packing info. + + + All frames are monoscopic. + + + All frames represent a left-eye view. + + + All frames represent a right-eye view. + + + Left and right eye views are +provided in the left and right half of the frame respectively. + + + Left and right eye +views are provided in the left and right half of the frame, but +have been sampled using quincunx method, with half-pixel offset +between the 2 views. + + + Alternating vertical +columns of pixels represent the left and right eye view respectively. + + + Alternating horizontal +rows of pixels represent the left and right eye view respectively. + + + The top half of the frame +contains the left eye, and the bottom half the right eye. + + + Pixels are arranged with +alternating pixels representing left and right eye views in a +checkerboard fashion. + + + + All possible stereoscopic 3D and multiview representations. +In conjunction with #GstVideoMultiviewFlags, describes how +multiview content is being transported in the stream. + + A special value indicating +no multiview information. Used in GstVideoInfo and other places to +indicate that no specific multiview handling has been requested or +provided. This value is never carried on caps. + + + All frames are monoscopic. + + + All frames represent a left-eye view. + + + All frames represent a right-eye view. + + + Left and right eye views are +provided in the left and right half of the frame respectively. + + + Left and right eye +views are provided in the left and right half of the frame, but +have been sampled using quincunx method, with half-pixel offset +between the 2 views. + + + Alternating vertical +columns of pixels represent the left and right eye view respectively. + + + Alternating horizontal +rows of pixels represent the left and right eye view respectively. + + + The top half of the frame +contains the left eye, and the bottom half the right eye. + + + Pixels are arranged with +alternating pixels representing left and right eye views in a +checkerboard fashion. + + + Left and right eye views +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` +and #GstVideoMeta(s) on raw video buffers. + + + Multiple views are +provided as separate #GstMemory framebuffers attached to each +#GstBuffer, described by the `GstVideoMultiviewMeta` +and #GstVideoMeta(s) + + + + + The #GstVideoMultiviewMode value + +Given a string from a caps multiview-mode field, +output the corresponding #GstVideoMultiviewMode +or #GST_VIDEO_MULTIVIEW_MODE_NONE + + + + + multiview-mode field string from caps + + + + + + Given a #GstVideoMultiviewMode returns the multiview-mode caps string +for insertion into a caps structure + + + The caps string representation of the mode, or NULL if invalid. + + + + + A #GstVideoMultiviewMode value + + + + + + + The interface allows unified access to control flipping and autocenter +operation of video-sources or operators. + + + Parses the "image-orientation" tag and transforms it into the +#GstVideoOrientationMethod enum. + + + TRUE if there was a valid "image-orientation" tag in the taglist. + + + + + A #GstTagList + + + + The location where to return the orientation. + + + + + + Get the horizontal centering offset from the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the horizontal flipping state (%TRUE for flipped) from the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the vertical centering offset from the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the vertical flipping state (%TRUE for flipped) from the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Set the horizontal centering offset for the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + Set the horizontal flipping state (%TRUE for flipped) for the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + Set the vertical centering offset for the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + Set the vertical flipping state (%TRUE for flipped) for the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + Get the horizontal centering offset from the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the horizontal flipping state (%TRUE for flipped) from the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the vertical centering offset from the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Get the vertical flipping state (%TRUE for flipped) from the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + Set the horizontal centering offset for the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + Set the horizontal flipping state (%TRUE for flipped) for the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + Set the vertical centering offset for the given object. + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + Set the vertical flipping state (%TRUE for flipped) for the given object. + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + + #GstVideoOrientationInterface interface. + + + parent interface type. + + + + + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + + + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + + + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + + + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + return location for the result + + + + + + + + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + + + + + %TRUE in case the element supports flipping + + + + + #GstVideoOrientation interface of a #GstElement + + + + use flipping + + + + + + + + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + + + + + %TRUE in case the element supports centering + + + + + #GstVideoOrientation interface of a #GstElement + + + + centering offset + + + + + + + + The different video orientation methods. + + Identity (no rotation) + + + Rotate clockwise 90 degrees + + + Rotate 180 degrees + + + Rotate counter-clockwise 90 degrees + + + Flip horizontally + + + Flip vertically + + + Flip across upper left/lower right diagonal + + + Flip across upper right/lower left diagonal + + + Select flip method based on image-orientation tag + + + Current status depends on plugin internal setup + + + + The #GstVideoOverlay interface is used for 2 main purposes : + +* To get a grab on the Window where the video sink element is going to render. + This is achieved by either being informed about the Window identifier that + the video sink element generated, or by forcing the video sink element to use + a specific Window identifier for rendering. +* To force a redrawing of the latest video frame the video sink element + displayed on the Window. Indeed if the #GstPipeline is in #GST_STATE_PAUSED + state, moving the Window around will damage its content. Application + developers will want to handle the Expose events themselves and force the + video sink element to refresh the Window's content. + +Using the Window created by the video sink is probably the simplest scenario, +in some cases, though, it might not be flexible enough for application +developers if they need to catch events such as mouse moves and button +clicks. + +Setting a specific Window identifier on the video sink element is the most +flexible solution but it has some issues. Indeed the application needs to set +its Window identifier at the right time to avoid internal Window creation +from the video sink element. To solve this issue a #GstMessage is posted on +the bus to inform the application that it should set the Window identifier +immediately. Here is an example on how to do that correctly: +|[ +static GstBusSyncReply +create_window (GstBus * bus, GstMessage * message, GstPipeline * pipeline) +{ + // ignore anything but 'prepare-window-handle' element messages + if (!gst_is_video_overlay_prepare_window_handle_message (message)) + return GST_BUS_PASS; + + win = XCreateSimpleWindow (disp, root, 0, 0, 320, 240, 0, 0, 0); + + XSetWindowBackgroundPixmap (disp, win, None); + + XMapRaised (disp, win); + + XSync (disp, FALSE); + + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message)), + win); + + gst_message_unref (message); + + return GST_BUS_DROP; +} +... +int +main (int argc, char **argv) +{ +... + bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); + gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, pipeline, + NULL); +... +} +]| + +## Two basic usage scenarios + +There are two basic usage scenarios: in the simplest case, the application +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 +realize the window to render the video on and then +call gst_video_overlay_set_window_handle() directly with the XID or native +window handle, before starting up the pipeline. +As #playbin and #playsink implement the video overlay interface and proxy +it transparently to the actual video sink even if it is created later, this +case also applies when using these elements. + +In the other and more common case, the application does not know in advance +what GStreamer video sink element will be used for video output. This is +usually the case when an element such as #autovideosink is used. +In this case, the video sink element itself is created +asynchronously from a GStreamer streaming thread some time after the +pipeline has been started up. When that happens, however, the video sink +will need to know right then whether to render onto an already existing +application window or whether to create its own window. This is when it +posts a prepare-window-handle message, and that is also why this message needs +to be handled in a sync bus handler which will be called from the streaming +thread directly (because the video sink will need an answer right then). + +As response to the prepare-window-handle element message in the bus sync +handler, the application may use gst_video_overlay_set_window_handle() to tell +the video sink to render onto an existing window surface. At this point the +application should already have obtained the window handle / XID, so it +just needs to set it. It is generally not advisable to call any GUI toolkit +functions or window system functions from the streaming thread in which the +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 +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` +used in the callback). + +## GstVideoOverlay and Gtk+ + +|[ +#include <gst/video/videooverlay.h> +#include <gtk/gtk.h> +#ifdef GDK_WINDOWING_X11 +#include <gdk/gdkx.h> // for GDK_WINDOW_XID +#endif +#ifdef GDK_WINDOWING_WIN32 +#include <gdk/gdkwin32.h> // for GDK_WINDOW_HWND +#endif +... +static guintptr video_window_handle = 0; +... +static GstBusSyncReply +bus_sync_handler (GstBus * bus, GstMessage * message, gpointer user_data) +{ + // ignore anything but 'prepare-window-handle' element messages + if (!gst_is_video_overlay_prepare_window_handle_message (message)) + return GST_BUS_PASS; + + if (video_window_handle != 0) { + GstVideoOverlay *overlay; + + // GST_MESSAGE_SRC (message) will be the video sink element + overlay = GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message)); + gst_video_overlay_set_window_handle (overlay, video_window_handle); + } else { + g_warning ("Should have obtained video_window_handle by now!"); + } + + gst_message_unref (message); + return GST_BUS_DROP; +} +... +static void +video_widget_realize_cb (GtkWidget * widget, gpointer data) +{ +#if GTK_CHECK_VERSION(2,18,0) + // Tell Gtk+/Gdk to create a native window for this widget instead of + // drawing onto the parent widget. + // This is here just for pedagogical purposes, GDK_WINDOW_XID will call + // it as well in newer Gtk versions + if (!gdk_window_ensure_native (widget->window)) + g_error ("Couldn't create native window needed for GstVideoOverlay!"); +#endif + +#ifdef GDK_WINDOWING_X11 + { + gulong xid = GDK_WINDOW_XID (gtk_widget_get_window (video_window)); + video_window_handle = xid; + } +#endif +#ifdef GDK_WINDOWING_WIN32 + { + HWND wnd = GDK_WINDOW_HWND (gtk_widget_get_window (video_window)); + video_window_handle = (guintptr) wnd; + } +#endif +} +... +int +main (int argc, char **argv) +{ + GtkWidget *video_window; + GtkWidget *app_window; + ... + app_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + ... + video_window = gtk_drawing_area_new (); + g_signal_connect (video_window, "realize", + G_CALLBACK (video_widget_realize_cb), NULL); + gtk_widget_set_double_buffered (video_window, FALSE); + ... + // usually the video_window will not be directly embedded into the + // application window like this, but there will be many other widgets + // and the video window will be embedded in one of them instead + gtk_container_add (GTK_CONTAINER (ap_window), video_window); + ... + // show the GUI + gtk_widget_show_all (app_window); + + // realize window now so that the video window gets created and we can + // obtain its XID/HWND before the pipeline is started up and the videosink + // asks for the XID/HWND of the window to render onto + gtk_widget_realize (video_window); + + // we should have the XID/HWND now + g_assert (video_window_handle != 0); + ... + // set up sync handler for setting the xid once the pipeline is started + bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); + gst_bus_set_sync_handler (bus, (GstBusSyncHandler) bus_sync_handler, NULL, + NULL); + gst_object_unref (bus); + ... + gst_element_set_state (pipeline, GST_STATE_PLAYING); + ... +} +]| + +## GstVideoOverlay and Qt + +|[ +#include <glib.h>; +#include <gst/gst.h>; +#include <gst/video/videooverlay.h>; + +#include <QApplication>; +#include <QTimer>; +#include <QWidget>; + +int main(int argc, char *argv[]) +{ + if (!g_thread_supported ()) + g_thread_init (NULL); + + gst_init (&argc, &argv); + QApplication app(argc, argv); + app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit ())); + + // prepare the pipeline + + GstElement *pipeline = gst_pipeline_new ("xvoverlay"); + GstElement *src = gst_element_factory_make ("videotestsrc", NULL); + GstElement *sink = gst_element_factory_make ("xvimagesink", NULL); + gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL); + gst_element_link (src, sink); + + // prepare the ui + + QWidget window; + window.resize(320, 240); + window.show(); + + WId xwinid = window.winId(); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (sink), xwinid); + + // run the pipeline + + GstStateChangeReturn sret = gst_element_set_state (pipeline, + GST_STATE_PLAYING); + if (sret == GST_STATE_CHANGE_FAILURE) { + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); + // Exit application + QTimer::singleShot(0, QApplication::activeWindow(), SLOT(quit())); + } + + int ret = app.exec(); + + window.hide(); + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); + + return ret; +} +]| + + + This helper shall be used by classes implementing the #GstVideoOverlay +interface that want the render rectangle to be controllable using +properties. This helper will install "render-rectangle" property into the +class. + + + + + + + The class on which the properties will be installed + + + + The first free property ID to use + + + + + + This helper shall be used by classes implementing the #GstVideoOverlay +interface that want the render rectangle to be controllable using +properties. This helper will parse and set the render rectangle calling +gst_video_overlay_set_render_rectangle(). + + + %TRUE if the @property_id matches the GstVideoOverlay property + + + + + The instance on which the property is set + + + + The highest property ID. + + + + The property ID + + + + The #GValue to be set + + + + + + Tell an overlay that it has been exposed. This will redraw the current frame +in the drawable even if the pipeline is PAUSED. + + + + + + + a #GstVideoOverlay to expose. + + + + + + Tell an overlay that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window system, +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the #GstVideoOverlay. + + + + + + + a #GstVideoOverlay to expose. + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This will call the video overlay's set_window_handle method. You +should use this method to tell to an overlay to display video output to a +specific window (e.g. an XWindow on X11). Passing 0 as the @handle will +tell the overlay to stop using that window and create an internal one. + + + + + + + a #GstVideoOverlay to set the window on. + + + + a handle referencing the window. + + + + + + Tell an overlay that it has been exposed. This will redraw the current frame +in the drawable even if the pipeline is PAUSED. + + + + + + + a #GstVideoOverlay to expose. + + + + + + This will post a "have-window-handle" element message on the bus. + +This function should only be used by video overlay plugin developers. + + + + + + + a #GstVideoOverlay which got a window + + + + a platform-specific handle referencing the window + + + + + + Tell an overlay that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window system, +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the #GstVideoOverlay. + + + + + + + a #GstVideoOverlay to expose. + + + + a #gboolean indicating if events should be handled or not. + + + + + + This will post a "prepare-window-handle" element message on the bus +to give applications an opportunity to call +gst_video_overlay_set_window_handle() before a plugin creates its own +window. + +This function should only be used by video overlay plugin developers. + + + + + + + a #GstVideoOverlay which does not yet have an Window handle set + + + + + + Configure a subregion as a video target within the window set by +gst_video_overlay_set_window_handle(). If this is not used or not supported +the video will fill the area of the window set as the overlay to 100%. +By specifying the rectangle, the video can be overlayed to a specific region +of that window only. After setting the new rectangle one should call +gst_video_overlay_expose() to force a redraw. To unset the region pass -1 for +the @width and @height parameters. + +This method is needed for non fullscreen video overlay in UI toolkits that +do not support subwindows. + + + %FALSE if not supported by the sink. + + + + + a #GstVideoOverlay + + + + the horizontal offset of the render area inside the window + + + + the vertical offset of the render area inside the window + + + + the width of the render area inside the window + + + + the height of the render area inside the window + + + + + + This will call the video overlay's set_window_handle method. You +should use this method to tell to an overlay to display video output to a +specific window (e.g. an XWindow on X11). Passing 0 as the @handle will +tell the overlay to stop using that window and create an internal one. + + + + + + + a #GstVideoOverlay to set the window on. + + + + a handle referencing the window. + + + + + + + Functions to create and handle overlay compositions on video buffers. + +An overlay composition describes one or more overlay rectangles to be +blended on top of a video buffer. + +This API serves two main purposes: + +* it can be used to attach overlay information (subtitles or logos) + to non-raw video buffers such as GL/VAAPI/VDPAU surfaces. The actual + blending of the overlay can then be done by e.g. the video sink that + processes these non-raw buffers. + +* it can also be used to blend overlay rectangles on top of raw video + buffers, thus consolidating blending functionality for raw video in + one place. + +Together, this allows existing overlay elements to easily handle raw +and non-raw video as input in without major changes (once the overlays +have been put into a #GstVideoOverlayComposition object anyway) - for raw +video the overlay can just use the blending function to blend the data +on top of the video, and for surface buffers it can just attach them to +the buffer and let the sink render the overlays. + + + Creates a new video overlay composition object to hold one or more +overlay rectangles. + +Note that since 1.20 this allows to pass %NULL for @rectangle. + + + a new #GstVideoOverlayComposition. Unref with + gst_video_overlay_composition_unref() when no longer needed. + + + + + a #GstVideoOverlayRectangle to add to the + composition + + + + + + Adds an overlay rectangle to an existing overlay composition object. This +must be done right after creating the overlay composition. + + + + + + + a #GstVideoOverlayComposition + + + + a #GstVideoOverlayRectangle to add to the + composition + + + + + + Blends the overlay rectangles in @comp on top of the raw video data +contained in @video_buf. The data in @video_buf must be writable and +mapped appropriately. + +Since @video_buf data is read and will be modified, it ought be +mapped with flag GST_MAP_READWRITE. + + + + + + + a #GstVideoOverlayComposition + + + + a #GstVideoFrame containing raw video data in a + supported format. It should be mapped using GST_MAP_READWRITE + + + + + + Makes a copy of @comp and all contained rectangles, so that it is possible +to modify the composition and contained rectangles (e.g. add additional +rectangles or change the render co-ordinates or render dimension). The +actual overlay pixel data buffers contained in the rectangles are not +copied. + + + a new #GstVideoOverlayComposition equivalent + to @comp. + + + + + a #GstVideoOverlayComposition to copy + + + + + + Returns the @n-th #GstVideoOverlayRectangle contained in @comp. + + + the @n-th rectangle, or NULL if @n is out of + bounds. Will not return a new reference, the caller will need to + obtain her own reference using gst_video_overlay_rectangle_ref() + if needed. + + + + + a #GstVideoOverlayComposition + + + + number of the rectangle to get + + + + + + Returns the sequence number of this composition. Sequence numbers are +monotonically increasing and unique for overlay compositions and rectangles +(meaning there will never be a rectangle with the same sequence number as +a composition). + + + the sequence number of @comp + + + + + a #GstVideoOverlayComposition + + + + + + Takes ownership of @comp and returns a version of @comp that is writable +(i.e. can be modified). Will either return @comp right away, or create a +new writable copy of @comp and unref @comp itself. All the contained +rectangles will also be copied, but the actual overlay pixel data buffers +contained in the rectangles are not copied. + + + a writable #GstVideoOverlayComposition + equivalent to @comp. + + + + + a #GstVideoOverlayComposition to copy + + + + + + Returns the number of #GstVideoOverlayRectangle<!-- -->s contained in @comp. + + + the number of rectangles + + + + + a #GstVideoOverlayComposition + + + + + + + Extra buffer metadata describing image overlay data. + + + parent #GstMeta + + + + the attached #GstVideoOverlayComposition + + + + + + + + + + + Overlay format flags. + + no flags + + + RGB are premultiplied by A/255. + + + a global-alpha value != 1 is set. + + + + #GstVideoOverlay interface + + + parent interface type. + + + + + + + + + + + a #GstVideoOverlay to expose. + + + + + + + + + + + + + + a #GstVideoOverlay to expose. + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstVideoOverlay to set the window on. + + + + a handle referencing the window. + + + + + + + + An opaque video overlay rectangle object. A rectangle contains a single +overlay rectangle which can be added to a composition. + + + Creates a new video overlay rectangle with ARGB or AYUV pixel data. +The layout in case of ARGB of the components in memory is B-G-R-A +on little-endian platforms +(corresponding to #GST_VIDEO_FORMAT_BGRA) and A-R-G-B on big-endian +platforms (corresponding to #GST_VIDEO_FORMAT_ARGB). In other words, +pixels are treated as 32-bit words and the lowest 8 bits then contain +the blue component value and the highest 8 bits contain the alpha +component value. Unless specified in the flags, the RGB values are +non-premultiplied. This is the format that is used by most hardware, +and also many rendering libraries such as Cairo, for example. +The pixel data buffer must have #GstVideoMeta set. + + + a new #GstVideoOverlayRectangle. Unref with + gst_video_overlay_rectangle_unref() when no longer needed. + + + + + a #GstBuffer pointing to the pixel memory + + + + the X co-ordinate on the video where the top-left corner of this + overlay rectangle should be rendered to + + + + the Y co-ordinate on the video where the top-left corner of this + overlay rectangle should be rendered to + + + + the render width of this rectangle on the video + + + + the render height of this rectangle on the video + + + + flags + + + + + + Makes a copy of @rectangle, so that it is possible to modify it +(e.g. to change the render co-ordinates or render dimension). The +actual overlay pixel data buffers contained in the rectangle are not +copied. + + + a new #GstVideoOverlayRectangle equivalent + to @rectangle. + + + + + a #GstVideoOverlayRectangle to copy + + + + + + Retrieves the flags associated with a #GstVideoOverlayRectangle. +This is useful if the caller can handle both premultiplied alpha and +non premultiplied alpha, for example. By knowing whether the rectangle +uses premultiplied or not, it can request the pixel data in the format +it is stored in, to avoid unnecessary conversion. + + + the #GstVideoOverlayFormatFlags associated with the rectangle. + + + + + a #GstVideoOverlayRectangle + + + + + + Retrieves the global-alpha value associated with a #GstVideoOverlayRectangle. + + + the global-alpha value associated with the rectangle. + + + + + a #GstVideoOverlayRectangle + + + + + + + + a #GstBuffer holding the ARGB pixel data with + width and height of the render dimensions as per + gst_video_overlay_rectangle_get_render_rectangle(). This function does + not return a reference, the caller should obtain a reference of her own + with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + + + a #GstBuffer holding the AYUV pixel data with + width and height of the render dimensions as per + gst_video_overlay_rectangle_get_render_rectangle(). This function does + not return a reference, the caller should obtain a reference of her own + with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + + + a #GstBuffer holding the pixel data with + format as originally provided and specified in video meta with + width and height of the render dimensions as per + gst_video_overlay_rectangle_get_render_rectangle(). This function does + not return a reference, the caller should obtain a reference of her own + with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + Retrieves the pixel data as it is. This is useful if the caller can +do the scaling itself when handling the overlaying. The rectangle will +need to be scaled to the render dimensions, which can be retrieved using +gst_video_overlay_rectangle_get_render_rectangle(). + + + a #GstBuffer holding the ARGB pixel data with + #GstVideoMeta set. This function does not return a reference, the caller + should obtain a reference of her own with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags. + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + Retrieves the pixel data as it is. This is useful if the caller can +do the scaling itself when handling the overlaying. The rectangle will +need to be scaled to the render dimensions, which can be retrieved using +gst_video_overlay_rectangle_get_render_rectangle(). + + + a #GstBuffer holding the AYUV pixel data with + #GstVideoMeta set. This function does not return a reference, the caller + should obtain a reference of her own with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags. + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + Retrieves the pixel data as it is. This is useful if the caller can +do the scaling itself when handling the overlaying. The rectangle will +need to be scaled to the render dimensions, which can be retrieved using +gst_video_overlay_rectangle_get_render_rectangle(). + + + a #GstBuffer holding the pixel data with + #GstVideoMeta set. This function does not return a reference, the caller + should obtain a reference of her own with gst_buffer_ref() if needed. + + + + + a #GstVideoOverlayRectangle + + + + flags. + If a global_alpha value != 1 is set for the rectangle, the caller + should set the #GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA flag + if he wants to apply global-alpha himself. If the flag is not set + global_alpha is applied internally before returning the pixel-data. + + + + + + Retrieves the render position and render dimension of the overlay +rectangle on the video. + + + TRUE if valid render dimensions were retrieved. + + + + + a #GstVideoOverlayRectangle + + + + address where to store the X render offset + + + + address where to store the Y render offset + + + + address where to store the render width + + + + address where to store the render height + + + + + + Returns the sequence number of this rectangle. Sequence numbers are +monotonically increasing and unique for overlay compositions and rectangles +(meaning there will never be a rectangle with the same sequence number as +a composition). + +Using the sequence number of a rectangle as an indicator for changed +pixel-data of a rectangle is dangereous. Some API calls, like e.g. +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_*() +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. + + + the sequence number of @rectangle + + + + + a #GstVideoOverlayRectangle + + + + + + Sets the global alpha value associated with a #GstVideoOverlayRectangle. Per- +pixel alpha values are multiplied with this value. Valid +values: 0 <= global_alpha <= 1; 1 to deactivate. + +@rectangle must be writable, meaning its refcount must be 1. You can +make the rectangles inside a #GstVideoOverlayComposition writable using +gst_video_overlay_composition_make_writable() or +gst_video_overlay_composition_copy(). + + + + + + + a #GstVideoOverlayRectangle + + + + Global alpha value (0 to 1.0) + + + + + + Sets the render position and dimensions of the rectangle on the video. +This function is mainly for elements that modify the size of the video +in some way (e.g. through scaling or cropping) and need to adjust the +details of any overlays to match the operation that changed the size. + +@rectangle must be writable, meaning its refcount must be 1. You can +make the rectangles inside a #GstVideoOverlayComposition writable using +gst_video_overlay_composition_make_writable() or +gst_video_overlay_composition_copy(). + + + + + + + a #GstVideoOverlayRectangle + + + + render X position of rectangle on video + + + + render Y position of rectangle on video + + + + render width of rectangle + + + + render height of rectangle + + + + + + + The different flags that can be used when packing and unpacking. + + No flag + + + When the source has a smaller depth + than the target format, set the least significant bits of the target + 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. + + + The source is interlaced. The unpacked + format will be interlaced as well with each line containing + information from alternating fields. (Since: 1.2) + + + + Different primaries conversion modes + + disable conversion between primaries + + + do conversion between primaries only + when it can be merged with color matrix conversion. + + + fast conversion between primaries + + + + Helper structure representing a rectangular area. + + + X coordinate of rectangle's top-left point + + + + Y coordinate of rectangle's top-left point + + + + width of the rectangle + + + + height of the rectangle + + + + + Extra buffer metadata describing an image region of interest + + + parent #GstMeta + + + + GQuark describing the semantic of the Roi (f.i. a face, a pedestrian) + + + + identifier of this particular ROI + + + + identifier of its parent ROI, used f.i. for ROI hierarchisation. + + + + x component of upper-left corner + + + + y component of upper-left corner + + + + bounding box width + + + + bounding box height + + + + list of #GstStructure containing element-specific params for downstream, + see gst_video_region_of_interest_meta_add_param(). (Since: 1.14) + + + + + + Attach element-specific parameters to @meta meant to be used by downstream +elements which may handle this ROI. +The name of @s is used to identify the element these parameters are meant for. + +This is typically used to tell encoders how they should encode this specific region. +For example, a structure named "roi/x264enc" could be used to give the +QP offsets this encoder should use when encoding the region described in @meta. +Multiple parameters can be defined for the same meta so different encoders +can be supported by cross platform applications). + + + + + + + a #GstVideoRegionOfInterestMeta + + + + a #GstStructure + + + + + + Retrieve the parameter for @meta having @name as structure name, +or %NULL if there is none. + +See also: gst_video_region_of_interest_meta_add_param() + + + a #GstStructure + + + + + a #GstVideoRegionOfInterestMeta + + + + a name. + + + + + + + + + + + + + #GstVideoResampler is a structure which holds the information +required to perform various kinds of resampling filtering. + + + the input size + + + + the output size + + + + the maximum number of taps + + + + the number of phases + + + + array with the source offset for each output element + + + + array with the phase to use for each output element + + + + array with new number of taps for each phase + + + + the taps for all phases + + + + + + + + + Clear a previously initialized #GstVideoResampler @resampler. + + + + + + + a #GstVideoResampler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Different resampler flags. + + no flags + + + when no taps are given, half the + number of calculated taps. This can be used when making scalers + for the different fields of an interlaced picture. Since: 1.10 + + + + Different subsampling and upsampling methods + + Duplicates the samples when + upsampling and drops when downsampling + + + Uses linear interpolation to reconstruct + missing samples and averaging to downsample + + + Uses cubic interpolation + + + Uses sinc interpolation + + + Uses lanczos interpolation + + + + H.264 H.265 metadata from SEI User Data Unregistered messages + + + parent #GstMeta + + + + User Data Unregistered UUID + + + + + + Unparsed data buffer + + + + Size of the data buffer + + + + + + #GstMetaInfo pointer that describes #GstVideoSEIUserDataUnregisteredMeta. + + + + + + #GstVideoScaler is a utility object for rescaling and resampling +video frames using various interpolation / sampling methods. + + + Scale a rectangle of pixels in @src with @src_stride to @dest with +@dest_stride using the horizontal scaler @hscaler and the vertical +scaler @vscale. + +One or both of @hscale and @vscale can be NULL to only perform scaling in +one dimension or do a copy without scaling. + +@x and @y are the coordinates in the destination image to process. + + + + + + + a horizontal #GstVideoScaler + + + + a vertical #GstVideoScaler + + + + a #GstVideoFormat for @srcs and @dest + + + + source pixels + + + + source pixels stride + + + + destination pixels + + + + destination pixels stride + + + + the horizontal destination offset + + + + the vertical destination offset + + + + the number of output pixels to scale + + + + the number of output lines to scale + + + + + + Combine a scaler for Y and UV into one scaler for the packed @format. + + + a new horizontal videoscaler for @format. + + + + + a scaler for the Y component + + + + a scaler for the U and V components + + + + the input video format + + + + the output video format + + + + + + Free a previously allocated #GstVideoScaler @scale. + + + + + + + a #GstVideoScaler + + + + + + For a given pixel at @out_offset, get the first required input pixel at +@in_offset and the @n_taps filter coefficients. + +Note that for interlaced content, @in_offset needs to be incremented with +2 to get the next input line. + + + an array of @n_tap gdouble values with filter coefficients. + + + + + a #GstVideoScaler + + + + an output offset + + + + result input offset + + + + result n_taps + + + + + + Get the maximum number of taps for @scale. + + + the maximum number of taps + + + + + a #GstVideoScaler + + + + + + Horizontally scale the pixels in @src to @dest, starting from @dest_offset +for @width samples. + + + + + + + a #GstVideoScaler + + + + a #GstVideoFormat for @src and @dest + + + + source pixels + + + + destination pixels + + + + the horizontal destination offset + + + + the number of pixels to scale + + + + + + 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. + + + + + + + a #GstVideoScaler + + + + a #GstVideoFormat for @srcs and @dest + + + + source pixels lines + + + + destination pixels + + + + the vertical destination offset + + + + the number of pixels to scale + + + + + + Make a new @method video scaler. @in_size source lines/pixels will +be scaled to @out_size destination lines/pixels. + +@n_taps specifies the amount of pixels to use from the source for one output +pixel. If n_taps is 0, this function chooses a good value automatically based +on the @method and @in_size/@out_size. + + + a #GstVideoScaler + + + + + a #GstVideoResamplerMethod + + + + #GstVideoScalerFlags + + + + number of taps to use + + + + number of source elements + + + + number of destination elements + + + + extra options + + + + + + + Different scale flags. + + no flags + + + Set up a scaler for interlaced content + + + + Provides useful functions and a base class for video sinks. + +GstVideoSink will configure the default base sink to drop frames that +arrive later than 20ms as this is considered the default threshold for +observing out-of-sync frames. + + + Use gst_video_center_rect() instead. + + + + + + + the #GstVideoRectangle describing the source area + + + + the #GstVideoRectangle describing the destination area + + + + a pointer to a #GstVideoRectangle which will receive the result area + + + + a #gboolean indicating if scaling should be applied or not + + + + + + Notifies the subclass of changed #GstVideoInfo. + + + + + + + + + + A #GstCaps. + + + + A #GstVideoInfo corresponding to @caps. + + + + + + + + + + + + + + + + + + + + Whether to show video frames during preroll. If set to %FALSE, video +frames will only be rendered in PLAYING state. + + + + + + + video width (derived class needs to set this) + + + + video height (derived class needs to set this) + + + + + + + + + + + + + The video sink class structure. Derived classes should override the +@show_frame virtual function. + + + the parent class structure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A #GstCaps. + + + + A #GstVideoInfo corresponding to @caps. + + + + + + + + + + + + + + + + Description of a tile. This structure allow to describe arbitrary tile +dimensions and sizes. + + + + + + + + + + + + + + + + + + + + + Enum value describing the available tiling modes. + + Unknown or unset tile mode + + + Every four adjacent blocks - two + horizontally and two vertically are grouped together and are located + in memory in Z or flipped Z order. In case of odd rows, the last row + of blocks is arranged in linear order. + + + Tiles are in row order. (Since: 1.18) + + + + Enum value describing the most common tiling types. + + Tiles are indexed. Use + gst_video_tile_get_index () to retrieve the tile at the requested + coordinates. + + + + @field_count must be 0 for progressive video and 1 or 2 for interlaced. + +A representation of a SMPTE time code. + +@hours must be positive and less than 24. Will wrap around otherwise. +@minutes and @seconds must be positive and less than 60. +@frames must be less than or equal to @config.fps_n / @config.fps_d +These values are *NOT* automatically normalized. + + + the corresponding #GstVideoTimeCodeConfig + + + + the hours field of #GstVideoTimeCode + + + + the minutes field of #GstVideoTimeCode + + + + the seconds field of #GstVideoTimeCode + + + + the frames field of #GstVideoTimeCode + + + + Interlaced video field count + + + + @field_count is 0 for progressive, 1 or 2 for interlaced. +@latest_daiy_jam reference is stolen from caller. + + + a new #GstVideoTimeCode with the given values. +The values are not checked for being in a valid range. To see if your +timecode actually has valid content, use gst_video_time_code_is_valid(). + + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + The latest daily jam of the #GstVideoTimeCode + + + + #GstVideoTimeCodeFlags + + + + the hours field of #GstVideoTimeCode + + + + the minutes field of #GstVideoTimeCode + + + + the seconds field of #GstVideoTimeCode + + + + the frames field of #GstVideoTimeCode + + + + Interlaced video field count + + + + + + + + a new empty, invalid #GstVideoTimeCode + + + + + The resulting config->latest_daily_jam is set to +midnight, and timecode is set to the given time. + +This might return a completely invalid timecode, use +gst_video_time_code_new_from_date_time_full() to ensure +that you would get %NULL instead in that case. + + + the #GstVideoTimeCode representation of @dt. + + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + #GDateTime to convert + + + + #GstVideoTimeCodeFlags + + + + Interlaced video field count + + + + + + The resulting config->latest_daily_jam is set to +midnight, and timecode is set to the given time. + + + the #GstVideoTimeCode representation of @dt, or %NULL if + no valid timecode could be created. + + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + #GDateTime to convert + + + + #GstVideoTimeCodeFlags + + + + Interlaced video field count + + + + + + + + a new #GstVideoTimeCode from the given string or %NULL + if the string could not be passed. + + + + + The string that represents the #GstVideoTimeCode + + + + + + Adds or subtracts @frames amount of frames to @tc. tc needs to +contain valid data, as verified by gst_video_time_code_is_valid(). + + + + + + + a valid #GstVideoTimeCode + + + + How many frames to add or subtract + + + + + + This makes a component-wise addition of @tc_inter to @tc. For example, +adding ("01:02:03:04", "00:01:00:00") will return "01:03:03:04". +When it comes to drop-frame timecodes, +adding ("00:00:00;00", "00:01:00:00") will return "00:01:00;02" +because of drop-frame oddities. However, +adding ("00:09:00;02", "00:01:00:00") will return "00:10:00;00" +because this time we can have an exact minute. + + + A new #GstVideoTimeCode with @tc_inter added or %NULL + if the interval can't be added. + + + + + The #GstVideoTimeCode where the diff should be added. This +must contain valid timecode values. + + + + The #GstVideoTimeCodeInterval to add to @tc. +The interval must contain valid values, except that for drop-frame +timecode, it may also contain timecodes which would normally +be dropped. These are then corrected to the next reasonable timecode. + + + + + + Initializes @tc with empty/zero/NULL values and frees any memory +it might currently use. + + + + + + + a #GstVideoTimeCode + + + + + + Compares @tc1 and @tc2. If both have latest daily jam information, it is +taken into account. Otherwise, it is assumed that the daily jam of both +@tc1 and @tc2 was at the same time. Both time codes must be valid. + + + 1 if @tc1 is after @tc2, -1 if @tc1 is before @tc2, 0 otherwise. + + + + + a valid #GstVideoTimeCode + + + + another valid #GstVideoTimeCode + + + + + + + + a new #GstVideoTimeCode with the same values as @tc. + + + + + a #GstVideoTimeCode + + + + + + + + how many frames have passed since the daily jam of @tc. + + + + + a valid #GstVideoTimeCode + + + + + + Frees @tc. + + + + + + + a #GstVideoTimeCode + + + + + + Adds one frame to @tc. + + + + + + + a valid #GstVideoTimeCode + + + + + + @field_count is 0 for progressive, 1 or 2 for interlaced. +@latest_daiy_jam reference is stolen from caller. + +Initializes @tc with the given values. +The values are not checked for being in a valid range. To see if your +timecode actually has valid content, use gst_video_time_code_is_valid(). + + + + + + + a #GstVideoTimeCode + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + The latest daily jam of the #GstVideoTimeCode + + + + #GstVideoTimeCodeFlags + + + + the hours field of #GstVideoTimeCode + + + + the minutes field of #GstVideoTimeCode + + + + the seconds field of #GstVideoTimeCode + + + + the frames field of #GstVideoTimeCode + + + + Interlaced video field count + + + + + + The resulting config->latest_daily_jam is set to midnight, and timecode is +set to the given time. + +Will assert on invalid parameters, use gst_video_time_code_init_from_date_time_full() +for being able to handle invalid parameters. + + + + + + + an uninitialized #GstVideoTimeCode + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + #GDateTime to convert + + + + #GstVideoTimeCodeFlags + + + + Interlaced video field count + + + + + + The resulting config->latest_daily_jam is set to +midnight, and timecode is set to the given time. + + + %TRUE if @tc could be correctly initialized to a valid timecode + + + + + a #GstVideoTimeCode + + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + #GDateTime to convert + + + + #GstVideoTimeCodeFlags + + + + Interlaced video field count + + + + + + + + whether @tc is a valid timecode (supported frame rate, +hours/minutes/seconds/frames not overflowing) + + + + + #GstVideoTimeCode to check + + + + + + + + how many nsec have passed since the daily jam of @tc. + + + + + a valid #GstVideoTimeCode + + + + + + The @tc.config->latest_daily_jam is required to be non-NULL. + + + the #GDateTime representation of @tc or %NULL if @tc + has no daily jam. + + + + + A valid #GstVideoTimeCode to convert + + + + + + + + the SMPTE ST 2059-1:2015 string representation of @tc. That will +take the form hh:mm:ss:ff. The last separator (between seconds and frames) +may vary: + +';' for drop-frame, non-interlaced content and for drop-frame interlaced +field 2 +',' for drop-frame interlaced field 1 +':' for non-drop-frame, non-interlaced content and for non-drop-frame +interlaced field 2 +'.' for non-drop-frame interlaced field 1 + + + + + A #GstVideoTimeCode to convert + + + + + + + Supported frame rates: 30000/1001, 60000/1001 (both with and without drop +frame), and integer frame rates e.g. 25/1, 30/1, 50/1, 60/1. + +The configuration of the time code. + + + Numerator of the frame rate + + + + Denominator of the frame rate + + + + the corresponding #GstVideoTimeCodeFlags + + + + The latest daily jam information, if present, or NULL + + + + + 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 + + + + A representation of a difference between two #GstVideoTimeCode instances. +Will not necessarily correspond to a real timecode (e.g. 00:00:10;00) + + + the hours field of #GstVideoTimeCodeInterval + + + + the minutes field of #GstVideoTimeCodeInterval + + + + the seconds field of #GstVideoTimeCodeInterval + + + + the frames field of #GstVideoTimeCodeInterval + + + + + + a new #GstVideoTimeCodeInterval with the given values. + + + + + the hours field of #GstVideoTimeCodeInterval + + + + the minutes field of #GstVideoTimeCodeInterval + + + + the seconds field of #GstVideoTimeCodeInterval + + + + the frames field of #GstVideoTimeCodeInterval + + + + + + @tc_inter_str must only have ":" as separators. + + + a new #GstVideoTimeCodeInterval from the given string + or %NULL if the string could not be passed. + + + + + The string that represents the #GstVideoTimeCodeInterval + + + + + + Initializes @tc with empty/zero/NULL values. + + + + + + + a #GstVideoTimeCodeInterval + + + + + + + + a new #GstVideoTimeCodeInterval with the same values as @tc. + + + + + a #GstVideoTimeCodeInterval + + + + + + Frees @tc. + + + + + + + a #GstVideoTimeCodeInterval + + + + + + Initializes @tc with the given values. + + + + + + + a #GstVideoTimeCodeInterval + + + + the hours field of #GstVideoTimeCodeInterval + + + + the minutes field of #GstVideoTimeCodeInterval + + + + the seconds field of #GstVideoTimeCodeInterval + + + + the frames field of #GstVideoTimeCodeInterval + + + + + + + Extra buffer metadata describing the GstVideoTimeCode of the frame. + +Each frame is assumed to have its own timecode, i.e. they are not +automatically incremented/interpolated. + + + parent #GstMeta + + + + the GstVideoTimeCode to attach + + + + + + + + + + + The video transfer function defines the formula for converting between +non-linear RGB (R'G'B') and linear RGB + + unknown transfer function + + + linear RGB, gamma 1.0 curve + + + Gamma 1.8 curve + + + Gamma 2.0 curve + + + Gamma 2.2 curve + + + Gamma 2.2 curve with a linear segment in the lower + range, also ITU-R BT470M / ITU-R BT1700 625 PAL & + SECAM / ITU-R BT1361 + + + Gamma 2.2 curve with a linear segment in the + lower range + + + Gamma 2.4 curve with a linear segment in the lower + range. IEC 61966-2-1 (sRGB or sYCC) + + + Gamma 2.8 curve, also ITU-R BT470BG + + + Logarithmic transfer characteristic + 100:1 range + + + Logarithmic transfer characteristic + 316.22777:1 range (100 * sqrt(10) : 1) + + + Gamma 2.2 curve with a linear segment in the lower + range. Used for BT.2020 with 12 bits per + component. Since: 1.6 + + + 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_BT601). + 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 + + + also known as SMPTE170M / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC + Functionally the same as the values + GST_VIDEO_TRANSFER_BT709, and GST_VIDEO_TRANSFER_BT2020_10. + Since: 1.18 + + + Convert @val to its gamma decoded value. This is the inverse operation of +gst_video_color_transfer_encode(). + +For a non-linear value L' in the range [0..1], conversion to the linear +L is in general performed with a power function like: + +|[ + L = L' ^ gamma +]| + +Depending on @func, different formulas might be applied. Some formulas +encode a linear segment in the lower range. + + + the gamma decoded value of @val + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + Convert @val to its gamma encoded value. + +For a linear value L in the range [0..1], conversion to the non-linear +(gamma encoded) L' is in general performed with a power function like: + +|[ + L' = L ^ (1 / gamma) +]| + +Depending on @func, different formulas might be applied. Some formulas +encode a linear segment in the lower range. + + + the gamma encoded value of @val + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + 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 + + + + + + Returns whether @from_func and @to_func are equivalent. There are cases +(e.g. BT601, BT709, and BT2020_10) where several functions are functionally +identical. In these cases, when doing conversion, we should consider them +as equivalent. Also, BT2020_12 is the same as the aforementioned three for +less than 12 bits per pixel. + + + TRUE if @from_func and @to_func can be considered equivalent. + + + + + #GstVideoTransferFunction to convert from + + + + bits per pixel to convert from + + + + #GstVideoTransferFunction to convert into + + + + bits per pixel to convert into + + + + + + 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 + + + + + + + An encoder for writing ancillary data to the +Vertical Blanking Interval lines of component signals. + + + Create a new #GstVideoVBIEncoder for the specified @format and @pixel_width. + + + The new #GstVideoVBIEncoder or %NULL if the @format and/or @pixel_width +is not supported. + + + + + a #GstVideoFormat + + + + The width in pixel to use + + + + + + Stores Video Ancillary data, according to SMPTE-291M specification. + +Note that the contents of the data are always read as 8bit data (i.e. do not contain +the parity check bits). + + + %TRUE if enough space was left in the current line, %FALSE + otherwise. + + + + + a #GstVideoVBIEncoder + + + + %TRUE if composite ADF should be created, component otherwise + + + + The Data Identifier + + + + The Secondary Data Identifier (if type 2) or the Data + Block Number (if type 1) + + + + The user data content of the Ancillary packet. + Does not contain the ADF, DID, SDID nor CS. + + + + + + The amount of data (in bytes) in @data (max 255 bytes) + + + + + + + + + + + + + + + + + Frees the @encoder. + + + + + + + a #GstVideoVBIEncoder + + + + + + + + + + + + + + + + + + + + + A parser for detecting and extracting @GstVideoAncillary data from +Vertical Blanking Interval lines of component signals. + + + Create a new #GstVideoVBIParser for the specified @format and @pixel_width. + + + The new #GstVideoVBIParser or %NULL if the @format and/or @pixel_width +is not supported. + + + + + a #GstVideoFormat + + + + The width in pixel to use + + + + + + Provide a new line of data to the @parser. Call gst_video_vbi_parser_get_ancillary() +to get the Ancillary data that might be present on that line. + + + + + + + a #GstVideoVBIParser + + + + The line of data to parse + + + + + + + + + + + + + + + + + + + Frees the @parser. + + + + + + + a #GstVideoVBIParser + + + + + + Parse the line provided previously by gst_video_vbi_parser_add_line(). + + + %GST_VIDEO_VBI_PARSER_RESULT_OK if ancillary data was found and +@anc was filled. %GST_VIDEO_VBI_PARSER_RESULT_DONE if there wasn't any +data. + + + + + a #GstVideoVBIParser + + + + a #GstVideoAncillary to start the eventual ancillary data + + + + + + + Return values for #GstVideoVBIParser + + No line were provided, or no more Ancillary data was found. + + + A #GstVideoAncillary was found. + + + 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. + + + the #GstVideoAffineTransformationMeta on @buffer. + + + + + a #GstBuffer + + + + + + 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. + + + the #GstVideoCaptionMeta on @buffer. + + + + + a #GstBuffer + + + + The type of Closed Caption to add + + + + The Closed Caption data + + + + + + The size of @data in bytes + + + + + + Attaches a #GstVideoCodecAlphaMeta metadata to @buffer with +the given alpha buffer. + + + the #GstVideoCodecAlphaMeta on @buffer. + + + + + a #GstBuffer + + + + a #GstBuffer + + + + + + + + + + + + + Attaches GstVideoGLTextureUploadMeta metadata to @buffer with the given +parameters. + + + the #GstVideoGLTextureUploadMeta on @buffer. + + + + + a #GstBuffer + + + + the #GstVideoGLTextureOrientation + + + + the number of textures + + + + array of #GstVideoGLTextureType + + + + the function to upload the buffer to a specific texture ID + + + + user data for the implementor of @upload + + + + function to copy @user_data + + + + function to free @user_data + + + + + + Attaches GstVideoMeta metadata to @buffer with the given parameters and the +default offsets and strides for @format and @width x @height. + +This function calculates the default offsets and strides and then calls +gst_buffer_add_video_meta_full() with them. + + + the #GstVideoMeta on @buffer. + + + + + a #GstBuffer + + + + #GstVideoFrameFlags + + + + a #GstVideoFormat + + + + the width + + + + the height + + + + + + Attaches GstVideoMeta metadata to @buffer with the given parameters. + + + the #GstVideoMeta on @buffer. + + + + + a #GstBuffer + + + + #GstVideoFrameFlags + + + + a #GstVideoFormat + + + + the width + + + + the height + + + + number of planes + + + + offset of each plane + + + + + + stride of each plane + + + + + + + + Sets an overlay composition on a buffer. The buffer will obtain its own +reference to the composition, meaning this function does not take ownership +of @comp. + + + a #GstVideoOverlayCompositionMeta + + + + + a #GstBuffer + + + + a #GstVideoOverlayComposition + + + + + + Attaches #GstVideoRegionOfInterestMeta metadata to @buffer with the given +parameters. + + + the #GstVideoRegionOfInterestMeta on @buffer. + + + + + a #GstBuffer + + + + Type of the region of interest (e.g. "face") + + + + X position + + + + Y position + + + + width + + + + height + + + + + + Attaches #GstVideoRegionOfInterestMeta metadata to @buffer with the given +parameters. + + + the #GstVideoRegionOfInterestMeta on @buffer. + + + + + a #GstBuffer + + + + Type of the region of interest (e.g. "face") + + + + X position + + + + Y position + + + + width + + + + height + + + + + + Attaches #GstVideoSEIUserDataUnregisteredMeta metadata to @buffer with the given +parameters. + + + the #GstVideoSEIUserDataUnregisteredMeta on @buffer. + + + + + a #GstBuffer + + + + User Data Unregistered UUID + + + + SEI User Data Unregistered buffer + + + + size of the data buffer + + + + + + Attaches #GstVideoTimeCodeMeta metadata to @buffer with the given +parameters. + + + the #GstVideoTimeCodeMeta on @buffer, or +(since 1.16) %NULL if the timecode was invalid. + + + + + a #GstBuffer + + + + a #GstVideoTimeCode + + + + + + Attaches #GstVideoTimeCodeMeta metadata to @buffer with the given +parameters. + + + the #GstVideoTimeCodeMeta on @buffer, or +(since 1.16) %NULL if the timecode was invalid. + + + + + a #GstBuffer + + + + framerate numerator + + + + framerate denominator + + + + a #GDateTime for the latest daily jam + + + + a #GstVideoTimeCodeFlags + + + + hours since the daily jam + + + + minutes since the daily jam + + + + seconds since the daily jam + + + + frames since the daily jam + + + + fields since the daily jam + + + + + + Gets the #GstVideoAFDMeta that might be present on @b. + +Note: there may be two #GstVideoAFDMeta structs for interlaced video. + + + + A #GstBuffer + + + + + + + + + + + + Gets the #GstVideoBarMeta that might be present on @b. + + + + A #GstBuffer + + + + + Gets the #GstVideoCaptionMeta that might be present on @b. + + + + A #GstBuffer + + + + + Helper macro to get #GstVideoCodecAlphaMeta from an existing #GstBuffer. + + + + A #GstBuffer pointer, must be writable. + + + + + + + + + + + + + + + + + + + Find the #GstVideoMeta on @buffer with the lowest @id. + +Buffers can contain multiple #GstVideoMeta metadata items when dealing with +multiview buffers. + + + the #GstVideoMeta with lowest id (usually 0) or %NULL when there +is no such metadata on @buffer. + + + + + a #GstBuffer + + + + + + Find the #GstVideoMeta on @buffer with the given @id. + +Buffers can contain multiple #GstVideoMeta metadata items when dealing with +multiview buffers. + + + the #GstVideoMeta with @id or %NULL when there is no such metadata +on @buffer. + + + + + a #GstBuffer + + + + a metadata id + + + + + + + + + + + + + + + + + + + + + + + + + + + Find the #GstVideoRegionOfInterestMeta on @buffer with the given @id. + +Buffers can contain multiple #GstVideoRegionOfInterestMeta metadata items if +multiple regions of interests are marked on a frame. + + + the #GstVideoRegionOfInterestMeta with @id or %NULL when there is +no such metadata on @buffer. + + + + + a #GstBuffer + + + + a metadata id + + + + + + Gets the GstVideoSEIUserDataUnregisteredMeta that might be present on @b. + + + + A #GstBuffer + + + + + + + + + + + + Get the video alignment from the bufferpool configuration @config in +in @align + + + %TRUE if @config could be parsed correctly. + + + + + a #GstStructure + + + + a #GstVideoAlignment + + + + + + Set the video alignment in @align to the bufferpool configuration +@config + + + + + + + a #GstStructure + + + + a #GstVideoAlignment + + + + + + + + + + + + + + + Convenience function to check if the given message is a +"prepare-window-handle" message from a #GstVideoOverlay. + + + whether @msg is a "prepare-window-handle" message + + + + + a #GstMessage + + + + + + Try to retrieve x and y coordinates of a #GstNavigation event. + + + A boolean indicating success. + + + + + The #GstEvent to inspect. + + + + Pointer to a gdouble to receive the x coordinate of the + navigation event. + + + + Pointer to a gdouble to receive the y coordinate of the + navigation event. + + + + + + Inspect a #GstEvent and return the #GstNavigationEventType of the event, or +#GST_NAVIGATION_EVENT_INVALID if the event is not a #GstNavigation event. + + + + + + + A #GstEvent to inspect. + + + + + + Create a new navigation event given navigation command.. + + + a new #GstEvent + + + + + The navigation command to use. + + + + + + Create a new navigation event for the given key press. + + + a new #GstEvent + + + + + A string identifying the key press. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key release. + + + a new #GstEvent + + + + + A string identifying the released key. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key mouse button press. + + + a new #GstEvent + + + + + The number of the pressed mouse button. + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the given key mouse button release. + + + a new #GstEvent + + + + + The number of the released mouse button. + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the new mouse location. + + + a new #GstEvent + + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for the mouse scroll. + + + a new #GstEvent + + + + + The x coordinate of the mouse cursor. + + + + The y coordinate of the mouse cursor. + + + + The x component of the scroll movement. + + + + The y component of the scroll movement. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event signalling that all currently active touch +points are cancelled and should be discarded. For example, under Wayland +this event might be sent when a swipe passes the threshold to be recognized +as a gesture by the compositor. + + + a new #GstEvent + + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for an added touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must stay + unique to this touch point at least until an up event is sent for + the same identifier, or all touch points are cancelled. + + + + The x coordinate of the new touch point. + + + + The y coordinate of the new touch point. + + + + Pressure data of the touch point, from 0.0 to 1.0, or NaN if no + data is available. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event signalling the end of a touch frame. Touch +frames signal that all previous down, motion and up events not followed by +another touch frame event already should be considered simultaneous. + + + a new #GstEvent + + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for a moved touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must + correlate to exactly one previous touch_start event. + + + + The x coordinate of the touch point. + + + + The y coordinate of the touch point. + + + + Pressure data of the touch point, from 0.0 to 1.0, or NaN if no + data is available. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Create a new navigation event for a removed touch point. + + + a new #GstEvent + + + + + A number uniquely identifying this touch point. It must + correlate to exactly one previous down event, but can be reused + after sending this event. + + + + The x coordinate of the touch point. + + + + The y coordinate of the touch point. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Inspect a #GstNavigation command event and retrieve the enum value of the +associated command. + + + TRUE if the navigation command could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to GstNavigationCommand to receive the + type of the navigation event. + + + + + + Note: Modifier keys (as defined in #GstNavigationModifierType) +[press](GST_NAVIGATION_EVENT_KEY_PRESS) and +[release](GST_NAVIGATION_KEY_PRESS) events are generated even if those states are +present on all other related events + + + + + + + A #GstEvent to inspect. + + + + A pointer to a location to receive + the string identifying the key press. The returned string is owned by the + event, and valid only until the event is unreffed. + + + + + + + + TRUE if the event is a #GstNavigation event with associated +modifiers state, otherwise FALSE. + + + + + The #GstEvent to modify. + + + + a bit-mask representing the state of the modifier keys (e.g. Control, +Shift and Alt). + + + + + + Retrieve the details of either a #GstNavigation mouse button press event or +a mouse button release event. Determine which type the event is using +gst_navigation_event_get_type() to retrieve the #GstNavigationEventType. + + + TRUE if the button number and both coordinates could be extracted, + otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a gint that will receive the button + number associated with the event. + + + + Pointer to a gdouble to receive the x coordinate of the + mouse button event. + + + + Pointer to a gdouble to receive the y coordinate of the + mouse button event. + + + + + + Inspect a #GstNavigation mouse movement event and extract the coordinates +of the event. + + + TRUE if both 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. + + + + + + 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. + + + + + + Retrieve the details of a #GstNavigation touch-down or touch-motion event. +Determine which type the event is using gst_navigation_event_get_type() +to retrieve the #GstNavigationEventType. + + + TRUE if all details could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a guint that will receive the + identifier unique to this touch point. + + + + Pointer to a gdouble that will receive the x + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the y + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the + force of the touch event, in the range from 0.0 to 1.0. If pressure + data is not available, NaN will be set instead. + + + + + + Retrieve the details of a #GstNavigation touch-up event. + + + TRUE if all details could be extracted, otherwise FALSE. + + + + + A #GstEvent to inspect. + + + + Pointer to a guint that will receive the + identifier unique to this touch point. + + + + Pointer to a gdouble that will receive the x + coordinate of the touch event. + + + + Pointer to a gdouble that will receive the y + coordinate of the touch event. + + + + + + Try to set x and y coordinates on a #GstNavigation event. The event must +be writable. + + + A boolean indicating success. + + + + + The #GstEvent to modify. + + + + The x coordinate to set. + + + + The y coordinate to set. + + + + + + Check a bus message to see if it is a #GstNavigation event, and return +the #GstNavigationMessageType identifying the type of the message if so. + + + The type of the #GstMessage, or +#GST_NAVIGATION_MESSAGE_INVALID if the message is not a #GstNavigation +notification. + + + + + A #GstMessage to inspect. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_ANGLES_CHANGED for notifying an application +that the current angle, or current number of angles available in a +multiangle video has changed. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + The currently selected angle. + + + + The number of viewing angles now available. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_EVENT. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + A navigation #GstEvent + + + + + + Creates a new #GstNavigation message with type +#GST_NAVIGATION_MESSAGE_MOUSE_OVER. + + + The new #GstMessage. + + + + + A #GstObject to set as source of the new message. + + + + %TRUE if the mouse has entered a clickable area of the display. +%FALSE if it over a non-clickable area. + + + + + + Parse a #GstNavigation message of type GST_NAVIGATION_MESSAGE_ANGLES_CHANGED +and extract the @cur_angle and @n_angles parameters. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + A pointer to a #guint to receive the new + current angle number, or NULL + + + + A pointer to a #guint to receive the new angle + count, or NULL. + + + + + + Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_EVENT +and extract contained #GstEvent. The caller must unref the @event when done +with it. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + a pointer to a #GstEvent to receive + the contained navigation event. + + + + + + Parse a #GstNavigation message of type #GST_NAVIGATION_MESSAGE_MOUSE_OVER +and extract the active/inactive flag. If the mouse over event is marked +active, it indicates that the mouse is over a clickable area. + + + %TRUE if the message could be successfully parsed. %FALSE if not. + + + + + A #GstMessage to inspect. + + + + A pointer to a gboolean to receive the + active/inactive state, or NULL. + + + + + + Inspect a #GstQuery and return the #GstNavigationQueryType associated with +it if it is a #GstNavigation query. + + + The #GstNavigationQueryType of the query, or +#GST_NAVIGATION_QUERY_INVALID + + + + + The query to inspect + + + + + + Create a new #GstNavigation angles query. When executed, it will +query the pipeline for the set of currently available angles, which may be +greater than one in a multiangle video. + + + The new query. + + + + + Create a new #GstNavigation commands query. When executed, it will +query the pipeline for the set of currently available commands. + + + The new query. + + + + + Parse the current angle number in the #GstNavigation angles @query into the +#guint pointed to by the @cur_angle variable, and the number of available +angles into the #guint pointed to by the @n_angles variable. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + Pointer to a #guint into which to store the + currently selected angle value from the query, or NULL + + + + Pointer to a #guint into which to store the + number of angles value from the query, or NULL + + + + + + Parse the number of commands in the #GstNavigation commands @query. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + the number of commands in this query. + + + + + + Parse the #GstNavigation command query and retrieve the @nth command from +it into @cmd. If the list contains less elements than @nth, @cmd will be +set to #GST_NAVIGATION_COMMAND_INVALID. + + + %TRUE if the query could be successfully parsed. %FALSE if not. + + + + + a #GstQuery + + + + the nth command to retrieve. + + + + a pointer to store the nth command into. + + + + + + Set the #GstNavigation angles query result field in @query. + + + + + + + a #GstQuery + + + + the current viewing angle to set. + + + + the number of viewing angles to set. + + + + + + Set the #GstNavigation command query result fields in @query. The number +of commands passed must be equal to @n_commands. + + + + + + + a #GstQuery + + + + the number of commands to set. + + + + An array containing @n_cmds + @GstNavigationCommand values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lets you blend the @src image into the @dest image + + + + + + + The #GstVideoFrame where to blend @src in + + + + the #GstVideoFrame that we want to blend into + + + + The x offset in pixel where the @src image should be blended + + + + the y offset in pixel where the @src image should be blended + + + + the global_alpha each per-pixel alpha value is multiplied + with + + + + + + Scales a buffer containing RGBA (or AYUV) video. This is an internal +helper function which is used to scale subtitle overlays, and may be +deprecated in the near future. Use #GstVideoScaler to scale video buffers +instead. + + + + + + + the #GstVideoInfo describing the video data in @src_buffer + + + + the source buffer containing video pixels to scale + + + + the height in pixels to scale the video data in @src_buffer to + + + + the width in pixels to scale the video data in @src_buffer to + + + + pointer to a #GstVideoInfo structure that will be filled in + with the details for @dest_buffer + + + + a pointer to a #GstBuffer variable, which will be + set to a newly-allocated buffer containing the scaled pixels. + + + + + + Given the Pixel Aspect Ratio and size of an input video frame, and the +pixel aspect ratio of the intended display device, calculates the actual +display ratio the video will be rendered with. + + + A boolean indicating success and a calculated Display Ratio in the +dar_n and dar_d parameters. +The return value is FALSE in the case of integer overflow or other error. + + + + + Numerator of the calculated display_ratio + + + + Denominator of the calculated display_ratio + + + + Width of the video frame in pixels + + + + Height of the video frame in pixels + + + + Numerator of the pixel aspect ratio of the input video. + + + + Denominator of the pixel aspect ratio of the input video. + + + + Numerator of the pixel aspect ratio of the display device + + + + Denominator of the pixel aspect ratio of the display device + + + + + + + + + + + + + + + + + + Parses fixed Closed Caption #GstCaps and returns the corresponding caption +type, or %GST_VIDEO_CAPTION_TYPE_UNKNOWN. + + + #GstVideoCaptionType. + + + + + Fixed #GstCaps to parse + + + + + + Creates new caps corresponding to @type. + + + new #GstCaps + + + + + #GstVideoCaptionType + + + + + + Takes @src rectangle and position it at the center of @dst rectangle with or +without @scaling. It handles clipping if the @src rectangle is bigger than +the @dst one and @scaling is set to FALSE. + + + + + + + a pointer to #GstVideoRectangle describing the source area + + + + a pointer to #GstVideoRectangle describing the destination area + + + + a pointer to a #GstVideoRectangle which will receive the result area + + + + a #gboolean indicating if scaling should be applied or not + + + + + + Convert @s to a #GstVideoChromaSite + Use gst_video_chroma_site_from_string() instead. + + + a #GstVideoChromaSite or %GST_VIDEO_CHROMA_SITE_UNKNOWN when @s does +not contain a valid chroma description. + + + + + a chromasite string + + + + + + Perform resampling of @width chroma pixels in @lines. + + + + + + + a #GstVideoChromaResample + + + + pixel lines + + + + the number of pixels on one line + + + + + + Create a new resampler object for the given parameters. When @h_factor or +@v_factor is > 0, upsampling will be used, otherwise subsampling is +performed. + + + a new #GstVideoChromaResample that should be freed with + gst_video_chroma_resample_free() after usage. + + + + + a #GstVideoChromaMethod + + + + a #GstVideoChromaSite + + + + #GstVideoChromaFlags + + + + the #GstVideoFormat + + + + horizontal resampling factor + + + + vertical resampling factor + + + + + + Convert @s to a #GstVideoChromaSite + + + a #GstVideoChromaSite or %GST_VIDEO_CHROMA_SITE_UNKNOWN when @s does +not contain a valid chroma-site description. + + + + + a chromasite string + + + + + + Converts @site to its string representation. + + + a string representation of @site + or %NULL if @site contains undefined value or + is equal to %GST_VIDEO_CHROMA_SITE_UNKNOWN + + + + + a #GstVideoChromaSite + + + + + + Converts @site to its string representation. + Use gst_video_chroma_site_to_string() instead. + + + a string describing @site. + + + + + a #GstVideoChromaSite + + + + + + + + #GType for the #GstVideoCodecAlphaMeta structure. + + + + + + + #GstMetaInfo pointer that describes #GstVideoCodecAlphaMeta. + + + + + 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. + +When: + +|[ + 0.0 <= [Y',R',G',B'] <= 1.0) + (-0.5 <= [Pb,Pr] <= 0.5) +]| + +the general conversion is given by: + +|[ + Y' = Kr*R' + (1-Kr-Kb)*G' + Kb*B' + Pb = (B'-Y')/(2*(1-Kb)) + Pr = (R'-Y')/(2*(1-Kr)) +]| + +and the other way around: + +|[ + R' = Y' + Cr*2*(1-Kr) + G' = Y' - Cb*2*(1-Kb)*Kb/(1-Kr-Kb) - Cr*2*(1-Kr)*Kr/(1-Kr-Kb) + B' = Y' + Cb*2*(1-Kb) +]| + + + TRUE if @matrix was a YUV color format and @Kr and @Kb contain valid + values. + + + + + a #GstVideoColorMatrix + + + + result red channel coefficient + + + + result blue channel coefficient + + + + + + 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. + + + a #GstVideoColorPrimariesInfo for @primaries. + + + + + a #GstVideoColorPrimaries + + + + + + Checks whether @primaries and @other are functionally equivalent + + + TRUE if @primaries and @other can be considered equivalent. + + + + + a #GstVideoColorPrimaries + + + + another #GstVideoColorPrimaries + + + + + + 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 +range [0.0 .. 1.0]. + +The reverse operation (c[i] * scale[i]) + offset[i] can be used to convert +the component values in range [0.0 .. 1.0] back to their representation in +@info and @range. + + + + + + + a #GstVideoColorRange + + + + a #GstVideoFormatInfo + + + + output offsets + + + + + + output scale + + + + + + + + Use gst_video_transfer_function_decode() instead. + + + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + Use gst_video_transfer_function_encode() instead. + + + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + Converts a raw video buffer into the specified output caps. + +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. + + + The converted #GstSample, or %NULL if an error happened (in which case @err +will point to the #GError). + + + + + a #GstSample + + + + the #GstCaps to convert to + + + + the maximum amount of time allowed for the processing. + + + + + + Converts a raw video buffer into the specified output caps. + +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 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. + +@destroy_notify will be called after the callback was called and @user_data is not needed +anymore. + + + + + + + a #GstSample + + + + the #GstCaps to convert to + + + + the maximum amount of time allowed for the processing. + + + + %GstVideoConvertSampleCallback that will be called after conversion. + + + + extra data that will be passed to the @callback + + + + %GDestroyNotify to be called after @user_data is not needed anymore + + + + + + Create a new converter object to convert between @in_info and @out_info +with @config. + +Returns (nullable): a #GstVideoConverter or %NULL if conversion is not possible. + + + + + + + a #GstVideoInfo + + + + a #GstVideoInfo + + + + a #GstStructure with configuration options + + + + + + Create a new converter object to convert between @in_info and @out_info +with @config. + +The optional @pool can be used to spawn threads, this is useful when +creating new converters rapidly, for example when updating cropping. + +Returns (nullable): a #GstVideoConverter or %NULL if conversion is not possible. + + + + + + + a #GstVideoInfo + + + + a #GstVideoInfo + + + + a #GstStructure with configuration options + + + + a #GstTaskPool to spawn threads from + + + + + + + + + + + + + + + + + + Make a new dither object for dithering lines of @format using the +algorithm described by @method. + +Each component will be quantized to a multiple of @quantizer. Better +performance is achieved when @quantizer is a power of 2. + +@width is the width of the lines that this ditherer will handle. + + + a new #GstVideoDither + + + + + a #GstVideoDitherMethod + + + + a #GstVideoDitherFlags + + + + a #GstVideoFormat + + + + quantizer + + + + the width of the lines + + + + + + Converting the video format into dma drm fourcc. If no +matching fourcc found, then DRM_FORMAT_INVALID is returned. + + + the DRM_FORMAT_* corresponding to the @format. + + + + + a #GstVideoFormat + + + + + + Convert the @format_str string into the drm fourcc value. The @modifier is +also parsed if we want. Please note that the @format_str should follow the +fourcc:modifier kind style, such as NV12:0x0100000000000002 + + + The drm fourcc value or DRM_FORMAT_INVALID if @format_str is +invalid. + + + + + a drm format string + + + + Return the modifier in @format or %NULL +to ignore. + + + + + + Converting a dma drm fourcc into the video format. If no matching +video format found, then GST_VIDEO_FORMAT_UNKNOWN is returned. + + + the GST_VIDEO_FORMAT_* corresponding to the @fourcc. + + + + + the dma drm value. + + + + + + Returns a string containing drm kind format, such as +NV12:0x0100000000000002, or NULL otherwise. + + + the drm kind string composed + of to @fourcc and @modifier. + + + + + a drm fourcc value. + + + + the associated modifier value. + + + + + + Checks if an event is a force key unit event. Returns true for both upstream +and downstream force key unit events. + + + %TRUE if the event is a valid force key unit event + + + + + A #GstEvent to check + + + + + + Creates a new downstream force key unit event. A downstream force key unit +event can be sent down the pipeline to request downstream elements to produce +a key unit. A downstream force key unit event must also be sent when handling +an upstream force key unit event to notify downstream that the latter has been +handled. + +To parse an event created by gst_video_event_new_downstream_force_key_unit() use +gst_video_event_parse_downstream_force_key_unit(). + + + The new GstEvent + + + + + the timestamp of the buffer that starts a new key unit + + + + the stream_time of the buffer that starts a new key unit + + + + the running_time of the buffer that starts a new key unit + + + + %TRUE to produce headers when starting a new key unit + + + + integer that can be used to number key units + + + + + + Creates a new Still Frame event. If @in_still is %TRUE, then the event +represents the start of a still frame sequence. If it is %FALSE, then +the event ends a still frame sequence. + +To parse an event created by gst_video_event_new_still_frame() use +gst_video_event_parse_still_frame(). + + + The new GstEvent + + + + + boolean value for the still-frame state of the event. + + + + + + Creates a new upstream force key unit event. An upstream force key unit event +can be sent to request upstream elements to produce a key unit. + +@running_time can be set to request a new key unit at a specific +running_time. If set to GST_CLOCK_TIME_NONE, upstream elements will produce a +new key unit as soon as possible. + +To parse an event created by gst_video_event_new_downstream_force_key_unit() use +gst_video_event_parse_downstream_force_key_unit(). + + + The new GstEvent + + + + + the running_time at which a new key unit should be produced + + + + %TRUE to produce headers when starting a new key unit + + + + integer that can be used to number key units + + + + + + Get timestamp, stream-time, running-time, all-headers and count in the force +key unit event. See gst_video_event_new_downstream_force_key_unit() for a +full description of the downstream force key unit event. + +@running_time will be adjusted for any pad offsets of pads it was passing through. + + + %TRUE if the event is a valid downstream force key unit event. + + + + + A #GstEvent to parse + + + + A pointer to the timestamp in the event + + + + A pointer to the stream-time in the event + + + + A pointer to the running-time in the event + + + + A pointer to the all_headers flag in the event + + + + A pointer to the count field of the event + + + + + + Parse a #GstEvent, identify if it is a Still Frame event, and +return the still-frame state from the event if it is. +If the event represents the start of a still frame, the in_still +variable will be set to TRUE, otherwise FALSE. It is OK to pass NULL for the +in_still variable order to just check whether the event is a valid still-frame +event. + +Create a still frame event using gst_video_event_new_still_frame() + + + %TRUE if the event is a valid still-frame event. %FALSE if not + + + + + A #GstEvent to parse + + + + + A boolean to receive the still-frame status from the event, or NULL + + + + + + Get running-time, all-headers and count in the force key unit event. See +gst_video_event_new_upstream_force_key_unit() for a full description of the +upstream force key unit event. + +Create an upstream force key unit event using gst_video_event_new_upstream_force_key_unit() + +@running_time will be adjusted for any pad offsets of pads it was passing through. + + + %TRUE if the event is a valid upstream force-key-unit event. %FALSE if not + + + + + A #GstEvent to parse + + + + A pointer to the running_time in the event + + + + A pointer to the all_headers flag in the event + + + + A pointer to the count field in the event + + + + + + Convert @order to a #GstVideoFieldOrder + + + the #GstVideoFieldOrder of @order or + #GST_VIDEO_FIELD_ORDER_UNKNOWN when @order is not a valid + string representation for a #GstVideoFieldOrder. + + + + + a field order + + + + + + Convert @order to its string representation. + + + @order as a string. + + + + + a #GstVideoFieldOrder + + + + + + Converts a FOURCC value into the corresponding #GstVideoFormat. +If the FOURCC cannot be represented by #GstVideoFormat, +#GST_VIDEO_FORMAT_UNKNOWN is returned. + + + the #GstVideoFormat describing the FOURCC value + + + + + a FOURCC value representing raw YUV video + + + + + + Find the #GstVideoFormat for the given parameters. + + + a #GstVideoFormat or GST_VIDEO_FORMAT_UNKNOWN when the parameters to +not specify a known format. + + + + + the amount of bits used for a pixel + + + + the amount of bits used to store a pixel. This value is bigger than + @depth + + + + the endianness of the masks, #G_LITTLE_ENDIAN or #G_BIG_ENDIAN + + + + the red mask + + + + the green mask + + + + the blue mask + + + + the alpha mask, or 0 if no alpha mask + + + + + + Convert the @format string to its #GstVideoFormat. + + + the #GstVideoFormat for @format or GST_VIDEO_FORMAT_UNKNOWN when the +string is not a known format. + + + + + a format string + + + + + + Get the #GstVideoFormatInfo for @format + + + The #GstVideoFormatInfo for @format. + + + + + a #GstVideoFormat + + + + + + Get the default palette of @format. This the palette used in the pack +function for paletted formats. + + + the default palette of @format or %NULL when +@format does not have a palette. + + + + + a #GstVideoFormat + + + + size of the palette in bytes + + + + + + Converts a #GstVideoFormat value into the corresponding FOURCC. Only +a few YUV formats have corresponding FOURCC values. If @format has +no corresponding FOURCC value, 0 is returned. + + + the FOURCC corresponding to @format + + + + + a #GstVideoFormat video format + + + + + + Returns a string containing a descriptive name for +the #GstVideoFormat if there is one, or NULL otherwise. + + + the name corresponding to @format + + + + + a #GstVideoFormat video format + + + + + + Return all the raw video formats supported by GStreamer. + + + an array of #GstVideoFormat + + + + + + + the number of elements in the returned array + + + + + + Use @info and @buffer to fill in the values of @frame. @frame is usually +allocated on the stack, and you will pass the address to the #GstVideoFrame +structure allocated on the stack; gst_video_frame_map() will then fill in +the structures with the various video-specific information you need to access +the pixels of the video buffer. You can then use accessor macros such as +GST_VIDEO_FRAME_COMP_DATA(), GST_VIDEO_FRAME_PLANE_DATA(), +GST_VIDEO_FRAME_COMP_STRIDE(), GST_VIDEO_FRAME_PLANE_STRIDE() etc. +to get to the pixels. + +|[<!-- language="C" --> + GstVideoFrame vframe; + ... + // set RGB pixels to black one at a time + if (gst_video_frame_map (&vframe, video_info, video_buffer, GST_MAP_WRITE)) { + guint8 *pixels = GST_VIDEO_FRAME_PLANE_DATA (vframe, 0); + guint stride = GST_VIDEO_FRAME_PLANE_STRIDE (vframe, 0); + guint pixel_stride = GST_VIDEO_FRAME_COMP_PSTRIDE (vframe, 0); + + for (h = 0; h < height; ++h) { + for (w = 0; w < width; ++w) { + guint8 *pixel = pixels + h * stride + w * pixel_stride; + + memset (pixel, 0, pixel_stride); + } + } + + gst_video_frame_unmap (&vframe); + } + ... +]| + +All video planes of @buffer will be mapped and the pointers will be set in +@frame->data. + +The purpose of this function is to make it easy for you to get to the video +pixels in a generic way, without you having to worry too much about details +such as whether the video data is allocated in one contiguous memory chunk +or multiple memory chunks (e.g. one for each plane); or if custom strides +and custom plane offsets are used or not (as signalled by GstVideoMeta on +each buffer). This function will just fill the #GstVideoFrame structure +with the right values and if you use the accessor macros everything will +just work and you can access the data easily. It also maps the underlying +memory chunks for you. + + + %TRUE on success. + + + + + pointer to #GstVideoFrame + + + + a #GstVideoInfo + + + + the buffer to map + + + + #GstMapFlags + + + + + + Use @info and @buffer to fill in the values of @frame with the video frame +information of frame @id. + +When @id is -1, the default frame is mapped. When @id != -1, this function +will return %FALSE when there is no GstVideoMeta with that id. + +All video planes of @buffer will be mapped and the pointers will be set in +@frame->data. + + + %TRUE on success. + + + + + pointer to #GstVideoFrame + + + + a #GstVideoInfo + + + + the buffer to map + + + + the frame id to map + + + + #GstMapFlags + + + + + + + + + + + + + + + + + + Given the nominal duration of one video frame, +this function will check some standard framerates for +a close match (within 0.1%) and return one if possible, + +It will calculate an arbitrary framerate if no close +match was found, and return %FALSE. + +It returns %FALSE if a duration of 0 is passed. + + + %TRUE if a close "standard" framerate was +recognised, and %FALSE otherwise. + + + + + Nominal duration of one frame + + + + Numerator of the calculated framerate + + + + Denominator of the calculated framerate + + + + + + Parse @caps and update @info. Please note that the @caps should be +a dma drm caps. The gst_video_is_dma_drm_caps() can be used to verify +it before calling this function. + + + TRUE if @caps could be parsed + + + + + #GstVideoInfoDmaDrm + + + + a #GstCaps + + + + + + Initialize @drm_info with default values. + + + + + + + a #GstVideoInfoDmaDrm + + + + + + Parse @caps and update @info. + + + TRUE if @caps could be parsed + + + + + #GstVideoInfo + + + + a #GstCaps + + + + + + Initialize @info with default values. + + + + + + + a #GstVideoInfo + + + + + + Convert @mode to a #GstVideoInterlaceMode + + + the #GstVideoInterlaceMode of @mode or + #GST_VIDEO_INTERLACE_MODE_PROGRESSIVE when @mode is not a valid + string representation for a #GstVideoInterlaceMode. + + + + + a mode + + + + + + Convert @mode to its string representation. + + + @mode as a string. + + + + + a #GstVideoInterlaceMode + + + + + + Given a frame's dimensions and pixel aspect ratio, this function will +calculate the frame's aspect ratio and compare it against a set of +common well-known "standard" aspect ratios. + + + %TRUE if a known "standard" aspect ratio was +recognised, and %FALSE otherwise. + + + + + Width of the video frame + + + + Height of the video frame + + + + Pixel aspect ratio numerator + + + + Pixel aspect ratio denominator + + + + + + Check whether the @caps is a dma drm kind caps. Please note that +the caps should be fixed. + + + %TRUE if the caps is a dma drm caps. + + + + + a #GstCaps + + + + + + Return a generic raw video caps for formats defined in @formats. +If @formats is %NULL returns a caps for all the supported raw video formats, +see gst_video_formats_raw(). + + + a video @GstCaps + + + + + an array of raw #GstVideoFormat, or %NULL + + + + + + the size of @formats + + + + + + Return a generic raw video caps for formats defined in @formats with features +@features. +If @formats is %NULL returns a caps for all the supported video formats, +see gst_video_formats_raw(). + + + a video @GstCaps + + + + + an array of raw #GstVideoFormat, or %NULL + + + + + + the size of @formats + + + + the #GstCapsFeatures to set on the caps + + + + + + Extract #GstVideoMasteringDisplayInfo from @mastering + + + %TRUE if @minfo was filled with @mastering + + + + + a #GstVideoMasteringDisplayInfo + + + + a #GstStructure representing #GstVideoMasteringDisplayInfo + + + + + + + + + + + + + + + + + + Get the #GQuark for the "gst-video-scale" metadata transform operation. + + + a #GQuark + + + + + + + A const #GValue containing a list of stereo video modes + +Utility function that returns a #GValue with a GstList of packed stereo +video modes with double the height of a single view for use in +caps negotiations. Currently this is top-bottom and row-interleaved. + + + + + + + A const #GValue containing a list of stereo video modes + +Utility function that returns a #GValue with a GstList of packed +stereo video modes that have double the width/height of a single +view for use in caps negotiation. Currently this is just +'checkerboard' layout. + + + + + + + A const #GValue containing a list of stereo video modes + +Utility function that returns a #GValue with a GstList of packed stereo +video modes with double the width of a single view for use in +caps negotiations. Currently this is side-by-side, side-by-side-quincunx +and column-interleaved. + + + + + + + A const #GValue containing a list of mono video modes + +Utility function that returns a #GValue with a GstList of mono video +modes (mono/left/right) for use in caps negotiations. + + + + + + + A const #GValue containing a list of 'unpacked' stereo video modes + +Utility function that returns a #GValue with a GstList of unpacked +stereo video modes (separated/frame-by-frame/frame-by-frame-multiview) +for use in caps negotiations. + + + + + + + A boolean indicating whether the + #GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT flag should be set. + +Utility function that heuristically guess whether a +frame-packed stereoscopic video contains half width/height +encoded views, or full-frame views by looking at the +overall display aspect ratio. + + + + + A #GstVideoMultiviewMode + + + + Video frame width in pixels + + + + Video frame height in pixels + + + + Numerator of the video pixel-aspect-ratio + + + + Denominator of the video pixel-aspect-ratio + + + + + + + + The #GstVideoMultiviewMode value + +Given a string from a caps multiview-mode field, +output the corresponding #GstVideoMultiviewMode +or #GST_VIDEO_MULTIVIEW_MODE_NONE + + + + + multiview-mode field string from caps + + + + + + Given a #GstVideoMultiviewMode returns the multiview-mode caps string +for insertion into a caps structure + + + The caps string representation of the mode, or NULL if invalid. + + + + + A #GstVideoMultiviewMode value + + + + + + Utility function that transforms the width/height/PAR +and multiview mode and flags of a #GstVideoInfo into +the requested mode. + + + + + + + A #GstVideoInfo structure to operate on + + + + A #GstVideoMultiviewMode value + + + + A set of #GstVideoMultiviewFlags + + + + + + Parses the "image-orientation" tag and transforms it into the +#GstVideoOrientationMethod enum. + + + TRUE if there was a valid "image-orientation" tag in the taglist. + + + + + A #GstTagList + + + + The location where to return the orientation. + + + + + + + + + + + + + + + + + + This helper shall be used by classes implementing the #GstVideoOverlay +interface that want the render rectangle to be controllable using +properties. This helper will install "render-rectangle" property into the +class. + + + + + + + The class on which the properties will be installed + + + + The first free property ID to use + + + + + + This helper shall be used by classes implementing the #GstVideoOverlay +interface that want the render rectangle to be controllable using +properties. This helper will parse and set the render rectangle calling +gst_video_overlay_set_render_rectangle(). + + + %TRUE if the @property_id matches the GstVideoOverlay property + + + + + The instance on which the property is set + + + + The highest property ID. + + + + The property ID + + + + The #GValue to be set + + + + + + + + + + + + + + + + + + Make a new @method video scaler. @in_size source lines/pixels will +be scaled to @out_size destination lines/pixels. + +@n_taps specifies the amount of pixels to use from the source for one output +pixel. If n_taps is 0, this function chooses a good value automatically based +on the @method and @in_size/@out_size. + + + a #GstVideoScaler + + + + + a #GstVideoResamplerMethod + + + + #GstVideoScalerFlags + + + + number of taps to use + + + + number of source elements + + + + number of destination elements + + + + extra options + + + + + + + + #GType for the #GstVideoSEIUserDataUnregisteredMeta structure. + + + + + + + #GstMetaInfo pointer that describes #GstVideoSEIUserDataUnregisteredMeta. + + + + + Parses and returns the Precision Time Stamp (ST 0604) from the SEI User Data Unregistered buffer + + + True if data is a Precision Time Stamp and it was parsed correctly + + + + + a #GstVideoSEIUserDataUnregisteredMeta + + + + User Data Unregistered UUID + + + + The parsed Precision Time Stamp SEI + + + + + + Get the tile index of the tile at coordinates @x and @y in the tiled +image of @x_tiles by @y_tiles. + +Use this method when @mode is of type %GST_VIDEO_TILE_TYPE_INDEXED. + + + the index of the tile at @x and @y in the tiled image of + @x_tiles by @y_tiles. + + + + + a #GstVideoTileMode + + + + x coordinate + + + + y coordinate + + + + number of horizintal tiles + + + + number of vertical tiles + + + + + + + + + + + + + + + + + + Convert @val to its gamma decoded value. This is the inverse operation of +gst_video_color_transfer_encode(). + +For a non-linear value L' in the range [0..1], conversion to the linear +L is in general performed with a power function like: + +|[ + L = L' ^ gamma +]| + +Depending on @func, different formulas might be applied. Some formulas +encode a linear segment in the lower range. + + + the gamma decoded value of @val + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + Convert @val to its gamma encoded value. + +For a linear value L in the range [0..1], conversion to the non-linear +(gamma encoded) L' is in general performed with a power function like: + +|[ + L' = L ^ (1 / gamma) +]| + +Depending on @func, different formulas might be applied. Some formulas +encode a linear segment in the lower range. + + + the gamma encoded value of @val + + + + + a #GstVideoTransferFunction + + + + a value + + + + + + 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 + + + + + + Returns whether @from_func and @to_func are equivalent. There are cases +(e.g. BT601, BT709, and BT2020_10) where several functions are functionally +identical. In these cases, when doing conversion, we should consider them +as equivalent. Also, BT2020_12 is the same as the aforementioned three for +less than 12 bits per pixel. + + + TRUE if @from_func and @to_func can be considered equivalent. + + + + + #GstVideoTransferFunction to convert from + + + + bits per pixel to convert from + + + + #GstVideoTransferFunction to convert into + + + + bits per pixel to convert into + + + + + + 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 + + + + + + diff --git a/girs/GstVulkan-1.0.gir b/girs/GstVulkan-1.0.gir new file mode 100644 index 0000000000..786d675c9b --- /dev/null +++ b/girs/GstVulkan-1.0.gir @@ -0,0 +1,6521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent #GstVulkanBarrierMemoryInfo + + + + offset into the vulkan buffer to execute the barrier with + + + + size of memory to execute barrier over + + + + + + + + + + + parent #GstVulkanBarrierMemoryInfo + + + + the image layout of this barrier + + + + what subresource the barrier applies to + + + + + + + the #GstVulkanBarrierType of the barrier +@flags the #GstVulkanBarrierFlags of the barrier + + + + + + + the #GstVulkanQueue this barrier is to execute with + + + + the stages in the graphics pipeline to execute the barrier + + + + access flags + + + + + + + + + + + no barrier type + + + + + + + + + + + + parent #GstMemory + + + + the #GstVulkanDevice this vulkan buffer is allocated from + + + + Vulkan buffer object + + + + backing #GstVulkanMemory for @buffer + + + + allocation requirements for @buffer + + + + intended usage for @buffer + + + + the last set barrier information + + + + + + + + + + + + + + + + Allocate a new #GstVulkanBufferMemory. + + + a #GstMemory object backed by a vulkan buffer + backed by vulkan device memory + + + + + a #GstVulkanDevice + + + + size of the new buffer + + + + buffer usage flags + + + + memory properties flags for the backing memory + + + + + + Initializes the Vulkan buffer memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanBufferMemory operation. + + + + + + + Allocated a new wrapped #GstVulkanBufferMemory with @buffer. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + a `VkBuffer` + + + + usage flags of @buffer + + + + user data to call @notify with + + + + a #GDestroyNotify called when @buffer is no longer in use + + + + + + + Opaque #GstVulkanBufferMemoryAllocator struct + + + the parent #GstAllocator + + + + + + + + + + The #GstVulkanBufferMemoryAllocatorClass only contains private data + + + the parent #GstAllocatorClass + + + + + + + + + + Opaque #GstVulkanBufferPool struct + + + + + a #GstBufferPool that allocates buffers with #GstGLMemory + + + + + the #GstVulkanDevice to use + + + + + + the parent #GstBufferPool + + + + the #GstVulkanDevice to allocate Vulkan buffers from + + + + + + + + + + The #GstVulkanBufferPoolClass structure contains only private data + + + the parent #GstBufferPoolClass + + + + + + + + + + + + + + + the parent #GstMiniObject + + + + the vulkan command buffer handle + + + + the parent #GstVulkanCommandPool for command buffer reuse and locking + + + + the level of the vulkan command buffer + + + + + + + + + + + a new #GstVulkanCommandBuffer + + + + + a VkCommandBuffer + + + + the VkCommandBufferLevel for @cmd + + + + + + Increases the refcount of the given buffer by one. + + + @cmd + + + + + a #GstVulkanCommandBuffer. + + + + + + Decreases the refcount of the buffer. If the refcount reaches 0, the buffer +will be freed. + + + + + + + a #GstVulkanCommandBuffer. + + + + + + + + + + + a new or recycled primary #GstVulkanCommandBuffer + + + + + a #GstVulkanCommandPool + + + + + + + + the parent #GstVulkanQueue for this command pool + + + + + a #GstVulkanCommandPool + + + + + + This should be called to ensure no other thread will attempt to access +the pool's internal resources. Any modification of any of the allocated +#GstVulkanCommandBuffer's need to be encapsulated in a +gst_vulkan_command_pool_lock()/gst_vulkan_command_pool_unlock() pair to meet +the Vulkan API requirements that host access to the command pool is +externally synchronised. + + + + + + + a #GstVulkanCommandPool + + + + + + See the documentation for gst_vulkan_command_pool_lock() for when you would +need to use this function. + + + + + + + a #GstVulkanCommandPool + + + + + + the parent #GstObject + + + + the #GstVulkanQueue to command buffers will be allocated from + + + + the vulkan command pool handle + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + a new #GstVulkanDescriptorCache + + + + + a #GstVulkanDescriptorPool + + + + number of @layouts + + + + list of #GstVulkanHandle containing + descriptor set layouts + + + + + + + + + + a new #GstVulkanDescriptorSet + + + + + a #GstVulkanDescriptorCache + + + + + + the parent #GstVulkanHandlePool + + + + the #GstVulkanDescriptorPool to cache descriptor sets for + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + a new #GstVulkanDescriptorPool + + + + + a #GstVulkanDevice + + + + a `VkDescriptorPool` + + + + maximum descriptor sets allocatable wit @pool + + + + + + + + a new #GstVulkanDescriptorSet + + + + + a #GstVulkanDescriptorPool + + + + number of @layouts + + + + list of #GstVulkanHandle containing + descriptor set layouts + + + + + + + + + + the parent #GstVulkanDevice for this descriptor pool + + + + + a #GstVulkanDescriptorPool + + + + + + + + the maximum number of sets allocatable from @pool + + + + + a #GstVulkanDescriptorPool + + + + + + the parent #GstObject + + + + the #GstVulkanDevice for descriptor sets + + + + the vulksn descriptor pool handle + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + the parent #GstMiniObject + + + + the vulkan descriptor set handle + + + + the parent #GstVulkanDescriptorPool for pooling + + + + the parent #GstVulkanDescriptorCache for reuse + + + + number of layouts applied to this descriptor set + + + + layouts applied to this descriptor set + + + + + + + + + + + a new #GstVulkanDescriptorSet + + + + + + + + a VkDescriptorSet + + + + number of @layouts + + + + list of #GstVulkanHandle containing + descriptor set layouts + + + + + + + + Increases the refcount of the given buffer by one. + + + @set + + + + + a #GstVulkanDescriptorSet. + + + + + + Decreases the refcount of the buffer. If the refcount reaches 0, the buffer +will be freed. + + + + + + + a #GstVulkanDescriptorSet. + + + + + + + + + + + a new #GstVulkanDevice + + + + + the associated #GstVulkanPhysicalDevice + + + + + + + + a new #GstVulkanDevice + + + + + the associated #GstVulkanInstance + + + + the device index to create the new #GstVulkanDevice from + + + + + + If a #GstVulkanDevice is requested in @query, sets @device as the reply. + +Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT +for a #GstVulkanDevice. + + + whether @query was responded to with @device + + + + + a #GstElement + + + + a #GstQuery of type #GST_QUERY_CONTEXT + + + + the #GstVulkanDevice + + + + + + Attempt to retrieve a #GstVulkanDevice using #GST_QUERY_CONTEXT from the +surrounding elements of @element. + + + whether @device contains a valid #GstVulkanDevice + + + + + a #GstElement + + + + a #GstVulkanDevice + + + + + + + + a new #GstVulkanFence or %NULL + + + + + a #GstVulkanDevice + + + + + + Disable an Vulkan extension by @name. Disabling an extension will only have +an effect before the call to gst_vulkan_device_open(). + + + whether the Vulkan extension could be disabled. + + + + + a #GstVulkanDevice + + + + extension name to enable + + + + + + Enable an Vulkan extension by @name. Enabling an extension will +only have an effect before the call to gst_vulkan_device_open(). + + + whether the Vulkan extension could be enabled. + + + + + a #GstVulkanDevice + + + + extension name to enable + + + + + + Enable an Vulkan layer by @name. Enabling a layer will +only have an effect before the call to gst_vulkan_device_open(). + + + whether the Vulkan layer could be enabled. + + + + + a #GstVulkanDevice + + + + layer name to enable + + + + + + Iterate over each queue family available on #GstVulkanDevice + + + + + + + a #GstVulkanDevice + + + + a #GstVulkanDeviceForEachQueueFunc to run for each #GstVulkanQueue + + + + user data to pass to each call of @func + + + + + + + + the #GstVulkanInstance used to create this @device + + + + + a #GstVulkanDevice + + + + + + + + The VkPhysicalDevice used to create @device + + + + + a #GstVulkanDevice + + + + + + Performs `vkGetDeviceProcAddr()` with @device and @name + + + the function pointer for @name or %NULL + + + + + a #GstVulkanDevice + + + + name of the function to retrieve + + + + + + + + a new #GstVulkanQueue + + + + + a #GstVulkanDevice + + + + a queue family to retrieve + + + + index of the family to retrieve + + + + + + + + whether extension @name is enabled + + + + + a # GstVulkanDevice + + + + extension name + + + + + + + + whether layer @name is enabled + + + + + a # GstVulkanDevice + + + + layer name + + + + + + Attempts to create the internal `VkDevice` object. + + + whether a vulkan device could be created + + + + + a #GstVulkanDevice + + + + + + + + + + + + the parent #GstObject + + + + the #GstVulkanInstance this device was allocated with + + + + the #GstVulkanPhysicalDevice this device was allocated with + + + + the vulkan device handle + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The contents of a #GstVulkanDisplay are private and should only be accessed +through the provided API + + + + + a new #GstVulkanDisplay + + + + + + + + + + + + a new #GstVulkanDisplay or %NULL if + e.g. @type is unsupported + + + + + a #GstVulkanInstance + + + + the #GstVulkanDisplayType to create + + + + + + This function will read the `GST_VULKAN_WINDOW` environment variable for +a user choice or choose the first supported implementation. + +gst_vulkan_instance_fill_info() must have been called prior to this function. + + + the default #GstVulkanDisplayType #GstVulkanInstance will choose + on creation + + + + + a #GstVulkanInstance + + + + + + If a #GstVulkanDisplay is requested in @query, sets @device as the reply. + +Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT +for a #GstVulkanDisplay. + + + whether @query was responded to with @display + + + + + a #GstElement + + + + a #GstQuery of type #GST_QUERY_CONTEXT + + + + the #GstVulkanDisplay + + + + + + Attempt to retrieve a #GstVulkanDisplay using #GST_QUERY_CONTEXT from the +surrounding elements of @element. + + + whether @display contains a valid #GstVulkanDisplay + + + + + a #GstElement + + + + a #GstVulkanDisplay + + + + + + + + a new #GstVulkanWindow for @display or + %NULL. + + + + + a #GstVulkanDisplay + + + + + + + + the winsys specific handle of @display + + + + + a #GstVulkanDisplay + + + + + + + + a new #GstVulkanWindow for @display or + %NULL. + + + + + a #GstVulkanDisplay + + + + + + Execute @compare_func over the list of windows stored by @display. The +first argument to @compare_func is the #GstVulkanWindow being checked and the +second argument is @data. + + + The first #GstVulkanWindow that + @compare_func matches, or %NULL + + + + + a #GstVulkanDisplay + + + + some data to pass to @compare_func + + + + a comparison function to run + + + + + + + + the winsys specific handle of @display + + + + + a #GstVulkanDisplay + + + + + + + + the #GstVulkanDisplayType of @display + + + + + a #GstVulkanDisplay + + + + + + + + whether the window was successfully removed + + + + + a #GstVulkanDisplay + + + + the #GstVulkanWindow to remove + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent #GstObjectClass + + + + + + + the winsys specific handle of @display + + + + + a #GstVulkanDisplay + + + + + + + + + + a new #GstVulkanWindow for @display or + %NULL. + + + + + a #GstVulkanDisplay + + + + + + + + + + + + + + + + + no display + + + XCB display + + + wayland display + + + cocoa display for macOS + + + ios display + + + win32 display + + + + + any display type + + + + + the Vulkan extension string required for creating a + VkSurfaceKHR using a window system handle or %NULL + + + + + a #GstVulkanDisplayType + + + + + + + + undetermined error + + + + + + + + if @result indicates an error condition, fills out #GError with details of +the error + + + @result for easy chaining + + + + + a VkResult + + + + a #GError to fill + + + + the printf-like format to write into the #GError + + + + arguments for @format + + + + + + + + + the parent #GstMiniObject + + + + the #GstVulkanDevice this fence is allocated from + + + + the parent #GstVulkanFenceCache for fence reuse + + + + the vulkan fence handle + + + + + + + + + + + a new #GstVulkanFence or %NULL on error + + + + + the parent #GstVulkanDevice + + + + + + + + a new #GstVulkanFence that is always in the signalled state + + + + + + + + + + + + whether @fence has been signalled + + + + + a #GstVulkanFence + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the parent #GstVulkanHandlePool + + + + + + + + + + + + the parent #GstVulkanHandlePoolClass + + + + + + + + + + + is a YUV format + + + is a RGB format + + + has an alpha channel + + + data is stored in little-endiate byte order + + + data is stored complex and cannot be read/write only using the information in the #GstVulkanFormatInfo + + + + + + the Vulkan format being described + + + + name of this format + + + + how raw data is interpreted and scaled + + + + flags that apply to this format + + + + The number of bits used to pack data items. This can be less than + 8 when multiple pixels are stored in a byte. for values > 8 multiple + bytes should be read according to the endianness flag before + applying the shift and mask. +@n_components; number of components in this format + + + + + + + the number of bits to shift away to get the component data + + + + + + the depth in bits for each component + + + + + + + + + + + the number of planes for this format. The number of planes can + be less than the amount of components when multiple components + are packed into one plane. + + + + the plane number where a component can be found + + + + + + the offset in the plane where the first pixel of the components + can be found. + + + + + + subsampling factor of the width for the component. + Use GST_VIDEO_SUB_SCALE to scale a width. + + + + + + subsampling factor of the height for the component. + Use GST_VIDEO_SUB_SCALE to scale a height. + + + + + + + + [0, 2^n - 1] -> [0.0, 1.0] + + + [-2^(n-1), 2^(n-1) - 1] -> [-1.0, 1.0] + + + [0, 2^n - 1] -> [0.0, float(2^n - 1)] + + + [-2^(n-1), 2^(n-1) - 1] -> [float(-2^(n-1)), float(2^(n-1) - 1)] + + + [0, 2^n - 1] -> [0, 2^n - 1] + + + [-2^(n-1), 2^(n-1) - 1] -> [-2^(n-1), 2^(n-1) - 1] + + + @GST_VULKAN_FORMAT_SCALING_UNORM but the first three components are gamma corrected for the sRGB colour space. + + + + + + + + a new #GstVulkanFullScreenQuad + + + + + a #GstVulkanQueue + + + + + + Helper function for creation and submission of a command buffer that draws +a full screen quad. If you need to add other things to the command buffer, +create the command buffer manually and call +gst_vulkan_full_screen_quad_prepare_draw(), +gst_vulkan_full_screen_quad_fill_command_buffer() and +gst_vulkan_full_screen_quad_submit() instead. + + + whether the draw was successful + + + + + the #GstVulkanFullScreenQuad + + + + + + Enables blending of the input image to the output image. + +See also: gst_vulkan_full_screen_quad_set_blend_operation() and +gst_vulkan_full_screen_quad_set_blend_factors(). + + + + + + + the #GstVulkanFullScreenQuad + + + + whether to enable blending + + + + + + + + + + + + the #GstVulkanFullScreenQuad + + + + whether to clear the framebuffer on load + + + + + + + + whether @cmd could be filled with the necessary commands + + + + + a #GstVulkanFullScreenQuad + + + + the #GstVulkanCommandBuffer to fill with commands + + + + + + + + + + + + + + + + + + + + + + whether the necessary information could be generated for drawing a +frame. + + + + + the #GstVulkanFullScreenQuad + + + + a #GstVulkanFence that will be signalled after submission + + + + + + You need to enable blend with gst_vulkan_full_screen_quad_enable_blend(). + +See also: gst_vulkan_full_screen_quad_set_blend_operation(). + + + + + + + the #GstVulkanFullScreenQuad + + + + the `VkBlendFactor` for the source image for the colour + components (RGB) + + + + the `VkBlendFactor` for the destination image for the + colour components (RGB) + + + + the `VkBlendFactor` for the source image for the + alpha component. + + + + the `VkBlendFactor` for the destination image for + the alpha component. + + + + + + You need to enable blend with gst_vulkan_full_screen_quad_enable_blend(). + +See also: gst_vulkan_full_screen_quad_set_blend_factors(). + + + + + + + the #GstVulkanFullScreenQuad + + + + the `VkBlendOp` to use for blending colour (RGB) values + + + + the `VkBlendOp` to use for blending alpha values + + + + + + See also gst_vulkan_full_screen_quad_set_vertex_buffer() + + + whether the index data could be set + + + + + the #GstVulkanFullScreenQuad + + + + the index data. Must be a #GstVulkanBufferMemory + + + + number of indices in @indices + + + + + + + + whether the information could be successfully set + + + + + the #GstVulkanFullScreenQuad + + + + the input #GstVideoInfo to set + + + + the output #GstVideoInfo to set + + + + + + + + whether the input buffer could be changed + + + + + the #GstVulkanFullScreenQuad + + + + the input #GstBuffer to set + + + + + + + + whether the input buffer could be changed + + + + + the #GstVulkanFullScreenQuad + + + + the output #GstBuffer to set + + + + + + + + whether the shaders could be set + + + + + the #GstVulkanFullScreenQuad + + + + the vertex shader to set + + + + the fragment shader to set + + + + + + + + whether the shaders could be set + + + + + the #GstVulkanFullScreenQuad + + + + the uniform data to set. Must be a #GstVulkanBufferMemory + + + + + + + + whether the index data could be set + + + + + the #GstVulkanFullScreenQuad + + + + the vertex data. Must be a #GstVulkanBufferMemory + + + + + + + + whether @cmd could be submitted to the queue + + + + + a #GstVulkanFullScreenQuad + + + + a #GstVulkanCommandBuffer to submit + + + + a #GstVulkanFence to signal on completion + + + + + + the parent #GstObject + + + + the configured output #GstVideoInfo + + + + the configured input #GstVideoInfo + + + + the #GstVulkanQueue to submit #GstVulkanCommandBuffer's on + + + + the configured `VkRenderPass` + + + + the configured `VkPipelineLayout` + + + + the configured `VkPipeline` + + + + the configured `VkDescriptorSetLayout` + + + + the configured #GstVulkanDescriptorCache + + + + the configured #GstVulkanDescriptorSet + + + + the configured `VkFramebuffer` + + + + the configured `VkSampler` + + + + the #GstVulkanCommandPool to allocate #GstVulkanCommandBuffer's from + + + + the #GstVulkanTrashList for freeing unused resources + + + + the last configured #GstVulkanFences + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + Holds information about a vulkan non dispatchable handle that only has +a vulkan device as a parent and no specific host synchronisation +requirements. Command buffers have extra requirements that are serviced by +more specific implementations (#GstVulkanCommandBuffer, #GstVulkanCommandPool). + + + the parent #GstMiniObject + + + + the #GstVulkanDevice for this handle + + + + the type of handle + + + + the handle value + + + + + + + + + + + + + + + + + a new #GstVulkanHandle wrapping @handle + + + + + + + + + + + a Vulkan handle + + + + a #GDestroyNotify + + + + data to pass to @notify + + + + + + Frees the descriptor set layout in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkDescriptorSetLayout` + + + + callback user data + + + + + + Frees the framebuffer in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkFramebuffer` + + + + callback user data + + + + + + Frees the pipeline in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkPipeline` + + + + callback user data + + + + + + Frees the pipeline layout in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkPipelineLayout` + + + + callback user data + + + + + + Frees the render pass in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkRenderPass` + + + + callback user data + + + + + + Frees the sampler in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkSampler` + + + + callback user data + + + + + + Frees the shader in @handle + + + + + + + a #GstVulkanHandle containing a vulkan `VkFramebuffer` + + + + callback user data + + + + + + Increases the refcount of the given handle by one. + + + @buf + + + + + a #GstVulkanHandle. + + + + + + Decreases the refcount of the buffer. If the refcount reaches 0, the buffer +will be freed. + + + + + + + a #GstVulkanHandle. + + + + + + + + Whether the @query was successfully responded to from the passed + @display, @instance, and @device. + + + + + a #GstElement + + + + a #GstQuery of type %GST_QUERY_CONTEXT + + + + a #GstVulkanDisplay + + + + a #GstVulkanInstance + + + + a #GstVulkanInstance + + + + + + Helper function for implementing #GstElementClass.set_context() in +Vulkan capable elements. + +Retrieve's the #GstVulkanDisplay or #GstVulkanInstance in @context and places +the result in @display or @instance respectively. + + + whether the @display or @instance could be set successfully + + + + + a #GstElement + + + + a #GstContext + + + + location of a #GstVulkanDisplay + + + + location of a #GstVulkanInstance + + + + + + + Function definition called when the #GstVulkanHandle is no longer in use. +All implementations of this callback must free the internal handle stored +inside @handle. + + + + + + + the #GstVulkanHandle + + + + callback user data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the parent #GstObject + + + + the #GstVulkanDevice handles are allocated from + + + + the collection of outstanding handles + + + + + + the collection of allocated and available handles + + + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + descripter set layout + + + pipeline layout + + + pipeline + + + render pass + + + sampler + + + framebuffer + + + shader + + + + + + + + a #GstBufferPool that allocates buffers with #GstGLMemory + + + + + the #GstVulkanDevice to use + + + + + + parent #GstBufferPool + + + + the #GstVulkanDevice to allocate images from + + + + + + + + + + The #GstVulkanImageBufferPoolClass structure contains only private data + + + parent #GstBufferPoolClass + + + + + + + + + + + + + + + parent #GstMemory + + + + the #GstVulkanDevice to allocate images from + + + + the Vulkan image handle + + + + the backing #GstVulkanMemory for @image + + + + creation information for @image + + + + memory requirements for @image + + + + format properties + + + + intended usage for @image + + + + last set barrier for @image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstVulkanImageMemory + + + + a #GstVulkanImageView + + + + + + + + the first #GstVulkanImageView that + @find_func returns %TRUE for, or %NULL + + + + + a #GstVulkanImageMemory + + + + #GstVulkanImageMemoryFindViewFunc to search with + + + + user data to call @finc_func with + + + + + + + + the height of @image + + + + + a #GstVulkanImageMemory + + + + + + + + the width of @image + + + + + a #GstVulkanImageMemory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocated a new #GstVulkanImageMemory. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + the VkFormat for the new image + + + + width for the new image + + + + height for the new image + + + + tiling for the new image + + + + usage flags for the new image + + + + VkDeviceMemory property flags for the new image + + + + + + Initializes the Vulkan image memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanImageMemory operation. + + + + + + + + + a new #GstVulkanImageMemory wrapping @image + + + + + a #GstVulkanDevice + + + + a VkImage + + + + the VkFormat for @image + + + + width of @image + + + + height of @image + + + + tiling of @image + + + + usage flags of @image + + + + user data for @notify + + + + a #GDestroyNotify when @image is no longer needed + + + + + + + Opaque #GstVulkanImageMemoryAllocator struct + + + the parent #GstAllocator + + + + + + + + + + The #GstVulkanImageMemoryAllocatorClass only contains private data + + + the parent #GstAllocatorClass + + + + + + + + + + Function definition used to find views. Return %TRUE if @view matches the +criteria. + + + + + + + + + + + + + + + + + the parent #GstMiniObject + + + + the #GstVulkanDevice + + + + the associated #GstVulkanImageMemory for this view + + + + the vulkan image view handle + + + + the creation information for this view + + + + + + + + + + + A new #GstVulkanImageView from @image and + @create_info + + + + + a #GstVulkanImageMemory to create the new view from + + + + the creation information to create the view from + + + + + + Increases the refcount of the given trash object by one. + + + @trash + + + + + a #GstVulkanImageView. + + + + + + Decreases the refcount of the trash object. If the refcount reaches 0, the +trash will be freed. + + + + + + + a #GstVulkanImageView. + + + + + + + + + + + a new uninitialized #GstVulkanInstance + + + + + If a #GstVulkanInstance is requested in @query, sets @instance as the reply. + +Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT +for a #GstVulkanInstance. + + + whether @query was responded to with @instance + + + + + a #GstElement + + + + a #GstQuery of type #GST_QUERY_CONTEXT + + + + the #GstVulkanInstance + + + + + + Attempt to retrieve a #GstVulkanInstance using #GST_QUERY_CONTEXT from the +surrounding elements of @element. + + + whether @instance contains a valid #GstVulkanInstance + + + + + a #GstElement + + + + a #GstVulkanInstance + + + + + + Check if the configured vulkan instance supports the specified version. +Will not work prior to opening the instance with gst_vulkan_instance_open(). +If a specific version is requested, the @patch level is ignored. + + + whether @instance is at least the requested version. + + + + + a #GstVulkanInstance + + + + major version + + + + minor version + + + + patch version + + + + + + + + a new #GstVulkanDevice + + + + + a #GstVulkanInstance + + + + + + Disable an Vulkan extension by @name. Disabling an extension will only have +an effect before the call to gst_vulkan_instance_open(). + + + whether the Vulkan extension could be disabled. + + + + + a #GstVulkanInstance + + + + extension name to enable + + + + + + Enable an Vulkan extension by @name. Extensions cannot be enabled until +gst_vulkan_instance_fill_info() has been called. Enabling an extension will +only have an effect before the call to gst_vulkan_instance_open(). + + + whether the Vulkan extension could be enabled. + + + + + a #GstVulkanInstance + + + + extension name to enable + + + + + + Enable an Vulkan layer by @name. Layer cannot be enabled until +gst_vulkan_instance_fill_info() has been called. Enabling a layer will +only have an effect before the call to gst_vulkan_instance_open(). + + + whether the Vulkan layer could be enabled. + + + + + a #GstVulkanInstance + + + + layer name to enable + + + + + + Retrieve as much information about the available Vulkan instance without +actually creating an Vulkan instance. Will not do anything while @instance +is open. + + + whether the instance information could be retrieved + + + + + a #GstVulkanInstance + + + + + + Retrieves information about an extension. + +Will not find any extensions before gst_vulkan_instance_fill_info() has been +called. + + + whether extension @name is available + + + + + a #GstVulkanInstance + + + + the layer name to look for + + + + return value for the layer specification version + + + + + + Retrieves information about a layer. + +Will not find any layers before gst_vulkan_instance_fill_info() has been +called. + + + whether layer @name is available + + + + + a #GstVulkanInstance + + + + the layer name to look for + + + + return value for the layer description or %NULL + + + + return value for the layer specification version + + + + return value for the layer implementation version + + + + + + Performs `vkGetInstanceProcAddr()` with @instance and @name + + + the function pointer for @name or %NULL + + + + + a #GstVulkanInstance + + + + name of the function to retrieve + + + + + + Retrieve the vulkan instance configured version. Only returns the supported +API version by the instance without taking into account the requested API +version. This means gst_vulkan_instance_check_version() will return +different values if a specific version has been requested (which is the +default) than a version check that is performed manually by retrieving the +version with this function. + + + + + + + a #GstVulkanInstance + + + + major version + + + + minor version + + + + patch version + + + + + + + + whether extension @name is enabled + + + + + a # GstVulkanInstance + + + + extension name + + + + + + + + whether layer @name is enabled + + + + + a # GstVulkanInstance + + + + layer name + + + + + + + + whether the instance could be created + + + + + a #GstVulkanInstance + + + + + + + + + + + + parent #GstObject + + + + the Vulkan instance handle + + + + list of vulkan physical device handles + + + + + + + + + + + + Overrides the #GstVulkanDevice creation mechanism. +It can be called from any thread. + + the newly created #GstVulkanDevice. + + + + + + + + parent #GstObjectClass + + + + + + + + + + + + + + + the parent #GstMemory + + + + the #GstVulkanDevice this memory is allocated from + + + + the vulkan memory handle + + + + lock for accessing/changing memory informat + + + + number of times this memory is mapped + + + + + + + + + + + + + + + + + + + + + + + + + + + Allocated a new #GstVulkanMemory. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + the Vulkan memory type index + + + + a #GstAllocationParams + + + + the size to allocate + + + + + + + + + + + whether a valid memory type could be found + + + + + a #GstVulkanDevice + + + + memory type bits to search for + + + + memory properties to search for + + + + resulting index of the memory type + + + + + + + + + + + + + + + + + Initializes the Vulkan memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanMemory operation. + + + + + + + + + + + + + + + + + + + Opaque #GstVulkanMemoryAllocator struct + + + the parent #GstAllocator + + + + + + + + + + The #GstVulkanMemoryAllocatorClass only contains private data + + + the parent #GstAllocatorClass + + + + + + + + + + + + + + a new #GstVulkanPhysicalDevice + + + + + the parent #GstVulkanInstance + + + + + + + + + + + name of @type + + + + + a `VkPhysicalDeviceType + + + + + + Retrieves information about a device extension. + +Will not find any extensions before gst_vulkan_instance_fill_info() has been +called. + + + whether extension @name is available + + + + + a #GstVulkanPhysicalDevice + + + + the extension name to look for + + + + return value for the exteion specification version + + + + + + + + The associated `VkPhysicalDevice` handle + + + + + a #GstVulkanPhysicalDevice + + + + + + + + The #GstVulkanInstance associated with this physical device + + + + + a #GstVulkanPhysicalDevice + + + + + + Retrieves information about a layer. + +Will not find any layers before gst_vulkan_instance_fill_info() has been +called. + + + whether layer @name is available + + + + + a #GstVulkanPhysicalDevice + + + + the layer name to look for + + + + return value for the layer description or %NULL + + + + return value for the layer specification version + + + + return value for the layer implementation version + + + + + + + + + + + + + + + the parent #GstObject + + + + the parent #GstVulkanInstance for this physical device + + + + the index into the physical device list in @instance + + + + the vulkan physical device handle + + + + retrieved physical device properties + + + + retrieved physical device features + + + + retrieved physical device memory properties + + + + vulkan family properties + + + + number of elements in @queue_family_props + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + + + + + + + + + + If a #GstVulkanQueue is requested in @query, sets @queue as the reply. + +Intended for use with element query handlers to respond to #GST_QUERY_CONTEXT +for a #GstVulkanQueue. + + + whether @query was responded to with @queue + + + + + a #GstElement + + + + a #GstQuery of type #GST_QUERY_CONTEXT + + + + the #GstVulkanQueue + + + + + + Attempt to retrieve a #GstVulkanQueue using #GST_QUERY_CONTEXT from the +surrounding elements of @element. + + + whether @queue contains a valid #GstVulkanQueue + + + + + a #GstElement + + + + a #GstVulkanQueue + + + + + + + + a new #GstVulkanCommandPool or %NULL + + + + + a #GstVulkanQueue + + + + + + + + the #GstVulkanDevice for @queue + + + + + a #GstVulkanQueue + + + + + + Locks the queue for command submission using `vkQueueSubmit()` to meet the +Vulkan requirements for externally synchronised resources. + + + + + + + a #GstVulkanQueue + + + + + + Unlocks the queue for command submission using `vkQueueSubmit()`. + +See gst_vulkan_queue_submit_lock() for details on when this call is needed. + + + + + + + a #GstVulkanQueue + + + + + + the parent #GstObject + + + + the #GstVulkanDevice this queue was allocated from + + + + the vulkan queue handle + + + + the vulkan queue family + + + + the vulkan queue index + + + + + + + + + + + + the parent #GstObjectClass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstVulkanSwapper + + + + The #GstVideoRectangle for the configured + caps modified for DAR. + + + + The #GstVideoRectangle for where the + output surface is located relative to its parent + + + + The #GstVideoRectangle for where the input + images are placed inside @surface_location + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parent #GstObject + + + + the #GstVulkanDevice + + + + the #GstVulkanWindow to display into + + + + the #GstVulkanQueue to display with + + + + the #GstVulkanCommandPool to allocate command buffers from + + + + + + + + + + + + parent #GstObjectClass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create and return a new #GstVulkanTrash object that will stores a callback +to call when @fence is signalled. + + + a new #GstVulkanTrash + + + + + a #GstVulkanFence + + + + a #GstVulkanTrashNotify + + + + user data for @notify + + + + + + + + a new #GstVulkanTrash object that will the free + @semaphore when @fence is signalled + + + + + the #GstVulkanFence + + + + a `VkSemaphore` to free + + + + + + Increases the refcount of the given trash object by one. + + + @trash + + + + + a #GstVulkanTrash. + + + + + + Decreases the refcount of the trash object. If the refcount reaches 0, the +trash will be freed. + + + + + + + a #GstVulkanTrash. + + + + + + A #GstVulkanTrashNotify implementation for unreffing a #GstMiniObject when the +associated #GstVulkanFence is signalled + + + + + + + the #GstVulkanDevice + + + + the #GstMiniObject + + + + + + A #GstVulkanTrashNotify implementation for unreffing a #GstObject when the +associated #GstVulkanFence is signalled + + + + + + + the #GstVulkanDevice + + + + the #GstMiniObject + + + + + + + + + a.18 + + + a new #gst_vulkan_trash_fence_list_new + + + + + + + + + + + + + + + + whether @trash could be added to @trash_list + + + + + the #GstVulkanTrashList instance + + + + the #GstVulkanTrash to add to @trash_list + + + + + + + + + + + + the #GstVulkanTrashList instance + + + + + + + + whether all objects were signalled and freed within the @timeout + + + + + the #GstVulkanTrashList instance + + + + the timeout in ns to wait + + + + + + + + a new or reused #GstVulkanTrash for the provided + parameters. + + + + + a #GstVulkanTrashList + + + + a #GstVulkanFence to wait for signalling + + + + notify function for when @fence is signalled + + + + user data for @notify + + + + + + + + whether @trash could be added to @trash_list + + + + + the #GstVulkanTrashList + + + + #GstVulkanTrash object to add to the list + + + + + + Remove any stored #GstVulkanTrash objects that have had their associated +#GstVulkanFence signalled. + + + + + + + the #GstVulkanTrashList + + + + + + + + whether the wait succeeded in waiting for all objects to be freed. + + + + + the #GstVulkanTrashList + + + + timeout in ns to wait, -1 for indefinite + + + + + + the parent #GstVulkanHandle + + + + + + + + + + Add @trash to @trash_list for tracking + + + whether @trash could be added to @trash_list + + + + + the #GstVulkanTrashList instance + + + + the #GstVulkanTrash to add to @trash_list + + + + + + + + the #GstVulkanHandlePoolClass + + + + the #GstVulkanTrashListAdd functions + + + + the #GstVulkanTrashListGC function + + + + the #GstVulkanTrashListWait function + + + + + + + + + + Remove any memory allocated by any signalled objects. + + + + + + + the #GstVulkanTrashList instance + + + + + + Wait for a most @timeout to pass for all #GstVulkanTrash objects to be +signalled and freed. + + + whether all objects were signalled and freed within the @timeout + + + + + the #GstVulkanTrashList instance + + + + the timeout in ns to wait + + + + + + + + + + + + the #GstVulkanDevice + + + + user data + + + + + + + + the parent #GstBaseTransform + + + + the configured #GstVulkanInstance + + + + the configured #GstVulkanDevice + + + + the configured #GstVulkanQueue + + + + the configured input #GstCaps + + + + the configured input #GstVideoInfo + + + + the configured output #GstCaps + + + + the configured output #GstVideoInfo + + + + + + + + + + + + the parent #GstBaseTransformClass + + + + + + + + + + #GstVulkanWindow is an opaque struct and should only be accessed through the +provided api. + + + + + a new #GstVulkanWindow using @display's connection + + + + + a #GstVulkanDisplay + + + + + + Attempt to close the window. + + + + + + + a #GstVulkanWindow + + + + + + + + whether the given combination of @window, @device and + @queue_family_idx supports presentation + + + + + a #GstVulkanWindow + + + + a #GstVulkanDevice + + + + the queue family + + + + + + + + the VkSurface for displaying into. The caller is responsible for + calling `VkDestroySurface` on the returned surface. + + + + + a #GstVulkanWindow + + + + + + + + + + + + a #GstVulkanWindow + + + + Current width of @window + + + + Current height of @window + + + + + + Tell a @window that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window systems +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the @window. + + + + + + + a #GstVulkanWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + whether @window could be successfully opened + + + + + a #GstVulkanWindow + + + + + + + + + + + + + + + + + + + + Attempt to close the window. + + + + + + + a #GstVulkanWindow + + + + + + + + the #GstVulkanDisplay for @window + + + + + a #GstVulkanWindow + + + + + + + + whether the given combination of @window, @device and + @queue_family_idx supports presentation + + + + + a #GstVulkanWindow + + + + a #GstVulkanDevice + + + + the queue family + + + + + + + + the VkSurface for displaying into. The caller is responsible for + calling `VkDestroySurface` on the returned surface. + + + + + a #GstVulkanWindow + + + + + + + + + + + + a #GstVulkanWindow + + + + Current width of @window + + + + Current height of @window + + + + + + Tell a @window that it should handle events from the window system. These +events are forwarded upstream as navigation events. In some window systems +events are not propagated in the window hierarchy if a client is listening +for them. This method allows you to disable events handling completely +from the @window. + + + + + + + a #GstVulkanWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + whether @window could be successfully opened + + + + + a #GstVulkanWindow + + + + + + Ask the @window to redraw its contents + + + + + + + a #GstVulkanWindow + + + + + + Resize the output surface. + +Currently intended for subclasses to update internal state. + + + + + + + a #GstVulkanWindow + + + + the new width + + + + the new height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Will be emitted when a key event is received by the #GstVulkanWindow. + + + + + + the name of the event + + + + the id of the key pressed + + + + + + Will be emitted when a mouse event is received by the #GstVulkanWindow. + + + + + + the name of the event + + + + the id of the button + + + + the x coordinate of the mouse event + + + + the y coordinate of the mouse event + + + + + + + + + + + + + + + + + + + + + + Parent class + + + + + + + whether @window could be successfully opened + + + + + a #GstVulkanWindow + + + + + + + + + + + + + + a #GstVulkanWindow + + + + + + + + + + the VkSurface for displaying into. The caller is responsible for + calling `VkDestroySurface` on the returned surface. + + + + + a #GstVulkanWindow + + + + + + + + + + whether the given combination of @window, @device and + @queue_family_idx supports presentation + + + + + a #GstVulkanWindow + + + + a #GstVulkanDevice + + + + the queue family + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a #GstVulkanWindow + + + + Current width of @window + + + + Current height of @window + + + + + + + + + + + + + + a #GstVulkanWindow + + + + a #gboolean indicating if events should be handled or not. + + + + + + + + + + + + + + failed + + + old libraries + + + resource unavailable + + + + + + + + + + + + + + Whether @device was in @context + + + + + a #GstContext + + + + resulting #GstVulkanDevice + + + + + + + + Whether @display was in @context + + + + + a #GstContext + + + + resulting #GstVulkanDisplay + + + + + + + + Whether @instance was in @context + + + + + a #GstContext + + + + resulting #GstVulkanInstance + + + + + + + + Whether @queue was in @context + + + + + a #GstContext + + + + resulting #GstVulkanQueue + + + + + + Sets @device on @context + + + + + + + a #GstContext + + + + a #GstVulkanDevice + + + + + + Sets @display on @context + + + + + + + a #GstContext + + + + a #GstVulkanDisplay + + + + + + Sets @instance on @context + + + + + + + a #GstContext + + + + a #GstVulkanInstance + + + + + + Sets @queue on @context + + + + + + + a #GstContext + + + + a #GstVulkanQueue + + + + + + + + whether the memory at @mem is a #GstVulkanBufferMemory + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstVulkanImageMemory + + + + + a #GstMemory + + + + + + + + whether the memory at @mem is a #GstVulkanMemory + + + + + a #GstMemory + + + + + + Allocate a new #GstVulkanBufferMemory. + + + a #GstMemory object backed by a vulkan buffer + backed by vulkan device memory + + + + + a #GstVulkanDevice + + + + size of the new buffer + + + + buffer usage flags + + + + memory properties flags for the backing memory + + + + + + Initializes the Vulkan buffer memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanBufferMemory operation. + + + + + + + Allocated a new wrapped #GstVulkanBufferMemory with @buffer. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + a `VkBuffer` + + + + usage flags of @buffer + + + + user data to call @notify with + + + + a #GDestroyNotify called when @buffer is no longer in use + + + + + + Lock @cmd for writing cmmands to @cmd. Must be matched by a corresponding +gst_vulkan_command_buffer_unlock(). + + + + the #GstVulkanCommandBuffer + + + + + Unlock @cmd for writing cmmands to @cmd. Must be matched by a corresponding +gst_vulkan_command_buffer_lock(). + + + + the #GstVulkanCommandBuffer + + + + + + + a #GstVulkanHandle for @image matching the + original layout and format of @image or %NULL + + + + + a #GstVulkanDevice + + + + the SPIR-V shader byte code + + + + length of @code. Must be a multiple of 4 + + + + + + + + the Vulkan extension string required for creating a + VkSurfaceKHR using a window system handle or %NULL + + + + + a #GstVulkanDisplayType + + + + + + Perform the steps necessary for retrieving a #GstVulkanInstance and +(optionally) an #GstVulkanDisplay from the surrounding elements or from +the application using the #GstContext mechanism. + +If the contents of @display_ptr or @instance_ptr are not %NULL, then no +#GstContext query is necessary and no #GstVulkanInstance or #GstVulkanDisplay +retrieval is performed. + + + whether a #GstVulkanInstance exists in @instance_ptr and if + @display_ptr is not %NULL, whether a #GstVulkanDisplay exists in + @display_ptr + + + + + a #GstElement + + + + the resulting #GstVulkanDisplay + + + + the resulting #GstVulkanInstance + + + + + + + + + + + if @result indicates an error condition, fills out #GError with details of +the error + + + @result for easy chaining + + + + + a VkResult + + + + a #GError to fill + + + + the printf-like format to write into the #GError + + + + arguments for @format + + + + + + A helper define for internally calling @gst_vulkan_handle_pool_acquire() + + + + the #GstVulkanFenceCache + + + a #GError + + + + + + + the VkFormat to use for @v_format and @plane + + + + + the #GstVideoInfo + + + + the plane + + + + + + + + the #GstVulkanFormatInfo for @format or %NULL + + + + + a valid `VkFormat` + + + + + + + + a #GstVulkanImageView for @image matching the + original layout and format of @image + + + + + a #GstVulkanImageMemory + + + + + + Performs the steps necessary for executing a context query including +posting a message for the application to respond. + + + + + + + a #GstElement + + + + the context type to query for + + + + + + + + Whether the @query was successfully responded to from the passed + @display, @instance, and @device. + + + + + a #GstElement + + + + a #GstQuery of type %GST_QUERY_CONTEXT + + + + a #GstVulkanDisplay + + + + a #GstVulkanInstance + + + + a #GstVulkanInstance + + + + + + Helper function for implementing #GstElementClass.set_context() in +Vulkan capable elements. + +Retrieve's the #GstVulkanDisplay or #GstVulkanInstance in @context and places +the result in @display or @instance respectively. + + + whether the @display or @instance could be set successfully + + + + + a #GstElement + + + + a #GstContext + + + + location of a #GstVulkanDisplay + + + + location of a #GstVulkanInstance + + + + + + Allocated a new #GstVulkanImageMemory. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + the VkFormat for the new image + + + + width for the new image + + + + height for the new image + + + + tiling for the new image + + + + usage flags for the new image + + + + VkDeviceMemory property flags for the new image + + + + + + Initializes the Vulkan image memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanImageMemory operation. + + + + + + + + + a new #GstVulkanImageMemory wrapping @image + + + + + a #GstVulkanDevice + + + + a VkImage + + + + the VkFormat for @image + + + + width of @image + + + + height of @image + + + + tiling of @image + + + + usage flags of @image + + + + user data for @notify + + + + a #GDestroyNotify when @image is no longer needed + + + + + + Performs the steps necessary for executing a context query between only +other elements in the pipeline + + + + + + + a #GstElement + + + + the context type to query for + + + + + + Allocated a new #GstVulkanMemory. + + + a #GstMemory object backed by a vulkan device memory + + + + + a #GstVulkanDevice + + + + the Vulkan memory type index + + + + a #GstAllocationParams + + + + the size to allocate + + + + + + + + + + + whether a valid memory type could be found + + + + + a #GstVulkanDevice + + + + memory type bits to search for + + + + memory properties to search for + + + + resulting index of the memory type + + + + + + + + + + + + + + + + + Initializes the Vulkan memory allocator. It is safe to call this function +multiple times. This must be called before any other #GstVulkanMemory operation. + + + + + + + + + + + + + + + + + + + + name of @present_mode + + + + + a `VkPresentModeKHR` + + + + + + + + a message that corresponds to @result + + + + + a VkResult + + + + + + + + whether @query was answered successfully + + + + + a #GstElement + + + + the #GstQuery to perform + + + + the #GstPadDirection to perform query on + + + + + + + + + + + + + + + + + A #GstVulkanTrashNotify implementation for unreffing a #GstMiniObject when the +associated #GstVulkanFence is signalled + + + + + + + the #GstVulkanDevice + + + + the #GstMiniObject + + + + + + A #GstVulkanTrashNotify implementation for unreffing a #GstObject when the +associated #GstVulkanFence is signalled + + + + + + + the #GstVulkanDevice + + + + the #GstMiniObject + + + + + + + + + + + diff --git a/girs/GstWebRTC-1.0.gir b/girs/GstWebRTC-1.0.gir new file mode 100644 index 0000000000..8e60e23513 --- /dev/null +++ b/girs/GstWebRTC-1.0.gir @@ -0,0 +1,2681 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24#section-4.1.1 +for more information. + + none + + + balanced + + + max-compat + + + max-bundle + + + + + none + + + actpass + + + sendonly + + + recvonly + + + + + + + + + + + + + + + + + + + + + + + + + + + + + new + + + closed + + + failed + + + connecting + + + connected + + + + + + Close the @channel. + + + + + + + a #GstWebRTCDataChannel + + + + + + Send @data as a data message over @channel. + + + + + + + a #GstWebRTCDataChannel + + + + a #GBytes or %NULL + + + + + + Send @data as a data message over @channel. + + + TRUE if @channel is open and data could be queued + + + + + a #GstWebRTCDataChannel + + + + a #GBytes or %NULL + + + + + + Send @str as a string message over @channel. + + + + + + + a #GstWebRTCDataChannel + + + + a string or %NULL + + + + + + Send @str as a string message over @channel. + + + TRUE if @channel is open and data could be queued + + + + + a #GstWebRTCDataChannel + + + + a string or %NULL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Close the data channel + + + + + + + + + + + + + + + + + + + + + the #GError thrown + + + + + + + + + + + a #GBytes of the data received + + + + + + + + + + + the data received as a string + + + + + + + + + + + + + + + + a #GBytes with the data + + + + + + + + + + + the data to send as a string + + + + + + + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcdatachannelstate> + + connecting + + + open + + + closing + + + closed + + + + See <https://www.w3.org/TR/webrtc/#dom-rtcerrordetailtype> for more information. + + data-channel-failure + + + dtls-failure + + + fingerprint-failure + + + sctp-failure + + + sdp-syntax-error + + + hardware-encoder-not-available + + + encoder-error + + + invalid-state (part of WebIDL specification) + + + GStreamer-specific failure, not matching any other value from the specification + + + + + + + + + + + + + + none + + + ulpfec + red + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The ICE candidate + + + + A #GstPromise for task notifications (Since: 1.24) + + + + + + + + The #GstWebRTCICEStream, or %NULL + + + + + The #GstWebRTCICE + + + + The session id + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + URI of the TURN server + + + + + + + + The #GstWebRTCICETransport, or %NULL + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + + + Get HTTP Proxy to be used when connecting to TURN server. + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + +Get HTTP Proxy to be used when connecting to TURN server. + + + + + The #GstWebRTCICE + + + + + + + + TRUE if set as controller, FALSE otherwise + + + + + The #GstWebRTCICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FALSE on failure, otherwise @local_stats @remote_stats will be set + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + A pointer to #GstWebRTCICECandidateStats for local candidate + + + + pointer to #GstWebRTCICECandidateStats for remote candidate + + + + + + + + URI of the STUN sever + + + + + The #GstWebRTCICE + + + + + + + + URI of the TURN sever + + + + + The #GstWebRTCICE + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to enable force relay + + + + + + Set HTTP Proxy to be used when connecting to TURN server. + + + + + + + The #GstWebRTCICE + + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to set as controller + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEOnCandidateFunc callback function + + + + User data passed to the callback function + + + + a #GDestroyNotify when the candidate is no longer needed + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the STUN server + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ToS to be set + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the TURN sever + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The ICE candidate + + + + A #GstPromise for task notifications (Since: 1.24) + + + + + + + + The #GstWebRTCICEStream, or %NULL + + + + + The #GstWebRTCICE + + + + The session id + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + URI of the TURN server + + + + + + + + The #GstWebRTCICETransport, or %NULL + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + + + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + +Get HTTP Proxy to be used when connecting to TURN server. + + + + + The #GstWebRTCICE + + + + + + + + TRUE if set as controller, FALSE otherwise + + + + + The #GstWebRTCICE + + + + + + + + List of local candidates + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + + + + + List of remote candidates + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + + + + + FALSE on failure, otherwise @local_stats @remote_stats will be set + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + A pointer to #GstWebRTCICECandidateStats for local candidate + + + + pointer to #GstWebRTCICECandidateStats for remote candidate + + + + + + + + URI of the STUN sever + + + + + The #GstWebRTCICE + + + + + + + + URI of the TURN sever + + + + + The #GstWebRTCICE + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to enable force relay + + + + + + Set HTTP Proxy to be used when connecting to TURN server. + + + + + + + The #GstWebRTCICE + + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to set as controller + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEOnCandidateFunc callback function + + + + User data passed to the callback function + + + + a #GDestroyNotify when the candidate is no longer needed + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the STUN server + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ToS to be set + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the TURN sever + + + + + + Maximum port for local rtp port range. +min-rtp-port must be <= max-rtp-port + + + + Minimum port for local rtp port range. +min-rtp-port must be <= max-rtp-port + + + + + + + + + + + + + + + + + + + + + + + + Add a local IP address to use for ICE candidate gathering. If none +are supplied, they will be discovered automatically. Calling this signal +stops automatic ICE gathering. + + whether the address could be added. + + + + + The local IP address + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A copy of @stats + + + + + The #GstWebRTCICE + + + + + + Helper function to free #GstWebRTCICECandidateStats + + + + + + + The #GstWebRTCICECandidateStats to be free'd + + + + + + + + + + + + + + + The #GstWebRTCICEStream, or %NULL + + + + + The #GstWebRTCICE + + + + The session id + + + + + + + + + + The #GstWebRTCICETransport, or %NULL + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + The ICE candidate + + + + A #GstPromise for task notifications (Since: 1.24) + + + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ICE username + + + + ICE password + + + + + + + + + + FALSE on error, TRUE otherwise + + + + + The #GstWebRTCICE + + + + URI of the TURN server + + + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to set as controller + + + + + + + + + + TRUE if set as controller, FALSE otherwise + + + + + The #GstWebRTCICE + + + + + + + + + + + + + + The #GstWebRTCICE + + + + TRUE to enable force relay + + + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the STUN server + + + + + + + + + + URI of the STUN sever + + + + + The #GstWebRTCICE + + + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the TURN sever + + + + + + + + + + URI of the TURN sever + + + + + The #GstWebRTCICE + + + + + + + + + + + + + + The #GstWebRTCICE + + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + + + + + + + + + + URI of the HTTP proxy of the form + http://[username:password@]hostname[:port] + +Get HTTP Proxy to be used when connecting to TURN server. + + + + + The #GstWebRTCICE + + + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + ToS to be set + + + + + + + + + + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEOnCandidateFunc callback function + + + + User data passed to the callback function + + + + a #GDestroyNotify when the candidate is no longer needed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FALSE on failure, otherwise @local_stats @remote_stats will be set + + + + + The #GstWebRTCICE + + + + The #GstWebRTCICEStream + + + + A pointer to #GstWebRTCICECandidateStats for local candidate + + + + pointer to #GstWebRTCICECandidateStats for remote candidate + + + + + + + + + + + + + + RTP component + + + RTCP component + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate> + + new + + + checking + + + connected + + + completed + + + failed + + + disconnected + + + closed + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate> + + new + + + gathering + + + complete + + + + Callback function to be triggered on discovery of a new candidate + + + + + + + The #GstWebRTCICE + + + + The stream id + + + + The discovered candidate + + + + User data that was set by #gst_webrtc_ice_set_on_ice_candidate + + + + + + + controlled + + + controlling + + + + + + + + the #GstWebRTCICETransport, or %NULL + + + + + the #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + FALSE on error, TRUE otherwise + + + + + the #GstWebRTCICEStream + + + + + + + + the #GstWebRTCICETransport, or %NULL + + + + + the #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + FALSE on error, TRUE otherwise + + + + + the #GstWebRTCICEStream + + + + + + + + + + + + + + + + + + + + + + + + the #GstWebRTCICETransport, or %NULL + + + + + the #GstWebRTCICEStream + + + + The #GstWebRTCICEComponent + + + + + + + + + + FALSE on error, TRUE otherwise + + + + + the #GstWebRTCICEStream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24#section-4.1.1 +for more information. + + all + + + relay + + + + https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-kind + + Kind has not yet been set + + + Kind is audio + + + Kind is audio + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate> + + new + + + connecting + + + connected + + + disconnected + + + failed + + + closed + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcprioritytype> + + very-low + + + low + + + medium + + + high + + + + An object to track the receiving aspect of the stream + +Mostly matches the WebRTC RTCRtpReceiver interface. + + + The DTLS transport for this receiver + + + + + + + + An object to track the sending aspect of the stream + +Mostly matches the WebRTC RTCRtpSender interface. + + + Sets the content of the IPv4 Type of Service (ToS), also known as DSCP +(Differentiated Services Code Point). +This also sets the Traffic Class field of IPv6. + + + + + + + a #GstWebRTCRTPSender + + + + The priority of this sender + + + + + + The priority from which to set the DSCP field on packets + + + + The DTLS transport for this sender + + + + + + + + Mostly matches the WebRTC RTCRtpTransceiver interface. + + + Caps representing the codec preferences. + + + + The transceiver's current directionality, or none if the +transceiver is stopped or has never participated in an exchange +of offers and answers. To change the transceiver's +directionality, set the value of the direction property. + + + + Direction of the transceiver. + + + + The kind of media this transceiver transports + + + + The media ID of the m-line associated with this transceiver. This +association is established, when possible, whenever either a +local or remote description is applied. This field is null if +neither a local or remote description has been applied, or if its +associated m-line is rejected by either a remote offer or any +answer. + + + + + + + + + + + + + + + + + + none + + + inactive + + + sendonly + + + recvonly + + + sendrecv + + + + + + + + + + + + + + + + + + + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcsctptransportstate> + + new + + + connecting + + + connected + + + closed + + + + See <http://w3c.github.io/webrtc-pc/#rtcsdptype> + + offer + + + pranswer + + + answer + + + rollback + + + + + the string representation of @type or "unknown" when @type is not + recognized. + + + + + a #GstWebRTCSDPType + + + + + + + See <https://www.w3.org/TR/webrtc/#rtcsessiondescription-class> + + + the #GstWebRTCSDPType of the description + + + + the #GstSDPMessage of the description + + + + + + a new #GstWebRTCSessionDescription from @type + and @sdp + + + + + a #GstWebRTCSDPType + + + + a #GstSDPMessage + + + + + + + + a new copy of @src + + + + + a #GstWebRTCSessionDescription + + + + + + Free @desc and all associated resources + + + + + + + a #GstWebRTCSessionDescription + + + + + + + See <http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate> + + stable + + + closed + + + have-local-offer + + + have-remote-offer + + + have-local-pranswer + + + have-remote-pranswer + + + + See <https://w3c.github.io/webrtc-stats/#dom-rtcstatstype> + + codec + + + inbound-rtp + + + outbound-rtp + + + remote-inbound-rtp + + + remote-outbound-rtp + + + csrc + + + peer-connection + + + data-channel + + + stream + + + transport + + + candidate-pair + + + local-candidate + + + remote-candidate + + + certificate + + + + + + + + + + + the string representation of @type or "unknown" when @type is not + recognized. + + + + + a #GstWebRTCSDPType + + + + + + diff --git a/meson.build b/meson.build index abc46b6d3e..2b140c8692 100644 --- a/meson.build +++ b/meson.build @@ -225,6 +225,23 @@ gst_plugins_doc_dep = custom_target('plugins-doc-cache', capture: true, ) +gir_files = [] +gir_targets = [] +foreach pkgname_library : all_libraries + lib_def = pkgname_library[1] + foreach gir_target: lib_def.get('gir_targets', []) + gir_files += [gir_target[0].full_path()] + gir_targets += gir_target + endforeach +endforeach + +custom_target('update_girs', + command: [find_program('scripts/update-girs.py'), meson.build_root()] + gir_files, + output: 'update_girs', + capture: true, + depends: gir_targets +) + if meson.is_cross_build() or build_machine.system() == 'windows' if get_option('doc').enabled() error('Documentation enabled but building the doc while cross building or building on windows is not supported yet.') diff --git a/scripts/update-girs.py b/scripts/update-girs.py new file mode 100755 index 0000000000..db115481fc --- /dev/null +++ b/scripts/update-girs.py @@ -0,0 +1,42 @@ +#!/usr/bin/python3 +import os +import sys +from lxml import etree + +from pathlib import Path as P +import argparse + +PARSER = argparse.ArgumentParser() +PARSER.add_argument('builddir') +PARSER.add_argument('girs', nargs="+") + + +def make_rel(elem, gir_relpath): + filepath = P(elem.attrib["filename"]) + filedir = filepath.parent + girdir = gir_relpath.parent + + while filedir.name != girdir.name: + filedir = filedir.parent + + while filedir.name == girdir.name: + filedir = filedir.parent + girdir = girdir.parent + elem.attrib["filename"] = str('..' / girdir / filepath) + + +if __name__ == "__main__": + opts = PARSER.parse_args() + girdir = P(__file__).parent.parent / 'girs' + + for girfile in opts.girs: + gir_relpath = P(os.path.relpath(girfile, opts.builddir)) + et = etree.parse(girfile) + # Remove line numbers from the girs as those would change all the time. + for n in et.iter("{http://www.gtk.org/introspection/core/1.0}source-position"): + del n.attrib["line"] + make_rel(n, gir_relpath) + for n in et.iter("{http://www.gtk.org/introspection/core/1.0}doc"): + del n.attrib["line"] + make_rel(n, gir_relpath) + et.write(str(girdir / os.path.basename(girfile)), pretty_print=True) diff --git a/subprojects/gst-devtools/validate/gst/validate/meson.build b/subprojects/gst-devtools/validate/gst/validate/meson.build index 0a574dfa75..4ddc1d96c9 100644 --- a/subprojects/gst-devtools/validate/gst/validate/meson.build +++ b/subprojects/gst-devtools/validate/gst/validate/meson.build @@ -117,6 +117,7 @@ if build_gir if not static_build validate_gir = gnome.generate_gir(gstvalidate, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [validate_gir]} validate_gen_sources += [validate_gir] endif endif diff --git a/subprojects/gst-editing-services/ges/meson.build b/subprojects/gst-editing-services/ges/meson.build index 77c1d1c21b..03f1a126d0 100644 --- a/subprojects/gst-editing-services/ges/meson.build +++ b/subprojects/gst-editing-services/ges/meson.build @@ -218,6 +218,7 @@ if build_gir if not static_build gir += {'sources': ges_sources + ges_headers + files('ges-image-source.h')} ges_gir = gnome.generate_gir(libges, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [ges_gir]} ges_gen_sources += [ges_gir] endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/audio/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/audio/meson.build index a73b9087c7..e9eb653488 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/audio/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/audio/meson.build @@ -41,6 +41,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build audio_gir = gnome.generate_gir(gstbadaudio, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [audio_gir]} gen_sources += audio_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/basecamerabinsrc/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/basecamerabinsrc/meson.build index 77b81941ee..f8f11b9c71 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/basecamerabinsrc/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/basecamerabinsrc/meson.build @@ -42,6 +42,7 @@ if build_gir and not static_build library_def += {'gir': [gir]} if not static_build basecamerabin_gir = gnome.generate_gir(gstbasecamerabin, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [basecamerabin_gir]} gen_sources += basecamerabin_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/meson.build index f2bec85cb7..406a99e6ae 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/meson.build @@ -72,6 +72,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build codecs_gir = gnome.generate_gir(gstcodecs, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [codecs_gir]} gen_sources += codecs_gir endif endif @@ -81,4 +82,4 @@ gstcodecs_dep = declare_dependency(link_with : gstcodecs, include_directories : [libsinc], sources: gen_sources, dependencies : [gstvideo_dep, gstcodecparsers_dep]) -meson.override_dependency(pkg_name, gstcodecs_dep) \ No newline at end of file +meson.override_dependency(pkg_name, gstcodecs_dep) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/meson.build index 2793f36e0e..0832a0745f 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/meson.build @@ -118,9 +118,11 @@ if build_gir } if not static_build cudagst_gir = gnome.generate_gir(gstcuda, kwargs: cuda_gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [cudagst_gir]} gir += {'includes': gir['includes'] + [cudagst_gir[0]]} gst_cuda_gir = gnome.generate_gir(gstcuda, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_cuda_gir]} gen_sources += gst_cuda_gir endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build index 160080ad5a..f9f606918d 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build @@ -212,6 +212,7 @@ if build_gir } if not static_build d3d11_gir = gnome.generate_gir(gstd3d11, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [d3d11_gir]} gen_sources += d3d11_gir endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/insertbin/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/insertbin/meson.build index 5a9f7f7e00..21fe522943 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/insertbin/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/insertbin/meson.build @@ -40,6 +40,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build insertbin_gir = gnome.generate_gir(gstinsertbin, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [insertbin_gir]} gen_sources += insertbin_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/mpegts/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/mpegts/meson.build index 7a2b153127..db808b39d0 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/mpegts/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/mpegts/meson.build @@ -76,6 +76,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build mpegts_gir = gnome.generate_gir(gstmpegts, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [mpegts_gir]} gen_sources += mpegts_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/play/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/play/meson.build index 582b70f115..3d38b5c0c8 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/play/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/play/meson.build @@ -62,6 +62,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build play_gir = gnome.generate_gir(gstplay, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [play_gir]} gen_sources += play_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/player/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/player/meson.build index 0c273f0efd..7792382bd8 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/player/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/player/meson.build @@ -65,6 +65,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build player_gir = gnome.generate_gir(gstplayer, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [player_gir]} gen_sources += player_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/transcoder/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/transcoder/meson.build index 861569f3b1..1610cf8b3c 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/transcoder/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/transcoder/meson.build @@ -53,6 +53,7 @@ if build_gir library_def += { 'gir': [gir]} if not static_build transcoder_gir = gnome.generate_gir(gst_transcoder, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [transcoder_gir]} transcoder_gen_sources += transcoder_gir endif endif diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/meson.build index 361ae6e887..f2b34e377e 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/meson.build @@ -376,6 +376,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build vulkan_gir = gnome.generate_gir(gstvulkan, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_gir]} gen_sources += vulkan_gir endif endif @@ -414,6 +415,7 @@ if enabled_vulkan_winsys.contains('xcb') if not static_build gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes} vulkan_xcb_gir = gnome.generate_gir(gstvulkan, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_xcb_gir]} endif gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes} @@ -449,6 +451,7 @@ if enabled_vulkan_winsys.contains('wayland') if not static_build gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes} vulkan_wayland_gir += gnome.generate_gir(gstvulkan, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_wayland_gir]} endif gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes} library_def += {'gir': library_def['gir'] + [gir]} diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/meson.build index 1a41d40a97..08a3d997f0 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/webrtc/meson.build @@ -88,6 +88,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build webrtc_gir = gnome.generate_gir(gstwebrtc, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [webrtc_gir]} webrtc_gen_sources += webrtc_gir endif endif @@ -102,4 +103,4 @@ gstwebrtc_dep = declare_dependency(link_with: gstwebrtc, meson.override_dependency(pkg_name, gstwebrtc_dep) -subdir('nice') \ No newline at end of file +subdir('nice') diff --git a/subprojects/gst-plugins-base/gst-libs/gst/allocators/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/allocators/meson.build index 879c2fcb90..f9984b7b53 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/allocators/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/allocators/meson.build @@ -48,6 +48,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build allocators_gir = gnome.generate_gir(gstallocators, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [allocators_gir]} allocators_gen_sources += allocators_gir endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/app/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/app/meson.build index f1c3357170..3ddc825a74 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/app/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/app/meson.build @@ -57,6 +57,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build app_gir = gnome.generate_gir(gstapp, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [app_gir]} app_gen_sources += app_gir endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/audio/meson.build index a2e0a6b63c..536de8e5a1 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/meson.build @@ -178,6 +178,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build audio_gir = gnome.generate_gir(gstaudio, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [audio_gir]} audio_gen_sources += [audio_gir] endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/gl/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/gl/meson.build index fdd1b8cfa8..9be4f74e2b 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/gl/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/gl/meson.build @@ -1111,6 +1111,8 @@ if build_gstgl library_def += {'gir': [gir]} if not static_build gl_gir = gnome.generate_gir(gstgl, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gl_gir]} + library_def += {'gir': [gir]} gen_sources += [gl_gir] endif endif @@ -1156,6 +1158,7 @@ if build_gstgl if not static_build gir += {'includes': gir['includes'] + [gl_gir[0]]} gl_x11_gir = gnome.generate_gir(gstgl, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gl_x11_gir]} endif endif gstglx11_dep = declare_dependency(dependencies : [gstgl_dep, x11_dep, xcb_dep], @@ -1193,6 +1196,7 @@ if build_gstgl if not static_build gir += {'includes': gir['includes'] + [gl_gir[0]]} gl_wayland_gir = gnome.generate_gir(gstgl, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gl_wayland_gir]} endif endif gstglwayland_dep = declare_dependency(dependencies : [gstgl_dep], @@ -1228,6 +1232,7 @@ if build_gstgl if not static_build gir += {'includes': gir['includes'] + [gl_gir[0]]} gl_egl_gir = gnome.generate_gir(gstgl, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gl_egl_gir]} endif endif gstglegl_dep = declare_dependency(dependencies : [gstgl_dep], diff --git a/subprojects/gst-plugins-base/gst-libs/gst/pbutils/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/pbutils/meson.build index e740a7565b..1cbf0c032c 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/pbutils/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/pbutils/meson.build @@ -88,6 +88,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build pbutils_gir = gnome.generate_gir(pbutils, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [pbutils_gir]} pbutils_gen_sources += [pbutils_gir] endif endif @@ -98,4 +99,4 @@ pbutils_dep = declare_dependency(link_with : pbutils, dependencies : gstpbutils_deps, sources : pbutils_gen_sources) -meson.override_dependency(pkg_name, pbutils_dep) \ No newline at end of file +meson.override_dependency(pkg_name, pbutils_dep) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/rtp/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/rtp/meson.build index 36d451da73..19a65ee713 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/rtp/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/rtp/meson.build @@ -74,6 +74,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build rtp_gir = gnome.generate_gir(gst_rtp, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [rtp_gir]} rtp_gen_sources += [rtp_gir] endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/rtsp/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/rtsp/meson.build index f8fd997a98..84667b6160 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/rtsp/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/rtsp/meson.build @@ -79,6 +79,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build rtsp_gir = gnome.generate_gir(gst_rtsp, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [rtsp_gir]} rtsp_gen_sources += [rtsp_gir] endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/sdp/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/sdp/meson.build index 02b977d7b5..165a357d3b 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/sdp/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/sdp/meson.build @@ -49,6 +49,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build sdp_gir = gnome.generate_gir(gstsdp, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [sdp_gir]} sdp_gen_sources += [sdp_gir] endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build index 2969550b8e..4ae765012c 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build @@ -112,6 +112,7 @@ if build_gir library_def = {'lib': library_def['lib'], 'gir': [gir]} if not static_build tag_gir = gnome.generate_gir(gsttag, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [tag_gir]} tag_gen_sources += [tag_gir] endif endif diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/meson.build b/subprojects/gst-plugins-base/gst-libs/gst/video/meson.build index 55d658e695..1b492fd9e0 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/video/meson.build +++ b/subprojects/gst-plugins-base/gst-libs/gst/video/meson.build @@ -174,6 +174,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build video_gir = gnome.generate_gir(gstvideo, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [video_gir]} video_gen_sources += [video_gir] endif endif diff --git a/subprojects/gst-rtsp-server/gst/rtsp-server/meson.build b/subprojects/gst-rtsp-server/gst/rtsp-server/meson.build index a67be9ced3..15cb124763 100644 --- a/subprojects/gst-rtsp-server/gst/rtsp-server/meson.build +++ b/subprojects/gst-rtsp-server/gst/rtsp-server/meson.build @@ -95,6 +95,7 @@ if build_gir # library_def = {'gir': [gir]} if not static_build rtsp_server_gir = gnome.generate_gir(gst_rtsp_server, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [rtsp_server_gir]} rtsp_server_gen_sources += [rtsp_server_gir] endif endif diff --git a/subprojects/gstreamer/gst/meson.build b/subprojects/gstreamer/gst/meson.build index 9d0c4ec4ab..6af53ffef4 100644 --- a/subprojects/gstreamer/gst/meson.build +++ b/subprojects/gstreamer/gst/meson.build @@ -314,6 +314,7 @@ if build_gir # creating another gir which links against gst-full. if not static_build gst_gir = gnome.generate_gir(libgst, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_gir]} gst_gen_sources += gst_gir endif endif diff --git a/subprojects/gstreamer/libs/gst/base/meson.build b/subprojects/gstreamer/libs/gst/base/meson.build index d897abe9ec..e08254d929 100644 --- a/subprojects/gstreamer/libs/gst/base/meson.build +++ b/subprojects/gstreamer/libs/gst/base/meson.build @@ -79,6 +79,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build gst_base_gir = gnome.generate_gir(gst_base, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_base_gir]} gst_base_gen_sources += [gst_base_gir] endif endif diff --git a/subprojects/gstreamer/libs/gst/check/meson.build b/subprojects/gstreamer/libs/gst/check/meson.build index 5cd583e3e6..b80fa38b4f 100644 --- a/subprojects/gstreamer/libs/gst/check/meson.build +++ b/subprojects/gstreamer/libs/gst/check/meson.build @@ -81,6 +81,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build gst_check_gir = gnome.generate_gir(gst_check, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_check_gir]} gst_check_gen_sources += gst_check_gir endif endif diff --git a/subprojects/gstreamer/libs/gst/controller/meson.build b/subprojects/gstreamer/libs/gst/controller/meson.build index a5db2ce786..5863df5ded 100644 --- a/subprojects/gstreamer/libs/gst/controller/meson.build +++ b/subprojects/gstreamer/libs/gst/controller/meson.build @@ -76,6 +76,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build gst_controller_gir = gnome.generate_gir(gst_controller, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_controller_gir]} gst_controller_gen_sources += [gst_controller_gir] endif endif diff --git a/subprojects/gstreamer/libs/gst/net/meson.build b/subprojects/gstreamer/libs/gst/net/meson.build index bd7771f7e8..e4faadc74a 100644 --- a/subprojects/gstreamer/libs/gst/net/meson.build +++ b/subprojects/gstreamer/libs/gst/net/meson.build @@ -63,6 +63,7 @@ if build_gir library_def += {'gir': [gir]} if not static_build gst_net_gir = gnome.generate_gir(gst_net, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', []) + [gst_net_gir]} gst_net_gen_sources += [gst_net_gir] endif endif