| Index: webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| diff --git a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| index b539f125c0f9e7b62455430307a6c79d2caf2d6e..5edca3b83cc04427df7aea656d8ec9a9f40596d8 100644
|
| --- a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| +++ b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| @@ -45,7 +45,7 @@
|
| // camera thread. The internal *OnCameraThread() methods must check |camera| for null to check if
|
| // the camera has been stopped.
|
| @SuppressWarnings("deprecation")
|
| -public class VideoCapturerAndroid implements
|
| +public class VideoCapturerAndroid extends VideoCapturer implements
|
| android.hardware.Camera.PreviewCallback,
|
| SurfaceTextureHelper.OnTextureFrameAvailableListener {
|
| private final static String TAG = "VideoCapturerAndroid";
|
| @@ -196,7 +196,12 @@
|
| if (cameraId == -1) {
|
| return null;
|
| }
|
| - return new VideoCapturerAndroid(cameraId, eventsHandler, sharedEglContext);
|
| +
|
| + final VideoCapturerAndroid capturer = new VideoCapturerAndroid(cameraId, eventsHandler,
|
| + sharedEglContext);
|
| + capturer.setNativeCapturer(
|
| + nativeCreateVideoCapturer(capturer, capturer.surfaceHelper));
|
| + return capturer;
|
| }
|
|
|
| public void printStackTrace() {
|
| @@ -295,6 +300,11 @@
|
| // Called from native code.
|
| private String getSupportedFormatsAsJson() throws JSONException {
|
| return CameraEnumerationAndroid.getSupportedFormatsAsJson(getCurrentCameraId());
|
| + }
|
| +
|
| + // Called from native VideoCapturer_nativeCreateVideoCapturer.
|
| + private VideoCapturerAndroid(int cameraId) {
|
| + this(cameraId, null, null);
|
| }
|
|
|
| private VideoCapturerAndroid(int cameraId, CameraEventsHandler eventsHandler,
|
| @@ -337,9 +347,9 @@
|
| return -1;
|
| }
|
|
|
| - // Quits the camera thread. This needs to be done manually, otherwise the thread and handler will
|
| - // not be garbage collected.
|
| - public void release() {
|
| + // Called by native code to quit the camera thread. This needs to be done manually, otherwise the
|
| + // thread and handler will not be garbage collected.
|
| + private void release() {
|
| Logging.d(TAG, "release");
|
| if (isReleased()) {
|
| throw new IllegalStateException("Already released");
|
| @@ -759,4 +769,8 @@
|
| private native void nativeOnOutputFormatRequest(long nativeCapturer,
|
| int width, int height, int framerate);
|
| }
|
| +
|
| + private static native long nativeCreateVideoCapturer(
|
| + VideoCapturerAndroid videoCapturer,
|
| + SurfaceTextureHelper surfaceHelper);
|
| }
|
|
|