Olivier Crête
April 08, 2026
Reading time:
The GStreamer community recently released version 1.28, the culmination of a year’s worth of collaboration, innovation, and hard work. With 162 contributors from across the globe, this release is a testament to the project’s vibrant ecosystem. We’re particularly proud that 16 of those contributors are Collaborans, reinforcing our position as the largest employer of GStreamer developers.
While the official release notes provide a comprehensive overview of the new features, this post highlights Collabora’s key contributions—spanning hardware acceleration, AI integration, HDR support, and more. Our work reflects our commitment to pushing the limits of multimedia on Linux, whether through performance optimizations, protocol enhancements, or cutting-edge codec support.
AI and Machine Learning are no longer just buzzwords; they are becoming core components of modern media processing. Our team has been instrumental in maturing GStreamer’s AI support, focusing on making inference more accessible and efficient. This work was so significant that it earned its own dedicated deep dive, be sure to check out our post on GStreamer 1.28 and AI inference.
A core strength of Collabora is our "cross-stack" expertise. Our GStreamer team works daily with our colleagues in the Linux kernel, Mesa, and Wayland teams to ensure that media applications can squeeze every bit of performance out of modern hardware.
In this release, Nicolas Dufresne continued his leadership in V4L2 support. He implemented key optimizations to avoid unnecessary cropping and, alongside Detlev Casanova, addressed several driver-level bugs. Jakub Adam improved the v4l2transform element, adding logic to verify format changes before reconfiguring, which prevents costly and redundant driver calls.
Jakub also brought significant improvements to qml6glsrc, enabling it to update buffer pools during renegotiation. This is a vital step toward achieving zero-copy operations when rendering QML scenegraphs. Furthermore, his updates to unixfdsrc now allow for the allocation of FD memory with non-zero offsets, facilitating smoother buffer sharing between different processes.
We have long led the charge in integrating DMA-buf and DRM modifiers into GStreamer. In 1.28, Nicolas refined OpenGL-based elements to ensure DMA-bufs remain mapped, eliminating the overhead of repeated map/unmap operations. Meanwhile, Robert Mader helped streamline the codebase by moving Wayland-specific format mappings into a common library, simplifying the stack for everyone.
Efficiency isn't just about throughput; it's about smart resource management. Nicolas added support for GstVideoCropMeta to our Wayland elements, allowing the compositor to handle cropping. This effectively offloads work from the CPU to the display hardware. On the Vulkan side, Daniel Almeida added an AV1 decoder element, furthering our work with the Khronos Vulkan Video workgroup.
Bringing High Dynamic Range (HDR) and proper colorimetry to the Linux desktop is a long-standing mission at Collabora. This release marks a major step forward.
Robert Mader implemented Wayland color protocol support in GStreamer’s sinks, allowing for the transmission of colorimetry information to the compositor. Nicolas Dufresne took this further by adding HDR10 metadata parsing, while Derek Foreman and Nicolas worked together to ensure HDR metadata is correctly extracted from AV1 streams. To support these high-fidelity pipelines, we’ve also added 10-bit RGB support across Wayland and OpenGL elements.
Even in a world of hardware acceleration, software processing remains critical. Robert Mader has been championing an optimization path using the udmabuf (userspace DMA-buf) API. This allows standard system memory to be treated as a DMA-buf, enabling software-decoded frames to be imported directly by a GPU or display controller without an intermediate copy.
Robert’s work spans the entire stack, from implementing a udmabuf allocator to improving glupload and waylandsink. This is a game-changer for performance on devices where dedicated hardware decoders might be missing or unsupported.
In the 1.26 release, Julian Bouzas added support for decoding the MPEG-5 LCEVC codec — a novel codec used as an enhancement layer over a base codec such as H.264, H.265, or AV1. That initial work focused on building the infrastructure for LCEVC decoding with H.264 as the base. In this release, Julian has extended that support to H.265 and H.266 as base codecs. Furthermore, he has also added support for encoding LCEVC using V-Nova's encoder SDK. As before, this work was carried out in close cooperation with V-Nova.
As a long-time contributor to GStreamer's RTP and WebRTC stacks, Olivier Crête made several contributions in this release. He fixed an issue where, under certain circumstances, the H.264 parser would emit caps indicating that the header is in the codec_data field without actually including it — correctly deferring buffer output until the header has been received. He also made the SDP generation code more specification-compliant for H.264: the RTP specification has specific rules for Offer/Answer negotiation, and GStreamer's implementation now correctly mirrors the profile-level-id field in answers. Additionally, he fixed the code responsible for RTP extensions to avoid duplicating them across codecs in the SDP, while still correctly duplicating RTX (retransmission) entries per codec. Together, these fixes improve interoperability with LiveKit. Nicolas and Olivier also fixed several other bugs that were causing crashes.
For Embedded World 2025, Olivier Crête prepared a new streaming demo with a twist: rather than using the common RTP streaming mechanism, it used AVB — the Audio/Video Bridge. AVB is a way to stream at the Ethernet level with bandwidth reservation and network-level QoS guarantees. GStreamer includes a set of elements based on the open source Avnu implementation of AVB. To get the demo working, Olivier fixed a number of issues and promptly upstreamed them all.
Beyond the headline features, our team has contributed many smaller improvements throughout GStreamer. Jordan Yelloz improved the MSE component with various fixes, including locking corrections. Nicolas fixed bugs in vp9parse and alphacombine. Aaron Boxer improved playbin3 to forward stream selection events to the source of the collection, enabling stream selection to be implemented inside those elements. Nicolas added support for creating windows in full-screen mode in waylandsink and improved the GL stack to handle cases where the input picture is larger than the display. Olivier made various documentation improvements. Jakub Adam fixed seeking in dashdemux2 for streams with gaps, and Robert Mader fixed matroskademux to correctly send tags after seeking.
We haven't stopped since the last release. We're already adding more ML and analytics features targeted at the 1.30 release and have recently merged support for HDR10+ dynamic HDR metadata, with further improvements to Wayland display support actively in progress.
We're looking forward to many more improvements across all of these fronts in the next GStreamer release — so expect plenty of exciting merge requests landing soon. If you'd like help with GStreamer, please reach out!
08/04/2026
Our multimedia engineering team delivered major improvements to GStreamer 1.28: hardware acceleration and zero-copy pipelines, HDR and color…
02/04/2026
Collabora presents "Bringing BitNet to ExecuTorch via Vulkan" at PyTorch Conference Europe in Paris (April 7-8) and attends ICLR in Rio…
31/03/2026
Based on Debian 13 (Trixie), Apertis v2026 delivers updated system libraries, development tools, compilers, and core services, alongside…