diff --git a/webrtc/sdk/android/BUILD.gn b/webrtc/sdk/android/BUILD.gn index 6a46f1092d..12ebb8358a 100644 --- a/webrtc/sdk/android/BUILD.gn +++ b/webrtc/sdk/android/BUILD.gn @@ -174,6 +174,7 @@ android_library("libjingle_peerconnection_java") { "api/org/webrtc/VideoRenderer.java", "api/org/webrtc/VideoSource.java", "api/org/webrtc/VideoTrack.java", + "src/java/org/webrtc/AndroidVideoTrackSourceObserver.java", "src/java/org/webrtc/Camera1Session.java", "src/java/org/webrtc/Camera2Session.java", "src/java/org/webrtc/CameraCapturer.java", diff --git a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java index 4a7bca61c0..18cf8f796a 100644 --- a/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java +++ b/webrtc/sdk/android/api/org/webrtc/PeerConnectionFactory.java @@ -127,7 +127,7 @@ public class PeerConnectionFactory { long nativeAndroidVideoTrackSource = nativeCreateVideoSource(nativeFactory, eglContext, capturer.isScreencast()); VideoCapturer.CapturerObserver capturerObserver = - new VideoCapturer.AndroidVideoTrackSourceObserver(nativeAndroidVideoTrackSource); + new AndroidVideoTrackSourceObserver(nativeAndroidVideoTrackSource); nativeInitializeVideoCapturer( nativeFactory, capturer, nativeAndroidVideoTrackSource, capturerObserver); return new VideoSource(nativeAndroidVideoTrackSource); diff --git a/webrtc/sdk/android/api/org/webrtc/VideoCapturer.java b/webrtc/sdk/android/api/org/webrtc/VideoCapturer.java index b8cceaf694..43473faa17 100644 --- a/webrtc/sdk/android/api/org/webrtc/VideoCapturer.java +++ b/webrtc/sdk/android/api/org/webrtc/VideoCapturer.java @@ -33,48 +33,6 @@ public interface VideoCapturer { int rotation, long timestamp); } - // An implementation of CapturerObserver that forwards all calls from - // Java to the C layer. - static class AndroidVideoTrackSourceObserver implements CapturerObserver { - // Pointer to VideoTrackSourceProxy proxying AndroidVideoTrackSource. - private final long nativeSource; - - public AndroidVideoTrackSourceObserver(long nativeSource) { - this.nativeSource = nativeSource; - } - - @Override - public void onCapturerStarted(boolean success) { - nativeCapturerStarted(nativeSource, success); - } - - @Override - public void onCapturerStopped() { - nativeCapturerStopped(nativeSource); - } - - @Override - public void onByteBufferFrameCaptured( - byte[] data, int width, int height, int rotation, long timeStamp) { - nativeOnByteBufferFrameCaptured( - nativeSource, data, data.length, width, height, rotation, timeStamp); - } - - @Override - public void onTextureFrameCaptured(int width, int height, int oesTextureId, - float[] transformMatrix, int rotation, long timestamp) { - nativeOnTextureFrameCaptured( - nativeSource, width, height, oesTextureId, transformMatrix, rotation, timestamp); - } - - private native void nativeCapturerStarted(long nativeSource, boolean success); - private native void nativeCapturerStopped(long nativeSource); - private native void nativeOnByteBufferFrameCaptured(long nativeSource, byte[] data, int length, - int width, int height, int rotation, long timeStamp); - private native void nativeOnTextureFrameCaptured(long nativeSource, int width, int height, - int oesTextureId, float[] transformMatrix, int rotation, long timestamp); - } - /** * This function is used to initialize the camera thread, the android application context, and the * capture observer. It will be called only once and before any startCapture() request. The diff --git a/webrtc/sdk/android/src/java/org/webrtc/AndroidVideoTrackSourceObserver.java b/webrtc/sdk/android/src/java/org/webrtc/AndroidVideoTrackSourceObserver.java new file mode 100644 index 0000000000..323bd5be2a --- /dev/null +++ b/webrtc/sdk/android/src/java/org/webrtc/AndroidVideoTrackSourceObserver.java @@ -0,0 +1,52 @@ +/* + * 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. + */ + +package org.webrtc; + +/** An implementation of CapturerObserver that forwards all calls from Java to the C layer. */ +class AndroidVideoTrackSourceObserver implements VideoCapturer.CapturerObserver { + // Pointer to VideoTrackSourceProxy proxying AndroidVideoTrackSource. + private final long nativeSource; + + public AndroidVideoTrackSourceObserver(long nativeSource) { + this.nativeSource = nativeSource; + } + + @Override + public void onCapturerStarted(boolean success) { + nativeCapturerStarted(nativeSource, success); + } + + @Override + public void onCapturerStopped() { + nativeCapturerStopped(nativeSource); + } + + @Override + public void onByteBufferFrameCaptured( + byte[] data, int width, int height, int rotation, long timeStamp) { + nativeOnByteBufferFrameCaptured( + nativeSource, data, data.length, width, height, rotation, timeStamp); + } + + @Override + public void onTextureFrameCaptured(int width, int height, int oesTextureId, + float[] transformMatrix, int rotation, long timestamp) { + nativeOnTextureFrameCaptured( + nativeSource, width, height, oesTextureId, transformMatrix, rotation, timestamp); + } + + private native void nativeCapturerStarted(long nativeSource, boolean success); + private native void nativeCapturerStopped(long nativeSource); + private native void nativeOnByteBufferFrameCaptured(long nativeSource, byte[] data, int length, + int width, int height, int rotation, long timeStamp); + private native void nativeOnTextureFrameCaptured(long nativeSource, int width, int height, + int oesTextureId, float[] transformMatrix, int rotation, long timestamp); +} diff --git a/webrtc/sdk/android/src/jni/androidvideotracksource_jni.cc b/webrtc/sdk/android/src/jni/androidvideotracksource_jni.cc index dd6bd1edca..70d33fb4ae 100644 --- a/webrtc/sdk/android/src/jni/androidvideotracksource_jni.cc +++ b/webrtc/sdk/android/src/jni/androidvideotracksource_jni.cc @@ -15,7 +15,7 @@ // Identifiers are over 80 characters long so this is needed to fit them on one // line. #define JOW_OBSERVER_METHOD(rettype, name) \ - JOW(rettype, VideoCapturer_00024AndroidVideoTrackSourceObserver_##name) + JOW(rettype, AndroidVideoTrackSourceObserver_##name) namespace webrtc_jni {