[Bug 756082] qmlglsink: add a QML extension plugin

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Dec 24 16:26:48 PST 2015


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

--- Comment #11 from Holger Kaelberer <hk at getslash.de> ---
I tried to get a POC running, hacking around some issues I came across:
Cross-built GStreamer for Android with adjusted cerbero recipes plus some
hackish handwork linking together a shared qml-plugin from shared Qt- and
static gstreamer-libs and modfied tests/examples/qt/qml/play.pro to make it
build for Android. This was tricky and I'm no longer convinced my initial idea
of building a shared qml module for android is a good one :-)

Some of my issues might be simply caused by my ignorance so let me sum them up
and pls correct me where you know better:

- Cerbero: Did not find a way to inject 'foreign' PKG_CONFIG_PATH into the
cerbero build-env when linking against installed Qt-for-android. Hacked it into
the cerbero-code. Is there a way?

- autotools: I did not find a way to build both static *and* shared libs (for
the qml-module) in one go during cross-building a gst-stack for android with
cerbero. This might be due to my poor knowledge of autotools, though. This for
now would be a showstopper for me building a shared qml plugin for android.

- cerbero: When manually resolving the dependencies for the qt-module from the
.la file the tools.mk from cerbero produced a syntactically wrong linking
command. Hacked around this in tools.mk. Once we agreed upon how to build the
qml module and this is still an issue, I'd come up with a patch for that.

- gst-plugins-bad: iiuc the qtsink plugin is badly named atm. The .so file
should probably be named as the plugin ("libgstqt.so" instead of
"libgstqtsink.so") otherwise the ndk-build generates wrong code with the
GST_PLUGIN_STATIC_DECLARE macros. Right?

- Having modfied the tests/examples/qt/qml/ to build for android, bundling in a
gstreamer_android.so I finally ran into an Android error:

E/BufferQueue( 1855):
[org.freedesktop.gstreamer.play/org.qtproject.qt5.android.bindings.QtActivity]
dequeueBuffer: SurfaceTexture has been abandoned!
E/[EGL-ERROR]( 2729): void __egl_platform_dequeue_buffer(egl_surface*):1271:
failed to dequeue buffer from native window (0x535dc6e8); err = -19, buf =
0x52262974
E/BufferQueue( 1855):
[org.freedesktop.gstreamer.play/org.qtproject.qt5.android.bindings.QtActivity]
setBufferCount: SurfaceTexture has been abandoned!
E/SurfaceTextureClient( 2729): ISurfaceTexture::setBufferCount(0) returned No
such device

Not sure if this is a gst- or a qt/qml-problem. Have not yet been digging
deeper ...

To sum up: Building the qml-module as a shared one for android seems to be hard
work if possible at all. Then, on iOS from what I googled about it static
linking is mandatory. Given that, I tend to agree with you that on (these)
mobile platforms linking everything statically might be the best way to go. Ok?

Still my above problem needs to be solved: how to inject the Qt-dependcies in a
cerbero-build. Unless you plan to build Qt *inside* the cerbero env -- would
you!?? -- the pkg-config deps would need to be injected from outside the
build-env. How do you plan to handle this?

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