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',
-  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,
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index c0757b3..32bb0c3 100644 (file)
 
  <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>
index d0523ea..3c0e738 100644 (file)
@@ -1,5 +1,5 @@
 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',
index 62ea0af..3ec468b 100644 (file)
@@ -1,5 +1,5 @@
 project('GStreamer manuals and tutorials', 'c',
-  version: '1.21.0.1',
+  version: '1.21.1',
   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_FADE_IN",
   "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_VASURFACE",
   "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_OPT_DITHER_THRESHOLD",
   "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_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_VA",
   "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_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_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_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_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_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_VA",
   "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_MEMORY_REFERENCE_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_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_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_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_QUERY_SCHEDULING",
   "GST_QUERY_SEEKING",
   "GST_QUERY_SEGMENT",
+  "GST_QUERY_SELECTABLE",
   "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_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_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_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_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_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_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_16L32S",
   "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_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_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_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",
   "GstAV1DecoderClass::decode_tile",
   "GstAV1DecoderClass::duplicate_picture",
   "GstAV1DecoderClass::end_picture",
+  "GstAV1DecoderClass::get_preferred_output_delay",
   "GstAV1DecoderClass::new_picture",
   "GstAV1DecoderClass::new_sequence",
   "GstAV1DecoderClass::output_picture",
   "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",
   "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",
   "GstBufferForeachMetaFunc",
   "GstBufferList",
   "GstBufferListFunc",
+  "GstBufferMapInfo",
   "GstBufferPool",
   "GstBufferPool.flushing",
   "GstBufferPool.object",
   "GstCodecAlphaDemux!alpha",
   "GstCodecAlphaDemux!sink",
   "GstCodecAlphaDemux!src",
+  "GstCodecTimestamper",
   "GstCollectData",
   "GstCollectData.ABI.abi.dts",
   "GstCollectData.buffer",
   "GstCpuReport!sink",
   "GstCpuReport!src",
   "GstCtType",
+  "GstCudaAllocator",
+  "GstCudaAllocator.parent",
+  "GstCudaAllocatorClass.parent_class",
   "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",
+  "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",
   "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",
   "GstDecklinkKeyerMode::external",
   "GstDecklinkKeyerMode::internal",
   "GstDecklinkKeyerMode::off",
+  "GstDecklinkMappingFormat",
+  "GstDecklinkMappingFormat::default",
+  "GstDecklinkMappingFormat::level-a",
+  "GstDecklinkMappingFormat::level-b",
   "GstDecklinkModes",
   "GstDecklinkModes::1080i50",
   "GstDecklinkModes::1080i5994",
   "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::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",
   "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",
   "GstGtkGLSink!sink",
   "GstGtkSink",
   "GstGtkSink!sink",
+  "GstGtkWaylandSink!sink",
   "GstH263Parse",
   "GstH263Parse!sink",
   "GstH263Parse!src",
+  "GstH264BitWriterResult",
   "GstH264BufferingPeriod",
   "GstH264ClockTimestamp",
   "GstH264ContentLightLevel",
   "GstH264DecoderClass::output_picture",
   "GstH264DecoderClass::start_picture",
   "GstH264DecoderCompliance",
+  "GstH264DecoderConfigRecord",
   "GstH264Dpb",
   "GstH264DpbBumpMode",
   "GstH264FramePacking",
   "GstH264SliceHdr",
   "GstH264SliceType",
   "GstH264StereoVideoInfo",
+  "GstH264Timestamper!sink",
+  "GstH264Timestamper!src",
+  "GstH264UserDataUnregistered",
   "GstH264VUIParams",
+  "GstH265BitWriterResult",
   "GstH265BufferingPeriod",
   "GstH265ContentLightLevel",
   "GstH265Decoder",
   "GstH265DecoderClass.start_picture",
   "GstH265DecoderClass::decode_slice",
   "GstH265DecoderClass::end_picture",
+  "GstH265DecoderClass::get_preferred_output_delay",
   "GstH265DecoderClass::new_picture",
   "GstH265DecoderClass::new_sequence",
   "GstH265DecoderClass::output_picture",
   "GstH265SliceType",
   "GstH265SubLayerHRDParams",
   "GstH265TimeCode",
+  "GstH265Timestamper!sink",
+  "GstH265Timestamper!src",
   "GstH265VPS",
   "GstH265VUIParams",
   "GstHDV1394Src",
   "GstHLSDemux",
   "GstHLSDemux!sink",
   "GstHLSDemux!src_%u",
+  "GstHLSDemux2!audio_%02u",
+  "GstHLSDemux2!sink",
+  "GstHLSDemux2!subtitle_%02u",
+  "GstHLSDemux2!video_%02u",
   "GstHanddetect",
   "GstHanddetect!sink",
   "GstHanddetect!src",
   "GstMemoryIsSpanFunction",
   "GstMemoryMapFullFunction",
   "GstMemoryMapFunction",
+  "GstMemoryMapInfo",
   "GstMemoryShareFunction",
   "GstMemoryUnmapFullFunction",
   "GstMemoryUnmapFunction",
   "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",
   "GstNavigationEventType",
   "GstNavigationInterface.iface",
   "GstNavigationInterface.send_event",
-  "GstNavigationInterface::send_event",
   "GstNavigationInterface.send_event_simple",
+  "GstNavigationInterface::send_event",
   "GstNavigationInterface::send_event_simple",
   "GstNavigationMessageType",
+  "GstNavigationModifierType",
   "GstNavigationQueryType",
   "GstNavigationtest",
   "GstNavigationtest!sink",
   "GstShout2send:port",
   "GstShout2send:protocol",
   "GstShout2send:public",
+  "GstShout2send:send-title-info",
   "GstShout2send:streamname",
   "GstShout2send:timeout",
   "GstShout2send:url",
-  "GstShout2send:username",
-  "GstShout2send:send-title-info",
   "GstShout2send:user-agent",
+  "GstShout2send:username",
   "GstSidClock",
   "GstSidClock::ntsc",
   "GstSidClock::pal",
   "GstTimeOverlayTimeLine",
   "GstTimeOverlayTimeLine::buffer-time",
   "GstTimeOverlayTimeLine::elapsed-running-time",
+  "GstTimeOverlayTimeLine::reference-timestamp",
   "GstTimeOverlayTimeLine::running-time",
   "GstTimeOverlayTimeLine::stream-time",
   "GstTimeOverlayTimeLine::time-code",
   "GstVPXEncTuning",
   "GstVPXEncTuning::psnr",
   "GstVPXEncTuning::ssim",
+  "GstVaAllocator",
   "GstVaBaseTransform",
   "GstVaDeinterlace!sink",
   "GstVaDeinterlace!src",
   "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",
+  "GstVaImplementation",
   "GstVaMpeg2dec!sink",
   "GstVaMpeg2dec!src",
+  "GstVaPool",
   "GstVaPostProc!sink",
   "GstVaPostProc!src",
   "GstVaVp8dec!sink",
   "GstVideoConvert:n-threads",
   "GstVideoConvert:primaries-mode",
   "GstVideoConvertSampleCallback",
+  "GstVideoConvertScale!sink",
+  "GstVideoConvertScale!src",
   "GstVideoConverter",
   "GstVideoCrop",
   "GstVideoCrop!sink",
   "GstVideoResampler.taps",
   "GstVideoResamplerFlags",
   "GstVideoResamplerMethod",
+  "GstVideoSEIUserDataUnregisteredMeta",
+  "GstVideoSEIUserDataUnregisteredMeta.data",
+  "GstVideoSEIUserDataUnregisteredMeta.meta",
+  "GstVideoSEIUserDataUnregisteredMeta.size",
+  "GstVideoSEIUserDataUnregisteredMeta.uuid",
   "GstVideoScale",
   "GstVideoScale!sink",
   "GstVideoScale!src",
   "GstVulkanMemoryAllocator",
   "GstVulkanMemoryAllocator.parent",
   "GstVulkanMemoryAllocatorClass.parent_class",
+  "GstVulkanOverlayCompositor!sink",
+  "GstVulkanOverlayCompositor!src",
   "GstVulkanPhysicalDevice",
   "GstVulkanPhysicalDevice.device",
   "GstVulkanPhysicalDevice.device_index",
   "GstVulkanQueue.parent",
   "GstVulkanQueue.queue",
   "GstVulkanQueueClass.parent_class",
+  "GstVulkanShaderSpv!sink",
+  "GstVulkanShaderSpv!src",
   "GstVulkanSink",
   "GstVulkanSink!sink",
   "GstVulkanSink:device",
   "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",
+  "GstWebRTCICEOnCandidateFunc",
   "GstWebRTCICERole",
   "GstWebRTCICEStream",
   "GstWebRTCICEStream.parent",
   "_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",
   "_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",
   "_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",
   "_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",
   "_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",
   "_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",
   "_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",
   "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",
   "audiocheblimit:type",
   "audioconvert",
   "audioconvert:dithering",
+  "audioconvert:dithering-threshold",
   "audioconvert:mix-matrix",
   "audioconvert:noise-shaping",
   "audiodynamic",
   "cc708overlay:window-h-pos",
   "cccombiner",
   "cccombiner:max-scheduled",
+  "cccombiner:output-padding",
   "cccombiner:schedule",
   "ccconverter",
   "ccconverter:cdp-mode",
   "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",
   "decklinkvideosink:hw-serial-number",
   "decklinkvideosink:keyer-level",
   "decklinkvideosink:keyer-mode",
+  "decklinkvideosink:mapping-format",
   "decklinkvideosink:mode",
   "decklinkvideosink:profile",
   "decklinkvideosink:timecode-format",
   "fail_unless_equals_uint64_hex",
   "fail_unless_message_error",
   "fakeaudiosink",
+  "fakeaudiosink::handoff",
+  "fakeaudiosink::preroll-handoff",
   "fakeaudiosink:async",
   "fakeaudiosink:blocksize",
   "fakeaudiosink:can-activate-pull",
   "fakesrc:sizetype",
   "fakesrc:sync",
   "fakevideosink",
+  "fakevideosink::handoff",
+  "fakevideosink::preroll-handoff",
   "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_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_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_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_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_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_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_set_va_display",
   "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_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_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_decoder_config_record_free",
   "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_parse_decoder_config_record",
   "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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_get_selected_pair",
   "gst_webrtc_ice_get_stun_server",
   "gst_webrtc_ice_get_turn_server",
   "gst_webrtc_ice_set_force_relay",
   "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",
   "h264parse",
   "h264parse:config-interval",
   "h264parse:update-timecode",
+  "h264timestamper",
   "h265parse",
   "h265parse:config-interval",
+  "h265timestamper",
   "handdetect",
   "handdetect:ROI-HEIGHT",
   "handdetect:ROI-WIDTH",
   "hdv1394src:port",
   "hdv1394src:use-avc",
   "hlsdemux",
+  "hlsdemux2",
+  "hlsdemux2:start-bitrate",
   "hlssink",
   "hlssink2",
   "hlssink2::delete-fragment",
   "kmssink:display-height",
   "kmssink:display-width",
   "kmssink:driver-name",
+  "kmssink:fd",
   "kmssink:force-modesetting",
   "kmssink:plane-id",
   "kmssink:plane-properties",
   "msmpeg4v3-encoder-rc-strategy",
   "msmpeg4v3-encoder-rc-strategy::ffmpeg",
   "mssdemux",
+  "mssdemux2",
   "mssdemux:max-queue-size-buffers",
   "mulawdec",
   "mulawenc",
   "mxfmux",
   "name",
   "navigationtest",
+  "navigationtest:display-mouse",
+  "navigationtest:display-touch",
   "navseek",
   "navseek:hold-eos",
   "navseek:seek-offset",
   "plugin-a52dec",
   "plugin-aasink",
   "plugin-accurip",
+  "plugin-adaptivedemux2",
   "plugin-adder",
   "plugin-adpcmdec",
   "plugin-adpcmenc",
   "plugin-alpha",
   "plugin-alphacolor",
   "plugin-alsa",
+  "plugin-amfcodec",
   "plugin-amrnb",
   "plugin-amrwbdec",
   "plugin-aom",
   "plugin-chromaprint",
   "plugin-closedcaption",
   "plugin-codecalpha",
+  "plugin-codectimestamper",
   "plugin-coloreffects",
   "plugin-colormanagement",
   "plugin-compositor",
   "plugin-gs",
   "plugin-gsm",
   "plugin-gtk",
+  "plugin-gtkwayland",
   "plugin-hls",
   "plugin-icydemux",
   "plugin-id3demux",
   "plugin-pulseaudio",
   "plugin-qmlgl",
   "plugin-qroverlay",
+  "plugin-qsv",
   "plugin-rawparse",
   "plugin-realmedia",
   "plugin-removesilence",
   "plugin-video4linux2",
   "plugin-videobox",
   "plugin-videoconvert",
+  "plugin-videoconvertscale",
   "plugin-videocrop",
   "plugin-videofilter",
   "plugin-videofiltersbad",
   "rfbsrc:password",
   "rfbsrc:port",
   "rfbsrc:shared",
+  "rfbsrc:uri",
   "rfbsrc:use-copyrect",
   "rfbsrc:version",
   "rfbsrc:view-only",
   "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: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:rtcp-sync-send-time",
   "rtpbin:rtp-profile",
   "rtpbin:sdes",
+  "rtpbin:ts-offset-smoothing-factor",
   "rtpbin:use-pipeline-clock",
   "rtpbvdepay",
   "rtpbvpay",
   "rtphdrextclientaudiolevel",
   "rtphdrextclientaudiolevel:vad",
   "rtphdrextcolorspace",
+  "rtphdrextmid",
+  "rtphdrextmid:mid",
+  "rtphdrextntp64",
+  "rtphdrextntp64:every-packet",
+  "rtphdrextntp64:interval",
+  "rtphdrextrepairedstreamid",
+  "rtphdrextrepairedstreamid:rid",
+  "rtphdrextstreamid",
+  "rtphdrextstreamid:rid",
   "rtphdrexttwcc",
   "rtphdrexttwcc:n-streams",
   "rtpilbcdepay",
   "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:rtx-retry-timeout",
   "rtpjitterbuffer:rtx-stats-timeout",
   "rtpjitterbuffer:stats",
+  "rtpjitterbuffer:sync-interval",
   "rtpjitterbuffer:ts-offset",
   "rtpjpegdepay",
   "rtpjpegpay",
   "rtponviftimestamp:ntp-offset",
   "rtponviftimestamp:set-e-bit",
   "rtponviftimestamp:set-t-bit",
+  "rtponviftimestamp:use-reference-timestamps",
   "rtpopusdepay",
   "rtpopuspay",
   "rtpopuspay:dtx",
   "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:ssrc-map",
   "rtprtxsend",
+  "rtprtxsend::add-extension",
+  "rtprtxsend::clear-extensions",
   "rtprtxsend:clock-rate-map",
   "rtprtxsend:max-size-packets",
   "rtprtxsend:max-size-time",
   "rtspsrc::request-rtcp-key",
   "rtspsrc::select-stream",
   "rtspsrc::set-parameter",
+  "rtspsrc:add-reference-timestamp-meta",
   "rtspsrc:backchannel",
   "rtspsrc:buffer-mode",
   "rtspsrc:connection-speed",
   "shout2send:port",
   "shout2send:protocol",
   "shout2send:public",
+  "shout2send:send-title-info",
   "shout2send:streamname",
   "shout2send:timeout",
   "shout2send:url",
-  "shout2send:username",
-  "shout2send:send-title-info",
   "shout2send:user-agent",
+  "shout2send:username",
   "siddec",
   "siddec:blocksize",
   "siddec:clock",
   "testsink:md5",
   "testsink:timestamp-deviation",
   "testsrcbin",
+  "testsrcbin:expose-sources-async",
   "testsrcbin:stream-types",
   "textoverlay",
   "textrender",
   "timeoverlay",
   "timeoverlay:datetime-epoch",
   "timeoverlay:datetime-format",
+  "timeoverlay:reference-timestamp-caps",
   "timeoverlay:show-times-as-dates",
   "timeoverlay:time-mode",
   "tinyalsasink",
   "uridecodebin:download",
   "uridecodebin:expose-all-streams",
   "uridecodebin:force-sw-decoders",
+  "uridecodebin:post-stream-topology",
   "uridecodebin:ring-buffer-max-size",
   "uridecodebin:source",
   "uridecodebin:subtitle-encoding",
   "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",
   "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",
   "videorate:drop-only",
   "videorate:duplicate",
   "videorate:in",
+  "videorate:max-closing-segment-duplication-duration",
   "videorate:max-duplication-time",
   "videorate:max-rate",
   "videorate:new-pref",
   "vulkancolorconvert",
   "vulkandownload",
   "vulkanimageidentity",
+  "vulkanoverlaycompositor",
+  "vulkanshaderspv",
+  "vulkanshaderspv:fragment",
+  "vulkanshaderspv:fragment-location",
+  "vulkanshaderspv:vertex",
+  "vulkanshaderspv:vertex-location",
   "vulkansink",
   "vulkansink:device",
   "vulkansink:force-aspect-ratio",
   "waylandsink",
   "waylandsink:display",
   "waylandsink:fullscreen",
+  "waylandsink:render-rectangle",
+  "waylandsink:rotate-method",
   "webmmux",
   "webpdec",
   "webpdec:bypass-filtering",
   "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",
   "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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 077c182..453f34a 100644 (file)
@@ -32,6 +32,16 @@ GStreamer library for creating audio and video editors
 
  <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>
index 79caed7..02e6735 100644 (file)
@@ -1,5 +1,5 @@
 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' ])
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)
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 50f7d81..75806fe 100644 (file)
@@ -34,6 +34,16 @@ colorspace conversion elements.
 
  <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>
index 661de7d..41fa130 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-libav', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 9603983..411afbf 100644 (file)
@@ -33,6 +33,16 @@ a basic collection of elements
 
  <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>
index 05c4b68..9f9bfe0 100644 (file)
@@ -1,5 +1,5 @@
 project('gst-omx', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 3ce24dd..b3c89e1 100644 (file)
@@ -35,6 +35,16 @@ real live maintainer, or some actual wide use.
 
  <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>
index 8901992..3b8cdbe 100644 (file)
@@ -1,5 +1,5 @@
 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' ])
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 38991a5..0a59d41 100644 (file)
@@ -36,6 +36,16 @@ A wide range of video and audio decoders, encoders, and filters are included.
 
  <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>
index 42e2b29..b6c11cf 100644 (file)
@@ -1,5 +1,5 @@
 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' ])
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 80b8db2..216033c 100644 (file)
                         "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",
                         "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",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.21.0.1",
+                        "default": "GStreamer/1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer 1.21.0.1",
+                        "default": "GStreamer 1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
                         "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",
index 232c33c..4be8425 100644 (file)
@@ -34,6 +34,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library).
 
  <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>
index e3a1b04..dd8eadc 100644 (file)
@@ -1,5 +1,5 @@
 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' ])
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 2aa374b..198d096 100644 (file)
@@ -35,6 +35,16 @@ might be widely known to present patent problems.
 
  <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>
index 4bb67f4..03fc6c9 100644 (file)
@@ -1,5 +1,5 @@
 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' ])
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 95c22b0..667e30b 100644 (file)
@@ -32,6 +32,16 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli
 
  <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>
index 3def112..2748296 100644 (file)
@@ -1,5 +1,5 @@
 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',
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 4d08a04..d94ee52 100644 (file)
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.21.0.1",
+                        "default": "GStreamer/1.21.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
index cac5f62..642e928 100644 (file)
@@ -32,6 +32,16 @@ RTSP server library based on GStreamer
 
  <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>
index eb86469..d613302 100644 (file)
@@ -1,5 +1,5 @@
 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'])
 
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'
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 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_NANO = 1;
+               public const int PLUGINS_BASE_VERSION_NANO = 0;
 #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 VERSION_MICRO = 0;
+               public const int VERSION_MICRO = 1;
                public const int VERSION_MINOR = 21;
-               public const int VERSION_NANO = 1;
+               public const int VERSION_NANO = 0;
 #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="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">
       <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">
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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 0cbaa83..23afbd6 100644 (file)
 
  <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>
index 167f288..4805970 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer-vaapi', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   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:
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.
 
-Last updated: Wednesday 2 February 2022, 23:30 UTC (log)
+Last updated: Tuesday 4 October 2022, 00:00 UTC (log)
 
 Introduction
 
@@ -18,1583 +30,167 @@ fixes and other improvements.
 
 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
 
--   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 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
 
--   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
 
+-   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:
 
--   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
 
-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
 
-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
 
--   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
 
--   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
 
--   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
 
--   subframe support in H.264/H.265 decoders
+-   this section will be filled in in due course
 
 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
 
--   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
 
--   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
 
--   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
 
--   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
 
--   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
 
@@ -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.
 
-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
 
--   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
 
--   No major changes
+-   this section will be filled in in due course
 
 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
 
--   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
 
-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.
 
-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
-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
-contributions from Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan,
-Sebastian Dröge and Seungha Yang.
+contributions from …
 
 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.
@@ -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).
 
-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.
index 0129e65..0a7568e 100644 (file)
@@ -40,6 +40,16 @@ hierarchy, and a set of media-agnostic core elements.
 
  <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>
index c719e79..5ef0242 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer', 'c',
-  version : '1.21.0.1',
+  version : '1.21.1',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])