Video HW acceleration on Nvidia Jetson K1
StefanoCordibella last edited by
Hi all, I am working on nvidia jetson K1 trying to make a simple video player application.
I am using Yocto Project in order to build the rootfs. I use the qt5 provided in the meta-qt5 layer (jethro branch) and the gstreamer from the meta-gstreamer1.0 layer (version 1.6.0).
Nvidia distribute the binary driver for linux and I integrated into my distribution and I am able to play video with hw acceleration using gst-launch-1.0 with this pipeline:
gst-launch-1.0 filesrc location=<video_file_name> ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! nvhdmioverlaysink -e.
So I write a very simple video player application based on video based on QML Video Type, you can find the code here , I also add the patch that I use to show the video sink used by the application.
The application run on the target, but the video isn't "sinked", I mean that I see 4 frames on the same display in black/white and the cpu runs at 130% (using gst-launch it was at 9%).
Debugging the application I suppose that the nvidia codec for gstreamer1.0 are being used, but for some reason the xvimagesink is always appended to the pipeline (or even instantiated). Here is the application log:
Starting simpleVideoPlayer version 0.1.0 - using Qt library 5.5.1 Setting videosink to "nvhdmioverlaysink" VIDEO SINK NAME nvhdmioverlaysink-nvhdmioverlaysink0 VIDEO SINK NAME xvimagesink0
I post the full log here .
It seems that the constructor of class QGstreamerVideoOverlay is called two times...
I don't know if this is the normal behavior , but It is strange that the xvimagesink is appended to my video sink ever...