Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qaudioinput.cpp
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#include <qaudioinput.h>
5#include <qaudiodevice.h>
6#include <qmediadevices.h>
7#include <private/qplatformaudioinput_p.h>
8#include <private/qplatformmediaintegration_p.h>
9
10#include <utility>
11
54QAudioInput::QAudioInput(QObject *parent) : QAudioInput(QMediaDevices::defaultAudioInput(), parent)
55{
56}
57
59 : QObject(parent)
60{
61 auto maybeAudioInput = QPlatformMediaIntegration::instance()->createAudioInput(this);
62 if (maybeAudioInput) {
63 d = maybeAudioInput.value();
66 } else {
67 d = new QPlatformAudioInput(nullptr);
68 qWarning() << "Failed to initialize QAudioInput" << maybeAudioInput.error();
69 }
70}
71
73{
74 setDisconnectFunction({});
75 delete d;
76}
77
97{
98 return d->volume;
99}
100
101void QAudioInput::setVolume(float volume)
102{
103 volume = qBound(0., volume, 1.);
104 if (d->volume == volume)
105 return;
106 d->volume = volume;
107 d->setVolume(volume);
109}
110
126{
127 return d->muted;
128}
129
130void QAudioInput::setMuted(bool muted)
131{
132 if (d->muted == muted)
133 return;
134 d->muted = muted;
135 d->setMuted(muted);
137}
138
161{
162 return d->device;
163}
164
166{
167 auto dev = device;
168 if (dev.isNull())
170 if (dev.mode() != QAudioDevice::Input)
171 return;
172 if (d->device == dev)
173 return;
174 d->device = dev;
175 d->setAudioDevice(dev);
177}
178
182void QAudioInput::setDisconnectFunction(std::function<void()> disconnectFunction)
183{
184 if (d->disconnectFunction) {
185 auto df = d->disconnectFunction;
186 d->disconnectFunction = {};
187 df();
188 }
189 d->disconnectFunction = std::move(disconnectFunction);
190}
191
192#include "moc_qaudioinput.cpp"
IOBluetoothDevice * device
The QAudioDevice class provides an information about audio devices and their functionality.
Mode mode
\qmlproperty enumeration QtMultimedia::audioDevice::mode
\qmltype AudioInput \instantiates QAudioInput
Definition qaudioinput.h:19
bool isMuted() const
bool muted
\qmlproperty bool QtMultimedia::AudioInput::muted
Definition qaudioinput.h:23
void mutedChanged(bool muted)
float volume
\qmlproperty real QtMultimedia::AudioInput::volume
Definition qaudioinput.h:22
void setMuted(bool muted)
void volumeChanged(float volume)
QAudioDevice device
\qmlproperty AudioDevice QtMultimedia::AudioInput::device
Definition qaudioinput.h:21
QAudioInput(QObject *parent=nullptr)
void deviceChanged()
void setVolume(float volume)
void setDevice(const QAudioDevice &device)
The QMediaDevices class provides information about available multimedia input and output devices.
QAudioDevice defaultAudioInput
\qmlproperty audioDevice QtMultimedia::MediaDevices::defaultAudioInput Returns the default audio inpu...
\inmodule QtCore
Definition qobject.h:103
virtual void setVolume(float)
std::function< void()> disconnectFunction
virtual void setMuted(bool)
virtual void setAudioDevice(const QAudioDevice &)
static QPlatformMediaIntegration * instance()
#define qWarning
Definition qlogging.h:166
constexpr const T & qBound(const T &min, const T &val, const T &max)
Definition qminmax.h:44
#define emit