Coding Chase - Projects

My 3D Hub

Thank You For Donating:

Ikeeki (linux-sunxi@irc.freenode.net)
Computer Troubleshooters Brasil

Saturday 18 October 2014

Gstreamer Hyperloop

So I've been trying to get Gstreamer and Qt to play nice with each other on Cubieboard, but so far, no go.

Distinct attempts so far have been as follows:
  1. Hacking QtMultimedia to specifically invoke the working vdpausink pipeline
    1. this seems to be handled by  qtmultimedia/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp on the Qt5 sources, on the VM host.
  2. Setting the default playbin2 pipeline on GStreamer to use the vdpau elements, with GST_RANK_PRIMARY + 1
    1. this seems to be handled by gst-plugins-bad-0.10.23/sys/vdpau/gstvdpau.c in the embedded rootfs (check the previous Gstreamer + libvpau-sunxi post)
Scenario #1 got me all the way to invoking VDPAU to a black screen from Qt and scenario #2 won't go all the way even from gst-launch on account of qtdemux:

playsink gstplaysink.c:2922:is_raw_pad:<playsink0:video_sink> Caps contains raw and non-raw structures:

video/x-vdpau-video, chroma-type=(int)0, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ];
video/x-raw-yuv, format=(fourcc)I420, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ];
video/x-raw-yuv, format=(fourcc)YV12, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ];
video/x-raw-yuv, format=(fourcc)NV12, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ]


A third possibility is to go with qtgstreamer, an alternative to QtMultimedia - still working that angle as well!

8 comments :

  1. Does this give any clues?

    http://wiki.wandboard.org/index.php/File:Using_glimagesink_instead_of_xvimagesink.patch

    ReplyDelete
  2. Hi David,

    Nice find, I'll test this on my setup and whatever happens, I'll post back!

    ReplyDelete
    Replies
    1. Great look forward to it, fingers crossed you will be able to get this cracked!

      Delete
  3. Hi,

    Dont suppose you have got any further with this? I tried switching to glimagesink and it played video but performance was really poor even worse than using xvimagesink but at very least changing it makes a difference! I am now looking at the libhybris approach but am having a problem when cross compiling QT. During the configure it complains that it cannot find gl2.h, searching the rootfs gl2.h can be found in /usr/local/hybris/include/GLES2/ on my image so I changed the mkspecs to suit but I am still getting the same error. Any thoughts on what I am doing wrong?

    ReplyDelete
  4. Hi,

    From what I've been able to gather, Wandboard uses i.MX6 from Freescale - and that SoC has a better support for Qt5 and accelerated video. On AllWinner SoCs (A10/A20) when using glimagesink turns out as you've experienced.

    As for using libhybris and the error you're having, maybe include the gl2.h header file in the system /usr/include dir (symlink for example) or perhaps check the environment variables - this issue may also appear when compiling Qt against the mali libraries, as some users have already reported and is usually related to OS environment settings regarding headers and libraries and the system path.

    ReplyDelete
  5. Thanks, looking at this at the moment https://github.com/webOS-ports/qtmultimedia unfortunately it is all above my head!

    ReplyDelete
  6. Hi, have a look at QtAV, I posted just now about the project, might just be what we're looking for!

    ReplyDelete
    Replies
    1. Yes I tried QtAV but couldn't get it to compile wish I had made note of the error now, to be fair I didn't put too much effort into it. I hope you have more success.

      Delete