diff options
author | Michael Goddard <michael.goddard@nokia.com> | 2012-06-20 15:53:39 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-20 09:11:28 +0200 |
commit | eb92be7ede9c1aa47cb24d99488f09ec7c6cfc3f (patch) | |
tree | 08d668f07da9b30c5e14a5b184a41398b02b3423 /src/multimedia | |
parent | 84ca7137603be1b8517be55f92523b0caa90e9e4 (diff) |
Fix QAudioOutput volume on OSX.
Change-Id: I142ca638d3dc0839f7c5b103f03edac6715a0bb6
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src/multimedia')
-rw-r--r-- | src/multimedia/audio/qaudiooutput_mac_p.cpp | 25 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiooutput_mac_p.h | 4 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/multimedia/audio/qaudiooutput_mac_p.cpp b/src/multimedia/audio/qaudiooutput_mac_p.cpp index 2d8f595f8..105f41f39 100644 --- a/src/multimedia/audio/qaudiooutput_mac_p.cpp +++ b/src/multimedia/audio/qaudiooutput_mac_p.cpp @@ -297,6 +297,8 @@ QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray& device) stateCode = QAudio::StoppedState; audioThreadState.store(Stopped); + cachedVolume = (qreal)1.; + intervalTimer = new QTimer(this); intervalTimer->setInterval(1000); connect(intervalTimer, SIGNAL(timeout()), SIGNAL(notify())); @@ -408,6 +410,8 @@ bool QAudioOutputPrivate::open() isOpen = true; + setVolume(cachedVolume); + return true; } @@ -661,6 +665,27 @@ void QAudioOutputPrivate::stopTimers() intervalTimer->stop(); } +void QAudioOutputPrivate::setVolume(qreal v) +{ + const qreal normalizedVolume = qBound(qreal(0.0), v, qreal(1.0)); + if (!isOpen) { + cachedVolume = normalizedVolume; + return; + } + + if (AudioUnitSetParameter(audioUnit, + kHALOutputParam_Volume, + kAudioUnitScope_Global, + 0 /* bus */, + (float)normalizedVolume, + 0) == noErr) + cachedVolume = normalizedVolume; +} + +qreal QAudioOutputPrivate::volume() const +{ + return cachedVolume; +} void QAudioOutputPrivate::deviceStopped() { diff --git a/src/multimedia/audio/qaudiooutput_mac_p.h b/src/multimedia/audio/qaudiooutput_mac_p.h index 953551877..fd513c4e7 100644 --- a/src/multimedia/audio/qaudiooutput_mac_p.h +++ b/src/multimedia/audio/qaudiooutput_mac_p.h @@ -106,6 +106,7 @@ public: QMutex mutex; QTimer* intervalTimer; QAbstractAudioDeviceInfo *audioDeviceInfo; + qreal cachedVolume; QAudio::Error errorCode; QAudio::State stateCode; @@ -152,6 +153,9 @@ public: void startTimers(); void stopTimers(); + void setVolume(qreal); + qreal volume() const; + private slots: void deviceStopped(); void inputReady(); |