diff options
Diffstat (limited to 'src/multimedia/audio')
-rw-r--r-- | src/multimedia/audio/qaudioinput.cpp | 1 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiooutput.cpp | 42 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiooutput.h | 6 |
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; } |