We're hiring!
*

Collabora & GStreamer 1.18

Stéphane Cerveau avatar

Stéphane Cerveau
October 06, 2020

Share this post:

It has been more than a year since the last official 1.16 release for the GStreamer project. There were good reasons for the long wait for 1.18 as much has changed since the previous release, with the biggest improvement being the move to Gitlab, a more productive environment. This has led to a significant increase in contributors, which now total 300 (200 more than 1.16!). In addition, 1.18 contains almost 4000 commits for only the core GStreamer repositories, as opposed to 3000 in 1.16. A full description of this important release can be found here.

As usual, our team has been quite actively involved in this release, and we are proud to present some of the highlights of our contributions.

Finalizing the switch to Meson

As a major change in this release, GStreamer has replaced its historical build system, Autotools, with the faster, more powerful Meson. An extra effort was made to achieve feature parity with the previous build system, and many patches were written for both the GStreamer (gst-build) and Meson projects thanks to Xavier, who worked hard to review and merge many of these contributions.

HDR10 now supported, HDR10+ coming soon

New HDR capabilities has been introduced by the community and extended by our team, especially for the AVC (h264) and HEVC (h265) parsers. For the moment only the HDR10 profile is supported but we are very confident that we will support HDR10+ in the next release.

A fast & reliable CI system

Besides the great work migrating to Gitlab, much effort has been spent by Nicolas and Guillaume to achieve a fast, reliable and professional CI system. Guillaume gave a special effort to the very promising GStreamer Rust project's CI, helping make Rust a first class citizen in the GStreamer project. He has also implemented a CI to test and validate contributions to the gst-omx project. And Nicolas improved the Gitlab API support, allowing on-demand jobs for merge requests : the CI can now combine jobs or offer a cache server to speed up Cerbero builds.

Stateless codec support

Thanks to Nicolas and Ezequiel's tireless efforts, GStreamer now has a common library for stateless codecs, with growing support for DXVA (DirectX Video Acceleration), V4L (Video4Linux) and VA-API (Video Acceleration API). libgstcodecs has been created to share code between stateless codec such as D3D11 and v4L2, with the latter supporting new drivers such as I.MX8M, Rockchip, Allwinner, and Blaize with codecs such as JPEG, H264 and H265. And alongside this long-running effort, 4x4 and 32x32 tiled NV12 formats are now supported for the Hantro and Allwinner codecs.

Reducing pipeline latency

As with our work on the 1.16 release, reducing the latency of GStreamer pipelines is still an obsession for us here at Collabora. One large part of this effort is the introduction of support for items smaller than a frame for encoders, allowing intermediate subframes to be processed by downstream elements. We first implemented this in the OpenMAX IL stack used on the Xilinx Zynq UltraScale+ MPSoC This dramatically reduces the latency of the pipeline. The OMX and OpenJPEG encoders demonstrate this new features, and it is now available for AVC (h264) and HEVC (h265) content. This work, initiated by Guillaume and Nicolas, has been continued by Stéphane, who is now working on landing the decoder part for 1.20.

In addition to the video decoder subframe work, Nicolas, Olivier, Guillaume and Stéphane have reduced latency in demuxers, parsers and codecs, reducing memory copies by providing an API to negotiate the optimal buffer layout or add an alternate interlace mode.

RTP stack improvements for RIST

Olivier and Nicolas have been working actively on a new plugin for the new transport protocol RIST, providing sink and source elements that implement the Simple Profile of this RTP based protocol. Nicolas also enhanced RTP stack performance with a better jitterbuffer, while Antonio improved the RTP stack to reduce overhead for high bitrate streaming.

To promote Rust as a solid alternative to the common C language when implementing new plugins and features, Guillaume has improved the API bindings for the parser and decoder base class and has also improved the high level caps API.

Windows, Magic Leap, DASH & more

In addition to enhancements, our team also made numerous bug-fixes and improvements to the code. Aaron improved Windows support, added support for AFD and Bar Data, and improved support for JPEG2000. Xavier added support for Magic Leap codec SDK based on Android Media Codec, and Stéphane finalized the offer for DASH by writing a sink to produce DASH contents (see his blog post on how to generate MPEG-DASH streams with GStreamer).

As maintainers and active long-term contributors, Guillaume, Nicolas and Olivier also contributed many bug fixes and improvements, including:

  • a more scalable gst task support
  • improved device provider API
  • reordered raw format to ease choosing the best format during caps negotiation
  • dynamic crop using kmssink for better renegotiation with videocrop
  • enhanced transcodebin by adding new converters

If you have any questions about how to take advantage of GStreamer 1.18 and it's new features, or how to extract maximum performance from your hardware, please don't hesitate to contact us.

 

Comments (0)


Add a Comment






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


 

Search the newsroom

Latest News & Events

Open Source Summit Europe & ELCE 2020

22/10/2020

The 4-day event is dedicated to everything open source and will showcase a program of 250+ talks. Collaborans will once again be actively…

Kernel 5.9: Onwards and upwards

22/10/2020

Collaborans continue to be very active in the Linux kernel, authoring over 150 commits in this release. Here's a look at the improvements,…

Collabora & GStreamer 1.18

06/10/2020

A move to GitLab. A switch to the powerful Meson build system. A fast and reliable CI system implemented. The GStreamer community has been…

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-2020. All rights reserved. Privacy Notice. Sitemap.