Release 1.21.1
authorTim-Philipp Müller <tim@centricular.com>
Tue, 4 Oct 2022 00:14:01 +0000 (01:14 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 4 Oct 2022 00:18:20 +0000 (01:18 +0100)
72 files changed:
meson.build
subprojects/gst-devtools/ChangeLog
subprojects/gst-devtools/NEWS
subprojects/gst-devtools/RELEASE
subprojects/gst-devtools/gst-devtools.doap
subprojects/gst-devtools/meson.build
subprojects/gst-docs/meson.build
subprojects/gst-docs/symbols/symbol_index.json
subprojects/gst-docs/symbols/symbols_version.txt
subprojects/gst-editing-services/ChangeLog
subprojects/gst-editing-services/NEWS
subprojects/gst-editing-services/RELEASE
subprojects/gst-editing-services/gst-editing-services.doap
subprojects/gst-editing-services/meson.build
subprojects/gst-examples/meson.build
subprojects/gst-integration-testsuites/meson.build
subprojects/gst-libav/ChangeLog
subprojects/gst-libav/NEWS
subprojects/gst-libav/RELEASE
subprojects/gst-libav/gst-libav.doap
subprojects/gst-libav/meson.build
subprojects/gst-omx/ChangeLog
subprojects/gst-omx/NEWS
subprojects/gst-omx/RELEASE
subprojects/gst-omx/gst-omx.doap
subprojects/gst-omx/meson.build
subprojects/gst-plugins-bad/ChangeLog
subprojects/gst-plugins-bad/NEWS
subprojects/gst-plugins-bad/RELEASE
subprojects/gst-plugins-bad/gst-plugins-bad.doap
subprojects/gst-plugins-bad/meson.build
subprojects/gst-plugins-base/ChangeLog
subprojects/gst-plugins-base/NEWS
subprojects/gst-plugins-base/RELEASE
subprojects/gst-plugins-base/gst-plugins-base.doap
subprojects/gst-plugins-base/meson.build
subprojects/gst-plugins-good/ChangeLog
subprojects/gst-plugins-good/NEWS
subprojects/gst-plugins-good/RELEASE
subprojects/gst-plugins-good/docs/gst_plugins_cache.json
subprojects/gst-plugins-good/gst-plugins-good.doap
subprojects/gst-plugins-good/meson.build
subprojects/gst-plugins-ugly/ChangeLog
subprojects/gst-plugins-ugly/NEWS
subprojects/gst-plugins-ugly/RELEASE
subprojects/gst-plugins-ugly/gst-plugins-ugly.doap
subprojects/gst-plugins-ugly/meson.build
subprojects/gst-python/ChangeLog
subprojects/gst-python/NEWS
subprojects/gst-python/RELEASE
subprojects/gst-python/gst-python.doap
subprojects/gst-python/meson.build
subprojects/gst-rtsp-server/ChangeLog
subprojects/gst-rtsp-server/NEWS
subprojects/gst-rtsp-server/RELEASE
subprojects/gst-rtsp-server/docs/plugins/gst_plugins_cache.json
subprojects/gst-rtsp-server/gst-rtsp-server.doap
subprojects/gst-rtsp-server/meson.build
subprojects/gstreamer-sharp/meson.build
subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs
subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs
subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml
subprojects/gstreamer-vaapi/ChangeLog
subprojects/gstreamer-vaapi/NEWS
subprojects/gstreamer-vaapi/RELEASE
subprojects/gstreamer-vaapi/gstreamer-vaapi.doap
subprojects/gstreamer-vaapi/meson.build
subprojects/gstreamer/ChangeLog
subprojects/gstreamer/NEWS
subprojects/gstreamer/RELEASE
subprojects/gstreamer/gstreamer.doap
subprojects/gstreamer/meson.build

index ca1e32d..99eb94a 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer-full', 'c',
 project('gstreamer-full', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62.0',
   default_options : ['buildtype=debugoptimized',
                      # Needed due to https://github.com/mesonbuild/meson/issues/1889,
   meson_version : '>= 0.62.0',
   default_options : ['buildtype=debugoptimized',
                      # Needed due to https://github.com/mesonbuild/meson/issues/1889,
index 7acc1fb..b694959 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-devtools.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 3aa4be6..e43d9b4 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-devtools 1.20.0.
+This is GStreamer gst-devtools 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index c0757b3..32bb0c3 100644 (file)
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index d0523ea..3c0e738 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-devtools', 'c',
 project('gst-devtools', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
index 62ea0af..3ec468b 100644 (file)
@@ -1,5 +1,5 @@
 project('GStreamer manuals and tutorials', 'c',
 project('GStreamer manuals and tutorials', 'c',
-  version: '1.21.0.1',
+  version: '1.21.1',
   meson_version : '>= 0.62')
 
 hotdoc_p = find_program('hotdoc')
   meson_version : '>= 0.62')
 
 hotdoc_p = find_program('hotdoc')
index 6b22752..3c1efbf 100644 (file)
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV",
+  "GES_VIDEO_STANDARD_TRANSITION_TYPE_FADE_IN",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR",
   "GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT",
   "GST_ALLOCATOR_FLAG_CUSTOM_ALLOC",
   "GST_ALLOCATOR_FLAG_LAST",
   "GST_ALLOCATOR_SYSMEM",
   "GST_ALLOCATOR_FLAG_CUSTOM_ALLOC",
   "GST_ALLOCATOR_FLAG_LAST",
   "GST_ALLOCATOR_SYSMEM",
+  "GST_ALLOCATOR_VASURFACE",
   "GST_APP_LEAKY_TYPE_DOWNSTREAM",
   "GST_APP_LEAKY_TYPE_NONE",
   "GST_APP_LEAKY_TYPE_UPSTREAM",
   "GST_APP_LEAKY_TYPE_DOWNSTREAM",
   "GST_APP_LEAKY_TYPE_NONE",
   "GST_APP_LEAKY_TYPE_UPSTREAM",
   "GST_AUDIO_CONVERTER_FLAG_NONE",
   "GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE",
   "GST_AUDIO_CONVERTER_OPT_DITHER_METHOD",
   "GST_AUDIO_CONVERTER_FLAG_NONE",
   "GST_AUDIO_CONVERTER_FLAG_VARIABLE_RATE",
   "GST_AUDIO_CONVERTER_OPT_DITHER_METHOD",
+  "GST_AUDIO_CONVERTER_OPT_DITHER_THRESHOLD",
   "GST_AUDIO_CONVERTER_OPT_MIX_MATRIX",
   "GST_AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD",
   "GST_AUDIO_CONVERTER_OPT_QUANTIZATION",
   "GST_AUDIO_CONVERTER_OPT_MIX_MATRIX",
   "GST_AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD",
   "GST_AUDIO_CONVERTER_OPT_QUANTIZATION",
   "GST_CAPS_FEATURES_CAST",
   "GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY",
   "GST_CAPS_FEATURE_FORMAT_INTERLACED",
   "GST_CAPS_FEATURES_CAST",
   "GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY",
   "GST_CAPS_FEATURE_FORMAT_INTERLACED",
+  "GST_CAPS_FEATURE_MEMORY_CUDA_MEMORY",
   "GST_CAPS_FEATURE_MEMORY_DMABUF",
   "GST_CAPS_FEATURE_MEMORY_GL_BUFFER",
   "GST_CAPS_FEATURE_MEMORY_GL_MEMORY",
   "GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY",
   "GST_CAPS_FEATURE_MEMORY_DMABUF",
   "GST_CAPS_FEATURE_MEMORY_GL_BUFFER",
   "GST_CAPS_FEATURE_MEMORY_GL_MEMORY",
   "GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY",
+  "GST_CAPS_FEATURE_MEMORY_VA",
   "GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER",
   "GST_CAPS_FEATURE_MEMORY_VULKAN_IMAGE",
   "GST_CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META",
   "GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER",
   "GST_CAPS_FEATURE_MEMORY_VULKAN_IMAGE",
   "GST_CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META",
   "GST_CORE_ERROR_TAG",
   "GST_CORE_ERROR_THREAD",
   "GST_CORE_ERROR_TOO_LAZY",
   "GST_CORE_ERROR_TAG",
   "GST_CORE_ERROR_THREAD",
   "GST_CORE_ERROR_TOO_LAZY",
+  "GST_CUDA_ALLOCATOR_CAST",
+  "GST_CUDA_BUFFER_COPY_CUDA",
+  "GST_CUDA_BUFFER_COPY_D3D11",
+  "GST_CUDA_BUFFER_COPY_GL",
+  "GST_CUDA_BUFFER_COPY_NVMM",
+  "GST_CUDA_BUFFER_COPY_SYSTEM",
+  "GST_CUDA_BUFFER_POOL_CAST",
+  "GST_CUDA_CONTEXT_CAST",
+  "GST_CUDA_CONTEXT_TYPE",
+  "GST_CUDA_GRAPHICS_RESOURCE_D3D11_RESOURCE",
+  "GST_CUDA_GRAPHICS_RESOURCE_GL_BUFFER",
+  "GST_CUDA_GRAPHICS_RESOURCE_NONE",
+  "GST_CUDA_MEMORY_CAST",
+  "GST_CUDA_MEMORY_TRANSFER_NEED_DOWNLOAD",
+  "GST_CUDA_MEMORY_TRANSFER_NEED_UPLOAD",
+  "GST_CUDA_MEMORY_TYPE_NAME",
+  "GST_CUDA_QUARK_GRAPHICS_RESOURCE",
+  "GST_CUDA_QUARK_MAX",
   "GST_DEBUG",
   "GST_DEBUG_BG_BLACK",
   "GST_DEBUG_BG_BLUE",
   "GST_DEBUG",
   "GST_DEBUG_BG_BLACK",
   "GST_DEBUG_BG_BLUE",
   "GST_GL_WINDOW_RESIZE_CB",
   "GST_GL_WINDOW_UNLOCK",
   "GST_GROUP_ID_INVALID",
   "GST_GL_WINDOW_RESIZE_CB",
   "GST_GL_WINDOW_UNLOCK",
   "GST_GROUP_ID_INVALID",
+  "GST_H264_BIT_WRITER_ERROR",
+  "GST_H264_BIT_WRITER_INVALID_DATA",
+  "GST_H264_BIT_WRITER_NO_MORE_SPACE",
+  "GST_H264_BIT_WRITER_OK",
   "GST_H264_B_SLICE",
   "GST_H264_CT_TYPE_INTERLACED",
   "GST_H264_CT_TYPE_PROGRESSIVE",
   "GST_H264_B_SLICE",
   "GST_H264_CT_TYPE_INTERLACED",
   "GST_H264_CT_TYPE_PROGRESSIVE",
   "GST_H264_SEI_REGISTERED_USER_DATA",
   "GST_H264_SEI_STEREO_VIDEO_INFO",
   "GST_H264_SEI_UNHANDLED_PAYLOAD",
   "GST_H264_SEI_REGISTERED_USER_DATA",
   "GST_H264_SEI_STEREO_VIDEO_INFO",
   "GST_H264_SEI_UNHANDLED_PAYLOAD",
+  "GST_H264_SEI_USER_DATA_UNREGISTERED",
   "GST_H264_SI_SLICE",
   "GST_H264_SP_SLICE",
   "GST_H264_S_B_SLICE",
   "GST_H264_SI_SLICE",
   "GST_H264_SP_SLICE",
   "GST_H264_S_B_SLICE",
   "GST_H264_S_P_SLICE",
   "GST_H264_S_SI_SLICE",
   "GST_H264_S_SP_SLICE",
   "GST_H264_S_P_SLICE",
   "GST_H264_S_SI_SLICE",
   "GST_H264_S_SP_SLICE",
+  "GST_H265_BIT_WRITER_ERROR",
+  "GST_H265_BIT_WRITER_INVALID_DATA",
+  "GST_H265_BIT_WRITER_NO_MORE_SPACE",
+  "GST_H265_BIT_WRITER_OK",
   "GST_H265_B_SLICE",
   "GST_H265_DECODER_CAST",
   "GST_H265_DPB_MAX_SIZE",
   "GST_H265_B_SLICE",
   "GST_H265_DECODER_CAST",
   "GST_H265_DPB_MAX_SIZE",
   "GST_LOG",
   "GST_LOG_OBJECT",
   "GST_MAKE_FOURCC",
   "GST_LOG",
   "GST_LOG_OBJECT",
   "GST_MAKE_FOURCC",
+  "GST_MAP_CUDA",
   "GST_MAP_FLAG_LAST",
   "GST_MAP_GL",
   "GST_MAP_INFO_INIT",
   "GST_MAP_READ",
   "GST_MAP_READWRITE",
   "GST_MAP_FLAG_LAST",
   "GST_MAP_GL",
   "GST_MAP_INFO_INIT",
   "GST_MAP_READ",
   "GST_MAP_READWRITE",
+  "GST_MAP_VA",
   "GST_MAP_WRITE",
   "GST_MEMDUMP",
   "GST_MEMDUMP_OBJECT",
   "GST_MAP_WRITE",
   "GST_MEMDUMP",
   "GST_MEMDUMP_OBJECT",
   "GST_META_TAG_AUDIO_RATE_STR",
   "GST_META_TAG_AUDIO_STR",
   "GST_META_TAG_MEMORY",
   "GST_META_TAG_AUDIO_RATE_STR",
   "GST_META_TAG_AUDIO_STR",
   "GST_META_TAG_MEMORY",
+  "GST_META_TAG_MEMORY_REFERENCE_STR",
   "GST_META_TAG_MEMORY_STR",
   "GST_META_TAG_VIDEO_COLORSPACE_STR",
   "GST_META_TAG_VIDEO_ORIENTATION_STR",
   "GST_META_TAG_MEMORY_STR",
   "GST_META_TAG_VIDEO_COLORSPACE_STR",
   "GST_META_TAG_VIDEO_ORIENTATION_STR",
   "GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE",
   "GST_NAVIGATION_EVENT_MOUSE_MOVE",
   "GST_NAVIGATION_EVENT_MOUSE_SCROLL",
   "GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE",
   "GST_NAVIGATION_EVENT_MOUSE_MOVE",
   "GST_NAVIGATION_EVENT_MOUSE_SCROLL",
+  "GST_NAVIGATION_EVENT_TOUCH_CANCEL",
+  "GST_NAVIGATION_EVENT_TOUCH_DOWN",
+  "GST_NAVIGATION_EVENT_TOUCH_FRAME",
+  "GST_NAVIGATION_EVENT_TOUCH_MOTION",
+  "GST_NAVIGATION_EVENT_TOUCH_UP",
   "GST_NAVIGATION_GET_INTERFACE",
   "GST_NAVIGATION_MESSAGE_ANGLES_CHANGED",
   "GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED",
   "GST_NAVIGATION_MESSAGE_EVENT",
   "GST_NAVIGATION_MESSAGE_INVALID",
   "GST_NAVIGATION_MESSAGE_MOUSE_OVER",
   "GST_NAVIGATION_GET_INTERFACE",
   "GST_NAVIGATION_MESSAGE_ANGLES_CHANGED",
   "GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED",
   "GST_NAVIGATION_MESSAGE_EVENT",
   "GST_NAVIGATION_MESSAGE_INVALID",
   "GST_NAVIGATION_MESSAGE_MOUSE_OVER",
+  "GST_NAVIGATION_MODIFIER_ALT_MASK",
+  "GST_NAVIGATION_MODIFIER_BUTTON1_MASK",
+  "GST_NAVIGATION_MODIFIER_BUTTON2_MASK",
+  "GST_NAVIGATION_MODIFIER_BUTTON3_MASK",
+  "GST_NAVIGATION_MODIFIER_BUTTON4_MASK",
+  "GST_NAVIGATION_MODIFIER_BUTTON5_MASK",
+  "GST_NAVIGATION_MODIFIER_CONTROL_MASK",
+  "GST_NAVIGATION_MODIFIER_HYPER_MASK",
+  "GST_NAVIGATION_MODIFIER_LOCK_MASK",
+  "GST_NAVIGATION_MODIFIER_MASK",
+  "GST_NAVIGATION_MODIFIER_META_MASK",
+  "GST_NAVIGATION_MODIFIER_NONE",
+  "GST_NAVIGATION_MODIFIER_SHIFT_MASK",
+  "GST_NAVIGATION_MODIFIER_SUPER_MASK",
   "GST_NAVIGATION_QUERY_ANGLES",
   "GST_NAVIGATION_QUERY_COMMANDS",
   "GST_NAVIGATION_QUERY_INVALID",
   "GST_NAVIGATION_QUERY_ANGLES",
   "GST_NAVIGATION_QUERY_COMMANDS",
   "GST_NAVIGATION_QUERY_INVALID",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE",
+  "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG",
   "GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO",
   "GST_QUERY_SCHEDULING",
   "GST_QUERY_SEEKING",
   "GST_QUERY_SEGMENT",
   "GST_QUERY_SCHEDULING",
   "GST_QUERY_SEEKING",
   "GST_QUERY_SEGMENT",
+  "GST_QUERY_SELECTABLE",
   "GST_QUERY_TYPE",
   "GST_QUERY_TYPE_BOTH",
   "GST_QUERY_TYPE_DOWNSTREAM",
   "GST_QUERY_TYPE",
   "GST_QUERY_TYPE_BOTH",
   "GST_QUERY_TYPE_DOWNSTREAM",
   "GST_TRACER_OBJECT_DESTROYED",
   "GST_TRACER_OBJECT_REFFED",
   "GST_TRACER_OBJECT_UNREFFED",
   "GST_TRACER_OBJECT_DESTROYED",
   "GST_TRACER_OBJECT_REFFED",
   "GST_TRACER_OBJECT_UNREFFED",
+  "GST_TRACER_PAD_CHAIN_LIST_POST",
+  "GST_TRACER_PAD_CHAIN_LIST_PRE",
+  "GST_TRACER_PAD_CHAIN_POST",
+  "GST_TRACER_PAD_CHAIN_PRE",
   "GST_TRACER_PAD_LINK_POST",
   "GST_TRACER_PAD_LINK_PRE",
   "GST_TRACER_PAD_PULL_RANGE_POST",
   "GST_TRACER_PAD_LINK_POST",
   "GST_TRACER_PAD_LINK_PRE",
   "GST_TRACER_PAD_PULL_RANGE_POST",
   "GST_VALIDATE_ACTION_TYPE_ASYNC",
   "GST_VALIDATE_ACTION_TYPE_CAN_BE_OPTIONAL",
   "GST_VALIDATE_ACTION_TYPE_CAN_EXECUTE_ON_ADDITION",
   "GST_VALIDATE_ACTION_TYPE_ASYNC",
   "GST_VALIDATE_ACTION_TYPE_CAN_BE_OPTIONAL",
   "GST_VALIDATE_ACTION_TYPE_CAN_EXECUTE_ON_ADDITION",
+  "GST_VALIDATE_ACTION_TYPE_CHECK",
   "GST_VALIDATE_ACTION_TYPE_CONFIG",
   "GST_VALIDATE_ACTION_TYPE_DOESNT_NEED_PIPELINE",
   "GST_VALIDATE_ACTION_TYPE_HANDLED_IN_CONFIG",
   "GST_VALIDATE_ACTION_TYPE_CONFIG",
   "GST_VALIDATE_ACTION_TYPE_DOESNT_NEED_PIPELINE",
   "GST_VALIDATE_ACTION_TYPE_HANDLED_IN_CONFIG",
   "GST_VALUE_HOLDS_STRUCTURE",
   "GST_VALUE_LESS_THAN",
   "GST_VALUE_UNORDERED",
   "GST_VALUE_HOLDS_STRUCTURE",
   "GST_VALUE_LESS_THAN",
   "GST_VALUE_UNORDERED",
+  "GST_VA_DISPLAY_HANDLE_CONTEXT_TYPE_STR",
+  "GST_VA_DISPLAY_IS_IMPLEMENTATION",
+  "GST_VA_FEATURE_AUTO",
+  "GST_VA_FEATURE_DISABLED",
+  "GST_VA_FEATURE_ENABLED",
+  "GST_VA_IMPLEMENTATION_INTEL_I965",
+  "GST_VA_IMPLEMENTATION_INTEL_IHD",
+  "GST_VA_IMPLEMENTATION_INVALID",
+  "GST_VA_IMPLEMENTATION_MESA_GALLIUM",
+  "GST_VA_IMPLEMENTATION_OTHER",
   "GST_VC1_CONDOVER_ALL",
   "GST_VC1_CONDOVER_NONE",
   "GST_VC1_CONDOVER_SELECT",
   "GST_VC1_CONDOVER_ALL",
   "GST_VC1_CONDOVER_NONE",
   "GST_VC1_CONDOVER_SELECT",
   "GST_VIDEO_FORMAT_FLAG_LE",
   "GST_VIDEO_FORMAT_FLAG_PALETTE",
   "GST_VIDEO_FORMAT_FLAG_RGB",
   "GST_VIDEO_FORMAT_FLAG_LE",
   "GST_VIDEO_FORMAT_FLAG_PALETTE",
   "GST_VIDEO_FORMAT_FLAG_RGB",
+  "GST_VIDEO_FORMAT_FLAG_SUBTILES",
   "GST_VIDEO_FORMAT_FLAG_TILED",
   "GST_VIDEO_FORMAT_FLAG_UNPACK",
   "GST_VIDEO_FORMAT_FLAG_YUV",
   "GST_VIDEO_FORMAT_FLAG_TILED",
   "GST_VIDEO_FORMAT_FLAG_UNPACK",
   "GST_VIDEO_FORMAT_FLAG_YUV",
   "GST_VIDEO_FORMAT_INFO_FORMAT",
   "GST_VIDEO_FORMAT_INFO_HAS_ALPHA",
   "GST_VIDEO_FORMAT_INFO_HAS_PALETTE",
   "GST_VIDEO_FORMAT_INFO_FORMAT",
   "GST_VIDEO_FORMAT_INFO_HAS_ALPHA",
   "GST_VIDEO_FORMAT_INFO_HAS_PALETTE",
+  "GST_VIDEO_FORMAT_INFO_HAS_SUBTILES",
   "GST_VIDEO_FORMAT_INFO_H_SUB",
   "GST_VIDEO_FORMAT_INFO_IS_COMPLEX",
   "GST_VIDEO_FORMAT_INFO_IS_GRAY",
   "GST_VIDEO_FORMAT_INFO_H_SUB",
   "GST_VIDEO_FORMAT_INFO_IS_COMPLEX",
   "GST_VIDEO_FORMAT_INFO_IS_GRAY",
   "GST_VIDEO_FORMAT_IYU1",
   "GST_VIDEO_FORMAT_IYU2",
   "GST_VIDEO_FORMAT_NV12",
   "GST_VIDEO_FORMAT_IYU1",
   "GST_VIDEO_FORMAT_IYU2",
   "GST_VIDEO_FORMAT_NV12",
+  "GST_VIDEO_FORMAT_NV12_10BE_8L128",
   "GST_VIDEO_FORMAT_NV12_10LE32",
   "GST_VIDEO_FORMAT_NV12_10LE40",
   "GST_VIDEO_FORMAT_NV12_10LE32",
   "GST_VIDEO_FORMAT_NV12_10LE40",
+  "GST_VIDEO_FORMAT_NV12_16L32S",
   "GST_VIDEO_FORMAT_NV12_32L32",
   "GST_VIDEO_FORMAT_NV12_4L4",
   "GST_VIDEO_FORMAT_NV12_64Z32",
   "GST_VIDEO_FORMAT_NV12_32L32",
   "GST_VIDEO_FORMAT_NV12_4L4",
   "GST_VIDEO_FORMAT_NV12_64Z32",
+  "GST_VIDEO_FORMAT_NV12_8L128",
   "GST_VIDEO_FORMAT_NV16",
   "GST_VIDEO_FORMAT_NV16_10LE32",
   "GST_VIDEO_FORMAT_NV21",
   "GST_VIDEO_FORMAT_NV16",
   "GST_VIDEO_FORMAT_NV16_10LE32",
   "GST_VIDEO_FORMAT_NV21",
   "GST_VIDEO_FRAME_FLAG_TOP_FIELD",
   "GST_VIDEO_FRAME_FORMAT",
   "GST_VIDEO_FRAME_HEIGHT",
   "GST_VIDEO_FRAME_FLAG_TOP_FIELD",
   "GST_VIDEO_FRAME_FORMAT",
   "GST_VIDEO_FRAME_HEIGHT",
+  "GST_VIDEO_FRAME_INIT",
   "GST_VIDEO_FRAME_IS_BOTTOM_FIELD",
   "GST_VIDEO_FRAME_IS_INTERLACED",
   "GST_VIDEO_FRAME_IS_ONEFIELD",
   "GST_VIDEO_FRAME_IS_BOTTOM_FIELD",
   "GST_VIDEO_FRAME_IS_INTERLACED",
   "GST_VIDEO_FRAME_IS_ONEFIELD",
   "GST_VIDEO_SCALER_FLAG_INTERLACED",
   "GST_VIDEO_SCALER_FLAG_NONE",
   "GST_VIDEO_SCALER_OPT_DITHER_METHOD",
   "GST_VIDEO_SCALER_FLAG_INTERLACED",
   "GST_VIDEO_SCALER_FLAG_NONE",
   "GST_VIDEO_SCALER_OPT_DITHER_METHOD",
+  "GST_VIDEO_SEI_USER_DATA_UNREGISTERED_META_API_TYPE",
+  "GST_VIDEO_SEI_USER_DATA_UNREGISTERED_META_INFO",
   "GST_VIDEO_SINK_CAST",
   "GST_VIDEO_SINK_HEIGHT",
   "GST_VIDEO_SINK_PAD",
   "GST_VIDEO_SINK_CAST",
   "GST_VIDEO_SINK_HEIGHT",
   "GST_VIDEO_SINK_PAD",
   "GST_WEBRTC_ERROR_FINGERPRINT_FAILURE",
   "GST_WEBRTC_ERROR_HARDWARE_ENCODER_NOT_AVAILABLE",
   "GST_WEBRTC_ERROR_INTERNAL_FAILURE",
   "GST_WEBRTC_ERROR_FINGERPRINT_FAILURE",
   "GST_WEBRTC_ERROR_HARDWARE_ENCODER_NOT_AVAILABLE",
   "GST_WEBRTC_ERROR_INTERNAL_FAILURE",
+  "GST_WEBRTC_ERROR_INVALID_MODIFICATION",
   "GST_WEBRTC_ERROR_INVALID_STATE",
   "GST_WEBRTC_ERROR_SCTP_FAILURE",
   "GST_WEBRTC_ERROR_SDP_SYNTAX_ERROR",
   "GST_WEBRTC_ERROR_INVALID_STATE",
   "GST_WEBRTC_ERROR_SCTP_FAILURE",
   "GST_WEBRTC_ERROR_SDP_SYNTAX_ERROR",
   "GstAV1DecoderClass::decode_tile",
   "GstAV1DecoderClass::duplicate_picture",
   "GstAV1DecoderClass::end_picture",
   "GstAV1DecoderClass::decode_tile",
   "GstAV1DecoderClass::duplicate_picture",
   "GstAV1DecoderClass::end_picture",
+  "GstAV1DecoderClass::get_preferred_output_delay",
   "GstAV1DecoderClass::new_picture",
   "GstAV1DecoderClass::new_sequence",
   "GstAV1DecoderClass::output_picture",
   "GstAV1DecoderClass::new_picture",
   "GstAV1DecoderClass::new_sequence",
   "GstAV1DecoderClass::output_picture",
   "GstAccurip:last-track",
   "GstAdapter",
   "GstAdaptiveDemux",
   "GstAccurip:last-track",
   "GstAdapter",
   "GstAdaptiveDemux",
+  "GstAdaptiveDemux2",
+  "GstAdaptiveDemux2:bandwidth-target-ratio",
+  "GstAdaptiveDemux2:connection-bitrate",
+  "GstAdaptiveDemux2:connection-speed",
+  "GstAdaptiveDemux2:current-bandwidth",
+  "GstAdaptiveDemux2:current-level-time-audio",
+  "GstAdaptiveDemux2:current-level-time-video",
+  "GstAdaptiveDemux2:high-watermark-fragments",
+  "GstAdaptiveDemux2:high-watermark-time",
+  "GstAdaptiveDemux2:low-watermark-fragments",
+  "GstAdaptiveDemux2:low-watermark-time",
+  "GstAdaptiveDemux2:max-bitrate",
+  "GstAdaptiveDemux2:max-buffering-time",
+  "GstAdaptiveDemux2:min-bitrate",
   "GstAdaptiveDemuxClass",
   "GstAdaptiveDemuxStream",
   "GstAdaptiveDemuxStreamFragment",
   "GstAdaptiveDemuxClass",
   "GstAdaptiveDemuxStream",
   "GstAdaptiveDemuxStreamFragment",
   "GstAlsaSrc:device",
   "GstAlsaSrc:device-name",
   "GstAlsaSrc:use-driver-timestamps",
   "GstAlsaSrc:device",
   "GstAlsaSrc:device-name",
   "GstAlsaSrc:use-driver-timestamps",
+  "GstAmfEncoder",
+  "GstAmfH264Enc!sink",
+  "GstAmfH264Enc!src",
+  "GstAmfH264EncPreset",
+  "GstAmfH264EncPreset::balanced",
+  "GstAmfH264EncPreset::default",
+  "GstAmfH264EncPreset::quality",
+  "GstAmfH264EncPreset::speed",
+  "GstAmfH264EncRateControl",
+  "GstAmfH264EncRateControl::cbr",
+  "GstAmfH264EncRateControl::cqp",
+  "GstAmfH264EncRateControl::default",
+  "GstAmfH264EncRateControl::lcvbr",
+  "GstAmfH264EncRateControl::vbr",
+  "GstAmfH264EncUsage",
+  "GstAmfH264EncUsage::low-latency",
+  "GstAmfH264EncUsage::transcoding",
+  "GstAmfH264EncUsage::ultra-low-latency",
+  "GstAmfH264EncUsage::webcam",
+  "GstAmfH265Enc!sink",
+  "GstAmfH265Enc!src",
+  "GstAmfH265EncPreset",
+  "GstAmfH265EncPreset::balanced",
+  "GstAmfH265EncPreset::default",
+  "GstAmfH265EncPreset::quality",
+  "GstAmfH265EncPreset::speed",
+  "GstAmfH265EncRateControl",
+  "GstAmfH265EncRateControl::cbr",
+  "GstAmfH265EncRateControl::cqp",
+  "GstAmfH265EncRateControl::default",
+  "GstAmfH265EncRateControl::lcvbr",
+  "GstAmfH265EncRateControl::vbr",
+  "GstAmfH265EncUsage",
+  "GstAmfH265EncUsage::low-latency",
+  "GstAmfH265EncUsage::transcoding",
+  "GstAmfH265EncUsage::ultra-low-latency",
+  "GstAmfH265EncUsage::webcam",
   "GstAmrParse",
   "GstAmrParse!sink",
   "GstAmrParse!src",
   "GstAmrParse",
   "GstAmrParse!sink",
   "GstAmrParse!src",
   "GstBufferForeachMetaFunc",
   "GstBufferList",
   "GstBufferListFunc",
   "GstBufferForeachMetaFunc",
   "GstBufferList",
   "GstBufferListFunc",
+  "GstBufferMapInfo",
   "GstBufferPool",
   "GstBufferPool.flushing",
   "GstBufferPool.object",
   "GstBufferPool",
   "GstBufferPool.flushing",
   "GstBufferPool.object",
   "GstCodecAlphaDemux!alpha",
   "GstCodecAlphaDemux!sink",
   "GstCodecAlphaDemux!src",
   "GstCodecAlphaDemux!alpha",
   "GstCodecAlphaDemux!sink",
   "GstCodecAlphaDemux!src",
+  "GstCodecTimestamper",
   "GstCollectData",
   "GstCollectData.ABI.abi.dts",
   "GstCollectData.buffer",
   "GstCollectData",
   "GstCollectData.ABI.abi.dts",
   "GstCollectData.buffer",
   "GstCpuReport!sink",
   "GstCpuReport!src",
   "GstCtType",
   "GstCpuReport!sink",
   "GstCpuReport!src",
   "GstCtType",
+  "GstCudaAllocator",
+  "GstCudaAllocator.parent",
+  "GstCudaAllocatorClass.parent_class",
   "GstCudaBaseFilter",
   "GstCudaBaseTransform",
   "GstCudaBaseTransform:cuda-device-id",
   "GstCudaBaseFilter",
   "GstCudaBaseTransform",
   "GstCudaBaseTransform:cuda-device-id",
+  "GstCudaBufferCopyType",
+  "GstCudaBufferPool",
+  "GstCudaBufferPool.context",
+  "GstCudaBufferPool.parent",
+  "GstCudaBufferPool.priv",
+  "GstCudaBufferPoolClass.parent_class",
+  "GstCudaContext",
+  "GstCudaContext.object",
+  "GstCudaContext:cuda-device-id",
+  "GstCudaContextClass.parent_class",
   "GstCudaConvert!sink",
   "GstCudaConvert!src",
   "GstCudaDownload!sink",
   "GstCudaDownload!src",
   "GstCudaConvert!sink",
   "GstCudaConvert!src",
   "GstCudaDownload!sink",
   "GstCudaDownload!src",
+  "GstCudaGraphicsResource",
+  "GstCudaGraphicsResource.cuda_context",
+  "GstCudaGraphicsResource.flags",
+  "GstCudaGraphicsResource.graphics_context",
+  "GstCudaGraphicsResource.mapped",
+  "GstCudaGraphicsResource.registered",
+  "GstCudaGraphicsResource.resource",
+  "GstCudaGraphicsResource.type",
+  "GstCudaGraphicsResourceType",
+  "GstCudaMemory",
+  "GstCudaMemory.context",
+  "GstCudaMemory.info",
+  "GstCudaMemory.mem",
+  "GstCudaMemoryTransfer",
+  "GstCudaQuarkId",
   "GstCudaScale!sink",
   "GstCudaScale!src",
   "GstCudaUpload!sink",
   "GstCudaScale!sink",
   "GstCudaScale!src",
   "GstCudaUpload!sink",
   "GstDashDemux!sink",
   "GstDashDemux!subtitle_%02u",
   "GstDashDemux!video_%02u",
   "GstDashDemux!sink",
   "GstDashDemux!subtitle_%02u",
   "GstDashDemux!video_%02u",
+  "GstDashDemux2!audio_%02u",
+  "GstDashDemux2!sink",
+  "GstDashDemux2!subtitle_%02u",
+  "GstDashDemux2!video_%02u",
   "GstDashDemux:bandwidth-usage",
   "GstDashDemux:max-bitrate",
   "GstDashDemux:max-buffering-time",
   "GstDashDemux:bandwidth-usage",
   "GstDashDemux:max-bitrate",
   "GstDashDemux:max-buffering-time",
   "GstDecklinkKeyerMode::external",
   "GstDecklinkKeyerMode::internal",
   "GstDecklinkKeyerMode::off",
   "GstDecklinkKeyerMode::external",
   "GstDecklinkKeyerMode::internal",
   "GstDecklinkKeyerMode::off",
+  "GstDecklinkMappingFormat",
+  "GstDecklinkMappingFormat::default",
+  "GstDecklinkMappingFormat::level-a",
+  "GstDecklinkMappingFormat::level-b",
   "GstDecklinkModes",
   "GstDecklinkModes::1080i50",
   "GstDecklinkModes::1080i5994",
   "GstDecklinkModes",
   "GstDecklinkModes::1080i50",
   "GstDecklinkModes::1080i5994",
   "GstDecklinkModes::2kdcip50",
   "GstDecklinkModes::2kdcip5994",
   "GstDecklinkModes::2kdcip60",
   "GstDecklinkModes::2kdcip50",
   "GstDecklinkModes::2kdcip5994",
   "GstDecklinkModes::2kdcip60",
+  "GstDecklinkModes::4kdcip2398",
+  "GstDecklinkModes::4kdcip24",
+  "GstDecklinkModes::4kdcip25",
+  "GstDecklinkModes::4kdcip2997",
+  "GstDecklinkModes::4kdcip30",
+  "GstDecklinkModes::4kdcip50",
+  "GstDecklinkModes::4kdcip5994",
+  "GstDecklinkModes::4kdcip60",
   "GstDecklinkModes::720p50",
   "GstDecklinkModes::720p5994",
   "GstDecklinkModes::720p60",
   "GstDecklinkModes::720p50",
   "GstDecklinkModes::720p5994",
   "GstDecklinkModes::720p60",
+  "GstDecklinkModes::8kdcip2398",
+  "GstDecklinkModes::8kdcip24",
+  "GstDecklinkModes::8kdcip25",
+  "GstDecklinkModes::8kdcip2997",
+  "GstDecklinkModes::8kdcip30",
+  "GstDecklinkModes::8kdcip50",
+  "GstDecklinkModes::8kdcip5994",
+  "GstDecklinkModes::8kdcip60",
+  "GstDecklinkModes::8kp2398",
+  "GstDecklinkModes::8kp24",
+  "GstDecklinkModes::8kp25",
+  "GstDecklinkModes::8kp2997",
+  "GstDecklinkModes::8kp30",
+  "GstDecklinkModes::8kp50",
+  "GstDecklinkModes::8kp5994",
+  "GstDecklinkModes::8kp60",
   "GstDecklinkModes::auto",
   "GstDecklinkModes::ntsc",
   "GstDecklinkModes::ntsc-p",
   "GstDecklinkModes::auto",
   "GstDecklinkModes::ntsc",
   "GstDecklinkModes::ntsc-p",
   "GstGLVideoMixerPad:blend-function-dst-rgb",
   "GstGLVideoMixerPad:blend-function-src-alpha",
   "GstGLVideoMixerPad:blend-function-src-rgb",
   "GstGLVideoMixerPad:blend-function-dst-rgb",
   "GstGLVideoMixerPad:blend-function-src-alpha",
   "GstGLVideoMixerPad:blend-function-src-rgb",
+  "GstGLVideoMixerPad:crop-bottom",
+  "GstGLVideoMixerPad:crop-left",
+  "GstGLVideoMixerPad:crop-right",
+  "GstGLVideoMixerPad:crop-top",
   "GstGLVideoMixerPad:height",
   "GstGLVideoMixerPad:width",
   "GstGLVideoMixerPad:xpos",
   "GstGLVideoMixerPad:height",
   "GstGLVideoMixerPad:width",
   "GstGLVideoMixerPad:xpos",
   "GstGtkGLSink!sink",
   "GstGtkSink",
   "GstGtkSink!sink",
   "GstGtkGLSink!sink",
   "GstGtkSink",
   "GstGtkSink!sink",
+  "GstGtkWaylandSink!sink",
   "GstH263Parse",
   "GstH263Parse!sink",
   "GstH263Parse!src",
   "GstH263Parse",
   "GstH263Parse!sink",
   "GstH263Parse!src",
+  "GstH264BitWriterResult",
   "GstH264BufferingPeriod",
   "GstH264ClockTimestamp",
   "GstH264ContentLightLevel",
   "GstH264BufferingPeriod",
   "GstH264ClockTimestamp",
   "GstH264ContentLightLevel",
   "GstH264DecoderClass::output_picture",
   "GstH264DecoderClass::start_picture",
   "GstH264DecoderCompliance",
   "GstH264DecoderClass::output_picture",
   "GstH264DecoderClass::start_picture",
   "GstH264DecoderCompliance",
+  "GstH264DecoderConfigRecord",
   "GstH264Dpb",
   "GstH264DpbBumpMode",
   "GstH264FramePacking",
   "GstH264Dpb",
   "GstH264DpbBumpMode",
   "GstH264FramePacking",
   "GstH264SliceHdr",
   "GstH264SliceType",
   "GstH264StereoVideoInfo",
   "GstH264SliceHdr",
   "GstH264SliceType",
   "GstH264StereoVideoInfo",
+  "GstH264Timestamper!sink",
+  "GstH264Timestamper!src",
+  "GstH264UserDataUnregistered",
   "GstH264VUIParams",
   "GstH264VUIParams",
+  "GstH265BitWriterResult",
   "GstH265BufferingPeriod",
   "GstH265ContentLightLevel",
   "GstH265Decoder",
   "GstH265BufferingPeriod",
   "GstH265ContentLightLevel",
   "GstH265Decoder",
   "GstH265DecoderClass.start_picture",
   "GstH265DecoderClass::decode_slice",
   "GstH265DecoderClass::end_picture",
   "GstH265DecoderClass.start_picture",
   "GstH265DecoderClass::decode_slice",
   "GstH265DecoderClass::end_picture",
+  "GstH265DecoderClass::get_preferred_output_delay",
   "GstH265DecoderClass::new_picture",
   "GstH265DecoderClass::new_sequence",
   "GstH265DecoderClass::output_picture",
   "GstH265DecoderClass::new_picture",
   "GstH265DecoderClass::new_sequence",
   "GstH265DecoderClass::output_picture",
   "GstH265SliceType",
   "GstH265SubLayerHRDParams",
   "GstH265TimeCode",
   "GstH265SliceType",
   "GstH265SubLayerHRDParams",
   "GstH265TimeCode",
+  "GstH265Timestamper!sink",
+  "GstH265Timestamper!src",
   "GstH265VPS",
   "GstH265VUIParams",
   "GstHDV1394Src",
   "GstH265VPS",
   "GstH265VUIParams",
   "GstHDV1394Src",
   "GstHLSDemux",
   "GstHLSDemux!sink",
   "GstHLSDemux!src_%u",
   "GstHLSDemux",
   "GstHLSDemux!sink",
   "GstHLSDemux!src_%u",
+  "GstHLSDemux2!audio_%02u",
+  "GstHLSDemux2!sink",
+  "GstHLSDemux2!subtitle_%02u",
+  "GstHLSDemux2!video_%02u",
   "GstHanddetect",
   "GstHanddetect!sink",
   "GstHanddetect!src",
   "GstHanddetect",
   "GstHanddetect!sink",
   "GstHanddetect!src",
   "GstMemoryIsSpanFunction",
   "GstMemoryMapFullFunction",
   "GstMemoryMapFunction",
   "GstMemoryIsSpanFunction",
   "GstMemoryMapFullFunction",
   "GstMemoryMapFunction",
+  "GstMemoryMapInfo",
   "GstMemoryShareFunction",
   "GstMemoryUnmapFullFunction",
   "GstMemoryUnmapFunction",
   "GstMemoryShareFunction",
   "GstMemoryUnmapFullFunction",
   "GstMemoryUnmapFunction",
   "GstMssDemux!audio_%02u",
   "GstMssDemux!sink",
   "GstMssDemux!video_%02u",
   "GstMssDemux!audio_%02u",
   "GstMssDemux!sink",
   "GstMssDemux!video_%02u",
+  "GstMssDemux2!audio_%02u",
+  "GstMssDemux2!sink",
+  "GstMssDemux2!subtitle_%02u",
+  "GstMssDemux2!video_%02u",
   "GstMssDemux:max-queue-size-buffers",
   "GstMuLawDec",
   "GstMuLawDec!sink",
   "GstMssDemux:max-queue-size-buffers",
   "GstMuLawDec",
   "GstMuLawDec!sink",
   "GstNavigationEventType",
   "GstNavigationInterface.iface",
   "GstNavigationInterface.send_event",
   "GstNavigationEventType",
   "GstNavigationInterface.iface",
   "GstNavigationInterface.send_event",
-  "GstNavigationInterface::send_event",
   "GstNavigationInterface.send_event_simple",
   "GstNavigationInterface.send_event_simple",
+  "GstNavigationInterface::send_event",
   "GstNavigationInterface::send_event_simple",
   "GstNavigationMessageType",
   "GstNavigationInterface::send_event_simple",
   "GstNavigationMessageType",
+  "GstNavigationModifierType",
   "GstNavigationQueryType",
   "GstNavigationtest",
   "GstNavigationtest!sink",
   "GstNavigationQueryType",
   "GstNavigationtest",
   "GstNavigationtest!sink",
   "GstShout2send:port",
   "GstShout2send:protocol",
   "GstShout2send:public",
   "GstShout2send:port",
   "GstShout2send:protocol",
   "GstShout2send:public",
+  "GstShout2send:send-title-info",
   "GstShout2send:streamname",
   "GstShout2send:timeout",
   "GstShout2send:url",
   "GstShout2send:streamname",
   "GstShout2send:timeout",
   "GstShout2send:url",
-  "GstShout2send:username",
-  "GstShout2send:send-title-info",
   "GstShout2send:user-agent",
   "GstShout2send:user-agent",
+  "GstShout2send:username",
   "GstSidClock",
   "GstSidClock::ntsc",
   "GstSidClock::pal",
   "GstSidClock",
   "GstSidClock::ntsc",
   "GstSidClock::pal",
   "GstTimeOverlayTimeLine",
   "GstTimeOverlayTimeLine::buffer-time",
   "GstTimeOverlayTimeLine::elapsed-running-time",
   "GstTimeOverlayTimeLine",
   "GstTimeOverlayTimeLine::buffer-time",
   "GstTimeOverlayTimeLine::elapsed-running-time",
+  "GstTimeOverlayTimeLine::reference-timestamp",
   "GstTimeOverlayTimeLine::running-time",
   "GstTimeOverlayTimeLine::stream-time",
   "GstTimeOverlayTimeLine::time-code",
   "GstTimeOverlayTimeLine::running-time",
   "GstTimeOverlayTimeLine::stream-time",
   "GstTimeOverlayTimeLine::time-code",
   "GstVPXEncTuning",
   "GstVPXEncTuning::psnr",
   "GstVPXEncTuning::ssim",
   "GstVPXEncTuning",
   "GstVPXEncTuning::psnr",
   "GstVPXEncTuning::ssim",
+  "GstVaAllocator",
   "GstVaBaseTransform",
   "GstVaDeinterlace!sink",
   "GstVaDeinterlace!src",
   "GstVaBaseTransform",
   "GstVaDeinterlace!sink",
   "GstVaDeinterlace!src",
   "GstVaDeinterlaceMethods::adaptive",
   "GstVaDeinterlaceMethods::bob",
   "GstVaDeinterlaceMethods::compensated",
   "GstVaDeinterlaceMethods::adaptive",
   "GstVaDeinterlaceMethods::bob",
   "GstVaDeinterlaceMethods::compensated",
+  "GstVaDisplay",
+  "GstVaDisplay.parent",
+  "GstVaDisplay:description",
+  "GstVaDisplay:va-display",
+  "GstVaDisplayClass.parent_class",
+  "GstVaDisplayClass::create_va_display",
+  "GstVaDisplayDrm",
+  "GstVaDisplayDrm:path",
+  "GstVaDisplayWrapped",
+  "GstVaDmabufAllocator",
+  "GstVaFeature",
   "GstVaH264Dec!sink",
   "GstVaH264Dec!src",
   "GstVaH265Dec!sink",
   "GstVaH265Dec!src",
   "GstVaH264Dec!sink",
   "GstVaH264Dec!src",
   "GstVaH265Dec!sink",
   "GstVaH265Dec!src",
+  "GstVaImplementation",
   "GstVaMpeg2dec!sink",
   "GstVaMpeg2dec!src",
   "GstVaMpeg2dec!sink",
   "GstVaMpeg2dec!src",
+  "GstVaPool",
   "GstVaPostProc!sink",
   "GstVaPostProc!src",
   "GstVaVp8dec!sink",
   "GstVaPostProc!sink",
   "GstVaPostProc!src",
   "GstVaVp8dec!sink",
   "GstVideoConvert:n-threads",
   "GstVideoConvert:primaries-mode",
   "GstVideoConvertSampleCallback",
   "GstVideoConvert:n-threads",
   "GstVideoConvert:primaries-mode",
   "GstVideoConvertSampleCallback",
+  "GstVideoConvertScale!sink",
+  "GstVideoConvertScale!src",
   "GstVideoConverter",
   "GstVideoCrop",
   "GstVideoCrop!sink",
   "GstVideoConverter",
   "GstVideoCrop",
   "GstVideoCrop!sink",
   "GstVideoResampler.taps",
   "GstVideoResamplerFlags",
   "GstVideoResamplerMethod",
   "GstVideoResampler.taps",
   "GstVideoResamplerFlags",
   "GstVideoResamplerMethod",
+  "GstVideoSEIUserDataUnregisteredMeta",
+  "GstVideoSEIUserDataUnregisteredMeta.data",
+  "GstVideoSEIUserDataUnregisteredMeta.meta",
+  "GstVideoSEIUserDataUnregisteredMeta.size",
+  "GstVideoSEIUserDataUnregisteredMeta.uuid",
   "GstVideoScale",
   "GstVideoScale!sink",
   "GstVideoScale!src",
   "GstVideoScale",
   "GstVideoScale!sink",
   "GstVideoScale!src",
   "GstVulkanMemoryAllocator",
   "GstVulkanMemoryAllocator.parent",
   "GstVulkanMemoryAllocatorClass.parent_class",
   "GstVulkanMemoryAllocator",
   "GstVulkanMemoryAllocator.parent",
   "GstVulkanMemoryAllocatorClass.parent_class",
+  "GstVulkanOverlayCompositor!sink",
+  "GstVulkanOverlayCompositor!src",
   "GstVulkanPhysicalDevice",
   "GstVulkanPhysicalDevice.device",
   "GstVulkanPhysicalDevice.device_index",
   "GstVulkanPhysicalDevice",
   "GstVulkanPhysicalDevice.device",
   "GstVulkanPhysicalDevice.device_index",
   "GstVulkanQueue.parent",
   "GstVulkanQueue.queue",
   "GstVulkanQueueClass.parent_class",
   "GstVulkanQueue.parent",
   "GstVulkanQueue.queue",
   "GstVulkanQueueClass.parent_class",
+  "GstVulkanShaderSpv!sink",
+  "GstVulkanShaderSpv!src",
   "GstVulkanSink",
   "GstVulkanSink!sink",
   "GstVulkanSink:device",
   "GstVulkanSink",
   "GstVulkanSink!sink",
   "GstVulkanSink:device",
   "GstWebRTCDataChannelState",
   "GstWebRTCError",
   "GstWebRTCFECType",
   "GstWebRTCDataChannelState",
   "GstWebRTCError",
   "GstWebRTCFECType",
+  "GstWebRTCICE",
+  "GstWebRTCICE._gst_reserved",
+  "GstWebRTCICE.ice_connection_state",
+  "GstWebRTCICE.ice_gathering_state",
+  "GstWebRTCICE.max_rtp_port",
+  "GstWebRTCICE.min_rtp_port",
+  "GstWebRTCICE.parent",
+  "GstWebRTCICE::add-local-ip-address",
+  "GstWebRTCICE:max-rtp-port",
+  "GstWebRTCICE:min-rtp-port",
+  "GstWebRTCICECandidateStats",
+  "GstWebRTCICECandidateStats._gst_reserved",
+  "GstWebRTCICECandidateStats.ipaddr",
+  "GstWebRTCICECandidateStats.port",
+  "GstWebRTCICECandidateStats.prio",
+  "GstWebRTCICECandidateStats.proto",
+  "GstWebRTCICECandidateStats.relay_proto",
+  "GstWebRTCICECandidateStats.stream_id",
+  "GstWebRTCICECandidateStats.type",
+  "GstWebRTCICECandidateStats.url",
+  "GstWebRTCICEClass._gst_reserved",
+  "GstWebRTCICEClass.parent_class",
+  "GstWebRTCICEClass::add_candidate",
+  "GstWebRTCICEClass::add_stream",
+  "GstWebRTCICEClass::add_turn_server",
+  "GstWebRTCICEClass::find_transport",
+  "GstWebRTCICEClass::gather_candidates",
+  "GstWebRTCICEClass::get_is_controller",
+  "GstWebRTCICEClass::get_local_candidates",
+  "GstWebRTCICEClass::get_remote_candidates",
+  "GstWebRTCICEClass::get_selected_pair",
+  "GstWebRTCICEClass::get_stun_server",
+  "GstWebRTCICEClass::get_turn_server",
+  "GstWebRTCICEClass::set_force_relay",
+  "GstWebRTCICEClass::set_is_controller",
+  "GstWebRTCICEClass::set_local_credentials",
+  "GstWebRTCICEClass::set_on_ice_candidate",
+  "GstWebRTCICEClass::set_remote_credentials",
+  "GstWebRTCICEClass::set_stun_server",
+  "GstWebRTCICEClass::set_tos",
+  "GstWebRTCICEClass::set_turn_server",
   "GstWebRTCICEComponent",
   "GstWebRTCICEConnectionState",
   "GstWebRTCICEGatheringState",
   "GstWebRTCICEComponent",
   "GstWebRTCICEConnectionState",
   "GstWebRTCICEGatheringState",
+  "GstWebRTCICEOnCandidateFunc",
   "GstWebRTCICERole",
   "GstWebRTCICEStream",
   "GstWebRTCICEStream.parent",
   "GstWebRTCICERole",
   "GstWebRTCICEStream",
   "GstWebRTCICEStream.parent",
   "_GstH264DecRefPicMarking.n_ref_pic_marking",
   "_GstH264DecRefPicMarking.no_output_of_prior_pics_flag",
   "_GstH264DecRefPicMarking.ref_pic_marking",
   "_GstH264DecRefPicMarking.n_ref_pic_marking",
   "_GstH264DecRefPicMarking.no_output_of_prior_pics_flag",
   "_GstH264DecRefPicMarking.ref_pic_marking",
+  "_GstH264DecoderConfigRecord.bit_depth_chroma_minus8",
+  "_GstH264DecoderConfigRecord.bit_depth_luma_minus8",
+  "_GstH264DecoderConfigRecord.chroma_format",
+  "_GstH264DecoderConfigRecord.chroma_format_present",
+  "_GstH264DecoderConfigRecord.configuration_version",
+  "_GstH264DecoderConfigRecord.length_size_minus_one",
+  "_GstH264DecoderConfigRecord.level_indication",
+  "_GstH264DecoderConfigRecord.pps",
+  "_GstH264DecoderConfigRecord.profile_compatibility",
+  "_GstH264DecoderConfigRecord.profile_indication",
+  "_GstH264DecoderConfigRecord.sps",
+  "_GstH264DecoderConfigRecord.sps_ext",
   "_GstH264FramePacking.content_interpretation_type",
   "_GstH264FramePacking.current_frame_is_frame0_flag",
   "_GstH264FramePacking.field_views_flag",
   "_GstH264FramePacking.content_interpretation_type",
   "_GstH264FramePacking.current_frame_is_frame0_flag",
   "_GstH264FramePacking.field_views_flag",
   "_GstH264SEIMessage.payload.registered_user_data",
   "_GstH264SEIMessage.payload.stereo_video_info",
   "_GstH264SEIMessage.payload.unhandled_payload",
   "_GstH264SEIMessage.payload.registered_user_data",
   "_GstH264SEIMessage.payload.stereo_video_info",
   "_GstH264SEIMessage.payload.unhandled_payload",
+  "_GstH264SEIMessage.payload.user_data_unregistered",
   "_GstH264SEIMessage.payloadType",
   "_GstH264SEIUnhandledPayload.data",
   "_GstH264SEIUnhandledPayload.payloadType",
   "_GstH264SEIMessage.payloadType",
   "_GstH264SEIUnhandledPayload.data",
   "_GstH264SEIUnhandledPayload.payloadType",
   "_GstH264StereoVideoInfo.next_frame_is_second_view_flag",
   "_GstH264StereoVideoInfo.right_view_self_contained_flag",
   "_GstH264StereoVideoInfo.top_field_is_left_view_flag",
   "_GstH264StereoVideoInfo.next_frame_is_second_view_flag",
   "_GstH264StereoVideoInfo.right_view_self_contained_flag",
   "_GstH264StereoVideoInfo.top_field_is_left_view_flag",
+  "_GstH264UserDataUnregistered.data",
+  "_GstH264UserDataUnregistered.size",
+  "_GstH264UserDataUnregistered.uuid",
   "_GstH264VUIParams.aspect_ratio_idc",
   "_GstH264VUIParams.aspect_ratio_info_present_flag",
   "_GstH264VUIParams.bitstream_restriction_flag",
   "_GstH264VUIParams.aspect_ratio_idc",
   "_GstH264VUIParams.aspect_ratio_info_present_flag",
   "_GstH264VUIParams.bitstream_restriction_flag",
   "_GstH265PPS.slice_chroma_qp_offsets_present_flag",
   "_GstH265PPS.slice_segment_header_extension_present_flag",
   "_GstH265PPS.sps",
   "_GstH265PPS.slice_chroma_qp_offsets_present_flag",
   "_GstH265PPS.slice_segment_header_extension_present_flag",
   "_GstH265PPS.sps",
+  "_GstH265PPS.sps_id",
   "_GstH265PPS.tc_offset_div2",
   "_GstH265PPS.tiles_enabled_flag",
   "_GstH265PPS.transform_skip_enabled_flag",
   "_GstH265PPS.tc_offset_div2",
   "_GstH265PPS.tiles_enabled_flag",
   "_GstH265PPS.transform_skip_enabled_flag",
   "_GstH265SPS.used_by_curr_pic_lt_sps_flag",
   "_GstH265SPS.valid",
   "_GstH265SPS.vps",
   "_GstH265SPS.used_by_curr_pic_lt_sps_flag",
   "_GstH265SPS.valid",
   "_GstH265SPS.vps",
+  "_GstH265SPS.vps_id",
   "_GstH265SPS.vui_parameters_present_flag",
   "_GstH265SPS.vui_params",
   "_GstH265SPS.width",
   "_GstH265SPS.vui_parameters_present_flag",
   "_GstH265SPS.vui_params",
   "_GstH265SPS.width",
   "_GstH265SliceHdr.first_slice_segment_in_pic_flag",
   "_GstH265SliceHdr.five_minus_max_num_merge_cand",
   "_GstH265SliceHdr.header_size",
   "_GstH265SliceHdr.first_slice_segment_in_pic_flag",
   "_GstH265SliceHdr.five_minus_max_num_merge_cand",
   "_GstH265SliceHdr.header_size",
+  "_GstH265SliceHdr.long_term_ref_pic_set_size",
   "_GstH265SliceHdr.loop_filter_across_slices_enabled_flag",
   "_GstH265SliceHdr.lt_idx_sps",
   "_GstH265SliceHdr.mvd_l1_zero_flag",
   "_GstH265SliceHdr.loop_filter_across_slices_enabled_flag",
   "_GstH265SliceHdr.lt_idx_sps",
   "_GstH265SliceHdr.mvd_l1_zero_flag",
   "_GstH265VUIParams.overscan_info_present_flag",
   "_GstH265VUIParams.par_d",
   "_GstH265VUIParams.par_n",
   "_GstH265VUIParams.overscan_info_present_flag",
   "_GstH265VUIParams.par_d",
   "_GstH265VUIParams.par_n",
+  "_GstH265VUIParams.parsed",
   "_GstH265VUIParams.poc_proportional_to_timing_flag",
   "_GstH265VUIParams.restricted_ref_pic_lists_flag",
   "_GstH265VUIParams.sar_height",
   "_GstH265VUIParams.poc_proportional_to_timing_flag",
   "_GstH265VUIParams.restricted_ref_pic_lists_flag",
   "_GstH265VUIParams.sar_height",
   "alsasrc:device",
   "alsasrc:device-name",
   "alsasrc:use-driver-timestamps",
   "alsasrc:device",
   "alsasrc:device-name",
   "alsasrc:use-driver-timestamps",
+  "amfh264enc",
+  "amfh264enc:adapter-luid",
+  "amfh264enc:aud",
+  "amfh264enc:bitrate",
+  "amfh264enc:cabac",
+  "amfh264enc:gop-size",
+  "amfh264enc:max-bitrate",
+  "amfh264enc:max-qp",
+  "amfh264enc:min-qp",
+  "amfh264enc:preset",
+  "amfh264enc:qp-i",
+  "amfh264enc:qp-p",
+  "amfh264enc:rate-control",
+  "amfh264enc:ref-frames",
+  "amfh264enc:usage",
+  "amfh265enc",
+  "amfh265enc:adapter-luid",
+  "amfh265enc:aud",
+  "amfh265enc:bitrate",
+  "amfh265enc:gop-size",
+  "amfh265enc:max-bitrate",
+  "amfh265enc:max-qp-i",
+  "amfh265enc:max-qp-p",
+  "amfh265enc:min-qp-i",
+  "amfh265enc:min-qp-p",
+  "amfh265enc:preset",
+  "amfh265enc:qp-i",
+  "amfh265enc:qp-p",
+  "amfh265enc:rate-control",
+  "amfh265enc:ref-frames",
+  "amfh265enc:usage",
   "amrnbdec",
   "amrnbdec:variant",
   "amrnbenc",
   "amrnbdec",
   "amrnbdec:variant",
   "amrnbenc",
   "audiocheblimit:type",
   "audioconvert",
   "audioconvert:dithering",
   "audiocheblimit:type",
   "audioconvert",
   "audioconvert:dithering",
+  "audioconvert:dithering-threshold",
   "audioconvert:mix-matrix",
   "audioconvert:noise-shaping",
   "audiodynamic",
   "audioconvert:mix-matrix",
   "audioconvert:noise-shaping",
   "audiodynamic",
   "cc708overlay:window-h-pos",
   "cccombiner",
   "cccombiner:max-scheduled",
   "cc708overlay:window-h-pos",
   "cccombiner",
   "cccombiner:max-scheduled",
+  "cccombiner:output-padding",
   "cccombiner:schedule",
   "ccconverter",
   "ccconverter:cdp-mode",
   "cccombiner:schedule",
   "ccconverter",
   "ccconverter:cdp-mode",
   "d3dvideosink:force-aspect-ratio",
   "d3dvideosink:stream-stop-on-close",
   "dashdemux",
   "d3dvideosink:force-aspect-ratio",
   "d3dvideosink:stream-stop-on-close",
   "dashdemux",
+  "dashdemux2",
+  "dashdemux2:max-bitrate",
+  "dashdemux2:max-video-framerate",
+  "dashdemux2:max-video-height",
+  "dashdemux2:max-video-width",
+  "dashdemux2:presentation-delay",
   "dashdemux:bandwidth-usage",
   "dashdemux:max-bitrate",
   "dashdemux:max-buffering-time",
   "dashdemux:bandwidth-usage",
   "dashdemux:max-bitrate",
   "dashdemux:max-buffering-time",
   "decklinkvideosink:hw-serial-number",
   "decklinkvideosink:keyer-level",
   "decklinkvideosink:keyer-mode",
   "decklinkvideosink:hw-serial-number",
   "decklinkvideosink:keyer-level",
   "decklinkvideosink:keyer-mode",
+  "decklinkvideosink:mapping-format",
   "decklinkvideosink:mode",
   "decklinkvideosink:profile",
   "decklinkvideosink:timecode-format",
   "decklinkvideosink:mode",
   "decklinkvideosink:profile",
   "decklinkvideosink:timecode-format",
   "fail_unless_equals_uint64_hex",
   "fail_unless_message_error",
   "fakeaudiosink",
   "fail_unless_equals_uint64_hex",
   "fail_unless_message_error",
   "fakeaudiosink",
+  "fakeaudiosink::handoff",
+  "fakeaudiosink::preroll-handoff",
   "fakeaudiosink:async",
   "fakeaudiosink:blocksize",
   "fakeaudiosink:can-activate-pull",
   "fakeaudiosink:async",
   "fakeaudiosink:blocksize",
   "fakeaudiosink:can-activate-pull",
   "fakesrc:sizetype",
   "fakesrc:sync",
   "fakevideosink",
   "fakesrc:sizetype",
   "fakesrc:sync",
   "fakevideosink",
+  "fakevideosink::handoff",
+  "fakevideosink::preroll-handoff",
   "fakevideosink:allocation-meta-flags",
   "fakevideosink:async",
   "fakevideosink:blocksize",
   "fakevideosink:allocation-meta-flags",
   "fakevideosink:async",
   "fakevideosink:blocksize",
   "gst_buffer_add_video_overlay_composition_meta",
   "gst_buffer_add_video_region_of_interest_meta",
   "gst_buffer_add_video_region_of_interest_meta_id",
   "gst_buffer_add_video_overlay_composition_meta",
   "gst_buffer_add_video_region_of_interest_meta",
   "gst_buffer_add_video_region_of_interest_meta_id",
+  "gst_buffer_add_video_sei_user_data_unregistered_meta",
   "gst_buffer_add_video_time_code_meta",
   "gst_buffer_add_video_time_code_meta_full",
   "gst_buffer_append",
   "gst_buffer_add_video_time_code_meta",
   "gst_buffer_add_video_time_code_meta_full",
   "gst_buffer_append",
   "gst_buffer_get_video_overlay_composition_meta",
   "gst_buffer_get_video_region_of_interest_meta",
   "gst_buffer_get_video_region_of_interest_meta_id",
   "gst_buffer_get_video_overlay_composition_meta",
   "gst_buffer_get_video_region_of_interest_meta",
   "gst_buffer_get_video_region_of_interest_meta_id",
+  "gst_buffer_get_video_sei_user_data_unregistered_meta",
   "gst_buffer_get_video_time_code_meta",
   "gst_buffer_has_flags",
   "gst_buffer_insert_memory",
   "gst_buffer_get_video_time_code_meta",
   "gst_buffer_has_flags",
   "gst_buffer_insert_memory",
   "gst_buffer_pool_config_set_allocator",
   "gst_buffer_pool_config_set_gl_allocation_params",
   "gst_buffer_pool_config_set_params",
   "gst_buffer_pool_config_set_allocator",
   "gst_buffer_pool_config_set_gl_allocation_params",
   "gst_buffer_pool_config_set_params",
+  "gst_buffer_pool_config_set_va_alignment",
+  "gst_buffer_pool_config_set_va_allocation_params",
   "gst_buffer_pool_config_set_video_alignment",
   "gst_buffer_pool_config_validate_params",
   "gst_buffer_pool_get_config",
   "gst_buffer_pool_config_set_video_alignment",
   "gst_buffer_pool_config_validate_params",
   "gst_buffer_pool_get_config",
   "gst_codec_utils_aac_get_profile",
   "gst_codec_utils_aac_get_sample_rate",
   "gst_codec_utils_aac_get_sample_rate_from_index",
   "gst_codec_utils_aac_get_profile",
   "gst_codec_utils_aac_get_sample_rate",
   "gst_codec_utils_aac_get_sample_rate_from_index",
+  "gst_codec_utils_caps_from_mime_codec",
   "gst_codec_utils_caps_get_mime_codec",
   "gst_codec_utils_h264_caps_set_level_and_profile",
   "gst_codec_utils_h264_get_level",
   "gst_codec_utils_caps_get_mime_codec",
   "gst_codec_utils_h264_caps_set_level_and_profile",
   "gst_codec_utils_h264_get_level",
   "gst_context_get_context_type",
   "gst_context_get_gl_display",
   "gst_context_get_structure",
   "gst_context_get_context_type",
   "gst_context_get_gl_display",
   "gst_context_get_structure",
+  "gst_context_get_va_display",
   "gst_context_get_vulkan_device",
   "gst_context_get_vulkan_display",
   "gst_context_get_vulkan_instance",
   "gst_context_get_vulkan_device",
   "gst_context_get_vulkan_display",
   "gst_context_get_vulkan_instance",
   "gst_context_is_writable",
   "gst_context_make_writable",
   "gst_context_new",
   "gst_context_is_writable",
   "gst_context_make_writable",
   "gst_context_new",
+  "gst_context_new_cuda_context",
   "gst_context_ref",
   "gst_context_replace",
   "gst_context_set_gl_display",
   "gst_context_ref",
   "gst_context_replace",
   "gst_context_set_gl_display",
+  "gst_context_set_va_display",
   "gst_context_set_vulkan_device",
   "gst_context_set_vulkan_display",
   "gst_context_set_vulkan_instance",
   "gst_context_set_vulkan_device",
   "gst_context_set_vulkan_display",
   "gst_context_set_vulkan_instance",
   "gst_control_point_free",
   "gst_control_source_get_value",
   "gst_control_source_get_value_array",
   "gst_control_point_free",
   "gst_control_source_get_value",
   "gst_control_source_get_value_array",
+  "gst_cuda_allocator_alloc",
+  "gst_cuda_buffer_copy",
+  "gst_cuda_buffer_copy_type_to_string",
+  "gst_cuda_buffer_pool_new",
+  "gst_cuda_context_can_access_peer",
+  "gst_cuda_context_get_handle",
+  "gst_cuda_context_get_texture_alignment",
+  "gst_cuda_context_new",
+  "gst_cuda_context_new_wrapped",
+  "gst_cuda_context_pop",
+  "gst_cuda_context_push",
+  "gst_cuda_ensure_element_context",
+  "gst_cuda_graphics_resource_free",
+  "gst_cuda_graphics_resource_map",
+  "gst_cuda_graphics_resource_new",
+  "gst_cuda_graphics_resource_register_gl_buffer",
+  "gst_cuda_graphics_resource_unmap",
+  "gst_cuda_graphics_resource_unregister",
+  "gst_cuda_handle_context_query",
+  "gst_cuda_handle_set_context",
+  "gst_cuda_load_library",
+  "gst_cuda_memory_init_once",
+  "gst_cuda_nvrtc_compile",
+  "gst_cuda_nvrtc_load_library",
+  "gst_cuda_quark_from_id",
+  "gst_cuda_result",
   "gst_custom_meta_get_structure",
   "gst_custom_meta_has_name",
   "gst_data_queue_drop_head",
   "gst_custom_meta_get_structure",
   "gst_custom_meta_has_name",
   "gst_data_queue_drop_head",
   "gst_glsl_version_to_string",
   "gst_guint64_to_gdouble",
   "gst_h263_parse",
   "gst_glsl_version_to_string",
   "gst_guint64_to_gdouble",
   "gst_h263_parse",
+  "gst_h264_bit_writer_aud",
+  "gst_h264_bit_writer_convert_to_nal",
+  "gst_h264_bit_writer_pps",
+  "gst_h264_bit_writer_sei",
+  "gst_h264_bit_writer_slice_hdr",
+  "gst_h264_bit_writer_sps",
   "gst_h264_create_sei_memory",
   "gst_h264_create_sei_memory_avc",
   "gst_h264_create_sei_memory",
   "gst_h264_create_sei_memory_avc",
+  "gst_h264_decoder_config_record_free",
   "gst_h264_decoder_get_picture",
   "gst_h264_decoder_set_process_ref_pic_lists",
   "gst_h264_dpb_add",
   "gst_h264_decoder_get_picture",
   "gst_h264_decoder_set_process_ref_pic_lists",
   "gst_h264_dpb_add",
   "gst_h264_parser_identify_nalu_unchecked",
   "gst_h264_parser_insert_sei",
   "gst_h264_parser_insert_sei_avc",
   "gst_h264_parser_identify_nalu_unchecked",
   "gst_h264_parser_insert_sei",
   "gst_h264_parser_insert_sei_avc",
+  "gst_h264_parser_parse_decoder_config_record",
   "gst_h264_parser_parse_nal",
   "gst_h264_parser_parse_pps",
   "gst_h264_parser_parse_sei",
   "gst_h264_parser_parse_nal",
   "gst_h264_parser_parse_pps",
   "gst_h264_parser_parse_sei",
   "gst_h264_sei_clear",
   "gst_h264_sps_clear",
   "gst_h264_video_calculate_framerate",
   "gst_h264_sei_clear",
   "gst_h264_sps_clear",
   "gst_h264_video_calculate_framerate",
+  "gst_h265_bit_writer_aud",
+  "gst_h265_bit_writer_convert_to_nal",
+  "gst_h265_bit_writer_pps",
+  "gst_h265_bit_writer_sei",
+  "gst_h265_bit_writer_slice_hdr",
+  "gst_h265_bit_writer_sps",
+  "gst_h265_bit_writer_vps",
   "gst_h265_create_sei_memory",
   "gst_h265_create_sei_memory_hevc",
   "gst_h265_decoder_get_picture",
   "gst_h265_create_sei_memory",
   "gst_h265_create_sei_memory_hevc",
   "gst_h265_decoder_get_picture",
   "gst_h265_parse_sps",
   "gst_h265_parse_vps",
   "gst_h265_parser_free",
   "gst_h265_parse_sps",
   "gst_h265_parse_vps",
   "gst_h265_parser_free",
+  "gst_h265_parser_identify_and_split_nalu_hevc",
   "gst_h265_parser_identify_nalu",
   "gst_h265_parser_identify_nalu_hevc",
   "gst_h265_parser_identify_nalu_unchecked",
   "gst_h265_parser_identify_nalu",
   "gst_h265_parser_identify_nalu_hevc",
   "gst_h265_parser_identify_nalu_unchecked",
   "gst_install_plugins_sync",
   "gst_interpolation_control_source_new",
   "gst_is_caps_features",
   "gst_install_plugins_sync",
   "gst_interpolation_control_source_new",
   "gst_is_caps_features",
+  "gst_is_cuda_memory",
   "gst_is_dmabuf_memory",
   "gst_is_fd_memory",
   "gst_is_gl_base_memory",
   "gst_is_dmabuf_memory",
   "gst_is_fd_memory",
   "gst_is_gl_base_memory",
   "gst_mpegts_section_send_event",
   "gst_mpegts_section_unref",
   "gst_mpegts_t2_delivery_system_descriptor_free",
   "gst_mpegts_section_send_event",
   "gst_mpegts_section_unref",
   "gst_mpegts_t2_delivery_system_descriptor_free",
+  "gst_navigation_event_get_coordinates",
   "gst_navigation_event_get_type",
   "gst_navigation_event_get_type",
+  "gst_navigation_event_new_command",
+  "gst_navigation_event_new_key_press",
+  "gst_navigation_event_new_key_release",
+  "gst_navigation_event_new_mouse_button_press",
+  "gst_navigation_event_new_mouse_button_release",
+  "gst_navigation_event_new_mouse_move",
+  "gst_navigation_event_new_mouse_scroll",
+  "gst_navigation_event_new_touch_cancel",
+  "gst_navigation_event_new_touch_down",
+  "gst_navigation_event_new_touch_frame",
+  "gst_navigation_event_new_touch_motion",
+  "gst_navigation_event_new_touch_up",
   "gst_navigation_event_parse_command",
   "gst_navigation_event_parse_key_event",
   "gst_navigation_event_parse_command",
   "gst_navigation_event_parse_key_event",
+  "gst_navigation_event_parse_modifier_state",
   "gst_navigation_event_parse_mouse_button_event",
   "gst_navigation_event_parse_mouse_move_event",
   "gst_navigation_event_parse_mouse_scroll_event",
   "gst_navigation_event_parse_mouse_button_event",
   "gst_navigation_event_parse_mouse_move_event",
   "gst_navigation_event_parse_mouse_scroll_event",
+  "gst_navigation_event_parse_touch_event",
+  "gst_navigation_event_parse_touch_up_event",
+  "gst_navigation_event_set_coordinates",
   "gst_navigation_message_get_type",
   "gst_navigation_message_new_angles_changed",
   "gst_navigation_message_new_commands_changed",
   "gst_navigation_message_get_type",
   "gst_navigation_message_new_angles_changed",
   "gst_navigation_message_new_commands_changed",
   "gst_navigation_query_set_commandsv",
   "gst_navigation_send_command",
   "gst_navigation_send_event",
   "gst_navigation_query_set_commandsv",
   "gst_navigation_send_command",
   "gst_navigation_send_event",
+  "gst_navigation_send_event_simple",
   "gst_navigation_send_key_event",
   "gst_navigation_send_mouse_event",
   "gst_navigation_send_mouse_scroll_event",
   "gst_navigation_send_key_event",
   "gst_navigation_send_mouse_event",
   "gst_navigation_send_mouse_scroll_event",
   "gst_query_new_scheduling",
   "gst_query_new_seeking",
   "gst_query_new_segment",
   "gst_query_new_scheduling",
   "gst_query_new_seeking",
   "gst_query_new_segment",
+  "gst_query_new_selectable",
   "gst_query_new_uri",
   "gst_query_parse_accept_caps",
   "gst_query_parse_accept_caps_result",
   "gst_query_new_uri",
   "gst_query_parse_accept_caps",
   "gst_query_parse_accept_caps_result",
   "gst_query_parse_scheduling",
   "gst_query_parse_seeking",
   "gst_query_parse_segment",
   "gst_query_parse_scheduling",
   "gst_query_parse_seeking",
   "gst_query_parse_segment",
+  "gst_query_parse_selectable",
   "gst_query_parse_uri",
   "gst_query_parse_uri_redirection",
   "gst_query_parse_uri_redirection_permanent",
   "gst_query_parse_uri",
   "gst_query_parse_uri_redirection",
   "gst_query_parse_uri_redirection_permanent",
   "gst_query_set_scheduling",
   "gst_query_set_seeking",
   "gst_query_set_segment",
   "gst_query_set_scheduling",
   "gst_query_set_seeking",
   "gst_query_set_segment",
+  "gst_query_set_selectable",
   "gst_query_set_uri",
   "gst_query_set_uri_redirection",
   "gst_query_set_uri_redirection_permanent",
   "gst_query_set_uri",
   "gst_query_set_uri_redirection",
   "gst_query_set_uri_redirection_permanent",
   "gst_rtsp_context_get_type",
   "gst_rtsp_context_pop_current",
   "gst_rtsp_context_push_current",
   "gst_rtsp_context_get_type",
   "gst_rtsp_context_pop_current",
   "gst_rtsp_context_push_current",
+  "gst_rtsp_context_set_token",
   "gst_rtsp_extension_after_send",
   "gst_rtsp_extension_before_send",
   "gst_rtsp_extension_configure_stream",
   "gst_rtsp_extension_after_send",
   "gst_rtsp_extension_before_send",
   "gst_rtsp_extension_configure_stream",
   "gst_structure_get_double",
   "gst_structure_get_enum",
   "gst_structure_get_field_type",
   "gst_structure_get_double",
   "gst_structure_get_enum",
   "gst_structure_get_field_type",
+  "gst_structure_get_flags",
   "gst_structure_get_flagset",
   "gst_structure_get_fraction",
   "gst_structure_get_int",
   "gst_structure_get_flagset",
   "gst_structure_get_fraction",
   "gst_structure_get_int",
   "gst_util_uint64_scale_int_ceil",
   "gst_util_uint64_scale_int_round",
   "gst_util_uint64_scale_round",
   "gst_util_uint64_scale_int_ceil",
   "gst_util_uint64_scale_int_round",
   "gst_util_uint64_scale_round",
+  "gst_va_allocator_alloc",
+  "gst_va_allocator_flush",
+  "gst_va_allocator_get_format",
+  "gst_va_allocator_new",
+  "gst_va_allocator_prepare_buffer",
+  "gst_va_allocator_set_format",
+  "gst_va_allocator_set_hacks",
+  "gst_va_allocator_setup_buffer",
+  "gst_va_buffer_create_aux_surface",
+  "gst_va_buffer_get_aux_surface",
+  "gst_va_buffer_get_surface",
+  "gst_va_context_query",
+  "gst_va_display_drm_new_from_path",
+  "gst_va_display_get_implementation",
+  "gst_va_display_get_va_dpy",
+  "gst_va_display_initialize",
+  "gst_va_display_wrapped_new",
+  "gst_va_dmabuf_allocator_flush",
+  "gst_va_dmabuf_allocator_get_format",
+  "gst_va_dmabuf_allocator_new",
+  "gst_va_dmabuf_allocator_prepare_buffer",
+  "gst_va_dmabuf_allocator_set_format",
+  "gst_va_dmabuf_allocator_setup_buffer",
+  "gst_va_dmabuf_memories_setup",
+  "gst_va_element_propagate_display_context",
+  "gst_va_ensure_element_data",
+  "gst_va_handle_context_query",
+  "gst_va_handle_set_context",
+  "gst_va_memory_get_surface",
+  "gst_va_pool_new",
+  "gst_va_pool_new_with_config",
+  "gst_va_pool_requires_video_meta",
   "gst_validate_abort",
   "gst_validate_action_get_clocktime",
   "gst_validate_action_get_scenario",
   "gst_validate_abort",
   "gst_validate_action_get_clocktime",
   "gst_validate_action_get_scenario",
   "gst_validate_report_add_message",
   "gst_validate_report_add_repeated_report",
   "gst_validate_report_check_abort",
   "gst_validate_report_add_message",
   "gst_validate_report_add_repeated_report",
   "gst_validate_report_check_abort",
+  "gst_validate_report_get_dotfile_name",
+  "gst_validate_report_get_issue",
   "gst_validate_report_get_issue_id",
   "gst_validate_report_get_issue_id",
+  "gst_validate_report_get_level",
+  "gst_validate_report_get_message",
+  "gst_validate_report_get_reporter",
+  "gst_validate_report_get_reporter_name",
+  "gst_validate_report_get_reporting_level",
+  "gst_validate_report_get_timestamp",
+  "gst_validate_report_get_trace",
   "gst_validate_report_init",
   "gst_validate_report_level_from_name",
   "gst_validate_report_level_get_name",
   "gst_validate_report_init",
   "gst_validate_report_level_from_name",
   "gst_validate_report_level_get_name",
   "gst_video_color_matrix_to_iso",
   "gst_video_color_primaries_from_iso",
   "gst_video_color_primaries_get_info",
   "gst_video_color_matrix_to_iso",
   "gst_video_color_primaries_from_iso",
   "gst_video_color_primaries_get_info",
+  "gst_video_color_primaries_is_equivalent",
   "gst_video_color_primaries_to_iso",
   "gst_video_color_range_offsets",
   "gst_video_color_transfer_decode",
   "gst_video_color_primaries_to_iso",
   "gst_video_color_range_offsets",
   "gst_video_color_transfer_decode",
   "gst_video_color_transfer_to_iso",
   "gst_video_colorimetry_from_string",
   "gst_video_colorimetry_is_equal",
   "gst_video_color_transfer_to_iso",
   "gst_video_colorimetry_from_string",
   "gst_video_colorimetry_is_equal",
+  "gst_video_colorimetry_is_equivalent",
   "gst_video_colorimetry_matches",
   "gst_video_colorimetry_to_string",
   "gst_video_content_light_level_add_to_caps",
   "gst_video_colorimetry_matches",
   "gst_video_colorimetry_to_string",
   "gst_video_content_light_level_add_to_caps",
   "gst_video_converter_frame_finish",
   "gst_video_converter_free",
   "gst_video_converter_get_config",
   "gst_video_converter_frame_finish",
   "gst_video_converter_free",
   "gst_video_converter_get_config",
+  "gst_video_converter_get_in_info",
+  "gst_video_converter_get_out_info",
   "gst_video_converter_new",
   "gst_video_converter_new_with_pool",
   "gst_video_converter_set_config",
   "gst_video_converter_new",
   "gst_video_converter_new_with_pool",
   "gst_video_converter_set_config",
   "gst_video_format_get_info",
   "gst_video_format_get_palette",
   "gst_video_format_info_component",
   "gst_video_format_get_info",
   "gst_video_format_get_palette",
   "gst_video_format_info_component",
+  "gst_video_format_info_extrapolate_stride",
+  "gst_video_format_info_get_tile_sizes",
   "gst_video_format_to_fourcc",
   "gst_video_format_to_string",
   "gst_video_formats_raw",
   "gst_video_format_to_fourcc",
   "gst_video_format_to_string",
   "gst_video_formats_raw",
   "gst_video_info_to_caps",
   "gst_video_interlace_mode_from_string",
   "gst_video_interlace_mode_to_string",
   "gst_video_info_to_caps",
   "gst_video_interlace_mode_from_string",
   "gst_video_interlace_mode_to_string",
+  "gst_video_is_common_aspect_ratio",
   "gst_video_make_raw_caps",
   "gst_video_make_raw_caps_with_features",
   "gst_video_mastering_display_info_add_to_caps",
   "gst_video_make_raw_caps",
   "gst_video_make_raw_caps_with_features",
   "gst_video_mastering_display_info_add_to_caps",
   "gst_video_scaler_horizontal",
   "gst_video_scaler_new",
   "gst_video_scaler_vertical",
   "gst_video_scaler_horizontal",
   "gst_video_scaler_new",
   "gst_video_scaler_vertical",
+  "gst_video_sei_user_data_unregistered_meta_api_get_type",
+  "gst_video_sei_user_data_unregistered_meta_get_info",
+  "gst_video_sei_user_data_unregistered_parse_precision_time_stamp",
   "gst_video_sink_center_rect",
   "gst_video_tile_get_index",
   "gst_video_time_code_add_frames",
   "gst_video_sink_center_rect",
   "gst_video_tile_get_index",
   "gst_video_time_code_add_frames",
   "gst_webrtc_dtls_transport_set_transport",
   "gst_webrtc_error_quark",
   "gst_webrtc_ice_add_candidate",
   "gst_webrtc_dtls_transport_set_transport",
   "gst_webrtc_error_quark",
   "gst_webrtc_ice_add_candidate",
+  "gst_webrtc_ice_add_stream",
   "gst_webrtc_ice_add_turn_server",
   "gst_webrtc_ice_add_turn_server",
+  "gst_webrtc_ice_candidate_stats_copy",
+  "gst_webrtc_ice_candidate_stats_free",
+  "gst_webrtc_ice_find_transport",
   "gst_webrtc_ice_gather_candidates",
   "gst_webrtc_ice_get_is_controller",
   "gst_webrtc_ice_get_local_candidates",
   "gst_webrtc_ice_get_remote_candidates",
   "gst_webrtc_ice_gather_candidates",
   "gst_webrtc_ice_get_is_controller",
   "gst_webrtc_ice_get_local_candidates",
   "gst_webrtc_ice_get_remote_candidates",
+  "gst_webrtc_ice_get_selected_pair",
   "gst_webrtc_ice_get_stun_server",
   "gst_webrtc_ice_get_turn_server",
   "gst_webrtc_ice_set_force_relay",
   "gst_webrtc_ice_get_stun_server",
   "gst_webrtc_ice_get_turn_server",
   "gst_webrtc_ice_set_force_relay",
   "gtkglsink",
   "gtkglsink:rotate-method",
   "gtksink",
   "gtkglsink",
   "gtkglsink:rotate-method",
   "gtksink",
+  "gtkwaylandsink",
+  "gtkwaylandsink:rotate-method",
+  "gtkwaylandsink:widget",
   "h-263-encoder-cmp-func",
   "h-263-encoder-cmp-func::bit",
   "h-263-encoder-cmp-func::chroma",
   "h-263-encoder-cmp-func",
   "h-263-encoder-cmp-func::bit",
   "h-263-encoder-cmp-func::chroma",
   "h264parse",
   "h264parse:config-interval",
   "h264parse:update-timecode",
   "h264parse",
   "h264parse:config-interval",
   "h264parse:update-timecode",
+  "h264timestamper",
   "h265parse",
   "h265parse:config-interval",
   "h265parse",
   "h265parse:config-interval",
+  "h265timestamper",
   "handdetect",
   "handdetect:ROI-HEIGHT",
   "handdetect:ROI-WIDTH",
   "handdetect",
   "handdetect:ROI-HEIGHT",
   "handdetect:ROI-WIDTH",
   "hdv1394src:port",
   "hdv1394src:use-avc",
   "hlsdemux",
   "hdv1394src:port",
   "hdv1394src:use-avc",
   "hlsdemux",
+  "hlsdemux2",
+  "hlsdemux2:start-bitrate",
   "hlssink",
   "hlssink2",
   "hlssink2::delete-fragment",
   "hlssink",
   "hlssink2",
   "hlssink2::delete-fragment",
   "kmssink:display-height",
   "kmssink:display-width",
   "kmssink:driver-name",
   "kmssink:display-height",
   "kmssink:display-width",
   "kmssink:driver-name",
+  "kmssink:fd",
   "kmssink:force-modesetting",
   "kmssink:plane-id",
   "kmssink:plane-properties",
   "kmssink:force-modesetting",
   "kmssink:plane-id",
   "kmssink:plane-properties",
   "msmpeg4v3-encoder-rc-strategy",
   "msmpeg4v3-encoder-rc-strategy::ffmpeg",
   "mssdemux",
   "msmpeg4v3-encoder-rc-strategy",
   "msmpeg4v3-encoder-rc-strategy::ffmpeg",
   "mssdemux",
+  "mssdemux2",
   "mssdemux:max-queue-size-buffers",
   "mulawdec",
   "mulawenc",
   "mssdemux:max-queue-size-buffers",
   "mulawdec",
   "mulawenc",
   "mxfmux",
   "name",
   "navigationtest",
   "mxfmux",
   "name",
   "navigationtest",
+  "navigationtest:display-mouse",
+  "navigationtest:display-touch",
   "navseek",
   "navseek:hold-eos",
   "navseek:seek-offset",
   "navseek",
   "navseek:hold-eos",
   "navseek:seek-offset",
   "plugin-a52dec",
   "plugin-aasink",
   "plugin-accurip",
   "plugin-a52dec",
   "plugin-aasink",
   "plugin-accurip",
+  "plugin-adaptivedemux2",
   "plugin-adder",
   "plugin-adpcmdec",
   "plugin-adpcmenc",
   "plugin-adder",
   "plugin-adpcmdec",
   "plugin-adpcmenc",
   "plugin-alpha",
   "plugin-alphacolor",
   "plugin-alsa",
   "plugin-alpha",
   "plugin-alphacolor",
   "plugin-alsa",
+  "plugin-amfcodec",
   "plugin-amrnb",
   "plugin-amrwbdec",
   "plugin-aom",
   "plugin-amrnb",
   "plugin-amrwbdec",
   "plugin-aom",
   "plugin-chromaprint",
   "plugin-closedcaption",
   "plugin-codecalpha",
   "plugin-chromaprint",
   "plugin-closedcaption",
   "plugin-codecalpha",
+  "plugin-codectimestamper",
   "plugin-coloreffects",
   "plugin-colormanagement",
   "plugin-compositor",
   "plugin-coloreffects",
   "plugin-colormanagement",
   "plugin-compositor",
   "plugin-gs",
   "plugin-gsm",
   "plugin-gtk",
   "plugin-gs",
   "plugin-gsm",
   "plugin-gtk",
+  "plugin-gtkwayland",
   "plugin-hls",
   "plugin-icydemux",
   "plugin-id3demux",
   "plugin-hls",
   "plugin-icydemux",
   "plugin-id3demux",
   "plugin-pulseaudio",
   "plugin-qmlgl",
   "plugin-qroverlay",
   "plugin-pulseaudio",
   "plugin-qmlgl",
   "plugin-qroverlay",
+  "plugin-qsv",
   "plugin-rawparse",
   "plugin-realmedia",
   "plugin-removesilence",
   "plugin-rawparse",
   "plugin-realmedia",
   "plugin-removesilence",
   "plugin-video4linux2",
   "plugin-videobox",
   "plugin-videoconvert",
   "plugin-video4linux2",
   "plugin-videobox",
   "plugin-videoconvert",
+  "plugin-videoconvertscale",
   "plugin-videocrop",
   "plugin-videofilter",
   "plugin-videofiltersbad",
   "plugin-videocrop",
   "plugin-videofilter",
   "plugin-videofiltersbad",
   "rfbsrc:password",
   "rfbsrc:port",
   "rfbsrc:shared",
   "rfbsrc:password",
   "rfbsrc:port",
   "rfbsrc:shared",
+  "rfbsrc:uri",
   "rfbsrc:use-copyrect",
   "rfbsrc:version",
   "rfbsrc:view-only",
   "rfbsrc:use-copyrect",
   "rfbsrc:version",
   "rfbsrc:view-only",
   "rtpbin::request-rtp-decoder",
   "rtpbin::request-rtp-encoder",
   "rtpbin::reset-sync",
   "rtpbin::request-rtp-decoder",
   "rtpbin::request-rtp-encoder",
   "rtpbin::reset-sync",
+  "rtpbin:add-reference-timestamp-meta",
   "rtpbin:autoremove",
   "rtpbin:buffer-mode",
   "rtpbin:do-lost",
   "rtpbin:autoremove",
   "rtpbin:buffer-mode",
   "rtpbin:do-lost",
   "rtpbin:max-streams",
   "rtpbin:max-ts-offset",
   "rtpbin:max-ts-offset-adjustment",
   "rtpbin:max-streams",
   "rtpbin:max-ts-offset",
   "rtpbin:max-ts-offset-adjustment",
+  "rtpbin:min-ts-offset",
   "rtpbin:ntp-sync",
   "rtpbin:ntp-time-source",
   "rtpbin:rfc7273-sync",
   "rtpbin:ntp-sync",
   "rtpbin:ntp-time-source",
   "rtpbin:rfc7273-sync",
   "rtpbin:rtcp-sync-send-time",
   "rtpbin:rtp-profile",
   "rtpbin:sdes",
   "rtpbin:rtcp-sync-send-time",
   "rtpbin:rtp-profile",
   "rtpbin:sdes",
+  "rtpbin:ts-offset-smoothing-factor",
   "rtpbin:use-pipeline-clock",
   "rtpbvdepay",
   "rtpbvpay",
   "rtpbin:use-pipeline-clock",
   "rtpbvdepay",
   "rtpbvpay",
   "rtphdrextclientaudiolevel",
   "rtphdrextclientaudiolevel:vad",
   "rtphdrextcolorspace",
   "rtphdrextclientaudiolevel",
   "rtphdrextclientaudiolevel:vad",
   "rtphdrextcolorspace",
+  "rtphdrextmid",
+  "rtphdrextmid:mid",
+  "rtphdrextntp64",
+  "rtphdrextntp64:every-packet",
+  "rtphdrextntp64:interval",
+  "rtphdrextrepairedstreamid",
+  "rtphdrextrepairedstreamid:rid",
+  "rtphdrextstreamid",
+  "rtphdrextstreamid:rid",
   "rtphdrexttwcc",
   "rtphdrexttwcc:n-streams",
   "rtpilbcdepay",
   "rtphdrexttwcc",
   "rtphdrexttwcc:n-streams",
   "rtpilbcdepay",
   "rtpjitterbuffer::on-npt-stop",
   "rtpjitterbuffer::request-pt-map",
   "rtpjitterbuffer::set-active",
   "rtpjitterbuffer::on-npt-stop",
   "rtpjitterbuffer::request-pt-map",
   "rtpjitterbuffer::set-active",
+  "rtpjitterbuffer:add-reference-timestamp-meta",
   "rtpjitterbuffer:do-lost",
   "rtpjitterbuffer:do-retransmission",
   "rtpjitterbuffer:drop-messages-interval",
   "rtpjitterbuffer:do-lost",
   "rtpjitterbuffer:do-retransmission",
   "rtpjitterbuffer:drop-messages-interval",
   "rtpjitterbuffer:rtx-retry-timeout",
   "rtpjitterbuffer:rtx-stats-timeout",
   "rtpjitterbuffer:stats",
   "rtpjitterbuffer:rtx-retry-timeout",
   "rtpjitterbuffer:rtx-stats-timeout",
   "rtpjitterbuffer:stats",
+  "rtpjitterbuffer:sync-interval",
   "rtpjitterbuffer:ts-offset",
   "rtpjpegdepay",
   "rtpjpegpay",
   "rtpjitterbuffer:ts-offset",
   "rtpjpegdepay",
   "rtpjpegpay",
   "rtponviftimestamp:ntp-offset",
   "rtponviftimestamp:set-e-bit",
   "rtponviftimestamp:set-t-bit",
   "rtponviftimestamp:ntp-offset",
   "rtponviftimestamp:set-e-bit",
   "rtponviftimestamp:set-t-bit",
+  "rtponviftimestamp:use-reference-timestamps",
   "rtpopusdepay",
   "rtpopuspay",
   "rtpopuspay:dtx",
   "rtpopusdepay",
   "rtpopuspay",
   "rtpopuspay:dtx",
   "rtprtxqueue:max-size-time",
   "rtprtxqueue:requests",
   "rtprtxreceive",
   "rtprtxqueue:max-size-time",
   "rtprtxqueue:requests",
   "rtprtxreceive",
+  "rtprtxreceive::add-extension",
+  "rtprtxreceive::clear-extensions",
   "rtprtxreceive:num-rtx-assoc-packets",
   "rtprtxreceive:num-rtx-packets",
   "rtprtxreceive:num-rtx-requests",
   "rtprtxreceive:payload-type-map",
   "rtprtxreceive:num-rtx-assoc-packets",
   "rtprtxreceive:num-rtx-packets",
   "rtprtxreceive:num-rtx-requests",
   "rtprtxreceive:payload-type-map",
+  "rtprtxreceive:ssrc-map",
   "rtprtxsend",
   "rtprtxsend",
+  "rtprtxsend::add-extension",
+  "rtprtxsend::clear-extensions",
   "rtprtxsend:clock-rate-map",
   "rtprtxsend:max-size-packets",
   "rtprtxsend:max-size-time",
   "rtprtxsend:clock-rate-map",
   "rtprtxsend:max-size-packets",
   "rtprtxsend:max-size-time",
   "rtspsrc::request-rtcp-key",
   "rtspsrc::select-stream",
   "rtspsrc::set-parameter",
   "rtspsrc::request-rtcp-key",
   "rtspsrc::select-stream",
   "rtspsrc::set-parameter",
+  "rtspsrc:add-reference-timestamp-meta",
   "rtspsrc:backchannel",
   "rtspsrc:buffer-mode",
   "rtspsrc:connection-speed",
   "rtspsrc:backchannel",
   "rtspsrc:buffer-mode",
   "rtspsrc:connection-speed",
   "shout2send:port",
   "shout2send:protocol",
   "shout2send:public",
   "shout2send:port",
   "shout2send:protocol",
   "shout2send:public",
+  "shout2send:send-title-info",
   "shout2send:streamname",
   "shout2send:timeout",
   "shout2send:url",
   "shout2send:streamname",
   "shout2send:timeout",
   "shout2send:url",
-  "shout2send:username",
-  "shout2send:send-title-info",
   "shout2send:user-agent",
   "shout2send:user-agent",
+  "shout2send:username",
   "siddec",
   "siddec:blocksize",
   "siddec:clock",
   "siddec",
   "siddec:blocksize",
   "siddec:clock",
   "testsink:md5",
   "testsink:timestamp-deviation",
   "testsrcbin",
   "testsink:md5",
   "testsink:timestamp-deviation",
   "testsrcbin",
+  "testsrcbin:expose-sources-async",
   "testsrcbin:stream-types",
   "textoverlay",
   "textrender",
   "testsrcbin:stream-types",
   "textoverlay",
   "textrender",
   "timeoverlay",
   "timeoverlay:datetime-epoch",
   "timeoverlay:datetime-format",
   "timeoverlay",
   "timeoverlay:datetime-epoch",
   "timeoverlay:datetime-format",
+  "timeoverlay:reference-timestamp-caps",
   "timeoverlay:show-times-as-dates",
   "timeoverlay:time-mode",
   "tinyalsasink",
   "timeoverlay:show-times-as-dates",
   "timeoverlay:time-mode",
   "tinyalsasink",
   "uridecodebin:download",
   "uridecodebin:expose-all-streams",
   "uridecodebin:force-sw-decoders",
   "uridecodebin:download",
   "uridecodebin:expose-all-streams",
   "uridecodebin:force-sw-decoders",
+  "uridecodebin:post-stream-topology",
   "uridecodebin:ring-buffer-max-size",
   "uridecodebin:source",
   "uridecodebin:subtitle-encoding",
   "uridecodebin:ring-buffer-max-size",
   "uridecodebin:source",
   "uridecodebin:subtitle-encoding",
   "v4l2src::prepare-format",
   "v4l2src:brightness",
   "v4l2src:contrast",
   "v4l2src::prepare-format",
   "v4l2src:brightness",
   "v4l2src:contrast",
+  "v4l2src:crop-bottom",
+  "v4l2src:crop-bounds",
+  "v4l2src:crop-left",
+  "v4l2src:crop-right",
+  "v4l2src:crop-top",
   "v4l2src:device",
   "v4l2src:device-fd",
   "v4l2src:device-name",
   "v4l2src:device",
   "v4l2src:device-fd",
   "v4l2src:device-name",
   "videoconvert:matrix-mode",
   "videoconvert:n-threads",
   "videoconvert:primaries-mode",
   "videoconvert:matrix-mode",
   "videoconvert:n-threads",
   "videoconvert:primaries-mode",
+  "videoconvertscale",
+  "videoconvertscale:add-borders",
+  "videoconvertscale:alpha-mode",
+  "videoconvertscale:alpha-value",
+  "videoconvertscale:chroma-mode",
+  "videoconvertscale:chroma-resampler",
+  "videoconvertscale:dither",
+  "videoconvertscale:dither-quantization",
+  "videoconvertscale:envelope",
+  "videoconvertscale:gamma-mode",
+  "videoconvertscale:matrix-mode",
+  "videoconvertscale:method",
+  "videoconvertscale:n-threads",
+  "videoconvertscale:primaries-mode",
+  "videoconvertscale:sharpen",
+  "videoconvertscale:sharpness",
   "videocrop",
   "videocrop:bottom",
   "videocrop:left",
   "videocrop",
   "videocrop:bottom",
   "videocrop:left",
   "videorate:drop-only",
   "videorate:duplicate",
   "videorate:in",
   "videorate:drop-only",
   "videorate:duplicate",
   "videorate:in",
+  "videorate:max-closing-segment-duplication-duration",
   "videorate:max-duplication-time",
   "videorate:max-rate",
   "videorate:new-pref",
   "videorate:max-duplication-time",
   "videorate:max-rate",
   "videorate:new-pref",
   "vulkancolorconvert",
   "vulkandownload",
   "vulkanimageidentity",
   "vulkancolorconvert",
   "vulkandownload",
   "vulkanimageidentity",
+  "vulkanoverlaycompositor",
+  "vulkanshaderspv",
+  "vulkanshaderspv:fragment",
+  "vulkanshaderspv:fragment-location",
+  "vulkanshaderspv:vertex",
+  "vulkanshaderspv:vertex-location",
   "vulkansink",
   "vulkansink:device",
   "vulkansink:force-aspect-ratio",
   "vulkansink",
   "vulkansink:device",
   "vulkansink:force-aspect-ratio",
   "waylandsink",
   "waylandsink:display",
   "waylandsink:fullscreen",
   "waylandsink",
   "waylandsink:display",
   "waylandsink:fullscreen",
+  "waylandsink:render-rectangle",
+  "waylandsink:rotate-method",
   "webmmux",
   "webpdec",
   "webpdec:bypass-filtering",
   "webmmux",
   "webpdec",
   "webpdec:bypass-filtering",
   "webrtcbin::on-ice-candidate",
   "webrtcbin::on-negotiation-needed",
   "webrtcbin::on-new-transceiver",
   "webrtcbin::on-ice-candidate",
   "webrtcbin::on-negotiation-needed",
   "webrtcbin::on-new-transceiver",
+  "webrtcbin::prepare-data-channel",
+  "webrtcbin::request-aux-sender",
   "webrtcbin::set-local-description",
   "webrtcbin::set-remote-description",
   "webrtcbin:bundle-policy",
   "webrtcbin::set-local-description",
   "webrtcbin::set-remote-description",
   "webrtcbin:bundle-policy",
   "zbar:message",
   "zebrastripe",
   "zebrastripe:threshold"
   "zbar:message",
   "zebrastripe",
   "zebrastripe:threshold"
-]
+]
\ No newline at end of file
index 1c7021b..400b45f 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-editing-services.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index e970304..84af768 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-editing-services 1.20.0.
+This is GStreamer gst-editing-services 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 077c182..453f34a 100644 (file)
@@ -32,6 +32,16 @@ GStreamer library for creating audio and video editors
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-editing-services/gst-editing-services-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 79caed7..02e6735 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-editing-services', 'c',
 project('gst-editing-services', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index a924af9..6cb4f64 100644 (file)
@@ -1,4 +1,4 @@
-project('gst-examples', 'c', version : '1.21.0.1', license : 'LGPL')
+project('gst-examples', 'c', version : '1.21.1', license : 'LGPL')
 
 cc = meson.get_compiler('c')
 m_dep = cc.find_library('m', required : false)
 
 cc = meson.get_compiler('c')
 m_dep = cc.find_library('m', required : false)
index f37b549..679e4fb 100644 (file)
@@ -1 +1 @@
-project('gst-integration-testsuites', [], version: '1.21.0.1', meson_version : '>= 0.62', license: 'LGPL')
+project('gst-integration-testsuites', [], version: '1.21.1', meson_version : '>= 0.62', license: 'LGPL')
index ed6c094..57aac8f 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-libav.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-29 12:42:21 +0100  Tim-Philipp Müller <tim@centricular.com>
 
        * ext/libav/gstavauddec.c:
 2022-09-29 12:42:21 +0100  Tim-Philipp Müller <tim@centricular.com>
 
        * ext/libav/gstavauddec.c:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index dc40f3c..bff3a1b 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-libav 1.20.0.
+This is GStreamer gst-libav 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 50f7d81..75806fe 100644 (file)
@@ -34,6 +34,16 @@ colorspace conversion elements.
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 661de7d..41fa130 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-libav', 'c',
 project('gst-libav', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index b571f0b..00ae1f1 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-omx.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 3d51f2e..c15ae00 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-omx 1.20.0.
+This is GStreamer gst-omx 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 9603983..411afbf 100644 (file)
@@ -33,6 +33,16 @@ a basic collection of elements
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 05c4b68..9f9bfe0 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-omx', 'c',
 project('gst-omx', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index 78e182d..f578159 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-bad.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-29 14:34:31 +0300  Sebastian Dröge <sebastian@centricular.com>
 
        * gst/gaudieffects/gstgaussblur.c:
 2022-09-29 14:34:31 +0300  Sebastian Dröge <sebastian@centricular.com>
 
        * gst/gaudieffects/gstgaussblur.c:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 2244892..7561065 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-plugins-bad 1.20.0.
+This is GStreamer gst-plugins-bad 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 3ce24dd..b3c89e1 100644 (file)
@@ -35,6 +35,16 @@ real live maintainer, or some actual wide use.
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 8901992..3b8cdbe 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-plugins-bad', 'c', 'cpp',
 project('gst-plugins-bad', 'c', 'cpp',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index dbef781..9b1d097 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-base.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-10-01 02:33:49 +1000  Jan Schmidt <jan@centricular.com>
 
        * gst/playback/gstplaysink.c:
 2022-10-01 02:33:49 +1000  Jan Schmidt <jan@centricular.com>
 
        * gst/playback/gstplaysink.c:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 7772ac9..5f5444d 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-plugins-base 1.20.0.
+This is GStreamer gst-plugins-base 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 38991a5..0a59d41 100644 (file)
@@ -36,6 +36,16 @@ A wide range of video and audio decoders, encoders, and filters are included.
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 42e2b29..b6c11cf 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-plugins-base', 'c',
 project('gst-plugins-base', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index d0e9ac9..0dd3ddd 100644 (file)
@@ -1,3 +1,19 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * docs/gst_plugins_cache.json:
+       * gst-plugins-good.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-07-27 11:19:50 +0200  Edward Hervey <edward@centricular.com>
 
        * gst/isomp4/qtdemux.c:
 2022-07-27 11:19:50 +0200  Edward Hervey <edward@centricular.com>
 
        * gst/isomp4/qtdemux.c:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index e038f04..c6bb6ca 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-plugins-good 1.20.0.
+This is GStreamer gst-plugins-good 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 80b8db2..216033c 100644 (file)
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.21.0.1 FLV muxer",
+                        "default": "GStreamer 1.21.1 FLV muxer",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.21.0.1 FLV muxer",
+                        "default": "GStreamer 1.21.1 FLV muxer",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.21.0.1",
+                        "default": "GStreamer/1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.21.0.1",
+                        "default": "GStreamer 1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer souphttpsrc 1.21.0.1 ",
+                        "default": "GStreamer souphttpsrc 1.21.1 ",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
index 232c33c..4be8425 100644 (file)
@@ -34,6 +34,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library).
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index e3a1b04..dd8eadc 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-plugins-good', 'c',
 project('gst-plugins-good', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index a3f4c40..54b8382 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-ugly.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index e44e809..76bc24b 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-plugins-ugly 1.20.0.
+This is GStreamer gst-plugins-ugly 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 2aa374b..198d096 100644 (file)
@@ -35,6 +35,16 @@ might be widely known to present patent problems.
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 4bb67f4..03fc6c9 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-plugins-ugly', 'c',
 project('gst-plugins-ugly', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index 3d9374b..7009921 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-python.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 5bb5fdd..3521c87 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-python 1.20.0.
+This is GStreamer gst-python 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 95c22b0..667e30b 100644 (file)
@@ -32,6 +32,16 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 3def112..2748296 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-python', 'c',
 project('gst-python', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
index 274071d..914c9fe 100644 (file)
@@ -1,3 +1,19 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * docs/plugins/gst_plugins_cache.json:
+       * gst-rtsp-server.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 72467c7..521e2ec 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gst-rtsp-server 1.20.0.
+This is GStreamer gst-rtsp-server 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 4d08a04..d94ee52 100644 (file)
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.21.0.1",
+                        "default": "GStreamer/1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
index cac5f62..642e928 100644 (file)
@@ -32,6 +32,16 @@ RTSP server library based on GStreamer
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index eb86469..d613302 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-rtsp-server', 'c',
 project('gst-rtsp-server', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : ['warning_level=1', 'buildtype=debugoptimized'])
 
   meson_version : '>= 0.62',
   default_options : ['warning_level=1', 'buildtype=debugoptimized'])
 
index ba1ed0f..99ea048 100644 (file)
@@ -1,4 +1,4 @@
-project('gstreamer-sharp', ['cs', 'c'], version: '1.21.0.1',
+project('gstreamer-sharp', ['cs', 'c'], version: '1.21.1',
     meson_version : '>= 0.62', license: 'LGPL')
 
 if host_machine.system() == 'osx'
     meson_version : '>= 0.62', license: 'LGPL')
 
 if host_machine.system() == 'osx'
index d2039ae..aa16a53 100644 (file)
@@ -17,9 +17,9 @@ namespace Gst.PbUtils {
                public const string ENCODING_CATEGORY_ONLINE_SERVICE = @"online-service";
                public const string ENCODING_CATEGORY_STORAGE_EDITING = @"storage-editing";
                public const int PLUGINS_BASE_VERSION_MAJOR = 1;
                public const string ENCODING_CATEGORY_ONLINE_SERVICE = @"online-service";
                public const string ENCODING_CATEGORY_STORAGE_EDITING = @"storage-editing";
                public const int PLUGINS_BASE_VERSION_MAJOR = 1;
-               public const int PLUGINS_BASE_VERSION_MICRO = 0;
+               public const int PLUGINS_BASE_VERSION_MICRO = 1;
                public const int PLUGINS_BASE_VERSION_MINOR = 21;
                public const int PLUGINS_BASE_VERSION_MINOR = 21;
-               public const int PLUGINS_BASE_VERSION_NANO = 1;
+               public const int PLUGINS_BASE_VERSION_NANO = 0;
 #endregion
        }
 }
 #endregion
        }
 }
index 9c9ce59..93a795e 100644 (file)
@@ -170,9 +170,9 @@ namespace Gst {
                public const int VALUE_LESS_THAN = -1;
                public const int VALUE_UNORDERED = 2;
                public const int VERSION_MAJOR = 1;
                public const int VALUE_LESS_THAN = -1;
                public const int VALUE_UNORDERED = 2;
                public const int VERSION_MAJOR = 1;
-               public const int VERSION_MICRO = 0;
+               public const int VERSION_MICRO = 1;
                public const int VERSION_MINOR = 21;
                public const int VERSION_MINOR = 21;
-               public const int VERSION_NANO = 1;
+               public const int VERSION_NANO = 0;
 #endregion
        }
 }
 #endregion
        }
 }
index a4c9b3a..0ad5e1f 100644 (file)
       <constant value="1" ctype="gint" gtype="gint" name="VALUE_GREATER_THAN" />
       <constant value="-1" ctype="gint" gtype="gint" name="VALUE_LESS_THAN" />
       <constant value="2" ctype="gint" gtype="gint" name="VALUE_UNORDERED" />
       <constant value="1" ctype="gint" gtype="gint" name="VALUE_GREATER_THAN" />
       <constant value="-1" ctype="gint" gtype="gint" name="VALUE_LESS_THAN" />
       <constant value="2" ctype="gint" gtype="gint" name="VALUE_UNORDERED" />
-      <constant value="1" ctype="gint" gtype="gint"      name="VERSION_MAJOR" />
-      <constant value="0" ctype="gint" gtype="gint"      name="VERSION_MICRO" />
-      <constant value="21" ctype="gint" gtype="gint"      name="VERSION_MINOR" />
-      <constant value="1" ctype="gint" gtype="gint"      name="VERSION_NANO" />
+      <constant value="1" ctype="gint" gtype="gint"       name="VERSION_MAJOR" />
+      <constant value="1" ctype="gint" gtype="gint"       name="VERSION_MICRO" />
+      <constant value="21" ctype="gint" gtype="gint"       name="VERSION_MINOR" />
+      <constant value="0" ctype="gint" gtype="gint"       name="VERSION_NANO" />
     </object>
     <class name="Parse" cname="GstParse" disable_void_ctor="1">
       <method name="ParseBinFromDescription" cname="gst_parse_bin_from_description" shared="true">
     </object>
     <class name="Parse" cname="GstParse" disable_void_ctor="1">
       <method name="ParseBinFromDescription" cname="gst_parse_bin_from_description" shared="true">
       <constant value="file-extension" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_FILE_EXTENSION" />
       <constant value="online-service" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_ONLINE_SERVICE" />
       <constant value="storage-editing" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_STORAGE_EDITING" />
       <constant value="file-extension" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_FILE_EXTENSION" />
       <constant value="online-service" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_ONLINE_SERVICE" />
       <constant value="storage-editing" ctype="gchar*" gtype="gchar*" name="ENCODING_CATEGORY_STORAGE_EDITING" />
-      <constant value="1" ctype="gint" gtype="gint"      name="PLUGINS_BASE_VERSION_MAJOR" />
-      <constant value="0" ctype="gint" gtype="gint"      name="PLUGINS_BASE_VERSION_MICRO" />
-      <constant value="21" ctype="gint" gtype="gint"      name="PLUGINS_BASE_VERSION_MINOR" />
-      <constant value="1" ctype="gint" gtype="gint"      name="PLUGINS_BASE_VERSION_NANO" />
+      <constant value="1" ctype="gint" gtype="gint"       name="PLUGINS_BASE_VERSION_MAJOR" />
+      <constant value="1" ctype="gint" gtype="gint"       name="PLUGINS_BASE_VERSION_MICRO" />
+      <constant value="21" ctype="gint" gtype="gint"       name="PLUGINS_BASE_VERSION_MINOR" />
+      <constant value="0" ctype="gint" gtype="gint"       name="PLUGINS_BASE_VERSION_NANO" />
     </object>
   </namespace>
   <namespace name="Gst.Rtp" library="gstrtp-1.0-0.dll">
     </object>
   </namespace>
   <namespace name="Gst.Rtp" library="gstrtp-1.0-0.dll">
index dbd32b0..6839c54 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gstreamer-vaapi.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
 2022-09-21 19:19:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
        * meson.build:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index 24c0ab1..4ceb845 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer gstreamer-vaapi 1.20.0.
+This is GStreamer gstreamer-vaapi 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 0cbaa83..23afbd6 100644 (file)
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index 167f288..4805970 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer-vaapi', 'c',
 project('gstreamer-vaapi', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
index 7da9470..c6dd996 100644 (file)
@@ -1,3 +1,18 @@
+=== release 1.21.1 ===
+
+2022-10-04 01:14:01 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gstreamer.doap:
+       * meson.build:
+         Release 1.21.1
+
+2022-10-04 01:13:59 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+       * ChangeLog:
+         Update ChangeLogs for 1.21.1
+
 2022-10-03 11:16:25 +0200  Edward Hervey <edward@centricular.com>
 
        * plugins/elements/gstqueue2.c:
 2022-10-03 11:16:25 +0200  Edward Hervey <edward@centricular.com>
 
        * plugins/elements/gstqueue2.c:
index eb637c9..cb59a4e 100644 (file)
@@ -1,11 +1,23 @@
-GStreamer 1.20 Release Notes
+GStreamer 1.22 Release Notes
 
 
-GStreamer 1.20.0 was released on 3 February 2022.
+GStreamer 1.22 has not been released yet. It is scheduled for release
+around the end of December 2022.
 
 
-See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
+1.21.x is the unstable development version that is being developed in
+the git master branch and which will eventually result in 1.22, and
+1.21.1 is the current development release in that series
+
+It is expected that feature freeze will be around November 2021,
+followed by several 1.21 pre-releases and the new 1.22 stable release
+around the end of December 2022.
+
+1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
+1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
 version of this document.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 Highlights
 
 
 Highlights
 
--   Development in GitLab was switched to a single git repository
-    containing all the modules
--   GstPlay: new high-level playback library, replaces GstPlayer
--   WebM Alpha decoding support
--   Encoding profiles can now be tweaked with additional
-    application-specified element properties
--   Compositor: multi-threaded video conversion and mixing
--   RTP header extensions: unified support in RTP depayloader and
-    payloader base classes
--   SMPTE 2022-1 2-D Forward Error Correction support
--   Smart encoding (pass through) support for VP8, VP9, H.265 in
-    encodebin and transcodebin
--   Runtime compatibility support for libsoup2 and libsoup3 (libsoup3
-    support experimental)
--   Video decoder subframe support
--   Video decoder automatic packet-loss, data corruption, and keyframe
-    request handling for RTP / WebRTC / RTSP
--   mp4 and Matroska muxers now support profile/level/resolution changes
-    for H.264/H.265 input streams (i.e. codec data changing on the fly)
--   mp4 muxing mode that initially creates a fragmented mp4 which is
-    converted to a regular mp4 on EOS
--   Audio support for the WebKit Port for Embedded (WPE) web page source
-    element
--   CUDA based video color space convert and rescale elements and
-    upload/download elements
--   NVIDIA memory:NVMM support for OpenGL glupload and gldownload
-    elements
--   Many WebRTC improvements
--   The new VA-API plugin implementation fleshed out with more decoders
-    and new postproc elements
--   AppSink API to retrieve events in addition to buffers and buffer
-    lists
--   AppSrc gained more configuration options for the internal queue
-    (leakiness, limits in buffers and time, getters to read current
-    levels)
--   Updated Rust bindings and many new Rust plugins
--   Improved support for custom minimal GStreamer builds
--   Support build against FFmpeg 5.0
--   Linux Stateless CODEC support gained MPEG-2 and VP9
--   Windows Direct3D11/DXVA decoder gained AV1 and MPEG-2 support
--   Lots of new plugins, features, performance improvements and bug
-    fixes
+-   this section will be completed in due course
 
 Major new features and changes
 
 Noteworthy new features and API
 
 
 Major new features and changes
 
 Noteworthy new features and API
 
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
-Development in GitLab was switched to a single git repository containing all the modules
-
-The GStreamer multimedia framework is a set of libraries and plugins
-split into a number of distinct modules which are released independently
-and which have so far been developed in separate git repositories in
-freedesktop.org GitLab.
-
-In addition to these separate git repositories there was a gst-build
-module that would use the Meson build system’s subproject feature to
-download each individual module and then build everything in one go. It
-would also provide an uninstalled development environment that made it
-easy to work on GStreamer and use or test versions other than the
-system-installed GStreamer version.
-
-All of these modules have now (as of 28 September 2021) been merged into
-a single git repository (“Mono repository” or “monorepo”) which should
-simplify development workflows and continuous integration, especially
-where changes need to be made to multiple modules at once.
-
-This mono repository merge will primarily affect GStreamer developers
-and contributors and anyone who has workflows based on the GStreamer git
-repositories.
-
-The Rust bindings and Rust plugins modules have not been merged into the
-mono repository at this time because they follow a different release
-cycle.
-
-The mono repository lives in the existing GStreamer core git repository
-in GitLab in the new main branch and all future development will happen
-on this branch.
-
-Modules will continue to be released as separate tarballs.
-
-For more details, please see the GStreamer mono repository FAQ.
-
-GstPlay: new high-level playback library replacing GstPlayer
-
--   GstPlay is a new high-level playback library that replaces the older
-    GstPlayer API. It is basically the same API as GstPlayer but
-    refactored to use bus messages for application notifications instead
-    of GObject signals. There is still a signal adapter object for those
-    who prefer signals. Since the existing GstPlayer API is already in
-    use in various applications, it didn’t seem like a good idea to
-    break it entirely. Instead a new API was added, and it is expected
-    that this new GstPlay API will be moved to gst-plugins-base in
-    future.
-
--   The existing GstPlayer API is scheduled for deprecation and will be
-    removed at some point in the future (e.g. in GStreamer 1.24), so
-    application developers are urged to migrate to the new GstPlay API
-    at their earliest convenience.
-
-WebM alpha decoding
-
--   Implement WebM alpha decoding (VP8/VP9 with alpha), which required
-    support and additions in various places. This is supported both with
-    software decoders and hardware-accelerated decoders.
-
--   VP8/VP9 don’t support alpha components natively in the codec, so the
-    way this is implemented in WebM is by encoding the alpha plane with
-    transparency data as a separate VP8/VP9 stream. Inside the WebM
-    container (a variant of Matroska) this is coded as a single video
-    track with the “normal” VP8/VP9 video data making up the main video
-    data and each frame of video having an encoded alpha frame attached
-    to it as extra data ("BlockAdditional").
-
--   matroskademux has been extended extract this per-frame alpha side
-    data and attach it in form of a GstVideoCodecAlphaMeta to the
-    regular video buffers. Note that this new meta is specific to this
-    VP8/VP9 alpha support and can’t be used to just add alpha support to
-    other codecs that don’t support it. Lastly, matroskademux also
-    advertises the fact that the streams contain alpha in the caps.
-
--   The new codecalpha plugin contains various bits of infrastructure to
-    support autoplugging and debugging:
-
-    -   codecalphademux splits out the alpha stream from the metas on
-        the regular VP8/VP9 buffers
-    -   alphacombine takes two decoded raw video streams (one alpha, one
-        the regular video) and combines it into a video stream with
-        alpha
-    -   vp8alphadecodebin + vp9alphadecodebin are wrapper bins that use
-        the regular vp8dec and vp9dec software decoders to decode
-        regular and alpha streams and combine them again. To decodebin
-        these look like regular decoders.
-    -   The V4L2 CODEC plugin has stateless VP8/VP9 decoders that can
-        decode both alpha and non-alpha stream with a single decoder
-        instance
-
--   A new AV12 video format was added which is basically NV12 with an
-    alpha plane, which is more convenient for many hardware-accelerated
-    decoders.
-
--   Watch Nicolas Dufresne’s LCA 2022 talk “Bringing WebM Alpha support
-    to GStreamer” for all the details and a demo.
-
-RTP Header Extensions Base Class and Automatic Header Extension Handling in RTP Payloaders and Depayloaders
-
--   RTP Header Extensions are specified in RFC 5285 and provide a way to
-    add small pieces of data to RTP packets in between the RTP header
-    and the RTP payload. This is often used for per-frame metadata,
-    extended timestamps or other application-specific extra data. There
-    are several commonly-used extensions specified in various RFCs, but
-    senders are free to put any kind of data in there, as long as sender
-    and receiver both know what that data is. Receivers that don’t know
-    about the header extensions will just skip the extra data without
-    ever looking at it. These header extensions can often be combined
-    with any kind of payload format, so may need to be supported by many
-    RTP payloader and depayloader elements.
-
--   Inserting and extracting RTP header extension data has so far been a
-    bit inconvenient in GStreamer: There are functions to add and
-    retrieve RTP header extension data from RTP packets, but nothing
-    works automatically, even for common extensions. People would have
-    to do the insertion/extraction either in custom elements
-    before/after the RTP payloader/depayloader, or inside pad probes,
-    which isn’t very nice.
-
--   This release adds various pieces of new infrastructure for generic
-    RTP header extension handling, as well as some implementations for
-    common extensions:
-
-    -   GstRTPHeaderExtension is a new helper base class for reading and
-        writing RTP header extensions. Nominally this subclasses
-        GstElement, but only so these extensions are stored in the
-        registry where they can be looked up by URI or name. They don’t
-        have pads and don’t get added to the pipeline graph as an
-        element.
-
-    -   "add-extension" and "clear-extension" action signals on RTP
-        payloaders and depayloaders for manual extension management
-
-    -   The "request-extension" signal will be emitted if an extension
-        is encountered that requires explicit mapping by the application
-
-    -   new "auto-header-extension" property on RTP payloaders and
-        depayloaders for automatic handling of known header extensions.
-        This is enabled by default. The extensions must be signalled via
-        caps / SDP.
-
-    -   RTP header extension implementations:
-
-        -   rtphdrextclientaudiolevel: Client-to-Mixer Audio Level
-            Indication (RFC 6464) (also see below)
-        -   rtphdrextcolorspace: Color Space extension, extends RTP
-            packets with color space and high dynamic range (HDR)
-            information
-        -   rtphdrexttwcc: Transport Wide Congestion Control support
-
--   gst_rtp_buffer_remove_extension_data() is a new helper function to
-    remove an RTP header extension from an RTP buffer
-
--   The existing gst_rtp_buffer_set_extension_data() now also supports
-    shrinking the extension data in size
-
-AppSink and AppSrc improvements
-
--   appsink: new API to pull events out of appsink in addition to
-    buffers and buffer lists.
-
-    There was previously no way for users to receive incoming events
-    from appsink properly serialised with the data flow, even if they
-    are serialised events. The reason for that is that the only way to
-    intercept events was via a pad probe on the appsink sink pad, but
-    there is also internal queuing inside of appsink, so it’s difficult
-    to ascertain the right order of everything in all cases.
-
-    There is now a new "new-serialized-event" signal which will be
-    emitted when there’s a new event pending (just like the existing
-    "new-sample" signal). The "emit-signals" property must be set to
-    TRUE in order to activate this (but it’s also fine to just pull from
-    the application thread without using the signals).
-
-    gst_app_sink_pull_object() and gst_app_sink_try_pull_object() can be
-    used to pull out either an event or a new sample carrying a buffer
-    or buffer list, whatever is next in the queue.
-
-    EOS events will be filtered and will not be returned. EOS handling
-    can be done the usual way, same as with _pull_sample().
-
--   appsrc: allow configuration of internal queue limits in time and
-    buffers and add leaky mode.
-
-    There is internal queuing inside appsrc so the application thread
-    can push data into the element which will then be picked up by the
-    source element’s streaming thread and pushed into the pipeline from
-    that streaming thread. This queue is unlimited by default and until
-    now it was only possible to set a maximum size limit in bytes. When
-    that byte limit is reached, the pushing thread (application thread)
-    would be blocked until more space becomes available.
-
-    A limit in bytes is not particularly useful for many use cases, so
-    now it is possible to also configure limits in time and buffers
-    using the new "max-time" and "max-buffers" properties. Of course
-    there are also matching new read-only"current-level-buffers" and
-    "current-level-time properties" properties to query the current fill
-    level of the internal queue in time and buffers.
-
-    And as if that wasn’t enough the internal queue can also be
-    configured as leaky using the new "leaky-type" property. That way
-    when the queue is full the application thread won’t be blocked when
-    it tries to push in more data, but instead either the new buffer
-    will be dropped or the oldest data in the queue will be dropped.
-
-Better string serialization of nested GstCaps and GstStructures
-
--   New string serialisation format for structs and caps that can handle
-    nested structs and caps properly by using brackets to delimit nested
-    items (e.g. some-struct, some-field=[nested-struct, nested=true]).
-    Unlike the default format the new variant can also support more than
-    one level of nesting. For backwards-compatibility reasons the old
-    format is still output by default when serialising caps and structs
-    using the existing API. The new functions gst_caps_serialize() and
-    gst_structure_serialize() can be used to output strings in the new
-    format.
-
-Convenience API for custom GstMetas
-
--   New convenience API to register and create custom GstMetas:
-    gst_meta_register_custom() and gst_buffer_add_custom_meta(). Such
-    custom meta is backed by a GstStructure and does not require that
-    users of the API expose their GstMeta implementation as public API
-    for other components to make use of it. In addition, it provides a
-    simpler interface by ignoring the impl vs. api distinction that the
-    regular API exposes. This new API is meant to be the meta
-    counterpart to custom events and messages, and to be more convenient
-    than the lower-level API when the absolute best performance isn’t a
-    requirement. The reason it’s less performant than a “proper” meta is
-    that a proper meta is just a C struct in the end whereas this goes
-    through the GstStructure API which has a bit more overhead, which
-    for most scenarios is negligible however. This new API is useful for
-    experimentation or proprietary metas, but also has some limitations:
-    it can only be used if there’s a single producer of these metas;
-    registering the same custom meta multiple times or from multiple
-    places is not allowed.
-
-Additional Element Properties on Encoding Profiles
-
--   GstEncodingProfile: The new "element-properties" and
-    gst_encoding_profile_set_element_properties() API allows
-    applications to set additional element properties on encoding
-    profiles to configure muxers and encoders. So far the encoding
-    profile template was the only place where this could be specified,
-    but often what applications want to do is take a ready-made encoding
-    profile shipped by GStreamer or the application and then tweak the
-    settings on top of that, which is now possible with this API. Since
-    applications can’t always know in advance what encoder element will
-    be used in the end, it’s even possible to specify properties on a
-    per-element basis.
-
-    Encoding Profiles are used in the encodebin, transcodebin and
-    camerabin elements and APIs to configure output formats (containers
-    and elementary streams).
-
-Audio Level Indication Meta for RFC 6464
-
--   New GstAudioLevelMeta containing Audio Level Indication as per RFC
-    6464
-
--   The level element has been updated to add GstAudioLevelMeta on
-    buffers if the "audio-level-meta" property is set to TRUE. This can
-    then in turn be picked up by RTP payloaders to signal the audio
-    level to receivers through RTP header extensions (see above).
-
--   New Client-to-Mixer Audio Level Indication (RFC6464) RTP Header
-    Extension which should be automatically created and used by RTP
-    payloaders and depayloaders if their "auto-header-extension"
-    property is enabled and if the extension is part of the RTP caps.
-
-Automatic packet loss, data corruption and keyframe request handling for video decoders
-
--   The GstVideoDecoder base class has gained various new APIs to
-    automatically handle packet loss and data corruption better by
-    default, especially in RTP, RTSP and WebRTC streaming scenarios, and
-    to give subclasses more control about how they want to handle
-    missing data:
-
-    -   Video decoder subclasses can mark output frames as corrupted via
-        the new GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED flag
-
-    -   A new "discard-corrupted-frames" property allows applications to
-        configure decoders so that corrupted frames are directly
-        discarded instead of being forwarded inside the pipeline. This
-        is a replacement for the "output-corrupt" property of the FFmpeg
-        decoders.
-
-    -   RTP depayloaders can now signal to decoders that data is missing
-        when sending GAP events for lost packets. GAP events can be sent
-        for various reason in a GStreamer pipeline. Often they are just
-        used to let downstream elements know that there isn’t a buffer
-        available at the moment, so downstream elements can move on
-        instead of waiting for one. They are also sent by RTP
-        depayloaders in the case that packets are missing, however, and
-        so far a decoder was not able to differentiate the two cases.
-        This has been remedied now: GAP events can be decorated with
-        gst_event_set_gap_flags() and GST_GAP_FLAG_MISSING_DATA to let
-        decoders now what happened, and decoders can then use that in
-        some cases to handle missing data better.
-
-    -   The GstVideoDecoder::handle_missing_data vfunc was added to
-        inform subclasses about packet loss or missing data and let them
-        handle it in their own way if they like.
-
-    -   gst_video_decoder_set_needs_sync_point() lets subclasses signal
-        that they need the stream to start with a sync point. If
-        enabled, the base class will discard all non-sync point frames
-        in the beginning and after a flush and does not pass them to the
-        subclass. Furthermore, if the first frame is not a sync point,
-        the base class will try and request a sync frame from upstream
-        by sending a force-key-unit event (see next items).
-
-    -   New "automatic-request-sync-points" and
-        "automatic-request-sync-point-flags" properties to automatically
-        request sync points when needed, e.g. on packet loss or if the
-        first frame is not a keyframe. Applications may want to enable
-        this on decoders operating in e.g. RTP/WebRTC/RTSP receiver
-        pipelines.
-
-    -   The new "min-force-key-unit-interval" property can be used to
-        ensure there’s a minimal interval between keyframe requests to
-        upstream (and/or the sender) and we’re not flooding the sender
-        with key unit requests.
-
-    -   gst_video_decoder_request_sync_point() allows subclasses to
-        request a new sync point (e.g. if they choose to do their own
-        missing data handling). This will still honour the
-        "min-force-key-unit-interval" property if set.
-
-Improved support for custom minimal GStreamer builds
-
--   Element registration and registration of other plugin features
-    inside plugin init functions has been improved in order to
-    facilitate minimal custom GStreamer builds.
-
--   A number of new macros have been added to declare and create
-    per-element and per-plugin feature register functions in all
-    plugins, and then call those from the per-plugin plugin_init
-    functions:
-
-    -   GST_ELEMENT_REGISTER_DEFINE,
-        GST_DEVICE_PROVIDER_REGISTER_DEFINE,
-        GST_DYNAMIC_TYPE_REGISTER_DEFINE, GST_TYPE_FIND_REGISTER_DEFINE
-        for the actual registration call with GStreamer
-    -   GST_ELEMENT_REGISTER, GST_DEVICE_PROVIDER_REGISTER,
-        GST_DYNAMIC_TYPE_REGISTER, GST_PLUGIN_STATIC_REGISTER,
-        GST_TYPE_FIND_REGISTER to call the registration function defined
-        by the REGISTER_DEFINE macro
-    -   GST_ELEMENT_REGISTER_DECLARE,
-        GST_DEVICE_PROVIDER_REGISTER_DECLARE,
-        GST_DYNAMIC_TYPE_REGISTER_DECLARE,
-        GST_TYPE_FIND_REGISTER_DECLARE to declare the registration
-        function defined by the REGISTER_DEFINE macro
-    -   and various variants for advanced use cases.
-
--   This means that applications can call the per-element and per-plugin
-    feature registration functions for only the elements they need
-    instead of registering plugins as a whole with all kinds of elements
-    that may not be required (e.g. encoder and decoder instead of just
-    decoder). In case of static linking all unused functions and their
-    dependencies would be removed in this case by the linker, which
-    helps minimise binary size for custom builds.
-
--   gst_init() will automatically call a gst_init_static_plugins()
-    function if one exists.
-
--   See the GStreamer static build documentation and Stéphane’s blog
-    post Generate a minimal GStreamer build, tailored to your needs for
-    more details.
+-   this section will be filled in in due course
 
 New elements
 
 
 New elements
 
--   New aesdec and aesenc elements for AES encryption and decryption in
-    a custom format.
-
--   New encodebin2 element with dynamic/sometimes source pads in order
-    to support the option of doing the muxing outside of encodebin,
-    e.g. in combination with a splitmuxsink.
-
--   New fakeaudiosink and videocodectestsink elements for testing and
-    debugging (see below for more details)
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   isac: new plugin wrapping the Internet Speech Audio Codec reference
-    encoder and decoder from the WebRTC project.
-
--   asio: plugin for Steinberg ASIO (Audio Streaming Input/Output) API
-
--   gssrc, gssink: add source and sink for Google Cloud Storage
-
--   onnx: new plugin to apply ONNX neural network models to video
-
--   openaptx: aptX and aptX-HD codecs using libopenaptx (v0.2.0)
-
--   qroverlay, debugqroverlay: new elements that allow overlaying data
-    on top of video in the form of a QR code
-
--   cvtracker: new OpenCV-based tracker element
-
--   av1parse, vp9parse: new parsers for AV1 and VP9 video
-
--   va: work on the new VA-API plugin implementation for
-    hardware-accelerated video decoding and encoding has continued at
-    pace, with various new decoders and filters having joined the
-    initial vah264dec:
-
-    -   vah265dec: VA-API H.265 decoder
-    -   vavp8dec: VA-API VP8 decoder
-    -   vavp9dec: VA-API VP9 decoder
-    -   vaav1dec: VA-API AV1 decoder
-    -   vampeg2dec: VA-API MPEG-2 decoder
-    -   vadeinterlace: : VA-API deinterlace filter
-    -   vapostproc: : VA-API postproc filter (color conversion,
-        resizing, cropping, color balance, video rotation, skin tone
-        enhancement, denoise, sharpen)
-
-    See Víctor’s blog post “GstVA in GStreamer 1.20” for more details
-    and what’s coming up next.
-
--   vaapiav1dec: new AV1 decoder element (in gstreamer-vaapi)
-
--   msdkav1dec: hardware-accelerated AV1 decoder using the Intel Media
-    SDK / oneVPL
-
--   nvcodec plugin for NVIDIA NVCODEC API for hardware-accelerated video
-    encoding and decoding:
-
-    -   cudaconvert, cudascale: new CUDA based video color space convert
-        and rescale elements
-    -   cudaupload, cudadownload: new helper elements for memory
-        transfer between CUDA and system memory spaces
-    -   nvvp8sldec, nvvp9sldec: new GstCodecs-based VP8/VP9 decoders
-
--   Various new hardware-accelerated elements for Windows:
-
-    -   d3d11screencapturesrc: new desktop capture element, including a
-        GstDeviceProvider implementation to enumerate/select target
-        monitors for capture.
-    -   d3d11av1dec and d3d11mpeg2dec: AV1 and MPEG-2 decoders
-    -   d3d11deinterlace: deinterlacing filter
-    -   d3d11compositor: video composing element
-    -   see Windows section below for more details
-
--   new Rust plugins:
-
-    -   audiornnoise: Removes noise from an audio stream
-    -   awstranscribeparse: Parses AWS audio transcripts into timed text
-        buffers
-    -   ccdetect: Detects if valid closed captions are present in a
-        closed captions stream
-    -   cea608tojson: Converts CEA-608 Closed Captions to a JSON
-        representation
-    -   cmafmux: CMAF fragmented mp4 muxer
-    -   dashmp4mux: DASH fragmented mp4 muxer
-    -   isofmp4mux: ISO fragmented mp4 muxer
-    -   ebur128level: EBU R128 Loudness Level Measurement
-    -   ffv1dec: FFV1 video decoder
-    -   gtk4paintablesink: GTK4 video sink, which provides a
-        GdkPaintable that can be rendered in various widgets
-    -   hlssink3: HTTP Live Streaming sink
-    -   hrtfrender: Head-Related Transfer Function (HRTF) renderer
-    -   hsvdetector: HSV colorspace detector
-    -   hsvfilter: HSV colorspace filter
-    -   jsongstenc: Wraps buffers containing any valid top-level JSON
-        structures into higher level JSON objects, and outputs those as
-        ndjson
-    -   jsongstparse: Parses ndjson as output by jsongstenc
-    -   jsontovtt: converts JSON to WebVTT subtitles
-    -   regex: Applies regular expression operations on text
-    -   roundedcorners: Adds rounded corners to video
-    -   spotifyaudiosrc: Spotify source
-    -   textahead: Display upcoming text buffers ahead (e.g. for
-        Karaoke)
-    -   transcriberbin: passthrough bin that transcribes raw audio to
-        closed captions using awstranscriber and puts the captions as
-        metas onto the video
-    -   tttojson: Converts timed text to a JSON representation
-    -   uriplaylistbin: Playlist source bin
-    -   webpdec-rs: WebP image decoder with animation support
-
--   New plugin codecalpha with elements to assist with WebM Alpha
-    decoding
-
-    -   codecalphademux: Split stream with GstVideoCodecAlphaMeta into
-        two streams
-    -   alphacombine: Combine two raw video stream (I420 or NV12) as one
-        stream with alpha channel (A420 or AV12)
-    -   vp8alphadecodebin: A bin to handle software decoding of VP8 with
-        alpha
-    -   vp9alphadecodebin: A bin to handle software decoding of VP9 with
-        alpha
-
--   New hardware accelerated elements for Linux:
-
-    -   v4l2slmpeg2dec: Support for Linux Stateless MPEG-2 decoders
-    -   v4l2slvp9dec: Support for Linux Stateless VP9 decoders
-    -   v4l2slvp8alphadecodebin: Support HW accelerated VP8 with alpha
-        layer decoding
-    -   v4l2slvp9alphadecodebin: Support HW accelerated VP9 with alpha
-        layer decoding
+-   this section will be filled in in due course
 
 New element features and additions
 
 
 New element features and additions
 
--   assrender: handle more font mime types; better interaction with
-    matroskademux for embedded fonts
-
--   audiobuffersplit: Add support for specifying output buffer size in
-    bytes (not just duration)
-
--   audiolatency: new "samplesperbuffer" property so users can configure
-    the number of samples per buffer. The default value is 240 samples
-    which is equivalent to 5ms latency with a sample rate of 48000,
-    which might be larger than actual buffer size of audio capture
-    device.
-
--   audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
-    samples that are dropped or processed as statistic and can be made
-    to post QoS messages on the bus whenever samples are dropped by
-    setting the "qos-messages" property on input pads.
-
--   audiomixer, compositor: improved handling of new inputs added at
-    runtime. New API was added to the GstAggregator base class to allow
-    subclasses to opt into an aggregation mode where inactive pads are
-    ignored when processing input buffers
-    (gst_aggregator_set_ignore_inactive_pads(),
-    gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
-    is a pad which, in live mode, hasn’t yet received a first buffer,
-    but has been waited on at least once. What would happen usually in
-    this case is that the aggregator would wait for data on this pad
-    every time, up to the maximum configured latency. This would
-    inadvertently push mixer elements in live mode to the configured
-    latency envelope and delay processing when new inputs are added at
-    runtime until these inputs have actually produced data. This is
-    usually undesirable. With this new API, new inputs can be added
-    (requested) and configured and they won’t delay the data processing.
-    Applications can opt into this new behaviour by setting the
-    "ignore-inactive-pads" property on compositor, audiomixer or other
-    GstAudioAggregator-based elements.
-
--   cccombiner: implement “scheduling” of captions. So far cccombiner’s
-    behaviour was essentially that of a funnel: it strictly looked at
-    input timestamps to associate together video and caption buffers.
-    Now it will try to smoothly schedule caption buffers in order to
-    have exactly one per output video buffer. This might involve
-    rewriting input captions, for example when the input is CDP then
-    sequence counters are rewritten, time codes are dropped and
-    potentially re-injected if the input video frame had a time code
-    meta. This can also lead to the input drifting from synchronisation,
-    when there isn’t enough padding in the input stream to catch up. In
-    that case the element will start dropping old caption buffers once
-    the number of buffers in its internal queue reaches a certain limit
-    (configurable via the "max-scheduled" property). The new original
-    funnel-like behaviour can be restored by setting the "scheduling"
-    property to FALSE.
-
--   ccconverter: new "cdp-mode" property to specify which sections to
-    include in CDP packets (timecode, CC data, service info). Various
-    software, including FFmpeg’s Decklink support, fails parsing CDP
-    packets that contain anything but CC data in the CDP packets.
-
--   clocksync: new "sync-to-first" property for automatic timestamp
-    offset setup: if set clocksync will set up the "ts-offset" value
-    based on the first buffer and the pipeline’s running time when the
-    first buffer arrived. The newly configured "ts-offset" in this case
-    would be the value that allows outputting the first buffer without
-    waiting on the clock. This is useful for example to feed a non-live
-    input into an already-running pipeline.
-
--   compositor:
-
-    -   multi-threaded input conversion and compositing. Set the
-        "max-threads" property to activate this.
-    -   new "sizing-policy" property to support display aspect ratio
-        (DAR)-aware scaling. By default the image is scaled to fill the
-        configured destination rectangle without padding and without
-        keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
-        the input image is scaled to fit the destination rectangle
-        specified by GstCompositorPad:{xpos, ypos, width, height}
-        properties preserving the aspect ratio. As a result, the image
-        will be centered in the destination rectangle with padding if
-        necessary.
-    -   new "zero-size-is-unscaled" property on input pads. By default
-        pad width=0 or pad height=0 mean that the stream should not be
-        scaled in that dimension. But if the "zero-size-is-unscaled"
-        property is set to FALSE a width or height of 0 is instead
-        interpreted to mean that the input image on that pad should not
-        be composited, which is useful when creating animations where an
-        input image is made smaller and smaller until it disappears.
-    -   improved handling of new inputs at runtime via
-        "ignore-inactive-pads"property (see above for details)
-    -   allow output format with alpha even if none of the inputs have
-        alpha (also glvideomixer and other GstVideoAggregator
-        subclasses)
-
--   dashsink: add H.265 codec support and signals for allowing custom
-    playlist/fragment output
-
--   decodebin3:
-
-    -   improved decoder selection, especially for hardware decoders
-    -   make input activation “atomic” when adding inputs dynamically
-    -   better interleave handling: take into account decoder latency
-        for interleave size
-
--   decklink:
-
-    -   Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
-    -   decklinkvideosrc:
-        -   More accurate and stable capture timestamps: use the
-            hardware reference clock time when the frame was finished
-            being captured instead of a clock time much further down the
-            road.
-        -   Automatically detect widescreen vs. normal NTSC/PAL
-
--   encodebin:
-
-    -   add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
-        re-encode where needed and otherwise pass through encoded video
-        as-is).
-    -   H.264/H.265 smart encoding improvements: respect user-specified
-        stream-format, but if not specified default to avc3/hvc1 with
-        in-band SPS/PPS/VPS signalling for more flexibility.
-    -   new encodebin2 element with dynamic/sometimes source pads in
-        order to support the option of doing the muxing outside of
-        encodebin, e.g. in combination with splitmuxsink.
-    -   add APIs to set element properties on encoding profiles (see
-        below)
-
--   errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
-    downstream elements
-
--   giosrc: add support for growing source files: applications can
-    specify that the underlying file being read is growing by setting
-    the "is-growing" property. If set, the source won’t EOS when it
-    reaches the end of the file, but will instead start monitoring it
-    and will start reading data again whenever a change is detected. The
-    new "waiting-data" and "done-waiting-data" signals keep the
-    application informed about the current state.
-
--   gtksink, gtkglsink:
-
-    -   scroll event support: forwarded as navigation events into the
-        pipeline
-    -   "video-aspect-ratio-override" property to force a specific
-        aspect ratio
-    -   "rotate-method" property and support automatic rotation based on
-        image tags
-
--   identity: new "stats" property allows applications to retrieve the
-    number of bytes and buffers that have passed through so far.
-
--   interlace: add support for more formats, esp 10-bit, 12-bit and
-    16-bit ones
-
--   jack: new "low-latency" property for automatic latency-optimized
-    setting and "port-names" property to select ports explicitly
-
--   jpegdec: support output conversion to RGB using libjpeg-turbo (for
-    certain input files)
-
--   line21dec:
-
-    -   "mode" property to control whether and how detected closed
-        captions should be inserted in the list of existing close
-        caption metas on the input frame (if any): add, drop, or
-        replace.
-    -   "ntsc-only" property to only look for captions if video has NTSC
-        resolution
-
--   line21enc: new "remove-caption-meta" to remove metas from output
-    buffers after encoding the captions into the video data; support for
-    CDP closed captions
-
--   matroskademux, matroskamux: Add support for ffv1, a lossless
-    intra-frame video coding format.
-
--   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
-    (i.e. stream-format avc3 and hev1) which allows on-the-fly
-    profile/level/resolution changes.
-
--   matroskamux: new "cluster-timestamp-offset" property, useful for use
-    cases where the container timestamps should map to some absolute
-    wall clock time, for example.
-
--   rtpsrc: add "caps" property to allow explicit setting of the caps
-    where needed
-
--   mpegts: support SCTE-35 pass-through via new "send-scte35-events"
-    property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
-    (e.g. ad placement opportunities) are forwarded as events downstream
-    where they can be picked up again by mpegtsmux. This required a
-    semantic change in the SCTE-35 section API: timestamps are now in
-    running time instead of muxer pts.
-
--   tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
-    handling in certain corner cases and for poorly muxed streams.
-
--   mpegtsmux:
-
-    -   More conformance improvements to make MPEG-TS analysers happy:
-        -   PCR timing accuracy: Improvements to the way mpegtsmux
-            outputs PCR observations in CBR mode, so that a PCR
-            observation is always inserted when needed, so that we never
-            miss the configured pcr-interval, as that triggers various
-            MPEG-TS analyser errors.
-        -   Improved PCR/SI scheduling
-    -   Don’t write PCR until PAT/PMT are output to make sure streams
-        start cleanly with a PAT/PMT.
-    -   Allow overriding the automatic PMT PID selection via
-        application-supplied PMT_%d fields in the prog-map
-        structure/property.
-
--   mp4mux:
-
-    -   new "first-moov-then-finalise" mode for fragmented output where
-        the output will start with a self-contained moov atom for the
-        first fragment, and then produce regular fragments. Then at the
-        end when the file is finalised, the initial moov is invalidated
-        and a new moov is written covering the entire file. This way the
-        file is a “fragmented mp4” file while it is still being written
-        out, and remains playable at all times, but at the end it is
-        turned into a regular mp4 file (with former fragment headers
-        remaining as unused junk data in the file).
-    -   support H.264 avc3 and H.265 hvc1 stream formats as input where
-        the codec data is signalled in-band inside the bitstream instead
-        of caps/file headers.
-    -   support profile/level/resolution changes for H.264/H.265 input
-        streams (i.e. codec data changing on the fly). Each codec_data
-        is put into its own SampleTableEntry inside the stsd, unless the
-        input is in avc3 stream format in which case it’s written
-        in-band and not in the headers.
-
--   multifilesink: new ""min-keyframe-distance"" property to make
-    minimum distance between keyframes in next-file=key-frame mode
-    configurable instead of hard-coding it to 10 seconds.
-
--   mxfdemux has seen a big refactoring to support non-frame wrappings
-    and more accurate timestamp/seek handling for some formats
-
--   msdk plugin for hardware-accelerated video encoding and decoding
-    using the Intel Media SDK:
-
-    -   oneVPL support (Intel oneAPI Video Processing Library)
-    -   AV1 decoding support
-    -   H.264 decoder now supports constrained-high and progressive-high
-        profiles
-    -   H.264 encoder:
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "dblk-idc"
-    -   H.265 encoder:
-        -   can output main-still-picture profile
-        -   now inserts HDR SEIs (mastering display colour volume and
-            content light level)
-        -   more configuration options (properties):
-            "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
-            "b-pyramid", "dblk-idc", "transform-skip"
-        -   support for RGB 10bit format
-    -   External bitrate control in encoders
-    -   Video post proc element msdkvpp gained support for 12-bit pixel
-        formats P012_LE, Y212_LE and Y412_LE
-
--   nvh264sldec: interlaced stream support
-
--   openh264enc: support main, high, constrained-high and
-    progressive-high profiles
-
--   openjpeg: support for multithreaded decoding and encoding
-
--   rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
-    new "ignore-x-server-reply" property to ignore the
-    x-server-ip-address server header reply in case of HTTP tunneling,
-    as it is often broken.
-
--   souphttpsrc: Runtime compatibility support for libsoup2 and
-    libsoup3. libsoup3 is the latest major version of libsoup, but
-    libsoup2 and libsoup3 can’t co-exist in the same process because
-    there is no namespacing or versioning for GObject types. As a
-    result, it would be awkward if the GStreamer souphttpsrc plugin
-    linked to a specific version of libsoup, because it would only work
-    with applications that use the same version of libsoup. To make this
-    work, the soup plugin now tries to determine the libsoup version
-    used by the application (and its other dependencies) at runtime on
-    systems where GStreamer is linked dynamically. libsoup3 support is
-    still considered somewhat experimental at this point. Distro
-    packagers please take note of the souphttpsrc plugin dependency
-    changes mentioned in the build and dependencies section below.
-
--   srtsrc, srtsink: add signals for the application to accept/reject
-    incoming connections
-
--   timeoverlay: new elapsed-running-time time mode which shows the
-    running time since the first running time (and each flush-stop).
-
--   udpsrc: new timestamping mode to retrieve packet receive timestamps
-    from the kernel via socket control messages (SO_TIMESTAMPNS) on
-    supported platforms
-
--   uritranscodebin: new setup-source and element-setup signals for
-    applications to configure elements used
-
--   v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
-    enabling some platforms or direct renders. Important memory usage
-    improvement.
-
--   v4l2slh264dec now implements the final Linux uAPI as shipped on
-    Linux 5.11 and later.
-
--   valve: add "drop-mode" property and provide two new modes of
-    operation: in drop-mode=forward-sticky-events sticky events
-    (stream-start, segment, tags, caps, etc.) are forwarded downstream
-    even when dropping is enabled; drop-mode=transform-to-gap will in
-    addition also convert buffers into gap events when dropping is
-    enabled, which lets downstream elements know that time is advancing
-    and might allow for preroll in many scenarios. By default all events
-    and all buffers are dropped when dropping is enabled, which can
-    cause problems with caps negotiation not progressing or branches not
-    prerolling when dropping is enabled.
-
--   videocrop: support for many more pixel formats, e.g. planar YUV
-    formats with > 8bits and GBR* video formats; can now also accept
-    video not backed by system memory as long as downstream supports the
-    GstCropMeta
-
--   videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
-    color bars
-
--   vp8enc: finish support for temporal scalability: two new properties
-    ("temporal-scalability-layer-flags",
-    "temporal-scalability-layer-sync-flags") and a unit change on the
-    "temporal-scalability-target-bitrate" property (now expects bps);
-    also make temporal scalability details available to RTP payloaders
-    as buffer metadata.
-
--   vp9enc: new properties to tweak encoder performance:
-
-    -   "aq-mode" to configure adaptive quantization modes
-    -   "frame-parallel-decoding" to configure whether to create a
-        bitstream that reduces decoding dependencies between frames
-        which allows staged parallel processing of more than one video
-        frames in the decoder. (Defaults to TRUE)
-    -   "row-mt", "tile-columns" and "tile-rows" so multithreading can
-        be enabled on a per-tile basis, instead of on a per tile-column
-        basis. In combination with the new "tile-rows" property, this
-        allows the encoder to make much better use of the available CPU
-        power.
-
--   vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
-    as 8-bit 4:4:4
-
--   vp8enc, vp9enc now default to “good quality” for the deadline
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will prefer good-enough quality with better performance instead.
-
--   wpesrc:
-
-    -   implement audio support: a new sometimes source pad will be
-        created for each audio stream created by the web engine.
-    -   move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
-        support audio
-    -   also handles web:// URIs now (same as cefsrc)
-    -   post messages with the estimated load progress on the bus
-
--   x265enc: add negative DTS support, which means timestamps are now
-    offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
--   rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
-    audio codec
-
--   rtph264depay:
-
-    -   new "request-keyframe" property to make the depayloader
-        automatically request a new keyframe from the sender on packet
-        loss, consistent with the new property on rtpvp8depay.
-    -   new "wait-for-keyframe" property to make depayloader wait for a
-        new keyframe at the beginning and after packet loss (only
-        effective if the depayloader outputs AUs), consistent with the
-        existing property on rtpvp8depay.
-
--   rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
-    audio in addition to the previously supported multichannel audio
-    modes
-
--   rtpopuspay: add DTX (Discontinuous Transmission) support
-
--   rtpvp8depay: new "request-keyframe" property to make the depayloader
-    automatically request a new keyframe from the sender on packet loss.
-
--   rtpvp8pay: temporal scaling support
-
--   rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
--   rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
-    2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
-    post.
-
--   rtpreddec: BUNDLE support
-
--   rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
-    Control (TWCC)
-
--   rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
-    reports to be scheduled on a timer instead of per marker-bit.
+-   this section will be filled in in due course
 
 Plugin and library moves
 
 
 Plugin and library moves
 
+-   this section will be filled in in due course
+
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
 -   There were no plugin moves or library moves in this cycle.
 
 Plugin removals
 
 The following elements or plugins have been removed:
 
--   The ofa audio fingerprinting plugin has been removed. The MusicIP
-    database has been defunct for years so this plugin is likely neither
-    useful nor used by anyone.
-
--   The mms plugin containing mmssrc has been removed. It seems unlikely
-    anyone still needs this or that there are even any streams left out
-    there. The MMS protocol was deprecated in 2003 (in favour of RTSP)
-    and support for it was dropped with Microsoft Media Services 2008,
-    and Windows Media Player apparently also does not support it any
-    more.
+-   this section will be filled in in due course
 
 Miscellaneous API additions
 
 
 Miscellaneous API additions
 
-Core
-
--   gst_buffer_new_memdup() is a convenience function for the
-    widely-used gst_buffer_new_wrapped(g_memdup(data,size),size)
-    pattern.
-
--   gst_caps_features_new_single() creates a new single GstCapsFeatures,
-    avoiding the need to use the vararg function with NULL terminator
-    for simple cases.
-
--   gst_element_type_set_skip_documentation() can be used by plugins to
-    signal that certain elements should not be included in the GStreamer
-    plugin documentation. This is useful for plugins where elements are
-    registered dynamically based on hardware capabilities and/or where
-    the available plugins and properties vary from system to system.
-    This is used in the d3d11 plugin for example to ensure that only the
-    list of default elements is advertised in the documentation.
-
--   gst_type_find_suggest_empty_simple() is a new convenience function
-    for typefinders for cases where there’s only a media type and no
-    other fields.
-
--   New API to create elements and set properties at construction time,
-    which is not only convenient, but also allows GStreamer elements to
-    have construct-only properties: gst_element_factory_make_full(),
-    gst_element_factory_make_valist(),
-    gst_element_factory_make_with_properties(),
-    gst_element_factory_create_full(),
-    gst_element_factory_create_valist(),
-    gst_element_factory_create_with_properties().
-
--   GstSharedTaskPool: new “shared” task pool subclass with slightly
-    different default behaviour than the existing GstTaskPool which
-    would create unlimited number of threads for new tasks. The shared
-    task pool creates up to N threads (default: 1) and then distributes
-    pending tasks to those threads round-robin style, and blocks if no
-    thread is available. It is possible to join tasks. This can be used
-    by plugins to implement simple multi-threaded processing and is used
-    for the new multi-threaded video conversion and compositing done in
-    GstVideoAggregator, videoconverter and compositor.
-
-Plugins Base Utils library
-
--   GstDiscoverer:
-
-    -   gst_discoverer_container_info_get_tags() was added to retrieve
-        global/container tags (vs. per-stream tags). Per-Stream tags can
-        be retrieved via the existing
-        gst_discoverer_stream_info_get_tags().
-        gst_discoverer_info_get_tags(), which for many files returns a
-        confusing mix of stream and container tags, has been deprecated
-        in favour of the container/stream-specific functions.
-    -   gst_discoverer_stream_info_get_stream_number() returns a unique
-        integer identifier for a given stream within the given
-        GstDiscoverer context. (If this matches the stream number inside
-        the container bitstream that’s by coincidence and not by
-        design.)
-
--   gst_pb_utils_get_caps_description_flags() can be used to query
-    whether certain caps represent a container, audio, video, image,
-    subtitles, tags, or something else. This only works for formats
-    known to GStreamer.
-
--   gst_pb_utils_get_file_extension_from_caps() returns a possible file
-    extension for given caps.
-
--   gst_codec_utils_h264_get_profile_flags_level(): Parses profile,
-    flags, and level from H.264 AvcC codec_data. The format of H.264
-    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.
-
--   gst_codec_utils_caps_get_mime_codec() to convert caps to a RFC 6381
-    compatible MIME codec string codec. Useful for providing the codecs
-    field inside the Content-Type HTTP header for container formats,
-    such as mp4 or Matroska.
-
-GStreamer OpenGL integration library and plugins
-
--   glcolorconvert: added support for converting the video formats A420,
-    AV12, BGR, BGRA, RGBP and BGRP.
-
--   Added support to GstGLBuffer for persistent buffer mappings where a
-    Pixel Buffer Object (PBO) can be mapped by both the CPU and the GPU.
-    This removes a memcpy() when uploading textures or vertices
-    particularly when software decoders (e.g. libav) are direct
-    rendering into our memory. Improves transfer performance
-    significantly. Requires OpenGL 4.4, GL_ARB_buffer_storage or
-    GL_EXT_buffer_storage
-
--   Added various helper functions for handling 4x4 matrices of affine
-    transformations as used by GstVideoAffineTransformationMeta.
-
--   Add support to GstGLContext for allowing the application to control
-    the config (EGLConfig, GLXConfig, etc) used when creating the OpenGL
-    context. This allows the ability to choose between RGB16 or RGB10A2
-    or RGBA8 back/front buffer configurations that were previously
-    hardcoded. GstGLContext also supports retrieving the configuration
-    it was created with or from an externally provide OpenGL context
-    handle. This infrastructure is also used to create a compatible
-    config from an application/externally provided OpenGL context in
-    order to improve compatibility with other OpenGL frameworks and GUI
-    toolkits. A new environment variable GST_GL_CONFIG was also added to
-    be able to request a specific configuration from the command line.
-    Note: different platforms will have different functionality
-    available.
-
--   Add support for choosing between EGL and WGL at runtime when running
-    on Windows. Previously this was a build-time switch. Allows use in
-    e.g. Gtk applications on Windows that target EGL/ANGLE without
-    recompiling GStreamer. gst_gl_display_new_with_type() can be used by
-    applications to choose a specific display type to use.
-
--   Build fixes to explicitly check for Broadcom-specific libraries on
-    older versions of the Raspberry Pi platform. The Broadcom OpenGL ES
-    and EGL libraries have different filenames. Using the vc4 Mesa
-    driver on the Raspberry Pi is not affected.
-
--   Added support to glupload and gldownload for transferring RGBA
-    buffers using the memory:NVMM available on the Nvidia Tegra family
-    of embedded devices.
-
--   Added support for choosing libOpenGL and libGLX as used in a GLVND
-    environment on unix-based platforms. This allows using desktop
-    OpenGL and EGL without pulling in any GLX symbols as would be
-    required with libGL.
-
-Video library
-
--   New raw video formats:
-
-    -   AV12 (NV12 with alpha plane)
-    -   RGBP and BGRP (planar RGB formats)
-    -   ARGB64 variants with specified endianness instead of host
-        endianness:
-        -   ARGB64_LE, ARGB64_BE
-        -   RGBA64_BE, RGBA64_LE
-        -   BGRA64_BE, BGRA64_LE
-        -   ABGR64_BE, ABGR64_LE
-
--   gst_video_orientation_from_tag() is new convenience API to parse the
-    image orientation from a GstTagList.
-
--   GstVideoDecoder subframe support (see below)
-
--   GstVideoCodecState now also carries some HDR metadata
-
--   Ancillary video data: implement transform functions for AFD/Bar
-    metas, so they will be forwarded in more cases
-
-MPEG-TS library
-
-This library only handles section parsing and such, see above for
-changes to the actual mpegtsmux and mpegtsdemux elements.
-
--   many additions and improvements to SCTE-35 section parsing
--   new API for fetching extended descriptors:
-    gst_mpegts_find_descriptor_with_extension()
--   add support for SIT sections (Selection Information Tables)
--   expose event-from-section constructor gst_event_new_mpegts_section()
--   parse Audio Preselection Descriptor needed for Dolby AC-4
-
-GstWebRTC library + webrtcbin
-
--   Change the way in which sink pads and transceivers are matched
-    together to support easier usage. If a pad is created without a
-    specific index (i.e. using sink_%u as the pad template), then an
-    available compatible transceiver will be searched for. If a specific
-    index is requested (i.e. sink_1) then if a transceiver for that
-    m-line already exists, that transceiver must match the new sink pad
-    request. If there is no transceiver available in either scenario, a
-    new transceiver is created. If a mixture of both sink_1 and sink_%u
-    requests result in an impossible situation, an error will be
-    produced at pad request time or from create offer/answer.
-
--   webrtcbin now uses regular ICE nomination instead of libnice’s
-    default of aggressive ICE nomination. Regular ICE nomination is the
-    default recommended by various relevant standards and improves
-    connectivity in specific network scenarios.
-
--   Add support for limiting the port range used for RTP with the
-    addition of the min-rtp-port and max-rtp-port properties on the ICE
-    object.
-
--   Expose the SCTP transport as a property on webrtcbin to more closely
-    match the WebRTC specification.
-
--   Added support for taking into account the data channel transport
-    state when determining the value of the "connection-state" property.
-    Previous versions of the WebRTC spec did not include the data
-    channel state when computing this value.
-
--   Add configuration for choosing the size of the underlying sockets
-    used for transporting media data
-
--   Always advertise support for the transport-cc RTCP feedback protocol
-    as rtpbin supports it. For full support, the configured caps (input
-    or through codec-preferences) need to include the relevant RTP
-    header extension.
-
--   Numerous fixes to caps and media handling to fail-fast when an
-    incompatible situation is detected.
-
--   Improved support for attaching the required media after a remote
-    offer has been set.
-
--   Add support for dynamically changing the amount of FEC used for a
-    particular stream.
-
--   webrtcbin now stops further SDP processing at the first error it
-    encounters.
-
--   Completed support for either local or the remote closing a data
-    channel.
-
--   Various fixes when performing BUNDLEing of the media streams in
-    relation to RTX and FEC usage.
-
--   Add support for writing out QoS DSCP marking on outgoing packets to
-    improve reliability in some network scenarios.
-
--   Improvements to the statistics returned by the get-stats signal
-    including the addition of the raw statistics from the internal
-    RTPSource, the TWCC stats when available.
-
--   The webrtc library does not expose any objects anymore with public
-    fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
-GstCodecs and Video Parsers
-
--   Support for render delays to improve throughput across all CODECs
-    (used with NVDEC and V4L2).
--   lots of improvements to parsers and the codec parsing decoder base
-    classes (H.264, H.265, VP8, VP9, AV1, MPEG-2) used for various
-    hardware-accelerated decoder APIs.
-
-Bindings support
-
--   gst_allocation_params_new() allocates a GstAllocationParams struct
-    on the heap. This should only be used by bindings (and freed via
-    gst_allocation_params_free() afterwards). In C code you would
-    allocate this on the stack and only init it in place.
-
--   gst_debug_log_literal() can be used to log a string to the debug log
-    without going through any printf format expansion and associated
-    overhead. This is mostly useful for bindings such as the Rust
-    bindings which may have done their own formatting already .
-
--   Provide non-inlined versions of refcounting APIs for various
-    GStreamer mini objects, so that they can be consumed by bindings
-    (e.g. gstreamer-sharp): gst_buffer_ref, gst_buffer_unref,
-    gst_clear_buffer, gst_buffer_copy, gst_buffer_replace,
-    gst_buffer_list_ref, gst_buffer_list_unref, gst_clear_buffer_list,
-    gst_buffer_list_copy, gst_buffer_list_replace, gst_buffer_list_take,
-    gst_caps_ref, gst_caps_unref, gst_clear_caps, gst_caps_replace,
-    gst_caps_take, gst_context_ref, gst_context_unref, gst_context_copy,
-    gst_context_replace, gst_event_replace, gst_event_steal,
-    gst_event_take, gst_event_ref, gst_event_unref, gst_clear_event,
-    gst_event_copy, gst_memory_ref, gst_memory_unref, gst_message_ref,
-    gst_message_unref, gst_clear_message, gst_message_copy,
-    gst_message_replace, gst_message_take, gst_promise_ref,
-    gst_promise_unref, gst_query_ref, gst_query_unref, gst_clear_query,
-    gst_query_copy, gst_query_replace, gst_query_take, gst_sample_ref,
-    gst_sample_unref, gst_sample_copy, gst_tag_list_ref,
-    gst_tag_list_unref, gst_clear_tag_list, gst_tag_list_replace,
-    gst_tag_list_take, gst_uri_copy, gst_uri_ref, gst_uri_unref,
-    gst_clear_uri.
-
--   expose a GType for GstMiniObject
-
--   gst_device_provider_probe() now returns non-floating device object
-
-API Deprecations
-
--   gst_element_get_request_pad() has been deprecated in favour of the
-    newly-added gst_element_request_pad_simple() which does the exact
-    same thing but has a less confusing name that hopefully makes clear
-    that the function request a new pad rather than just retrieves an
-    already-existing request pad.
-
--   gst_discoverer_info_get_tags(), which for many files returns a
-    confusing mix of stream and container tags, has been deprecated in
-    favour of the container-specific and stream-specific functions,
-    gst_discoverer_container_info_get_tags() and
-    gst_discoverer_stream_info_get_tags().
-
--   gst_video_sink_center_rect() was deprecated in favour of the more
-    generic newly-added gst_video_center_rect().
-
--   The GST_MEMORY_FLAG_NO_SHARE flag has been deprecated, as it tends
-    to cause problems and prevents sub-buffering. If pooling or lifetime
-    tracking is required, memories should be allocated through a custom
-    GstAllocator instead of relying on the lifetime of the buffers the
-    memories were originally attached to, which is fragile anyway.
-
--   The GstPlayer high-level playback library is being replaced with the
-    new GstPlay library (see above). GstPlayer should be considered
-    deprecated at this point and will be marked as such in the next
-    development cycle. Applications should be ported to GstPlay.
-
--   Gstreamer Editing Services: ges_video_transition_set_border(),
-    ges_video_transition_get_border()
-    ges_video_transition_set_inverted()
-    ges_video_transition_is_inverted() have been deprecated, use
-    ges_timeline_element_set_children_properties() instead.
+-   this section will be filled in in due course
 
 Miscellaneous performance, latency and memory optimisations
 
 
 Miscellaneous performance, latency and memory optimisations
 
-More video conversion fast paths
-
--   v210 ↔ I420, YV12, Y42B, UYVY and YUY2
--   A420 → RGB
-
-Less jitter when waiting on the system clock
-
--   Better system clock wait accuracy, less jitter: where available,
-    clock_nanosleep is used for higher accuracy for waits below 500
-    usecs, and waits below 2ms will first use the regular waiting system
-    and then clock_nanosleep for the remainder. The various wait
-    implementation have a latency ranging from 50 to 500+ microseconds.
-    While this is not a major issue when dealing with a low number of
-    waits per second (for ex: video), it does introduce a non-negligible
-    jitter for synchronisation of higher packet rate systems.
-
-Video decoder subframe support
-
--   The GstVideoDecoder base class gained API to process input at the
-    sub-frame level. That way video decoders can start decoding slices
-    before they have received the full input frame in its entirety (to
-    the extent this is supported by the codec, of course). This helps
-    with CPU utilisation and reduces latency.
-
--   This functionality is now being used in the OpenJPEG JPEG 2000
-    decoder, the FFmpeg H.264 decoder (in case of NAL-aligned input) and
-    the OpenMAX H.264/H.265 decoders (in case of NAL-aligned input).
+-   this section will be filled in in due course
 
 Miscellaneous other changes and enhancements
 
 
 Miscellaneous other changes and enhancements
 
--   GstDeviceMonitor no longer fails to start just because one of the
-    device providers failed to start. That could happen for example on
-    systems where the pulseaudio device provider is installed, but
-    pulseaudio isn’t actually running but ALSA is used for audio
-    instead. In the same vein the device monitor now keeps track of
-    which providers have been started (via the new
-    gst_device_provider_is_started()) and only stops actually running
-    device providers when stopping the device monitor.
-
--   On embedded systems it can be useful to create a registry that can
-    be shared and read by multiple processes running as different users.
-    It is now possible to set the new GST_REGISTRY_MODE environment
-    variable to specify the file mode for the registry file, which by
-    default is set to be only user readable/writable.
-
--   GstNetClientClock will signal lost sync in case the remote time
-    resets (e.g. because device power cycles), by emitting the “synced”
-    signal with synced=FALSE parameter, so applications can take action.
-
--   gst_value_deserialize_with_pspec() allows deserialisation with a
-    hint for what the target GType should be. This allows for example
-    passing arrays of flags through the command line or
-    gst_util_set_object_arg(), eg: foo="<bar,bar+baz>".
-
--   It’s now possible to create an empty GstVideoOverlayComposition
-    without any rectangles by passing a NULL rectangle to
-    gst_video_overlay_composition_new(). This is useful for bindings and
-    simplifies application code in some places.
-
-Tracing framework, debugging and testing improvements
-
--   New factories tracer to list loaded elements (and other plugin
-    features). This can be useful to collect a list of elements needed
-    for an application, which in turn can be used to create a tailored
-    minimal GStreamer build that contains just the elements needed and
-    nothing else.
--   New plugin-feature-loaded tracing hook for use by tracers like the
-    new factories tracer
-
--   GstHarness: Add gst_harness_set_live() so that harnesses can be set
-    to non-live and return is-live=false in latency queries if needed.
-    Default behaviour is to always return is-live=true in latency
-    queries.
-
--   navseek: new "hold-eos" property. When enabled, the element will
-    hold back an EOS event until the next keystroke (via navigation
-    events). This can be used to keep a video sink showing the last
-    frame of a video pipeline until a key is pressed instead of tearing
-    it down immediately on EOS.
-
--   New fakeaudiosink element: mimics an audio sink and can be used for
-    testing and CI pipelines on systems where no audio system is
-    installed or running. It differs from fakesink in that it only
-    support audio caps and syncs to the clock by default like a normal
-    audio sink. It also implements the GstStreamVolume interface like
-    most audio sinks do.
-
--   New videocodectestsink element for video codec conformance testing:
-    Calculates MD5 checksums for video frames and skips any padding
-    whilst doing so. Can optionally also write back the video data with
-    padding removed into a file for easy byte-by-byte comparison with
-    reference data.
-
-Tools
-
-gst-inspect-1.0
+-   this section will be filled in in due course
 
 
--   Can sort the list of plugins by passing --sort=name as command line
-    option
+Tracing framework and debugging improvements
 
 
-gst-launch-1.0
+-   this section will be filled in in due course
 
 
--   will now error out on top-level properties that don’t exist and
-    which were silently ignored before
--   On Windows the high-resolution clock is enabled now, which provides
-    better clock and timer performance on Windows (see Windows section
-    below for more details).
-
-gst-play-1.0
-
--   New --start-position command line argument to start playback from
-    the specified position
--   Audio can be muted/unmuted in interactive mode by pressing the m
-    key.
--   On Windows the high-resolution clock is enabled now (see Windows
-    section below for more details)
-
-gst-device-monitor-1.0
-
--   New --include-hidden command line argument to also show “hidden”
-    device providers
-
-ges-launch-1.0
+Tools
 
 
--   New interactive mode that allows seeking and such. Can be disabled
-    by passing the --no-interactive argument on the command line.
--   Option to forward tags
--   Allow using an existing clip to determine the rendering format (both
-    topology and profile) via new --profile-from command line argument.
+-   this section will be filled in in due course
 
 GStreamer RTSP server
 
 
 GStreamer RTSP server
 
--   GstRTSPMediaFactory gained API to disable RTCP
-    (gst_rtsp_media_factory_set_enable_rtcp(), "enable-rtcp" property).
-    Previously RTCP was always allowed for all RTSP medias. With this
-    change it is possible to disable RTCP completely, irrespective of
-    whether the client wants to do RTCP or not.
-
--   Make a mount point of / work correctly. While not allowed by the
-    RTSP 2 spec, the RTSP 1 spec is silent on this and it is used in the
-    wild. It is now possible to use / as a mount path in
-    gst-rtsp-server, e.g. rtsp://example.com/ would work with this now.
-    Note that query/fragment parts of the URI are not necessarily
-    correctly handled, and behaviour will differ between various
-    client/server implementations; so use it if you must but don’t bug
-    us if it doesn’t work with third party clients as you’d hoped.
-
--   multithreading fixes (races, refcounting issues, deadlocks)
-
--   ONVIF audio backchannel fixes
-
--   ONVIF trick mode optimisations
-
--   rtspclientsink: new "update-sdp" signal that allows updating the SDP
-    before sending it to the server via ANNOUNCE. This can be used to
-    add additional metadata to the SDP, for example. The order and
-    number of medias must not be changed, however.
+-   this section will be filled in in due course
 
 GStreamer VAAPI
 
 
 GStreamer VAAPI
 
--   new AV1 decoder element (vaapiav1dec)
-
--   H.264 decoder: handle stereoscopic 3D video with frame packing
-    arrangement SEI messages
-
--   H.265 encoder: added Screen Content Coding extensions support
-
--   H.265 decoder: gained MAIN_444_12 profile support (decoded to
-    Y412_LE), and 4:2:2 12-bits support (decoded to Y212_LE)
-
--   vaapipostproc: gained BT2020 color standard support
-
--   vaapidecode: now generates caps templates dynamically at runtime in
-    order to advertise actually supported caps instead of all
-    theoretically supported caps.
-
--   GST_VAAPI_DRM_DEVICE environment variable to force a specified DRM
-    device when a DRM display is used. It is ignored when other types of
-    displays are used. By default /dev/dri/renderD128 is used for DRM
-    display.
+-   this section will be filled in in due course
 
 GStreamer OMX
 
 
 GStreamer OMX
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 GStreamer Editing Services and NLE
 
 
 GStreamer Editing Services and NLE
 
--   framepositioner: new "operator" property to access blending modes in
-    the compositor
--   timeline: Implement snapping to markers
--   smart-mixer: Add support for d3d11compositor and glvideomixer
--   titleclip: add "draw-shadow" child property
--   ges:// URI support to define a timeline from a description.
--   command-line-formatter
-    -   Add track management to timeline description
-    -   Add keyframe support
--   ges-launch-1.0:
-    -   Add an interactive mode where we can seek etc…
-    -   Add option to forward tags
-    -   Allow using an existing clip to determine the rendering format
-        (both topology and profile) via new --profile-from command line
-        argument.
--   Fix static build
+-   this section will be filled in in due course
 
 GStreamer validate
 
 
 GStreamer validate
 
--   report: Add a way to force backtraces on reports even if not a
-    critical issue (GST_VALIDATE_ISSUE_FLAGS_FORCE_BACKTRACE)
--   Add a flag to gst_validate_replace_variables_in_string() allow
-    defining how to resolve variables in structs
--   Add gst_validate_bin_monitor_get_scenario() to get the bin monitor
-    scenario, which is useful for applications that use Validate
-    directly.
--   Add an expected-values parameter to wait, message-type=XX allowing
-    more precise filtering of the message we are waiting for.
--   Add config file support: each test can now use a config file for the
-    given media file used to test.
--   Add support to check properties of object properties
--   scenario: Add an "action-done" signal to signal when an action is
-    done
--   scenario: Add a "run-command" action type
--   scenario: Allow forcing running action on idle from scenario file
--   scenario: Allow iterating over arrays in foreach
--   scenario: Rename ‘interlaced’ action to ‘non-blocking’
--   scenario: Add a non-blocking flag to the wait signal
+-   this section will be filled in in due course
 
 GStreamer Python Bindings
 
 
 GStreamer Python Bindings
 
--   Fixes for Python 3.10
--   Various build fixes
--   at least one known breaking change caused by g-i annotation changes
-    (see below)
+-   this section will be filled in in due course
 
 GStreamer C# Bindings
 
 
 GStreamer C# Bindings
 
--   Fix GstDebugGraphDetails enum
--   Updated to latest GtkSharp
--   Updated to include GStreamer 1.20 API
+-   this section will be filled in in due course
 
 GStreamer Rust Bindings and Rust Plugins
 
 
 GStreamer Rust Bindings and Rust Plugins
 
--   The GStreamer Rust bindings are released separately with a different
-    release cadence that’s tied to gtk-rs, but the latest release has
-    already been updated for the upcoming new GStreamer 1.20 API (v1_20
-    feature).
-
--   gst-plugins-rs, the module containing GStreamer plugins written in
-    Rust, has also seen lots of activity with many new elements and
-    plugins. See the New Elements section above for a list of new Rust
-    elements.
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the upcoming new GStreamer 1.22 API.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+-   FIXME: add new elements
+
+Rust audio plugins
+
+-   audiornnoise: New element for audio denoising which implements the
+    noise removal algorithm of the Xiph RNNoise library, in Rust
+-   rsaudioecho: Port of the audioecho element from gst-plugins-good
+    rsaudioloudnorm: Live audio loudness normalization element based on
+    the FFmpeg af_loudnorm filter
+-   claxondec: FLAC lossless audio codec decoder element based on the
+    pure-Rust claxon implementation
+-   csoundfilter: Audio filter that can use any filter defined via the
+    Csound audio programming language
+-   lewtondec: Vorbis audio decoder element based on the pure-Rust
+    lewton implementation
+
+Rust video plugins
+
+-   cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+    on a pure-Rust CD+G implementation, used for example by karaoke CDs
+-   cea608overlay: CEA-608 Closed Captions overlay element
+-   cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+    subtitles) converter
+-   tttocea608: CEA-608 Closed Captions from timed-text converter
+-   mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+-   sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+-   dav1dec: AV1 video decoder based on the dav1d decoder implementation
+    by the VLC project
+-   rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+    encoder implementation
+-   rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+    gst-plugins-good, not feature-equivalent yet
+-   rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+    implementations by the image-rs project
+
+Rust text plugins
+
+-   textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+    better screen-fitting, including hyphenation support for some
+    languages
+
+Rust network plugins
+
+-   reqwesthttpsrc: HTTP(S) source element based on the Rust
+    reqwest/hyper HTTP implementations and almost feature-equivalent
+    with the main GStreamer HTTP source souphttpsrc
+-   s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+-   awstranscriber: Live audio to timed text transcription element using
+    the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+-   sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+    on libsodium/NaCl
+-   togglerecord: Recording element that allows to pause/resume
+    recordings easily and considers keyframe boundaries
+-   fallbackswitch/fallbacksrc: Elements for handling potentially
+    failing (network) sources, restarting them on errors/timeout and
+    showing a fallback stream instead
+-   threadshare: Set of elements that provide alternatives for various
+    existing GStreamer elements but allow to share the streaming threads
+    between each other to reduce the number of threads
+-   rsfilesrc/rsfilesink: File source/sink elements as replacements for
+    the existing filesrc/filesink elements
 
 Build and Dependencies
 
 
 Build and Dependencies
 
--   Meson 0.59 or newer is now required to build GStreamer.
+-   this section will be filled in in due course
 
 
--   The GLib requirement has been bumped to GLib 2.56 or newer (from
-    March 2018).
+gst-build
 
 
--   The wpe plugin now requires wpe >= 2.28 and wpebackend-fdo >= 1.8
-
--   The souphttpsrc plugin is no longer linked against libsoup but
-    instead tries to pick up either libsoup2 or libsoup3 dynamically at
-    runtime. Distro packagers please ensure to add a dependency on one
-    of the libsoup runtimes to the gst-plugins-good package so that
-    there is actually a libsoup for the plugin to find!
-
-Explicit opt-in required for build of certain plugins with (A)GPL dependencies
-
-Some plugins have GPL- or AGPL-licensed dependencies and those plugins
-will no longer be built by default unless you have explicitly opted in
-to allow (A)GPL-licensed dependencies by passing -Dgpl=enabled to Meson,
-even if the required dependencies are available.
-
-See Building plugins with (A)GPL-licensed dependencies for more details
-and a non-exhaustive list of plugins affected.
-
-gst-build: replaced by mono repository
-
-See mono repository section above and the GStreamer mono repository FAQ.
+-   this section will be filled in in due course
 
 Cerbero
 
 
 Cerbero
 
@@ -1602,297 +198,132 @@ Cerbero is a meta build system used to build GStreamer plus dependencies
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
 on platforms where dependencies are not readily available, such as
 Windows, Android, iOS and macOS.
 
-General Cerbero improvements
+General improvements
 
 
--   Plugin removed: libvisual
--   New plugins: rtpmanagerbad and rist
+-   this section will be filled in in due course
 
 
-macOS / iOS specific Cerbero improvements
+macOS / iOS
 
 
--   XCode 12 support
--   macOS OS release support is now future-proof, similar to iOS
--   macOS Apple Silicon (ARM64) cross-compile support has been added,
-    including Universal binaries. There is a known bug regarding this on
-    ARM64.
--   Running Cerbero itself on macOS Apple Silicon (ARM64) is currently
-    experimental and is known to have bugs
+-   this section will be filled in in due course
 
 
-Windows specific Cerbero improvements
+Windows
 
 
--   Visual Studio 2022 support has been added
--   bootstrap is faster since it requires building fewer build-tools
-    recipes on Windows
--   package is faster due to better scheduling of recipe stages and
-    elimination of unnecessary autotools regeneration
--   The following plugins are no longer built on Windows:
-    -   a52dec (another decoder is still available in libav)
-    -   dvdread
-    -   resindvd
+-   this section will be filled in in due course
 
 Windows MSI installer
 
 
 Windows MSI installer
 
--   no major changes
+-   this section will be filled in in due course
 
 
-Linux specific Cerbero improvements
+Linux
 
 
--   Fedora, Debian OS release support is now more future-proof
--   Amazon Linux 2 support has been added
+-   this section will be filled in in due course
 
 
-Android specific Cerbero improvements
+Android
 
 
--   no major changes
+-   this section will be filled in in due course
 
 Platform-specific changes and improvements
 
 Android
 
 
 Platform-specific changes and improvements
 
 Android
 
--   No major changes
+-   this section will be filled in in due course
 
 macOS and iOS
 
 
 macOS and iOS
 
--   applemedia: add ProRes support to vtenc and vtdec
-
--   The GStreamer.framework location is now relocatable and is not
-    required to be /Library/Frameworks/
-
--   Cerbero now supports cross-compiling to macOS running on Apple
-    Silicon (ARM64), and Universal binaries are now available that can
-    be used on both X86_64 and ARM64 macOS.
+-   this section will be filled in in due course
 
 Windows
 
 
 Windows
 
--   On Windows the high-resolution clock is enabled now in the
-    gst-launch-1.0 and gst-play-1.0 command line tools, which provides
-    better clock and timer performance on Windows, at the cost of higher
-    power consumption. By default, without the high-resolution clock
-    enabled, the timer precision on Windows is system-dependent and may
-    be as bad as 15ms which is not good enough for many multimedia
-    applications. Developers may want to do the same in their Windows
-    applications if they think it’s a good idea for their application
-    use case, and depending on the Windows version they target. This is
-    not done automatically by GStreamer because on older Windows
-    versions (pre-Windows 10) this affects a global Windows setting and
-    also there’s a power consumption vs. performance trade-off that may
-    differ from application to application.
-
--   dxgiscreencapsrc now supports resolution changes
-
--   The wasapi2 audio plugin was rewritten and now has a higher rank
-    than the old wasapi plugin since it has a number of additional
-    features such as automatic stream routing, and no
-    known-but-hard-to-fix issues. The plugin is always built if the
-    Windows 10 SDK is available now.
-
--   The wasapi device providers now detect and notify dynamic device
-    additions/removals
-
--   d3d11screencapturesrc: new desktop capture element, including
-    GstDeviceProvider implementation to enumerate/select target monitors
-    for capture.
-
--   Direct3D11/DXVA decoder now supports AV1 and MPEG-2 codecs
-    (d3d11av1dec, d3d11mpeg2dec)
-
--   VP9 decoding got more reliable and stable thanks to a newly written
-    codec parser
-
--   Support for decoding interlaced H.264/AVC streams
+-   this section will be filled in in due course
 
 
--   Hardware-accelerated video deinterlacing (d3d11deinterlace) and
-    video mixing (d3d11compositor)
-
--   Video mixing with the Direct3D11 API (d3d11compositor)
+Linux
 
 
--   MediaFoundation API based hardware encoders gained the ability to
-    receive Direct3D11 textures as an input
+-   this section will be filled in in due course
 
 
--   Seungha’s blog post “GStreamer ❤ Windows: A primer on the cool stuff
-    you’ll find in the 1.20 release” describes many of the
-    Windows-related improvements in more detail
+Documentation improvements
 
 
-Linux
+-   this section will be filled in in due course
 
 
--   bluez: LDAC Bluetooth audio codec support in a2dpsink and avdtpsink,
-    as well as an LDAC RTP payloader (rtpldacpay) and an LDAC audio
-    encoder (ldacenc)
+Possibly Breaking Changes
 
 
--   kmssink: gained support for NV24, NV61, RGB16/BGR16 formats;
-    auto-detect NVIDIA Tegra driver
+-   this section will be filled in in due course
 
 
-Documentation improvements
+Known Issues
 
 
--   hardware-accelerated GPU plugins will now no longer always list all
-    the element variants for all available GPUs, since those are
-    system-dependent and it’s confusing for users to see those in the
-    documentation just because the GStreamer developer who generated the
-    docs had multiple GPUs to play with at the time. Instead just show
-    the default elements.
-
-Possibly Breaking and Other Noteworthy Behavioural Changes
-
--   gst_parse_launch(), gst_parse_bin_from_description() and friends
-    will now error out when setting properties that don’t exist on
-    top-level bins. They were silently ignored before.
-
--   The GstWebRTC library does not expose any objects anymore with
-    public fields. Instead properties have been added to replace that
-    functionality. If you are accessing such fields in your application,
-    switch to the corresponding properties.
-
--   playbin and uridecodebin now emit the source-setup signal before the
-    element is added to the bin and linked so that the source element is
-    already configured before any scheduling query comes in, which is
-    useful for elements such as appsrc or giostreamsrc.
-
--   The source element inside urisourcebin (used inside uridecodebin3
-    which is used inside playbin3) is no longer called "source". This
-    shouldn’t affect anyone hopefully, because there’s a "setup-source"
-    signal to configure the source element and no one should rely on
-    names of internal elements anyway.
-
--   The vp8enc element now expects bps (bits per second) for the
-    "temporal-scalability-target-bitrate" property, which is consistent
-    with the "target-bitrate" property. Since additional configuration
-    is required with modern libvpx to make temporal scaling work anyway,
-    chances are that very few people will have been using this property
-
--   vp8enc and vp9enc now default to “good quality” for the "deadline"
-    property rather then “best quality”. Having the deadline set to best
-    quality causes the encoder to be absurdly slow, most real-life users
-    will want the good quality tradeoff instead.
-
--   The experimental GstTranscoder library API in gst-plugins-bad was
-    changed from a GObject signal-based notification mechanism to a
-    GstBus/message-based mechanism akin to GstPlayer/GstPlay.
-
--   MPEG-TS SCTE-35 API: semantic change for SCTE-35 splice commands:
-    timestamps passed by the application should be in running time now,
-    since users of the API can’t really be expected to predict the local
-    PTS of the muxer.
-
--   The GstContext used by souphttpsrc to share the session between
-    multiple element instances has changed. Previously it provided
-    direct access to the internal SoupSession object, now it only
-    provides access to an opaque, internal type. This change is
-    necessary because SoupSession is not thread-safe at all and can’t be
-    shared safely between arbitrary external code and souphttpsrc.
-
--   Python bindings: GObject-introspection related Annotation fixes have
-    led to a case of a GstVideo.VideoInfo-related function signature
-    changing in the Python bindings (possibly one or two other cases
-    too). This is for a function that should never have been exposed in
-    the first place though, so the bindings are being updated to throw
-    an exception in that case, and the correct replacement API has been
-    added in form of an override.
+-   this section will be filled in in due course
 
 
-Known Issues
+-   Known regressions/blockers:
 
 
--   nothing in particular at this point (but also see possibly breaking
-    changes section above)
+    -   FIXME
 
 Contributors
 
 
 Contributors
 
-Aaron Boxer, Adam Leppky, Adam Williamson, Alba Mendez, Alejandro
-González, Aleksandr Slobodeniuk, Alexander Vandenbulcke, Alex Ashley,
-Alicia Boya García, Andika Triwidada, Andoni Morales Alastruey, Andrew
-Wesie, Andrey Moiseev, Antonio Ospite, Antonio Rojas, Arthur Crippa
-Búrigo, Arun Raghavan, Ashley Brighthope, Axel Kellermann, Baek, Bastien
-Nocera, Bastien Reboulet, Benjamin Gaignard, Bing Song, Binh Truong,
-Biswapriyo Nath, Brad Hards, Brad Smith, Brady J. Garvin, Branko
-Subasic, Camilo Celis Guzman, Chris Bass, ChrisDuncanAnyvision, Chris
-White, Corentin Damman, Daniel Almeida, Daniel Knobe, Daniel Stone,
-david, David Fernandez, David Keijser, David Phung, Devarsh Thakkar,
-Dinesh Manajipet, Dmitry Samoylov, Dmitry Shusharin, Dominique Martinet,
-Doug Nazar, Ederson de Souza, Edward Hervey, Emmanuel Gil Peyrot,
-Enrique Ocaña González, Ezequiel Garcia, Fabian Orccon, Fabrice
-Fontaine, Fernando Jimenez Moreno, Florian Karydes, Francisco Javier
-Velázquez-García, François Laignel, Frederich Munch, Fredrik Pålsson,
-George Kiagiadakis, Georg Lippitsch, Göran Jönsson, Guido Günther,
-Guillaume Desmottes, Guiqin Zou, Haakon Sporsheim, Haelwenn (lanodan)
-Monnier, Haihao Xiang, Haihua Hu, Havard Graff, He Junyan, Helmut
-Januschka, Henry Wilkes, Hosang Lee, Hou Qi, Ignacio Casal Quinteiro,
-Igor Kovalenko, Ilya Kreymer, Imanol Fernandez, Jacek Tomaszewski, Jade
-Macho, Jakub Adam, Jakub Janků, Jan Alexander Steffens (heftig), Jan
-Schmidt, Jason Carrete, Jason Pereira, Jay Douglass, Jeongki Kim, Jérôme
-Laheurte, Jimmi Holst Christensen, Johan Sternerup, John Hassell, John
-Lindgren, John-Mark Bell, Jonathan Matthew, Jordan Petridis, Jose
-Quaresma, Julian Bouzas, Julien, Kai Uwe Broulik, Kasper Steensig
-Jensen, Kellermann Axel, Kevin Song, Khem Raj, Knut Inge Hvidsten, Knut
-Saastad, Kristofer Björkström, Lars Lundqvist, Lawrence Troup, Lim Siew
-Hoon, Lucas Stach, Ludvig Rappe, Luis Paulo Fernandes de Barros, Luke
-Yelavich, Mads Buvik Sandvei, Marc Leeman, Marco Felsch, Marek Vasut,
-Marian Cichy, Marijn Suijten, Marius Vlad, Markus Ebner, Mart Raudsepp,
-Matej Knopp, Mathieu Duponchelle, Matthew Waters, Matthieu De Beule,
-Mengkejiergeli Ba, Michael de Gans, Michael Olbrich, Michael Tretter,
-Michal Dzik, Miguel Paris, Mikhail Fludkov, mkba, Nazar Mokrynskyi,
-Nicholas Jackson, Nicola Murino, Nicolas Dufresne, Niklas Hambüchen,
-Nikolay Sivov, Nirbheek Chauhan, Olivier Blin, Olivier Crete, Olivier
-Crête, Paul Goulpié, Per Förlin, Peter Boba, P H, Philippe Normand,
-Philipp Zabel, Pieter Willem Jordaan, Piotrek Brzeziński, Rafał
-Dzięgiel, Rafostar, raghavendra, Raghavendra, Raju Babannavar, Raleigh
-Littles III, Randy Li, Randy Li (ayaka), Ratchanan Srirattanamet, Raul
-Tambre, reed.lawrence, Ricky Tang, Robert Rosengren, Robert Swain, Robin
-Burchell, Roman Sivriver, R S Nikhil Krishna, Ruben Gonzalez, Ruslan
-Khamidullin, Sanchayan Maity, Scott Moreau, Sebastian Dröge, Sergei
-Kovalev, Seungha Yang, Sid Sethupathi, sohwan.park, Sonny Piers, Staz M,
-Stefan Brüns, Stéphane Cerveau, Stephan Hesse, Stian Selnes, Stirling
-Westrup, Théo MAILLART, Thibault Saunier, Tim, Timo Wischer, Tim-Philipp
-Müller, Tim Schneider, Tobias Ronge, Tom Schoonjans, Tulio Beloqui,
-tyler-aicradle, U. Artie Eoff, Ung, Val Doroshchuk, VaL Doroshchuk,
-Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Vivienne
-Watermeier, Vladimir Menshakov, Will Miller, Wim Taymans, Xabier
-Rodriguez Calvar, Xavier Claessens, Xℹ Ruoyao, Yacine Bandou, Yinhang
-Liu, youngh.lee, youngsoo.lee, yychao, Zebediah Figura, Zhang yuankun,
-Zhang Yuankun, Zhao, Zhao Zhili, , Aleksandar Topic, Antonio Ospite,
-Bastien Nocera, Benjamin Gaignard, Brad Hards, Carlos Falgueras García,
-Célestin Marot, Corentin Damman, Corentin Noël, Daniel Almeida, Daniel
-Knobe, Danny Smith, Dave Piché, Dmitry Osipenko, Fabrice Fontaine,
-fjmax, Florian Zwoch, Guillaume Desmottes, Haihua Hu, Heinrich Kruger,
-He Junyan, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig),
-Jean Felder, Jeongki Kim, Jiri Uncovsky, Joe Todd, Jordan Petridis,
-Krystian Wojtas, Marc-André Lureau, Marcin Kolny, Marc Leeman, Mark
-Nauwelaerts, Martin Reboredo, Mathieu Duponchelle, Matthew Waters,
-Mengkejiergeli Ba, Michael Gruner, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Crête, Philippe Normand, Rafał Dzięgiel, Ralf Sippl, Robert
-Mader, Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Seungha Yang,
-Stéphane Cerveau, Teh Yule Kim, Thibault Saunier, Thomas Klausner, Timo
-Wischer, Tim-Philipp Müller, Tobias Reineke, Tomasz Andrzejak, Trung Do,
-Tyler Compton, Ung, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Wim
-Taymans, wngecn, Wonchul Lee, wuchang li, Xavier Claessens, Xi Ruoyao,
-Yoshiharu Hirose, Zhao,
+Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro,
+Aleix Conchillo Flaqué, Alicia Boya García, Alireza Miryazdi, Andoni
+Morales Alastruey, Andrew Pritchard, Bastian Krause, Bastien Nocera,
+Benjamin Gaignard, Brad Hards, Branko Subasic, Bruce Liang, Camilo Celis
+Guzman, Carlos Falgueras García, Carlos Rafael Giani, Célestin Marot,
+Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan,
+Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel Almeida,
+Daniel Morin, Daniel Stone, Danny Smith, David Svensson Fors, Devin
+Anderson, Diogo Goncalves, Dmitry Osipenko, Dongil Park, Doug Nazar,
+Edward Hervey, Eli Schwartz, Elliot Chen, Enrique Ocaña González, Eric
+Knapp, Erwann Gouesbet, Fabian Orccon, Fabrice Fontaine, Fan F He,
+fduncanh, Filip Hanes, Florian Zwoch, Fuga Kato, George Kiagiadakis,
+Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
+Heiko Becker, He Junyan, Hoonhee Lee, Hosang Lee, Hou Qi, Ignacio Casal
+Quinteiro, Ignazio Pillai, Igor V. Kovalenko, Jakub Adam, James Cowgill,
+James Hilliard, Jan Alexander Steffens (heftig), Jan Schmidt, Jianhui
+Dai, jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
+Petridis, Joseph Donofry, Jose Quaresma, Junsoo Park, Khem Raj, Krystian
+Wojtas, László Károlyi, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek
+Vasut, Mark Nauwelaerts, Martin Dørum, Martin Reboredo, Mart Raudsepp,
+Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias Clasen,
+Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Mikhail Fludkov, Ming
+Qian, Myles Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête,
+Patricia Muscalu, Paweł Stawicki, Philippe Normand, Philipp Zabel,
+Pierre Bourré, Piotr Brzeziński, Rabindra Harlalka, Rafael Caricio,
+Rafael Sobral, Raul Tambre, Robert Mader, Robert Rosengren, Rouven
+Czerwinski, Ruben Gonzalez, Sanchayan Maity, Sangchul Lee, Sebastian
+Dröge, Sebastian Fricke, Sebastian Groß, Sebastian Mueller, Sebastian
+Wick, Sergei Kovalev, Seungha Yang, Sherrill Lin, Shingo Kitagawa,
+Stéphane Cerveau, Thibault Saunier, Tim Mooney, Tim-Philipp Müller,
+Tomasz Andrzejak, Tom Schuring, Tong Wu, toor, Tristan Matthews, Tulio
+Beloqui, U. Artie Eoff, Víctor Manuel Jáquez Leal, Vincent Cheah Beng
+Keat, Vivia Nikolaidou, Vivienne Watermeier, WANG Xuerui, Wonchul Lee,
+Wu Tong, Xabier Rodriguez Calvar, Xavier Claessens, Yatin Maan, Yeongjin
+Jeong, Zebediah Figura, Zhao Zhili, Zhiyuan Liu,
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
 
 … and many others who have contributed bug reports, translations, sent
 suggestions or helped testing.
 
-Stable 1.20 branch
+Stable 1.22 branch
 
 
-After the 1.20.0 release there will be several 1.20.x bug-fix releases
+After the 1.22.0 release there will be several 1.22.x bug-fix releases
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
 which will contain bug fixes which have been deemed suitable for a
 stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.20.x bug-fix releases will be made from
-the git 1.20 branch, which will be a stable branch.
+a bug-fix release usually. The 1.22.x bug-fix releases will be made from
+the git 1.22 branch, which will be a stable branch.
 
 
-1.20.0
+1.22.0
 
 
-1.20.0 was released on 3 February 2022.
+1.22.0 is scheduled to be released around December 2022.
 
 
-Schedule for 1.22
+Schedule for 1.24
 
 
-Our next major feature release will be 1.22, and 1.21 will be the
-unstable development version leading up to the stable 1.22 release. The
-development of 1.21/1.22 will happen in the git main branch.
+Our next major feature release will be 1.24, and 1.23 will be the
+unstable development version leading up to the stable 1.24 release. The
+development of 1.23/1.24 will happen in the git main branch of the
+GStreamer mono repository.
 
 
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.24 development cycle is yet to be confirmed.
 
 
-1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
-1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+1.24 will be backwards-compatible to the stable 1.22, 1.20, 1.18, 1.16,
+1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
 
 ------------------------------------------------------------------------
 
 These release notes have been prepared by Tim-Philipp Müller with
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 License: CC BY-SA 4.0
 
 License: CC BY-SA 4.0
index d358469..99eeb16 100644 (file)
@@ -1,17 +1,15 @@
-This is GStreamer core 1.20.0.
+This is GStreamer core 1.21.1.
 
 
-The GStreamer team is thrilled to announce a new major feature release
-of your favourite cross-platform multimedia framework!
+GStreamer 1.21 is the unstable development branch leading up to the next major
+stable version which will be 1.22.
 
 
-As always, this release is again packed with new features, bug fixes and
-other improvements.
+The 1.21 development series adds new features on top of the 1.20 series and is
+part of the API and ABI-stable 1.x release series of the GStreamer multimedia
+framework.
 
 
-The 1.20 release series adds new features on top of the 1.18 series and is
-part of the API and ABI-stable 1.x release series.
+Full release notes will one day be found at:
 
 
-Full release notes can be found at:
-
-  https://gstreamer.freedesktop.org/releases/1.20/
+  https://gstreamer.freedesktop.org/releases/1.22/
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
 
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
 shortly after the release.
@@ -80,7 +78,8 @@ for more details.
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
 For help and support, please subscribe to and send questions to the
 gstreamer-devel mailing list (see below for details).
 
-There is also a #gstreamer IRC channel on the OFTC IRC network.
+There is also a #gstreamer IRC channel on the OFTC IRC network, which is
+also bridged into the Matrix network.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
 
 Please do not submit support requests in GitLab, we only use it
 for bug tracking and merge requests review.
index 0129e65..0a7568e 100644 (file)
@@ -40,6 +40,16 @@ hierarchy, and a set of media-agnostic core elements.
 
  <release>
   <Version>
 
  <release>
   <Version>
+   <revision>1.21.1</revision>
+   <branch>main</branch>
+   <name></name>
+   <created>2022-10-04</created>
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.21.1.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
    <revision>1.20.0</revision>
    <branch>main</branch>
    <name></name>
index c719e79..5ef0242 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
 project('gstreamer', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])