diff --git a/gir-files/GstAllocators-1.0.gir b/gir-files/GstAllocators-1.0.gir
new file mode 100644
index 000000000..5e5596847
--- /dev/null
+++ b/gir-files/GstAllocators-1.0.gir
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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().
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for allocators with dmabuf-backed memory
+
+
+ Return a new dmabuf allocator.
+
+
+ a new dmabuf allocator, or NULL if the allocator
+ isn't available. 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, or NULL if the allocator
+ isn't available. 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
+
+
+
+
+
+ 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
+
+
+
+
+
+ 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/gir-files/GstAudio-1.0.gir b/gir-files/GstAudio-1.0.gir
index 852e506a9..4e561bf6d 100644
--- a/gir-files/GstAudio-1.0.gir
+++ b/gir-files/GstAudio-1.0.gir
@@ -10646,6 +10646,16 @@ channel positions.
+
+ This library contains some helper functions for audio elements.
+
+
+ This library contains some helper functions for multichannel audio.
+
+
+ This module contains some helper functions for encapsulating various
+audio formats in IEC 61937 headers and padding.
+
diff --git a/gir-files/GstGL-1.0.gir b/gir-files/GstGL-1.0.gir
index d1f74a4fe..82a52706f 100644
--- a/gir-files/GstGL-1.0.gir
+++ b/gir-files/GstGL-1.0.gir
@@ -10556,6 +10556,13 @@ or a valid GLSL version and/or profile.
+
+ Provides some helper API for dealing with OpenGL API's and platforms
+
+
+ Some useful utilities for converting between various formats and OpenGL
+formats.
+
@@ -10621,395 +10628,5 @@ or a valid GLSL version and/or profile.
-
-
-
-
-
- the contents of a #GstGLDisplayEGL are private and should only be accessed
-through the provided API
-
-
- Create a new #GstGLDisplayEGL using the default EGL_DEFAULT_DISPLAY.
-
-
- a new #GstGLDisplayEGL or %NULL
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a EGL display connection from a native Display.
-
-This function will return the same value for multiple calls with the same
-@display.
-
-
- a new #GstGLDisplayEGL
-
-
-
-
- an existing #GstGLDisplay
-
-
-
-
-
- Attempts to create a new `EGLDisplay` from @display. If @type is
-%GST_GL_DISPLAY_TYPE_ANY, then @display must be 0. @type must not be
-%GST_GL_DISPLAY_TYPE_NONE.
-
-
- A `EGLDisplay` or `EGL_NO_DISPLAY`
-
-
-
-
- a #GstGLDisplayType
-
-
-
- pointer to a display (or 0)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the contents of a #GstGLDisplayWayland are private and should only be accessed
-through the provided API
-
-
- Create a new #GstGLDisplayWayland from the wayland display name. See `wl_display_connect`()
-for details on what is a valid name.
-
-
- a new #GstGLDisplayWayland or %NULL
-
-
-
-
- a display name
-
-
-
-
-
- Creates a new display connection from a wl_display Display.
-
-
- a new #GstGLDisplayWayland
-
-
-
-
- an existing, wayland display
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the contents of a #GstGLDisplayX11 are private and should only be accessed
-through the provided API
-
-
- Create a new #GstGLDisplayX11 from the x11 display name. See `XOpenDisplay`()
-for details on what is a valid name.
-
-
- a new #GstGLDisplayX11 or %NULL
-
-
-
-
- a display name
-
-
-
-
-
- Creates a new display connection from a X11 Display.
-
-
- a new #GstGLDisplayX11
-
-
-
-
- an existing, x11 display
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gir-files/GstGLEGL-1.0.gir b/gir-files/GstGLEGL-1.0.gir
new file mode 100644
index 000000000..6b8e7ac2a
--- /dev/null
+++ b/gir-files/GstGLEGL-1.0.gir
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ the contents of a #GstGLDisplayEGL are private and should only be accessed
+through the provided API
+
+
+ Create a new #GstGLDisplayEGL using the default EGL_DEFAULT_DISPLAY.
+
+
+ a new #GstGLDisplayEGL or %NULL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a EGL display connection from a native Display.
+
+This function will return the same value for multiple calls with the same
+@display.
+
+
+ a new #GstGLDisplayEGL
+
+
+
+
+ an existing #GstGLDisplay
+
+
+
+
+
+ Attempts to create a new `EGLDisplay` from @display. If @type is
+%GST_GL_DISPLAY_TYPE_ANY, then @display must be 0. @type must not be
+%GST_GL_DISPLAY_TYPE_NONE.
+
+
+ A `EGLDisplay` or `EGL_NO_DISPLAY`
+
+
+
+
+ a #GstGLDisplayType
+
+
+
+ pointer to a display (or 0)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GstGLDisplayEGL represents a connection to an EGL `EGLDisplay` handle created
+internally (gst_gl_display_egl_new()) or wrapped by the application
+(gst_gl_display_egl_new_with_egl_display())
+
+
+ #GstGLDisplayEGLDevice represents a `EGLDeviceEXT` handle created internally
+(gst_gl_display_egl_device_new()) or wrapped by the application
+(gst_gl_display_egl_device_new_with_egl_device())
+
+
+
+
diff --git a/gir-files/GstGLWayland-1.0.gir b/gir-files/GstGLWayland-1.0.gir
new file mode 100644
index 000000000..865c8dc0b
--- /dev/null
+++ b/gir-files/GstGLWayland-1.0.gir
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+ the contents of a #GstGLDisplayWayland are private and should only be accessed
+through the provided API
+
+
+ Create a new #GstGLDisplayWayland from the wayland display name. See `wl_display_connect`()
+for details on what is a valid name.
+
+
+ a new #GstGLDisplayWayland or %NULL
+
+
+
+
+ a display name
+
+
+
+
+
+ Creates a new display connection from a wl_display Display.
+
+
+ a new #GstGLDisplayWayland
+
+
+
+
+ an existing, wayland display
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GstGLDisplayWayland represents a connection to a Wayland `wl_display` handle
+created internally (gst_gl_display_wayland_new()) or wrapped by the application
+(gst_gl_display_wayland_new_with_display())
+
+
+
diff --git a/gir-files/GstGLX11-1.0.gir b/gir-files/GstGLX11-1.0.gir
new file mode 100644
index 000000000..6bdcb7f73
--- /dev/null
+++ b/gir-files/GstGLX11-1.0.gir
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+ the contents of a #GstGLDisplayX11 are private and should only be accessed
+through the provided API
+
+
+ Create a new #GstGLDisplayX11 from the x11 display name. See `XOpenDisplay`()
+for details on what is a valid name.
+
+
+ a new #GstGLDisplayX11 or %NULL
+
+
+
+
+ a display name
+
+
+
+
+
+ Creates a new display connection from a X11 Display.
+
+
+ a new #GstGLDisplayX11
+
+
+
+
+ an existing, x11 display
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GstGLDisplayX11 represents a connection to an X11 `Display` handle created
+internally (gst_gl_display_x11_new()) or wrapped by the application
+(gst_gl_display_x11_new_with_display())
+
+
+
diff --git a/gir-files/GstPbutils-1.0.gir b/gir-files/GstPbutils-1.0.gir
index 1eb83bc64..0e1b82284 100644
--- a/gir-files/GstPbutils-1.0.gir
+++ b/gir-files/GstPbutils-1.0.gir
@@ -3462,6 +3462,309 @@ invalid Opus caps.
+
+ Functions to create and handle encoding profiles.
+
+Encoding profiles describe the media types and settings one wishes to use
+for an encoding process. The top-level profiles are commonly
+#GstEncodingContainerProfile(s) (which contains a user-readable name and
+description along with which container format to use). These, in turn,
+reference one or more #GstEncodingProfile(s) which indicate which encoding
+format should be used on each individual streams.
+
+#GstEncodingProfile(s) can be provided to the 'encodebin' element, which
+will take care of selecting and setting up the required elements to produce
+an output stream conforming to the specifications of the profile.
+
+Unlike other systems, the encoding profiles do not specify which #GstElement
+to use for the various encoding and muxing steps, but instead relies on
+specifying the format one wishes to use.
+
+Encoding profiles can be created at runtime by the application or loaded
+from (and saved to) file using the #GstEncodingTarget API.
+
+## Defining a GstEncodingProfile as a string
+
+### Serialized encoding profile formats
+
+#### Using encoders and muxer element factory name:
+
+```
+ muxer_factory_name:video_encoder_factory_name:audio_encoder_factory_name
+```
+
+For example to encode a stream into a WebM container, with an OGG audio
+stream and a VP8 video stream, the serialized #GstEncodingProfile looks
+like:
+
+```
+ webmmux:vp8enc:vorbisenc
+```
+
+#### Define the encoding profile in a generic way using caps:
+
+```
+ muxer_source_caps:video_encoder_source_caps:audio_encoder_source_caps
+```
+
+For example to encode a stream into a WebM container, with an OGG audio
+stream and a VP8 video stream, the serialized #GstEncodingProfile looks
+like:
+
+```
+ video/webm:video/x-vp8:audio/x-vorbis
+```
+
+It is possible to mix caps and element type names so you can specify a specific
+video encoder while using caps for other encoders/muxer.
+
+### Advanced encoding format serialization features:
+
+You can also set the preset name of the encoding profile using the
+caps+preset_name syntax as in:
+
+```
+ video/webm:video/x-vp8+youtube-preset:audio/x-vorbis
+```
+
+Moreover, you can set extra properties `presence`, `single-segment` and
+`variable-framerate` * of an * encoding profile using the `|presence=` syntax
+as in:
+
+```
+ video/webm:video/x-vp8|presence=1,variable-framerate=true|single-segment=true:audio/x-vorbis
+```
+
+This field allows specifies the maximum number of times a
+#GstEncodingProfile can be used inside an encodebin. If 0, it is not a
+mandatory stream and can be used as many times as necessary.
+
+You can also use the `restriction_caps->encoded_format_caps` syntax to
+specify the restriction caps to be set on a #GstEncodingProfile
+
+It corresponds to 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. This property does
+not make sense for muxers. See #gst_encoding_profile_get_restriction for
+more details.
+
+To force a video stream to be encoded with a Full HD resolution (using WebM
+as the container format, VP8 as the video codec and Vorbis as the audio
+codec), you should use:
+
+```
+ "video/webm:video/x-raw,width=1920,height=1080->video/x-vp8:audio/x-vorbis"
+```
+
+> NOTE: Make sure to enclose into quotes to avoid '>' to be reinterpreted by
+> the shell.
+
+In the case you are using encoder types, the following is also possible:
+
+```
+ "matroskamux:x264enc,width=1920,height=1080:audio/x-vorbis"
+```
+
+## Some serialized encoding formats examples:
+
+MP3 audio and H264 in MP4:
+
+```
+ video/quicktime,variant=iso:video/x-h264:audio/mpeg,mpegversion=1,layer=3
+```
+
+Vorbis and theora in OGG:
+
+```
+ application/ogg:video/x-theora:audio/x-vorbis
+```
+
+AC3 and H264 in MPEG-TS:
+
+```
+ video/mpegts:video/x-h264:audio/x-ac3
+```
+
+## Loading a profile from encoding targets
+
+Anywhere where you have to use a string to define a #GstEncodingProfile,
+you can use load it from a #GstEncodingTarget using the following syntaxes:
+
+```
+ target_name[/profilename/category]
+```
+
+or
+
+```
+ /path/to/target.gep:profilename
+```
+
+## Examples
+
+### Creating a profile
+
+``` c
+#include <gst/pbutils/encoding-profile.h>
+...
+GstEncodingProfile *
+create_ogg_theora_profile(void)
+{
+ GstEncodingContainerProfile *prof;
+ GstCaps *caps;
+
+ caps = gst_caps_from_string("application/ogg");
+ prof = gst_encoding_container_profile_new("Ogg audio/video",
+ "Standard OGG/THEORA/VORBIS",
+ caps, NULL);
+ gst_caps_unref (caps);
+
+ caps = gst_caps_from_string("video/x-theora");
+ gst_encoding_container_profile_add_profile(prof,
+ (GstEncodingProfile*) gst_encoding_video_profile_new(caps, NULL, NULL, 0));
+ gst_caps_unref (caps);
+
+ caps = gst_caps_from_string("audio/x-vorbis");
+ gst_encoding_container_profile_add_profile(prof,
+ (GstEncodingProfile*) gst_encoding_audio_profile_new(caps, NULL, NULL, 0));
+ gst_caps_unref (caps);
+
+ return (GstEncodingProfile*) prof;
+}
+
+```
+
+### Example: Using an encoder preset with a profile
+
+``` c
+#include <gst/pbutils/encoding-profile.h>
+...
+GstEncodingProfile *
+create_ogg_theora_profile(void)
+{
+ GstEncodingVideoProfile *v;
+ GstEncodingAudioProfile *a;
+ GstEncodingContainerProfile *prof;
+ GstCaps *caps;
+ GstPreset *preset;
+
+ caps = gst_caps_from_string ("application/ogg");
+ prof = gst_encoding_container_profile_new ("Ogg audio/video",
+ "Standard OGG/THEORA/VORBIS",
+ caps, NULL);
+ gst_caps_unref (caps);
+
+ preset = GST_PRESET (gst_element_factory_make ("theoraenc", "theorapreset"));
+ g_object_set (preset, "bitrate", 1000, NULL);
+ // The preset will be saved on the filesystem,
+ // so try to use a descriptive name
+ gst_preset_save_preset (preset, "theora_bitrate_preset");
+ gst_object_unref (preset);
+
+ caps = gst_caps_from_string ("video/x-theora");
+ v = gst_encoding_video_profile_new (caps, "theora_bitrate_preset", NULL, 0);
+ gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) v);
+ gst_caps_unref (caps);
+
+ caps = gst_caps_from_string ("audio/x-vorbis");
+ a = gst_encoding_audio_profile_new (caps, NULL, NULL, 0);
+ gst_encoding_container_profile_add_profile (prof, (GstEncodingProfile*) a);
+ gst_caps_unref (caps);
+
+ return (GstEncodingProfile*) prof;
+}
+
+```
+
+### Listing categories, targets and profiles
+
+``` c
+#include <gst/pbutils/encoding-profile.h>
+...
+GstEncodingProfile *prof;
+GList *categories, *tmpc;
+GList *targets, *tmpt;
+...
+categories = gst_encoding_list_available_categories ();
+
+... Show available categories to user ...
+
+for (tmpc = categories; tmpc; tmpc = tmpc->next) {
+ gchar *category = (gchar *) tmpc->data;
+
+ ... and we can list all targets within that category ...
+
+ targets = gst_encoding_list_all_targets (category);
+
+ ... and show a list to our users ...
+
+ g_list_foreach (targets, (GFunc) gst_encoding_target_unref, NULL);
+ g_list_free (targets);
+}
+
+g_list_foreach (categories, (GFunc) g_free, NULL);
+g_list_free (categories);
+
+...
+```
+
+
+ On top of the notion of profiles, we implement the notion of EncodingTarget.
+Encoding Targets are basically a higher level of abstraction to define formats
+for specific target types. Those can define several GstEncodingProfiles with
+different names, for example one for transcoding in full HD, another one for
+low res, etc.. which are defined in the same encoding target.
+
+Basically if you want to encode a stream to send it to, say, youtube you should
+have a Youtube encoding target defined in the "online-service" category.
+
+## Encoding target serialization format
+
+Encoding targets are serialized in a KeyFile like files.
+
+|[
+[GStreamer Encoding Target]
+name : <name>
+category : <category>
+\description : <description> #translatable
+
+[profile-<profile1name>]
+name : <name>
+\description : <description> #optional
+format : <format>
+preset : <preset>
+
+[streamprofile-<id>]
+parent : <encodingprofile.name>[,<encodingprofile.name>..]
+\type : <type> # "audio", "video", "text"
+format : <format>
+preset : <preset>
+restriction : <restriction>
+presence : <presence>
+pass : <pass>
+variableframerate : <variableframerate>
+]|
+
+## Location of encoding target files
+
+$GST_DATADIR/gstreamer-GST_API_VERSION/encoding-profile
+$HOME/gstreamer-GST_API_VERSION/encoding-profile
+
+There also is a GST_ENCODING_TARGET_PATH environment variable
+defining a list of folder containing encoding target files.
+
+## Naming convention
+
+|[
+ $(target.category)/$(target.name).gep
+]|
+
+## Naming restrictions:
+
+ * lowercase ASCII letter for the first character
+ * Same for all other characters + numerics + hyphens
+
List all available #GstEncodingTarget for the specified category, or all categories
if @categoryname is %NULL.
@@ -3527,6 +3830,306 @@ of #GstEncodingTarget categories.
+
+ libgstpbutils is a general utility library for plugins and applications.
+It currently provides the
+following:
+
+* human-readable description strings of codecs, elements, sources, decoders,
+encoders, or sinks from decoder/encoder caps, element names, or protocol
+names.
+
+* support for applications to initiate installation of missing plugins (if
+this is supported by the distribution or operating system used)
+
+* API for GStreamer elements to create missing-plugin messages in order to
+communicate to the application that a certain type of plugin is missing
+(decoder, encoder, URI protocol source, URI protocol sink, named element)
+
+* API for applications to recognise and handle missing-plugin messages
+
+## Linking to this library
+
+You should obtain the required CFLAGS and LIBS using pkg-config on the
+gstreamer-plugins-base-1.0 module. You will then also need to add
+'-lgstreamer-pbutils-1.0' manually to your LIBS line.
+
+## Library initialisation
+
+Before using any of its functions, applications and plugins must call
+gst_pb_utils_init() to initialise the library.
+
+
+ Provides codec-specific ulility functions such as functions to provide the
+codec profile and level in human-readable string form from header data.
+
+
+ The above functions provide human-readable strings for media formats
+and decoder/demuxer/depayloader/encoder/muxer/payloader elements for use
+in error dialogs or other messages shown to users.
+
+gst_pb_utils_add_codec_description_to_tag_list() is a utility function
+for demuxer and decoder elements to add audio/video codec tags from a
+given (fixed) #GstCaps.
+
+
+ ## Overview
+
+Using this API, applications can request the installation of missing
+GStreamer plugins. These may be missing decoders/demuxers or
+encoders/muxers for a certain format, sources or sinks for a certain URI
+protocol (e.g. 'http'), or certain elements known by their element
+factory name ('audioresample').
+
+Whether plugin installation is supported or not depends on the operating
+system and/or distribution in question. The vendor of the operating
+system needs to make sure the necessary hooks and mechanisms are in
+place for plugin installation to work. See below for more detailed
+information.
+
+From the application perspective, plugin installation is usually
+triggered either
+
+- when the application itself has found that it wants or needs to
+ install a certain element
+- when the application has been notified by an element (such as
+ playbin or decodebin) that one or more plugins are missing *and* the
+ application has decided that it wants to install one or more of
+ those missing plugins
+
+The install functions in this section all take one or more 'detail
+strings'. These detail strings contain information about the type of
+plugin that needs to be installed (decoder, encoder, source, sink, or
+named element), and some additional information such GStreamer version
+used and a human-readable description of the component to install for
+user dialogs.
+
+Applications should not concern themselves with the composition of the
+string itself. They should regard the string as if it was a shared
+secret between GStreamer and the plugin installer application.
+
+Detail strings can be obtained using the function
+gst_missing_plugin_message_get_installer_detail() on a
+missing-plugin message. Such a message will either have been found by
+the application on a pipeline's #GstBus, or the application will have
+created it itself using gst_missing_element_message_new(),
+gst_missing_decoder_message_new(),
+gst_missing_encoder_message_new(),
+gst_missing_uri_sink_message_new(), or
+gst_missing_uri_source_message_new().
+
+For each GStreamer element/plugin/component that should be installed,
+the application needs one of those 'installer detail' string mentioned
+in the previous section. This string can be obtained, as already
+mentioned above, from a missing-plugin message using the function
+gst_missing_plugin_message_get_installer_detail(). The
+missing-plugin message is either posted by another element and then
+found on the bus by the application, or the application has created it
+itself as described above.
+
+The application will then call gst_install_plugins_async(), passing a
+NULL-terminated array of installer detail strings, and a function that
+should be called when the installation of the plugins has finished
+(successfully or not). Optionally, a #GstInstallPluginsContext created
+with gst_install_plugins_context_new() may be passed as well. This
+way additional optional arguments like the application window's XID can
+be passed to the external installer application.
+
+gst_install_plugins_async() will return almost immediately, with the
+return code indicating whether plugin installation was started or not.
+If the necessary hooks for plugin installation are in place and an
+external installer application has in fact been called, the passed in
+function will be called with a result code as soon as the external
+installer has finished. If the result code indicates that new plugins
+have been installed, the application will want to call
+gst_update_registry() so the run-time plugin registry is updated and
+the new plugins are made available to the application.
+
+> A Gtk/GLib main loop must be running in order for the result function
+> to be called when the external installer has finished. If this is not
+> the case, make sure to regularly call in your code:
+>
+> g_main_context_iteration (NULL,FALSE);
+
+## 1. Installer hook
+
+When GStreamer applications initiate plugin installation via
+gst_install_plugins_async() or gst_install_plugins_sync(), a
+pre-defined helper application will be called.
+
+The exact path of the helper application to be called is set at compile
+time, usually by the build system based on the install prefix.
+For a normal package build into the `/usr` prefix, this will usually
+default to `/usr/libexec/gst-install-plugins-helper` or
+`/usr/lib/gst-install-plugins-helper`.
+
+Vendors/distros who want to support GStreamer plugin installation should
+either provide such a helper script/application or use the meson option
+`-Dinstall_plugins_helper'=/path/to/installer` to make GStreamer call an
+installer of their own directly.
+
+It is strongly recommended that vendors provide a small helper
+application as interlocutor to the real installer though, even more so
+if command line argument munging is required to transform the command
+line arguments passed by GStreamer to the helper application into
+arguments that are understood by the real installer.
+
+The helper application path defined at compile time can be overridden at
+runtime by setting the GST_INSTALL_PLUGINS_HELPER environment
+variable. This can be useful for testing/debugging purposes.
+
+## 2. Arguments passed to the install helper
+
+GStreamer will pass the following arguments to the install helper (this
+is in addition to the path of the executable itself, which is by
+convention argv[0]):
+
+- none to many optional arguments in the form of `--foo-bar=val`.
+ Example: `--transient-for=XID` where XID is the X Window ID of the
+ main window of the calling application (so the installer can make
+ itself transient to that window). Unknown optional arguments should
+ be ignored by the installer.
+
+- one 'installer detail string' argument for each plugin to be
+ installed; these strings will have a `gstreamer` prefix; the exact
+ format of the detail string is explained below
+
+## 3. Detail string describing the missing plugin
+
+The string is in UTF-8 encoding and is made up of several fields,
+separated by '|' characters (but neither the first nor the last
+character is a '|'). The fields are:
+
+- plugin system identifier, ie. "gstreamer"
+ This identifier determines the format of the rest of the detail
+ string. Automatic plugin installers should not process detail
+ strings with unknown identifiers. This allows other plugin-based
+ libraries to use the same mechanism for their automatic plugin
+ installation needs, or for the format to be changed should it turn
+ out to be insufficient.
+- plugin system version, e.g. "1.0"
+ This is required so that when there is GStreamer-2.0 at some point
+ in future, the different major versions can still co-exist and use
+ the same plugin install mechanism in the same way.
+- application identifier, e.g. "totem"
+ This may also be in the form of "pid/12345" if the program name
+ can't be obtained for some reason.
+- human-readable localised description of the required component, e.g.
+ "Vorbis audio decoder"
+- identifier string for the required component (see below for details
+ about how to map this to the package/plugin that needs installing),
+ e.g.
+ - urisource-$(PROTOCOL_REQUIRED), e.g. urisource-http or
+ urisource-mms
+ - element-$(ELEMENT_REQUIRED), e.g. element-videoconvert
+ - decoder-$(CAPS_REQUIRED), e.g. (do read below for more
+ details!):
+ - decoder-audio/x-vorbis
+ - decoder-application/ogg
+ - decoder-audio/mpeg, mpegversion=(int)4
+ - decoder-video/mpeg, systemstream=(boolean)true,
+ mpegversion=(int)2
+ - encoder-$(CAPS_REQUIRED), e.g. encoder-audio/x-vorbis
+- optional further fields not yet specified
+
+An entire ID string might then look like this, for example: `
+gstreamer|1.0|totem|Vorbis audio decoder|decoder-audio/x-vorbis`
+
+Plugin installers parsing this ID string should expect further fields
+also separated by '|' symbols and either ignore them, warn the user, or
+error out when encountering them.
+
+Those unfamiliar with the GStreamer 'caps' system should note a few
+things about the caps string used in the above decoder/encoder case:
+
+- the first part ("video/mpeg") of the caps string is a GStreamer
+ media type and *not* a MIME type. Wherever possible, the GStreamer
+ media type will be the same as the corresponding MIME type, but
+ often it is not.
+- a caps string may or may not have additional comma-separated fields
+ of various types (as seen in the examples above)
+- the caps string of a 'required' component (as above) will always
+ have fields with fixed values, whereas an introspected string (see
+ below) may have fields with non-fixed values. Compare for example:
+ - `audio/mpeg, mpegversion=(int)4` vs.
+ `audio/mpeg, mpegversion=(int){2, 4}`
+ - `video/mpeg, mpegversion=(int)2` vs.
+ `video/mpeg, systemstream=(boolean){ true, false}, mpegversion=(int)[1, 2]`
+
+## 4. Exit codes the installer should return
+
+The installer should return one of the following exit codes when it
+exits:
+
+- 0 if all of the requested plugins could be installed
+ (#GST_INSTALL_PLUGINS_SUCCESS)
+- 1 if no appropriate installation candidate for any of the requested
+ plugins could be found. Only return this if nothing has been
+ installed (#GST_INSTALL_PLUGINS_NOT_FOUND)
+- 2 if an error occurred during the installation. The application will
+ assume that the user will already have seen an error message by the
+ installer in this case and will usually not show another one
+ (#GST_INSTALL_PLUGINS_ERROR)
+- 3 if some of the requested plugins could be installed, but not all
+ (#GST_INSTALL_PLUGINS_PARTIAL_SUCCESS)
+- 4 if the user aborted the installation
+ (#GST_INSTALL_PLUGINS_USER_ABORT)
+
+## 5. How to map the required detail string to packages
+
+It is up to the vendor to find mechanism to map required components from
+the detail string to the actual packages/plugins to install. This could
+be a hardcoded list of mappings, for example, or be part of the
+packaging system metadata.
+
+GStreamer plugin files can be introspected for this information. The
+`gst-inspect` utility has a special command line option that will output
+information similar to what is required. For example `
+$ gst-inspect-1.0 --print-plugin-auto-install-info /path/to/libgstvorbis.so
+should output something along the lines of
+`decoder-audio/x-vorbis`, `element-vorbisdec` `element-vorbisenc`
+`element-vorbisparse`, `element-vorbistag`, `encoder-audio/x-vorbis`
+
+Note that in the encoder and decoder case the introspected caps can be
+more complex with additional fields, e.g.
+`audio/mpeg,mpegversion=(int){2,4}`, so they will not always exactly
+match the caps wanted by the application. It is up to the installer to
+deal with this (either by doing proper caps intersection using the
+GStreamer #GstCaps API, or by only taking into account the media type).
+
+Another potential source of problems are plugins such as ladspa or
+libvisual where the list of elements depends on the installed
+ladspa/libvisual plugins at the time. This is also up to the
+distribution to handle (but usually not relevant for playback
+applications).
+
+
+ Functions to create, recognise and parse missing-plugins messages for
+applications and elements.
+
+Missing-plugin messages are posted on the bus by elements like decodebin
+or playbin if they can't find an appropriate source element or decoder
+element. The application can use these messages for two things:
+
+ * concise error/problem reporting to the user mentioning what exactly
+ is missing, see gst_missing_plugin_message_get_description()
+
+ * initiate installation of missing plugins, see
+ gst_missing_plugin_message_get_installer_detail() and
+ gst_install_plugins_async()
+
+Applications may also create missing-plugin messages themselves to install
+required elements that are missing, using the install mechanism mentioned
+above.
+
+
+ Use the GST_PLUGINS_BASE_VERSION_* macros e.g. to check what version of
+gst-plugins-base you are building against, and gst_plugins_base_version()
+if you need to check at runtime what version of the gst-plugins-base
+libraries are being used / you are currently linked against.
+
+The version macros get defined by including <gst/pbutils/pbutils.h>.
+
Requests plugin installation without blocking. Once the plugins have been
installed or installation has failed, @func will be called with the result
diff --git a/gir-files/GstRtp-1.0.gir b/gir-files/GstRtp-1.0.gir
index f9c24e2a9..19bb6fa45 100644
--- a/gir-files/GstRtp-1.0.gir
+++ b/gir-files/GstRtp-1.0.gir
@@ -4864,6 +4864,14 @@ is no such metadata on @buffer.
+
+ Provides common defines for the RTP library.
+
+
+ The GstRTPPayloads helper functions makes it easy to deal with static and dynamic
+payloads. Its main purpose is to retrieve properties such as the default clock-rate
+and get session bandwidth information.
+
Open @buffer for reading or writing, depending on @flags. The resulting RTCP
buffer state is stored in @rtcp.
diff --git a/gir-files/GstRtsp-1.0.gir b/gir-files/GstRtsp-1.0.gir
index de1fa1901..4b0f2f133 100644
--- a/gir-files/GstRtsp-1.0.gir
+++ b/gir-files/GstRtsp-1.0.gir
@@ -4138,6 +4138,9 @@ not equal #GST_RTSP_OK.
+
+ Provides common defines for the RTSP library.
+
Free a %NULL-terminated array of credentials returned from
gst_rtsp_message_parse_auth_credentials().
diff --git a/gir-files/GstSdp-1.0.gir b/gir-files/GstSdp-1.0.gir
index 224d58a42..e5b0d5491 100644
--- a/gir-files/GstSdp-1.0.gir
+++ b/gir-files/GstSdp-1.0.gir
@@ -4099,6 +4099,10 @@ time.
+
+ The GstMIKEY helper functions makes it easy to parse and create MIKEY
+messages.
+
Check if the given @addr is a multicast address.
diff --git a/gir-files/GstTag-1.0.gir b/gir-files/GstTag-1.0.gir
index 78b19ce91..188061061 100644
--- a/gir-files/GstTag-1.0.gir
+++ b/gir-files/GstTag-1.0.gir
@@ -930,6 +930,41 @@ the schema wasn't in the list
+
+ Contains additional standardized GStreamer tag definitions for plugins
+and applications, and functions to register them with the GStreamer
+tag system.
+
+
+ Contains utility function to parse #GstTagList<!-- -->s from exif
+buffers and to create exif buffers from #GstTagList<!-- -->s
+
+Note that next IFD fields on the created exif buffers are set to 0.
+
+
+ Contains various utility functions for plugins to parse or create
+ID3 tags and map ID3v2 identifiers to and from GStreamer identifiers.
+
+
+ Provides helper functions to convert between the various ISO-639 language
+codes, and to map language codes to language names.
+
+
+ Provides information about Creative Commons media licenses, which are
+often expressed in media files as a license URI in tags. Also useful
+for applications creating media files, in case the user wants to license
+the content under a Creative Commons license.
+
+
+ Contains various utility functions for plugins to parse or create
+vorbiscomments and map them to and from #GstTagList<!-- -->s.
+
+
+ Contains various utility functions for plugins to parse or create
+xmp packets and map them to and from #GstTagList<!-- -->s.
+
+Please note that the xmp parser is very lightweight and not strict at all.
+
Check if a given string contains a known ISO 639 language code.
diff --git a/gir-files/GstVideo-1.0.gir b/gir-files/GstVideo-1.0.gir
index e7372a439..d84804b43 100644
--- a/gir-files/GstVideo-1.0.gir
+++ b/gir-files/GstVideo-1.0.gir
@@ -4337,6 +4337,7 @@ They can conflict with other extended buffer flags.
GST_VIDEO_BUFFER_FLAG_ONEFIELD (Since: 1.16).
Use GST_VIDEO_BUFFER_IS_TOP_FIELD() to check for this flag.
+
The video frame has the bottom field only. This is
the same as GST_VIDEO_BUFFER_FLAG_ONEFIELD
@@ -8677,11 +8678,11 @@ for details about the layout and packing of these formats in memory.
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 4x4 tiles in linear order.
-
- NV12 with 32x32 tiles in linear order (Since: 1.18)
+
+ NV12 with 32x32 tiles in linear order.
Converts a FOURCC value into the corresponding #GstVideoFormat.
@@ -9352,6 +9353,7 @@ All video planes of @buffer will be mapped and the pointers will be set in
is the same as GST_VIDEO_FRAME_FLAG_TFF | GST_VIDEO_FRAME_FLAG_ONEFIELD
(Since: 1.16).
+
The video frame has the bottom field
only. This is the same as GST_VIDEO_FRAME_FLAG_ONEFIELD
@@ -12842,8 +12844,8 @@ frames will only be rendered in PLAYING state.
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)
+
+ Tiles are in row order.
@@ -13601,11 +13603,8 @@ non-linear RGB (R'G'B') and linear RGB
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
+
+ also known as SMPTE170M / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
Converts the @value to the #GstVideoTransferFunction
@@ -14467,6 +14466,28 @@ in @align
+
+ This library contains some helper functions and includes the
+videosink and videofilter base classes.
+
+
+ A collection of objects and methods to assist with handling Ancillary Data
+present in Vertical Blanking Interval as well as Closed Caption.
+
+
+ The functions gst_video_chroma_from_string() and gst_video_chroma_to_string() convert
+between #GstVideoChromaSite and string descriptions.
+
+#GstVideoChromaResample is a utility object for resampling chroma planes
+and converting between different chroma sampling sitings.
+
+
+ Special GstBufferPool subclass for raw video buffers.
+
+Allows configuration of video-specific requirements such as
+stride alignments or pixel padding, and can also be configured
+to automatically add #GstVideoMeta to the buffers.
+
Convenience function to check if the given message is a
"prepare-window-handle" message from a #GstVideoOverlay.
@@ -16488,5 +16509,14 @@ and "ITU-T H.273 Table 3".
+
+ This object is used to convert video frames from one format to another.
+The object can perform conversion of:
+
+ * video format
+ * video colorspace
+ * chroma-siting
+ * video size
+