r3554 - in trunk/libminisip: include/libminisip/media include/libminisip/signaling/sdp source/subsystem_media source/subsystem_signaling/sdp
erik at minisip.org
erik at minisip.org
Thu Dec 13 16:44:24 CET 2007
Author: erik
Date: 2007-12-13 16:44:23 +0100 (Thu, 13 Dec 2007)
New Revision: 3554
Modified:
trunk/libminisip/include/libminisip/media/MediaStream.h
trunk/libminisip/include/libminisip/signaling/sdp/SdpHeaderM.h
trunk/libminisip/include/libminisip/signaling/sdp/SdpPacket.h
trunk/libminisip/source/subsystem_media/MediaStream.cxx
trunk/libminisip/source/subsystem_media/Session.cxx
trunk/libminisip/source/subsystem_signaling/sdp/SdpHeaderM.cxx
trunk/libminisip/source/subsystem_signaling/sdp/SdpPacket.cxx
Log:
libminisip:
* Format types in SDP "m=" lines were handled as integers.
This is always true for (S)RTP media, but it is not true
for other kinds of media.
Now formats are handled as strings instead to support
other media than what is carried inside SRTP packets.
Modified: trunk/libminisip/include/libminisip/media/MediaStream.h
===================================================================
--- trunk/libminisip/include/libminisip/media/MediaStream.h 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/include/libminisip/media/MediaStream.h 2007-12-13 15:44:23 UTC (rev 3554)
@@ -165,7 +165,7 @@
MRef<RealtimeMedia *> media;
uint32_t csbId;
- uint8_t localPayloadType;
+ std::string localPayloadType; //For RTP media, this is a number
MRef<CryptoContext *> initCrypto( uint32_t ssrc, uint16_t seq_no );
MRef<KeyAgreement *> ka;
@@ -480,7 +480,7 @@
MRef<IPAddress *> remoteAddress;
Mutex senderLock;
- uint8_t payloadType;
+ std::string payloadType;
MRef<CodecState *> selectedCodec;
//Cesc -- does it conflict with bool disabled???
Modified: trunk/libminisip/include/libminisip/signaling/sdp/SdpHeaderM.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sdp/SdpHeaderM.h 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/include/libminisip/signaling/sdp/SdpHeaderM.h 2007-12-13 15:44:23 UTC (rev 3554)
@@ -53,9 +53,9 @@
virtual std::string getMemObjectType() const {return "SdpHeaderM";}
- void addFormat(int32_t format);
+ void addFormat(std::string format);
int32_t getNrFormats();
- int32_t getFormat(int32_t i);
+ std::string getFormat(int32_t i);
std::string getMedia();
void setMedia(std::string m);
@@ -75,9 +75,9 @@
std::string getAttribute(std::string key, uint32_t index);
std::list<MRef<SdpHeaderA*> > getAttributes();
- std::string getRtpMap(uint32_t format);
+ std::string getRtpMap(std::string format);
- std::string getFmtpParam(uint32_t format);
+ std::string getFmtpParam(std::string format);
void setConnection( MRef<SdpHeaderC*> c );
MRef<SdpHeaderC*> getConnection();
@@ -87,7 +87,7 @@
int32_t port;
int32_t nPorts;
std::string transport;
- std::vector<int32_t> formats;
+ std::vector<std::string> formats;
std::list<MRef<SdpHeaderA*> >attributes;
MRef<SdpHeaderC*> connection;
};
Modified: trunk/libminisip/include/libminisip/signaling/sdp/SdpPacket.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sdp/SdpPacket.h 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/include/libminisip/signaling/sdp/SdpPacket.h 2007-12-13 15:44:23 UTC (rev 3554)
@@ -65,9 +65,9 @@
std::vector<MRef<SdpHeader*> > getHeaders();
- int32_t getCodecMatch(SdpPacket &pack);
- int32_t getFirstMediaFormat();
- bool mediaFormatAvailable(int32_t f);
+ std::string getFormatMatch(SdpPacket &pack);
+ std::string getFirstMediaFormat();
+ bool mediaFormatAvailable(std::string f);
/**
* sets an attribute in the Session Level Part (before the first 'm'
Modified: trunk/libminisip/source/subsystem_media/MediaStream.cxx
===================================================================
--- trunk/libminisip/source/subsystem_media/MediaStream.cxx 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/source/subsystem_media/MediaStream.cxx 2007-12-13 15:44:23 UTC (rev 3554)
@@ -89,7 +89,7 @@
string sdpFmtpParam;
// int i;
- uint8_t sdpPayloadType = (uint8_t) m->getFormat( formatIndex );
+ string sdpPayloadType = m->getFormat( formatIndex );
media->handleMHeader( m );
@@ -139,7 +139,7 @@
}
else{
- if( sdpPayloadType == codecPayloadType ){
+ if( sdpPayloadType == itoa(codecPayloadType) ){
localPayloadType = codecPayloadType;
return true;
}else{
@@ -569,8 +569,8 @@
packet->getHeader().setPayloadType( 101 );
}
else{
- if( payloadType != 255 )
- packet->getHeader().setPayloadType( payloadType );
+ if( payloadType != "255" )
+ packet->getHeader().setPayloadType( atoi(payloadType.c_str() ) );
else
packet->getHeader().setPayloadType( selectedCodec->getSdpMediaType() );
}
@@ -673,8 +673,8 @@
if( result && !selectedCodec ){
selectedCodec = media->createCodecInstance(
- localPayloadType );
- payloadType = (uint8_t)m->getFormat( formatIndex );
+ atoi( localPayloadType.c_str() ) );
+ payloadType = (uint8_t)atoi(m->getFormat( formatIndex ).c_str());
}
return result;
Modified: trunk/libminisip/source/subsystem_media/Session.cxx
===================================================================
--- trunk/libminisip/source/subsystem_media/Session.cxx 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/source/subsystem_media/Session.cxx 2007-12-13 15:44:23 UTC (rev 3554)
@@ -321,7 +321,7 @@
payloadType = (*iC)->getSdpMediaType();
rtpmap = (*iC)->getSdpMediaAttributes();
- m->addFormat( payloadType );
+ m->addFormat( itoa(payloadType) );
if( rtpmap != "" ){
MRef<SdpHeaderA*> a = new SdpHeaderA("a=X");
a->setAttributes( "rtpmap:" + itoa( payloadType) + " " + rtpmap );
@@ -334,7 +334,7 @@
}
}
//added static DTMF SDP headers in INVITE
- m->addFormat(101);
+ m->addFormat( "101" );
MRef<SdpHeaderA*> dtmf = new SdpHeaderA("a=X");
dtmf->setAttributes("rtpmap:101 telephone-event/8000");
m->addAttribute(*dtmf);
@@ -776,15 +776,15 @@
/* found a receiver, accept the offer */
//add the payload type to the offer, as accepted ...
- int payloadTypeAccepted = offerM->getFormat( j );
- string payloadStr = itoa( payloadTypeAccepted );
+ string payloadTypeAccepted = offerM->getFormat( j );
+ //string payloadStr = itoa( payloadTypeAccepted );
answerM->addFormat( payloadTypeAccepted );
MRef<SdpHeaderA*> rtpmap = new SdpHeaderA("a=X");
MRef<SdpHeaderA*> fmtp = new SdpHeaderA("a=X");
- rtpmap->setAttributes( "fmtp:" + payloadStr
+ rtpmap->setAttributes( "fmtp:" + /*payloadStr*/ payloadTypeAccepted
+ " " + offerM->getRtpMap( payloadTypeAccepted ) );
- fmtp->setAttributes( "rtpmap:" + payloadStr
+ fmtp->setAttributes( "rtpmap:" + /*payloadStr*/ payloadTypeAccepted
+ " " + offerM->getRtpMap( payloadTypeAccepted ) );
answerM->addAttribute( *rtpmap );
Modified: trunk/libminisip/source/subsystem_signaling/sdp/SdpHeaderM.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sdp/SdpHeaderM.cxx 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/source/subsystem_signaling/sdp/SdpHeaderM.cxx 2007-12-13 15:44:23 UTC (rev 3554)
@@ -95,7 +95,7 @@
while (buildFrom[i]!=' ' && i<len )
f+=buildFrom[i++];
if (f.length()>0){
- formats.push_back(atoi(f.c_str()));
+ formats.push_back( f );
}
if ( i>=len )
@@ -174,7 +174,7 @@
this->transport=t;
}
-void SdpHeaderM::addFormat(int32_t f){
+void SdpHeaderM::addFormat(string f){
formats.push_back(f);;
}
@@ -182,7 +182,7 @@
return (int32_t)formats.size();
}
-int32_t SdpHeaderM::getFormat(int32_t i){
+string SdpHeaderM::getFormat(int32_t i){
return formats[i];
}
@@ -197,7 +197,7 @@
ret+=" "+transport;
for (unsigned i=0; i< formats.size(); i++)
- ret+=" "+itoa(formats[i]);
+ ret+=" "+formats[i];
if( connection )
ret += "\r\n" + connection->getString();
@@ -224,7 +224,7 @@
return "";
}
-string SdpHeaderM::getRtpMap(uint32_t format){
+string SdpHeaderM::getRtpMap(std::string format){
int i=0;
string attrib;
string value = "rtpmap";
@@ -232,7 +232,7 @@
while((attrib = getAttribute(value, i)) != ""){
size_t firstSpace = attrib.find(" ");
// cerr << "SdpHeaderM::getRtpMap - value retrieved = " << attrib << "; substr = " << attrib.substr(0, firstSpace) << endl;
- if( attrib.substr(0, firstSpace) == itoa(format) ){
+ if( attrib.substr(0, firstSpace) == format ){
return attrib.substr(firstSpace+1, attrib.size());
}
i++;
@@ -240,7 +240,7 @@
return "";
}
-string SdpHeaderM::getFmtpParam(uint32_t format){
+string SdpHeaderM::getFmtpParam(string format){
int i=0;
string attrib;
string value = "fmtp";
@@ -248,7 +248,7 @@
while((attrib = getAttribute(value, i)) != ""){
size_t firstSpace = attrib.find(" ");
// cerr << "SdpHeaderM::getFmtpParam - value retrieved = " << attrib << "; substr = " << attrib.substr(0, firstSpace) << endl;
- if( attrib.substr(0, firstSpace) == itoa(format) ){
+ if( attrib.substr(0, firstSpace) == format ){
return attrib.substr(firstSpace+1, attrib.size());
}
i++;
Modified: trunk/libminisip/source/subsystem_signaling/sdp/SdpPacket.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sdp/SdpPacket.cxx 2007-12-13 12:18:12 UTC (rev 3553)
+++ trunk/libminisip/source/subsystem_signaling/sdp/SdpPacket.cxx 2007-12-13 15:44:23 UTC (rev 3554)
@@ -249,7 +249,7 @@
}
-int32_t SdpPacket::getCodecMatch(SdpPacket &pack){
+string SdpPacket::getFormatMatch(SdpPacket &pack){
MRef<SdpHeaderM*> mym;
MRef<SdpHeaderM*> otherm;
@@ -306,7 +306,7 @@
}
#endif
-int32_t SdpPacket::getFirstMediaFormat(){
+string SdpPacket::getFirstMediaFormat(){
MRef<SdpHeaderM*> mym;
for (unsigned i = 0 ; i< headers.size(); i++)
@@ -322,7 +322,7 @@
}
-bool SdpPacket::mediaFormatAvailable(int32_t f){
+bool SdpPacket::mediaFormatAvailable(string f){
MRef<SdpHeaderM*> mym;
unsigned int i;
More information about the Minisip-devel
mailing list