diff --git a/sflphone-common/src/audio/audiortp.cpp b/sflphone-common/src/audio/audiortp.cpp index 16766e710bd3ecb86accf3c95e7ccf6493774978..c1c8e00f1e135548ba1552b9cd0816b63f597c33 100644 --- a/sflphone-common/src/audio/audiortp.cpp +++ b/sflphone-common/src/audio/audiortp.cpp @@ -312,6 +312,8 @@ AudioRtpRTX::setRtpSessionMedia(void) _audiocodec = _ca->getLocalSDP()->get_session_media (); + _debug("AudioRtp: _audiocodec->getPayload() %i\n", _audiocodec->getPayload()); + if (_audiocodec == NULL) { return; } _codecSampleRate = _audiocodec->getClockRate(); @@ -346,7 +348,12 @@ AudioRtpRTX::setRtpSessionMedia(void) void AudioRtpRTX::setRtpSessionRemoteIp(void) { - if (_ca == 0) { return; } + _debug("setRtpSessionRemoteIp()\n"); + + if (_ca == 0) { + _debug("Return no call \n"); + return; + } ost::InetHostAddress remote_ip(_ca->getLocalSDP()->get_remote_ip().c_str()); _debug("Init audio RTP session %s\n", _ca->getLocalSDP()->get_remote_ip().data()); @@ -369,6 +376,7 @@ AudioRtpRTX::setRtpSessionRemoteIp(void) _sessionSend->setMark(true); } else { + _debug("AudioRtp: _ca->getLocalSDP()->get_remote_audio_port() %i\n", (unsigned short)_ca->getLocalSDP()->get_remote_audio_port()); if (!_session->addDestination (remote_ip, (unsigned short)_ca->getLocalSDP()->get_remote_audio_port() )) { return; } @@ -511,6 +519,7 @@ AudioRtpRTX::sendSessionFromMic(int timestamp) if (!_audiocodec) { _debug(" !ARTP: No audiocodec available for mic\n"); return; } + int compSize = processDataEncode(audiolayer); // putData put the data on RTP queue, sendImmediate bypass this queue diff --git a/sflphone-common/src/sipvoiplink.cpp b/sflphone-common/src/sipvoiplink.cpp index 22988b69573fda62c36036d974891fb9f49a4f69..30080fad7921d8dfa7fe65ddb1d06d19b6e76806 100644 --- a/sflphone-common/src/sipvoiplink.cpp +++ b/sflphone-common/src/sipvoiplink.cpp @@ -722,6 +722,7 @@ SIPVoIPLink::onhold ( const CallID& id ) // Stop sound call->setAudioStart ( false ); call->setState ( Call::Hold ); + _debug ( "* SIP Info: Stopping AudioRTP for onhold action\n" ); _audiortp->closeRtpSession(); @@ -804,6 +805,7 @@ SIPVoIPLink::offhold ( const CallID& id ) call->setState ( Call::Active ); // it's sure that this is the current call id... + _audiortp->getRTX()->setRtpSessionRemoteIp(); // if ( _audiortp->createNewSession ( call ) < 0 ) if ( _audiortp->start() < 0 ) @@ -1248,7 +1250,7 @@ SIPVoIPLink::SIPCallAnswered ( SIPCall *call, pjsip_rx_data *rdata ) _debug ( "Get remote media information from offer\n" ); call->getLocalSDP()->fetch_media_transport_info_from_remote_sdp ( r_sdp ); - _audiortp->getRTX()->setRtpSessionRemoteIp(); + _audiortp->getRTX()->setRtpSessionRemoteIp(); _debug ( "Update call state , id = %s\n", call->getCallId().c_str() ); call->setConnectionState ( Call::Connected ); @@ -2091,7 +2093,13 @@ void call_on_media_update ( pjsip_inv_session *inv, pj_status_t status ) accId = Manager::instance().getAccountFromCall ( call->getCallId() ); link = dynamic_cast<SIPVoIPLink *> ( Manager::instance().getAccountLink ( accId ) ); - link->_audiortp->getRTX()->setRtpSessionMedia(); + _debug("call->getState() %i\n", call->getState()); + + if (call->getState() != Call::Hold) + { + link->_audiortp->getRTX()->setRtpSessionMedia(); + link->_audiortp->getRTX()->setRtpSessionRemoteIp(); + } }