From 207e6f8cd9e51c0a5c550460b5bf7908552ff749 Mon Sep 17 00:00:00 2001 From: Sam Zackrisson Date: Thu, 3 May 2018 09:45:18 +0000 Subject: [PATCH] Revert "Android: Remove deprecated PeerConnectionFactory ctors" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 3e0dee26603cdc3a2653c225398f55dd8ca0d8c1. Reason for revert: broke internal project. Original change's description: > Android: Remove deprecated PeerConnectionFactory ctors > > This CL removes deprecated PeerConnectionFactory ctors as well as some > deprecated comments and functions left from the > PeerConnectionFactory.initialize work. > > Bug: webrtc:9158 > Change-Id: I757f85b52cbfdbe15bf2570c394202b898892550 > Reviewed-on: https://webrtc-review.googlesource.com/70400 > Reviewed-by: Sami Kalliomäki > Commit-Queue: Magnus Jedvert > Cr-Commit-Position: refs/heads/master@{#23085} TBR=magjed@webrtc.org,sakal@webrtc.org Change-Id: I6a38e65b9ebfe7ccd783b87f6cef0b41d6c6ba38 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:9158 Reviewed-on: https://webrtc-review.googlesource.com/74080 Reviewed-by: Sam Zackrisson Commit-Queue: Sam Zackrisson Cr-Commit-Position: refs/heads/master@{#23089} --- .../api/org/webrtc/PeerConnectionFactory.java | 41 ++++++++++++++++++- .../CameraVideoCapturerTestFixtures.java | 2 +- .../src/org/webrtc/PeerConnectionTest.java | 15 ++++--- .../src/org/webrtc/WebRtcJniBootTest.java | 4 +- .../src/jni/pc/peerconnectionfactory.cc | 22 ++++++++++ 5 files changed, 73 insertions(+), 11 deletions(-) diff --git a/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/sdk/android/api/org/webrtc/PeerConnectionFactory.java index 04806b868b..b880f9b6ed 100644 --- a/sdk/android/api/org/webrtc/PeerConnectionFactory.java +++ b/sdk/android/api/org/webrtc/PeerConnectionFactory.java @@ -196,7 +196,7 @@ public class PeerConnectionFactory { ContextUtils.initialize(options.applicationContext); NativeLibrary.initialize(options.nativeLibraryLoader); nativeInitializeAndroidGlobals(options.enableVideoHwAcceleration); - nativeInitializeFieldTrials(options.fieldTrials); + initializeFieldTrials(options.fieldTrials); if (options.enableInternalTracer && !internalTracerInitialized) { initializeInternalTracer(); } @@ -247,6 +247,36 @@ public class PeerConnectionFactory { nativeStopInternalTracingCapture(); } + @Deprecated + public PeerConnectionFactory() { + this(null); + } + + // Note: initializeAndroidGlobals must be called at least once before + // constructing a PeerConnectionFactory. + @Deprecated + public PeerConnectionFactory(Options options) { + this(options, null /* encoderFactory */, null /* decoderFactory */); + } + + @Deprecated + public PeerConnectionFactory( + Options options, VideoEncoderFactory encoderFactory, VideoDecoderFactory decoderFactory) { + checkInitializeHasBeenCalled(); + nativeFactory = nativeCreatePeerConnectionFactory(ContextUtils.getApplicationContext(), options, + 0 /* audioDeviceModule */, encoderFactory, decoderFactory, 0, 0); + if (nativeFactory == 0) { + throw new RuntimeException("Failed to initialize PeerConnectionFactory!"); + } + } + + @Deprecated + public PeerConnectionFactory(Options options, VideoEncoderFactory encoderFactory, + VideoDecoderFactory decoderFactory, AudioProcessingFactory audioProcessingFactory) { + this(options, new LegacyAudioDeviceModule(), encoderFactory, decoderFactory, + audioProcessingFactory, null /* fecControllerFactoryFactory */); + } + private PeerConnectionFactory(Options options, @Nullable AudioDeviceModule audioDeviceModule, @Nullable VideoEncoderFactory encoderFactory, @Nullable VideoDecoderFactory decoderFactory, @Nullable AudioProcessingFactory audioProcessingFactory, @@ -361,6 +391,11 @@ public class PeerConnectionFactory { nativeStopAecDump(nativeFactory); } + @Deprecated + public void setOptions(Options options) { + nativeSetOptions(nativeFactory, options); + } + /** Set the EGL context used by HW Video encoding and decoding. * * @param localEglContext Must be the same as used by VideoCapturerAndroid and any local video @@ -449,6 +484,9 @@ public class PeerConnectionFactory { private static native void nativeInitializeAndroidGlobals(boolean videoHwAcceleration); private static native void nativeInitializeFieldTrials(String fieldTrialsInitString); private static native String nativeFindFieldTrialsFullName(String name); + // Internal tracing initialization. Must be called before PeerConnectionFactory is created to + // prevent racing with tracing code. + // Deprecated, use PeerConnectionFactory.initialize instead. private static native void nativeInitializeInternalTracer(); // Internal tracing shutdown, called to prevent resource leaks. Must be called after // PeerConnectionFactory is gone to prevent races with code performing tracing. @@ -470,6 +508,7 @@ public class PeerConnectionFactory { private static native boolean nativeStartAecDump( long factory, int file_descriptor, int filesize_limit_bytes); private static native void nativeStopAecDump(long factory); + @Deprecated public native void nativeSetOptions(long factory, Options options); private static native void nativeSetVideoHwAccelerationOptions( long factory, Object localEGLContext, Object remoteEGLContext); private static native void nativeInvokeThreadsCallbacks(long factory); diff --git a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java index f20608b1c8..aa249449c3 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java @@ -336,7 +336,7 @@ class CameraVideoCapturerTestFixtures { PeerConnectionFactory.InitializationOptions.builder(testObjectFactory.getAppContext()) .createInitializationOptions()); - this.peerConnectionFactory = PeerConnectionFactory.builder().createPeerConnectionFactory(); + this.peerConnectionFactory = new PeerConnectionFactory(null /* options */); this.testObjectFactory = testObjectFactory; } diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java index 08d9ea0716..86b84f4402 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java @@ -642,7 +642,8 @@ public class PeerConnectionTest { @Test @SmallTest public void testCreationWithConfig() throws Exception { - PeerConnectionFactory factory = PeerConnectionFactory.builder().createPeerConnectionFactory(); + PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); + PeerConnectionFactory factory = new PeerConnectionFactory(options); List iceServers = Arrays.asList( PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer(), PeerConnection.IceServer.builder("turn:fake.example.com") @@ -668,8 +669,7 @@ public class PeerConnectionTest { // have those. PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); options.networkIgnoreMask = 0; - PeerConnectionFactory factory = - PeerConnectionFactory.builder().setOptions(options).createPeerConnectionFactory(); + PeerConnectionFactory factory = new PeerConnectionFactory(options); List iceServers = new ArrayList<>(); iceServers.add( @@ -908,8 +908,7 @@ public class PeerConnectionTest { // have those. PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); options.networkIgnoreMask = 0; - PeerConnectionFactory factory = - PeerConnectionFactory.builder().setOptions(options).createPeerConnectionFactory(); + PeerConnectionFactory factory = new PeerConnectionFactory(options); List iceServers = new ArrayList<>(); iceServers.add( @@ -1063,8 +1062,7 @@ public class PeerConnectionTest { // have those. PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); options.networkIgnoreMask = 0; - PeerConnectionFactory factory = - PeerConnectionFactory.builder().setOptions(options).createPeerConnectionFactory(); + PeerConnectionFactory factory = new PeerConnectionFactory(options); List iceServers = new ArrayList<>(); iceServers.add( @@ -1257,7 +1255,8 @@ public class PeerConnectionTest { @Test @MediumTest public void testRemoteStreamUpdatedWhenTracksAddedOrRemoved() throws Exception { - PeerConnectionFactory factory = PeerConnectionFactory.builder().createPeerConnectionFactory(); + PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); + PeerConnectionFactory factory = new PeerConnectionFactory(options); // This test is fine with no ICE servers. List iceServers = new ArrayList<>(); diff --git a/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java b/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java index 3b4f09269e..ebee38dd64 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/WebRtcJniBootTest.java @@ -28,6 +28,8 @@ public class WebRtcJniBootTest { PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions .builder(InstrumentationRegistry.getTargetContext()) .createInitializationOptions()); - PeerConnectionFactory.builder().createPeerConnectionFactory(); + + PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); + new PeerConnectionFactory(options); } } diff --git a/sdk/android/src/jni/pc/peerconnectionfactory.cc b/sdk/android/src/jni/pc/peerconnectionfactory.cc index 105be31a16..481d904aa0 100644 --- a/sdk/android/src/jni/pc/peerconnectionfactory.cc +++ b/sdk/android/src/jni/pc/peerconnectionfactory.cc @@ -412,6 +412,28 @@ static void JNI_PeerConnectionFactory_StopAecDump(JNIEnv* jni, factory->StopAecDump(); } +static void JNI_PeerConnectionFactory_SetOptions( + JNIEnv* jni, + const JavaParamRef&, + jlong native_factory, + const JavaParamRef& options) { + rtc::scoped_refptr factory( + factoryFromJava(native_factory)); + PeerConnectionFactoryInterface::Options options_to_set = + JavaToNativePeerConnectionFactoryOptions(jni, options); + factory->SetOptions(options_to_set); + + if (options_to_set.disable_network_monitor) { + OwnedFactoryAndThreads* owner = + reinterpret_cast(native_factory); + if (owner->network_monitor_factory()) { + rtc::NetworkMonitorFactory::ReleaseFactory( + owner->network_monitor_factory()); + owner->clear_network_monitor_factory(); + } + } +} + static jlong JNI_PeerConnectionFactory_CreatePeerConnection( JNIEnv* jni, const JavaParamRef&,