Android (Qt 6.9) + GStreamer: how do I build/enable qml6glsink? “Needs a windowing backend” on Android

Goal
Get qml6glsink working on Android with Qt 6.9 (QML + GStreamer).

Context
I’m building GStreamer for Android inside a GitHub Actions runner so the setup is fully reproducible and clean. Workflow is here (exact steps + flags in YAML):
https://github.com/OpenHD/gst-full-android/blob/main/.github/workflows/compile.yml

What happens
The build (or runtime) tells me I need a “windowing backend.” On Android there isn’t a traditional windowing system, so I’m unsure which backend qml6glsink expects and how to enable it in the build.

What I think is going on
qml6glsink uses GStreamer-GL under the hood. On Android that should mean EGL/ANativeWindow rather than X11/Wayland. I suspect I’m missing the correct GStreamer-GL platform toggles (or Qt6 integration bits) when building for Android.

Questions

  1. Which Meson/CMake options are required to build qml6glsink for Android?

    • e.g., GStreamer-GL: do I need to explicitly enable an Android/EGL platform (-Dgl=enabled, -Dgl_platform=…) for the sink to work?
  2. Are there Qt6-specific flags or headers I must point to so that qml6glsink picks up the right Qt/GL integration on Android?

  3. Is qml6glsink the recommended sink on Android with Qt 6.9 today, or should I use a different sink/approach?

  4. If the “windowing backend” error typically means “GStreamer-GL wasn’t built with the Android platform,” what are the minimal toggles to flip in a headless CI environment?

Build details

  • Target: Android (AAB/APK)

  • Qt: 6.9

  • GStreamer: (from the workflow)

  • Toolchain/NDK: (from the workflow)

  • Repro steps: run the GitHub workflow above

Any pointers on the exact flags or a minimal working example for qml6glsink on Android would be amazing. Thanks!

The Qt6 plugin does not currently have support for Android. That is still TODO as you can see from the meson build files: subprojects/gst-plugins-good/ext/qt6/meson.build · main · GStreamer / gstreamer · GitLab .

Can we disable the windowing or is it needed for qml6glsink

Some kind of windowing is always required for doing anything with GL. It’s how OpenGL interfaces with how to display pixels on the screen.