diff --git a/girs/GES-1.0.gir b/girs/GES-1.0.gir
index 559d1ea3ff..a45af68ad1 100644
--- a/girs/GES-1.0.gir
+++ b/girs/GES-1.0.gir
@@ -15629,7 +15629,7 @@ contains one frame)
-
+
@@ -15637,7 +15637,7 @@ contains one frame)
-
+
diff --git a/girs/Gst-1.0.gir b/girs/Gst-1.0.gir
index 8c94e2252e..6d05bcdacd 100644
--- a/girs/Gst-1.0.gir
+++ b/girs/Gst-1.0.gir
@@ -51705,7 +51705,7 @@ determine a order for the two provided values.
-
+
The micro version of GStreamer at compile time:
@@ -51715,7 +51715,7 @@ determine a order for the two provided values.
-
+
The nano version of GStreamer at compile time:
Actual releases have 0, GIT versions have 1, prerelease versions have 2-...
diff --git a/girs/GstPbutils-1.0.gir b/girs/GstPbutils-1.0.gir
index 473259b73a..21898c41e1 100644
--- a/girs/GstPbutils-1.0.gir
+++ b/girs/GstPbutils-1.0.gir
@@ -2950,7 +2950,7 @@ in debugging.
-
+
The micro version of GStreamer's gst-plugins-base libraries at compile time.
@@ -2960,7 +2960,7 @@ in debugging.
-
+
The nano version of GStreamer's gst-plugins-base libraries at compile time.
Actual releases have 0, GIT versions have 1, prerelease versions have 2-...
diff --git a/meson.build b/meson.build
index 4b216d92ff..225f850a9b 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('gstreamer-full', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : ['buildtype=debugoptimized',
# Needed due to https://github.com/mesonbuild/meson/issues/1889,
diff --git a/subprojects/gst-devtools/NEWS b/subprojects/gst-devtools/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-devtools/NEWS
+++ b/subprojects/gst-devtools/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-devtools/RELEASE b/subprojects/gst-devtools/RELEASE
index 8b3560839f..0d7ff193c1 100644
--- a/subprojects/gst-devtools/RELEASE
+++ b/subprojects/gst-devtools/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-devtools 1.25.0.1.
+This is GStreamer gst-devtools 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-devtools/gst-devtools.doap b/subprojects/gst-devtools/gst-devtools.doap
index 5180e43ae4..c613513d06 100644
--- a/subprojects/gst-devtools/gst-devtools.doap
+++ b/subprojects/gst-devtools/gst-devtools.doap
@@ -53,6 +53,16 @@
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-devtools/meson.build b/subprojects/gst-devtools/meson.build
index 5fa2b2895f..035e68b040 100644
--- a/subprojects/gst-devtools/meson.build
+++ b/subprojects/gst-devtools/meson.build
@@ -1,5 +1,5 @@
project('gst-devtools', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-docs/meson.build b/subprojects/gst-docs/meson.build
index 1d8205d2b5..e5cf4ad3dc 100644
--- a/subprojects/gst-docs/meson.build
+++ b/subprojects/gst-docs/meson.build
@@ -1,5 +1,5 @@
project('GStreamer manuals and tutorials', 'c',
- version: '1.25.0.1',
+ version: '1.25.1',
meson_version : '>= 1.3')
hotdoc_p = find_program('hotdoc')
diff --git a/subprojects/gst-docs/symbols/symbol_index.json b/subprojects/gst-docs/symbols/symbol_index.json
index 034f47ea56..dbc68680fd 100644
--- a/subprojects/gst-docs/symbols/symbol_index.json
+++ b/subprojects/gst-docs/symbols/symbol_index.json
@@ -880,6 +880,7 @@
"GST_ANALYTICS_REL_TYPE_IS_PART_OF",
"GST_ANALYTICS_REL_TYPE_LAST",
"GST_ANALYTICS_REL_TYPE_NONE",
+ "GST_ANALYTICS_REL_TYPE_N_TO_N",
"GST_ANALYTICS_REL_TYPE_RELATE_TO",
"GST_ANCILLARY_META_API_TYPE",
"GST_ANCILLARY_META_FIELD_INTERLACED_FIRST",
@@ -967,6 +968,8 @@
"GST_AUDIO_CHANNEL_POSITION_TOP_REAR_RIGHT",
"GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_LEFT",
"GST_AUDIO_CHANNEL_POSITION_TOP_SIDE_RIGHT",
+ "GST_AUDIO_CHANNEL_POSITION_TOP_SURROUND_LEFT",
+ "GST_AUDIO_CHANNEL_POSITION_TOP_SURROUND_RIGHT",
"GST_AUDIO_CHANNEL_POSITION_WIDE_LEFT",
"GST_AUDIO_CHANNEL_POSITION_WIDE_RIGHT",
"GST_AUDIO_CLIPPING_META_API_TYPE",
@@ -1045,6 +1048,7 @@
"GST_AUDIO_FORMAT_INFO_IS_VALID_RAW",
"GST_AUDIO_FORMAT_INFO_NAME",
"GST_AUDIO_FORMAT_INFO_WIDTH",
+ "GST_AUDIO_FORMAT_LAST",
"GST_AUDIO_FORMAT_S16",
"GST_AUDIO_FORMAT_S16BE",
"GST_AUDIO_FORMAT_S16LE",
@@ -1351,15 +1355,15 @@
"GST_AV1_WARP_MODEL_ROTZOOM",
"GST_AV1_WARP_MODEL_TRANSLATION",
"GST_BASE_API",
- "GST_BASE_DEPRECATED",
- "GST_BASE_DEPRECATED_FOR",
- "GST_BASE_DEPRECATED_TYPE",
- "GST_BASE_DEPRECATED_TYPE_FOR",
"GST_BASE_CAMERA_SRC_CAST",
"GST_BASE_CAMERA_SRC_IMAGE_PAD_NAME",
"GST_BASE_CAMERA_SRC_PREVIEW_MESSAGE_NAME",
"GST_BASE_CAMERA_SRC_VIDEO_PAD_NAME",
"GST_BASE_CAMERA_SRC_VIEWFINDER_PAD_NAME",
+ "GST_BASE_DEPRECATED",
+ "GST_BASE_DEPRECATED_FOR",
+ "GST_BASE_DEPRECATED_TYPE",
+ "GST_BASE_DEPRECATED_TYPE_FOR",
"GST_BASE_PARSE_CAST",
"GST_BASE_PARSE_DRAINING",
"GST_BASE_PARSE_FLAG_DRAINING",
@@ -1620,6 +1624,7 @@
"GST_CORE_ERROR_THREAD",
"GST_CORE_ERROR_TOO_LAZY",
"GST_CUDA_ALLOCATOR_CAST",
+ "GST_CUDA_ALLOCATOR_OPT_STREAM_ORDERED",
"GST_CUDA_BUFFER_COPY_CUDA",
"GST_CUDA_BUFFER_COPY_D3D11",
"GST_CUDA_BUFFER_COPY_GL",
@@ -1629,6 +1634,7 @@
"GST_CUDA_CONTEXT_CAST",
"GST_CUDA_CONTEXT_TYPE",
"GST_CUDA_GRAPHICS_RESOURCE_D3D11_RESOURCE",
+ "GST_CUDA_GRAPHICS_RESOURCE_EGL_RESOURCE",
"GST_CUDA_GRAPHICS_RESOURCE_GL_BUFFER",
"GST_CUDA_GRAPHICS_RESOURCE_NONE",
"GST_CUDA_MEMORY_ALLOC_MALLOC",
@@ -2082,6 +2088,9 @@
"GST_GL_DISPLAY_TYPE_X11",
"GST_GL_DISPLAY_WAYLAND_CAST",
"GST_GL_DISPLAY_X11_CAST",
+ "GST_GL_DRM_FORMAT_INCLUDE_EMULATED",
+ "GST_GL_DRM_FORMAT_INCLUDE_EXTERNAL",
+ "GST_GL_DRM_FORMAT_LINEAR_ONLY",
"GST_GL_FRAMEBUFFER_CAST",
"GST_GL_LUMINANCE",
"GST_GL_LUMINANCE_ALPHA",
@@ -2204,6 +2213,8 @@
"GST_H264_NAL_FILLER_DATA",
"GST_H264_NAL_PPS",
"GST_H264_NAL_PREFIX_UNIT",
+ "GST_H264_NAL_RSV_1",
+ "GST_H264_NAL_RSV_2",
"GST_H264_NAL_SEI",
"GST_H264_NAL_SEQ_END",
"GST_H264_NAL_SLICE",
@@ -2243,6 +2254,7 @@
"GST_H264_PROFILE_HIGH10",
"GST_H264_PROFILE_HIGH_422",
"GST_H264_PROFILE_HIGH_444",
+ "GST_H264_PROFILE_INVALID",
"GST_H264_PROFILE_MAIN",
"GST_H264_PROFILE_MULTIVIEW_HIGH",
"GST_H264_PROFILE_SCALABLE_BASELINE",
@@ -2413,6 +2425,87 @@
"GST_H265_SEI_RECOVERY_POINT",
"GST_H265_SEI_REGISTERED_USER_DATA",
"GST_H265_SEI_TIME_CODE",
+ "GST_H265_SEI_USER_DATA_UNREGISTERED",
+ "GST_H266_ALF_APS",
+ "GST_H266_APS_TYPE_MAX",
+ "GST_H266_B_SLICE",
+ "GST_H266_I_SLICE",
+ "GST_H266_LEVEL_L1_0",
+ "GST_H266_LEVEL_L2_0",
+ "GST_H266_LEVEL_L2_1",
+ "GST_H266_LEVEL_L3_0",
+ "GST_H266_LEVEL_L3_1",
+ "GST_H266_LEVEL_L4_0",
+ "GST_H266_LEVEL_L4_1",
+ "GST_H266_LEVEL_L5_0",
+ "GST_H266_LEVEL_L5_1",
+ "GST_H266_LEVEL_L5_2",
+ "GST_H266_LEVEL_L6_0",
+ "GST_H266_LEVEL_L6_1",
+ "GST_H266_LEVEL_L6_2",
+ "GST_H266_LEVEL_L6_3",
+ "GST_H266_LMCS_APS",
+ "GST_H266_NAL_AUD",
+ "GST_H266_NAL_DCI",
+ "GST_H266_NAL_EOB",
+ "GST_H266_NAL_EOS",
+ "GST_H266_NAL_FD",
+ "GST_H266_NAL_OPI",
+ "GST_H266_NAL_PH",
+ "GST_H266_NAL_PPS",
+ "GST_H266_NAL_PREFIX_APS",
+ "GST_H266_NAL_PREFIX_SEI",
+ "GST_H266_NAL_SLICE_CRA",
+ "GST_H266_NAL_SLICE_GDR",
+ "GST_H266_NAL_SLICE_IDR_N_LP",
+ "GST_H266_NAL_SLICE_IDR_W_RADL",
+ "GST_H266_NAL_SLICE_RADL",
+ "GST_H266_NAL_SLICE_RASL",
+ "GST_H266_NAL_SLICE_STSA",
+ "GST_H266_NAL_SLICE_TRAIL",
+ "GST_H266_NAL_SPS",
+ "GST_H266_NAL_SUFFIX_APS",
+ "GST_H266_NAL_SUFFIX_SEI",
+ "GST_H266_NAL_VPS",
+ "GST_H266_PARSER_BROKEN_DATA",
+ "GST_H266_PARSER_BROKEN_LINK",
+ "GST_H266_PARSER_ERROR",
+ "GST_H266_PARSER_NO_NAL",
+ "GST_H266_PARSER_NO_NAL_END",
+ "GST_H266_PARSER_OK",
+ "GST_H266_PROFILE_INTRA",
+ "GST_H266_PROFILE_INVALID",
+ "GST_H266_PROFILE_MAIN_10",
+ "GST_H266_PROFILE_MAIN_10_444",
+ "GST_H266_PROFILE_MAIN_10_444_STILL_PICTURE",
+ "GST_H266_PROFILE_MAIN_10_STILL_PICTURE",
+ "GST_H266_PROFILE_MAIN_12",
+ "GST_H266_PROFILE_MAIN_12_444",
+ "GST_H266_PROFILE_MAIN_12_444_INTRA",
+ "GST_H266_PROFILE_MAIN_12_444_STILL_PICTURE",
+ "GST_H266_PROFILE_MAIN_12_INTRA",
+ "GST_H266_PROFILE_MAIN_12_STILL_PICTURE",
+ "GST_H266_PROFILE_MAIN_16_444",
+ "GST_H266_PROFILE_MAIN_16_444_INTRA",
+ "GST_H266_PROFILE_MAIN_16_444_STILL_PICTURE",
+ "GST_H266_PROFILE_MAX",
+ "GST_H266_PROFILE_MULTILAYER_MAIN_10",
+ "GST_H266_PROFILE_MULTILAYER_MAIN_10_444",
+ "GST_H266_PROFILE_MULTILAYER_MAIN_10_444_STILL_PICTURE",
+ "GST_H266_PROFILE_MULTILAYER_MAIN_10_STILL_PICTURE",
+ "GST_H266_PROFILE_NONE",
+ "GST_H266_PROFILE_STILL_PICTURE",
+ "GST_H266_P_SLICE",
+ "GST_H266_SCALING_APS",
+ "GST_H266_SEI_BUF_PERIOD",
+ "GST_H266_SEI_DU_INFO",
+ "GST_H266_SEI_FRAME_FIELD_INFO",
+ "GST_H266_SEI_PIC_TIMING",
+ "GST_H266_SEI_REGISTERED_USER_DATA",
+ "GST_H266_SEI_SCALABLE_NESTING",
+ "GST_H266_SEI_SUBPIC_LEVEL_INFO",
+ "GST_H266_SEI_USER_DATA_UNREGISTERED",
+ "GST_ID_STR_INIT",
"GST_INFO",
"GST_INFO_ID",
"GST_INFO_OBJECT",
@@ -2518,6 +2611,10 @@
"GST_JPEG2000_SAMPLING_YBR422",
"GST_JPEG2000_SAMPLING_YBR444",
"GST_JPEG2000_SAMPLING_YBRA4444_EXT",
+ "GST_JPEG_BIT_WRITER_ERROR",
+ "GST_JPEG_BIT_WRITER_INVALID_DATA",
+ "GST_JPEG_BIT_WRITER_NO_MORE_SPACE",
+ "GST_JPEG_BIT_WRITER_OK",
"GST_JPEG_ENTROPY_CODING_ARITHMETIC",
"GST_JPEG_ENTROPY_CODING_HUFFMAN",
"GST_JPEG_MARKER_APP0",
@@ -2958,6 +3055,9 @@
"GST_MPEGTS_HIERARCHY_4",
"GST_MPEGTS_HIERARCHY_AUTO",
"GST_MPEGTS_HIERARCHY_NONE",
+ "GST_MPEGTS_METADATA_APPLICATION_FORMAT_IDENTIFIER_FIELD",
+ "GST_MPEGTS_METADATA_APPLICATION_FORMAT_ISAN",
+ "GST_MPEGTS_METADATA_APPLICATION_FORMAT_VSAN",
"GST_MPEGTS_METADATA_FORMAT_APPLICATION_FORMAT",
"GST_MPEGTS_METADATA_FORMAT_BIM",
"GST_MPEGTS_METADATA_FORMAT_IDENTIFIER_FIELD",
@@ -3086,6 +3186,7 @@
"GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM",
"GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC",
"GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K",
+ "GST_MPEGTS_STREAM_TYPE_VIDEO_JPEG_XS",
"GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1",
"GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2",
"GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW",
@@ -3249,6 +3350,7 @@
"GST_MTS_DESC_DVB_VBI_DATA",
"GST_MTS_DESC_DVB_VBI_TELETEXT",
"GST_MTS_DESC_DVB_XAIT_LOCATION",
+ "GST_MTS_DESC_EXTENSION",
"GST_MTS_DESC_EXTERNAL_ES_ID",
"GST_MTS_DESC_EXT_DVB_AC4",
"GST_MTS_DESC_EXT_DVB_AUDIO_PRESELECTION",
@@ -3271,6 +3373,7 @@
"GST_MTS_DESC_EXT_DVB_URI_LINKAGE",
"GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE",
"GST_MTS_DESC_EXT_DVB_XAIT_PID",
+ "GST_MTS_DESC_EXT_JXS_VIDEO",
"GST_MTS_DESC_FLEX_MUX_TIMING",
"GST_MTS_DESC_FMC",
"GST_MTS_DESC_FMX_BUFFER_SIZE",
@@ -3490,6 +3593,7 @@
"GST_NAVIGATION_EVENT_KEY_RELEASE",
"GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS",
"GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE",
+ "GST_NAVIGATION_EVENT_MOUSE_DOUBLE_CLICK",
"GST_NAVIGATION_EVENT_MOUSE_MOVE",
"GST_NAVIGATION_EVENT_MOUSE_SCROLL",
"GST_NAVIGATION_EVENT_TOUCH_CANCEL",
@@ -4435,6 +4539,8 @@
"GST_SEEK_TYPE_END",
"GST_SEEK_TYPE_NONE",
"GST_SEEK_TYPE_SET",
+ "GST_SEGMENTATION_TYPE_INSTANCE",
+ "GST_SEGMENTATION_TYPE_SEMANTIC",
"GST_SEGMENT_FLAG_NONE",
"GST_SEGMENT_FLAG_RESET",
"GST_SEGMENT_FLAG_SEGMENT",
@@ -4572,6 +4678,7 @@
"GST_TAG_CAPTURING_FOCAL_RATIO",
"GST_TAG_CAPTURING_GAIN_ADJUSTMENT",
"GST_TAG_CAPTURING_ISO_SPEED",
+ "GST_TAG_CAPTURING_LIGHT_SOURCE",
"GST_TAG_CAPTURING_METERING_MODE",
"GST_TAG_CAPTURING_SATURATION",
"GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE",
@@ -4735,6 +4842,25 @@
"GST_TASK_STATE",
"GST_TASK_STOPPED",
"GST_TASK_WAIT",
+ "GST_TENSOR_DATA_TYPE_BFLOAT16",
+ "GST_TENSOR_DATA_TYPE_FLOAT16",
+ "GST_TENSOR_DATA_TYPE_FLOAT32",
+ "GST_TENSOR_DATA_TYPE_FLOAT64",
+ "GST_TENSOR_DATA_TYPE_INT16",
+ "GST_TENSOR_DATA_TYPE_INT32",
+ "GST_TENSOR_DATA_TYPE_INT4",
+ "GST_TENSOR_DATA_TYPE_INT64",
+ "GST_TENSOR_DATA_TYPE_INT8",
+ "GST_TENSOR_DATA_TYPE_UINT16",
+ "GST_TENSOR_DATA_TYPE_UINT32",
+ "GST_TENSOR_DATA_TYPE_UINT4",
+ "GST_TENSOR_DATA_TYPE_UINT64",
+ "GST_TENSOR_DATA_TYPE_UINT8",
+ "GST_TENSOR_DIM_ORDER_COL_MAJOR",
+ "GST_TENSOR_DIM_ORDER_ROW_MAJOR",
+ "GST_TENSOR_LAYOUT_CONTIGUOUS",
+ "GST_TENSOR_META_API_TYPE",
+ "GST_TENSOR_META_INFO",
"GST_TEST_CLOCK_CAST",
"GST_TIMED_VALUE_CONTROL_SOURCE_LOCK",
"GST_TIMED_VALUE_CONTROL_SOURCE_UNLOCK",
@@ -4963,9 +5089,11 @@
"GST_TYPE_MPEGTS_EXTENDED_EVENT_DESCRIPTOR",
"GST_TYPE_MPEGTS_EXTENDED_EVENT_ITEM",
"GST_TYPE_MPEGTS_ISO_639_LANGUAGE",
+ "GST_TYPE_MPEGTS_JPEG_XS_DESCRIPTOR",
"GST_TYPE_MPEGTS_LOGICAL_CHANNEL",
"GST_TYPE_MPEGTS_LOGICAL_CHANNEL_DESCRIPTOR",
"GST_TYPE_MPEGTS_METADATA_DESCRIPTOR",
+ "GST_TYPE_MPEGTS_METADATA_POINTER_DESCRIPTOR",
"GST_TYPE_MPEGTS_NIT",
"GST_TYPE_MPEGTS_NIT_STREAM",
"GST_TYPE_MPEGTS_PAT_PROGRAM",
@@ -5576,6 +5704,7 @@
"GST_VIDEO_FORMAT_GBR_12LE",
"GST_VIDEO_FORMAT_GBR_16BE",
"GST_VIDEO_FORMAT_GBR_16LE",
+ "GST_VIDEO_FORMAT_GRAY10_LE16",
"GST_VIDEO_FORMAT_GRAY10_LE32",
"GST_VIDEO_FORMAT_GRAY16_BE",
"GST_VIDEO_FORMAT_GRAY16_LE",
@@ -5626,6 +5755,7 @@
"GST_VIDEO_FORMAT_INFO_W_SUB",
"GST_VIDEO_FORMAT_IYU1",
"GST_VIDEO_FORMAT_IYU2",
+ "GST_VIDEO_FORMAT_LAST",
"GST_VIDEO_FORMAT_MT2110R",
"GST_VIDEO_FORMAT_MT2110T",
"GST_VIDEO_FORMAT_NV12",
@@ -5668,9 +5798,13 @@
"GST_VIDEO_FORMAT_Y210",
"GST_VIDEO_FORMAT_Y212_BE",
"GST_VIDEO_FORMAT_Y212_LE",
+ "GST_VIDEO_FORMAT_Y216_BE",
+ "GST_VIDEO_FORMAT_Y216_LE",
"GST_VIDEO_FORMAT_Y410",
"GST_VIDEO_FORMAT_Y412_BE",
"GST_VIDEO_FORMAT_Y412_LE",
+ "GST_VIDEO_FORMAT_Y416_BE",
+ "GST_VIDEO_FORMAT_Y416_LE",
"GST_VIDEO_FORMAT_Y41B",
"GST_VIDEO_FORMAT_Y42B",
"GST_VIDEO_FORMAT_Y444",
@@ -5933,14 +6067,25 @@
"GST_VIDEO_VBI_PARSER_RESULT_ERROR",
"GST_VIDEO_VBI_PARSER_RESULT_OK",
"GST_VP8_DECODER_CAST",
+ "GST_VP8_INTER_FRAME",
+ "GST_VP8_KEY_FRAME",
"GST_VP8_PARSER_BROKEN_DATA",
"GST_VP8_PARSER_ERROR",
"GST_VP8_PARSER_OK",
"GST_VP8_PICTURE",
"GST_VP8_PICTURE_CAST",
+ "GST_VP8_REF_FRAME_ALTREF",
+ "GST_VP8_REF_FRAME_GOLDEN",
+ "GST_VP8_REF_FRAME_INTRA",
+ "GST_VP8_REF_FRAME_LAST",
+ "GST_VP8_REF_FRAME_MAX",
"GST_VP9_BIT_DEPTH_10",
"GST_VP9_BIT_DEPTH_12",
"GST_VP9_BIT_DEPTH_8",
+ "GST_VP9_BIT_WRITER_ERROR",
+ "GST_VP9_BIT_WRITER_INVALID_DATA",
+ "GST_VP9_BIT_WRITER_NO_MORE_SPACE",
+ "GST_VP9_BIT_WRITER_OK",
"GST_VP9_BLOCK_SIZE_GROUPS",
"GST_VP9_CLASS0_SIZE",
"GST_VP9_COMP_MODE_CONTEXTS",
@@ -6322,6 +6467,13 @@
"GstASFDemux!video_%u",
"GstATDec!sink",
"GstATDec!src",
+ "GstATEnc!sink",
+ "GstATEnc!src",
+ "GstATEncRateControl",
+ "GstATEncRateControl::cbr",
+ "GstATEncRateControl::cvbr",
+ "GstATEncRateControl::lta",
+ "GstATEncRateControl::vbr",
"GstATSCMux",
"GstATSCMux!sink_%d",
"GstATSCMux!src",
@@ -6751,6 +6903,7 @@
"GstAjaVideoFormat::720p 5994",
"GstAjaVideoFormat::720p 6000",
"GstAjaVideoFormat::Auto detect format",
+ "GstAllocationMetaParamsAggregator",
"GstAllocationParams",
"GstAllocationParams.align",
"GstAllocationParams.flags",
@@ -6934,6 +7087,9 @@
"GstAnalyticsRelationMetaInitParams",
"GstAnalyticsRelationMetaInitParams.initial_buf_size",
"GstAnalyticsRelationMetaInitParams.initial_relation_order",
+ "GstAnalyticsSegmentationMtd",
+ "GstAnalyticsSegmentationMtd.id",
+ "GstAnalyticsSegmentationMtd.meta",
"GstAnalyticsTrackingMtd",
"GstAnalyticsTrackingMtd.id",
"GstAnalyticsTrackingMtd.meta",
@@ -7053,6 +7209,8 @@
"GstAsfParse",
"GstAsfParse!sink",
"GstAsfParse!src",
+ "GstAsioSink!sink",
+ "GstAsioSrc!src",
"GstAspectRatioCrop",
"GstAspectRatioCrop!sink",
"GstAspectRatioCrop!src",
@@ -7234,6 +7392,18 @@
"GstAudioConvert:dithering",
"GstAudioConvert:mix-matrix",
"GstAudioConvert:noise-shaping",
+ "GstAudioConvertInputChannelsReorder",
+ "GstAudioConvertInputChannelsReorder::aac",
+ "GstAudioConvertInputChannelsReorder::ac3",
+ "GstAudioConvertInputChannelsReorder::alternate",
+ "GstAudioConvertInputChannelsReorder::cine",
+ "GstAudioConvertInputChannelsReorder::gst",
+ "GstAudioConvertInputChannelsReorder::mono",
+ "GstAudioConvertInputChannelsReorder::smpte",
+ "GstAudioConvertInputChannelsReorderMode",
+ "GstAudioConvertInputChannelsReorderMode::force",
+ "GstAudioConvertInputChannelsReorderMode::none",
+ "GstAudioConvertInputChannelsReorderMode::unpositioned",
"GstAudioConverter",
"GstAudioConverterFlags",
"GstAudioDecoder",
@@ -7832,6 +8002,25 @@
"GstBPMDetect",
"GstBPMDetect!sink",
"GstBPMDetect!src",
+ "GstBarCodeFormat",
+ "GstBarCodeFormat::all",
+ "GstBarCodeFormat::aztec",
+ "GstBarCodeFormat::codabar",
+ "GstBarCodeFormat::code_128",
+ "GstBarCodeFormat::code_39",
+ "GstBarCodeFormat::code_93",
+ "GstBarCodeFormat::ean_13",
+ "GstBarCodeFormat::ean_8",
+ "GstBarCodeFormat::itf",
+ "GstBarCodeFormat::maxicode",
+ "GstBarCodeFormat::pdf_417",
+ "GstBarCodeFormat::png",
+ "GstBarCodeFormat::qr_code",
+ "GstBarCodeFormat::rss_14",
+ "GstBarCodeFormat::rss_expanded",
+ "GstBarCodeFormat::upc_a",
+ "GstBarCodeFormat::upc_e",
+ "GstBarCodeFormat::upc_ean_expansion",
"GstBaseAutoConvert",
"GstBaseCameraSrc",
"GstBaseCameraSrc._gst_reserved",
@@ -7917,6 +8106,7 @@
"GstBaseQROverlay:case-sensitive",
"GstBaseQROverlay:pixel-size",
"GstBaseQROverlay:qrcode-error-correction",
+ "GstBaseQROverlay:size",
"GstBaseQROverlay:x",
"GstBaseQROverlay:y",
"GstBaseQTMux",
@@ -8080,6 +8270,7 @@
"GstBaseTextOverlay:halignment",
"GstBaseTextOverlay:line-alignment",
"GstBaseTextOverlay:outline-color",
+ "GstBaseTextOverlay:response-time-compensation",
"GstBaseTextOverlay:scale-mode",
"GstBaseTextOverlay:scale-pixel-aspect-ratio",
"GstBaseTextOverlay:shaded-background",
@@ -8185,6 +8376,7 @@
"GstBaseTsMux",
"GstBaseTsMux:alignment",
"GstBaseTsMux:bitrate",
+ "GstBaseTsMux:enable-custom-mappings",
"GstBaseTsMux:pat-interval",
"GstBaseTsMux:pcr-interval",
"GstBaseTsMux:pmt-interval",
@@ -8373,10 +8565,18 @@
"GstCACATvDithering::8x8",
"GstCACATvDithering::none",
"GstCACATvDithering::random",
+ "GstCCBufferCea608PaddingStrategy",
+ "GstCCBufferCea608PaddingStrategy::input-remove",
+ "GstCCBufferCea608PaddingStrategy::valid",
"GstCCCombiner",
"GstCCCombiner!caption",
"GstCCCombiner!sink",
"GstCCCombiner!src",
+ "GstCCCombinerInputProcessing",
+ "GstCCCombinerInputProcessing::append",
+ "GstCCCombinerInputProcessing::drop",
+ "GstCCCombinerInputProcessing::favor",
+ "GstCCCombinerInputProcessing::force",
"GstCCConverter",
"GstCCConverter!sink",
"GstCCConverter!src",
@@ -8803,7 +9003,11 @@
"GstCudaContext",
"GstCudaContext.object",
"GstCudaContext:cuda-device-id",
+ "GstCudaContext:default-gpu-stack-size",
+ "GstCudaContext:external-resource-interop",
"GstCudaContext:os-handle",
+ "GstCudaContext:prefer-stream-ordered-alloc",
+ "GstCudaContext:stream-ordered-alloc",
"GstCudaContext:virtual-memory",
"GstCudaContextClass.parent_class",
"GstCudaConvert!sink",
@@ -8834,7 +9038,11 @@
"GstCudaMemory.info",
"GstCudaMemory.mem",
"GstCudaMemoryAllocMethod",
+ "GstCudaMemoryAllocatorNeedPoolCallback",
"GstCudaMemoryCopy",
+ "GstCudaMemoryPool",
+ "GstCudaMemoryPool.context",
+ "GstCudaMemoryPool.parent",
"GstCudaMemoryTransfer",
"GstCudaPoolAllocator",
"GstCudaPoolAllocator.context",
@@ -9173,7 +9381,13 @@
"GstD3D11WindowFullscreenToggleMode::property",
"GstD3D12AV1Dec!sink",
"GstD3D12AV1Dec!src",
+ "GstD3D12BaseConvert",
+ "GstD3D12BaseConvert:async-depth",
+ "GstD3D12BaseConvert:method",
"GstD3D12BaseFilter",
+ "GstD3D12BaseFilter:adapter",
+ "GstD3D12ColorConvert!sink",
+ "GstD3D12ColorConvert!src",
"GstD3D12Compositor!sink_%u",
"GstD3D12Compositor!src",
"GstD3D12CompositorBackground",
@@ -9197,6 +9411,16 @@
"GstD3D12CompositorSizingPolicy::none",
"GstD3D12Convert!sink",
"GstD3D12Convert!src",
+ "GstD3D12Deinterlace!sink",
+ "GstD3D12Deinterlace!src",
+ "GstD3D12DeinterlaceEngine",
+ "GstD3D12DeinterlaceEngine::3d",
+ "GstD3D12DeinterlaceEngine::auto",
+ "GstD3D12DeinterlaceEngine::compute",
+ "GstD3D12DeinterlaceFields",
+ "GstD3D12DeinterlaceFields::all",
+ "GstD3D12DeinterlaceFields::bottom",
+ "GstD3D12DeinterlaceFields::top",
"GstD3D12Download!sink",
"GstD3D12Download!src",
"GstD3D12Encoder",
@@ -9235,11 +9459,20 @@
"GstD3D12H264Enc!src",
"GstD3D12H265Dec!sink",
"GstD3D12H265Dec!src",
+ "GstD3D12IpcIOMode",
+ "GstD3D12IpcIOMode::copy",
+ "GstD3D12IpcIOMode::import",
+ "GstD3D12IpcSink!sink",
+ "GstD3D12IpcSrc!src",
"GstD3D12MSAAMode",
"GstD3D12MSAAMode::2x",
"GstD3D12MSAAMode::4x",
"GstD3D12MSAAMode::8x",
"GstD3D12MSAAMode::disabled",
+ "GstD3D12MemoryCopy",
+ "GstD3D12MemoryCopy:adapter",
+ "GstD3D12MipMapping!sink",
+ "GstD3D12MipMapping!src",
"GstD3D12Mpeg2Dec!sink",
"GstD3D12Mpeg2Dec!src",
"GstD3D12SamplingMethod",
@@ -9247,7 +9480,16 @@
"GstD3D12SamplingMethod::bilinear",
"GstD3D12SamplingMethod::linear-minification",
"GstD3D12SamplingMethod::nearest-neighbour",
+ "GstD3D12Scale!sink",
+ "GstD3D12Scale!src",
+ "GstD3D12ScreenCaptureAPI",
+ "GstD3D12ScreenCaptureAPI::dxgi",
+ "GstD3D12ScreenCaptureAPI::wgc",
"GstD3D12ScreenCaptureSrc!src",
+ "GstD3D12ScreenCaptureTonemap",
+ "GstD3D12ScreenCaptureTonemap::linear",
+ "GstD3D12ScreenCaptureTonemap::reinhard",
+ "GstD3D12SwapChainSink!sink",
"GstD3D12TestSrc!src",
"GstD3D12TestSrcPattern",
"GstD3D12TestSrcPattern::ball",
@@ -9267,10 +9509,23 @@
"GstD3D12Upload!sink",
"GstD3D12Upload!src",
"GstD3D12VideoSink!sink",
+ "GstD3D12VideoSinkDisplayFormat",
+ "GstD3D12VideoSinkDisplayFormat::b8g8r8a8-unorm",
+ "GstD3D12VideoSinkDisplayFormat::r10g10b10a2-unorm",
+ "GstD3D12VideoSinkDisplayFormat::r8g8b8a8-unorm",
+ "GstD3D12VideoSinkDisplayFormat::unknown",
"GstD3D12Vp8Dec!sink",
"GstD3D12Vp8Dec!src",
"GstD3D12Vp9Dec!sink",
"GstD3D12Vp9Dec!src",
+ "GstD3D12WindowCaptureMode",
+ "GstD3D12WindowCaptureMode::client",
+ "GstD3D12WindowCaptureMode::default",
+ "GstD3D12WindowOverlayMode",
+ "GstD3D12WindowOverlayMode::d2d",
+ "GstD3D12WindowOverlayMode::d3d11",
+ "GstD3D12WindowOverlayMode::d3d12",
+ "GstD3D12WindowOverlayMode::none",
"GstD3DVideoSink",
"GstD3DVideoSink!sink",
"GstD3DVideoSink:create-render-window",
@@ -9579,9 +9834,19 @@
"GstDecklinkModes::1080p50",
"GstDecklinkModes::1080p5994",
"GstDecklinkModes::1080p60",
+ "GstDecklinkModes::1440x1080p50",
+ "GstDecklinkModes::1440x1080p60",
+ "GstDecklinkModes::1440x900p50",
+ "GstDecklinkModes::1440x900p60",
"GstDecklinkModes::1556p2398",
"GstDecklinkModes::1556p24",
"GstDecklinkModes::1556p25",
+ "GstDecklinkModes::1600x1200p50",
+ "GstDecklinkModes::1600x1200p60",
+ "GstDecklinkModes::1920x1200p50",
+ "GstDecklinkModes::1920x1200p60",
+ "GstDecklinkModes::1920x1440p50",
+ "GstDecklinkModes::1920x1440p60",
"GstDecklinkModes::2160p2398",
"GstDecklinkModes::2160p24",
"GstDecklinkModes::2160p25",
@@ -9590,6 +9855,10 @@
"GstDecklinkModes::2160p50",
"GstDecklinkModes::2160p5994",
"GstDecklinkModes::2160p60",
+ "GstDecklinkModes::2560x1440p50",
+ "GstDecklinkModes::2560x1440p60",
+ "GstDecklinkModes::2560x1600p50",
+ "GstDecklinkModes::2560x1600p60",
"GstDecklinkModes::2kdcip2398",
"GstDecklinkModes::2kdcip24",
"GstDecklinkModes::2kdcip25",
@@ -9606,9 +9875,11 @@
"GstDecklinkModes::4kdcip50",
"GstDecklinkModes::4kdcip5994",
"GstDecklinkModes::4kdcip60",
+ "GstDecklinkModes::640x480p60",
"GstDecklinkModes::720p50",
"GstDecklinkModes::720p5994",
"GstDecklinkModes::720p60",
+ "GstDecklinkModes::800x600p60",
"GstDecklinkModes::8kdcip2398",
"GstDecklinkModes::8kdcip24",
"GstDecklinkModes::8kdcip25",
@@ -9625,22 +9896,6 @@
"GstDecklinkModes::8kp50",
"GstDecklinkModes::8kp5994",
"GstDecklinkModes::8kp60",
- "GstDecklinkModes::640x480p60",
- "GstDecklinkModes::800x600p60",
- "GstDecklinkModes::1440x900p50",
- "GstDecklinkModes::1440x900p60",
- "GstDecklinkModes::1440x1080p50",
- "GstDecklinkModes::1440x1080p60",
- "GstDecklinkModes::1600x1200p50",
- "GstDecklinkModes::1600x1200p60",
- "GstDecklinkModes::1920x1200p50",
- "GstDecklinkModes::1920x1200p60",
- "GstDecklinkModes::1920x1440p50",
- "GstDecklinkModes::1920x1440p60",
- "GstDecklinkModes::2560x1440p50",
- "GstDecklinkModes::2560x1440p60",
- "GstDecklinkModes::2560x1600p50",
- "GstDecklinkModes::2560x1600p60",
"GstDecklinkModes::auto",
"GstDecklinkModes::ntsc",
"GstDecklinkModes::ntsc-p",
@@ -10512,6 +10767,7 @@
"GstFaceOverlay:w",
"GstFaceOverlay:x",
"GstFaceOverlay:y",
+ "GstFactoriesTracer",
"GstFakeAudioSink!sink",
"GstFakeAudioSinkStateError",
"GstFakeAudioSinkStateError::none",
@@ -11004,6 +11260,7 @@
"GstGLDownloadElement",
"GstGLDownloadElement!sink",
"GstGLDownloadElement!src",
+ "GstGLDrmFormatFlags",
"GstGLEffects",
"GstGLEffectsEffect",
"GstGLEffectsEffect::blur",
@@ -11769,6 +12026,47 @@
"GstH265UserDataUnregistered",
"GstH265VPS",
"GstH265VUIParams",
+ "GstH266ALF",
+ "GstH266APS",
+ "GstH266APSType",
+ "GstH266AUD",
+ "GstH266BufferingPeriod",
+ "GstH266DCI",
+ "GstH266DPBParameters",
+ "GstH266DUInfo",
+ "GstH266FrameFieldInfo",
+ "GstH266GeneralConstraintsInfo",
+ "GstH266GeneralHRDParameters",
+ "GstH266LMCS",
+ "GstH266Level",
+ "GstH266NalUnit",
+ "GstH266NalUnitType",
+ "GstH266OLSHRDParameters",
+ "GstH266OPI",
+ "GstH266PPS",
+ "GstH266Parse!sink",
+ "GstH266Parse!src",
+ "GstH266Parser",
+ "GstH266ParserResult",
+ "GstH266PicHdr",
+ "GstH266PicTiming",
+ "GstH266PredWeightTable",
+ "GstH266Profile",
+ "GstH266ProfileTierLevel",
+ "GstH266RefPicListStruct",
+ "GstH266RefPicLists",
+ "GstH266SEIMessage",
+ "GstH266SEIPayloadType",
+ "GstH266SPS",
+ "GstH266SPSRangeExtensionParams",
+ "GstH266ScalableNesting",
+ "GstH266ScalingList",
+ "GstH266SliceHdr",
+ "GstH266SliceType",
+ "GstH266SubLayerHRDParameters",
+ "GstH266SubPicLevelInfo",
+ "GstH266VPS",
+ "GstH266VUIParams",
"GstHDV1394Src",
"GstHDV1394Src!src",
"GstHDV1394Src:channel",
@@ -11852,6 +12150,7 @@
"GstId3v2Mux",
"GstId3v2Mux!sink",
"GstId3v2Mux!src",
+ "GstIdStr",
"GstIdentity",
"GstIdentity!sink",
"GstIdentity!src",
@@ -12009,6 +12308,13 @@
"GstIqa:dssim-error-threshold",
"GstIqaMode",
"GstIqaMode::strict",
+ "GstIsacDec!sink",
+ "GstIsacDec!src",
+ "GstIsacEnc!sink",
+ "GstIsacEnc!src",
+ "GstIsacEncOutputFrameLen",
+ "GstIsacEncOutputFrameLen::30 ms",
+ "GstIsacEncOutputFrameLen::60 ms, only usable in wideband mode (16 kHz)",
"GstIterator",
"GstIterator.cookie",
"GstIterator.copy",
@@ -12073,6 +12379,7 @@
"GstJifMux",
"GstJifMux!sink",
"GstJifMux!src",
+ "GstJpegBitWriterResult",
"GstJpegDec",
"GstJpegDec!sink",
"GstJpegDec!src",
@@ -12185,10 +12492,12 @@
"GstLameMP3EncTarget",
"GstLameMP3EncTarget::bitrate",
"GstLameMP3EncTarget::quality",
+ "GstLatencyTracer",
"GstLc3Dec!sink",
"GstLc3Dec!src",
"GstLc3Enc!sink",
"GstLc3Enc!src",
+ "GstLcevcMeta",
"GstLcms",
"GstLcms!sink",
"GstLcms!src",
@@ -12207,6 +12516,19 @@
"GstLcmsLookupMethod::cached",
"GstLcmsLookupMethod::precalculated",
"GstLcmsLookupMethod::uncached",
+ "GstLdacEnc!sink",
+ "GstLdacEnc!src",
+ "GstLdacEqmid",
+ "GstLdacEqmid::hq",
+ "GstLdacEqmid::mq",
+ "GstLdacEqmid::sq",
+ "GstLeaksTracer",
+ "GstLeaksTracer::activity-get-checkpoint",
+ "GstLeaksTracer::activity-log-checkpoint",
+ "GstLeaksTracer::activity-start-tracking",
+ "GstLeaksTracer::activity-stop-tracking",
+ "GstLeaksTracer::get-live-objects",
+ "GstLeaksTracer::log-live-objects",
"GstLevel",
"GstLevel!sink",
"GstLevel!src",
@@ -12233,6 +12555,12 @@
"GstLibAVVidDecSkipFrame::Skip IDCT/Dequantization",
"GstLibAVVidDecSkipFrame::Skip everything",
"GstLibAVVidDecSkipFrame::Skip nothing",
+ "GstLibAVVidDecSkipFrame::all",
+ "GstLibAVVidDecSkipFrame::bidir",
+ "GstLibAVVidDecSkipFrame::default",
+ "GstLibAVVidDecSkipFrame::non-intra",
+ "GstLibAVVidDecSkipFrame::non-key",
+ "GstLibAVVidDecSkipFrame::non-ref",
"GstLibAVVidDecThreadType",
"GstLibAVVidDecThreadType::auto",
"GstLibAVVidDecThreadType::frame",
@@ -12258,6 +12586,7 @@
"GstLiveAdder:latency",
"GstLockFlags",
"GstLogFunction",
+ "GstLogTracer",
"GstMFAacDec!sink",
"GstMFAacDec!src",
"GstMFAacEnc",
@@ -12968,6 +13297,7 @@
"GstMpegtsEITEvent.free_CA_mode",
"GstMpegtsEITEvent.running_status",
"GstMpegtsEITEvent.start_time",
+ "GstMpegtsExtendedDescriptorType",
"GstMpegtsExtendedEventDescriptor",
"GstMpegtsExtendedEventDescriptor.descriptor_number",
"GstMpegtsExtendedEventDescriptor.items",
@@ -12984,6 +13314,35 @@
"GstMpegtsISO639LanguageDescriptor.language",
"GstMpegtsISO639LanguageDescriptor.nb_language",
"GstMpegtsIso639AudioType",
+ "GstMpegtsJpegXsDescriptor",
+ "GstMpegtsJpegXsDescriptor.L_max",
+ "GstMpegtsJpegXsDescriptor.L_min",
+ "GstMpegtsJpegXsDescriptor.MaxCLL",
+ "GstMpegtsJpegXsDescriptor.MaxFALL",
+ "GstMpegtsJpegXsDescriptor.Plev",
+ "GstMpegtsJpegXsDescriptor.Ppih",
+ "GstMpegtsJpegXsDescriptor.X_c0",
+ "GstMpegtsJpegXsDescriptor.X_c1",
+ "GstMpegtsJpegXsDescriptor.X_c2",
+ "GstMpegtsJpegXsDescriptor.X_wp",
+ "GstMpegtsJpegXsDescriptor.Y_c0",
+ "GstMpegtsJpegXsDescriptor.Y_c1",
+ "GstMpegtsJpegXsDescriptor.Y_c2",
+ "GstMpegtsJpegXsDescriptor.Y_wp",
+ "GstMpegtsJpegXsDescriptor.brat",
+ "GstMpegtsJpegXsDescriptor.buffer_model_type",
+ "GstMpegtsJpegXsDescriptor.colour_primaries",
+ "GstMpegtsJpegXsDescriptor.descriptor_version",
+ "GstMpegtsJpegXsDescriptor.frat",
+ "GstMpegtsJpegXsDescriptor.horizontal_size",
+ "GstMpegtsJpegXsDescriptor.matrix_coefficients",
+ "GstMpegtsJpegXsDescriptor.max_buffer_size",
+ "GstMpegtsJpegXsDescriptor.mdm_flag",
+ "GstMpegtsJpegXsDescriptor.schar",
+ "GstMpegtsJpegXsDescriptor.still_mode",
+ "GstMpegtsJpegXsDescriptor.transfer_characteristics",
+ "GstMpegtsJpegXsDescriptor.vertical_size",
+ "GstMpegtsJpegXsDescriptor.video_full_range_flag",
"GstMpegtsLogicalChannel",
"GstMpegtsLogicalChannel.logical_channel_number",
"GstMpegtsLogicalChannel.service_id",
@@ -12991,6 +13350,7 @@
"GstMpegtsLogicalChannelDescriptor",
"GstMpegtsLogicalChannelDescriptor.channels",
"GstMpegtsLogicalChannelDescriptor.nb_channels",
+ "GstMpegtsMetadataApplicationFormat",
"GstMpegtsMetadataDescriptor",
"GstMpegtsMetadataDescriptor.decoder_config_flags",
"GstMpegtsMetadataDescriptor.dsm_cc_flag",
@@ -12999,6 +13359,12 @@
"GstMpegtsMetadataDescriptor.metadata_format_identifier",
"GstMpegtsMetadataDescriptor.metadata_service_id",
"GstMpegtsMetadataFormat",
+ "GstMpegtsMetadataPointerDescriptor",
+ "GstMpegtsMetadataPointerDescriptor.metadata_application_format",
+ "GstMpegtsMetadataPointerDescriptor.metadata_format",
+ "GstMpegtsMetadataPointerDescriptor.metadata_format_identifier",
+ "GstMpegtsMetadataPointerDescriptor.metadata_service_id",
+ "GstMpegtsMetadataPointerDescriptor.program_number",
"GstMpegtsMiscDescriptorType",
"GstMpegtsModulationType",
"GstMpegtsNIT",
@@ -13905,6 +14271,10 @@
"GstOpenalSrc!src",
"GstOpenalSrc:device",
"GstOpenalSrc:device-name",
+ "GstOpenaptxDec!sink",
+ "GstOpenaptxDec!src",
+ "GstOpenaptxEnc!sink",
+ "GstOpenaptxEnc!src",
"GstOpencvFaceBlurFlags",
"GstOpencvFaceBlurFlags::do-canny-pruning",
"GstOpencvFaceDetectFlags",
@@ -14600,6 +14970,14 @@
"GstQTMuxPad",
"GstQTMuxPad:trak-timescale",
"GstQml6D3D11Sink!sink",
+ "GstQml6GLMixer!sink_%u",
+ "GstQml6GLMixer!src",
+ "GstQml6GLMixerPad",
+ "GstQml6GLMixerPad:widget",
+ "GstQml6GLOverlay!sink",
+ "GstQml6GLOverlay!src",
+ "GstQml6GLSink!sink",
+ "GstQml6GLSrc!src",
"GstQrcodeOverlayCorrection",
"GstQrcodeOverlayCorrection::Approx 15%%",
"GstQrcodeOverlayCorrection::Approx 25%%",
@@ -14790,6 +15168,8 @@
"GstRTCPSync",
"GstRTCPSync::always",
"GstRTCPSync::initial",
+ "GstRTCPSync::never",
+ "GstRTCPSync::ntp",
"GstRTCPSync::rtp-info",
"GstRTCPType",
"GstRTCPXRType",
@@ -15574,6 +15954,7 @@
"GstRTSPWMS",
"GstRTSPWatch",
"GstRTSPWatchFuncs",
+ "GstRUsageTracer",
"GstRadioacTV",
"GstRadioacTV!sink",
"GstRadioacTV!src",
@@ -15892,6 +16273,7 @@
"GstRtmpAuthmod",
"GstRtmpAuthmod::adobe",
"GstRtmpAuthmod::auto",
+ "GstRtmpAuthmod::llnw",
"GstRtmpAuthmod::none",
"GstRtmpLocationHandler",
"GstRtmpLocationHandler:application",
@@ -16221,6 +16603,9 @@
"GstRtpOnvifTimestamp:set-t-bit",
"GstRtpPassthroughPay!sink",
"GstRtpPassthroughPay!src",
+ "GstRtpPassthroughPayRetimestampMode",
+ "GstRtpPassthroughPayRetimestampMode::disabled",
+ "GstRtpPassthroughPayRetimestampMode::enabled",
"GstRtpPcmaDepay",
"GstRtpPcmaDepay!sink",
"GstRtpPcmaDepay!src",
@@ -16781,6 +17166,7 @@
"GstSegmentationMethod::codebook",
"GstSegmentationMethod::mog",
"GstSegmentationMethod::mog2",
+ "GstSegmentationType",
"GstSelectorPad",
"GstSelectorPad:active",
"GstSelectorPad:always-ok",
@@ -17129,6 +17515,8 @@
"GstSsaParse",
"GstSsaParse!sink",
"GstSsaParse!src",
+ "GstSsdObjectDetector!sink",
+ "GstSsdObjectDetector!src",
"GstStackTraceFlags",
"GstState",
"GstStateChange",
@@ -17141,6 +17529,7 @@
"GstStaticPadTemplate.name_template",
"GstStaticPadTemplate.presence",
"GstStaticPadTemplate.static_caps",
+ "GstStatsTracer",
"GstStereo",
"GstStereo!sink",
"GstStereo!src",
@@ -17195,8 +17584,11 @@
"GstStructure.type",
"GstStructureChangeType",
"GstStructureFilterMapFunc",
+ "GstStructureFilterMapIdStrFunc",
"GstStructureForeachFunc",
+ "GstStructureForeachIdStrFunc",
"GstStructureMapFunc",
+ "GstStructureMapIdStrFunc",
"GstSubParse",
"GstSubParse!sink",
"GstSubParse!src",
@@ -17210,6 +17602,47 @@
"GstSubtitleOverlay:silent",
"GstSubtitleOverlay:subtitle-encoding",
"GstSubtitleOverlay:subtitle-ts-offset",
+ "GstSvtAv1Enc!sink",
+ "GstSvtAv1Enc!src",
+ "GstSvtAv1EncIntraRefreshType",
+ "GstSvtAv1EncIntraRefreshType::CRA",
+ "GstSvtAv1EncIntraRefreshType::IDR",
+ "GstSvtHevcEnc!sink",
+ "GstSvtHevcEnc!src",
+ "GstSvtHevcEncBPyramid",
+ "GstSvtHevcEncBPyramid::2-level-hierarchy",
+ "GstSvtHevcEncBPyramid::3-level-hierarchy",
+ "GstSvtHevcEncBPyramid::4-level-hierarchy",
+ "GstSvtHevcEncBPyramid::flat",
+ "GstSvtHevcEncBaseLayerMode",
+ "GstSvtHevcEncBaseLayerMode::B-frame",
+ "GstSvtHevcEncBaseLayerMode::P-frame",
+ "GstSvtHevcEncPredStruct",
+ "GstSvtHevcEncPredStruct::low-delay-B",
+ "GstSvtHevcEncPredStruct::low-delay-P",
+ "GstSvtHevcEncPredStruct::random-access",
+ "GstSvtHevcEncRC",
+ "GstSvtHevcEncRC::cqp",
+ "GstSvtHevcEncRC::vbr",
+ "GstSvtHevcEncTune",
+ "GstSvtHevcEncTune::oq",
+ "GstSvtHevcEncTune::sq",
+ "GstSvtHevcEncTune::vmaf",
+ "GstSvtJpegXsDec!sink",
+ "GstSvtJpegXsDec!src",
+ "GstSvtJpegXsEnc!sink",
+ "GstSvtJpegXsEnc!src",
+ "GstSvtJpegXsEncCodingSignsType",
+ "GstSvtJpegXsEncCodingSignsType::disable",
+ "GstSvtJpegXsEncCodingSignsType::fast",
+ "GstSvtJpegXsEncCodingSignsType::full",
+ "GstSvtJpegXsEncQuantModeType",
+ "GstSvtJpegXsEncQuantModeType::deadzone",
+ "GstSvtJpegXsEncQuantModeType::uniform",
+ "GstSvtJpegXsEncRateControlModeType",
+ "GstSvtJpegXsEncRateControlModeType::cbr-precinct",
+ "GstSvtJpegXsEncRateControlModeType::cbr-precinct-move-padding",
+ "GstSvtJpegXsEncRateControlModeType::cbr-slice",
"GstSwitchBin",
"GstSwitchBin!sink",
"GstSwitchBin!src",
@@ -17341,6 +17774,21 @@
"GstTemplateMatch:display",
"GstTemplateMatch:method",
"GstTemplateMatch:template",
+ "GstTensor",
+ "GstTensor.data",
+ "GstTensor.data_type",
+ "GstTensor.dims",
+ "GstTensor.dims_order",
+ "GstTensor.id",
+ "GstTensor.layout",
+ "GstTensor.num_dims",
+ "GstTensorDataType",
+ "GstTensorDimOrder",
+ "GstTensorLayout",
+ "GstTensorMeta",
+ "GstTensorMeta.meta",
+ "GstTensorMeta.num_tensors",
+ "GstTensorMeta.tensors",
"GstTest",
"GstTest!sink",
"GstTest:allowed-timestamp-deviation",
@@ -17443,6 +17891,7 @@
"GstTimeCodeStamperSource::last-known-or-zero",
"GstTimeCodeStamperSource::ltc",
"GstTimeCodeStamperSource::rtc",
+ "GstTimeCodeStamperSource::running-time",
"GstTimeCodeStamperSource::zero",
"GstTimeOverlay",
"GstTimeOverlay!src",
@@ -18001,6 +18450,7 @@
"GstVPXEncTuning",
"GstVPXEncTuning::psnr",
"GstVPXEncTuning::ssim",
+ "GstVTEnc",
"GstVaAV1Dec!sink",
"GstVaAV1Dec!src",
"GstVaAV1Enc!sink",
@@ -18057,6 +18507,8 @@
"GstVaH264Enc!src",
"GstVaH265Dec!sink",
"GstVaH265Dec!src",
+ "GstVaH265Enc!sink",
+ "GstVaH265Enc!src",
"GstVaImplementation",
"GstVaInterpolationMethod",
"GstVaInterpolationMethod::advanced",
@@ -18086,6 +18538,8 @@
"GstVaapiDecodeBin:max-size-buffers",
"GstVaapiDecodeBin:max-size-bytes",
"GstVaapiDecodeBin:max-size-time",
+ "GstVaapiDecode_av1!sink",
+ "GstVaapiDecode_av1!src",
"GstVaapiDecode_h264",
"GstVaapiDecode_h264!sink",
"GstVaapiDecode_h264!src",
@@ -18103,7 +18557,6 @@
"GstVaapiDecode_vc1",
"GstVaapiDecode_vc1!sink",
"GstVaapiDecode_vc1!src",
- "vaapivp9dec",
"GstVaapiDecode_vp9!sink",
"GstVaapiDecode_vp9!src",
"GstVaapiDeinterlaceMethod",
@@ -18517,6 +18970,7 @@
"GstValidateScenario.parent",
"GstValidateScenario::action-done",
"GstValidateScenario::done",
+ "GstValidateScenario::stopping",
"GstValidateScenario:execute-on-idle",
"GstValidateScenario:handles-states",
"GstValidateScenario:validate-runner",
@@ -18549,6 +19003,7 @@
"GstValveDropMode::drop-all",
"GstValveDropMode::forward-sticky-events",
"GstValveDropMode::transform-to-gap",
+ "GstVecDeque",
"GstVertigoTV",
"GstVertigoTV!sink",
"GstVertigoTV!src",
@@ -19323,6 +19778,7 @@
"GstVp8DecoderClass::output_picture",
"GstVp8DecoderClass::start_picture",
"GstVp8FrameHdr",
+ "GstVp8FrameType",
"GstVp8MbLfAdjustments",
"GstVp8ModeProbs",
"GstVp8MvProbs",
@@ -19340,11 +19796,13 @@
"GstVp8QuantIndices",
"GstVp8RangeDecoder",
"GstVp8RangeDecoderState",
+ "GstVp8RefFrameType",
"GstVp8Segmentation",
"GstVp8TokenProbs",
"GstVp9AlphaDecodeBin!sink",
"GstVp9AlphaDecodeBin!src",
"GstVp9BitDepth",
+ "GstVp9BitWriterResult",
"GstVp9ColorRange",
"GstVp9ColorSpace",
"GstVp9Decoder",
@@ -19464,7 +19922,9 @@
"GstVtdec!src",
"GstVtdecHw!sink",
"GstVtdecHw!src",
- "GstVTEnc",
+ "GstVtencRateControl",
+ "GstVtencRateControl::abr",
+ "GstVtencRateControl::cbr",
"GstVulkanBarrierBufferInfo",
"GstVulkanBarrierBufferInfo.offset",
"GstVulkanBarrierBufferInfo.parent",
@@ -19554,6 +20014,10 @@
"GstVulkanDownload",
"GstVulkanDownload!sink",
"GstVulkanDownload!src",
+ "GstVulkanEncodeQueryResult",
+ "GstVulkanEncodeQueryResult.data_size",
+ "GstVulkanEncodeQueryResult.offset",
+ "GstVulkanEncodeQueryResult.status",
"GstVulkanError",
"GstVulkanFence",
"GstVulkanFence.cache",
@@ -19580,6 +20044,10 @@
"GstVulkanFormatInfo.scaling",
"GstVulkanFormatInfo.shift",
"GstVulkanFormatInfo.w_sub",
+ "GstVulkanFormatMap",
+ "GstVulkanFormatMap.format",
+ "GstVulkanFormatMap.vkfrmt",
+ "GstVulkanFormatMap.vkfrmts",
"GstVulkanFormatScaling",
"GstVulkanFullScreenQuad",
"GstVulkanFullScreenQuad.cmd_pool",
@@ -19699,6 +20167,7 @@
"GstVulkanQueueClass.parent_class",
"GstVulkanQueueFamilyOps",
"GstVulkanQueueFamilyOps.query",
+ "GstVulkanQueueFamilyOps.query_result_status",
"GstVulkanQueueFamilyOps.video",
"GstVulkanShaderSpv!sink",
"GstVulkanShaderSpv!src",
@@ -19764,8 +20233,11 @@
"GstVulkanVideoProfile.usage.codec._reserved",
"GstVulkanVideoProfile.usage.codec.base",
"GstVulkanVideoProfile.usage.codec.h264dec",
+ "GstVulkanVideoProfile.usage.codec.h264enc",
"GstVulkanVideoProfile.usage.codec.h265dec",
+ "GstVulkanVideoProfile.usage.codec.h265enc",
"GstVulkanVideoProfile.usage.decode",
+ "GstVulkanVideoProfile.usage.encode",
"GstVulkanViewConvert",
"GstVulkanViewConvert!sink",
"GstVulkanViewConvert!src",
@@ -20140,6 +20612,7 @@
"GstWebRTCSessionDescription.type",
"GstWebRTCSignalingState",
"GstWebRTCStatsType",
+ "GstWebView2Src!src",
"GstWebpEnc",
"GstWebpEnc!sink",
"GstWebpEnc!src",
@@ -20292,6 +20765,10 @@
"GstX264EncMe::hex",
"GstX264EncMe::tesa",
"GstX264EncMe::umh",
+ "GstX264EncNalHrd",
+ "GstX264EncNalHrd::cbr",
+ "GstX264EncNalHrd::none",
+ "GstX264EncNalHrd::vbr",
"GstX264EncPass",
"GstX264EncPass::cbr",
"GstX264EncPass::pass1",
@@ -20418,6 +20895,8 @@
"GstZBar:attach-frame",
"GstZBar:cache",
"GstZBar:message",
+ "GstZXing!sink",
+ "GstZXing!src",
"GstZebraStripe",
"GstZebraStripe!sink",
"GstZebraStripe!src",
@@ -21879,6 +22358,774 @@
"_GstH265VUIParams.video_format",
"_GstH265VUIParams.video_full_range_flag",
"_GstH265VUIParams.video_signal_type_present_flag",
+ "_GstH266ALF.cc_cb_coeff_sign",
+ "_GstH266ALF.cc_cb_filter_signal_flag",
+ "_GstH266ALF.cc_cb_filters_signalled_minus1",
+ "_GstH266ALF.cc_cb_mapped_coeff_abs",
+ "_GstH266ALF.cc_cr_coeff_sign",
+ "_GstH266ALF.cc_cr_filter_signal_flag",
+ "_GstH266ALF.cc_cr_filters_signalled_minus1",
+ "_GstH266ALF.cc_cr_mapped_coeff_abs",
+ "_GstH266ALF.chroma_clip_flag",
+ "_GstH266ALF.chroma_clip_idx",
+ "_GstH266ALF.chroma_coeff_abs",
+ "_GstH266ALF.chroma_coeff_sign",
+ "_GstH266ALF.chroma_filter_signal_flag",
+ "_GstH266ALF.chroma_num_alt_filters_minus1",
+ "_GstH266ALF.luma_clip_flag",
+ "_GstH266ALF.luma_clip_idx",
+ "_GstH266ALF.luma_coeff_abs",
+ "_GstH266ALF.luma_coeff_delta_idx",
+ "_GstH266ALF.luma_coeff_sign",
+ "_GstH266ALF.luma_filter_signal_flag",
+ "_GstH266ALF.luma_num_filters_signalled_minus1",
+ "_GstH266APS.aps_id",
+ "_GstH266APS.chroma_present_flag",
+ "_GstH266APS.extension_data_flag",
+ "_GstH266APS.extension_flag",
+ "_GstH266APS.params_type",
+ "_GstH266APS.valid",
+ "_GstH266AUD.irap_or_gdr_flag",
+ "_GstH266AUD.pic_type",
+ "_GstH266BufferingPeriod.additional_concatenation_info_present_flag",
+ "_GstH266BufferingPeriod.alt_cpb_params_present_flag",
+ "_GstH266BufferingPeriod.concatenation_flag",
+ "_GstH266BufferingPeriod.cpb_cnt_minus1",
+ "_GstH266BufferingPeriod.cpb_initial_removal_delay_length_minus1",
+ "_GstH266BufferingPeriod.cpb_removal_delay_delta_minus1",
+ "_GstH266BufferingPeriod.cpb_removal_delay_delta_val",
+ "_GstH266BufferingPeriod.cpb_removal_delay_deltas_present_flag",
+ "_GstH266BufferingPeriod.cpb_removal_delay_length_minus1",
+ "_GstH266BufferingPeriod.dpb_output_delay_du_length_minus1",
+ "_GstH266BufferingPeriod.dpb_output_delay_length_minus1",
+ "_GstH266BufferingPeriod.dpb_output_tid_offset",
+ "_GstH266BufferingPeriod.du_cpb_params_in_pic_timing_sei_flag",
+ "_GstH266BufferingPeriod.du_cpb_removal_delay_increment_length_minus1",
+ "_GstH266BufferingPeriod.du_dpb_params_in_pic_timing_sei_flag",
+ "_GstH266BufferingPeriod.du_hrd_params_present_flag",
+ "_GstH266BufferingPeriod.max_initial_removal_delay_for_concatenation",
+ "_GstH266BufferingPeriod.max_sublayers_minus1",
+ "_GstH266BufferingPeriod.nal_hrd_params_present_flag",
+ "_GstH266BufferingPeriod.nal_initial_alt_cpb_removal_delay",
+ "_GstH266BufferingPeriod.nal_initial_alt_cpb_removal_offset",
+ "_GstH266BufferingPeriod.nal_initial_cpb_removal_delay",
+ "_GstH266BufferingPeriod.nal_initial_cpb_removal_offset",
+ "_GstH266BufferingPeriod.num_cpb_removal_delay_deltas_minus1",
+ "_GstH266BufferingPeriod.sublayer_dpb_output_offsets_present_flag",
+ "_GstH266BufferingPeriod.sublayer_initial_cpb_removal_delay_present_flag",
+ "_GstH266BufferingPeriod.use_alt_cpb_params_flag",
+ "_GstH266BufferingPeriod.vcl_hrd_params_present_flag",
+ "_GstH266BufferingPeriod.vcl_initial_alt_cpb_removal_delay",
+ "_GstH266BufferingPeriod.vcl_initial_alt_cpb_removal_offset",
+ "_GstH266BufferingPeriod.vcl_initial_cpb_removal_delay",
+ "_GstH266BufferingPeriod.vcl_initial_cpb_removal_offset",
+ "_GstH266DCI.extension_data_flag",
+ "_GstH266DCI.extension_flag",
+ "_GstH266DCI.num_ptls_minus1",
+ "_GstH266DCI.profile_tier_level",
+ "_GstH266DPBParameters.max_dec_pic_buffering_minus1",
+ "_GstH266DPBParameters.max_latency_increase_plus1",
+ "_GstH266DPBParameters.max_num_reorder_pics",
+ "_GstH266DUInfo.decoding_unit_idx",
+ "_GstH266DUInfo.dpb_output_du_delay",
+ "_GstH266DUInfo.dpb_output_du_delay_present_flag",
+ "_GstH266DUInfo.du_cpb_removal_delay_increment",
+ "_GstH266DUInfo.sublayer_delays_present_flag",
+ "_GstH266FrameFieldInfo.bottom_field_flag",
+ "_GstH266FrameFieldInfo.display_elemental_periods_minus1",
+ "_GstH266FrameFieldInfo.display_fields_from_frame_flag",
+ "_GstH266FrameFieldInfo.duplicate_flag",
+ "_GstH266FrameFieldInfo.field_pic_flag",
+ "_GstH266FrameFieldInfo.paired_with_next_field_flag",
+ "_GstH266FrameFieldInfo.pairing_indicated_flag",
+ "_GstH266FrameFieldInfo.source_scan_type",
+ "_GstH266FrameFieldInfo.top_field_first_flag",
+ "_GstH266FrameFieldInfo.valid",
+ "_GstH266GeneralConstraintsInfo.all_layers_independent_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.all_rap_pictures_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.intra_only_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_act_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_affine_motion_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_alf_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_amvr_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_aps_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_bcw_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_bdof_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_bdpcm_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ccalf_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_cclm_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_chroma_qp_offset_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ciip_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_cra_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_cu_qp_delta_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_dep_quant_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_dmvr_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_explicit_scaling_list_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_extended_precision_processing_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_gdr_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_gpm_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ibc_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_idr_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_idr_rpl_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_isp_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_joint_cbcr_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ladf_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_lfnst_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_lmcs_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_luma_transform_size_64_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mip_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mixed_nalu_types_in_pic_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mmvd_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mrl_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mts_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_mtt_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_palette_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_partition_constraints_override_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_persistent_rice_adaptation_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_prof_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_qtbtt_dual_tree_intra_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_radl_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_rasl_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_rectangular_slice_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ref_pic_resampling_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ref_wraparound_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_res_change_in_clvs_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_reverse_last_sig_coeff_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_rrc_rice_extension_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_sao_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_sbt_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_sbtmvp_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_sign_data_hiding_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_smvd_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_stsa_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_subpic_info_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_temporal_mvp_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_trail_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_transform_skip_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_ts_residual_coding_rice_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_virtual_boundaries_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.no_weighted_prediction_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.one_au_only_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.one_slice_per_pic_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.one_slice_per_subpic_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.one_tile_per_pic_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.pic_header_in_slice_header_constraint_flag",
+ "_GstH266GeneralConstraintsInfo.present_flag",
+ "_GstH266GeneralConstraintsInfo.reserved_zero_bit",
+ "_GstH266GeneralConstraintsInfo.sixteen_minus_max_bitdepth_constraint_idc",
+ "_GstH266GeneralConstraintsInfo.three_minus_max_chroma_format_constraint_idc",
+ "_GstH266GeneralConstraintsInfo.three_minus_max_log2_ctu_size_constraint_idc",
+ "_GstH266GeneralHRDParameters.bit_rate_scale",
+ "_GstH266GeneralHRDParameters.cpb_size_du_scale",
+ "_GstH266GeneralHRDParameters.cpb_size_scale",
+ "_GstH266GeneralHRDParameters.general_du_hrd_params_present_flag",
+ "_GstH266GeneralHRDParameters.general_nal_hrd_params_present_flag",
+ "_GstH266GeneralHRDParameters.general_same_pic_timing_in_all_ols_flag",
+ "_GstH266GeneralHRDParameters.general_vcl_hrd_params_present_flag",
+ "_GstH266GeneralHRDParameters.hrd_cpb_cnt_minus1",
+ "_GstH266GeneralHRDParameters.num_units_in_tick",
+ "_GstH266GeneralHRDParameters.tick_divisor_minus2",
+ "_GstH266GeneralHRDParameters.time_scale",
+ "_GstH266LMCS.delta_abs_crs",
+ "_GstH266LMCS.delta_abs_cw",
+ "_GstH266LMCS.delta_cw_prec_minus1",
+ "_GstH266LMCS.delta_max_bin_idx",
+ "_GstH266LMCS.delta_sign_crs_flag",
+ "_GstH266LMCS.delta_sign_cw_flag",
+ "_GstH266LMCS.min_bin_idx",
+ "_GstH266NalUnit.data",
+ "_GstH266NalUnit.header_bytes",
+ "_GstH266NalUnit.layer_id",
+ "_GstH266NalUnit.offset",
+ "_GstH266NalUnit.sc_offset",
+ "_GstH266NalUnit.size",
+ "_GstH266NalUnit.temporal_id_plus1",
+ "_GstH266NalUnit.type",
+ "_GstH266NalUnit.valid",
+ "_GstH266OLSHRDParameters.elemental_duration_in_tc_minus1",
+ "_GstH266OLSHRDParameters.fixed_pic_rate_general_flag",
+ "_GstH266OLSHRDParameters.fixed_pic_rate_within_cvs_flag",
+ "_GstH266OLSHRDParameters.low_delay_hrd_flag",
+ "_GstH266OLSHRDParameters.nal_sub_layer_hrd_parameters",
+ "_GstH266OLSHRDParameters.vcl_sub_layer_hrd_parameters",
+ "_GstH266OPI.extension_data_flag",
+ "_GstH266OPI.extension_flag",
+ "_GstH266OPI.htid_info_present_flag",
+ "_GstH266OPI.htid_plus1",
+ "_GstH266OPI.ols_idx",
+ "_GstH266OPI.ols_info_present_flag",
+ "_GstH266PPS.alf_info_in_ph_flag",
+ "_GstH266PPS.cabac_init_present_flag",
+ "_GstH266PPS.cb_beta_offset_div2",
+ "_GstH266PPS.cb_qp_offset",
+ "_GstH266PPS.cb_qp_offset_list",
+ "_GstH266PPS.cb_tc_offset_div2",
+ "_GstH266PPS.chroma_qp_offset_list_len_minus1",
+ "_GstH266PPS.chroma_tool_offsets_present_flag",
+ "_GstH266PPS.conf_win_bottom_offset",
+ "_GstH266PPS.conf_win_left_offset",
+ "_GstH266PPS.conf_win_right_offset",
+ "_GstH266PPS.conf_win_top_offset",
+ "_GstH266PPS.conformance_window_flag",
+ "_GstH266PPS.cr_beta_offset_div2",
+ "_GstH266PPS.cr_qp_offset",
+ "_GstH266PPS.cr_qp_offset_list",
+ "_GstH266PPS.cr_tc_offset_div2",
+ "_GstH266PPS.crop_rect_height",
+ "_GstH266PPS.crop_rect_width",
+ "_GstH266PPS.crop_rect_x",
+ "_GstH266PPS.crop_rect_y",
+ "_GstH266PPS.cu_chroma_qp_offset_list_enabled_flag",
+ "_GstH266PPS.cu_qp_delta_enabled_flag",
+ "_GstH266PPS.dbf_info_in_ph_flag",
+ "_GstH266PPS.deblocking_filter_control_present_flag",
+ "_GstH266PPS.deblocking_filter_disabled_flag",
+ "_GstH266PPS.deblocking_filter_override_enabled_flag",
+ "_GstH266PPS.exp_slice_height_in_ctus_minus1",
+ "_GstH266PPS.extension_data_flag",
+ "_GstH266PPS.extension_flag",
+ "_GstH266PPS.height",
+ "_GstH266PPS.init_qp_minus26",
+ "_GstH266PPS.joint_cbcr_qp_offset_list",
+ "_GstH266PPS.joint_cbcr_qp_offset_present_flag",
+ "_GstH266PPS.joint_cbcr_qp_offset_value",
+ "_GstH266PPS.log2_ctu_size_minus5",
+ "_GstH266PPS.loop_filter_across_slices_enabled_flag",
+ "_GstH266PPS.loop_filter_across_tiles_enabled_flag",
+ "_GstH266PPS.luma_beta_offset_div2",
+ "_GstH266PPS.luma_tc_offset_div2",
+ "_GstH266PPS.mixed_nalu_types_in_pic_flag",
+ "_GstH266PPS.no_pic_partition_flag",
+ "_GstH266PPS.num_exp_slices_in_tile",
+ "_GstH266PPS.num_exp_tile_columns_minus1",
+ "_GstH266PPS.num_exp_tile_rows_minus1",
+ "_GstH266PPS.num_ref_idx_default_active_minus1",
+ "_GstH266PPS.num_slices_in_pic_minus1",
+ "_GstH266PPS.num_slices_in_subpic",
+ "_GstH266PPS.num_subpics_minus1",
+ "_GstH266PPS.num_tile_columns",
+ "_GstH266PPS.num_tile_rows",
+ "_GstH266PPS.num_tiles_in_pic",
+ "_GstH266PPS.output_flag_present_flag",
+ "_GstH266PPS.pic_height_in_ctbs_y",
+ "_GstH266PPS.pic_height_in_luma_samples",
+ "_GstH266PPS.pic_size_in_ctbs_y",
+ "_GstH266PPS.pic_width_in_ctbs_y",
+ "_GstH266PPS.pic_width_in_luma_samples",
+ "_GstH266PPS.pic_width_minus_wraparound_offset",
+ "_GstH266PPS.picture_header_extension_present_flag",
+ "_GstH266PPS.pps_id",
+ "_GstH266PPS.qp_delta_info_in_ph_flag",
+ "_GstH266PPS.rect_slice_flag",
+ "_GstH266PPS.ref_wraparound_enabled_flag",
+ "_GstH266PPS.rpl1_idx_present_flag",
+ "_GstH266PPS.rpl_info_in_ph_flag",
+ "_GstH266PPS.sao_info_in_ph_flag",
+ "_GstH266PPS.scaling_win_bottom_offset",
+ "_GstH266PPS.scaling_win_left_offset",
+ "_GstH266PPS.scaling_win_right_offset",
+ "_GstH266PPS.scaling_win_top_offset",
+ "_GstH266PPS.scaling_window_explicit_signalling_flag",
+ "_GstH266PPS.single_slice_per_subpic_flag",
+ "_GstH266PPS.slice_chroma_qp_offsets_present_flag",
+ "_GstH266PPS.slice_header_extension_present_flag",
+ "_GstH266PPS.slice_height_in_ctus",
+ "_GstH266PPS.slice_height_in_tiles_minus1",
+ "_GstH266PPS.slice_top_left_ctu_x",
+ "_GstH266PPS.slice_top_left_ctu_y",
+ "_GstH266PPS.slice_top_left_tile_idx",
+ "_GstH266PPS.slice_width_in_tiles_minus1",
+ "_GstH266PPS.sps",
+ "_GstH266PPS.sps_id",
+ "_GstH266PPS.subpic_id",
+ "_GstH266PPS.subpic_id_len_minus1",
+ "_GstH266PPS.subpic_id_mapping_present_flag",
+ "_GstH266PPS.tile_col_bd_val",
+ "_GstH266PPS.tile_column_width_minus1",
+ "_GstH266PPS.tile_idx_delta_present_flag",
+ "_GstH266PPS.tile_idx_delta_val",
+ "_GstH266PPS.tile_row_bd_val",
+ "_GstH266PPS.tile_row_height_minus1",
+ "_GstH266PPS.valid",
+ "_GstH266PPS.weighted_bipred_flag",
+ "_GstH266PPS.weighted_pred_flag",
+ "_GstH266PPS.width",
+ "_GstH266PPS.wp_info_in_ph_flag",
+ "_GstH266PicHdr.alf_aps_id_chroma",
+ "_GstH266PicHdr.alf_aps_id_luma",
+ "_GstH266PicHdr.alf_cb_enabled_flag",
+ "_GstH266PicHdr.alf_cc_cb_aps_id",
+ "_GstH266PicHdr.alf_cc_cb_enabled_flag",
+ "_GstH266PicHdr.alf_cc_cr_aps_id",
+ "_GstH266PicHdr.alf_cc_cr_enabled_flag",
+ "_GstH266PicHdr.alf_cr_enabled_flag",
+ "_GstH266PicHdr.alf_enabled_flag",
+ "_GstH266PicHdr.bdof_disabled_flag",
+ "_GstH266PicHdr.cb_beta_offset_div2",
+ "_GstH266PicHdr.cb_tc_offset_div2",
+ "_GstH266PicHdr.chroma_residual_scale_flag",
+ "_GstH266PicHdr.collocated_from_l0_flag",
+ "_GstH266PicHdr.collocated_ref_idx",
+ "_GstH266PicHdr.cr_beta_offset_div2",
+ "_GstH266PicHdr.cr_tc_offset_div2",
+ "_GstH266PicHdr.cu_chroma_qp_offset_subdiv_inter_slice",
+ "_GstH266PicHdr.cu_chroma_qp_offset_subdiv_intra_slice",
+ "_GstH266PicHdr.cu_qp_delta_subdiv_inter_slice",
+ "_GstH266PicHdr.cu_qp_delta_subdiv_intra_slice",
+ "_GstH266PicHdr.deblocking_filter_disabled_flag",
+ "_GstH266PicHdr.deblocking_params_present_flag",
+ "_GstH266PicHdr.dmvr_disabled_flag",
+ "_GstH266PicHdr.explicit_scaling_list_enabled_flag",
+ "_GstH266PicHdr.extension_data_byte",
+ "_GstH266PicHdr.extension_length",
+ "_GstH266PicHdr.extra_bit",
+ "_GstH266PicHdr.gdr_or_irap_pic_flag",
+ "_GstH266PicHdr.gdr_pic_flag",
+ "_GstH266PicHdr.inter_slice_allowed_flag",
+ "_GstH266PicHdr.intra_slice_allowed_flag",
+ "_GstH266PicHdr.joint_cbcr_sign_flag",
+ "_GstH266PicHdr.lmcs_aps_id",
+ "_GstH266PicHdr.lmcs_enabled_flag",
+ "_GstH266PicHdr.log2_diff_max_bt_min_qt_inter_slice",
+ "_GstH266PicHdr.log2_diff_max_bt_min_qt_intra_slice_chroma",
+ "_GstH266PicHdr.log2_diff_max_bt_min_qt_intra_slice_luma",
+ "_GstH266PicHdr.log2_diff_max_tt_min_qt_inter_slice",
+ "_GstH266PicHdr.log2_diff_max_tt_min_qt_intra_slice_chroma",
+ "_GstH266PicHdr.log2_diff_max_tt_min_qt_intra_slice_luma",
+ "_GstH266PicHdr.log2_diff_min_qt_min_cb_inter_slice",
+ "_GstH266PicHdr.log2_diff_min_qt_min_cb_intra_slice_chroma",
+ "_GstH266PicHdr.log2_diff_min_qt_min_cb_intra_slice_luma",
+ "_GstH266PicHdr.luma_beta_offset_div2",
+ "_GstH266PicHdr.luma_tc_offset_div2",
+ "_GstH266PicHdr.max_mtt_hierarchy_depth_inter_slice",
+ "_GstH266PicHdr.max_mtt_hierarchy_depth_intra_slice_chroma",
+ "_GstH266PicHdr.max_mtt_hierarchy_depth_intra_slice_luma",
+ "_GstH266PicHdr.mmvd_fullpel_only_flag",
+ "_GstH266PicHdr.mvd_l1_zero_flag",
+ "_GstH266PicHdr.non_ref_pic_flag",
+ "_GstH266PicHdr.num_alf_aps_ids_luma",
+ "_GstH266PicHdr.num_hor_virtual_boundaries",
+ "_GstH266PicHdr.num_ver_virtual_boundaries",
+ "_GstH266PicHdr.partition_constraints_override_flag",
+ "_GstH266PicHdr.pic_order_cnt_lsb",
+ "_GstH266PicHdr.pic_output_flag",
+ "_GstH266PicHdr.poc_msb_cycle_present_flag",
+ "_GstH266PicHdr.poc_msb_cycle_val",
+ "_GstH266PicHdr.pps",
+ "_GstH266PicHdr.pps_id",
+ "_GstH266PicHdr.pred_weight_table",
+ "_GstH266PicHdr.prof_disabled_flag",
+ "_GstH266PicHdr.qp_delta",
+ "_GstH266PicHdr.recovery_poc_cnt",
+ "_GstH266PicHdr.ref_pic_lists",
+ "_GstH266PicHdr.sao_chroma_enabled_flag",
+ "_GstH266PicHdr.sao_luma_enabled_flag",
+ "_GstH266PicHdr.scaling_list_aps_id",
+ "_GstH266PicHdr.temporal_mvp_enabled_flag",
+ "_GstH266PicHdr.valid",
+ "_GstH266PicHdr.virtual_boundaries_present_flag",
+ "_GstH266PicHdr.virtual_boundary_pos_x_minus1",
+ "_GstH266PicHdr.virtual_boundary_pos_y_minus1",
+ "_GstH266PicTiming.cpb_alt_timing_info_present_flag",
+ "_GstH266PicTiming.cpb_removal_delay_delta_enabled_flag",
+ "_GstH266PicTiming.cpb_removal_delay_delta_idx",
+ "_GstH266PicTiming.cpb_removal_delay_minus",
+ "_GstH266PicTiming.cpb_removal_delay_minus1",
+ "_GstH266PicTiming.delay_for_concatenation_ensured_flag",
+ "_GstH266PicTiming.display_elemental_periods_minus1",
+ "_GstH266PicTiming.dpb_output_delay",
+ "_GstH266PicTiming.dpb_output_du_delay",
+ "_GstH266PicTiming.du_common_cpb_removal_delay_flag",
+ "_GstH266PicTiming.du_common_cpb_removal_delay_increment_minus1",
+ "_GstH266PicTiming.du_cpb_removal_delay_increment_minus1",
+ "_GstH266PicTiming.nal_cpb_alt_initial_removal_delay_delta",
+ "_GstH266PicTiming.nal_cpb_alt_initial_removal_offset_delta",
+ "_GstH266PicTiming.nal_cpb_delay_offset",
+ "_GstH266PicTiming.nal_dpb_delay_offset",
+ "_GstH266PicTiming.num_decoding_units_minus1",
+ "_GstH266PicTiming.num_nalus_in_du_minus1",
+ "_GstH266PicTiming.sublayer_delays_present_flag",
+ "_GstH266PicTiming.vcl_cpb_alt_initial_removal_delay_delta",
+ "_GstH266PicTiming.vcl_cpb_alt_initial_removal_offset_delta",
+ "_GstH266PicTiming.vcl_cpb_delay_offset",
+ "_GstH266PicTiming.vcl_dpb_delay_offset",
+ "_GstH266PredWeightTable.chroma_weight_l0_flag",
+ "_GstH266PredWeightTable.chroma_weight_l1_flag",
+ "_GstH266PredWeightTable.delta_chroma_log2_weight_denom",
+ "_GstH266PredWeightTable.delta_chroma_offset_l0",
+ "_GstH266PredWeightTable.delta_chroma_offset_l1",
+ "_GstH266PredWeightTable.delta_chroma_weight_l0",
+ "_GstH266PredWeightTable.delta_chroma_weight_l1",
+ "_GstH266PredWeightTable.delta_luma_weight_l0",
+ "_GstH266PredWeightTable.delta_luma_weight_l1",
+ "_GstH266PredWeightTable.luma_log2_weight_denom",
+ "_GstH266PredWeightTable.luma_offset_l0",
+ "_GstH266PredWeightTable.luma_offset_l1",
+ "_GstH266PredWeightTable.luma_weight_l0_flag",
+ "_GstH266PredWeightTable.luma_weight_l1_flag",
+ "_GstH266PredWeightTable.num_l0_weights",
+ "_GstH266PredWeightTable.num_l1_weights",
+ "_GstH266ProfileTierLevel.frame_only_constraint_flag",
+ "_GstH266ProfileTierLevel.general_constraints_info",
+ "_GstH266ProfileTierLevel.level_idc",
+ "_GstH266ProfileTierLevel.multilayer_enabled_flag",
+ "_GstH266ProfileTierLevel.num_sub_profiles",
+ "_GstH266ProfileTierLevel.profile_idc",
+ "_GstH266ProfileTierLevel.ptl_reserved_zero_bit",
+ "_GstH266ProfileTierLevel.sub_profile_idc",
+ "_GstH266ProfileTierLevel.sublayer_level_idc",
+ "_GstH266ProfileTierLevel.sublayer_level_present_flag",
+ "_GstH266ProfileTierLevel.tier_flag",
+ "_GstH266RefPicListStruct.abs_delta_poc_st",
+ "_GstH266RefPicListStruct.delta_poc_val_st",
+ "_GstH266RefPicListStruct.ilrp_idx",
+ "_GstH266RefPicListStruct.inter_layer_ref_pic_flag",
+ "_GstH266RefPicListStruct.ltrp_in_header_flag",
+ "_GstH266RefPicListStruct.num_inter_layer_pic",
+ "_GstH266RefPicListStruct.num_long_term_pic",
+ "_GstH266RefPicListStruct.num_ref_entries",
+ "_GstH266RefPicListStruct.num_short_term_pic",
+ "_GstH266RefPicListStruct.rpls_poc_lsb_lt",
+ "_GstH266RefPicListStruct.st_ref_pic_flag",
+ "_GstH266RefPicListStruct.strp_entry_sign_flag",
+ "_GstH266RefPicLists.delta_poc_msb_cycle_lt",
+ "_GstH266RefPicLists.delta_poc_msb_cycle_present_flag",
+ "_GstH266RefPicLists.poc_lsb_lt",
+ "_GstH266RefPicLists.rpl_idx",
+ "_GstH266RefPicLists.rpl_ref_list",
+ "_GstH266RefPicLists.rpl_sps_flag",
+ "_GstH266SEIMessage.payload.buffering_period",
+ "_GstH266SEIMessage.payload.du_info",
+ "_GstH266SEIMessage.payload.frame_field_info",
+ "_GstH266SEIMessage.payload.pic_timing",
+ "_GstH266SEIMessage.payload.scalable_nesting",
+ "_GstH266SEIMessage.payload.subpic_level_info",
+ "_GstH266SEIMessage.payloadType",
+ "_GstH266SPS.act_enabled_flag",
+ "_GstH266SPS.affine_amvr_enabled_flag",
+ "_GstH266SPS.affine_enabled_flag",
+ "_GstH266SPS.affine_prof_enabled_flag",
+ "_GstH266SPS.alf_enabled_flag",
+ "_GstH266SPS.amvr_enabled_flag",
+ "_GstH266SPS.bcw_enabled_flag",
+ "_GstH266SPS.bdof_control_present_in_ph_flag",
+ "_GstH266SPS.bdof_enabled_flag",
+ "_GstH266SPS.bdpcm_enabled_flag",
+ "_GstH266SPS.bitdepth_minus8",
+ "_GstH266SPS.ccalf_enabled_flag",
+ "_GstH266SPS.cclm_enabled_flag",
+ "_GstH266SPS.chroma_format_idc",
+ "_GstH266SPS.chroma_horizontal_collocated_flag",
+ "_GstH266SPS.chroma_qp_table",
+ "_GstH266SPS.chroma_vertical_collocated_flag",
+ "_GstH266SPS.ciip_enabled_flag",
+ "_GstH266SPS.conf_win_bottom_offset",
+ "_GstH266SPS.conf_win_left_offset",
+ "_GstH266SPS.conf_win_right_offset",
+ "_GstH266SPS.conf_win_top_offset",
+ "_GstH266SPS.conformance_window_flag",
+ "_GstH266SPS.crop_rect_height",
+ "_GstH266SPS.crop_rect_width",
+ "_GstH266SPS.crop_rect_x",
+ "_GstH266SPS.crop_rect_y",
+ "_GstH266SPS.ctu_size",
+ "_GstH266SPS.delta_qp_diff_val",
+ "_GstH266SPS.delta_qp_in_val_minus1",
+ "_GstH266SPS.dep_quant_enabled_flag",
+ "_GstH266SPS.dmvr_control_present_in_ph_flag",
+ "_GstH266SPS.dmvr_enabled_flag",
+ "_GstH266SPS.dpb",
+ "_GstH266SPS.entropy_coding_sync_enabled_flag",
+ "_GstH266SPS.entry_point_offsets_present_flag",
+ "_GstH266SPS.explicit_mts_inter_enabled_flag",
+ "_GstH266SPS.explicit_mts_intra_enabled_flag",
+ "_GstH266SPS.explicit_scaling_list_enabled_flag",
+ "_GstH266SPS.extension_7_flags",
+ "_GstH266SPS.extension_flag",
+ "_GstH266SPS.extra_ph_bit_present_flag",
+ "_GstH266SPS.extra_sh_bit_present_flag",
+ "_GstH266SPS.field_seq_flag",
+ "_GstH266SPS.five_minus_max_num_subblock_merge_cand",
+ "_GstH266SPS.fps_den",
+ "_GstH266SPS.fps_num",
+ "_GstH266SPS.gdr_enabled_flag",
+ "_GstH266SPS.general_hrd_params",
+ "_GstH266SPS.gpm_enabled_flag",
+ "_GstH266SPS.ibc_enabled_flag",
+ "_GstH266SPS.idr_rpl_present_flag",
+ "_GstH266SPS.independent_subpics_flag",
+ "_GstH266SPS.inter_layer_prediction_enabled_flag",
+ "_GstH266SPS.isp_enabled_flag",
+ "_GstH266SPS.joint_cbcr_enabled_flag",
+ "_GstH266SPS.ladf_delta_threshold_minus1",
+ "_GstH266SPS.ladf_enabled_flag",
+ "_GstH266SPS.ladf_lowest_interval_qp_offset",
+ "_GstH266SPS.ladf_qp_offset",
+ "_GstH266SPS.lfnst_enabled_flag",
+ "_GstH266SPS.lmcs_enabled_flag",
+ "_GstH266SPS.log2_ctu_size_minus5",
+ "_GstH266SPS.log2_diff_max_bt_min_qt_inter_slice",
+ "_GstH266SPS.log2_diff_max_bt_min_qt_intra_slice_chroma",
+ "_GstH266SPS.log2_diff_max_bt_min_qt_intra_slice_luma",
+ "_GstH266SPS.log2_diff_max_tt_min_qt_inter_slice",
+ "_GstH266SPS.log2_diff_max_tt_min_qt_intra_slice_chroma",
+ "_GstH266SPS.log2_diff_max_tt_min_qt_intra_slice_luma",
+ "_GstH266SPS.log2_diff_min_qt_min_cb_inter_slice",
+ "_GstH266SPS.log2_diff_min_qt_min_cb_intra_slice_chroma",
+ "_GstH266SPS.log2_diff_min_qt_min_cb_intra_slice_luma",
+ "_GstH266SPS.log2_max_pic_order_cnt_lsb_minus4",
+ "_GstH266SPS.log2_min_luma_coding_block_size_minus2",
+ "_GstH266SPS.log2_parallel_merge_level_minus2",
+ "_GstH266SPS.log2_transform_skip_max_size_minus2",
+ "_GstH266SPS.long_term_ref_pics_flag",
+ "_GstH266SPS.loop_filter_across_subpic_enabled_flag",
+ "_GstH266SPS.max_height",
+ "_GstH266SPS.max_luma_transform_size_64_flag",
+ "_GstH266SPS.max_mtt_hierarchy_depth_inter_slice",
+ "_GstH266SPS.max_mtt_hierarchy_depth_intra_slice_chroma",
+ "_GstH266SPS.max_mtt_hierarchy_depth_intra_slice_luma",
+ "_GstH266SPS.max_num_merge_cand_minus_max_num_gpm_cand",
+ "_GstH266SPS.max_sublayers_minus1",
+ "_GstH266SPS.max_width",
+ "_GstH266SPS.min_qp_prime_ts",
+ "_GstH266SPS.mip_enabled_flag",
+ "_GstH266SPS.mmvd_enabled_flag",
+ "_GstH266SPS.mmvd_fullpel_only_enabled_flag",
+ "_GstH266SPS.mrl_enabled_flag",
+ "_GstH266SPS.mts_enabled_flag",
+ "_GstH266SPS.nuh_layer_id",
+ "_GstH266SPS.num_extra_ph_bytes",
+ "_GstH266SPS.num_extra_sh_bytes",
+ "_GstH266SPS.num_hor_virtual_boundaries",
+ "_GstH266SPS.num_ladf_intervals_minus2",
+ "_GstH266SPS.num_points_in_qp_table_minus1",
+ "_GstH266SPS.num_ref_pic_lists",
+ "_GstH266SPS.num_subpics_minus1",
+ "_GstH266SPS.num_ver_virtual_boundaries",
+ "_GstH266SPS.ols_hrd_params",
+ "_GstH266SPS.palette_enabled_flag",
+ "_GstH266SPS.partition_constraints_override_enabled_flag",
+ "_GstH266SPS.pic_height_max_in_luma_samples",
+ "_GstH266SPS.pic_width_max_in_luma_samples",
+ "_GstH266SPS.poc_msb_cycle_flag",
+ "_GstH266SPS.poc_msb_cycle_len_minus1",
+ "_GstH266SPS.prof_control_present_in_ph_flag",
+ "_GstH266SPS.profile_tier_level",
+ "_GstH266SPS.ptl_dpb_hrd_params_present_flag",
+ "_GstH266SPS.qp_table_start_minus26",
+ "_GstH266SPS.qtbtt_dual_tree_intra_flag",
+ "_GstH266SPS.range_extension_flag",
+ "_GstH266SPS.range_params",
+ "_GstH266SPS.ref_pic_list_struct",
+ "_GstH266SPS.ref_pic_resampling_enabled_flag",
+ "_GstH266SPS.ref_wraparound_enabled_flag",
+ "_GstH266SPS.res_change_in_clvs_allowed_flag",
+ "_GstH266SPS.rpl1_same_as_rpl0_flag",
+ "_GstH266SPS.same_qp_table_for_chroma_flag",
+ "_GstH266SPS.sao_enabled_flag",
+ "_GstH266SPS.sbt_enabled_flag",
+ "_GstH266SPS.sbtmvp_enabled_flag",
+ "_GstH266SPS.scaling_matrix_designated_colour_space_flag",
+ "_GstH266SPS.scaling_matrix_for_alternative_colour_space_disabled_flag",
+ "_GstH266SPS.scaling_matrix_for_lfnst_disabled_flag",
+ "_GstH266SPS.sign_data_hiding_enabled_flag",
+ "_GstH266SPS.six_minus_max_num_ibc_merge_cand",
+ "_GstH266SPS.six_minus_max_num_merge_cand",
+ "_GstH266SPS.smvd_enabled_flag",
+ "_GstH266SPS.sps_6param_affine_enabled_flag",
+ "_GstH266SPS.sps_id",
+ "_GstH266SPS.sublayer_cpb_params_present_flag",
+ "_GstH266SPS.sublayer_dpb_params_flag",
+ "_GstH266SPS.subpic_ctu_top_left_x",
+ "_GstH266SPS.subpic_ctu_top_left_y",
+ "_GstH266SPS.subpic_height_minus1",
+ "_GstH266SPS.subpic_id",
+ "_GstH266SPS.subpic_id_len_minus1",
+ "_GstH266SPS.subpic_id_mapping_explicitly_signalled_flag",
+ "_GstH266SPS.subpic_id_mapping_present_flag",
+ "_GstH266SPS.subpic_info_present_flag",
+ "_GstH266SPS.subpic_same_size_flag",
+ "_GstH266SPS.subpic_treated_as_pic_flag",
+ "_GstH266SPS.subpic_width_minus1",
+ "_GstH266SPS.temporal_mvp_enabled_flag",
+ "_GstH266SPS.timing_hrd_params_present_flag",
+ "_GstH266SPS.transform_skip_enabled_flag",
+ "_GstH266SPS.valid",
+ "_GstH266SPS.virtual_boundaries_enabled_flag",
+ "_GstH266SPS.virtual_boundaries_present_flag",
+ "_GstH266SPS.virtual_boundary_pos_x_minus1",
+ "_GstH266SPS.virtual_boundary_pos_y_minus1",
+ "_GstH266SPS.vps",
+ "_GstH266SPS.vps_id",
+ "_GstH266SPS.vui_parameters_present_flag",
+ "_GstH266SPS.vui_params",
+ "_GstH266SPS.vui_payload_size_minus1",
+ "_GstH266SPS.weighted_bipred_flag",
+ "_GstH266SPS.weighted_pred_flag",
+ "_GstH266SPSRangeExtensionParams.extended_precision_flag",
+ "_GstH266SPSRangeExtensionParams.persistent_rice_adaptation_enabled_flag",
+ "_GstH266SPSRangeExtensionParams.reverse_last_sig_coeff_enabled_flag",
+ "_GstH266SPSRangeExtensionParams.rrc_rice_extension_flag",
+ "_GstH266SPSRangeExtensionParams.ts_residual_coding_rice_present_in_sh_flag",
+ "_GstH266ScalableNesting.all_layers_flag",
+ "_GstH266ScalableNesting.layer_id",
+ "_GstH266ScalableNesting.num_layers_minus1",
+ "_GstH266ScalableNesting.num_olss_minus1",
+ "_GstH266ScalableNesting.num_seis_minus1",
+ "_GstH266ScalableNesting.num_subpics_minus1",
+ "_GstH266ScalableNesting.ols_flag",
+ "_GstH266ScalableNesting.ols_idx_delta_minus1",
+ "_GstH266ScalableNesting.subpic_flag",
+ "_GstH266ScalableNesting.subpic_id",
+ "_GstH266ScalableNesting.subpic_id_len_minus1",
+ "_GstH266ScalingList.copy_mode_flag",
+ "_GstH266ScalingList.dc_coef",
+ "_GstH266ScalingList.delta_coef",
+ "_GstH266ScalingList.pred_id_delta",
+ "_GstH266ScalingList.pred_mode_flag",
+ "_GstH266ScalingList.scaling_list",
+ "_GstH266ScalingList.scaling_list_DC",
+ "_GstH266SliceHdr.alf_aps_id_chroma",
+ "_GstH266SliceHdr.alf_aps_id_luma",
+ "_GstH266SliceHdr.alf_cb_enabled_flag",
+ "_GstH266SliceHdr.alf_cc_cb_aps_id",
+ "_GstH266SliceHdr.alf_cc_cb_enabled_flag",
+ "_GstH266SliceHdr.alf_cc_cr_aps_id",
+ "_GstH266SliceHdr.alf_cc_cr_enabled_flag",
+ "_GstH266SliceHdr.alf_cr_enabled_flag",
+ "_GstH266SliceHdr.alf_enabled_flag",
+ "_GstH266SliceHdr.cabac_init_flag",
+ "_GstH266SliceHdr.cb_beta_offset_div2",
+ "_GstH266SliceHdr.cb_qp_offset",
+ "_GstH266SliceHdr.cb_tc_offset_div2",
+ "_GstH266SliceHdr.collocated_from_l0_flag",
+ "_GstH266SliceHdr.collocated_ref_idx",
+ "_GstH266SliceHdr.cr_beta_offset_div2",
+ "_GstH266SliceHdr.cr_qp_offset",
+ "_GstH266SliceHdr.cr_tc_offset_div2",
+ "_GstH266SliceHdr.cu_chroma_qp_offset_enabled_flag",
+ "_GstH266SliceHdr.deblocking_filter_disabled_flag",
+ "_GstH266SliceHdr.deblocking_params_present_flag",
+ "_GstH266SliceHdr.dep_quant_used_flag",
+ "_GstH266SliceHdr.entry_offset_len_minus1",
+ "_GstH266SliceHdr.entry_point_offset_minus1",
+ "_GstH266SliceHdr.entry_point_start_ctu",
+ "_GstH266SliceHdr.explicit_scaling_list_used_flag",
+ "_GstH266SliceHdr.extra_bit",
+ "_GstH266SliceHdr.header_size",
+ "_GstH266SliceHdr.joint_cbcr_qp_offset",
+ "_GstH266SliceHdr.lmcs_used_flag",
+ "_GstH266SliceHdr.luma_beta_offset_div2",
+ "_GstH266SliceHdr.luma_tc_offset_div2",
+ "_GstH266SliceHdr.n_emulation_prevention_bytes",
+ "_GstH266SliceHdr.no_output_of_prior_pics_flag",
+ "_GstH266SliceHdr.num_alf_aps_ids_luma",
+ "_GstH266SliceHdr.num_entry_points",
+ "_GstH266SliceHdr.num_ref_idx_active",
+ "_GstH266SliceHdr.num_ref_idx_active_minus1",
+ "_GstH266SliceHdr.num_ref_idx_active_override_flag",
+ "_GstH266SliceHdr.num_tiles_in_slice_minus1",
+ "_GstH266SliceHdr.picture_header",
+ "_GstH266SliceHdr.picture_header_in_slice_header_flag",
+ "_GstH266SliceHdr.pred_weight_table",
+ "_GstH266SliceHdr.qp_delta",
+ "_GstH266SliceHdr.ref_pic_lists",
+ "_GstH266SliceHdr.reverse_last_sig_coeff_flag",
+ "_GstH266SliceHdr.sao_chroma_used_flag",
+ "_GstH266SliceHdr.sao_luma_used_flag",
+ "_GstH266SliceHdr.sign_data_hiding_used_flag",
+ "_GstH266SliceHdr.slice_address",
+ "_GstH266SliceHdr.slice_header_extension_data_byte",
+ "_GstH266SliceHdr.slice_header_extension_length",
+ "_GstH266SliceHdr.slice_qp_y",
+ "_GstH266SliceHdr.slice_type",
+ "_GstH266SliceHdr.subpic_id",
+ "_GstH266SliceHdr.ts_residual_coding_disabled_flag",
+ "_GstH266SliceHdr.ts_residual_coding_rice_idx_minus1",
+ "_GstH266SubLayerHRDParameters.bit_rate",
+ "_GstH266SubLayerHRDParameters.bit_rate_du_value_minus1",
+ "_GstH266SubLayerHRDParameters.bit_rate_value_minus1",
+ "_GstH266SubLayerHRDParameters.cbr_flag",
+ "_GstH266SubLayerHRDParameters.cpb_size",
+ "_GstH266SubLayerHRDParameters.cpb_size_du_value_minus1",
+ "_GstH266SubLayerHRDParameters.cpb_size_value_minus1",
+ "_GstH266SubPicLevelInfo.cbr_constraint_flag",
+ "_GstH266SubPicLevelInfo.explicit_fraction_present_flag",
+ "_GstH266SubPicLevelInfo.max_sublayers_minus1",
+ "_GstH266SubPicLevelInfo.non_subpic_layers_fraction",
+ "_GstH266SubPicLevelInfo.num_ref_levels_minus1",
+ "_GstH266SubPicLevelInfo.num_subpics_minus1",
+ "_GstH266SubPicLevelInfo.ref_level_fraction_minus1",
+ "_GstH266SubPicLevelInfo.ref_level_idc",
+ "_GstH266SubPicLevelInfo.sublayer_info_present_flag",
+ "_GstH266VPS.all_independent_layers_flag",
+ "_GstH266VPS.default_ptl_dpb_hrd_max_tid_flag",
+ "_GstH266VPS.direct_ref_layer_flag",
+ "_GstH266VPS.dpb",
+ "_GstH266VPS.dpb_max_tid",
+ "_GstH266VPS.each_layer_is_an_ols_flag",
+ "_GstH266VPS.extension_data",
+ "_GstH266VPS.extension_flag",
+ "_GstH266VPS.general_hrd_params",
+ "_GstH266VPS.hrd_max_tid",
+ "_GstH266VPS.independent_layer_flag",
+ "_GstH266VPS.layer_id",
+ "_GstH266VPS.layer_id_in_ols",
+ "_GstH266VPS.max_layers_minus1",
+ "_GstH266VPS.max_sublayers_minus1",
+ "_GstH266VPS.max_tid_il_ref_pics_plus1",
+ "_GstH266VPS.max_tid_ref_present_flag",
+ "_GstH266VPS.multi_layer_ols_idx",
+ "_GstH266VPS.num_dpb_params_minus1",
+ "_GstH266VPS.num_layers_in_ols",
+ "_GstH266VPS.num_multi_layer_olss",
+ "_GstH266VPS.num_ols_timing_hrd_params_minus1",
+ "_GstH266VPS.num_output_layer_sets_minus2",
+ "_GstH266VPS.num_output_layers_in_ols",
+ "_GstH266VPS.num_ptls_minus1",
+ "_GstH266VPS.num_sub_layers_in_layer_in_ols",
+ "_GstH266VPS.ols_dpb_bitdepth_minus8",
+ "_GstH266VPS.ols_dpb_chroma_format",
+ "_GstH266VPS.ols_dpb_params_idx",
+ "_GstH266VPS.ols_dpb_pic_height",
+ "_GstH266VPS.ols_dpb_pic_width",
+ "_GstH266VPS.ols_hrd_params",
+ "_GstH266VPS.ols_mode_idc",
+ "_GstH266VPS.ols_output_layer_flag",
+ "_GstH266VPS.ols_ptl_idx",
+ "_GstH266VPS.ols_timing_hrd_idx",
+ "_GstH266VPS.output_layer_id_in_ols",
+ "_GstH266VPS.profile_tier_level",
+ "_GstH266VPS.pt_present_flag",
+ "_GstH266VPS.ptl_max_tid",
+ "_GstH266VPS.sublayer_cpb_params_present_flag",
+ "_GstH266VPS.sublayer_dpb_params_present_flag",
+ "_GstH266VPS.timing_hrd_params_present_flag",
+ "_GstH266VPS.total_num_olss",
+ "_GstH266VPS.valid",
+ "_GstH266VPS.vps_id",
+ "_GstH266VUIParams.aspect_ratio_constant_flag",
+ "_GstH266VUIParams.aspect_ratio_idc",
+ "_GstH266VUIParams.aspect_ratio_info_present_flag",
+ "_GstH266VUIParams.chroma_loc_info_present_flag",
+ "_GstH266VUIParams.chroma_sample_loc_type_bottom_field",
+ "_GstH266VUIParams.chroma_sample_loc_type_frame",
+ "_GstH266VUIParams.chroma_sample_loc_type_top_field",
+ "_GstH266VUIParams.colour_description_present_flag",
+ "_GstH266VUIParams.colour_primaries",
+ "_GstH266VUIParams.full_range_flag",
+ "_GstH266VUIParams.interlaced_source_flag",
+ "_GstH266VUIParams.matrix_coeffs",
+ "_GstH266VUIParams.non_packed_constraint_flag",
+ "_GstH266VUIParams.non_projected_constraint_flag",
+ "_GstH266VUIParams.overscan_appropriate_flag",
+ "_GstH266VUIParams.overscan_info_present_flag",
+ "_GstH266VUIParams.par_d",
+ "_GstH266VUIParams.par_n",
+ "_GstH266VUIParams.progressive_source_flag",
+ "_GstH266VUIParams.sar_height",
+ "_GstH266VUIParams.sar_width",
+ "_GstH266VUIParams.transfer_characteristics",
"_GstJpegFrameComponent.horizontal_factor",
"_GstJpegFrameComponent.identifier",
"_GstJpegFrameComponent.quant_table_selector",
@@ -21906,6 +23153,9 @@
"_GstJpegSegment.marker",
"_GstJpegSegment.offset",
"_GstJpegSegment.size",
+ "_GstLcevcMeta.enhancement_data",
+ "_GstLcevcMeta.id",
+ "_GstLcevcMeta.meta",
"_GstMpeg4GroupOfVOP.broken_link",
"_GstMpeg4GroupOfVOP.closed",
"_GstMpeg4GroupOfVOP.hours",
@@ -22977,6 +24227,17 @@
"asfmux:preroll",
"asfmux:streamable",
"asfparse",
+ "asiosink",
+ "asiosink:buffer-size",
+ "asiosink:device-clsid",
+ "asiosink:occupy-all-channels",
+ "asiosink:output-channels",
+ "asiosrc",
+ "asiosrc:buffer-size",
+ "asiosrc:device-clsid",
+ "asiosrc:input-channels",
+ "asiosrc:loopback",
+ "asiosrc:occupy-all-channels",
"aspectratiocrop",
"aspectratiocrop:aspect-ratio",
"assert_equals_float",
@@ -22988,6 +24249,7 @@
"assert_equals_string",
"assert_equals_uint64",
"assert_equals_uint64_hex",
+ "assert_matches_string",
"assert_message_error",
"assrender",
"assrender:embeddedfonts",
@@ -22995,6 +24257,10 @@
"assrender:wait-text",
"asteriskh263",
"atdec",
+ "atenc",
+ "atenc:bitrate",
+ "atenc:rate-control",
+ "atenc:vbr-quality",
"atscmux",
"audioamplify",
"audioamplify:amplification",
@@ -23028,6 +24294,8 @@
"audioconvert",
"audioconvert:dithering",
"audioconvert:dithering-threshold",
+ "audioconvert:input-channels-reorder",
+ "audioconvert:input-channels-reorder-mode",
"audioconvert:mix-matrix",
"audioconvert:noise-shaping",
"audiodynamic",
@@ -23169,6 +24437,7 @@
"av1enc:threads",
"av1enc:tile-columns",
"av1enc:tile-rows",
+ "av1enc:timebase",
"av1enc:undershoot-pct",
"av1enc:usage-profile",
"av1parse",
@@ -34346,6 +35615,10 @@
"avfvideosrc:fps",
"avfvideosrc:orientation",
"avfvideosrc:position",
+ "avfvideosrc:screen-crop-height",
+ "avfvideosrc:screen-crop-width",
+ "avfvideosrc:screen-crop-x",
+ "avfvideosrc:screen-crop-y",
"avidemux",
"avimux",
"avimux:bigfile",
@@ -35023,9 +36296,13 @@
"cc708overlay:silent",
"cc708overlay:window-h-pos",
"cccombiner",
+ "cccombiner:cea608-padding-strategy",
+ "cccombiner:cea608-padding-valid-timeout",
+ "cccombiner:input-meta-processing",
"cccombiner:max-scheduled",
"cccombiner:output-padding",
"cccombiner:schedule",
+ "cccombiner:schedule-timeout",
"ccconverter",
"ccconverter:cdp-mode",
"ccextractor",
@@ -35041,6 +36318,7 @@
"cdparanoiasrc:read-speed",
"cdparanoiasrc:search-overlap",
"cea608mux",
+ "cea608mux:force-live",
"cfhd-q",
"cfhd-q::film1",
"cfhd-q::film1+",
@@ -35397,16 +36675,31 @@
"d3d12av1dec:adapter-luid",
"d3d12av1dec:device-id",
"d3d12av1dec:vendor-id",
+ "d3d12colorconvert",
+ "d3d12colorconvert:brightness",
+ "d3d12colorconvert:contrast",
+ "d3d12colorconvert:gamma-mode",
+ "d3d12colorconvert:hue",
+ "d3d12colorconvert:primaries-mode",
+ "d3d12colorconvert:saturation",
"d3d12compositor",
"d3d12compositor:adapter",
+ "d3d12compositor:async-depth",
"d3d12compositor:background",
"d3d12compositor:ignore-inactive-pads",
"d3d12convert",
"d3d12convert:add-borders",
"d3d12convert:border-color",
+ "d3d12convert:brightness",
+ "d3d12convert:contrast",
"d3d12convert:gamma-mode",
+ "d3d12convert:hue",
"d3d12convert:method",
"d3d12convert:primaries-mode",
+ "d3d12convert:saturation",
+ "d3d12deinterlace",
+ "d3d12deinterlace:engine",
+ "d3d12deinterlace:fields",
"d3d12download",
"d3d12h264dec",
"d3d12h264dec:adapter-luid",
@@ -35436,34 +36729,78 @@
"d3d12h265dec:adapter-luid",
"d3d12h265dec:device-id",
"d3d12h265dec:vendor-id",
+ "d3d12ipcsink",
+ "d3d12ipcsink:adapter",
+ "d3d12ipcsink:pipe-name",
+ "d3d12ipcsrc",
+ "d3d12ipcsrc:connection-timeout",
+ "d3d12ipcsrc:io-mode",
+ "d3d12ipcsrc:pipe-name",
+ "d3d12ipcsrc:processing-deadline",
+ "d3d12mipmapping",
+ "d3d12mipmapping:async-depth",
+ "d3d12mipmapping:mip-levels",
"d3d12mpeg2dec",
"d3d12mpeg2dec:adapter-luid",
"d3d12mpeg2dec:device-id",
"d3d12mpeg2dec:vendor-id",
+ "d3d12scale",
+ "d3d12scale:add-borders",
+ "d3d12scale:border-color",
"d3d12screencapturesrc",
+ "d3d12screencapturesrc:adapter",
+ "d3d12screencapturesrc:capture-api",
"d3d12screencapturesrc:crop-height",
"d3d12screencapturesrc:crop-width",
"d3d12screencapturesrc:crop-x",
"d3d12screencapturesrc:crop-y",
"d3d12screencapturesrc:monitor-handle",
"d3d12screencapturesrc:monitor-index",
+ "d3d12screencapturesrc:show-border",
"d3d12screencapturesrc:show-cursor",
+ "d3d12screencapturesrc:tonemap",
+ "d3d12screencapturesrc:window-capture-mode",
+ "d3d12screencapturesrc:window-handle",
+ "d3d12swapchainsink",
+ "d3d12swapchainsink::resize",
+ "d3d12swapchainsink:adapter",
+ "d3d12swapchainsink:border-color",
+ "d3d12swapchainsink:brightness",
+ "d3d12swapchainsink:contrast",
+ "d3d12swapchainsink:force-aspect-ratio",
+ "d3d12swapchainsink:hue",
+ "d3d12swapchainsink:msaa",
+ "d3d12swapchainsink:sampling-method",
+ "d3d12swapchainsink:saturation",
+ "d3d12swapchainsink:swapchain",
+ "d3d12swapchainsink:swapchain-height",
+ "d3d12swapchainsink:swapchain-width",
"d3d12testsrc",
"d3d12testsrc:adapter",
"d3d12testsrc:alpha",
+ "d3d12testsrc:async-depth",
"d3d12testsrc:is-live",
"d3d12testsrc:pattern",
"d3d12upload",
"d3d12videosink",
+ "d3d12videosink::overlay",
"d3d12videosink:adapter",
+ "d3d12videosink:brightness",
+ "d3d12videosink:contrast",
+ "d3d12videosink:direct-swapchain",
+ "d3d12videosink:display-format",
"d3d12videosink:enable-navigation-events",
+ "d3d12videosink:error-on-closed",
+ "d3d12videosink:external-window-only",
"d3d12videosink:force-aspect-ratio",
"d3d12videosink:fov",
"d3d12videosink:fullscreen",
"d3d12videosink:fullscreen-on-alt-enter",
"d3d12videosink:gamma-mode",
+ "d3d12videosink:hue",
"d3d12videosink:msaa",
"d3d12videosink:ortho",
+ "d3d12videosink:overlay-mode",
"d3d12videosink:primaries-mode",
"d3d12videosink:redraw-on-update",
"d3d12videosink:rotate-method",
@@ -35471,6 +36808,7 @@
"d3d12videosink:rotation-y",
"d3d12videosink:rotation-z",
"d3d12videosink:sampling-method",
+ "d3d12videosink:saturation",
"d3d12videosink:scale-x",
"d3d12videosink:scale-y",
"d3d12vp8dec",
@@ -37732,6 +39070,7 @@
"fail_unless_equals_string",
"fail_unless_equals_uint64",
"fail_unless_equals_uint64_hex",
+ "fail_unless_matches_string",
"fail_unless_message_error",
"fakeaudiosink",
"fakeaudiosink::handoff",
@@ -39788,6 +41127,7 @@
"gst_aggregator_pad_peek_buffer",
"gst_aggregator_pad_pop_buffer",
"gst_aggregator_peek_next_sample",
+ "gst_aggregator_push_src_event",
"gst_aggregator_selected_samples",
"gst_aggregator_set_force_live",
"gst_aggregator_set_ignore_inactive_pads",
@@ -39817,11 +41157,14 @@
"gst_analytics_od_mtd_get_location",
"gst_analytics_od_mtd_get_mtd_type",
"gst_analytics_od_mtd_get_obj_type",
+ "gst_analytics_od_mtd_get_oriented_location",
"gst_analytics_relation_get_length",
"gst_analytics_relation_meta_add_cls_mtd",
"gst_analytics_relation_meta_add_mtd",
"gst_analytics_relation_meta_add_od_mtd",
"gst_analytics_relation_meta_add_one_cls_mtd",
+ "gst_analytics_relation_meta_add_oriented_od_mtd",
+ "gst_analytics_relation_meta_add_segmentation_mtd",
"gst_analytics_relation_meta_add_tracking_mtd",
"gst_analytics_relation_meta_api_get_type",
"gst_analytics_relation_meta_exist",
@@ -39835,6 +41178,11 @@
"gst_analytics_relation_meta_get_tracking_mtd",
"gst_analytics_relation_meta_iterate",
"gst_analytics_relation_meta_set_relation",
+ "gst_analytics_segmentation_mtd_get_mask",
+ "gst_analytics_segmentation_mtd_get_mtd_type",
+ "gst_analytics_segmentation_mtd_get_region_count",
+ "gst_analytics_segmentation_mtd_get_region_id",
+ "gst_analytics_segmentation_mtd_get_region_index",
"gst_analytics_tracking_mtd_get_info",
"gst_analytics_tracking_mtd_get_mtd_type",
"gst_analytics_tracking_mtd_set_lost",
@@ -40054,6 +41402,7 @@
"gst_audio_quantize_reset",
"gst_audio_quantize_samples",
"gst_audio_reorder_channels",
+ "gst_audio_reorder_channels_with_reorder_map",
"gst_audio_resampler_free",
"gst_audio_resampler_get_in_frames",
"gst_audio_resampler_get_max_latency",
@@ -40075,6 +41424,8 @@
"gst_audio_ring_buffer_debug_spec_caps",
"gst_audio_ring_buffer_delay",
"gst_audio_ring_buffer_device_is_open",
+ "gst_audio_ring_buffer_get_segbase",
+ "gst_audio_ring_buffer_get_segdone",
"gst_audio_ring_buffer_is_acquired",
"gst_audio_ring_buffer_is_active",
"gst_audio_ring_buffer_is_flushing",
@@ -40092,6 +41443,7 @@
"gst_audio_ring_buffer_set_errored",
"gst_audio_ring_buffer_set_flushing",
"gst_audio_ring_buffer_set_sample",
+ "gst_audio_ring_buffer_set_segdone",
"gst_audio_ring_buffer_set_timestamp",
"gst_audio_ring_buffer_start",
"gst_audio_ring_buffer_stop",
@@ -40300,6 +41652,7 @@
"gst_buffer_add_dsd_plane_offset_meta",
"gst_buffer_add_gl_sync_meta",
"gst_buffer_add_gl_sync_meta_full",
+ "gst_buffer_add_lcevc_meta",
"gst_buffer_add_meta",
"gst_buffer_add_mpeg_video_meta",
"gst_buffer_add_mpegts_pes_metadata_meta",
@@ -40309,6 +41662,7 @@
"gst_buffer_add_protection_meta",
"gst_buffer_add_reference_timestamp_meta",
"gst_buffer_add_rtp_source_meta",
+ "gst_buffer_add_tensor_meta",
"gst_buffer_add_video_afd_meta",
"gst_buffer_add_video_affine_transformation_meta",
"gst_buffer_add_video_bar_meta",
@@ -40348,6 +41702,8 @@
"gst_buffer_get_dsd_plane_offset_meta",
"gst_buffer_get_flags",
"gst_buffer_get_gl_sync_meta",
+ "gst_buffer_get_lcevc_meta",
+ "gst_buffer_get_lcevc_meta_id",
"gst_buffer_get_max_memory",
"gst_buffer_get_memory",
"gst_buffer_get_memory_range",
@@ -40362,6 +41718,7 @@
"gst_buffer_get_size",
"gst_buffer_get_sizes",
"gst_buffer_get_sizes_range",
+ "gst_buffer_get_tensor_meta",
"gst_buffer_get_video_afd_meta",
"gst_buffer_get_video_affine_transformation_meta",
"gst_buffer_get_video_bar_meta",
@@ -40422,6 +41779,7 @@
"gst_buffer_pool_config_get_allocator",
"gst_buffer_pool_config_get_cuda_alloc_method",
"gst_buffer_pool_config_get_cuda_stream",
+ "gst_buffer_pool_config_get_cuda_stream_ordered_alloc",
"gst_buffer_pool_config_get_gl_allocation_params",
"gst_buffer_pool_config_get_gl_min_free_queue_size",
"gst_buffer_pool_config_get_option",
@@ -40432,6 +41790,7 @@
"gst_buffer_pool_config_set_allocator",
"gst_buffer_pool_config_set_cuda_alloc_method",
"gst_buffer_pool_config_set_cuda_stream",
+ "gst_buffer_pool_config_set_cuda_stream_ordered_alloc",
"gst_buffer_pool_config_set_gl_allocation_params",
"gst_buffer_pool_config_set_gl_min_free_queue_size",
"gst_buffer_pool_config_set_params",
@@ -40620,13 +41979,17 @@
"gst_caps_copy_nth",
"gst_caps_features_add",
"gst_caps_features_add_id",
+ "gst_caps_features_add_id_str",
+ "gst_caps_features_add_static_str",
"gst_caps_features_contains",
"gst_caps_features_contains_id",
+ "gst_caps_features_contains_id_str",
"gst_caps_features_copy",
"gst_caps_features_free",
"gst_caps_features_from_string",
"gst_caps_features_get_nth",
"gst_caps_features_get_nth_id",
+ "gst_caps_features_get_nth_id_str",
"gst_caps_features_get_size",
"gst_caps_features_is_any",
"gst_caps_features_is_equal",
@@ -40634,11 +41997,17 @@
"gst_caps_features_new_any",
"gst_caps_features_new_empty",
"gst_caps_features_new_id",
+ "gst_caps_features_new_id_str",
+ "gst_caps_features_new_id_str_valist",
"gst_caps_features_new_id_valist",
"gst_caps_features_new_single",
+ "gst_caps_features_new_single_static_str",
+ "gst_caps_features_new_static_str",
+ "gst_caps_features_new_static_str_valist",
"gst_caps_features_new_valist",
"gst_caps_features_remove",
"gst_caps_features_remove_id",
+ "gst_caps_features_remove_id_str",
"gst_caps_features_set_parent_refcount",
"gst_caps_features_to_string",
"gst_caps_filter_and_map_in_place",
@@ -40648,6 +42017,9 @@
"gst_caps_get_features",
"gst_caps_get_size",
"gst_caps_get_structure",
+ "gst_caps_id_str_set_simple",
+ "gst_caps_id_str_set_simple_valist",
+ "gst_caps_id_str_set_value",
"gst_caps_intersect",
"gst_caps_intersect_full",
"gst_caps_is_always_compatible",
@@ -40671,7 +42043,11 @@
"gst_caps_new_empty_simple",
"gst_caps_new_full",
"gst_caps_new_full_valist",
+ "gst_caps_new_id_str_empty_simple",
+ "gst_caps_new_id_str_simple",
"gst_caps_new_simple",
+ "gst_caps_new_static_str_empty_simple",
+ "gst_caps_new_static_str_simple",
"gst_caps_normalize",
"gst_caps_ref",
"gst_caps_remove_structure",
@@ -40680,8 +42056,11 @@
"gst_caps_set_features",
"gst_caps_set_features_simple",
"gst_caps_set_simple",
+ "gst_caps_set_simple_static_str",
+ "gst_caps_set_simple_static_str_valist",
"gst_caps_set_simple_valist",
"gst_caps_set_value",
+ "gst_caps_set_value_static_str",
"gst_caps_simplify",
"gst_caps_steal_structure",
"gst_caps_subtract",
@@ -40736,6 +42115,7 @@
"gst_clear_buffer_list",
"gst_clear_caps",
"gst_clear_context",
+ "gst_clear_cuda_memory_pool",
"gst_clear_cuda_stream",
"gst_clear_event",
"gst_clear_message",
@@ -40789,6 +42169,10 @@
"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_av1_create_av1c_from_caps",
+ "gst_codec_utils_av1_create_caps_from_av1c",
+ "gst_codec_utils_av1_get_level",
+ "gst_codec_utils_av1_get_seq_level_idx",
"gst_codec_utils_caps_from_mime_codec",
"gst_codec_utils_caps_get_mime_codec",
"gst_codec_utils_h264_caps_set_level_and_profile",
@@ -40909,6 +42293,10 @@
"gst_cuda_memory_get_token_data",
"gst_cuda_memory_get_user_data",
"gst_cuda_memory_init_once",
+ "gst_cuda_memory_pool_get_handle",
+ "gst_cuda_memory_pool_new",
+ "gst_cuda_memory_pool_ref",
+ "gst_cuda_memory_pool_unref",
"gst_cuda_memory_set_token_data",
"gst_cuda_memory_sync",
"gst_cuda_nvrtc_compile",
@@ -40917,7 +42305,9 @@
"gst_cuda_pool_allocator_acquire_memory",
"gst_cuda_pool_allocator_new",
"gst_cuda_pool_allocator_new_for_virtual_memory",
+ "gst_cuda_pool_allocator_new_full",
"gst_cuda_quark_from_id",
+ "gst_cuda_register_allocator_need_pool_callback",
"gst_cuda_result",
"gst_cuda_stream_get_handle",
"gst_cuda_stream_new",
@@ -40998,6 +42388,8 @@
"gst_debug_log_valist",
"gst_debug_message_get",
"gst_debug_message_get_id",
+ "gst_debug_print_object",
+ "gst_debug_print_segment",
"gst_debug_print_stack_trace",
"gst_debug_remove_log_function",
"gst_debug_remove_log_function_by_data",
@@ -41150,6 +42542,7 @@
"gst_dynamic_type_factory_load",
"gst_dynamic_type_register",
"gst_egl_get_error_string",
+ "gst_egl_image_can_emulate",
"gst_egl_image_export_dmabuf",
"gst_egl_image_from_dmabuf",
"gst_egl_image_from_dmabuf_direct",
@@ -41290,6 +42683,7 @@
"gst_encoding_profile_copy",
"gst_encoding_profile_find",
"gst_encoding_profile_from_discoverer",
+ "gst_encoding_profile_from_string",
"gst_encoding_profile_get_allow_dynamic_output",
"gst_encoding_profile_get_description",
"gst_encoding_profile_get_element_properties",
@@ -41317,6 +42711,7 @@
"gst_encoding_profile_set_preset_name",
"gst_encoding_profile_set_restriction",
"gst_encoding_profile_set_single_segment",
+ "gst_encoding_profile_to_string",
"gst_encoding_profile_unref",
"gst_encoding_target_add_profile",
"gst_encoding_target_get_category",
@@ -41560,6 +42955,8 @@
"gst_gl_display_wayland_new_with_display",
"gst_gl_display_x11_new",
"gst_gl_display_x11_new_with_display",
+ "gst_gl_dma_buf_transform_drm_formats_to_gst_formats",
+ "gst_gl_dma_buf_transform_gst_formats_to_drm_formats",
"gst_gl_element_propagate_display_context",
"gst_gl_ensure_element_data",
"gst_gl_filter_add_rgba_pad_templates",
@@ -41775,6 +43172,7 @@
"gst_h263_parse",
"gst_h264_bit_writer_aud",
"gst_h264_bit_writer_convert_to_nal",
+ "gst_h264_bit_writer_filler",
"gst_h264_bit_writer_pps",
"gst_h264_bit_writer_sei",
"gst_h264_bit_writer_slice_hdr",
@@ -41926,6 +43324,28 @@
"gst_h265_slice_hdr_copy",
"gst_h265_slice_hdr_free",
"gst_h265_slice_type_to_string",
+ "gst_h266_parse_aps",
+ "gst_h266_parse_pps",
+ "gst_h266_parse_sps",
+ "gst_h266_parse_vps",
+ "gst_h266_parser_free",
+ "gst_h266_parser_identify_nalu",
+ "gst_h266_parser_identify_nalu_unchecked",
+ "gst_h266_parser_identify_nalu_vvc",
+ "gst_h266_parser_new",
+ "gst_h266_parser_parse_aps",
+ "gst_h266_parser_parse_aud",
+ "gst_h266_parser_parse_dci",
+ "gst_h266_parser_parse_nal",
+ "gst_h266_parser_parse_opi",
+ "gst_h266_parser_parse_picture_hdr",
+ "gst_h266_parser_parse_pps",
+ "gst_h266_parser_parse_sei",
+ "gst_h266_parser_parse_slice_hdr",
+ "gst_h266_parser_parse_sps",
+ "gst_h266_parser_parse_vps",
+ "gst_h266_profile_from_string",
+ "gst_h266_profile_to_string",
"gst_harness_add_element_full",
"gst_harness_add_element_sink_pad",
"gst_harness_add_element_src_pad",
@@ -42019,6 +43439,22 @@
"gst_harness_use_systemclock",
"gst_harness_use_testclock",
"gst_harness_wait_for_clock_id_waits",
+ "gst_id_str_as_str",
+ "gst_id_str_clear",
+ "gst_id_str_copy",
+ "gst_id_str_copy_into",
+ "gst_id_str_free",
+ "gst_id_str_get_len",
+ "gst_id_str_init",
+ "gst_id_str_is_equal",
+ "gst_id_str_is_equal_to_str",
+ "gst_id_str_is_equal_to_str_with_len",
+ "gst_id_str_move",
+ "gst_id_str_new",
+ "gst_id_str_set",
+ "gst_id_str_set_static_str",
+ "gst_id_str_set_static_str_with_len",
+ "gst_id_str_set_with_len",
"gst_info_strdup_printf",
"gst_info_strdup_vprintf",
"gst_info_vasprintf",
@@ -42081,6 +43517,12 @@
"gst_jpeg2000_sampling_is_rgb",
"gst_jpeg2000_sampling_is_yuv",
"gst_jpeg2000_sampling_to_string",
+ "gst_jpeg_bit_writer_frame_header",
+ "gst_jpeg_bit_writer_huffman_table",
+ "gst_jpeg_bit_writer_quantization_table",
+ "gst_jpeg_bit_writer_restart_interval",
+ "gst_jpeg_bit_writer_scan_header",
+ "gst_jpeg_bit_writer_segment_with_data",
"gst_jpeg_get_default_huffman_tables",
"gst_jpeg_get_default_quantization_tables",
"gst_jpeg_parse",
@@ -42089,6 +43531,8 @@
"gst_jpeg_segment_parse_quantization_table",
"gst_jpeg_segment_parse_restart_interval",
"gst_jpeg_segment_parse_scan_header",
+ "gst_lcevc_meta_api_get_type",
+ "gst_lcevc_meta_get_info",
"gst_lfo_control_source_new",
"gst_make_element_message_details",
"gst_media_source_add_source_buffer",
@@ -42127,6 +43571,7 @@
"gst_memory_unref",
"gst_message_add_redirect_entry",
"gst_message_copy",
+ "gst_message_get_details",
"gst_message_get_num_redirect_entries",
"gst_message_get_seqnum",
"gst_message_get_stream_status_object",
@@ -42191,10 +43636,12 @@
"gst_message_parse_duration",
"gst_message_parse_error",
"gst_message_parse_error_details",
+ "gst_message_parse_error_writable_details",
"gst_message_parse_group_id",
"gst_message_parse_have_context",
"gst_message_parse_info",
"gst_message_parse_info_details",
+ "gst_message_parse_info_writable_details",
"gst_message_parse_instant_rate_request",
"gst_message_parse_mpegts_section",
"gst_message_parse_new_clock",
@@ -42219,9 +43666,11 @@
"gst_message_parse_toc",
"gst_message_parse_warning",
"gst_message_parse_warning_details",
+ "gst_message_parse_warning_writable_details",
"gst_message_ref",
"gst_message_replace",
"gst_message_set_buffering_stats",
+ "gst_message_set_details",
"gst_message_set_group_id",
"gst_message_set_qos_stats",
"gst_message_set_qos_values",
@@ -42234,10 +43683,13 @@
"gst_message_type_get_name",
"gst_message_type_to_quark",
"gst_message_unref",
+ "gst_message_writable_details",
"gst_message_writable_structure",
+ "gst_meta_api_type_aggregate_params",
"gst_meta_api_type_get_tags",
"gst_meta_api_type_has_tag",
"gst_meta_api_type_register",
+ "gst_meta_api_type_set_params_aggregator",
"gst_meta_compare_seqnum",
"gst_meta_deserialize",
"gst_meta_get_info",
@@ -42320,6 +43772,8 @@
"gst_missing_encoder_message_new",
"gst_missing_plugin_message_get_description",
"gst_missing_plugin_message_get_installer_detail",
+ "gst_missing_plugin_message_get_stream_id",
+ "gst_missing_plugin_message_set_stream_id",
"gst_missing_uri_sink_installer_detail_new",
"gst_missing_uri_sink_message_new",
"gst_missing_uri_source_installer_detail_new",
@@ -42365,6 +43819,7 @@
"gst_mpegts_atsc_string_segment_set_string",
"gst_mpegts_atsc_stt_get_datetime_utc",
"gst_mpegts_atsc_stt_new",
+ "gst_mpegts_descriptor_copy",
"gst_mpegts_descriptor_free",
"gst_mpegts_descriptor_from_custom",
"gst_mpegts_descriptor_from_custom_with_extension",
@@ -42372,6 +43827,9 @@
"gst_mpegts_descriptor_from_dvb_service",
"gst_mpegts_descriptor_from_dvb_subtitling",
"gst_mpegts_descriptor_from_iso_639_language",
+ "gst_mpegts_descriptor_from_jpeg_xs",
+ "gst_mpegts_descriptor_from_metadata",
+ "gst_mpegts_descriptor_from_metadata_pointer",
"gst_mpegts_descriptor_from_registration",
"gst_mpegts_descriptor_parse_audio_preselection_dump",
"gst_mpegts_descriptor_parse_audio_preselection_free",
@@ -42408,6 +43866,7 @@
"gst_mpegts_descriptor_parse_iso_639_language",
"gst_mpegts_descriptor_parse_iso_639_language_idx",
"gst_mpegts_descriptor_parse_iso_639_language_nb",
+ "gst_mpegts_descriptor_parse_jpeg_xs",
"gst_mpegts_descriptor_parse_logical_channel",
"gst_mpegts_descriptor_parse_metadata",
"gst_mpegts_descriptor_parse_metadata_std",
@@ -42491,6 +43950,7 @@
"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_double_click",
"gst_navigation_event_new_mouse_move",
"gst_navigation_event_new_mouse_scroll",
"gst_navigation_event_new_touch_cancel",
@@ -42811,14 +44271,18 @@
"gst_play_media_info_is_live",
"gst_play_media_info_is_seekable",
"gst_play_message_get_name",
+ "gst_play_message_parse_buffering",
"gst_play_message_parse_buffering_percent",
+ "gst_play_message_parse_duration_changed",
"gst_play_message_parse_duration_updated",
"gst_play_message_parse_error",
"gst_play_message_parse_media_info_updated",
"gst_play_message_parse_muted_changed",
"gst_play_message_parse_position_updated",
+ "gst_play_message_parse_seek_done",
"gst_play_message_parse_state_changed",
"gst_play_message_parse_type",
+ "gst_play_message_parse_uri_loaded",
"gst_play_message_parse_video_dimensions_changed",
"gst_play_message_parse_volume_changed",
"gst_play_message_parse_warning",
@@ -42828,6 +44292,7 @@
"gst_play_seek",
"gst_play_set_audio_track",
"gst_play_set_audio_track_enabled",
+ "gst_play_set_audio_track_id",
"gst_play_set_audio_video_offset",
"gst_play_set_color_balance",
"gst_play_set_config",
@@ -42837,11 +44302,14 @@
"gst_play_set_rate",
"gst_play_set_subtitle_track",
"gst_play_set_subtitle_track_enabled",
+ "gst_play_set_subtitle_track_id",
"gst_play_set_subtitle_uri",
"gst_play_set_subtitle_video_offset",
+ "gst_play_set_track_ids",
"gst_play_set_uri",
"gst_play_set_video_track",
"gst_play_set_video_track_enabled",
+ "gst_play_set_video_track_id",
"gst_play_set_visualization",
"gst_play_set_visualization_enabled",
"gst_play_set_volume",
@@ -42854,6 +44322,7 @@
"gst_play_stream_info_get_caps",
"gst_play_stream_info_get_codec",
"gst_play_stream_info_get_index",
+ "gst_play_stream_info_get_stream_id",
"gst_play_stream_info_get_stream_type",
"gst_play_stream_info_get_tags",
"gst_play_subtitle_info_get_language",
@@ -44222,6 +45691,7 @@
"gst_structure_can_intersect",
"gst_structure_copy",
"gst_structure_filter_and_map_in_place",
+ "gst_structure_filter_and_map_in_place_id_str",
"gst_structure_fixate",
"gst_structure_fixate_field",
"gst_structure_fixate_field_boolean",
@@ -44230,6 +45700,7 @@
"gst_structure_fixate_field_nearest_int",
"gst_structure_fixate_field_string",
"gst_structure_foreach",
+ "gst_structure_foreach_id_str",
"gst_structure_free",
"gst_structure_from_string",
"gst_structure_get",
@@ -44249,6 +45720,7 @@
"gst_structure_get_list",
"gst_structure_get_name",
"gst_structure_get_name_id",
+ "gst_structure_get_name_id_str",
"gst_structure_get_string",
"gst_structure_get_uint",
"gst_structure_get_uint64",
@@ -44265,17 +45737,38 @@
"gst_structure_id_set",
"gst_structure_id_set_valist",
"gst_structure_id_set_value",
+ "gst_structure_id_str_get",
+ "gst_structure_id_str_get_field_type",
+ "gst_structure_id_str_get_valist",
+ "gst_structure_id_str_get_value",
+ "gst_structure_id_str_has_field",
+ "gst_structure_id_str_has_field_typed",
+ "gst_structure_id_str_nth_field_name",
+ "gst_structure_id_str_remove_field",
+ "gst_structure_id_str_remove_fields",
+ "gst_structure_id_str_remove_fields_valist",
+ "gst_structure_id_str_set",
+ "gst_structure_id_str_set_valist",
+ "gst_structure_id_str_set_value",
+ "gst_structure_id_str_take_value",
"gst_structure_id_take_value",
"gst_structure_intersect",
"gst_structure_is_equal",
"gst_structure_is_subset",
"gst_structure_map_in_place",
+ "gst_structure_map_in_place_id_str",
"gst_structure_n_fields",
"gst_structure_new",
"gst_structure_new_empty",
"gst_structure_new_from_string",
"gst_structure_new_id",
"gst_structure_new_id_empty",
+ "gst_structure_new_id_str",
+ "gst_structure_new_id_str_empty",
+ "gst_structure_new_id_str_valist",
+ "gst_structure_new_static_str",
+ "gst_structure_new_static_str_empty",
+ "gst_structure_new_static_str_valist",
"gst_structure_new_valist",
"gst_structure_nth_field_name",
"gst_structure_remove_all_fields",
@@ -44288,11 +45781,17 @@
"gst_structure_set_array",
"gst_structure_set_list",
"gst_structure_set_name",
+ "gst_structure_set_name_id_str",
+ "gst_structure_set_name_static_str",
"gst_structure_set_parent_refcount",
+ "gst_structure_set_static_str",
+ "gst_structure_set_static_str_valist",
"gst_structure_set_valist",
"gst_structure_set_value",
+ "gst_structure_set_value_static_str",
"gst_structure_take",
"gst_structure_take_value",
+ "gst_structure_take_value_static_str",
"gst_structure_to_string",
"gst_system_clock_obtain",
"gst_system_clock_set_default",
@@ -44438,6 +45937,16 @@
"gst_task_set_state",
"gst_task_start",
"gst_task_stop",
+ "gst_tensor_alloc",
+ "gst_tensor_copy",
+ "gst_tensor_free",
+ "gst_tensor_get_dims",
+ "gst_tensor_meta_api_get_type",
+ "gst_tensor_meta_get",
+ "gst_tensor_meta_get_index_from_id",
+ "gst_tensor_meta_get_info",
+ "gst_tensor_meta_set",
+ "gst_tensor_new_simple",
"gst_test_clock_advance_time",
"gst_test_clock_crank",
"gst_test_clock_get_next_entry_time",
@@ -44500,6 +46009,8 @@
"gst_toc_setter_reset",
"gst_toc_setter_set_toc",
"gst_toc_unref",
+ "gst_tracer_class_set_use_structure_params",
+ "gst_tracer_class_uses_structure_params",
"gst_tracer_factory_get_list",
"gst_tracer_factory_get_tracer_type",
"gst_tracer_record_log",
@@ -44630,6 +46141,7 @@
"gst_util_dump_buffer",
"gst_util_dump_mem",
"gst_util_filename_compare",
+ "gst_util_floor_log2",
"gst_util_fraction_add",
"gst_util_fraction_compare",
"gst_util_fraction_multiply",
@@ -44960,6 +46472,31 @@
"gst_vc1_parse_sequence_header_struct_c",
"gst_vc1_parse_sequence_layer",
"gst_vc1_parse_slice_header",
+ "gst_vec_deque_clear",
+ "gst_vec_deque_drop_element",
+ "gst_vec_deque_drop_struct",
+ "gst_vec_deque_find",
+ "gst_vec_deque_free",
+ "gst_vec_deque_get_length",
+ "gst_vec_deque_is_empty",
+ "gst_vec_deque_new",
+ "gst_vec_deque_new_for_struct",
+ "gst_vec_deque_peek_head",
+ "gst_vec_deque_peek_head_struct",
+ "gst_vec_deque_peek_nth",
+ "gst_vec_deque_peek_nth_struct",
+ "gst_vec_deque_peek_tail",
+ "gst_vec_deque_peek_tail_struct",
+ "gst_vec_deque_pop_head",
+ "gst_vec_deque_pop_head_struct",
+ "gst_vec_deque_pop_tail",
+ "gst_vec_deque_pop_tail_struct",
+ "gst_vec_deque_push_sorted",
+ "gst_vec_deque_push_sorted_struct",
+ "gst_vec_deque_push_tail",
+ "gst_vec_deque_push_tail_struct",
+ "gst_vec_deque_set_clear_func",
+ "gst_vec_deque_sort",
"gst_version",
"gst_version_string",
"gst_video_afd_meta_api_get_type",
@@ -45083,12 +46620,15 @@
"gst_video_dither_free",
"gst_video_dither_line",
"gst_video_dither_new",
+ "gst_video_dma_drm_format_from_gst_format",
+ "gst_video_dma_drm_format_to_gst_format",
"gst_video_dma_drm_fourcc_from_format",
"gst_video_dma_drm_fourcc_from_string",
"gst_video_dma_drm_fourcc_to_format",
"gst_video_dma_drm_fourcc_to_string",
"gst_video_encoder_allocate_output_buffer",
"gst_video_encoder_allocate_output_frame",
+ "gst_video_encoder_drop_frame",
"gst_video_encoder_finish_frame",
"gst_video_encoder_finish_subframe",
"gst_video_encoder_get_allocator",
@@ -45103,6 +46643,7 @@
"gst_video_encoder_merge_tags",
"gst_video_encoder_negotiate",
"gst_video_encoder_proxy_getcaps",
+ "gst_video_encoder_release_frame",
"gst_video_encoder_set_headers",
"gst_video_encoder_set_latency",
"gst_video_encoder_set_min_force_key_unit_interval",
@@ -45308,6 +46849,8 @@
"gst_vp8_token_probs_init_defaults",
"gst_vp8_token_update_probs_init",
"gst_vp9_ac_quant",
+ "gst_vp9_bit_writer_frame_header",
+ "gst_vp9_bit_writer_superframe_info",
"gst_vp9_dc_quant",
"gst_vp9_decoder_set_non_keyframe_format_change_support",
"gst_vp9_dpb_add",
@@ -45388,6 +46931,7 @@
"gst_vulkan_display_wayland_new_with_display",
"gst_vulkan_display_xcb_new",
"gst_vulkan_ensure_element_data",
+ "gst_vulkan_ensure_element_device",
"gst_vulkan_error_quark",
"gst_vulkan_error_to_g_error",
"gst_vulkan_fence_cache_acquire",
@@ -45400,12 +46944,14 @@
"gst_vulkan_format_from_video_info_2",
"gst_vulkan_format_get_aspect",
"gst_vulkan_format_get_info",
+ "gst_vulkan_format_get_map",
"gst_vulkan_format_to_video_format",
"gst_vulkan_full_screen_quad_draw",
"gst_vulkan_full_screen_quad_enable_blend",
"gst_vulkan_full_screen_quad_enable_clear",
"gst_vulkan_full_screen_quad_fill_command_buffer",
"gst_vulkan_full_screen_quad_get_last_fence",
+ "gst_vulkan_full_screen_quad_get_queue",
"gst_vulkan_full_screen_quad_new",
"gst_vulkan_full_screen_quad_prepare_draw",
"gst_vulkan_full_screen_quad_set_blend_factors",
@@ -45436,8 +46982,10 @@
"gst_vulkan_handle_ref",
"gst_vulkan_handle_set_context",
"gst_vulkan_handle_unref",
+ "gst_vulkan_image_buffer_pool_config_get_allocation_params",
"gst_vulkan_image_buffer_pool_config_set_allocation_params",
"gst_vulkan_image_buffer_pool_config_set_decode_caps",
+ "gst_vulkan_image_buffer_pool_config_set_encode_caps",
"gst_vulkan_image_buffer_pool_new",
"gst_vulkan_image_memory_add_view",
"gst_vulkan_image_memory_alloc",
@@ -45453,6 +47001,7 @@
"gst_vulkan_image_view_unref",
"gst_vulkan_instance_check_version",
"gst_vulkan_instance_create_device",
+ "gst_vulkan_instance_create_device_with_index",
"gst_vulkan_instance_disable_extension",
"gst_vulkan_instance_enable_extension",
"gst_vulkan_instance_enable_layer",
@@ -45526,6 +47075,9 @@
"gst_vulkan_trash_object_unref",
"gst_vulkan_trash_ref",
"gst_vulkan_trash_unref",
+ "gst_vulkan_video_filter_get_device",
+ "gst_vulkan_video_filter_get_instance",
+ "gst_vulkan_video_filter_get_queue",
"gst_vulkan_video_profile_from_caps",
"gst_vulkan_video_profile_is_equal",
"gst_vulkan_video_profile_is_valid",
@@ -45707,6 +47259,8 @@
"h265parse",
"h265parse:config-interval",
"h265timestamper",
+ "h266parse",
+ "h266parse:config-interval",
"handdetect",
"handdetect:ROI-HEIGHT",
"handdetect:ROI-WIDTH",
@@ -45850,6 +47404,12 @@
"iqa:mode",
"irtspparse",
"irtspparse:channel-id",
+ "isacdec",
+ "isacenc",
+ "isacenc:bitrate",
+ "isacenc:max-payload-size",
+ "isacenc:max-rate",
+ "isacenc:output-frame-len",
"ismlmux",
"ismlmux:streamable",
"ivfparse",
@@ -46052,6 +47612,8 @@
"lcms:intent",
"lcms:lookup",
"lcms:preserve-black",
+ "ldacenc",
+ "ldacenc:eqmid",
"level",
"level:audio-level-meta",
"level:interval",
@@ -66543,6 +68105,7 @@
"nleoperation::input-priority-changed",
"nleoperation:sinks",
"nlesource",
+ "nlesource:reverse",
"nleurisource",
"nleurisource:uri",
"nvautogpuav1enc",
@@ -66996,6 +68559,9 @@
"openalsrc",
"openalsrc:device",
"openalsrc:device-name",
+ "openaptxdec",
+ "openaptxdec:autosync",
+ "openaptxenc",
"opencvtextoverlay",
"opencvtextoverlay:colorB",
"opencvtextoverlay:colorG",
@@ -67093,9 +68659,11 @@
"osssrc:device-name",
"osxaudiosink",
"osxaudiosink:device",
+ "osxaudiosink:unique-id",
"osxaudiosink:volume",
"osxaudiosrc",
"osxaudiosrc:device",
+ "osxaudiosrc:unique-id",
"osxvideosink",
"osxvideosink:embed",
"osxvideosink:force-aspect-ratio",
@@ -67265,6 +68833,7 @@
"plugin-applemedia",
"plugin-asf",
"plugin-asfmux",
+ "plugin-asio",
"plugin-assrender",
"plugin-audiobuffersplit",
"plugin-audioconvert",
@@ -67372,6 +68941,7 @@
"plugin-interleave",
"plugin-ipcpipeline",
"plugin-iqa",
+ "plugin-isac",
"plugin-isomp4",
"plugin-ivfparse",
"plugin-ivtc",
@@ -67384,6 +68954,7 @@
"plugin-ladspa",
"plugin-lame",
"plugin-lc3",
+ "plugin-ldac",
"plugin-legacyrawparse",
"plugin-level",
"plugin-libav",
@@ -67418,6 +68989,7 @@
"plugin-ogg",
"plugin-omx",
"plugin-openal",
+ "plugin-openaptx",
"plugin-opencv",
"plugin-openexr",
"plugin-opengl",
@@ -67440,6 +69012,7 @@
"plugin-pnm",
"plugin-proxy",
"plugin-pulseaudio",
+ "plugin-qml6",
"plugin-qmlgl",
"plugin-qroverlay",
"plugin-qsv",
@@ -67484,10 +69057,14 @@
"plugin-srtp",
"plugin-subenc",
"plugin-subparse",
+ "plugin-svtav1",
+ "plugin-svthevcenc",
+ "plugin-svtjpegxs",
"plugin-switchbin",
"plugin-taglib",
"plugin-tcp",
"plugin-teletext",
+ "plugin-tensordecoders",
"plugin-theora",
"plugin-timecode",
"plugin-tinyalsa",
@@ -67532,6 +69109,7 @@
"plugin-webp",
"plugin-webrtc",
"plugin-webrtcdsp",
+ "plugin-webview2",
"plugin-wic",
"plugin-wildmidi",
"plugin-win32ipc",
@@ -67547,6 +69125,7 @@
"plugin-y4mdec",
"plugin-y4menc",
"plugin-zbar",
+ "plugin-zxing",
"png-encoder-pred",
"png-encoder-pred::avg",
"png-encoder-pred::mixed",
@@ -67615,10 +69194,29 @@
"qml6d3d11sink",
"qml6d3d11sink:force-aspect-ratio",
"qml6d3d11sink:widget",
+ "qml6glmixer",
+ "qml6glmixer::qml-scene-destroyed",
+ "qml6glmixer::qml-scene-initialized",
+ "qml6glmixer:qml-scene",
+ "qml6glmixer:root-item",
+ "qml6gloverlay",
+ "qml6gloverlay::qml-scene-destroyed",
+ "qml6gloverlay::qml-scene-initialized",
+ "qml6gloverlay:qml-scene",
+ "qml6gloverlay:root-item",
+ "qml6gloverlay:widget",
+ "qml6glsink",
+ "qml6glsink:force-aspect-ratio",
+ "qml6glsink:pixel-aspect-ratio",
+ "qml6glsink:widget",
+ "qml6glsrc",
+ "qml6glsrc:use-default-fbo",
+ "qml6glsrc:window",
"qmlgloverlay",
"qmlgloverlay::qml-scene-destroyed",
"qmlgloverlay::qml-scene-initialized",
"qmlgloverlay:context",
+ "qmlgloverlay:depth-buffer",
"qmlgloverlay:qml-scene",
"qmlgloverlay:qos",
"qmlgloverlay:root-item",
@@ -67795,6 +69393,7 @@
"queue:min-threshold-buffers",
"queue:min-threshold-bytes",
"queue:min-threshold-time",
+ "queue:notify-levels",
"queue:silent",
"rademux",
"radioactv",
@@ -67990,11 +69589,13 @@
"rtmp2sink",
"rtmp2sink:async-connect",
"rtmp2sink:chunk-size",
+ "rtmp2sink:extra-connect-args",
"rtmp2sink:peak-kbps",
"rtmp2sink:stats",
"rtmp2sink:stop-commands",
"rtmp2src",
"rtmp2src:async-connect",
+ "rtmp2src:extra-connect-args",
"rtmp2src:idle-timeout",
"rtmp2src:no-eof-is-error",
"rtmp2src:stats",
@@ -68111,6 +69712,7 @@
"rtpdvpay:mode",
"rtpfunnel",
"rtpfunnel:common-ts-offset",
+ "rtpfunnel:forward-unknown-ssrc",
"rtpg722depay",
"rtpg722pay",
"rtpg723depay",
@@ -68183,6 +69785,7 @@
"rtpjitterbuffer:max-misorder-time",
"rtpjitterbuffer:max-rtcp-rtp-time-diff",
"rtpjitterbuffer:max-ts-offset-adjustment",
+ "rtpjitterbuffer:min-sync-interval",
"rtpjitterbuffer:mode",
"rtpjitterbuffer:percent",
"rtpjitterbuffer:post-drop-messages",
@@ -68244,6 +69847,7 @@
"rtppassthroughpay",
"rtppassthroughpay:mtu",
"rtppassthroughpay:pt",
+ "rtppassthroughpay:retimestamp-mode",
"rtppassthroughpay:seqnum",
"rtppassthroughpay:seqnum-offset",
"rtppassthroughpay:stats",
@@ -68447,16 +70051,22 @@
"rtspsrc::get-parameter",
"rtspsrc::get-parameters",
"rtspsrc::handle-request",
+ "rtspsrc::hard-limit",
"rtspsrc::new-manager",
"rtspsrc::on-sdp",
"rtspsrc::push-backchannel-buffer",
"rtspsrc::push-backchannel-sample",
+ "rtspsrc::remove-key",
"rtspsrc::request-rtcp-key",
+ "rtspsrc::request-rtp-key",
"rtspsrc::select-stream",
+ "rtspsrc::set-mikey-parameter",
"rtspsrc::set-parameter",
+ "rtspsrc::soft-limit",
"rtspsrc:add-reference-timestamp-meta",
"rtspsrc:backchannel",
"rtspsrc:buffer-mode",
+ "rtspsrc:client-managed-mikey",
"rtspsrc:connection-speed",
"rtspsrc:debug",
"rtspsrc:default-rtsp-version",
@@ -68465,6 +70075,7 @@
"rtspsrc:do-rtsp-keep-alive",
"rtspsrc:drop-on-latency",
"rtspsrc:extra-http-request-headers",
+ "rtspsrc:force-non-compliant-url",
"rtspsrc:ignore-x-server-reply",
"rtspsrc:is-live",
"rtspsrc:latency",
@@ -68490,6 +70101,7 @@
"rtspsrc:sdes",
"rtspsrc:short-header",
"rtspsrc:tcp-timeout",
+ "rtspsrc:tcp-timestamp",
"rtspsrc:teardown-timeout",
"rtspsrc:timeout",
"rtspsrc:tls-database",
@@ -68838,8 +70450,11 @@
"splitmuxsink:start-index",
"splitmuxsink:use-robust-muxing",
"splitmuxsrc",
+ "splitmuxsrc::add-fragment",
"splitmuxsrc::format-location",
"splitmuxsrc:location",
+ "splitmuxsrc:num-lookahead",
+ "splitmuxsrc:num-open-fragments",
"square",
"square:height",
"square:width",
@@ -68910,6 +70525,10 @@
"srtsrc:uri",
"srtsrc:wait-for-connection",
"ssaparse",
+ "ssdobjectdetector",
+ "ssdobjectdetector:label-file",
+ "ssdobjectdetector:score-threshold",
+ "ssdobjectdetector:size-threshold",
"stereo",
"stereo:active",
"stereo:stereo",
@@ -68934,11 +70553,61 @@
"svq1enc-motion-est::epzs",
"svq1enc-motion-est::xone",
"svq1enc-motion-est::zero",
+ "svtav1enc",
+ "svtav1enc:cqp",
+ "svtav1enc:crf",
+ "svtav1enc:intra-period-length",
+ "svtav1enc:intra-refresh-type",
+ "svtav1enc:logical-processors",
+ "svtav1enc:max-bitrate",
+ "svtav1enc:max-qp-allowed",
+ "svtav1enc:maximum-buffer-size",
+ "svtav1enc:min-qp-allowed",
+ "svtav1enc:parameters-string",
+ "svtav1enc:preset",
+ "svtav1enc:target-bitrate",
+ "svtav1enc:target-socket",
+ "svthevcenc",
+ "svthevcenc:aud",
+ "svthevcenc:b-pyramid",
+ "svthevcenc:baselayer-mode",
+ "svthevcenc:bitrate",
+ "svthevcenc:config-interval",
+ "svthevcenc:cores",
+ "svthevcenc:enable-open-gop",
+ "svthevcenc:enable-scd",
+ "svthevcenc:insert-vui",
+ "svthevcenc:key-int-max",
+ "svthevcenc:lookahead",
+ "svthevcenc:pred-struct",
+ "svthevcenc:qp-i",
+ "svthevcenc:qp-max",
+ "svthevcenc:qp-min",
+ "svthevcenc:rc",
+ "svthevcenc:socket",
+ "svthevcenc:speed",
+ "svthevcenc:tile-col",
+ "svthevcenc:tile-row",
+ "svthevcenc:tune",
+ "svthevcenc:vbv-buffer-size",
+ "svthevcenc:vbv-max-rate",
+ "svtjpegxsdec",
+ "svtjpegxsdec:threads",
+ "svtjpegxsenc",
+ "svtjpegxsenc:bits-per-pixel",
+ "svtjpegxsenc:coding-signs",
+ "svtjpegxsenc:decomp-h",
+ "svtjpegxsenc:decomp-v",
+ "svtjpegxsenc:quant-mode",
+ "svtjpegxsenc:rate-control-mode",
+ "svtjpegxsenc:slice-height",
+ "svtjpegxsenc:threads",
"switchbin",
"switchbin:current-path",
"switchbin:num-paths",
"synaescope",
"taginject",
+ "taginject:merge-mode",
"taginject:scope",
"taginject:tags",
"tcase_skip_broken_loop_test",
@@ -69083,6 +70752,11 @@
"tonegeneratesrc:typefind",
"tonegeneratesrc:volume",
"tonegeneratesrc:volume2",
+ "tracer-latency:flags",
+ "tracer-leaks:check-refs",
+ "tracer-leaks:filters",
+ "tracer-leaks:log-leaks-on-deinit",
+ "tracer-leaks:stack-traces-flags",
"transcodebin",
"transcodebin:audio-filter",
"transcodebin:avoid-reencoding",
@@ -69153,6 +70827,7 @@
"unixfdsink",
"unixfdsink:socket-path",
"unixfdsink:socket-type",
+ "unixfdsink:wait-for-connection",
"unixfdsrc",
"unixfdsrc:socket-path",
"unixfdsrc:socket-type",
@@ -69314,8 +70989,6 @@
"v4l2src:pixel-aspect-ratio",
"v4l2src:saturation",
"vaapiav1dec",
- "GstVaapiDecode_av1!sink",
- "GstVaapiDecode_av1!src",
"vaapidecodebin",
"vaapidecodebin:deinterlace-method",
"vaapidecodebin:disable-vpp",
@@ -69428,10 +71101,30 @@
"vaapisink:signal-handoffs",
"vaapisink:view-id",
"vaapivc1dec",
+ "vaapivp9dec",
"vaav1dec",
"vaav1dec:device-path",
+ "vaav1enc",
+ "vaav1enc:bitrate",
+ "vaav1enc:cpb-size",
+ "vaav1enc:gf-group-size",
+ "vaav1enc:hierarchical-level",
+ "vaav1enc:key-int-max",
+ "vaav1enc:max-qp",
+ "vaav1enc:mbbrc",
+ "vaav1enc:min-qp",
+ "vaav1enc:num-tile-cols",
+ "vaav1enc:num-tile-rows",
+ "vaav1enc:qp",
+ "vaav1enc:rate-control",
+ "vaav1enc:ref-frames",
+ "vaav1enc:superblock-128x128",
+ "vaav1enc:target-percentage",
+ "vaav1enc:target-usage",
+ "vaav1enc:tile-groups",
"vacompositor",
"vacompositor:device-path",
+ "vacompositor:interpolation-method",
"vacompositor:scale-method",
"vadeinterlace",
"vadeinterlace:method",
@@ -69455,13 +71148,35 @@
"vah264enc:qpb",
"vah264enc:qpi",
"vah264enc:qpp",
- "vah264enc:ref-frames",
"vah264enc:rate-control",
+ "vah264enc:ref-frames",
"vah264enc:target-percentage",
"vah264enc:target-usage",
"vah264enc:trellis",
"vah265dec",
"vah265dec:device-path",
+ "vah265enc",
+ "vah265enc:aud",
+ "vah265enc:b-frames",
+ "vah265enc:b-pyramid",
+ "vah265enc:bitrate",
+ "vah265enc:cpb-size",
+ "vah265enc:i-frames",
+ "vah265enc:key-int-max",
+ "vah265enc:max-qp",
+ "vah265enc:mbbrc",
+ "vah265enc:min-qp",
+ "vah265enc:num-slices",
+ "vah265enc:num-tile-cols",
+ "vah265enc:num-tile-rows",
+ "vah265enc:qpb",
+ "vah265enc:qpi",
+ "vah265enc:qpp",
+ "vah265enc:rate-control",
+ "vah265enc:ref-frames",
+ "vah265enc:target-percentage",
+ "vah265enc:target-usage",
+ "vah265enc:trellis",
"vajpegdec",
"vajpegdec:device-path",
"value",
@@ -69473,6 +71188,7 @@
"vapostproc",
"vapostproc:add-borders",
"vapostproc:disable-passthrough",
+ "vapostproc:interpolation-method",
"vapostproc:scale-method",
"vavp8dec",
"vavp8dec:device-path",
@@ -69653,28 +71369,79 @@
"vtenc_h264!src",
"vtenc_h264:allow-frame-reordering",
"vtenc_h264:bitrate",
+ "vtenc_h264:data-rate-limits",
"vtenc_h264:max-keyframe-interval",
"vtenc_h264:max-keyframe-interval-duration",
"vtenc_h264:quality",
+ "vtenc_h264:rate-control",
"vtenc_h264:realtime",
"vtenc_h264_hw",
"vtenc_h264_hw!sink",
"vtenc_h264_hw!src",
"vtenc_h264_hw:allow-frame-reordering",
"vtenc_h264_hw:bitrate",
+ "vtenc_h264_hw:data-rate-limits",
"vtenc_h264_hw:max-keyframe-interval",
"vtenc_h264_hw:max-keyframe-interval-duration",
"vtenc_h264_hw:quality",
+ "vtenc_h264_hw:rate-control",
"vtenc_h264_hw:realtime",
+ "vtenc_h265",
+ "vtenc_h265!sink",
+ "vtenc_h265!src",
+ "vtenc_h265:allow-frame-reordering",
+ "vtenc_h265:bitrate",
+ "vtenc_h265:data-rate-limits",
+ "vtenc_h265:max-keyframe-interval",
+ "vtenc_h265:max-keyframe-interval-duration",
+ "vtenc_h265:quality",
+ "vtenc_h265:rate-control",
+ "vtenc_h265:realtime",
+ "vtenc_h265_hw",
+ "vtenc_h265_hw!sink",
+ "vtenc_h265_hw!src",
+ "vtenc_h265_hw:allow-frame-reordering",
+ "vtenc_h265_hw:bitrate",
+ "vtenc_h265_hw:data-rate-limits",
+ "vtenc_h265_hw:max-keyframe-interval",
+ "vtenc_h265_hw:max-keyframe-interval-duration",
+ "vtenc_h265_hw:quality",
+ "vtenc_h265_hw:rate-control",
+ "vtenc_h265_hw:realtime",
+ "vtenc_h265a",
+ "vtenc_h265a!sink",
+ "vtenc_h265a!src",
+ "vtenc_h265a:allow-frame-reordering",
+ "vtenc_h265a:bitrate",
+ "vtenc_h265a:data-rate-limits",
+ "vtenc_h265a:max-keyframe-interval",
+ "vtenc_h265a:max-keyframe-interval-duration",
+ "vtenc_h265a:quality",
+ "vtenc_h265a:rate-control",
+ "vtenc_h265a:realtime",
+ "vtenc_h265a_hw",
+ "vtenc_h265a_hw!sink",
+ "vtenc_h265a_hw!src",
+ "vtenc_h265a_hw:allow-frame-reordering",
+ "vtenc_h265a_hw:bitrate",
+ "vtenc_h265a_hw:data-rate-limits",
+ "vtenc_h265a_hw:max-keyframe-interval",
+ "vtenc_h265a_hw:max-keyframe-interval-duration",
+ "vtenc_h265a_hw:quality",
+ "vtenc_h265a_hw:rate-control",
+ "vtenc_h265a_hw:realtime",
"vtenc_prores",
"vtenc_prores!sink",
"vtenc_prores!src",
"vtenc_prores:allow-frame-reordering",
"vtenc_prores:bitrate",
+ "vtenc_prores:data-rate-limits",
+ "vtenc_prores:max-frame-delay",
"vtenc_prores:max-keyframe-interval",
"vtenc_prores:max-keyframe-interval-duration",
"vtenc_prores:preserve-alpha",
"vtenc_prores:quality",
+ "vtenc_prores:rate-control",
"vtenc_prores:realtime",
"vulkancolorconvert",
"vulkandownload",
@@ -69786,6 +71553,7 @@
"webrtcbin::on-new-transceiver",
"webrtcbin::prepare-data-channel",
"webrtcbin::request-aux-sender",
+ "webrtcbin::request-post-rtp-aux-sender",
"webrtcbin::set-local-description",
"webrtcbin::set-remote-description",
"webrtcbin:bundle-policy",
@@ -69802,6 +71570,7 @@
"webrtcbin:pending-local-description",
"webrtcbin:pending-remote-description",
"webrtcbin:remote-description",
+ "webrtcbin:reuse-source-pads",
"webrtcbin:sctp-transport",
"webrtcbin:signaling-state",
"webrtcbin:stun-server",
@@ -69826,6 +71595,12 @@
"webrtcdsp:voice-detection-frame-size-ms",
"webrtcdsp:voice-detection-likelihood",
"webrtcechoprobe",
+ "webview2src",
+ "webview2src:adapter",
+ "webview2src:javascript",
+ "webview2src:location",
+ "webview2src:processing-deadline",
+ "webview2src:user-data-folder",
"webvttenc",
"webvttenc:duration",
"webvttenc:timestamp",
@@ -69931,6 +71706,7 @@
"x264enc:mb-tree",
"x264enc:me",
"x264enc:multipass-cache-file",
+ "x264enc:nal-hrd",
"x264enc:noise-reduction",
"x264enc:option-string",
"x264enc:pass",
@@ -70010,5 +71786,11 @@
"zbar:cache",
"zbar:message",
"zebrastripe",
- "zebrastripe:threshold"
-]
+ "zebrastripe:threshold",
+ "zxing",
+ "zxing:attach-frame",
+ "zxing:format",
+ "zxing:message",
+ "zxing:try-faster",
+ "zxing:try-rotate"
+]
\ No newline at end of file
diff --git a/subprojects/gst-docs/symbols/symbols_version.txt b/subprojects/gst-docs/symbols/symbols_version.txt
index 614245ec45..581595d5a1 100644
--- a/subprojects/gst-docs/symbols/symbols_version.txt
+++ b/subprojects/gst-docs/symbols/symbols_version.txt
@@ -1 +1 @@
-1.24
\ No newline at end of file
+1.25
\ No newline at end of file
diff --git a/subprojects/gst-editing-services/NEWS b/subprojects/gst-editing-services/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-editing-services/NEWS
+++ b/subprojects/gst-editing-services/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-editing-services/RELEASE b/subprojects/gst-editing-services/RELEASE
index dcb4cef9c5..4a19ad206a 100644
--- a/subprojects/gst-editing-services/RELEASE
+++ b/subprojects/gst-editing-services/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-editing-services 1.25.0.1.
+This is GStreamer gst-editing-services 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-editing-services/gst-editing-services.doap b/subprojects/gst-editing-services/gst-editing-services.doap
index 1d2fe2f7cb..631af354b7 100644
--- a/subprojects/gst-editing-services/gst-editing-services.doap
+++ b/subprojects/gst-editing-services/gst-editing-services.doap
@@ -30,6 +30,16 @@ GStreamer library for creating audio and video editors
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-editing-services/meson.build b/subprojects/gst-editing-services/meson.build
index 1e1928b2b4..1d9bef9d9e 100644
--- a/subprojects/gst-editing-services/meson.build
+++ b/subprojects/gst-editing-services/meson.build
@@ -1,5 +1,5 @@
project('gst-editing-services', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-examples/meson.build b/subprojects/gst-examples/meson.build
index 7317f99f7b..5152bc0af3 100644
--- a/subprojects/gst-examples/meson.build
+++ b/subprojects/gst-examples/meson.build
@@ -1,4 +1,4 @@
-project('gst-examples', 'c', version : '1.25.0.1', license : 'LGPL')
+project('gst-examples', 'c', version : '1.25.1', license : 'LGPL')
static_build = get_option('default_library') == 'static'
cc = meson.get_compiler('c')
diff --git a/subprojects/gst-integration-testsuites/meson.build b/subprojects/gst-integration-testsuites/meson.build
index d227b43121..7092c664f5 100644
--- a/subprojects/gst-integration-testsuites/meson.build
+++ b/subprojects/gst-integration-testsuites/meson.build
@@ -1 +1 @@
-project('gst-integration-testsuites', [], version: '1.25.0.1', meson_version : '>= 1.3', license: 'LGPL')
+project('gst-integration-testsuites', [], version: '1.25.1', meson_version : '>= 1.3', license: 'LGPL')
diff --git a/subprojects/gst-libav/NEWS b/subprojects/gst-libav/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-libav/NEWS
+++ b/subprojects/gst-libav/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-libav/RELEASE b/subprojects/gst-libav/RELEASE
index 3db454c505..32c58d9c10 100644
--- a/subprojects/gst-libav/RELEASE
+++ b/subprojects/gst-libav/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-libav 1.25.0.1.
+This is GStreamer gst-libav 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-libav/gst-libav.doap b/subprojects/gst-libav/gst-libav.doap
index e269d4b1c5..200d67d1d6 100644
--- a/subprojects/gst-libav/gst-libav.doap
+++ b/subprojects/gst-libav/gst-libav.doap
@@ -32,6 +32,16 @@ colorspace conversion elements.
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-libav/meson.build b/subprojects/gst-libav/meson.build
index c452a17199..ae2f417942 100644
--- a/subprojects/gst-libav/meson.build
+++ b/subprojects/gst-libav/meson.build
@@ -1,5 +1,5 @@
project('gst-libav', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-plugins-bad/NEWS b/subprojects/gst-plugins-bad/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-plugins-bad/NEWS
+++ b/subprojects/gst-plugins-bad/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-plugins-bad/RELEASE b/subprojects/gst-plugins-bad/RELEASE
index fa559e7a5c..7728965a83 100644
--- a/subprojects/gst-plugins-bad/RELEASE
+++ b/subprojects/gst-plugins-bad/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-bad 1.25.0.1.
+This is GStreamer gst-plugins-bad 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-plugins-bad/gst-plugins-bad.doap b/subprojects/gst-plugins-bad/gst-plugins-bad.doap
index afcb44dace..be88f6e444 100644
--- a/subprojects/gst-plugins-bad/gst-plugins-bad.doap
+++ b/subprojects/gst-plugins-bad/gst-plugins-bad.doap
@@ -33,6 +33,16 @@ real live maintainer, or some actual wide use.
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-plugins-bad/meson.build b/subprojects/gst-plugins-bad/meson.build
index 49b87d95a0..cbf985f259 100644
--- a/subprojects/gst-plugins-bad/meson.build
+++ b/subprojects/gst-plugins-bad/meson.build
@@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-plugins-base/NEWS b/subprojects/gst-plugins-base/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-plugins-base/NEWS
+++ b/subprojects/gst-plugins-base/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-plugins-base/RELEASE b/subprojects/gst-plugins-base/RELEASE
index fafe9b0236..0b3ca909a9 100644
--- a/subprojects/gst-plugins-base/RELEASE
+++ b/subprojects/gst-plugins-base/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.25.0.1.
+This is GStreamer gst-plugins-base 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-plugins-base/gst-plugins-base.doap b/subprojects/gst-plugins-base/gst-plugins-base.doap
index a15816a962..cd394ed777 100644
--- a/subprojects/gst-plugins-base/gst-plugins-base.doap
+++ b/subprojects/gst-plugins-base/gst-plugins-base.doap
@@ -34,6 +34,16 @@ A wide range of video and audio decoders, encoders, and filters are included.
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build
index 4aeaf80f83..987c9b5432 100644
--- a/subprojects/gst-plugins-base/meson.build
+++ b/subprojects/gst-plugins-base/meson.build
@@ -1,5 +1,5 @@
project('gst-plugins-base', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-plugins-good/NEWS b/subprojects/gst-plugins-good/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-plugins-good/NEWS
+++ b/subprojects/gst-plugins-good/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-plugins-good/RELEASE b/subprojects/gst-plugins-good/RELEASE
index dd66c92078..8b25a019d2 100644
--- a/subprojects/gst-plugins-good/RELEASE
+++ b/subprojects/gst-plugins-good/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-good 1.25.0.1.
+This is GStreamer gst-plugins-good 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-plugins-good/gst-plugins-good.doap b/subprojects/gst-plugins-good/gst-plugins-good.doap
index feafc02a23..20bc715d6d 100644
--- a/subprojects/gst-plugins-good/gst-plugins-good.doap
+++ b/subprojects/gst-plugins-good/gst-plugins-good.doap
@@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library).
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build
index 1b49704385..5783a04997 100644
--- a/subprojects/gst-plugins-good/meson.build
+++ b/subprojects/gst-plugins-good/meson.build
@@ -1,5 +1,5 @@
project('gst-plugins-good', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-plugins-rs.wrap b/subprojects/gst-plugins-rs.wrap
index f41d56b701..4c63256b1a 100644
--- a/subprojects/gst-plugins-rs.wrap
+++ b/subprojects/gst-plugins-rs.wrap
@@ -2,4 +2,4 @@
directory=gst-plugins-rs
url=https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
push-url=git@gitlab.freedesktop.org:gstreamer/gst-plugins-rs.git
-revision=main
+revision=gstreamer-1.25.1
diff --git a/subprojects/gst-plugins-ugly/NEWS b/subprojects/gst-plugins-ugly/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-plugins-ugly/NEWS
+++ b/subprojects/gst-plugins-ugly/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-plugins-ugly/RELEASE b/subprojects/gst-plugins-ugly/RELEASE
index 4787963759..c8db09987c 100644
--- a/subprojects/gst-plugins-ugly/RELEASE
+++ b/subprojects/gst-plugins-ugly/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-ugly 1.25.0.1.
+This is GStreamer gst-plugins-ugly 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap b/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap
index 84a24d8108..9da0e938f9 100644
--- a/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap
+++ b/subprojects/gst-plugins-ugly/gst-plugins-ugly.doap
@@ -33,6 +33,16 @@ might be widely known to present patent problems.
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-plugins-ugly/meson.build b/subprojects/gst-plugins-ugly/meson.build
index f55ee63681..8a94da9732 100644
--- a/subprojects/gst-plugins-ugly/meson.build
+++ b/subprojects/gst-plugins-ugly/meson.build
@@ -1,5 +1,5 @@
project('gst-plugins-ugly', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-python/NEWS b/subprojects/gst-python/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-python/NEWS
+++ b/subprojects/gst-python/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-python/RELEASE b/subprojects/gst-python/RELEASE
index 5b5f5bb957..cf2542a9da 100644
--- a/subprojects/gst-python/RELEASE
+++ b/subprojects/gst-python/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-python 1.25.0.1.
+This is GStreamer gst-python 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-python/gst-python.doap b/subprojects/gst-python/gst-python.doap
index 902aa5ff56..8f08321ce6 100644
--- a/subprojects/gst-python/gst-python.doap
+++ b/subprojects/gst-python/gst-python.doap
@@ -30,6 +30,16 @@ GStreamer Python Bindings is a set of overrides and Gst fundamental types handli
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-python/meson.build b/subprojects/gst-python/meson.build
index 0542b8ec46..268d02c2ab 100644
--- a/subprojects/gst-python/meson.build
+++ b/subprojects/gst-python/meson.build
@@ -1,5 +1,5 @@
project('gst-python', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gst-rtsp-server/NEWS b/subprojects/gst-rtsp-server/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gst-rtsp-server/NEWS
+++ b/subprojects/gst-rtsp-server/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gst-rtsp-server/RELEASE b/subprojects/gst-rtsp-server/RELEASE
index ec68ddc116..50d65f502f 100644
--- a/subprojects/gst-rtsp-server/RELEASE
+++ b/subprojects/gst-rtsp-server/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gst-rtsp-server 1.25.0.1.
+This is GStreamer gst-rtsp-server 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gst-rtsp-server/gst-rtsp-server.doap b/subprojects/gst-rtsp-server/gst-rtsp-server.doap
index dfd598076e..371f71dace 100644
--- a/subprojects/gst-rtsp-server/gst-rtsp-server.doap
+++ b/subprojects/gst-rtsp-server/gst-rtsp-server.doap
@@ -30,6 +30,16 @@ RTSP server library based on GStreamer
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gst-rtsp-server/meson.build b/subprojects/gst-rtsp-server/meson.build
index da88dd1385..eccb5cb52b 100644
--- a/subprojects/gst-rtsp-server/meson.build
+++ b/subprojects/gst-rtsp-server/meson.build
@@ -1,5 +1,5 @@
project('gst-rtsp-server', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : ['warning_level=1', 'buildtype=debugoptimized'])
diff --git a/subprojects/gstreamer-sharp/meson.build b/subprojects/gstreamer-sharp/meson.build
index 8482907831..3905ffcd83 100644
--- a/subprojects/gstreamer-sharp/meson.build
+++ b/subprojects/gstreamer-sharp/meson.build
@@ -1,4 +1,4 @@
-project('gstreamer-sharp', ['cs', 'c'], version: '1.25.0.1',
+project('gstreamer-sharp', ['cs', 'c'], version: '1.25.1',
meson_version : '>= 1.3', license: 'LGPL')
fs = import ('fs')
diff --git a/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs b/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs
index b9736b3573..72633fbd2f 100644
--- a/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs
+++ b/subprojects/gstreamer-sharp/sources/generated/Gst.PbUtils/Constants.cs
@@ -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 = 25;
- public const int PLUGINS_BASE_VERSION_NANO = 1;
+ public const int PLUGINS_BASE_VERSION_NANO = 0;
#endregion
}
}
diff --git a/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs b/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs
index bbba65ec12..1580b197d9 100644
--- a/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs
+++ b/subprojects/gstreamer-sharp/sources/generated/Gst/Constants.cs
@@ -171,9 +171,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 = 25;
- public const int VERSION_NANO = 1;
+ public const int VERSION_NANO = 0;
#endregion
}
}
diff --git a/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml b/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml
index 2133f41eaa..a089e2c7a4 100644
--- a/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml
+++ b/subprojects/gstreamer-sharp/sources/generated/gstreamer-sharp-api.xml
@@ -12342,10 +12342,10 @@
-
-
-
-
+
+
+
+
@@ -22376,10 +22376,10 @@
-
-
-
-
+
+
+
+
diff --git a/subprojects/gstreamer-vaapi/NEWS b/subprojects/gstreamer-vaapi/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gstreamer-vaapi/NEWS
+++ b/subprojects/gstreamer-vaapi/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gstreamer-vaapi/RELEASE b/subprojects/gstreamer-vaapi/RELEASE
index a69218684a..09e29e60b0 100644
--- a/subprojects/gstreamer-vaapi/RELEASE
+++ b/subprojects/gstreamer-vaapi/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer gstreamer-vaapi 1.25.0.1.
+This is GStreamer gstreamer-vaapi 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap b/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap
index e998687eb5..9d96b53a90 100644
--- a/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap
+++ b/subprojects/gstreamer-vaapi/gstreamer-vaapi.doap
@@ -25,6 +25,16 @@
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gstreamer-vaapi/meson.build b/subprojects/gstreamer-vaapi/meson.build
index a9dbff0673..214ad05a50 100644
--- a/subprojects/gstreamer-vaapi/meson.build
+++ b/subprojects/gstreamer-vaapi/meson.build
@@ -1,5 +1,5 @@
project('gstreamer-vaapi', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff --git a/subprojects/gstreamer/NEWS b/subprojects/gstreamer/NEWS
index 0a7f0b6afe..99c6dccaee 100644
--- a/subprojects/gstreamer/NEWS
+++ b/subprojects/gstreamer/NEWS
@@ -1,722 +1,60 @@
-GStreamer 1.24 Release Notes
+GStreamer 1.26 Release Notes
-GStreamer 1.24.0 was originally released on 4 March 2024.
+GStreamer 1.26.0 has not been released yet. It will be released in early 2025.
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
+The latest development release towards the upcoming 1.26 stable series is 1.25.1 and was released on 14 January 2025.
-Last updated: Monday 4 March 2024, 23:00 UTC (log)
-
-Introduction
+## 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!
As always, this release is again packed with many new features, bug fixes and other improvements.
-Highlights
+## Highlights
-- New Discourse forum and Matrix chat space
-- New Analytics and Machine Learning abstractions and elements
-- Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
-- The va plugin is now preferred over gst-vaapi and has higher ranks
-- GstMeta serialization/deserialization and other GstMeta improvements
-- New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-- New unixfd plugin for efficient 1:N inter-process communication on Linux
-- cudaipc source and sink for zero-copy CUDA memory sharing between processes
-- New intersink and intersrc elements for 1:N pipeline decoupling within the same process
-- Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
-- DRM Modifier Support for dmabufs on Linux
-- OpenGL, Vulkan and CUDA integration enhancements
-- Vulkan H.264 and H.265 video decoders
-- RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
-- WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
-- WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
-- WHIP server source and client sink, and a WHEP source
-- Precision Time Protocol (PTP) clock support for Windows and other additions
-- Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
-- New W3C Media Source Extensions library
-- Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
-- Translation support for awstranscriber
-- Bayer 10/12/14/16-bit depth support
-- MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
-- Capture source and sink for AJA capture and playout cards
-- SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
-- New uvcsink element for exporting streams as UVC camera
-- DirectWrite text rendering plugin for windows
-- Direct3D12-based video decoding, conversion, composition, and rendering
-- AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
-- AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
-- GStreamer C# bindings have been updated
-- Rust bindings improvements and many new and improved Rust plugins
+- to be filled in
- Lots of new plugins, features, performance improvements and bug fixes
-Major new features and changes
+## Major new features and changes
-Discourse forum and Matrix chat space
+- to be filled in
-- The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
+## New elements and plugins
-- The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
+- to be filled in
-- For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
- also send announcements to the mailing list for the time being.
+## New element features and additions
-Playbin3, decodebin3 now stable and default
+- to be filled in
-- After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
- and urisourcebin), are now the recommended playback components.
+## Plugin and library moves
-- Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
- Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
- (uri)decodebin.
+- to be filled in
-Improvements in this cycle:
+## Plugin and element removals
-- Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
+- to be filled in
-- Many fixes for more complex gapless and instant-switching scenarios
-
-- Lower latency for live pipelines
-
-- Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
-
-- Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
- partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
- do timing detection and optional seeking).
-
-GstMeta serialization/deserialization and other GstMeta improvements
-
-- GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
- plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
- GstReferenceTimestampMeta.
-
-- Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
- functions are not needed.
-
-- GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
- the pool.
-
-- Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
-
-New unixfd plugin for efficient 1:N inter-process communication on Linux
-
-- unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
- from one sink to multiple source elements in other processes on Linux.
-
-- The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
- into memory that can be transfered to other processes without copying.
-
-New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
-
-- Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
- The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
- ancillary data. See GstAncillaryMeta for details.
-
-- Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
- gst_buffer_iterate_ancillary_meta().
-
-- Supported by the newly added AJA sink and source elements
-
-DSD audio support
-
-- DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
- GstDsdInfo and GstDsdFormat API.
-
-- Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
- the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
-
-Analytics and Machine Learning
-
-- A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
- of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
- relationship between those observations.
-
-- Three types of metadata are already defined in the library: object detection, classification and tracking.
-
-- A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
- and classification metadata types.
-
-- The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
- inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
- GstAnalyticsRelationMeta.
-
-- The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
- type and the format is something that GStreamer knows.
-
-- In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
- other machine learning acceleration frameworks.
-
-Qt5 + Qt6 QML integration improvements
-
-- The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
- prior glcolorconvert.
-
-- New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
- for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-DRM Modifier Support for dmabufs on Linux
-
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
-also to exchange buffers with other subsystems such as Linux Media.
-
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
-integration, Wayland renderers, etc.
-
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
-
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
-between components.
-
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
-drm-format=(string)NV12:0x0x0100000000000001.
-
-See the GStreamer DMA buffers design documentation for more details.
-
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
-to land in one of the next minor releases.
-
-New API has been added for easy handling of these new caps:
-
-- GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
- gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
-
-- GST_VIDEO_DMA_DRM_CAPS_MAKE
-
-- GST_VIDEO_FORMAT_DMA_DRM
-
-OpenGL integration enhancements
-
-- When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
- necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
- first.
-
-- Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
- explicit modifiers.
-
-- Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
- filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
- GstVideoAggregator.
-
-- Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
-
-- Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
-
-- Add support for more video formats:
-
- - A420 8/10/12/16-bit.
- - A422 8/10/12/16-bit.
- - A444 8/10/12/16-bit.
- - I420 10/12 bit.
- - RBGA.
-
-- Add support for tiled video formats
-
- - NV12_16L32S (Mediatek format)
- - NV12_4L4 (Verisilicon Hantro format)
-
-- glcolorconvert now has API for retrieving shader strings for:
-
- - swizzling (reordering components).
- - YUV->RGB conversion.
- - RGB->YUV conversion.
-
-- Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
- ordering.
-
-- glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
-
-- GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
- reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
-
-Vulkan integration enhancements
-
-- Add support for the Vulkan H.264 and H.265 decoders.
-
-- Add support for timeline semaphores.
-
-- Optionally use newer Vulkan functions for format selection.
-
-- Add support for GPU-assisted validation.
-
-- Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
- interface is being removed from compositors.
-
-CUDA / NVCODEC integration and feature additions
-
-- New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
-
-- New nvJPEG library based nvjpegenc JPEG encoder element
-
-- The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
- nvh265dec, nvvp8dec, and nvvp9dec, respectively.
-
-- GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
- inserting.
-
-- OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
-
-- CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
- execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
- flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
- with the GstCudaMemory’s associated CUDA stream.
-
-RTP stack improvements
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
- properties at the end of an RTSP media sub-pipeline.
-
-- New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
- timeout of sources from which no data has been received for a while.
-
-- rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
- bring it in line with the VP8 payloader.
-
-- rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
- properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
- useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
- to the network of the PTP clock provider. The two new properties are:
-
- - “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
- media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
- clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
- Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
- enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
- which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
- There is also no start-up delay, because there’s no clock sync that needs to be established first.
-
- - “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
- calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
- for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
- a clock reference meta.
-
-- RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
- extensions.
-
-- rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
- instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
- in lieu of a jitter buffer.
-
-- RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
- Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
- pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
-
- - Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
- rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
- rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
-
-WebRTC improvements
-
-- Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
-
-- Advertise the local side of an end-of-candidates with an empty candidate string.
-
-- Add the number of Data Channels opened and closed to webrtcbin’s statistics.
-
-- Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
- well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
-
-Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
-
-- hlsdemux2 now supports Low-Latency HLS (LL-HLS)
-
-- hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
-
-- hlsdemux2 handles fallback variant URLs.
-
-- hlsdemux2 is more responsive and accurate when handling seeks.
-
-- dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
- will be used.
-
-- dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
- which allows playback to start immediately from the requested position without any previous download.
-
-- dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
- the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
-
-W3C Media Source Extensions library
-
-- A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
-
-- Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
- without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
- bindings that match the Media Source API so their existing code can integrate with this library.
-
-Closed Caption handling improvements
-
-- ccconverter supports converting between the two CEA-608 fields.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
- below for more details.
-
-Precision Time Protocol (PTP) clock improvements
-
-- Many fixes and compatibility/interoperability improvements.
-
-- Better support for running on devices with multiple network interfaces.
-
-- Allow sync to master clock on same host.
-
-- PTP clock support is now also available on Windows.
-
-- The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
- Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
- Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
- Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
- currently in Debian stable. On Windows, Rust 1.54 is needed at least.
-
-- New ptp-helper Meson build option so PTP support can be disabled or required.
-
-- gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
- subsystem, including TTL configuration.
-
-Bayer 10/12/14/16-bit depth support
-
-- bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
-
-- v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
-
-- imagefreeze gained bayer support as well
-
-MPEG-TS improvements
-
-- mpegtsdemux gained support for
- - segment seeking for seamless non-flushing looping, and
- - synchronous KLV
-- mpegtsmux now
- - allows attaching PCR to non-PES streams
- - allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
- muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
- - allows writing arbitrary Opus channel mapping families and up to 255 channels
- - separate handling of DVB and ATSC AC3 descriptors
-
-New elements and plugins
-
-- analyticsoverlay visualises object-detection metas on a video stream.
-
-- autovideoflip and autodeinterlace are two new auto elements.
-
-- AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
- ancillary data.
-
-- New cea608mux element for muxing multiple CEA-608 streams together.
-
-- The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
- frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
-
-- New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
-
-- New onnxinference element to run ONNX inference models on video buffers.
-
-- New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
- This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
-
-- Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
-
-- New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
-
-- Many exciting new Rust elements, see Rust section below.
-
-- New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
-
-- New vaav1enc element for encoding video in AV1 (See VA-API section)
-
-- New uvcsink element for exporting streams as UVC camera
-
-New element features and additions
-
-- alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
-
-- The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
- new features:
-
- - 10-bit and HDR support for H.265 / HEVC and AV1 video encoders
- - B-frame support in the H.264 encoder
- - Initial support of pre-analysis and pre-encoding
- - Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
-
-- appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
- as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
- to the existing “max-bytes” property.
-
-- autovideoconvert exposes colorspace and scaler elements for well know elements
-
-- avtp: add AVTP Raw Video Format payload and de-payload support.
-
-- cacasink’s output driver can now be selected via the “driver” property.
-
-- camerabin: various fixes and stability improvements
-
-- clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
-
-- cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
-
-- dashdemux2 has a new “start-bitrate” property.
-
-- dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
- strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
-
-- deinterlace: Add support for 10/12/16-bit planar YUV formats
-
-- The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
- decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
-
-- encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
- “Timestamper” element factory type and rank.
-
-- New fakevideodec element (see debugging section below).
-
-- filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
- useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
- over time.
-
-- flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
- librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
- If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
- always strictly increasing, inside one stream and also between the audio and video streams.
-
-- giostreamsink: Add a property to close the stream on stop().
-
-- h264parse improved its AU boundary detection.
-
-- h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
-
-- insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
- via the insertbin API.
-
-- jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
- on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
-
-- jpegparse now has a rank so it will be autoplugged if needed.
-
-- kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
-
-- matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
-
-- mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
- “freeformat” MP3s.
-
-- msdk:
-
- - DRM modifier support on Linux
-
- - only expose codecs and capabilities actually supported by the platform
-
- - msdkvpp video post-processing:
-
- - new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
- - new compute scaling mode
-
- - Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
-
- - Encoders:
-
- - msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
- - msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
- - msdkh264enc: Added BGRx format DMABuf support
- - Advertise special image formats in low power mode
-
-- mxfdemux gained support for FFV1 demuxing
-
-- opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
- layouts.
-
-- The oss plugin gained a device provider for audio device discovery
-
-- pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
-
-- Intel Quick Sync plugin improvements:
-
- - qsvh264enc gained more encoding options
- - qsvh265dec now supports GBR decoding and HEVC RExt profiles
-
-- qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
- video codec.
-
-- ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
- ristsrc receive other payload types than MPEG-TS.
-
-- rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
- been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
- the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
-
-- rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
-
-- sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
- “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
-
-- splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
-
-- srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
-
-- switchbin: many improvements, especially for caps handling and passthrough.
-
-- taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
- tags.
-
-- timeoverlay: add buffer-count and buffer-offset time modes.
-
-- udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
-
-- videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
- exposed directly as property.
-
-- videoflip: many orientation tag handling fixes and improvements
-
-- videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
-
-- volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
- allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
-
-- waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
-
-- webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
- output a stand-alone WebP image for each input buffer, just like before.
-
-- wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
-
-- x264enc gained support for 8-bit monochrome video (GRAY8).
-
-- ximagesrc gained navigation support (mouse and keyboard events).
-
-- y4mdec now parses extended headers to support high bit depth video.
-
-Plugin and library moves
-
-- The AMR-NB and AMR-WB plugins have been moved from -bad to -good.
-
-Plugin and element removals
-
-- The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
-
-- The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
-
-- The kate subtitle plugin has been removed.
-
-Miscellaneous API additions
+## Miscellaneous API additions
GStreamer Core
-- gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
- latency of a pipeline.
+- to be filled in
-- Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
- plugins that register features at runtime. They are now able to provide information to the user why features might not be
- available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
+Other libs
-- GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
- that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
- GStreamer code that needs to be portable to e.g. Windows with MSVC.
+- to be filled in
-- gst_clear_context(), gst_clear_promise(), gst_clear_sample()
+## Miscellaneous performance, latency and memory optimisations
-- gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
-
-- New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
- matroskademux, qtdemux, dashdemux and dashdemux2
-
-- New utility functions to create a stream-id without a pad for elements:
-
- - gst_element_decorate_stream_id()
- - gst_element_decorate_stream_id_printf_valist()
- - gst_element_decorate_stream_id_printf()
-
-- GstQueueArray gained API for sorting and sorted insertion
-
-- Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
- which only succeeds if the result can later be fully deserialised again.
-
-- GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
- gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
- own internal queuing.
-
-- GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
- ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
- that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
-
-GstDiscoverer
-
-- New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
-
-GstSDP
-
-- Add gst_sdp_message_remove_media()
-
-Video Library
-
-DRM Modifier Support for dmabufs on Linux
-
-See section above.
-
-List of Video Formats for Passthrough
-
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
-all supported formats for passthrough purposes:
-
-- GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
-- gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
-
-New Video Formats
-
-- 12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
-
- - A444_12BE, A444_12LE
- - A422_12BE, A422_12LE
- - A420_12BE, A420_12LE
- - A444_16BE, A444_16LE
- - A422_16BE, A422_16LE
- - A420_16BE, A420_16LE
-
-- 8-bit A422 / A444 (YUV with alpha channel) variant:
-
- - A422
- - A444
-
-- Planar 16-bit 4:4:4 RGB formats:
-
- - GBR_16BE
- - GBR_16LE
-
-- RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
- with GBR color space, such as HEVC and VP9 GBR streams for example.
-
-- Two tiled Mediatek 10-bit formats:
-
- - MT2110T
- - MT2110R
-
-- Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
-
-Miscellaneous performance, latency and memory optimisations
-
-- liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
-
-- liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
-
-- Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
- much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
- causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
+- to be filled in
- As always there have been plenty of performance, latency and memory optimisations all over the place.
-Tracing framework and debugging improvements
+## Tracing framework and debugging improvements
-- The gst-stats tool can now be passed a custom regular expression
-
-- gst-debug-viewer from the devtools module has seen minor improvements and fixes
+- to be filled in
New tracers
@@ -726,634 +64,183 @@ Debug logging system improvements
- Nothing major in this cycle.
-Fake video decoder
+## Tools
-- The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
- caps and then pushes out raw video frames of the expected size in RGB format.
+- to be filled in
-- It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
- an idea about how smooth the rendering is.
+## GStreamer FFmpeg wrapper
-Tools
+- to be filled in
-- gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
- to set the class or app-id.
+## GStreamer RTSP server
-- gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
- command line argument.
+- to be filled in
-GStreamer FFmpeg wrapper
-
-- New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
-
-- Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
- to have parsers and decoders separate.
-
-- Added codec mappings for AV1, MxPEG, FFVHuff video
-
-- Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
-
-- Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
-
-- The FFmpeg meson subproject wrap has been updated to v6.1
-
-- Note: see Known Issues section below for known issues with FFmpeg 6.0
-
-GStreamer RTSP server
-
-- New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
- connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
- the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
- setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
- discard it if too much time has passed and instead force a new key unit.
-
-- rtspclientsink: apply “port-range” property for RTCP port selection as well
-
-GStreamer VA-API support
+## GStreamer VA-API support
GstVA
-- vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
-
-- Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
- modifiers. This supports both import and export of dmabufs.
-
-- Added vaav1enc element, available in recent Intel and AMD GPUs
-
-- Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
-
-- Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
-
-- Bumped minimum libva version to 1.12
-
-- Enhanced support for RadeonSI Mesa driver for 10bit decoding
-
-- Register elements only for allowed drivers (Intel and Mesa, for the moment)
+- to be filled in
GStreamer-VAAPI
- The new GstVA elements (see above) should be preferred when possible.
-- Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
-
-- Clean-ups and minimal fixes.
-
- gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
opportunity.
-GStreamer Video4Linux2 support
+## GStreamer Video4Linux2 support
-- New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
+- to be filled in
-- v4l2src now supports 10/12/14/16-bit bayer formats.
+## GStreamer Editing Services and NLE
-- Stateful decoders now pass too large encoded frames over multiple buffers.
+- to be filled in
-- AV1 Stateless video decoder.
+## GStreamer validate
-- Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
+- to be filled in
-GStreamer OMX
-
-- 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.
-
-- Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
- while planning their move to the Video4Linux API.
-
-GStreamer Editing Services and NLE
-
-- Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
- effects. By default scaling is done in the compositor.
-
-- Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
- sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
- gesdemux).
-
-- Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
- cleaner and allowing to expose the following APIs:
-
- - load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
- requiring discovering the file when reloading a project.
- - source-setup signal so user can tweak source elements during discovery
-
-- Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
- that meta.
-
-- Expose audioconvert:mix-matrix property in audio sources
-
-- Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
- etc..) and leverage all new features of that new element.
-
-ges-launch
-
-- Fix setting keyframes
-
-- Add an ignore-eos option
-
-- Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
- media file, for example, but ensuring it is muxed using a specific format
-
-- Ensure sink elements are inside a GstBin and never in a GstPipeline
-
-- Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
- beginning of the chain while the syntax is +effect felt wrong
-
-GStreamer validate
-
-- In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
-
-- Add a vmethod to free GstValidateActionParameters to be more binding friendly.
-
-- Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
-
-- Add support to run sub-pipelines/scenarios
-
- - Added support to forward buffers from appsink to appsrc
-
-- Add a way to set pipeline base-time, start-time and force using the system clock.
-
-- Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
- control when writing scenarios without requiring files with the content.
-
-- Add a “select-streams” action type to test “stream aware” elements.
-
-- Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
- for a pad to get some specific caps set before executing an action.
-
-- validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
- some of the properties are inside structures.
-
-- Fixed compatibility with Python 3.12.
-
-GStreamer Python Bindings
+## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-- Added a GstTagList override that makes a tag list act like a dict
+- to be filled in
-- Fix build and usage in Windows
+## GStreamer C# Bindings
-- Various fixes for Python >= 3.12
-
-- Rework libpython loading to be relocatable
-
-- Fix libpython dlopen on macOS
-
-GStreamer C# Bindings
-
-- The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
- that version.
+- to be filled in
- GStreamer API added in recent GStreamer releases is now available
-- GstRtspServer bindings have been added, plus an RTSP server example
-
-GStreamer Rust Bindings and Rust Plugins
+## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
GNOME release cycle.
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
+and plugins. The GStreamer 1.26 binaries track the 0.13 release series of gst-plugins-rs, and fixes from newer versions will be
+backported as needed to the 0.13 brach for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
-WebRTC
+### WebRTC
-- New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
- support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
- factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
+- to be filled in
-- webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
- the default signaller.
+### Other new Rust elements
-- A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
- implementation is currently in a merge request in GitLab.
+- to be filled in
-- New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
- element around webrtcsrc will be added.
+### Other improvements
-- New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
+- to be filled in
-- New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
- whipsink element.
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
+1.24) and 0.13 (shipped with GStreamer 1.26).
-- A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
- into the git repository recently.
+## Build and Dependencies
-- A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
-
-- webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
- configuration, similar to the already existing encoder-setup signal for encoders.
-
-- webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
- navigation event protocol supported by webrtcsink.
-
-- webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
- encoded stream parameters.
-
-- webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
- be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
-
-- gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
-
-… and various other smaller improvements!
-
-RTSP
-
-- New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
- - RTSP 1.0 support
- - TCP, UDP, UDP-Multicast lower transports
- - RTCP SR, RTCP RR, RTCP-based A/V sync
- - Tested for correctness in multicast cases too
- - Lower transport selection and order (NEW!)
- - The existing rtspsrc has a hard-coded order list for lower transports
- - Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
-
-GTK4
-
-- Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
-
-- Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
-
-- New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
- setting a fully transparent background.
-
-- New scale-filter property for defining how to scale the frames.
-
-- Add Python example application to the repository.
-
-- Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
- gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
-
-Closed Caption
-
-- Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
-
-- Add support for translations within transcriberbin.
-
-- awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
- time.
-
-- awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
-
-Other new elements
-
-- New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
-
-- New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
-
-- New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
- This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
- bindings, and is also used inside webrtcsrc and webrtcsink.
-
-- New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
-
-- New isomp4mux non-fragmented MP4 muxer element.
-
-Other improvements
-
-- audiornnoise
- - Attach audio level meta to output buffers.
- - Add voice detection threshold property
-- fmp4mux
- - Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
- - Add support for muxing Opus, VP8, VP9 and AV1 streams
- - Add ‘offset-to-zero’ property and make media/track timescales configurable
-- hlssink3
- - Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
- - Allow generating I-frame-only playlist
-- ndi
- - Closed Caption support in ndisrc / ndisink
- - Zero-copy output support in ndisrc for raw video and audio
-- spotifyaudiosrc: Support configurable bitrate
-
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
-1.22) and 0.12 (shipped with GStreamer 1.24).
-
-Cerbero Rust support
-
-- As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
- includes Android and iOS now in addition to macOS and Windows/MSVC.
-
-Build and Dependencies
-
-- Meson >= 1.1 is now required for all modules
+- Meson >= 1.3 is now required for all modules
- The GLib requirement has been bumped to >= 2.64
-- liborc >= 0.4.38 is strongly recommended
+- liborc >= 0.4.40 is strongly recommended
- libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-- gst-libav was updated for FFmpeg API deprecations and removals
-
-- libwebpmux is required for the animated WebP support
-
-- The wpe plugin gained support for the WPEWebKit 2.0 API version
-
-- Bumped minimum libva version to 1.12 for the va plugin.
-
-- zxing: added support for the zxing-c++ 2.0 API
-
-- The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
- required Rust version for building this is 1.48, i.e. the version currently in Debian stable. On Windows, at least Rust 1.54
- is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP support is
- available (if set to ptp-helper=enabled). cargo is not required for building.
-
-- gst-plugins-rs requires Rust 1.70 or newer.
-
-- Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
- to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
- option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
- it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
-
-- libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
- still is a runtime dependency, so distros should make sure it remains a package dependency.
-
Monorepo build (née gst-build)
-- There is now a top-level meson build option to enable/require webrtc
+- to be filled in
-- The FFmpeg subproject wrap was udpated to 6.1
-
-- A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
+- The FFmpeg subproject wrap was udpated to 7.1
gstreamer-full
-- Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
- create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
- dynamic (default) or static.
-
-- Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
- the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
+- to be filled in
Development environment
-- add VSCode IDE integration
+- to be filled in
-- gst-env.py: Output a setting for the prompt with --only-environment
-
-Cerbero
+### 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.
General improvements
-- New plugins have been added
- - codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
-- JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
- plugin load time
-- Several recipes were ported to meson, leading to faster builds and better MSVC support
- - ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
- - For more information, please see the tracker issue
-- Some recipes are now outdated or unnecessary and have been removed:
- - intltool, libkate
-- Various recipe updated to their latest versions
-- Rust toolchain updated to 1.76.0 (latest as of writing)
-- Rust plugins are now stripped and debug info split out correctly, reducing their size
-- Fix several spurious build issues, especially with the Rust toolchain
-- CMake is picked up from the system if available
-- Cerbero will no longer OOM or consume excessive resources on low-end systems
-- Python recipes have been moved from setuptools to virtualenv
-- Fixed support for Python 3.12+
+- to be filled in
macOS
-- Minimum macOS version has been increased to 10.13 (High Sierra)
- - Released 5½ years ago, >95% marketshare
-- Fix macOS app store validation issue caused by absolute RPATHs
-- Rosetta is automatically installed if required for universal builds on Apple Silicon
-- The official macOS binaries now also include static libs for the GStreamer Rust plugins
+- to be filled in
iOS
-- Minimum iOS version has been increased to 12.0
-- The iOS binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on iOS
+- to be filled in
Windows
-- New features shipped with the official binaries:
- - plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
- - plugin features: d3d11-wgc (Windows Graphics Capture Support)
- - libraries: gstdxva-1.0
-- New qml6 plugin can be built on Windows with the qt6 variant enabled
- - Similar to qt5, this plugin cannot be included in the official binaries
-- GLib process handling helpers for Windows are now shipped
-- Windows 11 SDK is now required for builds
- - Visual Studio 2019 and newer ship this SDK
-- MSYS is now deprecated for building Windows binaries, will be removed in the next release
- - MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
-- Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
-- Fixed Pango crash on 32-bit Windows
-- WiX packaging now works with cross-windows builds from linux
+- to be filled in
Linux
-- Linux packages will now also include static libs for the GStreamer Rust plugins
-- Add Python support for multiarch distributions
-- Build fixes for various recipes on multiarch distributions
-- Use arch-specific libdir correctly on multiarch distributions
-- gst-omx was removed from gstreamer, and hence is no longer shipped
-- Fixed Gentoo support
-- Added support for RHEL 9
-- Added support for Rocky Linux
-- Added support for Manjaro Linux
+- to be filled in
Android
-- Android NDK has been updated to r25c
- - Only the Clang toolchain is used from the NDK now (both target and host)
- - gnustl has been completely removed
-- The Android binary packages now include the GStreamer Rust plugins
-- tremor and ivorbisdec plugins are no longer shipped on Android
-- openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
+- to be filled in
-Platform-specific changes and improvements
+## Platform-specific changes and improvements
-Android
+### Android
-- Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
- overhead.
+- to be filled in
-- Add support for AV1 to the androidmedia video encoder and decoder.
+### Apple macOS and iOS
-Apple macOS and iOS
+- to be filled in
-- osxaudio: audio clock improvements (interpolate based on system time)
+### Windows
-- Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
- NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
- them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
- again. This change also allows osxvideosink to receive navigation events correctly.
+- to be filled in
-Windows
+## Documentation improvements
-- New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
- dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
-
-- PTP clock support is now also available on Windows
-
-- qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
-
-- wasapi2 audio plugin:
-
- - Added an option to monitor a loopback device’s mute state
- - Allows process loopback capture on Windows 10
-
-- win32ipc supports zero-copy rendering now through a shared bufferpool.
-
-- Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
- in an external process on Windows as well.
-
-- gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
-
-- d3d11 plugin:
-
- - d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
- - Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
- - Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
- - d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
- sampling method.
- - Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
- the d3d11videosink plugin documentation.
- - Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
-
-- New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
- feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
- - The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
- nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
- - H.264 video encoding support via d3d12h264enc element.
- - Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
- - IPC, overlay, and deinterlace elements are not implemented in d3d12
- - Windows Graphics Capture API based screen capturing is not implemented in d3d12
- - In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
- - All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
- environment or appropriate plugin feature APIs if they want these elements autoplugged.
-
-Documentation improvements
-
-- hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
- issues.
-
-Possibly Breaking Changes
-
-- gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
- return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
- version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
- checks which have been fixed some time ago.
-
-- GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
- GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
- output frame based on the output time because they may change even though the input frame is not changing.
-
-- rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
- still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
- output.
-
-- timecodestamper: The “drop-frame” property now defaults to TRUE
-
-- The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
- nvvp8dec and nvvp9dec, respectively.
-
-Known Issues
-
-- There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
- avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
-
-Statistics
-
-- 4643 commits
-
-- 2405 Merge Requests
-
-- 850 Issues
-
-- 290+ Contributors
-
-- ~25% of all commits and Merge Requests were in Rust modules
-
-- 4747 files changed
-
-- 469633 lines added
-
-- 209842 lines deleted
-
-- 259791 lines added (net)
+- to be filled in
Contributors
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
+- to be filled in
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
-Stable 1.24 branch
+Stable 1.26 branch
-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.
+After the 1.26.0 release there will be several 1.26.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.26.x
+bug-fix releases will be made from the git 1.26 branch, which will be a stable branch.
-1.24.0
+Schedule for 1.28
-GStreamer 1.24.0 was released on 4 March 2024.
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
-Schedule for 1.26
+The schedule for 1.28 is yet to be decided.
-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.
-
-The schedule for 1.26 is yet to be decided.
-
-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
+1.28 will be backwards-compatible to the stable 1.26, 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.
--------------------------------------------------------------------------------------------------------------------------------
-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, Thibault Saunier, and Víctor Manuel Jáquez Leal.
+These release notes have been prepared by Tim-Philipp Müller with contributions from ….
License: CC BY-SA 4.0
diff --git a/subprojects/gstreamer/RELEASE b/subprojects/gstreamer/RELEASE
index 111dc5d7d7..9bf7cf6713 100644
--- a/subprojects/gstreamer/RELEASE
+++ b/subprojects/gstreamer/RELEASE
@@ -1,4 +1,4 @@
-This is GStreamer core 1.25.0.1.
+This is GStreamer core 1.25.1.
GStreamer 1.25 is the unstable development branch leading up to the next major
stable version which will be 1.26.
diff --git a/subprojects/gstreamer/gstreamer.doap b/subprojects/gstreamer/gstreamer.doap
index 5bae6e3423..bb7b413e31 100644
--- a/subprojects/gstreamer/gstreamer.doap
+++ b/subprojects/gstreamer/gstreamer.doap
@@ -38,6 +38,16 @@ hierarchy, and a set of media-agnostic core elements.
+
+
+ 1.25.1
+ main
+
+ 2025-01-14
+
+
+
+
1.24.0
diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build
index 8b3bf51f08..8636dbf3b9 100644
--- a/subprojects/gstreamer/meson.build
+++ b/subprojects/gstreamer/meson.build
@@ -1,5 +1,5 @@
project('gstreamer', 'c',
- version : '1.25.0.1',
+ version : '1.25.1',
meson_version : '>= 1.3',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])