Android: Deprecate peerconnection constraints.

C++ API allows passing all configuration through RTCConfiguration
object. This adds all values previously passed through PC constraints
to Java RTCConfiguration object and deprecates API that takes PC
contraints.

Using the deprecated API overrides the values in RTCConfigration
object.

Bug: webrtc:8663, webrtc:8662
Change-Id: I128432c3caba74403513fb1347ff58830c643885
Reviewed-on: https://webrtc-review.googlesource.com/33460
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21357}
This commit is contained in:
Sami Kalliomäki
2017-12-19 12:51:53 +01:00
committed by Commit Bot
parent ecb5e2a4b9
commit e8b26cd86b
8 changed files with 138 additions and 50 deletions

View File

@ -185,6 +185,12 @@ rtc::Optional<int32_t> JavaToNativeOptionalInt(JNIEnv* jni, jobject integer) {
return JNI_Integer::Java_Integer_intValue(jni, integer);
}
rtc::Optional<bool> JavaToNativeOptionalBool(JNIEnv* jni, jobject boolean) {
if (IsNull(jni, boolean))
return rtc::nullopt;
return JNI_Boolean::Java_Boolean_booleanValue(jni, boolean);
}
int64_t JavaToNativeLong(JNIEnv* env, jobject j_long) {
return JNI_Long::Java_Long_longValue(env, j_long);
}

View File

@ -67,6 +67,7 @@ std::string JavaToStdString(JNIEnv* jni, const jstring& j_string);
std::vector<std::string> JavaToStdVectorStrings(JNIEnv* jni, jobject list);
rtc::Optional<int32_t> JavaToNativeOptionalInt(JNIEnv* jni, jobject integer);
rtc::Optional<bool> JavaToNativeOptionalBool(JNIEnv* jni, jobject boolean);
int64_t JavaToNativeLong(JNIEnv* env, jobject j_long);
jobject NativeToJavaBoolean(JNIEnv* env, bool b);

View File

@ -173,6 +173,23 @@ void JavaToNativeRTCConfiguration(
rtc_config->turn_customizer = reinterpret_cast<webrtc::TurnCustomizer*>(
Java_TurnCustomizer_getNativeTurnCustomizer(jni, j_turn_customizer));
}
rtc_config->disable_ipv6 =
Java_RTCConfiguration_getDisableIpv6(jni, j_rtc_config);
rtc_config->media_config.enable_dscp =
Java_RTCConfiguration_getEnableDscp(jni, j_rtc_config);
rtc_config->media_config.video.enable_cpu_overuse_detection =
Java_RTCConfiguration_getEnableCpuOveruseDetection(jni, j_rtc_config);
rtc_config->enable_rtp_data_channel =
Java_RTCConfiguration_getEnableRtpDataChannel(jni, j_rtc_config);
rtc_config->media_config.video.suspend_below_min_bitrate =
Java_RTCConfiguration_getSuspendBelowMinBitrate(jni, j_rtc_config);
rtc_config->screencast_min_bitrate = JavaToNativeOptionalInt(
jni, Java_RTCConfiguration_getScreencastMinBitrate(jni, j_rtc_config));
rtc_config->combined_audio_video_bwe = JavaToNativeOptionalBool(
jni, Java_RTCConfiguration_getCombinedAudioVideoBwe(jni, j_rtc_config));
rtc_config->enable_dtls_srtp = JavaToNativeOptionalBool(
jni, Java_RTCConfiguration_getEnableDtlsSrtp(jni, j_rtc_config));
}
rtc::KeyType GetRtcConfigKeyType(JNIEnv* env, jobject j_rtc_config) {
@ -545,7 +562,9 @@ JNI_FUNCTION_DECLARATION(jboolean,
PeerConnectionInterface::RTCConfiguration rtc_config(
PeerConnectionInterface::RTCConfigurationType::kAggressive);
JavaToNativeRTCConfiguration(jni, j_rtc_config, &rtc_config);
CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
if (observer && observer->constraints()) {
CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
}
return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config);
}

View File

@ -464,8 +464,10 @@ JNI_FUNCTION_DECLARATION(jlong,
PeerConnectionObserverJni* observer =
reinterpret_cast<PeerConnectionObserverJni*>(observer_p);
observer->SetConstraints(JavaToNativeMediaConstraints(jni, j_constraints));
CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
if (j_constraints != nullptr) {
observer->SetConstraints(JavaToNativeMediaConstraints(jni, j_constraints));
CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
}
rtc::scoped_refptr<PeerConnectionInterface> pc(
f->CreatePeerConnection(rtc_config, nullptr, nullptr, observer));
return (jlong)pc.release();