[Development] The dark side of QtMultimedia - strikes back

Massimo Callegari massimocallegari at yahoo.it
Sun Jul 5 13:06:33 CEST 2015



Update.
The message "No m_videoSink available!" is clearly an alarm that something is going wrong.

So I checked the code and...surprise !
The EGLFS platform is not even considered ! Well done !

Code extract from qtmultimedia/src/gsttols/qgstreamervideowindow.cpp line 59:

if (elementName) {
    m_videoSink = gst_element_factory_make(elementName, NULL);
} else if (QGuiApplication::platformName().compare(QLatin1String("xcb"), Qt::CaseInsensitive) == 0) {
    // We need a native X window handle to be able to use xvimagesink.
    // Bail out if Qt is not using xcb (the control will then be ignored by the plugin)
    m_videoSink = gst_element_factory_make("xvimagesink", NULL);
}

if (m_videoSink) {
    ...
}
else
    qDebug() << "No m_videoSink available!";


I tried to add something like:
else if (QGuiApplication::platformName().compare(QLatin1String("eglfs"), Qt::CaseInsensitive) == 0) {
    m_videoSink = gst_element_factory_make("eglglessink", NULL);
}

The error message disappears, but I get a black fullscreen result. 
I don't even see the player example UI.
I guess it depends on the compositing between the gst window and the main eglfs window.
So I haven't gone any further.
I can tweak the player example to accept a filename from the command line and play it automatically.
At least I can check if the video playback is OK in this way.

This is extremely sad. I thought the gst 1.0 support came especially for the raspberry Pi, since the little dude cannot afford software decoding (thus the need of OMX -> thus the need of gst 1.0)

I can try the same tests on Xorg, but it's out of my scope.
I don't want to use Xorg but instead I will use Wayland.



More information about the Development mailing list