HEVC uAPI mainlined
The release of Linux 6.0 earlier this week brought a significant milestone: the H.265/HEVC user-space API was mainlined. That is the result of more than two years of efforts by our engineering team.
Collabora has actively contributed to the enablement of video codecs such as VP8, VP9, H264, and others, so the addition of HEVC marks another important contribution from our team to this space. These activities do involve not only kernel drivers but also GStreamer plugins for stateless decoders.
The primary focus of the HEVC uAPI work was on VeriSilicon's Hantro Codec component, present on a number of popular SoCs (Rockchip, NXP, Microchip, ...). Marketed as a small and power efficient, it is especially attractive for open source developers as a stateless accelerator. The RKVDEC and the Cedrus codecs will also benefit from the stable HEVC uAPI, gaining the ability to decode HEVC in mainline too.
Designing the HEVC uAPI has been challenging as we wanted to make it future proof. To get maximum confidence in the uAPI, we leveraged the Fluster testing framework and fixed the whole decoding stack from the driver to userland until all tests passed, up to the limit of the hardware capabilities of course. Along the way, we also added support for 10-bit bit-streams and the P010 pixel format.