Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qwindowsaudiodevices_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
ifndef
QWINDOWSAUDIODEVICES_H
5
#
define
QWINDOWSAUDIODEVICES_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
QtMultimedia
/
qaudiodevice
.
h
>
19
#
include
<
QtMultimedia
/
private
/
qplatformaudiodevices_p
.
h
>
20
#
include
<
QtMultimedia
/
private
/
qwindowsmediafoundation_p
.
h
>
21
22
#
include
<
QtCore
/
qmutex
.
h
>
23
#
include
<
QtCore
/
qchronotimer
.
h
>
24
#
include
<
QtCore
/
private
/
qcomptr_p
.
h
>
25
26
struct
IAudioClient3;
27
struct
IMMDevice;
28
struct
IMMDeviceEnumerator;
29
30
QT_BEGIN_NAMESPACE
31
32
namespace
QtWASAPI
{
33
class
CMMNotificationClient
;
34
}
// namespace QtWASAPI
35
36
class
QWindowsAudioDevices
:
public
QPlatformAudioDevices
37
{
38
public
:
39
QWindowsAudioDevices
();
40
virtual
~
QWindowsAudioDevices
();
41
42
QPlatformAudioSource
*
createAudioSource
(
const
QAudioDevice &,
const
QAudioFormat &,
43
QObject *parent)
override
;
44
QPlatformAudioSink
*
createAudioSink
(
const
QAudioDevice &,
const
QAudioFormat &,
45
QObject *parent)
override
;
46
47
using
QPlatformAudioDevices
::
onAudioInputsChanged
;
48
using
QPlatformAudioDevices
::
onAudioOutputsChanged
;
49
50
QLatin1String
backendName
()
const
override
{
return
QLatin1String{
"WASAPI"
}; }
51
bool
hasCallbackApi
()
const
override
{
return
true
; }
52
53
protected
:
54
QList
<
QAudioDevice
>
findAudioInputs
()
const
override
;
55
QList
<
QAudioDevice
>
findAudioOutputs
()
const
override
;
56
57
private
:
58
void
scheduleAudioInputsChanged();
59
void
scheduleAudioOutputsChanged();
60
61
QMFRuntimeInit m_wmfRuntime;
62
QList<QAudioDevice> availableDevices(QAudioDevice::Mode mode)
const
;
63
64
ComPtr<IMMDeviceEnumerator> m_deviceEnumerator;
65
ComPtr<QtWASAPI::CMMNotificationClient> m_notificationClient;
66
67
QChronoTimer m_audioInputsDebounce;
68
QChronoTimer m_audioOutputsDebounce;
69
70
friend
QtWASAPI
::
CMMNotificationClient
;
71
72
mutable
QMutex m_cacheMutex;
73
mutable
std::map<ComPtr<IMMDevice>, QAudioDevice> m_cachedDevices;
74
};
75
76
QT_END_NAMESPACE
77
78
#
endif
QWindowsAudioDevices
Definition
qwindowsaudiodevices_p.h:37
QWindowsAudioDevices::QWindowsAudioDevices
QWindowsAudioDevices()
Definition
qwindowsaudiodevices.cpp:243
QWindowsAudioDevices::findAudioInputs
QList< QAudioDevice > findAudioInputs() const override
Definition
qwindowsaudiodevices.cpp:487
QWindowsAudioDevices::createAudioSource
QPlatformAudioSource * createAudioSource(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
Definition
qwindowsaudiodevices.cpp:497
QWindowsAudioDevices::createAudioSink
QPlatformAudioSink * createAudioSink(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
Definition
qwindowsaudiodevices.cpp:504
QWindowsAudioDevices::findAudioOutputs
QList< QAudioDevice > findAudioOutputs() const override
Definition
qwindowsaudiodevices.cpp:492
QWindowsAudioDevices::backendName
QLatin1String backendName() const override
Definition
qwindowsaudiodevices_p.h:50
QWindowsAudioDevices::hasCallbackApi
bool hasCallbackApi() const override
Definition
qwindowsaudiodevices_p.h:51
QWindowsAudioDevices::~QWindowsAudioDevices
virtual ~QWindowsAudioDevices()
Definition
qwindowsaudiodevices.cpp:346
QtWASAPI::CMMNotificationClient
Definition
qwindowsaudiodevices.cpp:64
QtWASAPI::CMMNotificationClient::audioDeviceDefaultChanged
void audioDeviceDefaultChanged(QAudioDevice::Mode, ComPtr< IMMDevice >)
QtWASAPI::CMMNotificationClient::audioDeviceRemoved
void audioDeviceRemoved(ComPtr< IMMDevice >)
QtWASAPI::CMMNotificationClient::CMMNotificationClient
CMMNotificationClient(ComPtr< IMMDeviceEnumerator > enumerator)
Definition
qwindowsaudiodevices.cpp:78
QtWASAPI::CMMNotificationClient::audioDevicePropertyChanged
void audioDevicePropertyChanged(ComPtr< IMMDevice >)
QtWASAPI
Definition
qwindowsaudiodevice_p.h:34
DEFINE_PROPERTYKEY
QT_BEGIN_NAMESPACE DEFINE_PROPERTYKEY(PKEY_Device_ContainerIdQt, 0x8c7ed206, 0x3f8a, 0x4827, 0xb3, 0xab, 0xae, 0x9e, 0x1f, 0xae, 0xfc, 0x6c, 2)
getDeviceId
static std::optional< QString > getDeviceId(const ComPtr< IMMDevice > &dev)
Definition
qwindowsaudiodevices.cpp:359
asQAudioDevice
static std::optional< QAudioDevice > asQAudioDevice(ComPtr< IMMDevice > device, QAudioDevice::Mode mode, std::optional< QString > defaultAudioDeviceID)
Definition
qwindowsaudiodevices.cpp:371
qtmultimedia
src
multimedia
windows
qwindowsaudiodevices_p.h
Generated on
for Qt by
1.18.0