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
qaudiooutput.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 <qaudiooutput.h>
5#include <qaudiodevice.h>
6#include <qmediadevices.h>
7#include <private/qplatformaudiooutput_p.h>
8#include <private/qplatformmediaintegration_p.h>
9
55 : QAudioOutput(QMediaDevices::defaultAudioOutput(), parent)
56{
57}
58
60 : QObject(parent)
61{
62 auto maybeAudioOutput = QPlatformMediaIntegration::instance()->createAudioOutput(this);
63 if (maybeAudioOutput) {
64 d = maybeAudioOutput.value();
67 } else {
68 d = new QPlatformAudioOutput(nullptr);
69 qWarning() << "Failed to initialize QAudioOutput" << maybeAudioOutput.error();
70 }
71}
72
74{
75 setDisconnectFunction({});
76 delete d;
77}
78
115{
116 return d->volume;
117}
118
119void QAudioOutput::setVolume(float volume)
120{
121 volume = qBound(0., volume, 1.);
122 if (d->volume == volume)
123 return;
124 d->volume = volume;
125 d->setVolume(volume);
127}
128
144{
145 return d->muted;
146}
147
149{
150 if (d->muted == muted)
151 return;
152 d->muted = muted;
153 d->setMuted(muted);
155}
156
178{
179 return d->device;
180}
181
183{
184 auto dev = device;
185 if (dev.isNull())
187 if (dev.mode() != QAudioDevice::Output)
188 return;
189 if (d->device == dev)
190 return;
191 d->device = dev;
192 d->setAudioDevice(dev);
194}
195
199void QAudioOutput::setDisconnectFunction(std::function<void()> disconnectFunction)
200{
201 if (d->disconnectFunction) {
202 auto df = d->disconnectFunction;
203 d->disconnectFunction = {};
204 df();
205 }
206 d->disconnectFunction = std::move(disconnectFunction);
207}
208
209#include "moc_qaudiooutput.cpp"
IOBluetoothDevice * device
The QAudioDevice class provides an information about audio devices and their functionality.
Mode mode
\qmlproperty enumeration QtMultimedia::audioDevice::mode
\qmltype AudioOutput \instantiates QAudioOutput
void deviceChanged()
bool isMuted() const
QAudioOutput(QObject *parent=nullptr)
void mutedChanged(bool muted)
void setMuted(bool muted)
QAudioDevice device
\qmlproperty AudioDevice QtMultimedia::AudioOutput::device
bool muted
\qmlproperty bool QtMultimedia::AudioOutput::muted
void setDevice(const QAudioDevice &device)
void setVolume(float volume)
float volume
\qmlproperty real QtMultimedia::AudioOutput::volume
void volumeChanged(float volume)
The QMediaDevices class provides information about available multimedia input and output devices.
QAudioDevice defaultAudioOutput
\qmlproperty audioDevice QtMultimedia::MediaDevices::defaultAudioOutput Returns the default audio out...
\inmodule QtCore
Definition qobject.h:103
virtual void setMuted(bool)
virtual void setVolume(float)
std::function< void()> disconnectFunction
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