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

Unified Diff: webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java

Issue 2767643002: Enable the Java wrapper to load different .so library.
Patch Set: Add static method to the subclass to solve the linking error. Created 3 years, 7 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/api/org/webrtc/PeerConnectionFactory.java
diff --git a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java
index 28b3ca72ab9b98e4f74db5d2a7f80bf3955cfc18..d808c82172c971bf29d1719b48be07c2c4f9603f 100644
--- a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java
+++ b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java
@@ -13,12 +13,10 @@ package org.webrtc;
import java.util.List;
/**
- * Java wrapper for a C++ PeerConnectionFactoryInterface. Main entry point to
+ * The subclass of PeerConnectionFactoryBase loading with the shared library. Main entry point to
* the PeerConnection API for clients.
*/
-public class PeerConnectionFactory {
- private static volatile boolean nativeLibLoaded;
-
+public class PeerConnectionFactory extends PeerConnectionFactoryBase {
static {
try {
System.loadLibrary("jingle_peerconnection_so");
@@ -28,44 +26,17 @@ public class PeerConnectionFactory {
}
}
- private static final String TAG = "PeerConnectionFactory";
- private final long nativeFactory;
- private static Thread networkThread;
- private static Thread workerThread;
- private static Thread signalingThread;
- private EglBase localEglbase;
- private EglBase remoteEglbase;
-
- public static class Options {
- // Keep in sync with webrtc/base/network.h!
- static final int ADAPTER_TYPE_UNKNOWN = 0;
- static final int ADAPTER_TYPE_ETHERNET = 1 << 0;
- static final int ADAPTER_TYPE_WIFI = 1 << 1;
- static final int ADAPTER_TYPE_CELLULAR = 1 << 2;
- static final int ADAPTER_TYPE_VPN = 1 << 3;
- static final int ADAPTER_TYPE_LOOPBACK = 1 << 4;
-
- public int networkIgnoreMask;
- public boolean disableEncryption;
- public boolean disableNetworkMonitor;
- }
-
// 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(Object context, boolean initializeAudio,
- boolean initializeVideo, boolean videoHwAcceleration) {
- initializeAndroidGlobals((android.content.Context) context, videoHwAcceleration);
- return true;
+ public static void initializeAndroidGlobals(
+ android.content.Context context, boolean videoHwAcceleration) {
+ PeerConnectionFactoryBase.initializeAndroidGlobals(context, videoHwAcceleration);
}
-
// Field trial initialization. Must be called before PeerConnectionFactory
// is created.
- public static native void initializeFieldTrials(String fieldTrialsInitString);
+ public static void initializeFieldTrials(String fieldTrialsInitString) {
+ PeerConnectionFactoryBase.initializeFieldTrials(fieldTrialsInitString);
+ }
// Wrapper of webrtc::field_trial::FindFullName. Develop the feature with default behaviour off.
// Example usage:
// if (PeerConnectionFactory.fieldTrialsFindFullName("WebRTCExperiment").equals("Enabled")) {
@@ -74,205 +45,32 @@ public class PeerConnectionFactory {
// method2();
// }
public static String fieldTrialsFindFullName(String name) {
- return nativeLibLoaded ? nativeFieldTrialsFindFullName(name) : "";
+ return PeerConnectionFactoryBase.fieldTrialsFindFullName(name);
}
- private static native String nativeFieldTrialsFindFullName(String name);
// Internal tracing initialization. Must be called before PeerConnectionFactory is created to
// prevent racing with tracing code.
- public static native void initializeInternalTracer();
+ public static void initializeInternalTracer() {
+ PeerConnectionFactoryBase.initializeInternalTracer();
+ }
// Internal tracing shutdown, called to prevent resource leaks. Must be called after
// PeerConnectionFactory is gone to prevent races with code performing tracing.
- public static native void shutdownInternalTracer();
- // Start/stop internal capturing of internal tracing.
- public static native boolean startInternalTracingCapture(String tracing_filename);
- public static native void stopInternalTracingCapture();
-
- @Deprecated
- public 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) {
- throw new RuntimeException("Failed to initialize PeerConnectionFactory!");
- }
+ public static void shutdownInternalTracer() {
+ PeerConnectionFactoryBase.shutdownInternalTracer();
}
-
- public PeerConnection createPeerConnection(PeerConnection.RTCConfiguration rtcConfig,
- MediaConstraints constraints, PeerConnection.Observer observer) {
- long nativeObserver = nativeCreateObserver(observer);
- if (nativeObserver == 0) {
- return null;
- }
- long nativePeerConnection =
- nativeCreatePeerConnection(nativeFactory, rtcConfig, constraints, nativeObserver);
- if (nativePeerConnection == 0) {
- return null;
- }
- return new PeerConnection(nativePeerConnection, nativeObserver);
- }
-
- public PeerConnection createPeerConnection(List<PeerConnection.IceServer> iceServers,
- MediaConstraints constraints, PeerConnection.Observer observer) {
- PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
- return createPeerConnection(rtcConfig, constraints, observer);
- }
-
- public MediaStream createLocalMediaStream(String label) {
- return new MediaStream(nativeCreateLocalMediaStream(nativeFactory, label));
- }
-
- public VideoSource createVideoSource(VideoCapturer capturer) {
- final EglBase.Context eglContext =
- localEglbase == null ? null : localEglbase.getEglBaseContext();
- long nativeAndroidVideoTrackSource =
- nativeCreateVideoSource(nativeFactory, eglContext, capturer.isScreencast());
- VideoCapturer.CapturerObserver capturerObserver =
- new AndroidVideoTrackSourceObserver(nativeAndroidVideoTrackSource);
- nativeInitializeVideoCapturer(
- nativeFactory, capturer, nativeAndroidVideoTrackSource, capturerObserver);
- return new VideoSource(nativeAndroidVideoTrackSource);
- }
-
- public VideoTrack createVideoTrack(String id, VideoSource source) {
- return new VideoTrack(nativeCreateVideoTrack(nativeFactory, id, source.nativeSource));
- }
-
- public AudioSource createAudioSource(MediaConstraints constraints) {
- return new AudioSource(nativeCreateAudioSource(nativeFactory, constraints));
- }
-
- public AudioTrack createAudioTrack(String id, AudioSource source) {
- return new AudioTrack(nativeCreateAudioTrack(nativeFactory, id, source.nativeSource));
+ // Start/stop internal capturing of internal tracing.
+ public static boolean startInternalTracingCapture(String tracing_filename) {
+ return PeerConnectionFactoryBase.startInternalTracingCapture(tracing_filename);
}
-
- // Starts recording an AEC dump. Ownership of the file is transfered to the
- // native code. If an AEC dump is already in progress, it will be stopped and
- // a new one will start using the provided file.
- public boolean startAecDump(int file_descriptor, int filesize_limit_bytes) {
- return nativeStartAecDump(nativeFactory, file_descriptor, filesize_limit_bytes);
- }
-
- // Stops recording an AEC dump. If no AEC dump is currently being recorded,
- // this call will have no effect.
- public void stopAecDump() {
- nativeStopAecDump(nativeFactory);
+ public static void stopInternalTracingCapture() {
+ PeerConnectionFactoryBase.stopInternalTracingCapture();
}
@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
- * renderer.
- * @param remoteEglContext Must be the same as used by any remote video renderer.
- */
- public void setVideoHwAccelerationOptions(
- EglBase.Context localEglContext, EglBase.Context remoteEglContext) {
- if (localEglbase != null) {
- Logging.w(TAG, "Egl context already set.");
- localEglbase.release();
- }
- if (remoteEglbase != null) {
- Logging.w(TAG, "Egl context already set.");
- remoteEglbase.release();
- }
- localEglbase = EglBase.create(localEglContext);
- remoteEglbase = EglBase.create(remoteEglContext);
- nativeSetVideoHwAccelerationOptions(
- nativeFactory, localEglbase.getEglBaseContext(), remoteEglbase.getEglBaseContext());
- }
-
- public void dispose() {
- nativeFreeFactory(nativeFactory);
- networkThread = null;
- workerThread = null;
- signalingThread = null;
- if (localEglbase != null)
- localEglbase.release();
- if (remoteEglbase != null)
- remoteEglbase.release();
- }
-
- public void threadsCallbacks() {
- nativeThreadsCallbacks(nativeFactory);
- }
-
- private static void printStackTrace(Thread thread, String threadName) {
- if (thread != null) {
- StackTraceElement[] stackTraces = thread.getStackTrace();
- if (stackTraces.length > 0) {
- Logging.d(TAG, threadName + " stacks trace:");
- for (StackTraceElement stackTrace : stackTraces) {
- Logging.d(TAG, stackTrace.toString());
- }
- }
- }
- }
-
- public static void printStackTraces() {
- printStackTrace(networkThread, "Network thread");
- printStackTrace(workerThread, "Worker thread");
- printStackTrace(signalingThread, "Signaling thread");
- }
-
- private static void onNetworkThreadReady() {
- networkThread = Thread.currentThread();
- Logging.d(TAG, "onNetworkThreadReady");
- }
-
- private static void onWorkerThreadReady() {
- workerThread = Thread.currentThread();
- Logging.d(TAG, "onWorkerThreadReady");
+ public PeerConnectionFactory() {
+ super();
}
- private static void onSignalingThreadReady() {
- signalingThread = Thread.currentThread();
- Logging.d(TAG, "onSignalingThreadReady");
+ public PeerConnectionFactory(Options options) {
+ super(options);
}
-
- private static native long nativeCreatePeerConnectionFactory(Options options);
-
- private static native long nativeCreateObserver(PeerConnection.Observer observer);
-
- private static native long nativeCreatePeerConnection(long nativeFactory,
- PeerConnection.RTCConfiguration rtcConfig, MediaConstraints constraints, long nativeObserver);
-
- private static native long nativeCreateLocalMediaStream(long nativeFactory, String label);
-
- private static native long nativeCreateVideoSource(
- long nativeFactory, EglBase.Context eglContext, boolean is_screencast);
-
- private static native void nativeInitializeVideoCapturer(long native_factory,
- VideoCapturer j_video_capturer, long native_source,
- VideoCapturer.CapturerObserver j_frame_observer);
-
- private static native long nativeCreateVideoTrack(
- long nativeFactory, String id, long nativeVideoSource);
-
- private static native long nativeCreateAudioSource(
- long nativeFactory, MediaConstraints constraints);
-
- private static native long nativeCreateAudioTrack(
- long nativeFactory, String id, long nativeSource);
-
- private static native boolean nativeStartAecDump(
- long nativeFactory, int file_descriptor, int filesize_limit_bytes);
-
- private static native void nativeStopAecDump(long nativeFactory);
-
- @Deprecated public native void nativeSetOptions(long nativeFactory, Options options);
-
- private static native void nativeSetVideoHwAccelerationOptions(
- long nativeFactory, Object localEGLContext, Object remoteEGLContext);
-
- private static native void nativeThreadsCallbacks(long nativeFactory);
-
- private static native void nativeFreeFactory(long nativeFactory);
}

Powered by Google App Engine
This is Rietveld 408576698