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

Unified Diff: webrtc/api/androidtests/src/org/webrtc/Camera1CapturerTestFixtures.java

Issue 2024843002: Refactor VideoCapturerAndroid tests in WebRTC. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Changes according to magjed's comments #2 Created 4 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/api/androidtests/src/org/webrtc/Camera1CapturerTestFixtures.java
diff --git a/webrtc/api/androidtests/src/org/webrtc/Camera1CapturerTestFixtures.java b/webrtc/api/androidtests/src/org/webrtc/Camera1CapturerTestFixtures.java
new file mode 100644
index 0000000000000000000000000000000000000000..b298521dd2168b01694e5837f459a02baec7a3cb
--- /dev/null
+++ b/webrtc/api/androidtests/src/org/webrtc/Camera1CapturerTestFixtures.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2016 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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+import android.content.Context;
+
+import org.webrtc.CameraEnumerationAndroid.CaptureFormat;
+
+import static junit.framework.Assert.*;
+
+@SuppressWarnings("deprecation")
+public class Camera1CapturerTestFixtures {
+ static public void startWhileCameraIsAlreadyOpen(
+ VideoCapturerAndroid capturer, Context appContext) throws InterruptedException {
+ final List<CaptureFormat> formats = capturer.getSupportedFormats();
+ final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
+ android.hardware.Camera camera = android.hardware.Camera.open(capturer.getCurrentCameraId());
+
+ final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
+ "SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
+ final CameraVideoCapturerTestFixtures.FakeCapturerObserver observer
+ = new CameraVideoCapturerTestFixtures.FakeCapturerObserver();
+ capturer.startCapture(format.width, format.height, format.framerate.max,
+ surfaceTextureHelper, appContext, observer);
+
+ if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
+ // The first opened camera client will be evicted.
+ assertTrue(observer.WaitForCapturerToStart());
+ capturer.stopCapture();
+ } else {
+ assertFalse(observer.WaitForCapturerToStart());
+ }
+
+ CameraVideoCapturerTestFixtures.release(capturer);
+ camera.release();
+ surfaceTextureHelper.dispose();
+ }
+
+ static public void startWhileCameraIsAlreadyOpenAndCloseCamera(
+ VideoCapturerAndroid capturer, Context appContext) throws InterruptedException {
+ final List<CaptureFormat> formats = capturer.getSupportedFormats();
+ final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
+ android.hardware.Camera camera = android.hardware.Camera.open(capturer.getCurrentCameraId());
+
+ final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
+ "SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
+ final CameraVideoCapturerTestFixtures.FakeCapturerObserver observer
+ = new CameraVideoCapturerTestFixtures.FakeCapturerObserver();
+ capturer.startCapture(format.width, format.height, format.framerate.max,
+ surfaceTextureHelper, appContext, observer);
+ waitUntilIdle(capturer);
+
+ camera.release();
+
+ // Make sure camera is started and first frame is received and then stop it.
+ assertTrue(observer.WaitForCapturerToStart());
+ observer.WaitForNextCapturedFrame();
+ capturer.stopCapture();
+ if (capturer.isCapturingToTexture()) {
+ surfaceTextureHelper.returnTextureFrame();
+ }
+ CameraVideoCapturerTestFixtures.release(capturer);
+ surfaceTextureHelper.dispose();
+ }
+
+ static public void startWhileCameraIsAlreadyOpenAndStop(
+ VideoCapturerAndroid capturer, Context appContext) throws InterruptedException {
+ final List<CaptureFormat> formats = capturer.getSupportedFormats();
+ final CameraEnumerationAndroid.CaptureFormat format = formats.get(0);
+ android.hardware.Camera camera = android.hardware.Camera.open(capturer.getCurrentCameraId());
+
+ final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create(
+ "SurfaceTextureHelper test" /* threadName */, null /* sharedContext */);
+ final CameraVideoCapturerTestFixtures.FakeCapturerObserver observer
+ = new CameraVideoCapturerTestFixtures.FakeCapturerObserver();
+ capturer.startCapture(format.width, format.height, format.framerate.max,
+ surfaceTextureHelper, appContext, observer);
+ capturer.stopCapture();
+ CameraVideoCapturerTestFixtures.release(capturer);
+ camera.release();
+ surfaceTextureHelper.dispose();
+ }
+
+ static void waitUntilIdle(VideoCapturerAndroid capturer) throws InterruptedException {
+ final CountDownLatch barrier = new CountDownLatch(1);
+ capturer.getCameraThreadHandler().post(new Runnable() {
+ @Override public void run() {
+ barrier.countDown();
+ }
+ });
+ barrier.await();
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698