[Development] Qt 5.5 for Android - More Regressions Since 5.3

2015-07-05 Thread Robert Iakobashvili
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

2015-07-05 Thread Massimo Callegari
>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

2015-07-05 Thread Sune Vuorela
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

2015-07-05 Thread Massimo Callegari
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

2015-07-05 Thread Massimo Callegari


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

2015-07-05 Thread Massimo Callegari


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

2015-07-05 Thread Massimo Callegari
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

2015-07-05 Thread Massimo Callegari
> 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