diff --git a/sflphone-common/src/audio/alsa/alsalayer.cpp b/sflphone-common/src/audio/alsa/alsalayer.cpp
index 66d56893dad5c20021dc04f4ee36699ad3dff618..72bd589560acfc62393e73f870f227d60c904227 100644
--- a/sflphone-common/src/audio/alsa/alsalayer.cpp
+++ b/sflphone-common/src/audio/alsa/alsalayer.cpp
@@ -144,12 +144,6 @@ AlsaLayer::openDevice (int indexIn, int indexOut, int indexRing, int sampleRate,
     // use 1 sec buffer for resampling
     _converter = new SamplerateConverter (_audioSampleRate, 1000);
 
-    AudioLayer::_echoCancel = new EchoCancel();
-    AudioLayer::_echoCanceller = new AudioProcessing (static_cast<Algorithm *> (_echoCancel));
-
-    AudioLayer::_echoCancel->setEchoCancelState (AudioLayer::_echocancelstate);
-    AudioLayer::_echoCancel->setNoiseSuppressState (AudioLayer::_noisesuppressstate);
-
     AudioLayer::_dcblocker = new DcBlocker();
     AudioLayer::_audiofilter = new AudioProcessing (static_cast<Algorithm *> (_dcblocker));
 
@@ -165,9 +159,6 @@ AlsaLayer::startStream (void)
     if (_audiofilter)
         _audiofilter->resetAlgorithm();
 
-    if (_echoCanceller)
-        _echoCanceller->resetAlgorithm();
-
     if (is_playback_running() && is_capture_running())
         return;
 
@@ -266,18 +257,12 @@ bool AlsaLayer::isCaptureActive (void)
 void AlsaLayer::setEchoCancelState (bool state)
 {
     // if a stream already running
-    if (AudioLayer::_echoCancel)
-        _echoCancel->setEchoCancelState (state);
-
     AudioLayer::_echocancelstate = state;
 }
 
 void AlsaLayer::setNoiseSuppressState (bool state)
 {
     // if a stream already opened
-    if (AudioLayer::_echoCancel)
-        _echoCancel->setNoiseSuppressState (state);
-
     AudioLayer::_noisesuppressstate = state;
 
 }
@@ -1012,10 +997,6 @@ void AlsaLayer::audioCallback (void)
 
                 getMainBuffer()->getData (out, toGet, spkrVolume);
 
-                // TODO: Audio processing should be performed inside mainbuffer
-                // to avoid such problem
-                AudioLayer::_echoCancel->setSamplingRate (_mainBufferSampleRate);
-
                 if (_mainBufferSampleRate && ( (int) _audioSampleRate != _mainBufferSampleRate)) {
 
                     // Do sample rate conversion
@@ -1038,9 +1019,6 @@ void AlsaLayer::audioCallback (void)
 
                 }
 
-                // Copy far-end signal in echo canceller to adapt filter coefficient
-                // AudioLayer::_echoCanceller->putData (out, toGet);
-
             } else {
 
                 if (!tone && !file_tone) {
@@ -1105,8 +1083,6 @@ void AlsaLayer::audioCallback (void)
     int toPut;
 
     SFLDataFormat* in = NULL;
-    SFLDataFormat echoCancelledMic[5000];
-    memset (echoCancelledMic, 0, 5000);
 
     if (is_capture_running()) {
 
@@ -1136,11 +1112,7 @@ void AlsaLayer::audioCallback (void)
 
                     _audiofilter->processAudio (rsmpl_out, nbSample*sizeof (SFLDataFormat));
 
-                    // echo cancellation processing
-                    // int sampleready = AudioLayer::_echoCanceller->processAudio (rsmpl_out, echoCancelledMic, nbSample*sizeof (SFLDataFormat));
-
                     getMainBuffer()->putData (rsmpl_out, nbSample * sizeof (SFLDataFormat), 100);
-                    // getMainBuffer()->putData (echoCancelledMic, sampleready*sizeof (SFLDataFormat), 100);
 
                     free (rsmpl_out);
                     rsmpl_out = 0;
@@ -1153,8 +1125,6 @@ void AlsaLayer::audioCallback (void)
                     if (filter_out) {
                         _audiofilter->processAudio (in, filter_out, toPut);
                         // captureFile->write ( (const char *) filter_out, toPut);
-                        // int sampleready = AudioLayer::_echoCanceller->processAudio (filter_out, echoCancelledMic, toPut);
-                        // getMainBuffer()->putData (echoCancelledMic, sampleready*sizeof (SFLDataFormat), 100);
                         getMainBuffer()->putData (filter_out, toPut, 100);
                         free (filter_out);
                     }
diff --git a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
index 366351b948dd3dded720ada42ea7fcb6feffdf8c..23580d1ed7ac06200f07328ea2f72ecebb476c56 100644
--- a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
+++ b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
@@ -267,12 +267,6 @@ PulseLayer::~PulseLayer (void)
         _converter = NULL;
     }
 
-    delete AudioLayer::_echoCancel;
-    AudioLayer::_echoCancel = NULL;
-
-    delete AudioLayer::_echoCanceller;
-    AudioLayer::_echoCanceller = NULL;
-
     delete AudioLayer::_dcblocker;
     AudioLayer::_dcblocker = NULL;
 
@@ -436,9 +430,6 @@ bool PulseLayer::openDevice (int indexIn UNUSED, int indexOut UNUSED, int indexR
     _converter = new SamplerateConverter (_audioSampleRate, 1000);
 
     // Instantiate the algorithm
-    AudioLayer::_echoCancel = new EchoCancel (_audioSampleRate, _frameSize);
-    AudioLayer::_echoCanceller = new AudioProcessing (static_cast<Algorithm *> (_echoCancel));
-
     AudioLayer::_dcblocker = new DcBlocker();
     AudioLayer::_audiofilter = new AudioProcessing (static_cast<Algorithm *> (_dcblocker));
 
@@ -650,9 +641,6 @@ int PulseLayer::canGetMic()
 void PulseLayer::startStream (void)
 {
 
-    if (_echoCanceller)
-        _echoCanceller->resetAlgorithm();
-
     // Create Streams
     if (!playback || !record)
         createStreams (context);
@@ -750,18 +738,12 @@ void PulseLayer::processData (void)
 void PulseLayer::setEchoCancelState (bool state)
 {
     // if a stream already running
-    if (AudioLayer::_echoCancel)
-        _echoCancel->setEchoCancelState (state);
-
     AudioLayer::_echocancelstate = state;
 }
 
 void PulseLayer::setNoiseSuppressState (bool state)
 {
     // if a stream already opened
-    if (AudioLayer::_echoCancel)
-        _echoCancel->setNoiseSuppressState (state);
-
     AudioLayer::_noisesuppressstate = state;
 
 }
@@ -865,10 +847,6 @@ void PulseLayer::writeToSpeaker (void)
 
                 getMainBuffer()->getData (out, byteToGet, 100);
 
-                // TODO: Audio processing should be performed inside mainbuffer
-                // to avoid such problem
-                AudioLayer::_echoCancel->setSamplingRate (_mainBufferSampleRate);
-
                 // test if resampling is required
                 if (_mainBufferSampleRate && ( (int) _audioSampleRate != _mainBufferSampleRate)) {
 
@@ -895,10 +873,6 @@ void PulseLayer::writeToSpeaker (void)
 
                 }
 
-
-                // Copy far-end signal in echo canceller to adapt filter coefficient
-                // AudioLayer::_echoCanceller->putData(out, byteToGet);
-
                 pa_xfree (out);
 
             } else {
@@ -930,9 +904,6 @@ void PulseLayer::readFromMic (void)
     const char* data = NULL;
     size_t r;
 
-    SFLDataFormat echoCancelledMic[10000];
-    memset (echoCancelledMic, 0, 10000*sizeof (SFLDataFormat));
-
     int readableSize = pa_stream_readable_size (record->pulseStream());
 
 
@@ -963,12 +934,6 @@ void PulseLayer::readFromMic (void)
 
             // captureFilterFile->write ((const char *)rsmpl_out, nbSample*sizeof(SFLDataFormat));
 
-            // echo cancellation processing
-            // int sampleready = _echoCanceller->processAudio(rsmpl_out, echoCancelledMic, nbSample*sizeof(SFLDataFormat));
-
-            // getMainBuffer()->putData ( (void*) rsmpl_out, nbSample*sizeof (SFLDataFormat), 100);
-            // if(sampleready)
-            // getMainBuffer()->putData ( echoCancelledMic, sampleready*sizeof (SFLDataFormat), 100);
             getMainBuffer()->putData (rsmpl_out, nbSample*sizeof (SFLDataFormat), 100);
 
             pa_xfree (rsmpl_out);
@@ -984,11 +949,6 @@ void PulseLayer::readFromMic (void)
 
             // captureFile->write ( (const char *) filter_out, r);
 
-            // echo cancellation processing
-            // int sampleready = _echoCanceller->processAudio((SFLDataFormat *)filter_out, echoCancelledMic, r);
-
-            // no resampling required
-            // getMainBuffer()->putData (echoCancelledMic, sampleready*sizeof (SFLDataFormat), 100);
             getMainBuffer()->putData (filter_out, r, 100);
 
             pa_xfree (filter_out);