diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java index 5b725fa22c..cfb55d39b6 100644 --- a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java +++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java @@ -471,10 +471,8 @@ public class PeerConnectionClient { }); // Create peer connection factory. - if (!PeerConnectionFactory.initializeAndroidGlobals( - context, true, true, peerConnectionParameters.videoCodecHwAcceleration)) { - events.onPeerConnectionError("Failed to initializeAndroidGlobals"); - } + PeerConnectionFactory.initializeAndroidGlobals( + context, peerConnectionParameters.videoCodecHwAcceleration); if (options != null) { Log.d(TAG, "Factory networkIgnoreMask option: " + options.networkIgnoreMask); } diff --git a/webrtc/pc/test/DEPS b/webrtc/pc/test/DEPS index a814b152f2..17d20c1be9 100644 --- a/webrtc/pc/test/DEPS +++ b/webrtc/pc/test/DEPS @@ -2,4 +2,5 @@ include_rules = [ # Allow include of Chrome base/android to allow inclusion of headers needed # for accessing the JVM and Application context in gtest. "+base/android", + "+webrtc/modules/utility/include/jvm_android.h", ] diff --git a/webrtc/pc/test/androidtestinitializer.cc b/webrtc/pc/test/androidtestinitializer.cc index c95d7bcdd8..3f2ebd4c3b 100644 --- a/webrtc/pc/test/androidtestinitializer.cc +++ b/webrtc/pc/test/androidtestinitializer.cc @@ -25,7 +25,7 @@ RTC_POP_IGNORING_WUNDEF() #include "webrtc/base/checks.h" #include "webrtc/base/ssladapter.h" -#include "webrtc/voice_engine/include/voe_base.h" +#include "webrtc/modules/utility/include/jvm_android.h" namespace webrtc { @@ -45,7 +45,7 @@ void EnsureInitializedOnce() { RTC_CHECK(rtc::InitializeSSL()) << "Failed to InitializeSSL()"; - webrtc::VoiceEngine::SetAndroidObjects(jvm, context); + webrtc::JVM::Initialize(jvm, context); } } // anonymous namespace diff --git a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java index 18cf8f796a..ed3546f394 100644 --- a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java +++ b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java @@ -50,16 +50,18 @@ public class PeerConnectionFactory { public boolean disableNetworkMonitor; } - // |context| is an android.content.Context object, but we keep it untyped here - // to allow building on non-Android platforms. - // Callers may specify either |initializeAudio| or |initializeVideo| as false - // to skip initializing the respective engine (and avoid the need for the - // respective permissions). - // |renderEGLContext| can be provided to suport HW video decoding to - // texture and will be used to create a shared EGL context on video - // decoding thread. - public static native boolean initializeAndroidGlobals(Object context, boolean initializeAudio, - boolean initializeVideo, boolean videoHwAcceleration); + // Must be called at least once before creating a PeerConnectionFactory + // (for example, at application startup time). + public static native void initializeAndroidGlobals( + android.content.Context context, boolean videoHwAcceleration); + + // Older signature of initializeAndroidGlobals. The extra parameters are now meaningless. + @Deprecated + public static boolean initializeAndroidGlobals(android.content.Context context, + boolean initializeAudio, boolean initializeVideo, boolean videoHwAcceleration) { + initializeAndroidGlobals(context, videoHwAcceleration); + return true; + } // Field trial initialization. Must be called before PeerConnectionFactory // is created. @@ -90,6 +92,8 @@ public class PeerConnectionFactory { this(null); } + // Note: initializeAndroidGlobals must be called at least once before + // constructing a PeerConnectionFactory. public PeerConnectionFactory(Options options) { nativeFactory = nativeCreatePeerConnectionFactory(options); if (nativeFactory == 0) { diff --git a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java index f1e032fe2b..8f2babc049 100644 --- a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java +++ b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java @@ -326,8 +326,7 @@ class CameraVideoCapturerTestFixtures { private TestObjectFactory testObjectFactory; CameraVideoCapturerTestFixtures(TestObjectFactory testObjectFactory) { - PeerConnectionFactory.initializeAndroidGlobals( - testObjectFactory.getAppContext(), true, true, true); + PeerConnectionFactory.initializeAndroidGlobals(testObjectFactory.getAppContext(), true); this.peerConnectionFactory = new PeerConnectionFactory(null /* options */); this.testObjectFactory = testObjectFactory; diff --git a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java index e8d5e5bca3..e74ec93c72 100644 --- a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java +++ b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/EglRendererTest.java @@ -103,8 +103,8 @@ public class EglRendererTest { @Before public void setUp() throws Exception { - PeerConnectionFactory.initializeAndroidGlobals(InstrumentationRegistry.getTargetContext(), - true /* initializeAudio */, true /* initializeVideo */, true /* videoHwAcceleration */); + PeerConnectionFactory.initializeAndroidGlobals( + InstrumentationRegistry.getTargetContext(), true /* videoHwAcceleration */); eglRenderer = new EglRenderer("TestRenderer: "); eglRenderer.init(null /* sharedContext */, EglBase.CONFIG_RGBA, new GlRectDrawer()); oesTextureId = GlUtil.generateTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES); diff --git a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java index 8849edd2da..9d702033ea 100644 --- a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java +++ b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java @@ -48,8 +48,7 @@ public class PeerConnectionTest { @Before public void setUp() { - assertTrue(PeerConnectionFactory.initializeAndroidGlobals( - InstrumentationRegistry.getContext(), true, true, true)); + PeerConnectionFactory.initializeAndroidGlobals(InstrumentationRegistry.getContext(), true); } private static class ObserverExpectations diff --git a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java index f933815990..6faf723e03 100644 --- a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java +++ b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java @@ -26,7 +26,6 @@ public class WebRtcJniBootTest { @SmallTest public void testJniLoadsWithoutError() throws InterruptedException { PeerConnectionFactory.initializeAndroidGlobals(InstrumentationRegistry.getTargetContext(), - true /* initializeAudio */, true /* initializeVideo */, false /* videoCodecHwAcceleration */); PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); diff --git a/webrtc/sdk/android/src/jni/DEPS b/webrtc/sdk/android/src/jni/DEPS index 41dc28d2ff..12f35fd1b9 100644 --- a/webrtc/sdk/android/src/jni/DEPS +++ b/webrtc/sdk/android/src/jni/DEPS @@ -2,7 +2,7 @@ include_rules = [ "+third_party/libyuv", "+webrtc/common_video/h264/h264_bitstream_parser.h", "+webrtc/common_video/libyuv/include/webrtc_libyuv.h", + "+webrtc/modules/utility/include/jvm_android.h", "+webrtc/modules/video_coding/utility/vp8_header_parser.h", "+webrtc/pc", - "+webrtc/voice_engine/include/voe_base.h", ] diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc index 75b1bad202..d31b5d7f95 100644 --- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc +++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc @@ -63,6 +63,7 @@ #include "webrtc/media/base/videocapturer.h" #include "webrtc/media/engine/webrtcvideodecoderfactory.h" #include "webrtc/media/engine/webrtcvideoencoderfactory.h" +#include "webrtc/modules/utility/include/jvm_android.h" #include "webrtc/system_wrappers/include/field_trial.h" #include "webrtc/pc/webrtcsdp.h" #include "webrtc/sdk/android/src/jni/androidmediadecoder_jni.h" @@ -1131,25 +1132,19 @@ JOW(jlong, PeerConnectionFactory_nativeCreateObserver)( return (jlong)new PCOJava(jni, j_observer); } -JOW(jboolean, PeerConnectionFactory_initializeAndroidGlobals) +JOW(void, PeerConnectionFactory_initializeAndroidGlobals) (JNIEnv* jni, jclass, jobject context, - jboolean initialize_audio, - jboolean initialize_video, jboolean video_hw_acceleration) { - bool failure = false; video_hw_acceleration_enabled = video_hw_acceleration; AndroidNetworkMonitor::SetAndroidContext(jni, context); if (!factory_static_initialized) { RTC_DCHECK(j_application_context == nullptr); j_application_context = NewGlobalRef(jni, context); - - if (initialize_audio) - failure |= webrtc::VoiceEngine::SetAndroidObjects(GetJVM(), context); + webrtc::JVM::Initialize(GetJVM(), context); factory_static_initialized = true; } - return !failure; } JOW(void, PeerConnectionFactory_initializeFieldTrials)( diff --git a/webrtc/voice_engine/include/voe_base.h b/webrtc/voice_engine/include/voe_base.h index b8732129df..dec07d6409 100644 --- a/webrtc/voice_engine/include/voe_base.h +++ b/webrtc/voice_engine/include/voe_base.h @@ -85,10 +85,6 @@ class WEBRTC_DLLEXPORT VoiceEngine { // receives callbacks for generated trace messages. static int SetTraceCallback(TraceCallback* callback); -#if !defined(WEBRTC_CHROMIUM_BUILD) - static int SetAndroidObjects(void* javaVM, void* context); -#endif - static std::string GetVersionString(); protected: diff --git a/webrtc/voice_engine/voice_engine_impl.cc b/webrtc/voice_engine/voice_engine_impl.cc index 5b92d27313..ab2dc65e5b 100644 --- a/webrtc/voice_engine/voice_engine_impl.cc +++ b/webrtc/voice_engine/voice_engine_impl.cc @@ -12,7 +12,6 @@ #include "webrtc/modules/audio_device/android/audio_device_template.h" #include "webrtc/modules/audio_device/android/audio_record_jni.h" #include "webrtc/modules/audio_device/android/audio_track_jni.h" -#include "webrtc/modules/utility/include/jvm_android.h" #endif #include "webrtc/base/checks.h" @@ -129,19 +128,6 @@ bool VoiceEngine::Delete(VoiceEngine*& voiceEngine) { return true; } -#if !defined(WEBRTC_CHROMIUM_BUILD) -// TODO(henrika): change types to JavaVM* and jobject instead of void*. -int VoiceEngine::SetAndroidObjects(void* javaVM, void* context) { -#ifdef WEBRTC_ANDROID - webrtc::JVM::Initialize(reinterpret_cast(javaVM), - reinterpret_cast(context)); - return 0; -#else - return -1; -#endif -} -#endif - std::string VoiceEngine::GetVersionString() { std::string version = "VoiceEngine 4.1.0"; #ifdef WEBRTC_EXTERNAL_TRANSPORT