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

Unified Diff: media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java

Issue 611283002: Android Video Capture: Added static methods for device & capabilities enumeration using Camera2 API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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: 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 15433dea309982658f54ac09131cadc38826f3a1..c35725926a58396e133184978be4a513ceb64fea 100644
--- a/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
+++ b/media/base/android/java/src/org/chromium/media/VideoCaptureFactory.java
@@ -6,6 +6,7 @@ package org.chromium.media;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.os.Build;
import android.util.Log;
import org.chromium.base.CalledByNative;
@@ -40,8 +41,8 @@ class VideoCaptureFactory {
private static boolean isSpecialDevice() {
for (String[] device : SPECIAL_DEVICE_LIST) {
- if (device[0].contentEquals(android.os.Build.MODEL) &&
- device[1].contentEquals(android.os.Build.DEVICE)) {
+ if (device[0].contentEquals(android.os.Build.MODEL)
+ && device[1].contentEquals(android.os.Build.DEVICE)) {
return true;
}
}
@@ -64,24 +65,33 @@ class VideoCaptureFactory {
// to use a camera, but "load page" requires it. So, output a warning log
// and carry on pretending the system has no camera(s).
if (sNumberOfSystemCameras == -1) {
- if (PackageManager.PERMISSION_GRANTED ==
- appContext.getPackageManager().checkPermission(
+ if (PackageManager.PERMISSION_GRANTED
+ == appContext.getPackageManager().checkPermission(
"android.permission.CAMERA", appContext.getPackageName())) {
- sNumberOfSystemCameras = VideoCaptureAndroid.getNumberOfCameras();
+ if (isLReleaseOrLater()) {
+ sNumberOfSystemCameras =
+ VideoCaptureAndroid2.getNumberOfCameras(appContext);
+ } else {
+ sNumberOfSystemCameras = VideoCaptureAndroid.getNumberOfCameras();
+ if (isSpecialDevice()) {
+ Log.d(TAG, "Special device: " + android.os.Build.MODEL);
+ sNumberOfSystemCameras += VideoCaptureTango.numberOfCameras();
+ }
+ }
} else {
sNumberOfSystemCameras = 0;
Log.w(TAG, "Missing android.permission.CAMERA permission, "
+ "no system camera available.");
}
}
- if (!isSpecialDevice()) {
- return sNumberOfSystemCameras;
- }
- Log.d(TAG, "Special device: " + android.os.Build.MODEL);
- return sNumberOfSystemCameras + VideoCaptureTango.numberOfCameras();
+ return sNumberOfSystemCameras;
}
}
+ private static boolean isLReleaseOrLater() {
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.L;
+ }
+
// Factory methods.
@CalledByNative
static VideoCapture createVideoCapture(
@@ -101,18 +111,24 @@ class VideoCaptureFactory {
}
@CalledByNative
- static String getDeviceName(int id) {
- return (ChromiumCameraInfo.isSpecialCamera(id)) ?
- VideoCaptureTango.getName(ChromiumCameraInfo.toSpecialCameraId(id)) :
- VideoCaptureAndroid.getName(id);
+ static String getDeviceName(int id, Context appContext) {
+ if (isLReleaseOrLater()) {
+ return VideoCaptureAndroid2.getName(id, appContext);
+ }
+ return (ChromiumCameraInfo.isSpecialCamera(id))
+ ? VideoCaptureTango.getName(ChromiumCameraInfo.toSpecialCameraId(id))
+ : VideoCaptureAndroid.getName(id);
}
@CalledByNative
- static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(int id) {
- return ChromiumCameraInfo.isSpecialCamera(id) ?
- VideoCaptureTango.getDeviceSupportedFormats(
- ChromiumCameraInfo.toSpecialCameraId(id)) :
- VideoCaptureAndroid.getDeviceSupportedFormats(id);
+ static VideoCapture.CaptureFormat[] getDeviceSupportedFormats(Context appContext, int id) {
+ if (isLReleaseOrLater()) {
+ return VideoCaptureAndroid2.getDeviceSupportedFormats(appContext, id);
+ }
+ return ChromiumCameraInfo.isSpecialCamera(id)
+ ? VideoCaptureTango.getDeviceSupportedFormats(
+ ChromiumCameraInfo.toSpecialCameraId(id))
+ : VideoCaptureAndroid.getDeviceSupportedFormats(id);
}
@CalledByNative

Powered by Google App Engine
This is Rietveld 408576698