diff --git a/daemon/src/audio/audiortp/audio_rtp_session.cpp b/daemon/src/audio/audiortp/audio_rtp_session.cpp
index d1bfd4516725cbbc9647185bdad7e850f0e46660..473db11a7565d038fa543a6d3be03e3cdf9a2af8 100644
--- a/daemon/src/audio/audiortp/audio_rtp_session.cpp
+++ b/daemon/src/audio/audiortp/audio_rtp_session.cpp
@@ -45,6 +45,7 @@ AudioRtpSession::AudioRtpSession(SIPCall &call, ost::RTPDataQueue &queue, ost::T
     , call_(call)
     , timestamp_(0)
     , timestampIncrement_(0)
+    , transportRate_(20)
     , queue_(queue)
     , isStarted_(false)
     , remote_ip_()
@@ -98,6 +99,12 @@ void AudioRtpSession::setSessionMedia(AudioCodec &audioCodec)
         else
             queue_.setPayloadFormat(ost::StaticPayloadFormat(static_cast<ost::StaticPayloadType>(payloadType)));
     }
+
+    call_.setRecordingSmplRate(getCodecSampleRate());
+
+    int transportRate = getCodecFrameSize() / (getCodecSampleRate() / 1000);
+    transportRate_ = (transportRate > 0)?transportRate:20;
+    DEBUG("Switching to a transport rate of %d ms",transportRate_);
 }
 
 void AudioRtpSession::sendDtmfEvent()
diff --git a/daemon/src/audio/audiortp/audio_rtp_session.h b/daemon/src/audio/audiortp/audio_rtp_session.h
index ca4f406bba6496a76dd83537d9b4cf3b962c0338..f62687da32ad4ba9c7c1b8ad6ce72e76d76c0dd6 100644
--- a/daemon/src/audio/audiortp/audio_rtp_session.h
+++ b/daemon/src/audio/audiortp/audio_rtp_session.h
@@ -80,7 +80,7 @@ class AudioRtpSession : public AudioRtpRecordHandler {
         /**
          * Set the audio codec for this RTP session
          */
-        virtual void setSessionMedia(AudioCodec &codec) = 0;
+        void setSessionMedia(AudioCodec &codec);
 
 
         bool onRTPPacketRecv(ost::IncomingRTPPkt&);
@@ -111,6 +111,12 @@ class AudioRtpSession : public AudioRtpRecordHandler {
          */
         int timestampIncrement_;
 
+        /**
+         * Rate at which the transport layer handle packets, should be
+         * synchronized with codec requirements.
+         */
+        unsigned int transportRate_;
+
         ost::RTPDataQueue &queue_;
 
         bool isStarted_;
diff --git a/daemon/src/audio/audiortp/audio_symmetric_rtp_session.cpp b/daemon/src/audio/audiortp/audio_symmetric_rtp_session.cpp
index e7b6326121c3559f05a52a05bf75c3b00837cef4..84f37720860918de263c46fa6c3f9429503e372c 100644
--- a/daemon/src/audio/audiortp/audio_symmetric_rtp_session.cpp
+++ b/daemon/src/audio/audiortp/audio_symmetric_rtp_session.cpp
@@ -43,7 +43,6 @@ AudioSymmetricRtpSession::AudioSymmetricRtpSession(SIPCall &call) :
     , ost::SymmetricRTPSession(ost::InetHostAddress(call.getLocalIp().c_str()), call.getLocalAudioPort())
     , AudioRtpSession(call, *this, *this)
     , rtpThread_(*this)
-    , transportRate_(20)
 {
     DEBUG("Setting new RTP session with destination %s:%d",
             call_.getLocalIp().c_str(), call_.getLocalAudioPort());
@@ -78,16 +77,6 @@ void AudioSymmetricRtpSession::AudioRtpThread::run()
     }
 }
 
-void AudioSymmetricRtpSession::setSessionMedia(AudioCodec &audioCodec)
-{
-    AudioRtpSession::setSessionMedia(audioCodec);
-    call_.setRecordingSmplRate(getCodecSampleRate());
-
-    int transportRate = audioCodec.getFrameSize() / (audioCodec.getClockRate()/1000);
-    transportRate_ = (transportRate > 0)?transportRate:20;
-    DEBUG("Switching to a transport rate of %d ms",transportRate_);
-}
-
 int AudioSymmetricRtpSession::startRtpThread(AudioCodec &audiocodec)
 {
     DEBUG("Starting main thread");
diff --git a/daemon/src/audio/audiortp/audio_symmetric_rtp_session.h b/daemon/src/audio/audiortp/audio_symmetric_rtp_session.h
index ba364a16a5ad71a81073afbfc0dd408441c822b2..b7b9e58f57542fa9e82e868d77618459cc2389a1 100644
--- a/daemon/src/audio/audiortp/audio_symmetric_rtp_session.h
+++ b/daemon/src/audio/audiortp/audio_symmetric_rtp_session.h
@@ -96,11 +96,9 @@ class AudioSymmetricRtpSession : public ost::TimerPort, public ost::SymmetricRTP
                 NON_COPYABLE(AudioRtpThread);
                 AudioSymmetricRtpSession &rtpSession_;
         };
-        void setSessionMedia(AudioCodec &codec);
         int startRtpThread(AudioCodec &audiocodec);
 
-        AudioRtpThread rtpThread_    ;
-        unsigned int   transportRate_;
+        AudioRtpThread rtpThread_;
 };
 
 }
diff --git a/daemon/src/audio/audiortp/audio_zrtp_session.cpp b/daemon/src/audio/audiortp/audio_zrtp_session.cpp
index 0a109bb0e6b406661e463fef4703dbe6bfcf9dbb..469e04e44583888be24a26ee040e67d36e9110eb 100644
--- a/daemon/src/audio/audiortp/audio_zrtp_session.cpp
+++ b/daemon/src/audio/audiortp/audio_zrtp_session.cpp
@@ -126,12 +126,9 @@ AudioZrtpSession::AudioZrtpThread::AudioZrtpThread(AudioZrtpSession &session) :
 
 void AudioZrtpSession::AudioZrtpThread::run()
 {
-    // Set recording sampling rate
-    int threadSleep = 20;
-
     DEBUG("Entering Audio zrtp thread main loop %s", running_ ? "running" : "not running");
 
-    TimerPort::setTimer(threadSleep);
+    TimerPort::setTimer(zrtpSession_.transportRate_);
 
     while (running_) {
         // Send session
@@ -142,7 +139,7 @@ void AudioZrtpSession::AudioZrtpThread::run()
 
         Thread::sleep(TimerPort::getTimer());
 
-        TimerPort::incTimer(threadSleep);
+        TimerPort::incTimer(zrtpSession_.transportRate_);
     }
 
     DEBUG("Leaving audio rtp thread loop");
@@ -153,11 +150,6 @@ int AudioZrtpSession::getIncrementForDTMF() const
     return 160;
 }
 
-void AudioZrtpSession::setSessionMedia(AudioCodec &audioCodec)
-{
-    AudioRtpSession::setSessionMedia(audioCodec);
-}
-
 int AudioZrtpSession::startRtpThread(AudioCodec &audiocodec)
 {
     if(isStarted_)
diff --git a/daemon/src/audio/audiortp/audio_zrtp_session.h b/daemon/src/audio/audiortp/audio_zrtp_session.h
index 8ddb53d7e10b152c2a1df26e93c499b68d744089..827ce72741bec5f9f4f5d4e9506dbcfe623e3a5b 100644
--- a/daemon/src/audio/audiortp/audio_zrtp_session.h
+++ b/daemon/src/audio/audiortp/audio_zrtp_session.h
@@ -96,7 +96,6 @@ class AudioZrtpSession :
         void sendMicData();
         void initializeZid();
         std::string zidFilename_;
-        void setSessionMedia(AudioCodec &codec);
         int startRtpThread(AudioCodec &audiocodec);
         virtual int getIncrementForDTMF() const;