From b2daaaacbd1f9bf016e0f169006ccf2ab0ad2270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20Kalliom=C3=A4ki?= Date: Fri, 6 Jul 2018 11:25:25 +0200 Subject: [PATCH] Update capturer/test code to use the new interface VideoCapturer. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:9496 Change-Id: I9adf2c341b831820bbe71f2511616b629c9e1acc Reviewed-on: https://webrtc-review.googlesource.com/87306 Reviewed-by: Magnus Jedvert Commit-Queue: Sami Kalliomäki Cr-Commit-Position: refs/heads/master@{#23869} --- .../api/org/webrtc/ScreenCapturerAndroid.java | 2 +- .../CameraVideoCapturerTestFixtures.java | 10 +++++++-- .../src/org/webrtc/FileVideoCapturerTest.java | 2 +- .../src/org/webrtc/PeerConnectionTest.java | 21 ++++++++++++++++--- .../org/webrtc/JavaVideoSourceTestHelper.java | 7 +++---- 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/sdk/android/api/org/webrtc/ScreenCapturerAndroid.java b/sdk/android/api/org/webrtc/ScreenCapturerAndroid.java index 9a1bf61c6b..a13f871d74 100644 --- a/sdk/android/api/org/webrtc/ScreenCapturerAndroid.java +++ b/sdk/android/api/org/webrtc/ScreenCapturerAndroid.java @@ -77,7 +77,7 @@ public class ScreenCapturerAndroid implements VideoCapturer, VideoSink { // TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression. @SuppressWarnings("NoSynchronizedMethodCheck") public synchronized void initialize(final SurfaceTextureHelper surfaceTextureHelper, - final Context applicationContext, final VideoCapturer.CapturerObserver capturerObserver) { + final Context applicationContext, final CapturerObserver capturerObserver) { checkNotDisposed(); if (capturerObserver == null) { diff --git a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java index 05a5a548be..17702c318b 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java @@ -101,7 +101,7 @@ class CameraVideoCapturerTestFixtures { } } - static private class FakeCapturerObserver implements CameraVideoCapturer.CapturerObserver { + static private class FakeCapturerObserver implements CapturerObserver { private int framesCaptured = 0; private @Nullable VideoFrame videoFrame; final private Object frameLock = new Object(); @@ -272,6 +272,7 @@ class CameraVideoCapturerTestFixtures { * is used for testing local rendering from a capturer. */ static private class VideoTrackWithRenderer { + public SurfaceTextureHelper surfaceTextureHelper; public VideoSource source; public VideoTrack track; public RendererCallbacks rendererCallbacks; @@ -389,7 +390,12 @@ class CameraVideoCapturerTestFixtures { private VideoTrackWithRenderer createVideoTrackWithRenderer( CameraVideoCapturer capturer, VideoSink rendererCallbacks) { VideoTrackWithRenderer videoTrackWithRenderer = new VideoTrackWithRenderer(); - videoTrackWithRenderer.source = peerConnectionFactory.createVideoSource(capturer); + videoTrackWithRenderer.surfaceTextureHelper = SurfaceTextureHelper.create( + "SurfaceTextureHelper test" /* threadName */, null /* sharedContext */); + videoTrackWithRenderer.source = + peerConnectionFactory.createVideoSource(/* isScreencast= */ false); + capturer.initialize(videoTrackWithRenderer.surfaceTextureHelper, + testObjectFactory.getAppContext(), videoTrackWithRenderer.source.getCapturerObserver()); capturer.startCapture(DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_FPS); videoTrackWithRenderer.track = peerConnectionFactory.createVideoTrack("dummy", videoTrackWithRenderer.source); diff --git a/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java b/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java index 48af276fbe..7a2aedf5a0 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/FileVideoCapturerTest.java @@ -27,7 +27,7 @@ import org.junit.runner.RunWith; @RunWith(BaseJUnit4ClassRunner.class) public class FileVideoCapturerTest { - public static class MockCapturerObserver implements VideoCapturer.CapturerObserver { + public static class MockCapturerObserver implements CapturerObserver { private final ArrayList frames = new ArrayList(); @Override diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java index c83d6bf55e..d186979467 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java @@ -698,7 +698,11 @@ public class PeerConnectionTest { final CameraEnumerator enumerator = new Camera1Enumerator(false /* captureToTexture */); final VideoCapturer videoCapturer = enumerator.createCapturer(enumerator.getDeviceNames()[0], null /* eventsHandler */); - final VideoSource videoSource = factory.createVideoSource(videoCapturer); + final SurfaceTextureHelper surfaceTextureHelper = + SurfaceTextureHelper.create("SurfaceTextureHelper", /* sharedContext= */ null); + final VideoSource videoSource = factory.createVideoSource(/* isScreencast= */ false); + videoCapturer.initialize(surfaceTextureHelper, InstrumentationRegistry.getTargetContext(), + videoSource.getCapturerObserver()); videoCapturer.startCapture(640, 480, 30); offeringExpectations.expectRenegotiationNeeded(); @@ -905,6 +909,7 @@ public class PeerConnectionTest { videoCapturer.stopCapture(); videoCapturer.dispose(); videoSource.dispose(); + surfaceTextureHelper.dispose(); factory.dispose(); System.gc(); } @@ -1094,7 +1099,11 @@ public class PeerConnectionTest { final CameraEnumerator enumerator = new Camera1Enumerator(false /* captureToTexture */); final VideoCapturer videoCapturer = enumerator.createCapturer(enumerator.getDeviceNames()[0], null /* eventsHandler */); - final VideoSource videoSource = factory.createVideoSource(videoCapturer); + final SurfaceTextureHelper surfaceTextureHelper = + SurfaceTextureHelper.create("SurfaceTextureHelper", /* sharedContext= */ null); + final VideoSource videoSource = factory.createVideoSource(/* isScreencast= */ false); + videoCapturer.initialize(surfaceTextureHelper, InstrumentationRegistry.getTargetContext(), + videoSource.getCapturerObserver()); videoCapturer.startCapture(640, 480, 30); // Add offerer media stream. @@ -1245,6 +1254,7 @@ public class PeerConnectionTest { videoCapturer.stopCapture(); videoCapturer.dispose(); videoSource.dispose(); + surfaceTextureHelper.dispose(); factory.dispose(); System.gc(); } @@ -1318,7 +1328,11 @@ public class PeerConnectionTest { final CameraEnumerator enumerator = new Camera1Enumerator(false /* captureToTexture */); final VideoCapturer videoCapturer = enumerator.createCapturer(enumerator.getDeviceNames()[0], null /* eventsHandler */); - final VideoSource videoSource = factory.createVideoSource(videoCapturer); + final SurfaceTextureHelper surfaceTextureHelper = + SurfaceTextureHelper.create("SurfaceTextureHelper", /* sharedContext= */ null); + final VideoSource videoSource = factory.createVideoSource(/* isScreencast= */ false); + videoCapturer.initialize(surfaceTextureHelper, InstrumentationRegistry.getTargetContext(), + videoSource.getCapturerObserver()); VideoTrack videoTrack = factory.createVideoTrack("video", videoSource); offeringExpectations.expectRenegotiationNeeded(); localStream.addTrack(videoTrack); @@ -1369,6 +1383,7 @@ public class PeerConnectionTest { pcUnderTest.dispose(); videoCapturer.dispose(); videoSource.dispose(); + surfaceTextureHelper.dispose(); factory.dispose(); } diff --git a/sdk/android/native_unittests/org/webrtc/JavaVideoSourceTestHelper.java b/sdk/android/native_unittests/org/webrtc/JavaVideoSourceTestHelper.java index d1aa9c6105..bde34e95cf 100644 --- a/sdk/android/native_unittests/org/webrtc/JavaVideoSourceTestHelper.java +++ b/sdk/android/native_unittests/org/webrtc/JavaVideoSourceTestHelper.java @@ -14,18 +14,17 @@ import org.webrtc.VideoCapturer; public class JavaVideoSourceTestHelper { @CalledByNative - public static void startCapture(VideoCapturer.CapturerObserver observer, boolean success) { + public static void startCapture(CapturerObserver observer, boolean success) { observer.onCapturerStarted(success); } @CalledByNative - public static void stopCapture(VideoCapturer.CapturerObserver observer) { + public static void stopCapture(CapturerObserver observer) { observer.onCapturerStopped(); } @CalledByNative - public static void deliverFrame( - int width, int height, int rotation, VideoCapturer.CapturerObserver observer) { + public static void deliverFrame(int width, int height, int rotation, CapturerObserver observer) { observer.onFrameCaptured( new VideoFrame(JavaI420Buffer.allocate(width, height), rotation, 0 /* timestampNs= */)); }