Module: sems Branch: master Commit: b878ab370de15c9ecd42be5ef72a212825e756fa URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=b878ab370de15c9ecd42be5ef72a212825e756fa
Author: Raphael Coeffic <[email protected]> Committer: Raphael Coeffic <[email protected]> Date: Mon Mar 5 11:18:11 2012 +0100 sdp/rtp: SDP reply with same dynamic payload types Enables SEMS to cope with Jitsi's expectations, which does not support different payload types in SDP answer. --- core/AmRtpStream.cpp | 17 ++++++++++++----- core/AmSdp.cpp | 8 +++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/core/AmRtpStream.cpp b/core/AmRtpStream.cpp index 21c7390..e875612 100644 --- a/core/AmRtpStream.cpp +++ b/core/AmRtpStream.cpp @@ -533,18 +533,25 @@ int AmRtpStream::init(const AmSdp& local, // first pass on local SDP - fill pl_map with intersection of codecs while(p_it != payloads.end()) { - amci_payload_t* a_pl = payload_provider->payload(sdp_it->payload_type); + int int_pt = payload_provider->getDynPayload(sdp_it->encoding_name, + sdp_it->clock_rate, + sdp_it->encoding_param); + amci_payload_t* a_pl = NULL; + if(int_pt >= 0) + a_pl = payload_provider->payload(int_pt); + if(a_pl == NULL){ - ERROR("No internal payload corresponding to type %i\n", - sdp_it->payload_type); + ERROR("No internal payload corresponding to type %s/%i\n", + sdp_it->encoding_name.c_str(), + sdp_it->clock_rate); return -1;//TODO }; p_it->pt = sdp_it->payload_type; - p_it->name = a_pl->name; + p_it->name = sdp_it->encoding_name; p_it->codec_id = a_pl->codec_id; p_it->clock_rate = a_pl->sample_rate; - p_it->advertised_clock_rate = a_pl->advertised_sample_rate; + p_it->advertised_clock_rate = sdp_it->clock_rate; pl_map[sdp_it->payload_type].index = i; pl_map[sdp_it->payload_type].remote_pt = -1; diff --git a/core/AmSdp.cpp b/core/AmSdp.cpp index b365e00..ab775f5 100644 --- a/core/AmSdp.cpp +++ b/core/AmSdp.cpp @@ -450,7 +450,10 @@ void SdpMedia::calcAnswer(const AmPayloadProvider* payload_prov, } if( a_pl) { - answer.payloads.push_back(SdpPayload(a_pl->payload_id,a_pl->name,a_pl->sample_rate,0)); + answer.payloads.push_back(SdpPayload(a_pl->payload_id, + a_pl->name, + a_pl->advertised_sample_rate, + 0)); } else { // Try dynamic payloads @@ -463,8 +466,7 @@ void SdpMedia::calcAnswer(const AmPayloadProvider* payload_prov, it->clock_rate, it->encoding_param); if(int_pt != -1){ - answer.payloads.push_back(SdpPayload(int_pt, - it->encoding_name,it->clock_rate,it->encoding_param)); + answer.payloads.push_back(*it); } } } _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
