summaryrefslogtreecommitdiff
path: root/subprojects/gst-devtools/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/gst-devtools/NEWS')
-rw-r--r--subprojects/gst-devtools/NEWS1172
1 files changed, 78 insertions, 1094 deletions
diff --git a/subprojects/gst-devtools/NEWS b/subprojects/gst-devtools/NEWS
index 9802493d32..27c35b47a5 100644
--- a/subprojects/gst-devtools/NEWS
+++ b/subprojects/gst-devtools/NEWS
@@ -1,1239 +1,223 @@
-GStreamer 1.22 Release Notes
+GStreamer 1.24 Release Notes
-GStreamer 1.22.0 was originally released on 23 January 2023.
+GStreamer 1.24 has not been released yet. It is scheduled for release ASAP.
-See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
-version of this document.
+GStreamer 1.23.1 is the current API unstable development snapshot that is being developed in the git main branch which will
+eventually become the upcoming GStreamer 1.24 stable release.
-Last updated: Monday 23 January 2023, 17:00 UTC (log)
+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.
Introduction
-The GStreamer team is proud to announce a new major feature release in
-the stable 1.x API series of your favourite cross-platform multimedia
-framework!
+The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite
+cross-platform multimedia framework!
-As always, this release is again packed with many new features, bug
-fixes and other improvements.
+As always, this release is again packed with many new features, bug fixes and other improvements.
Highlights
-- AV1 video codec support improvements
-- New HLS, DASH and Microsoft Smooth Streaming adaptive streaming
- clients
-- Qt6 support for rendering video inside a QML scene
-- Minimal builds optimised for binary size, including only the
- individual elements needed
-- Playbin3, Decodebin3, UriDecodebin3, Parsebin enhancements and
- stabilisation
-- WebRTC simulcast support and support for Google Congestion Control
-- WebRTC-based media server ingestion/egress (WHIP/WHEP) support
-- New easy to use batteries-included WebRTC sender plugin
-- Easy RTP sender timestamp reconstruction for RTP and RTSP
-- ONVIF timed metadata support
-- New fragmented MP4 muxer and non-fragmented MP4 muxer
-- New plugins for Amazon AWS storage and audio transcription services
-- New gtk4paintablesink and gtkwaylandsink renderers
-- New videocolorscale element that can convert and scale in one go for
- better performance
-- High bit-depth video improvements
-- Touchscreen event support in navigation API
-- Rust plugins now shipped in macOS and Windows/MSVC binary packages
-- H.264/H.265 timestamp correction elements for PTS/DTS reconstruction
- before muxers
-- Improved design for DMA buffer sharing and modifier handling for
- hardware-accelerated video decoders/encoders/filters and
- capturing/rendering on Linux
-- Video4Linux2 hardware accelerated decoder improvements
-- CUDA integration and Direct3D11 integration and plugin improvements
-- New H.264 / AVC, H.265 / HEVC and AV1 hardware-accelerated video
- encoders for AMD GPUs using the Advanced Media Framework (AMF) SDK
-- applemedia: H.265 / HEVC video encoding + decoding support
-- androidmedia: H.265 / HEVC video encoding support
-- New “force-live” property for audiomixer, compositor, glvideomixer,
- d3d11compositor etc.
-- Lots of new plugins, features, performance improvements and bug
- fixes
+- This section will be completed in due course
Major new features and changes
-AV1 video codec support improvements
-
-AV1 is a royalty free next-generation video codec by AOMedia and a free
-alternative to H.265/HEVC.
-
-While supported in earlier versions of GStreamer already, this release
-saw a lot of improvements across the board:
-
-- Support for hardware encoding and decoding via VAAPI/VA, AMF, D3D11,
- NVCODEC, QSV and Intel MediaSDK. Hardware codecs for AV1 are slowly
- becoming available in embedded systems and desktop GPUs (AMD, Intel,
- NVIDIA), and these can now be used via GStreamer.
-
-- New AV1 RTP payloader and depayloader elements.
-
-- New encoder settings in the AOM reference encoder-based av1enc
- element.
-
-- Various improvements in the AV1 parser and in the MP4/Matroska/WebM
- muxers/demuxers.
-
-- dav1d and rav1e based software decoder/encoder elements shipped as
- part of the binaries.
-
-- AV1 parser improvements and various bugfixes all over the place.
-
-Touchscreen event support in Navigation API
-
-The Navigation API supports the sending of key press events and mouse
-events through a GStreamer pipeline. Typically these will be picked up
-by a video sink on which these events happen and then the event is
-transmitted into the pipeline so it can be handled by elements inside
-the pipeline if it wasn’t handled by the application.
-
-This has traditionally been used for DVD menu support, but can also be
-used to forward such inputs to source elements that render a web page
-using a browser engine such as WebKit or Chromium.
-
-This API has now gained support for touchscreen events, and this has
-been implemented in various plugins such as the GTK, Qt, XV, and x11
-video sinks as well as the wpevideosrc element.
-
-GStreamer CUDA integration
-
-- New gst-cuda library
-- integration with D3D11 and NVIDIA dGPU NVMM elements
-- new cudaconvertscale element
-
-GStreamer Direct3D11 integration
-
-- New gst-d3d11 public library
- - gst-d3d11 library is not integrated with GStreamer documentation
- system yet. Please refer to the examples
-- d3d11screencapture: Add Windows Graphics Capture API based capture
- mode, including Win32 application window capturing
-- d3d11videosink and d3d11convert can support flip/rotation and crop
- meta
-- d3d11videosink: New emit-present property and present signal so that
- applications can overlay an image on Direct3D11 swapchain’s
- backbuffer via Direct3D/Direct2D APIs. See also C++ and Rust
- examples
-- d3d11compositor supports YUV blending/composing without intermediate
- RGB(A) conversion to improve performance
-- Direct3D11 video decoders are promoted to GST_RANK_PRIMARY or
- higher, except for the MPEG2 decoder
-
-H.264/H.265 timestamp correction elements
-
-- Muxers are often picky and need proper PTS/DTS timestamps set on the
- input buffers, but that can be a problem if the encoded input media
- stream comes from a source that doesn’t provide proper signalling of
- DTS, such as is often the case for RTP, RTSP and WebRTC streams or
- Matroska container files. Theoretically parsers should be able to
- fix this up, but it would probably require fairly invasive changes
- in the parsers, so two new elements h264timestamper and
- h265timestamper bridge the gap in the meantime and can reconstruct
- missing PTS/DTS.
-
-Easy sender timestamp reconstruction for RTP and RTSP
-
-- it was always possible to reconstruct and retrieve the original RTP
- sender timestamps in GStreamer, but required a fair bit of
- understanding of the internal mechanisms and the right property
- configuration and clock setup.
-
-- rtspsrc and rtpjitterbuffer gained a new
- “add-reference-timestamp-meta” property that if set puts the
- original absolute reconstructed sender timestamps on the output
- buffers via a meta. This is particularly useful if the sender is
- synced to an NTP clock or PTP clock. The original sender timestamps
- are either based on the RTCP NTP times, NTP RTP header extensions
- (RFC6051) or RFC7273-style clock signalling.
-
-Qt6 support
-
-- new qml6glsink element for Qt6 similar to the existing Qt5 element.
- Matching source and overlay elements will hopefully follow in the
- near future.
-
-OpenGL + Video library enhancements
-
-- Support for new video formats (NV12_4L4, NV12_16L32S, NV12_8L128,
- NV12_10BE_8L128) and dmabuf import in more formats (Y410, Y212_LE,
- Y212_BE, Y210, NV21, NV61)
-
-- Improved support for tiled formats with arbitrary tile dimensions,
- as needed by certain hardware decoders/encoders
-
-- glvideomixer: New “crop-left,”crop-right, “crop-top” and
- “crop-bottom” pad properties for cropping inputs
-
-- OpenGL support for gst_video_sample_convert():
-
- - Used for video snapshotting and thumbnailing, to convert buffers
- retrieved from appsinks or sink “last-sample” properties in
- JPG/PNG thumbnails.
- - This function can now take samples and buffers backed by GL
- textures as input and will automatically plug a gldownload
- element in that case.
-
-High bit-depth support (10, 12, 16 bits per component value) improvements
-
-- compositor can now handle any supported input format and also mix
- high-bitdepth (10-16 bit) formats (naively)
-
-- videoflip has gained support for higher bit depth formats.
-
-- vp9enc, vp9dec now support 12-bit formats and also 10-bit 4:4:4
-
-WebRTC
-
-- Allow insertion of bandwidth estimation elements e.g. for Google
- Congestion Control (GCC) support
-
-- Initial support for sending or receiving simulcast streams
-
-- Support for asynchronous host resolution for STUN/TURN servers
-
-- GstWebRTCICE was split into base classes and implementation to make
- it possible to plug custom ICE implementations
-
-- webrtcsink: batteries-included WebRTC sender (Rust)
-
-- whipsink: WebRTC HTTP ingest (WHIP) to a MediaServer (Rust)
-
-- whepsrc: WebRTC HTTP egress (WHEP) from a MediaServer (Rust)
-
-- Many other improvements and bug fixes
-
-New HLS, DASH and MSS adaptive streaming clients
-
-A new set of “adaptive demuxers” to support HLS, DASH and MSS adaptive
-streaming protocols has been added. They provide improved performance,
-new features and better stream compatibility compared to the previous
-elements. These new elements require a “streams-aware” pipeline such as
-playbin3, uridecodebin3 or urisourcebin.
-
-The previous elements’ design prevented implementing several use-cases
-and fixing long-standing issues. The new elements were re-designed from
-scratch to tackle those:
-
-- Scheduling Only 3 threads are present, regardless of the number of
- streams selected. One in charge of downloading fragments and
- manifests, one in charge of outputting parsed data downstream, and
- one in charge of scheduling. This improves performance, resource
- usage and latency.
-
-- Better download control The elements now directly control the
- scheduling and download of manifests and fragments using libsoup
- directly instead of depending on external elements for downloading.
-
-- Stream selection, only the selected streams are downloaded. This
- improves bandwith usage. Switching stream is done in such a way to
- ensure there are no gaps, meaning the new stream will be switched to
- only once enough data for it has been downloaded.
-
-- Internal parsing, the downloaded streams are parsed internally. This
- allows the element to fully respect the various specifications and
- offer accurate buffering, seeking and playback. This is especially
- important for HLS streams which require parsing for proper
- positioning of streams.
-
-- Buffering and adaptive rate switching, the new elements handle
- buffering internally which allows them to have a more accurate
- visibility of which bandwith variant to switch to.
-
-Playbin3, Decodebin3, UriDecodebin3, Parsebin improvements
-
-The “new” playback elements introduced in 1.18 (playbin3 and its various
-components) have been refactored to allow more use-cases and improve
-performance. They are no longer considered experimental, so applications
-using the legacy playback elements (playbin and (uri)decodebin) can
-migrate to the new components to benefit from these improvements.
-
-- Gapless The “gapless” feature allows files and streams to be
- fetched, buffered and decoded in order to provide a “gapless”
- output. This feature has been refactored extensively in the new
- components:
- - A single (uri)decodebin3 (and therefore a single set of
- decoders) is used. This improves memory and cpu usage, since on
- identical codecs a single decoder will be used.
- - The “next” stream to play will be pre-rolled “just-in-time”
- thanks to the buffering improvements in urisourcebin (see below)
- - This feature is now handled at the uridecodebin3 level.
- Applications that wish to have a “gapless” stream and process it
- (instead of just outputting it, for example for transcoding,
- retransmission, …) can now use uridecodebin3 directly. Note that
- a streamsynchronizer element is required in that case.
-- Buffering improvements The urisourcebin element is in charge of
- fetching and (optionally) buffering/downloading the stream. It has
- been extended and improved:
- - When the parse-streams property is used (by default in
- uridecodebin3 and playbin3), compatible streams will be demuxed
- and parsed (via parsebin) and buffering will be done on the
- elementary streams. This provides a more accurate handling of
- buffering. Previously buffering was done on a best-effort basis
- and was mostly wrong (i.e. downloading more than needed).
- - Applications can use urisourcebin with this property as a
- convenient way of getting elementary streams from a given URI.
- - Elements can handle buffering themselves (such as the new
- adaptive demuxers) by answering the GST_QUERY_BUFFERING query.
- In that case urisourcebin will not handle it.
-- Stream Selection Efficient stream selection was previously only
- possible within decodebin3. The downside is that this meant that
- upstream elements had to provide all the streams from which to chose
- from, which is inefficient. With the addition of the
- GST_QUERY_SELECTABLE query, this can now be handled by elements
- upstream (i.e. sources)
- - Elements that can handle stream selection internally (such as
- the new adaptive demuxer elements) answer that query, and handle
- the stream selection events themselves.
- - In this case, decodebin3 will always process all streams that
- are provided to it.
-- Instant URI switching This new feature allows switching URIs
- “instantly” in playbin3 (and uridecodebin3) without having to change
- states. This mimics switching channels on a television.
- - If compatible, decoders will be re-used, providing lower
- latency/cpu/memory than by switching states.
- - This is enabled by setting the instant-uri property to true,
- setting the URI to switch to immediately, and then disabling the
- instant-uri property again afterwards.
-- playbin3, decodebin3, uridecodebin3, parsebin, and urisrc are no
- longer experimental
- - They were originally marked as ‘technology preview’ but have
- since seen extensive usage in production settings, so are
- considered ready for general use now.
-
-Fraunhofer AAC audio encoder HE-AAC and AAC-LD profile support
-
-- fdkaacenc:
- - Support for encoding to HE-AACv1 and HE-AACv2 profile
- - Support for encoding to AAC Low Delay (LD) profile
- - Advanced bitrate control options via new “rate-control”,
- “vbr-preset”, “peak-bitrate”, and “afterburner” properties
-
-RTP rapid synchronization support in the RTP stack (RFC6051)
-
-RTP provides several mechanisms how streams can be synchronized relative
-to each other, and how absolute sender times for RTP packets can be
-obtained. One of these mechanisms is via RTCP, which has the
-disadvantage that the synchronization information is only distributed
-out-of-band and usually some time after the start.
-
-GStreamer’s RTP stack, specifically the rtpbin, rtpsession and
-rtpjitterbuffer elements, now also have support for retrieving and
-sending the same synchronization information in-band via RTP header
-extensions according to RFC6051 (Rapid Synchronisation of RTP Flows).
-Only 64-bit timestamps are supported currently.
-
-This provides per packet synchronization information from the very
-beginning of a stream and allows accurate inter-stream, and (depending
-on setup) inter-device, synchronization at the receiver side.
-
-ONVIF XML Timed Metadata support
-
-The ONVIF standard implemented by various security cameras also
-specifies a format for timed metadata that is transmitted together with
-the audio/video streams, usually over RTSP.
-
-Support for this timed metadata is implemented in the MP4 demuxer now as
-well as the new fragmented MP4 muxer and the new non-fragmented MP4
-muxer from the GStreamer Rust plugins. Additionally, the new onvif
-plugin ‒ which is part of the GStreamer Rust plugins ‒ provides general
-elements for handling the metadata and e.g. overlaying certain parts of
-it over a video stream.
-
-As part of this support for absolute UTC times was also implemented
-according to the requirements of the ONVIF standards in the
-corresponding elements.
-
-MP3 gapless playback support
-
-While MP3 can probably considered a legacy format at this point, a new
-feature was added with this release.
-
-When playing back plain MP3 files, i.e. outside a container format,
-switches between files can now be completely gapless if the required
-metadata is provided inside the file. There is no standardized metadata
-for this, but the LAME MP3 encoder writes metadata that can be parsed by
-the mpegaudioparse element now and forwarded to decoders for ensuring
-removal of padding samples at the front and end of MP3 files.
-
-“force-live” property for audio + video aggregators
-
-This is a quality of life fix for playout and streaming applications
-where it is common to have audio and video mixer elements that should
-operate in live mode from the start and produce output continuously.
-
-Often one would start a pipeline without any inputs hooked up to these
-mixers in the beginning, and up until now there was no way to easily
-force these elements into live mode from the start. One would have to
-add an initial live video or audio test source as dummy input to achieve
-this.
-
-The new “force-live” property makes these audio and video aggregators
-start in live mode without the need for any dummy inputs, which is
-useful for scenarios where inputs are only added after starting the
-pipeline.
-
-This new property should usually be used in connection with the
-“min-upstream-latency” property, i.e. you should always set a non-0
-minimum upstream latency then.
-
-This is now supported in all GstAudioAggregator and GstVideoAggregator
-subclasses such as audiomixer, audiointerleave, compositor,
-glvideomixer, d3d11compositor, etc.
+- This section will be completed in due course
New elements and plugins
-- new cudaconvertscale element that can convert and scale in one pass
-
-- new gtkwaylandsink element based on gtksink, but similar to
- waylandsink and uses Wayland APIs directly instead of rendering with
- Gtk/Cairo primitives. This approach is only compatible with Gtk3,
- and like gtksink this element only supports Gtk3.
-
-- new h264timestamper and h265timestamper elements to reconstruct
- missing pts/dts from inputs that might not provide them such as
- e.g. RTP/RTSP/WebRTC inputs (see above)
-
-- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders
-
-- new msdkav1enc AV1 video encoder element
-
-- new nvcudah264enc, nvcudah265enc, nvd3d11h264enc, and nvd3d11h265enc
- NVIDIA GPU encoder elements to support zero-copy encoding, via CUDA
- and Direct3D11 APIs, respectively
-
-- new nvautogpuh264enc and nvautogpuh265enc NVIDIA GPU encoder
- elements: The auto GPU elements will automatically select a target
- GPU instance in case multiple NVIDIA desktop GPUs are present, also
- taking into account the input memory. On Windows CUDA or Direct3D11
- mode will be determined by the elements automatically as well. Those
- new elements are useful if target GPU and/or API mode (either CUDA
- or Direct3D11 in case of Windows) is undeterminable from the encoder
- point of view at the time when pipeline is configured, and therefore
- lazy target GPU and/or API selection are required in order to avoid
- unnecessary memory copy operations.
-
-- new nvav1dec AV1 NVIDIA desktop GPU decoder element
-
-- new qml6glsink element to render video with Qt6
-
-- qsv: New Intel OneVPL/MediaSDK (a.k.a Intel Quick Sync) based
- decoder and encoder elements, with gst-d3d11 (on Windows) and gst-va
- (on Linux) integration
-
- - Support multi-GPU environment, for example, concurrent video
- encoding using Intel iGPU and dGPU in a single pipeline
- - H.264 / H.265 / VP9 and JPEG decoders
- - H.264 / H.265 / VP9 / AV1 / JPEG encoders with dynamic encoding
- bitrate update
- - New plugin does not require external SDK for building on Windows
-
-- vulkanoverlaycompositor: new vulkan overlay compositor element to
- overlay upstream GstVideoOverlayCompositonMeta onto the video
- stream.
-
-- vulkanshaderspv: performs operations with SPIRV shaders in Vulkan
-
-- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink
- elements for Windows
-
-- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG
- and PNG decoder elements.
-
-- Many exciting new Rust elements, see Rust section below
+- This section will be completed in due course
New element features and additions
-- audioconvert: Dithering now uses a slightly slower, less biased PRNG
- which results in better quality output. Also dithering can now be
- enabled via the new “dithering-threshold” property for target bit
- depths of more than 20 bits.
-
-- av1enc: Add “keyframe-max-dist” property for controlling max
- distance between keyframes, as well as “enc-pass”, “keyframe-mode”,
- “lag-in-frames” and “usage-profile” properties.
-
-- cccombiner: new “output-padding” property
-
-- decklink: Add support for 4k DCI, 8k/UHD2 and 8k DCI modes
-
-- dvbsubenc: Support for >SD resolutions is working correctly now.
-
-- fdkaacenc: Add HE-AAC / HE-AACv2 profile support
-
-- glvideomixer: New “crop-left,”crop-right, “crop-top” and
- “crop-bottom” pad properties for cropping inputs
-
-- gssink: new ‘content-type’ property. Useful when one wants to upload
- a video as video/mp4 instead of ’video/quicktime` for example.
-
-- jpegparse: Rewritten using the common parser library
-
-- msdk:
-
- - new msdkav1enc AV1 video encoder element
- - msdk decoders: Add support for Scaler Format Converter (SFC) on
- supported Intel platforms for hardware accelerated conversion
- and scaling
- - msdk encoders: support import of dmabuf, va memory and D3D11
- memory
- - msdk encoders: add properties for low delay bitrate control and
- max frame sizes for I/P frames
- - msdkh264enc, msdkh265enc: more properties to control intra
- refresh
- - note that on systems with multi GPUs the Windows D3D11
- integration might only work reliably if the Intel GPU is the
- primary GPU
-
-- mxfdemux: Add support for Canon XF-HEVC
-
-- openaptx: Support the freeaptx library
-
-- qroverlay:
-
- - new “qrcode-case-sensitive” property allows encoding case
- sensitive strings like wifi SSIDs or passwords.
- - added the ability to pick up data to render from an
- upstream-provided custom GstQROverlay meta
-
-- qtdemux: Add support for ONVIF XML Timed MetaData and AVC-Intra
- video
-
-- rfbsrc now supports the uri handler interface, so applications can
- use RFB/VNC sources in uridecodebin(3) and playbin, with
- e.g. rfb://:password@10.1.2.3:5903?shared=1
-
-- rtponviftimestamp: Add support for using reference timestamps
-
-- rtpvp9depay now has the same keyframe-related properties as
- rtpvp8depay and rtph264depay: “request-keyframe” and
- “wait-for-keyframe”
-
-- rtspsrc: Various RTSP servers are using invalid URL operations for
- constructing the control URL. Until GStreamer 1.16 these worked
- correctly because GStreamer was just appending strings itself to
- construct the control URL, but starting version 1.18 the correct URL
- operations were used. With GStreamer 1.22, rtspsrc now first tries
- with the correct control URL and if that fails it will retry with
- the wrongly constructed control URL to restore support for such
- servers.
-
-- rtspsrc and rtpjitterbuffer gained a new
- “add-reference-timestamp-meta” property that makes them put the
- unmodified original sender timestamp on output buffers for NTP or
- PTP clock synced senders
-
-- srtsrc, srtsink: new “auto-reconnect” property to make it possible
- to disable automatic reconnects (in caller mode) and make the
- elements post an error immediately instead; also stats improvements
-
-- srtsrc: new “keep-listening” property to avoid EOS on disconnect and
- keep the source running while it waits for a new connection.
-
-- videocodectestsink: added YUV 4:2:2 support
-
-- wasapi2src: Add support for process loopback capture
-
-- wpesrc: Add support for modifiers in key/touch/pointer events
+- This section will be completed in due course
Plugin and library moves
-- The xingmux plugin has been moved from gst-plugins-ugly into
- gst-plugins-good.
-
-- The various Windows directshow plugins in gst-plugins-bad have been
- unified into a single directshow plugin.
+- This section will be completed in due course
Plugin removals
-- The dxgiscreencapsrc element has been removed, use
- d3d11screencapturesrc instead
+- This section will be completed in due course
Miscellaneous API additions
-- GST_AUDIO_FORMAT_INFO_IS_VALID_RAW() and
- GST_VIDEO_FORMAT_INFO_IS_VALID_RAW() can be used to check if a
- GstAudioFormatInfo or GstVideoFormatInfo has been initialised to a
- valid raw format.
-
-- Video SEI meta: new GstVideoSEIUserDataUnregisteredMeta to carry
- H.264 and H.265 metadata from SEI User Data Unregistered messages.
-
-- vulkan: Expose gst_vulkan_result_to_string()
+- This section will be completed in due course
Miscellaneous performance, latency and memory optimisations
-- liborc 0.4.33 adds support for aarch64 (64-bit ARM) architecture
- (not enabled by default on Windows yet though) and improvements for
- 32-bit ARM and should greatly enhance performance for certain
- operations that use ORC.
+- This section will be completed in due course
-- as always there have been plenty of performance, latency and memory
- optimisations all over the place.
+- liborc 0.4.35 (latest: 0.4.36) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-Miscellaneous other changes and enhancements
+- as always there have been plenty of performance, latency and memory optimisations all over the place.
-- the audio/video decoder base classes will not consider decoding
- errors a hard error by default anymore but will continue trying to
- decode. Previously more than 10 consecutive errors were considered a
- hard error but this caused various partially broken streams to fail.
- The threshold is configurable via the “max-errors” property.
+Miscellaneous other changes and enhancements
-- compatibility of the GStreamer PTP clock implementation with
- different PTP server implementations was improved, and
- synchronization is achieved successfully in various scenarios that
- failed before.
+- This section will be completed in due course
Tracing framework and debugging improvements
New tracers
-- buffer-lateness: Records lateness of buffers and the reported
- latency for each pad in a CSV file. Comes with a script for
- visualisation.
-
-- pipeline-snapshot: Creates a .dot file of all pipelines in the
- application whenever requested via SIGUSR1 (on UNIX systems)
-
-- queue-levels: Records queue levels for each queue in a CSV file.
- Comes with a script for visualisation.
+- This section will be completed in due course
Debug logging system improvements
-- new log macros GST_LOG_ID, GST_DEBUG_ID, GST_INFO_ID,
- GST_WARNING_ID, GST_ERROR_ID, and GST_TRACE_ID allow passing a
- string identifier instead of a GObject. This makes it easier to log
- non-gobject-based items and also has performance benefits.
+- This section will be completed in due course
Tools
-- gst-play-1.0 gained a --no-position command line option to suppress
- position/duration queries, which can be useful to reduce debug log
- noise.
+- This section will be completed in due course
GStreamer FFMPEG wrapper
-- Fixed bitrate management and timestamp inaccuracies for video
- encoders
-
-- Fix synchronization issues and errors created by the (wrong)
- forwarding of upstream segment events by ffmpeg demuxers.
-
-- Clipping meta support for gapless mp3 playback
+- This section will be completed in due course
GStreamer RTSP server
-- Add RFC5576 Source-specific media attribute to the SDP media for
- signalling the CNAME
-
-- Add support for adjusting request response on pipeline errors
-
- - Give the application the possibility to adjust the error code
- when responding to a request. For that purpose the pipeline’s
- bus messages are emitted to subscribers through a
- “handle-message” signal. The subscribers can then check those
- messages for errors and adjust the response error code by
- overriding the virtual method
- GstRTSPClientClass::adjust_error_code().
-
-- Add gst_rtsp_context_set_token() method to make it possible to set
- the RTSPToken on some RTSPContext from bindings such as the Python
- bindings.
-
-- rtspclientsink gained a “publish-clock-mode” property to configure
- whether the pipeline clock should be published according to RFC7273
- (RTP Clock Source Signalling), similar to the same API on
- GstRTSPMedia.
+- This section will be completed in due course
GStreamer VA-API support
-- Development activity has shifted towards the new va plugin, with
- gstreamer-vaapi now basically in maintenance-only mode. Most of the
- below refers to the va plugin (not gstreamer-vaapi).
-
-- new gst-va library for GStreamer VA-API integration
-
-- vajpegdec: new JPEG decoder
-
-- vah264enc, vah265enc: new H.264/H.265 encoders
-
-- vah264lpenc, vah265lpenc: new low power mode encoders
-
-- vah265enc: Add extended formats support such as 10/12 bits, 4:2:2
- and 4:4:4
-
-- Support encoder reconfiguration
-
-- vacompositor: Add new compositor element using the VA-API VPP
- interface
-
-- vapostproc:
-
- - new “scale-method” property
- - Process HDR caps if supported
- - parse video orientation from tags
-
-- vaapipostproc: Enable the use of DMA-Buf import and export
- (gstreamer-vaapi)
+- This section will be completed in due course
GStreamer Video4Linux2 support
-- Added support for Mediatek Stateless CODEC (VP8, H.264, VP9)
-
-- Stateless H.264 interlaced decoder support
-
-- Stateless H.265 decoder support
-
-- Stateful decoder support for driver resolution change events
-
-- Stateful decoding support fixes for NXP/Amphion driver
-
-- Support for hardware crop in v4l2src
-
-- Conformance test improvement for stateful decoders
-
-- Fixes for Raspberry Pi CODEC
+- This section will be completed in due course
GStreamer OMX
-- There were no changes in this module
+- The gst-omx module has been removed. The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it.
+ There has not been any development since 1.22 was released. Users of these elements should switch to the Video4Linux-based
+ video encoders and decoders which have been the standard on embedded Linux for quite some time now.
GStreamer Editing Services and NLE
-- Handle compositors that are bins around the actual compositor
- implementation (like glvideomixers which wraps several elements)
-
-- Add a mode to disable timeline editing API so the user can be in
- full control of its layout (meaning that the user is responsible for
- ensuring its validity/coherency)
-
-- Add a new fade-in transition type
-
-- Add support for non-1/1 PAR source videos
-
-- Fix frame accuracy when working with very low framerate streams
+- This section will be completed in due course
GStreamer validate
-- Clean up and stabilize API so we can now generate rust bindings
-
-- Enhance the appsrc-push action type allowing to find tune the
- buffers more in details
-
-- Add an action type to verify currently configured pad caps
-
-- Add a way to run checks from any thread after executing a ‘wait’
- action. This is useful when waiting on a signal and want to check
- the value of a property right when it is emited for example.
+- This section will be completed in due course
GStreamer Python Bindings
-- Add a Gst.init_python() function to be called from plugins which
- will initialise everything needed for the GStreamer Python bindings
- but not call Gst.init() again since this will have been called
- already.
-
-- Add support for the GstURIHandlerInterface that allows elements to
- advertise what URI protocols they support.
+- This section will be completed in due course
GStreamer C# Bindings
-- Fix AppSrc and AppSink constructors
-
-- The C# bindings have yet to be updated to include new 1.22 API,
- which requires improvements in various places in the bindings /
- binding generator stack. See issue #1718 in GitLab for more
- information and to track progress.
+- This section will be completed 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 new GStreamer 1.22 API. Check the bindings
-release notes for details of the changes since 0.18, which was released
-around GStreamer 1.20.
-
-gst-plugins-rs, the module containing GStreamer plugins written in Rust,
-has also seen lots of activity with many new elements and plugins. A
-list of all Rust plugins and elements provided with the 0.9 release can
-be found in the repository.
-
-- 33% of GStreamer commits are now in Rust (bindings + plugins), and
- the Rust plugins module is also where most of the new plugins are
- added these days.
-
-- The Rust plugins are now shipped as part of the Windows MSVC + macOS
- binary packages. See below for the list of shipped plugins and the
- status of Rust support in cerbero.
+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 new GStreamer 1.24 API.
-- The Rust plugins are also part of the documentation on the GStreamer
- website now.
+gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
+and plugins
-- Rust plugins can be used from any programming language. To the
- outside they look just like a plugin written in C or C++.
+- Rust plugins can be used from any programming language. To the outside they look just like a plugin written in C or C++.
New Rust plugins and elements
-- rtpav1pay / rtpav1depay: RTP (de)payloader for the AV1 video codec
-- gtk4paintablesink: a GTK4 video sink that provides a GdkPaintable
- for rendering a video in any place inside a GTK UI. Supports
- zero-copy rendering via OpenGL on Linux and macOS.
-- ndi: source, sink and device provider for NewTek NDI protocol
-- onvif: Various elements for parsing, RTP (de)payloading, overlaying
- of ONVIF timed metadata.
-- livesync: Element for converting a live stream into a continuous
- stream without gaps and timestamp jumps while preserving live
- latency requirements.
-- raptorq: Encoder/decoder elements for the RaptorQ FEC mechanism that
- can be used for RTP streams (RFC6330).
-
-WebRTC elements
-
-- webrtcsink: a WebRTC sink (batteries included WebRTC sender with
- specific signalling)
-- whipsink: WebRTC HTTP ingest (WHIP) to MediaServer
-- whepsrc: WebRTC HTTP egress (WHEP) from MediaServer
-- rtpgccbwe: RTP bandwidth estimator based on the Google Congestion
- Control algorithm (GCC), used by webrtcsink
-
-Amazon AWS services
-
-- awss3src / awss3sink: A source and sink element to talk to the
- Amazon S3 object storage system.
-- awss3hlssink: A sink element to store HLS streams on Amazon S3.
-- awstranscriber: an element wrapping the AWS Transcriber service.
-- awstranscribeparse: an element parsing the packets of the AWS
- Transcriber service.
-
-Video Effects (videofx)
-
-- roundedcorners: Element to make the corners of a video rounded via
- the alpha channel.
-- colordetect: A pass-through filter able to detect the dominant
- color(s) on incoming frames, using color-thief.
-- videocompare: Compare similarity of video frames. The element can
- use different hashing algorithms like Blockhash, DSSIM, and others.
-
-New MP4 muxer + Fragmented MP4 muxer
-
-- fmp4mux: New fragmented MP4/ISOBMFF/CMAF muxer for generating
- e.g. DASH/HLS media fragments.
-- isomp4mux: New non-fragmented, normal MP4 muxer.
-
-Both plugins provides elements that replace the existing qtmux/mp4mux
-element from gst-plugins-good. While not feature-equivalent yet, the new
-codebase and using separate elements for the fragment and non-fragmented
-case allows for easier extensability in the future.
+- This section will be completed in due course
Cerbero Rust support
-- Starting this release, cerbero has support for building and shipping
- Rust code on Linux, Windows (MSVC) and macOS. The Windows (MSVC) and
- macOS binaries also ship the GStreamer Rust plugins in this release.
- Only dynamic plugins are built and shipped currently.
-
-- Preliminary support for Android, iOS and Windows (MinGW) exists but
- more work is needed. Check the tracker issue for more details about
- future work.
-
-- The following plugins are included currently: audiofx, aws, cdg,
- claxon, closedcaption, dav1d, fallbackswitch, ffv1, fmp4, gif,
- hlssink3, hsv, json, livesync, lewton, mp4, ndi, onvif, rav1e,
- regex, reqwest, raptorq, png, rtp, textahead, textwrap, threadshare,
- togglerecord, tracers, uriplaylistbin, videofx, webrtc, webrtchttp.
+- This section will be completed in due course
Build and Dependencies
-- meson 0.62 or newer is required
-
-- GLib >= 2.62 is now required (but GLib >= 2.64 is strongly
- recommended)
-
-- libnice >= 0.1.21 is now required and contains important fixes for
- GStreamer’s WebRTC stack.
-
-- liborc >= 0.4.33 is recommended for 64-bit ARM support and 32-bit
- ARM improvements
-
-- onnx: OnnxRT >= 1.13.1 is now required
-
-- openaptx: can now be built against libfreeaptx
-
-- opencv: allow building against any 4.x version
-
-- shout: libshout >= 2.4.3 is now required
-
-- gstreamer-vaapi’s Meson build options have been switched from a
- custom combo type (yes/no/auto) to the built-in Meson feature type
- (enabled/disabled/auto)
+- This section will be completed in due course
-- The GStreamer Rust plugins module gst-plugins-rs is now considered
- an essential part of the GStreamer plugin offering and packagers and
- distributors are strongly encouraged to package and ship those
- plugins alongside the existing plugin modules.
+Monorepo build (neé gst-build)
-- we now make use of Meson’s install tags feature which allows
- selective installation of installl components and might be useful
- for packagers.
-
-Monorepo build (gst-build)
-
-- new “orc-source” build option to allow build against a
- system-installed liborc instead of forcing the use of orc as a
- subproject.
-
-- GStreamer command line tools can now be linked to the gstreamer-full
- library if it’s built
+- This section will be completed in due course
Cerbero
-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.
+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 improvements
-- Rust support was added for all support configurations, controlled by
- the rust variant; see above for more details
-- All pkgconfig files are now reliably relocatable without requiring
- pkg-config --define-prefix. This also fixes statically linking with
- GStreamer plugins using the corresponding pkgconfig files.
-- New documentation on how to build a custom GStreamer repository
- using Cerbero, please see the README
-- HTTPS certificate checking is enabled for downloads on all platforms
- now
-- Fetching now automatically retries on error for robustness against
- transient errors
-- Support for building the new Qt6 plugin was added
-- pkgconfig files for various recipes were fixed
-- Several recipes were updated to newer versions
-- New plugins: adaptivedemux2 aes codectimestamper dav1d
-- New libraries: cuda webrtcnice
+- This section will be completed in due course
macOS / iOS
-- Added support for running Cerbero on ARM64 macOS
-- GStreamer.framework and all libraries in it are now relocatable,
- which means they use LC_RPATH entries to find dependencies instead
- of using an absolute path. If you link to GStreamer using the
- pkgconfig files, no action is necessary. However, if you use the
- framework directly or link to the libraries inside the framework by
- hand, then you need to pass -Wl,-rpath,<path_to_libdir> to the
- linker.
-- Apple bitcode support was dropped, since Apple has deprecated it
-- macOS installer now correctly advertises support for both x86_64 and
- arm64
-- macOS framework now ships the gst-rtsp-server-1.0 library
-- Various fixes were made to make static linking to gstreamer
- libraries and plugins work correctly on macOS
-- When statically linking to the applemedia plugin using Xcode 13, you
- will need to pass -fno-objc-msgsend-selector-stubs which works
- around a backwards-incompatible change in Xcode 14. This is not
- required for the rest of GStreamer at present, but will be in the
- future.
-- macOS installer now shows the GStreamer logo correctly
+- This section will be completed in due course
Windows
-- MSVC is now required by default on Windows, and the Visual Studio
- variant is enabled by default
- - To build with MinGW, use the mingw variant
-- Visual Studio props files were updated for newer Visual Studio
- versions
-- Visual Studio 2015 support was dropped
-- MSYS2 is now supported as the base instead of MSYS. Please see the
- README for more details. Some advantages include:
- - Faster build times, since parallel make works
- - Faster bootstrap, since some tools are provided by MSYS2
- - Other speed-ups due to using MSYS2 tools instead of MSYS
-- Faster download by using powershell instead of hand-rolled Python
- code
-- Many recipes were ported from Autotools to Meson, speeding up the
- build
-- Universal Windows Platform is no longer supported, and binaries are
- no longer shipped for it
-- New documentation on how to force a specific Visual Studio
- installation in Cerbero, please see the README
-- New plugins: qsv wavpack directshow amfcodec wic win32ipc
-- New libraries: d3d11
-
-Windows MSI installer
-
-- Universal Windows Platform prebuilt binaries are no longer available
+- This section will be completed in due course
Linux
-- Various fixes for RHEL/CentOS 7 support
-- Added support for running on Linux ARM64
+- This section will be completed in due course
Android
-- Android support now requires Android API version 21 (Lollipop)
-- Support for Android Gradle plugin 7.2
+- This section will be completed in due course
Platform-specific changes and improvements
Android
-- Android SDK 21 is required now as minimum SDK version
-
-- androidmedia: Add H.265 / HEVC video encoder mapping
-
-- Implement JNI_OnLoad() to register static plugins etc. automatically
- in case GStreamer is loaded from Java using System.loadLibrary(),
- which is also useful for the gst-full deployment scenario.
+- This section will be completed in due course
Apple macOS and iOS
-- The GLib version shipped with the GStreamer binaries does not
- initialize an NSApp and does not run a NSRunLoop on the main thread
- anymore. This was a custom GLib patch and caused it to behave
- different from the GLib shipped by Homebrew or anybody else.
-
- The change was originally introduced because various macOS APIs
- require a NSRunLoop to run on the main thread to function correctly
- but as this change will never get merged into GLib and it was
- reverted for 1.22. Applications that relied on this behaviour should
- move to the new gst_macos_main() function, which also does not
- require the usage of a GMainLoop.
-
- See e.g. gst-play.c for an example for the usage of
- gst_macos_main().
-
-- GStreamer.framework and all libraries in it are now relocatable,
- which means they use LC_RPATH entries to find dependencies instead
- of using an absolute path. If you link to GStreamer using the
- pkgconfig files, no action is necessary. However, if you use the
- framework directly or link to the libraries inside the framework by
- hand, then you need to pass -Wl,-rpath,<path_to_libdir> to the
- linker.
-
-- avfvideosrc: Allow specifying crop coordinates during screen capture
-
-- vtenc, vtdec: H.265 / HEVC video encoding + decoding support
-
-- osxaudiosrc: Support a device as both input and output
-
- - osxaudiodeviceprovider now probes devices more than once to
- determine if the device can function as both an input AND and
- output device. Previously, if the device provider detected that
- a device had any output capabilities, it was treated solely as
- an Audio/Sink. This caused issues for devices that have both
- input and output capabilities (for example, USB interfaces for
- professional audio have both input and output channels). Such
- devicesare now listed as both an Audio/Sink as well as an
- Audio/Source.
-
-- osxaudio: support hidden devices on macOS
-
- - These are devices that will not be shown in the macOS UIs and
- that cannot be retrieved without having the specific UID of the
- hidden device. There are cases when you might want to have a
- hidden device, for example when having a virtual speaker that
- forwards the data to a virtual hidden input device from which
- you can then grab the audio. The blackhole project supports
- these hidden devices and this change provides a way that if the
- device id is a hidden device it will use it instead of checkinf
- the hardware list of devices to understand if the device is
- valid.
+- This section will be completed in due course
Windows
-- win32ipcvideosink, win32ipcvideosrc: new shared memory videosrc/sink
- elements
-
-- wasapi2: Add support for process loopback capture for a specified
- PID (requires Windows 11/Windows Server 2022)
-
-- The Windows universal UWP build is currently non-functional and will
- need updating after the recent GLib upgrade. It is unclear if anyone
- is using these binaries, so if you are please make yourself known.
-
-- wicjpegdec, wicpngdec: Windows Imaging Component (WIC) based JPEG
- and PNG decoder elements.
-
-- mfaacdec, mfmp3dec: Windows MediaFoundation AAC and MP3 decoders
-
-- The uninstalled development environment supports PowerShell 7 now
+- This section will be completed in due course
Linux
-- Improved design for DMA buffer sharing and modifier handling for
- hardware-accelerated video decoders/encoders/filters and
- capture/rendering on Linux and Linux-like system.
-
-- kmssink
-
- - new “fd” property which allows an application to provide their
- own opened DRM device fd handle to kmssink. That way an
- application can lease multiple fd’s from a DRM master to display
- on different CRTC outputs at the same time with multiple kmssink
- instances, for example.
- - new “skip-vsync” property to achieve full framerate with legacy
- emulation in drivers.
- - HDR10 infoframe support
-
-- va plugin and gstreamer-vaapi improvements (see above)
-
-- waylandsink: Add “rotate-method” property and “render-rectangle”
- property
-
-- new gtkwaylandsink element based on gtksink, but similar to
- waylandsink and uses Wayland APIs directly instead of rendering with
- Gtk/Cairo primitives. This approach is only compatible with Gtk3,
- and like gtksink this element only supports Gtk3.
+- This section will be completed in due course
Documentation improvements
-- The GStreamer Rust plugins are now included and documented in the
- plugin documentation.
+- This section will be completed in due course
Possibly Breaking Changes
-- the Opus audio RTP payloader and depayloader no longer accept the
- lower case encoding-format=multiopus but instead produce and accept
- only the upper case variant encoding-format=MULTIOPUS, since those
- should always be upper case in GStreamer (caps fields are always
- case sensitive). This should hopefully only affect applications
- where RTP caps are set manually and multi-channel audio (>= 3
- channels) is used.
-
-- wpesrc: the URI handler protocols changed from wpe:// and web:// to
- web+http://, web+https://, and web+file:// which means URIs are RFC
- 3986 compliant and the source can simply strip the prefix from the
- protocol.
-
-- The Windows screen capture element dxgiscreencapsrc has been
- removed, please use d3d11screencapturesrc instead.
-
-- On Android the minimum supported Android API version is now version
- 21 and has been increased from 16.
-
-- On macOS, the GLib version shipped with the GStreamer binaries will
- no longer initialize an NSApp or run an NSRunLoop on the main
- thread. See macOS/iOS section above for details.
-
-- decklink: The decklink plugin is now using the 12.2.2 version of the
- SDK and will not work with drivers older than version 12.
-
-- On iOS Apple Bitcode support was removed from the binaries. This
- feature is deprecated since XCode 14 and not used on the App Store
- anymore.
-
-- The MP4/Matroska/WebM muxers now require the “stream-format” to be
- provided as part of the AV1 caps as only the original “obu-stream”
- format is supported in these containers and not the “annexb” format.
+- This section will be completed in due course
Known Issues
-- The Windows UWP build in Cerbero needs fixing after the recent GLib
- upgrade (see above)
-
-- The C# bindings have not been updated to include new 1.22 API yet
- (see above)
+- This section will be completed in due course
Statistics
-- 4072 commits
+- This section will be completed in due course
-- 2224 Merge Requests
+Contributors
-- 716 Issues
+- This section will be completed in due course
-- 200+ Contributors
+Stable 1.24 branch
-- ~33% of all commits and Merge Requests were in Rust modules
+After the 1.24.0 release there will be several 1.24.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.24.x
+bug-fix releases will be made from the git 1.24 branch, which will be a stable branch.
-- 4747 files changed
+1.24.0
-- 469633 lines added
+1.24.0 has not yet been released.
-- 209842 lines deleted
+Schedule for 1.26
-- 259791 lines added (net)
+Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26
+release. The development of 1.25/1.25 will happen in the git main branch of the GStreamer mono repository.
-Contributors
+The schedule for 1.26 is yet to be confirmed. We’re still busy getting 1.24 out!
+
+1.26 will be backwards-compatible to the stable 1.24, 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.
+
+--------------------------------------------------------------------------------------------------------------------------------
-Ádám Balázs, Adam Doupe, Adrian Fiergolski, Adrian Perez de Castro, Alba
-Mendez, Aleix Conchillo Flaqué, Aleksandr Slobodeniuk, Alicia Boya
-García, Alireza Miryazdi, Andoni Morales Alastruey, Andrew Pritchard,
-Arun Raghavan, A. Wilcox, Bastian Krause, Bastien Nocera, Benjamin
-Gaignard, Bill Hofmann, Bo Elmgreen, Boyuan Zhang, Brad Hards, Branko
-Subasic, Bruce Liang, Bunio FH, byran77, Camilo Celis Guzman, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Christian Wick,
-Christopher Obbard, Christoph Reiter, Chris Wiggins, Chun-wei Fan, Colin
-Kinloch, Corentin Damman, Corentin Noël, Damian Hobson-Garcia, Daniel
-Almeida, Daniel Morin, Daniel Stone, Daniels Umanovskis, Danny Smith,
-David Svensson Fors, Devin Anderson, Diogo Goncalves, Dmitry Osipenko,
-Dongil Park, Doug Nazar, Edward Hervey, ekwange, Eli Schwartz, Elliot
-Chen, Enrique Ocaña González, Eric Knapp, Erwann Gouesbet, Evgeny
-Pavlov, Fabian Orccon, Fabrice Fontaine, Fan F He, F. Duncanh, Filip
-Hanes, Florian Zwoch, François Laignel, Fuga Kato, George Kiagiadakis,
-Guillaume Desmottes, Gu Yanjie, Haihao Xiang, Haihua Hu, Havard Graff,
-Heiko Becker, He Junyan, Henry Hoegelow, Hiero32, Hoonhee Lee, Hosang
-Lee, Hou Qi, Hugo Svirak, Ignacio Casal Quinteiro, Ignazio Pillai, Igor
-V. Kovalenko, Jacek Skiba, Jakub Adam, James Cowgill, James Hilliard,
-Jan Alexander Steffens (heftig), Jan Lorenz, Jan Schmidt, Jianhui Dai,
-jinsl00000, Johan Sternerup, Jonas Bonn, Jonas Danielsson, Jordan
-Petridis, Joseph Donofry, Jose Quaresma, Julian Bouzas, Junsoo Park,
-Justin Chadwell, Khem Raj, Krystian Wojtas, László Károlyi, Linus
-Svensson, Loïc Le Page, Ludvig Rappe, Marc Leeman, Marek Olejnik, Marek
-Vasut, Marijn Suijten, Mark Nauwelaerts, Martin Dørum, Martin Reboredo,
-Mart Raudsepp, Mathieu Duponchelle, Matt Crane, Matthew Waters, Matthias
-Clasen, Matthias Fuchs, Mengkejiergeli Ba, MGlolenstine, Michael Gruner,
-Michiel Konstapel, Mikhail Fludkov, Ming Qian, Mingyang Ma, Myles
-Inglis, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, Pablo Marcos
-Oltra, Patricia Muscalu, Patrick Griffis, Paweł Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, Pierre Bourré, Piotr
-Brzeziński, Rabindra Harlalka, Rafael Caricio, Rafael Sobral, Rafał
-Dzięgiel, Raul Tambre, Robert Mader, Robert Rosengren, Rodrigo
-Bernardes, Rouven Czerwinski, Ruben Gonzalez, Sam Van Den Berge,
-Sanchayan Maity, Sangchul Lee, Sebastian Dröge, Sebastian Fricke,
-Sebastian Groß, Sebastian Mueller, Sebastian Wick, Sergei Kovalev,
-Seungha Yang, Seungmin Kim, sezanzeb, Sherrill Lin, Shingo Kitagawa,
-Stéphane Cerveau, Talha Khan, Taruntej Kanakamalla, 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, Wojciech Kapsa, Wonchul Lee, Wu Tong, Xabier
-Rodriguez Calvar, Xavier Claessens, Yatin Mann, Yeongjin Jeong, Zebediah
-Figura, Zhao Zhili, Zhiyuaniu, مهدي شينون (Mehdi Chinoune),
-
-… and many others who have contributed bug reports, translations, sent
-suggestions or helped testing.
-
-Stable 1.22 branch
-
-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.22.x bug-fix releases will be made from
-the git 1.22 branch, which will be a stable branch.
-
-1.22.0
-
-1.22.0 was originally released on 23 January 2023.
-
-Schedule for 1.24
-
-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.24 development cycle is yet to be confirmed.
-
-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 Edward Hervey, Matthew Waters, Nicolas Dufresne,
-Nirbheek Chauhan, Olivier Crête, Sebastian Dröge, Seungha Yang, and
-Thibault Saunier.
+These release notes have been prepared by Tim-Philipp Müller.
License: CC BY-SA 4.0