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