[Bug 768160] qtplugins: How to implement qmlglsrc.

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Jul 19 06:24:48 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=768160

--- Comment #2 from Haihua Hu <jared.hu at nxp.com> ---
(In reply to Matthew Waters (ystreet00) from comment #1)
> qmlglsrc as a screen grabber of the qml scene graph is in general a bad idea
> for performance reasons as you have to perform a readback (bad) of the GL
> front buffer (also bad).  If possible, you should attempt to retrieve your
> rendering before qmlglsink and pass that downstream.
> 
> That being said, it's possible that screen grabbing may be your only option
> so something like that would be useful.

I'm now implementing this plugin which is only for grabing scene graph. But I
met a problem in unit test. pipeline for unit test is :

qmlglsrc ! glimagesink

There are two important threads in unit test that thread-1 is scene graph
render thread and thread-2 is glimagesink rendering thread. thread-1 warp qt
scene graph context into glcontext, glimagesink will query app_context from
upstream and get this warp context, then it will create glcontext which is
shared by the wrap context. qmlglsrc will do texture copy from scene graph
render target in afterrendering() slots of thread-1 and pass that texture
downstream. glimagesink will render this texture in thread-2.

But the result is that glimagesink only show black frame not the qmlview.

In generally, two threads, each thread has a context and a render
surface(qmlview, glimagesink window).

Is there something wrong with my design?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list