summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-05-23 13:15:45 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-05-23 13:15:45 +0200
commit0ef52f01029176a8fb8fbef2c22ae9350635ebe1 (patch)
treefad805097d0e40ba57dcfb61ac3067737c7a2ae3
parentcb324a50c920b275ef6c04162712b1a6f19bbe8d (diff)
parent5c087bb6153b951e1c5709ee7f998819d08a6122 (diff)
Merge remote-tracking branch 'origin/stable' into dev
-rw-r--r--config.tests/android/android.pro4
-rw-r--r--config.tests/android/main.java6
-rw-r--r--config.tests/directshow/main.cpp7
-rw-r--r--examples/multimedia/audiodevices/doc/src/audiodevices.qdoc2
-rw-r--r--examples/multimedia/audioengine/doc/src/audioengine.qdoc2
-rw-r--r--examples/multimedia/audioinput/doc/src/audioinput.qdoc2
-rw-r--r--examples/multimedia/audiooutput/doc/src/audiooutput.qdoc2
-rw-r--r--examples/multimedia/audiorecorder/doc/src/audiorecorder.qdoc2
-rw-r--r--examples/multimedia/declarative-radio/doc/src/declarative-radio.qdoc2
-rw-r--r--examples/multimedia/spectrum/doc/src/spectrum.qdoc2
-rw-r--r--examples/multimedia/video/doc/src/qmlvideo.qdoc2
-rw-r--r--examples/multimedia/video/doc/src/qmlvideofx.qdoc2
-rw-r--r--examples/multimedia/video/qmlvideo/main.cpp2
-rw-r--r--examples/multimediawidgets/camera/camera.cpp1
-rw-r--r--examples/multimediawidgets/camera/doc/src/camera.qdoc2
-rw-r--r--examples/multimediawidgets/declarative-camera/doc/src/declarative-camera.qdoc2
-rw-r--r--examples/multimediawidgets/player/doc/src/player.qdoc2
-rw-r--r--examples/multimediawidgets/player/player.cpp2
-rw-r--r--examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc2
-rw-r--r--examples/multimediawidgets/videowidget/doc/src/videowidget.qdoc2
-rw-r--r--qtmultimedia.pro2
-rw-r--r--src/imports/audioengine/plugins.qmltypes96
-rw-r--r--src/imports/multimedia/Video.qml30
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus.cpp5
-rw-r--r--src/imports/multimedia/qdeclarativemediametadata_p.h1
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput.cpp23
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput_backend_p.h3
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput_render.cpp53
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput_render_p.h1
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput_window.cpp7
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput_window_p.h1
-rw-r--r--src/multimedia/doc/qtmultimedia.qdocconf3
-rw-r--r--src/multimedia/doc/src/multimedia.qdoc30
-rw-r--r--src/multimedia/multimedia.pro4
-rw-r--r--src/multimedia/playback/playlistfileparser.cpp2
-rw-r--r--src/multimedia/qmultimedia.h1
-rw-r--r--src/multimediawidgets/doc/qtmultimediawidgets.qdocconf3
-rw-r--r--src/plugins/android/jar/bundledjar.pro3
-rw-r--r--src/plugins/android/jar/distributedjar.pro2
-rw-r--r--src/plugins/android/jar/jar.pri14
-rw-r--r--src/plugins/android/jar/jar.pro16
-rw-r--r--src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp1
-rw-r--r--src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp3
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm2
-rw-r--r--src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp1
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp8
-rw-r--r--src/plugins/directshow/camera/dscamerasession.h1
-rw-r--r--src/plugins/directshow/directshow.pro3
-rw-r--r--src/plugins/directshow/directshow_camera.json3
-rw-r--r--src/plugins/directshow/dsserviceplugin.h6
-rw-r--r--src/plugins/directshow/player/directshowmetadatacontrol.cpp2
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp1
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinmetadata.cpp2
-rw-r--r--src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp2
-rw-r--r--src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp1
-rw-r--r--src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp1
-rw-r--r--src/plugins/qt7/mediaplayer/qt7playermetadata.mm1
-rw-r--r--src/plugins/wmf/player/mfmetadatacontrol.cpp1
-rw-r--r--tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-amd64.txt31
-rw-r--r--tests/auto/bic/data/QtMultimedia.5.0.0.linux-gcc-ia32.txt31
-rw-r--r--tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-amd64.txt31
-rw-r--r--tests/auto/bic/data/QtMultimediaWidgets.5.0.0.linux-gcc-ia32.txt31
-rw-r--r--tests/auto/integration/multimedia.pro1
-rw-r--r--tests/auto/integration/qcamerabackend/qcamerabackend.pro3
-rw-r--r--tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp1
-rw-r--r--tests/auto/unit/qmediaobject/tst_qmediaobject.cpp1
-rw-r--r--tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp1
-rw-r--r--tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp1
-rw-r--r--tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp1
-rw-r--r--tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h1
70 files changed, 277 insertions, 246 deletions
diff --git a/config.tests/android/android.pro b/config.tests/android/android.pro
new file mode 100644
index 000000000..dcf5df184
--- /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 000000000..1ab872599
--- /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/config.tests/directshow/main.cpp b/config.tests/directshow/main.cpp
index 6611741db..55e2e80ae 100644
--- a/config.tests/directshow/main.cpp
+++ b/config.tests/directshow/main.cpp
@@ -43,13 +43,6 @@
#include <d3d9.h>
#include <vmr9.h>
-#pragma include_alias("dxtrans.h","qedit.h")
-#define __IDxtCompositor_INTERFACE_DEFINED__
-#define __IDxtAlphaSetter_INTERFACE_DEFINED__
-#define __IDxtJpeg_INTERFACE_DEFINED__
-#define __IDxtKey_INTERFACE_DEFINED__
-#include <qedit.h>
-
int main(int, char**)
{
return 0;
diff --git a/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc b/examples/multimedia/audiodevices/doc/src/audiodevices.qdoc
index d0b1694e8..d75584485 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 b52945851..c83247df1 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 8c4f3542c..39ef26156 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 9d028efa9..bc79e6a5d 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 a369337e6..8453ea34e 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 17870b6a5..99c41114a 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 4c9ce60e8..280838956 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 9a2cb37cf..1efed8005 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 b2ea12882..f4abbc571 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/multimedia/video/qmlvideo/main.cpp b/examples/multimedia/video/qmlvideo/main.cpp
index 1a9c52391..e44476a15 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();
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp
index 2b7a96f82..bd0644db6 100644
--- a/examples/multimediawidgets/camera/camera.cpp
+++ b/examples/multimediawidgets/camera/camera.cpp
@@ -46,6 +46,7 @@
#include <QMediaService>
#include <QMediaRecorder>
#include <QCameraViewfinder>
+#include <QMediaMetaData>
#include <QMessageBox>
#include <QPalette>
diff --git a/examples/multimediawidgets/camera/doc/src/camera.qdoc b/examples/multimediawidgets/camera/doc/src/camera.qdoc
index a7bbf38cc..d1a855d4e 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 de000d8b4..02e77854c 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 0e7d5dcf4..7a7230914 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/player/player.cpp b/examples/multimediawidgets/player/player.cpp
index a1142bef4..377a0ffb9 100644
--- a/examples/multimediawidgets/player/player.cpp
+++ b/examples/multimediawidgets/player/player.cpp
@@ -47,9 +47,9 @@
#include <QMediaService>
#include <QMediaPlaylist>
#include <QVideoProbe>
+#include <QMediaMetaData>
#include <QtWidgets>
-
Player::Player(QWidget *parent)
: QWidget(parent)
, videoWidget(0)
diff --git a/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc b/examples/multimediawidgets/videographicsitem/doc/src/videographicsitem.qdoc
index 2b1e44df0..3ccdba5f5 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 765eb6b04..805a830bc 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/qtmultimedia.pro b/qtmultimedia.pro
index aeb97464d..53f6b9886 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)
diff --git a/src/imports/audioengine/plugins.qmltypes b/src/imports/audioengine/plugins.qmltypes
index 6a7dae1a4..8c6267bda 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 {
diff --git a/src/imports/multimedia/Video.qml b/src/imports/multimedia/Video.qml
index f65054cda..bf53d5ff5 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
diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp
index 19d8ca81e..4b5544d2a 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
diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h
index 5b7c46993..1983effa0 100644
--- a/src/imports/multimedia/qdeclarativemediametadata_p.h
+++ b/src/imports/multimedia/qdeclarativemediametadata_p.h
@@ -54,6 +54,7 @@
//
#include <QtQml/qqml.h>
+#include <QtMultimedia/qmediametadata.h>
#include "qmediaobject.h"
QT_BEGIN_NAMESPACE
diff --git a/src/imports/multimedia/qdeclarativevideooutput.cpp b/src/imports/multimedia/qdeclarativevideooutput.cpp
index fc17a20fa..53c810403 100644
--- a/src/imports/multimedia/qdeclarativevideooutput.cpp
+++ b/src/imports/multimedia/qdeclarativevideooutput.cpp
@@ -484,13 +484,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
{
@@ -499,7 +504,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 7f2284bb4..f731b77f1 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<QMediaService> m_service;
diff --git a/src/imports/multimedia/qdeclarativevideooutput_render.cpp b/src/imports/multimedia/qdeclarativevideooutput_render.cpp
index e9bcf4b26..96b979bc5 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 2a706b339..3682c15a6 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 527c08908..2da63c107 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 f09b08c42..eb7b35b85 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<QVideoWindowControl> m_videoWindowControl;
diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf
index e9c3b4480..b78c91989 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/multimedia/doc/src/multimedia.qdoc b/src/multimedia/doc/src/multimedia.qdoc
index d53967e6b..d93468273 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
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
index 61dfb3d08..31c438acb 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/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp
index 72bb0cb2a..b7b65c98f 100644
--- a/src/multimedia/playback/playlistfileparser.cpp
+++ b/src/multimedia/playback/playlistfileparser.cpp
@@ -43,7 +43,7 @@
#include <qfileinfo.h>
#include <QtNetwork/QNetworkReply>
#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 22028be6c..be4737a70 100644
--- a/src/multimedia/qmultimedia.h
+++ b/src/multimedia/qmultimedia.h
@@ -47,7 +47,6 @@
#include <QtCore/qstring.h>
#include <QtMultimedia/qtmultimediadefs.h>
-#include <QtMultimedia/qmediametadata.h>
QT_BEGIN_NAMESPACE
diff --git a/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf b/src/multimediawidgets/doc/qtmultimediawidgets.qdocconf
index 305590f7b..e44a73d77 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 += \
diff --git a/src/plugins/android/jar/bundledjar.pro b/src/plugins/android/jar/bundledjar.pro
new file mode 100644
index 000000000..cc76164a7
--- /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 000000000..34724c197
--- /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 000000000..e6a3c63c2
--- /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 2fa203a4f..6a4fcd389 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
diff --git a/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp b/src/plugins/android/mediaplayer/qandroidmetadatareadercontrol.cpp
index 9b2f4e17b..e52c46387 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 <QtMultimedia/qmediametadata.h>
#include <qsize.h>
#include <QDate>
diff --git a/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp b/src/plugins/android/mediaplayer/qandroidvideorendercontrol.cpp
index 7b810fa41..c63e0e771 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()
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayermetadatacontrol.mm
index 01d325cf4..3a626bcde 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 <QtMultimedia/qmultimedia.h>
+#include <QtMultimedia/qmediametadata.h>
#import <AVFoundation/AVFoundation.h>
diff --git a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp b/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp
index 95f85f5e3..99e3c5125 100644
--- a/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp
+++ b/src/plugins/blackberry/mediaplayer/bbmetadatareadercontrol.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
#include "bbmetadatareadercontrol.h"
+#include <QtMultimedia/qmediametadata.h>
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp
index f921dac20..353078f43 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 <qedit.h>.
+ 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 db0038813..e78358a5f 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 <qedit.h>
struct ICaptureGraphBuilder2;
struct ISampleGrabber;
diff --git a/src/plugins/directshow/directshow.pro b/src/plugins/directshow/directshow.pro
index 95f78ed81..97e72a107 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 000000000..d3a58c758
--- /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 f3f89d7cd..82f1acd6d 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/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
index f4bbe16a7..341d2cf1d 100644
--- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp
+++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp
@@ -44,9 +44,9 @@
#include <qnetwork.h>
#include "directshowmetadatacontrol.h"
-
#include "directshowplayerservice.h"
+#include <QtMultimedia/qmediametadata.h>
#include <QtCore/qcoreapplication.h>
#ifndef QT_NO_WMSDK
diff --git a/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp b/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp
index 0fca0c523..79cfca3bf 100644
--- a/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinimagecapture.cpp
@@ -46,6 +46,7 @@
#include <private/qgstvideobuffer_p.h>
#include <private/qvideosurfacegstsink_p.h>
#include <private/qgstutils_p.h>
+#include <QtMultimedia/qmediametadata.h>
#include <QtCore/qdebug.h>
#include <QtCore/qbuffer.h>
#include <QtGui/qimagereader.h>
diff --git a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
index 788233c6b..353fd8be6 100644
--- a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
@@ -41,6 +41,8 @@
#include "camerabinmetadata.h"
+#include <QtMultimedia/qmediametadata.h>
+
#include <gst/gst.h>
#include <gst/gstversion.h>
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
index dd3d6a4fb..fd7fb7d82 100644
--- a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
+++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp
@@ -41,6 +41,8 @@
#include "qgstreamercapturemetadatacontrol.h"
+#include <QtMultimedia/qmediametadata.h>
+
#include <gst/gst.h>
#include <gst/gstversion.h>
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
index 841c13ff6..22f203665 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 <QDebug>
+#include <QtMultimedia/qmediametadata.h>
#include <gst/gstversion.h>
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp
index 36db67054..04d612b06 100644
--- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp
+++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp
@@ -52,6 +52,7 @@
#include <gst/gstvalue.h>
#include <gst/base/gstbasesrc.h>
+#include <QtMultimedia/qmediametadata.h>
#include <QtCore/qdatetime.h>
#include <QtCore/qdebug.h>
#include <QtCore/qsize.h>
diff --git a/src/plugins/qt7/mediaplayer/qt7playermetadata.mm b/src/plugins/qt7/mediaplayer/qt7playermetadata.mm
index 18e2f920e..84d434be2 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 <QtCore/qvarlengtharray.h>
+#include <QtMultimedia/qmediametadata.h>
#import <QTKit/QTMovie.h>
diff --git a/src/plugins/wmf/player/mfmetadatacontrol.cpp b/src/plugins/wmf/player/mfmetadatacontrol.cpp
index f27370ed2..23e81f48d 100644
--- a/src/plugins/wmf/player/mfmetadatacontrol.cpp
+++ b/src/plugins/wmf/player/mfmetadatacontrol.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include <qmediametadata.h>
#include <qdatetime.h>
#include <qimage.h>
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 7ff972c33..56b4c5942 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 24afc6fa9..77d7125dd 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 5b55c44f1..fda7d51ab 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 110a56892..2319a77a2 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
diff --git a/tests/auto/integration/multimedia.pro b/tests/auto/integration/multimedia.pro
index d5708532c..1daa1ee50 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 50da92fbd..1a0c44ea8 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
diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
index b6b3f1632..57f820b54 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 <QtMultimedia/qmediametadata.h>
#include <qmediaplayercontrol.h>
#include <qmediaservice.h>
#include <private/qmediaserviceprovider_p.h>
diff --git a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
index 0ac266809..8d0bf889e 100644
--- a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
+++ b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
@@ -45,6 +45,7 @@
#include <QtCore/qtimer.h>
+#include <QtMultimedia/qmediametadata.h>
#include <qmediaobject.h>
#include <qmediaservice.h>
#include <qmetadatareadercontrol.h>
diff --git a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
index 37c7e096a..514678617 100644
--- a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
+++ b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
@@ -43,6 +43,7 @@
#include <QtTest/QtTest>
#include <QDebug>
+#include <QtMultimedia/qmediametadata.h>
#include <qmediaobject.h>
#include <qmediacontrol.h>
#include <qmediaservice.h>
diff --git a/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp b/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp
index b9b835843..b03ded400 100644
--- a/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp
+++ b/tests/auto/unit/qmetadatareadercontrol/tst_qmetadatareadercontrol.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QString>
#include <QtTest/QtTest>
#include <QtCore/QCoreApplication>
+#include <QtMultimedia/qmediametadata.h>
#include "mockmetadatareadercontrol.h"
diff --git a/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp b/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp
index 8e08f8090..9baf91b70 100644
--- a/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp
+++ b/tests/auto/unit/qmetadatawritercontrol/tst_qmetadatawritercontrol.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QString>
#include <QtTest/QtTest>
#include <QtCore/QCoreApplication>
+#include <QtMultimedia/qmediametadata.h>
#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 cc374e91a..c8e174a82 100644
--- a/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockcameraimagecapturecontrol.h
@@ -44,6 +44,7 @@
#include <QDateTime>
#include <QTimer>
+#include <QtMultimedia/qmediametadata.h>
#include "qcameraimagecapturecontrol.h"
#include "qcameracontrol.h"