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

Side by Side Diff: webrtc/sdk/android/src/jni/peerconnection_jni.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 using webrtc::StatsReport; 109 using webrtc::StatsReport;
110 using webrtc::StatsReports; 110 using webrtc::StatsReports;
111 using webrtc::VideoTrackSourceInterface; 111 using webrtc::VideoTrackSourceInterface;
112 using webrtc::VideoTrackInterface; 112 using webrtc::VideoTrackInterface;
113 using webrtc::VideoTrackVector; 113 using webrtc::VideoTrackVector;
114 using webrtc::kVideoCodecVP8; 114 using webrtc::kVideoCodecVP8;
115 115
116 namespace webrtc_jni { 116 namespace webrtc_jni {
117 117
118 // Field trials initialization string 118 // Field trials initialization string
119 static char *field_trials_init_string = NULL; 119 static char* field_trials_init_string = nullptr;
120 120
121 // Set in PeerConnectionFactory_initializeAndroidGlobals(). 121 // Set in PeerConnectionFactory_initializeAndroidGlobals().
122 static bool factory_static_initialized = false; 122 static bool factory_static_initialized = false;
123 static bool video_hw_acceleration_enabled = true; 123 static bool video_hw_acceleration_enabled = true;
124 static jobject j_application_context = nullptr; 124 static jobject j_application_context = nullptr;
125 125
126 // Return the (singleton) Java Enum object corresponding to |index|; 126 // Return the (singleton) Java Enum object corresponding to |index|;
127 // |state_class_fragment| is something like "MediaSource$State". 127 // |state_class_fragment| is something like "MediaSource$State".
128 static jobject JavaEnumFromIndex( 128 static jobject JavaEnumFromIndex(
129 JNIEnv* jni, const std::string& state_class_fragment, int index) { 129 JNIEnv* jni, const std::string& state_class_fragment, int index) {
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 jni->NewObject(*candidate_class, ctor, j_mid, -1, j_sdp); 482 jni->NewObject(*candidate_class, ctor, j_mid, -1, j_sdp);
483 CHECK_EXCEPTION(jni) << "error during Java Candidate NewObject"; 483 CHECK_EXCEPTION(jni) << "error during Java Candidate NewObject";
484 return j_candidate; 484 return j_candidate;
485 } 485 }
486 486
487 jobjectArray ToJavaCandidateArray( 487 jobjectArray ToJavaCandidateArray(
488 JNIEnv* jni, 488 JNIEnv* jni,
489 const std::vector<cricket::Candidate>& candidates) { 489 const std::vector<cricket::Candidate>& candidates) {
490 jclass candidate_class = FindClass(jni, "org/webrtc/IceCandidate"); 490 jclass candidate_class = FindClass(jni, "org/webrtc/IceCandidate");
491 jobjectArray java_candidates = 491 jobjectArray java_candidates =
492 jni->NewObjectArray(candidates.size(), candidate_class, NULL); 492 jni->NewObjectArray(candidates.size(), candidate_class, nullptr);
493 int i = 0; 493 int i = 0;
494 for (const cricket::Candidate& candidate : candidates) { 494 for (const cricket::Candidate& candidate : candidates) {
495 jobject j_candidate = ToJavaCandidate(jni, &candidate_class, candidate); 495 jobject j_candidate = ToJavaCandidate(jni, &candidate_class, candidate);
496 jni->SetObjectArrayElement(java_candidates, i++, j_candidate); 496 jni->SetObjectArrayElement(java_candidates, i++, j_candidate);
497 } 497 }
498 return java_candidates; 498 return java_candidates;
499 } 499 }
500 500
501 jobjectArray ToJavaMediaStreamArray( 501 jobjectArray ToJavaMediaStreamArray(
502 JNIEnv* jni, 502 JNIEnv* jni,
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 jobjectArray j_reports = ReportsToJava(jni(), reports); 787 jobjectArray j_reports = ReportsToJava(jni(), reports);
788 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onComplete", 788 jmethodID m = GetMethodID(jni(), *j_observer_class_, "onComplete",
789 "([Lorg/webrtc/StatsReport;)V"); 789 "([Lorg/webrtc/StatsReport;)V");
790 jni()->CallVoidMethod(*j_observer_global_, m, j_reports); 790 jni()->CallVoidMethod(*j_observer_global_, m, j_reports);
791 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod"; 791 CHECK_EXCEPTION(jni()) << "error during CallVoidMethod";
792 } 792 }
793 793
794 private: 794 private:
795 jobjectArray ReportsToJava( 795 jobjectArray ReportsToJava(
796 JNIEnv* jni, const StatsReports& reports) { 796 JNIEnv* jni, const StatsReports& reports) {
797 jobjectArray reports_array = jni->NewObjectArray( 797 jobjectArray reports_array =
798 reports.size(), *j_stats_report_class_, NULL); 798 jni->NewObjectArray(reports.size(), *j_stats_report_class_, nullptr);
799 int i = 0; 799 int i = 0;
800 for (const auto* report : reports) { 800 for (const auto* report : reports) {
801 ScopedLocalRefFrame local_ref_frame(jni); 801 ScopedLocalRefFrame local_ref_frame(jni);
802 jstring j_id = JavaStringFromStdString(jni, report->id()->ToString()); 802 jstring j_id = JavaStringFromStdString(jni, report->id()->ToString());
803 jstring j_type = JavaStringFromStdString(jni, report->TypeToString()); 803 jstring j_type = JavaStringFromStdString(jni, report->TypeToString());
804 jobjectArray j_values = ValuesToJava(jni, report->values()); 804 jobjectArray j_values = ValuesToJava(jni, report->values());
805 jobject j_report = jni->NewObject(*j_stats_report_class_, 805 jobject j_report = jni->NewObject(*j_stats_report_class_,
806 j_stats_report_ctor_, 806 j_stats_report_ctor_,
807 j_id, 807 j_id,
808 j_type, 808 j_type,
809 report->timestamp(), 809 report->timestamp(),
810 j_values); 810 j_values);
811 jni->SetObjectArrayElement(reports_array, i++, j_report); 811 jni->SetObjectArrayElement(reports_array, i++, j_report);
812 } 812 }
813 return reports_array; 813 return reports_array;
814 } 814 }
815 815
816 jobjectArray ValuesToJava(JNIEnv* jni, const StatsReport::Values& values) { 816 jobjectArray ValuesToJava(JNIEnv* jni, const StatsReport::Values& values) {
817 jobjectArray j_values = jni->NewObjectArray( 817 jobjectArray j_values =
818 values.size(), *j_value_class_, NULL); 818 jni->NewObjectArray(values.size(), *j_value_class_, nullptr);
819 int i = 0; 819 int i = 0;
820 for (const auto& it : values) { 820 for (const auto& it : values) {
821 ScopedLocalRefFrame local_ref_frame(jni); 821 ScopedLocalRefFrame local_ref_frame(jni);
822 // Should we use the '.name' enum value here instead of converting the 822 // Should we use the '.name' enum value here instead of converting the
823 // name to a string? 823 // name to a string?
824 jstring j_name = JavaStringFromStdString(jni, it.second->display_name()); 824 jstring j_name = JavaStringFromStdString(jni, it.second->display_name());
825 jstring j_value = JavaStringFromStdString(jni, it.second->ToString()); 825 jstring j_value = JavaStringFromStdString(jni, it.second->ToString());
826 jobject j_element_value = 826 jobject j_element_value =
827 jni->NewObject(*j_value_class_, j_value_ctor_, j_name, j_value); 827 jni->NewObject(*j_value_class_, j_value_ctor_, j_name, j_value);
828 jni->SetObjectArrayElement(j_values, i++, j_element_value); 828 jni->SetObjectArrayElement(j_values, i++, j_element_value);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 // Make a shallow copy of |frame| to be used with Java. The callee has 881 // Make a shallow copy of |frame| to be used with Java. The callee has
882 // ownership of the frame, and the frame should be released with 882 // ownership of the frame, and the frame should be released with
883 // VideoRenderer.releaseNativeFrame(). 883 // VideoRenderer.releaseNativeFrame().
884 static jlong javaShallowCopy(const webrtc::VideoFrame* frame) { 884 static jlong javaShallowCopy(const webrtc::VideoFrame* frame) {
885 return jlongFromPointer(new webrtc::VideoFrame(*frame)); 885 return jlongFromPointer(new webrtc::VideoFrame(*frame));
886 } 886 }
887 887
888 // Return a VideoRenderer.I420Frame referring to the data in |frame|. 888 // Return a VideoRenderer.I420Frame referring to the data in |frame|.
889 jobject CricketToJavaI420Frame(const webrtc::VideoFrame* frame) { 889 jobject CricketToJavaI420Frame(const webrtc::VideoFrame* frame) {
890 jintArray strides = jni()->NewIntArray(3); 890 jintArray strides = jni()->NewIntArray(3);
891 jint* strides_array = jni()->GetIntArrayElements(strides, NULL); 891 jint* strides_array = jni()->GetIntArrayElements(strides, nullptr);
892 strides_array[0] = frame->video_frame_buffer()->StrideY(); 892 strides_array[0] = frame->video_frame_buffer()->StrideY();
893 strides_array[1] = frame->video_frame_buffer()->StrideU(); 893 strides_array[1] = frame->video_frame_buffer()->StrideU();
894 strides_array[2] = frame->video_frame_buffer()->StrideV(); 894 strides_array[2] = frame->video_frame_buffer()->StrideV();
895 jni()->ReleaseIntArrayElements(strides, strides_array, 0); 895 jni()->ReleaseIntArrayElements(strides, strides_array, 0);
896 jobjectArray planes = jni()->NewObjectArray(3, *j_byte_buffer_class_, NULL); 896 jobjectArray planes =
897 jni()->NewObjectArray(3, *j_byte_buffer_class_, nullptr);
897 jobject y_buffer = jni()->NewDirectByteBuffer( 898 jobject y_buffer = jni()->NewDirectByteBuffer(
898 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()), 899 const_cast<uint8_t*>(frame->video_frame_buffer()->DataY()),
899 frame->video_frame_buffer()->StrideY() * 900 frame->video_frame_buffer()->StrideY() *
900 frame->video_frame_buffer()->height()); 901 frame->video_frame_buffer()->height());
901 size_t chroma_height = (frame->height() + 1) / 2; 902 size_t chroma_height = (frame->height() + 1) / 2;
902 jobject u_buffer = jni()->NewDirectByteBuffer( 903 jobject u_buffer = jni()->NewDirectByteBuffer(
903 const_cast<uint8_t*>(frame->video_frame_buffer()->DataU()), 904 const_cast<uint8_t*>(frame->video_frame_buffer()->DataU()),
904 frame->video_frame_buffer()->StrideU() * chroma_height); 905 frame->video_frame_buffer()->StrideU() * chroma_height);
905 jobject v_buffer = jni()->NewDirectByteBuffer( 906 jobject v_buffer = jni()->NewDirectByteBuffer(
906 const_cast<uint8_t*>(frame->video_frame_buffer()->DataV()), 907 const_cast<uint8_t*>(frame->video_frame_buffer()->DataV()),
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 << "buffered_amount overflowed jlong!"; 1013 << "buffered_amount overflowed jlong!";
1013 return static_cast<jlong>(buffered_amount); 1014 return static_cast<jlong>(buffered_amount);
1014 } 1015 }
1015 1016
1016 JOW(void, DataChannel_close)(JNIEnv* jni, jobject j_dc) { 1017 JOW(void, DataChannel_close)(JNIEnv* jni, jobject j_dc) {
1017 ExtractNativeDC(jni, j_dc)->Close(); 1018 ExtractNativeDC(jni, j_dc)->Close();
1018 } 1019 }
1019 1020
1020 JOW(jboolean, DataChannel_sendNative)(JNIEnv* jni, jobject j_dc, 1021 JOW(jboolean, DataChannel_sendNative)(JNIEnv* jni, jobject j_dc,
1021 jbyteArray data, jboolean binary) { 1022 jbyteArray data, jboolean binary) {
1022 jbyte* bytes = jni->GetByteArrayElements(data, NULL); 1023 jbyte* bytes = jni->GetByteArrayElements(data, nullptr);
1023 bool ret = ExtractNativeDC(jni, j_dc)->Send(DataBuffer( 1024 bool ret = ExtractNativeDC(jni, j_dc)->Send(DataBuffer(
1024 rtc::CopyOnWriteBuffer(bytes, jni->GetArrayLength(data)), 1025 rtc::CopyOnWriteBuffer(bytes, jni->GetArrayLength(data)),
1025 binary)); 1026 binary));
1026 jni->ReleaseByteArrayElements(data, bytes, JNI_ABORT); 1027 jni->ReleaseByteArrayElements(data, bytes, JNI_ABORT);
1027 return ret; 1028 return ret;
1028 } 1029 }
1029 1030
1030 JOW(void, DataChannel_dispose)(JNIEnv* jni, jobject j_dc) { 1031 JOW(void, DataChannel_dispose)(JNIEnv* jni, jobject j_dc) {
1031 CHECK_RELEASE(ExtractNativeDC(jni, j_dc)); 1032 CHECK_RELEASE(ExtractNativeDC(jni, j_dc));
1032 } 1033 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 1151
1151 if (initialize_audio) 1152 if (initialize_audio)
1152 failure |= webrtc::VoiceEngine::SetAndroidObjects(GetJVM(), context); 1153 failure |= webrtc::VoiceEngine::SetAndroidObjects(GetJVM(), context);
1153 factory_static_initialized = true; 1154 factory_static_initialized = true;
1154 } 1155 }
1155 return !failure; 1156 return !failure;
1156 } 1157 }
1157 1158
1158 JOW(void, PeerConnectionFactory_initializeFieldTrials)( 1159 JOW(void, PeerConnectionFactory_initializeFieldTrials)(
1159 JNIEnv* jni, jclass, jstring j_trials_init_string) { 1160 JNIEnv* jni, jclass, jstring j_trials_init_string) {
1160 field_trials_init_string = NULL; 1161 field_trials_init_string = nullptr;
1161 if (j_trials_init_string != NULL) { 1162 if (j_trials_init_string != nullptr) {
1162 const char* init_string = 1163 const char* init_string =
1163 jni->GetStringUTFChars(j_trials_init_string, NULL); 1164 jni->GetStringUTFChars(j_trials_init_string, nullptr);
1164 int init_string_length = jni->GetStringUTFLength(j_trials_init_string); 1165 int init_string_length = jni->GetStringUTFLength(j_trials_init_string);
1165 field_trials_init_string = new char[init_string_length + 1]; 1166 field_trials_init_string = new char[init_string_length + 1];
1166 rtc::strcpyn(field_trials_init_string, init_string_length + 1, init_string); 1167 rtc::strcpyn(field_trials_init_string, init_string_length + 1, init_string);
1167 jni->ReleaseStringUTFChars(j_trials_init_string, init_string); 1168 jni->ReleaseStringUTFChars(j_trials_init_string, init_string);
1168 LOG(LS_INFO) << "initializeFieldTrials: " << field_trials_init_string; 1169 LOG(LS_INFO) << "initializeFieldTrials: " << field_trials_init_string;
1169 } 1170 }
1170 webrtc::field_trial::InitFieldTrialsFromString(field_trials_init_string); 1171 webrtc::field_trial::InitFieldTrialsFromString(field_trials_init_string);
1171 } 1172 }
1172 1173
1173 JOW(void, PeerConnectionFactory_initializeInternalTracer)(JNIEnv* jni, jclass) { 1174 JOW(void, PeerConnectionFactory_initializeInternalTracer)(JNIEnv* jni, jclass) {
1174 rtc::tracing::SetupInternalTracer(); 1175 rtc::tracing::SetupInternalTracer();
1175 } 1176 }
1176 1177
1177 JOW(jstring, PeerConnectionFactory_nativeFieldTrialsFindFullName) 1178 JOW(jstring, PeerConnectionFactory_nativeFieldTrialsFindFullName)
1178 (JNIEnv* jni, jclass, jstring j_name) { 1179 (JNIEnv* jni, jclass, jstring j_name) {
1179 return JavaStringFromStdString( 1180 return JavaStringFromStdString(
1180 jni, webrtc::field_trial::FindFullName(JavaToStdString(jni, j_name))); 1181 jni, webrtc::field_trial::FindFullName(JavaToStdString(jni, j_name)));
1181 } 1182 }
1182 1183
1183 JOW(jboolean, PeerConnectionFactory_startInternalTracingCapture)( 1184 JOW(jboolean, PeerConnectionFactory_startInternalTracingCapture)(
1184 JNIEnv* jni, jclass, jstring j_event_tracing_filename) { 1185 JNIEnv* jni, jclass, jstring j_event_tracing_filename) {
1185 if (!j_event_tracing_filename) 1186 if (!j_event_tracing_filename)
1186 return false; 1187 return false;
1187 1188
1188 const char* init_string = 1189 const char* init_string =
1189 jni->GetStringUTFChars(j_event_tracing_filename, NULL); 1190 jni->GetStringUTFChars(j_event_tracing_filename, nullptr);
1190 LOG(LS_INFO) << "Starting internal tracing to: " << init_string; 1191 LOG(LS_INFO) << "Starting internal tracing to: " << init_string;
1191 bool ret = rtc::tracing::StartInternalCapture(init_string); 1192 bool ret = rtc::tracing::StartInternalCapture(init_string);
1192 jni->ReleaseStringUTFChars(j_event_tracing_filename, init_string); 1193 jni->ReleaseStringUTFChars(j_event_tracing_filename, init_string);
1193 return ret; 1194 return ret;
1194 } 1195 }
1195 1196
1196 JOW(void, PeerConnectionFactory_stopInternalTracingCapture)( 1197 JOW(void, PeerConnectionFactory_stopInternalTracingCapture)(
1197 JNIEnv* jni, jclass) { 1198 JNIEnv* jni, jclass) {
1198 rtc::tracing::StopInternalCapture(); 1199 rtc::tracing::StopInternalCapture();
1199 } 1200 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 std::unique_ptr<Thread> network_thread = 1331 std::unique_ptr<Thread> network_thread =
1331 rtc::Thread::CreateWithSocketServer(); 1332 rtc::Thread::CreateWithSocketServer();
1332 network_thread->SetName("network_thread", nullptr); 1333 network_thread->SetName("network_thread", nullptr);
1333 RTC_CHECK(network_thread->Start()) << "Failed to start thread"; 1334 RTC_CHECK(network_thread->Start()) << "Failed to start thread";
1334 1335
1335 std::unique_ptr<Thread> worker_thread = rtc::Thread::Create(); 1336 std::unique_ptr<Thread> worker_thread = rtc::Thread::Create();
1336 worker_thread->SetName("worker_thread", nullptr); 1337 worker_thread->SetName("worker_thread", nullptr);
1337 RTC_CHECK(worker_thread->Start()) << "Failed to start thread"; 1338 RTC_CHECK(worker_thread->Start()) << "Failed to start thread";
1338 1339
1339 std::unique_ptr<Thread> signaling_thread = rtc::Thread::Create(); 1340 std::unique_ptr<Thread> signaling_thread = rtc::Thread::Create();
1340 signaling_thread->SetName("signaling_thread", NULL); 1341 signaling_thread->SetName("signaling_thread", nullptr);
1341 RTC_CHECK(signaling_thread->Start()) << "Failed to start thread"; 1342 RTC_CHECK(signaling_thread->Start()) << "Failed to start thread";
1342 1343
1343 WebRtcVideoEncoderFactory* encoder_factory = nullptr; 1344 WebRtcVideoEncoderFactory* encoder_factory = nullptr;
1344 WebRtcVideoDecoderFactory* decoder_factory = nullptr; 1345 WebRtcVideoDecoderFactory* decoder_factory = nullptr;
1345 rtc::NetworkMonitorFactory* network_monitor_factory = nullptr; 1346 rtc::NetworkMonitorFactory* network_monitor_factory = nullptr;
1346 1347
1347 PeerConnectionFactoryInterface::Options options; 1348 PeerConnectionFactoryInterface::Options options;
1348 bool has_options = joptions != NULL; 1349 bool has_options = joptions != nullptr;
1349 if (has_options) { 1350 if (has_options) {
1350 options = ParseOptionsFromJava(jni, joptions); 1351 options = ParseOptionsFromJava(jni, joptions);
1351 } 1352 }
1352 1353
1353 if (video_hw_acceleration_enabled) { 1354 if (video_hw_acceleration_enabled) {
1354 encoder_factory = new MediaCodecVideoEncoderFactory(); 1355 encoder_factory = new MediaCodecVideoEncoderFactory();
1355 decoder_factory = new MediaCodecVideoDecoderFactory(); 1356 decoder_factory = new MediaCodecVideoDecoderFactory();
1356 } 1357 }
1357 // Do not create network_monitor_factory only if the options are 1358 // Do not create network_monitor_factory only if the options are
1358 // provided and disable_network_monitor therein is set to true. 1359 // provided and disable_network_monitor therein is set to true.
(...skipping 17 matching lines...) Expand all
1376 std::move(network_thread), std::move(worker_thread), 1377 std::move(network_thread), std::move(worker_thread),
1377 std::move(signaling_thread), encoder_factory, decoder_factory, 1378 std::move(signaling_thread), encoder_factory, decoder_factory,
1378 network_monitor_factory, factory.release()); 1379 network_monitor_factory, factory.release());
1379 owned_factory->InvokeJavaCallbacksOnFactoryThreads(); 1380 owned_factory->InvokeJavaCallbacksOnFactoryThreads();
1380 return jlongFromPointer(owned_factory); 1381 return jlongFromPointer(owned_factory);
1381 } 1382 }
1382 1383
1383 JOW(void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv*, jclass, jlong j_p) { 1384 JOW(void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv*, jclass, jlong j_p) {
1384 delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p); 1385 delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
1385 if (field_trials_init_string) { 1386 if (field_trials_init_string) {
1386 webrtc::field_trial::InitFieldTrialsFromString(NULL); 1387 webrtc::field_trial::InitFieldTrialsFromString(nullptr);
1387 delete field_trials_init_string; 1388 delete field_trials_init_string;
1388 field_trials_init_string = NULL; 1389 field_trials_init_string = nullptr;
1389 } 1390 }
1390 webrtc::Trace::ReturnTrace(); 1391 webrtc::Trace::ReturnTrace();
1391 } 1392 }
1392 1393
1393 static PeerConnectionFactoryInterface* factoryFromJava(jlong j_p) { 1394 static PeerConnectionFactoryInterface* factoryFromJava(jlong j_p) {
1394 return reinterpret_cast<OwnedFactoryAndThreads*>(j_p)->factory(); 1395 return reinterpret_cast<OwnedFactoryAndThreads*>(j_p)->factory();
1395 } 1396 }
1396 1397
1397 JOW(void, PeerConnectionFactory_nativeThreadsCallbacks)( 1398 JOW(void, PeerConnectionFactory_nativeThreadsCallbacks)(
1398 JNIEnv*, jclass, jlong j_p) { 1399 JNIEnv*, jclass, jlong j_p) {
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1872 jfieldID native_pc_id = GetFieldID(jni, 1873 jfieldID native_pc_id = GetFieldID(jni,
1873 GetObjectClass(jni, j_pc), "nativePeerConnection", "J"); 1874 GetObjectClass(jni, j_pc), "nativePeerConnection", "J");
1874 jlong j_p = GetLongField(jni, j_pc, native_pc_id); 1875 jlong j_p = GetLongField(jni, j_pc, native_pc_id);
1875 return rtc::scoped_refptr<PeerConnectionInterface>( 1876 return rtc::scoped_refptr<PeerConnectionInterface>(
1876 reinterpret_cast<PeerConnectionInterface*>(j_p)); 1877 reinterpret_cast<PeerConnectionInterface*>(j_p));
1877 } 1878 }
1878 1879
1879 JOW(jobject, PeerConnection_getLocalDescription)(JNIEnv* jni, jobject j_pc) { 1880 JOW(jobject, PeerConnection_getLocalDescription)(JNIEnv* jni, jobject j_pc) {
1880 const SessionDescriptionInterface* sdp = 1881 const SessionDescriptionInterface* sdp =
1881 ExtractNativePC(jni, j_pc)->local_description(); 1882 ExtractNativePC(jni, j_pc)->local_description();
1882 return sdp ? JavaSdpFromNativeSdp(jni, sdp) : NULL; 1883 return sdp ? JavaSdpFromNativeSdp(jni, sdp) : nullptr;
1883 } 1884 }
1884 1885
1885 JOW(jobject, PeerConnection_getRemoteDescription)(JNIEnv* jni, jobject j_pc) { 1886 JOW(jobject, PeerConnection_getRemoteDescription)(JNIEnv* jni, jobject j_pc) {
1886 const SessionDescriptionInterface* sdp = 1887 const SessionDescriptionInterface* sdp =
1887 ExtractNativePC(jni, j_pc)->remote_description(); 1888 ExtractNativePC(jni, j_pc)->remote_description();
1888 return sdp ? JavaSdpFromNativeSdp(jni, sdp) : NULL; 1889 return sdp ? JavaSdpFromNativeSdp(jni, sdp) : nullptr;
1889 } 1890 }
1890 1891
1891 JOW(jobject, PeerConnection_createDataChannel)( 1892 JOW(jobject, PeerConnection_createDataChannel)(
1892 JNIEnv* jni, jobject j_pc, jstring j_label, jobject j_init) { 1893 JNIEnv* jni, jobject j_pc, jstring j_label, jobject j_init) {
1893 DataChannelInit init = JavaDataChannelInitToNative(jni, j_init); 1894 DataChannelInit init = JavaDataChannelInitToNative(jni, j_init);
1894 rtc::scoped_refptr<DataChannelInterface> channel( 1895 rtc::scoped_refptr<DataChannelInterface> channel(
1895 ExtractNativePC(jni, j_pc)->CreateDataChannel( 1896 ExtractNativePC(jni, j_pc)->CreateDataChannel(
1896 JavaToStdString(jni, j_label), &init)); 1897 JavaToStdString(jni, j_label), &init));
1897 // Mustn't pass channel.get() directly through NewObject to avoid reading its 1898 // Mustn't pass channel.get() directly through NewObject to avoid reading its
1898 // vararg parameter as 64-bit and reading memory that doesn't belong to the 1899 // vararg parameter as 64-bit and reading memory that doesn't belong to the
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 jstring j_type_string = (jstring)jni->CallObjectMethod( 1948 jstring j_type_string = (jstring)jni->CallObjectMethod(
1948 j_type, j_canonical_form_id); 1949 j_type, j_canonical_form_id);
1949 CHECK_EXCEPTION(jni) << "error during CallObjectMethod"; 1950 CHECK_EXCEPTION(jni) << "error during CallObjectMethod";
1950 std::string std_type = JavaToStdString(jni, j_type_string); 1951 std::string std_type = JavaToStdString(jni, j_type_string);
1951 1952
1952 jfieldID j_description_id = GetFieldID( 1953 jfieldID j_description_id = GetFieldID(
1953 jni, GetObjectClass(jni, j_sdp), "description", "Ljava/lang/String;"); 1954 jni, GetObjectClass(jni, j_sdp), "description", "Ljava/lang/String;");
1954 jstring j_description = (jstring)GetObjectField(jni, j_sdp, j_description_id); 1955 jstring j_description = (jstring)GetObjectField(jni, j_sdp, j_description_id);
1955 std::string std_description = JavaToStdString(jni, j_description); 1956 std::string std_description = JavaToStdString(jni, j_description);
1956 1957
1957 return webrtc::CreateSessionDescription( 1958 return webrtc::CreateSessionDescription(std_type, std_description, nullptr);
1958 std_type, std_description, NULL);
1959 } 1959 }
1960 1960
1961 JOW(void, PeerConnection_setLocalDescription)( 1961 JOW(void, PeerConnection_setLocalDescription)(
1962 JNIEnv* jni, jobject j_pc, 1962 JNIEnv* jni, jobject j_pc,
1963 jobject j_observer, jobject j_sdp) { 1963 jobject j_observer, jobject j_sdp) {
1964 rtc::scoped_refptr<SetSdpObserverWrapper> observer( 1964 rtc::scoped_refptr<SetSdpObserverWrapper> observer(
1965 new rtc::RefCountedObject<SetSdpObserverWrapper>( 1965 new rtc::RefCountedObject<SetSdpObserverWrapper>(jni, j_observer,
1966 jni, j_observer, reinterpret_cast<ConstraintsWrapper*>(NULL))); 1966 nullptr));
1967 ExtractNativePC(jni, j_pc)->SetLocalDescription( 1967 ExtractNativePC(jni, j_pc)->SetLocalDescription(
1968 observer, JavaSdpToNativeSdp(jni, j_sdp)); 1968 observer, JavaSdpToNativeSdp(jni, j_sdp));
1969 } 1969 }
1970 1970
1971 JOW(void, PeerConnection_setRemoteDescription)( 1971 JOW(void, PeerConnection_setRemoteDescription)(
1972 JNIEnv* jni, jobject j_pc, 1972 JNIEnv* jni, jobject j_pc,
1973 jobject j_observer, jobject j_sdp) { 1973 jobject j_observer, jobject j_sdp) {
1974 rtc::scoped_refptr<SetSdpObserverWrapper> observer( 1974 rtc::scoped_refptr<SetSdpObserverWrapper> observer(
1975 new rtc::RefCountedObject<SetSdpObserverWrapper>( 1975 new rtc::RefCountedObject<SetSdpObserverWrapper>(jni, j_observer,
1976 jni, j_observer, reinterpret_cast<ConstraintsWrapper*>(NULL))); 1976 nullptr));
1977 ExtractNativePC(jni, j_pc)->SetRemoteDescription( 1977 ExtractNativePC(jni, j_pc)->SetRemoteDescription(
1978 observer, JavaSdpToNativeSdp(jni, j_sdp)); 1978 observer, JavaSdpToNativeSdp(jni, j_sdp));
1979 } 1979 }
1980 1980
1981 JOW(jboolean, PeerConnection_nativeSetConfiguration)( 1981 JOW(jboolean, PeerConnection_nativeSetConfiguration)(
1982 JNIEnv* jni, jobject j_pc, jobject j_rtc_config, jlong native_observer) { 1982 JNIEnv* jni, jobject j_pc, jobject j_rtc_config, jlong native_observer) {
1983 // Need to merge constraints into RTCConfiguration again, which are stored 1983 // Need to merge constraints into RTCConfiguration again, which are stored
1984 // in the observer object. 1984 // in the observer object.
1985 PCOJava* observer = reinterpret_cast<PCOJava*>(native_observer); 1985 PCOJava* observer = reinterpret_cast<PCOJava*>(native_observer);
1986 PeerConnectionInterface::RTCConfiguration rtc_config( 1986 PeerConnectionInterface::RTCConfiguration rtc_config(
1987 PeerConnectionInterface::RTCConfigurationType::kAggressive); 1987 PeerConnectionInterface::RTCConfigurationType::kAggressive);
1988 JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config); 1988 JavaRTCConfigurationToJsepRTCConfiguration(jni, j_rtc_config, &rtc_config);
1989 CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config); 1989 CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
1990 return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config); 1990 return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config);
1991 } 1991 }
1992 1992
1993 JOW(jboolean, PeerConnection_nativeAddIceCandidate)( 1993 JOW(jboolean, PeerConnection_nativeAddIceCandidate)(
1994 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid, 1994 JNIEnv* jni, jobject j_pc, jstring j_sdp_mid,
1995 jint j_sdp_mline_index, jstring j_candidate_sdp) { 1995 jint j_sdp_mline_index, jstring j_candidate_sdp) {
1996 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid); 1996 std::string sdp_mid = JavaToStdString(jni, j_sdp_mid);
1997 std::string sdp = JavaToStdString(jni, j_candidate_sdp); 1997 std::string sdp = JavaToStdString(jni, j_candidate_sdp);
1998 std::unique_ptr<IceCandidateInterface> candidate( 1998 std::unique_ptr<IceCandidateInterface> candidate(
1999 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL)); 1999 webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, nullptr));
2000 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get()); 2000 return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get());
2001 } 2001 }
2002 2002
2003 static cricket::Candidate GetCandidateFromJava(JNIEnv* jni, 2003 static cricket::Candidate GetCandidateFromJava(JNIEnv* jni,
2004 jobject j_candidate) { 2004 jobject j_candidate) {
2005 jclass j_candidate_class = GetObjectClass(jni, j_candidate); 2005 jclass j_candidate_class = GetObjectClass(jni, j_candidate);
2006 jfieldID j_sdp_mid_id = 2006 jfieldID j_sdp_mid_id =
2007 GetFieldID(jni, j_candidate_class, "sdpMid", "Ljava/lang/String;"); 2007 GetFieldID(jni, j_candidate_class, "sdpMid", "Ljava/lang/String;");
2008 std::string sdp_mid = 2008 std::string sdp_mid =
2009 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_mid_id)); 2009 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_mid_id));
2010 jfieldID j_sdp_id = 2010 jfieldID j_sdp_id =
2011 GetFieldID(jni, j_candidate_class, "sdp", "Ljava/lang/String;"); 2011 GetFieldID(jni, j_candidate_class, "sdp", "Ljava/lang/String;");
2012 std::string sdp = 2012 std::string sdp =
2013 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_id)); 2013 JavaToStdString(jni, GetStringField(jni, j_candidate, j_sdp_id));
2014 cricket::Candidate candidate; 2014 cricket::Candidate candidate;
2015 if (!webrtc::SdpDeserializeCandidate(sdp_mid, sdp, &candidate, NULL)) { 2015 if (!webrtc::SdpDeserializeCandidate(sdp_mid, sdp, &candidate, nullptr)) {
2016 LOG(LS_ERROR) << "SdpDescrializeCandidate failed with sdp " << sdp; 2016 LOG(LS_ERROR) << "SdpDescrializeCandidate failed with sdp " << sdp;
2017 } 2017 }
2018 return candidate; 2018 return candidate;
2019 } 2019 }
2020 2020
2021 JOW(jboolean, PeerConnection_nativeRemoveIceCandidates) 2021 JOW(jboolean, PeerConnection_nativeRemoveIceCandidates)
2022 (JNIEnv* jni, jobject j_pc, jobjectArray j_candidates) { 2022 (JNIEnv* jni, jobject j_pc, jobjectArray j_candidates) {
2023 std::vector<cricket::Candidate> candidates; 2023 std::vector<cricket::Candidate> candidates;
2024 size_t num_candidates = jni->GetArrayLength(j_candidates); 2024 size_t num_candidates = jni->GetArrayLength(j_candidates);
2025 for (size_t i = 0; i < num_candidates; ++i) { 2025 for (size_t i = 0; i < num_candidates; ++i) {
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
2725 return reinterpret_cast<DtmfSenderInterface*>(j_dtmf_sender_pointer) 2725 return reinterpret_cast<DtmfSenderInterface*>(j_dtmf_sender_pointer)
2726 ->inter_tone_gap(); 2726 ->inter_tone_gap();
2727 } 2727 }
2728 2728
2729 JOW(void, DtmfSender_free) 2729 JOW(void, DtmfSender_free)
2730 (JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) { 2730 (JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
2731 reinterpret_cast<DtmfSenderInterface*>(j_dtmf_sender_pointer)->Release(); 2731 reinterpret_cast<DtmfSenderInterface*>(j_dtmf_sender_pointer)->Release();
2732 } 2732 }
2733 2733
2734 } // namespace webrtc_jni 2734 } // namespace webrtc_jni
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698