Fixed Firefox WebRTC support through temporary hack
This commit is contained in:
parent
75559a367b
commit
a8305396a2
2 changed files with 13 additions and 1 deletions
|
@ -603,6 +603,7 @@ namespace SDP{
|
||||||
SDP::Media *currMedia = NULL;
|
SDP::Media *currMedia = NULL;
|
||||||
std::stringstream ss(sdp);
|
std::stringstream ss(sdp);
|
||||||
std::string line;
|
std::string line;
|
||||||
|
bool mozilla = false;
|
||||||
|
|
||||||
while (std::getline(ss, line, '\n')){
|
while (std::getline(ss, line, '\n')){
|
||||||
|
|
||||||
|
@ -611,6 +612,7 @@ namespace SDP{
|
||||||
if (line.empty()){
|
if (line.empty()){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (line.find("mozilla") != std::string::npos){mozilla = true;}
|
||||||
|
|
||||||
// Parse session (or) media data.
|
// Parse session (or) media data.
|
||||||
else if (line.substr(0, 2) == "m="){
|
else if (line.substr(0, 2) == "m="){
|
||||||
|
@ -662,6 +664,8 @@ namespace SDP{
|
||||||
sdp_get_attribute_value(line, currMedia->mediaID);
|
sdp_get_attribute_value(line, currMedia->mediaID);
|
||||||
}else if (line.substr(0, 7) == "a=ssrc:"){
|
}else if (line.substr(0, 7) == "a=ssrc:"){
|
||||||
currMedia->parseSSRCLine(line);
|
currMedia->parseSSRCLine(line);
|
||||||
|
}else if (mozilla && line.substr(0, 9) == "a=extmap:"){
|
||||||
|
currMedia->extmap.insert(line);
|
||||||
}
|
}
|
||||||
}// while
|
}// while
|
||||||
|
|
||||||
|
@ -1022,7 +1026,14 @@ namespace SDP{
|
||||||
}else if (fmtMedia->encodingName == "OPUS"){
|
}else if (fmtMedia->encodingName == "OPUS"){
|
||||||
addLine("a=fmtp:%u minptime=10;useinbandfec=1", fmtMedia->payloadType);
|
addLine("a=fmtp:%u minptime=10;useinbandfec=1", fmtMedia->payloadType);
|
||||||
}
|
}
|
||||||
|
//hacky way of adding sdes:mid extension line
|
||||||
|
if (isVideoEnabled && isAudioEnabled){
|
||||||
|
for (std::set<std::string>::iterator it = media->extmap.begin(); it != media->extmap.end(); ++it){
|
||||||
|
if (it->find("sdes:mid") != std::string::npos){
|
||||||
|
addLine(*it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
addLine("a=candidate:1 1 udp 2130706431 %s %u typ host", candidateIP.c_str(), candidatePort);
|
addLine("a=candidate:1 1 udp 2130706431 %s %u typ host", candidateIP.c_str(), candidatePort);
|
||||||
addLine("a=end-of-candidates");
|
addLine("a=end-of-candidates");
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,7 @@ namespace SDP{
|
||||||
bool supportsRTCPMux; ///< From `a=rtcp-mux`, indicates if it can mux RTP and RTCP on one
|
bool supportsRTCPMux; ///< From `a=rtcp-mux`, indicates if it can mux RTP and RTCP on one
|
||||||
///< transport channel.
|
///< transport channel.
|
||||||
bool supportsRTCPReducedSize; ///< From `a=rtcp-rsize`, reduced size RTCP packets.
|
bool supportsRTCPReducedSize; ///< From `a=rtcp-rsize`, reduced size RTCP packets.
|
||||||
|
std::set<std::string> extmap;
|
||||||
std::string payloadTypes; ///< From `m=` line, all the payload types as string, separated by space.
|
std::string payloadTypes; ///< From `m=` line, all the payload types as string, separated by space.
|
||||||
std::map<uint64_t, MediaFormat> formats; ///< Formats indexed by payload type. Payload type is the number in the <fmt>
|
std::map<uint64_t, MediaFormat> formats; ///< Formats indexed by payload type. Payload type is the number in the <fmt>
|
||||||
///< field(s) from the `m=` line.
|
///< field(s) from the `m=` line.
|
||||||
|
|
Loading…
Add table
Reference in a new issue