Bug 1246011: fixed PT comparising for PT's without rtpmap. r=jesup
--- a/dom/media/tests/mochitest/mochitest.ini
+++ b/dom/media/tests/mochitest/mochitest.ini
@@ -71,16 +71,18 @@ skip-if = (toolkit == 'gonk' || buildapp
skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g(Bug 1021776, too --ing slow on b2g)
[test_peerConnection_addIceCandidate.html]
[test_peerConnection_basicAudio.html]
skip-if = toolkit == 'gonk' # B2G emulator is too slow to handle a two-way audio call reliably
[test_peerConnection_basicAudioRequireEOC.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g (Bug 1059867)
[test_peerConnection_basicAudioPcmaPcmuOnly.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g (Bug 1059867)
+[test_peerConnection_basicAudioDynamicPtMissingRtpmap.html]
+skip-if = toolkit == 'gonk' || buildapp == 'mulet' # b2g (Bug 1059867)
[test_peerConnection_basicAudioVideo.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' || (android_version == '18' && debug) # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
[test_peerConnection_basicAudioVideoCombined.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' || (android_version == '18' && debug) # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
[test_peerConnection_basicAudioVideoNoBundle.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' || (android_version == '18' && debug) # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
[test_peerConnection_basicAudioVideoNoBundleNoRtcpMux.html]
skip-if = toolkit == 'gonk' || buildapp == 'mulet' || android_version == '18' # b2g(Bug 960442, video support for WebRTC is disabled on b2g), android(Bug 1189784, timeouts on 4.3 emulator)
--- a/dom/media/tests/mochitest/sdpUtils.js
+++ b/dom/media/tests/mochitest/sdpUtils.js
@@ -48,16 +48,20 @@ removeBundle: function(sdp) {
reduceAudioMLineToPcmuPcma: function(sdp) {
return sdp.replace(/m=audio .*\r\n/g, "m=audio 9 UDP/TLS/RTP/SAVPF 0 8\r\n");
},
removeAllRtpMaps: function(sdp) {
return sdp.replace(/a=rtpmap:.*\r\n/g, "");
},
+reduceAudioMLineToDynamicPtAndOpus: function(sdp) {
+ return sdp.replace(/m=audio .*\r\n/g, "m=audio 9 UDP/TLS/RTP/SAVPF 101 109\r\n");
+},
+
transferSimulcastProperties: function(offer_sdp, answer_sdp) {
if (!offer_sdp.includes("a=simulcast:")) {
return answer_sdp;
}
var o_simul = offer_sdp.match(/simulcast: send rid=(.*)([\n$])*/i);
var o_rids = offer_sdp.match(/a=rid:(.*)/ig);
var new_answer_sdp = answer_sdp + "a=simulcast: recv rid=" + o_simul[1] + "\r\n";
o_rids.forEach((o_rid) => {
copy from dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html
copy to dom/media/tests/mochitest/test_peerConnection_basicAudioDynamicPtMissingRtpmap.html
--- a/dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html
+++ b/dom/media/tests/mochitest/test_peerConnection_basicAudioDynamicPtMissingRtpmap.html
@@ -2,32 +2,34 @@
<html>
<head>
<script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
createHTML({
- bug: "796892",
- title: "Only offer PCMA and PMCU in mline (no rtpmaps)"
+ bug: "1246011",
+ title: "Offer with dynamic PT but missing rtpmap"
});
var test;
runNetworkTest(function (options) {
options = options || { };
- options.opus = false;
+ // we want Opus to get selected and 101 to be ignored
+ options.opus = true;
test = new PeerConnectionTest(options);
test.chain.insertBefore("PC_REMOTE_GET_OFFER", [
function PC_LOCAL_REDUCE_MLINE_REMOVE_RTPMAPS(test) {
test.originalOffer.sdp =
- sdputils.reduceAudioMLineToPcmuPcma(test.originalOffer.sdp);
+ sdputils.reduceAudioMLineToDynamicPtAndOpus(test.originalOffer.sdp);
test.originalOffer.sdp =
sdputils.removeAllRtpMaps(test.originalOffer.sdp);
- info("SDP without Rtpmaps: " + JSON.stringify(test.originalOffer));
+ test.originalOffer.sdp = test.originalOffer.sdp + "a=rtpmap:109 opus/48000/2\r\n";
+ info("SDP with dyn PT and no Rtpmap: " + JSON.stringify(test.originalOffer));
}
]);
test.setMediaConstraints([{audio: true}], [{audio: true}]);
test.run();
});
</script>
</pre>
</body>
--- a/dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html
+++ b/dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html
@@ -2,17 +2,17 @@
<html>
<head>
<script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
createHTML({
- bug: "796892",
+ bug: "1221837",
title: "Only offer PCMA and PMCU in mline (no rtpmaps)"
});
var test;
runNetworkTest(function (options) {
options = options || { };
options.opus = false;
test = new PeerConnectionTest(options);
@@ -20,15 +20,20 @@
function PC_LOCAL_REDUCE_MLINE_REMOVE_RTPMAPS(test) {
test.originalOffer.sdp =
sdputils.reduceAudioMLineToPcmuPcma(test.originalOffer.sdp);
test.originalOffer.sdp =
sdputils.removeAllRtpMaps(test.originalOffer.sdp);
info("SDP without Rtpmaps: " + JSON.stringify(test.originalOffer));
}
]);
+ test.chain.insertAfter("PC_REMOTE_SANE_LOCAL_SDP", [
+ function PC_REMOTE_VERIFY_PCMU(test) {
+ ok(test._remote_answer.sdp.includes("a=rtpmap:0 PCMU/8000"), "PCMU codec is present in SDP");
+ }
+ ]);
test.setMediaConstraints([{audio: true}], [{audio: true}]);
test.run();
});
</script>
</pre>
</body>
</html>
--- a/media/webrtc/signaling/src/jsep/JsepCodecDescription.h
+++ b/media/webrtc/signaling/src/jsep/JsepCodecDescription.h
@@ -57,21 +57,21 @@ class JsepCodecDescription {
const SdpRtpmapAttributeList::Rtpmap* entry(remoteMsection.FindRtpmap(fmt));
if (entry) {
if (!nsCRT::strcasecmp(mName.c_str(), entry->name.c_str())
&& (mClock == entry->clock)
&& (mChannels == entry->channels)) {
return ParametersMatch(fmt, remoteMsection);
}
- } else if (fmt.compare("9") && mName == "G722") {
+ } else if (!fmt.compare("9") && mName == "G722") {
return true;
- } else if (fmt.compare("0") && mName == "PCMU") {
+ } else if (!fmt.compare("0") && mName == "PCMU") {
return true;
- } else if (fmt.compare("8") && mName == "PCMA") {
+ } else if (!fmt.compare("8") && mName == "PCMA") {
return true;
}
return false;
}
virtual bool
ParametersMatch(const std::string& fmt,
const SdpMediaSection& remoteMsection) const