We're hiring!
*

Collabora contributions to GStreamer 1.12

Olivier Crête avatar

Olivier Crête
May 04, 2017

Share this post:

Today, the GStreamer community released version 1.12. This new release includes a number of exciting improvements, some of which I previewed two weeks ago. To see all the details about all the changes, you must read the well written release notes created by the community. Along with the usual load of memory leaks, crashes and other bugs, Collabora's multimedia team once again contributed a number of improvements across a wide number of areas.

Frustrated by the inability to set the stride of each plane in the new rawvideoparse element from gst-launch, Nicolas Dufresne decided to fix the problem once and for all and implemented support to serialize and deserialize GstValueArray types, so they can be used directly from the gst-launch command line. He then went on a spree of improvements to make GStreamer specific types available from the command line and from the Python bindings. In particular, it is now possible to set all kind of range types (int, int64, double & fraction) natively in Python. Nicolas also enabled the direct conversion of GStreamer's List and Array types from and to the matching Python types.

We also enabled a number of new raw formats, as Nicolas added support for the VYUY raw video format, while Vincent Penquerc'h and myself added support for a couple more encoded formats to the GstAudioBaseSink class, in particular for raw MPEG AAC (non-ADTS), FLAC, and fixed some bugs in the MPEG audio handling.

In preparation to making it possible to build statically linkable plugins at the same time as dynamic ones, Nicolas renamed all of the plugin files to match the plugin names, so, for example, the encoding plugin containing the encodebin element is no longer called "libgstencoding.so", but instead "libgstencodebin.so". This will make it possible to load plugins by their plugin name in the next version.

George Kiagiadakis and myself also made some improvements to the splitmux elements that allow reading from a series of ordered files as if they were one long file. George added better support for reading "sparse" streams, like subtitles, that don't have valid data for the whole duration of the stream. I made it possible for splitmuxsink to accept a stream that changes format (like resolution) by simply creating a new file at that point.

Nicolas reviewed, merged and improved support for DMABuf in Waylandsink that had originally been contributed by Fabien Dessenne of ST Microelectronics. This now allows a compatible Wayland compositor to directly use the buffers created by a compatible hardware decoder in a completely zero-copy path. This is especially important for embedded processors. Nicolas also merged Fabien's fix to hint the black border subsurface as opaque, which allows using a single HW plane to display a video on some hardware platforms.

Nicolas also improved the OpenCV based elements, completing the port of the GstOpencvVideoFilter base class to the GstVideoFilter base class, while also porting a number of elements to this GstOpencvVideoFilter class. This was mostly cleanup, code re-use, however it also fixed an issue with GstVideoMeta being ignored and an unbalanced buffer_map/unmap.

After spending way too much time trying to debug a custom sink, I discovered that the expected behaviour of GstBaseSink subclasses when entering the PAUSE state was not very well documented. I documented it and fixed a number of elements where the behaviour was incorrect resulting in either lost data or a slower state change to pause, in particular, I fixed fdsink and v4l2sink, but there are other elements that still need to be fixed in the next release. Wonchul Lee, on his part, made it possible for udpsrc to join multicast groups on more than one network interface.

Some improvements were added that will please authors of custom elements. Notably, Wonchul added support for multiple specifiers in request pad name, so a request pad can now be named "src_%u_%u" instead of just "src_%u".

Last, but not least, Guillaume Desmottes added support for GstStream and GstStreamCollection to the GStreamer debug printing system, giving debug logs that are easier to understand. I added example command lines to the output of the gst-device-monitor tool, this makes it easier to select devices on platforms where the devices are accessed with numbers instead of human friendly names, in particular, audio devices on macOS.

If you or your team would like to leverage or implement the latest features of GStreamer 1.12, Collabora's multimedia team would be happy to assist. Please get in touch with us to see how we can help!

Comments (0)


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


Search the newsroom

Latest Blog Posts

Zink: Fall Update

24/10/2019

I recently went to XDC 2019, where I gave yet another talk about Zink. I kinda forgot to write a blog-post about it, so here’s me trying…

Adding stateless support to vicodec

09/10/2019

Prior to joining Collabora, I took part in Round 17 of the Outreachy internships, to work on the virtual drivers in the media subsystem…

Why HDCP support in Weston is a good thing

03/10/2019

What HDCP is, and why supporting HDCP in Weston is justified in both an economical and technical context.

Virglrenderer and the state of virtualized virtual worlds

28/08/2019

With the release of virglrenderer 0.8.0, getting accelerated OpenGL within a virtual machine (VM) made a big leap forward. Since virglrenderer-0.7.0,…

ROCK Pi and an easy place: Panfrost & Wayland on a Rockchip board

06/08/2019

Ongoing work on the reverse-engineered Panfrost OpenGL ES driver for Arm Mali GPUs has turned the RK3399 SoC into a very attractive platform…

What's new in OpenXR 1.0 & Monado?

02/08/2019

As part of its unwavering commitment to open source and open standards, Collabora is proud to be part of bringing the recently-released…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2019. All rights reserved. Website sitemap.