I am trying to utilize hardware accelerated decoding on RPI 5 using gstreamer. I have an RTP stream encoded with x265enc plugin available in gstreamer and trying to decode it with vulkanh265dec plugin. With some research on google i came to know that vulkan along with mesa and LunarG libraries might help utilizing the video core VII GPU capabilities. So I have followed a guide and compiled these libraries on RPI 5 successfully.
But when i try to run gstreamer pipeline to receive RTP stream on port 5000 with UDP sink. I received errors:
Failed to create/retrieve vulkan H.265 decoder queue
when I inspect vulkanh265dec element with gst-inspect-1.0 command it shows vulkanh265dec element. vkcube, vulkaninfo, vkvia and glxinfo -B command also runs without any errors. I tried to google that error but doesn’t find anything helpful. Kindly help me understand what might be an issue. What i am missing?
Sorry, RPi Vulkan driver currently doesn’t support Vulkan video extensions.
You can verify it with vulkaninfo command.
Right now, Vulkan video elements in GStreamer are enabled in compilation time, it doesn’t mean that even if they are registered and shown with gst-inspect-1.0 it means that they actually works with any Vulkan driver.
Thanks for the response. That is not a good news. What would be the alternative for decoding if I want to use GPU accelerated decoding on rpi 5. Kindly suggest possible solutions.
Try with v4lcodecs elements. Though, as far as I known, h.265 isn’t there because the color format it uses. I guess your best option for now it to use h.264 with video4linux
Hi! I have tried to compile and gstreamer from source with v4l2codecs but upon successful compilation and build. I am unable to find v4l2h265dec in gstreamer plugins.
Compilation command used: meson setup build -Dgst-plugins-bad:v4l2codecs=enabled -Dgst-plugins-good:v4l2=enabled -Dgst-plugins-good:v4l2-gudev=enabled
ninja -C build
Kindly guide what thing I am missing.
You ought to check the issue that @philn mentioned: h265 decoder in rpi is still a work in progress, so you need to add unmerged changes and it’s still fragile.