GStreamer 1.24 Release Notes

GStreamer 1.24.0 was originally released on 4 March 2024.

The latest bug-fix release in the stable 1.24 series is 1.24.10 and was released on 06 January 2025.

See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.

Last updated: Tuesday 06 January 2025, 19:30 UTC (log)

## 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

-   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
-   Rust plugins now shipped in packages for all major platforms including Android and iOS
-   Lots of new plugins, features, performance improvements and bug fixes

## Major new features and changes

### Discourse forum and Matrix chat space

-   The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.

-   The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.

-   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.

### Playbin3, decodebin3 now stable and default

-   After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
    and urisourcebin), are now the recommended playback components.

-   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.

Improvements in this cycle:

-   Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.

-   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 oldstable. 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 -ugly 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

GStreamer Core

-   gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
    latency of a pipeline.

-   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.

-   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.

-   gst_clear_context(), gst_clear_promise(), gst_clear_sample()

-   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.

-   As always there have been plenty of performance, latency and memory optimisations all over the place.

## 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

New tracers

-   None in this release.

Debug logging system improvements

-   Nothing major in this cycle.

Fake video decoder

-   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.

-   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.

## Tools

-   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.

-   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.

## 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.0 and the latest FFmpeg 7.x release

## 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

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)

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

-   New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.

-   v4l2src now supports 10/12/14/16-bit bayer formats.

-   Stateful decoders now pass too large encoded frames over multiple buffers.

-   AV1 Stateless video decoder.

-   Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI

## 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

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

-   Fix build and usage in Windows

-   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.

-   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

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
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.

Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.

### 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.

-   webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
    the default signaller.

-   A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
    implementation is currently in a merge request in GitLab.

-   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.

-   New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.

-   New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
    whipsink element.

-   A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
    into the git repository recently.

-   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

-   The GLib requirement has been bumped to >= 2.64

-   liborc >= 0.4.38 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 oldstable. 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

-   The FFmpeg subproject wrap was udpated to 6.1

-   A libvpx wrap was added (for VP8/VP9 software encoding/decoding)

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.

Development environment

-   add VSCode IDE integration

-   gst-env.py: Output a setting for the prompt with --only-environment

### 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+

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

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

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

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

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

## Platform-specific changes and improvements

### Android

-   Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
    overhead.

-   Add support for AV1 to the androidmedia video encoder and decoder.

### Apple macOS and iOS

-   osxaudio: audio clock improvements (interpolate based on system time)

-   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.

### Windows

-   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.

-   gst-libav currently doesn’t build against the latest FFmpeg 7.0 release. This is being worked on and tracked in this “libav:
    Fix compatibility with ffmpeg 7” Merge Request.

## 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)

## 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, …

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

Stable 1.24 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.

1.24.0

GStreamer 1.24.0 was released on 4 March 2024.

1.24.1

The first 1.24 bug-fix release (1.24.1) was released on 21 March 2024.

This release only contains bugfixes and it should be safe to update from 1.24.0.

Highlighted bugfixes in 1.24.1

-   Fix instant-EOS regression in audio sinks in some cases when volume is 0
-   rtspsrc: server compatibility improvements and ONVIF trick mode fixes
-   rtsp-server: fix issues if RTSP media was set to be both shared and reusable
-   (uri)decodebin3 and playbin3 fixes
-   adaptivdemux2/hlsdemux2: Fix issues with failure updating playlists
-   mpeg123 audio decoder fixes
-   v4l2codecs: DMA_DRM caps support for decoders
-   va: various AV1 / H.264 / H.265 video encoder fixes
-   vtdec: fix potential deadlock regression with ProRes playback
-   gst-libav: fixes for video decoder frame handling, interlaced mode detection
-   avenc_aac: support for 7.1 and 16 channel modes
-   glimagesink: Fix the sink not always respecting preferred size on macOS
-   gtk4paintablesink: Fix scaling of texture position
-   webrtc: Allow resolution and framerate changes, and many other improvements
-   webrtc: Add new LiveKit source element
-   Fix usability of binary packages on arm64 iOS
-   various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   registry, ptp: Canonicalize the library path returned by dladdr
-   segment: Don’t use g_return_val_if_fail() in gst_segment_to_running_time_full()
-   uri: Sort uri protocol sources/sinks by feature name to break a feature rank tie
-   ptp: Initialize expected DELAY_REQ seqnum to an invalid value
-   ptp: Don’t install test executable
-   gst-inspect: fix –exists for plugins with versions other than GStreamer’s version, like the Rust plugins
-   identity: Don’t refuse seeks unless single-segment=true

gst-plugins-base

-   audiobasesink: Don’t wait on gap events
-   audioencoder: Avoid using temporarily mapped memory as base for input buffers
-   decodebin3: Be more specific when sending missing plugin messages
-   decodebin3: Fix re-usability issues
-   decodebin3: Provide clear error message if no decoders present
-   playbin3: Remove un-needed URI NULL check
-   uridecodebin3: Don’t hold lock when posting messages or signals
-   uridecodebin3: Handle potential double redirection errors
-   glimagesink: Fix the sink not always respecting preferred size on macOS
-   glupload: Do not propose allocators with sysmem, fixes warning when playing VP9 with alpha
-   shmallocator: fix build on Illumos
-   meson: Fix the condition to skip theoradec test

gst-plugins-good

-   adaptivdemux/hlsdemux2: Fix issues with failure updating playlists
-   mpg123audiodec: Correctly handle the case of clipping all decoded samples
-   mpg123audiodec: gst_audio_decoder_allocate_output_buffer: assertion ‘size > 0’ failed
-   qt: Fix description in meson build options
-   qtdemux: Do not set channel-mask to zero
-   rtspsrc: remove ‘deprecated’ flag from the ‘push-backchannel-sample’ signal
-   rtspsrc: Consider 503 Service Not Available when handling broken control urls
-   rtspsrc, rtponviftimestamp: ONVIF mode fixes
-   rtspsrc: Don’t invoke close when stopping if we’ve started cleanup, fixing potential crash on shutdown
-   rtpgstpay: Delay pushing of event packets until the next buffer

gst-plugins-bad

-   asio: Fix {input,output}-channels property handling
-   cuda,d3d11,d3d12bufferpool: Disable preallocation
-   d3d11device: Fix adapter LUID comparison in wrapped device mode
-   d3d12device: Fix IDXGIFactory2 leak
-   d3d12: Fix SDK debug layer activation
-   dvbsubenc: Fix bottom field size calculation
-   dvdspu: avoid null dereference
-   GstPlay: Fix a critical warning in error callback
-   v4l2codecs: decoders: Add DMA_DRM caps support
-   vaav1enc: Init the output_frame_num when resetting gf group
-   vah264enc, vah265enc, vaav1enc: fix potential crash on devices without rate control
-   vah265enc: checking surface alignment
-   videoparsers: Don’t verbosely warn about CEA_708_PROCESS_EM_DATA_FLAG not being set
-   vtdec: Fix a deadlock during ProRes playback, handle non-linked gracefully

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   gtk4paintablesink: Fix scaling of texture position
-   janusvrwebrtcsink: Handle 64 bit numerical room ids
-   janusvrwebrtcsink: Don’t include deprecated audio/video fields in publish messages
-   janusvrwebrtcsink: Handle various other messages to avoid printing errors
-   livekitwebrtc: Fix shutdown behaviour
-   rtpgccbwe: Don’t forward buffer lists with buffers from different SSRCs to avoid breaking assumptions in rtpsession
-   sccparse: Ignore invalid timecodes during seeking
-   webrtcsink: Don’t try parsing audio caps as video caps
-   webrtc: Allow resolution and framerate changes
-   webrtcsrc: Make producer-peer-id optional
-   livekitwebrtcsrc: Add new LiveKit source element
-   regex: Add support for configuring regex behaviour
-   spotifyaudiosrc: Document how to use with non-Facebook accounts
-   webrtcsrc: Add do-retransmission property

gst-libav

-   avcodecmap: Increase max AAC channels to 16
-   avviddec: Fix how we get back the codec frame
-   avviddec: Fix interlaced mode detection
-   avviddec: Double check if AV_CODEC_FLAG_COPY_OPAQUE port is safe for our scenario

gst-rtsp-server

-   media: gst_rtsp_media_set_reusable() and gst_rtsp_media_set_shared() have become incompatible
-   rtsp-stream: clear sockets when leaving bin

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges: Fix critical warning

gst-validate + gst-integration-testsuites

-   No changes

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.1

-   gstreamer: Enable ptp helper explicitly
-   gst-plugins-bad: Package new insertbin plugin
-   gst-plugins-rs: Adjust parallel architecture build blocks
-   libnice: update to 0.1.22
-   pixman: Bump to 0.43.4
-   orc: disable JIT code generation on arm64 on iOS again, fixing crashes

Contributors to 1.24.1

Alexander Slobodeniuk, Antonio Larrosa, Edward Hervey, Elizabeth Figura, François Laignel, Guillaume Desmottes, He Junyan, Jan
Schmidt, Jordan Yelloz, L. E. Segovia, Mark Nauwelaerts, Mathieu Duponchelle, Michael Tretter, Mikhail Rudenko, Nicolas
Dufresne, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Robert Mader, Ruijing Dong, Sebastian Dröge, Seungha Yang,
Thomas Goodwin, Thomas Klausner, Tim-Philipp Müller, Xi Ruoyao,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.1

-   List of Merge Requests applied in 1.24.1
-   List of Issues fixed in 1.24.1

1.24.2

The second 1.24 bug-fix release (1.24.2) was released on 9 April 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.2

-   H.264 parsing regression fixes
-   WavPack typefinding improvements
-   Video4linux fixes and improvements
-   Android build and runtime fixes
-   macOS OpenGL memory leak and robustness fixes
-   Qt/QML video sink fixes
-   Package new analytics and mse libraries in binary packages
-   Windows MSVC binary packages: fix libvpx avx/avx2/avx512 instruction set detection
-   various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   clock: Block futex_time64 usage on Android API level < 30
-   basesrc: Clear submitted buffer lists consistently with buffers
-   ptpclock: fix double free of domain data during deinit
-   clocksync: Proxy allocation queries
-   inputselector: fix possible clock leak on shutdown
-   typefind: Handle WavPack block sizes > 131072

gst-plugins-base

-   glcolorconvert: Ensure glcolorconvert does not miss supported RGB formats
-   gl/macos: a couple of race/reference count fixes
-   pbutils: descriptions: Don’t warn on MPEG-1 audio caps without layer field
-   encodebin: Add the parser before timestamper to tosync list
-   videorate: Reset last_ts when a new segment is received

gst-plugins-good

-   qml6glsink: fix destruction of underlying texture
-   qt/qt6: Fixup for dummy textures
-   rtpjitterbuffer: Don’t use estimated_dts to do default skew adjustment
-   rtpjitterbuffer: Use an extended RTP timestamp for the clock-base
-   rtpmp4adepay: Set duration on outgoing buffers
-   tests: rtpred: fix out-of-bound writes
-   v4l2: allocator: Fix unref log/trace on memory release
-   v4l2: Also set max_width/max_width if enum framesize fail
-   v4l2: enforce a pixel aspect ratio of 1/1 if no data are available
-   v4l2: fix error in calculating padding bottom for tile format
-   v4l2src: need maintain the caps order in caps compare when fixate
-   vpxenc: Include vpx error details in errors and warnings

gst-plugins-bad

-   h264parse: element hangs with some video streams (regression)
-   h264parse: Revert “AU boundary detection changes”
-   alphadecodebin: Explicitly pass 64 bit integers as such through varargs
-   atdec: Set a channel mask for channel counts greater than 2
-   ccconverter: Fix caps leak and remove unnecessary code
-   d3d11videosink: disconnect signals before releasing the window
-   d3d11: meson: Add support for MinGW DirectXMath package and update directxmath wrap to 3.1.9
-   d3d11: meson: Disable library build if DirectXMath header was not found
-   dwrite: Fix crash on device update
-   GstPlay: Update video_snapshot to support playbin3
-   jpegparse: avi1 tag can be progressive
-   jpegparse: turn some bus warnings into object ones
-   qsvdecoder: Release too old frames
-   ristsrc: Only free caps if needed
-   va: av1enc: Correct the reference number and improve the reference setting
-   va: {vp9, av1}enc: Avoid reopen encoder or renegotiate
-   videoparsers: Demote CC warning message
-   vkbufferpool: correct usage flags type
-   vkh26xdec: a couple decoding fixes
-   vtdec: Fix caps criticals during negotiation
-   wpe: avoid crash with G_DEBUG=fatal_criticals and static build
-   Sink missing floating references

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   aws: use fixed BehaviorVersion
-   aws: improve error message logs
-   fmp4: Update to dash-mpd 0.16
-   fmp4mux: Require gstreamer-pbutils 1.20 for the examples
-   onvifmetadataparse: Reset state in PAUSED->READY after pad deactivation, fixing occasional deadlock on shutdown
-   reqwest: Update to reqwest 0.12
-   webrtcsink: set perfect-timestamp=true on audio encoders
-   webrtcsink: improve panic message on unexpected caps during discovery
-   webrtchttp: Update to reqwest 0.12
-   webrtc: fix inconsistencies in documentation of object names
-   Fix clippy warnings after upgrade to Rust 1.77

gst-libav

-   avviddec: Fix AVPacket leak

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges: frame-composition-meta: Stop using keyword ‘operator’ for field in C++

gst-validate + gst-integration-testsuites

-   No changes

gst-examples

-   webrtc examples: set perfect-timestamp=true on opusenc for better Chrome interoperability

Development build environment

-   flac: Add subproject wrap and allow falling back to it in the flac plugin
-   libnice: bump subproject wrap to v0.1.22 (needed for ICE consent freshness support in gstwebrtc)

Cerbero build tool and packaging changes in 1.24.2

-   glib: Block futex_time64 usage on Android API level < 30
-   libvpx: Fix build with Python 3.8
-   libvpx: Fix errors with avx* instruction set detection for x86* builds and MSVC
-   openjpeg: Update to 2.5.2
-   directxmath: Update to 3.1.9
-   gst-plugins-rs: Fix superstripping for ELF breaking all plugins
-   Rust-based plugin initialization hangs on Android with GStreamer 1.24.0

Contributors to 1.24.2

Alexander Slobodeniuk, Arnaud Vrac, Chao Guo, Chris Spencer, Daniel Morin, Edward Hervey, Elizabeth Figura, Elliot Chen, eri,
François Laignel, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt, Jochen Henneberg, L. E. Segovia, Martin
Nordholts, Matthew Waters, Nicolas Dufresne, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Robert Guziolowski, Robert
Mader, Ruben Gonzalez, Sebastian Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim Blechmann, Tim-Philipp Müller,
Víctor Manuel Jáquez Leal, Wojciech Kapsa, Xavier Claessens,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.2

-   List of Merge Requests applied in 1.24.2
-   List of Issues fixed in 1.24.2

1.24.3

The third 1.24 bug-fix release (1.24.3) was released on 30 April 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.3

-   EXIF image tag parsing security fixes
-   Subtitle handling improvements in parsebin
-   Fix issues with HLS streams that contain VTT subtitles
-   Qt6 QML sink re-render and re-sizing fixes
-   unixfd ipc plugin timestamp and segment handling fixes
-   vah264enc, vah265enc: Do not touch the PTS of the output frame
-   vah264dec and vapostproc fixes and improvements
-   v4l2: multiple fixes and improvements, incl. for mediatek JPEG decoder and v4l2 loopback
-   v4l2: fix hang after seek with some v4l2 decoders
-   Wayland sink fixes
-   ximagesink: fix regression on RPi/aarch64
-   fmp4mux, mp4mux gained FLAC audio support
-   D3D11, D3D12: reliablity improvements and memory leak fixes
-   Media Foundation device provider fixes
-   GTK4 paintable sink improvements including support for directly importing dmabufs with GTK 4.14
-   WebRTC sink/source fixes and improvements
-   AWS s3sink, s3src, s3hlssink now support path-style addressing
-   MPEG-TS demuxer fixes
-   Python bindings fixes
-   various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   ptp: Silence Rust compiler warning about some unused trait methods

gst-plugins-base

-   EXIF image tag parsing security fixes
-   glcolorconvert: remove some dead code
-   parsebin: Ensure non-time subtitle streams get “parsed”
-   playbin3: Handle combiner update in case of errors
-   ximagesink: initialize mask for XISelectEvents

gst-plugins-good

-   adaptivedemux2: Playback hangs with VTT fragments
-   adaptivedemux2: Avoid double usage of parsebin
-   pulsedeviceprovider: Add compare_device_type_name function and missing lock
-   qml6glsink: Notify that the returned QSGNode node has changes
-   qml6glsink: video content resizes to new item size
-   qtdemux: fix wrong full_range offset when parsing colr box
-   soup: fix thread name
-   v4l2: add multiplane y42b (yuv422m) support (for mediatek v4l2 jpeg decoder)
-   v4l2: bufferpool: Drop writable check on output pool process
-   v4l2: bufferpool: Ensure freshly created buffers are not marked as queued, fixing issues with v4l2sink on a v4l2loopback
    device
-   v4l2: bufferpool: queue back the buffer flagged LAST but empty, fixes hangs after seek with some decoders
-   v4l2: silence valgrind warning
-   vpx: Include vpx error details in errors and warnings

gst-plugins-bad

-   d3d11device: protect device_lock vs device_new
-   d3d11decoder, d3d12decoder: Fix potential use after free
-   d3d11videosink: Fix rendering on keyed mutex enabled handle
-   d3d12decoder: Fix d3d12 resource copy
-   d3d12encoder: Fix buffer pool leak
-   d3d12videosink: HWND event handling related fixes
-   d3d12vp9dec: Fix Intel GPU crash occurred when decoding VP9 SVC
-   dvbsubenc: fixed some memory leaks and a crash
-   GstPlay: fix read duration failure issue for some type rtsp streams which have valid duration
-   mediafoundation: Fix device enumeration
-   mediafoundation: Fix infinite loop in device provider
-   tests: fix possible libscpp build failure in gst-plugins-bad
-   tsdemux, tsparse: Fix Program equality check
-   tsdemux: Disable smart program update
-   unixfdsink: Take segment into account when converting timestamps
-   va: videoformat: use video library to get DRM fourcc
-   va: radeonsi: DRM RGB formats doesn’t look correctly mapped to VA formats
-   vah264enc, vah265enc: Do not touch the PTS of output frame
-   vaav1enc: Change the alignment of output to “tu”
-   vaallocator: disable derived all together for Mesa <23.3
-   waylandsink: free staged buffer when do gst_wl_window_finalize
-   wlwindow: clear configure mutex and cond when finalize
-   waylandsink: config buffer pool with query size when propose_allocation
-   v4l2codecs: Don’t unref allocation query caps

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

Fixed:

-   hrtfrender: Use a bitmask instead of an int in the caps for the channel-mask
-   rtpgccbwe: Don’t log an error when pushing a buffer list fails while stopping
-   webrtcsink: Don’t panic in bitrate handling with unsupported encoders
-   webrtcsink: Don’t panic if unsupported input caps are used
-   webrtcsrc: Allow a None producer-id in request-encoded-filter signal

Added:

-   aws: New property to support path-style addressing
-   fmp4mux / mp4mux: Support FLAC inside (f)MP4
-   gtk4: Support directly importing dmabufs with GTK 4.14
-   gtk4: Add force-aspect-ratio property similar to other video sinks

gst-libav

-   libav: guard some recently dropped APIs

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   Fix Python library name fetching and library searching on Windows
-   Don’t link to python for the gi overrides module

gst-editing-services

-   ges-launcher: Fix for forcing container profiles

gst-devtools, gst-validate + gst-integration-testsuites

-   debug-viewer: Fix plugin loading machinery
-   validate/flvdemux: Stop spamming audio/video on test

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.3

-   No changes

Contributors to 1.24.3

Alexander Slobodeniuk, Edward Hervey, Elliot Chen, F. Duncanh, François Laignel, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt,
Jimmy Ohn, Maksym Khomenko, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Philipp Zabel, Qian Hu (胡骞),
Sanchayan Maity, Sebastian Dröge, Seungha Yang, Simonas Kazlauskas, Taruntej Kanakamalla, Tim Blechmann, Tim-Philipp Müller, U.
Artie Eoff, Víctor Manuel Jáquez Leal, William Wedler, Xavier Claessens,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.3

-   List of Merge Requests applied in 1.24.3
-   List of Issues fixed in 1.24.3

1.24.4

The fourth 1.24 bug-fix release (1.24.4) was released on 29 May 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.4

-   audioconvert: support more than 64 audio channels
-   avvidec: fix dropped frames when doing multi-threaded decoding of I-frame codecs such as DV Video
-   mpegtsmux: Correctly time out in live pipelines, esp. for sparse streams like KLV and DVB subtitles
-   vtdec deadlock fixes on shutdown and format/resolution changes (as might happen with e.g. HLS/DASH)
-   fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers, and add language from tags
-   gtk4paintablesink improvements: fullscreen mode and gst-play-1.0 support
-   webrtcsink: add support for insecure TLS and improve error handling and VP9 handling
-   v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones, fixes issues with playbin3
-   vah264enc, vah265enc: timestamp handling fixes; generate IDR frames on force-keyunit-requests, not I frames
-   Visualizer plugins fixes
-   Avoid using private APIs on iOS
-   Various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   clock: Fix 32 bit assertions in GST_TIME_TO_TIMEVAL and GST_TIME_TO_TIMESPEC
-   systemclock: fix usage of __STDC_NO_ATOMICS__
-   filesrc: Don’t abort on _get_osfhandle() on Windows
-   tests: Avoid using “bool” for the variable name
-   Various Solaris / Illumos fixes
-   parse: Don’t assume that child proxy child objects are GstObjects

gst-plugins-base

-   audioconvert: Support converting >64 channels
-   decodebin3: Fix caps and stream leaks
-   playbin(3), streamsynchronizer: Fix deadlock when streams have been flushed before others start
-   videotestsrc: fix race condition when clearing cached buffer
-   Fix visualization plugins
-   GstDiscoverer hangs when processing media file containing mebx on MacOS
-   glmixer: Add GL_SYNC_META option to buffer pool
-   typefinding: Fix ID_ODD_SIZE handling regression in WavPack typefinder

gst-plugins-good

-   osxaudio: Avoid using private APIs on iOS
-   qtdemux: unit test fixes for 32-bit platforms

gst-plugins-bad

-   cudamemory: Fix offset of subsampled planar formats
-   d3d11: Revert “d3d11device: protect device_lock vs device_new
-   d3dshader: Fix gamma and primaries conversion pixel shader
-   dtlsconnection: Fix overflow in timeout calculation on systems with 32 bit time_t
-   GstPlay: Initialize debug category and error quark in class_init
-   kmssink: Do not close the DRM prime handle twice
-   mpegtsmux: Correctly time out and mux anyway in live pipelines
-   nvcodec: Accept progressive-high profiles for h264
-   nvencoder: Fix maximum QP value setting
-   qsvh264dec, qsvh265dec: Fix nalu leaks
-   v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones
-   vah264enc, vah265enc: Let FORCE_KEYFRAME be IDR frame rather than just I frame
-   vah264enc, vah265enc: Set DTS offset before PTS
-   vkh26xdec: Fix stop memory leak
-   vtdec: Fix deadlock when negotiating format change
-   vtdec: Fix PAUSED->READY deadlock when output loop is running
-   wayland: Use wl_display_create_queue_with_name
-   webrtc: request-aux-sender, only sink floating refs
-   webrtcbin: Allow session level setup attribute in SDP

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers
-   fmp4mux, isomp4mux: Add language from tags
-   gtk4paintablesink: Also create own window for gst-play-1.0
-   gtk4paintablesink: Add GST_GTK4_WINDOW_FULLSCREEN environment variable to fullscreen window for testing with
    e.g. gst-launch-1.0
-   gtk4: Fix plugin description and update python examples
-   rtpgccbwe: Log effective bitrate in more places, and log delay and loss target bitrates separately
-   webrtcsink: Improve error when no encoder was found or RTP plugins were missing
-   webrtcsink: Add VP9 parser after the encoder for VP9 too
-   webrtc: Add support for insecure TLS connections

gst-libav

-   avvidec: Fix dropping wrong “ghost” frames - fixing multi-threaded decoding of I-frame codecs such as DV Video

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges-pipeline: Configure encodebin before linking

gst-devtools, gst-validate + gst-integration-testsuites

-   No changes

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.4

-   Add Fedora 40 support
-   srt: bump version to 1.5.3
-   pango: Fix leaks on Windows (textoverlay plugins)
-   windows runtime installer has empty qt6 msm
-   WiX: assorted fixes

Contributors to 1.24.4

Alexander Slobodeniuk, Bill Nottingham, Brad Reitmeyer, Chris Del Guercio, Daniel Stone, Edward Hervey, Emil Pettersson, He
Junyan, Jordan Petridis, Joshua Breeden, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan,
Philippe Normand, Piotr Brzeziński, Rafael Carício, Robert Ayrapetyan, Robert Mader, Sebastian Dröge, Seungha Yang, Shengqi Yu,
Stéphane Cerveau, Tim-Philipp Müller,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.4

-   List of Merge Requests applied in 1.24.4
-   List of Issues fixed in 1.24.4

1.24.5

The fifth 1.24 bug-fix release (1.24.5) was released on 20 June 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.5

-   webrtcsink: Support for AV1 via nvav1enc, av1enc or rav1enc encoders
-   AV1 RTP payloader/depayloader fixes to work correctly with Chrome and Pion WebRTC
-   av1parse, av1dec error handling/robustness improvements
-   av1enc: Handle force-keyunit events properly for WebRTC
-   decodebin3: selection and collection handling improvements
-   hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates
-   qml6glsink: fix RGB format support
-   rtspsrc: more control URL handling fixes
-   v4l2src: Interpret V4L2 report of sync loss as video signal loss
-   d3d12 encoder, memory and videosink fixes
-   vtdec: more robust error handling, fix regression
-   ndi: support for NDI SDK v6
-   Various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   promise: Don’t use g_return_* for internal checks
-   debug: Add missing gst_debug_log_id_literal() dummy with gst_debug=false
-   ptp-helper: Add GNU/Hurd support

gst-plugins-base

-   uridecodebin3: Don’t hold PLAY_ITEMS lock when activating them
-   decodebin3: Always ensure we end up with parsebin or identity
-   decodebin3: Properly support changing input collections
-   decodebin3: Avoid usage of parsebin even more
-   decodebin3: Fix dealing with input without caps
-   video-info: Don’t crash in gst_video_info_is_equal() if one videoinfo is zero-initialized

gst-plugins-good

-   flacparse: fix buffer overflow
-   hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates
-   qml6glsink: fix RGB format support
-   rtpdtmfdepay: fix caps negotiation with audioconvert
-   rtpdtmfsrc: fix leak when shutting down mid-event
-   rtspsrc: fix invalid seqnum assertions
-   rtspsrc: Various control URL handling fixes
-   v4l2src: Interpret V4L2 report of sync loss as video signal loss

gst-plugins-bad

-   av1parse: Do not return error when expectedFrameId mismatch
-   av1dec: Don’t treat decoding errors as fatal and print more error details
-   av1enc: Handle force-keyunit events properly by requesting keyframes
-   codectimestamper: never set DTS to NONE
-   d3d12encoder: Do not print error log for not-supported feature
-   d3d12memory: Fix staging buffer alignment
-   d3d12videosink: Disconnect window signal handler on dispose as intended
-   dtlssrtpenc: Don’t crash if no pad name is provided when requesting a new pad
-   glcolorconvert: update existing sync meta if outbuf has one
-   pcapparse: Parsing code assumes unaligned memory accesses are OK
-   pcapparse: Avoid unaligned memory access
-   tsdemux: Fix maximum PCR/DTS values
-   vtdec: Improve error handling in edge cases
-   vtdec, qtdemux: regression in 1.24.3 - internal data stream error
-   uvcgadget: Use g_path_get_basename instead of libc basename

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   gtk4: update flatpak integration code
-   ndi: Add support for loading NDI SDK v6
-   reqwesthttpsrc: Fix race condition when unlocking
-   rtp: Don’t restrict payload types for payloaders
-   rtp: av1pay: Correctly use N flag for marking keyframes
-   rtp: av1depay: Parse internal size fields of OBUs and handle them
-   webrtcsink: Refactor value retrieval to avoid lock poisoning
-   webrtcsink: Add support for AV1
-   webrtc: Update to async-tungstenite 0.26
-   Fix various new clippy 1.79 warnings
-   meson: Fix various issues in dependency management, feature detection, some regressions, and add logging

gst-libav

-   No changes

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   No changes

gst-devtools, gst-validate + gst-integration-testsuites

-   No changes

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.5

-   osxrelocator: Fix RPATHs in deeply nested libraries

Contributors to 1.24.5

Angelo Verlain, Chris Del Guercio, Corentin Damman, Edward Hervey, Francisco Javier Velázquez-García, He Junyan, Jakub Adam,
Jakub Vaněk, Khem Raj, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Nirbheek Chauhan, Piotr Brzeziński, Samuel
Thibault, Sebastian Dröge, Sergey Krivohatskiy, Seungha Yang, Tim-Philipp Müller, Zach van Rijn,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.5

-   List of Merge Requests applied in 1.24.5
-   List of Issues fixed in 1.24.5

1.24.6

The sixth 1.24 bug-fix release (1.24.6) was released on 29 July 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.6

-   Fix compatibility with FFmpeg 7.0
-   qmlglsink: Fix failure to display content on recent Android devices
-   adaptivedemux: Fix handling of closed caption streams
-   cuda: Fix runtime compiler loading with old CUDA tookit
-   decodebin3 stream selection handling fixes
-   d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output
-   d3d12converter: Make gamma remap work as intended
-   h264decoder: Update output frame duration for interlaced video when second field frame is discarded
-   macOS audio device provider now listens to audio devices being added/removed at runtime
-   Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, livesync and webrtcsink fixes
-   videoaggregator: preserve features in non-alpha caps for subclasses with non-system memory sink caps
-   vtenc: Fix redistribute latency spam
-   v4l2: fixes for complex video formats
-   va: Fix strides when importing DMABUFs, dmabuf handle leaks, and blocklist unmaintained Intel i965 driver for encoding
-   waylandsink: Fix surface cropping for rotated streams
-   webrtcdsp: Enable multi_channel processing to fix handling of stereo streams
-   Various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   downloadbuffer: fix push mode
-   queue: queue2: multiqueue: Don’t work with segment.position if buffers have no timestamps
-   gst-inspect-1.0: Fix leak of plugin/feature

gst-plugins-base

-   decodebin3: Fix detection of selection done
-   glvideomixer: Fix critical when setting start-time-selection
-   parsebin: accept-caps handling for elements with unusual sink pad names
-   subparse: Don’t use jit for regular expressions when running in valgrind
-   subparse: put valgrind header availability define into config.h for subparse
-   videoaggregator: preserve features in non-alpha caps
-   videoscale: correct classification error
-   meson: Fix invalid include flag in uninstalled gl pc file
-   Fix various memory leaks

gst-plugins-good

-   adaptivedemux: Fix handling closed caption streams
-   qml/glsink: also support GLES2 needing shader ‘precision’ directives
-   v4l2object: use v4l2 reported width for padded_width when complex video formats
-   v4l2: meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0

gst-plugins-bad

-   svtav1enc: Fix segfault when flushing
-   avfdeviceprovider: Fix debug category initialization
-   osxaudiodeviceprovider: Listen for audio devices being added/removed
-   avtp: Fixed Linux/Alpine 3.20 build
-   cuda: Fix runtime compiler loading with old CUDA tookit
-   d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output
-   d3d11converter: Fix runtime compiled shader code
-   d3d12converter: Make gamma remap work as intended
-   h264decoder: Update output frame duration when second field frame is discarded
-   isac: Work around upstream having no shared library support for MSVC
-   lc3: remove bitstream comparison in the tests
-   qroverlay: redraw overlay when caps changes
-   qsv: Fix critical warnings
-   rtmp2: guard against calling gst_amf_node_get_type() with NULL
-   srtsrc: fix case fallthrough of authentication param
-   va: Blocklist unmaintained i965 driver for encoding
-   va: Fix strides when importing DMABUFs
-   va: Fix dmabuf handle leaks
-   vadisplay: fix minor version check
-   vkh265dec: Fix H.264 ref in logs
-   vulkan: fix wrong stages or access in barriers
-   vtenc: Fix redistribute latency spam
-   waylandsink: Fix surface cropping for rotated streams
-   webrtcdsp: Enable multi_channel processing

gst-plugins-ugly

-   asfdemux: Be more lenient towards malformed header, fixes playback of files written by VLC

GStreamer Rust plugins

-   audioloudnorm: Fix limiter buffer index wraparound off-by-one for the last buffer
-   aws: s3hlssink: Do not call abort before finishing uploads
-   gtk4paintablesink: Support RGBx formats in SW paths
-   gtk4paintablesink: default to force-aspect-ratio=false for Paintable
-   livesync: Use the actual output buffer duration of gap filler buffers
-   livesync: Allow queueing up to latency buffers, also sync on the first buffer and add sync property
-   webrtcsink: fix property types for rav1enc AV1 encoder

gst-libav

-   Fix compatibility with ffmpeg 7
-   avauddec: Fix crash on stop()
-   avmux: Fix crash when muxer doesn’t get codecid

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges: Various leak fixes

gst-devtools, gst-validate + gst-integration-testsuites

-   validate: Remove G_REGEX_OPTIMIZE usage, helps avoid valgrind issues

gst-examples

-   No changes

Development build environment

-   libgudev wrap: add fallback uri
-   liblc3 wrap: update to v1.1.1

Cerbero build tool and packaging changes in 1.24.6

-   meson: Backport fix for Glib including a GCC-only flag in the pkg-config file
-   libsoup: Workaround build error with GCC 14
-   libltc: Fix Windows build
-   webrtc-audio-processing: Fix MinGW build
-   libvpx: Also build a shared lib on macOS
-   glib: Fix Windows build
-   osxrelocator: Fix framework entrypoints being unable to load dylibs
-   gobject-introspection, recipe: Fix more fallout from the Meson dylib ID fixes
-   cargo-c.recipe: Ensure that we can change the id and rpath

Contributors to 1.24.6

Chris Spoelstra, Edward Hervey, François Laignel, Guillaume Desmottes, Jakub Adam, Jan Schmidt, Jordan Petridis, L. E. Segovia,
Loïc Yhuel, Matthew Waters, Nirbheek Chauhan, Piotr Brzeziński, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge,
Sebastian Gross, Seungha Yang, Shengqi Yu, Taruntej Kanakamalla, Tim-Philipp Müller, tomaszmi, Víctor Manuel Jáquez Leal,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.6

-   List of Merge Requests applied in 1.24.6
-   List of Issues fixed in 1.24.6

1.24.7

The seventh 1.24 bug-fix release (1.24.7) was released on 21 August 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.7

-   Fix APE and Musepack audio file and GIF playback with FFmpeg 7.0
-   playbin3: Fix potential deadlock with multiple playbin3s with glimagesink used in parallel
-   qt6: various qmlgl6src and qmlgl6sink fixes and improvements
-   rtspsrc: expose property to force usage of non-compliant setup URLs for RTSP servers where the automatic fallback doesn’t
    work
-   urisourcebin: gapless playback and program switching fixes
-   v4l2: various fixes
-   va: Fix potential deadlock with multiple va elements used in parallel
-   meson: option to disable gst-full for static-library build configurations that do not need this
-   cerbero: libvpx updated to 1.14.1; map 2022Server to Windows11; disable rust variant on Linux if binutils is too old
-   Various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   bin: Don’t keep the object lock while setting a GstContext when handling NEED_CONTEXT
-   core: Log pad name, not just the pointer

gst-plugins-base

-   pbutils: descriptions: use subsampling factor to get YUV subsampling
-   rtspconnection: Handle invalid argument properly
-   urisourcebin: Actually drop EOS on old-school pad switch
-   urisourcebin: Don’t hold lock when emitting about-to-finish
-   gst-launch deadlock with two playbin3s
-   xvimagesink: Fix crash in pool on error

gst-plugins-good

-   qmlgl6src: Fix crash when use-default-fbo is not set
-   qt6glwindow: Fallback to GL_RGB on CopyTexImage2D error, fixing usage with eglfs backend
-   qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits
-   qt6: glwindow: Don’t leak previously rendered buffer
-   rtspsrc: expose property for forcing usage of non-compliant URLs
-   v4l2object: fix ARIB_STD_B67 colorimetry unmatch issue
-   v4l2: Fix colorimetry mismatch for encoded format with RGB color-matrix

gst-plugins-bad

-   aom: av1enc: restrict allowed input width and height
-   h264parse: bypass check for length_size_minus_one
-   h265parse: Reject FD received before SPS
-   msdk: replace strcmp with g_strcmp0
-   msdkvc1dec crashes (segfault)
-   rsvgoverlay: add debug category
-   va: don’t use GST_ELEMENT_WARNING in set_context() vmethod to fix potential deadlock
-   va: deadlock when playing two videos at once
-   webrtc: Add missing G_BEGIN/END_DECLS in header for C++
-   wpe: initialize threading.ready before reading it

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   gtk4: Move the dmabuf cfg to the correct bracket level

gst-libav

-   avdemux: Fix deadlock with FFmpeg 7.x when serialized events are received from upstream while opening, such as e.g. APE
    files with tags
-   libav: return EOF when stream is out of data
-   avdemux: Never return 0 from read function, which would lead to infinite loops

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   vaapi: Fix sps_max_dec_pic_buffering_minus1 value in h265 decoder

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   nlecomposition: Don’t leak QoS events

gst-devtools, gst-validate + gst-integration-testsuites

-   validate: Fix copying of action name

gst-examples

-   No changes

Development build environment

-   Add a meson option to disable gst-full for static-library build configurations that do not need this

Cerbero build tool and packaging changes in 1.24.7

-   Disable rust variant on Linux if binutils is too old
-   Added 2022Server to the Windows platform distro map as Windows11
-   libvpx: Update to 1.14.1

Contributors to 1.24.7

David Rosca, Edward Hervey, Guillaume Desmottes, Hou Qi, Jan Schmidt, Jesper Jensen, Jordan Petridis, Jordan Yelloz, L. E.
Segovia, Lyra McMillan, Mathieu Duponchelle, Max Romanov, Nicolas Dufresne, Nirbheek Chauhan, Qian Hu (胡骞), Sebastian Dröge,
Tim-Philipp Müller, Víctor Manuel Jáquez Leal,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.7

-   List of Merge Requests applied in 1.24.7
-   List of Issues fixed in 1.24.7

1.24.8

The eigth 1.24 bug-fix release (1.24.8) was released on 19 September 2024.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.8

-   decodebin3: collection handling fixes
-   encodebin: Fix pad removal (and smart rendering in gst-editing-services)
-   glimagesink: Fix cannot resize viewport when video size changed in caps
-   matroskamux, webmmux: fix firefox compatibility issue with Opus audio streams
-   mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out
-   splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live
-   video: QoS event handling improvements
-   voamrwbenc: fix list of bitrates
-   vtenc: Restart encoding session when certain errors are detected
-   wayland: Fix ABI break in WL context type name
-   webrtcbin: Prevent crash when attempting to set answer on invalid SDP
-   cerbero: ship vp8/vp9 software encoders again, which went missing in 1.24.7; ship transcode plugin
-   Various bug fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   clock: Fix unchecked overflows in linear regression code
-   meta: Add missing include of gststructure.h
-   pad: Check data NULL-ness when probes are stopped
-   aggregator: Immediately return NONE from simple_get_next_time() on non-TIME segments

gst-plugins-base

-   decodebin3: Fix collection identity check
-   encodebin: Fix pad removal
-   glimagesink: Fix cannot resize viewport when video size changed in caps
-   video: Don’t overshoot QoS earliest time by a factor of 2
-   meson: gst-play: link to libm

gst-plugins-good

-   jackaudiosrc: actually use the queried ports from JACK
-   matroskamux: Include end padding in the block duration for Opus streams, fixing firefox compatibility
-   osxaudio: Avoid dangling pointer on shutdown
-   splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live
-   v4l2bufferpool: actually queue back the empty buffer flagged LAST
-   v4l2videoenc: unref buffer pool after usage properly
-   v4l2: encoder: Add dynamic framerate support

gst-plugins-bad

-   GstPlay: Name the different bus
-   GstPlay: check whether stream is seekable before seeking when state change
-   GstPlayer: Check GstPlayerSignalDispatcher type
-   mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out
-   mpegtsmux: Fix refcounting issue when selecting the best pad
-   uvcsink: fix caps event handling
-   v4l2codecs: h265: Minimize memory allocation
-   voamrwbenc: fix list of bitrates
-   vtenc: Restart encoding session when certain errors are detected
-   wayland: Fix ABI break in WL context type name
-   webrtcbin: Prevent crash when attempting to set answer on invalid SDP
-   wpe: fix gst-launch example

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   No changes

gst-libav

-   No changes

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   discoverer-manager: Fix race leading to assertion when stopping
-   structured-interface: Fix memory leak of invalid fields GList

gst-devtools, gst-validate + gst-integration-testsuites

-   pad-monitor: Fix remaining pad function data handling
-   pad-monitor: Fix pad function data properly

gst-examples

-   No changes

Development build environment

-   meson: Update openjpeg wrap to 2.5.2, fixes a warning

Cerbero build tool and packaging changes in 1.24.8

-   No vp8 / vp9 encoders packaged (regression)
-   libvpx: Fix codec detection to fix vp8enc/vp9enc elements not being shipped
-   gst-plugins-bad: Add missing transcode plugin

Contributors to 1.24.8

Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Carlos Bentzen, Chao Guo, Edward Hervey, Francis Quiers, Guillaume
Desmottes, Hou Qi, Jan Schmidt,, L. E. Segovia, Michael Tretter, Nicolas Dufresne, Nirbheek Chauhan, Peter Kjellerstedt,
Philippe Normand, Piotr Brzeziński, Randy Li (ayaka), Sebastian Dröge, Thibault Saunier, Tim-Philipp Müller, Wim Taymans,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.8

-   List of Merge Requests applied in 1.24.8
-   List of Issues fixed in 1.24.8

1.24.9

The ninth 1.24 bug-fix release (1.24.9) was released on 30 October 2024.

This release only contains bugfixes and a security fix and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.9

-   gst-rtsp-server security fix
-   GstAggregator start time selection and latency query fixes for force-live mode
-   audioconvert: fix dynamic handling of mix matrix, and accept custom upstream event for setting one
-   encodebin: fix parser selection for encoders that support multiple codecs
-   flvmux improvments for pipelines where timestamps don’t start at 0
-   glcontext: egl: Unrestrict the support base DRM formats
-   kms: Add IMX-DCSS auto-detection in sink and fix stride with planar formats in allocator
-   macOS main application event loop fixes
-   mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true
-   playbin3, decodebin3, parsebin, urisourcebin: fix races, and improve stability and stream-collection handling
-   rtpmanager: fix early RTCP SR generation for sparse streams like metadata
-   qml6glsrc: Reduce capture delay
-   qtdemux: fix parsing of rotation matrix with 180 degree rotation
-   rtpav1depay: added wait-for-keyframe and request-keyframe properties
-   srt: make work with newer libsrt versions and don’t re-connect on authentication failure
-   v4l2 fixes and improvement
-   webrtcsink, webrtcbin and whepsrc fixes
-   cerbero: fix Python 3.13 compatibility, g-i with newer setuptools, bootstrap on Arch Linux; iOS build fixes
-   Ship qroverlay plugin in binary packages - Various bug fixes, memory leak fixes, and other stability and reliability
    improvements
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   aggregator: fix start time selection first with force-live
-   aggregator: fix live query when force-live is TRUE
-   parse-launch: Make sure children are bins before recursing in
-   macos: Fix race conditions in cocoa/application main event loop
-   multiqueue: Do not unref the query we get in pad->query

gst-plugins-base

-   audioconvert: fix dynamic handling of mix matrix, accept custom upstream event for setting one
-   playback: Fix a variety of decodebin3/parsebin/urisourcebin races
-   playbin3: prevent crashing trying to play a corrupted mp4 file (WARNING : HIGH PITCHED CORRUPTED SOUND)
-   urisourcebin: Ensure all stream-start are handled
-   urisourcebin: Allow more cases for posting stream-collection
-   decodebin3: Make update/posting of collection messages atomic
-   decodebin3: send selected stream message as long as not all the tracks can’t select decoders
-   urisourcebin/parsebin: Improve collection creation and handling
-   encodebasebin: Miscellaneous fixes
-   allocators: drmdumb: Fix bpp value for P010
-   gldownload: use gst_gl_sync_meta_wait_cpu()
-   Revert “meson: Fix invalid include flag in uninstalled gl pc file”
-   gl: Fix configure error when libdrm is a subproject
-   glcontext: egl: Unrestrict the support base DRM formats
-   exiftag: Check the result of gst_date_time_new_local_time(), fixes criticals with malformed EXIF tags

gst-plugins-good

-   flvmux: Use first running time on the initial header instead of 0
-   rtpmanager: skip RTPSources which are not ready in the RTCP generation
-   rtppassthroughpay: Fix reading clock-rate and payload type from caps
-   qml6glsrc: Reduce capture delay
-   qtdemux: fix parsing of matrix with 180 rotation
-   qtdemux: Check fourcc of a second CEA608 atom instead of assuming it’s cdt2
-   qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes
-   twcc: Handle wrapping of reference time
-   v4l2object: append non colorimetry structure to probed caps
-   v4l2: Various fixes and improvement

gst-plugins-bad

-   avfdeviceprovider: Fix leak from the GstCaps
-   codecparsers: add debug categories to bitwriters
-   codectimestamper: Fix gint wraparound in pts_compare_func
-   dvxa: Explicitly use cpp_std=c++11
-   GstPlay: message parsing and documentation improvements
-   h26xbitwriter: false have_space if aligning fails on aud
-   kmsallocator: fix stride with planar formats
-   kmssink: Add IMX-DCSS auto-detection
-   mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true
-   rtmp2sink: Initialize base_ts / last_ts with the actual first observed timestamp
-   scenechange: fix memory leak
-   srtsink: Register SRT listen callback before binding socket
-   srt: Don’t attempt to reconnect on authentication failures
-   tests: va: fix vapostproc test for DMABuf
-   tests: lc3: Allocate the same size for the buffer and the data
-   va: Fix libdrm include, plus meson and wrap changes
-   vaav1enc: Do not enable palette mode by default
-   vp8decoder: Fix resolution change handling
-   vtdec: add support for level 6 6.1 and 6.2
-   wayland: Add NV15 support
-   webrtcbin: Clean up bin elements when datachannel is removed

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   Build: turn lto off for dev profile for faster dev builds
-   fmp4 hls_live example: Don’t set header-update-mode=update, no need to update the header in live mode
-   gtk4paintablesink: Don’t check for a GL context when filtering dmabuf caps
-   livesync: Log latency query results when handling latency query too
-   onvifmetadatapay: Set output caps earlier, so upstream can send gap events earlier
-   rtpav1depay: Add wait-for-keyframe and request-keyframe properties
-   spotify: tweak dependencies
-   transcriberbin: fix panic during gst-inspect-1.0 -u
-   webrtcsink: fix segment format mismatch with remote offer
-   webrtcsink: fix assertions when finalizing
-   webrtcsink: Fix typo in “turn-servers” property description
-   whepsrc: Fix incorrect default caps

gst-libav

-   avviddec: Unlock video decoder stream lock temporarily while finishing frames

gst-rtsp-server

-   rtsp-server: Remove pointless assertions that can happen if client provides invalid rates (security fix)

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges: Fix name of GESFrameCompositionMeta API type (which caused gobject-introspection failures at build time)

gst-devtools, gst-validate + gst-integration-testsuites

-   validate: Ignore flaky dash playbin3 issue
-   validate: Blacklist more netsim tests

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.9

-   Fix Python 3.13 compatibility
-   gobject-introspection: Import patch to build against newer setuptools
-   Switch from wget to curl on Fedora 40 and newer
-   bootstrap: Add missing dependencies on Arch Linux
-   harfbuzz: Add CXXFLAGS to fix broken build on iOS
-   openssl.recipe: Stop using non-existent domain in primary tarball url
-   gst-plugins-bad: ship qroverlay plugin

Contributors to 1.24.9

Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Corentin Damman, Dave Lucia, Edward Hervey, Elliot Chen, eri,
Francisco Javier Velázquez-García, Guillaume Desmottes, He Junyan, Hugues Fruchet, Jakub Adam, James Cowgill, Jan Alexander
Steffens (heftig), Jan Schmidt, Johan Sternerup, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Nick Steel, Nicolas
Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Peter Stensson, Philippe Normand, Piotr Brzeziński, Sanchayan Maity,
Sebastian Dröge, Shengqi Yu, Stéphane Cerveau, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal,
Weijian Pan, Xavier Claessens,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.9

-   List of Merge Requests applied in 1.24.9
-   List of Issues fixed in 1.24.9

1.24.10

The tenth 1.24 bug-fix release (1.24.10) was released on 03 December 2024.

This release only contains bugfixes and security fixes. It should be safe to update from 1.24.x and we would recommend you
update at your earliest convenience.

Highlighted bugfixes in 1.24.10

-   More than 40 security fixes across a wide range of elements following an audit by the GitHub Security Lab, including the
    MP4, Matroska, Ogg and WAV demuxers, subtitle parsers, image decoders, audio decoders and the id3v2 tag parser.
-   avviddec: Fix regression that could trigger assertions about width/height mismatches
-   appsink and appsrc fixes
-   closed caption handling fixes
-   decodebin3 and urisourcebin fixes
-   glupload: dmabuf: Fix emulated tiled import
-   level: fix LevelMeta values outside of the stated range
-   mpegtsmux, flvmux: fix potential busy looping with high cpu usage in live mode
-   pipeline dot file graph generation improvements
-   qt(6): fix criticals with multiple qml(6)gl{src,sink}
-   rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode to enable clock drift handling
-   splitmuxsrc: reduce number of file descriptors used
-   systemclock: locking order fixes
-   v4l2: fix possible v4l2videodec deadlock on shutdown; 8-bit bayer format fixes
-   x265: Fix build with libx265 version >= 4.1 after masteringDisplayColorVolume API change
-   macOS: fix rendering artifacts in retina displays, plus ptp clock fixes
-   cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements)
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
-   Translation updates

gstreamer

-   allocator: Avoid integer overflow when allocating sysmem and avoid integer overflow in qtdemux theora extension parsing
-   deviceprovider: fix leaking hidden providers
-   gstreamer: prefix debug dot node names to prevent splitting
-   pad: Never push sticky events in response to a FLUSH_STOP
-   systemclock: Fix lock order violation and some cleanup
-   utils: improve gst_util_ceil_log2()
-   ptp: use ip_mreq instead of ip_mreqn for macos
-   tracers: unlock leaks tracer if already tracking

gst-plugins-base

-   appsink: fix timeout logic for gst_app_sink_try_pull_sample()
-   appsrc: Fix use-after-free when making buffer / buffer-lists writable
-   audiostreamalign: Don’t report disconts for every buffer if alignment-threshold is too small
-   decodebin3: Unify collection switching checks
-   discoverer: Don’t print channel layout for more than 64 channels
-   discoverer: Make sure the missing elements details array is NULL-terminated in a thread-safe way
-   discoverer: fix segfault in race condition adding a new uri
-   id3v2: Don’t try parsing extended header if not enough data is available
-   glupload: dmabuf: Fix emulated tiled import
-   gl: cocoa: fix rendering artifacts in retina displays
-   gl: meson: Don’t use libdrm_dep in cc.has_header()
-   oggstream: fix invalid ogg_packet->packet accesses, address invalid writes CVE
-   opusdec: Set at most 64 channels to NONE position
-   playbin: Fix caps leak in get_n_common_capsfeatures()
-   playbin3: ERROR when setting new HLS URI with instant-uri=true
-   sdp: Add debug categories for message and mikey modules
-   ssaparse: Search for closing brace after opening brace
-   splitmuxsrc: Convert part reader to a bin with a non-async bus
-   subparse: Check for NULL return of strchr() when parsing LRC subtitles
-   streamsynchronizer: Only send GAP events out of source pads
-   urisourcebin: Also use event probe for HLS use-cases
-   video-converter: Set TIME segment format on appsrc
-   vorbisdec: Set at most 64 channels to NONE position
-   Translation for gst-plugins-base 1.24.0 not sync-ed with Translation Project
-   Update translations

gst-plugins-good

-   avisubtitle: Fix size checks and avoid overflows when checking sizes
-   flvmux: Don’t time out in live mode if no timestamped next buffer is available
-   gdkpixbufdec: Check if initializing the video info actually succeeded
-   jpegdec: Directly error out on negotiation failures
-   level: Fix integer overflow when filling LevelMeta
-   level: produces level value outside of Stated Range
-   matroskademux: header parsing fixes
-   qtdemux: header and sample table parsing fixes
-   qtdemux: avoid integer overflow in theora extension parsing
-   qt(6)/material: ensure that we always update the context in setBuffer()
-   rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode
-   rtp: Fix precision loss in gst_rtcp_ntp_to_unix()
-   rtpfunnel: Ensure segment events are forwarded after flushs
-   rtpmanager: don’t map READWRITE in twcc header ext
-   rtph264depay, rtph265depay: Fix various OOB reads / NULL pointer dereferences in parameter-set string handling
-   shout2send: Unref event at the end of the event function
-   udpsrc: protect cancellable from unlock/unlock_stop race
-   v4l2object: Fixed incorrect maximum value for int range
-   v4l2object: Remove little endian marker on 8 bit bayer format names
-   v4l2videodec: fix freeze race condition
-   wavparse: Fix various (missing) size checks and other parsing problems

gst-plugins-bad

-   ccconverter: Don’t override in_fps_entry when trying to take output
-   ccutils fixes
-   kmssink: Add mediatek auto-detection
-   mpegtsmux: Don’t time out in live mode if no timestamped next buffer is available (fixes busy loop with high cpu usage)
-   mpegvideoparse: do not set delta unit flag on unknown frame type
-   mxfmux: Fix off-by-one in the month when generating a timestamp for now
-   timecodestamper: Don’t fail the latency query in LTC mode if we have no framerate
-   webrtc: don’t crash on invalid bundle id
-   x265: Allow building with x265-4.1 (after masteringDisplayColorVolume API change)
-   meson: Don’t unconditionally invoke the libsoup subproject for tests

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements)

gst-libav

-   avcodecmap: Use avcodec_get_supported_config() instead of struct fields
-   libav: viddec: provide details if meta has the wrong resolution
-   avviddec: Unlock video decoder stream lock temporarily while finishing frames

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   No changes

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   No changes

gst-devtools, gst-validate + gst-integration-testsuites

-   validate: Fix leaks in ssim components

gst-examples

-   No changes

Development build environment

-   meson: Fix failing libva wrap file build

Cerbero build tool and packaging changes in 1.24.10

-   shell: fix TemporaryDirectory error with the with statement when ZSH
-   ci: update macos CI to 15 Sequoia

Contributors to 1.24.10

Albert Sjolund, Alicia Boya García, Andoni Morales Alastruey, Antonio Morales, Edward Hervey, Guillaume Desmottes, Jan Alexander
Steffens (heftig), Jan Schmidt, Jonas Rebmann, Jordan Petridis, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek
Chauhan, Pablo Sun, Philippe Normand, Robert Rosengren, Ruben Gonzalez, Sebastian Dröge, Seungmin Kim, Stefan Riedmüller,
Stéphane Cerveau, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Tomáš Polomský, Wilhelm Bartel, Xi
Ruoyao,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.10

-   List of Merge Requests applied in 1.24.10
-   List of Issues fixed in 1.24.10

1.24.11

The eleventh 1.24 bug-fix release (1.24.11) was released on 06 January 2025.

This release only contains bugfixes and it should be safe to update from 1.24.x.

Highlighted bugfixes in 1.24.11

-   playback: Fix SSA/ASS subtitles with embedded fonts
-   decklink: add missing video modes and fix 8K video modes
-   matroskamux: spec compliance fixes for audio-only files
-   onnx: disable onnxruntime telemetry
-   qtdemux: Fix base offset update when doing segment seeks
-   srtpdec: Fix a use-after-free issue
-   (uri)decodebin3: Fix stream change scenarios, possible deadlock on shutdown
-   video: fix missing alpha flag in AV12 format description
-   avcodecmap: Add some more channel position mappings
-   cerbero bootstrap fixes for Windows 11
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   No changes

gst-plugins-base

-   appsrc: Decrease log level for item drop
-   gl: raise WARNING instead of ERROR when no connector is connected
-   decodebin3: Free main input even if it is not part of the list of inputs
-   urisourcebin: Avoid deadlock on shutdown
-   urisourcebin: Only rewrite stream-start event once
-   urisourcebin/(uri)decodebin3: Fix stream change scenarios
-   urisourcebin: Reference counting leak
-   playbin3: leak detected with A/V playback and window closed
-   videodecoder: Gracefully handle missing data without prior input segment
-   videodecoder: set decode only flag by decode only buffer
-   video: fix AV12 format lacking the GST_VIDEO_FORMAT_FLAG_ALPHA flag.
-   Fix SSA/ASS subtitles with embedded fonts

gst-plugins-good

-   matroskamux: Fix audio-only stream conditions and consider audio buffers as keyframes when writing out simpleblocks
-   qtdemux: fix accumulated base offset in segment seeks
-   rtppassthroughpay: ensure buffer is writable before mapping writable
-   rtpsession: Fix twcc stats structure leak
-   v4l2: object: Add P010 format
-   v4l2videodec: release decode only frame in input list

gst-plugins-bad

-   decklink: add missing video modes, fix 8K video modes
-   onnx: disable onnxruntime telemetry
-   srtpdec: fix build when libsrtp1 is being used
-   srtpdec: Fix a use-after-free buffer issue
-   va: display: Optimize out some property indirection
-   vp9parse/av1parse: Add video codec tag to the tag list
-   webrtc: Simplify fmtp handling in codec stats
-   webrtcbin: Fix potential deadlock on bin elements cleanup
-   zxing: Replace deprecated DecodeHints with ReaderOptions
-   meson: Also disable drm on GNU/Hurd

gst-plugins-ugly

-   No changes

GStreamer Rust plugins

-   No changes

gst-libav

-   avcodecmap: Add some more channel position mappings

gst-rtsp-server

-   No changes

gstreamer-vaapi

-   meson: Re-added required: lines accidentally removed

gstreamer-sharp

-   No changes

gst-omx

-   No changes

gst-python

-   No changes

gst-editing-services

-   ges: Fix some reference counting and error handling
-   ges-meta-container: Fix the GET_INTERFACE macro

gst-devtools, gst-validate + gst-integration-testsuites

-   No changes

gst-examples

-   No changes

Development build environment

-   No changes

Cerbero build tool and packaging changes in 1.24.11

-   Fix bootstrap on Windows 11: Install WMIC when missing

Contributors to 1.24.11

Armin Begovic, Benjamin Gräf, Cheung Yik Pang, Christian Meissl, Daniel Morin, Dean Zhang (张安迪), Edward Hervey, Emil
Ljungdahl, Francisco Javier Velázquez-García, Guillaume Desmottes, Jan Alexander Steffens (heftig), L. E. Segovia, Matthew
Waters, Max Romanov, Nicolas Dufresne, Philippe Normand, Robert Mader, Samuel Thibault, Sebastian Dröge, Stéphane Cerveau,
Thibault Saunier, Tim-Philipp Müller,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.24.11

-   List of Merge Requests applied in 1.24.11
-   List of Issues fixed in 1.24.11

Schedule for 1.26

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
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.

License: CC BY-SA 4.0
