From c9cf5b95b2396aa43a19d18b8fd3fd2acea71ebe Mon Sep 17 00:00:00 2001
From: Chien-Yu Chen
Date: Thu, 18 Jan 2018 12:24:40 -0800
Subject: [PATCH] camera: Add OIS data keys
Test: CTS
Bug: 64847201
Change-Id: I505e1b9e2bcfea515e3292c870808d4c15024567
---
api/current.txt | 8 +++
.../camera2/CameraCharacteristics.java | 15 ++++
.../hardware/camera2/CameraMetadata.java | 16 +++++
.../hardware/camera2/CaptureRequest.java | 23 ++++++
.../hardware/camera2/CaptureResult.java | 70 +++++++++++++++++++
5 files changed, 132 insertions(+)
diff --git a/api/current.txt b/api/current.txt
index 86f1a3b525839..b06786f5bc185 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -15639,6 +15639,7 @@ package android.hardware.camera2 {
field public static final android.hardware.camera2.CameraCharacteristics.Key STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES;
+ field public static final android.hardware.camera2.CameraCharacteristics.Key STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES;
field public static final android.hardware.camera2.CameraCharacteristics.Key STATISTICS_INFO_MAX_FACE_COUNT;
field public static final android.hardware.camera2.CameraCharacteristics.Key SYNC_MAX_LATENCY;
field public static final android.hardware.camera2.CameraCharacteristics.Key TONEMAP_AVAILABLE_TONE_MAP_MODES;
@@ -15902,6 +15903,8 @@ package android.hardware.camera2 {
field public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1; // 0x1
field public static final int STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0; // 0x0
field public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1; // 0x1
+ field public static final int STATISTICS_OIS_DATA_MODE_OFF = 0; // 0x0
+ field public static final int STATISTICS_OIS_DATA_MODE_ON = 1; // 0x1
field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1
field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2
field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0
@@ -15984,6 +15987,7 @@ package android.hardware.camera2 {
field public static final android.hardware.camera2.CaptureRequest.Key STATISTICS_FACE_DETECT_MODE;
field public static final android.hardware.camera2.CaptureRequest.Key STATISTICS_HOT_PIXEL_MAP_MODE;
field public static final android.hardware.camera2.CaptureRequest.Key STATISTICS_LENS_SHADING_MAP_MODE;
+ field public static final android.hardware.camera2.CaptureRequest.Key STATISTICS_OIS_DATA_MODE;
field public static final android.hardware.camera2.CaptureRequest.Key TONEMAP_CURVE;
field public static final android.hardware.camera2.CaptureRequest.Key TONEMAP_GAMMA;
field public static final android.hardware.camera2.CaptureRequest.Key TONEMAP_MODE;
@@ -16083,6 +16087,10 @@ package android.hardware.camera2 {
field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_HOT_PIXEL_MAP_MODE;
field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_LENS_SHADING_CORRECTION_MAP;
field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_LENS_SHADING_MAP_MODE;
+ field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_OIS_DATA_MODE;
+ field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_OIS_TIMESTAMPS;
+ field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_OIS_X_SHIFTS;
+ field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_OIS_Y_SHIFTS;
field public static final android.hardware.camera2.CaptureResult.Key STATISTICS_SCENE_FLICKER;
field public static final android.hardware.camera2.CaptureResult.Key TONEMAP_CURVE;
field public static final android.hardware.camera2.CaptureResult.Key TONEMAP_GAMMA;
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 1201ef48220a2..5e179171e91ba 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -2869,6 +2869,21 @@ public final class CameraCharacteristics extends CameraMetadata STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES =
new Key("android.statistics.info.availableLensShadingMapModes", int[].class);
+ /**
+ * List of OIS data output modes for {@link CaptureRequest#STATISTICS_OIS_DATA_MODE android.statistics.oisDataMode} that
+ * are supported by this camera device.
+ * If no OIS data output is available for this camera device, this key will
+ * contain only OFF.
+ * Range of valid values:
+ * Any value listed in {@link CaptureRequest#STATISTICS_OIS_DATA_MODE android.statistics.oisDataMode}
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureRequest#STATISTICS_OIS_DATA_MODE
+ */
+ @PublicKey
+ public static final Key STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES =
+ new Key("android.statistics.info.availableOisDataModes", int[].class);
+
/**
* Maximum number of supported points in the
* tonemap curve that can be used for {@link CaptureRequest#TONEMAP_CURVE android.tonemap.curve}.
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index 2294ec56525f2..35b53734889a5 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -2565,6 +2565,22 @@ public abstract class CameraMetadata {
*/
public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1;
+ //
+ // Enumeration values for CaptureRequest#STATISTICS_OIS_DATA_MODE
+ //
+
+ /**
+ * Do not include OIS data in the capture result.
+ * @see CaptureRequest#STATISTICS_OIS_DATA_MODE
+ */
+ public static final int STATISTICS_OIS_DATA_MODE_OFF = 0;
+
+ /**
+ * Include OIS data in the capture result.
+ * @see CaptureRequest#STATISTICS_OIS_DATA_MODE
+ */
+ public static final int STATISTICS_OIS_DATA_MODE_ON = 1;
+
//
// Enumeration values for CaptureRequest#TONEMAP_MODE
//
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index ce75fa52eff7e..437d6b0e629f8 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -2618,6 +2618,29 @@ public final class CaptureRequest extends CameraMetadata>
public static final Key STATISTICS_LENS_SHADING_MAP_MODE =
new Key("android.statistics.lensShadingMapMode", int.class);
+ /**
+ * Whether the camera device outputs the OIS data in output
+ * result metadata.
+ * When set to ON,
+ * {@link CaptureResult#STATISTICS_OIS_TIMESTAMPS android.statistics.oisTimestamps}, android.statistics.oisShiftPixelX,
+ * android.statistics.oisShiftPixelY will provide OIS data in the output result metadata.
+ * Possible values:
+ *
+ * - {@link #STATISTICS_OIS_DATA_MODE_OFF OFF}
+ * - {@link #STATISTICS_OIS_DATA_MODE_ON ON}
+ *
+ * Available values for this device:
+ * android.Statistics.info.availableOisDataModes
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureResult#STATISTICS_OIS_TIMESTAMPS
+ * @see #STATISTICS_OIS_DATA_MODE_OFF
+ * @see #STATISTICS_OIS_DATA_MODE_ON
+ */
+ @PublicKey
+ public static final Key STATISTICS_OIS_DATA_MODE =
+ new Key("android.statistics.oisDataMode", int.class);
+
/**
* Tonemapping / contrast / gamma curve for the blue
* channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 237a92d3ca9fe..4b93511836812 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -3910,6 +3910,76 @@ public class CaptureResult extends CameraMetadata> {
public static final Key STATISTICS_LENS_SHADING_MAP_MODE =
new Key("android.statistics.lensShadingMapMode", int.class);
+ /**
+ * Whether the camera device outputs the OIS data in output
+ * result metadata.
+ * When set to ON,
+ * {@link CaptureResult#STATISTICS_OIS_TIMESTAMPS android.statistics.oisTimestamps}, android.statistics.oisShiftPixelX,
+ * android.statistics.oisShiftPixelY will provide OIS data in the output result metadata.
+ * Possible values:
+ *
+ * - {@link #STATISTICS_OIS_DATA_MODE_OFF OFF}
+ * - {@link #STATISTICS_OIS_DATA_MODE_ON ON}
+ *
+ * Available values for this device:
+ * android.Statistics.info.availableOisDataModes
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureResult#STATISTICS_OIS_TIMESTAMPS
+ * @see #STATISTICS_OIS_DATA_MODE_OFF
+ * @see #STATISTICS_OIS_DATA_MODE_ON
+ */
+ @PublicKey
+ public static final Key STATISTICS_OIS_DATA_MODE =
+ new Key("android.statistics.oisDataMode", int.class);
+
+ /**
+ * An array of timestamps of OIS samples, in nanoseconds.
+ * The array contains the timestamps of OIS samples. The timestamps are in the same
+ * timebase as and comparable to {@link CaptureResult#SENSOR_TIMESTAMP android.sensor.timestamp}.
+ * Units: nanoseconds
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureResult#SENSOR_TIMESTAMP
+ */
+ @PublicKey
+ public static final Key STATISTICS_OIS_TIMESTAMPS =
+ new Key("android.statistics.oisTimestamps", long[].class);
+
+ /**
+ * An array of shifts of OIS samples, in x direction.
+ * The array contains the amount of shifts in x direction, in pixels, based on OIS samples.
+ * A positive value is a shift from left to right in active array coordinate system. For
+ * example, if the optical center is (1000, 500) in active array coordinates, an shift of
+ * (3, 0) puts the new optical center at (1003, 500).
+ * The number of shifts must match the number of timestamps in
+ * {@link CaptureResult#STATISTICS_OIS_TIMESTAMPS android.statistics.oisTimestamps}.
+ * Units: Pixels in active array.
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureResult#STATISTICS_OIS_TIMESTAMPS
+ */
+ @PublicKey
+ public static final Key STATISTICS_OIS_X_SHIFTS =
+ new Key("android.statistics.oisXShifts", float[].class);
+
+ /**
+ * An array of shifts of OIS samples, in y direction.
+ * The array contains the amount of shifts in y direction, in pixels, based on OIS samples.
+ * A positive value is a shift from top to bottom in active array coordinate system. For
+ * example, if the optical center is (1000, 500) in active array coordinates, an shift of
+ * (0, 5) puts the new optical center at (1000, 505).
+ * The number of shifts must match the number of timestamps in
+ * {@link CaptureResult#STATISTICS_OIS_TIMESTAMPS android.statistics.oisTimestamps}.
+ * Units: Pixels in active array.
+ * Optional - This value may be {@code null} on some devices.
+ *
+ * @see CaptureResult#STATISTICS_OIS_TIMESTAMPS
+ */
+ @PublicKey
+ public static final Key STATISTICS_OIS_Y_SHIFTS =
+ new Key("android.statistics.oisYShifts", float[].class);
+
/**
* Tonemapping / contrast / gamma curve for the blue
* channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is