OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1357 GetObjectField(jni, j_ice_server, j_ice_server_password_id)); | 1357 GetObjectField(jni, j_ice_server, j_ice_server_password_id)); |
1358 PeerConnectionInterface::IceServer server; | 1358 PeerConnectionInterface::IceServer server; |
1359 server.uri = JavaToStdString(jni, uri); | 1359 server.uri = JavaToStdString(jni, uri); |
1360 server.username = JavaToStdString(jni, username); | 1360 server.username = JavaToStdString(jni, username); |
1361 server.password = JavaToStdString(jni, password); | 1361 server.password = JavaToStdString(jni, password); |
1362 ice_servers->push_back(server); | 1362 ice_servers->push_back(server); |
1363 } | 1363 } |
1364 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; | 1364 CHECK_EXCEPTION(jni) << "error during CallBooleanMethod"; |
1365 } | 1365 } |
1366 | 1366 |
1367 static void JavaRTCConfigurationToJsepRTCConfiguration( | |
1368 JNIEnv* jni, | |
1369 jobject j_rtc_config, | |
1370 PeerConnectionInterface::RTCConfiguration* rtc_config) { | |
1371 jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config); | |
1372 | |
1373 jfieldID j_ice_transports_type_id = GetFieldID( | |
1374 jni, j_rtc_config_class, "iceTransportsType", | |
1375 "Lorg/webrtc/PeerConnection$IceTransportsType;"); | |
1376 jobject j_ice_transports_type = GetObjectField( | |
1377 jni, j_rtc_config, j_ice_transports_type_id); | |
1378 | |
1379 jfieldID j_bundle_policy_id = GetFieldID( | |
1380 jni, j_rtc_config_class, "bundlePolicy", | |
1381 "Lorg/webrtc/PeerConnection$BundlePolicy;"); | |
1382 jobject j_bundle_policy = GetObjectField( | |
1383 jni, j_rtc_config, j_bundle_policy_id); | |
1384 | |
1385 jfieldID j_rtcp_mux_policy_id = GetFieldID( | |
1386 jni, j_rtc_config_class, "rtcpMuxPolicy", | |
1387 "Lorg/webrtc/PeerConnection$RtcpMuxPolicy;"); | |
1388 jobject j_rtcp_mux_policy = GetObjectField( | |
1389 jni, j_rtc_config, j_rtcp_mux_policy_id); | |
1390 | |
1391 jfieldID j_tcp_candidate_policy_id = GetFieldID( | |
1392 jni, j_rtc_config_class, "tcpCandidatePolicy", | |
1393 "Lorg/webrtc/PeerConnection$TcpCandidatePolicy;"); | |
1394 jobject j_tcp_candidate_policy = GetObjectField( | |
1395 jni, j_rtc_config, j_tcp_candidate_policy_id); | |
1396 | |
1397 jfieldID j_ice_servers_id = GetFieldID( | |
1398 jni, j_rtc_config_class, "iceServers", "Ljava/util/List;"); | |
1399 jobject j_ice_servers = GetObjectField(jni, j_rtc_config, j_ice_servers_id); | |
1400 | |
1401 jfieldID j_audio_jitter_buffer_max_packets_id = | |
1402 GetFieldID(jni, j_rtc_config_class, "audioJitterBufferMaxPackets", "I"); | |
1403 jfieldID j_audio_jitter_buffer_fast_accelerate_id = GetFieldID( | |
1404 jni, j_rtc_config_class, "audioJitterBufferFastAccelerate", "Z"); | |
1405 | |
1406 jfieldID j_ice_connection_receiving_timeout_id = | |
1407 GetFieldID(jni, j_rtc_config_class, "iceConnectionReceivingTimeout", "I"); | |
1408 | |
1409 rtc_config->type = | |
1410 JavaIceTransportsTypeToNativeType(jni, j_ice_transports_type); | |
1411 rtc_config->bundle_policy = | |
1412 JavaBundlePolicyToNativeType(jni, j_bundle_policy); | |
1413 rtc_config->rtcp_mux_policy = | |
1414 JavaRtcpMuxPolicyToNativeType(jni, j_rtcp_mux_policy); | |
1415 rtc_config->tcp_candidate_policy = | |
1416 JavaTcpCandidatePolicyToNativeType(jni, j_tcp_candidate_policy); | |
1417 JavaIceServersToJsepIceServers(jni, j_ice_servers, &rtc_config->servers); | |
1418 rtc_config->audio_jitter_buffer_max_packets = | |
1419 GetIntField(jni, j_rtc_config, j_audio_jitter_buffer_max_packets_id); | |
1420 rtc_config->audio_jitter_buffer_fast_accelerate = GetBooleanField( | |
1421 jni, j_rtc_config, j_audio_jitter_buffer_fast_accelerate_id); | |
1422 rtc_config->ice_connection_receiving_timeout = | |
1423 GetIntField(jni, j_rtc_config, j_ice_connection_receiving_timeout_id); | |
1424 } | |
1425 | |
1426 JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnection)( | 1367 JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnection)( |
1427 JNIEnv *jni, jclass, jlong factory, jobject j_rtc_config, | 1368 JNIEnv *jni, jclass, jlong factory, jobject j_rtc_config, |
1428 jobject j_constraints, jlong observer_p) { | 1369 jobject j_constraints, jlong observer_p) { |
1429 rtc::scoped_refptr<PeerConnectionFactoryInterface> f( | 1370 rtc::scoped_refptr<PeerConnectionFactoryInterface> f( |
1430 reinterpret_cast<PeerConnectionFactoryInterface*>( | 1371 reinterpret_cast<PeerConnectionFactoryInterface*>( |
1431 factoryFromJava(factory))); | 1372 factoryFromJava(factory))); |
1432 | 1373 |
| 1374 jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config); |
| 1375 |
| 1376 jfieldID j_ice_transports_type_id = GetFieldID( |
| 1377 jni, j_rtc_config_class, "iceTransportsType", |
| 1378 "Lorg/webrtc/PeerConnection$IceTransportsType;"); |
| 1379 jobject j_ice_transports_type = GetObjectField( |
| 1380 jni, j_rtc_config, j_ice_transports_type_id); |
| 1381 |
| 1382 jfieldID j_bundle_policy_id = GetFieldID( |
| 1383 jni, j_rtc_config_class, "bundlePolicy", |
| 1384 "Lorg/webrtc/PeerConnection$BundlePolicy;"); |
| 1385 jobject j_bundle_policy = GetObjectField( |
| 1386 jni, j_rtc_config, j_bundle_policy_id); |
| 1387 |
| 1388 jfieldID j_rtcp_mux_policy_id = GetFieldID( |
| 1389 jni, j_rtc_config_class, "rtcpMuxPolicy", |
| 1390 "Lorg/webrtc/PeerConnection$RtcpMuxPolicy;"); |
| 1391 jobject j_rtcp_mux_policy = GetObjectField( |
| 1392 jni, j_rtc_config, j_rtcp_mux_policy_id); |
| 1393 |
| 1394 jfieldID j_tcp_candidate_policy_id = GetFieldID( |
| 1395 jni, j_rtc_config_class, "tcpCandidatePolicy", |
| 1396 "Lorg/webrtc/PeerConnection$TcpCandidatePolicy;"); |
| 1397 jobject j_tcp_candidate_policy = GetObjectField( |
| 1398 jni, j_rtc_config, j_tcp_candidate_policy_id); |
| 1399 |
| 1400 jfieldID j_ice_servers_id = GetFieldID( |
| 1401 jni, j_rtc_config_class, "iceServers", "Ljava/util/List;"); |
| 1402 jobject j_ice_servers = GetObjectField(jni, j_rtc_config, j_ice_servers_id); |
| 1403 |
| 1404 jfieldID j_audio_jitter_buffer_max_packets_id = |
| 1405 GetFieldID(jni, j_rtc_config_class, "audioJitterBufferMaxPackets", "I"); |
| 1406 jfieldID j_audio_jitter_buffer_fast_accelerate_id = GetFieldID( |
| 1407 jni, j_rtc_config_class, "audioJitterBufferFastAccelerate", "Z"); |
| 1408 |
| 1409 jfieldID j_ice_connection_receiving_timeout_id = |
| 1410 GetFieldID(jni, j_rtc_config_class, "iceConnectionReceivingTimeout", "I"); |
| 1411 |
| 1412 jfieldID j_key_type_id = GetFieldID(jni, j_rtc_config_class, "keyType", |
| 1413 "Lorg/webrtc/PeerConnection$KeyType;"); |
| 1414 jobject j_key_type = GetObjectField(jni, j_rtc_config, j_key_type_id); |
| 1415 |
1433 PeerConnectionInterface::RTCConfiguration rtc_config; | 1416 PeerConnectionInterface::RTCConfiguration rtc_config; |
1434 JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config); | 1417 rtc_config.type = |
1435 | 1418 JavaIceTransportsTypeToNativeType(jni, j_ice_transports_type); |
1436 jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config); | 1419 rtc_config.bundle_policy = JavaBundlePolicyToNativeType(jni, j_bundle_policy); |
1437 jfieldID j_key_type_id = GetFieldID(jni, j_rtc_config_class, "keyType", | 1420 rtc_config.rtcp_mux_policy = |
1438 "Lorg/webrtc/PeerConnection$KeyType;"); | 1421 JavaRtcpMuxPolicyToNativeType(jni, j_rtcp_mux_policy); |
1439 jobject j_key_type = GetObjectField(jni, j_rtc_config, j_key_type_id); | 1422 rtc_config.tcp_candidate_policy = |
| 1423 JavaTcpCandidatePolicyToNativeType(jni, j_tcp_candidate_policy); |
| 1424 JavaIceServersToJsepIceServers(jni, j_ice_servers, &rtc_config.servers); |
| 1425 rtc_config.audio_jitter_buffer_max_packets = |
| 1426 GetIntField(jni, j_rtc_config, j_audio_jitter_buffer_max_packets_id); |
| 1427 rtc_config.audio_jitter_buffer_fast_accelerate = GetBooleanField( |
| 1428 jni, j_rtc_config, j_audio_jitter_buffer_fast_accelerate_id); |
| 1429 rtc_config.ice_connection_receiving_timeout = |
| 1430 GetIntField(jni, j_rtc_config, j_ice_connection_receiving_timeout_id); |
1440 | 1431 |
1441 // Create ECDSA certificate. | 1432 // Create ECDSA certificate. |
1442 if (JavaKeyTypeToNativeType(jni, j_key_type) == rtc::KT_ECDSA) { | 1433 if (JavaKeyTypeToNativeType(jni, j_key_type) == rtc::KT_ECDSA) { |
1443 scoped_ptr<rtc::SSLIdentity> ssl_identity( | 1434 scoped_ptr<rtc::SSLIdentity> ssl_identity( |
1444 rtc::SSLIdentity::Generate(webrtc::kIdentityName, rtc::KT_ECDSA)); | 1435 rtc::SSLIdentity::Generate(webrtc::kIdentityName, rtc::KT_ECDSA)); |
1445 if (ssl_identity.get()) { | 1436 if (ssl_identity.get()) { |
1446 rtc_config.certificates.push_back( | 1437 rtc_config.certificates.push_back( |
1447 rtc::RTCCertificate::Create(ssl_identity.Pass())); | 1438 rtc::RTCCertificate::Create(ssl_identity.Pass())); |
1448 LOG(LS_INFO) << "ECDSA certificate created."; | 1439 LOG(LS_INFO) << "ECDSA certificate created."; |
1449 } else { | 1440 } else { |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 JOW(void, PeerConnection_setRemoteDescription)( | 1553 JOW(void, PeerConnection_setRemoteDescription)( |
1563 JNIEnv* jni, jobject j_pc, | 1554 JNIEnv* jni, jobject j_pc, |
1564 jobject j_observer, jobject j_sdp) { | 1555 jobject j_observer, jobject j_sdp) { |
1565 rtc::scoped_refptr<SetSdpObserverWrapper> observer( | 1556 rtc::scoped_refptr<SetSdpObserverWrapper> observer( |
1566 new rtc::RefCountedObject<SetSdpObserverWrapper>( | 1557 new rtc::RefCountedObject<SetSdpObserverWrapper>( |
1567 jni, j_observer, reinterpret_cast<ConstraintsWrapper*>(NULL))); | 1558 jni, j_observer, reinterpret_cast<ConstraintsWrapper*>(NULL))); |
1568 ExtractNativePC(jni, j_pc)->SetRemoteDescription( | 1559 ExtractNativePC(jni, j_pc)->SetRemoteDescription( |
1569 observer, JavaSdpToNativeSdp(jni, j_sdp)); | 1560 observer, JavaSdpToNativeSdp(jni, j_sdp)); |
1570 } | 1561 } |
1571 | 1562 |
1572 JOW(jboolean, PeerConnection_setConfiguration)( | 1563 JOW(jboolean, PeerConnection_updateIce)( |
1573 JNIEnv* jni, jobject j_pc, jobject j_rtc_config) { | 1564 JNIEnv* jni, jobject j_pc, jobject j_ice_servers, jobject j_constraints) { |
1574 PeerConnectionInterface::RTCConfiguration rtc_config; | 1565 PeerConnectionInterface::IceServers ice_servers; |
1575 JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config); | 1566 JavaIceServersToJsepIceServers(jni, j_ice_servers, &ice_servers); |
1576 return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config); | 1567 scoped_ptr<ConstraintsWrapper> constraints( |
| 1568 new ConstraintsWrapper(jni, j_constraints)); |
| 1569 return ExtractNativePC(jni, j_pc)->UpdateIce(ice_servers, constraints.get()); |
1577 } | 1570 } |
1578 | 1571 |
1579 JOW(jboolean, PeerConnection_nativeAddIceCandidate)( | 1572 JOW(jboolean, PeerConnection_nativeAddIceCandidate)( |
1580 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid, | 1573 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid, |
1581 jint j_sdp_mline_index, jstring j_candidate_sdp) { | 1574 jint j_sdp_mline_index, jstring j_candidate_sdp) { |
1582 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); | 1575 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); |
1583 std::string sdp = JavaToStdString(jni, j_candidate_sdp); | 1576 std::string sdp = JavaToStdString(jni, j_candidate_sdp); |
1584 scoped_ptr<IceCandidateInterface> candidate( | 1577 scoped_ptr<IceCandidateInterface> candidate( |
1585 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL)); | 1578 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL)); |
1586 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); | 1579 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1833 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size))); | 1826 rtc::scoped_ptr<jbyte> buffer(static_cast<jbyte*>(malloc(log_size))); |
1834 stream->ReadAll(buffer.get(), log_size, &read, nullptr); | 1827 stream->ReadAll(buffer.get(), log_size, &read, nullptr); |
1835 | 1828 |
1836 jbyteArray result = jni->NewByteArray(read); | 1829 jbyteArray result = jni->NewByteArray(read); |
1837 jni->SetByteArrayRegion(result, 0, read, buffer.get()); | 1830 jni->SetByteArrayRegion(result, 0, read, buffer.get()); |
1838 | 1831 |
1839 return result; | 1832 return result; |
1840 } | 1833 } |
1841 | 1834 |
1842 } // namespace webrtc_jni | 1835 } // namespace webrtc_jni |
OLD | NEW |