Hi all, I'm trying to perform video playback on a custom board using IMX6 Solo with Linux 4.14.98,
for that I build Gstreamer using the Yocto recipes:
DISTRO=fsl-imx-fb MACHINE=imx6solosabreauto source fsl-setup-release.sh -b mybuilddir
Then:
bitbake gstreamer1.0
bitbake gstreamer1.0-plugins-base
bitbake gstreamer1.0-plugins-good
bitbake gstreamer1.0-plugins-bad
bitbake gstreamer1.0-libav
bitbake imx-vpuwrap
bitbake imx-gst1.0-plugin
bitbake libimxvpuapi
bitbake gstreamer1.0-plugins-ugly
bitbake gstreamer1.0-libav
bitbake firmware-imx
Afterwards put the resulted plugins, libraries, firmware and binaries into my target.
But when I execute a pipeline that uses vpudec, such as:
# GST_DEBUG=3 ./gst-launch-1.0 filesrc location=/mnt/file.avi typefind=true ! av idemux ! vpudec ! imxv4l2sink
Or
# GST_DEBUG=3 ./gst-launch-1.0 -v playbin uri=file:///mnt/temp.mp4
Then the following error occurs:
open failed: No such file or directory
[ERR] Error: Unable to open vpu shared memory file
[ERR] IOSystemInit() failure.
The same error occurs by executing the VPU unit test
# ./mxc_vpu_test.out -D "-i ./akiyo.mp4 -f 0 -t 1"
---- Running < ./mxc_vpu_test.out > test ----
[INFO] VPU test program built on Mar 14 2021 23:38:06
open failed: No such file or directory
[ERR] Error: Unable to open vpu shared memory file
[ERR] IOSystemInit() failure.
[ERR] VPU Init Failure.
Even though the vpu device is listed under /dev/.
This error is not showing when using IMXVPUDEC and a different videosink, nevertheless I'm not able to see anything on the screen (attached log).
# GST_DEBUG=4 ./gst-launch-1.0 filesrc location=/mnt/temp.mp4 typefind=true ! qt demux ! queue ! imxvpudec ! imxipuvideosink
Hi jlsampayo
one can try Linux 4.14.98_2.0.0 Demo Images
use Linux Guide vpu commands from Documentation
Best regards
igor
Hi,
The problem related to VPU:
open failed: No such file or directory
[ERR] Error: Unable to open vpu shared memory file
[ERR] IOSystemInit() failure.
is solved by enabling in Kernel the following option: CONFIG_TMPFS
I noticed in the source code of vpu_util.c, that the failure came when it tried to open the "/dev/shm/vpu" which was not in my target, then looking further I found how to generate and use the /dev/shm.
Now Im able to run the unit test and verify VPU.
Kind Regards
Jose Sampayo
forgot to mention that in the documentation for TMPFS, said that, one must create first the subdirectory where we are going to mount the tmpfs, in this case, create the /dev/shm directory in the target before mount the tmpfs.
So, in the target:
mkdir /dev/shm
mount -t tmpfs tmpfs /dev/shm