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

Unified Diff: webrtc/sdk/android/src/jni/pc/peerconnectionfactory_jni.cc

Issue 2989323002: Revert of Break peerconnection_jni.cc into multiple files, in "pc" directory. (Closed)
Patch Set: Created 3 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/sdk/android/src/jni/pc/peerconnectionfactory_jni.cc
diff --git a/webrtc/sdk/android/src/jni/pc/peerconnectionfactory_jni.cc b/webrtc/sdk/android/src/jni/pc/peerconnectionfactory_jni.cc
deleted file mode 100644
index f6c45e24fd863d6e03344000771dcfd556315798..0000000000000000000000000000000000000000
--- a/webrtc/sdk/android/src/jni/pc/peerconnectionfactory_jni.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright 2017 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <memory>
-#include <utility>
-
-#include "webrtc/api/peerconnectioninterface.h"
-#include "webrtc/media/base/mediaengine.h"
-#include "webrtc/modules/utility/include/jvm_android.h"
-#include "webrtc/rtc_base/event_tracer.h"
-#include "webrtc/rtc_base/stringutils.h"
-#include "webrtc/rtc_base/thread.h"
-#include "webrtc/sdk/android/src/jni/jni_helpers.h"
-#include "webrtc/sdk/android/src/jni/pc/androidnetworkmonitor_jni.h"
-#include "webrtc/sdk/android/src/jni/pc/audio_jni.h"
-#include "webrtc/sdk/android/src/jni/pc/java_native_conversion.h"
-#include "webrtc/sdk/android/src/jni/pc/media_jni.h"
-#include "webrtc/sdk/android/src/jni/pc/ownedfactoryandthreads.h"
-#include "webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h"
-#include "webrtc/sdk/android/src/jni/pc/video_jni.h"
-#include "webrtc/system_wrappers/include/field_trial.h"
-// Adding 'nogncheck' to disable the gn include headers check.
-// We don't want to depend on 'system_wrappers:field_trial_default' because
-// clients should be able to provide their own implementation.
-#include "webrtc/system_wrappers/include/field_trial_default.h" // nogncheck
-#include "webrtc/system_wrappers/include/trace.h"
-
-namespace webrtc_jni {
-
-// Note: Some of the video-specific PeerConnectionFactory methods are
-// implemented in "video_jni.cc". This is done so that if an application
-// doesn't need video support, it can just link with "null_video_jni.cc"
-// instead of "video_jni.cc", which doesn't bring in the video-specific
-// dependencies.
-
-// Field trials initialization string
-static char* field_trials_init_string = nullptr;
-
-// Set in PeerConnectionFactory_initializeAndroidGlobals().
-static bool factory_static_initialized = false;
-static bool video_hw_acceleration_enabled = true;
-
-JOW(jlong, PeerConnectionFactory_nativeCreateObserver)
-(JNIEnv* jni, jclass, jobject j_observer) {
- return (jlong) new PeerConnectionObserverJni(jni, j_observer);
-}
-
-JOW(void, PeerConnectionFactory_nativeInitializeAndroidGlobals)
-(JNIEnv* jni, jclass, jobject context, jboolean video_hw_acceleration) {
- video_hw_acceleration_enabled = video_hw_acceleration;
- if (!factory_static_initialized) {
- webrtc::JVM::Initialize(GetJVM());
- factory_static_initialized = true;
- }
-}
-
-JOW(void, PeerConnectionFactory_initializeFieldTrials)
-(JNIEnv* jni, jclass, jstring j_trials_init_string) {
- field_trials_init_string = NULL;
- if (j_trials_init_string != NULL) {
- const char* init_string =
- jni->GetStringUTFChars(j_trials_init_string, NULL);
- int init_string_length = jni->GetStringUTFLength(j_trials_init_string);
- field_trials_init_string = new char[init_string_length + 1];
- rtc::strcpyn(field_trials_init_string, init_string_length + 1, init_string);
- jni->ReleaseStringUTFChars(j_trials_init_string, init_string);
- LOG(LS_INFO) << "initializeFieldTrials: " << field_trials_init_string;
- }
- webrtc::field_trial::InitFieldTrialsFromString(field_trials_init_string);
-}
-
-JOW(void, PeerConnectionFactory_initializeInternalTracer)(JNIEnv* jni, jclass) {
- rtc::tracing::SetupInternalTracer();
-}
-
-JOW(jstring, PeerConnectionFactory_nativeFieldTrialsFindFullName)
-(JNIEnv* jni, jclass, jstring j_name) {
- return JavaStringFromStdString(
- jni, webrtc::field_trial::FindFullName(JavaToStdString(jni, j_name)));
-}
-
-JOW(jboolean, PeerConnectionFactory_startInternalTracingCapture)
-(JNIEnv* jni, jclass, jstring j_event_tracing_filename) {
- if (!j_event_tracing_filename)
- return false;
-
- const char* init_string =
- jni->GetStringUTFChars(j_event_tracing_filename, NULL);
- LOG(LS_INFO) << "Starting internal tracing to: " << init_string;
- bool ret = rtc::tracing::StartInternalCapture(init_string);
- jni->ReleaseStringUTFChars(j_event_tracing_filename, init_string);
- return ret;
-}
-
-JOW(void, PeerConnectionFactory_stopInternalTracingCapture)
-(JNIEnv* jni, jclass) {
- rtc::tracing::StopInternalCapture();
-}
-
-JOW(void, PeerConnectionFactory_shutdownInternalTracer)(JNIEnv* jni, jclass) {
- rtc::tracing::ShutdownInternalTracer();
-}
-
-JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)
-(JNIEnv* jni,
- jclass,
- jobject joptions,
- jobject jencoder_factory,
- jobject jdecoder_factory) {
- // talk/ assumes pretty widely that the current Thread is ThreadManager'd, but
- // ThreadManager only WrapCurrentThread()s the thread where it is first
- // created. Since the semantics around when auto-wrapping happens in
- // webrtc/rtc_base/ are convoluted, we simply wrap here to avoid having to
- // think about ramifications of auto-wrapping there.
- rtc::ThreadManager::Instance()->WrapCurrentThread();
- webrtc::Trace::CreateTrace();
-
- std::unique_ptr<rtc::Thread> network_thread =
- rtc::Thread::CreateWithSocketServer();
- network_thread->SetName("network_thread", nullptr);
- RTC_CHECK(network_thread->Start()) << "Failed to start thread";
-
- std::unique_ptr<rtc::Thread> worker_thread = rtc::Thread::Create();
- worker_thread->SetName("worker_thread", nullptr);
- RTC_CHECK(worker_thread->Start()) << "Failed to start thread";
-
- std::unique_ptr<rtc::Thread> signaling_thread = rtc::Thread::Create();
- signaling_thread->SetName("signaling_thread", NULL);
- RTC_CHECK(signaling_thread->Start()) << "Failed to start thread";
-
- cricket::WebRtcVideoEncoderFactory* video_encoder_factory = nullptr;
- cricket::WebRtcVideoDecoderFactory* video_decoder_factory = nullptr;
- rtc::NetworkMonitorFactory* network_monitor_factory = nullptr;
- auto audio_encoder_factory = CreateAudioEncoderFactory();
- auto audio_decoder_factory = CreateAudioDecoderFactory();
-
- webrtc::PeerConnectionFactoryInterface::Options options;
- bool has_options = joptions != NULL;
- if (has_options) {
- options = JavaToNativePeerConnectionFactoryOptions(jni, joptions);
- }
-
- if (video_hw_acceleration_enabled) {
- video_encoder_factory = CreateVideoEncoderFactory(jni, jencoder_factory);
- video_decoder_factory = CreateVideoDecoderFactory(jni, jdecoder_factory);
- }
- // Do not create network_monitor_factory only if the options are
- // provided and disable_network_monitor therein is set to true.
- if (!(has_options && options.disable_network_monitor)) {
- network_monitor_factory = new AndroidNetworkMonitorFactory();
- rtc::NetworkMonitorFactory::SetFactory(network_monitor_factory);
- }
-
- webrtc::AudioDeviceModule* adm = nullptr;
- rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer = nullptr;
- std::unique_ptr<webrtc::CallFactoryInterface> call_factory(
- CreateCallFactory());
- std::unique_ptr<webrtc::RtcEventLogFactoryInterface> rtc_event_log_factory(
- CreateRtcEventLogFactory());
- std::unique_ptr<cricket::MediaEngineInterface> media_engine(CreateMediaEngine(
- adm, audio_encoder_factory, audio_decoder_factory, video_encoder_factory,
- video_decoder_factory, audio_mixer));
-
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- CreateModularPeerConnectionFactory(
- network_thread.get(), worker_thread.get(), signaling_thread.get(),
- adm, audio_encoder_factory, audio_decoder_factory,
- video_encoder_factory, video_decoder_factory, audio_mixer,
- std::move(media_engine), std::move(call_factory),
- std::move(rtc_event_log_factory)));
- RTC_CHECK(factory) << "Failed to create the peer connection factory; "
- << "WebRTC/libjingle init likely failed on this device";
- // TODO(honghaiz): Maybe put the options as the argument of
- // CreatePeerConnectionFactory.
- if (has_options) {
- factory->SetOptions(options);
- }
- OwnedFactoryAndThreads* owned_factory = new OwnedFactoryAndThreads(
- std::move(network_thread), std::move(worker_thread),
- std::move(signaling_thread), video_encoder_factory, video_decoder_factory,
- network_monitor_factory, factory.release());
- owned_factory->InvokeJavaCallbacksOnFactoryThreads();
- return jlongFromPointer(owned_factory);
-}
-
-JOW(void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv*, jclass, jlong j_p) {
- delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
- if (field_trials_init_string) {
- webrtc::field_trial::InitFieldTrialsFromString(NULL);
- delete field_trials_init_string;
- field_trials_init_string = NULL;
- }
- webrtc::Trace::ReturnTrace();
-}
-
-JOW(void, PeerConnectionFactory_nativeThreadsCallbacks)
-(JNIEnv*, jclass, jlong j_p) {
- OwnedFactoryAndThreads* factory =
- reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
- factory->InvokeJavaCallbacksOnFactoryThreads();
-}
-
-JOW(jlong, PeerConnectionFactory_nativeCreateLocalMediaStream)
-(JNIEnv* jni, jclass, jlong native_factory, jstring label) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- rtc::scoped_refptr<webrtc::MediaStreamInterface> stream(
- factory->CreateLocalMediaStream(JavaToStdString(jni, label)));
- return (jlong)stream.release();
-}
-
-JOW(jlong, PeerConnectionFactory_nativeCreateAudioSource)
-(JNIEnv* jni, jclass, jlong native_factory, jobject j_constraints) {
- std::unique_ptr<MediaConstraintsJni> constraints(
- new MediaConstraintsJni(jni, j_constraints));
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- cricket::AudioOptions options;
- CopyConstraintsIntoAudioOptions(constraints.get(), &options);
- rtc::scoped_refptr<webrtc::AudioSourceInterface> source(
- factory->CreateAudioSource(options));
- return (jlong)source.release();
-}
-
-JOW(jlong, PeerConnectionFactory_nativeCreateAudioTrack)
-(JNIEnv* jni, jclass, jlong native_factory, jstring id, jlong native_source) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- rtc::scoped_refptr<webrtc::AudioTrackInterface> track(
- factory->CreateAudioTrack(
- JavaToStdString(jni, id),
- reinterpret_cast<webrtc::AudioSourceInterface*>(native_source)));
- return (jlong)track.release();
-}
-
-JOW(jboolean, PeerConnectionFactory_nativeStartAecDump)
-(JNIEnv* jni,
- jclass,
- jlong native_factory,
- jint file,
- jint filesize_limit_bytes) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- return factory->StartAecDump(file, filesize_limit_bytes);
-}
-
-JOW(void, PeerConnectionFactory_nativeStopAecDump)
-(JNIEnv* jni, jclass, jlong native_factory) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- factory->StopAecDump();
-}
-
-JOW(void, PeerConnectionFactory_nativeSetOptions)
-(JNIEnv* jni, jclass, jlong native_factory, jobject options) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
- factoryFromJava(native_factory));
- webrtc::PeerConnectionFactoryInterface::Options options_to_set =
- JavaToNativePeerConnectionFactoryOptions(jni, options);
- factory->SetOptions(options_to_set);
-
- if (options_to_set.disable_network_monitor) {
- OwnedFactoryAndThreads* owner =
- reinterpret_cast<OwnedFactoryAndThreads*>(native_factory);
- if (owner->network_monitor_factory()) {
- rtc::NetworkMonitorFactory::ReleaseFactory(
- owner->network_monitor_factory());
- owner->clear_network_monitor_factory();
- }
- }
-}
-
-JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnection)
-(JNIEnv* jni,
- jclass,
- jlong factory,
- jobject j_rtc_config,
- jobject j_constraints,
- jlong observer_p) {
- rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> f(
- reinterpret_cast<webrtc::PeerConnectionFactoryInterface*>(
- factoryFromJava(factory)));
-
- webrtc::PeerConnectionInterface::RTCConfiguration rtc_config(
- webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive);
- JavaToNativeRTCConfiguration(jni, j_rtc_config, &rtc_config);
-
- jclass j_rtc_config_class = GetObjectClass(jni, j_rtc_config);
- jfieldID j_key_type_id = GetFieldID(jni, j_rtc_config_class, "keyType",
- "Lorg/webrtc/PeerConnection$KeyType;");
- jobject j_key_type = GetObjectField(jni, j_rtc_config, j_key_type_id);
-
- // Generate non-default certificate.
- rtc::KeyType key_type = JavaToNativeKeyType(jni, j_key_type);
- if (key_type != rtc::KT_DEFAULT) {
- rtc::scoped_refptr<rtc::RTCCertificate> certificate =
- rtc::RTCCertificateGenerator::GenerateCertificate(
- rtc::KeyParams(key_type), rtc::Optional<uint64_t>());
- if (!certificate) {
- LOG(LS_ERROR) << "Failed to generate certificate. KeyType: " << key_type;
- return 0;
- }
- rtc_config.certificates.push_back(certificate);
- }
-
- PeerConnectionObserverJni* observer =
- reinterpret_cast<PeerConnectionObserverJni*>(observer_p);
- observer->SetConstraints(new MediaConstraintsJni(jni, j_constraints));
- CopyConstraintsIntoRtcConfiguration(observer->constraints(), &rtc_config);
- rtc::scoped_refptr<webrtc::PeerConnectionInterface> pc(
- f->CreatePeerConnection(rtc_config, nullptr, nullptr, observer));
- return (jlong)pc.release();
-}
-
-} // namespace webrtc_jni
« no previous file with comments | « webrtc/sdk/android/src/jni/pc/peerconnection_jni.cc ('k') | webrtc/sdk/android/src/jni/pc/peerconnectionobserver_jni.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698