Qt 6.x
The Qt SDK
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
3// GPL-3.0-only
4
5#include <qaudiooutput.h>
6#include <qaudiodevice.h>
7#include <qmediadevices.h>
8#include <private/qplatformaudiooutput_p.h>
9#include <private/qplatformmediaintegration_p.h>
10
56 : QAudioOutput(QMediaDevices::defaultAudioOutput(), parent)
57{
58}
59
62{
63 auto maybeAudioOutput = QPlatformMediaIntegration::instance()->createAudioOutput(this);
64 if (maybeAudioOutput) {
65 d = maybeAudioOutput.value();
68 } else {
69 d = new QPlatformAudioOutput(nullptr);
70 qWarning() << "Failed to initialize QAudioOutput" << maybeAudioOutput.error();
71 }
72}
73
75{
76 setDisconnectFunction({});
77 delete d;
78}
79
116{
117 return d->volume;
118}
119
120void QAudioOutput::setVolume(float volume)
121{
122 volume = qBound(0., volume, 1.);
123 if (d->volume == volume)
124 return;
125 d->volume = volume;
126 d->setVolume(volume);
128}
129
145{
146 return d->muted;
147}
148
150{
151 if (d->muted == muted)
152 return;
153 d->muted = muted;
154 d->setMuted(muted);
156}
157
179{
180 return d->device;
181}
182
184{
185 auto dev = device;
186 if (dev.isNull())
188 if (dev.mode() != QAudioDevice::Output)
189 return;
190 if (d->device == dev)
191 return;
192 d->device = dev;
193 d->setAudioDevice(dev);
195}
196
200void QAudioOutput::setDisconnectFunction(std::function<void()> disconnectFunction)
201{
202 if (d->disconnectFunction) {
203 auto df = d->disconnectFunction;
204 d->disconnectFunction = {};
205 df();
206 }
207 d->disconnectFunction = std::move(disconnectFunction);
208}
209
210#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:90
virtual void setMuted(bool)
virtual void setVolume(float)
std::function< void()> disconnectFunction
virtual void setAudioDevice(const QAudioDevice &)
virtual QMaybe< QPlatformAudioOutput * > createAudioOutput(QAudioOutput *)
static QPlatformMediaIntegration * instance()
#define qWarning
Definition qlogging.h:162
constexpr const T & qBound(const T &min, const T &val, const T &max)
Definition qminmax.h:44
#define emit
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent