There’s been the starting pieces of hardware video offload with the stateless engine support for some time and it now supports at least H264/HEVC/VP8/VP9/mepg2 decode offload depending on the hardware capabilities. The problem has been support for software/userspace has taken longer then the initial drivers but now that’s catching up now with gstreamer support landing in 2020 and with apps like clapper now using it. I’ve been meaning to play with this and work out how to make it work in Fedora as it’s useful for devices based on the AllWinner/Rockchip/NXP i.MX8 devices like the Pine64 laptops/phones plus a bunch of other devices, even NVIDIA Jetson devices should work before long.
You’ll need to ensure you have gstreamer1-plugins-bad-free installed and the video application I was testing with is clapper:
$ sudo dnf install -y gstreamer1-plugins-bad-free clapper
Seeing what hardware offload is supported:
$ gst-inspect-1.0 v4l2codecs Plugin Details: Name v4l2codecs Description V4L2 CODEC Accelerators plugin Filename /usr/lib64/gstreamer-1.0/libgstv4l2codecs.so Version 1.20.0 License LGPL Source module gst-plugins-bad Source release date 2022-02-03 Binary package Fedora GStreamer-plugins-bad package Origin URL http://download.fedoraproject.org v4l2slh264dec: V4L2 Stateless H.264 Video Decoder v4l2slmpeg2dec: V4L2 Stateless Mpeg2 Video Decoder v4l2slvp8alphadecodebin: VP8 Alpha Decoder v4l2slvp8dec: V4L2 Stateless VP8 Video Decoder v4l2slvp9alphadecodebin: VP9 Alpha Decoder v4l2slvp9dec: V4L2 Stateless VP9 Video Decoder 6 features: +-- 6 elements
Finally in Clapper you need to enable playbin3 option, I also enabled Pipewire audio support:
We will also be enabling decode support in Chromium and Chromium freeworld before long, there’s a little more work to do here, but as usual once it lands it’ll all just start to work in Chromium too!