Important: Please read the Qt Code of Conduct -

Video HW acceleration on Nvidia Jetson K1

  • 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...