diff --git a/src/audio/audiortp.cpp b/src/audio/audiortp.cpp
index 9a58c7ec0a3d65f6b17a3f475400a7855cc1413f..e50cb2060bd2a4e12689133e5ba872c9d9334684 100644
--- a/src/audio/audiortp.cpp
+++ b/src/audio/audiortp.cpp
@@ -131,6 +131,7 @@ AudioRtpRTX::AudioRtpRTX (SIPCall *sipcall, bool sym) : time(new ost::Time()), _
     _sessionRecv = NULL;
     _sessionSend = NULL;
   }
+  
 }
 
 AudioRtpRTX::~AudioRtpRTX () {
@@ -168,7 +169,7 @@ AudioRtpRTX::initBuffers()
 {
   converter = new SamplerateConverter( _layerSampleRate , _layerFrameSize );
 
-  int nbSamplesMax = (int) (_layerSampleRate * _layerFrameSize /1000);
+  nbSamplesMax = (int) (_layerSampleRate * _layerFrameSize /1000);
 
   micData = new SFLDataFormat[nbSamplesMax];
   micDataConverted = new SFLDataFormat[nbSamplesMax];
@@ -314,12 +315,15 @@ AudioRtpRTX::receiveSessionForSpkr (int& countTime)
 
   if (_ca == 0) { return; }
   //try {
+
     AudioLayer* audiolayer = Manager::instance().getAudioDriver();
     if (!audiolayer) { return; }
 
     const ost::AppDataUnit* adu = NULL;
     // Get audio data stream
 
+    // printf("AudioRtpRTX::receiveSessionForSpkr() %i \n",_session->getFirstTimestamp());
+
     if (!_sym) {
       adu = _sessionRecv->getData(_sessionRecv->getFirstTimestamp());
     } else {
@@ -330,10 +334,14 @@ AudioRtpRTX::receiveSessionForSpkr (int& countTime)
       return;
     }
 
+    
+
     //int payload = adu->getType(); // codec type
     unsigned char* spkrData  = (unsigned char*)adu->getData(); // data in char
     unsigned int size = adu->getSize(); // size in char
 
+    // printf("AudioRtpRTX::receiveSessionForSpkr() Size of data from %i \n",size);
+
     // Decode data with relevant codec
     unsigned int max = (unsigned int)(_codecSampleRate * _layerFrameSize / 1000);
 
@@ -344,7 +352,6 @@ AudioRtpRTX::receiveSessionForSpkr (int& countTime)
     }
 
     if (_audiocodec != NULL) {
-  
 
       int expandedSize = _audiocodec->codecDecode( spkrDataDecoded , spkrData , size );
       //buffer _receiveDataDecoded ----> short int or int16, coded on 2 bytes
@@ -409,7 +416,7 @@ AudioRtpRTX::run () {
   //encoding before sending
   AudioLayer *audiolayer = Manager::instance().getAudioDriver();
   _layerFrameSize = audiolayer->getFrameSize(); // en ms
-  _layerSampleRate = audiolayer->getSampleRate();	
+  _layerSampleRate = audiolayer->getSampleRate();
   initBuffers();
   int step; 
 
@@ -435,6 +442,11 @@ AudioRtpRTX::run () {
     _start.post();
     _debug("- ARTP Action: Start\n");
     while (!testCancel()) {
+      
+      // printf("AudioRtpRTX::run() _session->getFirstTimestamp() %i \n",_session->getFirstTimestamp());
+    
+      // printf("AudioRtpRTX::run() _session->isWaiting() %i \n",_session->isWaiting());
+      /////////////////////
       ////////////////////////////
       // Send session
       ////////////////////////////
@@ -446,7 +458,10 @@ AudioRtpRTX::run () {
       receiveSessionForSpkr(countTime);
       // Let's wait for the next transmit cycle
 
-      _ca->recAudio.recData(spkrDataConverted,micData,_nSamplesSpkr,_nSamplesMic);
+      if(_session->isWaiting())
+        _ca->recAudio.recData(spkrDataConverted,micData,_nSamplesSpkr,_nSamplesMic);
+      else
+        _ca->recAudio.recData(micData,_nSamplesMic);
 
       Thread::sleep(TimerPort::getTimer()); 
       TimerPort::incTimer(_layerFrameSize); // 'frameSize' ms
diff --git a/src/audio/audiortp.h b/src/audio/audiortp.h
index fe75441c0ee6ad36a84f77a103707e5daf2c8064..8b54fc1700cae0aea3e5a5fb5182e311da1462a9 100644
--- a/src/audio/audiortp.h
+++ b/src/audio/audiortp.h
@@ -128,7 +128,10 @@ class AudioRtpRTX : public ost::Thread, public ost::TimerPort {
      */
     int _nSamplesMic;
     
-  
+    /**
+     * Maximum number of sample for audio buffers (mic and spkr)
+     */
+    int nbSamplesMax; 
     
     /**
      * Init the RTP session. Create either symmetric or double sessions to manage data transport
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 1afa870b65251af25481147d52e6b72f28ac9dce..12025bfeaf0e9f0dc9524909d208861536ceafa3 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -89,7 +89,7 @@ IAXVoIPLink::init()
         return false;
 
     bool returnValue = false;
-    //_localAddress = "127.0.0.1";
+    // _localAddress = "127.0.0.1";
     // port 0 is default
     //  iax_enable_debug(); have to enable debug when compiling iax...
     int port = IAX_DEFAULT_PORTNO;
@@ -207,6 +207,8 @@ IAXVoIPLink::getEvent()
             iaxHandlePrecallEvent(event);
         }
 
+        // _debug("IAXVoIPLink::getEvent() : timestamp %i \n",event->ts);
+
         iax_event_free(event);
     }
     _mutexIAX.leaveMutex();
@@ -218,6 +220,7 @@ IAXVoIPLink::getEvent()
     if (_nextRefreshStamp && _nextRefreshStamp - 2 < time(NULL)) {
         sendRegister("");
     }
+
     if(call){
       call->recAudio.recData(spkrDataConverted,micData,nbSampleForRec_,nbSampleForRec_);
     }
diff --git a/src/plug-in/audiorecorder/audiorecord.cpp b/src/plug-in/audiorecorder/audiorecord.cpp
index 5e73d442db62a69cc449c199e7983fc8905977cb..fd4926abbb292cc5de779ed20c1f0d81a0c88c57 100644
--- a/src/plug-in/audiorecorder/audiorecord.cpp
+++ b/src/plug-in/audiorecorder/audiorecord.cpp
@@ -434,7 +434,7 @@ void AudioRecord::recData(SFLDataFormat* buffer_1, SFLDataFormat* buffer_2, int
     if ( sndFormat_ == INT16 ) { // TODO change INT16 to SINT16
       for (int k=0; k<nSamples_1; k++){
       
-        mixBuffer_[k] = (buffer_1[k]+buffer_2[k])/2;
+        mixBuffer_[k] = (buffer_1[k]+buffer_2[k]);
     
         // dsp.getRMS(mixBuffer_[k]);