diff --git a/sdrbase/audio/audiooutputdevice.cpp b/sdrbase/audio/audiooutputdevice.cpp index 6c9770990..72e591d67 100644 --- a/sdrbase/audio/audiooutputdevice.cpp +++ b/sdrbase/audio/audiooutputdevice.cpp @@ -33,6 +33,7 @@ AudioOutputDevice::AudioOutputDevice() : m_udpChannelCodec(UDPCodecL16), m_audioUsageCount(0), m_onExit(false), + m_volume(1.0), m_audioFifos() { } @@ -114,6 +115,7 @@ bool AudioOutputDevice::start(int device, int rate) m_audioOutput = new QAudioOutput(devInfo, m_audioFormat); m_audioNetSink = new AudioNetSink(0, m_audioFormat.sampleRate(), false); + m_audioOutput->setVolume(m_volume); QIODevice::open(QIODevice::ReadOnly); @@ -341,3 +343,12 @@ qint64 AudioOutputDevice::writeData(const char* data, qint64 len) Q_UNUSED(len); return 0; } + +void AudioOutputDevice::setVolume(float volume) +{ + m_volume = volume; + + if (m_audioOutput) { + m_audioOutput->setVolume(m_volume); + } +} diff --git a/sdrbase/audio/audiooutputdevice.h b/sdrbase/audio/audiooutputdevice.h index fca55f0d1..13417dce1 100644 --- a/sdrbase/audio/audiooutputdevice.h +++ b/sdrbase/audio/audiooutputdevice.h @@ -71,6 +71,7 @@ public: void setUdpChannelMode(UDPChannelMode udpChannelMode); void setUdpChannelFormat(UDPChannelCodec udpChannelCodec, bool stereo, int sampleRate); void setUdpDecimation(uint32_t decimation); + void setVolume(float volume); private: QMutex m_mutex; @@ -81,6 +82,7 @@ private: UDPChannelCodec m_udpChannelCodec; uint m_audioUsageCount; bool m_onExit; + float m_volume; std::list m_audioFifos; std::vector m_mixBuffer;