diff --git a/sflphone-common/src/audio/alsa/alsalayer.cpp b/sflphone-common/src/audio/alsa/alsalayer.cpp
index ee5dc273501e0e12738c5f4f44226ba73356981e..2b7fa6ec7d0f1a91a53aaa366a2ceaed9e31be13 100644
--- a/sflphone-common/src/audio/alsa/alsalayer.cpp
+++ b/sflphone-common/src/audio/alsa/alsalayer.cpp
@@ -1014,55 +1014,53 @@ void AlsaLayer::audioCallback (void)
 
     SFLDataFormat* in = NULL;
 
-    if (is_capture_running()) {
-
-        micAvailBytes = snd_pcm_avail_update (_CaptureHandle);
+    if (!is_capture_running())
+        return;
 
-        if (micAvailBytes > 0) {
-            micAvailPut = getMainBuffer()->availForPut();
-            toPut = (micAvailBytes <= framesPerBufferAlsa) ? micAvailBytes : framesPerBufferAlsa;
-            in = (SFLDataFormat*) malloc (toPut * sizeof (SFLDataFormat));
-            toPut = read (in, toPut* sizeof (SFLDataFormat));
+    micAvailBytes = snd_pcm_avail_update (_CaptureHandle);
 
-            if (in) {
-                adjustVolume (in, toPut, SFL_PCM_CAPTURE);
+    if (micAvailBytes < 0)
+        _debug ("Audio: Mic error: %s", snd_strerror (micAvailBytes));
+    if (micAvailBytes <= 0)
+        return;
+    
+    micAvailPut = getMainBuffer()->availForPut();
+    toPut = (micAvailBytes <= framesPerBufferAlsa) ? micAvailBytes : framesPerBufferAlsa;
+    in = (SFLDataFormat*) malloc (toPut * sizeof (SFLDataFormat));
+    toPut = read (in, toPut* sizeof (SFLDataFormat));
 
-                int _mainBufferSampleRate = getMainBuffer()->getInternalSamplingRate();
+    adjustVolume (in, toPut, SFL_PCM_CAPTURE);
 
-                if (_mainBufferSampleRate && ( (int) _audioSampleRate != _mainBufferSampleRate)) {
+    int _mainBufferSampleRate = getMainBuffer()->getInternalSamplingRate();
 
-                    SFLDataFormat* rsmpl_out = (SFLDataFormat*) malloc (framesPerBufferAlsa * sizeof (SFLDataFormat));
+    if (_mainBufferSampleRate && ( (int) _audioSampleRate != _mainBufferSampleRate)) {
 
-                    int nbSample = toPut / sizeof (SFLDataFormat);
-                    int nb_sample_up = nbSample;
+        SFLDataFormat* rsmpl_out = (SFLDataFormat*) malloc (framesPerBufferAlsa * sizeof (SFLDataFormat));
 
-                    nbSample = _converter->downsampleData ( (SFLDataFormat*) in, rsmpl_out, _mainBufferSampleRate, _audioSampleRate, nb_sample_up);
+        int nbSample = toPut / sizeof (SFLDataFormat);
+        int nb_sample_up = nbSample;
 
-                    _audiofilter->processAudio (rsmpl_out, nbSample*sizeof (SFLDataFormat));
+        nbSample = _converter->downsampleData ( (SFLDataFormat*) in, rsmpl_out, _mainBufferSampleRate, _audioSampleRate, nb_sample_up);
 
-                    getMainBuffer()->putData (rsmpl_out, nbSample * sizeof (SFLDataFormat), 100);
+        _audiofilter->processAudio (rsmpl_out, nbSample*sizeof (SFLDataFormat));
 
-                    free (rsmpl_out);
-                    rsmpl_out = 0;
+        getMainBuffer()->putData (rsmpl_out, nbSample * sizeof (SFLDataFormat), 100);
 
-                } else {
-                    SFLDataFormat* filter_out = (SFLDataFormat*) malloc (framesPerBufferAlsa * sizeof (SFLDataFormat));
+        free (rsmpl_out);
+        rsmpl_out = 0;
 
-                    if (filter_out) {
-                        _audiofilter->processAudio (in, filter_out, toPut);
-                        // captureFile->write ( (const char *) filter_out, toPut);
-                        getMainBuffer()->putData (filter_out, toPut, 100);
-                        free (filter_out);
-                    }
-                }
-            }
+    } else {
+        SFLDataFormat* filter_out = (SFLDataFormat*) malloc (framesPerBufferAlsa * sizeof (SFLDataFormat));
 
-            free (in);
-            in=0;
-        } else if (micAvailBytes < 0) {
-            _debug ("Audio: Mic error: %s", snd_strerror (micAvailBytes));
+        if (filter_out) {
+            _audiofilter->processAudio (in, filter_out, toPut);
+            // captureFile->write ( (const char *) filter_out, toPut);
+            getMainBuffer()->putData (filter_out, toPut, 100);
+            free (filter_out);
         }
     }
+
+    free (in);
 }
 
 void* AlsaLayer::adjustVolume (void* buffer , int len, int stream)