diff --git a/daemon/src/audio/alsa/alsalayer.cpp b/daemon/src/audio/alsa/alsalayer.cpp index 3393b6e1f8f79772768cc7311b60b86ce197571e..e1798b4c82ca8886a25c5294ec40db292a040b9e 100644 --- a/daemon/src/audio/alsa/alsalayer.cpp +++ b/daemon/src/audio/alsa/alsalayer.cpp @@ -72,8 +72,8 @@ void AlsaThread::run (void) } // Constructor -AlsaLayer::AlsaLayer (ManagerImpl* manager) - : AudioLayer (manager, ALSA) +AlsaLayer::AlsaLayer () + : AudioLayer (ALSA) , playbackHandle_ (NULL) , ringtoneHandle_ (NULL) , captureHandle_ (NULL) @@ -94,9 +94,7 @@ AlsaLayer::AlsaLayer (ManagerImpl* manager) _debug ("Audio: Build ALSA layer"); urgentRingBuffer_.createReadPointer(); - audioPlugin_ = manager_->audioPreference.getPlugin(); - - noiseSuppressState_ = true; + audioPlugin_ = audioPref.getPlugin(); } // Destructor @@ -807,10 +805,10 @@ void AlsaLayer::audioCallback (void) notifyincomingCall(); - unsigned short spkrVolume = manager_->getSpkrVolume(); + unsigned short spkrVolume = Manager::instance().getSpkrVolume(); - AudioLoop *tone = manager_->getTelephoneTone(); - AudioLoop *file_tone = manager_->getTelephoneFile(); + AudioLoop *tone = Manager::instance().getTelephoneTone(); + AudioLoop *file_tone = Manager::instance().getTelephoneFile(); // AvailForGet tell the number of chars inside the buffer // framePerBuffer are the number of data for one channel (left) @@ -926,7 +924,7 @@ void AlsaLayer::audioCallback (void) free(in); return; } - adjustVolume (in, toPutSamples, manager_->getSpkrVolume()); + adjustVolume (in, toPutSamples, Manager::instance().getSpkrVolume()); if (resample) { int outSamples = toPutSamples * ((double) audioSampleRate_ / mainBufferSampleRate); diff --git a/daemon/src/audio/alsa/alsalayer.h b/daemon/src/audio/alsa/alsalayer.h index 46c5c92edbeefcabcb17ed572cb79a5c1f2adc50..57c8a514041012547edb409b3bb89570432da20a 100644 --- a/daemon/src/audio/alsa/alsalayer.h +++ b/daemon/src/audio/alsa/alsalayer.h @@ -50,9 +50,8 @@ class AlsaLayer : public AudioLayer public: /** * Constructor - * @param manager An instance of managerimpl */ - AlsaLayer (ManagerImpl* manager); + AlsaLayer (); /** * Destructor diff --git a/daemon/src/audio/audiolayer.cpp b/daemon/src/audio/audiolayer.cpp index d628c67b2b3436eac03958015e3d626645242a63..55346ad821a640792a43347868f94384e89bc441 100644 --- a/daemon/src/audio/audiolayer.cpp +++ b/daemon/src/audio/audiolayer.cpp @@ -35,10 +35,9 @@ #include "audio/dcblocker.h" #include "manager.h" -AudioLayer::AudioLayer (ManagerImpl* manager , int type) +AudioLayer::AudioLayer (int type) : layerType_ (type) , isStarted_ (false) - , manager_ (manager) , urgentRingBuffer_ (SIZEBUF, Call::DEFAULT_ID) , recorder_ (0) , indexIn_ (0) @@ -52,7 +51,7 @@ AudioLayer::AudioLayer (ManagerImpl* manager , int type) , mutex_ () , dcblocker_ (0) , audiofilter_ (0) - , noiseSuppressState_ (false) + , audioPref(Manager::instance().audioPreference) , lastNotificationTime_ (0) {} diff --git a/daemon/src/audio/audiolayer.h b/daemon/src/audio/audiolayer.h index 8a29050b03eb4d081cdd3f3a5e0bffe3042e0b97..45b52d81e7771239c635e43342100b355268b103 100644 --- a/daemon/src/audio/audiolayer.h +++ b/daemon/src/audio/audiolayer.h @@ -64,9 +64,8 @@ class AudioLayer public: /** * Constructor - * @param manager An instance of managerimpl */ - AudioLayer (ManagerImpl* manager , int type); + AudioLayer (int type); /** * Destructor @@ -197,7 +196,7 @@ class AudioLayer * @return MainBuffer* a pointer to the MainBuffer instance */ MainBuffer* getMainBuffer (void) const { - return manager_->getMainBuffer(); + return Manager::instance().getMainBuffer(); } /** @@ -214,20 +213,6 @@ class AudioLayer return recorder_; } - /** - * Set the noise suppressor state - * @param state true if noise suppressor active, false elsewhere - */ - void setNoiseSuppressState (bool state) { noiseSuppressState_ = state; } - - /** - * Get the noise suppressor state - * @return true if noise suppressor activated - */ - bool getNoiseSuppressState (void) const { - return noiseSuppressState_; - } - /** * Get the mutex lock for the entire audio layer */ @@ -256,9 +241,6 @@ class AudioLayer */ bool isStarted_; - /** Augment coupling, reduce indirect access */ - ManagerImpl* manager_; - /** * Urgent ring buffer used for ringtones */ @@ -317,7 +299,7 @@ class AudioLayer DcBlocker *dcblocker_; AudioProcessing *audiofilter_; - bool noiseSuppressState_; + AudioPreference &audioPref; private: /** diff --git a/daemon/src/audio/pulseaudio/pulselayer.cpp b/daemon/src/audio/pulseaudio/pulselayer.cpp index da0d04fa451968cef82e4766db12cf09001e0551..90fb23dfffe2b8753b4d1b054fd7bf784a5b3742 100644 --- a/daemon/src/audio/pulseaudio/pulselayer.cpp +++ b/daemon/src/audio/pulseaudio/pulselayer.cpp @@ -218,8 +218,8 @@ void playback_overflow_callback (pa_stream* s UNUSED, void* userdata UNUSED) } // end anonymous namespace -PulseLayer::PulseLayer (ManagerImpl* manager) - : AudioLayer (manager , PULSEAUDIO) +PulseLayer::PulseLayer () + : AudioLayer (PULSEAUDIO) , context_(0) , mainloop_(0) , playback_(0) @@ -229,8 +229,6 @@ PulseLayer::PulseLayer (ManagerImpl* manager) { urgentRingBuffer_.createReadPointer(); - noiseSuppressState_ = true; - openLayer(); } @@ -428,9 +426,9 @@ void PulseLayer::createStreams (pa_context* c) playback_ = new AudioStream (c, mainloop_, PLAYBACK_STREAM_NAME, PLAYBACK_STREAM, audioSampleRate_); - std::string playbackDevice(manager_->audioPreference.getDevicePlayback()); - std::string recordDevice(manager_->audioPreference.getDeviceRecord()); - std::string ringtoneDevice(manager_->audioPreference.getDeviceRingtone()); + std::string playbackDevice(audioPref.getDevicePlayback()); + std::string recordDevice(audioPref.getDeviceRecord()); + std::string ringtoneDevice(audioPref.getDeviceRingtone()); _debug ("Audio: Device for playback: %s", playbackDevice.c_str()); _debug ("Audio: Device for record: %s", recordDevice.c_str()); @@ -493,7 +491,7 @@ void PulseLayer::closeCaptureStream (void) if (name && strlen (name)) { _debug ("Audio: record device to be stored in config: %s", name); - manager_->audioPreference.setDeviceRecord (name); + audioPref.setDeviceRecord (name); } } @@ -511,7 +509,7 @@ void PulseLayer::closePlaybackStream (void) if (name && strlen (name)) { _debug ("Audio: playback device to be stored in config: %s", name); - manager_->audioPreference.setDevicePlayback (name); + audioPref.setDevicePlayback (name); } } @@ -525,7 +523,7 @@ void PulseLayer::closePlaybackStream (void) if (name && strlen (name)) { _debug ("Audio: ringtone device to be stored in config: %s", name); - manager_->audioPreference.setDeviceRingtone (name); + audioPref.setDeviceRingtone (name); } } @@ -646,7 +644,7 @@ void PulseLayer::writeToSpeaker (void) return; } - AudioLoop *toneToPlay = manager_->getTelephoneTone(); + AudioLoop *toneToPlay = Manager::instance().getTelephoneTone(); if (toneToPlay) { if (playback_->getStreamState() == PA_STREAM_READY) { SFLDataFormat *out = (SFLDataFormat*) pa_xmalloc (writeableSizeBytes); @@ -744,7 +742,7 @@ end: void PulseLayer::ringtoneToSpeaker (void) { - AudioLoop* fileToPlay = manager_->getTelephoneFile(); + AudioLoop* fileToPlay = Manager::instance().getTelephoneFile(); int writableSize = pa_stream_writable_size (ringtone_->pulseStream()); if (fileToPlay) { diff --git a/daemon/src/audio/pulseaudio/pulselayer.h b/daemon/src/audio/pulseaudio/pulselayer.h index 353f1668667ebffa83f31b12dc2983ac7b8a2403..878cf9bfee96282574b6be06fd08800b0188c104 100644 --- a/daemon/src/audio/pulseaudio/pulselayer.h +++ b/daemon/src/audio/pulseaudio/pulselayer.h @@ -54,7 +54,7 @@ typedef std::list<std::string> DeviceList; class PulseLayer : public AudioLayer { public: - PulseLayer (ManagerImpl* manager); + PulseLayer (); ~PulseLayer (void); /** * Check if no devices are opened, otherwise close them. diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp index e057f04cd1a088afe9f1c726e820c92603eb6041..eea8003efb8daddcba14f1591d2f404ee2bd009f 100644 --- a/daemon/src/managerimpl.cpp +++ b/daemon/src/managerimpl.cpp @@ -2431,18 +2431,9 @@ std::string ManagerImpl::getNoiseSuppressState (void) const void ManagerImpl::setNoiseSuppressState (const std::string &state) { - _debug ("Manager: Set noise suppress state: %s", state.c_str()); - bool isEnabled = (state == "enabled"); audioPreference.setNoiseReduce (isEnabled); - - audioLayerMutexLock(); - - if (_audiodriver) - _audiodriver->setNoiseSuppressState (isEnabled); - - audioLayerMutexUnlock(); } std::string ManagerImpl::getEchoCancelState() const @@ -2484,10 +2475,10 @@ void ManagerImpl::initAudioDriver (void) audioLayerMutexLock(); if (preferences.getAudioApi() == PULSEAUDIO && system("ps -C pulseaudio") == 0) { - _audiodriver = new PulseLayer (this); + _audiodriver = new PulseLayer; } else { preferences.setAudioApi (ALSA); - _audiodriver = new AlsaLayer (this); + _audiodriver = new AlsaLayer; } int error = _audiodriver->getErrorMessage(); @@ -2585,9 +2576,9 @@ void ManagerImpl::switchAudioManager (void) delete _audiodriver; if (type == PULSEAUDIO) - _audiodriver = new PulseLayer (this); + _audiodriver = new PulseLayer(); else - _audiodriver = new AlsaLayer (this); + _audiodriver = new AlsaLayer(); _audiodriver->openDevice (numCardIn, numCardOut, numCardRing, samplerate, framesize, SFL_PCM_BOTH, alsaPlugin); @@ -2641,9 +2632,9 @@ void ManagerImpl::audioSamplingRateChanged (int samplerate) delete _audiodriver; if (type == PULSEAUDIO) - _audiodriver = new PulseLayer (this); + _audiodriver = new PulseLayer; else - _audiodriver = new AlsaLayer (this); + _audiodriver = new AlsaLayer; _audiodriver->openDevice (numCardIn, numCardOut, numCardRing, samplerate, framesize, SFL_PCM_BOTH, alsaPlugin);