Skip to content
Snippets Groups Projects
Commit cbcd0cd7 authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

Merge branch 'pierre-luc'

parents d746d12b 09859ec5
Branches
Tags
No related merge requests found
...@@ -127,14 +127,6 @@ AudioRtp::closeRtpSession () ...@@ -127,14 +127,6 @@ AudioRtp::closeRtpSession ()
return true; return true;
} }
AudioRtpRTX*
AudioRtp::getRTX()
{
return _RTXThread;
}
void void
AudioRtp::setRecording() AudioRtp::setRecording()
{ {
...@@ -144,10 +136,6 @@ AudioRtp::setRecording() ...@@ -144,10 +136,6 @@ AudioRtp::setRecording()
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// AudioRtpRTX Class // // AudioRtpRTX Class //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
...@@ -387,18 +375,13 @@ AudioRtpRTX::processDataEncode() ...@@ -387,18 +375,13 @@ AudioRtpRTX::processDataEncode()
// Store the length of the mic buffer in samples for recording // Store the length of the mic buffer in samples for recording
_nSamplesMic = nbSample; _nSamplesMic = nbSample;
// int nbSamplesMax = _layerFrameSize * _audiocodec->getClockRate() / 1000;
nbSample = reSampleData (micData , micDataConverted, _audiocodec->getClockRate(), nb_sample_up, DOWN_SAMPLING); nbSample = reSampleData (micData , micDataConverted, _audiocodec->getClockRate(), nb_sample_up, DOWN_SAMPLING);
compSize = _audiocodec->codecEncode (micDataEncoded, micDataConverted, nbSample*sizeof (int16)); compSize = _audiocodec->codecEncode (micDataEncoded, micDataConverted, nbSample*sizeof (int16));
} else { } else {
// no resampling required // no resampling required
// int nbSamplesMax = _codecFrameSize;
compSize = _audiocodec->codecEncode (micDataEncoded, micData, nbSample*sizeof (int16)); compSize = _audiocodec->codecEncode (micDataEncoded, micData, nbSample*sizeof (int16));
} }
return compSize; return compSize;
......
...@@ -256,11 +256,6 @@ class AudioRtp { ...@@ -256,11 +256,6 @@ class AudioRtp {
*/ */
bool closeRtpSession( void ); bool closeRtpSession( void );
/**
* Return a pointer to the RTP thead
*/
AudioRtpRTX* getRTX();
/** /**
* Start recording * Start recording
*/ */
...@@ -268,6 +263,10 @@ class AudioRtp { ...@@ -268,6 +263,10 @@ class AudioRtp {
friend class RtpTest; friend class RtpTest;
/**
*
*/
inline AudioRtpRTX * getAudioRtpRtxThread(void) { return _RTXThread; }
private: private:
// copy constructor // copy constructor
AudioRtp(const AudioRtp& rh); AudioRtp(const AudioRtp& rh);
......
...@@ -195,7 +195,7 @@ int Sdp::receiving_initial_offer (pjmedia_sdp_session* remote) ...@@ -195,7 +195,7 @@ int Sdp::receiving_initial_offer (pjmedia_sdp_session* remote)
} }
// Retrieve some useful remote information // Retrieve some useful remote information
this->fetch_media_transport_info_from_remote_sdp (remote); this->set_media_transport_info_from_remote_sdp (remote);
status = pjmedia_sdp_neg_create_w_remote_offer (_pool, status = pjmedia_sdp_neg_create_w_remote_offer (_pool,
get_local_sdp_session(), remote, &_negociator); get_local_sdp_session(), remote, &_negociator);
...@@ -314,8 +314,6 @@ void Sdp::set_negociated_offer (const pjmedia_sdp_session *sdp) ...@@ -314,8 +314,6 @@ void Sdp::set_negociated_offer (const pjmedia_sdp_session *sdp)
_negociated_offer = (pjmedia_sdp_session*) sdp; _negociated_offer = (pjmedia_sdp_session*) sdp;
//this->fetch_remote_ip_from_sdp ((pjmedia_sdp_session*)sdp);
codecs_list = Manager::instance().getCodecDescriptorMap().getCodecsMap(); codecs_list = Manager::instance().getCodecDescriptorMap().getCodecsMap();
// retrieve the media information // retrieve the media information
...@@ -358,7 +356,7 @@ AudioCodec* Sdp::get_session_media (void) ...@@ -358,7 +356,7 @@ AudioCodec* Sdp::get_session_media (void)
AudioCodec *codec = NULL; AudioCodec *codec = NULL;
std::vector<sdpMedia*> media_list; std::vector<sdpMedia*> media_list;
_debug ("sdp line 314 - get_session_media ()\n"); _debug ("sdp line %d - get_session_media ()\n", __LINE__);
media_list = get_session_media_list (); media_list = get_session_media_list ();
nb_media = media_list.size(); nb_media = media_list.size();
...@@ -470,17 +468,15 @@ std::string Sdp::convert_int_to_string (int value) ...@@ -470,17 +468,15 @@ std::string Sdp::convert_int_to_string (int value)
return result.str(); return result.str();
} }
void Sdp::fetch_remote_ip_from_sdp (pjmedia_sdp_session *r_sdp) void Sdp::set_remote_ip_from_sdp (const pjmedia_sdp_session *r_sdp)
{ {
std::string remote_ip; std::string remote_ip(r_sdp->conn->addr.ptr, r_sdp->conn->addr.slen);
remote_ip = r_sdp->conn->addr.ptr;
_debug (" Remote IP from fetching SDP: %s\n", remote_ip.c_str()); _debug (" Remote IP from fetching SDP: %s\n", remote_ip.c_str());
this->set_remote_ip (remote_ip); this->set_remote_ip (remote_ip);
} }
void Sdp::fetch_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media) void Sdp::set_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media)
{ {
int remote_port; int remote_port;
...@@ -490,7 +486,7 @@ void Sdp::fetch_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media) ...@@ -490,7 +486,7 @@ void Sdp::fetch_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media)
this->set_remote_audio_port (remote_port); this->set_remote_audio_port (remote_port);
} }
void Sdp::fetch_media_transport_info_from_remote_sdp (pjmedia_sdp_session *remote_sdp) void Sdp::set_media_transport_info_from_remote_sdp (const pjmedia_sdp_session *remote_sdp)
{ {
_debug ("Fetching media from sdp\n"); _debug ("Fetching media from sdp\n");
...@@ -504,12 +500,12 @@ void Sdp::fetch_media_transport_info_from_remote_sdp (pjmedia_sdp_session *remot ...@@ -504,12 +500,12 @@ void Sdp::fetch_media_transport_info_from_remote_sdp (pjmedia_sdp_session *remot
return; return;
} }
this->fetch_remote_audio_port_from_sdp (r_media); this->set_remote_audio_port_from_sdp (r_media);
this->fetch_remote_ip_from_sdp (remote_sdp); this->set_remote_ip_from_sdp (remote_sdp);
} }
void Sdp::get_remote_sdp_media_from_offer (pjmedia_sdp_session* remote_sdp, pjmedia_sdp_media** r_media) void Sdp::get_remote_sdp_media_from_offer (const pjmedia_sdp_session* remote_sdp, pjmedia_sdp_media** r_media)
{ {
int count, i; int count, i;
......
...@@ -179,7 +179,7 @@ class Sdp { ...@@ -179,7 +179,7 @@ class Sdp {
*/ */
unsigned int get_remote_audio_port() { return _remote_audio_port; } unsigned int get_remote_audio_port() { return _remote_audio_port; }
void fetch_media_transport_info_from_remote_sdp (pjmedia_sdp_session *remote_sdp); void set_media_transport_info_from_remote_sdp (const pjmedia_sdp_session *remote_sdp);
std::vector<sdpMedia*> get_session_media_list (void) { return _session_media; } std::vector<sdpMedia*> get_session_media_list (void) { return _session_media; }
...@@ -298,11 +298,11 @@ class Sdp { ...@@ -298,11 +298,11 @@ class Sdp {
std::string convert_int_to_string (int value); std::string convert_int_to_string (int value);
void fetch_remote_ip_from_sdp (pjmedia_sdp_session *r_sdp); void set_remote_ip_from_sdp (const pjmedia_sdp_session *r_sdp);
void fetch_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media); void set_remote_audio_port_from_sdp (pjmedia_sdp_media *r_media);
void get_remote_sdp_media_from_offer (pjmedia_sdp_session* r_sdp, pjmedia_sdp_media** r_media); void get_remote_sdp_media_from_offer (const pjmedia_sdp_session* r_sdp, pjmedia_sdp_media** r_media);
//////////////////////////////////////////////////////////////////3 //////////////////////////////////////////////////////////////////3
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
......
...@@ -545,16 +545,9 @@ SIPVoIPLink::newOutgoingCall (const CallID& id, const std::string& toUrl) ...@@ -545,16 +545,9 @@ SIPVoIPLink::newOutgoingCall (const CallID& id, const std::string& toUrl)
} }
if (SIPOutgoingInvite (call)) { if (SIPOutgoingInvite (call)) {
call->setConnectionState (Call::Progressing); call->setConnectionState (Call::Progressing);
call->setState (Call::Active); call->setState (Call::Active);
addCall (call); addCall (call);
// _audiortp->start();
// call->setAudioStart ( true );
} else { } else {
delete call; delete call;
call = 0; call = 0;
...@@ -841,17 +834,8 @@ SIPVoIPLink::offhold (const CallID& id) ...@@ -841,17 +834,8 @@ SIPVoIPLink::offhold (const CallID& id)
if (status != PJ_SUCCESS) if (status != PJ_SUCCESS)
return false; return false;
// Enable audio
_debug ("* SIP Info: Starting AudioRTP when offhold\n");
call->setState (Call::Active); call->setState (Call::Active);
// it's sure that this is the current call id...
_audiortp->start();
call->setAudioStart (true);
return true; return true;
} }
...@@ -1287,51 +1271,16 @@ SIPVoIPLink::SIPCallAnswered (SIPCall *call, pjsip_rx_data *rdata) ...@@ -1287,51 +1271,16 @@ SIPVoIPLink::SIPCallAnswered (SIPCall *call, pjsip_rx_data *rdata)
_debug ("SIPCallAnswered\n"); _debug ("SIPCallAnswered\n");
pjmedia_sdp_session *r_sdp;
if (!call) { if (!call) {
_debug ("! SIP Failure: unknown call\n"); _debug ("! SIP Failure: unknown call\n");
return; return;
} }
if (call->getConnectionState() != Call::Connected) { if (call->getConnectionState() != Call::Connected) {
_debug ("Get remote SDP from offer\n");
get_remote_sdp_from_offer (rdata, &r_sdp);
if (r_sdp==NULL) {
_debug ("SIP Failure: no remote sdp session\n");
return;
}
_debug ("Get remote media information from offer\n");
call->getLocalSDP()->fetch_media_transport_info_from_remote_sdp (r_sdp);
// _audiortp->getRTX()->setRtpSessionRemoteIp();
_debug ("Update call state , id = %s\n", call->getCallId().c_str()); _debug ("Update call state , id = %s\n", call->getCallId().c_str());
call->setConnectionState (Call::Connected); call->setConnectionState (Call::Connected);
call->setState (Call::Active); call->setState (Call::Active);
Manager::instance().peerAnsweredCall (call->getCallId()); Manager::instance().peerAnsweredCall (call->getCallId());
if (Manager::instance().isCurrentCall (call->getCallId())) {
/*
_debug("CREATE NEW RTP SESSION FROM SIPCALLANSWERED\n");
try {
_audiortp->createNewSession (call);
call->setAudioStart(true);
} catch (...) {
_debug("Failed to create rtp thread from answer\n");
}
*/
call->setAudioStart (true);
_audiortp->start();
}
} else { } else {
_debug ("* SIP Info: Answering call (on/off hold to send ACK)\n"); _debug ("* SIP Info: Answering call (on/off hold to send ACK)\n");
} }
...@@ -1405,7 +1354,6 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) ...@@ -1405,7 +1354,6 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
_debug ("! SIP Failure: Unable to create RTP Session in SIPVoIPLink::new_ip_to_ip_call (%s:%d)\n", __FILE__, __LINE__); _debug ("! SIP Failure: Unable to create RTP Session in SIPVoIPLink::new_ip_to_ip_call (%s:%d)\n", __FILE__, __LINE__);
} }
// Generate the contact URI // Generate the contact URI
// uri_contact << "<" << uri_from << ":" << call->getLocalSDP()->get_local_extern_audio_port() << ">"; // uri_contact << "<" << uri_from << ":" << call->getLocalSDP()->get_local_extern_audio_port() << ">";
uri_contact << "<" << uri_from << ":" << _localExternPort << ">"; uri_contact << "<" << uri_from << ":" << _localExternPort << ">";
...@@ -1450,10 +1398,6 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) ...@@ -1450,10 +1398,6 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
call->setState (Call::Active); call->setState (Call::Active);
addCall (call); addCall (call);
// _audiortp->start();
// call->setAudioStart ( true );
return true; return true;
} else } else
return false; return false;
...@@ -1813,10 +1757,6 @@ int SIPVoIPLink::createUDPServer (void) ...@@ -1813,10 +1757,6 @@ int SIPVoIPLink::createUDPServer (void)
return PJ_SUCCESS; return PJ_SUCCESS;
} }
bool SIPVoIPLink::loadSIPLocalIP() bool SIPVoIPLink::loadSIPLocalIP()
{ {
...@@ -1940,7 +1880,6 @@ void set_voicemail_info (AccountID account, pjsip_msg_body *body) ...@@ -1940,7 +1880,6 @@ void set_voicemail_info (AccountID account, pjsip_msg_body *body)
void SIPVoIPLink::handle_reinvite (SIPCall *call) void SIPVoIPLink::handle_reinvite (SIPCall *call)
{ {
// Close the previous RTP session // Close the previous RTP session
_audiortp->closeRtpSession (); _audiortp->closeRtpSession ();
call->setAudioStart (false); call->setAudioStart (false);
...@@ -1952,12 +1891,6 @@ void SIPVoIPLink::handle_reinvite (SIPCall *call) ...@@ -1952,12 +1891,6 @@ void SIPVoIPLink::handle_reinvite (SIPCall *call)
} catch (...) { } catch (...) {
_debug ("! SIP Failure: Unable to create RTP Session (%s:%d)\n", __FILE__, __LINE__); _debug ("! SIP Failure: Unable to create RTP Session (%s:%d)\n", __FILE__, __LINE__);
} }
_audiortp->start();
call->setAudioStart (true);
} }
...@@ -2121,20 +2054,17 @@ void call_on_state_changed (pjsip_inv_session *inv, pjsip_event *e) ...@@ -2121,20 +2054,17 @@ void call_on_state_changed (pjsip_inv_session *inv, pjsip_event *e)
break; break;
} }
} }
} }
} }
void call_on_media_update (pjsip_inv_session *inv, pj_status_t status) void call_on_media_update (pjsip_inv_session *inv, pj_status_t status)
{ {
_debug ("--------------------- call_on_media_update --------------------- \n"); _debug ("--------------------- call_on_media_update --------------------- \n");
AccountID accId; const pjmedia_sdp_session *local_sdp;
SIPVoIPLink *link; const pjmedia_sdp_session *remote_sdp;
const pjmedia_sdp_session *r_sdp; SIPVoIPLink * link = NULL;
SIPCall * call; SIPCall * call;
if (status != PJ_SUCCESS) { if (status != PJ_SUCCESS) {
...@@ -2143,7 +2073,8 @@ void call_on_media_update (pjsip_inv_session *inv, pj_status_t status) ...@@ -2143,7 +2073,8 @@ void call_on_media_update (pjsip_inv_session *inv, pj_status_t status)
} }
// Get the new sdp, result of the negociation // Get the new sdp, result of the negociation
pjmedia_sdp_neg_get_active_local (inv->neg, &r_sdp); pjmedia_sdp_neg_get_active_local (inv->neg, &local_sdp);
pjmedia_sdp_neg_get_active_remote(inv->neg, &remote_sdp);
call = reinterpret_cast<SIPCall *> (inv->mod_data[getModId() ]); call = reinterpret_cast<SIPCall *> (inv->mod_data[getModId() ]);
...@@ -2156,35 +2087,24 @@ void call_on_media_update (pjsip_inv_session *inv, pj_status_t status) ...@@ -2156,35 +2087,24 @@ void call_on_media_update (pjsip_inv_session *inv, pj_status_t status)
call->getLocalSDP()->clean_session_media(); call->getLocalSDP()->clean_session_media();
// Set the fresh negociated one // Set the fresh negociated one
call->getLocalSDP()->set_negociated_offer (r_sdp); call->getLocalSDP()->set_negociated_offer (local_sdp);
// call->getLocalSDP()->fetch_media_transport_info_from_remote_sdp( r_sdp );
// call->getLocalSDP()->fetch_remote_ip_from_sdp( r_sdp );
// call->getLocalSDP()->fetch_remote_audio_port_from_sdp( r_sdp );
accId = Manager::instance().getAccountFromCall (call->getCallId());
link = dynamic_cast<SIPVoIPLink *> (Manager::instance().getAccountLink (accId)); // Set remote ip / port
call->getLocalSDP()->set_media_transport_info_from_remote_sdp (remote_sdp);
if (!link) { link = dynamic_cast<SIPVoIPLink *> (Manager::instance().getAccountLink(AccountNULL));
_debug ("No Voip Account Link, impossible to init RTP session with SDP info"); if(link == NULL) {
_debug ("Failed to get sip link\n");
return; return;
} }
if (call->getState() != Call::Hold) { try {
_debug ("Set media parameters in RTP session\n"); call->setAudioStart (true);
// link->_audiortp->getRTX()->setRtpSessionMedia(); link->getAudioRtp()->start();
// link->_audiortp->getRTX()->setRtpSessionRemoteIp(); } catch(exception& rtpException) {
_debug("%s\n", rtpException.what());
// link->_audiortp->start();
// call->setAudioStart ( true );
// link->_audiortp->start();
} else {
_debug ("Didn't set RTP parameters since call is on hold\n");
} }
} }
void call_on_forked (pjsip_inv_session *inv, pjsip_event *e) void call_on_forked (pjsip_inv_session *inv, pjsip_event *e)
...@@ -2924,7 +2844,7 @@ void on_rx_offer (pjsip_inv_session *inv, const pjmedia_sdp_session *offer) ...@@ -2924,7 +2844,7 @@ void on_rx_offer (pjsip_inv_session *inv, const pjmedia_sdp_session *offer)
#ifdef CAN_REINVITE #ifdef CAN_REINVITE
_debug ("reinvite SIP\n"); _debug ("%s (%d): on_rx_offer REINVITE\n", __FILE__, __LINE__);
SIPCall *call; SIPCall *call;
pj_status_t status; pj_status_t status;
......
...@@ -284,8 +284,8 @@ class SIPVoIPLink : public VoIPLink ...@@ -284,8 +284,8 @@ class SIPVoIPLink : public VoIPLink
/** when we init the listener, how many times we try to bind a port? */ /** when we init the listener, how many times we try to bind a port? */
int _nbTryListenAddr; int _nbTryListenAddr;
/** Starting sound */ /** Returns a pointer to the AudioRtp object */
AudioRtp* _audiortp; inline AudioRtp * getAudioRtp(void) { return _audiortp; }
/** Increment the number of SIP account connected to this link */ /** Increment the number of SIP account connected to this link */
void incrementClients (void) { _clients++; } void incrementClients (void) { _clients++; }
...@@ -363,6 +363,9 @@ class SIPVoIPLink : public VoIPLink ...@@ -363,6 +363,9 @@ class SIPVoIPLink : public VoIPLink
std::string getLocalIP() {return _localExternAddress;} std::string getLocalIP() {return _localExternAddress;}
/** Starting sound */
AudioRtp* _audiortp;
/** For registration use only */ /** For registration use only */
int _regPort; int _regPort;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment