summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--examples/multimedia/video/qmlvideofilter_opencl/main.cpp8
-rw-r--r--examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp2
-rw-r--r--examples/multimediawidgets/player/main.cpp9
-rw-r--r--examples/multimediawidgets/player/player.cpp55
-rw-r--r--examples/multimediawidgets/player/player.h4
-rw-r--r--src/gsttools/qgstreamerbushelper.cpp2
-rw-r--r--src/imports/audioengine/qaudioengine_openal_p.h8
-rw-r--r--src/imports/multimedia/Video.qml20
-rw-r--r--src/imports/multimedia/multimedia.cpp10
-rw-r--r--src/imports/multimedia/qdeclarativeaudio.cpp62
-rw-r--r--src/imports/multimedia/qdeclarativeaudio_p.h6
-rw-r--r--src/imports/multimedia/qdeclarativecameraexposure.cpp29
-rw-r--r--src/imports/multimedia/qdeclarativecameraexposure_p.h3
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus.cpp56
-rw-r--r--src/imports/multimedia/qdeclarativecamerafocus_p.h14
-rw-r--r--src/imports/multimedia/qdeclarativecameraimageprocessing.cpp62
-rw-r--r--src/imports/multimedia/qdeclarativecameraimageprocessing_p.h13
-rw-r--r--src/multimedia/audio/qaudio.cpp4
-rw-r--r--src/multimedia/audio/qaudio.h3
-rw-r--r--src/multimedia/audio/qaudiobuffer.cpp10
-rw-r--r--src/multimedia/audio/qaudiodecoder.h2
-rw-r--r--src/multimedia/audio/qaudioinput.h4
-rw-r--r--src/multimedia/audio/qaudiooutput.h4
-rw-r--r--src/multimedia/audio/qaudioprobe.h2
-rw-r--r--src/multimedia/audio/qaudiosystemplugin.h2
-rw-r--r--src/multimedia/audio/qsound.h2
-rw-r--r--src/multimedia/audio/qsoundeffect.h2
-rw-r--r--src/multimedia/camera/qcamera.h8
-rw-r--r--src/multimedia/camera/qcameraexposure.h8
-rw-r--r--src/multimedia/camera/qcameraimagecapture.h4
-rw-r--r--src/multimedia/controls/controls.pri7
-rw-r--r--src/multimedia/controls/qaudiodecodercontrol.h2
-rw-r--r--src/multimedia/controls/qaudioencodersettingscontrol.h4
-rw-r--r--src/multimedia/controls/qaudioinputselectorcontrol.h2
-rw-r--r--src/multimedia/controls/qaudiooutputselectorcontrol.h2
-rw-r--r--src/multimedia/controls/qaudiorolecontrol.h2
-rw-r--r--src/multimedia/controls/qcameracapturebufferformatcontrol.h2
-rw-r--r--src/multimedia/controls/qcameracapturedestinationcontrol.h2
-rw-r--r--src/multimedia/controls/qcameracontrol.h2
-rw-r--r--src/multimedia/controls/qcameraexposurecontrol.h2
-rw-r--r--src/multimedia/controls/qcamerafeedbackcontrol.h2
-rw-r--r--src/multimedia/controls/qcameraflashcontrol.h2
-rw-r--r--src/multimedia/controls/qcamerafocuscontrol.h2
-rw-r--r--src/multimedia/controls/qcameraimagecapturecontrol.h2
-rw-r--r--src/multimedia/controls/qcameraimageprocessingcontrol.h2
-rw-r--r--src/multimedia/controls/qcamerainfocontrol.h2
-rw-r--r--src/multimedia/controls/qcameralockscontrol.h2
-rw-r--r--src/multimedia/controls/qcameraviewfindersettingscontrol.h4
-rw-r--r--src/multimedia/controls/qcamerazoomcontrol.h2
-rw-r--r--src/multimedia/controls/qcustomaudiorolecontrol.cpp117
-rw-r--r--src/multimedia/controls/qcustomaudiorolecontrol.h76
-rw-r--r--src/multimedia/controls/qimageencodercontrol.h4
-rw-r--r--src/multimedia/controls/qmediaaudioprobecontrol.h2
-rw-r--r--src/multimedia/controls/qmediaavailabilitycontrol.h2
-rw-r--r--src/multimedia/controls/qmediacontainercontrol.h2
-rw-r--r--src/multimedia/controls/qmediagaplessplaybackcontrol.h2
-rw-r--r--src/multimedia/controls/qmedianetworkaccesscontrol.h2
-rw-r--r--src/multimedia/controls/qmediaplayercontrol.cpp2
-rw-r--r--src/multimedia/controls/qmediaplayercontrol.h2
-rw-r--r--src/multimedia/controls/qmediarecordercontrol.h2
-rw-r--r--src/multimedia/controls/qmediastreamscontrol.h2
-rw-r--r--src/multimedia/controls/qmediavideoprobecontrol.h2
-rw-r--r--src/multimedia/controls/qmetadatareadercontrol.h2
-rw-r--r--src/multimedia/controls/qmetadatawritercontrol.h2
-rw-r--r--src/multimedia/controls/qradiodatacontrol.h2
-rw-r--r--src/multimedia/controls/qradiotunercontrol.h2
-rw-r--r--src/multimedia/controls/qvideodeviceselectorcontrol.h2
-rw-r--r--src/multimedia/controls/qvideoencodersettingscontrol.h6
-rw-r--r--src/multimedia/controls/qvideorenderercontrol.h2
-rw-r--r--src/multimedia/controls/qvideowindowcontrol.h2
-rw-r--r--src/multimedia/multimedia.pro2
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp90
-rw-r--r--src/multimedia/playback/qmediaplayer.h11
-rw-r--r--src/multimedia/playback/qmediaplaylist.h10
-rw-r--r--src/multimedia/playback/qplaylistfileparser.cpp2
-rw-r--r--src/multimedia/qmediacontrol.h4
-rw-r--r--src/multimedia/radio/qradiodata.h2
-rw-r--r--src/multimedia/radio/qradiotuner.h2
-rw-r--r--src/multimedia/recording/qaudiorecorder.h2
-rw-r--r--src/multimedia/recording/qmediarecorder.h10
-rw-r--r--src/multimedia/video/qabstractvideofilter.h2
-rw-r--r--src/multimedia/video/qabstractvideosurface.h2
-rw-r--r--src/multimedia/video/qvideoframe.cpp38
-rw-r--r--src/multimedia/video/qvideoprobe.h2
-rw-r--r--src/multimedia/video/qvideosurfaceformat.cpp29
-rw-r--r--src/multimedia/video/qvideosurfaceformat.h3
-rw-r--r--src/multimediawidgets/qcameraviewfinder.h2
-rw-r--r--src/multimediawidgets/qgraphicsvideoitem.cpp2
-rw-r--r--src/multimediawidgets/qgraphicsvideoitem.h4
-rw-r--r--src/multimediawidgets/qvideowidget.cpp6
-rw-r--r--src/multimediawidgets/qvideowidget.h2
-rw-r--r--src/multimediawidgets/qvideowidgetcontrol.h2
-rw-r--r--src/plugins/alsa/qalsaplugin.h10
-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.pri19
-rw-r--r--src/plugins/android/jar/jar.pro22
-rw-r--r--src/plugins/android/src/common/qandroidvideooutput.h14
-rw-r--r--src/plugins/android/src/mediacapture/qandroidaudioencodersettingscontrol.h10
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameracapturebufferformatcontrol.h6
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameracapturedestinationcontrol.h6
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.h10
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameraflashcontrol.h8
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.h18
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameraimagecapturecontrol.h10
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameraimageprocessingcontrol.h8
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameralockscontrol.h8
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.cpp12
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.h6
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerazoomcontrol.h14
-rw-r--r--src/plugins/android/src/mediacapture/qandroidimageencodercontrol.h10
-rw-r--r--src/plugins/android/src/mediacapture/qandroidmediacontainercontrol.h8
-rw-r--r--src/plugins/android/src/mediacapture/qandroidmediarecordercontrol.h22
-rw-r--r--src/plugins/android/src/mediacapture/qandroidvideoencodersettingscontrol.h12
-rw-r--r--src/plugins/android/src/mediacapture/qandroidviewfindersettingscontrol.h6
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h46
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaplayervideorenderercontrol.h6
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmediaservice.h6
-rw-r--r--src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.h8
-rw-r--r--src/plugins/android/src/qandroidmediaserviceplugin.h16
-rw-r--r--src/plugins/avfoundation/camera/avfaudioencodersettingscontrol.h10
-rw-r--r--src/plugins/avfoundation/camera/avfcameraexposurecontrol.h10
-rw-r--r--src/plugins/avfoundation/camera/avfcameraexposurecontrol.mm25
-rw-r--r--src/plugins/avfoundation/camera/avfcameraflashcontrol.h8
-rw-r--r--src/plugins/avfoundation/camera/avfcamerafocuscontrol.h18
-rw-r--r--src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h12
-rw-r--r--src/plugins/avfoundation/camera/avfcamerazoomcontrol.h14
-rw-r--r--src/plugins/avfoundation/camera/avfimageencodercontrol.h10
-rw-r--r--src/plugins/avfoundation/camera/avfmediacontainercontrol.h8
-rw-r--r--src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.h22
-rw-r--r--src/plugins/avfoundation/camera/avfvideoencodersettingscontrol.h12
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayercontrol.mm1
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h4
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm34
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfvideowindowcontrol.mm8
-rw-r--r--src/plugins/coreaudio/coreaudioplugin.h10
-rw-r--r--src/plugins/directshow/camera/camera.pri12
-rw-r--r--src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.cpp65
-rw-r--r--src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.h60
-rw-r--r--src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.cpp68
-rw-r--r--src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.h66
-rw-r--r--src/plugins/directshow/camera/directshowcameraexposurecontrol.cpp411
-rw-r--r--src/plugins/directshow/camera/directshowcameraexposurecontrol.h100
-rw-r--r--src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp209
-rw-r--r--src/plugins/directshow/camera/directshowcamerazoomcontrol.h88
-rw-r--r--src/plugins/directshow/camera/dscameraservice.cpp56
-rw-r--r--src/plugins/directshow/camera/dscameraservice.h12
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp78
-rw-r--r--src/plugins/directshow/camera/dscamerasession.h18
-rw-r--r--src/plugins/directshow/camera/dsimagecapturecontrol.cpp2
-rw-r--r--src/plugins/directshow/player/directshowvideorenderercontrol.cpp4
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp2
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp2
-rw-r--r--src/plugins/opensles/qopenslesaudiooutput.cpp38
-rw-r--r--src/plugins/opensles/qopenslesaudiooutput.h54
-rw-r--r--src/plugins/pulseaudio/qaudioinput_pulse.cpp2
-rw-r--r--src/plugins/pulseaudio/qaudiooutput_pulse.cpp2
-rw-r--r--src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h18
-rw-r--r--src/plugins/qnx-audio/audio/qnxaudioinput.h44
-rw-r--r--src/plugins/qnx-audio/audio/qnxaudiooutput.h44
-rw-r--r--src/plugins/qnx-audio/audio/qnxaudioplugin.h10
-rw-r--r--src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h10
-rw-r--r--src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h6
-rw-r--r--src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h6
-rw-r--r--src/plugins/qnx/camera/bbcameracontrol.h14
-rw-r--r--src/plugins/qnx/camera/bbcameraexposurecontrol.h10
-rw-r--r--src/plugins/qnx/camera/bbcameraflashcontrol.h8
-rw-r--r--src/plugins/qnx/camera/bbcamerafocuscontrol.h18
-rw-r--r--src/plugins/qnx/camera/bbcameraimagecapturecontrol.h10
-rw-r--r--src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h8
-rw-r--r--src/plugins/qnx/camera/bbcameralockscontrol.h8
-rw-r--r--src/plugins/qnx/camera/bbcameramediarecordercontrol.h22
-rw-r--r--src/plugins/qnx/camera/bbcameraorientationhandler.h2
-rw-r--r--src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h12
-rw-r--r--src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h6
-rw-r--r--src/plugins/qnx/camera/bbcamerazoomcontrol.h14
-rw-r--r--src/plugins/qnx/camera/bbimageencodercontrol.h10
-rw-r--r--src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h12
-rw-r--r--src/plugins/qnx/camera/bbvideorenderercontrol.h4
-rw-r--r--src/plugins/qnx/common/windowgrabber.h2
-rw-r--r--src/plugins/qnx/mediaplayer/mediaplayer.pri6
-rw-r--r--src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h6
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp67
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h63
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp64
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h54
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp13
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h6
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h6
-rw-r--r--src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h6
-rw-r--r--src/plugins/qnx/mediaplayer/mmrendererutil.cpp8
-rw-r--r--src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h36
-rw-r--r--src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp88
-rw-r--r--src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h14
-rw-r--r--src/plugins/qnx/neutrinoserviceplugin.h6
-rw-r--r--src/plugins/wasapi/qwasapiaudiodeviceinfo.h18
-rw-r--r--src/plugins/wasapi/qwasapiaudioinput.h40
-rw-r--r--src/plugins/wasapi/qwasapiaudiooutput.h40
-rw-r--r--src/plugins/wasapi/qwasapiplugin.h10
-rw-r--r--src/plugins/windowsaudio/qwindowsaudioplugin.h10
-rw-r--r--src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp8
-rw-r--r--src/plugins/winrt/qwinrtabstractvideorenderercontrol.h4
-rw-r--r--src/plugins/winrt/qwinrtcameracontrol.cpp72
-rw-r--r--src/plugins/winrt/qwinrtcameracontrol.h14
-rw-r--r--src/plugins/winrt/qwinrtcameraflashcontrol.h8
-rw-r--r--src/plugins/winrt/qwinrtcamerafocuscontrol.h18
-rw-r--r--src/plugins/winrt/qwinrtcameraimagecapturecontrol.h10
-rw-r--r--src/plugins/winrt/qwinrtcamerainfocontrol.h4
-rw-r--r--src/plugins/winrt/qwinrtcameralockscontrol.h8
-rw-r--r--src/plugins/winrt/qwinrtcameraservice.h4
-rw-r--r--src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp6
-rw-r--r--src/plugins/winrt/qwinrtcameravideorenderercontrol.h4
-rw-r--r--src/plugins/winrt/qwinrtimageencodercontrol.h10
-rw-r--r--src/plugins/winrt/qwinrtmediaplayercontrol.cpp4
-rw-r--r--src/plugins/winrt/qwinrtmediaplayercontrol.h44
-rw-r--r--src/plugins/winrt/qwinrtmediaplayerservice.cpp6
-rw-r--r--src/plugins/winrt/qwinrtplayerrenderercontrol.h2
-rw-r--r--src/plugins/winrt/qwinrtserviceplugin.cpp2
-rw-r--r--src/plugins/winrt/qwinrtserviceplugin.h10
-rw-r--r--src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp2
-rw-r--r--src/plugins/winrt/qwinrtvideodeviceselectorcontrol.h12
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp2
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h26
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h18
-rw-r--r--src/qtmultimediaquicktools/qsgvideonode_yuv.cpp6
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp6
-rw-r--r--tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp150
-rw-r--r--tests/auto/unit/qmediaplayer/tst_qmediaplayer.cpp95
-rw-r--r--tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h1
-rw-r--r--tests/auto/unit/qmultimedia_common/mockcustomaudiorolecontrol.h65
-rw-r--r--tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h11
-rw-r--r--tests/auto/unit/qmultimedia_common/mockplayer.pri3
233 files changed, 3390 insertions, 918 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 0338efe07..dc68d3884 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.10.1
+MODULE_VERSION = 5.11.0
diff --git a/examples/multimedia/video/qmlvideofilter_opencl/main.cpp b/examples/multimedia/video/qmlvideofilter_opencl/main.cpp
index df8222432..cf2fcbd7b 100644
--- a/examples/multimedia/video/qmlvideofilter_opencl/main.cpp
+++ b/examples/multimedia/video/qmlvideofilter_opencl/main.cpp
@@ -88,7 +88,7 @@ public:
qreal factor() const { return m_factor; }
void setFactor(qreal v);
- QVideoFilterRunnable *createFilterRunnable() Q_DECL_OVERRIDE;
+ QVideoFilterRunnable *createFilterRunnable() override;
signals:
void factorChanged();
@@ -102,7 +102,7 @@ class CLFilterRunnable : public QVideoFilterRunnable
public:
CLFilterRunnable(CLFilter *filter);
~CLFilterRunnable();
- QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) Q_DECL_OVERRIDE;
+ QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) override;
private:
void releaseTextures();
@@ -423,7 +423,7 @@ class InfoFilter : public QAbstractVideoFilter
Q_OBJECT
public:
- QVideoFilterRunnable *createFilterRunnable() Q_DECL_OVERRIDE;
+ QVideoFilterRunnable *createFilterRunnable() override;
signals:
void finished(QObject *result);
@@ -436,7 +436,7 @@ class InfoFilterRunnable : public QVideoFilterRunnable
{
public:
InfoFilterRunnable(InfoFilter *filter) : m_filter(filter) { }
- QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) Q_DECL_OVERRIDE;
+ QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) override;
private:
InfoFilter *m_filter;
diff --git a/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp b/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp
index 2f5c16d5e..7ee3eb541 100644
--- a/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp
+++ b/examples/multimediawidgets/customvideosurface/customvideowidget/videowidget.cpp
@@ -102,7 +102,7 @@ void VideoWidget::paintEvent(QPaintEvent *event)
QBrush brush = palette().background();
- foreach (const QRect &rect, region.rects())
+ for (const QRect &rect : region)
painter.fillRect(rect, brush);
}
diff --git a/examples/multimediawidgets/player/main.cpp b/examples/multimediawidgets/player/main.cpp
index 9e6d9358c..a20fb1c4f 100644
--- a/examples/multimediawidgets/player/main.cpp
+++ b/examples/multimediawidgets/player/main.cpp
@@ -63,14 +63,21 @@ int main(int argc, char *argv[])
QCoreApplication::setOrganizationName("QtProject");
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
QCommandLineParser parser;
+ QCommandLineOption customAudioRoleOption("custom-audio-role",
+ "Set a custom audio role for the player.",
+ "role");
parser.setApplicationDescription("Qt MultiMedia Player Example");
parser.addHelpOption();
parser.addVersionOption();
- parser.addPositionalArgument("url", "The URL to open.");
+ parser.addOption(customAudioRoleOption);
+ parser.addPositionalArgument("url", "The URL(s) to open.");
parser.process(app);
Player player;
+ if (parser.isSet(customAudioRoleOption))
+ player.setCustomAudioRole(parser.value(customAudioRoleOption));
+
if (!parser.positionalArguments().isEmpty() && player.isPlayerAvailable()) {
QList<QUrl> urls;
for (auto &a: parser.positionalArguments())
diff --git a/examples/multimediawidgets/player/player.cpp b/examples/multimediawidgets/player/player.cpp
index 8113df70e..89246e65c 100644
--- a/examples/multimediawidgets/player/player.cpp
+++ b/examples/multimediawidgets/player/player.cpp
@@ -174,6 +174,15 @@ Player::Player(QWidget *parent)
layout->addLayout(hLayout);
layout->addLayout(controlLayout);
layout->addLayout(histogramLayout);
+#if defined(Q_OS_QNX)
+ // On QNX, the main window doesn't have a title bar (or any other decorations).
+ // Create a status bar for the status information instead.
+ m_statusLabel = new QLabel;
+ m_statusBar = new QStatusBar;
+ m_statusBar->addPermanentWidget(m_statusLabel);
+ m_statusBar->setSizeGripEnabled(false); // Without mouse grabbing, it doesn't work very well.
+ layout->addWidget(m_statusBar);
+#endif
setLayout(layout);
@@ -234,6 +243,11 @@ void Player::addToPlaylist(const QList<QUrl> &urls)
}
}
+void Player::setCustomAudioRole(const QString &role)
+{
+ m_player->setCustomAudioRole(role);
+}
+
void Player::durationChanged(qint64 duration)
{
m_duration = duration / 1000;
@@ -303,15 +317,17 @@ void Player::statusChanged(QMediaPlayer::MediaStatus status)
case QMediaPlayer::UnknownMediaStatus:
case QMediaPlayer::NoMedia:
case QMediaPlayer::LoadedMedia:
- case QMediaPlayer::BufferingMedia:
- case QMediaPlayer::BufferedMedia:
setStatusInfo(QString());
break;
case QMediaPlayer::LoadingMedia:
setStatusInfo(tr("Loading..."));
break;
+ case QMediaPlayer::BufferingMedia:
+ case QMediaPlayer::BufferedMedia:
+ setStatusInfo(tr("Buffering %1%").arg(m_player->bufferStatus()));
+ break;
case QMediaPlayer::StalledMedia:
- setStatusInfo(tr("Media Stalled"));
+ setStatusInfo(tr("Stalled %1%").arg(m_player->bufferStatus()));
break;
case QMediaPlayer::EndOfMedia:
QApplication::alert(this);
@@ -342,7 +358,10 @@ void Player::handleCursor(QMediaPlayer::MediaStatus status)
void Player::bufferingProgress(int progress)
{
- setStatusInfo(tr("Buffering %4%").arg(progress));
+ if (m_player->mediaStatus() == QMediaPlayer::StalledMedia)
+ setStatusInfo(tr("Stalled %1%").arg(progress));
+ else
+ setStatusInfo(tr("Buffering %1%").arg(progress));
}
void Player::videoAvailableChanged(bool available)
@@ -364,19 +383,31 @@ void Player::videoAvailableChanged(bool available)
void Player::setTrackInfo(const QString &info)
{
m_trackInfo = info;
- if (!m_statusInfo.isEmpty())
- setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo));
- else
- setWindowTitle(m_trackInfo);
+
+ if (m_statusBar) {
+ m_statusBar->showMessage(m_trackInfo);
+ m_statusLabel->setText(m_statusInfo);
+ } else {
+ if (!m_statusInfo.isEmpty())
+ setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo));
+ else
+ setWindowTitle(m_trackInfo);
+ }
}
void Player::setStatusInfo(const QString &info)
{
m_statusInfo = info;
- if (!m_statusInfo.isEmpty())
- setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo));
- else
- setWindowTitle(m_trackInfo);
+
+ if (m_statusBar) {
+ m_statusBar->showMessage(m_trackInfo);
+ m_statusLabel->setText(m_statusInfo);
+ } else {
+ if (!m_statusInfo.isEmpty())
+ setWindowTitle(QString("%1 | %2").arg(m_trackInfo).arg(m_statusInfo));
+ else
+ setWindowTitle(m_trackInfo);
+ }
}
void Player::displayErrorMessage()
diff --git a/examples/multimediawidgets/player/player.h b/examples/multimediawidgets/player/player.h
index 1b30204f9..3002c9811 100644
--- a/examples/multimediawidgets/player/player.h
+++ b/examples/multimediawidgets/player/player.h
@@ -62,6 +62,7 @@ class QMediaPlayer;
class QModelIndex;
class QPushButton;
class QSlider;
+class QStatusBar;
class QVideoProbe;
class QVideoWidget;
class QAudioProbe;
@@ -81,6 +82,7 @@ public:
bool isPlayerAvailable() const;
void addToPlaylist(const QList<QUrl> &urls);
+ void setCustomAudioRole(const QString &role);
signals:
void fullScreenChanged(bool fullScreen);
@@ -122,6 +124,8 @@ private:
QPushButton *m_fullScreenButton = nullptr;
QPushButton *m_colorButton = nullptr;
QDialog *m_colorDialog = nullptr;
+ QLabel *m_statusLabel = nullptr;
+ QStatusBar *m_statusBar = nullptr;
QLabel *m_labelHistogram = nullptr;
HistogramWidget *m_videoHistogram = nullptr;
diff --git a/src/gsttools/qgstreamerbushelper.cpp b/src/gsttools/qgstreamerbushelper.cpp
index 89b2c4ae7..bd35d4b0a 100644
--- a/src/gsttools/qgstreamerbushelper.cpp
+++ b/src/gsttools/qgstreamerbushelper.cpp
@@ -58,7 +58,7 @@ public:
m_tag(0),
m_bus(bus),
m_helper(parent),
- m_intervalTimer(Q_NULLPTR)
+ m_intervalTimer(nullptr)
{
// glib event loop can be disabled either by env variable or QT_NO_GLIB define, so check the dispacher
QAbstractEventDispatcher *dispatcher = QCoreApplication::eventDispatcher();
diff --git a/src/imports/audioengine/qaudioengine_openal_p.h b/src/imports/audioengine/qaudioengine_openal_p.h
index c1dbf6aa2..92735ba86 100644
--- a/src/imports/audioengine/qaudioengine_openal_p.h
+++ b/src/imports/audioengine/qaudioengine_openal_p.h
@@ -91,12 +91,12 @@ public:
StaticSoundBufferAL(QObject *parent, const QUrl &url, QSampleCache *sampleLoader);
~StaticSoundBufferAL();
- State state() const Q_DECL_OVERRIDE;
+ State state() const override;
- void load() Q_DECL_OVERRIDE;
+ void load() override;
- void bindToSource(ALuint alSource) Q_DECL_OVERRIDE;
- void unbindFromSource(ALuint alSource) Q_DECL_OVERRIDE;
+ void bindToSource(ALuint alSource) override;
+ void unbindFromSource(ALuint alSource) override;
inline long addRef() { return ++m_ref; }
inline long release() { return --m_ref; }
diff --git a/src/imports/multimedia/Video.qml b/src/imports/multimedia/Video.qml
index 66b86c74b..19c437869 100644
--- a/src/imports/multimedia/Video.qml
+++ b/src/imports/multimedia/Video.qml
@@ -38,7 +38,7 @@
****************************************************************************/
import QtQuick 2.0
-import QtMultimedia 5.9
+import QtMultimedia 5.11
/*!
\qmltype Video
@@ -302,13 +302,31 @@ Item {
\li MediaPlayer.AccessibilityRole - for accessibility, such as with a screen reader.
\li MediaPlayer.SonificationRole - sonification, such as with user interface sounds.
\li MediaPlayer.GameRole - game audio.
+ \li MediaPlayer.CustomRole - The role is specified by customAudioRole.
\endlist
+ customAudioRole is cleared when this property is set to anything other than CustomRole.
+
\since 5.6
*/
property alias audioRole: player.audioRole
/*!
+ \qmlproperty string Video::customAudioRole
+
+ This property holds the role of the audio stream when the backend supports audio roles
+ unknown to Qt. It can be set to specify the type of audio being played, allowing the
+ system to make appropriate decisions when it comes to volume, routing or post-processing.
+
+ The audio role must be set before setting the source property.
+
+ audioRole is set to CustomRole when this property is set.
+
+ \since 5.11
+ */
+ property alias customAudioRole: player.customAudioRole
+
+ /*!
\qmlproperty bool Video::seekable
This property holds whether the playback position of the video can be
diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp
index 6a316a298..6d9292221 100644
--- a/src/imports/multimedia/multimedia.cpp
+++ b/src/imports/multimedia/multimedia.cpp
@@ -151,6 +151,16 @@ public:
qmlRegisterUncreatableType<QDeclarativeCameraFlash, 1>(uri, 5, 9, "CameraFlash",
trUtf8("CameraFlash is provided by Camera"));
+ // 5.11 types
+ qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio");
+ qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer");
+ qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus",
+ trUtf8("CameraFocus is provided by Camera"));
+ qmlRegisterUncreatableType<QDeclarativeCameraExposure, 1>(uri, 5, 11, "CameraExposure",
+ trUtf8("CameraExposure is provided by Camera"));
+ qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing, 3>(uri, 5, 11, "CameraImageProcessing",
+ trUtf8("CameraImageProcessing is provided by Camera"));
+
qmlRegisterType<QDeclarativeMediaMetaData>();
qmlRegisterType<QAbstractVideoFilter>();
}
diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp
index 652296509..65606b3cf 100644
--- a/src/imports/multimedia/qdeclarativeaudio.cpp
+++ b/src/imports/multimedia/qdeclarativeaudio.cpp
@@ -179,8 +179,11 @@ QDeclarativeAudio::Availability QDeclarativeAudio::availability() const
\li AccessibilityRole - for accessibility, such as with a screen reader.
\li SonificationRole - sonification, such as with user interface sounds.
\li GameRole - game audio.
+ \li CustomRole - The role is specified by customAudioRole.
\endlist
+ customAudioRole is cleared when this property is set to anything other than CustomRole.
+
\since 5.6
*/
QDeclarativeAudio::AudioRole QDeclarativeAudio::audioRole() const
@@ -196,12 +199,49 @@ void QDeclarativeAudio::setAudioRole(QDeclarativeAudio::AudioRole audioRole)
if (m_complete) {
m_player->setAudioRole(QAudio::Role(audioRole));
} else {
+ if (!m_customAudioRole.isEmpty()) {
+ m_customAudioRole.clear();
+ emit customAudioRoleChanged();
+ }
m_audioRole = audioRole;
emit audioRoleChanged();
}
}
/*!
+ \qmlproperty string QtMultimedia::Audio::customAudioRole
+
+ This property holds the role of the audio stream when the backend supports audio
+ roles unknown to Qt. It can be set to specify the type of audio being played,
+ allowing the system to make appropriate decisions when it comes to volume,
+ routing or post-processing.
+
+ The audio role must be set before setting the source property.
+
+ audioRole is set to CustomRole when this property is set.
+
+ \since 5.11
+*/
+QString QDeclarativeAudio::customAudioRole() const
+{
+ return !m_complete ? m_customAudioRole : m_player->customAudioRole();
+}
+
+void QDeclarativeAudio::setCustomAudioRole(const QString &audioRole)
+{
+ if (this->customAudioRole() == audioRole)
+ return;
+
+ if (m_complete) {
+ m_player->setCustomAudioRole(audioRole);
+ } else {
+ setAudioRole(QDeclarativeAudio::CustomRole);
+ m_customAudioRole = audioRole;
+ emit customAudioRoleChanged();
+ }
+}
+
+/*!
\qmlproperty int QtMultimedia::Audio::notifyInterval
The interval at which notifiable properties will update.
@@ -850,6 +890,8 @@ void QDeclarativeAudio::classBegin()
this, SIGNAL(hasVideoChanged()));
connect(m_player, SIGNAL(audioRoleChanged(QAudio::Role)),
this, SIGNAL(audioRoleChanged()));
+ connect(m_player, SIGNAL(customAudioRoleChanged(const QString &)),
+ this, SIGNAL(customAudioRoleChanged()));
connect(m_player, SIGNAL(notifyIntervalChanged(int)),
this, SIGNAL(notifyIntervalChanged()));
@@ -876,6 +918,8 @@ void QDeclarativeAudio::componentComplete()
m_player->setPlaybackRate(m_playbackRate);
if (m_audioRole != UnknownRole)
m_player->setAudioRole(QAudio::Role(m_audioRole));
+ if (!m_customAudioRole.isEmpty())
+ m_player->setCustomAudioRole(m_customAudioRole);
if (m_notifyInterval != m_player->notifyInterval())
m_player->setNotifyInterval(m_notifyInterval);
@@ -1181,12 +1225,30 @@ void QDeclarativeAudio::_q_mediaChanged(const QMediaContent &media)
\li AccessibilityRole - for accessibility, such as with a screen reader.
\li SonificationRole - sonification, such as with user interface sounds.
\li GameRole - game audio.
+ \li CustomRole - The role is specified by customAudioRole.
\endlist
+ customAudioRole is cleared when this property is set to anything other than CustomRole.
+
\since 5.6
*/
/*!
+ \qmlproperty string QtMultimedia::MediaPlayer::customAudioRole
+
+ This property holds the role of the audio stream when the backend supports audio
+ roles unknown to Qt. It can be set to specify the type of audio being played,
+ allowing the system to make appropriate decisions when it comes to volume,
+ routing or post-processing.
+
+ The audio role must be set before setting the source property.
+
+ audioRole is set to CustomRole when this property is set.
+
+ \since 5.11
+*/
+
+/*!
\qmlmethod list<int> QtMultimedia::MediaPlayer::supportedAudioRoles()
Returns a list of supported audio roles.
diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h
index 4e2b94300..043b36042 100644
--- a/src/imports/multimedia/qdeclarativeaudio_p.h
+++ b/src/imports/multimedia/qdeclarativeaudio_p.h
@@ -95,6 +95,7 @@ class QDeclarativeAudio : public QObject, public QQmlParserStatus
Q_PROPERTY(QObject *mediaObject READ mediaObject NOTIFY mediaObjectChanged SCRIPTABLE false DESIGNABLE false)
Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
Q_PROPERTY(AudioRole audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged REVISION 1)
+ Q_PROPERTY(QString customAudioRole READ customAudioRole WRITE setCustomAudioRole NOTIFY customAudioRoleChanged REVISION 3)
Q_PROPERTY(int notifyInterval READ notifyInterval WRITE setNotifyInterval NOTIFY notifyIntervalChanged REVISION 2)
Q_ENUMS(Status)
Q_ENUMS(Error)
@@ -150,6 +151,7 @@ public:
UnknownRole = QAudio::UnknownRole,
AccessibilityRole = QAudio::AccessibilityRole,
AlarmRole = QAudio::AlarmRole,
+ CustomRole = QAudio::CustomRole,
GameRole = QAudio::GameRole,
MusicRole = QAudio::MusicRole,
NotificationRole = QAudio::NotificationRole,
@@ -179,6 +181,8 @@ public:
AudioRole audioRole() const;
void setAudioRole(AudioRole audioRole);
+ QString customAudioRole() const;
+ void setCustomAudioRole(const QString &audioRole);
QUrl source() const;
void setSource(const QUrl &url);
@@ -256,6 +260,7 @@ Q_SIGNALS:
void playbackRateChanged();
Q_REVISION(1) void audioRoleChanged();
+ Q_REVISION(3) void customAudioRoleChanged();
void availabilityChanged(Availability availability);
@@ -287,6 +292,7 @@ private:
qreal m_vol;
qreal m_playbackRate;
AudioRole m_audioRole;
+ QString m_customAudioRole;
QMediaPlayer::State m_playbackState;
QMediaPlayer::MediaStatus m_status;
diff --git a/src/imports/multimedia/qdeclarativecameraexposure.cpp b/src/imports/multimedia/qdeclarativecameraexposure.cpp
index 92972e512..af8c6acf6 100644
--- a/src/imports/multimedia/qdeclarativecameraexposure.cpp
+++ b/src/imports/multimedia/qdeclarativecameraexposure.cpp
@@ -107,6 +107,14 @@ QDeclarativeCameraExposure::QDeclarativeCameraExposure(QCamera *camera, QObject
connect(m_exposure, SIGNAL(shutterSpeedChanged(qreal)), this, SIGNAL(shutterSpeedChanged(qreal)));
connect(m_exposure, SIGNAL(exposureCompensationChanged(qreal)), this, SIGNAL(exposureCompensationChanged(qreal)));
+ connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) {
+ if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus
+ && status != QCamera::ActiveStatus) {
+ return;
+ }
+
+ emit supportedExposureModesChanged();
+ });
}
QDeclarativeCameraExposure::~QDeclarativeCameraExposure()
@@ -369,6 +377,27 @@ void QDeclarativeCameraExposure::setExposureMode(QDeclarativeCameraExposure::Exp
emit exposureModeChanged(exposureMode());
}
}
+
+/*!
+ \qmlproperty list<ExposureMode> QtMultimedia::CameraExposure::supportedExposureModes
+
+ This property holds the supported exposure modes of the camera.
+
+ \since 5.11
+ \sa exposureMode
+ */
+QVariantList QDeclarativeCameraExposure::supportedExposureModes() const
+{
+ QVariantList supportedModes;
+
+ for (int i = int(ExposureAuto); i <= int(QCameraExposure::ExposureBarcode); ++i) {
+ if (m_exposure->isExposureModeSupported((QCameraExposure::ExposureMode) i))
+ supportedModes.append(QVariant(i));
+ }
+
+ return supportedModes;
+}
+
/*!
\property QDeclarativeCameraExposure::spotMeteringPoint
diff --git a/src/imports/multimedia/qdeclarativecameraexposure_p.h b/src/imports/multimedia/qdeclarativecameraexposure_p.h
index 806cb775e..ef99b1ce9 100644
--- a/src/imports/multimedia/qdeclarativecameraexposure_p.h
+++ b/src/imports/multimedia/qdeclarativecameraexposure_p.h
@@ -73,6 +73,7 @@ class QDeclarativeCameraExposure : public QObject
Q_PROPERTY(qreal manualIso READ manualIsoSensitivity WRITE setManualIsoSensitivity NOTIFY manualIsoSensitivityChanged)
Q_PROPERTY(ExposureMode exposureMode READ exposureMode WRITE setExposureMode NOTIFY exposureModeChanged)
+ Q_PROPERTY(QVariantList supportedExposureModes READ supportedExposureModes NOTIFY supportedExposureModesChanged REVISION 1)
Q_PROPERTY(QPointF spotMeteringPoint READ spotMeteringPoint WRITE setSpotMeteringPoint NOTIFY spotMeteringPointChanged)
Q_PROPERTY(MeteringMode meteringMode READ meteringMode WRITE setMeteringMode NOTIFY meteringModeChanged)
@@ -114,6 +115,7 @@ public:
~QDeclarativeCameraExposure();
ExposureMode exposureMode() const;
+ QVariantList supportedExposureModes() const;
qreal exposureCompensation() const;
int isoSensitivity() const;
@@ -153,6 +155,7 @@ Q_SIGNALS:
void exposureCompensationChanged(qreal);
void exposureModeChanged(ExposureMode);
+ void supportedExposureModesChanged();
void meteringModeChanged(MeteringMode);
void spotMeteringPointChanged(QPointF);
diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp
index 1d1436d09..1dd216467 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus.cpp
+++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp
@@ -101,6 +101,15 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren
updateFocusZones();
connect(m_focus, SIGNAL(focusZonesChanged()), SLOT(updateFocusZones()));
+ connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) {
+ if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus
+ && status != QCamera::ActiveStatus) {
+ return;
+ }
+
+ emit supportedFocusModesChanged();
+ emit supportedFocusPointModesChanged();
+ });
}
QDeclarativeCameraFocus::~QDeclarativeCameraFocus()
@@ -161,7 +170,29 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const
}
/*!
+ \qmlproperty list<FocusMode> CameraFocus::supportedFocusModes
+
+ This property holds the supported focus modes of the camera.
+
+ \since 5.11
+ \sa focusMode
+*/
+QVariantList QDeclarativeCameraFocus::supportedFocusModes() const
+{
+ QVariantList supportedModes;
+
+ for (int i = int(FocusManual); i <= int(FocusMacro); ++i) {
+ if (m_focus->isFocusModeSupported((QCameraFocus::FocusMode) i))
+ supportedModes.append(i);
+ }
+
+ return supportedModes;
+}
+
+#if QT_DEPRECATED_SINCE(5, 11)
+/*!
\qmlmethod bool QtMultimedia::CameraFocus::isFocusModeSupported(mode) const
+ \obsolete
Returns true if the supplied \a mode is a supported focus mode, and
false otherwise.
@@ -170,6 +201,7 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCameraFocus::Focu
{
return m_focus->isFocusModeSupported(QCameraFocus::FocusModes(int(mode)));
}
+#endif
void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode)
{
@@ -220,6 +252,26 @@ QDeclarativeCameraFocus::FocusPointMode QDeclarativeCameraFocus::focusPointMode(
return QDeclarativeCameraFocus::FocusPointMode(m_focus->focusPointMode());
}
+/*!
+ \qmlproperty list<enumeration> CameraFocus::supportedFocusPointModes
+
+ This property holds the supported focus point modes of the camera.
+
+ \since 5.10
+ \sa focusPointMode
+*/
+QVariantList QDeclarativeCameraFocus::supportedFocusPointModes() const
+{
+ QVariantList supportedModes;
+
+ for (int i = int(FocusPointAuto); i <= int(FocusPointCustom); i++) {
+ if (m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(i)))
+ supportedModes.append(i);
+ }
+
+ return supportedModes;
+}
+
void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPointMode mode)
{
if (mode != focusPointMode()) {
@@ -228,8 +280,10 @@ void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPo
}
}
+#if QT_DEPRECATED_SINCE(5, 10)
/*!
\qmlmethod bool QtMultimedia::CameraFocus::isFocusPointModeSupported(mode) const
+ \obsolete
Returns true if the supplied \a mode is a supported focus point mode, and
false otherwise.
@@ -238,6 +292,8 @@ bool QDeclarativeCameraFocus::isFocusPointModeSupported(QDeclarativeCameraFocus:
{
return m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(mode));
}
+#endif
+
/*!
\property QDeclarativeCameraFocus::customFocusPoint
diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h
index 16a48de53..e3a1c28b7 100644
--- a/src/imports/multimedia/qdeclarativecamerafocus_p.h
+++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h
@@ -64,8 +64,13 @@ class QDeclarativeCamera;
class QDeclarativeCameraFocus : public QObject
{
Q_OBJECT
+
Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode NOTIFY focusModeChanged)
+ Q_PROPERTY(QVariantList supportedFocusModes READ supportedFocusModes NOTIFY supportedFocusModesChanged REVISION 1)
+
Q_PROPERTY(FocusPointMode focusPointMode READ focusPointMode WRITE setFocusPointMode NOTIFY focusPointModeChanged)
+ Q_PROPERTY(QVariantList supportedFocusPointModes READ supportedFocusPointModes NOTIFY supportedFocusPointModesChanged REVISION 1)
+
Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged)
Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT)
@@ -91,13 +96,18 @@ public:
~QDeclarativeCameraFocus();
FocusMode focusMode() const;
+ QVariantList supportedFocusModes() const;
+
FocusPointMode focusPointMode() const;
- QPointF customFocusPoint() const;
+ QVariantList supportedFocusPointModes() const;
+ QPointF customFocusPoint() const;
QAbstractListModel *focusZones() const;
+#if QT_DEPRECATED_SINCE(5, 10)
Q_INVOKABLE bool isFocusModeSupported(FocusMode mode) const;
Q_INVOKABLE bool isFocusPointModeSupported(FocusPointMode mode) const;
+#endif
public Q_SLOTS:
void setFocusMode(FocusMode);
@@ -106,7 +116,9 @@ public Q_SLOTS:
Q_SIGNALS:
void focusModeChanged(FocusMode);
+ void supportedFocusModesChanged();
void focusPointModeChanged(FocusPointMode);
+ void supportedFocusPointModesChanged();
void customFocusPointChanged(const QPointF &);
private Q_SLOTS:
diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp
index e8a816727..8e14a7945 100644
--- a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp
+++ b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp
@@ -84,6 +84,18 @@ QDeclarativeCameraImageProcessing::QDeclarativeCameraImageProcessing(QCamera *ca
QObject(parent)
{
m_imageProcessing = camera->imageProcessing();
+
+ connect(camera, QOverload<bool>::of(&QCamera::availabilityChanged),
+ this, &QDeclarativeCameraImageProcessing::availableChanged);
+ connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) {
+ if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus
+ && status != QCamera::ActiveStatus) {
+ return;
+ }
+
+ emit supportedColorFiltersChanged();
+ emit supportedWhiteBalanceModesChanged();
+ });
}
QDeclarativeCameraImageProcessing::~QDeclarativeCameraImageProcessing()
@@ -272,6 +284,56 @@ QDeclarativeCameraImageProcessing::ColorFilter QDeclarativeCameraImageProcessing
return ColorFilter(m_imageProcessing->colorFilter());
}
+/*!
+ \qmlproperty bool QtMultimedia::CameraImageProcessing::isAvailable
+
+ This property holds if image processing related settings are supported by this camera.
+
+ \since 5.11
+*/
+bool QDeclarativeCameraImageProcessing::isAvailable() const
+{
+ return m_imageProcessing->isAvailable();
+}
+
+/*!
+ \qmlproperty list<ColorFilter> QtMultimedia::CameraImageProcessing::supportedColorFilters
+
+ This property holds the supported color filters by this camera.
+
+ \since 5.11
+*/
+QVariantList QDeclarativeCameraImageProcessing::supportedColorFilters() const
+{
+ QVariantList supportedFilters;
+
+ for (int i = int(ColorFilterNone); i <= int(ColorFilterVendor); ++i) {
+ if (m_imageProcessing->isColorFilterSupported((QCameraImageProcessing::ColorFilter) i))
+ supportedFilters.append(i);
+ }
+
+ return supportedFilters;
+}
+
+/*!
+ \qmlproperty list<WhiteBalanceMode> QtMultimedia::CameraImageProcessing::supportedWhiteBalanceModes
+
+ This property holds the supported white balance modes by this camera.
+
+ \since 5.11
+*/
+QVariantList QDeclarativeCameraImageProcessing::supportedWhiteBalanceModes() const
+{
+ QVariantList supportedModes;
+
+ for (int i = int(WhiteBalanceAuto); i <= int(WhiteBalanceVendor); i++) {
+ if (m_imageProcessing->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode(i)))
+ supportedModes.append(i);
+ }
+
+ return supportedModes;
+}
+
void QDeclarativeCameraImageProcessing::setColorFilter(ColorFilter filter)
{
if (this->colorFilter() != filter) {
diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h
index eb755d87c..390164250 100644
--- a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h
+++ b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h
@@ -72,6 +72,11 @@ class QDeclarativeCameraImageProcessing : public QObject
Q_PROPERTY(qreal sharpeningLevel READ sharpeningLevel WRITE setSharpeningLevel NOTIFY sharpeningLevelChanged)
Q_PROPERTY(qreal denoisingLevel READ denoisingLevel WRITE setDenoisingLevel NOTIFY denoisingLevelChanged)
Q_PROPERTY(ColorFilter colorFilter READ colorFilter WRITE setColorFilter NOTIFY colorFilterChanged REVISION 1)
+ Q_PROPERTY(bool available READ isAvailable NOTIFY availableChanged REVISION 3)
+ Q_PROPERTY(QVariantList supportedColorFilters READ supportedColorFilters
+ NOTIFY supportedColorFiltersChanged REVISION 3)
+ Q_PROPERTY(QVariantList supportedWhiteBalanceModes READ supportedWhiteBalanceModes
+ NOTIFY supportedWhiteBalanceModesChanged REVISION 3)
public:
enum WhiteBalanceMode {
WhiteBalanceAuto = QCameraImageProcessing::WhiteBalanceAuto,
@@ -112,6 +117,10 @@ public:
ColorFilter colorFilter() const;
+ bool isAvailable() const;
+ QVariantList supportedColorFilters() const;
+ QVariantList supportedWhiteBalanceModes() const;
+
public Q_SLOTS:
void setWhiteBalanceMode(QDeclarativeCameraImageProcessing::WhiteBalanceMode mode) const;
void setManualWhiteBalance(qreal colorTemp) const;
@@ -136,6 +145,10 @@ Q_SIGNALS:
void colorFilterChanged();
+ void availableChanged();
+ void supportedColorFiltersChanged();
+ void supportedWhiteBalanceModesChanged();
+
private:
friend class QDeclarativeCamera;
QDeclarativeCameraImageProcessing(QCamera *camera, QObject *parent = 0);
diff --git a/src/multimedia/audio/qaudio.cpp b/src/multimedia/audio/qaudio.cpp
index dea9a05a5..82613270a 100644
--- a/src/multimedia/audio/qaudio.cpp
+++ b/src/multimedia/audio/qaudio.cpp
@@ -115,6 +115,7 @@ Q_CONSTRUCTOR_FUNCTION(qRegisterAudioMetaTypes)
\value AccessibilityRole For accessibility, such as with a screen reader
\value SonificationRole Sonification, such as with user interface sounds
\value GameRole Game audio
+ \value CustomRole The role is specified by QMediaPlayer::customAudioRole()
\since 5.6
\sa QMediaPlayer::setAudioRole()
@@ -347,6 +348,9 @@ QDebug operator<<(QDebug dbg, QAudio::Role role)
case QAudio::VoiceCommunicationRole:
dbg << "VoiceCommunicationRole";
break;
+ case QAudio::CustomRole:
+ dbg << "CustomRole";
+ break;
}
return dbg;
}
diff --git a/src/multimedia/audio/qaudio.h b/src/multimedia/audio/qaudio.h
index 2603d71d1..90a8c236f 100644
--- a/src/multimedia/audio/qaudio.h
+++ b/src/multimedia/audio/qaudio.h
@@ -68,7 +68,8 @@ namespace QAudio
RingtoneRole,
AccessibilityRole,
SonificationRole,
- GameRole
+ GameRole,
+ CustomRole
};
enum VolumeScale {
diff --git a/src/multimedia/audio/qaudiobuffer.cpp b/src/multimedia/audio/qaudiobuffer.cpp
index fe07d1e47..849d79ab3 100644
--- a/src/multimedia/audio/qaudiobuffer.cpp
+++ b/src/multimedia/audio/qaudiobuffer.cpp
@@ -531,32 +531,32 @@ void *QAudioBuffer::data()
*/
/*!
- \fn QAudioBuffer::StereoFrame::StereoFrame()
+ \fn template <typename T> QAudioBuffer::StereoFrame<T>::StereoFrame()
Constructs a new frame with the "silent" value for this
sample format (0 for signed formats and floats, 0x8* for unsigned formats).
*/
/*!
- \fn QAudioBuffer::StereoFrame::StereoFrame(T leftSample, T rightSample)
+ \fn template <typename T> QAudioBuffer::StereoFrame<T>::StereoFrame(T leftSample, T rightSample)
Constructs a new frame with the supplied \a leftSample and \a rightSample values.
*/
/*!
- \fn QAudioBuffer::StereoFrame::operator=(const StereoFrame &other)
+ \fn template <typename T> QAudioBuffer::StereoFrame<T>::operator=(const StereoFrame &other)
Assigns \a other to this frame.
*/
/*!
- \fn QAudioBuffer::StereoFrame::average() const
+ \fn template <typename T> QAudioBuffer::StereoFrame<T>::average() const
Returns the arithmetic average of the left and right samples.
*/
-/*! \fn QAudioBuffer::StereoFrame::clear()
+/*! \fn template <typename T> QAudioBuffer::StereoFrame<T>::clear()
Sets the values of this frame to the "silent" value.
*/
diff --git a/src/multimedia/audio/qaudiodecoder.h b/src/multimedia/audio/qaudiodecoder.h
index 85e0b75f7..4ba107946 100644
--- a/src/multimedia/audio/qaudiodecoder.h
+++ b/src/multimedia/audio/qaudiodecoder.h
@@ -75,7 +75,7 @@ public:
ServiceMissingError
};
- explicit QAudioDecoder(QObject *parent = Q_NULLPTR);
+ explicit QAudioDecoder(QObject *parent = nullptr);
~QAudioDecoder();
static QMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList& codecs = QStringList());
diff --git a/src/multimedia/audio/qaudioinput.h b/src/multimedia/audio/qaudioinput.h
index 5794276d2..db482a145 100644
--- a/src/multimedia/audio/qaudioinput.h
+++ b/src/multimedia/audio/qaudioinput.h
@@ -62,8 +62,8 @@ class Q_MULTIMEDIA_EXPORT QAudioInput : public QObject
Q_OBJECT
public:
- explicit QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR);
- explicit QAudioInput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR);
+ explicit QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr);
+ explicit QAudioInput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr);
~QAudioInput();
QAudioFormat format() const;
diff --git a/src/multimedia/audio/qaudiooutput.h b/src/multimedia/audio/qaudiooutput.h
index 9f817271d..1c037cd2b 100644
--- a/src/multimedia/audio/qaudiooutput.h
+++ b/src/multimedia/audio/qaudiooutput.h
@@ -62,8 +62,8 @@ class Q_MULTIMEDIA_EXPORT QAudioOutput : public QObject
Q_OBJECT
public:
- explicit QAudioOutput(const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR);
- explicit QAudioOutput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = Q_NULLPTR);
+ explicit QAudioOutput(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr);
+ explicit QAudioOutput(const QAudioDeviceInfo &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr);
~QAudioOutput();
QAudioFormat format() const;
diff --git a/src/multimedia/audio/qaudioprobe.h b/src/multimedia/audio/qaudioprobe.h
index 376a54e34..a3fc4598d 100644
--- a/src/multimedia/audio/qaudioprobe.h
+++ b/src/multimedia/audio/qaudioprobe.h
@@ -53,7 +53,7 @@ class Q_MULTIMEDIA_EXPORT QAudioProbe : public QObject
{
Q_OBJECT
public:
- explicit QAudioProbe(QObject *parent = Q_NULLPTR);
+ explicit QAudioProbe(QObject *parent = nullptr);
~QAudioProbe();
bool setSource(QMediaObject *source);
diff --git a/src/multimedia/audio/qaudiosystemplugin.h b/src/multimedia/audio/qaudiosystemplugin.h
index e304f1c46..3539201a2 100644
--- a/src/multimedia/audio/qaudiosystemplugin.h
+++ b/src/multimedia/audio/qaudiosystemplugin.h
@@ -78,7 +78,7 @@ class Q_MULTIMEDIA_EXPORT QAudioSystemPlugin : public QObject, public QAudioSyst
Q_INTERFACES(QAudioSystemFactoryInterface)
public:
- explicit QAudioSystemPlugin(QObject *parent = Q_NULLPTR);
+ explicit QAudioSystemPlugin(QObject *parent = nullptr);
~QAudioSystemPlugin();
QList<QByteArray> availableDevices(QAudio::Mode) const override = 0;
diff --git a/src/multimedia/audio/qsound.h b/src/multimedia/audio/qsound.h
index 304019ced..0b6320025 100644
--- a/src/multimedia/audio/qsound.h
+++ b/src/multimedia/audio/qsound.h
@@ -58,7 +58,7 @@ public:
static void play(const QString& filename);
- explicit QSound(const QString &filename, QObject *parent = Q_NULLPTR);
+ explicit QSound(const QString &filename, QObject *parent = nullptr);
~QSound();
int loops() const;
diff --git a/src/multimedia/audio/qsoundeffect.h b/src/multimedia/audio/qsoundeffect.h
index 7420d7b81..8bde1fe56 100644
--- a/src/multimedia/audio/qsoundeffect.h
+++ b/src/multimedia/audio/qsoundeffect.h
@@ -80,7 +80,7 @@ public:
Error
};
- explicit QSoundEffect(QObject *parent = Q_NULLPTR);
+ explicit QSoundEffect(QObject *parent = nullptr);
~QSoundEffect();
static QStringList supportedMimeTypes();
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index aebd1c013..06187fec0 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -165,10 +165,10 @@ public:
FrontFace
};
- explicit QCamera(QObject *parent = Q_NULLPTR);
- explicit QCamera(const QByteArray& deviceName, QObject *parent = Q_NULLPTR);
- explicit QCamera(const QCameraInfo& cameraInfo, QObject *parent = Q_NULLPTR);
- explicit QCamera(QCamera::Position position, QObject *parent = Q_NULLPTR);
+ explicit QCamera(QObject *parent = nullptr);
+ explicit QCamera(const QByteArray& deviceName, QObject *parent = nullptr);
+ explicit QCamera(const QCameraInfo& cameraInfo, QObject *parent = nullptr);
+ explicit QCamera(QCamera::Position position, QObject *parent = nullptr);
~QCamera();
#if QT_DEPRECATED_SINCE(5, 3)
diff --git a/src/multimedia/camera/qcameraexposure.h b/src/multimedia/camera/qcameraexposure.h
index e0924ca60..336d4c0b3 100644
--- a/src/multimedia/camera/qcameraexposure.h
+++ b/src/multimedia/camera/qcameraexposure.h
@@ -135,9 +135,9 @@ public:
qreal requestedAperture() const;
qreal requestedShutterSpeed() const;
- QList<int> supportedIsoSensitivities(bool *continuous = Q_NULLPTR) const;
- QList<qreal> supportedApertures(bool *continuous = Q_NULLPTR) const;
- QList<qreal> supportedShutterSpeeds(bool *continuous = Q_NULLPTR) const;
+ QList<int> supportedIsoSensitivities(bool *continuous = nullptr) const;
+ QList<qreal> supportedApertures(bool *continuous = nullptr) const;
+ QList<qreal> supportedShutterSpeeds(bool *continuous = nullptr) const;
public Q_SLOTS:
void setFlashMode(FlashModes mode);
@@ -168,7 +168,7 @@ Q_SIGNALS:
private:
friend class QCamera;
friend class QCameraPrivate;
- explicit QCameraExposure(QCamera *parent = Q_NULLPTR);
+ explicit QCameraExposure(QCamera *parent = nullptr);
virtual ~QCameraExposure();
Q_DISABLE_COPY(QCameraExposure)
diff --git a/src/multimedia/camera/qcameraimagecapture.h b/src/multimedia/camera/qcameraimagecapture.h
index 12feb9eec..6fedb7e2c 100644
--- a/src/multimedia/camera/qcameraimagecapture.h
+++ b/src/multimedia/camera/qcameraimagecapture.h
@@ -87,7 +87,7 @@ public:
};
Q_DECLARE_FLAGS(CaptureDestinations, CaptureDestination)
- explicit QCameraImageCapture(QMediaObject *mediaObject, QObject *parent = Q_NULLPTR);
+ explicit QCameraImageCapture(QMediaObject *mediaObject, QObject *parent = nullptr);
~QCameraImageCapture();
bool isAvailable() const;
@@ -104,7 +104,7 @@ public:
QString imageCodecDescription(const QString &codecName) const;
QList<QSize> supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(),
- bool *continuous = Q_NULLPTR) const;
+ bool *continuous = nullptr) const;
QImageEncoderSettings encodingSettings() const;
void setEncodingSettings(const QImageEncoderSettings& settings);
diff --git a/src/multimedia/controls/controls.pri b/src/multimedia/controls/controls.pri
index 7ab2e51c4..cfebe9777 100644
--- a/src/multimedia/controls/controls.pri
+++ b/src/multimedia/controls/controls.pri
@@ -37,7 +37,8 @@ PUBLIC_HEADERS += \
controls/qmediaaudioprobecontrol.h \
controls/qmediavideoprobecontrol.h \
controls/qmediaavailabilitycontrol.h \
- controls/qaudiorolecontrol.h
+ controls/qaudiorolecontrol.h \
+ controls/qcustomaudiorolecontrol.h
PRIVATE_HEADERS += \
controls/qmediaplaylistcontrol_p.h \
@@ -81,5 +82,5 @@ SOURCES += \
controls/qaudioinputselectorcontrol.cpp \
controls/qaudiooutputselectorcontrol.cpp \
controls/qvideodeviceselectorcontrol.cpp \
- controls/qaudiorolecontrol.cpp
-
+ controls/qaudiorolecontrol.cpp \
+ controls/qcustomaudiorolecontrol.cpp
diff --git a/src/multimedia/controls/qaudiodecodercontrol.h b/src/multimedia/controls/qaudiodecodercontrol.h
index f02da4963..6ab27ba62 100644
--- a/src/multimedia/controls/qaudiodecodercontrol.h
+++ b/src/multimedia/controls/qaudiodecodercontrol.h
@@ -92,7 +92,7 @@ Q_SIGNALS:
void durationChanged(qint64 duration);
protected:
- explicit QAudioDecoderControl(QObject *parent = Q_NULLPTR);
+ explicit QAudioDecoderControl(QObject *parent = nullptr);
};
#define QAudioDecoderControl_iid "org.qt-project.qt.audiodecodercontrol/5.0"
diff --git a/src/multimedia/controls/qaudioencodersettingscontrol.h b/src/multimedia/controls/qaudioencodersettingscontrol.h
index 1906904d8..1f973f0ea 100644
--- a/src/multimedia/controls/qaudioencodersettingscontrol.h
+++ b/src/multimedia/controls/qaudioencodersettingscontrol.h
@@ -67,13 +67,13 @@ public:
virtual QString codecDescription(const QString &codecName) const = 0;
virtual QList<int> supportedSampleRates(const QAudioEncoderSettings &settings,
- bool *continuous = Q_NULLPTR) const = 0;
+ bool *continuous = nullptr) const = 0;
virtual QAudioEncoderSettings audioSettings() const = 0;
virtual void setAudioSettings(const QAudioEncoderSettings&) = 0;
protected:
- explicit QAudioEncoderSettingsControl(QObject *parent = Q_NULLPTR);
+ explicit QAudioEncoderSettingsControl(QObject *parent = nullptr);
};
#define QAudioEncoderSettingsControl_iid "org.qt-project.qt.audioencodersettingscontrol/5.0"
diff --git a/src/multimedia/controls/qaudioinputselectorcontrol.h b/src/multimedia/controls/qaudioinputselectorcontrol.h
index eceaa76dd..9665b55de 100644
--- a/src/multimedia/controls/qaudioinputselectorcontrol.h
+++ b/src/multimedia/controls/qaudioinputselectorcontrol.h
@@ -68,7 +68,7 @@ Q_SIGNALS:
void availableInputsChanged();
protected:
- explicit QAudioInputSelectorControl(QObject *parent = Q_NULLPTR);
+ explicit QAudioInputSelectorControl(QObject *parent = nullptr);
};
#define QAudioInputSelectorControl_iid "org.qt-project.qt.audioinputselectorcontrol/5.0"
diff --git a/src/multimedia/controls/qaudiooutputselectorcontrol.h b/src/multimedia/controls/qaudiooutputselectorcontrol.h
index b2d27a349..de44d0ebb 100644
--- a/src/multimedia/controls/qaudiooutputselectorcontrol.h
+++ b/src/multimedia/controls/qaudiooutputselectorcontrol.h
@@ -68,7 +68,7 @@ Q_SIGNALS:
void availableOutputsChanged();
protected:
- explicit QAudioOutputSelectorControl(QObject *parent = Q_NULLPTR);
+ explicit QAudioOutputSelectorControl(QObject *parent = nullptr);
};
#define QAudioOutputSelectorControl_iid "org.qt-project.qt.audiooutputselectorcontrol/5.0"
diff --git a/src/multimedia/controls/qaudiorolecontrol.h b/src/multimedia/controls/qaudiorolecontrol.h
index 5d9db177b..c59874fdf 100644
--- a/src/multimedia/controls/qaudiorolecontrol.h
+++ b/src/multimedia/controls/qaudiorolecontrol.h
@@ -64,7 +64,7 @@ Q_SIGNALS:
void audioRoleChanged(QAudio::Role role);
protected:
- explicit QAudioRoleControl(QObject *parent = Q_NULLPTR);
+ explicit QAudioRoleControl(QObject *parent = nullptr);
};
#define QAudioRoleControl_iid "org.qt-project.qt.audiorolecontrol/5.6"
diff --git a/src/multimedia/controls/qcameracapturebufferformatcontrol.h b/src/multimedia/controls/qcameracapturebufferformatcontrol.h
index cb8c3d6d9..c659384b6 100644
--- a/src/multimedia/controls/qcameracapturebufferformatcontrol.h
+++ b/src/multimedia/controls/qcameracapturebufferformatcontrol.h
@@ -62,7 +62,7 @@ Q_SIGNALS:
void bufferFormatChanged(QVideoFrame::PixelFormat);
protected:
- explicit QCameraCaptureBufferFormatControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraCaptureBufferFormatControl(QObject *parent = nullptr);
};
#define QCameraCaptureBufferFormatControl_iid "org.qt-project.qt.cameracapturebufferformatcontrol/5.0"
diff --git a/src/multimedia/controls/qcameracapturedestinationcontrol.h b/src/multimedia/controls/qcameracapturedestinationcontrol.h
index 90142d6b5..30d69d47a 100644
--- a/src/multimedia/controls/qcameracapturedestinationcontrol.h
+++ b/src/multimedia/controls/qcameracapturedestinationcontrol.h
@@ -62,7 +62,7 @@ Q_SIGNALS:
void captureDestinationChanged(QCameraImageCapture::CaptureDestinations);
protected:
- explicit QCameraCaptureDestinationControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraCaptureDestinationControl(QObject *parent = nullptr);
};
#define QCameraCaptureDestinationControl_iid "org.qt-project.qt.cameracapturedestinationcontrol/5.0"
diff --git a/src/multimedia/controls/qcameracontrol.h b/src/multimedia/controls/qcameracontrol.h
index f17af0ce9..f7a1b4288 100644
--- a/src/multimedia/controls/qcameracontrol.h
+++ b/src/multimedia/controls/qcameracontrol.h
@@ -83,7 +83,7 @@ Q_SIGNALS:
void captureModeChanged(QCamera::CaptureModes);
protected:
- explicit QCameraControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraControl(QObject *parent = nullptr);
};
#define QCameraControl_iid "org.qt-project.qt.cameracontrol/5.0"
diff --git a/src/multimedia/controls/qcameraexposurecontrol.h b/src/multimedia/controls/qcameraexposurecontrol.h
index 88dda12ed..7694380e5 100644
--- a/src/multimedia/controls/qcameraexposurecontrol.h
+++ b/src/multimedia/controls/qcameraexposurecontrol.h
@@ -87,7 +87,7 @@ Q_SIGNALS:
void parameterRangeChanged(int parameter);
protected:
- explicit QCameraExposureControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraExposureControl(QObject *parent = nullptr);
};
#define QCameraExposureControl_iid "org.qt-project.qt.cameraexposurecontrol/5.0"
diff --git a/src/multimedia/controls/qcamerafeedbackcontrol.h b/src/multimedia/controls/qcamerafeedbackcontrol.h
index cee97210f..195ad3915 100644
--- a/src/multimedia/controls/qcamerafeedbackcontrol.h
+++ b/src/multimedia/controls/qcamerafeedbackcontrol.h
@@ -84,7 +84,7 @@ public:
virtual bool setEventFeedbackSound(EventType, const QString &filePath) = 0;
protected:
- explicit QCameraFeedbackControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraFeedbackControl(QObject *parent = nullptr);
};
#define QCameraFeedbackControl_iid "org.qt-project.qt.camerafeedbackcontrol/5.0"
diff --git a/src/multimedia/controls/qcameraflashcontrol.h b/src/multimedia/controls/qcameraflashcontrol.h
index 08e991f5a..d4b7d1f4c 100644
--- a/src/multimedia/controls/qcameraflashcontrol.h
+++ b/src/multimedia/controls/qcameraflashcontrol.h
@@ -68,7 +68,7 @@ Q_SIGNALS:
void flashReady(bool);
protected:
- explicit QCameraFlashControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraFlashControl(QObject *parent = nullptr);
};
#define QCameraFlashControl_iid "org.qt-project.qt.cameraflashcontrol/5.0"
diff --git a/src/multimedia/controls/qcamerafocuscontrol.h b/src/multimedia/controls/qcamerafocuscontrol.h
index 32da7cc31..a93d2fd1e 100644
--- a/src/multimedia/controls/qcamerafocuscontrol.h
+++ b/src/multimedia/controls/qcamerafocuscontrol.h
@@ -77,7 +77,7 @@ Q_SIGNALS:
void focusZonesChanged();
protected:
- explicit QCameraFocusControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraFocusControl(QObject *parent = nullptr);
};
#define QCameraFocusControl_iid "org.qt-project.qt.camerafocuscontrol/5.0"
diff --git a/src/multimedia/controls/qcameraimagecapturecontrol.h b/src/multimedia/controls/qcameraimagecapturecontrol.h
index 4fe7b9387..e6700fce5 100644
--- a/src/multimedia/controls/qcameraimagecapturecontrol.h
+++ b/src/multimedia/controls/qcameraimagecapturecontrol.h
@@ -80,7 +80,7 @@ Q_SIGNALS:
void error(int id, int error, const QString &errorString);
protected:
- explicit QCameraImageCaptureControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraImageCaptureControl(QObject *parent = nullptr);
};
#define QCameraImageCaptureControl_iid "org.qt-project.qt.cameraimagecapturecontrol/5.0"
diff --git a/src/multimedia/controls/qcameraimageprocessingcontrol.h b/src/multimedia/controls/qcameraimageprocessingcontrol.h
index ee46143e4..8be435f8f 100644
--- a/src/multimedia/controls/qcameraimageprocessingcontrol.h
+++ b/src/multimedia/controls/qcameraimageprocessingcontrol.h
@@ -82,7 +82,7 @@ public:
virtual void setParameter(ProcessingParameter parameter, const QVariant &value) = 0;
protected:
- explicit QCameraImageProcessingControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraImageProcessingControl(QObject *parent = nullptr);
};
#define QCameraImageProcessingControl_iid "org.qt-project.qt.cameraimageprocessingcontrol/5.0"
diff --git a/src/multimedia/controls/qcamerainfocontrol.h b/src/multimedia/controls/qcamerainfocontrol.h
index 32f85fc3a..9ee0a3abf 100644
--- a/src/multimedia/controls/qcamerainfocontrol.h
+++ b/src/multimedia/controls/qcamerainfocontrol.h
@@ -58,7 +58,7 @@ public:
virtual int cameraOrientation(const QString &deviceName) const = 0;
protected:
- explicit QCameraInfoControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraInfoControl(QObject *parent = nullptr);
};
#define QCameraInfoControl_iid "org.qt-project.qt.camerainfocontrol/5.3"
diff --git a/src/multimedia/controls/qcameralockscontrol.h b/src/multimedia/controls/qcameralockscontrol.h
index 01178642f..d545d971e 100644
--- a/src/multimedia/controls/qcameralockscontrol.h
+++ b/src/multimedia/controls/qcameralockscontrol.h
@@ -67,7 +67,7 @@ Q_SIGNALS:
void lockStatusChanged(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason);
protected:
- explicit QCameraLocksControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraLocksControl(QObject *parent = nullptr);
};
#define QCameraLocksControl_iid "org.qt-project.qt.cameralockscontrol/5.0"
diff --git a/src/multimedia/controls/qcameraviewfindersettingscontrol.h b/src/multimedia/controls/qcameraviewfindersettingscontrol.h
index c67fdaabb..7877bd1db 100644
--- a/src/multimedia/controls/qcameraviewfindersettingscontrol.h
+++ b/src/multimedia/controls/qcameraviewfindersettingscontrol.h
@@ -70,7 +70,7 @@ public:
virtual void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) = 0;
protected:
- explicit QCameraViewfinderSettingsControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraViewfinderSettingsControl(QObject *parent = nullptr);
};
#define QCameraViewfinderSettingsControl_iid "org.qt-project.qt.cameraviewfindersettingscontrol/5.0"
@@ -92,7 +92,7 @@ public:
virtual void setViewfinderSettings(const QCameraViewfinderSettings &settings) = 0;
protected:
- explicit QCameraViewfinderSettingsControl2(QObject *parent = Q_NULLPTR);
+ explicit QCameraViewfinderSettingsControl2(QObject *parent = nullptr);
};
#define QCameraViewfinderSettingsControl2_iid "org.qt-project.qt.cameraviewfindersettingscontrol2/5.5"
diff --git a/src/multimedia/controls/qcamerazoomcontrol.h b/src/multimedia/controls/qcamerazoomcontrol.h
index 776d6ddab..feca6a362 100644
--- a/src/multimedia/controls/qcamerazoomcontrol.h
+++ b/src/multimedia/controls/qcamerazoomcontrol.h
@@ -75,7 +75,7 @@ Q_SIGNALS:
void currentDigitalZoomChanged(qreal digitalZoom);
protected:
- explicit QCameraZoomControl(QObject *parent = Q_NULLPTR);
+ explicit QCameraZoomControl(QObject *parent = nullptr);
};
#define QCameraZoomControl_iid "org.qt-project.qt.camerazoomcontrol/5.0"
diff --git a/src/multimedia/controls/qcustomaudiorolecontrol.cpp b/src/multimedia/controls/qcustomaudiorolecontrol.cpp
new file mode 100644
index 000000000..39431be01
--- /dev/null
+++ b/src/multimedia/controls/qcustomaudiorolecontrol.cpp
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 QNX Software Systems. All rights reserved.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediacontrol_p.h"
+#include "qcustomaudiorolecontrol.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QCustomAudioRoleControl
+ \inmodule QtMultimedia
+ \ingroup multimedia_control
+ \since 5.11
+
+ \brief The QCustomAudioRoleControl class provides control over the audio role of a media object.
+
+ If a QMediaService supports audio roles it may implement QCustomAudioRoleControl in order to
+ provide access to roles unknown to Qt.
+
+ The functionality provided by this control is exposed to application code through the
+ QMediaPlayer class.
+
+ The interface name of QCustomAudioRoleControl is \c org.qt-project.qt.customaudiorolecontrol/5.11 as
+ defined in QCustomAudioRoleControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaPlayer
+*/
+
+/*!
+ \macro QCustomAudioRoleControl_iid
+
+ \c org.qt-project.qt.customaudiorolecontrol/5.11
+
+ Defines the interface name of the QCustomAudioRoleControl class.
+
+ \relates QCustomAudioRoleControl
+*/
+
+/*!
+ Construct a QCustomAudioRoleControl with the given \a parent.
+*/
+QCustomAudioRoleControl::QCustomAudioRoleControl(QObject *parent)
+ : QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destroys the audio role control.
+*/
+QCustomAudioRoleControl::~QCustomAudioRoleControl()
+{
+}
+
+/*!
+ \fn QAudio::Role QCustomAudioRoleControl::customAudioRole() const
+
+ Returns the audio role of the media played by the media service.
+*/
+
+/*!
+ \fn void QCustomAudioRoleControl::setCustomAudioRole(const QString &role)
+
+ Sets the audio \a role of the media played by the media service.
+*/
+
+/*!
+ \fn QStringList QCustomAudioRoleControl::supportedCustomAudioRoles() const
+
+ Returns a list of custom audio roles that the media service supports. An
+ empty list may indicate that the supported custom audio roles aren't known.
+ The list may not be complete.
+*/
+
+/*!
+ \fn void QCustomAudioRoleControl::customAudioRoleChanged(const QString &role)
+
+ Signal emitted when the audio \a role has changed.
+ */
+
+#include "moc_qcustomaudiorolecontrol.cpp"
+QT_END_NAMESPACE
diff --git a/src/multimedia/controls/qcustomaudiorolecontrol.h b/src/multimedia/controls/qcustomaudiorolecontrol.h
new file mode 100644
index 000000000..f71bc67df
--- /dev/null
+++ b/src/multimedia/controls/qcustomaudiorolecontrol.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 QNX Software Systems. All rights reserved.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCUSTOMAUDIOROLECONTROL_H
+#define QCUSTOMAUDIOROLECONTROL_H
+
+#include <QtMultimedia/qmediacontrol.h>
+#include <QtMultimedia/qaudio.h>
+
+QT_BEGIN_NAMESPACE
+
+// Class forward declaration required for QDoc bug
+class QString;
+class QStringList;
+
+class Q_MULTIMEDIA_EXPORT QCustomAudioRoleControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ virtual ~QCustomAudioRoleControl();
+
+ virtual QString customAudioRole() const = 0;
+ virtual void setCustomAudioRole(const QString &role) = 0;
+
+ virtual QStringList supportedCustomAudioRoles() const = 0;
+
+Q_SIGNALS:
+ void customAudioRoleChanged(const QString &role);
+
+protected:
+ explicit QCustomAudioRoleControl(QObject *parent = nullptr);
+};
+
+#define QCustomAudioRoleControl_iid "org.qt-project.qt.customaudiorolecontrol/5.11"
+Q_MEDIA_DECLARE_CONTROL(QCustomAudioRoleControl, QCustomAudioRoleControl_iid)
+
+QT_END_NAMESPACE
+
+#endif // QCUSTOMAUDIOROLECONTROL_H
diff --git a/src/multimedia/controls/qimageencodercontrol.h b/src/multimedia/controls/qimageencodercontrol.h
index 292e16b1f..9c2164413 100644
--- a/src/multimedia/controls/qimageencodercontrol.h
+++ b/src/multimedia/controls/qimageencodercontrol.h
@@ -68,13 +68,13 @@ public:
virtual QString imageCodecDescription(const QString &codecName) const = 0;
virtual QList<QSize> supportedResolutions(const QImageEncoderSettings &settings,
- bool *continuous = Q_NULLPTR) const = 0;
+ bool *continuous = nullptr) const = 0;
virtual QImageEncoderSettings imageSettings() const = 0;
virtual void setImageSettings(const QImageEncoderSettings &settings) = 0;
protected:
- explicit QImageEncoderControl(QObject *parent = Q_NULLPTR);
+ explicit QImageEncoderControl(QObject *parent = nullptr);
};
#define QImageEncoderControl_iid "org.qt-project.qt.imageencodercontrol/5.0"
diff --git a/src/multimedia/controls/qmediaaudioprobecontrol.h b/src/multimedia/controls/qmediaaudioprobecontrol.h
index 9d679c768..74cb1bc5a 100644
--- a/src/multimedia/controls/qmediaaudioprobecontrol.h
+++ b/src/multimedia/controls/qmediaaudioprobecontrol.h
@@ -56,7 +56,7 @@ Q_SIGNALS:
void flush();
protected:
- explicit QMediaAudioProbeControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaAudioProbeControl(QObject *parent = nullptr);
};
#define QMediaAudioProbeControl_iid "org.qt-project.qt.mediaaudioprobecontrol/5.0"
diff --git a/src/multimedia/controls/qmediaavailabilitycontrol.h b/src/multimedia/controls/qmediaavailabilitycontrol.h
index 55149ccb0..a61617b1f 100644
--- a/src/multimedia/controls/qmediaavailabilitycontrol.h
+++ b/src/multimedia/controls/qmediaavailabilitycontrol.h
@@ -62,7 +62,7 @@ Q_SIGNALS:
void availabilityChanged(QMultimedia::AvailabilityStatus availability);
protected:
- explicit QMediaAvailabilityControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaAvailabilityControl(QObject *parent = nullptr);
};
#define QMediaAvailabilityControl_iid "org.qt-project.qt.mediaavailabilitycontrol/5.0"
diff --git a/src/multimedia/controls/qmediacontainercontrol.h b/src/multimedia/controls/qmediacontainercontrol.h
index 8c315590e..23c2918b9 100644
--- a/src/multimedia/controls/qmediacontainercontrol.h
+++ b/src/multimedia/controls/qmediacontainercontrol.h
@@ -62,7 +62,7 @@ public:
virtual QString containerDescription(const QString &formatMimeType) const = 0;
protected:
- explicit QMediaContainerControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaContainerControl(QObject *parent = nullptr);
};
#define QMediaContainerControl_iid "org.qt-project.qt.mediacontainercontrol/5.0"
diff --git a/src/multimedia/controls/qmediagaplessplaybackcontrol.h b/src/multimedia/controls/qmediagaplessplaybackcontrol.h
index 8ab31ef62..23e2b4fc2 100644
--- a/src/multimedia/controls/qmediagaplessplaybackcontrol.h
+++ b/src/multimedia/controls/qmediagaplessplaybackcontrol.h
@@ -66,7 +66,7 @@ Q_SIGNALS:
void advancedToNextMedia();
protected:
- explicit QMediaGaplessPlaybackControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaGaplessPlaybackControl(QObject *parent = nullptr);
};
#define QMediaGaplessPlaybackControl_iid "org.qt-project.qt.mediagaplessplaybackcontrol/5.0"
diff --git a/src/multimedia/controls/qmedianetworkaccesscontrol.h b/src/multimedia/controls/qmedianetworkaccesscontrol.h
index 1c258a0bb..daae4f389 100644
--- a/src/multimedia/controls/qmedianetworkaccesscontrol.h
+++ b/src/multimedia/controls/qmedianetworkaccesscontrol.h
@@ -65,7 +65,7 @@ Q_SIGNALS:
void configurationChanged(const QNetworkConfiguration& configuration);
protected:
- explicit QMediaNetworkAccessControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaNetworkAccessControl(QObject *parent = nullptr);
};
#define QMediaNetworkAccessControl_iid "org.qt-project.qt.medianetworkaccesscontrol/5.0"
diff --git a/src/multimedia/controls/qmediaplayercontrol.cpp b/src/multimedia/controls/qmediaplayercontrol.cpp
index 46de05b51..07b277ffb 100644
--- a/src/multimedia/controls/qmediaplayercontrol.cpp
+++ b/src/multimedia/controls/qmediaplayercontrol.cpp
@@ -353,7 +353,7 @@ QMediaPlayerControl::QMediaPlayerControl(QObject *parent):
Pauses playback of the current media.
- If sucessful the player control will immediately enter the \l {QMediaPlayer::PausedState}
+ If successful the player control will immediately enter the \l {QMediaPlayer::PausedState}
{paused} state.
\sa state(), play(), stop()
diff --git a/src/multimedia/controls/qmediaplayercontrol.h b/src/multimedia/controls/qmediaplayercontrol.h
index a3fb1d4e1..d231097f4 100644
--- a/src/multimedia/controls/qmediaplayercontrol.h
+++ b/src/multimedia/controls/qmediaplayercontrol.h
@@ -110,7 +110,7 @@ Q_SIGNALS:
void error(int error, const QString &errorString);
protected:
- explicit QMediaPlayerControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaPlayerControl(QObject *parent = nullptr);
};
#define QMediaPlayerControl_iid "org.qt-project.qt.mediaplayercontrol/5.0"
diff --git a/src/multimedia/controls/qmediarecordercontrol.h b/src/multimedia/controls/qmediarecordercontrol.h
index 85f5c78d5..a0529ce59 100644
--- a/src/multimedia/controls/qmediarecordercontrol.h
+++ b/src/multimedia/controls/qmediarecordercontrol.h
@@ -88,7 +88,7 @@ public Q_SLOTS:
virtual void setVolume(qreal volume) = 0;
protected:
- explicit QMediaRecorderControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaRecorderControl(QObject *parent = nullptr);
};
#define QMediaRecorderControl_iid "org.qt-project.qt.mediarecordercontrol/5.0"
diff --git a/src/multimedia/controls/qmediastreamscontrol.h b/src/multimedia/controls/qmediastreamscontrol.h
index 3c36e96cb..e2506882d 100644
--- a/src/multimedia/controls/qmediastreamscontrol.h
+++ b/src/multimedia/controls/qmediastreamscontrol.h
@@ -73,7 +73,7 @@ Q_SIGNALS:
void activeStreamsChanged();
protected:
- explicit QMediaStreamsControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaStreamsControl(QObject *parent = nullptr);
};
#define QMediaStreamsControl_iid "org.qt-project.qt.mediastreamscontrol/5.0"
diff --git a/src/multimedia/controls/qmediavideoprobecontrol.h b/src/multimedia/controls/qmediavideoprobecontrol.h
index 25caefee6..363975055 100644
--- a/src/multimedia/controls/qmediavideoprobecontrol.h
+++ b/src/multimedia/controls/qmediavideoprobecontrol.h
@@ -58,7 +58,7 @@ Q_SIGNALS:
void flush();
protected:
- explicit QMediaVideoProbeControl(QObject *parent = Q_NULLPTR);
+ explicit QMediaVideoProbeControl(QObject *parent = nullptr);
};
#define QMediaVideoProbeControl_iid "org.qt-project.qt.mediavideoprobecontrol/5.0"
diff --git a/src/multimedia/controls/qmetadatareadercontrol.h b/src/multimedia/controls/qmetadatareadercontrol.h
index 455ce814e..b7be6b7b5 100644
--- a/src/multimedia/controls/qmetadatareadercontrol.h
+++ b/src/multimedia/controls/qmetadatareadercontrol.h
@@ -71,7 +71,7 @@ Q_SIGNALS:
void metaDataAvailableChanged(bool available);
protected:
- explicit QMetaDataReaderControl(QObject *parent = Q_NULLPTR);
+ explicit QMetaDataReaderControl(QObject *parent = nullptr);
};
#define QMetaDataReaderControl_iid "org.qt-project.qt.metadatareadercontrol/5.0"
diff --git a/src/multimedia/controls/qmetadatawritercontrol.h b/src/multimedia/controls/qmetadatawritercontrol.h
index da3413f77..95a314b90 100644
--- a/src/multimedia/controls/qmetadatawritercontrol.h
+++ b/src/multimedia/controls/qmetadatawritercontrol.h
@@ -74,7 +74,7 @@ Q_SIGNALS:
void metaDataAvailableChanged(bool available);
protected:
- explicit QMetaDataWriterControl(QObject *parent = Q_NULLPTR);
+ explicit QMetaDataWriterControl(QObject *parent = nullptr);
};
#define QMetaDataWriterControl_iid "org.qt-project.qt.metadatawritercontrol/5.0"
diff --git a/src/multimedia/controls/qradiodatacontrol.h b/src/multimedia/controls/qradiodatacontrol.h
index 28b3a57b2..98302b918 100644
--- a/src/multimedia/controls/qradiodatacontrol.h
+++ b/src/multimedia/controls/qradiodatacontrol.h
@@ -76,7 +76,7 @@ Q_SIGNALS:
void error(QRadioData::Error err);
protected:
- explicit QRadioDataControl(QObject *parent = Q_NULLPTR);
+ explicit QRadioDataControl(QObject *parent = nullptr);
};
#define QRadioDataControl_iid "org.qt-project.qt.radiodatacontrol/5.0"
diff --git a/src/multimedia/controls/qradiotunercontrol.h b/src/multimedia/controls/qradiotunercontrol.h
index 9a9e12059..bdf529d42 100644
--- a/src/multimedia/controls/qradiotunercontrol.h
+++ b/src/multimedia/controls/qradiotunercontrol.h
@@ -107,7 +107,7 @@ Q_SIGNALS:
void antennaConnectedChanged(bool connectionStatus);
protected:
- explicit QRadioTunerControl(QObject *parent = Q_NULLPTR);
+ explicit QRadioTunerControl(QObject *parent = nullptr);
};
#define QRadioTunerControl_iid "org.qt-project.qt.radiotunercontrol/5.0"
diff --git a/src/multimedia/controls/qvideodeviceselectorcontrol.h b/src/multimedia/controls/qvideodeviceselectorcontrol.h
index 10a703bb2..2d55c0d70 100644
--- a/src/multimedia/controls/qvideodeviceselectorcontrol.h
+++ b/src/multimedia/controls/qvideodeviceselectorcontrol.h
@@ -71,7 +71,7 @@ Q_SIGNALS:
void devicesChanged();
protected:
- explicit QVideoDeviceSelectorControl(QObject *parent = Q_NULLPTR);
+ explicit QVideoDeviceSelectorControl(QObject *parent = nullptr);
};
#define QVideoDeviceSelectorControl_iid "org.qt-project.qt.videodeviceselectorcontrol/5.0"
diff --git a/src/multimedia/controls/qvideoencodersettingscontrol.h b/src/multimedia/controls/qvideoencodersettingscontrol.h
index ea1401aeb..366d585ee 100644
--- a/src/multimedia/controls/qvideoencodersettingscontrol.h
+++ b/src/multimedia/controls/qvideoencodersettingscontrol.h
@@ -65,10 +65,10 @@ public:
virtual ~QVideoEncoderSettingsControl();
virtual QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings,
- bool *continuous = Q_NULLPTR) const = 0;
+ bool *continuous = nullptr) const = 0;
virtual QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings,
- bool *continuous = Q_NULLPTR) const = 0;
+ bool *continuous = nullptr) const = 0;
virtual QStringList supportedVideoCodecs() const = 0;
virtual QString videoCodecDescription(const QString &codecName) const = 0;
@@ -77,7 +77,7 @@ public:
virtual void setVideoSettings(const QVideoEncoderSettings &settings) = 0;
protected:
- explicit QVideoEncoderSettingsControl(QObject *parent = Q_NULLPTR);
+ explicit QVideoEncoderSettingsControl(QObject *parent = nullptr);
};
#define QVideoEncoderSettingsControl_iid "org.qt-project.qt.videoencodersettingscontrol/5.0"
diff --git a/src/multimedia/controls/qvideorenderercontrol.h b/src/multimedia/controls/qvideorenderercontrol.h
index 2ddab28e1..87552271a 100644
--- a/src/multimedia/controls/qvideorenderercontrol.h
+++ b/src/multimedia/controls/qvideorenderercontrol.h
@@ -56,7 +56,7 @@ public:
virtual void setSurface(QAbstractVideoSurface *surface) = 0;
protected:
- explicit QVideoRendererControl(QObject *parent = Q_NULLPTR);
+ explicit QVideoRendererControl(QObject *parent = nullptr);
};
#define QVideoRendererControl_iid "org.qt-project.qt.videorenderercontrol/5.0"
diff --git a/src/multimedia/controls/qvideowindowcontrol.h b/src/multimedia/controls/qvideowindowcontrol.h
index d26579ddc..510a29989 100644
--- a/src/multimedia/controls/qvideowindowcontrol.h
+++ b/src/multimedia/controls/qvideowindowcontrol.h
@@ -94,7 +94,7 @@ Q_SIGNALS:
void nativeSizeChanged();
protected:
- explicit QVideoWindowControl(QObject *parent = Q_NULLPTR);
+ explicit QVideoWindowControl(QObject *parent = nullptr);
};
#define QVideoWindowControl_iid "org.qt-project.qt.videowindowcontrol/5.0"
diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro
index d5d8b40d3..63c50f09e 100644
--- a/src/multimedia/multimedia.pro
+++ b/src/multimedia/multimedia.pro
@@ -67,8 +67,6 @@ include(recording/recording.pri)
include(video/video.pri)
ANDROID_BUNDLED_JAR_DEPENDENCIES = \
- jar/QtMultimedia-bundled.jar:org.qtproject.qt5.android.multimedia.QtMultimediaUtils
-ANDROID_JAR_DEPENDENCIES = \
jar/QtMultimedia.jar:org.qtproject.qt5.android.multimedia.QtMultimediaUtils
ANDROID_LIB_DEPENDENCIES = \
plugins/mediaservice/libqtmedia_android.so \
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index a3484a6ff..01c91babc 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -49,6 +49,7 @@
#include <qmediaplaylistsourcecontrol_p.h>
#include <qmedianetworkaccesscontrol.h>
#include <qaudiorolecontrol.h>
+#include <qcustomaudiorolecontrol.h>
#include <QtCore/qcoreevent.h>
#include <QtCore/qmetaobject.h>
@@ -111,6 +112,7 @@ public:
: provider(0)
, control(0)
, audioRoleControl(0)
+ , customAudioRoleControl(0)
, playlist(0)
, networkAccessControl(0)
, state(QMediaPlayer::StoppedState)
@@ -124,6 +126,7 @@ public:
QMediaServiceProvider *provider;
QMediaPlayerControl* control;
QAudioRoleControl *audioRoleControl;
+ QCustomAudioRoleControl *customAudioRoleControl;
QString errorString;
QPointer<QObject> videoOutput;
@@ -616,6 +619,15 @@ QMediaPlayer::QMediaPlayer(QObject *parent, QMediaPlayer::Flags flags):
if (d->audioRoleControl) {
connect(d->audioRoleControl, &QAudioRoleControl::audioRoleChanged,
this, &QMediaPlayer::audioRoleChanged);
+
+ d->customAudioRoleControl = qobject_cast<QCustomAudioRoleControl *>(
+ d->service->requestControl(QCustomAudioRoleControl_iid));
+ if (d->customAudioRoleControl) {
+ connect(d->customAudioRoleControl,
+ &QCustomAudioRoleControl::customAudioRoleChanged,
+ this,
+ &QMediaPlayer::customAudioRoleChanged);
+ }
}
}
if (d->networkAccessControl != 0) {
@@ -641,6 +653,8 @@ QMediaPlayer::~QMediaPlayer()
d->service->releaseControl(d->control);
if (d->audioRoleControl)
d->service->releaseControl(d->audioRoleControl);
+ if (d->customAudioRoleControl)
+ d->service->releaseControl(d->customAudioRoleControl);
d->provider->releaseService(d->service);
}
@@ -1160,8 +1174,13 @@ void QMediaPlayer::setAudioRole(QAudio::Role audioRole)
{
Q_D(QMediaPlayer);
- if (d->audioRoleControl)
+ if (d->audioRoleControl) {
+ if (d->customAudioRoleControl != nullptr && d->audioRoleControl->audioRole() != audioRole) {
+ d->customAudioRoleControl->setCustomAudioRole(QString());
+ }
+
d->audioRoleControl->setAudioRole(audioRole);
+ }
}
/*!
@@ -1182,6 +1201,48 @@ QList<QAudio::Role> QMediaPlayer::supportedAudioRoles() const
return QList<QAudio::Role>();
}
+QString QMediaPlayer::customAudioRole() const
+{
+ Q_D(const QMediaPlayer);
+
+ if (audioRole() != QAudio::CustomRole)
+ return QString();
+
+ if (d->customAudioRoleControl != nullptr)
+ return d->customAudioRoleControl->customAudioRole();
+
+ return QString();
+}
+
+void QMediaPlayer::setCustomAudioRole(const QString &audioRole)
+{
+ Q_D(QMediaPlayer);
+
+ if (d->customAudioRoleControl) {
+ Q_ASSERT(d->audioRoleControl);
+ setAudioRole(QAudio::CustomRole);
+ d->customAudioRoleControl->setCustomAudioRole(audioRole);
+ }
+}
+
+/*!
+ Returns a list of supported custom audio roles. An empty list may
+ indicate that the supported custom audio roles aren't known. The
+ list may not be complete.
+
+ \since 5.11
+ \sa customAudioRole
+*/
+QStringList QMediaPlayer::supportedCustomAudioRoles() const
+{
+ Q_D(const QMediaPlayer);
+
+ if (d->customAudioRoleControl)
+ return d->customAudioRoleControl->supportedCustomAudioRoles();
+
+ return QStringList();
+}
+
// Enums
/*!
\enum QMediaPlayer::State
@@ -1289,6 +1350,14 @@ QList<QAudio::Role> QMediaPlayer::supportedAudioRoles() const
\since 5.6
*/
+/*!
+ \fn void QMediaPlayer::customAudioRoleChanged(const QString &role)
+
+ Signals that the audio \a role of the media player has changed.
+
+ \since 5.11
+*/
+
// Properties
/*!
\property QMediaPlayer::state
@@ -1471,11 +1540,30 @@ QList<QAudio::Role> QMediaPlayer::supportedAudioRoles() const
The audio role must be set before calling setMedia().
+ customAudioRole is cleared when this property is set to anything other than
+ QAudio::CustomRole.
+
\since 5.6
\sa supportedAudioRoles()
*/
/*!
+ \property QMediaPlayer::customAudioRole
+ \brief the role of the audio stream played by the media player.
+
+ It can be set to specify the type of audio being played when the backend supports
+ audio roles unknown to Qt. Specifying a role allows the system to make appropriate
+ decisions when it comes to volume, routing or post-processing.
+
+ The audio role must be set before calling setMedia().
+
+ audioRole is set to QAudio::CustomRole when this property is set.
+
+ \since 5.11
+ \sa supportedCustomAudioRoles()
+*/
+
+/*!
\fn void QMediaPlayer::durationChanged(qint64 duration)
Signal the duration of the content has changed to \a duration, expressed in milliseconds.
diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h
index f23a94104..e69a32ee4 100644
--- a/src/multimedia/playback/qmediaplayer.h
+++ b/src/multimedia/playback/qmediaplayer.h
@@ -73,7 +73,8 @@ class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QMediaObject
Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
Q_PROPERTY(State state READ state NOTIFY stateChanged)
Q_PROPERTY(MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged)
- Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole)
+ Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged)
+ Q_PROPERTY(QString customAudioRole READ customAudioRole WRITE setCustomAudioRole NOTIFY customAudioRoleChanged)
Q_PROPERTY(QString error READ errorString)
Q_ENUMS(State)
Q_ENUMS(MediaStatus)
@@ -119,7 +120,7 @@ public:
MediaIsPlaylist
};
- explicit QMediaPlayer(QObject *parent = Q_NULLPTR, Flags flags = Flags());
+ explicit QMediaPlayer(QObject *parent = nullptr, Flags flags = Flags());
~QMediaPlayer();
static QMultimedia::SupportEstimate hasSupport(const QString &mimeType,
@@ -162,6 +163,9 @@ public:
QAudio::Role audioRole() const;
void setAudioRole(QAudio::Role audioRole);
QList<QAudio::Role> supportedAudioRoles() const;
+ QString customAudioRole() const;
+ void setCustomAudioRole(const QString &audioRole);
+ QStringList supportedCustomAudioRoles() const;
public Q_SLOTS:
void play();
@@ -174,7 +178,7 @@ public Q_SLOTS:
void setPlaybackRate(qreal rate);
- void setMedia(const QMediaContent &media, QIODevice *stream = Q_NULLPTR);
+ void setMedia(const QMediaContent &media, QIODevice *stream = nullptr);
void setPlaylist(QMediaPlaylist *playlist);
void setNetworkConfigurations(const QList<QNetworkConfiguration> &configurations);
@@ -200,6 +204,7 @@ Q_SIGNALS:
void playbackRateChanged(qreal rate);
void audioRoleChanged(QAudio::Role role);
+ void customAudioRoleChanged(const QString &role);
void error(QMediaPlayer::Error error);
diff --git a/src/multimedia/playback/qmediaplaylist.h b/src/multimedia/playback/qmediaplaylist.h
index b16e734f8..4eb93bd02 100644
--- a/src/multimedia/playback/qmediaplaylist.h
+++ b/src/multimedia/playback/qmediaplaylist.h
@@ -67,7 +67,7 @@ public:
enum PlaybackMode { CurrentItemOnce, CurrentItemInLoop, Sequential, Loop, Random };
enum Error { NoError, FormatError, FormatNotSupportedError, NetworkError, AccessDeniedError };
- explicit QMediaPlaylist(QObject *parent = Q_NULLPTR);
+ explicit QMediaPlaylist(QObject *parent = nullptr);
virtual ~QMediaPlaylist();
QMediaObject *mediaObject() const override;
@@ -96,11 +96,11 @@ public:
bool removeMedia(int start, int end);
bool clear();
- void load(const QNetworkRequest &request, const char *format = Q_NULLPTR);
- void load(const QUrl &location, const char *format = Q_NULLPTR);
- void load(QIODevice *device, const char *format = Q_NULLPTR);
+ void load(const QNetworkRequest &request, const char *format = nullptr);
+ void load(const QUrl &location, const char *format = nullptr);
+ void load(QIODevice *device, const char *format = nullptr);
- bool save(const QUrl &location, const char *format = Q_NULLPTR);
+ bool save(const QUrl &location, const char *format = nullptr);
bool save(QIODevice * device, const char *format);
Error error() const;
diff --git a/src/multimedia/playback/qplaylistfileparser.cpp b/src/multimedia/playback/qplaylistfileparser.cpp
index 47a3d239e..0d33f040d 100644
--- a/src/multimedia/playback/qplaylistfileparser.cpp
+++ b/src/multimedia/playback/qplaylistfileparser.cpp
@@ -551,7 +551,7 @@ void QPlaylistFileParser::start(const QNetworkRequest& request, const QString &m
if (!d->m_currentParser.isNull()) {
abort();
- d->m_pendingJob = { Q_NULLPTR, QMediaResource(request, mimeType) };
+ d->m_pendingJob = { nullptr, QMediaResource(request, mimeType) };
return;
}
diff --git a/src/multimedia/qmediacontrol.h b/src/multimedia/qmediacontrol.h
index 680b18e7f..cff42e3ca 100644
--- a/src/multimedia/qmediacontrol.h
+++ b/src/multimedia/qmediacontrol.h
@@ -59,8 +59,8 @@ public:
~QMediaControl();
protected:
- explicit QMediaControl(QObject *parent = Q_NULLPTR);
- explicit QMediaControl(QMediaControlPrivate &dd, QObject *parent = Q_NULLPTR);
+ explicit QMediaControl(QObject *parent = nullptr);
+ explicit QMediaControl(QMediaControlPrivate &dd, QObject *parent = nullptr);
QMediaControlPrivate *d_ptr;
diff --git a/src/multimedia/radio/qradiodata.h b/src/multimedia/radio/qradiodata.h
index 826c652ff..ffc8b44ba 100644
--- a/src/multimedia/radio/qradiodata.h
+++ b/src/multimedia/radio/qradiodata.h
@@ -82,7 +82,7 @@ public:
College
};
- explicit QRadioData(QMediaObject *mediaObject, QObject *parent = Q_NULLPTR);
+ explicit QRadioData(QMediaObject *mediaObject, QObject *parent = nullptr);
~QRadioData();
QMultimedia::AvailabilityStatus availability() const;
diff --git a/src/multimedia/radio/qradiotuner.h b/src/multimedia/radio/qradiotuner.h
index 7952a2e6c..9e62c849d 100644
--- a/src/multimedia/radio/qradiotuner.h
+++ b/src/multimedia/radio/qradiotuner.h
@@ -78,7 +78,7 @@ public:
enum StereoMode { ForceStereo, ForceMono, Auto };
enum SearchMode { SearchFast, SearchGetStationId };
- explicit QRadioTuner(QObject *parent = Q_NULLPTR);
+ explicit QRadioTuner(QObject *parent = nullptr);
~QRadioTuner();
QMultimedia::AvailabilityStatus availability() const override;
diff --git a/src/multimedia/recording/qaudiorecorder.h b/src/multimedia/recording/qaudiorecorder.h
index 75f95d354..e57794b40 100644
--- a/src/multimedia/recording/qaudiorecorder.h
+++ b/src/multimedia/recording/qaudiorecorder.h
@@ -62,7 +62,7 @@ class Q_MULTIMEDIA_EXPORT QAudioRecorder : public QMediaRecorder
Q_OBJECT
Q_PROPERTY(QString audioInput READ audioInput WRITE setAudioInput NOTIFY audioInputChanged)
public:
- explicit QAudioRecorder(QObject *parent = Q_NULLPTR);
+ explicit QAudioRecorder(QObject *parent = nullptr);
~QAudioRecorder();
QStringList audioInputs() const;
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index a12bcd632..0fdcf80e4 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -106,7 +106,7 @@ public:
OutOfSpaceError
};
- explicit QMediaRecorder(QMediaObject *mediaObject, QObject *parent = Q_NULLPTR);
+ explicit QMediaRecorder(QMediaObject *mediaObject, QObject *parent = nullptr);
~QMediaRecorder();
QMediaObject *mediaObject() const override;
@@ -137,16 +137,16 @@ public:
QString audioCodecDescription(const QString &codecName) const;
QList<int> supportedAudioSampleRates(const QAudioEncoderSettings &settings = QAudioEncoderSettings(),
- bool *continuous = Q_NULLPTR) const;
+ bool *continuous = nullptr) const;
QStringList supportedVideoCodecs() const;
QString videoCodecDescription(const QString &codecName) const;
QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings = QVideoEncoderSettings(),
- bool *continuous = Q_NULLPTR) const;
+ bool *continuous = nullptr) const;
QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings = QVideoEncoderSettings(),
- bool *continuous = Q_NULLPTR) const;
+ bool *continuous = nullptr) const;
QAudioEncoderSettings audioSettings() const;
QVideoEncoderSettings videoSettings() const;
@@ -193,7 +193,7 @@ Q_SIGNALS:
void availabilityChanged(QMultimedia::AvailabilityStatus availability);
protected:
- QMediaRecorder(QMediaRecorderPrivate &dd, QMediaObject *mediaObject, QObject *parent = Q_NULLPTR);
+ QMediaRecorder(QMediaRecorderPrivate &dd, QMediaObject *mediaObject, QObject *parent = nullptr);
bool setMediaObject(QMediaObject *object) override;
QMediaRecorderPrivate *d_ptr;
diff --git a/src/multimedia/video/qabstractvideofilter.h b/src/multimedia/video/qabstractvideofilter.h
index 7e125fac4..6263f4730 100644
--- a/src/multimedia/video/qabstractvideofilter.h
+++ b/src/multimedia/video/qabstractvideofilter.h
@@ -68,7 +68,7 @@ class Q_MULTIMEDIA_EXPORT QAbstractVideoFilter : public QObject
Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged)
public:
- explicit QAbstractVideoFilter(QObject *parent = Q_NULLPTR);
+ explicit QAbstractVideoFilter(QObject *parent = nullptr);
~QAbstractVideoFilter();
bool isActive() const;
diff --git a/src/multimedia/video/qabstractvideosurface.h b/src/multimedia/video/qabstractvideosurface.h
index f3d3e0799..391c9e696 100644
--- a/src/multimedia/video/qabstractvideosurface.h
+++ b/src/multimedia/video/qabstractvideosurface.h
@@ -64,7 +64,7 @@ public:
ResourceError
};
- explicit QAbstractVideoSurface(QObject *parent = Q_NULLPTR);
+ explicit QAbstractVideoSurface(QObject *parent = nullptr);
~QAbstractVideoSurface();
virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(
diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp
index 8578eee1c..bbb87b63b 100644
--- a/src/multimedia/video/qvideoframe.cpp
+++ b/src/multimedia/video/qvideoframe.cpp
@@ -1025,23 +1025,23 @@ extern void QT_FASTCALL qt_convert_NV12_to_ARGB32(const QVideoFrame&, uchar*);
extern void QT_FASTCALL qt_convert_NV21_to_ARGB32(const QVideoFrame&, uchar*);
static VideoFrameConvertFunc qConvertFuncs[QVideoFrame::NPixelFormats] = {
- /* Format_Invalid */ Q_NULLPTR, // Not needed
- /* Format_ARGB32 */ Q_NULLPTR, // Not needed
- /* Format_ARGB32_Premultiplied */ Q_NULLPTR, // Not needed
- /* Format_RGB32 */ Q_NULLPTR, // Not needed
- /* Format_RGB24 */ Q_NULLPTR, // Not needed
- /* Format_RGB565 */ Q_NULLPTR, // Not needed
- /* Format_RGB555 */ Q_NULLPTR, // Not needed
- /* Format_ARGB8565_Premultiplied */ Q_NULLPTR, // Not needed
+ /* Format_Invalid */ nullptr, // Not needed
+ /* Format_ARGB32 */ nullptr, // Not needed
+ /* Format_ARGB32_Premultiplied */ nullptr, // Not needed
+ /* Format_RGB32 */ nullptr, // Not needed
+ /* Format_RGB24 */ nullptr, // Not needed
+ /* Format_RGB565 */ nullptr, // Not needed
+ /* Format_RGB555 */ nullptr, // Not needed
+ /* Format_ARGB8565_Premultiplied */ nullptr, // Not needed
/* Format_BGRA32 */ qt_convert_BGRA32_to_ARGB32,
/* Format_BGRA32_Premultiplied */ qt_convert_BGRA32_to_ARGB32,
/* Format_BGR32 */ qt_convert_BGRA32_to_ARGB32,
/* Format_BGR24 */ qt_convert_BGR24_to_ARGB32,
/* Format_BGR565 */ qt_convert_BGR565_to_ARGB32,
/* Format_BGR555 */ qt_convert_BGR555_to_ARGB32,
- /* Format_BGRA5658_Premultiplied */ Q_NULLPTR,
+ /* Format_BGRA5658_Premultiplied */ nullptr,
/* Format_AYUV444 */ qt_convert_AYUV444_to_ARGB32,
- /* Format_AYUV444_Premultiplied */ Q_NULLPTR,
+ /* Format_AYUV444_Premultiplied */ nullptr,
/* Format_YUV444 */ qt_convert_YUV444_to_ARGB32,
/* Format_YUV420P */ qt_convert_YUV420P_to_ARGB32,
/* Format_YV12 */ qt_convert_YV12_to_ARGB32,
@@ -1049,15 +1049,15 @@ static VideoFrameConvertFunc qConvertFuncs[QVideoFrame::NPixelFormats] = {
/* Format_YUYV */ qt_convert_YUYV_to_ARGB32,
/* Format_NV12 */ qt_convert_NV12_to_ARGB32,
/* Format_NV21 */ qt_convert_NV21_to_ARGB32,
- /* Format_IMC1 */ Q_NULLPTR,
- /* Format_IMC2 */ Q_NULLPTR,
- /* Format_IMC3 */ Q_NULLPTR,
- /* Format_IMC4 */ Q_NULLPTR,
- /* Format_Y8 */ Q_NULLPTR,
- /* Format_Y16 */ Q_NULLPTR,
- /* Format_Jpeg */ Q_NULLPTR, // Not needed
- /* Format_CameraRaw */ Q_NULLPTR,
- /* Format_AdobeDng */ Q_NULLPTR
+ /* Format_IMC1 */ nullptr,
+ /* Format_IMC2 */ nullptr,
+ /* Format_IMC3 */ nullptr,
+ /* Format_IMC4 */ nullptr,
+ /* Format_Y8 */ nullptr,
+ /* Format_Y16 */ nullptr,
+ /* Format_Jpeg */ nullptr, // Not needed
+ /* Format_CameraRaw */ nullptr,
+ /* Format_AdobeDng */ nullptr
};
static void qInitConvertFuncsAsm()
diff --git a/src/multimedia/video/qvideoprobe.h b/src/multimedia/video/qvideoprobe.h
index 854e71272..93ba4d2f5 100644
--- a/src/multimedia/video/qvideoprobe.h
+++ b/src/multimedia/video/qvideoprobe.h
@@ -53,7 +53,7 @@ class Q_MULTIMEDIA_EXPORT QVideoProbe : public QObject
{
Q_OBJECT
public:
- explicit QVideoProbe(QObject *parent = Q_NULLPTR);
+ explicit QVideoProbe(QObject *parent = nullptr);
~QVideoProbe();
bool setSource(QMediaObject *source);
diff --git a/src/multimedia/video/qvideosurfaceformat.cpp b/src/multimedia/video/qvideosurfaceformat.cpp
index c31c52ff7..384ab4e53 100644
--- a/src/multimedia/video/qvideosurfaceformat.cpp
+++ b/src/multimedia/video/qvideosurfaceformat.cpp
@@ -450,6 +450,35 @@ void QVideoSurfaceFormat::setYCbCrColorSpace(QVideoSurfaceFormat::YCbCrColorSpac
}
/*!
+ Returns \c true if the surface is mirrored around its vertical axis.
+ This is typically needed for video frames coming from a front camera of a mobile device.
+
+ \note The mirroring here differs from QImage::mirrored, as a vertically mirrored QImage
+ will be mirrored around its x-axis.
+
+ \since 5.11
+ */
+bool QVideoSurfaceFormat::isMirrored() const
+{
+ return d->mirrored;
+}
+
+/*!
+ Sets if the surface is mirrored around its vertical axis.
+ This is typically needed for video frames coming from a front camera of a mobile device.
+ Default value is false.
+
+ \note The mirroring here differs from QImage::mirrored, as a vertically mirrored QImage
+ will be mirrored around its x-axis.
+
+ \since 5.11
+ */
+void QVideoSurfaceFormat::setMirrored(bool mirrored)
+{
+ d->mirrored = mirrored;
+}
+
+/*!
Returns a suggested size in pixels for the video stream.
This is the size of the viewport scaled according to the pixel aspect ratio.
diff --git a/src/multimedia/video/qvideosurfaceformat.h b/src/multimedia/video/qvideosurfaceformat.h
index 83785ac0a..175b199a7 100644
--- a/src/multimedia/video/qvideosurfaceformat.h
+++ b/src/multimedia/video/qvideosurfaceformat.h
@@ -117,6 +117,9 @@ public:
YCbCrColorSpace yCbCrColorSpace() const;
void setYCbCrColorSpace(YCbCrColorSpace colorSpace);
+ bool isMirrored() const;
+ void setMirrored(bool mirrored);
+
QSize sizeHint() const;
QList<QByteArray> propertyNames() const;
diff --git a/src/multimediawidgets/qcameraviewfinder.h b/src/multimediawidgets/qcameraviewfinder.h
index 57f20809a..eb0f396cc 100644
--- a/src/multimediawidgets/qcameraviewfinder.h
+++ b/src/multimediawidgets/qcameraviewfinder.h
@@ -61,7 +61,7 @@ class Q_MULTIMEDIAWIDGETS_EXPORT QCameraViewfinder : public QVideoWidget
{
Q_OBJECT
public:
- explicit QCameraViewfinder(QWidget *parent = Q_NULLPTR);
+ explicit QCameraViewfinder(QWidget *parent = nullptr);
~QCameraViewfinder();
QMediaObject *mediaObject() const override;
diff --git a/src/multimediawidgets/qgraphicsvideoitem.cpp b/src/multimediawidgets/qgraphicsvideoitem.cpp
index 584cb429a..002fc2cc2 100644
--- a/src/multimediawidgets/qgraphicsvideoitem.cpp
+++ b/src/multimediawidgets/qgraphicsvideoitem.cpp
@@ -254,7 +254,7 @@ bool QGraphicsVideoItem::setMediaObject(QMediaObject *object)
d->rendererControl = qobject_cast<QVideoRendererControl *>(control);
if (d->rendererControl) {
- //don't set the surface untill the item is painted
+ //don't set the surface until the item is painted
//at least once and the surface is configured
if (!d->updatePaintDevice)
d->rendererControl->setSurface(d->surface);
diff --git a/src/multimediawidgets/qgraphicsvideoitem.h b/src/multimediawidgets/qgraphicsvideoitem.h
index 4a86d4412..3902389d9 100644
--- a/src/multimediawidgets/qgraphicsvideoitem.h
+++ b/src/multimediawidgets/qgraphicsvideoitem.h
@@ -61,7 +61,7 @@ class Q_MULTIMEDIAWIDGETS_EXPORT QGraphicsVideoItem : public QGraphicsObject, pu
Q_PROPERTY(QSizeF size READ size WRITE setSize)
Q_PROPERTY(QSizeF nativeSize READ nativeSize NOTIFY nativeSizeChanged)
public:
- explicit QGraphicsVideoItem(QGraphicsItem *parent = Q_NULLPTR);
+ explicit QGraphicsVideoItem(QGraphicsItem *parent = nullptr);
~QGraphicsVideoItem();
QMediaObject *mediaObject() const override;
@@ -79,7 +79,7 @@ public:
QRectF boundingRect() const override;
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) override;
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
Q_SIGNALS:
void nativeSizeChanged(const QSizeF &size);
diff --git a/src/multimediawidgets/qvideowidget.cpp b/src/multimediawidgets/qvideowidget.cpp
index c43f7a006..9a01c73aa 100644
--- a/src/multimediawidgets/qvideowidget.cpp
+++ b/src/multimediawidgets/qvideowidget.cpp
@@ -237,10 +237,8 @@ void QRendererVideoWidgetBackend::paintEvent(QPaintEvent *event)
QBrush brush = m_widget->palette().window();
- QVector<QRect> rects = borderRegion.rects();
- for (QVector<QRect>::iterator it = rects.begin(), end = rects.end(); it != end; ++it) {
- painter.fillRect(*it, brush);
- }
+ for (const QRect &r : borderRegion)
+ painter.fillRect(r, brush);
}
if (m_surface->isActive() && m_boundingRect.intersects(event->rect())) {
diff --git a/src/multimediawidgets/qvideowidget.h b/src/multimediawidgets/qvideowidget.h
index c8474288b..00b160821 100644
--- a/src/multimediawidgets/qvideowidget.h
+++ b/src/multimediawidgets/qvideowidget.h
@@ -64,7 +64,7 @@ class Q_MULTIMEDIAWIDGETS_EXPORT QVideoWidget : public QWidget, public QMediaBin
Q_PROPERTY(int saturation READ saturation WRITE setSaturation NOTIFY saturationChanged)
public:
- explicit QVideoWidget(QWidget *parent = Q_NULLPTR);
+ explicit QVideoWidget(QWidget *parent = nullptr);
~QVideoWidget();
QMediaObject *mediaObject() const override;
diff --git a/src/multimediawidgets/qvideowidgetcontrol.h b/src/multimediawidgets/qvideowidgetcontrol.h
index 7d9423882..c0d177d08 100644
--- a/src/multimediawidgets/qvideowidgetcontrol.h
+++ b/src/multimediawidgets/qvideowidgetcontrol.h
@@ -85,7 +85,7 @@ Q_SIGNALS:
void saturationChanged(int saturation);
protected:
- explicit QVideoWidgetControl(QObject *parent = Q_NULLPTR);
+ explicit QVideoWidgetControl(QObject *parent = nullptr);
};
#define QVideoWidgetControl_iid "org.qt-project.qt.videowidgetcontrol/5.0"
diff --git a/src/plugins/alsa/qalsaplugin.h b/src/plugins/alsa/qalsaplugin.h
index b3c530f88..cebede13b 100644
--- a/src/plugins/alsa/qalsaplugin.h
+++ b/src/plugins/alsa/qalsaplugin.h
@@ -56,11 +56,11 @@ public:
QAlsaPlugin(QObject *parent = 0);
~QAlsaPlugin() {}
- QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(QAudio::Mode mode) const override;
+ QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
+ QAbstractAudioInput *createInput(const QByteArray &device) override;
+ QAbstractAudioOutput *createOutput(const QByteArray &device) override;
+ QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/android/jar/bundledjar.pro b/src/plugins/android/jar/bundledjar.pro
deleted file mode 100644
index cc76164a7..000000000
--- a/src/plugins/android/jar/bundledjar.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 34724c197..000000000
--- a/src/plugins/android/jar/distributedjar.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-TARGET = QtMultimedia
-include(jar.pri)
diff --git a/src/plugins/android/jar/jar.pri b/src/plugins/android/jar/jar.pri
deleted file mode 100644
index 5408fb109..000000000
--- a/src/plugins/android/jar/jar.pri
+++ /dev/null
@@ -1,19 +0,0 @@
-load(qt_build_paths)
-CONFIG += java
-DESTDIR = $$MODULE_BASE_OUTDIR/jar
-
-JAVACLASSPATH += $$PWD/src
-
-JAVASOURCES += $$PWD/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtCameraListener.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureListener.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureHolder.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtMultimediaUtils.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtMediaRecorderListener.java \
- $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceHolderCallback.java
-
-# install
-target.path = $$[QT_INSTALL_PREFIX]/jar
-INSTALLS += target
-
-OTHER_FILES += $$JAVASOURCES
diff --git a/src/plugins/android/jar/jar.pro b/src/plugins/android/jar/jar.pro
index 6a4fcd389..96e492f63 100644
--- a/src/plugins/android/jar/jar.pro
+++ b/src/plugins/android/jar/jar.pro
@@ -1,3 +1,21 @@
-TEMPLATE=subdirs
-SUBDIRS += distributedjar.pro bundledjar.pro
+TARGET = QtMultimedia
+load(qt_build_paths)
+CONFIG += java
+DESTDIR = $$MODULE_BASE_OUTDIR/jar
+
+JAVACLASSPATH += $$PWD/src
+
+JAVASOURCES += $$PWD/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtCameraListener.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureListener.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceTextureHolder.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtMultimediaUtils.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtMediaRecorderListener.java \
+ $$PWD/src/org/qtproject/qt5/android/multimedia/QtSurfaceHolderCallback.java
+
+# install
+target.path = $$[QT_INSTALL_PREFIX]/jar
+INSTALLS += target
+
+OTHER_FILES += $$JAVASOURCES
diff --git a/src/plugins/android/src/common/qandroidvideooutput.h b/src/plugins/android/src/common/qandroidvideooutput.h
index 936e4c40b..62a936881 100644
--- a/src/plugins/android/src/common/qandroidvideooutput.h
+++ b/src/plugins/android/src/common/qandroidvideooutput.h
@@ -93,19 +93,19 @@ class QAndroidTextureVideoOutput : public QAndroidVideoOutput
Q_OBJECT
public:
explicit QAndroidTextureVideoOutput(QObject *parent = 0);
- ~QAndroidTextureVideoOutput() Q_DECL_OVERRIDE;
+ ~QAndroidTextureVideoOutput() override;
QAbstractVideoSurface *surface() const;
void setSurface(QAbstractVideoSurface *surface);
- AndroidSurfaceTexture *surfaceTexture() Q_DECL_OVERRIDE;
+ AndroidSurfaceTexture *surfaceTexture() override;
- bool isReady() Q_DECL_OVERRIDE;
- void setVideoSize(const QSize &) Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
+ bool isReady() override;
+ void setVideoSize(const QSize &) override;
+ void stop() override;
+ void reset() override;
- void customEvent(QEvent *) Q_DECL_OVERRIDE;
+ void customEvent(QEvent *) override;
private Q_SLOTS:
void onFrameAvailable();
diff --git a/src/plugins/android/src/mediacapture/qandroidaudioencodersettingscontrol.h b/src/plugins/android/src/mediacapture/qandroidaudioencodersettingscontrol.h
index b94964be0..e68bf6ef7 100644
--- a/src/plugins/android/src/mediacapture/qandroidaudioencodersettingscontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidaudioencodersettingscontrol.h
@@ -52,11 +52,11 @@ class QAndroidAudioEncoderSettingsControl : public QAudioEncoderSettingsControl
public:
explicit QAndroidAudioEncoderSettingsControl(QAndroidCaptureSession *session);
- QStringList supportedAudioCodecs() const Q_DECL_OVERRIDE;
- QString codecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QAudioEncoderSettings audioSettings() const Q_DECL_OVERRIDE;
- void setAudioSettings(const QAudioEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedAudioCodecs() const override;
+ QString codecDescription(const QString &codecName) const override;
+ QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const override;
+ QAudioEncoderSettings audioSettings() const override;
+ void setAudioSettings(const QAudioEncoderSettings &settings) override;
private:
QAndroidCaptureSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidcameracapturebufferformatcontrol.h b/src/plugins/android/src/mediacapture/qandroidcameracapturebufferformatcontrol.h
index 3572b126d..b27727543 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameracapturebufferformatcontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameracapturebufferformatcontrol.h
@@ -50,9 +50,9 @@ class QAndroidCameraCaptureBufferFormatControl : public QCameraCaptureBufferForm
public:
QAndroidCameraCaptureBufferFormatControl();
- QList<QVideoFrame::PixelFormat> supportedBufferFormats() const Q_DECL_OVERRIDE;
- QVideoFrame::PixelFormat bufferFormat() const Q_DECL_OVERRIDE;
- void setBufferFormat(QVideoFrame::PixelFormat format) Q_DECL_OVERRIDE;
+ QList<QVideoFrame::PixelFormat> supportedBufferFormats() const override;
+ QVideoFrame::PixelFormat bufferFormat() const override;
+ void setBufferFormat(QVideoFrame::PixelFormat format) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/android/src/mediacapture/qandroidcameracapturedestinationcontrol.h b/src/plugins/android/src/mediacapture/qandroidcameracapturedestinationcontrol.h
index 656aa2ced..1edfdab12 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameracapturedestinationcontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameracapturedestinationcontrol.h
@@ -52,9 +52,9 @@ class QAndroidCameraCaptureDestinationControl : public QCameraCaptureDestination
public:
explicit QAndroidCameraCaptureDestinationControl(QAndroidCameraSession *session);
- bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const Q_DECL_OVERRIDE;
- QCameraImageCapture::CaptureDestinations captureDestination() const Q_DECL_OVERRIDE;
- void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) Q_DECL_OVERRIDE;
+ bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const override;
+ QCameraImageCapture::CaptureDestinations captureDestination() const override;
+ void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) override;
private:
QAndroidCameraSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.h b/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.h
index e6b7fda8b..e87e6cd3a 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameraexposurecontrol.h
@@ -52,12 +52,12 @@ class QAndroidCameraExposureControl : public QCameraExposureControl
public:
explicit QAndroidCameraExposureControl(QAndroidCameraSession *session);
- bool isParameterSupported(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const Q_DECL_OVERRIDE;
+ bool isParameterSupported(ExposureParameter parameter) const override;
+ QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const override;
- QVariant requestedValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- QVariant actualValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- bool setValue(ExposureParameter parameter, const QVariant& value) Q_DECL_OVERRIDE;
+ QVariant requestedValue(ExposureParameter parameter) const override;
+ QVariant actualValue(ExposureParameter parameter) const override;
+ bool setValue(ExposureParameter parameter, const QVariant& value) override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidcameraflashcontrol.h b/src/plugins/android/src/mediacapture/qandroidcameraflashcontrol.h
index 7a0015eaf..071c45c72 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameraflashcontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameraflashcontrol.h
@@ -52,10 +52,10 @@ class QAndroidCameraFlashControl : public QCameraFlashControl
public:
explicit QAndroidCameraFlashControl(QAndroidCameraSession *session);
- QCameraExposure::FlashModes flashMode() const Q_DECL_OVERRIDE;
- void setFlashMode(QCameraExposure::FlashModes mode) Q_DECL_OVERRIDE;
- bool isFlashModeSupported(QCameraExposure::FlashModes mode) const Q_DECL_OVERRIDE;
- bool isFlashReady() const Q_DECL_OVERRIDE;
+ QCameraExposure::FlashModes flashMode() const override;
+ void setFlashMode(QCameraExposure::FlashModes mode) override;
+ bool isFlashModeSupported(QCameraExposure::FlashModes mode) const override;
+ bool isFlashReady() const override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.h b/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.h
index a3ba089da..9c606cf7d 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcamerafocuscontrol.h
@@ -52,15 +52,15 @@ class QAndroidCameraFocusControl : public QCameraFocusControl
public:
explicit QAndroidCameraFocusControl(QAndroidCameraSession *session);
- QCameraFocus::FocusModes focusMode() const Q_DECL_OVERRIDE;
- void setFocusMode(QCameraFocus::FocusModes mode) Q_DECL_OVERRIDE;
- bool isFocusModeSupported(QCameraFocus::FocusModes mode) const Q_DECL_OVERRIDE;
- QCameraFocus::FocusPointMode focusPointMode() const Q_DECL_OVERRIDE;
- void setFocusPointMode(QCameraFocus::FocusPointMode mode) Q_DECL_OVERRIDE;
- bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const Q_DECL_OVERRIDE;
- QPointF customFocusPoint() const Q_DECL_OVERRIDE;
- void setCustomFocusPoint(const QPointF &point) Q_DECL_OVERRIDE;
- QCameraFocusZoneList focusZones() const Q_DECL_OVERRIDE;
+ QCameraFocus::FocusModes focusMode() const override;
+ void setFocusMode(QCameraFocus::FocusModes mode) override;
+ bool isFocusModeSupported(QCameraFocus::FocusModes mode) const override;
+ QCameraFocus::FocusPointMode focusPointMode() const override;
+ void setFocusPointMode(QCameraFocus::FocusPointMode mode) override;
+ bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const override;
+ QPointF customFocusPoint() const override;
+ void setCustomFocusPoint(const QPointF &point) override;
+ QCameraFocusZoneList focusZones() const override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidcameraimagecapturecontrol.h b/src/plugins/android/src/mediacapture/qandroidcameraimagecapturecontrol.h
index 720eed748..cfe748c39 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameraimagecapturecontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameraimagecapturecontrol.h
@@ -52,13 +52,13 @@ class QAndroidCameraImageCaptureControl : public QCameraImageCaptureControl
public:
explicit QAndroidCameraImageCaptureControl(QAndroidCameraSession *session);
- bool isReadyForCapture() const Q_DECL_OVERRIDE;
+ bool isReadyForCapture() const override;
- QCameraImageCapture::DriveMode driveMode() const Q_DECL_OVERRIDE;
- void setDriveMode(QCameraImageCapture::DriveMode mode) Q_DECL_OVERRIDE;
+ QCameraImageCapture::DriveMode driveMode() const override;
+ void setDriveMode(QCameraImageCapture::DriveMode mode) override;
- int capture(const QString &fileName) Q_DECL_OVERRIDE;
- void cancelCapture() Q_DECL_OVERRIDE;
+ int capture(const QString &fileName) override;
+ void cancelCapture() override;
private:
QAndroidCameraSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidcameraimageprocessingcontrol.h b/src/plugins/android/src/mediacapture/qandroidcameraimageprocessingcontrol.h
index 8a750864a..9845c80dc 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameraimageprocessingcontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameraimageprocessingcontrol.h
@@ -52,10 +52,10 @@ class QAndroidCameraImageProcessingControl : public QCameraImageProcessingContro
public:
explicit QAndroidCameraImageProcessingControl(QAndroidCameraSession *session);
- bool isParameterSupported(ProcessingParameter) const Q_DECL_OVERRIDE;
- bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const Q_DECL_OVERRIDE;
- QVariant parameter(ProcessingParameter parameter) const Q_DECL_OVERRIDE;
- void setParameter(ProcessingParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
+ bool isParameterSupported(ProcessingParameter) const override;
+ bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const override;
+ QVariant parameter(ProcessingParameter parameter) const override;
+ void setParameter(ProcessingParameter parameter, const QVariant &value) override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidcameralockscontrol.h b/src/plugins/android/src/mediacapture/qandroidcameralockscontrol.h
index e0a224b6e..149da0f32 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameralockscontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameralockscontrol.h
@@ -53,10 +53,10 @@ class QAndroidCameraLocksControl : public QCameraLocksControl
public:
explicit QAndroidCameraLocksControl(QAndroidCameraSession *session);
- QCamera::LockTypes supportedLocks() const Q_DECL_OVERRIDE;
- QCamera::LockStatus lockStatus(QCamera::LockType lock) const Q_DECL_OVERRIDE;
- void searchAndLock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
- void unlock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
+ QCamera::LockTypes supportedLocks() const override;
+ QCamera::LockStatus lockStatus(QCamera::LockType lock) const override;
+ void searchAndLock(QCamera::LockTypes locks) override;
+ void unlock(QCamera::LockTypes locks) override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.cpp b/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.cpp
index 64b9e7e32..2243df732 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.cpp
@@ -56,13 +56,13 @@ class QAndroidCameraDataVideoOutput : public QAndroidVideoOutput
Q_OBJECT
public:
explicit QAndroidCameraDataVideoOutput(QAndroidCameraVideoRendererControl *control);
- ~QAndroidCameraDataVideoOutput() Q_DECL_OVERRIDE;
+ ~QAndroidCameraDataVideoOutput() override;
- AndroidSurfaceHolder *surfaceHolder() Q_DECL_OVERRIDE;
+ AndroidSurfaceHolder *surfaceHolder() override;
- bool isReady() Q_DECL_OVERRIDE;
+ bool isReady() override;
- void stop() Q_DECL_OVERRIDE;
+ void stop() override;
private Q_SLOTS:
void onSurfaceCreated();
@@ -108,7 +108,7 @@ QAndroidCameraDataVideoOutput::QAndroidCameraDataVideoOutput(QAndroidCameraVideo
QAndroidCameraDataVideoOutput::~QAndroidCameraDataVideoOutput()
{
- m_control->cameraSession()->setPreviewCallback(Q_NULLPTR);
+ m_control->cameraSession()->setPreviewCallback(nullptr);
delete m_surfaceView;
}
@@ -146,7 +146,7 @@ void QAndroidCameraDataVideoOutput::configureFormat()
}
if (m_pixelFormat == QVideoFrame::Format_Invalid) {
- m_control->cameraSession()->setPreviewCallback(Q_NULLPTR);
+ m_control->cameraSession()->setPreviewCallback(nullptr);
qWarning("The video surface is not compatible with any format supported by the camera");
} else {
m_control->cameraSession()->setPreviewCallback(this);
diff --git a/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.h b/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.h
index a5c3c0d34..538226239 100644
--- a/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcameravideorenderercontrol.h
@@ -53,10 +53,10 @@ class QAndroidCameraVideoRendererControl : public QVideoRendererControl
Q_OBJECT
public:
QAndroidCameraVideoRendererControl(QAndroidCameraSession *session, QObject *parent = 0);
- ~QAndroidCameraVideoRendererControl() Q_DECL_OVERRIDE;
+ ~QAndroidCameraVideoRendererControl() override;
- QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
- void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
+ QAbstractVideoSurface *surface() const override;
+ void setSurface(QAbstractVideoSurface *surface) override;
QAndroidCameraSession *cameraSession() const { return m_cameraSession; }
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerazoomcontrol.h b/src/plugins/android/src/mediacapture/qandroidcamerazoomcontrol.h
index 770ad659a..96fc4f77b 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerazoomcontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidcamerazoomcontrol.h
@@ -53,13 +53,13 @@ class QAndroidCameraZoomControl : public QCameraZoomControl
public:
explicit QAndroidCameraZoomControl(QAndroidCameraSession *session);
- qreal maximumOpticalZoom() const Q_DECL_OVERRIDE;
- qreal maximumDigitalZoom() const Q_DECL_OVERRIDE;
- qreal requestedOpticalZoom() const Q_DECL_OVERRIDE;
- qreal requestedDigitalZoom() const Q_DECL_OVERRIDE;
- qreal currentOpticalZoom() const Q_DECL_OVERRIDE;
- qreal currentDigitalZoom() const Q_DECL_OVERRIDE;
- void zoomTo(qreal optical, qreal digital) Q_DECL_OVERRIDE;
+ qreal maximumOpticalZoom() const override;
+ qreal maximumDigitalZoom() const override;
+ qreal requestedOpticalZoom() const override;
+ qreal requestedDigitalZoom() const override;
+ qreal currentOpticalZoom() const override;
+ qreal currentDigitalZoom() const override;
+ void zoomTo(qreal optical, qreal digital) override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidimageencodercontrol.h b/src/plugins/android/src/mediacapture/qandroidimageencodercontrol.h
index 36e10024e..52f602e78 100644
--- a/src/plugins/android/src/mediacapture/qandroidimageencodercontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidimageencodercontrol.h
@@ -52,11 +52,11 @@ class QAndroidImageEncoderControl : public QImageEncoderControl
public:
explicit QAndroidImageEncoderControl(QAndroidCameraSession *session);
- QStringList supportedImageCodecs() const Q_DECL_OVERRIDE;
- QString imageCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QImageEncoderSettings imageSettings() const Q_DECL_OVERRIDE;
- void setImageSettings(const QImageEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedImageCodecs() const override;
+ QString imageCodecDescription(const QString &codecName) const override;
+ QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const override;
+ QImageEncoderSettings imageSettings() const override;
+ void setImageSettings(const QImageEncoderSettings &settings) override;
private Q_SLOTS:
void onCameraOpened();
diff --git a/src/plugins/android/src/mediacapture/qandroidmediacontainercontrol.h b/src/plugins/android/src/mediacapture/qandroidmediacontainercontrol.h
index 35c715072..1d90fb6cd 100644
--- a/src/plugins/android/src/mediacapture/qandroidmediacontainercontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidmediacontainercontrol.h
@@ -52,10 +52,10 @@ class QAndroidMediaContainerControl : public QMediaContainerControl
public:
QAndroidMediaContainerControl(QAndroidCaptureSession *session);
- QStringList supportedContainers() const Q_DECL_OVERRIDE;
- QString containerFormat() const Q_DECL_OVERRIDE;
- void setContainerFormat(const QString &format) Q_DECL_OVERRIDE;
- QString containerDescription(const QString &formatMimeType) const Q_DECL_OVERRIDE;
+ QStringList supportedContainers() const override;
+ QString containerFormat() const override;
+ void setContainerFormat(const QString &format) override;
+ QString containerDescription(const QString &formatMimeType) const override;
private:
QAndroidCaptureSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidmediarecordercontrol.h b/src/plugins/android/src/mediacapture/qandroidmediarecordercontrol.h
index 187a0f944..6da59a50d 100644
--- a/src/plugins/android/src/mediacapture/qandroidmediarecordercontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidmediarecordercontrol.h
@@ -52,19 +52,19 @@ class QAndroidMediaRecorderControl : public QMediaRecorderControl
public:
explicit QAndroidMediaRecorderControl(QAndroidCaptureSession *session);
- QUrl outputLocation() const Q_DECL_OVERRIDE;
- bool setOutputLocation(const QUrl &location) Q_DECL_OVERRIDE;
- QMediaRecorder::State state() const Q_DECL_OVERRIDE;
- QMediaRecorder::Status status() const Q_DECL_OVERRIDE;
- qint64 duration() const Q_DECL_OVERRIDE;
- bool isMuted() const Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
- void applySettings() Q_DECL_OVERRIDE;
+ QUrl outputLocation() const override;
+ bool setOutputLocation(const QUrl &location) override;
+ QMediaRecorder::State state() const override;
+ QMediaRecorder::Status status() const override;
+ qint64 duration() const override;
+ bool isMuted() const override;
+ qreal volume() const override;
+ void applySettings() override;
public Q_SLOTS:
- void setState(QMediaRecorder::State state) Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
+ void setState(QMediaRecorder::State state) override;
+ void setMuted(bool muted) override;
+ void setVolume(qreal volume) override;
private:
QAndroidCaptureSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidvideoencodersettingscontrol.h b/src/plugins/android/src/mediacapture/qandroidvideoencodersettingscontrol.h
index 91f84500e..146b44ac4 100644
--- a/src/plugins/android/src/mediacapture/qandroidvideoencodersettingscontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidvideoencodersettingscontrol.h
@@ -52,12 +52,12 @@ class QAndroidVideoEncoderSettingsControl : public QVideoEncoderSettingsControl
public:
explicit QAndroidVideoEncoderSettingsControl(QAndroidCaptureSession *session);
- QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QStringList supportedVideoCodecs() const Q_DECL_OVERRIDE;
- QString videoCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QVideoEncoderSettings videoSettings() const Q_DECL_OVERRIDE;
- void setVideoSettings(const QVideoEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous = 0) const override;
+ QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const override;
+ QStringList supportedVideoCodecs() const override;
+ QString videoCodecDescription(const QString &codecName) const override;
+ QVideoEncoderSettings videoSettings() const override;
+ void setVideoSettings(const QVideoEncoderSettings &settings) override;
private:
QAndroidCaptureSession *m_session;
diff --git a/src/plugins/android/src/mediacapture/qandroidviewfindersettingscontrol.h b/src/plugins/android/src/mediacapture/qandroidviewfindersettingscontrol.h
index 79ebf3fc2..c7863a144 100644
--- a/src/plugins/android/src/mediacapture/qandroidviewfindersettingscontrol.h
+++ b/src/plugins/android/src/mediacapture/qandroidviewfindersettingscontrol.h
@@ -58,9 +58,9 @@ class QAndroidViewfinderSettingsControl2 : public QCameraViewfinderSettingsContr
public:
explicit QAndroidViewfinderSettingsControl2(QAndroidCameraSession *session);
- QList<QCameraViewfinderSettings> supportedViewfinderSettings() const Q_DECL_OVERRIDE;
- QCameraViewfinderSettings viewfinderSettings() const Q_DECL_OVERRIDE;
- void setViewfinderSettings(const QCameraViewfinderSettings &settings) Q_DECL_OVERRIDE;
+ QList<QCameraViewfinderSettings> supportedViewfinderSettings() const override;
+ QCameraViewfinderSettings viewfinderSettings() const override;
+ void setViewfinderSettings(const QCameraViewfinderSettings &settings) override;
private:
QAndroidCameraSession *m_cameraSession;
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
index d6ec63af8..04f728a59 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayercontrol.h
@@ -54,24 +54,24 @@ class QAndroidMediaPlayerControl : public QMediaPlayerControl
Q_OBJECT
public:
explicit QAndroidMediaPlayerControl(QObject *parent = 0);
- ~QAndroidMediaPlayerControl() Q_DECL_OVERRIDE;
+ ~QAndroidMediaPlayerControl() override;
- QMediaPlayer::State state() const Q_DECL_OVERRIDE;
- QMediaPlayer::MediaStatus mediaStatus() const Q_DECL_OVERRIDE;
- qint64 duration() const Q_DECL_OVERRIDE;
- qint64 position() const Q_DECL_OVERRIDE;
- int volume() const Q_DECL_OVERRIDE;
- bool isMuted() const Q_DECL_OVERRIDE;
- int bufferStatus() const Q_DECL_OVERRIDE;
- bool isAudioAvailable() const Q_DECL_OVERRIDE;
- bool isVideoAvailable() const Q_DECL_OVERRIDE;
- bool isSeekable() const Q_DECL_OVERRIDE;
- QMediaTimeRange availablePlaybackRanges() const Q_DECL_OVERRIDE;
- qreal playbackRate() const Q_DECL_OVERRIDE;
- void setPlaybackRate(qreal rate) Q_DECL_OVERRIDE;
- QMediaContent media() const Q_DECL_OVERRIDE;
- const QIODevice *mediaStream() const Q_DECL_OVERRIDE;
- void setMedia(const QMediaContent &mediaContent, QIODevice *stream) Q_DECL_OVERRIDE;
+ QMediaPlayer::State state() const override;
+ QMediaPlayer::MediaStatus mediaStatus() const override;
+ qint64 duration() const override;
+ qint64 position() const override;
+ int volume() const override;
+ bool isMuted() const override;
+ int bufferStatus() const override;
+ bool isAudioAvailable() const override;
+ bool isVideoAvailable() const override;
+ bool isSeekable() const override;
+ QMediaTimeRange availablePlaybackRanges() const override;
+ qreal playbackRate() const override;
+ void setPlaybackRate(qreal rate) override;
+ QMediaContent media() const override;
+ const QIODevice *mediaStream() const override;
+ void setMedia(const QMediaContent &mediaContent, QIODevice *stream) override;
void setVideoOutput(QAndroidVideoOutput *videoOutput);
@@ -79,12 +79,12 @@ Q_SIGNALS:
void metaDataUpdated();
public Q_SLOTS:
- void setPosition(qint64 position) Q_DECL_OVERRIDE;
- void play() Q_DECL_OVERRIDE;
- void pause() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void setVolume(int volume) Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
+ void setPosition(qint64 position) override;
+ void play() override;
+ void pause() override;
+ void stop() override;
+ void setVolume(int volume) override;
+ void setMuted(bool muted) override;
private Q_SLOTS:
void onVideoOutputReady(bool ready);
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaplayervideorenderercontrol.h b/src/plugins/android/src/mediaplayer/qandroidmediaplayervideorenderercontrol.h
index 2f01d986f..ef213cc57 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaplayervideorenderercontrol.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaplayervideorenderercontrol.h
@@ -52,10 +52,10 @@ class QAndroidMediaPlayerVideoRendererControl : public QVideoRendererControl
Q_OBJECT
public:
QAndroidMediaPlayerVideoRendererControl(QAndroidMediaPlayerControl *mediaPlayer, QObject *parent = 0);
- ~QAndroidMediaPlayerVideoRendererControl() Q_DECL_OVERRIDE;
+ ~QAndroidMediaPlayerVideoRendererControl() override;
- QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
- void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
+ QAbstractVideoSurface *surface() const override;
+ void setSurface(QAbstractVideoSurface *surface) override;
private:
QAndroidMediaPlayerControl *m_mediaPlayerControl;
diff --git a/src/plugins/android/src/mediaplayer/qandroidmediaservice.h b/src/plugins/android/src/mediaplayer/qandroidmediaservice.h
index f81078d0f..f78d05ddd 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmediaservice.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmediaservice.h
@@ -53,10 +53,10 @@ class QAndroidMediaService : public QMediaService
Q_OBJECT
public:
explicit QAndroidMediaService(QObject *parent = 0);
- ~QAndroidMediaService() Q_DECL_OVERRIDE;
+ ~QAndroidMediaService() override;
- QMediaControl* requestControl(const char *name) Q_DECL_OVERRIDE;
- void releaseControl(QMediaControl *control) Q_DECL_OVERRIDE;
+ QMediaControl* requestControl(const char *name) override;
+ void releaseControl(QMediaControl *control) override;
private:
QAndroidMediaPlayerControl *mMediaControl;
diff --git a/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.h b/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.h
index 4354eb54e..f2b1b47f1 100644
--- a/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.h
+++ b/src/plugins/android/src/mediaplayer/qandroidmetadatareadercontrol.h
@@ -53,12 +53,12 @@ class QAndroidMetaDataReaderControl : public QMetaDataReaderControl
Q_OBJECT
public:
explicit QAndroidMetaDataReaderControl(QObject *parent = 0);
- ~QAndroidMetaDataReaderControl() Q_DECL_OVERRIDE;
+ ~QAndroidMetaDataReaderControl() override;
- bool isMetaDataAvailable() const Q_DECL_OVERRIDE;
+ bool isMetaDataAvailable() const override;
- QVariant metaData(const QString &key) const Q_DECL_OVERRIDE;
- QStringList availableMetaData() const Q_DECL_OVERRIDE;
+ QVariant metaData(const QString &key) const override;
+ QStringList availableMetaData() const override;
public Q_SLOTS:
void onMediaChanged(const QMediaContent &media);
diff --git a/src/plugins/android/src/qandroidmediaserviceplugin.h b/src/plugins/android/src/qandroidmediaserviceplugin.h
index 2ac6f2f14..3ae1a36b6 100644
--- a/src/plugins/android/src/qandroidmediaserviceplugin.h
+++ b/src/plugins/android/src/qandroidmediaserviceplugin.h
@@ -63,17 +63,17 @@ public:
QAndroidMediaServicePlugin();
~QAndroidMediaServicePlugin();
- QMediaService* create(QString const& key) Q_DECL_OVERRIDE;
- void release(QMediaService *service) Q_DECL_OVERRIDE;
+ QMediaService* create(QString const& key) override;
+ void release(QMediaService *service) override;
- QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const Q_DECL_OVERRIDE;
+ QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const override;
- QByteArray defaultDevice(const QByteArray &service) const Q_DECL_OVERRIDE;
- QList<QByteArray> devices(const QByteArray &service) const Q_DECL_OVERRIDE;
- QString deviceDescription(const QByteArray &service, const QByteArray &device) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(const QByteArray &service) const override;
+ QList<QByteArray> devices(const QByteArray &service) const override;
+ QString deviceDescription(const QByteArray &service, const QByteArray &device) override;
- QCamera::Position cameraPosition(const QByteArray &device) const Q_DECL_OVERRIDE;
- int cameraOrientation(const QByteArray &device) const Q_DECL_OVERRIDE;
+ QCamera::Position cameraPosition(const QByteArray &device) const override;
+ int cameraOrientation(const QByteArray &device) const override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/avfoundation/camera/avfaudioencodersettingscontrol.h b/src/plugins/avfoundation/camera/avfaudioencodersettingscontrol.h
index 3d81d6294..4ba987e53 100644
--- a/src/plugins/avfoundation/camera/avfaudioencodersettingscontrol.h
+++ b/src/plugins/avfoundation/camera/avfaudioencodersettingscontrol.h
@@ -54,11 +54,11 @@ class AVFAudioEncoderSettingsControl : public QAudioEncoderSettingsControl
public:
explicit AVFAudioEncoderSettingsControl(AVFCameraService *service);
- QStringList supportedAudioCodecs() const Q_DECL_OVERRIDE;
- QString codecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QAudioEncoderSettings audioSettings() const Q_DECL_OVERRIDE;
- void setAudioSettings(const QAudioEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedAudioCodecs() const override;
+ QString codecDescription(const QString &codecName) const override;
+ QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const override;
+ QAudioEncoderSettings audioSettings() const override;
+ void setAudioSettings(const QAudioEncoderSettings &settings) override;
NSDictionary *applySettings();
void unapplySettings();
diff --git a/src/plugins/avfoundation/camera/avfcameraexposurecontrol.h b/src/plugins/avfoundation/camera/avfcameraexposurecontrol.h
index 30f90208c..0e2846889 100644
--- a/src/plugins/avfoundation/camera/avfcameraexposurecontrol.h
+++ b/src/plugins/avfoundation/camera/avfcameraexposurecontrol.h
@@ -57,13 +57,13 @@ class AVFCameraExposureControl : public QCameraExposureControl
public:
AVFCameraExposureControl(AVFCameraService *service);
- bool isParameterSupported(ExposureParameter parameter) const Q_DECL_OVERRIDE;
+ bool isParameterSupported(ExposureParameter parameter) const override;
QVariantList supportedParameterRange(ExposureParameter parameter,
- bool *continuous) const Q_DECL_OVERRIDE;
+ bool *continuous) const override;
- QVariant requestedValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- QVariant actualValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- bool setValue(ExposureParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
+ QVariant requestedValue(ExposureParameter parameter) const override;
+ QVariant actualValue(ExposureParameter parameter) const override;
+ bool setValue(ExposureParameter parameter, const QVariant &value) override;
private Q_SLOTS:
void cameraStateChanged();
diff --git a/src/plugins/avfoundation/camera/avfcameraexposurecontrol.mm b/src/plugins/avfoundation/camera/avfcameraexposurecontrol.mm
index 591854204..7540ab86c 100644
--- a/src/plugins/avfoundation/camera/avfcameraexposurecontrol.mm
+++ b/src/plugins/avfoundation/camera/avfcameraexposurecontrol.mm
@@ -56,10 +56,9 @@ QT_BEGIN_NAMESPACE
namespace {
-// All these methods to work with exposure/ISO/SS in custom mode
-// are quite new (iOS 8 or later and no OS X support).
+// All these methods to work with exposure/ISO/SS in custom mode do not support macOS.
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
// Misc. helpers to check values/ranges:
@@ -213,13 +212,13 @@ void qt_set_duration_iso(QPointer<AVFCameraService> service, QPointer<AVFCameraE
completionHandler:completionHandler];
}
-#endif // QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#endif // defined(Q_OS_IOS)
} // Unnamed namespace.
AVFCameraExposureControl::AVFCameraExposureControl(AVFCameraService *service)
: m_service(service),
- m_session(Q_NULLPTR)
+ m_session(nullptr)
{
Q_ASSERT(service);
m_session = m_service->session();
@@ -230,7 +229,7 @@ AVFCameraExposureControl::AVFCameraExposureControl(AVFCameraService *service)
bool AVFCameraExposureControl::isParameterSupported(ExposureParameter parameter) const
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
if (!captureDevice)
return false;
@@ -250,7 +249,7 @@ QVariantList AVFCameraExposureControl::supportedParameterRange(ExposureParameter
bool *continuous) const
{
QVariantList parameterRange;
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
if (!captureDevice || !isParameterSupported(parameter)) {
@@ -333,7 +332,7 @@ QVariant AVFCameraExposureControl::requestedValue(ExposureParameter parameter) c
QVariant AVFCameraExposureControl::actualValue(ExposureParameter parameter) const
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
AVCaptureDevice *captureDevice = m_session->videoCaptureDevice();
if (!captureDevice || !isParameterSupported(parameter)) {
// Actually, at the moment !captiredevice => !isParameterSupported.
@@ -386,7 +385,7 @@ bool AVFCameraExposureControl::setValue(ExposureParameter parameter, const QVari
bool AVFCameraExposureControl::setExposureMode(const QVariant &value)
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
if (!value.canConvert<QCameraExposure::ExposureMode>()) {
qDebugCamera() << Q_FUNC_INFO << "invalid exposure mode value,"
<< "QCameraExposure::ExposureMode expected";
@@ -433,7 +432,7 @@ bool AVFCameraExposureControl::setExposureMode(const QVariant &value)
bool AVFCameraExposureControl::setExposureCompensation(const QVariant &value)
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
if (!value.canConvert<qreal>()) {
qDebugCamera() << Q_FUNC_INFO << "invalid exposure compensation"
<<"value, floating point number expected";
@@ -474,7 +473,7 @@ bool AVFCameraExposureControl::setExposureCompensation(const QVariant &value)
bool AVFCameraExposureControl::setShutterSpeed(const QVariant &value)
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
if (value.isNull())
return setExposureMode(QVariant::fromValue(QCameraExposure::ExposureAuto));
@@ -521,7 +520,7 @@ bool AVFCameraExposureControl::setShutterSpeed(const QVariant &value)
bool AVFCameraExposureControl::setISO(const QVariant &value)
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
if (value.isNull())
return setExposureMode(QVariant::fromValue(QCameraExposure::ExposureAuto));
@@ -565,7 +564,7 @@ bool AVFCameraExposureControl::setISO(const QVariant &value)
void AVFCameraExposureControl::cameraStateChanged()
{
-#if QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__IPHONE_8_0)
+#ifdef Q_OS_IOS
if (m_session->state() != QCamera::ActiveState)
return;
diff --git a/src/plugins/avfoundation/camera/avfcameraflashcontrol.h b/src/plugins/avfoundation/camera/avfcameraflashcontrol.h
index f8a11a821..58403e829 100644
--- a/src/plugins/avfoundation/camera/avfcameraflashcontrol.h
+++ b/src/plugins/avfoundation/camera/avfcameraflashcontrol.h
@@ -56,10 +56,10 @@ class AVFCameraFlashControl : public QCameraFlashControl
public:
AVFCameraFlashControl(AVFCameraService *service);
- QCameraExposure::FlashModes flashMode() const Q_DECL_OVERRIDE;
- void setFlashMode(QCameraExposure::FlashModes mode) Q_DECL_OVERRIDE;
- bool isFlashModeSupported(QCameraExposure::FlashModes mode) const Q_DECL_OVERRIDE;
- bool isFlashReady() const Q_DECL_OVERRIDE;
+ QCameraExposure::FlashModes flashMode() const override;
+ void setFlashMode(QCameraExposure::FlashModes mode) override;
+ bool isFlashModeSupported(QCameraExposure::FlashModes mode) const override;
+ bool isFlashReady() const override;
private Q_SLOTS:
void cameraStateChanged(QCamera::State newState);
diff --git a/src/plugins/avfoundation/camera/avfcamerafocuscontrol.h b/src/plugins/avfoundation/camera/avfcamerafocuscontrol.h
index 9d8b7a5ab..26135e534 100644
--- a/src/plugins/avfoundation/camera/avfcamerafocuscontrol.h
+++ b/src/plugins/avfoundation/camera/avfcamerafocuscontrol.h
@@ -58,17 +58,17 @@ class AVFCameraFocusControl : public QCameraFocusControl
public:
explicit AVFCameraFocusControl(AVFCameraService *service);
- QCameraFocus::FocusModes focusMode() const Q_DECL_OVERRIDE;
- void setFocusMode(QCameraFocus::FocusModes mode) Q_DECL_OVERRIDE;
- bool isFocusModeSupported(QCameraFocus::FocusModes mode) const Q_DECL_OVERRIDE;
+ QCameraFocus::FocusModes focusMode() const override;
+ void setFocusMode(QCameraFocus::FocusModes mode) override;
+ bool isFocusModeSupported(QCameraFocus::FocusModes mode) const override;
- QCameraFocus::FocusPointMode focusPointMode() const Q_DECL_OVERRIDE;
- void setFocusPointMode(QCameraFocus::FocusPointMode mode) Q_DECL_OVERRIDE;
- bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const Q_DECL_OVERRIDE;
- QPointF customFocusPoint() const Q_DECL_OVERRIDE;
- void setCustomFocusPoint(const QPointF &point) Q_DECL_OVERRIDE;
+ QCameraFocus::FocusPointMode focusPointMode() const override;
+ void setFocusPointMode(QCameraFocus::FocusPointMode mode) override;
+ bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const override;
+ QPointF customFocusPoint() const override;
+ void setCustomFocusPoint(const QPointF &point) override;
- QCameraFocusZoneList focusZones() const Q_DECL_OVERRIDE;
+ QCameraFocusZoneList focusZones() const override;
private Q_SLOTS:
void cameraStateChanged();
diff --git a/src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h b/src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h
index bed755339..588aa7b74 100644
--- a/src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h
+++ b/src/plugins/avfoundation/camera/avfcameraviewfindersettingscontrol.h
@@ -67,9 +67,9 @@ class AVFCameraViewfinderSettingsControl2 : public QCameraViewfinderSettingsCont
public:
AVFCameraViewfinderSettingsControl2(AVFCameraService *service);
- QList<QCameraViewfinderSettings> supportedViewfinderSettings() const Q_DECL_OVERRIDE;
- QCameraViewfinderSettings viewfinderSettings() const Q_DECL_OVERRIDE;
- void setViewfinderSettings(const QCameraViewfinderSettings &settings) Q_DECL_OVERRIDE;
+ QList<QCameraViewfinderSettings> supportedViewfinderSettings() const override;
+ QCameraViewfinderSettings viewfinderSettings() const override;
+ void setViewfinderSettings(const QCameraViewfinderSettings &settings) override;
// "Converters":
static QVideoFrame::PixelFormat QtPixelFormatFromCVFormat(unsigned avPixelFormat);
@@ -97,9 +97,9 @@ class AVFCameraViewfinderSettingsControl : public QCameraViewfinderSettingsContr
public:
AVFCameraViewfinderSettingsControl(AVFCameraService *service);
- bool isViewfinderParameterSupported(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
- QVariant viewfinderParameter(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
- void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
+ bool isViewfinderParameterSupported(ViewfinderParameter parameter) const override;
+ QVariant viewfinderParameter(ViewfinderParameter parameter) const override;
+ void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) override;
private:
void setResolution(const QVariant &resolution);
diff --git a/src/plugins/avfoundation/camera/avfcamerazoomcontrol.h b/src/plugins/avfoundation/camera/avfcamerazoomcontrol.h
index 6a460ad59..2307dfc28 100644
--- a/src/plugins/avfoundation/camera/avfcamerazoomcontrol.h
+++ b/src/plugins/avfoundation/camera/avfcamerazoomcontrol.h
@@ -57,15 +57,15 @@ class AVFCameraZoomControl : public QCameraZoomControl
public:
AVFCameraZoomControl(AVFCameraService *service);
- qreal maximumOpticalZoom() const Q_DECL_OVERRIDE;
- qreal maximumDigitalZoom() const Q_DECL_OVERRIDE;
+ qreal maximumOpticalZoom() const override;
+ qreal maximumDigitalZoom() const override;
- qreal requestedOpticalZoom() const Q_DECL_OVERRIDE;
- qreal requestedDigitalZoom() const Q_DECL_OVERRIDE;
- qreal currentOpticalZoom() const Q_DECL_OVERRIDE;
- qreal currentDigitalZoom() const Q_DECL_OVERRIDE;
+ qreal requestedOpticalZoom() const override;
+ qreal requestedDigitalZoom() const override;
+ qreal currentOpticalZoom() const override;
+ qreal currentDigitalZoom() const override;
- void zoomTo(qreal optical, qreal digital) Q_DECL_OVERRIDE;
+ void zoomTo(qreal optical, qreal digital) override;
private Q_SLOTS:
void cameraStateChanged();
diff --git a/src/plugins/avfoundation/camera/avfimageencodercontrol.h b/src/plugins/avfoundation/camera/avfimageencodercontrol.h
index 22a6b2722..7e2e34294 100644
--- a/src/plugins/avfoundation/camera/avfimageencodercontrol.h
+++ b/src/plugins/avfoundation/camera/avfimageencodercontrol.h
@@ -61,12 +61,12 @@ class AVFImageEncoderControl : public QImageEncoderControl
public:
AVFImageEncoderControl(AVFCameraService *service);
- QStringList supportedImageCodecs() const Q_DECL_OVERRIDE;
- QString imageCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
+ QStringList supportedImageCodecs() const override;
+ QString imageCodecDescription(const QString &codecName) const override;
QList<QSize> supportedResolutions(const QImageEncoderSettings &settings,
- bool *continuous) const Q_DECL_OVERRIDE;
- QImageEncoderSettings imageSettings() const Q_DECL_OVERRIDE;
- void setImageSettings(const QImageEncoderSettings &settings) Q_DECL_OVERRIDE;
+ bool *continuous) const override;
+ QImageEncoderSettings imageSettings() const override;
+ void setImageSettings(const QImageEncoderSettings &settings) override;
QImageEncoderSettings requestedSettings() const;
diff --git a/src/plugins/avfoundation/camera/avfmediacontainercontrol.h b/src/plugins/avfoundation/camera/avfmediacontainercontrol.h
index 45d69f18b..e43e70baf 100644
--- a/src/plugins/avfoundation/camera/avfmediacontainercontrol.h
+++ b/src/plugins/avfoundation/camera/avfmediacontainercontrol.h
@@ -53,10 +53,10 @@ class AVFMediaContainerControl : public QMediaContainerControl
public:
explicit AVFMediaContainerControl(AVFCameraService *service);
- QStringList supportedContainers() const Q_DECL_OVERRIDE;
- QString containerFormat() const Q_DECL_OVERRIDE;
- void setContainerFormat(const QString &format) Q_DECL_OVERRIDE;
- QString containerDescription(const QString &formatMimeType) const Q_DECL_OVERRIDE;
+ QStringList supportedContainers() const override;
+ QString containerFormat() const override;
+ void setContainerFormat(const QString &format) override;
+ QString containerDescription(const QString &formatMimeType) const override;
NSString *fileType() const;
diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.h b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.h
index a0967efa3..8e049a595 100644
--- a/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.h
+++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol_ios.h
@@ -65,24 +65,24 @@ public:
AVFMediaRecorderControlIOS(AVFCameraService *service, QObject *parent = 0);
~AVFMediaRecorderControlIOS();
- QUrl outputLocation() const Q_DECL_OVERRIDE;
- bool setOutputLocation(const QUrl &location) Q_DECL_OVERRIDE;
+ QUrl outputLocation() const override;
+ bool setOutputLocation(const QUrl &location) override;
- QMediaRecorder::State state() const Q_DECL_OVERRIDE;
- QMediaRecorder::Status status() const Q_DECL_OVERRIDE;
+ QMediaRecorder::State state() const override;
+ QMediaRecorder::Status status() const override;
- qint64 duration() const Q_DECL_OVERRIDE;
+ qint64 duration() const override;
- bool isMuted() const Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
+ bool isMuted() const override;
+ qreal volume() const override;
- void applySettings() Q_DECL_OVERRIDE;
+ void applySettings() override;
void unapplySettings();
public Q_SLOTS:
- void setState(QMediaRecorder::State state) Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
+ void setState(QMediaRecorder::State state) override;
+ void setMuted(bool muted) override;
+ void setVolume(qreal volume) override;
private:
diff --git a/src/plugins/avfoundation/camera/avfvideoencodersettingscontrol.h b/src/plugins/avfoundation/camera/avfvideoencodersettingscontrol.h
index 4d90377d5..9bdf5a788 100644
--- a/src/plugins/avfoundation/camera/avfvideoencodersettingscontrol.h
+++ b/src/plugins/avfoundation/camera/avfvideoencodersettingscontrol.h
@@ -59,16 +59,16 @@ public:
explicit AVFVideoEncoderSettingsControl(AVFCameraService *service);
QList<QSize> supportedResolutions(const QVideoEncoderSettings &requestedVideoSettings,
- bool *continuous = 0) const Q_DECL_OVERRIDE;
+ bool *continuous = 0) const override;
QList<qreal> supportedFrameRates(const QVideoEncoderSettings &requestedVideoSettings,
- bool *continuous = 0) const Q_DECL_OVERRIDE;
+ bool *continuous = 0) const override;
- QStringList supportedVideoCodecs() const Q_DECL_OVERRIDE;
- QString videoCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
+ QStringList supportedVideoCodecs() const override;
+ QString videoCodecDescription(const QString &codecName) const override;
- QVideoEncoderSettings videoSettings() const Q_DECL_OVERRIDE;
- void setVideoSettings(const QVideoEncoderSettings &requestedVideoSettings) Q_DECL_OVERRIDE;
+ QVideoEncoderSettings videoSettings() const override;
+ void setVideoSettings(const QVideoEncoderSettings &requestedVideoSettings) override;
NSDictionary *applySettings(AVCaptureConnection *connection);
void unapplySettings(AVCaptureConnection *connection);
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayercontrol.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayercontrol.mm
index 5f7bae1c8..bf7ebb4a0 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayercontrol.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayercontrol.mm
@@ -60,6 +60,7 @@ void AVFMediaPlayerControl::setSession(AVFMediaPlayerSession *session)
connect(m_session, SIGNAL(positionChanged(qint64)), this, SIGNAL(positionChanged(qint64)));
connect(m_session, SIGNAL(durationChanged(qint64)), this, SIGNAL(durationChanged(qint64)));
+ connect(m_session, SIGNAL(bufferStatusChanged(int)), this, SIGNAL(bufferStatusChanged(int)));
connect(m_session, SIGNAL(stateChanged(QMediaPlayer::State)),
this, SIGNAL(stateChanged(QMediaPlayer::State)));
connect(m_session, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
index 9a55b7b74..e20f4a1ec 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.h
@@ -106,12 +106,15 @@ public Q_SLOTS:
void processLoadStateChange();
void processLoadStateFailure();
+ void processBufferStateChange(int bufferStatus);
+
void processDurationChange(qint64 duration);
Q_SIGNALS:
void positionChanged(qint64 position);
void durationChanged(qint64 duration);
void stateChanged(QMediaPlayer::State newState);
+ void bufferStatusChanged(int bufferStatus);
void mediaStatusChanged(QMediaPlayer::MediaStatus status);
void volumeChanged(int volume);
void mutedChanged(bool muted);
@@ -179,6 +182,7 @@ private:
qint64 m_requestedPosition;
qint64 m_duration;
+ int m_bufferStatus;
bool m_videoAvailable;
bool m_audioAvailable;
bool m_seekable;
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index b6fe01053..06fb71ef8 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -52,7 +52,8 @@ static NSString* const AVF_TRACKS_KEY = @"tracks";
static NSString* const AVF_PLAYABLE_KEY = @"playable";
//AVPlayerItem keys
-static NSString* const AVF_STATUS_KEY = @"status";
+static NSString* const AVF_STATUS_KEY = @"status";
+static NSString* const AVF_BUFFER_LIKELY_KEEP_UP_KEY = @"playbackLikelyToKeepUp";
//AVPlayer keys
static NSString* const AVF_RATE_KEY = @"rate";
@@ -61,6 +62,7 @@ static NSString* const AVF_CURRENT_ITEM_DURATION_KEY = @"currentItem.duration
static void *AVFMediaPlayerSessionObserverRateObservationContext = &AVFMediaPlayerSessionObserverRateObservationContext;
static void *AVFMediaPlayerSessionObserverStatusObservationContext = &AVFMediaPlayerSessionObserverStatusObservationContext;
+static void *AVFMediaPlayerSessionObserverBufferLikelyToKeepUpContext = &AVFMediaPlayerSessionObserverBufferLikelyToKeepUpContext;
static void *AVFMediaPlayerSessionObserverCurrentItemObservationContext = &AVFMediaPlayerSessionObserverCurrentItemObservationContext;
static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext = &AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext;
@@ -72,6 +74,7 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
AVPlayerItem *m_playerItem;
AVPlayerLayer *m_playerLayer;
NSURL *m_URL;
+ BOOL m_bufferIsLikelyToKeepUp;
}
@property (readonly, getter=player) AVPlayer* m_player;
@@ -102,6 +105,7 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
return nil;
self->m_session = session;
+ self->m_bufferIsLikelyToKeepUp = FALSE;
return self;
}
@@ -141,6 +145,7 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
{
if (m_playerItem) {
[m_playerItem removeObserver:self forKeyPath:AVF_STATUS_KEY];
+ [m_playerItem removeObserver:self forKeyPath:AVF_BUFFER_LIKELY_KEEP_UP_KEY];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:AVPlayerItemDidPlayToEndTimeNotification
@@ -219,6 +224,11 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
context:AVFMediaPlayerSessionObserverStatusObservationContext];
+ [m_playerItem addObserver:self
+ forKeyPath:AVF_BUFFER_LIKELY_KEEP_UP_KEY
+ options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
+ context:AVFMediaPlayerSessionObserverBufferLikelyToKeepUpContext];
+
//When the player item has played to its end time we'll toggle
//the movie controller Pause button to be the Play button
[[NSNotificationCenter defaultCenter] addObserver:self
@@ -338,6 +348,15 @@ static void *AVFMediaPlayerSessionObserverCurrentItemDurationObservationContext
break;
}
}
+ else if (context == AVFMediaPlayerSessionObserverBufferLikelyToKeepUpContext)
+ {
+ const bool isPlaybackLikelyToKeepUp = [m_playerItem isPlaybackLikelyToKeepUp];
+ if (isPlaybackLikelyToKeepUp != m_bufferIsLikelyToKeepUp) {
+ m_bufferIsLikelyToKeepUp = isPlaybackLikelyToKeepUp;
+ QMetaObject::invokeMethod(m_session, "processBufferStateChange", Qt::AutoConnection,
+ Q_ARG(int, isPlaybackLikelyToKeepUp ? 100 : 0));
+ }
+ }
//AVPlayer "rate" property value observer.
else if (context == AVFMediaPlayerSessionObserverRateObservationContext)
{
@@ -402,6 +421,7 @@ AVFMediaPlayerSession::AVFMediaPlayerSession(AVFMediaPlayerService *service, QOb
, m_rate(1.0)
, m_requestedPosition(-1)
, m_duration(0)
+ , m_bufferStatus(0)
, m_videoAvailable(false)
, m_audioAvailable(false)
, m_seekable(false)
@@ -536,11 +556,10 @@ qint64 AVFMediaPlayerSession::duration() const
int AVFMediaPlayerSession::bufferStatus() const
{
- //BUG: bufferStatus may be relevant?
#ifdef QT_DEBUG_AVF
qDebug() << Q_FUNC_INFO;
#endif
- return 100;
+ return m_bufferStatus;
}
int AVFMediaPlayerSession::volume() const
@@ -898,6 +917,15 @@ void AVFMediaPlayerSession::processLoadStateFailure()
Q_EMIT stateChanged((m_state = QMediaPlayer::StoppedState));
}
+void AVFMediaPlayerSession::processBufferStateChange(int bufferStatus)
+{
+ if (bufferStatus == m_bufferStatus)
+ return;
+
+ m_bufferStatus = bufferStatus;
+ Q_EMIT bufferStatusChanged(bufferStatus);
+}
+
void AVFMediaPlayerSession::processDurationChange(qint64 duration)
{
if (duration == m_duration)
diff --git a/src/plugins/avfoundation/mediaplayer/avfvideowindowcontrol.mm b/src/plugins/avfoundation/mediaplayer/avfvideowindowcontrol.mm
index 4952551dc..5727cb0f4 100644
--- a/src/plugins/avfoundation/mediaplayer/avfvideowindowcontrol.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfvideowindowcontrol.mm
@@ -41,6 +41,14 @@
#include <AVFoundation/AVFoundation.h>
+#if QT_HAS_INCLUDE(<AppKit/AppKit.h>)
+#include <AppKit/AppKit.h>
+#endif
+
+#if QT_HAS_INCLUDE(<UIKit/UIKit.h>)
+#include <UIKit/UIKit.h>
+#endif
+
QT_USE_NAMESPACE
AVFVideoWindowControl::AVFVideoWindowControl(QObject *parent)
diff --git a/src/plugins/coreaudio/coreaudioplugin.h b/src/plugins/coreaudio/coreaudioplugin.h
index da18d8cfe..5407bdeb9 100644
--- a/src/plugins/coreaudio/coreaudioplugin.h
+++ b/src/plugins/coreaudio/coreaudioplugin.h
@@ -54,11 +54,11 @@ public:
explicit CoreAudioPlugin(QObject *parent = 0);
~CoreAudioPlugin() {}
- QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(QAudio::Mode mode) const override;
+ QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
+ QAbstractAudioInput *createInput(const QByteArray &device) override;
+ QAbstractAudioOutput *createOutput(const QByteArray &device) override;
+ QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/camera.pri b/src/plugins/directshow/camera/camera.pri
index d8ee59aa9..0e1c1e895 100644
--- a/src/plugins/directshow/camera/camera.pri
+++ b/src/plugins/directshow/camera/camera.pri
@@ -11,7 +11,11 @@ HEADERS += \
$$PWD/dscamerasession.h \
$$PWD/directshowcameraglobal.h \
$$PWD/dscameraviewfindersettingscontrol.h \
- $$PWD/dscameraimageprocessingcontrol.h
+ $$PWD/dscameraimageprocessingcontrol.h \
+ $$PWD/directshowcameraexposurecontrol.h \
+ $$PWD/directshowcameracapturedestinationcontrol.h \
+ $$PWD/directshowcameracapturebufferformatcontrol.h \
+ $$PWD/directshowcamerazoomcontrol.h
SOURCES += \
$$PWD/dscameraservice.cpp \
@@ -21,7 +25,11 @@ SOURCES += \
$$PWD/dsimagecapturecontrol.cpp \
$$PWD/dscamerasession.cpp \
$$PWD/dscameraviewfindersettingscontrol.cpp \
- $$PWD/dscameraimageprocessingcontrol.cpp
+ $$PWD/dscameraimageprocessingcontrol.cpp \
+ $$PWD/directshowcameraexposurecontrol.cpp \
+ $$PWD/directshowcameracapturedestinationcontrol.cpp \
+ $$PWD/directshowcameracapturebufferformatcontrol.cpp \
+ $$PWD/directshowcamerazoomcontrol.cpp
*-msvc*:INCLUDEPATH += $$(DXSDK_DIR)/include
QMAKE_USE += directshow
diff --git a/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.cpp b/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.cpp
new file mode 100644
index 000000000..cc0a0ad17
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "directshowcameracapturebufferformatcontrol.h"
+
+#include "dscamerasession.h"
+
+QT_BEGIN_NAMESPACE
+
+DirectShowCameraCaptureBufferFormatControl::DirectShowCameraCaptureBufferFormatControl()
+{
+}
+
+QList<QVideoFrame::PixelFormat> DirectShowCameraCaptureBufferFormatControl::supportedBufferFormats() const
+{
+ return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_RGB32;
+}
+
+QVideoFrame::PixelFormat DirectShowCameraCaptureBufferFormatControl::bufferFormat() const
+{
+ return QVideoFrame::Format_RGB32;
+}
+
+void DirectShowCameraCaptureBufferFormatControl::setBufferFormat(QVideoFrame::PixelFormat format)
+{
+ Q_UNUSED(format);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.h b/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.h
new file mode 100644
index 000000000..cacd3652b
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameracapturebufferformatcontrol.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DIRECTSHOWCAMERACAPTUREBUFFERFORMATCONTROL_H
+#define DIRECTSHOWCAMERACAPTUREBUFFERFORMATCONTROL_H
+
+#include <QtMultimedia/qcameracapturebufferformatcontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+class DirectShowCameraCaptureBufferFormatControl : public QCameraCaptureBufferFormatControl
+{
+ Q_OBJECT
+public:
+ DirectShowCameraCaptureBufferFormatControl();
+
+ QList<QVideoFrame::PixelFormat> supportedBufferFormats() const override;
+ QVideoFrame::PixelFormat bufferFormat() const override;
+ void setBufferFormat(QVideoFrame::PixelFormat format) override;
+};
+
+QT_END_NAMESPACE
+
+#endif // DIRECTSHOWCAMERACAPTUREBUFFERFORMATCONTROL_H
diff --git a/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.cpp b/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.cpp
new file mode 100644
index 000000000..bfb10fc03
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.cpp
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "directshowcameracapturedestinationcontrol.h"
+
+#include "dscamerasession.h"
+
+QT_BEGIN_NAMESPACE
+
+DirectShowCameraCaptureDestinationControl::DirectShowCameraCaptureDestinationControl(DSCameraSession *session)
+ : m_session(session)
+{
+ connect(m_session, &DSCameraSession::captureDestinationChanged,
+ this, &DirectShowCameraCaptureDestinationControl::captureDestinationChanged);
+}
+
+bool DirectShowCameraCaptureDestinationControl::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const
+{
+ return m_session->isCaptureDestinationSupported(destination);
+}
+
+QCameraImageCapture::CaptureDestinations DirectShowCameraCaptureDestinationControl::captureDestination() const
+{
+ return m_session->captureDestination();
+}
+
+void DirectShowCameraCaptureDestinationControl::setCaptureDestination(QCameraImageCapture::CaptureDestinations destination)
+{
+ m_session->setCaptureDestination(destination);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.h b/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.h
new file mode 100644
index 000000000..224df9dbc
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameracapturedestinationcontrol.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DIRECTSHOWCAMERACAPTUREDESTINATIONCONTROL_H
+#define DIRECTSHOWCAMERACAPTUREDESTINATIONCONTROL_H
+
+#include <QtMultimedia/qcameracapturedestinationcontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+class DSCameraSession;
+
+class DirectShowCameraCaptureDestinationControl : public QCameraCaptureDestinationControl
+{
+ Q_OBJECT
+public:
+ DirectShowCameraCaptureDestinationControl(DSCameraSession *session);
+
+ bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const override;
+ QCameraImageCapture::CaptureDestinations captureDestination() const override;
+ void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) override;
+
+private:
+ DSCameraSession *m_session;
+
+};
+
+QT_END_NAMESPACE
+
+#endif // DIRECTSHOWCAMERACAPTUREDESTINATIONCONTROL_H
diff --git a/src/plugins/directshow/camera/directshowcameraexposurecontrol.cpp b/src/plugins/directshow/camera/directshowcameraexposurecontrol.cpp
new file mode 100644
index 000000000..7ece366ea
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameraexposurecontrol.cpp
@@ -0,0 +1,411 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "directshowcameraexposurecontrol.h"
+#include "dscamerasession.h"
+#include "directshowglobal.h"
+#include "directshowutils.h"
+
+#include <functional>
+#include <cmath>
+
+QT_BEGIN_NAMESPACE
+
+static qreal convertToSec(long v) { return (v < 0) ? (1 / std::pow(2., qreal(v))) : std::pow(2., qreal(v)); }
+static Q_DECL_CONSTEXPR qreal convertToFvalue(long v) { return qreal(v) / 10.; }
+
+DirectShowCameraExposureControl::DirectShowCameraExposureControl(DSCameraSession *session)
+ : m_session(session)
+ , m_shutterSpeedValues({ 0, 0, 0, 0, 0 })
+ , m_apertureValues({ 0, 0, 0, 0, 0 })
+ , m_requestedShutterSpeed(qreal(0.0))
+ , m_currentShutterSpeed(qreal(-1.0))
+ , m_requestedAperture(qreal(0.0))
+ , m_currentAperture(qreal(-1.0))
+ , m_requestedExposureMode(QCameraExposure::ExposureAuto)
+ , m_currentExposureMode(QCameraExposure::ExposureAuto)
+{
+ Q_ASSERT(m_session);
+ connect(m_session, &DSCameraSession::statusChanged,
+ this, &DirectShowCameraExposureControl::onStatusChanged);
+}
+
+bool DirectShowCameraExposureControl::isParameterSupported(QCameraExposureControl::ExposureParameter parameter) const
+{
+ if (parameter == ShutterSpeed)
+ return (m_shutterSpeedValues.caps & CameraControl_Flags_Manual);
+ if (parameter == Aperture)
+ return (m_apertureValues.caps & CameraControl_Flags_Manual);
+ if (parameter == ExposureMode)
+ return true;
+
+ return false;
+}
+
+QVariantList DirectShowCameraExposureControl::supportedParameterRange(QCameraExposureControl::ExposureParameter parameter,
+ bool *continuous) const
+{
+ if (continuous)
+ *continuous = false;
+
+ if (parameter == ShutterSpeed)
+ return m_supportedShutterSpeeds;
+
+ if (parameter == Aperture)
+ return m_supportedApertureValues;
+
+ if (parameter == ExposureMode)
+ return m_supportedExposureModes;
+
+ return QVariantList();
+}
+
+QVariant DirectShowCameraExposureControl::requestedValue(QCameraExposureControl::ExposureParameter parameter) const
+{
+ if (parameter == ShutterSpeed)
+ return QVariant::fromValue(m_requestedShutterSpeed);
+
+ if (parameter == Aperture)
+ return QVariant::fromValue(m_requestedAperture);
+
+ if (parameter == ExposureMode)
+ return QVariant::fromValue(m_requestedExposureMode);
+
+ return QVariant();
+}
+
+QVariant DirectShowCameraExposureControl::actualValue(QCameraExposureControl::ExposureParameter parameter) const
+{
+ if (parameter == ExposureMode)
+ return QVariant::fromValue(m_currentExposureMode);
+
+ if (parameter == ShutterSpeed) {
+ return qFuzzyCompare(m_currentShutterSpeed, qreal(-1.0))
+ ? QVariant()
+ : QVariant::fromValue(m_currentShutterSpeed);
+ }
+
+ if (parameter == Aperture) {
+ return qFuzzyCompare(m_currentAperture, qreal(-1.0))
+ ? QVariant()
+ : QVariant::fromValue(m_currentAperture);
+ }
+
+ return QVariant();
+}
+
+bool DirectShowCameraExposureControl::setValue(QCameraExposureControl::ExposureParameter parameter,
+ const QVariant &value)
+{
+ IAMCameraControl *cameraControl = nullptr;
+ const DirectShowUtils::ScopedSafeRelease<IAMCameraControl> rControl { &cameraControl };
+ if (!m_session->getCameraControlInterface(&cameraControl))
+ return false;
+
+ // Reset exposure mode if the value is invalid.
+ if (!value.isValid()) {
+ m_requestedExposureMode = QCameraExposure::ExposureAuto;
+ return setExposureMode(cameraControl, m_requestedExposureMode);
+ }
+
+ if (parameter == ShutterSpeed || parameter == Aperture) {
+ bool ok = false;
+ const qreal newValue = value.toReal(&ok);
+ if (!ok)
+ return false;
+
+ // Change the exposure mode first
+ setExposureMode(cameraControl, QCameraExposure::ExposureManual);
+
+ if (parameter == ShutterSpeed) {
+ m_requestedShutterSpeed = newValue;
+ return setShutterSpeed(cameraControl, m_requestedShutterSpeed);
+ } else {
+ m_requestedAperture = newValue;
+ return setAperture(cameraControl, m_requestedAperture);
+ }
+ }
+
+ if (parameter == ExposureMode) {
+ m_requestedExposureMode = value.value<QCameraExposure::ExposureMode>();
+ return setExposureMode(cameraControl, m_requestedExposureMode);
+ }
+
+ return false;
+}
+
+void DirectShowCameraExposureControl::onStatusChanged(QCamera::Status status)
+{
+ const bool shouldUpdate = (qFuzzyCompare(m_currentAperture, qreal(-1.0)) && qFuzzyCompare(m_currentShutterSpeed, qreal(-1.0)));
+
+ if (status == QCamera::LoadedStatus && shouldUpdate)
+ updateExposureSettings();
+
+ if (status == QCamera::UnloadedStatus) {
+ m_supportedApertureValues.clear();
+ m_supportedExposureModes.clear();
+ m_supportedShutterSpeeds.clear();
+ m_currentAperture = qreal(-1.0);
+ m_currentShutterSpeed = qreal(-1.0);
+ m_currentExposureMode = QCameraExposure::ExposureAuto;
+ }
+}
+
+void DirectShowCameraExposureControl::updateExposureSettings()
+{
+ IAMCameraControl *cameraControl = nullptr;
+ const DirectShowUtils::ScopedSafeRelease<IAMCameraControl> rControl { &cameraControl };
+ if (!m_session->getCameraControlInterface(&cameraControl))
+ return;
+
+ const auto updateValues = [cameraControl](long property,
+ ExposureValues &currentValues,
+ QVariantList &parameterRange,
+ const std::function<qreal(long)> &converter,
+ bool *changed) -> bool {
+ ExposureValues values { 0, 0, 0, 0, 0 };
+ if (FAILED(cameraControl->GetRange(property,
+ &values.minValue,
+ &values.maxValue,
+ &values.stepping,
+ &values.defaultValue,
+ &values.caps))) {
+ return false;
+ }
+
+ const bool minValueChanged = values.minValue != currentValues.minValue;
+ const bool maxValueChanged = values.maxValue != currentValues.maxValue;
+ const bool steppingChanged = values.stepping != currentValues.stepping;
+
+ if (minValueChanged || maxValueChanged || steppingChanged) {
+ parameterRange.clear();
+ long nextValue = values.minValue;
+ while (nextValue != values.maxValue && values.stepping != 0) {
+ parameterRange << converter(nextValue);
+ nextValue += values.stepping;
+ }
+
+ if (changed)
+ *changed = true;
+ }
+
+ currentValues = values;
+ return true;
+ };
+
+ const auto getCurrentValue = [cameraControl](long property, const std::function<qreal(long)> &converter, qreal *value) -> bool {
+ long currentValue;
+ long currentFlags;
+ if (FAILED(cameraControl->Get(property, &currentValue, &currentFlags)))
+ return false;
+
+ *value = converter(currentValue);
+ return true;
+ };
+
+ // Shutter speed
+ bool changed = false;
+ if (!updateValues(CameraControl_Exposure, m_shutterSpeedValues, m_supportedShutterSpeeds, convertToSec, &changed))
+ qCDebug(qtDirectShowPlugin, "Unable to update the shutter speed values");
+
+ if (changed)
+ Q_EMIT parameterRangeChanged(int(ShutterSpeed));
+
+ if ((m_shutterSpeedValues.caps & CameraControl_Flags_Manual)) {
+ if (getCurrentValue(CameraControl_Exposure, convertToSec, &m_currentShutterSpeed)) {
+ if (m_currentExposureMode == QCameraExposure::ExposureManual)
+ setShutterSpeed(cameraControl, m_requestedShutterSpeed);
+ } else {
+ m_currentShutterSpeed = qreal(-1.0);
+ qCDebug(qtDirectShowPlugin, "Unable to get the current shutter speed!");
+ }
+ }
+
+ // Aperture
+ changed = false;
+ if (!updateValues(CameraControl_Iris, m_apertureValues, m_supportedApertureValues, convertToFvalue, &changed))
+ qCDebug(qtDirectShowPlugin, "Unable to update the aperture values");
+
+ if (changed)
+ Q_EMIT parameterRangeChanged(int(Aperture));
+
+ if (getCurrentValue(CameraControl_Iris, convertToFvalue, &m_currentAperture)) {
+ if (m_currentExposureMode == QCameraExposure::ExposureManual)
+ setAperture(cameraControl, m_requestedAperture);
+ } else {
+ m_currentAperture = qreal(-1.0);
+ qCDebug(qtDirectShowPlugin, "Unable to get the current aperture value!");
+ }
+
+ // Update exposure modes
+ const bool hasAutoExposure = (m_apertureValues.caps & CameraControl_Flags_Auto)
+ || (m_shutterSpeedValues.caps & CameraControl_Flags_Auto);
+ const bool hasManualExposure = (m_apertureValues.caps & CameraControl_Flags_Manual)
+ || (m_shutterSpeedValues.caps & CameraControl_Flags_Manual);
+
+ QVariantList exposureModes;
+ if (hasAutoExposure && !m_supportedExposureModes.contains(QVariant::fromValue(QCameraExposure::ExposureAuto)))
+ exposureModes << QVariant::fromValue(QCameraExposure::ExposureAuto);
+
+ if (hasManualExposure && !m_supportedExposureModes.contains(QVariant::fromValue(QCameraExposure::ExposureManual)))
+ exposureModes << QVariant::fromValue(QCameraExposure::ExposureManual);
+
+ if (!exposureModes.isEmpty() || !m_supportedExposureModes.isEmpty()) {
+ m_supportedExposureModes = exposureModes;
+ Q_EMIT parameterRangeChanged(int(ExposureMode));
+ }
+}
+
+bool DirectShowCameraExposureControl::setShutterSpeed(IAMCameraControl *cameraControl, qreal shutterSpeed)
+{
+ if (m_currentExposureMode != QCameraExposure::ExposureManual) {
+ qCDebug(qtDirectShowPlugin, "Trying to set shutter speed value while in auto exposure mode!");
+ return false;
+ }
+
+ if (qFuzzyCompare(m_currentShutterSpeed, shutterSpeed))
+ return true;
+
+ if ((m_shutterSpeedValues.caps & CameraControl_Flags_Manual) == 0)
+ return false;
+
+ if (!m_supportedShutterSpeeds.contains(QVariant::fromValue(shutterSpeed)))
+ return false;
+
+ if (qFuzzyIsNull(shutterSpeed) || (shutterSpeed < qreal(0.0)))
+ return false;
+
+ const long newValue = long(log2(shutterSpeed));
+ if (FAILED(cameraControl->Set(CameraControl_Exposure, newValue, CameraControl_Flags_Manual))) {
+ qCDebug(qtDirectShowPlugin, "Unable to set shutter speed value to: %d", int(shutterSpeed));
+ return false;
+ }
+
+ m_currentShutterSpeed = shutterSpeed;
+ Q_EMIT actualValueChanged(int(ShutterSpeed));
+ return true;
+}
+
+bool DirectShowCameraExposureControl::setAperture(IAMCameraControl *cameraControl, qreal aperture)
+{
+ if (m_currentExposureMode != QCameraExposure::ExposureManual) {
+ qCDebug(qtDirectShowPlugin, "Trying to set aperture value while in auto exposure mode!");
+ return false;
+ }
+
+ if (qFuzzyCompare(m_currentAperture, aperture))
+ return true;
+
+ if ((m_apertureValues.caps & CameraControl_Flags_Manual) == 0)
+ return false;
+
+ if (!m_supportedApertureValues.contains(QVariant::fromValue(aperture)))
+ return false;
+
+ if (aperture < qreal(0.0))
+ return false;
+
+ const long newValue = long(10 * aperture);
+ if (FAILED(cameraControl->Set(CameraControl_Iris, newValue, CameraControl_Flags_Manual))) {
+ qCDebug(qtDirectShowPlugin, "Unable to set aperture value to: %d", int(aperture));
+ return false;
+ }
+
+ m_currentAperture = aperture;
+ Q_EMIT actualValueChanged(int(Aperture));
+
+ return true;
+}
+
+bool DirectShowCameraExposureControl::setExposureMode(IAMCameraControl *cameraControl, QCameraExposure::ExposureMode mode)
+{
+ if (m_currentExposureMode == mode)
+ return true;
+
+ bool exposureModeChanged = true;
+
+ // Set auto exposure mode
+ if (mode == QCameraExposure::ExposureAuto) {
+ if ((m_apertureValues.caps & CameraControl_Flags_Auto)
+ && FAILED(cameraControl->Set(CameraControl_Iris, 0, CameraControl_Flags_Auto))) {
+ qCDebug(qtDirectShowPlugin, "Setting auto exposure mode failed!");
+ exposureModeChanged = false;
+ }
+
+ if ((m_shutterSpeedValues.caps & CameraControl_Flags_Auto)
+ && FAILED(cameraControl->Set(CameraControl_Exposure, 0, CameraControl_Flags_Auto))) {
+ qCDebug(qtDirectShowPlugin, "Setting auto exposure mode failed");
+ exposureModeChanged = false;
+ }
+
+ if (exposureModeChanged) {
+ m_currentExposureMode = mode;
+ Q_EMIT actualValueChanged(int(ExposureMode));
+ }
+
+ return exposureModeChanged;
+ }
+
+ // Change the current exposure mode to manual first.
+ m_currentExposureMode = QCameraExposure::ExposureManual;
+
+ const qreal newShutterSpeed = qFuzzyCompare(m_requestedShutterSpeed, -1.0)
+ ? convertToSec(m_shutterSpeedValues.defaultValue)
+ : m_requestedShutterSpeed;
+ if ((m_shutterSpeedValues.caps & CameraControl_Flags_Manual))
+ setShutterSpeed(cameraControl, newShutterSpeed);
+
+ const qreal newAperture = qFuzzyCompare(m_requestedAperture, -1.0)
+ ? convertToFvalue(m_apertureValues.defaultValue)
+ : m_requestedAperture;
+ if ((m_apertureValues.caps & CameraControl_Flags_Manual))
+ setAperture(cameraControl, newAperture);
+
+
+ // Check if any of the values changed.
+ exposureModeChanged = (qFuzzyCompare(m_currentShutterSpeed, newShutterSpeed)
+ || qFuzzyCompare(m_currentAperture, newAperture));
+
+ if (exposureModeChanged)
+ Q_EMIT actualValueChanged(int(ExposureMode));
+
+ return exposureModeChanged;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/directshowcameraexposurecontrol.h b/src/plugins/directshow/camera/directshowcameraexposurecontrol.h
new file mode 100644
index 000000000..db3fc5984
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcameraexposurecontrol.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DIRECTSHOWCAMERAEXPOSURECONTROL_H
+#define DIRECTSHOWCAMERAEXPOSURECONTROL_H
+
+#include <QtMultimedia/qcameraexposurecontrol.h>
+
+struct IAMCameraControl;
+
+QT_BEGIN_NAMESPACE
+
+class DSCameraSession;
+
+class DirectShowCameraExposureControl : public QCameraExposureControl
+{
+ Q_OBJECT
+public:
+ DirectShowCameraExposureControl(DSCameraSession *session);
+
+ bool isParameterSupported(ExposureParameter parameter) const override;
+ QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const override;
+ QVariant requestedValue(ExposureParameter parameter) const override;
+ QVariant actualValue(ExposureParameter parameter) const override;
+ bool setValue(ExposureParameter parameter, const QVariant &value) override;
+
+private Q_SLOTS:
+ void onStatusChanged(QCamera::Status status);
+
+private:
+ DSCameraSession *m_session;
+
+ struct ExposureValues
+ {
+ long caps;
+ long minValue;
+ long maxValue;
+ long stepping;
+ long defaultValue;
+ } m_shutterSpeedValues, m_apertureValues;
+
+ qreal m_requestedShutterSpeed;
+ qreal m_currentShutterSpeed;
+
+ qreal m_requestedAperture;
+ qreal m_currentAperture;
+
+ QVariantList m_supportedShutterSpeeds;
+ QVariantList m_supportedApertureValues;
+ QVariantList m_supportedExposureModes;
+
+ QCameraExposure::ExposureMode m_requestedExposureMode;
+ QCameraExposure::ExposureMode m_currentExposureMode;
+
+ void updateExposureSettings();
+
+ bool setShutterSpeed(IAMCameraControl *cameraControl, qreal shutterSpeed);
+ bool setAperture(IAMCameraControl *cameraControl, qreal aperture);
+ bool setExposureMode(IAMCameraControl *cameraControl, QCameraExposure::ExposureMode mode);
+};
+
+QT_END_NAMESPACE
+
+#endif // DIRECTSHOWCAMERAEXPOSURECONTROL_H
diff --git a/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp
new file mode 100644
index 000000000..209cb5d96
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "directshowcamerazoomcontrol.h"
+#include "dscamerasession.h"
+#include "directshowutils.h"
+
+QT_BEGIN_NAMESPACE
+
+inline static qreal defaultZoomValue() { return qreal(1.0); }
+
+DirectShowCameraZoomControl::DirectShowCameraZoomControl(DSCameraSession *session)
+ : m_session(session)
+ , m_opticalZoom({0, 0, 0, 0, 0})
+ , m_currentOpticalZoom(qreal(0.0))
+ , m_requestedOpticalZoom(qreal(0.0))
+ , m_maxOpticalZoom(qreal(1.0))
+{
+ Q_ASSERT(m_session);
+ connect(m_session, &DSCameraSession::statusChanged,
+ this, &DirectShowCameraZoomControl::onStatusChanged);
+}
+
+qreal DirectShowCameraZoomControl::maximumOpticalZoom() const
+{
+ return m_maxOpticalZoom;
+}
+
+qreal DirectShowCameraZoomControl::maximumDigitalZoom() const
+{
+ return defaultZoomValue();
+}
+
+qreal DirectShowCameraZoomControl::requestedOpticalZoom() const
+{
+ return qMax(defaultZoomValue(), m_requestedOpticalZoom);
+}
+
+qreal DirectShowCameraZoomControl::requestedDigitalZoom() const
+{
+ return defaultZoomValue();
+}
+
+qreal DirectShowCameraZoomControl::currentOpticalZoom() const
+{
+ return qMax(defaultZoomValue(), m_currentOpticalZoom);
+}
+
+qreal DirectShowCameraZoomControl::currentDigitalZoom() const
+{
+ return defaultZoomValue();
+}
+
+void DirectShowCameraZoomControl::zoomTo(qreal optical, qreal digital)
+{
+ Q_UNUSED(digital);
+ if (!(m_opticalZoom.caps & CameraControl_Flags_Manual))
+ return;
+
+ if (qFuzzyCompare(optical, m_requestedOpticalZoom))
+ return;
+
+ m_requestedOpticalZoom = optical;
+ Q_EMIT requestedOpticalZoomChanged(m_requestedOpticalZoom);
+
+ if (qFuzzyCompare(m_requestedOpticalZoom, m_currentOpticalZoom))
+ return;
+
+ if (m_session->status() != QCamera::LoadedStatus && m_session->status() != QCamera::ActiveStatus)
+ return; // We'll wait until the camera is loaded, see: statusChanged connection
+
+ opticalZoomToPrivate(optical);
+}
+
+void DirectShowCameraZoomControl::onStatusChanged(QCamera::Status status)
+{
+ if (status == QCamera::LoadedStatus) {
+ updateZoomValues();
+ } else if (status == QCamera::UnloadedStatus) {
+ SecureZeroMemory(&m_opticalZoom, sizeof(ZoomValues));
+ m_currentOpticalZoom = qreal(0.0);
+ m_requestedOpticalZoom = qreal(0.0);
+ }
+
+}
+
+void DirectShowCameraZoomControl::updateZoomValues()
+{
+ IAMCameraControl *cameraControl = nullptr;
+ const DirectShowUtils::ScopedSafeRelease<IAMCameraControl> rControl { &cameraControl };
+ if (!m_session->getCameraControlInterface(&cameraControl))
+ return;
+
+ ZoomValues values { 0, 0, 0, 0, 0 };
+ // Zoom levels in DS are in the range [10, 600]
+ // The default zoom is device specific.
+ HRESULT hr = cameraControl->GetRange(CameraControl_Zoom,
+ &values.minZoom,
+ &values.maxZoom,
+ &values.stepping,
+ &values.defaultZoom,
+ &values.caps);
+
+ if (FAILED(hr)) {
+ qCDebug(qtDirectShowPlugin, "Getting the camera's zoom properties failed");
+ SecureZeroMemory(&m_opticalZoom, sizeof(ZoomValues));
+ return;
+ }
+
+ if (!(values.caps & CameraControl_Flags_Manual)) {
+ qCDebug(qtDirectShowPlugin, "Camera does not support manual zoom");
+ SecureZeroMemory(&m_opticalZoom, sizeof(ZoomValues));
+ return;
+ }
+
+ if (values.maxZoom != m_opticalZoom.maxZoom) {
+ const qreal newMaxZoomScale = (values.minZoom == 0) ? defaultZoomValue()
+ : (qreal(values.maxZoom) / qreal(values.minZoom));
+ if (!qFuzzyCompare(newMaxZoomScale, m_maxOpticalZoom)) {
+ m_maxOpticalZoom = newMaxZoomScale;
+ Q_EMIT maximumOpticalZoomChanged(m_maxOpticalZoom);
+ }
+ }
+
+ m_opticalZoom = values;
+
+ long currentZoom = 0;
+ long flags = 0;
+ if (FAILED(cameraControl->Get(CameraControl_Zoom, &currentZoom, &flags))) {
+ qCDebug(qtDirectShowPlugin, "Getting the camera's current zoom value failed!");
+ return;
+ }
+
+ qreal currentOpticalZoom = (m_opticalZoom.minZoom == 0) ? defaultZoomValue()
+ : (qreal(currentZoom) / qreal(m_opticalZoom.minZoom));
+ currentOpticalZoom = qMax(defaultZoomValue(), currentOpticalZoom);
+ if (!qFuzzyCompare(m_currentOpticalZoom, currentOpticalZoom)) {
+ m_currentOpticalZoom = currentOpticalZoom;
+ Q_EMIT currentOpticalZoomChanged(m_currentOpticalZoom);
+ }
+
+ // Check if there is a pending zoom value.
+ if (!qFuzzyCompare(m_currentOpticalZoom, m_requestedOpticalZoom))
+ opticalZoomToPrivate(m_requestedOpticalZoom);
+}
+
+bool DirectShowCameraZoomControl::opticalZoomToPrivate(qreal scaleFactor)
+{
+ IAMCameraControl *cameraControl = nullptr;
+ const DirectShowUtils::ScopedSafeRelease<IAMCameraControl> rControl { &cameraControl };
+ if (!m_session->getCameraControlInterface(&cameraControl))
+ return false;
+
+ // Convert to DS zoom value
+ const int newDSOpticalZoom = qRound(m_opticalZoom.minZoom * scaleFactor);
+ long newDSOpticalZoomAdjusted = newDSOpticalZoom - (newDSOpticalZoom % m_opticalZoom.stepping);
+ newDSOpticalZoomAdjusted = qBound(m_opticalZoom.minZoom, newDSOpticalZoomAdjusted, m_opticalZoom.maxZoom);
+
+ if (FAILED(cameraControl->Set(CameraControl_Zoom, newDSOpticalZoomAdjusted, CameraControl_Flags_Manual))) {
+ qCDebug(qtDirectShowPlugin, "Setting the camera's zoom value failed");
+ return false;
+ }
+
+ const qreal newScaleFactor = (m_opticalZoom.minZoom == 0) ? defaultZoomValue()
+ : (qreal(newDSOpticalZoomAdjusted) / qreal(m_opticalZoom.minZoom));
+ // convert back to Qt scale value
+ m_currentOpticalZoom = qMax(defaultZoomValue(), newScaleFactor);
+ Q_EMIT currentOpticalZoomChanged(m_currentOpticalZoom);
+
+ return true;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/directshowcamerazoomcontrol.h b/src/plugins/directshow/camera/directshowcamerazoomcontrol.h
new file mode 100644
index 000000000..f6fb05b0e
--- /dev/null
+++ b/src/plugins/directshow/camera/directshowcamerazoomcontrol.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DIRECTSHOWCAMERAZOOMCONTROL_H
+#define DIRECTSHOWCAMERAZOOMCONTROL_H
+
+#include <QtMultimedia/qcamerazoomcontrol.h>
+#include <QtMultimedia/qcamera.h>
+
+QT_BEGIN_NAMESPACE
+
+class DSCameraSession;
+
+class DirectShowCameraZoomControl : public QCameraZoomControl
+{
+ Q_OBJECT
+public:
+ DirectShowCameraZoomControl(DSCameraSession *session);
+
+ qreal maximumOpticalZoom() const override;
+ qreal maximumDigitalZoom() const override;
+ qreal requestedOpticalZoom() const override;
+ qreal requestedDigitalZoom() const override;
+ qreal currentOpticalZoom() const override;
+ qreal currentDigitalZoom() const override;
+ void zoomTo(qreal optical, qreal digital) override;
+
+private Q_SLOTS:
+ void onStatusChanged(QCamera::Status status);
+
+private:
+ DSCameraSession *m_session;
+ struct ZoomValues
+ {
+ long maxZoom;
+ long minZoom;
+ long stepping;
+ long defaultZoom;
+ long caps;
+ } m_opticalZoom;
+
+ qreal m_currentOpticalZoom;
+ qreal m_requestedOpticalZoom;
+ qreal m_maxOpticalZoom;
+
+ void updateZoomValues();
+ bool opticalZoomToPrivate(qreal value);
+};
+
+QT_END_NAMESPACE
+
+#endif // DIRECTSHOWCAMERAZOOMCONTROL_H
diff --git a/src/plugins/directshow/camera/dscameraservice.cpp b/src/plugins/directshow/camera/dscameraservice.cpp
index 836f1aaa5..a806cabe3 100644
--- a/src/plugins/directshow/camera/dscameraservice.cpp
+++ b/src/plugins/directshow/camera/dscameraservice.cpp
@@ -48,19 +48,29 @@
#include "dsimagecapturecontrol.h"
#include "dscameraviewfindersettingscontrol.h"
#include "dscameraimageprocessingcontrol.h"
+#include "directshowcameraexposurecontrol.h"
+#include "directshowcameracapturedestinationcontrol.h"
+#include "directshowcameracapturebufferformatcontrol.h"
+#include "directshowvideoprobecontrol.h"
+#include "directshowcamerazoomcontrol.h"
QT_BEGIN_NAMESPACE
DSCameraService::DSCameraService(QObject *parent):
QMediaService(parent)
+ , m_session(new DSCameraSession(this))
+ , m_control(new DSCameraControl(m_session))
+ , m_videoDevice(new DSVideoDeviceControl(m_session))
, m_videoRenderer(0)
+ , m_imageCapture(new DSImageCaptureControl(m_session))
+ , m_viewfinderSettings(new DSCameraViewfinderSettingsControl(m_session))
+ , m_imageProcessingControl(new DSCameraImageProcessingControl(m_session))
+ , m_exposureControl(new DirectShowCameraExposureControl(m_session))
+ , m_captureDestinationControl(new DirectShowCameraCaptureDestinationControl(m_session))
+ , m_captureBufferFormatControl(new DirectShowCameraCaptureBufferFormatControl)
+ , m_videoProbeControl(nullptr)
+ , m_zoomControl(new DirectShowCameraZoomControl(m_session))
{
- m_session = new DSCameraSession(this);
- m_control = new DSCameraControl(m_session);
- m_videoDevice = new DSVideoDeviceControl(m_session);
- m_imageCapture = new DSImageCaptureControl(m_session);
- m_viewfinderSettings = new DSCameraViewfinderSettingsControl(m_session);
- m_imageProcessingControl = new DSCameraImageProcessingControl(m_session);
}
DSCameraService::~DSCameraService()
@@ -72,6 +82,11 @@ DSCameraService::~DSCameraService()
delete m_videoRenderer;
delete m_imageCapture;
delete m_session;
+ delete m_exposureControl;
+ delete m_captureDestinationControl;
+ delete m_captureBufferFormatControl;
+ delete m_videoProbeControl;
+ delete m_zoomControl;
}
QMediaControl* DSCameraService::requestControl(const char *name)
@@ -98,6 +113,27 @@ QMediaControl* DSCameraService::requestControl(const char *name)
if (qstrcmp(name, QCameraImageProcessingControl_iid) == 0)
return m_imageProcessingControl;
+ if (qstrcmp(name, QCameraExposureControl_iid) == 0)
+ return m_exposureControl;
+
+ if (qstrcmp(name, QCameraCaptureDestinationControl_iid) == 0)
+ return m_captureDestinationControl;
+
+ if (qstrcmp(name, QCameraCaptureBufferFormatControl_iid) == 0)
+ return m_captureBufferFormatControl;
+
+ if (qstrcmp(name, QMediaVideoProbeControl_iid) == 0) {
+ if (!m_videoProbeControl)
+ m_videoProbeControl = new DirectShowVideoProbeControl;
+
+ m_videoProbeControl->ref();
+ m_session->addVideoProbe(m_videoProbeControl);
+ return m_videoProbeControl;
+ }
+
+ if (qstrcmp(name, QCameraZoomControl_iid) == 0)
+ return m_zoomControl;
+
return 0;
}
@@ -108,6 +144,14 @@ void DSCameraService::releaseControl(QMediaControl *control)
m_videoRenderer = 0;
return;
}
+
+ if (control == m_videoProbeControl) {
+ m_session->removeVideoProbe(m_videoProbeControl);
+ if (!m_videoProbeControl->deref()) {
+ delete m_videoProbeControl;
+ m_videoProbeControl = nullptr;
+ }
+ }
}
QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/dscameraservice.h b/src/plugins/directshow/camera/dscameraservice.h
index 8976e41cf..f444eeb51 100644
--- a/src/plugins/directshow/camera/dscameraservice.h
+++ b/src/plugins/directshow/camera/dscameraservice.h
@@ -52,6 +52,11 @@ class DSVideoDeviceControl;
class DSImageCaptureControl;
class DSCameraViewfinderSettingsControl;
class DSCameraImageProcessingControl;
+class DirectShowCameraExposureControl;
+class DirectShowCameraCaptureDestinationControl;
+class DirectShowCameraCaptureBufferFormatControl;
+class DirectShowVideoProbeControl;
+class DirectShowCameraZoomControl;
class DSCameraService : public QMediaService
{
@@ -65,13 +70,18 @@ public:
virtual void releaseControl(QMediaControl *control);
private:
- DSCameraControl *m_control;
DSCameraSession *m_session;
+ DSCameraControl *m_control;
DSVideoDeviceControl *m_videoDevice;
QMediaControl *m_videoRenderer;
DSImageCaptureControl *m_imageCapture;
DSCameraViewfinderSettingsControl *m_viewfinderSettings;
DSCameraImageProcessingControl *m_imageProcessingControl;
+ DirectShowCameraExposureControl *m_exposureControl;
+ DirectShowCameraCaptureDestinationControl *m_captureDestinationControl;
+ DirectShowCameraCaptureBufferFormatControl *m_captureBufferFormatControl;
+ DirectShowVideoProbeControl *m_videoProbeControl;
+ DirectShowCameraZoomControl *m_zoomControl;
};
QT_END_NAMESPACE
diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp
index dc0dfc8b3..9b642872a 100644
--- a/src/plugins/directshow/camera/dscamerasession.cpp
+++ b/src/plugins/directshow/camera/dscamerasession.cpp
@@ -51,24 +51,27 @@
#include "directshowcameraglobal.h"
#include "directshowmediatype.h"
#include "directshowutils.h"
+#include "directshowvideoprobecontrol.h"
QT_BEGIN_NAMESPACE
DSCameraSession::DSCameraSession(QObject *parent)
: QObject(parent)
- , m_graphBuilder(Q_NULLPTR)
- , m_filterGraph(Q_NULLPTR)
+ , m_graphBuilder(nullptr)
+ , m_filterGraph(nullptr)
, m_sourceDeviceName(QLatin1String("default"))
- , m_sourceFilter(Q_NULLPTR)
+ , m_sourceFilter(nullptr)
, m_needsHorizontalMirroring(false)
- , m_previewSampleGrabber(Q_NULLPTR)
- , m_nullRendererFilter(Q_NULLPTR)
+ , m_previewSampleGrabber(nullptr)
+ , m_nullRendererFilter(nullptr)
, m_previewStarted(false)
- , m_surface(Q_NULLPTR)
+ , m_surface(nullptr)
, m_previewPixelFormat(QVideoFrame::Format_Invalid)
, m_readyForCapture(false)
, m_imageIdCounter(0)
, m_currentImageId(-1)
+ , m_captureDestinations(QCameraImageCapture::CaptureToFile)
+ , m_videoProbeControl(nullptr)
, m_status(QCamera::UnloadedStatus)
{
connect(this, SIGNAL(statusChanged(QCamera::Status)),
@@ -354,6 +357,39 @@ bool DSCameraSession::getCameraControlInterface(IAMCameraControl **cameraControl
return true;
}
+bool DSCameraSession::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const
+{
+ return destination & (QCameraImageCapture::CaptureToFile | QCameraImageCapture::CaptureToBuffer);
+}
+
+QCameraImageCapture::CaptureDestinations DSCameraSession::captureDestination() const
+{
+ return m_captureDestinations;
+}
+
+void DSCameraSession::setCaptureDestination(QCameraImageCapture::CaptureDestinations destinations)
+{
+ if (m_captureDestinations == destinations)
+ return;
+
+ m_captureDestinations = destinations;
+ Q_EMIT captureDestinationChanged(m_captureDestinations);
+}
+
+void DSCameraSession::addVideoProbe(DirectShowVideoProbeControl *probe)
+{
+ const QMutexLocker locker(&m_probeMutex);
+ m_videoProbeControl = probe;
+}
+
+void DSCameraSession::removeVideoProbe(DirectShowVideoProbeControl *probe)
+{
+ Q_UNUSED(probe);
+ Q_ASSERT(m_videoProbeControl == probe);
+ const QMutexLocker locker(&m_probeMutex);
+ m_videoProbeControl = nullptr;
+}
+
bool DSCameraSession::load()
{
unload();
@@ -547,6 +583,12 @@ void DSCameraSession::onFrameAvailable(double time, const QByteArray &data)
m_presentMutex.unlock();
+ {
+ const QMutexLocker locker(&m_probeMutex);
+ if (m_currentFrame.isValid() && m_videoProbeControl)
+ Q_EMIT m_videoProbeControl->videoFrameProbed(m_currentFrame);
+ }
+
// Image capture
QMutexLocker locker(&m_captureMutex);
if (m_currentImageId != -1 && !m_capturedFrame.isValid()) {
@@ -586,8 +628,8 @@ void DSCameraSession::presentFrame()
m_capturedFrame.unmap();
- QtConcurrent::run(this, &DSCameraSession::saveCapturedImage,
- m_currentImageId, captureImage, m_imageCaptureFileName);
+ QtConcurrent::run(this, &DSCameraSession::processCapturedImage,
+ m_currentImageId, m_captureDestinations, captureImage, m_imageCaptureFileName);
m_imageCaptureFileName.clear();
m_currentImageId = -1;
@@ -603,14 +645,22 @@ void DSCameraSession::presentFrame()
updateReadyForCapture();
}
-void DSCameraSession::saveCapturedImage(int id, const QImage &image, const QString &path)
+void DSCameraSession::processCapturedImage(int id,
+ QCameraImageCapture::CaptureDestinations captureDestinations,
+ const QImage &image,
+ const QString &path)
{
- if (image.save(path, "JPG")) {
- emit imageSaved(id, path);
- } else {
- emit captureError(id, QCameraImageCapture::ResourceError,
- tr("Could not save image to file."));
+ if (captureDestinations & QCameraImageCapture::CaptureToFile) {
+ if (image.save(path, "JPG")) {
+ Q_EMIT imageSaved(id, path);
+ } else {
+ Q_EMIT captureError(id, QCameraImageCapture::ResourceError,
+ tr("Could not save image to file."));
+ }
}
+
+ if (captureDestinations & QCameraImageCapture::CaptureToBuffer)
+ Q_EMIT imageAvailable(id, QVideoFrame(image));
}
bool DSCameraSession::createFilterGraph()
diff --git a/src/plugins/directshow/camera/dscamerasession.h b/src/plugins/directshow/camera/dscamerasession.h
index 90407f49e..e28015534 100644
--- a/src/plugins/directshow/camera/dscamerasession.h
+++ b/src/plugins/directshow/camera/dscamerasession.h
@@ -50,6 +50,7 @@
#include <QtMultimedia/qabstractvideosurface.h>
#include <QtMultimedia/qvideosurfaceformat.h>
#include <QtMultimedia/qcameraimageprocessingcontrol.h>
+#include <QtMultimedia/qcameraimagecapture.h>
#include <private/qmediastoragelocation_p.h>
#include <tchar.h>
@@ -76,6 +77,7 @@ struct ICaptureGraphBuilder2;
QT_BEGIN_NAMESPACE
class DirectShowSampleGrabber;
+class DirectShowVideoProbeControl;
class DSCameraSession : public QObject
{
@@ -120,13 +122,22 @@ public:
bool getCameraControlInterface(IAMCameraControl **cameraControl) const;
+ bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const;
+ QCameraImageCapture::CaptureDestinations captureDestination() const;
+ void setCaptureDestination(QCameraImageCapture::CaptureDestinations destinations);
+
+ void addVideoProbe(DirectShowVideoProbeControl *probe);
+ void removeVideoProbe(DirectShowVideoProbeControl *probe);
+
Q_SIGNALS:
void statusChanged(QCamera::Status);
void imageExposed(int id);
void imageCaptured(int id, const QImage &preview);
void imageSaved(int id, const QString &fileName);
+ void imageAvailable(int id, const QVideoFrame &buffer);
void readyForCaptureChanged(bool);
void captureError(int id, int error, const QString &errorString);
+ void captureDestinationChanged(QCameraImageCapture::CaptureDestinations);
private Q_SLOTS:
void presentFrame();
@@ -157,7 +168,7 @@ private:
void setStatus(QCamera::Status status);
void onFrameAvailable(double time, const QByteArray &data);
- void saveCapturedImage(int id, const QImage &image, const QString &path);
+ void processCapturedImage(int id, QCameraImageCapture::CaptureDestinations captureDestinations, const QImage &image, const QString &path);
bool createFilterGraph();
bool connectGraph();
@@ -208,6 +219,11 @@ private:
int m_imageIdCounter;
int m_currentImageId;
QVideoFrame m_capturedFrame;
+ QCameraImageCapture::CaptureDestinations m_captureDestinations;
+
+ // Video probe
+ QMutex m_probeMutex;
+ DirectShowVideoProbeControl *m_videoProbeControl;
// Internal state
QCamera::Status m_status;
diff --git a/src/plugins/directshow/camera/dsimagecapturecontrol.cpp b/src/plugins/directshow/camera/dsimagecapturecontrol.cpp
index 9d4a7ea1d..c92ce98e1 100644
--- a/src/plugins/directshow/camera/dsimagecapturecontrol.cpp
+++ b/src/plugins/directshow/camera/dsimagecapturecontrol.cpp
@@ -57,6 +57,8 @@ DSImageCaptureControl::DSImageCaptureControl(DSCameraSession *session)
this, SIGNAL(readyForCaptureChanged(bool)));
connect(m_session, SIGNAL(captureError(int,int,QString)),
this, SIGNAL(error(int,int,QString)));
+ connect(m_session, &DSCameraSession::imageAvailable,
+ this, &DSImageCaptureControl::imageAvailable);
}
DSImageCaptureControl::~DSImageCaptureControl()
diff --git a/src/plugins/directshow/player/directshowvideorenderercontrol.cpp b/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
index 40f77e899..ee7f5ec9e 100644
--- a/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
+++ b/src/plugins/directshow/player/directshowvideorenderercontrol.cpp
@@ -63,7 +63,7 @@ DirectShowVideoRendererControl::~DirectShowVideoRendererControl()
{
#if QT_CONFIG(evr)
if (m_evrPresenter) {
- m_evrPresenter->setSurface(Q_NULLPTR);
+ m_evrPresenter->setSurface(nullptr);
m_evrPresenter->Release();
}
#endif
@@ -83,7 +83,7 @@ void DirectShowVideoRendererControl::setSurface(QAbstractVideoSurface *surface)
#if QT_CONFIG(evr)
if (m_evrPresenter) {
- m_evrPresenter->setSurface(Q_NULLPTR);
+ m_evrPresenter->setSurface(nullptr);
m_evrPresenter->Release();
m_evrPresenter = 0;
}
diff --git a/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp b/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
index f819c9f24..9d281e10c 100644
--- a/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
@@ -58,7 +58,7 @@ CameraBinImageProcessing::CameraBinImageProcessing(CameraBinSession *session)
, m_session(session)
, m_whiteBalanceMode(QCameraImageProcessing::WhiteBalanceAuto)
#if QT_CONFIG(linux_v4l)
- , m_v4lImageControl(Q_NULLPTR)
+ , m_v4lImageControl(nullptr)
#endif
{
#if QT_CONFIG(gstreamer_photography)
diff --git a/src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp b/src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp
index 2d3c7c2ea..4f45a0a2f 100644
--- a/src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinserviceplugin.cpp
@@ -74,7 +74,7 @@ QMediaService* CameraBinServicePlugin::create(const QString &key)
"GStreamer %u.%u."
"\nPlease install the 'bad' GStreamer plugin package.",
major, minor);
- return Q_NULLPTR;
+ return nullptr;
}
return new CameraBinService(sourceFactory());
diff --git a/src/plugins/opensles/qopenslesaudiooutput.cpp b/src/plugins/opensles/qopenslesaudiooutput.cpp
index 70d77a380..0b1f444bd 100644
--- a/src/plugins/opensles/qopenslesaudiooutput.cpp
+++ b/src/plugins/opensles/qopenslesaudiooutput.cpp
@@ -69,13 +69,13 @@ QOpenSLESAudioOutput::QOpenSLESAudioOutput(const QByteArray &device)
: m_deviceName(device),
m_state(QAudio::StoppedState),
m_error(QAudio::NoError),
- m_outputMixObject(Q_NULLPTR),
- m_playerObject(Q_NULLPTR),
- m_playItf(Q_NULLPTR),
- m_volumeItf(Q_NULLPTR),
- m_bufferQueueItf(Q_NULLPTR),
- m_audioSource(Q_NULLPTR),
- m_buffers(Q_NULLPTR),
+ m_outputMixObject(nullptr),
+ m_playerObject(nullptr),
+ m_playItf(nullptr),
+ m_volumeItf(nullptr),
+ m_bufferQueueItf(nullptr),
+ m_audioSource(nullptr),
+ m_buffers(nullptr),
m_volume(1.0),
m_pullMode(false),
m_nextBuffer(0),
@@ -157,7 +157,7 @@ QIODevice *QOpenSLESAudioOutput::start()
stop();
if (!preparePlayer())
- return Q_NULLPTR;
+ return nullptr;
m_pullMode = false;
m_processedBytes = 0;
@@ -458,8 +458,8 @@ bool QOpenSLESAudioOutput::preparePlayer()
if (SL_RESULT_SUCCESS != (*engine)->CreateOutputMix(engine,
&m_outputMixObject,
0,
- Q_NULLPTR,
- Q_NULLPTR)) {
+ nullptr,
+ nullptr)) {
qWarning() << "Unable to create output mix";
setError(QAudio::FatalError);
return false;
@@ -472,7 +472,7 @@ bool QOpenSLESAudioOutput::preparePlayer()
}
SLDataLocator_OutputMix outputMixLocator = { SL_DATALOCATOR_OUTPUTMIX, m_outputMixObject };
- SLDataSink audioSink = { &outputMixLocator, Q_NULLPTR };
+ SLDataSink audioSink = { &outputMixLocator, nullptr };
#ifndef ANDROID
const int iids = 2;
@@ -598,28 +598,28 @@ void QOpenSLESAudioOutput::destroyPlayer()
if (m_playerObject) {
(*m_playerObject)->Destroy(m_playerObject);
- m_playerObject = Q_NULLPTR;
+ m_playerObject = nullptr;
}
if (m_outputMixObject) {
(*m_outputMixObject)->Destroy(m_outputMixObject);
- m_outputMixObject = Q_NULLPTR;
+ m_outputMixObject = nullptr;
}
if (!m_pullMode && m_audioSource) {
m_audioSource->close();
delete m_audioSource;
- m_audioSource = Q_NULLPTR;
+ m_audioSource = nullptr;
}
delete [] m_buffers;
- m_buffers = Q_NULLPTR;
+ m_buffers = nullptr;
m_processedBytes = 0;
m_nextBuffer = 0;
m_availableBuffers.storeRelease(BUFFER_COUNT);
- m_playItf = Q_NULLPTR;
- m_volumeItf = Q_NULLPTR;
- m_bufferQueueItf = Q_NULLPTR;
+ m_playItf = nullptr;
+ m_volumeItf = nullptr;
+ m_bufferQueueItf = nullptr;
m_startRequiresInit = true;
}
@@ -630,7 +630,7 @@ void QOpenSLESAudioOutput::stopPlayer()
if (m_audioSource && !m_pullMode) {
m_audioSource->close();
delete m_audioSource;
- m_audioSource = Q_NULLPTR;
+ m_audioSource = nullptr;
}
// We need to change the state manually...
diff --git a/src/plugins/opensles/qopenslesaudiooutput.h b/src/plugins/opensles/qopenslesaudiooutput.h
index 4c724dca6..b480f00e6 100644
--- a/src/plugins/opensles/qopenslesaudiooutput.h
+++ b/src/plugins/opensles/qopenslesaudiooutput.h
@@ -57,30 +57,30 @@ public:
QOpenSLESAudioOutput(const QByteArray &device);
~QOpenSLESAudioOutput();
- void start(QIODevice *device) Q_DECL_OVERRIDE;
- QIODevice *start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesFree() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int value) Q_DECL_OVERRIDE;
- int bufferSize() const Q_DECL_OVERRIDE;
- void setNotifyInterval(int milliSeconds) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat &format) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
-
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
-
- void setCategory(const QString &category) Q_DECL_OVERRIDE;
- QString category() const Q_DECL_OVERRIDE;
+ void start(QIODevice *device) override;
+ QIODevice *start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesFree() const override;
+ int periodSize() const override;
+ void setBufferSize(int value) override;
+ int bufferSize() const override;
+ void setNotifyInterval(int milliSeconds) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat &format) override;
+ QAudioFormat format() const override;
+
+ void setVolume(qreal volume) override;
+ qreal volume() const override;
+
+ void setCategory(const QString &category) override;
+ QString category() const override;
private:
friend class SLIODevicePrivate;
@@ -138,11 +138,11 @@ class SLIODevicePrivate : public QIODevice
public:
inline SLIODevicePrivate(QOpenSLESAudioOutput *audio) : m_audioDevice(audio) {}
- inline ~SLIODevicePrivate() Q_DECL_OVERRIDE {}
+ inline ~SLIODevicePrivate() override {}
protected:
- inline qint64 readData(char *, qint64) Q_DECL_OVERRIDE { return 0; }
- inline qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE;
+ inline qint64 readData(char *, qint64) override { return 0; }
+ inline qint64 writeData(const char *data, qint64 len) override;
private:
QOpenSLESAudioOutput *m_audioDevice;
diff --git a/src/plugins/pulseaudio/qaudioinput_pulse.cpp b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
index 050731071..2b5325132 100644
--- a/src/plugins/pulseaudio/qaudioinput_pulse.cpp
+++ b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
@@ -226,7 +226,7 @@ QIODevice *QPulseAudioInput::start()
close();
if (!open())
- return Q_NULLPTR;
+ return nullptr;
m_pullMode = false;
m_audioSource = new PulseInputPrivate(this);
diff --git a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
index 0c7dc270a..3c20908dc 100644
--- a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
+++ b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
@@ -256,7 +256,7 @@ QIODevice *QPulseAudioOutput::start()
m_pullMode = false;
if (!open())
- return Q_NULLPTR;
+ return nullptr;
m_audioSource = new PulseOutputPrivate(this);
m_audioSource->open(QIODevice::WriteOnly|QIODevice::Unbuffered);
diff --git a/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h b/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h
index 432c22163..cb620be3b 100644
--- a/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h
+++ b/src/plugins/qnx-audio/audio/qnxaudiodeviceinfo.h
@@ -52,15 +52,15 @@ public:
QnxAudioDeviceInfo(const QString &deviceName, QAudio::Mode mode);
~QnxAudioDeviceInfo();
- QAudioFormat preferredFormat() const Q_DECL_OVERRIDE;
- bool isFormatSupported(const QAudioFormat &format) const Q_DECL_OVERRIDE;
- QString deviceName() const Q_DECL_OVERRIDE;
- QStringList supportedCodecs() Q_DECL_OVERRIDE;
- QList<int> supportedSampleRates() Q_DECL_OVERRIDE;
- QList<int> supportedChannelCounts() Q_DECL_OVERRIDE;
- QList<int> supportedSampleSizes() Q_DECL_OVERRIDE;
- QList<QAudioFormat::Endian> supportedByteOrders() Q_DECL_OVERRIDE;
- QList<QAudioFormat::SampleType> supportedSampleTypes() Q_DECL_OVERRIDE;
+ QAudioFormat preferredFormat() const override;
+ bool isFormatSupported(const QAudioFormat &format) const override;
+ QString deviceName() const override;
+ QStringList supportedCodecs() override;
+ QList<int> supportedSampleRates() override;
+ QList<int> supportedChannelCounts() override;
+ QList<int> supportedSampleSizes() override;
+ QList<QAudioFormat::Endian> supportedByteOrders() override;
+ QList<QAudioFormat::SampleType> supportedSampleTypes() override;
private:
const QString m_name;
diff --git a/src/plugins/qnx-audio/audio/qnxaudioinput.h b/src/plugins/qnx-audio/audio/qnxaudioinput.h
index 4c6bb2676..c677b6c96 100644
--- a/src/plugins/qnx-audio/audio/qnxaudioinput.h
+++ b/src/plugins/qnx-audio/audio/qnxaudioinput.h
@@ -59,26 +59,26 @@ public:
QnxAudioInput();
~QnxAudioInput();
- void start(QIODevice*) Q_DECL_OVERRIDE;
- QIODevice* start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesReady() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int ) Q_DECL_OVERRIDE;
- int bufferSize() const Q_DECL_OVERRIDE;
- void setNotifyInterval(int ) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat&) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
- void setVolume(qreal) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
+ void start(QIODevice*) override;
+ QIODevice* start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesReady() const override;
+ int periodSize() const override;
+ void setBufferSize(int ) override;
+ int bufferSize() const override;
+ void setNotifyInterval(int ) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat&) override;
+ QAudioFormat format() const override;
+ void setVolume(qreal) override;
+ qreal volume() const override;
private slots:
void userFeed();
@@ -124,8 +124,8 @@ class InputPrivate : public QIODevice
public:
InputPrivate(QnxAudioInput *audio);
- qint64 readData(char *data, qint64 len) Q_DECL_OVERRIDE;
- qint64 writeData(const char *data, qint64 len) Q_DECL_OVERRIDE;
+ qint64 readData(char *data, qint64 len) override;
+ qint64 writeData(const char *data, qint64 len) override;
void trigger();
diff --git a/src/plugins/qnx-audio/audio/qnxaudiooutput.h b/src/plugins/qnx-audio/audio/qnxaudiooutput.h
index 85aadf4b9..7a0979f77 100644
--- a/src/plugins/qnx-audio/audio/qnxaudiooutput.h
+++ b/src/plugins/qnx-audio/audio/qnxaudiooutput.h
@@ -62,28 +62,28 @@ public:
QnxAudioOutput();
~QnxAudioOutput();
- void start(QIODevice *source) Q_DECL_OVERRIDE;
- QIODevice *start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesFree() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int) Q_DECL_OVERRIDE {}
- int bufferSize() const Q_DECL_OVERRIDE { return 0; }
- void setNotifyInterval(int ms) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat &format) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
- void setCategory(const QString &category) Q_DECL_OVERRIDE;
- QString category() const Q_DECL_OVERRIDE;
+ void start(QIODevice *source) override;
+ QIODevice *start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesFree() const override;
+ int periodSize() const override;
+ void setBufferSize(int) override {}
+ int bufferSize() const override { return 0; }
+ void setNotifyInterval(int ms) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat &format) override;
+ QAudioFormat format() const override;
+ void setVolume(qreal volume) override;
+ qreal volume() const override;
+ void setCategory(const QString &category) override;
+ QString category() const override;
private slots:
void pullData();
diff --git a/src/plugins/qnx-audio/audio/qnxaudioplugin.h b/src/plugins/qnx-audio/audio/qnxaudioplugin.h
index 1d8b8a74b..d41f4020a 100644
--- a/src/plugins/qnx-audio/audio/qnxaudioplugin.h
+++ b/src/plugins/qnx-audio/audio/qnxaudioplugin.h
@@ -55,11 +55,11 @@ public:
explicit QnxAudioPlugin(QObject *parent = 0);
~QnxAudioPlugin() {}
- QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(QAudio::Mode mode) const override;
+ QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
+ QAbstractAudioInput *createInput(const QByteArray &device) override;
+ QAbstractAudioOutput *createOutput(const QByteArray &device) override;
+ QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h
index 44ee80026..38c01f86c 100644
--- a/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h
+++ b/src/plugins/qnx/camera/bbcameraaudioencodersettingscontrol.h
@@ -51,11 +51,11 @@ class BbCameraAudioEncoderSettingsControl : public QAudioEncoderSettingsControl
public:
explicit BbCameraAudioEncoderSettingsControl(BbCameraSession *session, QObject *parent = 0);
- QStringList supportedAudioCodecs() const Q_DECL_OVERRIDE;
- QString codecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QAudioEncoderSettings audioSettings() const Q_DECL_OVERRIDE;
- void setAudioSettings(const QAudioEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedAudioCodecs() const override;
+ QString codecDescription(const QString &codecName) const override;
+ QList<int> supportedSampleRates(const QAudioEncoderSettings &settings, bool *continuous = 0) const override;
+ QAudioEncoderSettings audioSettings() const override;
+ void setAudioSettings(const QAudioEncoderSettings &settings) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h
index 2be6f0c3b..4aac740c8 100644
--- a/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h
+++ b/src/plugins/qnx/camera/bbcameracapturebufferformatcontrol.h
@@ -49,9 +49,9 @@ class BbCameraCaptureBufferFormatControl : public QCameraCaptureBufferFormatCont
public:
explicit BbCameraCaptureBufferFormatControl(QObject *parent = 0);
- QList<QVideoFrame::PixelFormat> supportedBufferFormats() const Q_DECL_OVERRIDE;
- QVideoFrame::PixelFormat bufferFormat() const Q_DECL_OVERRIDE;
- void setBufferFormat(QVideoFrame::PixelFormat format) Q_DECL_OVERRIDE;
+ QList<QVideoFrame::PixelFormat> supportedBufferFormats() const override;
+ QVideoFrame::PixelFormat bufferFormat() const override;
+ void setBufferFormat(QVideoFrame::PixelFormat format) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h
index ab6f54b3d..9586ec56a 100644
--- a/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h
+++ b/src/plugins/qnx/camera/bbcameracapturedestinationcontrol.h
@@ -51,9 +51,9 @@ class BbCameraCaptureDestinationControl : public QCameraCaptureDestinationContro
public:
explicit BbCameraCaptureDestinationControl(BbCameraSession *session, QObject *parent = 0);
- bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const Q_DECL_OVERRIDE;
- QCameraImageCapture::CaptureDestinations captureDestination() const Q_DECL_OVERRIDE;
- void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) Q_DECL_OVERRIDE;
+ bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const override;
+ QCameraImageCapture::CaptureDestinations captureDestination() const override;
+ void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameracontrol.h b/src/plugins/qnx/camera/bbcameracontrol.h
index a22c8d6fa..0c97bd83c 100644
--- a/src/plugins/qnx/camera/bbcameracontrol.h
+++ b/src/plugins/qnx/camera/bbcameracontrol.h
@@ -51,16 +51,16 @@ class BbCameraControl : public QCameraControl
public:
explicit BbCameraControl(BbCameraSession *session, QObject *parent = 0);
- QCamera::State state() const Q_DECL_OVERRIDE;
- void setState(QCamera::State state) Q_DECL_OVERRIDE;
+ QCamera::State state() const override;
+ void setState(QCamera::State state) override;
- QCamera::Status status() const Q_DECL_OVERRIDE;
+ QCamera::Status status() const override;
- QCamera::CaptureModes captureMode() const Q_DECL_OVERRIDE;
- void setCaptureMode(QCamera::CaptureModes) Q_DECL_OVERRIDE;
- bool isCaptureModeSupported(QCamera::CaptureModes mode) const Q_DECL_OVERRIDE;
+ QCamera::CaptureModes captureMode() const override;
+ void setCaptureMode(QCamera::CaptureModes) override;
+ bool isCaptureModeSupported(QCamera::CaptureModes mode) const override;
- bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const Q_DECL_OVERRIDE;
+ bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameraexposurecontrol.h b/src/plugins/qnx/camera/bbcameraexposurecontrol.h
index 4f5a71518..2d0da29bd 100644
--- a/src/plugins/qnx/camera/bbcameraexposurecontrol.h
+++ b/src/plugins/qnx/camera/bbcameraexposurecontrol.h
@@ -51,12 +51,12 @@ class BbCameraExposureControl : public QCameraExposureControl
public:
explicit BbCameraExposureControl(BbCameraSession *session, QObject *parent = 0);
- virtual bool isParameterSupported(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- virtual QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const Q_DECL_OVERRIDE;
+ bool isParameterSupported(ExposureParameter parameter) const override;
+ QVariantList supportedParameterRange(ExposureParameter parameter, bool *continuous) const override;
- virtual QVariant requestedValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- virtual QVariant actualValue(ExposureParameter parameter) const Q_DECL_OVERRIDE;
- virtual bool setValue(ExposureParameter parameter, const QVariant& value) Q_DECL_OVERRIDE;
+ QVariant requestedValue(ExposureParameter parameter) const override;
+ QVariant actualValue(ExposureParameter parameter) const override;
+ bool setValue(ExposureParameter parameter, const QVariant& value) override;
private Q_SLOTS:
void statusChanged(QCamera::Status status);
diff --git a/src/plugins/qnx/camera/bbcameraflashcontrol.h b/src/plugins/qnx/camera/bbcameraflashcontrol.h
index e4b5f0a7f..8ce9c1f41 100644
--- a/src/plugins/qnx/camera/bbcameraflashcontrol.h
+++ b/src/plugins/qnx/camera/bbcameraflashcontrol.h
@@ -51,10 +51,10 @@ class BbCameraFlashControl : public QCameraFlashControl
public:
explicit BbCameraFlashControl(BbCameraSession *session, QObject *parent = 0);
- QCameraExposure::FlashModes flashMode() const Q_DECL_OVERRIDE;
- void setFlashMode(QCameraExposure::FlashModes mode) Q_DECL_OVERRIDE;
- bool isFlashModeSupported(QCameraExposure::FlashModes mode) const Q_DECL_OVERRIDE;
- bool isFlashReady() const Q_DECL_OVERRIDE;
+ QCameraExposure::FlashModes flashMode() const override;
+ void setFlashMode(QCameraExposure::FlashModes mode) override;
+ bool isFlashModeSupported(QCameraExposure::FlashModes mode) const override;
+ bool isFlashReady() const override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcamerafocuscontrol.h b/src/plugins/qnx/camera/bbcamerafocuscontrol.h
index 2501aafdd..bf11ea03e 100644
--- a/src/plugins/qnx/camera/bbcamerafocuscontrol.h
+++ b/src/plugins/qnx/camera/bbcamerafocuscontrol.h
@@ -51,15 +51,15 @@ class BbCameraFocusControl : public QCameraFocusControl
public:
explicit BbCameraFocusControl(BbCameraSession *session, QObject *parent = 0);
- QCameraFocus::FocusModes focusMode() const Q_DECL_OVERRIDE;
- void setFocusMode(QCameraFocus::FocusModes mode) Q_DECL_OVERRIDE;
- bool isFocusModeSupported(QCameraFocus::FocusModes mode) const Q_DECL_OVERRIDE;
- QCameraFocus::FocusPointMode focusPointMode() const Q_DECL_OVERRIDE;
- void setFocusPointMode(QCameraFocus::FocusPointMode mode) Q_DECL_OVERRIDE;
- bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const Q_DECL_OVERRIDE;
- QPointF customFocusPoint() const Q_DECL_OVERRIDE;
- void setCustomFocusPoint(const QPointF &point) Q_DECL_OVERRIDE;
- QCameraFocusZoneList focusZones() const Q_DECL_OVERRIDE;
+ QCameraFocus::FocusModes focusMode() const override;
+ void setFocusMode(QCameraFocus::FocusModes mode) override;
+ bool isFocusModeSupported(QCameraFocus::FocusModes mode) const override;
+ QCameraFocus::FocusPointMode focusPointMode() const override;
+ void setFocusPointMode(QCameraFocus::FocusPointMode mode) override;
+ bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const override;
+ QPointF customFocusPoint() const override;
+ void setCustomFocusPoint(const QPointF &point) override;
+ QCameraFocusZoneList focusZones() const override;
private:
void updateCustomFocusRegion();
diff --git a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h
index 4d239ef59..b8013ba1f 100644
--- a/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h
+++ b/src/plugins/qnx/camera/bbcameraimagecapturecontrol.h
@@ -51,13 +51,13 @@ class BbCameraImageCaptureControl : public QCameraImageCaptureControl
public:
explicit BbCameraImageCaptureControl(BbCameraSession *session, QObject *parent = 0);
- bool isReadyForCapture() const Q_DECL_OVERRIDE;
+ bool isReadyForCapture() const override;
- QCameraImageCapture::DriveMode driveMode() const Q_DECL_OVERRIDE;
- void setDriveMode(QCameraImageCapture::DriveMode mode) Q_DECL_OVERRIDE;
+ QCameraImageCapture::DriveMode driveMode() const override;
+ void setDriveMode(QCameraImageCapture::DriveMode mode) override;
- int capture(const QString &fileName) Q_DECL_OVERRIDE;
- void cancelCapture() Q_DECL_OVERRIDE;
+ int capture(const QString &fileName) override;
+ void cancelCapture() override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h
index 2060b4d99..0eefdd2a1 100644
--- a/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h
+++ b/src/plugins/qnx/camera/bbcameraimageprocessingcontrol.h
@@ -51,10 +51,10 @@ class BbCameraImageProcessingControl : public QCameraImageProcessingControl
public:
explicit BbCameraImageProcessingControl(BbCameraSession *session, QObject *parent = 0);
- bool isParameterSupported(ProcessingParameter) const Q_DECL_OVERRIDE;
- bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const Q_DECL_OVERRIDE;
- QVariant parameter(ProcessingParameter parameter) const Q_DECL_OVERRIDE;
- void setParameter(ProcessingParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
+ bool isParameterSupported(ProcessingParameter) const override;
+ bool isParameterValueSupported(ProcessingParameter parameter, const QVariant &value) const override;
+ QVariant parameter(ProcessingParameter parameter) const override;
+ void setParameter(ProcessingParameter parameter, const QVariant &value) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameralockscontrol.h b/src/plugins/qnx/camera/bbcameralockscontrol.h
index f6a7e1864..be3d1bd02 100644
--- a/src/plugins/qnx/camera/bbcameralockscontrol.h
+++ b/src/plugins/qnx/camera/bbcameralockscontrol.h
@@ -59,10 +59,10 @@ public:
explicit BbCameraLocksControl(BbCameraSession *session, QObject *parent = 0);
- QCamera::LockTypes supportedLocks() const Q_DECL_OVERRIDE;
- QCamera::LockStatus lockStatus(QCamera::LockType lock) const Q_DECL_OVERRIDE;
- void searchAndLock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
- void unlock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
+ QCamera::LockTypes supportedLocks() const override;
+ QCamera::LockStatus lockStatus(QCamera::LockType lock) const override;
+ void searchAndLock(QCamera::LockTypes locks) override;
+ void unlock(QCamera::LockTypes locks) override;
private Q_SLOTS:
void cameraOpened();
diff --git a/src/plugins/qnx/camera/bbcameramediarecordercontrol.h b/src/plugins/qnx/camera/bbcameramediarecordercontrol.h
index 0ba82969f..af46479a5 100644
--- a/src/plugins/qnx/camera/bbcameramediarecordercontrol.h
+++ b/src/plugins/qnx/camera/bbcameramediarecordercontrol.h
@@ -51,19 +51,19 @@ class BbCameraMediaRecorderControl : public QMediaRecorderControl
public:
explicit BbCameraMediaRecorderControl(BbCameraSession *session, QObject *parent = 0);
- QUrl outputLocation() const Q_DECL_OVERRIDE;
- bool setOutputLocation(const QUrl &location) Q_DECL_OVERRIDE;
- QMediaRecorder::State state() const Q_DECL_OVERRIDE;
- QMediaRecorder::Status status() const Q_DECL_OVERRIDE;
- qint64 duration() const Q_DECL_OVERRIDE;
- bool isMuted() const Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
- void applySettings() Q_DECL_OVERRIDE;
+ QUrl outputLocation() const override;
+ bool setOutputLocation(const QUrl &location) override;
+ QMediaRecorder::State state() const override;
+ QMediaRecorder::Status status() const override;
+ qint64 duration() const override;
+ bool isMuted() const override;
+ qreal volume() const override;
+ void applySettings() override;
public Q_SLOTS:
- void setState(QMediaRecorder::State state) Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
- void setVolume(qreal volume) Q_DECL_OVERRIDE;
+ void setState(QMediaRecorder::State state) override;
+ void setMuted(bool muted) override;
+ void setVolume(qreal volume) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameraorientationhandler.h b/src/plugins/qnx/camera/bbcameraorientationhandler.h
index e730acdc7..006a259cc 100644
--- a/src/plugins/qnx/camera/bbcameraorientationhandler.h
+++ b/src/plugins/qnx/camera/bbcameraorientationhandler.h
@@ -51,7 +51,7 @@ public:
explicit BbCameraOrientationHandler(QObject *parent = 0);
~BbCameraOrientationHandler();
- bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
+ bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
int orientation() const;
diff --git a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h
index 1e0ed8708..f67196be1 100644
--- a/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h
+++ b/src/plugins/qnx/camera/bbcameravideoencodersettingscontrol.h
@@ -51,12 +51,12 @@ class BbCameraVideoEncoderSettingsControl : public QVideoEncoderSettingsControl
public:
explicit BbCameraVideoEncoderSettingsControl(BbCameraSession *session, QObject *parent = 0);
- QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QStringList supportedVideoCodecs() const Q_DECL_OVERRIDE;
- QString videoCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QVideoEncoderSettings videoSettings() const Q_DECL_OVERRIDE;
- void setVideoSettings(const QVideoEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QList<QSize> supportedResolutions(const QVideoEncoderSettings &settings, bool *continuous = 0) const override;
+ QList<qreal> supportedFrameRates(const QVideoEncoderSettings &settings, bool *continuous = 0) const override;
+ QStringList supportedVideoCodecs() const override;
+ QString videoCodecDescription(const QString &codecName) const override;
+ QVideoEncoderSettings videoSettings() const override;
+ void setVideoSettings(const QVideoEncoderSettings &settings) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h
index b9c4af8a3..7a8e57a13 100644
--- a/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h
+++ b/src/plugins/qnx/camera/bbcameraviewfindersettingscontrol.h
@@ -51,9 +51,9 @@ class BbCameraViewfinderSettingsControl : public QCameraViewfinderSettingsContro
public:
explicit BbCameraViewfinderSettingsControl(BbCameraSession *session, QObject *parent = 0);
- bool isViewfinderParameterSupported(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
- QVariant viewfinderParameter(ViewfinderParameter parameter) const Q_DECL_OVERRIDE;
- void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) Q_DECL_OVERRIDE;
+ bool isViewfinderParameterSupported(ViewfinderParameter parameter) const override;
+ QVariant viewfinderParameter(ViewfinderParameter parameter) const override;
+ void setViewfinderParameter(ViewfinderParameter parameter, const QVariant &value) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbcamerazoomcontrol.h b/src/plugins/qnx/camera/bbcamerazoomcontrol.h
index fc5813db4..7b5e06f8d 100644
--- a/src/plugins/qnx/camera/bbcamerazoomcontrol.h
+++ b/src/plugins/qnx/camera/bbcamerazoomcontrol.h
@@ -52,13 +52,13 @@ class BbCameraZoomControl : public QCameraZoomControl
public:
explicit BbCameraZoomControl(BbCameraSession *session, QObject *parent = 0);
- qreal maximumOpticalZoom() const Q_DECL_OVERRIDE;
- qreal maximumDigitalZoom() const Q_DECL_OVERRIDE;
- qreal requestedOpticalZoom() const Q_DECL_OVERRIDE;
- qreal requestedDigitalZoom() const Q_DECL_OVERRIDE;
- qreal currentOpticalZoom() const Q_DECL_OVERRIDE;
- qreal currentDigitalZoom() const Q_DECL_OVERRIDE;
- void zoomTo(qreal optical, qreal digital) Q_DECL_OVERRIDE;
+ qreal maximumOpticalZoom() const override;
+ qreal maximumDigitalZoom() const override;
+ qreal requestedOpticalZoom() const override;
+ qreal requestedDigitalZoom() const override;
+ qreal currentOpticalZoom() const override;
+ qreal currentDigitalZoom() const override;
+ void zoomTo(qreal optical, qreal digital) override;
private Q_SLOTS:
void statusChanged(QCamera::Status status);
diff --git a/src/plugins/qnx/camera/bbimageencodercontrol.h b/src/plugins/qnx/camera/bbimageencodercontrol.h
index adb506f1f..bb246def6 100644
--- a/src/plugins/qnx/camera/bbimageencodercontrol.h
+++ b/src/plugins/qnx/camera/bbimageencodercontrol.h
@@ -51,11 +51,11 @@ class BbImageEncoderControl : public QImageEncoderControl
public:
explicit BbImageEncoderControl(BbCameraSession *session, QObject *parent = 0);
- QStringList supportedImageCodecs() const Q_DECL_OVERRIDE;
- QString imageCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QImageEncoderSettings imageSettings() const Q_DECL_OVERRIDE;
- void setImageSettings(const QImageEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedImageCodecs() const override;
+ QString imageCodecDescription(const QString &codecName) const override;
+ QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const override;
+ QImageEncoderSettings imageSettings() const override;
+ void setImageSettings(const QImageEncoderSettings &settings) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h
index 051fd713a..08d6cbb14 100644
--- a/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h
+++ b/src/plugins/qnx/camera/bbvideodeviceselectorcontrol.h
@@ -52,16 +52,16 @@ class BbVideoDeviceSelectorControl : public QVideoDeviceSelectorControl
public:
explicit BbVideoDeviceSelectorControl(BbCameraSession *session, QObject *parent = 0);
- int deviceCount() const Q_DECL_OVERRIDE;
- QString deviceName(int index) const Q_DECL_OVERRIDE;
- QString deviceDescription(int index) const Q_DECL_OVERRIDE;
- int defaultDevice() const Q_DECL_OVERRIDE;
- int selectedDevice() const Q_DECL_OVERRIDE;
+ int deviceCount() const override;
+ QString deviceName(int index) const override;
+ QString deviceDescription(int index) const override;
+ int defaultDevice() const override;
+ int selectedDevice() const override;
static void enumerateDevices(QList<QByteArray> *devices, QStringList *descriptions);
public Q_SLOTS:
- void setSelectedDevice(int index) Q_DECL_OVERRIDE;
+ void setSelectedDevice(int index) override;
private:
BbCameraSession* m_session;
diff --git a/src/plugins/qnx/camera/bbvideorenderercontrol.h b/src/plugins/qnx/camera/bbvideorenderercontrol.h
index 44bd5ca1b..441ff369d 100644
--- a/src/plugins/qnx/camera/bbvideorenderercontrol.h
+++ b/src/plugins/qnx/camera/bbvideorenderercontrol.h
@@ -51,8 +51,8 @@ class BbVideoRendererControl : public QVideoRendererControl
public:
explicit BbVideoRendererControl(BbCameraSession *session, QObject *parent = 0);
- QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
- void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
+ QAbstractVideoSurface *surface() const override;
+ void setSurface(QAbstractVideoSurface *surface) override;
private:
BbCameraSession *m_session;
diff --git a/src/plugins/qnx/common/windowgrabber.h b/src/plugins/qnx/common/windowgrabber.h
index 4278f2e3a..4b2217f74 100644
--- a/src/plugins/qnx/common/windowgrabber.h
+++ b/src/plugins/qnx/common/windowgrabber.h
@@ -100,7 +100,7 @@ public:
void pause();
void resume();
- bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
+ bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
bool handleScreenEvent(screen_event_t event);
diff --git a/src/plugins/qnx/mediaplayer/mediaplayer.pri b/src/plugins/qnx/mediaplayer/mediaplayer.pri
index 71bb98827..f39b542cc 100644
--- a/src/plugins/qnx/mediaplayer/mediaplayer.pri
+++ b/src/plugins/qnx/mediaplayer/mediaplayer.pri
@@ -10,7 +10,8 @@ HEADERS += \
$$PWD/mmrendererutil.h \
$$PWD/mmrenderervideowindowcontrol.h \
$$PWD/mmreventmediaplayercontrol.h \
- $$PWD/mmreventthread.h
+ $$PWD/mmreventthread.h \
+ $$PWD/mmrenderercustomaudiorolecontrol.h
SOURCES += \
$$PWD/mmrendereraudiorolecontrol.cpp \
$$PWD/mmrenderermediaplayercontrol.cpp \
@@ -21,6 +22,7 @@ SOURCES += \
$$PWD/mmrendererutil.cpp \
$$PWD/mmrenderervideowindowcontrol.cpp \
$$PWD/mmreventmediaplayercontrol.cpp \
- $$PWD/mmreventthread.cpp
+ $$PWD/mmreventthread.cpp \
+ $$PWD/mmrenderercustomaudiorolecontrol.cpp
QMAKE_USE += mmrenderer
diff --git a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h b/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h
index 7458d3512..d0d2165eb 100644
--- a/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmrendereraudiorolecontrol.h
@@ -49,10 +49,10 @@ class MmRendererAudioRoleControl : public QAudioRoleControl
public:
explicit MmRendererAudioRoleControl(QObject *parent = 0);
- QAudio::Role audioRole() const Q_DECL_OVERRIDE;
- void setAudioRole(QAudio::Role role) Q_DECL_OVERRIDE;
+ QAudio::Role audioRole() const override;
+ void setAudioRole(QAudio::Role role) override;
- QList<QAudio::Role> supportedAudioRoles() const Q_DECL_OVERRIDE;
+ QList<QAudio::Role> supportedAudioRoles() const override;
private:
QAudio::Role m_role;
diff --git a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp
new file mode 100644
index 000000000..c8971d41c
--- /dev/null
+++ b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.cpp
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 QNX Software Systems. All rights reserved.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "mmrenderercustomaudiorolecontrol.h"
+#include "mmrendererutil.h"
+
+QT_BEGIN_NAMESPACE
+
+MmRendererCustomAudioRoleControl::MmRendererCustomAudioRoleControl(QObject *parent)
+ : QCustomAudioRoleControl(parent)
+{
+}
+
+QString MmRendererCustomAudioRoleControl::customAudioRole() const
+{
+ return m_role;
+}
+
+void MmRendererCustomAudioRoleControl::setCustomAudioRole(const QString &role)
+{
+ if (m_role != role) {
+ m_role = role;
+ emit customAudioRoleChanged(m_role);
+ }
+}
+
+QStringList MmRendererCustomAudioRoleControl::supportedCustomAudioRoles() const
+{
+ return QStringList();
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h
new file mode 100644
index 000000000..ff16f9355
--- /dev/null
+++ b/src/plugins/qnx/mediaplayer/mmrenderercustomaudiorolecontrol.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 QNX Software Systems. All rights reserved.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef MMRENDERERCUSTOMAUDIOROLECONTROL_H
+#define MMRENDERERCUSTOMAUDIOROLECONTROL_H
+
+#include <qcustomaudiorolecontrol.h>
+
+QT_BEGIN_NAMESPACE
+
+class MmRendererCustomAudioRoleControl : public QCustomAudioRoleControl
+{
+ Q_OBJECT
+public:
+ explicit MmRendererCustomAudioRoleControl(QObject *parent = 0);
+
+ QString customAudioRole() const Q_DECL_OVERRIDE;
+ void setCustomAudioRole(const QString &role) Q_DECL_OVERRIDE;
+
+ QStringList supportedCustomAudioRoles() const Q_DECL_OVERRIDE;
+
+private:
+ QString m_role;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
index 55116f642..c66ac937d 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
+++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.cpp
@@ -37,6 +37,7 @@
**
****************************************************************************/
#include "mmrendereraudiorolecontrol.h"
+#include "mmrenderercustomaudiorolecontrol.h"
#include "mmrenderermediaplayercontrol.h"
#include "mmrenderermetadatareadercontrol.h"
#include "mmrendererplayervideorenderercontrol.h"
@@ -120,6 +121,40 @@ void MmRendererMediaPlayerControl::handleMmStopped()
}
}
+void MmRendererMediaPlayerControl::handleMmSuspend(const QString &reason)
+{
+ if (m_state == QMediaPlayer::StoppedState)
+ return;
+
+ Q_UNUSED(reason);
+ setMediaStatus(QMediaPlayer::StalledMedia);
+}
+
+void MmRendererMediaPlayerControl::handleMmSuspendRemoval(const QString &bufferStatus)
+{
+ if (m_state == QMediaPlayer::StoppedState)
+ return;
+
+ if (bufferStatus == QLatin1String("buffering"))
+ setMediaStatus(QMediaPlayer::BufferingMedia);
+ else
+ setMediaStatus(QMediaPlayer::BufferedMedia);
+}
+
+void MmRendererMediaPlayerControl::handleMmPause()
+{
+ if (m_state == QMediaPlayer::PlayingState) {
+ setState(QMediaPlayer::PausedState);
+ }
+}
+
+void MmRendererMediaPlayerControl::handleMmPlay()
+{
+ if (m_state == QMediaPlayer::PausedState) {
+ setState(QMediaPlayer::PlayingState);
+ }
+}
+
void MmRendererMediaPlayerControl::closeConnection()
{
stopMonitoring();
@@ -166,6 +201,8 @@ void MmRendererMediaPlayerControl::attach()
return;
}
+ resetMonitoring();
+
if (m_videoRendererControl)
m_videoRendererControl->attachDisplay(m_context);
@@ -180,7 +217,10 @@ void MmRendererMediaPlayerControl::attach()
}
if (m_audioId != -1 && m_audioRoleControl) {
- QString audioType = qnxAudioType(m_audioRoleControl->audioRole());
+ QAudio::Role audioRole = m_audioRoleControl->audioRole();
+ QString audioType = (audioRole == QAudio::CustomRole && m_customAudioRoleControl)
+ ? m_customAudioRoleControl->customAudioRole()
+ : qnxAudioType(audioRole);
QByteArray latin1AudioType = audioType.toLatin1();
if (!audioType.isEmpty() && latin1AudioType == audioType) {
strm_dict_t *dict = strm_dict_new();
@@ -334,6 +374,7 @@ void MmRendererMediaPlayerControl::setState(QMediaPlayer::State state)
void MmRendererMediaPlayerControl::stopInternal(StopCommand stopCommand)
{
+ resetMonitoring();
setPosition(0);
if (m_state != QMediaPlayer::StoppedState) {
@@ -496,6 +537,7 @@ void MmRendererMediaPlayerControl::play()
if (m_mediaStatus == QMediaPlayer::EndOfMedia)
m_position = 0;
+ resetMonitoring();
setPositionInternal(m_position);
setVolumeInternal(m_muted ? 0 : m_volume);
setPlaybackRateInternal(m_rate);
@@ -547,6 +589,11 @@ void MmRendererMediaPlayerControl::setAudioRoleControl(MmRendererAudioRoleContro
m_audioRoleControl = audioRoleControl;
}
+void MmRendererMediaPlayerControl::setCustomAudioRoleControl(MmRendererCustomAudioRoleControl *customAudioRoleControl)
+{
+ m_customAudioRoleControl = customAudioRoleControl;
+}
+
void MmRendererMediaPlayerControl::setMmPosition(qint64 newPosition)
{
if (newPosition != 0 && newPosition != m_position) {
@@ -564,18 +611,11 @@ void MmRendererMediaPlayerControl::setMmBufferStatus(const QString &bufferStatus
// ignore "idle" buffer status
}
-void MmRendererMediaPlayerControl::setMmBufferLevel(const QString &bufferLevel)
+void MmRendererMediaPlayerControl::setMmBufferLevel(int level, int capacity)
{
- // buffer level has format level/capacity, e.g. "91319/124402"
- const int slashPos = bufferLevel.indexOf('/');
- if (slashPos != -1) {
- const int fill = bufferLevel.leftRef(slashPos).toInt();
- const int capacity = bufferLevel.midRef(slashPos + 1).toInt();
- if (capacity != 0) {
- m_bufferLevel = fill / static_cast<float>(capacity) * 100.0f;
- emit bufferStatusChanged(m_bufferLevel);
- }
- }
+ m_bufferLevel = capacity == 0 ? 0 : level / static_cast<float>(capacity) * 100.0f;
+ m_bufferLevel = qBound(0, m_bufferLevel, 100);
+ emit bufferStatusChanged(m_bufferLevel);
}
void MmRendererMediaPlayerControl::updateMetaData(const strm_dict *dict)
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h
index ffa80bd27..3426ef2f2 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h
@@ -53,6 +53,7 @@ typedef struct strm_dict strm_dict_t;
QT_BEGIN_NAMESPACE
class MmRendererAudioRoleControl;
+class MmRendererCustomAudioRoleControl;
class MmRendererMetaDataReaderControl;
class MmRendererPlayerVideoRendererControl;
class MmRendererVideoWindowControl;
@@ -63,40 +64,40 @@ class MmRendererMediaPlayerControl : public QMediaPlayerControl, public QAbstrac
public:
explicit MmRendererMediaPlayerControl(QObject *parent = 0);
- QMediaPlayer::State state() const Q_DECL_OVERRIDE;
+ QMediaPlayer::State state() const override;
- QMediaPlayer::MediaStatus mediaStatus() const Q_DECL_OVERRIDE;
+ QMediaPlayer::MediaStatus mediaStatus() const override;
- qint64 duration() const Q_DECL_OVERRIDE;
+ qint64 duration() const override;
- qint64 position() const Q_DECL_OVERRIDE;
- void setPosition(qint64 position) Q_DECL_OVERRIDE;
+ qint64 position() const override;
+ void setPosition(qint64 position) override;
- int volume() const Q_DECL_OVERRIDE;
- void setVolume(int volume) Q_DECL_OVERRIDE;
+ int volume() const override;
+ void setVolume(int volume) override;
- bool isMuted() const Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
+ bool isMuted() const override;
+ void setMuted(bool muted) override;
- int bufferStatus() const Q_DECL_OVERRIDE;
+ int bufferStatus() const override;
- bool isAudioAvailable() const Q_DECL_OVERRIDE;
- bool isVideoAvailable() const Q_DECL_OVERRIDE;
+ bool isAudioAvailable() const override;
+ bool isVideoAvailable() const override;
- bool isSeekable() const Q_DECL_OVERRIDE;
+ bool isSeekable() const override;
- QMediaTimeRange availablePlaybackRanges() const Q_DECL_OVERRIDE;
+ QMediaTimeRange availablePlaybackRanges() const override;
- qreal playbackRate() const Q_DECL_OVERRIDE;
- void setPlaybackRate(qreal rate) Q_DECL_OVERRIDE;
+ qreal playbackRate() const override;
+ void setPlaybackRate(qreal rate) override;
- QMediaContent media() const Q_DECL_OVERRIDE;
- const QIODevice *mediaStream() const Q_DECL_OVERRIDE;
- void setMedia(const QMediaContent &media, QIODevice *stream) Q_DECL_OVERRIDE;
+ QMediaContent media() const override;
+ const QIODevice *mediaStream() const override;
+ void setMedia(const QMediaContent &media, QIODevice *stream) override;
- void play() Q_DECL_OVERRIDE;
- void pause() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
+ void play() override;
+ void pause() override;
+ void stop() override;
MmRendererPlayerVideoRendererControl *videoRendererControl() const;
void setVideoRendererControl(MmRendererPlayerVideoRendererControl *videoControl);
@@ -105,18 +106,24 @@ public:
void setVideoWindowControl(MmRendererVideoWindowControl *videoControl);
void setMetaDataReaderControl(MmRendererMetaDataReaderControl *metaDataReaderControl);
void setAudioRoleControl(MmRendererAudioRoleControl *audioRoleControl);
+ void setCustomAudioRoleControl(MmRendererCustomAudioRoleControl *customAudioRoleControl);
protected:
virtual void startMonitoring() = 0;
virtual void stopMonitoring() = 0;
+ virtual void resetMonitoring() = 0;
void openConnection();
void emitMmError(const QString &msg);
void emitPError(const QString &msg);
void setMmPosition(qint64 newPosition);
void setMmBufferStatus(const QString &bufferStatus);
- void setMmBufferLevel(const QString &bufferLevel);
+ void setMmBufferLevel(int level, int capacity);
void handleMmStopped();
+ void handleMmSuspend(const QString &reason);
+ void handleMmSuspendRemoval(const QString &bufferStatus);
+ void handleMmPause();
+ void handleMmPlay();
void updateMetaData(const strm_dict_t *dict);
// must be called from subclass dtors (calls virtual function stopMonitoring())
@@ -158,6 +165,7 @@ private:
QPointer<MmRendererVideoWindowControl> m_videoWindowControl;
QPointer<MmRendererMetaDataReaderControl> m_metaDataReaderControl;
QPointer<MmRendererAudioRoleControl> m_audioRoleControl;
+ QPointer<MmRendererCustomAudioRoleControl> m_customAudioRoleControl;
MmRendererMetaData m_metaData;
qint64 m_position;
QMediaPlayer::MediaStatus m_mediaStatus;
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp
index 257c437ce..190cb8b80 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp
+++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.cpp
@@ -39,6 +39,7 @@
#include "mmrenderermediaplayerservice.h"
#include "mmrendereraudiorolecontrol.h"
+#include "mmrenderercustomaudiorolecontrol.h"
#include "mmrenderermediaplayercontrol.h"
#include "mmrenderermetadatareadercontrol.h"
#include "mmrendererplayervideorenderercontrol.h"
@@ -68,6 +69,7 @@ MmRendererMediaPlayerService::~MmRendererMediaPlayerService()
delete m_mediaPlayerControl;
delete m_metaDataReaderControl;
delete m_audioRoleControl;
+ delete m_customAudioRoleControl;
}
QMediaControl *MmRendererMediaPlayerService::requestControl(const char *name)
@@ -90,6 +92,12 @@ QMediaControl *MmRendererMediaPlayerService::requestControl(const char *name)
updateControls();
}
return m_audioRoleControl;
+ } else if (qstrcmp(name, QCustomAudioRoleControl_iid) == 0) {
+ if (!m_customAudioRoleControl) {
+ m_customAudioRoleControl = new MmRendererCustomAudioRoleControl();
+ updateControls();
+ }
+ return m_customAudioRoleControl;
} else if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
if (!m_appHasDrmPermissionChecked) {
m_appHasDrmPermission = checkForDrmPermission();
@@ -130,6 +138,8 @@ void MmRendererMediaPlayerService::releaseControl(QMediaControl *control)
m_metaDataReaderControl = 0;
if (control == m_audioRoleControl)
m_audioRoleControl = 0;
+ if (control == m_customAudioRoleControl)
+ m_customAudioRoleControl = 0;
delete control;
}
@@ -146,6 +156,9 @@ void MmRendererMediaPlayerService::updateControls()
if (m_audioRoleControl && m_mediaPlayerControl)
m_mediaPlayerControl->setAudioRoleControl(m_audioRoleControl);
+
+ if (m_customAudioRoleControl && m_mediaPlayerControl)
+ m_mediaPlayerControl->setCustomAudioRoleControl(m_customAudioRoleControl);
}
QT_END_NAMESPACE
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h
index 9434b85b2..ab3054af5 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h
+++ b/src/plugins/qnx/mediaplayer/mmrenderermediaplayerservice.h
@@ -45,6 +45,7 @@
QT_BEGIN_NAMESPACE
class MmRendererAudioRoleControl;
+class MmRendererCustomAudioRoleControl;
class MmRendererMediaPlayerControl;
class MmRendererMetaDataReaderControl;
class MmRendererPlayerVideoRendererControl;
@@ -57,8 +58,8 @@ public:
explicit MmRendererMediaPlayerService(QObject *parent = 0);
~MmRendererMediaPlayerService();
- QMediaControl *requestControl(const char *name) Q_DECL_OVERRIDE;
- void releaseControl(QMediaControl *control) Q_DECL_OVERRIDE;
+ QMediaControl *requestControl(const char *name) override;
+ void releaseControl(QMediaControl *control) override;
private:
void updateControls();
@@ -68,6 +69,7 @@ private:
QPointer<MmRendererMediaPlayerControl> m_mediaPlayerControl;
QPointer<MmRendererMetaDataReaderControl> m_metaDataReaderControl;
QPointer<MmRendererAudioRoleControl> m_audioRoleControl;
+ QPointer<MmRendererCustomAudioRoleControl> m_customAudioRoleControl;
bool m_appHasDrmPermission : 1;
bool m_appHasDrmPermissionChecked : 1;
diff --git a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h
index 9c000224e..878420460 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmrenderermetadatareadercontrol.h
@@ -50,10 +50,10 @@ class MmRendererMetaDataReaderControl : public QMetaDataReaderControl
public:
explicit MmRendererMetaDataReaderControl(QObject *parent = 0);
- bool isMetaDataAvailable() const Q_DECL_OVERRIDE;
+ bool isMetaDataAvailable() const override;
- QVariant metaData(const QString &key) const Q_DECL_OVERRIDE;
- QStringList availableMetaData() const Q_DECL_OVERRIDE;
+ QVariant metaData(const QString &key) const override;
+ QStringList availableMetaData() const override;
void setMetaData(const MmRendererMetaData &data);
diff --git a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h
index 878aa4bb0..c547ef534 100644
--- a/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmrendererplayervideorenderercontrol.h
@@ -56,8 +56,8 @@ public:
explicit MmRendererPlayerVideoRendererControl(QObject *parent = 0);
~MmRendererPlayerVideoRendererControl();
- QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
- void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
+ QAbstractVideoSurface *surface() const override;
+ void setSurface(QAbstractVideoSurface *surface) override;
// Called by media control
void attachDisplay(mmr_context_t *context);
@@ -65,7 +65,7 @@ public:
void pause();
void resume();
- void customEvent(QEvent *) Q_DECL_OVERRIDE;
+ void customEvent(QEvent *) override;
private Q_SLOTS:
void updateScene(const QSize &size);
diff --git a/src/plugins/qnx/mediaplayer/mmrendererutil.cpp b/src/plugins/qnx/mediaplayer/mmrendererutil.cpp
index 7a9f6393b..d8af4a746 100644
--- a/src/plugins/qnx/mediaplayer/mmrendererutil.cpp
+++ b/src/plugins/qnx/mediaplayer/mmrendererutil.cpp
@@ -92,7 +92,7 @@ static const unsigned int numMmErrors = sizeof(mmErrors) / sizeof(MmError);
static QBasicMutex roleMapMutex;
static bool roleMapInitialized = false;
-static QString roleMap[QAudio::GameRole + 1];
+static QString roleMap[QAudio::CustomRole + 1];
template <typename T, size_t N>
constexpr size_t countof(T (&)[N])
@@ -166,9 +166,15 @@ static void loadRoleMap()
loadRoleMapping(AccessibilityRole);
loadRoleMapping(SonificationRole);
loadRoleMapping(GameRole);
+ loadRoleMapping(CustomRole);
}
#undef loadRoleMapping
#pragma GCC diagnostic pop
+
+ if (!roleMap[QAudio::CustomRole].isEmpty()) {
+ qWarning("CustomRole mapping ignored");
+ roleMap[QAudio::CustomRole].clear();
+ }
}
roleMapInitialized = true;
diff --git a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h
index 5bfd192bb..8327e259d 100644
--- a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.h
@@ -54,33 +54,33 @@ public:
explicit MmRendererVideoWindowControl(QObject *parent = 0);
~MmRendererVideoWindowControl();
- WId winId() const Q_DECL_OVERRIDE;
- void setWinId(WId id) Q_DECL_OVERRIDE;
+ WId winId() const override;
+ void setWinId(WId id) override;
- QRect displayRect() const Q_DECL_OVERRIDE;
- void setDisplayRect(const QRect &rect) Q_DECL_OVERRIDE;
+ QRect displayRect() const override;
+ void setDisplayRect(const QRect &rect) override;
- bool isFullScreen() const Q_DECL_OVERRIDE;
- void setFullScreen(bool fullScreen) Q_DECL_OVERRIDE;
+ bool isFullScreen() const override;
+ void setFullScreen(bool fullScreen) override;
- void repaint() Q_DECL_OVERRIDE;
+ void repaint() override;
- QSize nativeSize() const Q_DECL_OVERRIDE;
+ QSize nativeSize() const override;
- Qt::AspectRatioMode aspectRatioMode() const Q_DECL_OVERRIDE;
- void setAspectRatioMode(Qt::AspectRatioMode mode) Q_DECL_OVERRIDE;
+ Qt::AspectRatioMode aspectRatioMode() const override;
+ void setAspectRatioMode(Qt::AspectRatioMode mode) override;
- int brightness() const Q_DECL_OVERRIDE;
- void setBrightness(int brightness) Q_DECL_OVERRIDE;
+ int brightness() const override;
+ void setBrightness(int brightness) override;
- int contrast() const Q_DECL_OVERRIDE;
- void setContrast(int contrast) Q_DECL_OVERRIDE;
+ int contrast() const override;
+ void setContrast(int contrast) override;
- int hue() const Q_DECL_OVERRIDE;
- void setHue(int hue) Q_DECL_OVERRIDE;
+ int hue() const override;
+ void setHue(int hue) override;
- int saturation() const Q_DECL_OVERRIDE;
- void setSaturation(int saturation) Q_DECL_OVERRIDE;
+ int saturation() const override;
+ void setSaturation(int saturation) override;
//
// Called by media control
diff --git a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp
index a0bac1261..c050c03c5 100644
--- a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp
+++ b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.cpp
@@ -42,13 +42,39 @@
#include "mmrenderervideowindowcontrol.h"
#include <mm/renderer.h>
+#include <tuple>
QT_BEGIN_NAMESPACE
+static std::tuple<int, int, bool> parseBufferLevel(const QByteArray &value)
+{
+ const int slashPos = value.indexOf('/');
+ if (slashPos <= 0)
+ return std::make_tuple(0, 0, false);
+
+ bool ok = false;
+ const int level = value.left(slashPos).toInt(&ok);
+ if (!ok || level < 0)
+ return std::make_tuple(0, 0, false);
+
+ const int capacity = value.mid(slashPos + 1).toInt(&ok);
+ if (!ok || capacity < 0)
+ return std::make_tuple(0, 0, false);
+
+ return std::make_tuple(level, capacity, true);
+}
+
MmrEventMediaPlayerControl::MmrEventMediaPlayerControl(QObject *parent)
: MmRendererMediaPlayerControl(parent)
, m_eventThread(nullptr)
+ , m_bufferStatus("")
+ , m_bufferLevel(0)
+ , m_bufferCapacity(0)
+ , m_position(0)
+ , m_suspended(false)
+ , m_suspendedReason("unknown")
, m_state(MMR_STATE_IDLE)
+ , m_speed(0)
{
openConnection();
}
@@ -75,6 +101,18 @@ void MmrEventMediaPlayerControl::stopMonitoring()
m_eventThread = nullptr;
}
+void MmrEventMediaPlayerControl::resetMonitoring()
+{
+ m_bufferStatus = "";
+ m_bufferLevel = 0;
+ m_bufferCapacity = 0;
+ m_position = 0;
+ m_suspended = false;
+ m_suspendedReason = "unknown";
+ m_state = MMR_STATE_IDLE;
+ m_speed = 0;
+}
+
bool MmrEventMediaPlayerControl::nativeEventFilter(const QByteArray &eventType,
void *message,
long *result)
@@ -102,32 +140,68 @@ void MmrEventMediaPlayerControl::readEvents()
if (event->data) {
const strm_string_t *value;
value = strm_dict_find_rstr(event->data, "bufferstatus");
- if (value)
- setMmBufferStatus(QString::fromLatin1(strm_string_get(value)));
+ if (value) {
+ m_bufferStatus = QByteArray(strm_string_get(value));
+ if (!m_suspended)
+ setMmBufferStatus(m_bufferStatus);
+ }
value = strm_dict_find_rstr(event->data, "bufferlevel");
- if (value)
- setMmBufferLevel(QString::fromLatin1(strm_string_get(value)));
+ if (value) {
+ const char *cstrValue = strm_string_get(value);
+ int level;
+ int capacity;
+ bool ok;
+ std::tie(level, capacity, ok) = parseBufferLevel(QByteArray(cstrValue));
+ if (!ok) {
+ qCritical("Could not parse buffer capacity from '%s'", cstrValue);
+ } else {
+ m_bufferLevel = level;
+ m_bufferCapacity = capacity;
+ setMmBufferLevel(level, capacity);
+ }
+ }
+
+ value = strm_dict_find_rstr(event->data, "suspended");
+ if (value) {
+ if (!m_suspended) {
+ m_suspended = true;
+ m_suspendedReason = strm_string_get(value);
+ handleMmSuspend(m_suspendedReason);
+ }
+ } else if (m_suspended) {
+ m_suspended = false;
+ handleMmSuspendRemoval(m_bufferStatus);
+ }
}
if (event->pos_str) {
const QByteArray valueBa = QByteArray(event->pos_str);
bool ok;
- const qint64 position = valueBa.toLongLong(&ok);
+ m_position = valueBa.toLongLong(&ok);
if (!ok) {
qCritical("Could not parse position from '%s'", valueBa.constData());
} else {
- setMmPosition(position);
+ setMmPosition(m_position);
}
}
break;
}
+ case MMR_EVENT_STATE: {
+ if (event->state == MMR_STATE_PLAYING && m_speed != event->speed) {
+ m_speed = event->speed;
+ if (m_speed == 0)
+ handleMmPause();
+ else
+ handleMmPlay();
+ }
+ break;
+ }
case MMR_EVENT_METADATA: {
updateMetaData(event->data);
break;
}
case MMR_EVENT_ERROR:
- case MMR_EVENT_STATE:
case MMR_EVENT_NONE:
case MMR_EVENT_OVERFLOW:
case MMR_EVENT_WARNING:
diff --git a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h
index e0aa952a7..0e4defc5c 100644
--- a/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h
+++ b/src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
class MmrEventThread;
-class MmrEventMediaPlayerControl Q_DECL_FINAL : public MmRendererMediaPlayerControl
+class MmrEventMediaPlayerControl final : public MmRendererMediaPlayerControl
{
Q_OBJECT
public:
@@ -56,6 +56,7 @@ public:
void startMonitoring() override;
void stopMonitoring() override;
+ void resetMonitoring() override;
bool nativeEventFilter(const QByteArray &eventType,
void *message,
@@ -66,7 +67,18 @@ private Q_SLOTS:
private:
MmrEventThread *m_eventThread;
+
+ // status properties.
+ QByteArray m_bufferStatus;
+ int m_bufferLevel;
+ int m_bufferCapacity;
+ qint64 m_position;
+ bool m_suspended;
+ QByteArray m_suspendedReason;
+
+ // state properties.
mmr_state_t m_state;
+ int m_speed;
};
QT_END_NAMESPACE
diff --git a/src/plugins/qnx/neutrinoserviceplugin.h b/src/plugins/qnx/neutrinoserviceplugin.h
index 6e4b6861e..62ed7f0bd 100644
--- a/src/plugins/qnx/neutrinoserviceplugin.h
+++ b/src/plugins/qnx/neutrinoserviceplugin.h
@@ -53,9 +53,9 @@ class NeutrinoServicePlugin
public:
NeutrinoServicePlugin();
- QMediaService *create(const QString &key) Q_DECL_OVERRIDE;
- void release(QMediaService *service) Q_DECL_OVERRIDE;
- QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const Q_DECL_OVERRIDE;
+ QMediaService *create(const QString &key) override;
+ void release(QMediaService *service) override;
+ QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/wasapi/qwasapiaudiodeviceinfo.h b/src/plugins/wasapi/qwasapiaudiodeviceinfo.h
index 97966c171..878d0273a 100644
--- a/src/plugins/wasapi/qwasapiaudiodeviceinfo.h
+++ b/src/plugins/wasapi/qwasapiaudiodeviceinfo.h
@@ -61,15 +61,15 @@ public:
explicit QWasapiAudioDeviceInfo(QByteArray dev,QAudio::Mode mode);
~QWasapiAudioDeviceInfo();
- QAudioFormat preferredFormat() const Q_DECL_OVERRIDE;
- bool isFormatSupported(const QAudioFormat& format) const Q_DECL_OVERRIDE;
- QString deviceName() const Q_DECL_OVERRIDE;
- QStringList supportedCodecs() Q_DECL_OVERRIDE;
- QList<int> supportedSampleRates() Q_DECL_OVERRIDE;
- QList<int> supportedChannelCounts() Q_DECL_OVERRIDE;
- QList<int> supportedSampleSizes() Q_DECL_OVERRIDE;
- QList<QAudioFormat::Endian> supportedByteOrders() Q_DECL_OVERRIDE;
- QList<QAudioFormat::SampleType> supportedSampleTypes() Q_DECL_OVERRIDE;
+ QAudioFormat preferredFormat() const override;
+ bool isFormatSupported(const QAudioFormat& format) const override;
+ QString deviceName() const override;
+ QStringList supportedCodecs() override;
+ QList<int> supportedSampleRates() override;
+ QList<int> supportedChannelCounts() override;
+ QList<int> supportedSampleSizes() override;
+ QList<QAudioFormat::Endian> supportedByteOrders() override;
+ QList<QAudioFormat::SampleType> supportedSampleTypes() override;
private:
Microsoft::WRL::ComPtr<AudioInterface> m_interface;
diff --git a/src/plugins/wasapi/qwasapiaudioinput.h b/src/plugins/wasapi/qwasapiaudioinput.h
index 34ede06b7..babfb5b10 100644
--- a/src/plugins/wasapi/qwasapiaudioinput.h
+++ b/src/plugins/wasapi/qwasapiaudioinput.h
@@ -66,26 +66,26 @@ public:
explicit QWasapiAudioInput(const QByteArray &device);
~QWasapiAudioInput();
- void start(QIODevice* device) Q_DECL_OVERRIDE;
- QIODevice* start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesReady() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int value) Q_DECL_OVERRIDE;
- int bufferSize() const Q_DECL_OVERRIDE;
- void setNotifyInterval(int milliSeconds) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat& fmt) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
- void setVolume(qreal) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
+ void start(QIODevice* device) override;
+ QIODevice* start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesReady() const override;
+ int periodSize() const override;
+ void setBufferSize(int value) override;
+ int bufferSize() const override;
+ void setNotifyInterval(int milliSeconds) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat& fmt) override;
+ QAudioFormat format() const override;
+ void setVolume(qreal) override;
+ qreal volume() const override;
void process();
public slots:
diff --git a/src/plugins/wasapi/qwasapiaudiooutput.h b/src/plugins/wasapi/qwasapiaudiooutput.h
index 02974071b..49219c5cc 100644
--- a/src/plugins/wasapi/qwasapiaudiooutput.h
+++ b/src/plugins/wasapi/qwasapiaudiooutput.h
@@ -67,26 +67,26 @@ public:
explicit QWasapiAudioOutput(const QByteArray &device);
~QWasapiAudioOutput();
- void start(QIODevice* device) Q_DECL_OVERRIDE;
- QIODevice* start() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
- void reset() Q_DECL_OVERRIDE;
- void suspend() Q_DECL_OVERRIDE;
- void resume() Q_DECL_OVERRIDE;
- int bytesFree() const Q_DECL_OVERRIDE;
- int periodSize() const Q_DECL_OVERRIDE;
- void setBufferSize(int value) Q_DECL_OVERRIDE;
- int bufferSize() const Q_DECL_OVERRIDE;
- void setNotifyInterval(int milliSeconds) Q_DECL_OVERRIDE;
- int notifyInterval() const Q_DECL_OVERRIDE;
- qint64 processedUSecs() const Q_DECL_OVERRIDE;
- qint64 elapsedUSecs() const Q_DECL_OVERRIDE;
- QAudio::Error error() const Q_DECL_OVERRIDE;
- QAudio::State state() const Q_DECL_OVERRIDE;
- void setFormat(const QAudioFormat& fmt) Q_DECL_OVERRIDE;
- QAudioFormat format() const Q_DECL_OVERRIDE;
- void setVolume(qreal) Q_DECL_OVERRIDE;
- qreal volume() const Q_DECL_OVERRIDE;
+ void start(QIODevice* device) override;
+ QIODevice* start() override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ int bytesFree() const override;
+ int periodSize() const override;
+ void setBufferSize(int value) override;
+ int bufferSize() const override;
+ void setNotifyInterval(int milliSeconds) override;
+ int notifyInterval() const override;
+ qint64 processedUSecs() const override;
+ qint64 elapsedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setFormat(const QAudioFormat& fmt) override;
+ QAudioFormat format() const override;
+ void setVolume(qreal) override;
+ qreal volume() const override;
void process();
public slots:
diff --git a/src/plugins/wasapi/qwasapiplugin.h b/src/plugins/wasapi/qwasapiplugin.h
index e69e7895f..7b20676f6 100644
--- a/src/plugins/wasapi/qwasapiplugin.h
+++ b/src/plugins/wasapi/qwasapiplugin.h
@@ -60,11 +60,11 @@ public:
explicit QWasapiPlugin(QObject *parent = 0);
~QWasapiPlugin() {}
- QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(QAudio::Mode mode) const override;
+ QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
+ QAbstractAudioInput *createInput(const QByteArray &device) override;
+ QAbstractAudioOutput *createOutput(const QByteArray &device) override;
+ QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
private:
QList<QByteArray> m_deviceNames;
diff --git a/src/plugins/windowsaudio/qwindowsaudioplugin.h b/src/plugins/windowsaudio/qwindowsaudioplugin.h
index 7b500a39c..a155ae082 100644
--- a/src/plugins/windowsaudio/qwindowsaudioplugin.h
+++ b/src/plugins/windowsaudio/qwindowsaudioplugin.h
@@ -56,11 +56,11 @@ public:
QWindowsAudioPlugin(QObject *parent = 0);
~QWindowsAudioPlugin() {}
- QByteArray defaultDevice(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QList<QByteArray> availableDevices(QAudio::Mode mode) const Q_DECL_OVERRIDE;
- QAbstractAudioInput *createInput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioOutput *createOutput(const QByteArray &device) Q_DECL_OVERRIDE;
- QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(QAudio::Mode mode) const override;
+ QList<QByteArray> availableDevices(QAudio::Mode mode) const override;
+ QAbstractAudioInput *createInput(const QByteArray &device) override;
+ QAbstractAudioOutput *createOutput(const QByteArray &device) override;
+ QAbstractAudioDeviceInfo *createDeviceInfo(const QByteArray &device, QAudio::Mode mode) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
index 79545f6ee..3544031a7 100644
--- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
+++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp
@@ -150,12 +150,12 @@ public:
create();
}
- MapMode mapMode() const Q_DECL_OVERRIDE
+ MapMode mapMode() const override
{
return NotMapped;
}
- uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) Q_DECL_OVERRIDE
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) override
{
Q_UNUSED(mode);
Q_UNUSED(numBytes);
@@ -163,11 +163,11 @@ public:
return 0;
}
- void unmap() Q_DECL_OVERRIDE
+ void unmap() override
{
}
- QVariant handle() const Q_DECL_OVERRIDE
+ QVariant handle() const override
{
return QVariant::fromValue(textureId());
}
diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
index 53dcb6b94..e190c8c4a 100644
--- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
+++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.h
@@ -63,8 +63,8 @@ public:
MediaFoundation
};
- QAbstractVideoSurface *surface() const Q_DECL_OVERRIDE;
- void setSurface(QAbstractVideoSurface *surface) Q_DECL_OVERRIDE;
+ QAbstractVideoSurface *surface() const override;
+ void setSurface(QAbstractVideoSurface *surface) override;
QSize size() const;
void setSize(const QSize &size);
diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp
index 527dd6e8f..4c515bc3d 100644
--- a/src/plugins/winrt/qwinrtcameracontrol.cpp
+++ b/src/plugins/winrt/qwinrtcameracontrol.cpp
@@ -245,12 +245,12 @@ public:
{
if (m_pendingSamples.load() < 3) {
m_pendingSamples.ref();
- return QueueEvent(MEStreamSinkRequestSample, GUID_NULL, S_OK, Q_NULLPTR);
+ return QueueEvent(MEStreamSinkRequestSample, GUID_NULL, S_OK, nullptr);
}
return S_OK;
}
- HRESULT __stdcall GetEvent(DWORD flags, IMFMediaEvent **event) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetEvent(DWORD flags, IMFMediaEvent **event) override
{
QMutexLocker locker(&m_mutex);
// Create an extra reference to avoid deadlock
@@ -260,43 +260,43 @@ public:
return eventQueue->GetEvent(flags, event);
}
- HRESULT __stdcall BeginGetEvent(IMFAsyncCallback *callback, IUnknown *state) Q_DECL_OVERRIDE
+ HRESULT __stdcall BeginGetEvent(IMFAsyncCallback *callback, IUnknown *state) override
{
QMutexLocker locker(&m_mutex);
HRESULT hr = m_eventQueue->BeginGetEvent(callback, state);
return hr;
}
- HRESULT __stdcall EndGetEvent(IMFAsyncResult *result, IMFMediaEvent **event) Q_DECL_OVERRIDE
+ HRESULT __stdcall EndGetEvent(IMFAsyncResult *result, IMFMediaEvent **event) override
{
QMutexLocker locker(&m_mutex);
return m_eventQueue->EndGetEvent(result, event);
}
- HRESULT __stdcall QueueEvent(MediaEventType eventType, const GUID &extendedType, HRESULT status, const PROPVARIANT *value) Q_DECL_OVERRIDE
+ HRESULT __stdcall QueueEvent(MediaEventType eventType, const GUID &extendedType, HRESULT status, const PROPVARIANT *value) override
{
QMutexLocker locker(&m_mutex);
return m_eventQueue->QueueEventParamVar(eventType, extendedType, status, value);
}
- HRESULT __stdcall GetMediaSink(IMFMediaSink **mediaSink) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetMediaSink(IMFMediaSink **mediaSink) override
{
*mediaSink = m_sink;
return S_OK;
}
- HRESULT __stdcall GetIdentifier(DWORD *identifier) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetIdentifier(DWORD *identifier) override
{
*identifier = 0;
return S_OK;
}
- HRESULT __stdcall GetMediaTypeHandler(IMFMediaTypeHandler **handler) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetMediaTypeHandler(IMFMediaTypeHandler **handler) override
{
return QueryInterface(IID_PPV_ARGS(handler));
}
- HRESULT __stdcall ProcessSample(IMFSample *sample) Q_DECL_OVERRIDE
+ HRESULT __stdcall ProcessSample(IMFSample *sample) override
{
ComPtr<IMFMediaBuffer> buffer;
HRESULT hr = sample->GetBufferByIndex(0, &buffer);
@@ -311,7 +311,7 @@ public:
return hr;
}
- HRESULT __stdcall PlaceMarker(MFSTREAMSINK_MARKER_TYPE type, const PROPVARIANT *value, const PROPVARIANT *context) Q_DECL_OVERRIDE
+ HRESULT __stdcall PlaceMarker(MFSTREAMSINK_MARKER_TYPE type, const PROPVARIANT *value, const PROPVARIANT *context) override
{
Q_UNUSED(type);
Q_UNUSED(value);
@@ -319,14 +319,14 @@ public:
return S_OK;
}
- HRESULT __stdcall Flush() Q_DECL_OVERRIDE
+ HRESULT __stdcall Flush() override
{
m_videoRenderer->discardBuffers();
m_pendingSamples.store(0);
return S_OK;
}
- HRESULT __stdcall IsMediaTypeSupported(IMFMediaType *type, IMFMediaType **) Q_DECL_OVERRIDE
+ HRESULT __stdcall IsMediaTypeSupported(IMFMediaType *type, IMFMediaType **) override
{
HRESULT hr;
GUID majorType;
@@ -337,34 +337,34 @@ public:
return S_OK;
}
- HRESULT __stdcall GetMediaTypeCount(DWORD *typeCount) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetMediaTypeCount(DWORD *typeCount) override
{
*typeCount = 1;
return S_OK;
}
- HRESULT __stdcall GetMediaTypeByIndex(DWORD index, IMFMediaType **type) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetMediaTypeByIndex(DWORD index, IMFMediaType **type) override
{
if (index == 0)
return m_type.CopyTo(type);
return E_BOUNDS;
}
- HRESULT __stdcall SetCurrentMediaType(IMFMediaType *type) Q_DECL_OVERRIDE
+ HRESULT __stdcall SetCurrentMediaType(IMFMediaType *type) override
{
- if (FAILED(IsMediaTypeSupported(type, Q_NULLPTR)))
+ if (FAILED(IsMediaTypeSupported(type, nullptr)))
return MF_E_INVALIDREQUEST;
m_type = type;
return S_OK;
}
- HRESULT __stdcall GetCurrentMediaType(IMFMediaType **type) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetCurrentMediaType(IMFMediaType **type) override
{
return m_type.CopyTo(type);
}
- HRESULT __stdcall GetMajorType(GUID *majorType) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetMajorType(GUID *majorType) override
{
return m_type->GetMajorType(majorType);
}
@@ -405,19 +405,19 @@ public:
return m_stream->RequestSample();
}
- HRESULT __stdcall SetProperties(Collections::IPropertySet *configuration) Q_DECL_OVERRIDE
+ HRESULT __stdcall SetProperties(Collections::IPropertySet *configuration) override
{
Q_UNUSED(configuration);
return E_NOTIMPL;
}
- HRESULT __stdcall GetCharacteristics(DWORD *characteristics) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetCharacteristics(DWORD *characteristics) override
{
*characteristics = MEDIASINK_FIXED_STREAMS | MEDIASINK_RATELESS;
return S_OK;
}
- HRESULT __stdcall AddStreamSink(DWORD streamSinkIdentifier, IMFMediaType *mediaType, IMFStreamSink **streamSink) Q_DECL_OVERRIDE
+ HRESULT __stdcall AddStreamSink(DWORD streamSinkIdentifier, IMFMediaType *mediaType, IMFStreamSink **streamSink) override
{
Q_UNUSED(streamSinkIdentifier);
Q_UNUSED(mediaType);
@@ -425,33 +425,33 @@ public:
return E_NOTIMPL;
}
- HRESULT __stdcall RemoveStreamSink(DWORD streamSinkIdentifier) Q_DECL_OVERRIDE
+ HRESULT __stdcall RemoveStreamSink(DWORD streamSinkIdentifier) override
{
Q_UNUSED(streamSinkIdentifier);
return E_NOTIMPL;
}
- HRESULT __stdcall GetStreamSinkCount(DWORD *streamSinkCount) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetStreamSinkCount(DWORD *streamSinkCount) override
{
*streamSinkCount = 1;
return S_OK;
}
- HRESULT __stdcall GetStreamSinkByIndex(DWORD index, IMFStreamSink **streamSink) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetStreamSinkByIndex(DWORD index, IMFStreamSink **streamSink) override
{
if (index == 0)
return m_stream.CopyTo(streamSink);
return MF_E_INVALIDINDEX;
}
- HRESULT __stdcall GetStreamSinkById(DWORD streamSinkIdentifier, IMFStreamSink **streamSink) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetStreamSinkById(DWORD streamSinkIdentifier, IMFStreamSink **streamSink) override
{
// ID and index are always 0
HRESULT hr = GetStreamSinkByIndex(streamSinkIdentifier, streamSink);
return hr == MF_E_INVALIDINDEX ? MF_E_INVALIDSTREAMNUMBER : hr;
}
- HRESULT __stdcall SetPresentationClock(IMFPresentationClock *presentationClock) Q_DECL_OVERRIDE
+ HRESULT __stdcall SetPresentationClock(IMFPresentationClock *presentationClock) override
{
HRESULT hr = S_OK;
m_presentationClock = presentationClock;
@@ -460,19 +460,19 @@ public:
return hr;
}
- HRESULT __stdcall GetPresentationClock(IMFPresentationClock **presentationClock) Q_DECL_OVERRIDE
+ HRESULT __stdcall GetPresentationClock(IMFPresentationClock **presentationClock) override
{
return m_presentationClock.CopyTo(presentationClock);
}
- HRESULT __stdcall Shutdown() Q_DECL_OVERRIDE
+ HRESULT __stdcall Shutdown() override
{
m_stream->Flush();
scheduleSetActive(false);
return m_presentationClock ? m_presentationClock->Stop() : S_OK;
}
- HRESULT __stdcall OnClockStart(MFTIME systemTime, LONGLONG clockStartOffset) Q_DECL_OVERRIDE
+ HRESULT __stdcall OnClockStart(MFTIME systemTime, LONGLONG clockStartOffset) override
{
Q_UNUSED(systemTime);
Q_UNUSED(clockStartOffset);
@@ -482,34 +482,34 @@ public:
return S_OK;
}
- HRESULT __stdcall OnClockStop(MFTIME systemTime) Q_DECL_OVERRIDE
+ HRESULT __stdcall OnClockStop(MFTIME systemTime) override
{
Q_UNUSED(systemTime);
scheduleSetActive(false);
- return m_stream->QueueEvent(MEStreamSinkStopped, GUID_NULL, S_OK, Q_NULLPTR);
+ return m_stream->QueueEvent(MEStreamSinkStopped, GUID_NULL, S_OK, nullptr);
}
- HRESULT __stdcall OnClockPause(MFTIME systemTime) Q_DECL_OVERRIDE
+ HRESULT __stdcall OnClockPause(MFTIME systemTime) override
{
Q_UNUSED(systemTime);
scheduleSetActive(false);
- return m_stream->QueueEvent(MEStreamSinkPaused, GUID_NULL, S_OK, Q_NULLPTR);
+ return m_stream->QueueEvent(MEStreamSinkPaused, GUID_NULL, S_OK, nullptr);
}
- HRESULT __stdcall OnClockRestart(MFTIME systemTime) Q_DECL_OVERRIDE
+ HRESULT __stdcall OnClockRestart(MFTIME systemTime) override
{
Q_UNUSED(systemTime);
scheduleSetActive(true);
- return m_stream->QueueEvent(MEStreamSinkStarted, GUID_NULL, S_OK, Q_NULLPTR);
+ return m_stream->QueueEvent(MEStreamSinkStarted, GUID_NULL, S_OK, nullptr);
}
- HRESULT __stdcall OnClockSetRate(MFTIME systemTime, float rate) Q_DECL_OVERRIDE
+ HRESULT __stdcall OnClockSetRate(MFTIME systemTime, float rate) override
{
Q_UNUSED(systemTime);
Q_UNUSED(rate);
diff --git a/src/plugins/winrt/qwinrtcameracontrol.h b/src/plugins/winrt/qwinrtcameracontrol.h
index 7ef67e957..c46921a9c 100644
--- a/src/plugins/winrt/qwinrtcameracontrol.h
+++ b/src/plugins/winrt/qwinrtcameracontrol.h
@@ -81,16 +81,16 @@ public:
explicit QWinRTCameraControl(QObject *parent = 0);
~QWinRTCameraControl();
- QCamera::State state() const Q_DECL_OVERRIDE;
- void setState(QCamera::State state) Q_DECL_OVERRIDE;
+ QCamera::State state() const override;
+ void setState(QCamera::State state) override;
- QCamera::Status status() const Q_DECL_OVERRIDE;
+ QCamera::Status status() const override;
- QCamera::CaptureModes captureMode() const Q_DECL_OVERRIDE;
- void setCaptureMode(QCamera::CaptureModes mode) Q_DECL_OVERRIDE;
- bool isCaptureModeSupported(QCamera::CaptureModes mode) const Q_DECL_OVERRIDE;
+ QCamera::CaptureModes captureMode() const override;
+ void setCaptureMode(QCamera::CaptureModes mode) override;
+ bool isCaptureModeSupported(QCamera::CaptureModes mode) const override;
- bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const Q_DECL_OVERRIDE;
+ bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override;
QVideoRendererControl *videoRenderer() const;
QVideoDeviceSelectorControl *videoDeviceSelector() const;
diff --git a/src/plugins/winrt/qwinrtcameraflashcontrol.h b/src/plugins/winrt/qwinrtcameraflashcontrol.h
index 335329037..b9be69230 100644
--- a/src/plugins/winrt/qwinrtcameraflashcontrol.h
+++ b/src/plugins/winrt/qwinrtcameraflashcontrol.h
@@ -62,11 +62,11 @@ public:
void initialize(Microsoft::WRL::ComPtr<ABI::Windows::Media::Devices::IAdvancedVideoCaptureDeviceController2> &controller);
- QCameraExposure::FlashModes flashMode() const Q_DECL_OVERRIDE;
- void setFlashMode(QCameraExposure::FlashModes mode) Q_DECL_OVERRIDE;
- bool isFlashModeSupported(QCameraExposure::FlashModes mode) const Q_DECL_OVERRIDE;
+ QCameraExposure::FlashModes flashMode() const override;
+ void setFlashMode(QCameraExposure::FlashModes mode) override;
+ bool isFlashModeSupported(QCameraExposure::FlashModes mode) const override;
- bool isFlashReady() const Q_DECL_OVERRIDE;
+ bool isFlashReady() const override;
private:
QScopedPointer<QWinRTCameraFlashControlPrivate> d_ptr;
diff --git a/src/plugins/winrt/qwinrtcamerafocuscontrol.h b/src/plugins/winrt/qwinrtcamerafocuscontrol.h
index 0a8c0afcf..fcfb84edc 100644
--- a/src/plugins/winrt/qwinrtcamerafocuscontrol.h
+++ b/src/plugins/winrt/qwinrtcamerafocuscontrol.h
@@ -51,15 +51,15 @@ class QWinRTCameraFocusControl : public QCameraFocusControl
public:
explicit QWinRTCameraFocusControl(QWinRTCameraControl *parent);
- QCameraFocus::FocusModes focusMode() const Q_DECL_OVERRIDE;
- void setFocusMode(QCameraFocus::FocusModes mode) Q_DECL_OVERRIDE;
- bool isFocusModeSupported(QCameraFocus::FocusModes mode) const Q_DECL_OVERRIDE;
- QCameraFocus::FocusPointMode focusPointMode() const Q_DECL_OVERRIDE;
- void setFocusPointMode(QCameraFocus::FocusPointMode mode) Q_DECL_OVERRIDE;
- bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const Q_DECL_OVERRIDE;
- QPointF customFocusPoint() const Q_DECL_OVERRIDE;
- void setCustomFocusPoint(const QPointF &point) Q_DECL_OVERRIDE;
- QCameraFocusZoneList focusZones() const Q_DECL_OVERRIDE;
+ QCameraFocus::FocusModes focusMode() const override;
+ void setFocusMode(QCameraFocus::FocusModes mode) override;
+ bool isFocusModeSupported(QCameraFocus::FocusModes mode) const override;
+ QCameraFocus::FocusPointMode focusPointMode() const override;
+ void setFocusPointMode(QCameraFocus::FocusPointMode mode) override;
+ bool isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const override;
+ QPointF customFocusPoint() const override;
+ void setCustomFocusPoint(const QPointF &point) override;
+ QCameraFocusZoneList focusZones() const override;
void setSupportedFocusMode(QCameraFocus::FocusModes flag);
void setSupportedFocusPointMode(const QSet<QCameraFocus::FocusPointMode> &supportedFocusPointModes);
diff --git a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.h b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.h
index 3820bfaf1..ce1404e1c 100644
--- a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.h
+++ b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.h
@@ -64,13 +64,13 @@ class QWinRTCameraImageCaptureControl : public QCameraImageCaptureControl
public:
explicit QWinRTCameraImageCaptureControl(QWinRTCameraControl *parent);
- bool isReadyForCapture() const Q_DECL_OVERRIDE;
+ bool isReadyForCapture() const override;
- QCameraImageCapture::DriveMode driveMode() const Q_DECL_OVERRIDE;
- void setDriveMode(QCameraImageCapture::DriveMode mode) Q_DECL_OVERRIDE;
+ QCameraImageCapture::DriveMode driveMode() const override;
+ void setDriveMode(QCameraImageCapture::DriveMode mode) override;
- int capture(const QString &fileName) Q_DECL_OVERRIDE;
- void cancelCapture() Q_DECL_OVERRIDE;
+ int capture(const QString &fileName) override;
+ void cancelCapture() override;
private slots:
void onCameraStateChanged(QCamera::State state);
diff --git a/src/plugins/winrt/qwinrtcamerainfocontrol.h b/src/plugins/winrt/qwinrtcamerainfocontrol.h
index b97025dcb..031ed2720 100644
--- a/src/plugins/winrt/qwinrtcamerainfocontrol.h
+++ b/src/plugins/winrt/qwinrtcamerainfocontrol.h
@@ -50,8 +50,8 @@ class QWinRTCameraInfoControl : public QCameraInfoControl
public:
explicit QWinRTCameraInfoControl(QObject *parent = 0);
- QCamera::Position cameraPosition(const QString &deviceName) const Q_DECL_OVERRIDE;
- int cameraOrientation(const QString &deviceName) const Q_DECL_OVERRIDE;
+ QCamera::Position cameraPosition(const QString &deviceName) const override;
+ int cameraOrientation(const QString &deviceName) const override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/winrt/qwinrtcameralockscontrol.h b/src/plugins/winrt/qwinrtcameralockscontrol.h
index 873c355b0..61015fdaa 100644
--- a/src/plugins/winrt/qwinrtcameralockscontrol.h
+++ b/src/plugins/winrt/qwinrtcameralockscontrol.h
@@ -51,10 +51,10 @@ class QWinRTCameraLocksControl : public QCameraLocksControl
public:
explicit QWinRTCameraLocksControl(QObject *parent);
- QCamera::LockTypes supportedLocks() const Q_DECL_OVERRIDE;
- QCamera::LockStatus lockStatus(QCamera::LockType lock) const Q_DECL_OVERRIDE;
- void searchAndLock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
- void unlock(QCamera::LockTypes locks) Q_DECL_OVERRIDE;
+ QCamera::LockTypes supportedLocks() const override;
+ QCamera::LockStatus lockStatus(QCamera::LockType lock) const override;
+ void searchAndLock(QCamera::LockTypes locks) override;
+ void unlock(QCamera::LockTypes locks) override;
void initialize();
private:
diff --git a/src/plugins/winrt/qwinrtcameraservice.h b/src/plugins/winrt/qwinrtcameraservice.h
index beae2a140..6fa4d5fce 100644
--- a/src/plugins/winrt/qwinrtcameraservice.h
+++ b/src/plugins/winrt/qwinrtcameraservice.h
@@ -51,8 +51,8 @@ class QWinRTCameraService : public QMediaService
public:
explicit QWinRTCameraService(QObject *parent = 0);
- QMediaControl *requestControl(const char *name) Q_DECL_OVERRIDE;
- void releaseControl(QMediaControl *control) Q_DECL_OVERRIDE;
+ QMediaControl *requestControl(const char *name) override;
+ void releaseControl(QMediaControl *control) override;
private:
QScopedPointer<QWinRTCameraServicePrivate> d_ptr;
diff --git a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp
index 5f7810060..0a5ae46fa 100644
--- a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp
+++ b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp
@@ -89,12 +89,12 @@ public:
unmap();
}
- MapMode mapMode() const Q_DECL_OVERRIDE
+ MapMode mapMode() const override
{
return currentMode;
}
- uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) Q_DECL_OVERRIDE
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) override
{
if (currentMode != NotMapped || mode == NotMapped || control && control->state() != QCamera::ActiveState)
return nullptr;
@@ -113,7 +113,7 @@ public:
return bytes;
}
- void unmap() Q_DECL_OVERRIDE
+ void unmap() override
{
if (currentMode == NotMapped)
return;
diff --git a/src/plugins/winrt/qwinrtcameravideorenderercontrol.h b/src/plugins/winrt/qwinrtcameravideorenderercontrol.h
index ec6e0e0e4..eeda83d52 100644
--- a/src/plugins/winrt/qwinrtcameravideorenderercontrol.h
+++ b/src/plugins/winrt/qwinrtcameravideorenderercontrol.h
@@ -58,8 +58,8 @@ public:
explicit QWinRTCameraVideoRendererControl(const QSize &size, QObject *parent);
~QWinRTCameraVideoRendererControl();
- bool render(ID3D11Texture2D *texture) Q_DECL_OVERRIDE;
- bool dequeueFrame(QVideoFrame *frame) Q_DECL_OVERRIDE;
+ bool render(ID3D11Texture2D *texture) override;
+ bool dequeueFrame(QVideoFrame *frame) override;
void queueBuffer(IMF2DBuffer *buffer);
void discardBuffers();
void incrementProbe();
diff --git a/src/plugins/winrt/qwinrtimageencodercontrol.h b/src/plugins/winrt/qwinrtimageencodercontrol.h
index 7b0781798..dbeac2384 100644
--- a/src/plugins/winrt/qwinrtimageencodercontrol.h
+++ b/src/plugins/winrt/qwinrtimageencodercontrol.h
@@ -51,11 +51,11 @@ class QWinRTImageEncoderControl : public QImageEncoderControl
public:
explicit QWinRTImageEncoderControl(QObject *parent = 0);
- QStringList supportedImageCodecs() const Q_DECL_OVERRIDE;
- QString imageCodecDescription(const QString &codecName) const Q_DECL_OVERRIDE;
- QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const Q_DECL_OVERRIDE;
- QImageEncoderSettings imageSettings() const Q_DECL_OVERRIDE;
- void setImageSettings(const QImageEncoderSettings &settings) Q_DECL_OVERRIDE;
+ QStringList supportedImageCodecs() const override;
+ QString imageCodecDescription(const QString &codecName) const override;
+ QList<QSize> supportedResolutions(const QImageEncoderSettings &settings, bool *continuous = 0) const override;
+ QImageEncoderSettings imageSettings() const override;
+ void setImageSettings(const QImageEncoderSettings &settings) override;
void setSupportedResolutionsList(const QList<QSize> resolution);
void applySettings();
diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
index 9fd48fd76..de6b3418e 100644
--- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
+++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
@@ -541,7 +541,7 @@ QWinRTMediaPlayerControl::QWinRTMediaPlayerControl(IMFMediaEngineClassFactory *f
d->seekable = false;
d->hasAudio = false;
d->hasVideo = false;
- d->videoRenderer = Q_NULLPTR;
+ d->videoRenderer = nullptr;
d->notifier = Make<MediaEngineNotify>(this, d);
HRESULT hr;
@@ -796,7 +796,7 @@ void QWinRTMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *s
}
// Let Windows handle all other URLs
- hr = d->engine->SetSource(Q_NULLPTR); // Resets the byte stream
+ hr = d->engine->SetSource(nullptr); // Resets the byte stream
Q_ASSERT_SUCCEEDED(hr);
hr = d->engine->Load();
if (FAILED(hr))
diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.h b/src/plugins/winrt/qwinrtmediaplayercontrol.h
index 3d4154093..1e854f5bb 100644
--- a/src/plugins/winrt/qwinrtmediaplayercontrol.h
+++ b/src/plugins/winrt/qwinrtmediaplayercontrol.h
@@ -56,39 +56,39 @@ public:
QWinRTMediaPlayerControl(IMFMediaEngineClassFactory *factory, QObject *parent = 0);
~QWinRTMediaPlayerControl();
- QMediaPlayer::State state() const Q_DECL_OVERRIDE;
- QMediaPlayer::MediaStatus mediaStatus() const Q_DECL_OVERRIDE;
+ QMediaPlayer::State state() const override;
+ QMediaPlayer::MediaStatus mediaStatus() const override;
- qint64 duration() const Q_DECL_OVERRIDE;
+ qint64 duration() const override;
- qint64 position() const Q_DECL_OVERRIDE;
- void setPosition(qint64 position) Q_DECL_OVERRIDE;
+ qint64 position() const override;
+ void setPosition(qint64 position) override;
- int volume() const Q_DECL_OVERRIDE;
- void setVolume(int volume) Q_DECL_OVERRIDE;
+ int volume() const override;
+ void setVolume(int volume) override;
- bool isMuted() const Q_DECL_OVERRIDE;
- void setMuted(bool muted) Q_DECL_OVERRIDE;
+ bool isMuted() const override;
+ void setMuted(bool muted) override;
- int bufferStatus() const Q_DECL_OVERRIDE;
+ int bufferStatus() const override;
- bool isAudioAvailable() const Q_DECL_OVERRIDE;
- bool isVideoAvailable() const Q_DECL_OVERRIDE;
+ bool isAudioAvailable() const override;
+ bool isVideoAvailable() const override;
- bool isSeekable() const Q_DECL_OVERRIDE;
+ bool isSeekable() const override;
- QMediaTimeRange availablePlaybackRanges() const Q_DECL_OVERRIDE;
+ QMediaTimeRange availablePlaybackRanges() const override;
- qreal playbackRate() const Q_DECL_OVERRIDE;
- void setPlaybackRate(qreal rate) Q_DECL_OVERRIDE;
+ qreal playbackRate() const override;
+ void setPlaybackRate(qreal rate) override;
- QMediaContent media() const Q_DECL_OVERRIDE;
- const QIODevice *mediaStream() const Q_DECL_OVERRIDE;
- void setMedia(const QMediaContent &media, QIODevice *stream) Q_DECL_OVERRIDE;
+ QMediaContent media() const override;
+ const QIODevice *mediaStream() const override;
+ void setMedia(const QMediaContent &media, QIODevice *stream) override;
- void play() Q_DECL_OVERRIDE;
- void pause() Q_DECL_OVERRIDE;
- void stop() Q_DECL_OVERRIDE;
+ void play() override;
+ void pause() override;
+ void stop() override;
QVideoRendererControl *videoRendererControl();
diff --git a/src/plugins/winrt/qwinrtmediaplayerservice.cpp b/src/plugins/winrt/qwinrtmediaplayerservice.cpp
index 58149fd33..3253ed188 100644
--- a/src/plugins/winrt/qwinrtmediaplayerservice.cpp
+++ b/src/plugins/winrt/qwinrtmediaplayerservice.cpp
@@ -65,7 +65,7 @@ QWinRTMediaPlayerService::QWinRTMediaPlayerService(QObject *parent)
{
Q_D(QWinRTMediaPlayerService);
- d->player = Q_NULLPTR;
+ d->player = nullptr;
HRESULT hr = MFStartup(MF_VERSION);
Q_ASSERT(SUCCEEDED(hr));
@@ -94,11 +94,11 @@ QMediaControl *QWinRTMediaPlayerService::requestControl(const char *name)
}
if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
if (!d->player)
- return Q_NULLPTR;
+ return nullptr;
return d->player->videoRendererControl();
}
- return Q_NULLPTR;
+ return nullptr;
}
void QWinRTMediaPlayerService::releaseControl(QMediaControl *control)
diff --git a/src/plugins/winrt/qwinrtplayerrenderercontrol.h b/src/plugins/winrt/qwinrtplayerrenderercontrol.h
index fb67d0c8c..70f3c4af2 100644
--- a/src/plugins/winrt/qwinrtplayerrenderercontrol.h
+++ b/src/plugins/winrt/qwinrtplayerrenderercontrol.h
@@ -58,7 +58,7 @@ public:
bool ensureReady();
- bool render(ID3D11Texture2D *texture) Q_DECL_OVERRIDE;
+ bool render(ID3D11Texture2D *texture) override;
private:
QScopedPointer<QWinRTPlayerRendererControlPrivate> d_ptr;
diff --git a/src/plugins/winrt/qwinrtserviceplugin.cpp b/src/plugins/winrt/qwinrtserviceplugin.cpp
index d08a39a5e..286789e4c 100644
--- a/src/plugins/winrt/qwinrtserviceplugin.cpp
+++ b/src/plugins/winrt/qwinrtserviceplugin.cpp
@@ -55,7 +55,7 @@ QMediaService *QWinRTServicePlugin::create(QString const &key)
if (key == QLatin1String(Q_MEDIASERVICE_CAMERA))
return new QWinRTCameraService(this);
- return Q_NULLPTR;
+ return nullptr;
}
void QWinRTServicePlugin::release(QMediaService *service)
diff --git a/src/plugins/winrt/qwinrtserviceplugin.h b/src/plugins/winrt/qwinrtserviceplugin.h
index d6600aa54..30a76022d 100644
--- a/src/plugins/winrt/qwinrtserviceplugin.h
+++ b/src/plugins/winrt/qwinrtserviceplugin.h
@@ -62,13 +62,13 @@ public:
QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const;
- QCamera::Position cameraPosition(const QByteArray &device) const Q_DECL_OVERRIDE;
- int cameraOrientation(const QByteArray &device) const Q_DECL_OVERRIDE;
+ QCamera::Position cameraPosition(const QByteArray &device) const override;
+ int cameraOrientation(const QByteArray &device) const override;
- QList<QByteArray> devices(const QByteArray &service) const Q_DECL_OVERRIDE;
- QString deviceDescription(const QByteArray &service, const QByteArray &device) Q_DECL_OVERRIDE;
+ QList<QByteArray> devices(const QByteArray &service) const override;
+ QString deviceDescription(const QByteArray &service, const QByteArray &device) override;
- QByteArray defaultDevice(const QByteArray &service) const Q_DECL_OVERRIDE;
+ QByteArray defaultDevice(const QByteArray &service) const override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
index abe10f9a4..41d4693cb 100644
--- a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
+++ b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp
@@ -124,7 +124,7 @@ struct QWinRTVideoDeviceSelectorControlGlobal
IDeviceInformation *device;
hr = deviceList->GetAt(i, &device);
Q_ASSERT_SUCCEEDED(hr);
- onDeviceAdded(Q_NULLPTR, device);
+ onDeviceAdded(nullptr, device);
}
// If there is no default device provided by the API, choose the first one
diff --git a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.h b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.h
index 36f00656c..3beb9782a 100644
--- a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.h
+++ b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.h
@@ -65,13 +65,13 @@ public:
explicit QWinRTVideoDeviceSelectorControl(QObject *parent = 0);
~QWinRTVideoDeviceSelectorControl();
- int deviceCount() const Q_DECL_OVERRIDE;
+ int deviceCount() const override;
- QString deviceName(int index) const Q_DECL_OVERRIDE;
- QString deviceDescription(int index) const Q_DECL_OVERRIDE;
+ QString deviceName(int index) const override;
+ QString deviceDescription(int index) const override;
- int defaultDevice() const Q_DECL_OVERRIDE;
- int selectedDevice() const Q_DECL_OVERRIDE;
+ int defaultDevice() const override;
+ int selectedDevice() const override;
static QCamera::Position cameraPosition(const QString &deviceName);
static int cameraOrientation(const QString &deviceName);
@@ -80,7 +80,7 @@ public:
static QByteArray defaultDeviceName();
public slots:
- void setSelectedDevice(int index) Q_DECL_OVERRIDE;
+ void setSelectedDevice(int index) override;
private:
QScopedPointer<QWinRTVideoDeviceSelectorControlPrivate> d_ptr;
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
index 0cb6659ca..c51aec088 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp
@@ -130,7 +130,7 @@ class FilterRunnableDeleter : public QRunnable
{
public:
FilterRunnableDeleter(const QList<QVideoFilterRunnable *> &runnables) : m_runnables(runnables) { }
- void run() Q_DECL_OVERRIDE {
+ void run() override {
for (QVideoFilterRunnable *runnable : qAsConst(m_runnables))
delete runnable;
}
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h b/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
index c84612960..4f1a90c8b 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render_p.h
@@ -74,25 +74,25 @@ public:
QDeclarativeVideoRendererBackend(QDeclarativeVideoOutput *parent);
~QDeclarativeVideoRendererBackend();
- bool init(QMediaService *service) Q_DECL_OVERRIDE;
- void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) Q_DECL_OVERRIDE;
- void releaseSource() Q_DECL_OVERRIDE;
- void releaseControl() Q_DECL_OVERRIDE;
- QSize nativeSize() const Q_DECL_OVERRIDE;
- void updateGeometry() Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
- QAbstractVideoSurface *videoSurface() const Q_DECL_OVERRIDE;
- QRectF adjustedViewport() const Q_DECL_OVERRIDE;
+ bool init(QMediaService *service) override;
+ void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) override;
+ void releaseSource() override;
+ void releaseControl() override;
+ QSize nativeSize() const override;
+ void updateGeometry() override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override;
+ QAbstractVideoSurface *videoSurface() const override;
+ QRectF adjustedViewport() const override;
QOpenGLContext *glContext() const;
friend class QSGVideoItemSurface;
void present(const QVideoFrame &frame);
void stop();
- void appendFilter(QAbstractVideoFilter *filter) Q_DECL_OVERRIDE;
- void clearFilters() Q_DECL_OVERRIDE;
- void releaseResources() Q_DECL_OVERRIDE;
- void invalidateSceneGraph() Q_DECL_OVERRIDE;
+ void appendFilter(QAbstractVideoFilter *filter) override;
+ void clearFilters() override;
+ void releaseResources() override;
+ void invalidateSceneGraph() override;
private:
void scheduleDeleteFilterResources();
diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h b/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
index 942cc18d9..eb1814b07 100644
--- a/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
+++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_window_p.h
@@ -63,15 +63,15 @@ public:
QDeclarativeVideoWindowBackend(QDeclarativeVideoOutput *parent);
~QDeclarativeVideoWindowBackend();
- bool init(QMediaService *service) Q_DECL_OVERRIDE;
- void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) Q_DECL_OVERRIDE;
- void releaseSource() Q_DECL_OVERRIDE;
- void releaseControl() Q_DECL_OVERRIDE;
- QSize nativeSize() const Q_DECL_OVERRIDE;
- void updateGeometry() Q_DECL_OVERRIDE;
- QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) Q_DECL_OVERRIDE;
- QAbstractVideoSurface *videoSurface() const Q_DECL_OVERRIDE;
- QRectF adjustedViewport() const Q_DECL_OVERRIDE;
+ bool init(QMediaService *service) override;
+ void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &changeData) override;
+ void releaseSource() override;
+ void releaseControl() override;
+ QSize nativeSize() const override;
+ void updateGeometry() override;
+ QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override;
+ QAbstractVideoSurface *videoSurface() const override;
+ QRectF adjustedViewport() const override;
private:
QPointer<QVideoWindowControl> m_videoWindowControl;
diff --git a/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp b/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
index b04c6b38b..9eff9dbd6 100644
--- a/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
+++ b/src/qtmultimediaquicktools/qsgvideonode_yuv.cpp
@@ -120,9 +120,9 @@ public:
setShaderSourceFile(QOpenGLShader::Fragment, QStringLiteral(":/qtmultimediaquicktools/shaders/uyvyvideo.frag"));
}
- void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) Q_DECL_OVERRIDE;
+ void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) override;
- char const *const *attributeNames() const Q_DECL_OVERRIDE {
+ char const *const *attributeNames() const override {
static const char *names[] = {
"qt_VertexPosition",
"qt_VertexTexCoord",
@@ -132,7 +132,7 @@ public:
}
protected:
- void initialize() Q_DECL_OVERRIDE {
+ void initialize() override {
m_id_matrix = program()->uniformLocation("qt_Matrix");
m_id_yTexture = program()->uniformLocation("yTexture");
m_id_uvTexture = program()->uniformLocation("uvTexture");
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index 3deb534eb..b68bc030a 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -1258,7 +1258,7 @@ void tst_QMediaPlayerBackend::playlistObject()
QCOMPARE(errorSpy.count(), 0);
QCOMPARE(mediaStatusSpy.count(), 7); // 2 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia
- player.setPlaylist(Q_NULLPTR);
+ player.setPlaylist(nullptr);
mediaSpy.clear();
currentMediaSpy.clear();
@@ -1283,7 +1283,7 @@ void tst_QMediaPlayerBackend::playlistObject()
QCOMPARE(errorSpy.count(), 0);
QCOMPARE(mediaStatusSpy.count(), 13); // 4 x (LoadingMedia -> BufferedMedia -> EndOfMedia) + NoMedia
- player.setPlaylist(Q_NULLPTR);
+ player.setPlaylist(nullptr);
mediaSpy.clear();
currentMediaSpy.clear();
@@ -1307,7 +1307,7 @@ void tst_QMediaPlayerBackend::playlistObject()
QCOMPARE(errorSpy.count(), 1);
QCOMPARE(mediaStatusSpy.count(), 6); // Loading -> Invalid -> Loading -> Buffered -> EndOfMedia -> NoMedia
- player.setPlaylist(Q_NULLPTR);
+ player.setPlaylist(nullptr);
mediaSpy.clear();
currentMediaSpy.clear();
diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
index 5ff557ef6..b270e93eb 100644
--- a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
+++ b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
@@ -74,6 +74,13 @@ private slots:
void error();
void loops();
void audioRole();
+ void customAudioRole();
+
+private:
+ void enumerator(const QMetaObject *object, const char *name, QMetaEnum *result);
+ QMetaEnum enumerator(const QMetaObject *object, const char *name);
+ void keyToValue(const QMetaEnum &enumeration, const char *key, int *result);
+ int keyToValue(const QMetaEnum &enumeration, const char *key);
};
Q_DECLARE_METATYPE(QDeclarativeAudio::Error);
@@ -1051,6 +1058,149 @@ void tst_QDeclarativeAudio::audioRole()
}
}
+void tst_QDeclarativeAudio::customAudioRole()
+{
+ MockMediaPlayerService mockService;
+ MockMediaServiceProvider mockProvider(&mockService);
+ QMediaServiceProvider::setDefaultServiceProvider(&mockProvider);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0 \n import QtMultimedia 5.11 \n Audio { }", QUrl());
+
+ {
+ mockService.setHasCustomAudioRole(false);
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+ audio->setProperty("customAudioRole", QStringLiteral("customRole"));
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService.reset();
+ mockService.setHasAudioRole(false);
+
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+ audio->setProperty("customAudioRole", QStringLiteral("customRole"));
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService.reset();
+
+ QObject *audio = component.create();
+ QVERIFY(audio);
+
+ QMetaEnum audioRoleEnum = enumerator(audio->metaObject(), "AudioRole");
+ int AudioRole_UnknownRoleValue = keyToValue(audioRoleEnum, "UnknownRole");
+ int AudioRole_CustomRoleValue = keyToValue(audioRoleEnum, "CustomRole");
+ int AudioRole_MusicRoleValue = keyToValue(audioRoleEnum, "MusicRole");
+ QVERIFY(!QTest::currentTestFailed());
+
+ QSignalSpy spyRole(audio, SIGNAL(audioRoleChanged()));
+ QSignalSpy spyCustomRole(audio, SIGNAL(customAudioRoleChanged()));
+
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_UnknownRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+
+ QString customRole(QStringLiteral("customRole"));
+ audio->setProperty("customAudioRole", customRole);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_CustomRoleValue);
+ QCOMPARE(audio->property("customAudioRole").toString(), customRole);
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QCOMPARE(mockService.mockCustomAudioRoleControl->customAudioRole(), customRole);
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ QString customRole2(QStringLiteral("customRole2"));
+ audio->setProperty("customAudioRole", customRole2);
+ QCOMPARE(audio->property("customAudioRole").toString(), customRole2);
+ QCOMPARE(mockService.mockCustomAudioRoleControl->customAudioRole(), customRole2);
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ audio->setProperty("audioRole", AudioRole_MusicRoleValue);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_MusicRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::MusicRole);
+ QVERIFY(mockService.mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 1);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ audio->setProperty("audioRole", AudioRole_CustomRoleValue);
+ QCOMPARE(audio->property("audioRole").toInt(), AudioRole_CustomRoleValue);
+ QVERIFY(audio->property("customAudioRole").toString().isEmpty());
+ QCOMPARE(mockService.mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QVERIFY(mockService.mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+}
+
+void tst_QDeclarativeAudio::enumerator(const QMetaObject *object,
+ const char *name,
+ QMetaEnum *result)
+{
+ int index = object->indexOfEnumerator(name);
+ QVERIFY(index >= 0);
+ *result = object->enumerator(index);
+}
+
+QMetaEnum tst_QDeclarativeAudio::enumerator(const QMetaObject *object, const char *name)
+{
+ QMetaEnum result;
+ enumerator(object, name, &result);
+ return result;
+}
+
+void tst_QDeclarativeAudio::keyToValue(const QMetaEnum &enumeration, const char *key, int *result)
+{
+ bool ok = false;
+ *result = enumeration.keyToValue(key, &ok);
+ QVERIFY(ok);
+}
+
+int tst_QDeclarativeAudio::keyToValue(const QMetaEnum &enumeration, const char *key)
+{
+ int result;
+ keyToValue(enumeration, key, &result);
+ return result;
+}
+
QTEST_MAIN(tst_QDeclarativeAudio)
#include "tst_qdeclarativeaudio.moc"
diff --git a/tests/auto/unit/qmediaplayer/tst_qmediaplayer.cpp b/tests/auto/unit/qmediaplayer/tst_qmediaplayer.cpp
index a529517d3..94d297ad0 100644
--- a/tests/auto/unit/qmediaplayer/tst_qmediaplayer.cpp
+++ b/tests/auto/unit/qmediaplayer/tst_qmediaplayer.cpp
@@ -133,6 +133,7 @@ private slots:
void testQrc_data();
void testQrc();
void testAudioRole();
+ void testCustomAudioRole();
private:
void setupCommonTestData();
@@ -1336,5 +1337,99 @@ void tst_QMediaPlayer::testAudioRole()
}
}
+void tst_QMediaPlayer::testCustomAudioRole()
+{
+ {
+ mockService->setHasCustomAudioRole(false);
+ QMediaPlayer player;
+
+ QVERIFY(player.customAudioRole().isEmpty());
+ QVERIFY(player.supportedCustomAudioRoles().isEmpty());
+
+ QSignalSpy spyRole(&player, SIGNAL(audioRoleChanged(QAudio::Role)));
+ QSignalSpy spyCustomRole(&player, SIGNAL(customAudioRoleChanged(const QString &)));
+ player.setCustomAudioRole(QStringLiteral("customRole"));
+ QCOMPARE(player.audioRole(), QAudio::UnknownRole);
+ QVERIFY(player.customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService->reset();
+ mockService->setHasAudioRole(false);
+ QMediaPlayer player;
+
+ QVERIFY(player.customAudioRole().isEmpty());
+ QVERIFY(player.supportedCustomAudioRoles().isEmpty());
+
+ QSignalSpy spyRole(&player, SIGNAL(audioRoleChanged(QAudio::Role)));
+ QSignalSpy spyCustomRole(&player, SIGNAL(customAudioRoleChanged(const QString &)));
+ player.setCustomAudioRole(QStringLiteral("customRole"));
+ QCOMPARE(player.audioRole(), QAudio::UnknownRole);
+ QVERIFY(player.customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+
+ {
+ mockService->reset();
+ QMediaPlayer player;
+ QSignalSpy spyRole(&player, SIGNAL(audioRoleChanged(QAudio::Role)));
+ QSignalSpy spyCustomRole(&player, SIGNAL(customAudioRoleChanged(const QString &)));
+
+ QCOMPARE(player.audioRole(), QAudio::UnknownRole);
+ QVERIFY(player.customAudioRole().isEmpty());
+ QVERIFY(!player.supportedCustomAudioRoles().isEmpty());
+
+ QString customRole(QStringLiteral("customRole"));
+ player.setCustomAudioRole(customRole);
+ QCOMPARE(player.audioRole(), QAudio::CustomRole);
+ QCOMPARE(player.customAudioRole(), customRole);
+ QCOMPARE(mockService->mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QCOMPARE(mockService->mockCustomAudioRoleControl->customAudioRole(), customRole);
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(qvariant_cast<QAudio::Role>(spyRole.last().value(0)), QAudio::CustomRole);
+ QCOMPARE(spyCustomRole.count(), 1);
+ QCOMPARE(qvariant_cast<QString>(spyCustomRole.last().value(0)), customRole);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ QString customRole2(QStringLiteral("customRole2"));
+ player.setProperty("customAudioRole", qVariantFromValue(customRole2));
+ QCOMPARE(qvariant_cast<QString>(player.property("customAudioRole")), customRole2);
+ QCOMPARE(mockService->mockCustomAudioRoleControl->customAudioRole(), customRole2);
+ QCOMPARE(spyRole.count(), 0);
+ QCOMPARE(spyCustomRole.count(), 1);
+ QCOMPARE(qvariant_cast<QString>(spyCustomRole.last().value(0)), customRole2);
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ player.setAudioRole(QAudio::MusicRole);
+ QCOMPARE(player.audioRole(), QAudio::MusicRole);
+ QVERIFY(player.customAudioRole().isEmpty());
+ QCOMPARE(mockService->mockAudioRoleControl->audioRole(), QAudio::MusicRole);
+ QVERIFY(mockService->mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(qvariant_cast<QAudio::Role>(spyRole.last().value(0)), QAudio::MusicRole);
+ QCOMPARE(spyCustomRole.count(), 1);
+ QVERIFY(qvariant_cast<QString>(spyCustomRole.last().value(0)).isEmpty());
+
+ spyRole.clear();
+ spyCustomRole.clear();
+
+ player.setAudioRole(QAudio::CustomRole);
+ QCOMPARE(player.audioRole(), QAudio::CustomRole);
+ QVERIFY(player.customAudioRole().isEmpty());
+ QCOMPARE(mockService->mockAudioRoleControl->audioRole(), QAudio::CustomRole);
+ QVERIFY(mockService->mockCustomAudioRoleControl->customAudioRole().isEmpty());
+ QCOMPARE(spyRole.count(), 1);
+ QCOMPARE(qvariant_cast<QAudio::Role>(spyRole.last().value(0)), QAudio::CustomRole);
+ QCOMPARE(spyCustomRole.count(), 0);
+ }
+}
+
QTEST_GUILESS_MAIN(tst_QMediaPlayer)
#include "tst_qmediaplayer.moc"
diff --git a/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h b/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h
index 299b8cf4c..06e914ba1 100644
--- a/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockaudiorolecontrol.h
@@ -64,4 +64,3 @@ public:
};
#endif // MOCKAUDIOROLECONTROL_H
-
diff --git a/tests/auto/unit/qmultimedia_common/mockcustomaudiorolecontrol.h b/tests/auto/unit/qmultimedia_common/mockcustomaudiorolecontrol.h
new file mode 100644
index 000000000..f4031bb04
--- /dev/null
+++ b/tests/auto/unit/qmultimedia_common/mockcustomaudiorolecontrol.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 QNX Software Systems. All rights reserved.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef MOCKCUSTOMAUDIOROLECONTROL_H
+#define MOCKCUSTOMAUDIOROLECONTROL_H
+
+#include <qcustomaudiorolecontrol.h>
+
+class MockCustomAudioRoleControl : public QCustomAudioRoleControl
+{
+ friend class MockMediaPlayerService;
+
+public:
+ MockCustomAudioRoleControl()
+ : QCustomAudioRoleControl()
+ , m_customAudioRole(QAudio::UnknownRole)
+ {
+ }
+
+ QString customAudioRole() const
+ {
+ return m_customAudioRole;
+ }
+
+ void setCustomAudioRole(const QString &role)
+ {
+ if (role != m_customAudioRole)
+ emit customAudioRoleChanged(m_customAudioRole = role);
+ }
+
+ QStringList supportedCustomAudioRoles() const
+ {
+ return QStringList() << QStringLiteral("customRole")
+ << QStringLiteral("customRole2");
+ }
+
+ QString m_customAudioRole;
+};
+
+#endif // MOCKCUSTOMAUDIOROLECONTROL_H
diff --git a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h
index 46b81899c..068bb84a9 100644
--- a/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h
+++ b/tests/auto/unit/qmultimedia_common/mockmediaplayerservice.h
@@ -38,6 +38,7 @@
#include "mockvideoprobecontrol.h"
#include "mockvideowindowcontrol.h"
#include "mockaudiorolecontrol.h"
+#include "mockcustomaudiorolecontrol.h"
class MockMediaPlayerService : public QMediaService
{
@@ -48,6 +49,7 @@ public:
{
mockControl = new MockMediaPlayerControl;
mockAudioRoleControl = new MockAudioRoleControl;
+ mockCustomAudioRoleControl = new MockCustomAudioRoleControl;
mockStreamsControl = new MockStreamsControl;
mockNetworkControl = new MockNetworkAccessControl;
rendererControl = new MockVideoRendererControl;
@@ -56,12 +58,14 @@ public:
windowControl = new MockVideoWindowControl;
windowRef = 0;
enableAudioRole = true;
+ enableCustomAudioRole = true;
}
~MockMediaPlayerService()
{
delete mockControl;
delete mockAudioRoleControl;
+ delete mockCustomAudioRoleControl;
delete mockStreamsControl;
delete mockNetworkControl;
delete rendererControl;
@@ -88,6 +92,8 @@ public:
}
} else if (enableAudioRole && qstrcmp(iid, QAudioRoleControl_iid) == 0) {
return mockAudioRoleControl;
+ } else if (enableCustomAudioRole && qstrcmp(iid, QCustomAudioRoleControl_iid) == 0) {
+ return mockCustomAudioRoleControl;
}
if (qstrcmp(iid, QMediaNetworkAccessControl_iid) == 0)
@@ -127,6 +133,7 @@ public:
void selectCurrentConfiguration(QNetworkConfiguration config) { mockNetworkControl->setCurrentConfiguration(config); }
void setHasAudioRole(bool enable) { enableAudioRole = enable; }
+ void setHasCustomAudioRole(bool enable) { enableCustomAudioRole = enable; }
void reset()
{
@@ -148,6 +155,8 @@ public:
enableAudioRole = true;
mockAudioRoleControl->m_audioRole = QAudio::UnknownRole;
+ enableCustomAudioRole = true;
+ mockCustomAudioRoleControl->m_customAudioRole.clear();
mockNetworkControl->_current = QNetworkConfiguration();
mockNetworkControl->_configurations = QList<QNetworkConfiguration>();
@@ -155,6 +164,7 @@ public:
MockMediaPlayerControl *mockControl;
MockAudioRoleControl *mockAudioRoleControl;
+ MockCustomAudioRoleControl *mockCustomAudioRoleControl;
MockStreamsControl *mockStreamsControl;
MockNetworkAccessControl *mockNetworkControl;
MockVideoRendererControl *rendererControl;
@@ -163,6 +173,7 @@ public:
int windowRef;
int rendererRef;
bool enableAudioRole;
+ bool enableCustomAudioRole;
};
diff --git a/tests/auto/unit/qmultimedia_common/mockplayer.pri b/tests/auto/unit/qmultimedia_common/mockplayer.pri
index c43fb31e5..93cdbf3d8 100644
--- a/tests/auto/unit/qmultimedia_common/mockplayer.pri
+++ b/tests/auto/unit/qmultimedia_common/mockplayer.pri
@@ -9,6 +9,7 @@ HEADERS *= \
../qmultimedia_common/mockmediastreamscontrol.h \
../qmultimedia_common/mockmedianetworkaccesscontrol.h \
../qmultimedia_common/mockvideoprobecontrol.h \
- ../qmultimedia_common/mockaudiorolecontrol.h
+ ../qmultimedia_common/mockaudiorolecontrol.h \
+ ../qmultimedia_common/mockcustomaudiorolecontrol.h
include(mockvideo.pri)