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