summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/audio')
-rw-r--r--src/multimedia/audio/qaudioinput.cpp1
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp42
-rw-r--r--src/multimedia/audio/qaudiooutput.h6
3 files changed, 48 insertions, 1 deletions
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
index 671cec4ee..c8e4a1bfc 100644
--- a/src/multimedia/audio/qaudioinput.cpp
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -126,6 +126,7 @@ float QAudioInput::volume() const
void QAudioInput::setVolume(float volume)
{
+ volume = qBound(0., volume, 1.);
if (d->volume == volume)
return;
d->volume = volume;
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index c2590533b..c29251533 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -49,6 +49,7 @@
\inmodule QtMultimedia
\ingroup multimedia
\ingroup multimedia_audio
+ \since 6.0
QAudioOutput represents an output channel that can be used together with QMediaPlayer or
QMediaCaptureSession. It allows selecting the physical output device to be used, muting the channel
@@ -86,6 +87,16 @@
This property can be used to select any other output device listed by QMediaDevices::audioOutputs().
*/
+/*!
+ \property QAudioOutput::audioRole
+ \brief the role of the audio played by this output.
+
+ It can be set to specify the type of audio being played, allowing the system to make
+ appropriate decisions when it comes to volume, routing or post-processing.
+
+ \sa supportedAudioRoles()
+*/
+
QAudioOutput::QAudioOutput(QObject *parent)
: QAudioOutput(QMediaDevices::defaultAudioOutput(), parent)
{}
@@ -112,7 +123,7 @@ QAudioDevice QAudioOutput::device() const
void QAudioOutput::setDevice(const QAudioDevice &device)
{
- if (device.mode() != QAudio::AudioOutput)
+ if (!device.isNull() && device.mode() != QAudio::AudioOutput)
return;
if (d->device == device)
return;
@@ -128,6 +139,7 @@ float QAudioOutput::volume() const
void QAudioOutput::setVolume(float volume)
{
+ volume = qBound(0., volume, 1.);
if (d->volume == volume)
return;
d->volume = volume;
@@ -140,6 +152,23 @@ bool QAudioOutput::isMuted() const
return d->muted;
}
+QAudio::Role QAudioOutput::audioRole() const
+{
+ return d->role;
+}
+
+/*!
+ Returns a list of supported audio roles.
+
+ If setting the audio role is not supported, an empty list is returned.
+
+ \sa audioRole
+*/
+QList<QAudio::Role> QAudioOutput::supportedAudioRoles() const
+{
+ return d->supportedAudioRoles();
+}
+
void QAudioOutput::setMuted(bool muted)
{
if (d->muted == muted)
@@ -149,4 +178,15 @@ void QAudioOutput::setMuted(bool muted)
emit mutedChanged(muted);
}
+void QAudioOutput::setAudioRole(QAudio::Role audioRole)
+{
+ if (d->role == audioRole)
+ return;
+ if (!d->supportedAudioRoles().contains(audioRole))
+ return;
+ d->role = audioRole;
+ d->setAudioRole(d->role);
+ emit audioRoleChanged(d->role);
+}
+
#include "moc_qaudiooutput.cpp"
diff --git a/src/multimedia/audio/qaudiooutput.h b/src/multimedia/audio/qaudiooutput.h
index 0f1461a55..9a4cf3998 100644
--- a/src/multimedia/audio/qaudiooutput.h
+++ b/src/multimedia/audio/qaudiooutput.h
@@ -55,6 +55,7 @@ class Q_MULTIMEDIA_EXPORT QAudioOutput : public QObject
Q_PROPERTY(QAudioDevice device READ device WRITE setDevice NOTIFY deviceChanged)
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
+ Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged)
public:
explicit QAudioOutput(QObject *parent = nullptr);
@@ -64,16 +65,21 @@ public:
QAudioDevice device() const;
float volume() const;
bool isMuted() const;
+ QAudio::Role audioRole() const;
+
+ QList<QAudio::Role> supportedAudioRoles() const;
public Q_SLOTS:
void setDevice(const QAudioDevice &device);
void setVolume(float volume);
void setMuted(bool muted);
+ void setAudioRole(QAudio::Role audioRole);
Q_SIGNALS:
void deviceChanged();
void volumeChanged(float volume);
void mutedChanged(bool muted);
+ void audioRoleChanged(QAudio::Role role);
public:
QPlatformAudioOutput *handle() const { return d; }