[DEV] Add mute in volume manager

This commit is contained in:
Edouard DUPIN 2015-07-02 21:17:24 +02:00
parent 5ea6ecec1d
commit e7de4b9dcb
2 changed files with 21 additions and 1 deletions

View File

@ -155,14 +155,24 @@ void audio::drain::Volume::configurationChange() {
void audio::drain::Volume::volumeChange() { void audio::drain::Volume::volumeChange() {
//m_volumeAppli = 20 * log(m_volumedB); //m_volumeAppli = 20 * log(m_volumedB);
float volumedB = 0.0f; float volumedB = 0.0f;
bool mute = false;
for (size_t iii=0; iii<m_volumeList.size(); ++iii) { for (size_t iii=0; iii<m_volumeList.size(); ++iii) {
if (m_volumeList[iii] == nullptr) { if (m_volumeList[iii] == nullptr) {
continue; continue;
} }
if (m_volumeList[iii]->getMute() == true) {
mute = true;
}
volumedB += m_volumeList[iii]->getVolume(); volumedB += m_volumeList[iii]->getVolume();
DRAIN_VERBOSE("append volume : '" << m_volumeList[iii]->getName() << " vol=" << m_volumeList[iii]->getVolume() << "dB"); DRAIN_VERBOSE("append volume : '" << m_volumeList[iii]->getName() << " vol=" << m_volumeList[iii]->getVolume() << "dB");
} }
DRAIN_DEBUG(" Total volume : " << volumedB << "dB nbVolume=" << m_volumeList.size()); 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) #if (defined(__TARGET_OS__MacOs) || defined(__TARGET_OS__IOs) || __cplusplus < 201103L)
m_volumeAppli = pow(10.0f, volumedB/20.0f); m_volumeAppli = pow(10.0f, volumedB/20.0f);
#else #else

View File

@ -20,7 +20,8 @@ namespace audio {
public: public:
VolumeElement(const std::string& _name="ERROR-VOLUME-NAME", float _volumedB=0.0f) : VolumeElement(const std::string& _name="ERROR-VOLUME-NAME", float _volumedB=0.0f) :
m_name(_name), m_name(_name),
m_volumedB(_volumedB) { m_volumedB(_volumedB),
m_mute(false) {
} }
private: private:
@ -38,6 +39,15 @@ namespace audio {
void setVolume(float _volumedB) { void setVolume(float _volumedB) {
m_volumedB = _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: Optimisation
// TODO: Zero crossing // TODO: Zero crossing