From db73d5d6ba548dcd66b917d06abc766acd9fae70 Mon Sep 17 00:00:00 2001
From: Eino-Ville Talvala
Date: Thu, 27 May 2021 14:45:11 -0700
Subject: [PATCH] Camera: Add black test pattern mode for privacy
Add an enum value for test pattern BLACK, to be used with
camera muting on devices that can't implement the full
SOLID_COLOR test pattern API.
Also include it in test API to ensure correct behavior can
be tested.
Test: Camera CTS continues to pass
Bug: 189507251
Change-Id: Ie9449f722fdc356c690f1513d4cb25a43a14e4c8
---
core/api/test-current.txt | 4 ++++
.../hardware/camera2/CameraMetadata.java | 19 +++++++++++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 2f795f0e103f8..5725230355568 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1103,6 +1103,10 @@ package android.hardware.camera2 {
method @RequiresPermission(android.Manifest.permission.CAMERA_OPEN_CLOSE_LISTENER) public void onCameraOpened(@NonNull String, @NonNull String);
}
+ public abstract class CameraMetadata {
+ field public static final int SENSOR_TEST_PATTERN_MODE_BLACK = 5; // 0x5
+ }
+
}
package android.hardware.devicestate {
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index d4da3b9526c3c..9501994fe38a1 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -17,6 +17,7 @@
package android.hardware.camera2;
import android.annotation.NonNull;
+import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.hardware.camera2.impl.CameraMetadataNative;
import android.hardware.camera2.impl.PublicKey;
@@ -2922,10 +2923,10 @@ public abstract class CameraMetadata {
* respective color channel provided in
* {@link CaptureRequest#SENSOR_TEST_PATTERN_DATA android.sensor.testPatternData}.
* For example:
- * android.control.testPatternData = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0]
+ * {@link CaptureRequest#SENSOR_TEST_PATTERN_DATA android.sensor.testPatternData} = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0]
*
* All green pixels are 100% green. All red/blue pixels are black.
- * android.control.testPatternData = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0]
+ * {@link CaptureRequest#SENSOR_TEST_PATTERN_DATA android.sensor.testPatternData} = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0]
*
* All red pixels are 100% red. Only the odd green pixels
* are 100% green. All blue pixels are 100% black.
@@ -3001,6 +3002,20 @@ public abstract class CameraMetadata {
*/
public static final int SENSOR_TEST_PATTERN_MODE_PN9 = 4;
+ /**
+ * All pixel data is replaced by 0% intensity (black) values.
+ * This test pattern is identical to SOLID_COLOR with a value of [0, 0, 0, 0] for
+ * {@link CaptureRequest#SENSOR_TEST_PATTERN_DATA android.sensor.testPatternData}. It is recommended that devices implement full
+ * SOLID_COLOR support instead, but BLACK can be used to provide minimal support for a
+ * test pattern suitable for privacy use cases.
+ *
+ * @see CaptureRequest#SENSOR_TEST_PATTERN_DATA
+ * @see CaptureRequest#SENSOR_TEST_PATTERN_MODE
+ * @hide
+ */
+ @TestApi
+ public static final int SENSOR_TEST_PATTERN_MODE_BLACK = 5;
+
/**
* The first custom test pattern. All custom patterns that are
* available only on this camera device are at least this numeric