From 081395a749ce4a8e5fe656c0ca4946d302018534 Mon Sep 17 00:00:00 2001 From: Jan Arve Saether Date: Mon, 29 Apr 2013 15:03:25 +0200 Subject: [PATCH 01/13] Fix bic autotest Caused by https://codereview.qt-project.org/54820 I actually tried to avoid this with https://codereview.qt-project.org/54837 but my assumption was wrong. Change-Id: If0db8c9b5a317e07d97bcf97056b44e2124d1e1b Reviewed-by: Sergio Ahumada Reviewed-by: Frederik Gladhorn --- .../QtMultimedia.5.0.0.linux-gcc-amd64.txt | 31 ++----------------- .../QtMultimedia.5.0.0.linux-gcc-ia32.txt | 31 ++----------------- ...ultimediaWidgets.5.0.0.linux-gcc-amd64.txt | 31 ++----------------- ...MultimediaWidgets.5.0.0.linux-gcc-ia32.txt | 31 ++----------------- 4 files changed, 12 insertions(+), 112 deletions(-) diff --git a/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-amd64.txt index 7ff972c3..56b4c594 100644 --- a/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-amd64.txt +++ b/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-amd64.txt @@ -4798,40 +4798,15 @@ QScreenOrientationChangeEvent (0x7f96f31b8958) 0 QEvent (0x7f96f31b90c0) 0 primary-for QScreenOrientationChangeEvent (0x7f96f31b8958) -Class QAccessible::QPrivateSignal - size=1 align=1 - base size=0 base align=1 -QAccessible::QPrivateSignal (0x7f96f31b9180) 0 empty - Class QAccessible::State size=8 align=8 base size=5 base align=8 QAccessible::State (0x7f96f31b91e0) 0 -Vtable for QAccessible -QAccessible::_ZTV11QAccessible: 14u entries -0 (int (*)(...))0 -8 (int (*)(...))(& _ZTI11QAccessible) -16 (int (*)(...))QAccessible::metaObject -24 (int (*)(...))QAccessible::qt_metacast -32 (int (*)(...))QAccessible::qt_metacall -40 (int (*)(...))QAccessible::~QAccessible -48 (int (*)(...))QAccessible::~QAccessible -56 (int (*)(...))QObject::event -64 (int (*)(...))QObject::eventFilter -72 (int (*)(...))QObject::timerEvent -80 (int (*)(...))QObject::childEvent -88 (int (*)(...))QObject::customEvent -96 (int (*)(...))QObject::connectNotify -104 (int (*)(...))QObject::disconnectNotify - Class QAccessible - size=16 align=8 - base size=16 base align=8 -QAccessible (0x7f96f31b8af8) 0 - vptr=((& QAccessible::_ZTV11QAccessible) + 16u) - QObject (0x7f96f31b9120) 0 - primary-for QAccessible (0x7f96f31b8af8) + size=1 align=1 + base size=0 base align=1 +QAccessible (0x7f96f31b8af8) 0 empty Vtable for QAccessibleInterface QAccessibleInterface::_ZTV20QAccessibleInterface: 23u entries diff --git a/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-ia32.txt index 24afc6fa..77d7125d 100644 --- a/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-ia32.txt +++ b/tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-ia32.txt @@ -4798,40 +4798,15 @@ QScreenOrientationChangeEvent (0xb377712c) 0 QEvent (0xb35aa770) 0 primary-for QScreenOrientationChangeEvent (0xb377712c) -Class QAccessible::QPrivateSignal - size=1 align=1 - base size=0 base align=1 -QAccessible::QPrivateSignal (0xb35aa930) 0 empty - Class QAccessible::State size=8 align=4 base size=5 base align=4 QAccessible::State (0xb35aa968) 0 -Vtable for QAccessible -QAccessible::_ZTV11QAccessible: 14u entries -0 (int (*)(...))0 -4 (int (*)(...))(& _ZTI11QAccessible) -8 (int (*)(...))QAccessible::metaObject -12 (int (*)(...))QAccessible::qt_metacast -16 (int (*)(...))QAccessible::qt_metacall -20 (int (*)(...))QAccessible::~QAccessible -24 (int (*)(...))QAccessible::~QAccessible -28 (int (*)(...))QObject::event -32 (int (*)(...))QObject::eventFilter -36 (int (*)(...))QObject::timerEvent -40 (int (*)(...))QObject::childEvent -44 (int (*)(...))QObject::customEvent -48 (int (*)(...))QObject::connectNotify -52 (int (*)(...))QObject::disconnectNotify - Class QAccessible - size=8 align=4 - base size=8 base align=4 -QAccessible (0xb3777168) 0 - vptr=((& QAccessible::_ZTV11QAccessible) + 8u) - QObject (0xb35aa850) 0 - primary-for QAccessible (0xb3777168) + size=1 align=1 + base size=0 base align=1 +QAccessible (0xb3777168) 0 empty Vtable for QAccessibleInterface QAccessibleInterface::_ZTV20QAccessibleInterface: 23u entries diff --git a/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-amd64.txt index 5b55c44f..fda7d51a 100644 --- a/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-amd64.txt +++ b/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-amd64.txt @@ -3986,40 +3986,15 @@ QScreenOrientationChangeEvent (0x7f51f085d2d8) 0 QEvent (0x7f51f08540c0) 0 primary-for QScreenOrientationChangeEvent (0x7f51f085d2d8) -Class QAccessible::QPrivateSignal - size=1 align=1 - base size=0 base align=1 -QAccessible::QPrivateSignal (0x7f51f0854180) 0 empty - Class QAccessible::State size=8 align=8 base size=5 base align=8 QAccessible::State (0x7f51f08541e0) 0 -Vtable for QAccessible -QAccessible::_ZTV11QAccessible: 14u entries -0 (int (*)(...))0 -8 (int (*)(...))(& _ZTI11QAccessible) -16 (int (*)(...))QAccessible::metaObject -24 (int (*)(...))QAccessible::qt_metacast -32 (int (*)(...))QAccessible::qt_metacall -40 (int (*)(...))QAccessible::~QAccessible -48 (int (*)(...))QAccessible::~QAccessible -56 (int (*)(...))QObject::event -64 (int (*)(...))QObject::eventFilter -72 (int (*)(...))QObject::timerEvent -80 (int (*)(...))QObject::childEvent -88 (int (*)(...))QObject::customEvent -96 (int (*)(...))QObject::connectNotify -104 (int (*)(...))QObject::disconnectNotify - Class QAccessible - size=16 align=8 - base size=16 base align=8 -QAccessible (0x7f51f085d478) 0 - vptr=((& QAccessible::_ZTV11QAccessible) + 16u) - QObject (0x7f51f0854120) 0 - primary-for QAccessible (0x7f51f085d478) + size=1 align=1 + base size=0 base align=1 +QAccessible (0x7f51f085d478) 0 empty Vtable for QAccessibleInterface QAccessibleInterface::_ZTV20QAccessibleInterface: 23u entries diff --git a/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-ia32.txt index 110a5689..2319a77a 100644 --- a/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-ia32.txt +++ b/tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-ia32.txt @@ -3986,40 +3986,15 @@ QScreenOrientationChangeEvent (0xb39638e8) 0 QEvent (0xb3a2ff50) 0 primary-for QScreenOrientationChangeEvent (0xb39638e8) -Class QAccessible::QPrivateSignal - size=1 align=1 - base size=0 base align=1 -QAccessible::QPrivateSignal (0xb3a48070) 0 empty - Class QAccessible::State size=8 align=4 base size=5 base align=4 QAccessible::State (0xb3a480a8) 0 -Vtable for QAccessible -QAccessible::_ZTV11QAccessible: 14u entries -0 (int (*)(...))0 -4 (int (*)(...))(& _ZTI11QAccessible) -8 (int (*)(...))QAccessible::metaObject -12 (int (*)(...))QAccessible::qt_metacast -16 (int (*)(...))QAccessible::qt_metacall -20 (int (*)(...))QAccessible::~QAccessible -24 (int (*)(...))QAccessible::~QAccessible -28 (int (*)(...))QObject::event -32 (int (*)(...))QObject::eventFilter -36 (int (*)(...))QObject::timerEvent -40 (int (*)(...))QObject::childEvent -44 (int (*)(...))QObject::customEvent -48 (int (*)(...))QObject::connectNotify -52 (int (*)(...))QObject::disconnectNotify - Class QAccessible - size=8 align=4 - base size=8 base align=4 -QAccessible (0xb3963924) 0 - vptr=((& QAccessible::_ZTV11QAccessible) + 8u) - QObject (0xb3a2fb60) 0 - primary-for QAccessible (0xb3963924) + size=1 align=1 + base size=0 base align=1 +QAccessible (0xb3963924) 0 empty Vtable for QAccessibleInterface QAccessibleInterface::_ZTV20QAccessibleInterface: 23u entries From ffb26b07c84d99ff3b3c857d7f85cfe1b724ec45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Fri, 26 Apr 2013 14:49:45 +0200 Subject: [PATCH 02/13] Android: Added config tests for multimedia on android. The Android multimedia plug-in requires API level 11 to compile, so the config test will check and issue a message about the requirement if the API level can't be satisfied. Change-Id: I6c21fe1255024e853023bd8168dfa917b00c4c23 Reviewed-by: Oswald Buddenhagen --- config.tests/android/android.pro | 4 ++++ config.tests/android/main.java | 6 ++++++ qtmultimedia.pro | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 config.tests/android/android.pro create mode 100644 config.tests/android/main.java diff --git a/config.tests/android/android.pro b/config.tests/android/android.pro new file mode 100644 index 00000000..dcf5df18 --- /dev/null +++ b/config.tests/android/android.pro @@ -0,0 +1,4 @@ +CONFIG += java +API_VERSION = android-11 +JAVASOURCES += main.java + diff --git a/config.tests/android/main.java b/config.tests/android/main.java new file mode 100644 index 00000000..1ab87259 --- /dev/null +++ b/config.tests/android/main.java @@ -0,0 +1,6 @@ +import android.graphics.SurfaceTexture; + +class BuildTest +{ + public static void main(String [] args) { } +} diff --git a/qtmultimedia.pro b/qtmultimedia.pro index aeb97464..53f6b988 100644 --- a/qtmultimedia.pro +++ b/qtmultimedia.pro @@ -8,6 +8,8 @@ win32 { qtCompileTest(evr) } else:mac { qtCompileTest(avfoundation) +} else:android { + !qtCompileTest(android):error("QtMultimedia for Android requires API level 11") } else { qtCompileTest(alsa) qtCompileTest(pulseaudio) From c34910a22f9d57e51610a8f875b55b0828b8da21 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 26 Apr 2013 15:50:01 +0200 Subject: [PATCH 03/13] Doc: Fix example paths referred in documentation qdocconf files for both Qt Multimedia and Qt Multimedia Widgets already define the correct example path. This change fixes also the example documentation to use the correct path, as well as the link to examples in Multimedia Overview. Change-Id: I72d75027ee18f6398eb76dc40bcc3d122541b1c9 Reviewed-by: Venugopal Shivashankar Reviewed-by: Jerome Pasion --- .../audiodevices/doc/src/audiodevices.qdoc | 2 +- .../audioengine/doc/src/audioengine.qdoc | 2 +- .../audioinput/doc/src/audioinput.qdoc | 2 +- .../audiooutput/doc/src/audiooutput.qdoc | 2 +- .../audiorecorder/doc/src/audiorecorder.qdoc | 2 +- .../doc/src/declarative-radio.qdoc | 2 +- .../multimedia/spectrum/doc/src/spectrum.qdoc | 2 +- .../multimedia/video/doc/src/qmlvideo.qdoc | 2 +- .../multimedia/video/doc/src/qmlvideofx.qdoc | 2 +- .../camera/doc/src/camera.qdoc | 2 +- .../doc/src/declarative-camera.qdoc | 2 +- .../player/doc/src/player.qdoc | 2 +- .../doc/src/videographicsitem.qdoc | 2 +- .../videowidget/doc/src/videowidget.qdoc | 2 +- src/multimedia/doc/src/multimedia.qdoc | 30 +++++++++---------- 15 files changed, 29 insertions(+), 29 deletions(-) diff --git a/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc b/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc index d0b1694e..d7558448 100644 --- a/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc +++ b/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/audiodevices + \example audiodevices \title Audio Devices Example \ingroup multimedia_examples \brief The Audio Devices example shows the application of the audio devices APIs diff --git a/examples/multimedia/audioengine/doc/src/audioengine.qdoc b/examples/multimedia/audioengine/doc/src/audioengine.qdoc index b5294585..c83247df 100644 --- a/examples/multimedia/audioengine/doc/src/audioengine.qdoc +++ b/examples/multimedia/audioengine/doc/src/audioengine.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/audioengine + \example audioengine \title AudioEngine Example \ingroup multimedia_examples \brief The Audio Engine example demonstrates 3D sound control using diff --git a/examples/multimedia/audioinput/doc/src/audioinput.qdoc b/examples/multimedia/audioinput/doc/src/audioinput.qdoc index 8c4f3542..39ef2615 100644 --- a/examples/multimedia/audioinput/doc/src/audioinput.qdoc +++ b/examples/multimedia/audioinput/doc/src/audioinput.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/audioinput + \example audioinput \title Audio Input Example \ingroup multimedia_examples \brief The Audio Input Example shows the use of the QAudioInput class. diff --git a/examples/multimedia/audiooutput/doc/src/audiooutput.qdoc b/examples/multimedia/audiooutput/doc/src/audiooutput.qdoc index 9d028efa..bc79e6a5 100644 --- a/examples/multimedia/audiooutput/doc/src/audiooutput.qdoc +++ b/examples/multimedia/audiooutput/doc/src/audiooutput.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/audiooutput + \example audiooutput \title Audio Output Example \ingroup multimedia_examples \brief The Audio Output Example show the use of the QAudioOutput API. diff --git a/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc b/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc index a369337e..8453ea34 100644 --- a/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc +++ b/examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/audiorecorder + \example audiorecorder \title Audio Recorder Example \ingroup multimedia_examples \brief The Audio Recorder Example shows how to create a simple audio recorder. diff --git a/examples/multimedia/declarative-radio/doc/src/declarative-radio.qdoc b/examples/multimedia/declarative-radio/doc/src/declarative-radio.qdoc index 17870b6a..99c41114 100644 --- a/examples/multimedia/declarative-radio/doc/src/declarative-radio.qdoc +++ b/examples/multimedia/declarative-radio/doc/src/declarative-radio.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/declarative-radio + \example declarative-radio \title Declarative Radio Example \brief Demonstrates the radio functionality \ingroup multimedia_examples diff --git a/examples/multimedia/spectrum/doc/src/spectrum.qdoc b/examples/multimedia/spectrum/doc/src/spectrum.qdoc index 4c9ce60e..28083895 100644 --- a/examples/multimedia/spectrum/doc/src/spectrum.qdoc +++ b/examples/multimedia/spectrum/doc/src/spectrum.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimedia/spectrum + \example spectrum \title Spectrum Example \ingroup multimedia_examples \brief The Spectrum Example uses a combination multimedia APIs to process microphone input. diff --git a/examples/multimedia/video/doc/src/qmlvideo.qdoc b/examples/multimedia/video/doc/src/qmlvideo.qdoc index 9a2cb37c..1efed800 100644 --- a/examples/multimedia/video/doc/src/qmlvideo.qdoc +++ b/examples/multimedia/video/doc/src/qmlvideo.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! -\example multimedia/video/qmlvideo +\example video/qmlvideo \title QML Video Example \ingroup multimedia_examples diff --git a/examples/multimedia/video/doc/src/qmlvideofx.qdoc b/examples/multimedia/video/doc/src/qmlvideofx.qdoc index b2ea1288..f4abbc57 100644 --- a/examples/multimedia/video/doc/src/qmlvideofx.qdoc +++ b/examples/multimedia/video/doc/src/qmlvideofx.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! -\example multimedia/video/qmlvideofx +\example video/qmlvideofx \title QML Video Shader Effects Example \ingroup multimedia_examples diff --git a/examples/multimediawidgets/camera/doc/src/camera.qdoc b/examples/multimediawidgets/camera/doc/src/camera.qdoc index a7bbf38c..d1a855d4 100644 --- a/examples/multimediawidgets/camera/doc/src/camera.qdoc +++ b/examples/multimediawidgets/camera/doc/src/camera.qdoc @@ -29,7 +29,7 @@ /*! -\example multimediawidgets/camera +\example camera \title Camera Example \ingroup multimedia_examples \brief The Camera Example shows how to use the API to capture a still image diff --git a/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc b/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc index de000d8b..02e77854 100644 --- a/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc +++ b/examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! -\example multimediawidgets/declarative-camera +\example declarative-camera \title QML Camera Example \ingroup multimedia_examples \brief The Camera Example shows how to use the API to capture a still image diff --git a/examples/multimediawidgets/player/doc/src/player.qdoc b/examples/multimediawidgets/player/doc/src/player.qdoc index 0e7d5dcf..7a723091 100644 --- a/examples/multimediawidgets/player/doc/src/player.qdoc +++ b/examples/multimediawidgets/player/doc/src/player.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimediawidgets/player + \example player \title Media Player Example \ingroup multimedia_examples \brief Demonstrates the audio and video playback functionality diff --git a/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc b/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc index 2b1e44df..3ccdba5f 100644 --- a/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc +++ b/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! -\example multimediawidgets/videographicsitem +\example videographicsitem \title Video Graphics Item Example \ingroup multimedia_examples \brief This example demonstrates how to stream video on a graphics scene. diff --git a/examples/multimediawidgets/videowidget/doc/src/videowidget.qdoc b/examples/multimediawidgets/videowidget/doc/src/videowidget.qdoc index 765eb6b0..805a830b 100644 --- a/examples/multimediawidgets/videowidget/doc/src/videowidget.qdoc +++ b/examples/multimediawidgets/videowidget/doc/src/videowidget.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! - \example multimediawidgets/videowidget + \example videowidget \title Video Widget Example \ingroup multimedia_examples \brief This example is a simple video player diff --git a/src/multimedia/doc/src/multimedia.qdoc b/src/multimedia/doc/src/multimedia.qdoc index d53967e6..d9346827 100644 --- a/src/multimedia/doc/src/multimedia.qdoc +++ b/src/multimedia/doc/src/multimedia.qdoc @@ -83,52 +83,52 @@ For some quick recipes, look at the overviews above and consult this table: \li QSoundEffect \row \li Playing low latency audio - \li \l{multimedia/audiooutput}{audioinput}, - \l{multimedia/spectrum}{spectrum} + \li \l{audioinput}, + \l{spectrum} \li \li QAudioOutput \row \li Playing encoded audio (MP3, AAC etc) - \li \l{multimediawidgets/player}{player} + \li \l{player} \li \l Audio, \l {MediaPlayer} \li QMediaPlayer \row \li Accessing raw audio input data - \li \l{multimedia/spectrum}{spectrum}, - \l {multimedia/audioinput}{audioinput} + \li \l{spectrum}, + \l{audioinput} \li \li QAudioInput \row \li Recording encoded audio data - \li \l {multimedia/audiorecorder}{audiorecorder} + \li \l{audiorecorder} \li \li QAudioRecorder \row \li Discovering raw audio devices - \li \l {multimedia/audiodevices}{audiodevices} + \li \l{audiodevices} \li \li QAudioDeviceInfo \row \li Video Playback - \li \l {multimediawidgets/player}{player}, - \l {multimedia/video/qmlvideo}{qmlvideo}, - \l{multimedia/video/qmlvideofx}{qmlvideofx} + \li \l{player}, + \l{video/qmlvideo}{qmlvideo}, + \l{video/qmlvideofx}{qmlvideofx} \li \l MediaPlayer, \l VideoOutput, \l Video \li QMediaPlayer, QVideoWidget, QGraphicsVideoItem \row \li Video Processing - \li \l {multimedia/video/qmlvideofx}{qmlvideofx} + \li \l {video/qmlvideofx}{qmlvideofx} \li \l {MediaPlayer}, \l VideoOutput \li QMediaPlayer, QAbstractVideoSurface, QVideoFrame \row \li Listening to the radio - \li \l {multimedia/declarative-radio}{declarative-radio} + \li \l {declarative-radio} \li \l Radio, \l RadioData \li QRadioTuner, QRadioData \row \li Accessing camera viewfinder \li \l {Camera Example}{camera}, - \l {multimediawidgets/declarative-camera}{declarative-camera} + \l {declarative-camera} \li \l Camera, \l VideoOutput \li QCamera, QVideoWidget, QGraphicsVideoItem \row @@ -139,13 +139,13 @@ For some quick recipes, look at the overviews above and consult this table: \row \li Capturing photos \li \l {Camera Example}{camera}, - \l {multimediawidgets/declarative-camera}{declarative-camera} + \l {declarative-camera} \li \l Camera \li QCamera, QCameraImageCapture \row \li Capturing movies \li \l {Camera Example}{camera}, - \l {multimediawidgets/declarative-camera}{declarative-camera} + \l {declarative-camera} \li \l Camera \li QCamera, QMediaRecorder \row From 5fa32ce4d076b89003ba9f12998918a9648e1891 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 30 Apr 2013 12:39:05 +0200 Subject: [PATCH 04/13] audioengine: update qmltypes Change-Id: I13488291f543748716891cfa0ab9b5dd548ccc86 Reviewed-by: Thomas Hartmann --- src/imports/audioengine/plugins.qmltypes | 96 +++++++++++++----------- 1 file changed, 53 insertions(+), 43 deletions(-) diff --git a/src/imports/audioengine/plugins.qmltypes b/src/imports/audioengine/plugins.qmltypes index 6a7dae1a..8c6267bd 100644 --- a/src/imports/audioengine/plugins.qmltypes +++ b/src/imports/audioengine/plugins.qmltypes @@ -2,6 +2,8 @@ import QtQuick.tooling 1.1 // This file describes the plugin-supplied types contained in the library. // It is used for QML tooling purposes only. +// +// This file was auto-generated with the command 'qmlplugindump -notrelocatable QtAudioEngine 1.0'. Module { Component { @@ -12,27 +14,30 @@ Module { Component { name: "QDeclarativeAttenuationModelInverse" prototype: "QDeclarativeAttenuationModel" - exports: ["AttenuationModelInverse 1.0"] - Property { name: "start"; type: "qreal" } - Property { name: "end"; type: "qreal" } - Property { name: "rolloff"; type: "qreal" } + exports: ["QtAudioEngine/AttenuationModelInverse 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "start"; type: "double" } + Property { name: "end"; type: "double" } + Property { name: "rolloff"; type: "double" } } Component { name: "QDeclarativeAttenuationModelLinear" prototype: "QDeclarativeAttenuationModel" - exports: ["AttenuationModelLinear 1.0"] - Property { name: "start"; type: "qreal" } - Property { name: "end"; type: "qreal" } + exports: ["QtAudioEngine/AttenuationModelLinear 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "start"; type: "double" } + Property { name: "end"; type: "double" } } Component { name: "QDeclarativeAudioCategory" prototype: "QObject" - exports: ["AudioCategory 1.0"] - Property { name: "volume"; type: "qreal" } + exports: ["QtAudioEngine/AudioCategory 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "volume"; type: "double" } Property { name: "name"; type: "string" } Signal { name: "volumeChanged" - Parameter { name: "newVolume"; type: "qreal" } + Parameter { name: "newVolume"; type: "double" } } Signal { name: "stopped" } Signal { name: "paused" } @@ -45,7 +50,8 @@ Module { name: "QDeclarativeAudioEngine" defaultProperty: "bank" prototype: "QObject" - exports: ["AudioEngine 1.0"] + exports: ["QtAudioEngine/AudioEngine 1.0"] + exportMetaObjectRevisions: [0] Property { name: "bank"; type: "QObject"; isList: true; isReadonly: true } Property { name: "categories"; type: "QObject"; isReadonly: true; isPointer: true } Property { name: "samples"; type: "QObject"; isReadonly: true; isPointer: true } @@ -58,8 +64,8 @@ Module { isReadonly: true isPointer: true } - Property { name: "dopplerFactor"; type: "qreal" } - Property { name: "speedOfSound"; type: "qreal" } + Property { name: "dopplerFactor"; type: "double" } + Property { name: "speedOfSound"; type: "double" } Signal { name: "ready" } Signal { name: "liveInstanceCountChanged" } Signal { name: "isLoadingChanged" } @@ -68,18 +74,20 @@ Module { Component { name: "QDeclarativeAudioListener" prototype: "QObject" - exports: ["AudioListener 1.0"] + exports: ["QtAudioEngine/AudioListener 1.0"] + exportMetaObjectRevisions: [0] Property { name: "engine"; type: "QDeclarativeAudioEngine"; isPointer: true } Property { name: "position"; type: "QVector3D" } Property { name: "direction"; type: "QVector3D" } Property { name: "velocity"; type: "QVector3D" } Property { name: "up"; type: "QVector3D" } - Property { name: "gain"; type: "qreal" } + Property { name: "gain"; type: "double" } } Component { name: "QDeclarativeAudioSample" prototype: "QObject" - exports: ["AudioSample 1.0"] + exports: ["QtAudioEngine/AudioSample 1.0"] + exportMetaObjectRevisions: [0] Property { name: "name"; type: "string" } Property { name: "source"; type: "QUrl" } Property { name: "preloaded"; type: "bool" } @@ -90,19 +98,21 @@ Module { Component { name: "QDeclarativePlayVariation" prototype: "QObject" - exports: ["PlayVariation 1.0"] + exports: ["QtAudioEngine/PlayVariation 1.0"] + exportMetaObjectRevisions: [0] Property { name: "sample"; type: "string" } Property { name: "looping"; type: "bool" } - Property { name: "maxGain"; type: "qreal" } - Property { name: "minGain"; type: "qreal" } - Property { name: "maxPitch"; type: "qreal" } - Property { name: "minPitch"; type: "qreal" } + Property { name: "maxGain"; type: "double" } + Property { name: "minGain"; type: "double" } + Property { name: "maxPitch"; type: "double" } + Property { name: "minPitch"; type: "double" } } Component { name: "QDeclarativeSound" defaultProperty: "playVariationlist" prototype: "QObject" - exports: ["Sound 1.0"] + exports: ["QtAudioEngine/Sound 1.0"] + exportMetaObjectRevisions: [0] Enum { name: "PlayType" values: { @@ -124,12 +134,12 @@ Module { Method { name: "play" } Method { name: "play" - Parameter { name: "gain"; type: "qreal" } + Parameter { name: "gain"; type: "double" } } Method { name: "play" - Parameter { name: "gain"; type: "qreal" } - Parameter { name: "pitch"; type: "qreal" } + Parameter { name: "gain"; type: "double" } + Parameter { name: "pitch"; type: "double" } } Method { name: "play" @@ -149,60 +159,60 @@ Module { Method { name: "play" Parameter { name: "position"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } + Parameter { name: "gain"; type: "double" } } Method { name: "play" Parameter { name: "position"; type: "QVector3D" } Parameter { name: "velocity"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } + Parameter { name: "gain"; type: "double" } } Method { name: "play" Parameter { name: "position"; type: "QVector3D" } Parameter { name: "velocity"; type: "QVector3D" } Parameter { name: "direction"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } + Parameter { name: "gain"; type: "double" } } Method { name: "play" Parameter { name: "position"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } - Parameter { name: "pitch"; type: "qreal" } + Parameter { name: "gain"; type: "double" } + Parameter { name: "pitch"; type: "double" } } Method { name: "play" Parameter { name: "position"; type: "QVector3D" } Parameter { name: "velocity"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } - Parameter { name: "pitch"; type: "qreal" } + Parameter { name: "gain"; type: "double" } + Parameter { name: "pitch"; type: "double" } } Method { name: "play" Parameter { name: "position"; type: "QVector3D" } Parameter { name: "velocity"; type: "QVector3D" } Parameter { name: "direction"; type: "QVector3D" } - Parameter { name: "gain"; type: "qreal" } - Parameter { name: "pitch"; type: "qreal" } + Parameter { name: "gain"; type: "double" } + Parameter { name: "pitch"; type: "double" } } Method { name: "newInstance"; type: "QDeclarativeSoundInstance*" } } Component { name: "QDeclarativeSoundCone" prototype: "QObject" - exports: [" 1.0"] - Property { name: "innerAngle"; type: "qreal" } - Property { name: "outerAngle"; type: "qreal" } - Property { name: "outerGain"; type: "qreal" } + Property { name: "innerAngle"; type: "double" } + Property { name: "outerAngle"; type: "double" } + Property { name: "outerGain"; type: "double" } } Component { name: "QDeclarativeSoundInstance" prototype: "QObject" - exports: ["SoundInstance 1.0"] + exports: ["QtAudioEngine/SoundInstance 1.0"] + exportMetaObjectRevisions: [0] Enum { name: "State" values: { - "StopppedState": 0, + "StoppedState": 0, "PlayingState": 1, "PausedState": 2 } @@ -213,14 +223,14 @@ Module { Property { name: "position"; type: "QVector3D" } Property { name: "direction"; type: "QVector3D" } Property { name: "velocity"; type: "QVector3D" } - Property { name: "gain"; type: "qreal" } - Property { name: "pitch"; type: "qreal" } + Property { name: "gain"; type: "double" } + Property { name: "pitch"; type: "double" } Method { name: "play" } Method { name: "stop" } Method { name: "pause" } Method { name: "updatePosition" - Parameter { name: "deltaTime"; type: "qreal" } + Parameter { name: "deltaTime"; type: "double" } } } Component { From 8e202bcad1eef8709836363379cb257e9ebe8a98 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 2 May 2013 11:30:55 +0200 Subject: [PATCH 05/13] Make it possible to bundle Android builds We need to adapt to the way the jar builds are split on Android, into a jar file which can be bundled and one which can be distributed and loaded on the classpath. We also need to add meta-information about which plugins the module depends on so that they can be bundled as well. Task-number: QTBUG-30751 Change-Id: I5cca51c3732ce72985df29672a219c3fd4fe7bac Reviewed-by: Christian Stromme --- src/multimedia/multimedia.pro | 4 ++++ src/plugins/android/jar/bundledjar.pro | 3 +++ src/plugins/android/jar/distributedjar.pro | 2 ++ src/plugins/android/jar/jar.pri | 14 ++++++++++++++ src/plugins/android/jar/jar.pro | 16 ++-------------- 5 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 src/plugins/android/jar/bundledjar.pro create mode 100644 src/plugins/android/jar/distributedjar.pro create mode 100644 src/plugins/android/jar/jar.pri diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index 2a1c6afb..12278f5e 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -51,10 +51,14 @@ include(radio/radio.pri) include(recording/recording.pri) include(video/video.pri) +ANDROID_BUNDLED_JAR_DEPENDENCIES = \ + jar/QtMultimedia-bundled.jar:org.qtproject.qt5.android.multimedia.QtAndroidMediaPlayer ANDROID_JAR_DEPENDENCIES = \ jar/QtMultimedia.jar:org.qtproject.qt5.android.multimedia.QtAndroidMediaPlayer ANDROID_LIB_DEPENDENCIES = \ plugins/mediaservice/libandroidmediaplayer.so +MODULE_PLUGIN_TYPES = \ + mediaservice mac { LIBS += -framework AppKit -framework QuartzCore -framework QTKit diff --git a/src/plugins/android/jar/bundledjar.pro b/src/plugins/android/jar/bundledjar.pro new file mode 100644 index 00000000..cc76164a --- /dev/null +++ b/src/plugins/android/jar/bundledjar.pro @@ -0,0 +1,3 @@ +TARGET = QtMultimedia-bundled +CONFIG += bundled_jar_file +include(jar.pri) diff --git a/src/plugins/android/jar/distributedjar.pro b/src/plugins/android/jar/distributedjar.pro new file mode 100644 index 00000000..34724c19 --- /dev/null +++ b/src/plugins/android/jar/distributedjar.pro @@ -0,0 +1,2 @@ +TARGET = QtMultimedia +include(jar.pri) diff --git a/src/plugins/android/jar/jar.pri b/src/plugins/android/jar/jar.pri new file mode 100644 index 00000000..e6a3c63c --- /dev/null +++ b/src/plugins/android/jar/jar.pri @@ -0,0 +1,14 @@ +load(qt_build_paths) +CONFIG += java +DESTDIR = $$MODULE_BASE_OUTDIR/jar +API_VERSION = android-11 + +JAVACLASSPATH += $$PWD/src + +JAVASOURCES += $$PWD/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java \ + $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTexture.java \ + $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureHolder.java + +# install +target.path = $$[QT_INSTALL_PREFIX]/jar +INSTALLS += target diff --git a/src/plugins/android/jar/jar.pro b/src/plugins/android/jar/jar.pro index 2fa203a4..6a4fcd38 100644 --- a/src/plugins/android/jar/jar.pro +++ b/src/plugins/android/jar/jar.pro @@ -1,15 +1,3 @@ -load(qt_build_paths) -CONFIG += java -TARGET = QtMultimedia -DESTDIR = $$MODULE_BASE_OUTDIR/jar -API_VERSION = android-11 +TEMPLATE=subdirs +SUBDIRS += distributedjar.pro bundledjar.pro -JAVACLASSPATH += $$PWD/src - -JAVASOURCES += $$PWD/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java \ - $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTexture.java \ - $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureHolder.java - -# install -target.path = $$[QT_INSTALL_PREFIX]/jar -INSTALLS += target From 07f20b8afe6976d69359c27278cbda2c4d0a47c7 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 3 May 2013 15:07:48 +0200 Subject: [PATCH 06/13] Doc: Define example install paths in .qdocconf QDoc needs to know the directory under which the examples are installed in QT_INSTALL_EXAMPLES. Without them, example manifest files may contain invalid paths. Change-Id: I3d27517e41e3b1deb7643ca1a40f3905c0e5cc1a Reviewed-by: Martin Smith --- src/multimedia/doc/qtmultimedia.qdocconf | 3 +++ src/multimediawidgets/doc/qtmultimediawidgets.qdocconf | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf index e9c3b448..b78c9198 100644 --- a/src/multimedia/doc/qtmultimedia.qdocconf +++ b/src/multimedia/doc/qtmultimedia.qdocconf @@ -32,6 +32,9 @@ qhp.QtMultimedia.subprojects.qmltypes.sortPages = true exampledirs += ../../../examples/multimedia \ snippets +# Specify example install dir under QT_INSTALL_EXAMPLES +examplesinstallpath = multimedia + headerdirs += ../.. imagedirs += src/images \ diff --git a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf index 305590f7..e44a73d7 100644 --- a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf +++ b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf @@ -28,6 +28,9 @@ qhp.QtMultimediaWidgets.subprojects.classes.sortPages = true exampledirs += ../../../examples/multimediawidgets \ snippets +# Specify example install dir under QT_INSTALL_EXAMPLES +examplesinstallpath = multimediawidgets + headerdirs += ../ imagedirs += \ From 2eac932747682e4fcc374843e764a377a84e8a3c Mon Sep 17 00:00:00 2001 From: Masaya TAKAHASHI Date: Wed, 1 May 2013 14:18:48 +0900 Subject: [PATCH 07/13] Doc: Fix missing element name in Video Change-Id: I2237bf4a1da632f0528cfb9e6b32ea88f3930350 Reviewed-by: Jerome Pasion Reviewed-by: Yoann Lopes --- src/imports/multimedia/Video.qml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/imports/multimedia/Video.qml b/src/imports/multimedia/Video.qml index f65054cd..bf53d5ff 100644 --- a/src/imports/multimedia/Video.qml +++ b/src/imports/multimedia/Video.qml @@ -186,14 +186,14 @@ Item { This property holds the error state of the video. It can be one of: \list - \li NoError - there is no current error. - \li ResourceError - the video cannot be played due to a problem + \li MediaPlayer.NoError - there is no current error. + \li MediaPlayer.ResourceError - the video cannot be played due to a problem allocating resources. - \li FormatError - the video format is not supported. - \li NetworkError - the video cannot be played due to network issues. - \li AccessDenied - the video cannot be played due to insufficient + \li MediaPlayer.FormatError - the video format is not supported. + \li MediaPlayer.NetworkError - the video cannot be played due to network issues. + \li MediaPlayer.AccessDenied - the video cannot be played due to insufficient permissions. - \li ServiceMissing - the video cannot be played because the media + \li MediaPlayer.ServiceMissing - the video cannot be played because the media service could not be instantiated. \endlist @@ -295,15 +295,15 @@ Item { This property holds the status of media loading. It can be one of: \list - \li NoMedia - no media has been set. - \li Loading - the media is currently being loaded. - \li Loaded - the media has been loaded. - \li Buffering - the media is buffering data. - \li Stalled - playback has been interrupted while the media is buffering data. - \li Buffered - the media has buffered data. - \li EndOfMedia - the media has played to the end. - \li InvalidMedia - the media cannot be played. - \li UnknownStatus - the status of the media cannot be determined. + \li MediaPlayer.NoMedia - no media has been set. + \li MediaPlayer.Loading - the media is currently being loaded. + \li MediaPlayer.Loaded - the media has been loaded. + \li MediaPlayer.Buffering - the media is buffering data. + \li MediaPlayer.Stalled - playback has been interrupted while the media is buffering data. + \li MediaPlayer.Buffered - the media has buffered data. + \li MediaPlayer.EndOfMedia - the media has played to the end. + \li MediaPlayer.InvalidMedia - the media cannot be played. + \li MediaPlayer.UnknownStatus - the status of the media cannot be determined. \endlist */ property alias status: player.status From 0d9526b5c9740d3d77d9c4d8403a6f9e7370643f Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Thu, 25 Apr 2013 16:06:08 +0200 Subject: [PATCH 08/13] VideoOutput: Take the surface's viewport into account Task-Number: QTBUG-30410 Change-Id: I480ce0bcd7ec136e54b5bfc5fec0e901141b72d8 Reviewed-by: Josh Faust Reviewed-by: Yoann Lopes --- .../multimedia/qdeclarativevideooutput.cpp | 23 ++++++-- .../qdeclarativevideooutput_backend_p.h | 3 ++ .../qdeclarativevideooutput_render.cpp | 53 +++++++++++++++---- .../qdeclarativevideooutput_render_p.h | 1 + .../qdeclarativevideooutput_window.cpp | 7 +++ .../qdeclarativevideooutput_window_p.h | 1 + 6 files changed, 74 insertions(+), 14 deletions(-) diff --git a/src/imports/multimedia/qdeclarativevideooutput.cpp b/src/imports/multimedia/qdeclarativevideooutput.cpp index 1b4b9cd5..653d45b6 100644 --- a/src/imports/multimedia/qdeclarativevideooutput.cpp +++ b/src/imports/multimedia/qdeclarativevideooutput.cpp @@ -436,13 +436,18 @@ QRectF QDeclarativeVideoOutput::contentRect() const This property holds the area of the source video content that is considered for rendering. The - values are in source pixel coordinates. + values are in source pixel coordinates, adjusted for + the source's pixel aspect ratio. Note that typically the top left corner of this rectangle will be \c {0,0} while the width and height will be the - width and height of the input content. + width and height of the input content. Only when the video + source has a viewport set, these values will differ. The orientation setting does not affect this rectangle. + + \sa QVideoSurfaceFormat::pixelAspectRatio() + \sa QVideoSurfaceFormat::viewport() */ QRectF QDeclarativeVideoOutput::sourceRect() const { @@ -451,7 +456,19 @@ QRectF QDeclarativeVideoOutput::sourceRect() const if (!qIsDefaultAspect(m_orientation)) { size.transpose(); } - return QRectF(QPointF(), size); // XXX ignores viewport + + // No backend? Just assume no viewport. + if (!m_nativeSize.isValid() || !m_backend) { + return QRectF(QPointF(), size); + } + + // Take the viewport into account for the top left position. + // m_nativeSize is already adjusted to the viewport, as it originats + // from QVideoSurfaceFormat::sizeHint(), which includes pixel aspect + // ratio and viewport. + const QRectF viewport = m_backend->adjustedViewport(); + Q_ASSERT(viewport.size() == size); + return QRectF(viewport.topLeft(), size); } /*! diff --git a/src/imports/multimedia/qdeclarativevideooutput_backend_p.h b/src/imports/multimedia/qdeclarativevideooutput_backend_p.h index 7f2284bb..f731b77f 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_backend_p.h +++ b/src/imports/multimedia/qdeclarativevideooutput_backend_p.h @@ -74,6 +74,9 @@ public: virtual QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) = 0; virtual QAbstractVideoSurface *videoSurface() const = 0; + // The viewport, adjusted for the pixel aspect ratio + virtual QRectF adjustedViewport() const = 0; + protected: QDeclarativeVideoOutput *q; QPointer m_service; diff --git a/src/imports/multimedia/qdeclarativevideooutput_render.cpp b/src/imports/multimedia/qdeclarativevideooutput_render.cpp index e9bcf4b2..96b979bc 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_render.cpp +++ b/src/imports/multimedia/qdeclarativevideooutput_render.cpp @@ -133,30 +133,45 @@ QSize QDeclarativeVideoRendererBackend::nativeSize() const void QDeclarativeVideoRendererBackend::updateGeometry() { + const QRectF viewport = videoSurface()->surfaceFormat().viewport(); + const QSizeF frameSize = videoSurface()->surfaceFormat().frameSize(); + const QRectF normalizedViewport(viewport.x() / frameSize.width(), + viewport.y() / frameSize.height(), + viewport.width() / frameSize.width(), + viewport.height() / frameSize.height()); const QRectF rect(0, 0, q->width(), q->height()); if (nativeSize().isEmpty()) { m_renderedRect = rect; - m_sourceTextureRect = QRectF(0, 0, 1, 1); + m_sourceTextureRect = normalizedViewport; } else if (q->fillMode() == QDeclarativeVideoOutput::Stretch) { m_renderedRect = rect; - m_sourceTextureRect = QRectF(0, 0, 1, 1); + m_sourceTextureRect = normalizedViewport; } else if (q->fillMode() == QDeclarativeVideoOutput::PreserveAspectFit) { - m_sourceTextureRect = QRectF(0, 0, 1, 1); + m_sourceTextureRect = normalizedViewport; m_renderedRect = q->contentRect(); } else if (q->fillMode() == QDeclarativeVideoOutput::PreserveAspectCrop) { m_renderedRect = rect; const qreal contentHeight = q->contentRect().height(); const qreal contentWidth = q->contentRect().width(); + + // Calculate the size of the source rectangle without taking the viewport into account + const qreal relativeOffsetLeft = -q->contentRect().left() / contentWidth; + const qreal relativeOffsetTop = -q->contentRect().top() / contentHeight; + const qreal relativeWidth = rect.width() / contentWidth; + const qreal relativeHeight = rect.height() / contentHeight; + + // Now take the viewport size into account + const qreal totalOffsetLeft = normalizedViewport.x() + relativeOffsetLeft * normalizedViewport.width(); + const qreal totalOffsetTop = normalizedViewport.y() + relativeOffsetTop * normalizedViewport.height(); + const qreal totalWidth = normalizedViewport.width() * relativeWidth; + const qreal totalHeight = normalizedViewport.height() * relativeHeight; + if (qIsDefaultAspect(q->orientation())) { - m_sourceTextureRect = QRectF(-q->contentRect().left() / contentWidth, - -q->contentRect().top() / contentHeight, - rect.width() / contentWidth, - rect.height() / contentHeight); + m_sourceTextureRect = QRectF(totalOffsetLeft, totalOffsetTop, + totalWidth, totalHeight); } else { - m_sourceTextureRect = QRectF(-q->contentRect().top() / contentHeight, - -q->contentRect().left() / contentWidth, - rect.height() / contentHeight, - rect.width() / contentWidth); + m_sourceTextureRect = QRectF(totalOffsetTop, totalOffsetLeft, + totalHeight, totalWidth); } } } @@ -223,6 +238,22 @@ QAbstractVideoSurface *QDeclarativeVideoRendererBackend::videoSurface() const return m_surface; } +QRectF QDeclarativeVideoRendererBackend::adjustedViewport() const +{ + const QRectF viewport = m_surface->surfaceFormat().viewport(); + const QSize pixelAspectRatio = m_surface->surfaceFormat().pixelAspectRatio(); + + if (pixelAspectRatio.height() != 0) { + const qreal ratio = pixelAspectRatio.width() / pixelAspectRatio.height(); + QRectF result = viewport; + result.setX(result.x() * ratio); + result.setWidth(result.width() * ratio); + return result; + } + + return viewport; +} + QOpenGLContext *QDeclarativeVideoRendererBackend::glContext() const { return m_glContext; diff --git a/src/imports/multimedia/qdeclarativevideooutput_render_p.h b/src/imports/multimedia/qdeclarativevideooutput_render_p.h index 2a706b33..3682c15a 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_render_p.h +++ b/src/imports/multimedia/qdeclarativevideooutput_render_p.h @@ -71,6 +71,7 @@ public: void updateGeometry(); QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data); QAbstractVideoSurface *videoSurface() const; + QRectF adjustedViewport() const Q_DECL_OVERRIDE; QOpenGLContext *glContext() const; friend class QSGVideoItemSurface; diff --git a/src/imports/multimedia/qdeclarativevideooutput_window.cpp b/src/imports/multimedia/qdeclarativevideooutput_window.cpp index 527c0890..2da63c10 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_window.cpp +++ b/src/imports/multimedia/qdeclarativevideooutput_window.cpp @@ -143,4 +143,11 @@ QAbstractVideoSurface *QDeclarativeVideoWindowBackend::videoSurface() const return 0; } +QRectF QDeclarativeVideoWindowBackend::adjustedViewport() const +{ + // No viewport supported by QVideoWindowControl, so make the viewport the same size + // as the source + return QRectF(QPointF(0, 0), nativeSize()); +} + QT_END_NAMESPACE diff --git a/src/imports/multimedia/qdeclarativevideooutput_window_p.h b/src/imports/multimedia/qdeclarativevideooutput_window_p.h index f09b08c4..eb7b35b8 100644 --- a/src/imports/multimedia/qdeclarativevideooutput_window_p.h +++ b/src/imports/multimedia/qdeclarativevideooutput_window_p.h @@ -62,6 +62,7 @@ public: void updateGeometry(); QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data); QAbstractVideoSurface *videoSurface() const; + QRectF adjustedViewport() const Q_DECL_OVERRIDE; private: QPointer m_videoWindowControl; From 46bf67b7dc4bf105616b240ba3250eed1c391242 Mon Sep 17 00:00:00 2001 From: David Fries Date: Mon, 1 Apr 2013 23:00:00 -0500 Subject: [PATCH 09/13] qmlvideo example, add missing #ifdef PERFORMANCEMONITOR_SUPPORT This usage of PerformanceMonitor needs to be protected by the same preprocessor check as the header include that makes it available. Change-Id: Ie8a1b6e99a61c333ceedcf2e9751235fc2efb415 Reviewed-by: Martin Smith --- examples/multimedia/video/qmlvideo/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/multimedia/video/qmlvideo/main.cpp b/examples/multimedia/video/qmlvideo/main.cpp index 1a9c5239..e44476a1 100644 --- a/examples/multimedia/video/qmlvideo/main.cpp +++ b/examples/multimedia/video/qmlvideo/main.cpp @@ -67,7 +67,9 @@ int main(int argc, char *argv[]) QString source1, source2; qreal volume = 0.5; QStringList args = app.arguments(); +#ifdef PERFORMANCEMONITOR_SUPPORT PerformanceMonitor::State performanceMonitorState; +#endif bool sourceIsUrl = false; for (int i = 1; i < args.size(); ++i) { const QByteArray arg = args.at(i).toUtf8(); From f4348fe3ae91ac47f45495681738505ff6005453 Mon Sep 17 00:00:00 2001 From: Sze Howe Koh Date: Sun, 28 Apr 2013 15:01:25 +0800 Subject: [PATCH 10/13] Decouple qmediametadata.h from qmultimedia.h qmultimedia.h is included in more places, but qmediametadata.h is larger. This patch should reduce unnecessary #include-ing. Change-Id: I4a3d174bafc555d794bb75087c1f6b79745ae903 Reviewed-by: Yoann Lopes --- examples/multimediawidgets/camera/camera.cpp | 1 + examples/multimediawidgets/player/player.cpp | 2 +- src/imports/multimedia/qdeclarativemediametadata_p.h | 1 + src/multimedia/playback/playlistfileparser.cpp | 2 +- src/multimedia/qmultimedia.h | 1 - .../android/mediaplayer/qandroidmetadatareadercontrol.cpp | 1 + .../avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm | 2 +- src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp | 1 + src/plugins/directshow/player/directshowmetadatacontrol.cpp | 2 +- src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp | 1 + src/plugins/gstreamer/camerabin/camerabinmetadata.cpp | 2 ++ .../gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp | 2 ++ .../gstreamer/mediaplayer/qgstreamermetadataprovider.cpp | 1 + src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp | 1 + src/plugins/qt7/mediaplayer/qt7playermetadata.mm | 1 + src/plugins/wmf/player/mfmetadatacontrol.cpp | 1 + tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp | 1 + tests/auto/unit/qmediaobject/tst_qmediaobject.cpp | 1 + tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp | 1 + .../unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp | 1 + .../unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp | 1 + .../unit/qmultimedia_common/mockcameraimagecapturecontrol.h | 1 + 22 files changed, 23 insertions(+), 5 deletions(-) diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index 2b7a96f8..bd0644db 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp index a1142bef..377a0ffb 100644 --- a/examples/multimediawidgets/player/player.cpp +++ b/examples/multimediawidgets/player/player.cpp @@ -47,9 +47,9 @@ #include #include #include +#include #include - Player::Player(QWidget *parent) : QWidget(parent) , videoWidget(0) diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h index 5b7c4699..1983effa 100644 --- a/src/imports/multimedia/qdeclarativemediametadata_p.h +++ b/src/imports/multimedia/qdeclarativemediametadata_p.h @@ -54,6 +54,7 @@ // #include +#include #include "qmediaobject.h" QT_BEGIN_NAMESPACE diff --git a/src/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp index 72bb0cb2..b7b65c98 100644 --- a/src/multimedia/playback/playlistfileparser.cpp +++ b/src/multimedia/playback/playlistfileparser.cpp @@ -43,7 +43,7 @@ #include #include #include "qmediaobject_p.h" -#include "qmultimedia.h" +#include "qmediametadata.h" QT_BEGIN_NAMESPACE diff --git a/src/multimedia/qmultimedia.h b/src/multimedia/qmultimedia.h index 22028be6..be4737a7 100644 --- a/src/multimedia/qmultimedia.h +++ b/src/multimedia/qmultimedia.h @@ -47,7 +47,6 @@ #include #include -#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp b/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp index 9b2f4e17..e52c4638 100644 --- a/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp +++ b/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp @@ -42,6 +42,7 @@ #include "qandroidmetadatareadercontrol.h" #include "jmediametadataretriever.h" +#include #include #include diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm index 01d325cf..3a626bcd 100644 --- a/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm +++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm @@ -42,7 +42,7 @@ #include "avfmediaplayermetadatacontrol.h" #include "avfmediaplayersession.h" -#include +#include #import diff --git a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp b/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp index 95f85f5e..99e3c512 100644 --- a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp +++ b/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp @@ -39,6 +39,7 @@ ** ****************************************************************************/ #include "bbmetadatareadercontrol.h" +#include QT_BEGIN_NAMESPACE diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp index f4bbe16a..341d2cf1 100644 --- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp +++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp @@ -44,9 +44,9 @@ #include #include "directshowmetadatacontrol.h" - #include "directshowplayerservice.h" +#include #include #ifndef QT_NO_WMSDK diff --git a/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp b/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp index 0fca0c52..79cfca3b 100644 --- a/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include diff --git a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp index 788233c6..353fd8be 100644 --- a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp @@ -41,6 +41,8 @@ #include "camerabinmetadata.h" +#include + #include #include diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp index dd3d6a4f..fd7fb7d8 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp @@ -41,6 +41,8 @@ #include "qgstreamercapturemetadatacontrol.h" +#include + #include #include diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp index 841c13ff..22f20366 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp @@ -42,6 +42,7 @@ #include "qgstreamermetadataprovider.h" #include "qgstreamerplayersession.h" #include +#include #include diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp index 36db6705..04d612b0 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include #include diff --git a/src/plugins/qt7/mediaplayer/qt7playermetadata.mm b/src/plugins/qt7/mediaplayer/qt7playermetadata.mm index 18e2f920..84d434be 100644 --- a/src/plugins/qt7/mediaplayer/qt7playermetadata.mm +++ b/src/plugins/qt7/mediaplayer/qt7playermetadata.mm @@ -43,6 +43,7 @@ #include "qt7playermetadata.h" #include "qt7playersession.h" #include +#include #import diff --git a/src/plugins/wmf/player/mfmetadatacontrol.cpp b/src/plugins/wmf/player/mfmetadatacontrol.cpp index f27370ed..23e81f48 100644 --- a/src/plugins/wmf/player/mfmetadatacontrol.cpp +++ b/src/plugins/wmf/player/mfmetadatacontrol.cpp @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include #include #include diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp index b6b3f163..57f820b5 100644 --- a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp +++ b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp @@ -46,6 +46,7 @@ #include "qdeclarativeaudio_p.h" #include "qdeclarativemediametadata_p.h" +#include #include #include #include diff --git a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp index 0ac26680..8d0bf889 100644 --- a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp +++ b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp @@ -45,6 +45,7 @@ #include +#include #include #include #include diff --git a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp index 37c7e096..51467861 100644 --- a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp +++ b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp @@ -43,6 +43,7 @@ #include #include +#include #include #include #include diff --git a/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp b/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp index b9b83584..b03ded40 100644 --- a/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp +++ b/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include "mockmetadatareadercontrol.h" diff --git a/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp b/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp index 8e08f809..9baf91b7 100644 --- a/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp +++ b/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include "qmetadatawritercontrol.h" #include "mockmetadatawritercontrol.h" diff --git a/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h b/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h index cc374e91..c8e174a8 100644 --- a/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h +++ b/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h @@ -44,6 +44,7 @@ #include #include +#include #include "qcameraimagecapturecontrol.h" #include "qcameracontrol.h" From b604d96ba8cb4b20f3a27537c591a7777e485d0e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 8 May 2013 11:34:31 +0200 Subject: [PATCH 11/13] Make directshow-plugin available. No longer include in directshow-plugin, which no longer ships in newer SDKs. Ensure it only provides the camera service if the WMF-plugin is built by using a different .json-file. Adapt qcamerabackend-test to use widgets. Task-number: QTBUG-28047 Change-Id: I22ea441b9edb56ff55bc275dba37c01c77d8dd90 Reviewed-by: Yoann Lopes --- config.tests/directshow/main.cpp | 7 ------- src/plugins/directshow/camera/dscamerasession.cpp | 8 ++++++-- src/plugins/directshow/camera/dscamerasession.h | 1 - src/plugins/directshow/directshow.pro | 3 ++- src/plugins/directshow/directshow_camera.json | 3 +++ src/plugins/directshow/dsserviceplugin.h | 6 ++++++ tests/auto/integration/multimedia.pro | 1 + tests/auto/integration/qcamerabackend/qcamerabackend.pro | 3 ++- 8 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 src/plugins/directshow/directshow_camera.json diff --git a/config.tests/directshow/main.cpp b/config.tests/directshow/main.cpp index 6611741d..55e2e80a 100644 --- a/config.tests/directshow/main.cpp +++ b/config.tests/directshow/main.cpp @@ -43,13 +43,6 @@ #include #include -#pragma include_alias("dxtrans.h","qedit.h") -#define __IDxtCompositor_INTERFACE_DEFINED__ -#define __IDxtAlphaSetter_INTERFACE_DEFINED__ -#define __IDxtJpeg_INTERFACE_DEFINED__ -#define __IDxtKey_INTERFACE_DEFINED__ -#include - int main(int, char**) { return 0; diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index f921dac2..353078f4 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -656,6 +656,10 @@ HRESULT DSCameraSession::getPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, IPin bool DSCameraSession::createFilterGraph() { + // Previously containered in . + static const IID iID_ISampleGrabber = { 0x6B652FFF, 0x11FE, 0x4fce, { 0x92, 0xAD, 0x02, 0x66, 0xB5, 0xD7, 0xC7, 0x8F } }; + static const CLSID cLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } }; + HRESULT hr; IMoniker* pMoniker = NULL; ICreateDevEnum* pDevEnum = NULL; @@ -752,14 +756,14 @@ bool DSCameraSession::createFilterGraph() } // Sample grabber filter - hr = CoCreateInstance(CLSID_SampleGrabber, NULL,CLSCTX_INPROC, + hr = CoCreateInstance(cLSID_SampleGrabber, NULL,CLSCTX_INPROC, IID_IBaseFilter, (void**)&pSG_Filter); if (FAILED(hr)) { qWarning() << "failed to create sample grabber"; return false; } - hr = pSG_Filter->QueryInterface(IID_ISampleGrabber, (void**)&pSG); + hr = pSG_Filter->QueryInterface(iID_ISampleGrabber, (void**)&pSG); if (FAILED(hr)) { qWarning() << "failed to get sample grabber"; return false; diff --git a/src/plugins/directshow/camera/dscamerasession.h b/src/plugins/directshow/camera/dscamerasession.h index db003881..e78358a5 100644 --- a/src/plugins/directshow/camera/dscamerasession.h +++ b/src/plugins/directshow/camera/dscamerasession.h @@ -69,7 +69,6 @@ #define __IDxtAlphaSetter_INTERFACE_DEFINED__ #define __IDxtJpeg_INTERFACE_DEFINED__ #define __IDxtKey_INTERFACE_DEFINED__ -#include struct ICaptureGraphBuilder2; struct ISampleGrabber; diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro index 95f78ed8..97e72a10 100644 --- a/src/plugins/directshow/directshow.pro +++ b/src/plugins/directshow/directshow.pro @@ -24,4 +24,5 @@ win32-g++ { include(camera/camera.pri) OTHER_FILES += \ - directshow.json + directshow.json \ + directshow_camera.json diff --git a/src/plugins/directshow/directshow_camera.json b/src/plugins/directshow/directshow_camera.json new file mode 100644 index 00000000..d3a58c75 --- /dev/null +++ b/src/plugins/directshow/directshow_camera.json @@ -0,0 +1,3 @@ +{ + "Keys": ["org.qt-project.qt.camera"] +} diff --git a/src/plugins/directshow/dsserviceplugin.h b/src/plugins/directshow/dsserviceplugin.h index f3f89d7c..82f1acd6 100644 --- a/src/plugins/directshow/dsserviceplugin.h +++ b/src/plugins/directshow/dsserviceplugin.h @@ -54,7 +54,13 @@ class DSServicePlugin Q_OBJECT Q_INTERFACES(QMediaServiceSupportedDevicesInterface) Q_INTERFACES(QMediaServiceFeaturesInterface) + // The player service provided by the WMF-plugin should preferably be used. + // DirectShow should then only provide the camera (see QTBUG-29172, QTBUG-29175). +#ifdef QMEDIA_DIRECTSHOW_PLAYER Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "directshow.json") +#else + Q_PLUGIN_METADATA(IID "org.qt-project.qt.mediaserviceproviderfactory/5.0" FILE "directshow_camera.json") +#endif public: QMediaService* create(QString const& key); diff --git a/tests/auto/integration/multimedia.pro b/tests/auto/integration/multimedia.pro index d5708532..1daa1ee5 100644 --- a/tests/auto/integration/multimedia.pro +++ b/tests/auto/integration/multimedia.pro @@ -12,3 +12,4 @@ SUBDIRS += \ qsoundeffect \ qsound +!qtHaveModule(widgets): SUBDIRS -= qcamerabackend diff --git a/tests/auto/integration/qcamerabackend/qcamerabackend.pro b/tests/auto/integration/qcamerabackend/qcamerabackend.pro index 50da92fb..1a0c44ea 100644 --- a/tests/auto/integration/qcamerabackend/qcamerabackend.pro +++ b/tests/auto/integration/qcamerabackend/qcamerabackend.pro @@ -1,6 +1,7 @@ TARGET = tst_qcamerabackend -QT += multimedia-private testlib +# DirectShow plugin requires widgets. +QT += multimedia-private widgets testlib # This is more of a system test CONFIG += testcase From 853fc503470c1daffcf0a6bf73bd915863b65da0 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 16 May 2013 19:03:50 +0200 Subject: [PATCH 12/13] Fixed signal not being emitted in QDeclarativeCameraFocus. Change-Id: If504ec5ecc59c46edeac24442181eedaacc7e5d8 Reviewed-by: Christian Stromme --- src/imports/multimedia/qdeclarativecamerafocus.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp index 19d8ca81..4b5544d2 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus.cpp +++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp @@ -179,7 +179,10 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCamera::FocusMode void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCamera::FocusMode mode) { - m_focus->setFocusMode(QCameraFocus::FocusModes(int(mode))); + if (mode != focusMode()) { + m_focus->setFocusMode(QCameraFocus::FocusModes(int(mode))); + emit focusModeChanged(focusMode()); + } } /*! \property QDeclarativeCameraFocus::focusPointMode From 5c087bb6153b951e1c5709ee7f998819d08a6122 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 21 May 2013 16:09:33 +0200 Subject: [PATCH 13/13] Android: fixed crash when resetting the video surface. Change-Id: I64a28cbcb8a48d13a9e1c98005da9f4cce821cb4 Reviewed-by: Christian Stromme --- src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp b/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp index 7b810fa4..c63e0e77 100644 --- a/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp +++ b/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp @@ -182,7 +182,8 @@ void QAndroidVideoRendererControl::setSurface(QAbstractVideoSurface *surface) m_surface = surface; - m_useImage = !m_surface->supportedPixelFormats(QAbstractVideoBuffer::GLTextureHandle).contains(QVideoFrame::Format_BGR32); + if (m_surface) + m_useImage = !m_surface->supportedPixelFormats(QAbstractVideoBuffer::GLTextureHandle).contains(QVideoFrame::Format_BGR32); } jobject QAndroidVideoRendererControl::surfaceHolder()