GStreamer-1.0 and Qt5 Video playback

Hi all,
I am trying to develop a simple Qt5 application using Gstreamer 1.0 on Jetson K1.
I am using the yocto layer provided by wata2ki that can be found here https://github.com/watatuki/meta-jetson-tk1.
In that layer based on yocto fido release the binary drivers are integrated and the gst_omx is recompiled from sources.

On that build the gstreamer1.0 works well and I am able to play a video in full HD with a very low CPU load. For this task I used the command provided in the Linux for Tegra documentation…

gst-launch-1.0 filesrc location=<filename> ! qtdemux name=demux demux.video_0! queue ! h264parse ! omxh264dec ! nvhdmioverlaysink -e

The problem starts when I try to integrate Gstreamer into a Qt application…
I am using the GStreamer 1.6.0 provided in the yocto layer https://github.com/dv1/meta-gstreamer1.0 .
The Qt that I have cross compiled is the 5.5.1 in the jethro branch https://github.com/meta-qt5/meta-qt5 .

I got a patch from the Qt support in order to fix a overlay issue and after that I am able to play a video in fullscreen with a low CPU load. The only big problem is that the video has some glitches and green square appears that there aren’t when playing with gst-launch-1.0 from command line…
I am also sure that the application use the nvhdmioverlaysink.

I suppose that this could be a issue/limit of some driver/binary component.
Has anyone experienced the same issue?
I know that the gst omx and the Gstreamer 1.0 integration is quite younger.
Are there any release plan for linux for tegra 21.5 or 22.0?

EDIT: I attach the patch from qt support, the simple video application and the application log.

0111-qtsupport.patch.txt (657 Bytes)
simpleVideoPlayer.zip (1.98 KB)
simpleVideoPlayer.log (3.01 KB)

I’m wondering if there’s some sort of issue with the built-in Gstreamer in L4T (which I think is still at 1.0 or 1.1) and the Gstreamer 1.6 layer for yocto.

I haven’t tested the Qt application on the provided ubuntu distro.
The gstreamer on that linux is the 1.2.3 that has some well known issues also reported on this forum.
For this reason I decided to try directly the last version of Gstreamer.

Hello,
Can you use nveglglessink, instead of nvhdmioverlaysink, and test your app again?

br
Chenjian

Hi Chenjian,
when I use the nveglglessink the application crash (segmentation fault) and X report a lost connection…

Hello,
Can you try the following command line first?
gst-launch-1.0 filesrc location= ! qtdemux name=demux demux.video_0! queue ! h264parse ! omxh264dec ! nveglglessink -e

br
Chenjian

Hi Chenjian,
I try your command line and it works only when there is a X server running in background.
For my Qt application an X server is required, so this could be a good choice, but when I set that videosink from my application it crash.

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 1042]
0xb6767d52 in glGetString () from /usr/lib/arm-linux-gnueabihf/tegra/libGL.so.1
(gdb) bt
#0  0xb6767d52 in glGetString () from /usr/lib/arm-linux-gnueabihf/tegra/libGL.so.1
#1  0xb18557a0 in gst_egl_adaptation_init_exts (ctx=ctx@entry=0x1bc1c0)
    at /export/home/oedev/gimasi-nvidia-tk1-jethro/build-jetson-tk1/tmp/work/cortexa15hf-vfp-neon-poky-linux-gnueabi/libgstnvegl/21.4.0-r5/gstegl_src/gst-egl/ext/eglgles/gstegladaptation_egl.c:108
#2  0xb1854ce4 in gst_egl_adaptation_init_surface (ctx=0x1bc1c0, format=GST_VIDEO_FORMAT_NV12)
    at /export/home/oedev/gimasi-nvidia-tk1-jethro/build-jetson-tk1/tmp/work/cortexa15hf-vfp-neon-poky-linux-gnueabi/libgstnvegl/21.4.0-r5/gstegl_src/gst-egl/ext/eglgles/gstegladaptation.c:451
#3  0xb184f794 in gst_eglglessink_configure_caps (caps=0x30baa0, eglglessink=0x1bbe98)
    at /export/home/oedev/gimasi-nvidia-tk1-jethro/build-jetson-tk1/tmp/work/cortexa15hf-vfp-neon-poky-linux-gnueabi/libgstnvegl/21.4.0-r5/gstegl_src/gst-egl/ext/eglgles/gsteglglessink.c:2200
#4  render_thread_func (eglglessink=0x1bbe98)
    at /export/home/oedev/gimasi-nvidia-tk1-jethro/build-jetson-tk1/tmp/work/cortexa15hf-vfp-neon-poky-linux-gnueabi/libgstnvegl/21.4.0-r5/gstegl_src/gst-egl/ext/eglgles/gsteglglessink.c:562
#5  0x453d6028 in ?? () from /usr/lib/libglib-2.0.so.0

The libgstnveglglessink is cross compiled inside my yocto distro, so if you need I can provide a better gdb output of the #1 call.

EDIT: better debug log.

Was there ever any resolution to this? I have been trying for weeks to get the same working and came across this thread. I made the renderer by pass hack as the original author and have been basically stuck.

The gstreamer pipelines work fine from the command line using nveglglessink but using the same in the qt application (with the suggested tweak) causes a segmentation fault. I also noticed the green squares seen by the original author when using nvhdmioverlaysink which is not there when using the command line.

I wonder if there has been any update on this and if the OP managed to solve his/her problem!