[Development] Qt 5.5 for Android - More Regressions Since 5.3
Hi, Trying Qt-5.5 for Android, the following regressions since Qt-5.3 are still inside and break it: 1. QTBUG-44337 - [REG 5.3-5.4] Android: QFileDialog for Save Keeps Save Button Disabled until the filename contains a dot 2. QTBUG-44271 - [REG 5.3 -> 5.4] Android: QFontComboBox Broken and even worse: 3. QProgressDialog instances are shown immediately on allocation and even explicit hide is not helping (Android 4.4.2, Nexus-7-2013) This is a regression since 5.4 Does anybody cares? If yes, I will open the issue. In Qt-5.3.1 all the above was working properly. IMHO, Qt for iOS and Android requires serious "go for stability" instead the current run for more and fancy features. Still, it might be that my visibility is limited and other people do not feel so or sales consideration require more features ASAP and do not care the quality. Thank you. Regards, Robert ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
[Development] The dark side of QtMultimedia - strikes back
>On 2015-07-05, Massimo Callegari wrote: >> 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. >Nice. Did you submit your work to gerrit ? Nope, because all I've got are 8 lines of code that don't even work properly. The eglfs change segfaults when playing. The linuxfb change shows the video as you can see in the picture I've taken. A complete integration and test of the different platforms is needed before reaching Gerrit. Anyway, here you go. You can simply copy the lines manually and recompile. --- qgstreamervideowindow-ORI.cpp 2015-07-05 21:37:20.843145434 +0200 +++ qgstreamervideowindow.cpp 2015-07-05 13:49:54.784794043 +0200 @@ -62,6 +62,10 @@ // 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); +} else if (QGuiApplication::platformName().compare(QLatin1String("eglfs"), Qt::CaseInsensitive) == 0) { +m_videoSink = gst_element_factory_make("eglglessink", NULL); +} else if (QGuiApplication::platformName().compare(QLatin1String("linuxfb"), Qt::CaseInsensitive) == 0) { +m_videoSink = gst_element_factory_make("fbdevsink", NULL); } if (m_videoSink) { --- qgstreamervideowidget-ORI.cpp 2015-07-05 21:37:37.391433363 +0200 +++ qgstreamervideowidget.cpp 2015-07-05 13:50:35.273375245 +0200 @@ -102,6 +102,10 @@ // Bail out if Qt is not using xcb (the control will then be ignored by the plugin) if (QGuiApplication::platformName().compare(QLatin1String("xcb"), Qt::CaseInsensitive) == 0) m_videoSink = gst_element_factory_make ("xvimagesink", NULL); +else if (QGuiApplication::platformName().compare(QLatin1String("eglfs"), Qt::CaseInsensitive) == 0) +m_videoSink = gst_element_factory_make ("eglglessink", NULL); +else if (QGuiApplication::platformName().compare(QLatin1String("linuxfb"), Qt::CaseInsensitive) == 0) +m_videoSink = gst_element_factory_make("fbdevsink", NULL); if (m_videoSink) { // Check if the xv sink is usable ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] The dark side of QtMultimedia - strikes back
On 2015-07-05, Massimo Callegari wrote: > 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. Nice. Did you submit your work to gerrit ? /Sune ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
[Development] The dark side of QtMultimedia - strikes back
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 A: "development@qt-project.org" 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 Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
[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 Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] The dark side of QtMultimedia - strikes back
Da: Hausmann Simon A: Massimo Callegari ; "development@qt-project.org" Inviato: Domenica 5 Luglio 2015 8:33 Oggetto: Re: [Development] The dark side of QtMultimedia - strikes back > Hi, > Could you elaborate how omxplayer uses gstreamer? > I only see openmax il usage, but perhaps I am missing something. > Thanks, > Simon Simon, you are right. omxplayer goes straight into ffmpeg and omx. My fault here. Anyway see my reply to Thiago with the gst-launch test. The chain GST-1.0->OMX does indeed work as expected on the Pi. Thanks, Massimo ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] The dark side of QtMultimedia - strikes back
Sorry, ignore the previous. Stupid formatting :( > That doesn't mean it's working perfectly. This example working means this > example works, that's all. > Anyway, can you at least try raw gstreamer, like gst-launch? Yes I can. pi@raspberrypi ~ $ gst-launch-1.0 filesrc location=sintel-1280-surround.mp4 ! qtdemux name=demuxer \ demuxer. ! queue ! faad ! alsasink \ demuxer. ! queue max-size-bytes=1000 ! h264parse ! omxh264dec ! queue max-size-buffers=4 ! "video/x-raw, format=(string)I420" ! eglglessink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL; Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstAudioSinkClock Works like a charm. No frame drops, no interruptions, no AV out of sync. I had to add that weird I420 format otherwise the video was flipped upside down. For the sake of completeness I add also the OMX codecs inspection: pi@raspberrypi ~ $ gst-inspect-1.0 | grep omx omx: omxmpeg2videodec: OpenMAX MPEG2 Video Decoder omx: omxmpeg4videodec: OpenMAX MPEG4 Video Decoder omx: omxh263dec: OpenMAX H.263 Video Decoder omx: omxh264dec: OpenMAX H.264 Video Decoder omx: omxtheoradec: OpenMAX Theora Video Decoder omx: omxvp8dec: OpenMAX VP8 Video Decoder omx: omxmjpegdec: OpenMAX MJPEG Video Decoder omx: omxvc1dec: OpenMAX WMV Video Decoder omx: omxh264enc: OpenMAX H.264 Video Encoder And also the packages installed in the distro: pi@raspberrypi ~ $ dpkg -l | grep gst ii gir1.2-gst-plugins-base-1.0 1.2.0-1co1rpi3 armhfDescription: GObject introspection data for the GStreamer Plugins Base library ii gir1.2-gstreamer-1.0 1.2.0-1rpi3 armhfDescription: GObject introspection data for the GStreamer library ii gstreamer0.10-gconf:armhf 0.10.31-3+nmu1 armhfGStreamer plugin for getting the sink/source information from GConf ii gstreamer0.10-plugins-base:armhf 0.10.36-1.1 armhfGStreamer plugins from the "base" set ii gstreamer0.10-plugins-good:armhf 0.10.31-3+nmu1 armhfGStreamer plugins from the "good" set ii gstreamer0.10-plugins-ugly:armhf 0.10.19-2 armhfGStreamer plugins from the "ugly" set ii gstreamer0.10-x:armhf 0.10.36-1.1 armhfGStreamer plugins for X11 and Pango ii gstreamer1.0-alsa:armhf 1.2.0-1co1rpi3 armhfGStreamer plugin for ALSA ii gstreamer1.0-libav:armhf 1.2.0-1co2rpi1rpi3 armhflibav plugin for GStreamer ii gstreamer1.0-omx 1.0.0.1-0+rpi13rpi2 armhfGStreamer OpenMAX plugins ii gstreamer1.0-plugins-bad:armhf1.2.1-0+rpi1rpi3 armhfGStreamer plugins from the "bad" set ii gstreamer1.0-plugins-base:armhf 1.2.0-1co1rpi3 armhfGStreamer plugins from the "base" set ii gstreamer1.0-plugins-good:armhf 1.2.0-1co6rpi3 armhfGStreamer plugins from the "good" set ii gstreamer1.0-tools1.2.0-1rpi3 armhfTools for use with GStreamer ii gstreamer1.0-x:armhf 1.2.0-1co1rpi3 armhfGStreamer plugins for X11 and Pango rc libclutter-gst-1.0-0:armhf1.5.4-1+build0 armhfOpen GL based interactive canvas library GStreamer elements ii libgstreamer-plugins-bad1.0-0:armhf 1.2.1-0+rpi1rpi3 armhfGStreamer development files for libraries from the "bad" set ii libgstreamer-plugins-base0.10-0:armhf 0.10.36-1.1 armhfGStreamer libraries from the "base" set ii libgstreamer-plugins-base1.0-0:armhf 1.2.0-1co1rpi3 armhfGStreamer libraries from the "base" set ii libgstreamer-plugins-base1.0-dev 1.2.0-1co1rpi3 armhfGStreamer development files for libraries from the "base" set ii libgstreamer0.10-0:armhf 0.10.36-1.2 armhfCore GStreamer libraries and elements ii libgstreamer1.0-0:armhf 1.2.0-1rpi3 armhfCore GStreamer libraries and elements ii libgstreamer1.0-dev 1.2.0-1rpi3 armhfGStreamer core development files ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] The dark side of QtMultimedia - strikes back
> That doesn't mean it's working perfectly. This example working means this > example works, that's all. > Anyway, can you at least try raw gstreamer, like gst-launch? Yes I can.pi@raspberrypi ~ $ gst-launch-1.0 filesrc location=sintel-1280-surround.mp4 ! qtdemux name=demuxer \ demuxer. ! queue ! faad ! alsasink \ demuxer. ! queue max-size-bytes=1000 ! h264parse ! omxh264dec ! queue max-size-buffers=4 ! "video/x-raw, format=(string)I420" ! eglglessink Setting pipeline to PAUSED ...Pipeline is PREROLLING ...Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;Pipeline is PREROLLED ...Setting pipeline to PLAYING ...New clock: GstAudioSinkClock Works like a charm. No frame drops, no interruptions, no AV out of sync.I had to add that weird I420 format otherwise the video was flipped upside down. For the sake of completeness I add also the OMX codecs inspection:pi@raspberrypi ~ $ gst-inspect-1.0 | grep omxomx: omxmpeg2videodec: OpenMAX MPEG2 Video Decoderomx: omxmpeg4videodec: OpenMAX MPEG4 Video Decoderomx: omxh263dec: OpenMAX H.263 Video Decoderomx: omxh264dec: OpenMAX H.264 Video Decoderomx: omxtheoradec: OpenMAX Theora Video Decoderomx: omxvp8dec: OpenMAX VP8 Video Decoderomx: omxmjpegdec: OpenMAX MJPEG Video Decoderomx: omxvc1dec: OpenMAX WMV Video Decoderomx: omxh264enc: OpenMAX H.264 Video Encoder And also the packages installed in the distro: pi@raspberrypi ~ $ dpkg -l | grep gstii gir1.2-gst-plugins-base-1.0 1.2.0-1co1rpi3 armhf Description: GObject introspection data for the GStreamer Plugins Base libraryii gir1.2-gstreamer-1.0 1.2.0-1rpi3 armhf Description: GObject introspection data for the GStreamer libraryii gstreamer0.10-gconf:armhf 0.10.31-3+nmu1 armhf GStreamer plugin for getting the sink/source information from GConfii gstreamer0.10-plugins-base:armhf 0.10.36-1.1 armhf GStreamer plugins from the "base" setii gstreamer0.10-plugins-good:armhf 0.10.31-3+nmu1 armhf GStreamer plugins from the "good" setii gstreamer0.10-plugins-ugly:armhf 0.10.19-2 armhf GStreamer plugins from the "ugly" setii gstreamer0.10-x:armhf 0.10.36-1.1 armhf GStreamer plugins for X11 and Pangoii gstreamer1.0-alsa:armhf 1.2.0-1co1rpi3 armhf GStreamer plugin for ALSAii gstreamer1.0-libav:armhf 1.2.0-1co2rpi1rpi3 armhf libav plugin for GStreamerii gstreamer1.0-omx 1.0.0.1-0+rpi13rpi2 armhf GStreamer OpenMAX pluginsii gstreamer1.0-plugins-bad:armhf 1.2.1-0+rpi1rpi3 armhf GStreamer plugins from the "bad" setii gstreamer1.0-plugins-base:armhf 1.2.0-1co1rpi3 armhf GStreamer plugins from the "base" setii gstreamer1.0-plugins-good:armhf 1.2.0-1co6rpi3 armhf GStreamer plugins from the "good" setii gstreamer1.0-tools 1.2.0-1rpi3 armhf Tools for use with GStreamerii gstreamer1.0-x:armhf 1.2.0-1co1rpi3 armhf GStreamer plugins for X11 and Pangorc libclutter-gst-1.0-0:armhf 1.5.4-1+build0 armhf Open GL based interactive canvas library GStreamer elementsii libgstreamer-plugins-bad1.0-0:armhf 1.2.1-0+rpi1rpi3 armhf GStreamer development files for libraries from the "bad" setii libgstreamer-plugins-base0.10-0:armhf 0.10.36-1.1 armhf GStreamer libraries from the "base" setii libgstreamer-plugins-base1.0-0:armhf 1.2.0-1co1rpi3 armhf GStreamer libraries from the "base" setii libgstreamer-plugins-base1.0-dev 1.2.0-1co1rpi3 armhf GStreamer development files for libraries from the "base" setii libgstreamer0.10-0:armhf 0.10.36-1.2 armhf Core GStreamer libraries and elementsii libgstreamer1.0-0:armhf 1.2.0-1rpi3 armhf Core GStreamer libraries and elementsii libgstreamer1.0-dev 1.2.0-1rpi3 armhf GStreamer core development files ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development