I'm trying to get hardware accelerated video encoding/decoding working on the Beaglebone AI. I copied the following libraries from TI's Processor SDK:
- /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libgstvpe.so
- /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libgstlibav.so
- /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libgstducati.so
- /usr/lib/arm-linux-gnueabihf/libdce.so.1.0.0
- /usr/lib/arm-linux-gnueabihf/libgstdrm-1.0.so.0.1404.0
With these libraries, I am able to do hardware accelerated video processing, using the following command:
- gst-launch-1.0 filesrc location=vid.mp4 ! qtdemux ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)640, height=(int)480' ! ducatih264enc ! h264parse ! mp4mux ! filesink location=test.mp4
However, it must be run as root. If I try and run it as a regular user, it fails with the following error:
(gst-launch-1.0:26334): GStreamer-CRITICAL **: 12:10:20.275: gst_buffer_add_meta: assertion 'buffer != NULL' failed
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: Internal data stream error.
Additional debug info:
../gst/isomp4/qtdemux.c(6545): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
streaming stopped, reason error (-5)
Running Debian with kernel 4.19.94-ti-r59
I've tried to make sure that the user has access to all relevant files in /dev (and even tried chmod a+rw /dev/*), but still cannot get it to work. Has anyone been able to get this to work as a non-root user?
Thanks,
Damon