Reviewers: perkj,
Message:
perkj - Can you take a look?
Description:
Disable Camera2 API for devices with legacy hardware support
BUG=446610
TBR=mcasas
Please review this at
https://codereview.chromium.org/834423003/
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Affected files (+11, -3 lines):
M media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
M media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
Index:
media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
diff --git
a/media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
b/media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
index
9dc42889124f5a1b47929305c20542f178727457..802792b63f36f09672bace0980427d9c22db4a84
100644
---
a/media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
+++
b/media/base/android/java/src/org/chromium/media/VideoCaptureCamera2.java
@@ -274,6 +274,14 @@ public class VideoCaptureCamera2 extends VideoCapture {
}
}
+ static boolean isLegacyDevice(Context appContext, int id) {
+ final CameraCharacteristics cameraCharacteristics =
+ getCameraCharacteristics(appContext, id);
+ return cameraCharacteristics != null
+ &&
cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)
+ == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY;
+ }
+
static int getNumberOfCameras(Context appContext) {
final CameraManager manager =
(CameraManager)
appContext.getSystemService(Context.CAMERA_SERVICE);
Index:
media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
diff --git
a/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
b/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
index
87d0efd5ba40f90040396bc216cefabdf5af0067..ae6018df908b16031a52bfed8a9ebc28cf4f2740
100644
---
a/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
+++
b/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
@@ -96,7 +96,7 @@ class VideoCaptureFactory {
@CalledByNative
static VideoCapture createVideoCapture(
Context context, int id, long nativeVideoCaptureDeviceAndroid)
{
- if (isLReleaseOrLater()) {
+ if (isLReleaseOrLater()
&& !VideoCaptureCamera2.isLegacyDevice(context, id)) {
return new VideoCaptureCamera2(context,
id,
nativeVideoCaptureDeviceAndroid);
@@ -118,7 +118,7 @@ class VideoCaptureFactory {
@CalledByNative
static String getDeviceName(int id, Context appContext) {
- if (isLReleaseOrLater()) {
+ if (isLReleaseOrLater()
&& !VideoCaptureCamera2.isLegacyDevice(appContext, id)) {
return VideoCaptureCamera2.getName(id, appContext);
}
return (ChromiumCameraInfo.isSpecialCamera(id))
@@ -128,7 +128,7 @@ class VideoCaptureFactory {
@CalledByNative
static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(Context
appContext, int id) {
- if (isLReleaseOrLater()) {
+ if (isLReleaseOrLater()
&& !VideoCaptureCamera2.isLegacyDevice(appContext, id)) {
return
VideoCaptureCamera2.getDeviceSupportedFormats(appContext, id);
}
return ChromiumCameraInfo.isSpecialCamera(id)