From e7de4b9dcb054eb01b50b40708dbbb331980e703 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Thu, 2 Jul 2015 21:17:24 +0200 Subject: [PATCH] [DEV] Add mute in volume manager --- audio/drain/Volume.cpp | 10 ++++++++++ audio/drain/Volume.h | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/audio/drain/Volume.cpp b/audio/drain/Volume.cpp index 5d8da37..2a5bde6 100644 --- a/audio/drain/Volume.cpp +++ b/audio/drain/Volume.cpp @@ -155,14 +155,24 @@ void audio::drain::Volume::configurationChange() { void audio::drain::Volume::volumeChange() { //m_volumeAppli = 20 * log(m_volumedB); float volumedB = 0.0f; + bool mute = false; for (size_t iii=0; iiigetMute() == true) { + mute = true; + } volumedB += m_volumeList[iii]->getVolume(); DRAIN_VERBOSE("append volume : '" << m_volumeList[iii]->getName() << " vol=" << m_volumeList[iii]->getVolume() << "dB"); } DRAIN_DEBUG(" Total volume : " << volumedB << "dB nbVolume=" << m_volumeList.size()); + if (mute == true) { + m_volumeAppli = 0.0f; + m_volumeCoef = 0; + m_volumeDecalage = 0; + return; + } #if (defined(__TARGET_OS__MacOs) || defined(__TARGET_OS__IOs) || __cplusplus < 201103L) m_volumeAppli = pow(10.0f, volumedB/20.0f); #else diff --git a/audio/drain/Volume.h b/audio/drain/Volume.h index 357b9df..1ef7ae3 100644 --- a/audio/drain/Volume.h +++ b/audio/drain/Volume.h @@ -20,7 +20,8 @@ namespace audio { public: VolumeElement(const std::string& _name="ERROR-VOLUME-NAME", float _volumedB=0.0f) : m_name(_name), - m_volumedB(_volumedB) { + m_volumedB(_volumedB), + m_mute(false) { } private: @@ -38,6 +39,15 @@ namespace audio { void setVolume(float _volumedB) { m_volumedB = _volumedB; } + private: + bool m_mute; + public: + bool getMute() const { + return m_mute; + } + void setMute(bool _mute) { + m_mute = _mute; + } }; // TODO: Optimisation // TODO: Zero crossing