From 908e1fb31f60d40675de9b35cfdaaccc728b32d7 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Wed, 22 Aug 2012 12:32:36 -0400
Subject: [PATCH] #14848: Remove explicite reference to
 audioCodec->getFrameSize move transportRate to audioRtpSession instead of
 audioSymmetricRtpSession

---
 daemon/src/audio/audiortp/audio_rtp_session.cpp      |  7 +++++++
 daemon/src/audio/audiortp/audio_rtp_session.h        |  8 +++++++-
 .../audio/audiortp/audio_symmetric_rtp_session.cpp   | 11 -----------
 .../src/audio/audiortp/audio_symmetric_rtp_session.h |  4 +---
 daemon/src/audio/audiortp/audio_zrtp_session.cpp     | 12 ++----------
 daemon/src/audio/audiortp/audio_zrtp_session.h       |  1 -
 6 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/daemon/src/audio/audiortp/audio_rtp_session.cpp b/daemon/src/audio/audiortp/audio_rtp_session.cpp
index d1bfd45167..473db11a75 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 ca4f406bba..f62687da32 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 e7b6326121..84f3772086 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 ba364a16a5..b7b9e58f57 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 0a109bb0e6..469e04e445 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 8ddb53d7e1..827ce72741 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;
 
-- 
GitLab