From 453018a29e14ad7c82b0c41c22cbfa1f5718ecb6 Mon Sep 17 00:00:00 2001 From: magjed Date: Wed, 1 Jun 2016 14:39:35 -0700 Subject: [PATCH] CameraEnumerationAndroid: Remove Enumerator class BUG=webrtc:5519 Review-Url: https://codereview.webrtc.org/2015143004 Cr-Commit-Position: refs/heads/master@{#12999} --- .../org/webrtc/VideoCapturerAndroidTest.java | 12 ++++++------ .../android/org/webrtc/Camera2Enumerator.java | 18 +++++++++--------- .../org/webrtc/CameraEnumerationAndroid.java | 19 ------------------- .../android/org/webrtc/CameraEnumerator.java | 19 ++++++++----------- .../org/webrtc/VideoCapturerAndroid.java | 2 +- 5 files changed, 24 insertions(+), 46 deletions(-) diff --git a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java index 7c9872d25f..17bbd13305 100644 --- a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java +++ b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java @@ -9,6 +9,7 @@ */ package org.webrtc; +import android.content.Context; import android.test.ActivityTestCase; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; @@ -38,18 +39,17 @@ public class VideoCapturerAndroidTest extends ActivityTestCase { if (!Camera2Enumerator.isSupported()) { return; } - final CameraEnumerationAndroid.Enumerator camera1Enumerator = new CameraEnumerator(); - final CameraEnumerationAndroid.Enumerator camera2Enumerator = - new Camera2Enumerator(getInstrumentation().getContext()); + final Context context = getInstrumentation().getContext(); for (int i = 0; i < CameraEnumerationAndroid.getDeviceCount(); ++i) { final Set resolutions1 = new HashSet(); - for (CaptureFormat format : camera1Enumerator.getSupportedFormats(i)) { + for (CaptureFormat format : CameraEnumerator.getSupportedFormats(i)) { resolutions1.add(new Size(format.width, format.height)); } final Set resolutions2 = new HashSet(); - for (CaptureFormat format : camera2Enumerator.getSupportedFormats(i)) { - resolutions2.add(new Size(format.width, format.height)); + for (CaptureFormat format : + Camera2Enumerator.getSupportedFormats(context, Integer.toString(i))) { + resolutions2.add(new Size(format.width, format.height)); } for (Size size : resolutions1) { if (size.getWidth() >= 320 && size.getHeight() >= 240 diff --git a/webrtc/api/java/android/org/webrtc/Camera2Enumerator.java b/webrtc/api/java/android/org/webrtc/Camera2Enumerator.java index 933599dc95..8c342c5c25 100644 --- a/webrtc/api/java/android/org/webrtc/Camera2Enumerator.java +++ b/webrtc/api/java/android/org/webrtc/Camera2Enumerator.java @@ -31,26 +31,26 @@ import java.util.List; import java.util.Map; @TargetApi(21) -public class Camera2Enumerator implements CameraEnumerationAndroid.Enumerator { +public class Camera2Enumerator { private final static String TAG = "Camera2Enumerator"; private final static double NANO_SECONDS_PER_SECOND = 1.0e9; - private final CameraManager cameraManager; // Each entry contains the supported formats for a given camera index. The formats are enumerated // lazily in getSupportedFormats(), and cached for future reference. - private final Map> cachedSupportedFormats = - new HashMap>(); + private static final Map> cachedSupportedFormats = + new HashMap>(); public static boolean isSupported() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; } - public Camera2Enumerator(Context context) { - cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE); + public static List getSupportedFormats(Context context, String cameraId) { + return getSupportedFormats( + (CameraManager) context.getSystemService(Context.CAMERA_SERVICE), cameraId); } - @Override - public List getSupportedFormats(int cameraId) { + public static List getSupportedFormats( + CameraManager cameraManager, String cameraId) { synchronized (cachedSupportedFormats) { if (cachedSupportedFormats.containsKey(cameraId)) { return cachedSupportedFormats.get(cameraId); @@ -60,7 +60,7 @@ public class Camera2Enumerator implements CameraEnumerationAndroid.Enumerator { final CameraCharacteristics cameraCharacteristics; try { - cameraCharacteristics = cameraManager.getCameraCharacteristics(Integer.toString(cameraId)); + cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId); } catch (Exception ex) { Logging.e(TAG, "getCameraCharacteristics(): " + ex); return new ArrayList(); diff --git a/webrtc/api/java/android/org/webrtc/CameraEnumerationAndroid.java b/webrtc/api/java/android/org/webrtc/CameraEnumerationAndroid.java index 87b9a40b62..44c850538e 100644 --- a/webrtc/api/java/android/org/webrtc/CameraEnumerationAndroid.java +++ b/webrtc/api/java/android/org/webrtc/CameraEnumerationAndroid.java @@ -22,25 +22,6 @@ import java.util.List; @SuppressWarnings("deprecation") public class CameraEnumerationAndroid { private final static String TAG = "CameraEnumerationAndroid"; - // Synchronized on |CameraEnumerationAndroid.this|. - private static Enumerator enumerator = new CameraEnumerator(); - - public interface Enumerator { - /** - * Returns a list of supported CaptureFormats for the camera with index |cameraId|. - */ - List getSupportedFormats(int cameraId); - } - - public static synchronized void setEnumerator(Enumerator enumerator) { - CameraEnumerationAndroid.enumerator = enumerator; - } - - public static synchronized List getSupportedFormats(int cameraId) { - final List formats = enumerator.getSupportedFormats(cameraId); - Logging.d(TAG, "Supported formats for camera " + cameraId + ": " + formats); - return formats; - } public static class CaptureFormat { // Class to represent a framerate range. The framerate varies because of lightning conditions. diff --git a/webrtc/api/java/android/org/webrtc/CameraEnumerator.java b/webrtc/api/java/android/org/webrtc/CameraEnumerator.java index 04edba8379..90d9487ba3 100644 --- a/webrtc/api/java/android/org/webrtc/CameraEnumerator.java +++ b/webrtc/api/java/android/org/webrtc/CameraEnumerator.java @@ -19,27 +19,24 @@ import java.util.ArrayList; import java.util.List; @SuppressWarnings("deprecation") -public class CameraEnumerator implements CameraEnumerationAndroid.Enumerator { +public class CameraEnumerator { private final static String TAG = "CameraEnumerator"; // Each entry contains the supported formats for corresponding camera index. The formats for all // cameras are enumerated on the first call to getSupportedFormats(), and cached for future // reference. - private List> cachedSupportedFormats; + private static List> cachedSupportedFormats; - @Override - public List getSupportedFormats(int cameraId) { - synchronized (this) { - if (cachedSupportedFormats == null) { - cachedSupportedFormats = new ArrayList>(); - for (int i = 0; i < CameraEnumerationAndroid.getDeviceCount(); ++i) { - cachedSupportedFormats.add(enumerateFormats(i)); - } + public static synchronized List getSupportedFormats(int cameraId) { + if (cachedSupportedFormats == null) { + cachedSupportedFormats = new ArrayList>(); + for (int i = 0; i < CameraEnumerationAndroid.getDeviceCount(); ++i) { + cachedSupportedFormats.add(enumerateFormats(i)); } } return cachedSupportedFormats.get(cameraId); } - private List enumerateFormats(int cameraId) { + private static List enumerateFormats(int cameraId) { Logging.d(TAG, "Get supported formats for camera index " + cameraId + "."); final long startTimeMs = SystemClock.elapsedRealtime(); final android.hardware.Camera.Parameters parameters; diff --git a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java index 3627299d59..4a5ae15341 100644 --- a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java +++ b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java @@ -207,7 +207,7 @@ public class VideoCapturerAndroid implements @Override public List getSupportedFormats() { - return CameraEnumerationAndroid.getSupportedFormats(getCurrentCameraId()); + return CameraEnumerator.getSupportedFormats(getCurrentCameraId()); } // Returns true if this VideoCapturer is setup to capture video frames to a SurfaceTexture.