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!
A step-by-step guide on how to enable 3D acceleration of Vulkan applications in QEMU through the new Venus experimental Vulkan driver for…
Maintaining a non-trivial set of GStreamer patches can be tricky. Thanks to the recent move to a single, unified git repo, you can now easily…
Earlier this year, I joined Collabora as an intern to work on improving testing in libcamera and automating it through KernelCI. Having…
With the LLVM toolchain seeing increasing development and adoption alongside the older, more established GNU toolchain, projects needing…
This summer, Christoph Haag and I had the pleasure of taking part in Google Summer of Code as mentors for xrdesktop, the Open Source project…
Earlier this year, from January to April 2021, I worked on adding support for stateless decoders for GStreamer as part of a multimedia internship…