Use AggressiveConfiguration as the default configuration in IOS

R=haysc@webrtc.org, pthatcher@webrtc.org, tkchin@webrtc.org

Review URL: https://codereview.webrtc.org/2297663004 .

Cr-Commit-Position: refs/heads/master@{#14030}
This commit is contained in:
Honghai Zhang
2016-09-01 15:34:01 -07:00
parent affcac4d22
commit f7ddc06a43
3 changed files with 22 additions and 16 deletions

View File

@ -1644,8 +1644,8 @@ JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnection)(
reinterpret_cast<PeerConnectionFactoryInterface*>( reinterpret_cast<PeerConnectionFactoryInterface*>(
factoryFromJava(factory))); factoryFromJava(factory)));
PeerConnectionInterface::RTCConfiguration rtc_config = PeerConnectionInterface::RTCConfiguration rtc_config(
PeerConnectionInterface::RTCConfiguration::AggressiveConfiguration(); PeerConnectionInterface::RTCConfigurationType::kAggressive);
JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config); JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config);
jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config); jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config);
@ -1786,8 +1786,8 @@ JOW(void, PeerConnection_setRemoteDescription)(
JOW(jboolean, PeerConnection_setConfiguration)( JOW(jboolean, PeerConnection_setConfiguration)(
JNIEnv* jni, jobject j_pc, jobject j_rtc_config) { JNIEnv* jni, jobject j_pc, jobject j_rtc_config) {
PeerConnectionInterface::RTCConfiguration rtc_config = PeerConnectionInterface::RTCConfiguration rtc_config(
PeerConnectionInterface::RTCConfiguration::AggressiveConfiguration(); PeerConnectionInterface::RTCConfigurationType::kAggressive);
JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config); JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config);
return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config); return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config);
} }

View File

@ -227,6 +227,15 @@ class PeerConnectionInterface : public rtc::RefCountInterface {
GATHER_CONTINUALLY GATHER_CONTINUALLY
}; };
enum class RTCConfigurationType {
// A configuration that is safer to use, despite not having the best
// performance. Currently this is the default configuration.
kSafe,
// An aggressive configuration that has better performance, although it
// may be riskier and may need extra support in the application.
kAggressive
};
// TODO(hbos): Change into class with private data and public getters. // TODO(hbos): Change into class with private data and public getters.
// TODO(nisse): In particular, accessing fields directly from an // TODO(nisse): In particular, accessing fields directly from an
// application is brittle, since the organization mirrors the // application is brittle, since the organization mirrors the
@ -240,16 +249,11 @@ class PeerConnectionInterface : public rtc::RefCountInterface {
// methods for all settings which are of interest to applications, // methods for all settings which are of interest to applications,
// Chrome in particular. // Chrome in particular.
// A configuration that is safer to use, despite it may not have the best RTCConfiguration() = default;
// performance. RTCConfiguration(RTCConfigurationType type) {
static RTCConfiguration SafeConfiguration() { return RTCConfiguration(); } if (type == RTCConfigurationType::kAggressive) {
redetermine_role_on_ice_restart = false;
// An aggressive configuration that has better performance, although it }
// may be riskier and may need extra support in the application.
static RTCConfiguration AggressiveConfiguration() {
RTCConfiguration config;
config.redetermine_role_on_ice_restart = false;
return config;
} }
bool dscp() { return media_config.enable_dscp; } bool dscp() { return media_config.enable_dscp; }

View File

@ -41,7 +41,8 @@
if (self = [super init]) { if (self = [super init]) {
_iceServers = [NSMutableArray array]; _iceServers = [NSMutableArray array];
// Copy defaults. // Copy defaults.
webrtc::PeerConnectionInterface::RTCConfiguration config; webrtc::PeerConnectionInterface::RTCConfiguration config(
webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive);
_iceTransportPolicy = _iceTransportPolicy =
[[self class] transportPolicyForTransportsType:config.type]; [[self class] transportPolicyForTransportsType:config.type];
_bundlePolicy = _bundlePolicy =
@ -93,7 +94,8 @@
- (webrtc::PeerConnectionInterface::RTCConfiguration *) - (webrtc::PeerConnectionInterface::RTCConfiguration *)
createNativeConfiguration { createNativeConfiguration {
std::unique_ptr<webrtc::PeerConnectionInterface::RTCConfiguration> std::unique_ptr<webrtc::PeerConnectionInterface::RTCConfiguration>
nativeConfig(new webrtc::PeerConnectionInterface::RTCConfiguration()); nativeConfig(new webrtc::PeerConnectionInterface::RTCConfiguration(
webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive));
for (RTCIceServer *iceServer in _iceServers) { for (RTCIceServer *iceServer in _iceServers) {
nativeConfig->servers.push_back(iceServer.nativeServer); nativeConfig->servers.push_back(iceServer.nativeServer);