Posted on 02/11/2016 by Olivier Crête
Yesterday, we celebrated the release of GStreamer 1.10, the culmination of 7 months of very hard work from the GStreamer community. Collabora's multimedia team is extremely proud of our contributions to this new major feature release.
Our contributions had two main targets: improve GStreamer's overall reliability and improve support for hardware accelerated plugins. We've also contributed a number of improvements that we've done in relation to the work we do with our clients! If you would like more information or assistance on how to leverage these improvements into your products, please get in touch with us!
Guillaume Desmottes added a GstTracer plugin to trace memory leaks in GStreamer applications and plugins. This traces GStreamer objects and mini-objects in a very quick way so it can be run in cases where valgrind is too heavy. For example, it can be enabled in regular testing or used on constrained embedded devices. He also fixed dozens of leaks all over GStreamer that he discovered based on this new plugin. In particular, he fixed a large number of leaks in the new decodebin3/playbin3 code. The objective is to have leak tracing always on in unit tests in the next version.
Guillaume also added support for ALSA devices that have a number of channels, but no specific position associated with them. Those are present in industrial devices that capture N independent channels instead of a 5.1 or a 7.1 positional audio.
Nicolas Dufresne added a new element to do Acoustic Echo Cancellation (AEC), this is necessary if you have a microphone that can capture what comes out of the speaker when doing a phone call, for example, when using speakerphone. This was previously left to PulseAudio on Linux and to other platform specific features on other platforms, but with this new GStreamer element, it is possible to have AEC on all platforms. It uses the webrtc-audio-processing library containing code published by Google as part of the WebRTC library (using by Chromium and Firefox). This library represents the best Open Source Echo canceller out there and can correct echo even in the presence of bad conditions, such as hardware lying about its latency.
|Figure 1. GStreamer Echo Cancellation.|
He's also been contributing heavily to the Wayland sink, in particular, he's reviewed and committed support for the new wl_viewporter extensions allowing video scaling and cropping to be delegated to the Wayland compositor. But he's also made it optional so that waylandsink can also work on current compositor that don't support it. He's also added support for the video meta, allowing zero-copy operations in more cases.
Nicolas also made a number of smaller improvements. He cleaned up the rfbsrc element that is used to receive from the RFB protocol used by VNC. Among those, he enabled the GObject property notification when the name of a GstObject is changed, he made the libvpx decoder (VP8, VP9) use multiple threads on multi-core systems, and he made a number of small fixes to the V4L2 elements. Nicolas has also be continuing in his role as V4L2 maintainer and he reviewed a large number of patches from the community.
This covers the work done by Nicolas and Guillaume on GStreamer 1.10. Tomorrow, I'll give an overview of the work done by the rest of Collabora's multimedia team, including Vincent, Wonchul, Thibault and myself.
During the past few months significant progress has been made on the Open Source Arm Mali GPU driver front, culminating in the Panfrost…
With just a few simple steps, you can compile and boot a Raspberry Pi using the Linux kernel mainline source code. Here's how.
Since the last Debian release, a number of changes have been made in the Debian Cloud Team, both on the technical & organisational level…
Following two months of work to develop a new kernel driver for Midgard and Bifrost GPUs, the kernel side of Panfrost is now in a form close…
A look at how to implement USB gadget devices on Linux machines which have the necessary UDC hardware, automate the manual configfs process…
From the latest on Open Source projects Zink (OpenGL on Vulkan) and VirGL (virtual 3D GPU for QEMU), to a state of the union on GStreamer…