Update #2 (sorry for spamming) I patched qgstreamervideowindow.cpp and qgstreamervideowidget.cpp to support the linuxfb platform. It kinda works !!
Screenshot here: http://pasteboard.co/1JlYRT9l.jpg Videos can be played hardware decoded with audio and video until the end. It's definitely using the OMX plugin. Some other issues raised like these: pi@raspberrypi ~ $ ./player -platform linuxfb sintel-1280-surround.mp4 (player:2857): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstFBDEVSink' has no property named 'force-aspect-ratio' This plugin does not support setParent! (player:2857): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstFBDEVSink' has no property named 'force-aspect-ratio' My goal is to play fullscreen, so probably I can manage to find a way on the Linux FB. In any case the issue is: QtMultimedia gstreamer-1.0 support has been written around XCB. No eglfs, linuxfb, directfb, etc. Someone should have written it in https://wiki.qt.io/New_Features_in_Qt_5.5 ----- Messaggio originale ----- Da: Massimo Callegari <[email protected]> A: "[email protected]" <[email protected]> Cc: Inviato: Domenica 5 Luglio 2015 13:06 Oggetto: [Development] The dark side of QtMultimedia - strikes back 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. _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
