summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/CMakeLists.txt6
-rw-r--r--src/multimedia/platform/windows/audio/qwindowsaudiosink_p.h36
-rw-r--r--src/multimedia/platform/windows/audio/qwindowsaudiosource_p.h36
-rw-r--r--src/multimedia/platform/windows/common/mfmetadata.cpp84
-rw-r--r--src/multimedia/platform/windows/common/qwindowsmfdefs.cpp62
-rw-r--r--src/multimedia/platform/windows/common/qwindowsmfdefs_p.h127
-rw-r--r--src/multimedia/platform/windows/common/qwindowsmultimediautils.cpp30
-rw-r--r--src/multimedia/platform/windows/decoder/mfaudiodecodercontrol_p.h20
-rw-r--r--src/multimedia/platform/windows/decoder/mfdecodersourcereader_p.h12
-rw-r--r--src/multimedia/platform/windows/evr/evrcustompresenter.cpp15
-rw-r--r--src/multimedia/platform/windows/evr/evrcustompresenter_p.h8
-rw-r--r--src/multimedia/platform/windows/evr/evrd3dpresentengine.cpp5
-rw-r--r--src/multimedia/platform/windows/evr/evrdefs.cpp48
-rw-r--r--src/multimedia/platform/windows/evr/evrdefs_p.h364
-rw-r--r--src/multimedia/platform/windows/evr/evrhelpers_p.h8
-rw-r--r--src/multimedia/platform/windows/evr/evrvideowindowcontrol.cpp4
-rw-r--r--src/multimedia/platform/windows/evr/evrvideowindowcontrol_p.h9
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader.cpp17
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader_p.h16
-rw-r--r--src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp1
-rw-r--r--src/multimedia/platform/windows/mfstream_p.h45
-rw-r--r--src/multimedia/platform/windows/player/mfactivate_p.h66
-rw-r--r--src/multimedia/platform/windows/player/mfplayercontrol.cpp2
-rw-r--r--src/multimedia/platform/windows/player/mfplayersession.cpp30
-rw-r--r--src/multimedia/platform/windows/player/mfplayersession_p.h10
-rw-r--r--src/multimedia/platform/windows/player/mftvideo.cpp3
-rw-r--r--src/multimedia/platform/windows/player/mftvideo_p.h54
-rw-r--r--src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp284
-rw-r--r--src/multimedia/platform/windows/player/mfvideorenderercontrol_p.h2
-rw-r--r--src/multimedia/platform/windows/player/samplegrabber.cpp2
-rw-r--r--src/multimedia/platform/windows/player/samplegrabber_p.h22
-rw-r--r--src/multimedia/platform/windows/qwindowsmediadevices.cpp26
-rw-r--r--src/multimedia/platform/windows/sourceresolver_p.h18
33 files changed, 599 insertions, 873 deletions
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
index 201314dc1..5ed0746a3 100644
--- a/src/multimedia/CMakeLists.txt
+++ b/src/multimedia/CMakeLists.txt
@@ -132,12 +132,12 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf
platform/windows/audio/qwindowsaudioutils.cpp platform/windows/audio/qwindowsaudioutils_p.h
platform/windows/common/mfmetadata.cpp platform/windows/common/mfmetadata_p.h
platform/windows/common/qwindowsmultimediautils.cpp platform/windows/common/qwindowsmultimediautils_p.h
+ platform/windows/common/qwindowsmfdefs.cpp platform/windows/common/qwindowsmfdefs_p.h
platform/windows/common/qwindowsiupointer_p.h
platform/windows/decoder/mfaudiodecodercontrol.cpp platform/windows/decoder/mfaudiodecodercontrol_p.h
platform/windows/decoder/mfdecodersourcereader.cpp platform/windows/decoder/mfdecodersourcereader_p.h
platform/windows/evr/evrcustompresenter.cpp platform/windows/evr/evrcustompresenter_p.h
platform/windows/evr/evrd3dpresentengine.cpp platform/windows/evr/evrd3dpresentengine_p.h
- platform/windows/evr/evrdefs.cpp platform/windows/evr/evrdefs_p.h
platform/windows/evr/evrhelpers.cpp platform/windows/evr/evrhelpers_p.h
platform/windows/evr/evrvideowindowcontrol.cpp platform/windows/evr/evrvideowindowcontrol_p.h
platform/windows/mfstream.cpp platform/windows/mfstream_p.h
@@ -178,12 +178,16 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf
evr
gdi32
mf
+ mfcore
mfplat
mfreadwrite
mfuuid
ole32
oleaut32
+ propsys
+ shlwapi
strmiids
+ amstrmid
user32
winmm
wmcodecdspuuid
diff --git a/src/multimedia/platform/windows/audio/qwindowsaudiosink_p.h b/src/multimedia/platform/windows/audio/qwindowsaudiosink_p.h
index d865011b5..fb743159a 100644
--- a/src/multimedia/platform/windows/audio/qwindowsaudiosink_p.h
+++ b/src/multimedia/platform/windows/audio/qwindowsaudiosink_p.h
@@ -85,22 +85,22 @@ public:
qint64 write( const char *data, qint64 len );
- void setFormat(const QAudioFormat& fmt);
- QAudioFormat format() const;
- QIODevice* start();
- void start(QIODevice* device);
- void stop();
- void reset();
- void suspend();
- void resume();
- qsizetype bytesFree() const;
- void setBufferSize(qsizetype value);
- qsizetype bufferSize() const;
- qint64 processedUSecs() const;
- QAudio::Error error() const;
- QAudio::State state() const;
- void setVolume(qreal);
- qreal volume() const;
+ void setFormat(const QAudioFormat& fmt) override;
+ QAudioFormat format() const override;
+ QIODevice* start() override;
+ void start(QIODevice* device) override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ qsizetype bytesFree() const override;
+ void setBufferSize(qsizetype value) override;
+ qsizetype bufferSize() const override;
+ qint64 processedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setVolume(qreal) override;
+ qreal volume() const override;
QIODevice* audioSource;
QAudioFormat settings;
@@ -147,8 +147,8 @@ public:
OutputPrivate(QWindowsAudioSink* audio);
~OutputPrivate();
- qint64 readData( char* data, qint64 len);
- qint64 writeData(const char* data, qint64 len);
+ qint64 readData( char* data, qint64 len) override;
+ qint64 writeData(const char* data, qint64 len) override;
private:
QWindowsAudioSink *audioDevice;
diff --git a/src/multimedia/platform/windows/audio/qwindowsaudiosource_p.h b/src/multimedia/platform/windows/audio/qwindowsaudiosource_p.h
index ff68daab6..17bbdaaee 100644
--- a/src/multimedia/platform/windows/audio/qwindowsaudiosource_p.h
+++ b/src/multimedia/platform/windows/audio/qwindowsaudiosource_p.h
@@ -87,22 +87,22 @@ public:
qint64 read(char* data, qint64 len);
- void setFormat(const QAudioFormat& fmt);
- QAudioFormat format() const;
- QIODevice* start();
- void start(QIODevice* device);
- void stop();
- void reset();
- void suspend();
- void resume();
- qsizetype bytesReady() const;
- void setBufferSize(qsizetype value);
- qsizetype bufferSize() const;
- qint64 processedUSecs() const;
- QAudio::Error error() const;
- QAudio::State state() const;
- void setVolume(qreal volume);
- qreal volume() const;
+ void setFormat(const QAudioFormat& fmt) override;
+ QAudioFormat format() const override;
+ QIODevice* start() override;
+ void start(QIODevice* device) override;
+ void stop() override;
+ void reset() override;
+ void suspend() override;
+ void resume() override;
+ qsizetype bytesReady() const override;
+ void setBufferSize(qsizetype value) override;
+ qsizetype bufferSize() const override;
+ qint64 processedUSecs() const override;
+ QAudio::Error error() const override;
+ QAudio::State state() const override;
+ void setVolume(qreal volume) override;
+ qreal volume() const override;
QIODevice* audioSource;
QAudioFormat settings;
@@ -157,8 +157,8 @@ public:
InputPrivate(QWindowsAudioSource* audio);
~InputPrivate();
- qint64 readData( char* data, qint64 len);
- qint64 writeData(const char* data, qint64 len);
+ qint64 readData( char* data, qint64 len) override;
+ qint64 writeData(const char* data, qint64 len) override;
void trigger();
private:
diff --git a/src/multimedia/platform/windows/common/mfmetadata.cpp b/src/multimedia/platform/windows/common/mfmetadata.cpp
index ebc884759..0edb7aa01 100644
--- a/src/multimedia/platform/windows/common/mfmetadata.cpp
+++ b/src/multimedia/platform/windows/common/mfmetadata.cpp
@@ -52,85 +52,7 @@
//#define DEBUG_MEDIAFOUNDATION
-static QString nameForGUID(GUID guid)
-{
- // Audio formats
- if (guid == MFAudioFormat_AAC)
- return QStringLiteral("MPEG AAC Audio");
- else if (guid == MFAudioFormat_ADTS)
- return QStringLiteral("MPEG ADTS AAC Audio");
- else if (guid == MFAudioFormat_Dolby_AC3_SPDIF)
- return QStringLiteral("Dolby AC-3 SPDIF");
- else if (guid == MFAudioFormat_DRM)
- return QStringLiteral("DRM");
- else if (guid == MFAudioFormat_DTS)
- return QStringLiteral("Digital Theater Systems Audio (DTS)");
- else if (guid == MFAudioFormat_Float)
- return QStringLiteral("IEEE Float Audio");
- else if (guid == MFAudioFormat_MP3)
- return QStringLiteral("MPEG Audio Layer-3 (MP3)");
- else if (guid == MFAudioFormat_MPEG)
- return QStringLiteral("MPEG-1 Audio");
- else if (guid == MFAudioFormat_MSP1)
- return QStringLiteral("Windows Media Audio Voice");
- else if (guid == MFAudioFormat_PCM)
- return QStringLiteral("Uncompressed PCM Audio");
- else if (guid == MFAudioFormat_WMASPDIF)
- return QStringLiteral("Windows Media Audio 9 SPDIF");
- else if (guid == MFAudioFormat_WMAudioV8)
- return QStringLiteral("Windows Media Audio 8 (WMA2)");
- else if (guid == MFAudioFormat_WMAudioV9)
- return QStringLiteral("Windows Media Audio 9 (WMA3");
- else if (guid == MFAudioFormat_WMAudio_Lossless)
- return QStringLiteral("Windows Media Audio 9 Lossless");
-
- // Video formats
- if (guid == MFVideoFormat_DV25)
- return QStringLiteral("DVCPRO 25 (DV25)");
- else if (guid == MFVideoFormat_DV50)
- return QStringLiteral("DVCPRO 50 (DV50)");
- else if (guid == MFVideoFormat_DVC)
- return QStringLiteral("DVC/DV Video");
- else if (guid == MFVideoFormat_DVH1)
- return QStringLiteral("DVCPRO 100 (DVH1)");
- else if (guid == MFVideoFormat_DVHD)
- return QStringLiteral("HD-DVCR (DVHD)");
- else if (guid == MFVideoFormat_DVSD)
- return QStringLiteral("SDL-DVCR (DVSD)");
- else if (guid == MFVideoFormat_DVSL)
- return QStringLiteral("SD-DVCR (DVSL)");
- else if (guid == MFVideoFormat_H264)
- return QStringLiteral("H.264 Video");
- else if (guid == MFVideoFormat_M4S2)
- return QStringLiteral("MPEG-4 part 2 Video (M4S2)");
- else if (guid == MFVideoFormat_MJPG)
- return QStringLiteral("Motion JPEG (MJPG)");
- else if (guid == MFVideoFormat_MP43)
- return QStringLiteral("Microsoft MPEG 4 version 3 (MP43)");
- else if (guid == MFVideoFormat_MP4S)
- return QStringLiteral("ISO MPEG 4 version 1 (MP4S)");
- else if (guid == MFVideoFormat_MP4V)
- return QStringLiteral("MPEG-4 part 2 Video (MP4V)");
- else if (guid == MFVideoFormat_MPEG2)
- return QStringLiteral("MPEG-2 Video");
- else if (guid == MFVideoFormat_MPG1)
- return QStringLiteral("MPEG-1 Video");
- else if (guid == MFVideoFormat_MSS1)
- return QStringLiteral("Windows Media Screen 1 (MSS1)");
- else if (guid == MFVideoFormat_MSS2)
- return QStringLiteral("Windows Media Video 9 Screen (MSS2)");
- else if (guid == MFVideoFormat_WMV1)
- return QStringLiteral("Windows Media Video 7 (WMV1)");
- else if (guid == MFVideoFormat_WMV2)
- return QStringLiteral("Windows Media Video 8 (WMV2)");
- else if (guid == MFVideoFormat_WMV3)
- return QStringLiteral("Windows Media Video 9 (WMV3)");
- else if (guid == MFVideoFormat_WVC1)
- return QStringLiteral("Windows Media Video VC1 (WVC1)");
-
- else
- return QStringLiteral("Unknown codec");
-}
+static const PROPERTYKEY PROP_KEY_NULL = {GUID_NULL, 0};
static QVariant convertValue(const PROPVARIANT& var)
{
@@ -388,7 +310,7 @@ static REFPROPERTYKEY propertyKeyForMetaDataKey(QMediaMetaData::Key key)
case QMediaMetaData::MediaType:
return PKEY_Media_ClassPrimaryID;
default:
- return PKEY_Null;
+ return PROP_KEY_NULL;
}
}
@@ -509,7 +431,7 @@ void MFMetaData::toNative(const QMediaMetaData &metaData, IPropertyStore *conten
// do validation and type conversion.
REFPROPERTYKEY propKey = propertyKeyForMetaDataKey(key);
- if (propKey != PKEY_Null) {
+ if (propKey != PROP_KEY_NULL) {
QString strValue = metaData.stringValue(key);
if (!strValue.isEmpty())
setStringProperty(content, propKey, strValue);
diff --git a/src/multimedia/platform/windows/common/qwindowsmfdefs.cpp b/src/multimedia/platform/windows/common/qwindowsmfdefs.cpp
new file mode 100644
index 000000000..97eae9743
--- /dev/null
+++ b/src/multimedia/platform/windows/common/qwindowsmfdefs.cpp
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 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 "qwindowsmfdefs_p.h"
+
+const GUID QMM_MFTranscodeContainerType_ADTS = {0x132fd27d, 0x0f02, 0x43de, {0xa3, 0x01, 0x38, 0xfb, 0xbb, 0xb3, 0x83, 0x4e}};
+const GUID QMM_MFTranscodeContainerType_ASF = {0x430f6f6e, 0xb6bf, 0x4fc1, {0xa0, 0xbd, 0x9e, 0xe4, 0x6e, 0xee, 0x2a, 0xfb}};
+const GUID QMM_MFTranscodeContainerType_AVI = {0x7edfe8af, 0x402f, 0x4d76, {0xa3, 0x3c, 0x61, 0x9f, 0xd1, 0x57, 0xd0, 0xf1}};
+const GUID QMM_MFTranscodeContainerType_FLAC = {0x31344aa3, 0x05a9, 0x42b5, {0x90, 0x1b, 0x8e, 0x9d, 0x42, 0x57, 0xf7, 0x5e}};
+const GUID QMM_MFTranscodeContainerType_MP3 = {0xe438b912, 0x83f1, 0x4de6, {0x9e, 0x3a, 0x9f, 0xfb, 0xc6, 0xdd, 0x24, 0xd1}};
+const GUID QMM_MFTranscodeContainerType_MPEG4 = {0xdc6cd05d, 0xb9d0, 0x40ef, {0xbd, 0x35, 0xfa, 0x62, 0x2c, 0x1a, 0xb2, 0x8a}};
+const GUID QMM_MFTranscodeContainerType_WAVE = {0x64c3453c, 0x0f26, 0x4741, {0xbe, 0x63, 0x87, 0xbd, 0xf8, 0xbb, 0x93, 0x5b}};
+
+const GUID QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID = {0x8ac3587a, 0x4ae7, 0x42d8, {0x99, 0xe0, 0x0a, 0x60, 0x13, 0xee, 0xf9, 0x0f}};
+const GUID QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID = {0x14dd9a1c, 0x7cff, 0x41be, {0xb1, 0xb9, 0xba, 0x1a, 0xc6, 0xec, 0xb5, 0x71}};
+const GUID QMM_MF_TRANSCODE_CONTAINERTYPE = {0x150ff23f, 0x4abc, 0x478b, {0xac, 0x4f, 0xe1, 0x91, 0x6f, 0xba, 0x1c, 0xca}};
+
+const GUID QMM_MF_SD_STREAM_NAME = {0x4f1b099d, 0xd314, 0x41e5, {0xa7, 0x81, 0x7f, 0xef, 0xaa, 0x4c, 0x50, 0x1f}};
+const GUID QMM_MF_SD_LANGUAGE = {0xaf2180, 0xbdc2, 0x423c, {0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21}};
+
+const GUID QMM_KSCATEGORY_VIDEO_CAMERA = {0xe5323777, 0xf976, 0x4f5b, {0x9b, 0x55, 0xb9, 0x46, 0x99, 0xc4, 0x6e, 0x44}};
+
+const GUID QMM_MR_POLICY_VOLUME_SERVICE = {0x1abaa2ac, 0x9d3b, 0x47c6, {0xab, 0x48, 0xc5, 0x95, 0x6, 0xde, 0x78, 0x4d}};
+
+const PROPERTYKEY QMM_PKEY_Device_FriendlyName = {{0xa45c254e, 0xdf1c, 0x4efd, {0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0}}, 14};
+
diff --git a/src/multimedia/platform/windows/common/qwindowsmfdefs_p.h b/src/multimedia/platform/windows/common/qwindowsmfdefs_p.h
new file mode 100644
index 000000000..173c8f8f0
--- /dev/null
+++ b/src/multimedia/platform/windows/common/qwindowsmfdefs_p.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 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 QWINDOWSMFDEFS_P_H
+#define QWINDOWSMFDEFS_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <d3d9.h>
+#include <dxva2api.h>
+#include <mfidl.h>
+
+// Stuff that is missing or incorrecty defined in MinGW.
+
+extern const GUID QMM_MFTranscodeContainerType_ADTS;
+extern const GUID QMM_MFTranscodeContainerType_ASF;
+extern const GUID QMM_MFTranscodeContainerType_AVI;
+extern const GUID QMM_MFTranscodeContainerType_FLAC;
+extern const GUID QMM_MFTranscodeContainerType_MP3;
+extern const GUID QMM_MFTranscodeContainerType_MPEG4;
+extern const GUID QMM_MFTranscodeContainerType_WAVE;
+
+extern const GUID QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID;
+extern const GUID QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID;
+extern const GUID QMM_MF_TRANSCODE_CONTAINERTYPE;
+
+extern const GUID QMM_MF_SD_STREAM_NAME;
+extern const GUID QMM_MF_SD_LANGUAGE;
+
+extern const GUID QMM_KSCATEGORY_VIDEO_CAMERA;
+
+extern const GUID QMM_MR_POLICY_VOLUME_SERVICE;
+
+extern const PROPERTYKEY QMM_PKEY_Device_FriendlyName;
+
+extern "C" HRESULT WINAPI MFCreateDeviceSource(IMFAttributes *pAttributes, IMFMediaSource **ppSource);
+
+#define QMM_MFSESSION_GETFULLTOPOLOGY_CURRENT 1
+#define QMM_PRESENTATION_CURRENT_POSITION 0x7fffffffffffffff
+
+#ifndef __IMFVideoProcessor_INTERFACE_DEFINED__
+#define __IMFVideoProcessor_INTERFACE_DEFINED__
+DEFINE_GUID(IID_IMFVideoProcessor, 0x6AB0000C, 0xFECE, 0x4d1f, 0xA2,0xAC, 0xA9,0x57,0x35,0x30,0x65,0x6E);
+MIDL_INTERFACE("6AB0000C-FECE-4d1f-A2AC-A9573530656E")
+IMFVideoProcessor : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoProcessorModes(UINT *, GUID **) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(LPGUID, DXVA2_VideoProcessorCaps *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorMode(LPGUID) = 0;
+ virtual HRESULT STDMETHODCALLTYPE SetVideoProcessorMode(LPGUID) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange(DWORD, DXVA2_ValueRange *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetProcAmpValues(DWORD, DXVA2_ProcAmpValues *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE SetProcAmpValues(DWORD, DXVA2_ProcAmpValues *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetFilteringRange(DWORD, DXVA2_ValueRange *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetFilteringValue(DWORD, DXVA2_Fixed32 *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE SetFilteringValue(DWORD, DXVA2_Fixed32 *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(COLORREF *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(COLORREF) = 0;
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoProcessor, 0x6AB0000C, 0xFECE, 0x4d1f, 0xA2,0xAC, 0xA9,0x57,0x35,0x30,0x65,0x6E)
+#endif
+#endif // __IMFVideoProcessor_INTERFACE_DEFINED__
+
+#ifndef __IMFSimpleAudioVolume_INTERFACE_DEFINED__
+#define __IMFSimpleAudioVolume_INTERFACE_DEFINED__
+DEFINE_GUID(IID_IMFSimpleAudioVolume, 0x089EDF13, 0xCF71, 0x4338, 0x8D,0x13, 0x9E,0x56,0x9D,0xBD,0xC3,0x19);
+MIDL_INTERFACE("089EDF13-CF71-4338-8D13-9E569DBDC319")
+IMFSimpleAudioVolume : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetMasterVolume(float) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetMasterVolume(float *) = 0;
+ virtual HRESULT STDMETHODCALLTYPE SetMute(BOOL) = 0;
+ virtual HRESULT STDMETHODCALLTYPE GetMute(BOOL *) = 0;
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFSimpleAudioVolume, 0x089EDF13, 0xCF71, 0x4338, 0x8D,0x13, 0x9E,0x56,0x9D,0xBD,0xC3,0x19)
+#endif
+#endif // __IMFSimpleAudioVolume_INTERFACE_DEFINED__
+
+#endif // QWINDOWSMFDEFS_P_H
+
diff --git a/src/multimedia/platform/windows/common/qwindowsmultimediautils.cpp b/src/multimedia/platform/windows/common/qwindowsmultimediautils.cpp
index ad6a234eb..3c2f40d48 100644
--- a/src/multimedia/platform/windows/common/qwindowsmultimediautils.cpp
+++ b/src/multimedia/platform/windows/common/qwindowsmultimediautils.cpp
@@ -37,10 +37,18 @@
**
****************************************************************************/
+#if defined(WINVER) && WINVER < _WIN32_WINNT_WIN10
+# undef WINVER
+#endif
+#if !defined(WINVER)
+# define WINVER _WIN32_WINNT_WIN10 // Enables newer audio formats.
+#endif
+
#include "qwindowsmultimediautils_p.h"
#include <mfapi.h>
#include <mfidl.h>
+#include <private/qwindowsmfdefs_p.h>
QT_BEGIN_NAMESPACE
@@ -199,13 +207,13 @@ GUID QWindowsMultimediaUtils::containerForVideoFileFormat(QMediaFormat::FileForm
{
switch (format) {
case QMediaFormat::FileFormat::MPEG4:
- return MFTranscodeContainerType_MPEG4;
+ return QMM_MFTranscodeContainerType_MPEG4;
case QMediaFormat::FileFormat::WMV:
- return MFTranscodeContainerType_ASF;
+ return QMM_MFTranscodeContainerType_ASF;
case QMediaFormat::FileFormat::AVI:
- return MFTranscodeContainerType_AVI;
+ return QMM_MFTranscodeContainerType_AVI;
default:
- return MFTranscodeContainerType_MPEG4;
+ return QMM_MFTranscodeContainerType_MPEG4;
}
}
@@ -213,19 +221,19 @@ GUID QWindowsMultimediaUtils::containerForAudioFileFormat(QMediaFormat::FileForm
{
switch (format) {
case QMediaFormat::FileFormat::MP3:
- return MFTranscodeContainerType_MP3;
+ return QMM_MFTranscodeContainerType_MP3;
case QMediaFormat::FileFormat::AAC:
- return MFTranscodeContainerType_ADTS;
+ return QMM_MFTranscodeContainerType_ADTS;
case QMediaFormat::FileFormat::Mpeg4Audio:
- return MFTranscodeContainerType_MPEG4;
+ return QMM_MFTranscodeContainerType_MPEG4;
case QMediaFormat::FileFormat::WMA:
- return MFTranscodeContainerType_ASF;
+ return QMM_MFTranscodeContainerType_ASF;
case QMediaFormat::FileFormat::FLAC:
- return MFTranscodeContainerType_FLAC;
+ return QMM_MFTranscodeContainerType_FLAC;
case QMediaFormat::FileFormat::Wave:
- return MFTranscodeContainerType_WAVE;
+ return QMM_MFTranscodeContainerType_WAVE;
default:
- return MFTranscodeContainerType_MPEG4;
+ return QMM_MFTranscodeContainerType_MPEG4;
}
}
diff --git a/src/multimedia/platform/windows/decoder/mfaudiodecodercontrol_p.h b/src/multimedia/platform/windows/decoder/mfaudiodecodercontrol_p.h
index 6efdbb346..ae4756c3d 100644
--- a/src/multimedia/platform/windows/decoder/mfaudiodecodercontrol_p.h
+++ b/src/multimedia/platform/windows/decoder/mfaudiodecodercontrol_p.h
@@ -64,23 +64,23 @@ public:
MFAudioDecoderControl(QAudioDecoder *parent);
~MFAudioDecoderControl();
- QUrl source() const;
- void setSource(const QUrl &fileName);
+ QUrl source() const override;
+ void setSource(const QUrl &fileName) override;
- QIODevice* sourceDevice() const;
- void setSourceDevice(QIODevice *device);
+ QIODevice* sourceDevice() const override;
+ void setSourceDevice(QIODevice *device) override;
- void start();
- void stop();
+ void start() override;
+ void stop() override;
QAudioFormat audioFormat() const override;
void setAudioFormat(const QAudioFormat &format) override;
- QAudioBuffer read();
- bool bufferAvailable() const;
+ QAudioBuffer read() override;
+ bool bufferAvailable() const override;
- qint64 position() const;
- qint64 duration() const;
+ qint64 position() const override;
+ qint64 duration() const override;
private Q_SLOTS:
void handleMediaSourceReady();
diff --git a/src/multimedia/platform/windows/decoder/mfdecodersourcereader_p.h b/src/multimedia/platform/windows/decoder/mfdecodersourcereader_p.h
index 7d63f5368..da571153e 100644
--- a/src/multimedia/platform/windows/decoder/mfdecodersourcereader_p.h
+++ b/src/multimedia/platform/windows/decoder/mfdecodersourcereader_p.h
@@ -76,15 +76,15 @@ public:
QList<IMFSample*> takeSamples(); //internal samples will be cleared after this
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
+ STDMETHODIMP_(ULONG) AddRef(void) override;
+ STDMETHODIMP_(ULONG) Release(void) override;
//from IMFSourceReaderCallback
STDMETHODIMP OnReadSample(HRESULT hrStatus, DWORD dwStreamIndex,
- DWORD dwStreamFlags, LONGLONG llTimestamp, IMFSample *pSample);
- STDMETHODIMP OnFlush(DWORD dwStreamIndex);
- STDMETHODIMP OnEvent(DWORD dwStreamIndex, IMFMediaEvent *pEvent);
+ DWORD dwStreamFlags, LONGLONG llTimestamp, IMFSample *pSample) override;
+ STDMETHODIMP OnFlush(DWORD dwStreamIndex) override;
+ STDMETHODIMP OnEvent(DWORD dwStreamIndex, IMFMediaEvent *pEvent) override;
Q_SIGNALS:
void sampleAdded();
diff --git a/src/multimedia/platform/windows/evr/evrcustompresenter.cpp b/src/multimedia/platform/windows/evr/evrcustompresenter.cpp
index 086fb57d4..d5561d378 100644
--- a/src/multimedia/platform/windows/evr/evrcustompresenter.cpp
+++ b/src/multimedia/platform/windows/evr/evrcustompresenter.cpp
@@ -43,6 +43,7 @@
#include "evrhelpers_p.h"
#include <private/qwindowsmultimediautils_p.h>
#include <private/qplatformvideosink_p.h>
+#include <private/qwindowsmfdefs_p.h>
#include <QtGui/private/qrhi_p.h>
@@ -634,7 +635,7 @@ HRESULT EVRCustomPresenter::GetService(REFGUID guidService, REFIID riid, LPVOID
return E_POINTER;
// The only service GUID that we support is MR_VIDEO_RENDER_SERVICE.
- if (guidService != mr_VIDEO_RENDER_SERVICE)
+ if (guidService != MR_VIDEO_RENDER_SERVICE)
return MF_E_UNSUPPORTED_SERVICE;
// First try to get the service interface from the D3DPresentEngine object.
@@ -651,7 +652,7 @@ HRESULT EVRCustomPresenter::GetDeviceID(IID* deviceID)
if (!deviceID)
return E_POINTER;
- *deviceID = iid_IDirect3DDevice9;
+ *deviceID = IID_IDirect3DDevice9;
return S_OK;
}
@@ -678,7 +679,7 @@ HRESULT EVRCustomPresenter::InitServicePointers(IMFTopologyServiceLookup *lookup
objectCount = 1;
lookup->LookupService(MF_SERVICE_LOOKUP_GLOBAL, 0,
- mr_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_clock),
+ MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_clock),
&objectCount
);
@@ -686,7 +687,7 @@ HRESULT EVRCustomPresenter::InitServicePointers(IMFTopologyServiceLookup *lookup
objectCount = 1;
hr = lookup->LookupService(MF_SERVICE_LOOKUP_GLOBAL, 0,
- mr_VIDEO_MIXER_SERVICE, IID_PPV_ARGS(&m_mixer),
+ MR_VIDEO_MIXER_SERVICE, IID_PPV_ARGS(&m_mixer),
&objectCount
);
@@ -702,7 +703,7 @@ HRESULT EVRCustomPresenter::InitServicePointers(IMFTopologyServiceLookup *lookup
objectCount = 1;
hr = lookup->LookupService(MF_SERVICE_LOOKUP_GLOBAL, 0,
- mr_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_mediaEventSink),
+ MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_mediaEventSink),
&objectCount
);
@@ -838,7 +839,7 @@ HRESULT EVRCustomPresenter::OnClockStart(MFTIME, LONGLONG clockStartOffset)
// If the clock position changes while the clock is active, it
// is a seek request. We need to flush all pending samples.
- if (clockStartOffset != PRESENTATION_CURRENT_POSITION)
+ if (clockStartOffset != QMM_PRESENTATION_CURRENT_POSITION)
flush();
} else {
m_renderState = RenderStarted;
@@ -1980,7 +1981,7 @@ HRESULT setMixerSourceRect(IMFTransform *mixer, const MFVideoNormalizedRect &sou
HRESULT hr = mixer->GetAttributes(&attributes);
if (SUCCEEDED(hr)) {
- hr = attributes->SetBlob(video_ZOOM_RECT, reinterpret_cast<const UINT8*>(&sourceRect),
+ hr = attributes->SetBlob(VIDEO_ZOOM_RECT, reinterpret_cast<const UINT8*>(&sourceRect),
sizeof(sourceRect));
attributes->Release();
}
diff --git a/src/multimedia/platform/windows/evr/evrcustompresenter_p.h b/src/multimedia/platform/windows/evr/evrcustompresenter_p.h
index 9b34e449f..1bf443efa 100644
--- a/src/multimedia/platform/windows/evr/evrcustompresenter_p.h
+++ b/src/multimedia/platform/windows/evr/evrcustompresenter_p.h
@@ -58,7 +58,13 @@
#include <qvideoframeformat.h>
#include <qvideosink.h>
-#include "evrdefs_p.h"
+#include <d3d9.h>
+#include <dxva2api.h>
+#include <evr9.h>
+#include <evr.h>
+#include <mfidl.h>
+#include <mfapi.h>
+#include <mferror.h>
QT_BEGIN_NAMESPACE
diff --git a/src/multimedia/platform/windows/evr/evrd3dpresentengine.cpp b/src/multimedia/platform/windows/evr/evrd3dpresentengine.cpp
index 89c22d3ae..fa1a8dbc4 100644
--- a/src/multimedia/platform/windows/evr/evrd3dpresentengine.cpp
+++ b/src/multimedia/platform/windows/evr/evrd3dpresentengine.cpp
@@ -60,14 +60,15 @@ public:
, m_surface(0)
, m_mapMode(QVideoFrame::NotMapped)
{
+ Q_UNUSED(engine);
if (m_sample) {
m_sample->AddRef();
IMFMediaBuffer *buffer;
if (SUCCEEDED(m_sample->GetBufferByIndex(0, &buffer))) {
MFGetService(buffer,
- mr_BUFFER_SERVICE,
- iid_IDirect3DSurface9,
+ MR_BUFFER_SERVICE,
+ IID_IDirect3DSurface9,
reinterpret_cast<void **>(&m_surface));
buffer->Release();
}
diff --git a/src/multimedia/platform/windows/evr/evrdefs.cpp b/src/multimedia/platform/windows/evr/evrdefs.cpp
deleted file mode 100644
index 94370a14a..000000000
--- a/src/multimedia/platform/windows/evr/evrdefs.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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 "evrdefs_p.h"
-
-const CLSID clsid_EnhancedVideoRenderer = { 0xfa10746c, 0x9b63, 0x4b6c, {0xbc, 0x49, 0xfc, 0x30, 0xe, 0xa5, 0xf2, 0x56} };
-const GUID mr_VIDEO_RENDER_SERVICE = { 0x1092a86c, 0xab1a, 0x459a, {0xa3, 0x36, 0x83, 0x1f, 0xbc, 0x4d, 0x11, 0xff} };
-const GUID mr_VIDEO_MIXER_SERVICE = { 0x73cd2fc, 0x6cf4, 0x40b7, {0x88, 0x59, 0xe8, 0x95, 0x52, 0xc8, 0x41, 0xf8} };
-const GUID mr_BUFFER_SERVICE = { 0xa562248c, 0x9ac6, 0x4ffc, {0x9f, 0xba, 0x3a, 0xf8, 0xf8, 0xad, 0x1a, 0x4d} };
-const GUID video_ZOOM_RECT = { 0x7aaa1638, 0x1b7f, 0x4c93, {0xbd, 0x89, 0x5b, 0x9c, 0x9f, 0xb6, 0xfc, 0xf0} };
-const GUID iid_IDirect3DDevice9 = { 0xd0223b96, 0xbf7a, 0x43fd, {0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb} };
-const GUID iid_IDirect3DSurface9 = { 0xcfbaf3a, 0x9ff6, 0x429a, {0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b} };
diff --git a/src/multimedia/platform/windows/evr/evrdefs_p.h b/src/multimedia/platform/windows/evr/evrdefs_p.h
deleted file mode 100644
index f9df48387..000000000
--- a/src/multimedia/platform/windows/evr/evrdefs_p.h
+++ /dev/null
@@ -1,364 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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 EVRDEFS_H
-#define EVRDEFS_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <d3d9.h>
-#include <evr9.h>
-#include <evr.h>
-#include <dxva2api.h>
-#include <mfapi.h>
-#include <mfidl.h>
-#include <mferror.h>
-
-extern const CLSID clsid_EnhancedVideoRenderer;
-extern const GUID mr_VIDEO_RENDER_SERVICE;
-extern const GUID mr_VIDEO_MIXER_SERVICE;
-extern const GUID mr_BUFFER_SERVICE;
-extern const GUID video_ZOOM_RECT;
-extern const GUID iid_IDirect3DDevice9;
-extern const GUID iid_IDirect3DSurface9;
-
-// The following is required to compile with MinGW
-
-extern "C" {
-HRESULT WINAPI MFCreateVideoSampleFromSurface(IUnknown *pUnkSurface, IMFSample **ppSample);
-HRESULT WINAPI Direct3DCreate9Ex(UINT SDKVersion, IDirect3D9Ex**);
-}
-
-#ifndef PRESENTATION_CURRENT_POSITION
-#define PRESENTATION_CURRENT_POSITION 0x7fffffffffffffff
-#endif
-
-#ifndef MF_E_SHUTDOWN
-#define MF_E_SHUTDOWN ((HRESULT)0xC00D3E85L)
-#endif
-
-#ifndef MF_E_SAMPLEALLOCATOR_EMPTY
-#define MF_E_SAMPLEALLOCATOR_EMPTY ((HRESULT)0xC00D4A3EL)
-#endif
-
-#ifndef MF_E_TRANSFORM_STREAM_CHANGE
-#define MF_E_TRANSFORM_STREAM_CHANGE ((HRESULT)0xC00D6D61L)
-#endif
-
-#ifndef MF_E_TRANSFORM_NEED_MORE_INPUT
-#define MF_E_TRANSFORM_NEED_MORE_INPUT ((HRESULT)0xC00D6D72L)
-#endif
-
-#if defined(__GNUC__) && !defined(_MFVideoNormalizedRect_)
-#define _MFVideoNormalizedRect_
-typedef struct MFVideoNormalizedRect {
- float left;
- float top;
- float right;
- float bottom;
-} MFVideoNormalizedRect;
-#endif
-
-#include <initguid.h>
-
-#ifndef __IMFGetService_INTERFACE_DEFINED__
-#define __IMFGetService_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7);
-MIDL_INTERFACE("fa993888-4383-415a-a930-dd472a8cf6f7")
-IMFGetService : public IUnknown
-{
- virtual HRESULT STDMETHODCALLTYPE GetService(REFGUID, REFIID, LPVOID *) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7)
-#endif
-#endif // __IMFGetService_INTERFACE_DEFINED__
-
-#ifndef __IMFVideoDisplayControl_INTERFACE_DEFINED__
-#define __IMFVideoDisplayControl_INTERFACE_DEFINED__
-typedef enum MFVideoAspectRatioMode
-{
- MFVideoARMode_None = 0,
- MFVideoARMode_PreservePicture = 0x1,
- MFVideoARMode_PreservePixel = 0x2,
- MFVideoARMode_NonLinearStretch = 0x4,
- MFVideoARMode_Mask = 0x7
-} MFVideoAspectRatioMode;
-
-DEFINE_GUID(IID_IMFVideoDisplayControl, 0xa490b1e4, 0xab84, 0x4d31, 0xa1,0xb2, 0x18,0x1e,0x03,0xb1,0x07,0x7a);
-MIDL_INTERFACE("a490b1e4-ab84-4d31-a1b2-181e03b1077a")
-IMFVideoDisplayControl : public IUnknown
-{
- virtual HRESULT STDMETHODCALLTYPE GetNativeVideoSize(SIZE *, SIZE *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetIdealVideoSize(SIZE *, SIZE *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetVideoPosition(const MFVideoNormalizedRect *, const LPRECT) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetVideoPosition(MFVideoNormalizedRect *, LPRECT) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetAspectRatioMode(DWORD) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetAspectRatioMode(DWORD *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetVideoWindow(HWND) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetVideoWindow(HWND *) = 0;
- virtual HRESULT STDMETHODCALLTYPE RepaintVideo(void) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetCurrentImage(BITMAPINFOHEADER *, BYTE **, DWORD *, LONGLONG *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetBorderColor(COLORREF) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetBorderColor(COLORREF *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetRenderingPrefs(DWORD) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetRenderingPrefs(DWORD *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetFullscreen(BOOL) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetFullscreen(BOOL *) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFVideoDisplayControl, 0xa490b1e4, 0xab84, 0x4d31, 0xa1,0xb2, 0x18,0x1e,0x03,0xb1,0x07,0x7a)
-#endif
-#endif // __IMFVideoDisplayControl_INTERFACE_DEFINED__
-
-#ifndef __IMFVideoProcessor_INTERFACE_DEFINED__
-#define __IMFVideoProcessor_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFVideoProcessor, 0x6AB0000C, 0xFECE, 0x4d1f, 0xA2,0xAC, 0xA9,0x57,0x35,0x30,0x65,0x6E);
-MIDL_INTERFACE("6AB0000C-FECE-4d1f-A2AC-A9573530656E")
-IMFVideoProcessor : public IUnknown
-{
- virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoProcessorModes(UINT *, GUID **) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(LPGUID, DXVA2_VideoProcessorCaps *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorMode(LPGUID) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetVideoProcessorMode(LPGUID) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange(DWORD, DXVA2_ValueRange *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetProcAmpValues(DWORD, DXVA2_ProcAmpValues *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetProcAmpValues(DWORD, DXVA2_ProcAmpValues *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetFilteringRange(DWORD, DXVA2_ValueRange *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetFilteringValue(DWORD, DXVA2_Fixed32 *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetFilteringValue(DWORD, DXVA2_Fixed32 *) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(COLORREF *) = 0;
- virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(COLORREF) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFVideoProcessor, 0x6AB0000C, 0xFECE, 0x4d1f, 0xA2,0xAC, 0xA9,0x57,0x35,0x30,0x65,0x6E)
-#endif
-#endif // __IMFVideoProcessor_INTERFACE_DEFINED__
-
-#ifndef __IMFVideoDeviceID_INTERFACE_DEFINED__
-#define __IMFVideoDeviceID_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFVideoDeviceID, 0xA38D9567, 0x5A9C, 0x4f3c, 0xB2,0x93, 0x8E,0xB4,0x15,0xB2,0x79,0xBA);
-MIDL_INTERFACE("A38D9567-5A9C-4f3c-B293-8EB415B279BA")
-IMFVideoDeviceID : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE GetDeviceID(IID *pDeviceID) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFVideoDeviceID, 0xA38D9567, 0x5A9C, 0x4f3c, 0xB2,0x93, 0x8E,0xB4,0x15,0xB2,0x79,0xBA)
-#endif
-#endif // __IMFVideoDeviceID_INTERFACE_DEFINED__
-
-#ifndef __IMFClockStateSink_INTERFACE_DEFINED__
-#define __IMFClockStateSink_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFClockStateSink, 0xF6696E82, 0x74F7, 0x4f3d, 0xA1,0x78, 0x8A,0x5E,0x09,0xC3,0x65,0x9F);
-MIDL_INTERFACE("F6696E82-74F7-4f3d-A178-8A5E09C3659F")
-IMFClockStateSink : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE OnClockStart(MFTIME hnsSystemTime, LONGLONG llClockStartOffset) = 0;
- virtual HRESULT STDMETHODCALLTYPE OnClockStop(MFTIME hnsSystemTime) = 0;
- virtual HRESULT STDMETHODCALLTYPE OnClockPause(MFTIME hnsSystemTime) = 0;
- virtual HRESULT STDMETHODCALLTYPE OnClockRestart(MFTIME hnsSystemTime) = 0;
- virtual HRESULT STDMETHODCALLTYPE OnClockSetRate(MFTIME hnsSystemTime, float flRate) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFClockStateSink, 0xF6696E82, 0x74F7, 0x4f3d, 0xA1,0x78, 0x8A,0x5E,0x09,0xC3,0x65,0x9F)
-#endif
-#endif // __IMFClockStateSink_INTERFACE_DEFINED__
-
-#ifndef __IMFVideoPresenter_INTERFACE_DEFINED__
-#define __IMFVideoPresenter_INTERFACE_DEFINED__
-typedef enum MFVP_MESSAGE_TYPE
-{
- MFVP_MESSAGE_FLUSH = 0,
- MFVP_MESSAGE_INVALIDATEMEDIATYPE = 0x1,
- MFVP_MESSAGE_PROCESSINPUTNOTIFY = 0x2,
- MFVP_MESSAGE_BEGINSTREAMING = 0x3,
- MFVP_MESSAGE_ENDSTREAMING = 0x4,
- MFVP_MESSAGE_ENDOFSTREAM = 0x5,
- MFVP_MESSAGE_STEP = 0x6,
- MFVP_MESSAGE_CANCELSTEP = 0x7
-} MFVP_MESSAGE_TYPE;
-
-DEFINE_GUID(IID_IMFVideoPresenter, 0x29AFF080, 0x182A, 0x4a5d, 0xAF,0x3B, 0x44,0x8F,0x3A,0x63,0x46,0xCB);
-MIDL_INTERFACE("29AFF080-182A-4a5d-AF3B-448F3A6346CB")
-IMFVideoPresenter : public IMFClockStateSink
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE ProcessMessage(MFVP_MESSAGE_TYPE eMessage, ULONG_PTR ulParam) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetCurrentMediaType(IMFVideoMediaType **ppMediaType) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFVideoPresenter, 0x29AFF080, 0x182A, 0x4a5d, 0xAF,0x3B, 0x44,0x8F,0x3A,0x63,0x46,0xCB)
-#endif
-#endif // __IMFVideoPresenter_INTERFACE_DEFINED__
-
-#ifndef __IMFRateSupport_INTERFACE_DEFINED__
-#define __IMFRateSupport_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d);
-MIDL_INTERFACE("0a9ccdbc-d797-4563-9667-94ec5d79292d")
-IMFRateSupport : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE GetSlowestRate(MFRATE_DIRECTION eDirection, BOOL fThin, float *pflRate) = 0;
- virtual HRESULT STDMETHODCALLTYPE GetFastestRate(MFRATE_DIRECTION eDirection, BOOL fThin, float *pflRate) = 0;
- virtual HRESULT STDMETHODCALLTYPE IsRateSupported(BOOL fThin, float flRate, float *pflNearestSupportedRate) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFRateSupport, 0x0a9ccdbc, 0xd797, 0x4563, 0x96,0x67, 0x94,0xec,0x5d,0x79,0x29,0x2d)
-#endif
-#endif // __IMFRateSupport_INTERFACE_DEFINED__
-
-#ifndef __IMFTopologyServiceLookup_INTERFACE_DEFINED__
-#define __IMFTopologyServiceLookup_INTERFACE_DEFINED__
-typedef enum _MF_SERVICE_LOOKUP_TYPE
-{
- MF_SERVICE_LOOKUP_UPSTREAM = 0,
- MF_SERVICE_LOOKUP_UPSTREAM_DIRECT = (MF_SERVICE_LOOKUP_UPSTREAM + 1),
- MF_SERVICE_LOOKUP_DOWNSTREAM = (MF_SERVICE_LOOKUP_UPSTREAM_DIRECT + 1),
- MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT = (MF_SERVICE_LOOKUP_DOWNSTREAM + 1),
- MF_SERVICE_LOOKUP_ALL = (MF_SERVICE_LOOKUP_DOWNSTREAM_DIRECT + 1),
- MF_SERVICE_LOOKUP_GLOBAL = (MF_SERVICE_LOOKUP_ALL + 1)
-} MF_SERVICE_LOOKUP_TYPE;
-
-DEFINE_GUID(IID_IMFTopologyServiceLookup, 0xfa993889, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7);
-MIDL_INTERFACE("fa993889-4383-415a-a930-dd472a8cf6f7")
-IMFTopologyServiceLookup : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE LookupService(MF_SERVICE_LOOKUP_TYPE Type,
- DWORD dwIndex,
- REFGUID guidService,
- REFIID riid,
- LPVOID *ppvObjects,
- DWORD *pnObjects) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFTopologyServiceLookup, 0xfa993889, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7)
-#endif
-#endif // __IMFTopologyServiceLookup_INTERFACE_DEFINED__
-
-#ifndef __IMFTopologyServiceLookupClient_INTERFACE_DEFINED__
-#define __IMFTopologyServiceLookupClient_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFTopologyServiceLookupClient, 0xfa99388a, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7);
-MIDL_INTERFACE("fa99388a-4383-415a-a930-dd472a8cf6f7")
-IMFTopologyServiceLookupClient : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE InitServicePointers(IMFTopologyServiceLookup *pLookup) = 0;
- virtual HRESULT STDMETHODCALLTYPE ReleaseServicePointers(void) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFTopologyServiceLookupClient, 0xfa99388a, 0x4383, 0x415a, 0xa9,0x30, 0xdd,0x47,0x2a,0x8c,0xf6,0xf7)
-#endif
-#endif // __IMFTopologyServiceLookupClient_INTERFACE_DEFINED__
-
-#ifndef __IMediaEventSink_INTERFACE_DEFINED__
-#define __IMediaEventSink_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMediaEventSink, 0x56a868a2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70);
-MIDL_INTERFACE("56a868a2-0ad4-11ce-b03a-0020af0ba770")
-IMediaEventSink : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE Notify(long EventCode, LONG_PTR EventParam1, LONG_PTR EventParam2) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMediaEventSink, 0x56a868a2, 0x0ad4, 0x11ce, 0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70)
-#endif
-#endif // __IMediaEventSink_INTERFACE_DEFINED__
-
-#ifndef __IMFVideoRenderer_INTERFACE_DEFINED__
-#define __IMFVideoRenderer_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFVideoRenderer, 0xDFDFD197, 0xA9CA, 0x43d8, 0xB3,0x41, 0x6A,0xF3,0x50,0x37,0x92,0xCD);
-MIDL_INTERFACE("DFDFD197-A9CA-43d8-B341-6AF3503792CD")
-IMFVideoRenderer : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE InitializeRenderer(IMFTransform *pVideoMixer,
- IMFVideoPresenter *pVideoPresenter) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFVideoRenderer, 0xDFDFD197, 0xA9CA, 0x43d8, 0xB3,0x41, 0x6A,0xF3,0x50,0x37,0x92,0xCD)
-#endif
-#endif // __IMFVideoRenderer_INTERFACE_DEFINED__
-
-#ifndef __IMFTrackedSample_INTERFACE_DEFINED__
-#define __IMFTrackedSample_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFTrackedSample, 0x245BF8E9, 0x0755, 0x40f7, 0x88,0xA5, 0xAE,0x0F,0x18,0xD5,0x5E,0x17);
-MIDL_INTERFACE("245BF8E9-0755-40f7-88A5-AE0F18D55E17")
-IMFTrackedSample : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE SetAllocator(IMFAsyncCallback *pSampleAllocator, IUnknown *pUnkState) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFTrackedSample, 0x245BF8E9, 0x0755, 0x40f7, 0x88,0xA5, 0xAE,0x0F,0x18,0xD5,0x5E,0x17)
-#endif
-#endif // __IMFTrackedSample_INTERFACE_DEFINED__
-
-#ifndef __IMFDesiredSample_INTERFACE_DEFINED__
-#define __IMFDesiredSample_INTERFACE_DEFINED__
-DEFINE_GUID(IID_IMFDesiredSample, 0x56C294D0, 0x753E, 0x4260, 0x8D,0x61, 0xA3,0xD8,0x82,0x0B,0x1D,0x54);
-MIDL_INTERFACE("56C294D0-753E-4260-8D61-A3D8820B1D54")
-IMFDesiredSample : public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE GetDesiredSampleTimeAndDuration(LONGLONG *phnsSampleTime,
- LONGLONG *phnsSampleDuration) = 0;
- virtual void STDMETHODCALLTYPE SetDesiredSampleTimeAndDuration(LONGLONG hnsSampleTime,
- LONGLONG hnsSampleDuration) = 0;
- virtual void STDMETHODCALLTYPE Clear( void) = 0;
-};
-#ifdef __CRT_UUID_DECL
-__CRT_UUID_DECL(IMFDesiredSample, 0x56C294D0, 0x753E, 0x4260, 0x8D,0x61, 0xA3,0xD8,0x82,0x0B,0x1D,0x54)
-#endif
-#endif
-
-#endif // EVRDEFS_H
-
diff --git a/src/multimedia/platform/windows/evr/evrhelpers_p.h b/src/multimedia/platform/windows/evr/evrhelpers_p.h
index 340658571..d7d6fb298 100644
--- a/src/multimedia/platform/windows/evr/evrhelpers_p.h
+++ b/src/multimedia/platform/windows/evr/evrhelpers_p.h
@@ -51,8 +51,14 @@
// We mean it.
//
-#include "evrdefs_p.h"
#include <qvideoframe.h>
+#include <d3d9.h>
+#include <dxva2api.h>
+#include <evr9.h>
+#include <evr.h>
+#include <mfidl.h>
+#include <mfapi.h>
+#include <mferror.h>
QT_BEGIN_NAMESPACE
diff --git a/src/multimedia/platform/windows/evr/evrvideowindowcontrol.cpp b/src/multimedia/platform/windows/evr/evrvideowindowcontrol.cpp
index 18f883289..013a5dc4d 100644
--- a/src/multimedia/platform/windows/evr/evrvideowindowcontrol.cpp
+++ b/src/multimedia/platform/windows/evr/evrvideowindowcontrol.cpp
@@ -70,9 +70,9 @@ bool EvrVideoWindowControl::setEvr(IUnknown *evr)
IMFGetService *service = NULL;
if (SUCCEEDED(evr->QueryInterface(IID_PPV_ARGS(&service)))
- && SUCCEEDED(service->GetService(mr_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_displayControl)))) {
+ && SUCCEEDED(service->GetService(MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS(&m_displayControl)))) {
- service->GetService(mr_VIDEO_MIXER_SERVICE, IID_PPV_ARGS(&m_processor));
+ service->GetService(MR_VIDEO_MIXER_SERVICE, IID_PPV_ARGS(&m_processor));
setWinId(m_windowId);
setDisplayRect(m_displayRect);
diff --git a/src/multimedia/platform/windows/evr/evrvideowindowcontrol_p.h b/src/multimedia/platform/windows/evr/evrvideowindowcontrol_p.h
index b9fbc271c..19b67df34 100644
--- a/src/multimedia/platform/windows/evr/evrvideowindowcontrol_p.h
+++ b/src/multimedia/platform/windows/evr/evrvideowindowcontrol_p.h
@@ -51,9 +51,12 @@
// We mean it.
//
-#include "private/qplatformvideosink_p.h"
-
-#include "evrdefs_p.h"
+#include <d3d9.h>
+#include <dxva2api.h>
+#include <evr9.h>
+#include <evr.h>
+#include <private/qplatformvideosink_p.h>
+#include <private/qwindowsmfdefs_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader.cpp b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader.cpp
index 2e338476e..a1ff6602f 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader.cpp
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader.cpp
@@ -44,6 +44,7 @@
#include <qmediadevices.h>
#include <qaudiodevice.h>
#include <private/qmemoryvideobuffer_p.h>
+#include <private/qwindowsmfdefs_p.h>
#include <QtCore/qdebug.h>
#include <mmdeviceapi.h>
@@ -78,8 +79,8 @@ HRESULT QWindowsMediaDeviceReader::createSource(const QString &deviceId, bool vi
if (SUCCEEDED(hr)) {
hr = sourceAttributes->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,
- video ? MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
- : MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID);
+ video ? QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
+ : QMM_MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID);
if (SUCCEEDED(hr)) {
hr = sourceAttributes->SetString(video ? MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK
@@ -176,8 +177,8 @@ DWORD QWindowsMediaDeviceReader::findMediaTypeIndex(const QCameraFormat &reqForm
float frameRate = float(num) / den;
if (!reqFormat.isNull()
- && reqFormat.resolution().width() == width
- && reqFormat.resolution().height() == height
+ && UINT32(reqFormat.resolution().width()) == width
+ && UINT32(reqFormat.resolution().height()) == height
&& qFuzzyCompare(reqFormat.maxFrameRate(), frameRate)
&& reqFormat.pixelFormat() == pixelFormat) {
mediaType->Release();
@@ -419,7 +420,7 @@ HRESULT QWindowsMediaDeviceReader::startMonitoring()
IMFSimpleAudioVolume *audioVolume = nullptr;
- if (SUCCEEDED(MFGetService(mediaSink, MR_POLICY_VOLUME_SERVICE, IID_PPV_ARGS(&audioVolume)))) {
+ if (SUCCEEDED(MFGetService(mediaSink, QMM_MR_POLICY_VOLUME_SERVICE, IID_PPV_ARGS(&audioVolume)))) {
audioVolume->SetMasterVolume(float(m_outputVolume));
audioVolume->SetMute(m_outputMuted);
audioVolume->Release();
@@ -683,7 +684,7 @@ bool QWindowsMediaDeviceReader::startRecording(const QString &fileName, const GU
static_cast<IMFSinkWriterCallback*>(this));
if (SUCCEEDED(hr)) {
- hr = writerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, container);
+ hr = writerAttributes->SetGUID(QMM_MF_TRANSCODE_CONTAINERTYPE, container);
if (SUCCEEDED(hr)) {
hr = MFCreateSinkWriterFromURL(reinterpret_cast<LPCWSTR>(fileName.utf16()),
@@ -868,7 +869,7 @@ void QWindowsMediaDeviceReader::setOutputMuted(bool muted)
if (m_active && m_monitorSink) {
IMFSimpleAudioVolume *audioVolume = nullptr;
- if (SUCCEEDED(MFGetService(m_monitorSink, MR_POLICY_VOLUME_SERVICE,
+ if (SUCCEEDED(MFGetService(m_monitorSink, QMM_MR_POLICY_VOLUME_SERVICE,
IID_PPV_ARGS(&audioVolume)))) {
audioVolume->SetMute(m_outputMuted);
audioVolume->Release();
@@ -884,7 +885,7 @@ void QWindowsMediaDeviceReader::setOutputVolume(qreal volume)
if (m_active && m_monitorSink) {
IMFSimpleAudioVolume *audioVolume = nullptr;
- if (SUCCEEDED(MFGetService(m_monitorSink, MR_POLICY_VOLUME_SERVICE,
+ if (SUCCEEDED(MFGetService(m_monitorSink, QMM_MR_POLICY_VOLUME_SERVICE,
IID_PPV_ARGS(&audioVolume)))) {
audioVolume->SetMasterVolume(float(m_outputVolume));
audioVolume->Release();
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader_p.h b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader_p.h
index e7af22e5d..6164d6804 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader_p.h
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediadevicereader_p.h
@@ -77,19 +77,19 @@ public:
~QWindowsMediaDeviceReader();
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
+ STDMETHODIMP_(ULONG) AddRef(void) override;
+ STDMETHODIMP_(ULONG) Release(void) override;
//from IMFSourceReaderCallback
STDMETHODIMP OnReadSample(HRESULT hrStatus, DWORD dwStreamIndex,
- DWORD dwStreamFlags, LONGLONG llTimestamp, IMFSample *pSample);
- STDMETHODIMP OnFlush(DWORD dwStreamIndex);
- STDMETHODIMP OnEvent(DWORD dwStreamIndex, IMFMediaEvent *pEvent);
+ DWORD dwStreamFlags, LONGLONG llTimestamp, IMFSample *pSample) override;
+ STDMETHODIMP OnFlush(DWORD dwStreamIndex) override;
+ STDMETHODIMP OnEvent(DWORD dwStreamIndex, IMFMediaEvent *pEvent) override;
//from IMFSinkWriterCallback
- STDMETHODIMP OnFinalize(HRESULT hrStatus);
- STDMETHODIMP OnMarker(DWORD dwStreamIndex, LPVOID pvContext);
+ STDMETHODIMP OnFinalize(HRESULT hrStatus) override;
+ STDMETHODIMP OnMarker(DWORD dwStreamIndex, LPVOID pvContext) override;
bool activate(const QString &cameraId,
const QCameraFormat &cameraFormat,
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
index 917a92082..1f727e381 100644
--- a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
+++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp
@@ -224,6 +224,7 @@ void QWindowsMediaEncoder::onStreamingError(int errorCode)
void QWindowsMediaEncoder::onRecordingError(int errorCode)
{
+ Q_UNUSED(errorCode);
error(QMediaRecorder::ResourceError, tr("Recording error"));
auto lastState = m_state;
diff --git a/src/multimedia/platform/windows/mfstream_p.h b/src/multimedia/platform/windows/mfstream_p.h
index 975d02c9d..725e23417 100644
--- a/src/multimedia/platform/windows/mfstream_p.h
+++ b/src/multimedia/platform/windows/mfstream_p.h
@@ -68,64 +68,65 @@ public:
~MFStream();
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
- STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) AddRef(void) override;
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP_(ULONG) Release(void) override;
//from IMFByteStream
- STDMETHODIMP GetCapabilities(DWORD *pdwCapabilities);
+ STDMETHODIMP GetCapabilities(DWORD *pdwCapabilities) override;
- STDMETHODIMP GetLength(QWORD *pqwLength);
+ STDMETHODIMP GetLength(QWORD *pqwLength) override;
- STDMETHODIMP SetLength(QWORD);
+ STDMETHODIMP SetLength(QWORD) override;
- STDMETHODIMP GetCurrentPosition(QWORD *pqwPosition);
+ STDMETHODIMP GetCurrentPosition(QWORD *pqwPosition) override;
- STDMETHODIMP SetCurrentPosition(QWORD qwPosition);
+ STDMETHODIMP SetCurrentPosition(QWORD qwPosition) override;
- STDMETHODIMP IsEndOfStream(BOOL *pfEndOfStream);
+ STDMETHODIMP IsEndOfStream(BOOL *pfEndOfStream) override;
- STDMETHODIMP Read(BYTE *pb, ULONG cb, ULONG *pcbRead);
+ STDMETHODIMP Read(BYTE *pb, ULONG cb, ULONG *pcbRead) override;
STDMETHODIMP BeginRead(BYTE *pb, ULONG cb, IMFAsyncCallback *pCallback,
- IUnknown *punkState);
+ IUnknown *punkState) override;
- STDMETHODIMP EndRead(IMFAsyncResult* pResult, ULONG *pcbRead);
+ STDMETHODIMP EndRead(IMFAsyncResult* pResult, ULONG *pcbRead) override;
- STDMETHODIMP Write(const BYTE *, ULONG, ULONG *);
+ STDMETHODIMP Write(const BYTE *, ULONG, ULONG *) override;
STDMETHODIMP BeginWrite(const BYTE *, ULONG ,
IMFAsyncCallback *,
- IUnknown *);
+ IUnknown *) override;
STDMETHODIMP EndWrite(IMFAsyncResult *,
- ULONG *);
+ ULONG *) override;
STDMETHODIMP Seek(
MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
LONGLONG llSeekOffset,
DWORD,
- QWORD *pqwCurrentPosition);
+ QWORD *pqwCurrentPosition) override;
- STDMETHODIMP Flush();
+ STDMETHODIMP Flush() override;
- STDMETHODIMP Close();
+ STDMETHODIMP Close() override;
private:
class AsyncReadState : public IUnknown
{
public:
AsyncReadState(BYTE *pb, ULONG cb);
+ virtual ~AsyncReadState() = default;
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
- STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) AddRef(void) override;
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP_(ULONG) Release(void) override;
BYTE* pb() const;
ULONG cb() const;
@@ -152,7 +153,7 @@ private Q_SLOTS:
void handleReadyRead();
protected:
- void customEvent(QEvent *event);
+ void customEvent(QEvent *event) override;
IMFAsyncResult *m_currentReadResult;
};
diff --git a/src/multimedia/platform/windows/player/mfactivate_p.h b/src/multimedia/platform/windows/player/mfactivate_p.h
index 86ef1c438..d3d5cf212 100644
--- a/src/multimedia/platform/windows/player/mfactivate_p.h
+++ b/src/multimedia/platform/windows/player/mfactivate_p.h
@@ -60,157 +60,157 @@ public:
virtual ~MFAbstractActivate();
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
+ STDMETHODIMP_(ULONG) AddRef(void) override;
+ STDMETHODIMP_(ULONG) Release(void) override;
//from IMFAttributes
- STDMETHODIMP GetItem(REFGUID guidKey, PROPVARIANT *pValue)
+ STDMETHODIMP GetItem(REFGUID guidKey, PROPVARIANT *pValue) override
{
return m_attributes->GetItem(guidKey, pValue);
}
- STDMETHODIMP GetItemType(REFGUID guidKey, MF_ATTRIBUTE_TYPE *pType)
+ STDMETHODIMP GetItemType(REFGUID guidKey, MF_ATTRIBUTE_TYPE *pType) override
{
return m_attributes->GetItemType(guidKey, pType);
}
- STDMETHODIMP CompareItem(REFGUID guidKey, REFPROPVARIANT Value, BOOL *pbResult)
+ STDMETHODIMP CompareItem(REFGUID guidKey, REFPROPVARIANT Value, BOOL *pbResult) override
{
return m_attributes->CompareItem(guidKey, Value, pbResult);
}
- STDMETHODIMP Compare(IMFAttributes *pTheirs, MF_ATTRIBUTES_MATCH_TYPE MatchType, BOOL *pbResult)
+ STDMETHODIMP Compare(IMFAttributes *pTheirs, MF_ATTRIBUTES_MATCH_TYPE MatchType, BOOL *pbResult) override
{
return m_attributes->Compare(pTheirs, MatchType, pbResult);
}
- STDMETHODIMP GetUINT32(REFGUID guidKey, UINT32 *punValue)
+ STDMETHODIMP GetUINT32(REFGUID guidKey, UINT32 *punValue) override
{
return m_attributes->GetUINT32(guidKey, punValue);
}
- STDMETHODIMP GetUINT64(REFGUID guidKey, UINT64 *punValue)
+ STDMETHODIMP GetUINT64(REFGUID guidKey, UINT64 *punValue) override
{
return m_attributes->GetUINT64(guidKey, punValue);
}
- STDMETHODIMP GetDouble(REFGUID guidKey, double *pfValue)
+ STDMETHODIMP GetDouble(REFGUID guidKey, double *pfValue) override
{
return m_attributes->GetDouble(guidKey, pfValue);
}
- STDMETHODIMP GetGUID(REFGUID guidKey, GUID *pguidValue)
+ STDMETHODIMP GetGUID(REFGUID guidKey, GUID *pguidValue) override
{
return m_attributes->GetGUID(guidKey, pguidValue);
}
- STDMETHODIMP GetStringLength(REFGUID guidKey, UINT32 *pcchLength)
+ STDMETHODIMP GetStringLength(REFGUID guidKey, UINT32 *pcchLength) override
{
return m_attributes->GetStringLength(guidKey, pcchLength);
}
- STDMETHODIMP GetString(REFGUID guidKey, LPWSTR pwszValue, UINT32 cchBufSize, UINT32 *pcchLength)
+ STDMETHODIMP GetString(REFGUID guidKey, LPWSTR pwszValue, UINT32 cchBufSize, UINT32 *pcchLength) override
{
return m_attributes->GetString(guidKey, pwszValue, cchBufSize, pcchLength);
}
- STDMETHODIMP GetAllocatedString(REFGUID guidKey, LPWSTR *ppwszValue, UINT32 *pcchLength)
+ STDMETHODIMP GetAllocatedString(REFGUID guidKey, LPWSTR *ppwszValue, UINT32 *pcchLength) override
{
return m_attributes->GetAllocatedString(guidKey, ppwszValue, pcchLength);
}
- STDMETHODIMP GetBlobSize(REFGUID guidKey, UINT32 *pcbBlobSize)
+ STDMETHODIMP GetBlobSize(REFGUID guidKey, UINT32 *pcbBlobSize) override
{
return m_attributes->GetBlobSize(guidKey, pcbBlobSize);
}
- STDMETHODIMP GetBlob(REFGUID guidKey, UINT8 *pBuf, UINT32 cbBufSize, UINT32 *pcbBlobSize)
+ STDMETHODIMP GetBlob(REFGUID guidKey, UINT8 *pBuf, UINT32 cbBufSize, UINT32 *pcbBlobSize) override
{
return m_attributes->GetBlob(guidKey, pBuf, cbBufSize, pcbBlobSize);
}
- STDMETHODIMP GetAllocatedBlob(REFGUID guidKey, UINT8 **ppBuf, UINT32 *pcbSize)
+ STDMETHODIMP GetAllocatedBlob(REFGUID guidKey, UINT8 **ppBuf, UINT32 *pcbSize) override
{
return m_attributes->GetAllocatedBlob(guidKey, ppBuf, pcbSize);
}
- STDMETHODIMP GetUnknown(REFGUID guidKey, REFIID riid, LPVOID *ppv)
+ STDMETHODIMP GetUnknown(REFGUID guidKey, REFIID riid, LPVOID *ppv) override
{
return m_attributes->GetUnknown(guidKey, riid, ppv);
}
- STDMETHODIMP SetItem(REFGUID guidKey, REFPROPVARIANT Value)
+ STDMETHODIMP SetItem(REFGUID guidKey, REFPROPVARIANT Value) override
{
return m_attributes->SetItem(guidKey, Value);
}
- STDMETHODIMP DeleteItem(REFGUID guidKey)
+ STDMETHODIMP DeleteItem(REFGUID guidKey) override
{
return m_attributes->DeleteItem(guidKey);
}
- STDMETHODIMP DeleteAllItems()
+ STDMETHODIMP DeleteAllItems() override
{
return m_attributes->DeleteAllItems();
}
- STDMETHODIMP SetUINT32(REFGUID guidKey, UINT32 unValue)
+ STDMETHODIMP SetUINT32(REFGUID guidKey, UINT32 unValue) override
{
return m_attributes->SetUINT32(guidKey, unValue);
}
- STDMETHODIMP SetUINT64(REFGUID guidKey, UINT64 unValue)
+ STDMETHODIMP SetUINT64(REFGUID guidKey, UINT64 unValue) override
{
return m_attributes->SetUINT64(guidKey, unValue);
}
- STDMETHODIMP SetDouble(REFGUID guidKey, double fValue)
+ STDMETHODIMP SetDouble(REFGUID guidKey, double fValue) override
{
return m_attributes->SetDouble(guidKey, fValue);
}
- STDMETHODIMP SetGUID(REFGUID guidKey, REFGUID guidValue)
+ STDMETHODIMP SetGUID(REFGUID guidKey, REFGUID guidValue) override
{
return m_attributes->SetGUID(guidKey, guidValue);
}
- STDMETHODIMP SetString(REFGUID guidKey, LPCWSTR wszValue)
+ STDMETHODIMP SetString(REFGUID guidKey, LPCWSTR wszValue) override
{
return m_attributes->SetString(guidKey, wszValue);
}
- STDMETHODIMP SetBlob(REFGUID guidKey, const UINT8 *pBuf, UINT32 cbBufSize)
+ STDMETHODIMP SetBlob(REFGUID guidKey, const UINT8 *pBuf, UINT32 cbBufSize) override
{
return m_attributes->SetBlob(guidKey, pBuf, cbBufSize);
}
- STDMETHODIMP SetUnknown(REFGUID guidKey, IUnknown *pUnknown)
+ STDMETHODIMP SetUnknown(REFGUID guidKey, IUnknown *pUnknown) override
{
return m_attributes->SetUnknown(guidKey, pUnknown);
}
- STDMETHODIMP LockStore()
+ STDMETHODIMP LockStore() override
{
return m_attributes->LockStore();
}
- STDMETHODIMP UnlockStore()
+ STDMETHODIMP UnlockStore() override
{
return m_attributes->UnlockStore();
}
- STDMETHODIMP GetCount(UINT32 *pcItems)
+ STDMETHODIMP GetCount(UINT32 *pcItems) override
{
return m_attributes->GetCount(pcItems);
}
- STDMETHODIMP GetItemByIndex(UINT32 unIndex, GUID *pguidKey, PROPVARIANT *pValue)
+ STDMETHODIMP GetItemByIndex(UINT32 unIndex, GUID *pguidKey, PROPVARIANT *pValue) override
{
return m_attributes->GetItemByIndex(unIndex, pguidKey, pValue);
}
- STDMETHODIMP CopyAllItems(IMFAttributes *pDest)
+ STDMETHODIMP CopyAllItems(IMFAttributes *pDest) override
{
return m_attributes->CopyAllItems(pDest);
}
diff --git a/src/multimedia/platform/windows/player/mfplayercontrol.cpp b/src/multimedia/platform/windows/player/mfplayercontrol.cpp
index 47e74ab38..d78768546 100644
--- a/src/multimedia/platform/windows/player/mfplayercontrol.cpp
+++ b/src/multimedia/platform/windows/player/mfplayercontrol.cpp
@@ -170,6 +170,8 @@ void MFPlayerControl::handleStatusChanged()
if (m_state == QMediaPlayer::PlayingState)
m_session->start();
break;
+ default:
+ break;
}
emit mediaStatusChanged(m_session->status());
refreshState();
diff --git a/src/multimedia/platform/windows/player/mfplayersession.cpp b/src/multimedia/platform/windows/player/mfplayersession.cpp
index aeeb7c792..b814283c8 100644
--- a/src/multimedia/platform/windows/player/mfplayersession.cpp
+++ b/src/multimedia/platform/windows/player/mfplayersession.cpp
@@ -54,6 +54,7 @@
#include "mfevrvideowindowcontrol_p.h"
#include "mfvideorenderercontrol_p.h"
#include <private/mfmetadata_p.h>
+#include <private/qwindowsmfdefs_p.h>
#include "mfplayersession_p.h"
#include <mferror.h>
@@ -69,6 +70,7 @@
//#define DEBUG_MEDIAFOUNDATION
+
MFPlayerSession::MFPlayerSession(MFPlayerControl *playerControl)
: m_cRef(1)
, m_playerControl(playerControl)
@@ -270,16 +272,16 @@ bool MFPlayerSession::getStreamInfo(IMFStreamDescriptor *stream,
if (SUCCEEDED(stream->GetMediaTypeHandler(&typeHandler))) {
UINT32 len = 0;
- if (SUCCEEDED(stream->GetStringLength(MF_SD_STREAM_NAME, &len)) && len > 0) {
+ if (SUCCEEDED(stream->GetStringLength(QMM_MF_SD_STREAM_NAME, &len)) && len > 0) {
WCHAR *wstr = new WCHAR[len+1];
- if (SUCCEEDED(stream->GetString(MF_SD_STREAM_NAME, wstr, len+1, &len))) {
+ if (SUCCEEDED(stream->GetString(QMM_MF_SD_STREAM_NAME, wstr, len+1, &len))) {
*name = QString::fromUtf16(reinterpret_cast<const char16_t *>(wstr));
}
delete []wstr;
}
- if (SUCCEEDED(stream->GetStringLength(MF_SD_LANGUAGE, &len)) && len > 0) {
+ if (SUCCEEDED(stream->GetStringLength(QMM_MF_SD_LANGUAGE, &len)) && len > 0) {
WCHAR *wstr = new WCHAR[len+1];
- if (SUCCEEDED(stream->GetString(MF_SD_LANGUAGE, wstr, len+1, &len))) {
+ if (SUCCEEDED(stream->GetString(QMM_MF_SD_LANGUAGE, wstr, len+1, &len))) {
*language = QString::fromUtf16(reinterpret_cast<const char16_t *>(wstr));
}
delete []wstr;
@@ -378,6 +380,8 @@ void MFPlayerSession::setupPlaybackTopology(IMFMediaSource *source, IMFPresentat
case Video:
emit videoAvailable();
break;
+ default:
+ break;
}
}
outputNode->Release();
@@ -398,7 +402,7 @@ void MFPlayerSession::setupPlaybackTopology(IMFMediaSource *source, IMFPresentat
changeStatus(QMediaPlayer::InvalidMedia);
emit error(QMediaPlayer::ResourceError, tr("Unable to play."), true);
} else {
- if (m_trackInfo[QPlatformMediaPlayer::VideoStream].outputNodeId != -1)
+ if (m_trackInfo[QPlatformMediaPlayer::VideoStream].outputNodeId != TOPOID(-1))
topology = insertMFT(topology, m_trackInfo[QPlatformMediaPlayer::VideoStream].outputNodeId);
hr = m_session->SetTopology(MFSESSION_SETTOPOLOGY_IMMEDIATE, topology);
@@ -1804,6 +1808,8 @@ void MFPlayerSession::updatePendingCommands(Command command)
start();
setPositionInternal(m_request.start, m_request.command);
break;
+ default:
+ break;
}
m_request.setCommand(CmdNone);
}
@@ -1833,8 +1839,8 @@ void MFPlayerSession::clear()
m_trackInfo[i].metaData.clear();
m_trackInfo[i].nativeIndexes.clear();
m_trackInfo[i].currentIndex = -1;
- m_trackInfo[i].sourceNodeId = -1;
- m_trackInfo[i].outputNodeId = -1;
+ m_trackInfo[i].sourceNodeId = TOPOID(-1);
+ m_trackInfo[i].outputNodeId = TOPOID(-1);
}
if (!m_metaData.isEmpty()) {
@@ -1915,27 +1921,27 @@ void MFPlayerSession::setActiveTrack(QPlatformMediaPlayer::TrackType type, int i
IMFTopology *topology = nullptr;
- if (SUCCEEDED(m_session->GetFullTopology(MFSESSION_GETFULLTOPOLOGY_CURRENT, 0, &topology))) {
+ if (SUCCEEDED(m_session->GetFullTopology(QMM_MFSESSION_GETFULLTOPOLOGY_CURRENT, 0, &topology))) {
m_restorePosition = position() * 10000;
if (m_state.command == CmdStart)
stop();
- if (m_trackInfo[type].outputNodeId != -1) {
+ if (m_trackInfo[type].outputNodeId != TOPOID(-1)) {
IMFTopologyNode *node = nullptr;
if (SUCCEEDED(topology->GetNodeByID(m_trackInfo[type].outputNodeId, &node))) {
topology->RemoveNode(node);
node->Release();
- m_trackInfo[type].outputNodeId = -1;
+ m_trackInfo[type].outputNodeId = TOPOID(-1);
}
}
- if (m_trackInfo[type].sourceNodeId != -1) {
+ if (m_trackInfo[type].sourceNodeId != TOPOID(-1)) {
IMFTopologyNode *node = nullptr;
if (SUCCEEDED(topology->GetNodeByID(m_trackInfo[type].sourceNodeId, &node))) {
topology->RemoveNode(node);
node->Release();
- m_trackInfo[type].sourceNodeId = -1;
+ m_trackInfo[type].sourceNodeId = TOPOID(-1);
}
}
diff --git a/src/multimedia/platform/windows/player/mfplayersession_p.h b/src/multimedia/platform/windows/player/mfplayersession_p.h
index 3aafedb86..1a46f6944 100644
--- a/src/multimedia/platform/windows/player/mfplayersession_p.h
+++ b/src/multimedia/platform/windows/player/mfplayersession_p.h
@@ -88,15 +88,15 @@ public:
MFPlayerSession(MFPlayerControl *playerControl = 0);
~MFPlayerSession();
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
- STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) AddRef(void) override;
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP_(ULONG) Release(void) override;
- STDMETHODIMP Invoke(IMFAsyncResult *pResult);
+ STDMETHODIMP Invoke(IMFAsyncResult *pResult) override;
- STDMETHODIMP GetParameters(DWORD *pdwFlags, DWORD *pdwQueue)
+ STDMETHODIMP GetParameters(DWORD *pdwFlags, DWORD *pdwQueue) override
{
Q_UNUSED(pdwFlags);
Q_UNUSED(pdwQueue);
diff --git a/src/multimedia/platform/windows/player/mftvideo.cpp b/src/multimedia/platform/windows/player/mftvideo.cpp
index 5028bd053..fcc8d17c5 100644
--- a/src/multimedia/platform/windows/player/mftvideo.cpp
+++ b/src/multimedia/platform/windows/player/mftvideo.cpp
@@ -481,6 +481,9 @@ STDMETHODIMP MFTransform::ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ul
case MFT_MESSAGE_NOTIFY_END_OF_STREAM:
case MFT_MESSAGE_NOTIFY_START_OF_STREAM:
break;
+
+ default:
+ break;
}
return hr;
diff --git a/src/multimedia/platform/windows/player/mftvideo_p.h b/src/multimedia/platform/windows/player/mftvideo_p.h
index a8a0337cc..6c0c2e6e7 100644
--- a/src/multimedia/platform/windows/player/mftvideo_p.h
+++ b/src/multimedia/platform/windows/player/mftvideo_p.h
@@ -69,7 +69,7 @@ class MFTransform: public IMFTransform
{
public:
MFTransform();
- ~MFTransform();
+ virtual ~MFTransform();
void addProbe(MFVideoProbeControl* probe);
void removeProbe(MFVideoProbeControl* probe);
@@ -77,34 +77,34 @@ public:
void setVideoSink(IUnknown *videoSink);
// IUnknown methods
- STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv) override;
+ STDMETHODIMP_(ULONG) AddRef() override;
+ STDMETHODIMP_(ULONG) Release() override;
// IMFTransform methods
- STDMETHODIMP GetStreamLimits(DWORD *pdwInputMinimum, DWORD *pdwInputMaximum, DWORD *pdwOutputMinimum, DWORD *pdwOutputMaximum);
- STDMETHODIMP GetStreamCount(DWORD *pcInputStreams, DWORD *pcOutputStreams);
- STDMETHODIMP GetStreamIDs(DWORD dwInputIDArraySize, DWORD *pdwInputIDs, DWORD dwOutputIDArraySize, DWORD *pdwOutputIDs);
- STDMETHODIMP GetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO *pStreamInfo);
- STDMETHODIMP GetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO *pStreamInfo);
- STDMETHODIMP GetAttributes(IMFAttributes **pAttributes);
- STDMETHODIMP GetInputStreamAttributes(DWORD dwInputStreamID, IMFAttributes **pAttributes);
- STDMETHODIMP GetOutputStreamAttributes(DWORD dwOutputStreamID, IMFAttributes **pAttributes);
- STDMETHODIMP DeleteInputStream(DWORD dwStreamID);
- STDMETHODIMP AddInputStreams(DWORD cStreams, DWORD *adwStreamIDs);
- STDMETHODIMP GetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType);
- STDMETHODIMP GetOutputAvailableType(DWORD dwOutputStreamID,DWORD dwTypeIndex, IMFMediaType **ppType);
- STDMETHODIMP SetInputType(DWORD dwInputStreamID, IMFMediaType *pType, DWORD dwFlags);
- STDMETHODIMP SetOutputType(DWORD dwOutputStreamID, IMFMediaType *pType, DWORD dwFlags);
- STDMETHODIMP GetInputCurrentType(DWORD dwInputStreamID, IMFMediaType **ppType);
- STDMETHODIMP GetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType **ppType);
- STDMETHODIMP GetInputStatus(DWORD dwInputStreamID, DWORD *pdwFlags);
- STDMETHODIMP GetOutputStatus(DWORD *pdwFlags);
- STDMETHODIMP SetOutputBounds(LONGLONG hnsLowerBound, LONGLONG hnsUpperBound);
- STDMETHODIMP ProcessEvent(DWORD dwInputStreamID, IMFMediaEvent *pEvent);
- STDMETHODIMP ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam);
- STDMETHODIMP ProcessInput(DWORD dwInputStreamID, IMFSample *pSample, DWORD dwFlags);
- STDMETHODIMP ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER *pOutputSamples, DWORD *pdwStatus);
+ STDMETHODIMP GetStreamLimits(DWORD *pdwInputMinimum, DWORD *pdwInputMaximum, DWORD *pdwOutputMinimum, DWORD *pdwOutputMaximum) override;
+ STDMETHODIMP GetStreamCount(DWORD *pcInputStreams, DWORD *pcOutputStreams) override;
+ STDMETHODIMP GetStreamIDs(DWORD dwInputIDArraySize, DWORD *pdwInputIDs, DWORD dwOutputIDArraySize, DWORD *pdwOutputIDs) override;
+ STDMETHODIMP GetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO *pStreamInfo) override;
+ STDMETHODIMP GetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO *pStreamInfo) override;
+ STDMETHODIMP GetAttributes(IMFAttributes **pAttributes) override;
+ STDMETHODIMP GetInputStreamAttributes(DWORD dwInputStreamID, IMFAttributes **pAttributes) override;
+ STDMETHODIMP GetOutputStreamAttributes(DWORD dwOutputStreamID, IMFAttributes **pAttributes) override;
+ STDMETHODIMP DeleteInputStream(DWORD dwStreamID) override;
+ STDMETHODIMP AddInputStreams(DWORD cStreams, DWORD *adwStreamIDs) override;
+ STDMETHODIMP GetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, IMFMediaType **ppType) override;
+ STDMETHODIMP GetOutputAvailableType(DWORD dwOutputStreamID,DWORD dwTypeIndex, IMFMediaType **ppType) override;
+ STDMETHODIMP SetInputType(DWORD dwInputStreamID, IMFMediaType *pType, DWORD dwFlags) override;
+ STDMETHODIMP SetOutputType(DWORD dwOutputStreamID, IMFMediaType *pType, DWORD dwFlags) override;
+ STDMETHODIMP GetInputCurrentType(DWORD dwInputStreamID, IMFMediaType **ppType) override;
+ STDMETHODIMP GetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType **ppType) override;
+ STDMETHODIMP GetInputStatus(DWORD dwInputStreamID, DWORD *pdwFlags) override;
+ STDMETHODIMP GetOutputStatus(DWORD *pdwFlags) override;
+ STDMETHODIMP SetOutputBounds(LONGLONG hnsLowerBound, LONGLONG hnsUpperBound) override;
+ STDMETHODIMP ProcessEvent(DWORD dwInputStreamID, IMFMediaEvent *pEvent) override;
+ STDMETHODIMP ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam) override;
+ STDMETHODIMP ProcessInput(DWORD dwInputStreamID, IMFSample *pSample, DWORD dwFlags) override;
+ STDMETHODIMP ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER *pOutputSamples, DWORD *pdwStatus) override;
private:
HRESULT OnFlush();
diff --git a/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp b/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp
index a2a83d1cb..3124391d4 100644
--- a/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp
+++ b/src/multimedia/platform/windows/player/mfvideorenderercontrol.cpp
@@ -44,6 +44,7 @@
#include <private/qplatformvideosink_p.h>
#include <private/qabstractvideobuffer_p.h>
+#include <private/qwindowsmfdefs_p.h>
#include <qvideosink.h>
#include <qvideoframeformat.h>
#include <qtcore/qtimer.h>
@@ -116,6 +117,7 @@ namespace
};
// Custom interface for handling IMFStreamSink::PlaceMarker calls asynchronously.
+ static const GUID IID_IMarker = {0xa3ff32de, 0x1031, 0x438a, {0x8b, 0x47, 0x82, 0xf8, 0xac, 0xda, 0x59, 0xb7}};
MIDL_INTERFACE("a3ff32de-1031-438a-8b47-82f8acda59b7")
IMarker : public IUnknown
{
@@ -160,13 +162,13 @@ namespace
}
// IUnknown methods.
- STDMETHODIMP QueryInterface(REFIID iid, void** ppv)
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv) override
{
if (!ppv)
return E_POINTER;
if (iid == IID_IUnknown) {
*ppv = static_cast<IUnknown*>(this);
- } else if (iid == __uuidof(IMarker)) {
+ } else if (iid == IID_IMarker) {
*ppv = static_cast<IMarker*>(this);
} else {
*ppv = NULL;
@@ -176,12 +178,12 @@ namespace
return S_OK;
}
- STDMETHODIMP_(ULONG) AddRef()
+ STDMETHODIMP_(ULONG) AddRef() override
{
return InterlockedIncrement(&m_cRef);
}
- STDMETHODIMP_(ULONG) Release()
+ STDMETHODIMP_(ULONG) Release() override
{
LONG cRef = InterlockedDecrement(&m_cRef);
if (cRef == 0)
@@ -190,7 +192,7 @@ namespace
return cRef;
}
- STDMETHODIMP GetMarkerType(MFSTREAMSINK_MARKER_TYPE *pType)
+ STDMETHODIMP GetMarkerType(MFSTREAMSINK_MARKER_TYPE *pType) override
{
if (pType == NULL)
return E_POINTER;
@@ -198,14 +200,14 @@ namespace
return S_OK;
}
- STDMETHODIMP GetMarkerValue(PROPVARIANT *pvar)
+ STDMETHODIMP GetMarkerValue(PROPVARIANT *pvar) override
{
if (pvar == NULL)
return E_POINTER;
return PropVariantCopy(pvar, &m_varMarkerValue);
}
- STDMETHODIMP GetContext(PROPVARIANT *pvar)
+ STDMETHODIMP GetContext(PROPVARIANT *pvar) override
{
if (pvar == NULL)
return E_POINTER;
@@ -218,9 +220,9 @@ namespace
PROPVARIANT m_varContextValue;
private:
- long m_cRef;
+ long m_cRef = 1;
- Marker(MFSTREAMSINK_MARKER_TYPE eMarkerType) : m_cRef(1), m_eMarkerType(eMarkerType)
+ Marker(MFSTREAMSINK_MARKER_TYPE eMarkerType) : m_eMarkerType(eMarkerType)
{
PropVariantInit(&m_varMarkerValue);
PropVariantInit(&m_varContextValue);
@@ -241,27 +243,8 @@ namespace
static const DWORD DEFAULT_MEDIA_STREAM_ID = 0x0;
MediaStream(IMFMediaSink *parent, MFVideoRendererControl *rendererControl)
- : m_cRef(1)
- , m_eventQueue(0)
- , m_shutdown(false)
- , m_videoSink(0)
- , m_state(State_TypeNotSet)
- , m_currentFormatIndex(-1)
- , m_bytesPerLine(0)
- , m_workQueueId(0)
- , m_workQueueCB(this, &MediaStream::onDispatchWorkItem)
- , m_finalizeResult(0)
- , m_scheduledBuffer(0)
- , m_bufferStartTime(-1)
- , m_bufferDuration(-1)
- , m_presentationClock(0)
- , m_sampleRequested(false)
- , m_currentMediaType(0)
- , m_prerolling(false)
- , m_prerollTargetTime(0)
- , m_startTime(0)
+ : m_workQueueCB(this, &MediaStream::onDispatchWorkItem)
, m_rendererControl(rendererControl)
- , m_rate(1.f)
{
m_sink = parent;
@@ -277,7 +260,7 @@ namespace
}
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject)
+ STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject) override
{
if (!ppvObject)
return E_POINTER;
@@ -297,12 +280,12 @@ namespace
return S_OK;
}
- STDMETHODIMP_(ULONG) AddRef(void)
+ STDMETHODIMP_(ULONG) AddRef(void) override
{
return InterlockedIncrement(&m_cRef);
}
- STDMETHODIMP_(ULONG) Release(void)
+ STDMETHODIMP_(ULONG) Release(void) override
{
LONG cRef = InterlockedDecrement(&m_cRef);
if (cRef == 0)
@@ -314,7 +297,7 @@ namespace
//from IMFMediaEventGenerator
STDMETHODIMP GetEvent(
DWORD dwFlags,
- IMFMediaEvent **ppEvent)
+ IMFMediaEvent **ppEvent) override
{
// GetEvent can block indefinitely, so we don't hold the lock.
// This requires some juggling with the event queue pointer.
@@ -341,7 +324,7 @@ namespace
STDMETHODIMP BeginGetEvent(
IMFAsyncCallback *pCallback,
- IUnknown *punkState)
+ IUnknown *punkState) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -351,7 +334,7 @@ namespace
STDMETHODIMP EndGetEvent(
IMFAsyncResult *pResult,
- IMFMediaEvent **ppEvent)
+ IMFMediaEvent **ppEvent) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -363,7 +346,7 @@ namespace
MediaEventType met,
REFGUID guidExtendedType,
HRESULT hrStatus,
- const PROPVARIANT *pvValue)
+ const PROPVARIANT *pvValue) override
{
#ifdef DEBUG_MEDIAFOUNDATION
qDebug() << "MediaStream::QueueEvent" << met;
@@ -376,7 +359,7 @@ namespace
//from IMFStreamSink
STDMETHODIMP GetMediaSink(
- IMFMediaSink **ppMediaSink)
+ IMFMediaSink **ppMediaSink) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -390,14 +373,14 @@ namespace
}
STDMETHODIMP GetIdentifier(
- DWORD *pdwIdentifier)
+ DWORD *pdwIdentifier) override
{
*pdwIdentifier = MediaStream::DEFAULT_MEDIA_STREAM_ID;
return S_OK;
}
STDMETHODIMP GetMediaTypeHandler(
- IMFMediaTypeHandler **ppHandler)
+ IMFMediaTypeHandler **ppHandler) override
{
LPVOID handler = NULL;
HRESULT hr = QueryInterface(IID_IMFMediaTypeHandler, &handler);
@@ -406,7 +389,7 @@ namespace
}
STDMETHODIMP ProcessSample(
- IMFSample *pSample)
+ IMFSample *pSample) override
{
if (pSample == NULL)
return E_INVALIDARG;
@@ -434,7 +417,7 @@ namespace
STDMETHODIMP PlaceMarker(
MFSTREAMSINK_MARKER_TYPE eMarkerType,
const PROPVARIANT *pvarMarkerValue,
- const PROPVARIANT *pvarContextValue)
+ const PROPVARIANT *pvarContextValue) override
{
HRESULT hr = S_OK;
QMutexLocker locker(&m_mutex);
@@ -459,7 +442,7 @@ namespace
return hr;
}
- STDMETHODIMP Flush( void)
+ STDMETHODIMP Flush(void) override
{
#ifdef DEBUG_MEDIAFOUNDATION
qDebug() << "MediaStream::Flush";
@@ -476,7 +459,7 @@ namespace
//from IMFMediaTypeHandler
STDMETHODIMP IsMediaTypeSupported(
IMFMediaType *pMediaType,
- IMFMediaType **ppMediaType)
+ IMFMediaType **ppMediaType) override
{
if (ppMediaType)
*ppMediaType = NULL;
@@ -509,7 +492,7 @@ namespace
}
STDMETHODIMP GetMediaTypeCount(
- DWORD *pdwTypeCount)
+ DWORD *pdwTypeCount) override
{
if (pdwTypeCount == NULL)
return E_INVALIDARG;
@@ -520,7 +503,7 @@ namespace
STDMETHODIMP GetMediaTypeByIndex(
DWORD dwIndex,
- IMFMediaType **ppType)
+ IMFMediaType **ppType) override
{
if (ppType == NULL)
return E_INVALIDARG;
@@ -542,7 +525,7 @@ namespace
}
STDMETHODIMP SetCurrentMediaType(
- IMFMediaType *pMediaType)
+ IMFMediaType *pMediaType) override
{
HRESULT hr = S_OK;
QMutexLocker locker(&m_mutex);
@@ -600,7 +583,7 @@ namespace
}
STDMETHODIMP GetCurrentMediaType(
- IMFMediaType **ppMediaType)
+ IMFMediaType **ppMediaType) override
{
if (ppMediaType == NULL)
return E_INVALIDARG;
@@ -615,7 +598,7 @@ namespace
}
STDMETHODIMP GetMajorType(
- GUID *pguidMajorType)
+ GUID *pguidMajorType) override
{
if (pguidMajorType == NULL)
return E_INVALIDARG;
@@ -720,7 +703,7 @@ namespace
if (SUCCEEDED(hr)) {
MFTIME sysTime;
- if (start != PRESENTATION_CURRENT_POSITION)
+ if (start != QMM_PRESENTATION_CURRENT_POSITION)
m_startTime = start; // Cache the start time.
else
m_presentationClock->GetCorrelatedTime(0, &m_startTime, &sysTime);
@@ -938,14 +921,14 @@ namespace
{
public:
AsyncOperation(StreamOperation op)
- :m_cRef(1), m_op(op)
+ :m_op(op)
{
}
StreamOperation m_op; // The operation to perform.
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID iid, void** ppv)
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv) override
{
if (!ppv)
return E_POINTER;
@@ -958,11 +941,11 @@ namespace
AddRef();
return S_OK;
}
- STDMETHODIMP_(ULONG) AddRef()
+ STDMETHODIMP_(ULONG) AddRef() override
{
return InterlockedIncrement(&m_cRef);
}
- STDMETHODIMP_(ULONG) Release()
+ STDMETHODIMP_(ULONG) Release() override
{
ULONG uCount = InterlockedDecrement(&m_cRef);
if (uCount == 0)
@@ -972,7 +955,7 @@ namespace
}
private:
- long m_cRef;
+ long m_cRef = 1;
virtual ~AsyncOperation()
{
Q_ASSERT(m_cRef == 0);
@@ -983,27 +966,27 @@ namespace
// are valid from which states.
static BOOL ValidStateMatrix[State_Count][Op_Count];
- long m_cRef;
+ long m_cRef = 1;
QMutex m_mutex;
- IMFMediaType *m_currentMediaType;
- State m_state;
- IMFMediaSink *m_sink;
- IMFMediaEventQueue *m_eventQueue;
- DWORD m_workQueueId;
+ IMFMediaType *m_currentMediaType = nullptr;
+ State m_state = State_TypeNotSet;
+ IMFMediaSink *m_sink = nullptr;
+ IMFMediaEventQueue *m_eventQueue = nullptr;
+ DWORD m_workQueueId = 0;
AsyncCallback<MediaStream> m_workQueueCB;
QList<IUnknown*> m_sampleQueue;
- IMFAsyncResult *m_finalizeResult; // Result object for Finalize operation.
- MFTIME m_startTime; // Presentation time when the clock started.
+ IMFAsyncResult *m_finalizeResult = nullptr; // Result object for Finalize operation.
+ MFTIME m_startTime = 0; // Presentation time when the clock started.
- bool m_shutdown;
+ bool m_shutdown = false;
QList<IMFMediaType*> m_mediaTypes;
QList<QVideoFrameFormat::PixelFormat> m_pixelFormats;
- int m_currentFormatIndex;
- int m_bytesPerLine;
+ int m_currentFormatIndex = -1;
+ int m_bytesPerLine = 0;
QVideoFrameFormat m_surfaceFormat;
- QVideoSink *m_videoSink;
- MFVideoRendererControl *m_rendererControl;
+ QVideoSink *m_videoSink = nullptr;
+ MFVideoRendererControl *m_rendererControl = nullptr;
void clearMediaTypes()
{
@@ -1079,6 +1062,7 @@ namespace
case OpStart:
endPreroll(S_FALSE);
schedulePresentation(true);
+ // fallthrough
case OpRestart:
endPreroll(S_FALSE);
if (SUCCEEDED(hr)) {
@@ -1115,6 +1099,8 @@ namespace
endPreroll(S_FALSE);
hr = dispatchFinalize(pOp);
break;
+ default:
+ break;
}
}
@@ -1171,7 +1157,7 @@ namespace
pUnk = *pos;
// Figure out if this is a marker or a sample.
if (SUCCEEDED(hr)) {
- hr = pUnk->QueryInterface(__uuidof(IMarker), (void**)&pMarker);
+ hr = pUnk->QueryInterface(IID_IMarker, (void**)&pMarker);
if (hr == E_NOINTERFACE)
hr = pUnk->QueryInterface(IID_IMFSample, (void**)&pSample);
}
@@ -1218,8 +1204,8 @@ namespace
m_prerolling = false;
queueEvent(MEStreamSinkPrerolled, GUID_NULL, hrStatus, NULL);
}
- MFTIME m_prerollTargetTime;
- bool m_prerolling;
+ MFTIME m_prerollTargetTime = 0;
+ bool m_prerolling = false;
void clearSampleQueue() {
for (IUnknown* sample : qAsConst(m_sampleQueue))
@@ -1374,12 +1360,12 @@ namespace
queueEvent(MEStreamSinkRequestSample, GUID_NULL, S_OK, NULL);
}
}
- IMFMediaBuffer *m_scheduledBuffer;
- MFTIME m_bufferStartTime;
- MFTIME m_bufferDuration;
- IMFPresentationClock *m_presentationClock;
- bool m_sampleRequested;
- float m_rate;
+ IMFMediaBuffer *m_scheduledBuffer = nullptr;
+ MFTIME m_bufferStartTime = -1;
+ MFTIME m_bufferDuration = -1;
+ IMFPresentationClock *m_presentationClock = nullptr;
+ bool m_sampleRequested = false;
+ float m_rate = 1.f;
};
BOOL MediaStream::ValidStateMatrix[MediaStream::State_Count][MediaStream::Op_Count] =
@@ -1415,15 +1401,11 @@ namespace
{
public:
MediaSink(MFVideoRendererControl *rendererControl)
- : m_cRef(1)
- , m_shutdown(false)
- , m_presentationClock(0)
- , m_playRate(1)
{
m_stream = new MediaStream(this, rendererControl);
}
- ~MediaSink()
+ virtual ~MediaSink()
{
Q_ASSERT(m_shutdown);
}
@@ -1469,7 +1451,7 @@ namespace
}
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject)
+ STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject) override
{
if (!ppvObject)
return E_POINTER;
@@ -1493,12 +1475,12 @@ namespace
return S_OK;
}
- STDMETHODIMP_(ULONG) AddRef(void)
+ STDMETHODIMP_(ULONG) AddRef(void) override
{
return InterlockedIncrement(&m_cRef);
}
- STDMETHODIMP_(ULONG) Release(void)
+ STDMETHODIMP_(ULONG) Release(void) override
{
LONG cRef = InterlockedDecrement(&m_cRef);
if (cRef == 0)
@@ -1510,7 +1492,7 @@ namespace
// IMFGetService methods
STDMETHODIMP GetService(const GUID &guidService,
const IID &riid,
- LPVOID *ppvObject)
+ LPVOID *ppvObject) override
{
if (!ppvObject)
return E_POINTER;
@@ -1522,7 +1504,7 @@ namespace
}
//IMFMediaSinkPreroll
- STDMETHODIMP NotifyPreroll(MFTIME hnsUpcomingStartTime)
+ STDMETHODIMP NotifyPreroll(MFTIME hnsUpcomingStartTime) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1531,7 +1513,7 @@ namespace
}
//from IMFFinalizableMediaSink
- STDMETHODIMP BeginFinalize(IMFAsyncCallback *pCallback, IUnknown *punkState)
+ STDMETHODIMP BeginFinalize(IMFAsyncCallback *pCallback, IUnknown *punkState) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1539,7 +1521,7 @@ namespace
return m_stream->finalize(pCallback, punkState);
}
- STDMETHODIMP EndFinalize(IMFAsyncResult *pResult)
+ STDMETHODIMP EndFinalize(IMFAsyncResult *pResult) override
{
HRESULT hr = S_OK;
// Return the status code from the async result.
@@ -1552,7 +1534,7 @@ namespace
//from IMFMediaSink
STDMETHODIMP GetCharacteristics(
- DWORD *pdwCharacteristics)
+ DWORD *pdwCharacteristics) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1564,21 +1546,21 @@ namespace
STDMETHODIMP AddStreamSink(
DWORD,
IMFMediaType *,
- IMFStreamSink **)
+ IMFStreamSink **) override
{
QMutexLocker locker(&m_mutex);
return m_shutdown ? MF_E_SHUTDOWN : MF_E_STREAMSINKS_FIXED;
}
STDMETHODIMP RemoveStreamSink(
- DWORD)
+ DWORD) override
{
QMutexLocker locker(&m_mutex);
return m_shutdown ? MF_E_SHUTDOWN : MF_E_STREAMSINKS_FIXED;
}
STDMETHODIMP GetStreamSinkCount(
- DWORD *pcStreamSinkCount)
+ DWORD *pcStreamSinkCount) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1589,7 +1571,7 @@ namespace
STDMETHODIMP GetStreamSinkByIndex(
DWORD dwIndex,
- IMFStreamSink **ppStreamSink)
+ IMFStreamSink **ppStreamSink) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1605,7 +1587,7 @@ namespace
STDMETHODIMP GetStreamSinkById(
DWORD dwStreamSinkIdentifier,
- IMFStreamSink **ppStreamSink)
+ IMFStreamSink **ppStreamSink) override
{
if (ppStreamSink == NULL)
return E_INVALIDARG;
@@ -1622,7 +1604,7 @@ namespace
}
STDMETHODIMP SetPresentationClock(
- IMFPresentationClock *pPresentationClock)
+ IMFPresentationClock *pPresentationClock) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1642,7 +1624,7 @@ namespace
}
STDMETHODIMP GetPresentationClock(
- IMFPresentationClock **ppPresentationClock)
+ IMFPresentationClock **ppPresentationClock) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1655,7 +1637,7 @@ namespace
return MF_E_NO_CLOCK;
}
- STDMETHODIMP Shutdown(void)
+ STDMETHODIMP Shutdown(void) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1673,7 +1655,7 @@ namespace
}
// IMFClockStateSink methods
- STDMETHODIMP OnClockStart(MFTIME, LONGLONG llClockStartOffset)
+ STDMETHODIMP OnClockStart(MFTIME, LONGLONG llClockStartOffset) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1681,7 +1663,7 @@ namespace
return m_stream->start(llClockStartOffset);
}
- STDMETHODIMP OnClockStop(MFTIME)
+ STDMETHODIMP OnClockStop(MFTIME) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1689,7 +1671,7 @@ namespace
return m_stream->stop();
}
- STDMETHODIMP OnClockPause(MFTIME)
+ STDMETHODIMP OnClockPause(MFTIME) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1697,7 +1679,7 @@ namespace
return m_stream->pause();
}
- STDMETHODIMP OnClockRestart(MFTIME)
+ STDMETHODIMP OnClockRestart(MFTIME) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1705,7 +1687,7 @@ namespace
return m_stream->restart();
}
- STDMETHODIMP OnClockSetRate(MFTIME, float flRate)
+ STDMETHODIMP OnClockSetRate(MFTIME, float flRate) override
{
QMutexLocker locker(&m_mutex);
if (m_shutdown)
@@ -1717,7 +1699,7 @@ namespace
// IMFRateSupport methods
STDMETHODIMP GetFastestRate(MFRATE_DIRECTION eDirection,
BOOL fThin,
- float *pflRate)
+ float *pflRate) override
{
if (!pflRate)
return E_POINTER;
@@ -1729,7 +1711,7 @@ namespace
STDMETHODIMP GetSlowestRate(MFRATE_DIRECTION eDirection,
BOOL fThin,
- float *pflRate)
+ float *pflRate) override
{
Q_UNUSED(eDirection);
Q_UNUSED(fThin);
@@ -1745,7 +1727,7 @@ namespace
STDMETHODIMP IsRateSupported(BOOL fThin,
float flRate,
- float *pflNearestSupportedRate)
+ float *pflNearestSupportedRate) override
{
HRESULT hr = S_OK;
@@ -1777,12 +1759,12 @@ namespace
}
private:
- long m_cRef;
+ long m_cRef = 1;
QMutex m_mutex;
- bool m_shutdown;
- IMFPresentationClock *m_presentationClock;
- MediaStream *m_stream;
- float m_playRate;
+ bool m_shutdown = false;
+ IMFPresentationClock *m_presentationClock = nullptr;
+ MediaStream *m_stream = nullptr;
+ float m_playRate = 1;
};
class VideoRendererActivate : public IMFActivate
@@ -1799,13 +1781,13 @@ namespace
m_sink = new MediaSink(rendererControl);
}
- ~VideoRendererActivate()
+ virtual ~VideoRendererActivate()
{
m_attributes->Release();
}
//from IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject)
+ STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject) override
{
if (!ppvObject)
return E_POINTER;
@@ -1823,12 +1805,12 @@ namespace
return S_OK;
}
- STDMETHODIMP_(ULONG) AddRef(void)
+ STDMETHODIMP_(ULONG) AddRef(void) override
{
return InterlockedIncrement(&m_cRef);
}
- STDMETHODIMP_(ULONG) Release(void)
+ STDMETHODIMP_(ULONG) Release(void) override
{
LONG cRef = InterlockedDecrement(&m_cRef);
if (cRef == 0)
@@ -1838,7 +1820,7 @@ namespace
}
//from IMFActivate
- STDMETHODIMP ActivateObject(REFIID riid, void **ppv)
+ STDMETHODIMP ActivateObject(REFIID riid, void **ppv) override
{
if (!ppv)
return E_INVALIDARG;
@@ -1851,7 +1833,7 @@ namespace
return m_sink->QueryInterface(riid, ppv);
}
- STDMETHODIMP ShutdownObject(void)
+ STDMETHODIMP ShutdownObject(void) override
{
QMutexLocker locker(&m_mutex);
HRESULT hr = S_OK;
@@ -1863,7 +1845,7 @@ namespace
return hr;
}
- STDMETHODIMP DetachObject(void)
+ STDMETHODIMP DetachObject(void) override
{
QMutexLocker locker(&m_mutex);
if (m_sink) {
@@ -1876,14 +1858,14 @@ namespace
//from IMFAttributes
STDMETHODIMP GetItem(
REFGUID guidKey,
- PROPVARIANT *pValue)
+ PROPVARIANT *pValue) override
{
return m_attributes->GetItem(guidKey, pValue);
}
STDMETHODIMP GetItemType(
REFGUID guidKey,
- MF_ATTRIBUTE_TYPE *pType)
+ MF_ATTRIBUTE_TYPE *pType) override
{
return m_attributes->GetItemType(guidKey, pType);
}
@@ -1891,7 +1873,7 @@ namespace
STDMETHODIMP CompareItem(
REFGUID guidKey,
REFPROPVARIANT Value,
- BOOL *pbResult)
+ BOOL *pbResult) override
{
return m_attributes->CompareItem(guidKey, Value, pbResult);
}
@@ -1899,42 +1881,42 @@ namespace
STDMETHODIMP Compare(
IMFAttributes *pTheirs,
MF_ATTRIBUTES_MATCH_TYPE MatchType,
- BOOL *pbResult)
+ BOOL *pbResult) override
{
return m_attributes->Compare(pTheirs, MatchType, pbResult);
}
STDMETHODIMP GetUINT32(
REFGUID guidKey,
- UINT32 *punValue)
+ UINT32 *punValue) override
{
return m_attributes->GetUINT32(guidKey, punValue);
}
STDMETHODIMP GetUINT64(
REFGUID guidKey,
- UINT64 *punValue)
+ UINT64 *punValue) override
{
return m_attributes->GetUINT64(guidKey, punValue);
}
STDMETHODIMP GetDouble(
REFGUID guidKey,
- double *pfValue)
+ double *pfValue) override
{
return m_attributes->GetDouble(guidKey, pfValue);
}
STDMETHODIMP GetGUID(
REFGUID guidKey,
- GUID *pguidValue)
+ GUID *pguidValue) override
{
return m_attributes->GetGUID(guidKey, pguidValue);
}
STDMETHODIMP GetStringLength(
REFGUID guidKey,
- UINT32 *pcchLength)
+ UINT32 *pcchLength) override
{
return m_attributes->GetStringLength(guidKey, pcchLength);
}
@@ -1943,7 +1925,7 @@ namespace
REFGUID guidKey,
LPWSTR pwszValue,
UINT32 cchBufSize,
- UINT32 *pcchLength)
+ UINT32 *pcchLength) override
{
return m_attributes->GetString(guidKey, pwszValue, cchBufSize, pcchLength);
}
@@ -1951,14 +1933,14 @@ namespace
STDMETHODIMP GetAllocatedString(
REFGUID guidKey,
LPWSTR *ppwszValue,
- UINT32 *pcchLength)
+ UINT32 *pcchLength) override
{
return m_attributes->GetAllocatedString(guidKey, ppwszValue, pcchLength);
}
STDMETHODIMP GetBlobSize(
REFGUID guidKey,
- UINT32 *pcbBlobSize)
+ UINT32 *pcbBlobSize) override
{
return m_attributes->GetBlobSize(guidKey, pcbBlobSize);
}
@@ -1967,7 +1949,7 @@ namespace
REFGUID guidKey,
UINT8 *pBuf,
UINT32 cbBufSize,
- UINT32 *pcbBlobSize)
+ UINT32 *pcbBlobSize) override
{
return m_attributes->GetBlob(guidKey, pBuf, cbBufSize, pcbBlobSize);
}
@@ -1975,7 +1957,7 @@ namespace
STDMETHODIMP GetAllocatedBlob(
REFGUID guidKey,
UINT8 **ppBuf,
- UINT32 *pcbSize)
+ UINT32 *pcbSize) override
{
return m_attributes->GetAllocatedBlob(guidKey, ppBuf, pcbSize);
}
@@ -1983,60 +1965,60 @@ namespace
STDMETHODIMP GetUnknown(
REFGUID guidKey,
REFIID riid,
- LPVOID *ppv)
+ LPVOID *ppv) override
{
return m_attributes->GetUnknown(guidKey, riid, ppv);
}
STDMETHODIMP SetItem(
REFGUID guidKey,
- REFPROPVARIANT Value)
+ REFPROPVARIANT Value) override
{
return m_attributes->SetItem(guidKey, Value);
}
STDMETHODIMP DeleteItem(
- REFGUID guidKey)
+ REFGUID guidKey) override
{
return m_attributes->DeleteItem(guidKey);
}
- STDMETHODIMP DeleteAllItems(void)
+ STDMETHODIMP DeleteAllItems(void) override
{
return m_attributes->DeleteAllItems();
}
STDMETHODIMP SetUINT32(
REFGUID guidKey,
- UINT32 unValue)
+ UINT32 unValue) override
{
return m_attributes->SetUINT32(guidKey, unValue);
}
STDMETHODIMP SetUINT64(
REFGUID guidKey,
- UINT64 unValue)
+ UINT64 unValue) override
{
return m_attributes->SetUINT64(guidKey, unValue);
}
STDMETHODIMP SetDouble(
REFGUID guidKey,
- double fValue)
+ double fValue) override
{
return m_attributes->SetDouble(guidKey, fValue);
}
STDMETHODIMP SetGUID(
REFGUID guidKey,
- REFGUID guidValue)
+ REFGUID guidValue) override
{
return m_attributes->SetGUID(guidKey, guidValue);
}
STDMETHODIMP SetString(
REFGUID guidKey,
- LPCWSTR wszValue)
+ LPCWSTR wszValue) override
{
return m_attributes->SetString(guidKey, wszValue);
}
@@ -2044,30 +2026,30 @@ namespace
STDMETHODIMP SetBlob(
REFGUID guidKey,
const UINT8 *pBuf,
- UINT32 cbBufSize)
+ UINT32 cbBufSize) override
{
return m_attributes->SetBlob(guidKey, pBuf, cbBufSize);
}
STDMETHODIMP SetUnknown(
REFGUID guidKey,
- IUnknown *pUnknown)
+ IUnknown *pUnknown) override
{
return m_attributes->SetUnknown(guidKey, pUnknown);
}
- STDMETHODIMP LockStore(void)
+ STDMETHODIMP LockStore(void) override
{
return m_attributes->LockStore();
}
- STDMETHODIMP UnlockStore(void)
+ STDMETHODIMP UnlockStore(void) override
{
return m_attributes->UnlockStore();
}
STDMETHODIMP GetCount(
- UINT32 *pcItems)
+ UINT32 *pcItems) override
{
return m_attributes->GetCount(pcItems);
}
@@ -2075,13 +2057,13 @@ namespace
STDMETHODIMP GetItemByIndex(
UINT32 unIndex,
GUID *pguidKey,
- PROPVARIANT *pValue)
+ PROPVARIANT *pValue) override
{
return m_attributes->GetItemByIndex(unIndex, pguidKey, pValue);
}
STDMETHODIMP CopyAllItems(
- IMFAttributes *pDest)
+ IMFAttributes *pDest) override
{
return m_attributes->CopyAllItems(pDest);
}
@@ -2149,9 +2131,9 @@ public:
~EVRCustomPresenterActivate()
{ }
- STDMETHODIMP ActivateObject(REFIID riid, void **ppv);
- STDMETHODIMP ShutdownObject();
- STDMETHODIMP DetachObject();
+ STDMETHODIMP ActivateObject(REFIID riid, void **ppv) override;
+ STDMETHODIMP ShutdownObject() override;
+ STDMETHODIMP DetachObject() override;
void setSink(QVideoSink *sink);
@@ -2218,7 +2200,7 @@ void MFVideoRendererControl::customEvent(QEvent *event)
if (!m_currentActivate)
return;
- if (event->type() == MediaStream::PresentSurface) {
+ if (event->type() == QEvent::Type(MediaStream::PresentSurface)) {
MFTIME targetTime = static_cast<MediaStream::PresentEvent*>(event)->targetTime();
MFTIME currentTime = static_cast<VideoRendererActivate*>(m_currentActivate)->getTime();
float playRate = static_cast<VideoRendererActivate*>(m_currentActivate)->getPlayRate();
diff --git a/src/multimedia/platform/windows/player/mfvideorenderercontrol_p.h b/src/multimedia/platform/windows/player/mfvideorenderercontrol_p.h
index b4bb2d92d..9b48803d9 100644
--- a/src/multimedia/platform/windows/player/mfvideorenderercontrol_p.h
+++ b/src/multimedia/platform/windows/player/mfvideorenderercontrol_p.h
@@ -77,7 +77,7 @@ public:
void releaseActivate();
protected:
- void customEvent(QEvent *event);
+ void customEvent(QEvent *event) override;
private Q_SLOTS:
void present();
diff --git a/src/multimedia/platform/windows/player/samplegrabber.cpp b/src/multimedia/platform/windows/player/samplegrabber.cpp
index ef039a902..93bec4ad6 100644
--- a/src/multimedia/platform/windows/player/samplegrabber.cpp
+++ b/src/multimedia/platform/windows/player/samplegrabber.cpp
@@ -147,6 +147,8 @@ STDMETHODIMP AudioSampleGrabberCallback::OnProcessSample(REFGUID guidMajorMediaT
Q_UNUSED(dwSampleFlags);
Q_UNUSED(llSampleTime);
Q_UNUSED(llSampleDuration);
+ Q_UNUSED(pSampleBuffer);
+ Q_UNUSED(dwSampleSize);
if (guidMajorMediaType != GUID_NULL && guidMajorMediaType != MFMediaType_Audio)
return S_OK;
diff --git a/src/multimedia/platform/windows/player/samplegrabber_p.h b/src/multimedia/platform/windows/player/samplegrabber_p.h
index 31e00987c..ad522ade8 100644
--- a/src/multimedia/platform/windows/player/samplegrabber_p.h
+++ b/src/multimedia/platform/windows/player/samplegrabber_p.h
@@ -61,20 +61,20 @@ class SampleGrabberCallback : public IMFSampleGrabberSinkCallback
{
public:
// IUnknown methods
- STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv) override;
+ STDMETHODIMP_(ULONG) AddRef() override;
+ STDMETHODIMP_(ULONG) Release() override;
// IMFClockStateSink methods
- STDMETHODIMP OnClockStart(MFTIME hnsSystemTime, LONGLONG llClockStartOffset);
- STDMETHODIMP OnClockStop(MFTIME hnsSystemTime);
- STDMETHODIMP OnClockPause(MFTIME hnsSystemTime);
- STDMETHODIMP OnClockRestart(MFTIME hnsSystemTime);
- STDMETHODIMP OnClockSetRate(MFTIME hnsSystemTime, float flRate);
+ STDMETHODIMP OnClockStart(MFTIME hnsSystemTime, LONGLONG llClockStartOffset) override;
+ STDMETHODIMP OnClockStop(MFTIME hnsSystemTime) override;
+ STDMETHODIMP OnClockPause(MFTIME hnsSystemTime) override;
+ STDMETHODIMP OnClockRestart(MFTIME hnsSystemTime) override;
+ STDMETHODIMP OnClockSetRate(MFTIME hnsSystemTime, float flRate) override;
// IMFSampleGrabberSinkCallback methods
- STDMETHODIMP OnSetPresentationClock(IMFPresentationClock* pClock);
- STDMETHODIMP OnShutdown();
+ STDMETHODIMP OnSetPresentationClock(IMFPresentationClock* pClock) override;
+ STDMETHODIMP OnShutdown() override;
protected:
SampleGrabberCallback() : m_cRef(1) {}
@@ -92,7 +92,7 @@ public:
STDMETHODIMP OnProcessSample(REFGUID guidMajorMediaType, DWORD dwSampleFlags,
LONGLONG llSampleTime, LONGLONG llSampleDuration, const BYTE * pSampleBuffer,
- DWORD dwSampleSize);
+ DWORD dwSampleSize) override;
private:
// QList<MFAudioProbeControl*> m_audioProbes;
diff --git a/src/multimedia/platform/windows/qwindowsmediadevices.cpp b/src/multimedia/platform/windows/qwindowsmediadevices.cpp
index 2b1a74a44..067c2bb2e 100644
--- a/src/multimedia/platform/windows/qwindowsmediadevices.cpp
+++ b/src/multimedia/platform/windows/qwindowsmediadevices.cpp
@@ -61,7 +61,8 @@
#include <Mferror.h>
#include <mmdeviceapi.h>
#include <Functiondiscoverykeys_devpkey.h>
-#include "private/qwindowsaudioutils_p.h"
+#include <private/qwindowsaudioutils_p.h>
+#include <private/qwindowsmfdefs_p.h>
QT_BEGIN_NAMESPACE
@@ -85,12 +86,12 @@ public:
virtual ~CMMNotificationClient() {}
// IUnknown methods -- AddRef, Release, and QueryInterface
- ULONG STDMETHODCALLTYPE AddRef()
+ ULONG STDMETHODCALLTYPE AddRef() override
{
return InterlockedIncrement(&m_cRef);
}
- ULONG STDMETHODCALLTYPE Release()
+ ULONG STDMETHODCALLTYPE Release() override
{
ULONG ulRef = InterlockedDecrement(&m_cRef);
if (0 == ulRef) {
@@ -99,7 +100,7 @@ public:
return ulRef;
}
- HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID **ppvInterface)
+ HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID **ppvInterface) override
{
if (IID_IUnknown == riid) {
AddRef();
@@ -114,7 +115,7 @@ public:
return S_OK;
}
- HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR)
+ HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR) override
{
if (role == ERole::eMultimedia)
emitAudioDevicesChanged(flow);
@@ -122,7 +123,7 @@ public:
return S_OK;
}
- HRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR deviceID)
+ HRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR deviceID) override
{
auto it = m_deviceState.find(QString::fromWCharArray(deviceID));
if (it == std::end(m_deviceState)) {
@@ -133,7 +134,7 @@ public:
return S_OK;
};
- HRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR deviceID)
+ HRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR deviceID) override
{
auto key = QString::fromWCharArray(deviceID);
auto it = m_deviceState.find(key);
@@ -146,7 +147,7 @@ public:
return S_OK;
}
- HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(LPCWSTR deviceID, DWORD newState)
+ HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(LPCWSTR deviceID, DWORD newState) override
{
if (auto it = m_deviceState.find(QString::fromWCharArray(deviceID)); it != std::end(m_deviceState)) {
// If either the old state or the new state is active emit device change
@@ -159,7 +160,7 @@ public:
return S_OK;
}
- HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(LPCWSTR, const PROPERTYKEY)
+ HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(LPCWSTR, const PROPERTYKEY) override
{
return S_OK;
}
@@ -279,10 +280,10 @@ QWindowsMediaDevices::QWindowsMediaDevices()
if (m_videoDeviceMsgWindow) {
SetWindowLongPtr(m_videoDeviceMsgWindow, GWLP_USERDATA, (LONG_PTR)this);
- DEV_BROADCAST_DEVICEINTERFACE di = { 0 };
+ DEV_BROADCAST_DEVICEINTERFACE di = {};
di.dbcc_size = sizeof(di);
di.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
- di.dbcc_classguid = KSCATEGORY_VIDEO_CAMERA;
+ di.dbcc_classguid = QMM_KSCATEGORY_VIDEO_CAMERA;
m_videoDeviceNotification =
RegisterDeviceNotification(m_videoDeviceMsgWindow, &di, DEVICE_NOTIFY_WINDOW_HANDLE);
@@ -367,7 +368,7 @@ QList<QAudioDevice> QWindowsMediaDevices::availableDevices(QAudioDevice::Mode mo
PROPVARIANT varName;
PropVariantInit(&varName);
- if (SUCCEEDED(props->GetValue(PKEY_Device_FriendlyName, &varName))) {
+ if (SUCCEEDED(props->GetValue(QMM_PKEY_Device_FriendlyName, &varName))) {
auto description = QString::fromWCharArray(varName.pwszVal);
auto strID = QString::fromWCharArray(id.data()).toUtf8();
@@ -453,7 +454,6 @@ QList<QCameraDevice> QWindowsMediaDevices::videoInputs() const
UINT32 frameRateMin = 0u;
UINT32 frameRateMax = 0u;
UINT32 denominator = 0u;
- DWORD index = 0u;
UINT32 width = 0u;
UINT32 height = 0u;
diff --git a/src/multimedia/platform/windows/sourceresolver_p.h b/src/multimedia/platform/windows/sourceresolver_p.h
index 07da1d8bd..0aab4cc19 100644
--- a/src/multimedia/platform/windows/sourceresolver_p.h
+++ b/src/multimedia/platform/windows/sourceresolver_p.h
@@ -62,13 +62,13 @@ public:
~SourceResolver();
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
+ STDMETHODIMP_(ULONG) AddRef(void) override;
+ STDMETHODIMP_(ULONG) Release(void) override;
- HRESULT STDMETHODCALLTYPE Invoke(IMFAsyncResult *pAsyncResult);
+ HRESULT STDMETHODCALLTYPE Invoke(IMFAsyncResult *pAsyncResult) override;
- HRESULT STDMETHODCALLTYPE GetParameters(DWORD*, DWORD*);
+ HRESULT STDMETHODCALLTYPE GetParameters(DWORD*, DWORD*) override;
void load(const QUrl &url, QIODevice* stream);
@@ -87,13 +87,13 @@ private:
{
public:
State(IMFSourceResolver *sourceResolver, bool fromStream);
- ~State();
+ virtual ~State();
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject);
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject) override;
- STDMETHODIMP_(ULONG) AddRef(void);
+ STDMETHODIMP_(ULONG) AddRef(void) override;
- STDMETHODIMP_(ULONG) Release(void);
+ STDMETHODIMP_(ULONG) Release(void) override;
IMFSourceResolver* sourceResolver() const;
bool fromStream() const;