July 18, 2019
A little over a month and a half ago, at the end of May, Collaborans including Aaron Boxer, George Kiagiadakis, Guillaume Desmottes, Stéphane Cerveau and myself took part in the GStreamer Spring Hackfest in Oslo. This year, the hackfest was kindly hosted by Pexip, a company that uses and develops GStreamer RTP stack for their high end video conferencing servers. The weekend ended up being quite busy for everyone attending. Here's a look back at what each us worked on.
Aaron discussed various ways to record RTSP streams when used with playbin and brought up some of his pending merge requests around the closed captioning renderer and Active Format Description (AFD) support, with a discussion about redoing the renderer properly, and in Rust.
George discussed a major re-work of the gst-omx bufferpool code that he has been doing and then moved his focus on Qt/Android support. He mostly focused on the missing bits, discussing builds and infrastructure issues with Nirbheek and myself, and going through his old patches.
Guillaume took the opportunity to present a solution for video buffer layout negotiation. This is part of a long term goal to ensure fully zero-copy pipeline on Xilinx Zynq UltraScale+ MPSoC and in GStreamer in general. He then discussed various issues he had faced with his current side project, Karapulse, a karaoké player written in Rust and using GStreamer. He used Matthew Waters' expertise for the rendering side, and discussed implementing bindings for GstBaseParse in Rust with Sebastien Dröge. He then started implementing a cdgparse element (a karaoké media format).
Stéphane spent most of his time factoring out the MPD (DASH manifests) methods to be used in the new dashsink element he has been working on. He also discussed various aspects of Cerbero and contributed support for ZBar, an open source software suite for reading bar codes from various sources.
As for myself, I was all over the place. I worked a bit with Andoni to plan and prepare the merge of a big MinGW toolchain update which has since landed. Apart from the above-mentioned discussions, I brought up my concerns with Sebastien about the lack of instructions and integration of the Rust GStreamer elements. One of the things that got my attention is that the only usable AV1 encoder (rav1e) has been integrated into as a Rust plugin, but the current Rust build system makes life really difficult for Linux developers because it doesn't integrate well with existing systems, so none of the distributions include it, not even Cerbero, GStreamer's own build system.
Finally, we apparently caused the freedesktop.org GitLab infrastructure to collapse! Or maybe it was coincidence? It was the first hackfest with per-commit CI running. Note however that we have now documented how to push without CI being run. That technical issue was just a good excuse to have more discussions. Overall, it was a very nice get together, Håvard Graff from Pexip was a great host!
GStreamer relies on various 2D font rendering and layout libraries such as Pango and Cairo to generate text for the Pango plugin, which…
In this second part of this blog post series on Linux kernel initcalls, we'll go deeper into implementation, with a look at the colorful…
Introducing an accurate and light-weight deep network for video super-resolution upscaling, running on a completely open source software…
PipeWire continues to evolve with the recent integration of libcamera, a library to support complex cameras. In this blog post, I'll explain…
A high-level introduction of the Linux graphics stack, how it is used within ChromeOS, and the work done to improve software rendering (while…
Last year, a (controversial) feature was added to the Linux kernel to support optimized case-insensitive file name lookups in the Ext4 filesystem.…