Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: webrtc/api/java/jni/peerconnection_jni.cc

Issue 1785613011: Revert of Remove candidates when doing continual gathering (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "webrtc/api/java/jni/androidnetworkmonitor_jni.h" 49 #include "webrtc/api/java/jni/androidnetworkmonitor_jni.h"
50 #include "webrtc/api/java/jni/androidvideocapturer_jni.h" 50 #include "webrtc/api/java/jni/androidvideocapturer_jni.h"
51 #include "webrtc/api/java/jni/classreferenceholder.h" 51 #include "webrtc/api/java/jni/classreferenceholder.h"
52 #include "webrtc/api/java/jni/jni_helpers.h" 52 #include "webrtc/api/java/jni/jni_helpers.h"
53 #include "webrtc/api/java/jni/native_handle_impl.h" 53 #include "webrtc/api/java/jni/native_handle_impl.h"
54 #include "webrtc/api/mediaconstraintsinterface.h" 54 #include "webrtc/api/mediaconstraintsinterface.h"
55 #include "webrtc/api/peerconnectioninterface.h" 55 #include "webrtc/api/peerconnectioninterface.h"
56 #include "webrtc/api/rtpreceiverinterface.h" 56 #include "webrtc/api/rtpreceiverinterface.h"
57 #include "webrtc/api/rtpsenderinterface.h" 57 #include "webrtc/api/rtpsenderinterface.h"
58 #include "webrtc/api/videosourceinterface.h" 58 #include "webrtc/api/videosourceinterface.h"
59 #include "webrtc/api/webrtcsdp.h"
60 #include "webrtc/base/bind.h" 59 #include "webrtc/base/bind.h"
61 #include "webrtc/base/checks.h" 60 #include "webrtc/base/checks.h"
62 #include "webrtc/base/event_tracer.h" 61 #include "webrtc/base/event_tracer.h"
63 #include "webrtc/base/logging.h" 62 #include "webrtc/base/logging.h"
64 #include "webrtc/base/logsinks.h" 63 #include "webrtc/base/logsinks.h"
65 #include "webrtc/base/messagequeue.h" 64 #include "webrtc/base/messagequeue.h"
66 #include "webrtc/base/networkmonitor.h" 65 #include "webrtc/base/networkmonitor.h"
67 #include "webrtc/base/ssladapter.h" 66 #include "webrtc/base/ssladapter.h"
68 #include "webrtc/base/stringutils.h" 67 #include "webrtc/base/stringutils.h"
69 #include "webrtc/media/base/videocapturer.h" 68 #include "webrtc/media/base/videocapturer.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 188
190 void OnIceCandidate(const IceCandidateInterface* candidate) override { 189 void OnIceCandidate(const IceCandidateInterface* candidate) override {
191 ScopedLocalRefFrame local_ref_frame(jni()); 190 ScopedLocalRefFrame local_ref_frame(jni());
192 std::string sdp; 191 std::string sdp;
193 RTC_CHECK(candidate->ToString(&sdp)) << "got so far: " << sdp; 192 RTC_CHECK(candidate->ToString(&sdp)) << "got so far: " << sdp;
194 jclass candidate_class = FindClass(jni(), "org/webrtc/IceCandidate"); 193 jclass candidate_class = FindClass(jni(), "org/webrtc/IceCandidate");
195 jmethodID ctor = GetMethodID(jni(), candidate_class, 194 jmethodID ctor = GetMethodID(jni(), candidate_class,
196 "<init>", "(Ljava/lang/String;ILjava/lang/String;)V"); 195 "<init>", "(Ljava/lang/String;ILjava/lang/String;)V");
197 jstring j_mid = JavaStringFromStdString(jni(), candidate->sdp_mid()); 196 jstring j_mid = JavaStringFromStdString(jni(), candidate->sdp_mid());
198 jstring j_sdp = JavaStringFromStdString(jni(), sdp); 197 jstring j_sdp = JavaStringFromStdString(jni(), sdp);
199 jobject j_candidate = jni()->NewObject(candidate_class, ctor, j_mid, 198 jobject j_candidate = jni()->NewObject(
200 candidate->sdp_mline_index(), j_sdp); 199 candidate_class, ctor, j_mid, candidate->sdp_mline_index(), j_sdp);
201 CHECK_EXCEPTION(jni()) << "error during NewObject"; 200 CHECK_EXCEPTION(jni()) << "error during NewObject";
202 jmethodID m = GetMethodID(jni(), *j_observer_class_, 201 jmethodID m = GetMethodID(jni(), *j_observer_class_,
203 "onIceCandidate", "(Lorg/webrtc/IceCandidate;)V"); 202 "onIceCandidate", "(Lorg/webrtc/IceCandidate;)V");
204 jni()->CallVoidMethod(*j_observer_global_, m, j_candidate); 203 jni()->CallVoidMethod(*j_observer_global_, m, j_candidate);
205 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 204 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
206 } 205 }
207 206
208 void OnIceCandidatesRemoved(
209 const std::vector<cricket::Candidate>& candidates) {
210 ScopedLocalRefFrame local_ref_frame(jni());
211 jobjectArray candidates_array = ToJavaCandidateArray(jni(), candidates);
212 jmethodID m =
213 GetMethodID(jni(), *j_observer_class_, "onIceCandidatesRemoved",
214 "([Lorg/webrtc/IceCandidate;)V");
215 jni()->CallVoidMethod(*j_observer_global_, m, candidates_array);
216 CHECK_EXCEPTION(jni()) << "Error during CallVoidMethod";
217 }
218
219 void OnSignalingChange( 207 void OnSignalingChange(
220 PeerConnectionInterface::SignalingState new_state) override { 208 PeerConnectionInterface::SignalingState new_state) override {
221 ScopedLocalRefFrame local_ref_frame(jni()); 209 ScopedLocalRefFrame local_ref_frame(jni());
222 jmethodID m = GetMethodID( 210 jmethodID m = GetMethodID(
223 jni(), *j_observer_class_, "onSignalingChange", 211 jni(), *j_observer_class_, "onSignalingChange",
224 "(Lorg/webrtc/PeerConnection$SignalingState;)V"); 212 "(Lorg/webrtc/PeerConnection$SignalingState;)V");
225 jobject new_state_enum = 213 jobject new_state_enum =
226 JavaEnumFromIndex(jni(), "PeerConnection$SignalingState", new_state); 214 JavaEnumFromIndex(jni(), "PeerConnection$SignalingState", new_state);
227 jni()->CallVoidMethod(*j_observer_global_, m, new_state_enum); 215 jni()->CallVoidMethod(*j_observer_global_, m, new_state_enum);
228 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 216 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 364
377 void DisposeRemoteStream(const NativeToJavaStreamsMap::iterator& it) { 365 void DisposeRemoteStream(const NativeToJavaStreamsMap::iterator& it) {
378 jobject j_stream = it->second; 366 jobject j_stream = it->second;
379 remote_streams_.erase(it); 367 remote_streams_.erase(it);
380 jni()->CallVoidMethod( 368 jni()->CallVoidMethod(
381 j_stream, GetMethodID(jni(), *j_media_stream_class_, "dispose", "()V")); 369 j_stream, GetMethodID(jni(), *j_media_stream_class_, "dispose", "()V"));
382 CHECK_EXCEPTION(jni()) << "error during MediaStream.dispose()"; 370 CHECK_EXCEPTION(jni()) << "error during MediaStream.dispose()";
383 DeleteGlobalRef(jni(), j_stream); 371 DeleteGlobalRef(jni(), j_stream);
384 } 372 }
385 373
386 jobject ToJavaCandidate(JNIEnv* jni,
387 jclass* candidate_class,
388 const cricket::Candidate& candidate) {
389 std::string sdp = webrtc::SdpSerializeCandidate(candidate);
390 RTC_CHECK(!sdp.empty()) << "got an empty ICE candidate";
391 jmethodID ctor = GetMethodID(jni, *candidate_class, "<init>",
392 "(Ljava/lang/String;ILjava/lang/String;)V");
393 jstring j_mid = JavaStringFromStdString(jni, candidate.transport_name());
394 jstring j_sdp = JavaStringFromStdString(jni, sdp);
395 // sdp_mline_index is not used, pass an invalid value -1.
396 jobject j_candidate =
397 jni->NewObject(*candidate_class, ctor, j_mid, -1, j_sdp);
398 CHECK_EXCEPTION(jni) << "error during Java Candidate NewObject";
399 return j_candidate;
400 }
401
402 jobjectArray ToJavaCandidateArray(
403 JNIEnv* jni,
404 const std::vector<cricket::Candidate>& candidates) {
405 jclass candidate_class = FindClass(jni, "org/webrtc/IceCandidate");
406 jobjectArray java_candidates =
407 jni->NewObjectArray(candidates.size(), candidate_class, NULL);
408 int i = 0;
409 for (const cricket::Candidate& candidate : candidates) {
410 jobject j_candidate = ToJavaCandidate(jni, &candidate_class, candidate);
411 jni->SetObjectArrayElement(java_candidates, i++, j_candidate);
412 }
413 return java_candidates;
414 }
415
416 JNIEnv* jni() { 374 JNIEnv* jni() {
417 return AttachCurrentThreadIfNeeded(); 375 return AttachCurrentThreadIfNeeded();
418 } 376 }
419 377
420 const ScopedGlobalRef<jobject> j_observer_global_; 378 const ScopedGlobalRef<jobject> j_observer_global_;
421 const ScopedGlobalRef<jclass> j_observer_class_; 379 const ScopedGlobalRef<jclass> j_observer_class_;
422 const ScopedGlobalRef<jclass> j_media_stream_class_; 380 const ScopedGlobalRef<jclass> j_media_stream_class_;
423 const jmethodID j_media_stream_ctor_; 381 const jmethodID j_media_stream_ctor_;
424 const ScopedGlobalRef<jclass> j_audio_track_class_; 382 const ScopedGlobalRef<jclass> j_audio_track_class_;
425 const jmethodID j_audio_track_ctor_; 383 const jmethodID j_audio_track_ctor_;
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1758 JOW(jboolean, PeerConnection_nativeAddIceCandidate)( 1716 JOW(jboolean, PeerConnection_nativeAddIceCandidate)(
1759 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid, 1717 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid,
1760 jint j_sdp_mline_index, jstring j_candidate_sdp) { 1718 jint j_sdp_mline_index, jstring j_candidate_sdp) {
1761 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); 1719 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid);
1762 std::string sdp = JavaToStdString(jni, j_candidate_sdp); 1720 std::string sdp = JavaToStdString(jni, j_candidate_sdp);
1763 scoped_ptr<IceCandidateInterface> candidate( 1721 scoped_ptr<IceCandidateInterface> candidate(
1764 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL)); 1722 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL));
1765 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); 1723 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get());
1766 } 1724 }
1767 1725
1768 static cricket::Candidate GetCandidateFromJava(JNIEnv* jni,
1769 jobject j_candidate) {
1770 jclass j_candidate_class = GetObjectClass(jni, j_candidate);
1771 jfieldID j_sdp_mid_id =
1772 GetFieldID(jni, j_candidate_class, "sdpMid", "Ljava/lang/String;");
1773 std::string sdp_mid =
1774 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_mid_id));
1775 jfieldID j_sdp_id =
1776 GetFieldID(jni, j_candidate_class, "sdp", "Ljava/lang/String;");
1777 std::string sdp =
1778 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_id));
1779 cricket::Candidate candidate;
1780 if (!webrtc::SdpDeserializeCandidate(sdp_mid, sdp, &candidate, NULL)) {
1781 LOG(LS_ERROR) << "SdpDescrializeCandidate failed with sdp " << sdp;
1782 }
1783 return candidate;
1784 }
1785
1786 JOW(jboolean, PeerConnection_nativeRemoveIceCandidates)
1787 (JNIEnv* jni, jobject j_pc, jobjectArray j_candidates) {
1788 std::vector<cricket::Candidate> candidates;
1789 size_t num_candidates = jni->GetArrayLength(j_candidates);
1790 for (size_t i = 0; i < num_candidates; ++i) {
1791 jobject j_candidate = jni->GetObjectArrayElement(j_candidates, i);
1792 candidates.push_back(GetCandidateFromJava(jni, j_candidate));
1793 }
1794 return ExtractNativePC(jni, j_pc)->RemoveIceCandidates(candidates);
1795 }
1796
1797 JOW(jboolean, PeerConnection_nativeAddLocalStream)( 1726 JOW(jboolean, PeerConnection_nativeAddLocalStream)(
1798 JNIEnv* jni, jobject j_pc, jlong native_stream) { 1727 JNIEnv* jni, jobject j_pc, jlong native_stream) {
1799 return ExtractNativePC(jni, j_pc)->AddStream( 1728 return ExtractNativePC(jni, j_pc)->AddStream(
1800 reinterpret_cast<MediaStreamInterface*>(native_stream)); 1729 reinterpret_cast<MediaStreamInterface*>(native_stream));
1801 } 1730 }
1802 1731
1803 JOW(void, PeerConnection_nativeRemoveLocalStream)( 1732 JOW(void, PeerConnection_nativeRemoveLocalStream)(
1804 JNIEnv* jni, jobject j_pc, jlong native_stream) { 1733 JNIEnv* jni, jobject j_pc, jlong native_stream) {
1805 ExtractNativePC(jni, j_pc)->RemoveStream( 1734 ExtractNativePC(jni, j_pc)->RemoveStream(
1806 reinterpret_cast<MediaStreamInterface*>(native_stream)); 1735 reinterpret_cast<MediaStreamInterface*>(native_stream));
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 return JavaStringFromStdString( 2038 return JavaStringFromStdString(
2110 jni, 2039 jni,
2111 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id()); 2040 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->id());
2112 } 2041 }
2113 2042
2114 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) { 2043 JOW(void, RtpReceiver_free)(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
2115 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release(); 2044 reinterpret_cast<RtpReceiverInterface*>(j_rtp_receiver_pointer)->Release();
2116 } 2045 }
2117 2046
2118 } // namespace webrtc_jni 2047 } // namespace webrtc_jni
OLDNEW
« no previous file with comments | « webrtc/api/androidtests/src/org/webrtc/PeerConnectionTest.java ('k') | webrtc/api/java/src/org/webrtc/PeerConnection.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698