diff --git a/sflphone-common/configure.ac b/sflphone-common/configure.ac
index 36aaffefb855b07ec44c3853b3f5c137b418d34d..1149007f870418208f8318826987ccf1b18f6b29 100644
--- a/sflphone-common/configure.ac
+++ b/sflphone-common/configure.ac
@@ -341,17 +341,19 @@ AC_ARG_WITH([speex],
 
 AS_IF([test "x$with_speex" != xno],
 		[AC_CHECK_HEADER([speex/speex.h], , AC_MSG_FAILURE([Unable to find the libspeex headers (you may need to install the dev package).  You may use --without-speex to compile without speex codec support.]))]
-		[AC_CHECK_HEADER([speex/speex_preprocess.h], , AC_MSG_FAILURE([Unable to find the libspeexdsp headers (you may need to install the libspeexdsp-dev package).  You may use --without-speex to compile without speex codec support.]))]
 		[AC_CHECK_LIB([speex], [speex_decode_int],
 			[],
 			[AC_MSG_FAILURE(
 				[libspeex link test failed.   You may use --without-speex to compile without speex codec support.])]
 			)
 		]
-		dnl More advanced check in case the libspeexdsp is not installed
-		AC_SEARCH_LIBS(speex_preprocess_run, speexdsp, HAVE_SPEEXDSP="yes", HAVE_SPEEXDSP="no", [])
+		# dnl More advanced check in case the libspeexdsp is not installed
+		# AC_SEARCH_LIBS(speex_preprocess_run, speexdsp, HAVE_SPEEXDSP="yes", HAVE_SPEEXDSP="no", [])
 	 )
 
+dnl check in case the libspeexdsp is not installed
+AC_CHECK_HEADER([speex/speex_preprocess.h], , AC_MSG_FAILURE([Unable to find the libspeexdsp headers (you may need to install the libspeexdsp-dev package) used for Noise Suppression and Automatic Gain Control.]))
+AC_CHECK_LIB(speexdsp, speex_preprocess_run, [], [], [])
 AC_DEFINE([HAVE_SPEEX], test "x$with_speex" = "xyes", [Define if you have libspeex])
 	AM_CONDITIONAL(BUILD_SPEEX, test "x$with_speex" = "xyes" )
 AM_CONDITIONAL(ENABLE_SPEEXDSP, test  $HAVE_SPEEXDSP = yes)
diff --git a/sflphone-common/src/audio/Makefile.am b/sflphone-common/src/audio/Makefile.am
index 156246d16467f005f3dd6dc537be2d4a465b7b15..ef2452b0bd8a6a0ba46df917e0bd5394b711b2ba 100644
--- a/sflphone-common/src/audio/Makefile.am
+++ b/sflphone-common/src/audio/Makefile.am
@@ -4,6 +4,10 @@ noinst_LTLIBRARIES = libaudio.la
 
 SUBDIRS = codecs audiortp sound alsa pulseaudio 
 
+# if ENABLE_SPEEXDSP
+# SPEEXDSP=-DHAVE_SPEEXDSP_LIB
+# endif
+
 libaudio_la_SOURCES = \
 		audioloop.cpp \
 		ringbuffer.cpp \
diff --git a/sflphone-common/src/audio/codecs/Makefile.am b/sflphone-common/src/audio/codecs/Makefile.am
index e338dc3fb5f898a86039e174c6705370fc20b91a..4c17a54c7ec49912aa96bd3a8ee4ddbec543c33c 100644
--- a/sflphone-common/src/audio/codecs/Makefile.am
+++ b/sflphone-common/src/audio/codecs/Makefile.am
@@ -13,10 +13,6 @@ libcodec_gsm_so_LDFLAGS = --shared -lc -lgsm
 INSTALL_GSM_RULE = install-libcodec_gsm_so
 endif
 
-if ENABLE_SPEEXDSP
-SPEEXDSP=-DHAVE_SPEEXDSP_LIB
-endif
-
 if BUILD_SPEEX
 SPEEX_NB_LIB = libcodec_speex_nb.so
 libcodec_speex_nb_so_SOURCES = speexcodec_nb.cpp
diff --git a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
index ca19131164c371e5c4e2303c56f5879ecb0dcfcb..fdad5f29dc9facfc789d0c67b97967b220a90d4d 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
@@ -45,8 +45,7 @@ class Speex : public AudioCodec
                 _speex_enc_bits(),
                 _speex_dec_state(),
                 _speex_enc_state(),
-                _speex_frame_size(),
-                _preprocess_state() {
+		  _speex_frame_size() {
             _clockRate = 8000;
             _frameSize = 160; // samples, 20 ms at 8kHz
             _channel = 1;
@@ -77,32 +76,6 @@ class Speex : public AudioCodec
 
             speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_speex_frame_size);
 
-
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            int enable = 1;
-            int quality = 10;
-            int complex = 10;
-            int attenuation = -10;
-
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_VAD, &enable);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_DTX, &enable);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_VBR_QUALITY, &quality);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_COMPLEXITY, &complex);
-
-            // Init the decoder struct
-            speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_speex_frame_size);
-
-            // Init the preprocess struct
-            _preprocess_state = speex_preprocess_state_init (_speex_frame_size,_clockRate);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_DENOISE, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &attenuation);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_VAD, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_AGC, &enable);
-#endif
-	    */
-
         }
 
         ~Speex() {
@@ -119,9 +92,6 @@ class Speex : public AudioCodec
             speex_bits_destroy (&_speex_enc_bits);
             speex_encoder_destroy (_speex_enc_state);
             _speex_enc_state = 0;
-
-            speex_preprocess_state_destroy( _preprocess_state);
-            _preprocess_state = NULL;
         }
 
         virtual int codecDecode (short *dst, unsigned char *src, unsigned int size) {
@@ -137,13 +107,6 @@ class Speex : public AudioCodec
         virtual int codecEncode (unsigned char *dst, short *src, unsigned int size) {
             speex_bits_reset (&_speex_enc_bits);
 
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            speex_preprocess_run (_preprocess_state, src);
-#endif
-	    */
-
             speex_encode_int (_speex_enc_state, src, &_speex_enc_bits);
             int nbBytes = speex_bits_write (&_speex_enc_bits, (char*) dst, size);
 
@@ -157,7 +120,6 @@ class Speex : public AudioCodec
         void *_speex_dec_state;
         void *_speex_enc_state;
         int _speex_frame_size;
-        SpeexPreprocessState *_preprocess_state;
 };
 
 // the class factories
diff --git a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
index 738b32331e31163fc7a700cf8581c2df4f5a0331..47494fb99c79c9427052e1f9bd86b6bf06bf18a9 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
@@ -32,7 +32,6 @@
 #include "audiocodec.h"
 #include <cstdio>
 #include <speex/speex.h>
-#include <speex/speex_preprocess.h>
 
 class Speex : public AudioCodec
 {
@@ -45,8 +44,7 @@ class Speex : public AudioCodec
                 _speex_enc_bits(),
                 _speex_dec_state(),
                 _speex_enc_state(),
-                _speex_frame_size(),
-                _preprocess_state() {
+		_speex_frame_size() {
             _clockRate = 32000;
             _frameSize = 640; // 20 ms at 32 kHz
             _channel = 1;
@@ -78,30 +76,6 @@ class Speex : public AudioCodec
             speex_encoder_ctl (_speex_enc_state,SPEEX_SET_SAMPLING_RATE,&_clockRate);
 
             speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_speex_frame_size);
-
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            int enable = 1;
-            int complex = 10;
-            int attenuation = -10;
-
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_VAD, &enable);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_DTX, &enable);
-            // speex_encoder_ctl(_speex_enc_state, SPEEX_SET_VBR_QUALITY, &quality);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_COMPLEXITY, &complex);
-
-            // Init the decoder struct
-            speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_frameSize);
-
-            // Init the preprocess struct
-            _preprocess_state = speex_preprocess_state_init (_frameSize,_clockRate);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_DENOISE, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &attenuation);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_VAD, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_AGC, &enable);
-#endif
-	    */
         }
 
         ~Speex() {
@@ -119,8 +93,6 @@ class Speex : public AudioCodec
             speex_encoder_destroy (_speex_enc_state);
             _speex_enc_state = 0;
 
-            speex_preprocess_state_destroy( _preprocess_state);
-            _preprocess_state = NULL;
         }
 
         virtual int codecDecode (short *dst, unsigned char *src, unsigned int size) {
@@ -136,13 +108,6 @@ class Speex : public AudioCodec
         virtual int codecEncode (unsigned char *dst, short *src, unsigned int size) {
             speex_bits_reset (&_speex_enc_bits);
 
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            speex_preprocess_run (_preprocess_state, src);
-#endif
-	    */
-
             speex_encode_int (_speex_enc_state, src, &_speex_enc_bits);
             speex_bits_nbytes (&_speex_enc_bits);
             int nbBytes = speex_bits_write (&_speex_enc_bits, (char*) dst, size);
@@ -157,7 +122,6 @@ class Speex : public AudioCodec
         void *_speex_dec_state;
         void *_speex_enc_state;
         int _speex_frame_size;
-        SpeexPreprocessState *_preprocess_state;
 };
 
 // the class factories
diff --git a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
index 78559ad3faf97ac09991cd76f67d44687695010f..d9fda3e3af502b0dfcdc6d24c864b46942b1e64b 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
@@ -32,7 +32,6 @@
 #include "audiocodec.h"
 #include <cstdio>
 #include <speex/speex.h>
-#include <speex/speex_preprocess.h>
 
 class Speex : public AudioCodec
 {
@@ -45,8 +44,7 @@ class Speex : public AudioCodec
                 _speex_enc_bits(),
                 _speex_dec_state(),
                 _speex_enc_state(),
-                _speex_frame_size(),
-                _preprocess_state() {
+		_speex_frame_size() {
             _clockRate = 16000;
             _frameSize = 320; // 20 ms at 16 kHz
             _channel = 1;
@@ -77,31 +75,6 @@ class Speex : public AudioCodec
 
             speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_speex_frame_size);
 
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            int enable = 1;
-            int quality = 10;
-            int complex = 10;
-            int attenuation = -10;
-
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_VAD, &enable);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_DTX, &enable);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_VBR_QUALITY, &quality);
-            speex_encoder_ctl (_speex_enc_state, SPEEX_SET_COMPLEXITY, &complex);
-
-            // Init the decoder struct
-            speex_decoder_ctl (_speex_dec_state, SPEEX_GET_FRAME_SIZE, &_speex_frame_size);
-
-            // Init the preprocess struct
-            _preprocess_state = speex_preprocess_state_init (_speex_frame_size,_clockRate);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_DENOISE, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_NOISE_SUPPRESS, &attenuation);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_VAD, &enable);
-            speex_preprocess_ctl (_preprocess_state, SPEEX_PREPROCESS_SET_AGC, &enable);
-#endif
-	    */
-
         }
 
         ~Speex() {
@@ -119,8 +92,6 @@ class Speex : public AudioCodec
             speex_encoder_destroy (_speex_enc_state);
             _speex_enc_state = 0;
 
-            speex_preprocess_state_destroy( _preprocess_state);
-            _preprocess_state = NULL;
         }
 
         virtual int codecDecode (short *dst, unsigned char *src, unsigned int size) {
@@ -137,13 +108,6 @@ class Speex : public AudioCodec
         virtual int codecEncode (unsigned char *dst, short *src, unsigned int size) {
             speex_bits_reset (&_speex_enc_bits);
 
-	    /*
-#ifdef HAVE_SPEEXDSP_LIB
-
-            speex_preprocess_run (_preprocess_state, src);
-#endif
-	    */
-
             //printf ("Codec::codecEncode() size %i\n", size);
             speex_encode_int (_speex_enc_state, src, &_speex_enc_bits);
             int nbBytes = speex_bits_write (&_speex_enc_bits, (char*) dst, size);
@@ -158,7 +122,6 @@ class Speex : public AudioCodec
         void *_speex_dec_state;
         void *_speex_enc_state;
         int _speex_frame_size;
-        SpeexPreprocessState *_preprocess_state;
 };
 
 // the class factories
diff --git a/sflphone-common/src/audio/echocancel.cpp b/sflphone-common/src/audio/echocancel.cpp
index c733ade3c755b1fd45fee5d5975475f190cb7322..16eb50f480a794637558c5c5a07c534ae21a2efd 100644
--- a/sflphone-common/src/audio/echocancel.cpp
+++ b/sflphone-common/src/audio/echocancel.cpp
@@ -90,7 +90,6 @@ EchoCancel::EchoCancel(int smplRate, int frameLength) : _samplingRate(smplRate),
   _spkrHistoryLength = SPKR_LENGTH / SEGMENT_LENGTH;
   _nbSegmentPerFrame =  _frameLength / SEGMENT_LENGTH;
 
-  // #ifdef HAVE_SPEEXDSP_LIB
   _noiseState = speex_preprocess_state_init(_smplPerFrame, _samplingRate);
   int i=1;
   speex_preprocess_ctl(_noiseState, SPEEX_PREPROCESS_SET_DENOISE, &i);
@@ -110,7 +109,7 @@ EchoCancel::EchoCancel(int smplRate, int frameLength) : _samplingRate(smplRate),
   speex_preprocess_ctl(_noiseState, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);
   i = 0;
   speex_preprocess_ctl(_noiseState, SPEEX_PREPROCESS_SET_VAD, &i);
-  // #endif
+
 
   memset(_avgSpkrLevelHist, 0, BUFF_SIZE*sizeof(int));
   memset(_avgMicLevelHist, 0, BUFF_SIZE*sizeof(int));
@@ -135,9 +134,7 @@ EchoCancel::~EchoCancel()
   delete _spkrData;
   _spkrData = NULL;
 
-  // #ifdef HAVE_SPEEXDSP_LIB
   speex_preprocess_state_destroy(_noiseState);
-  // #endif
   
   // micFile->close();
   // spkrFile->close();
@@ -189,7 +186,6 @@ void EchoCancel::reset()
   _spkrData->flushAll();
   _spkrDataOut->flushAll();
 
-  // #ifdef HAVE_SPEEXDSP_LIB
   speex_preprocess_state_destroy(_noiseState);
 
   _noiseState = speex_preprocess_state_init(_smplPerFrame, _samplingRate);
@@ -210,8 +206,6 @@ void EchoCancel::reset()
   f=0.0;
   speex_preprocess_ctl(_noiseState, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);
 
-  // #endif
-
   _spkrStoped = true;
 
   _processedByte = 0;
@@ -290,12 +284,14 @@ int EchoCancel::process(SFLDataFormat *inputData, SFLDataFormat *outputData, int
       // micFile->write((const char *)_tmpMic, byteSize);
       // spkrFile->write((const char *)_tmpSpkr, byteSize);
 
-      // #ifdef HAVE_SPEEXDSP_LIB  
+#ifdef HAVE_LIBSPEEX_DSP
+
+      _debug("OK");
 
       // Remove noise
       if(_noiseActive)
           speex_preprocess_run(_noiseState, _tmpMic);
-      // #endif
+#endif
 
       // Processed echo cancellation
       performEchoCancel(_tmpMic, _tmpSpkr, _tmpOut);