Make the default value of rtcp-mux policy to required.
Change the default value of rtcp-mux policy in RTCConfiguration.
Refactor the peerconnectioninterface and webrtcsession unit tests.
BUG=webrtc:6030
Review-Url: https://codereview.webrtc.org/2043193003
Cr-Original-Commit-Position: refs/heads/master@{#15217}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 4dfb8cef514bf030f08d61289543e32127366f12
diff --git a/api/android/java/src/org/webrtc/PeerConnection.java b/api/android/java/src/org/webrtc/PeerConnection.java
index 359b52e..ab08598 100644
--- a/api/android/java/src/org/webrtc/PeerConnection.java
+++ b/api/android/java/src/org/webrtc/PeerConnection.java
@@ -146,7 +146,7 @@
public RTCConfiguration(List<IceServer> iceServers) {
iceTransportsType = IceTransportsType.ALL;
bundlePolicy = BundlePolicy.BALANCED;
- rtcpMuxPolicy = RtcpMuxPolicy.NEGOTIATE;
+ rtcpMuxPolicy = RtcpMuxPolicy.REQUIRE;
tcpCandidatePolicy = TcpCandidatePolicy.ENABLED;
candidateNetworkPolicy = candidateNetworkPolicy.ALL;
this.iceServers = iceServers;
diff --git a/api/peerconnectioninterface.h b/api/peerconnectioninterface.h
index b304b14..e14b79c 100644
--- a/api/peerconnectioninterface.h
+++ b/api/peerconnectioninterface.h
@@ -295,7 +295,7 @@
// at the same time.
IceServers servers;
BundlePolicy bundle_policy = kBundlePolicyBalanced;
- RtcpMuxPolicy rtcp_mux_policy = kRtcpMuxPolicyNegotiate;
+ RtcpMuxPolicy rtcp_mux_policy = kRtcpMuxPolicyRequire;
TcpCandidatePolicy tcp_candidate_policy = kTcpCandidatePolicyEnabled;
CandidateNetworkPolicy candidate_network_policy =
kCandidateNetworkPolicyAll;
diff --git a/api/peerconnectioninterface_unittest.cc b/api/peerconnectioninterface_unittest.cc
index c351412..0726c75 100644
--- a/api/peerconnectioninterface_unittest.cc
+++ b/api/peerconnectioninterface_unittest.cc
@@ -79,6 +79,7 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n"
"a=ssrc:1 cname:stream1\r\n"
"a=ssrc:1 mslabel:stream1\r\n"
@@ -86,6 +87,7 @@
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n"
"a=ssrc:2 cname:stream1\r\n"
"a=ssrc:2 mslabel:stream1\r\n"
@@ -108,7 +110,8 @@
"a=rtpmap:103 ISAC/16000\r\n"
"a=ssrc:1 cname:stream1\r\n"
"a=ssrc:1 mslabel:stream1\r\n"
- "a=ssrc:1 label:audiotrack0\r\n";
+ "a=ssrc:1 label:audiotrack0\r\n"
+ "a=rtcp-mux\r\n";
// Reference SDP with two MediaStreams with label "stream1" and "stream2. Each
// MediaStreams have one audio track and one video track.
@@ -126,6 +129,7 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n"
"a=ssrc:1 cname:stream1\r\n"
"a=ssrc:1 msid:stream1 audiotrack0\r\n"
@@ -134,6 +138,7 @@
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/0\r\n"
"a=ssrc:2 cname:stream1\r\n"
"a=ssrc:2 msid:stream1 videotrack0\r\n"
@@ -153,10 +158,12 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n"
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n";
// Reference SDP without MediaStreams. Msid is supported.
@@ -173,10 +180,12 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n"
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n";
// Reference SDP without MediaStreams and audio only.
@@ -192,6 +201,7 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n";
// Reference SENDONLY SDP without MediaStreams. Msid is not supported.
@@ -208,11 +218,13 @@
"a=mid:audio\r\n"
"a=sendrecv\r\n"
"a=sendonly\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n"
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
"a=sendonly\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n";
static const char kSdpStringInit[] =
@@ -230,12 +242,14 @@
"m=audio 1 RTP/AVPF 103\r\n"
"a=mid:audio\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:103 ISAC/16000\r\n";
static const char kSdpStringVideo[] =
"m=video 1 RTP/AVPF 120\r\n"
"a=mid:video\r\n"
"a=sendrecv\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n";
static const char kSdpStringMs1Audio0[] =
diff --git a/api/test/testsdpstrings.h b/api/test/testsdpstrings.h
index 158b16c..b203aad 100644
--- a/api/test/testsdpstrings.h
+++ b/api/test/testsdpstrings.h
@@ -29,6 +29,7 @@
"c=IN IP4 74.95.2.170\r\n"
"a=rtpmap:109 opus/48000/2\r\n"
"a=ptime:20\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:0 PCMU/8000\r\n"
"a=rtpmap:8 PCMA/8000\r\n"
"a=rtpmap:101 telephone-event/8000\r\n"
@@ -46,6 +47,7 @@
" 10.0.254.2 rport 50962\r\n"
"m=video 38826 RTP/SAVPF 120\r\n"
"c=IN IP4 74.95.2.170\r\n"
+ "a=rtcp-mux\r\n"
"a=rtpmap:120 VP8/90000\r\n"
"a=sendrecv\r\n"
"a=candidate:0 1 UDP 2112946431 172.16.191.1 62017 typ host\r\n"
diff --git a/api/webrtcsession_unittest.cc b/api/webrtcsession_unittest.cc
index 6efb996..aa1159b 100644
--- a/api/webrtcsession_unittest.cc
+++ b/api/webrtcsession_unittest.cc
@@ -383,7 +383,8 @@
// options. When DTLS is enabled a certificate will be used if provided,
// otherwise one will be generated using the |cert_generator|.
void Init(
- std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator) {
+ std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator,
+ PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) {
ASSERT_TRUE(session_.get() == NULL);
session_.reset(new WebRtcSessionForTest(
media_controller_.get(), rtc::Thread::Current(), rtc::Thread::Current(),
@@ -397,6 +398,7 @@
session_->GetOnDestroyedSignal()->connect(
this, &WebRtcSessionTest::OnSessionDestroyed);
+ configuration_.rtcp_mux_policy = rtcp_mux_policy;
EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew,
observer_.ice_connection_state_);
EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew,
@@ -415,7 +417,13 @@
void OnSessionDestroyed() { session_destroyed_ = true; }
- void Init() { Init(nullptr); }
+ void Init() {
+ Init(nullptr, PeerConnectionInterface::kRtcpMuxPolicyNegotiate);
+ }
+
+ void Init(PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) {
+ Init(nullptr, rtcp_mux_policy);
+ }
void InitWithBundlePolicy(
PeerConnectionInterface::BundlePolicy bundle_policy) {
@@ -426,8 +434,7 @@
void InitWithRtcpMuxPolicy(
PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) {
PeerConnectionInterface::RTCConfiguration configuration;
- configuration_.rtcp_mux_policy = rtcp_mux_policy;
- Init();
+ Init(rtcp_mux_policy);
}
// Successfully init with DTLS; with a certificate generated and supplied or
@@ -443,7 +450,8 @@
} else {
RTC_CHECK(false);
}
- Init(std::move(cert_generator));
+ Init(std::move(cert_generator),
+ PeerConnectionInterface::kRtcpMuxPolicyNegotiate);
}
// Init with DTLS with a store that will fail to generate a certificate.
@@ -451,7 +459,8 @@
std::unique_ptr<FakeRTCCertificateGenerator> cert_generator(
new FakeRTCCertificateGenerator());
cert_generator->set_should_fail(true);
- Init(std::move(cert_generator));
+ Init(std::move(cert_generator),
+ PeerConnectionInterface::kRtcpMuxPolicyNegotiate);
}
void InitWithDtmfCodec() {
@@ -3347,10 +3356,8 @@
// answer to find out if more transports are needed.
configuration_.bundle_policy =
PeerConnectionInterface::kBundlePolicyMaxBundle;
- configuration_.rtcp_mux_policy =
- PeerConnectionInterface::kRtcpMuxPolicyRequire;
options_.disable_encryption = true;
- Init();
+ Init(PeerConnectionInterface::kRtcpMuxPolicyRequire);
// Negotiate an audio channel with MAX_BUNDLE enabled.
SendAudioOnlyStream2();