From 2d5e89778e955b4ff209a93e738761356349d48c Mon Sep 17 00:00:00 2001
From: Zhijun He
Date: Fri, 7 Feb 2014 16:13:46 -0800
Subject: Camera2: Add OFF_KEEP_STATE mode
Change-Id: I8802339a6b6d8a009f3ba790ffad23c0fcbbfa94
---
api/current.txt | 1 +
core/java/android/hardware/camera2/CameraMetadata.java | 8 ++++++++
core/java/android/hardware/camera2/CaptureRequest.java | 10 ++++++++--
core/java/android/hardware/camera2/CaptureResult.java | 6 ++++++
4 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/api/current.txt b/api/current.txt
index c08118e4a637..e27a2ed3c0c7 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -11427,6 +11427,7 @@ package android.hardware.camera2 {
field public static final int CONTROL_EFFECT_MODE_WHITEBOARD = 6; // 0x6
field public static final int CONTROL_MODE_AUTO = 1; // 0x1
field public static final int CONTROL_MODE_OFF = 0; // 0x0
+ field public static final int CONTROL_MODE_OFF_KEEP_STATE = 3; // 0x3
field public static final int CONTROL_MODE_USE_SCENE_MODE = 2; // 0x2
field public static final int CONTROL_SCENE_MODE_ACTION = 2; // 0x2
field public static final int CONTROL_SCENE_MODE_BARCODE = 16; // 0x10
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index 3a0056bd6f5e..03ee50871ef6 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -841,6 +841,14 @@ public abstract class CameraMetadata {
*/
public static final int CONTROL_MODE_USE_SCENE_MODE = 2;
+ /**
+ * Same as OFF mode, except that this capture will not be
+ * used by camera device background auto-exposure, auto-white balance and
+ * auto-focus algorithms to update their statistics.
+ * @see CaptureRequest#CONTROL_MODE
+ */
+ public static final int CONTROL_MODE_OFF_KEEP_STATE = 3;
+
//
// Enumeration values for CaptureRequest#CONTROL_SCENE_MODE
//
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index ee180417b540..8f91e0789e2d 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -639,10 +639,10 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
/**
* Whether AWB is currently locked to its
- * latest calculated values
+ * latest calculated values.
* Note that AWB lock is only meaningful for AUTO
* mode; in other modes, AWB is already fixed to a specific
- * setting
+ * setting.
*/
public static final Key CONTROL_AWB_LOCK =
new Key("android.control.awbLock", boolean.class);
@@ -763,11 +763,17 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
* one of the scene mode settings (such as ACTION, SUNSET, or PARTY)
* as it wishes. The camera device scene mode 3A settings are provided by
* android.control.sceneModeOverrides.
+ * When set to OFF_KEEP_STATE, it is similar to OFF mode, the only difference
+ * is that this frame will not be used by camera device background 3A statistics
+ * update, as if this frame is never captured. This mode can be used in the scenario
+ * where the application doesn't want a 3A manual control capture to affect
+ * the subsequent auto 3A capture results.
*
* @see CaptureRequest#CONTROL_AF_MODE
* @see #CONTROL_MODE_OFF
* @see #CONTROL_MODE_AUTO
* @see #CONTROL_MODE_USE_SCENE_MODE
+ * @see #CONTROL_MODE_OFF_KEEP_STATE
*/
public static final Key CONTROL_MODE =
new Key("android.control.mode", int.class);
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 543ce214712c..2d82a1f33cab 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -938,11 +938,17 @@ public final class CaptureResult extends CameraMetadata {
* one of the scene mode settings (such as ACTION, SUNSET, or PARTY)
* as it wishes. The camera device scene mode 3A settings are provided by
* android.control.sceneModeOverrides.
+ * When set to OFF_KEEP_STATE, it is similar to OFF mode, the only difference
+ * is that this frame will not be used by camera device background 3A statistics
+ * update, as if this frame is never captured. This mode can be used in the scenario
+ * where the application doesn't want a 3A manual control capture to affect
+ * the subsequent auto 3A capture results.
*
* @see CaptureRequest#CONTROL_AF_MODE
* @see #CONTROL_MODE_OFF
* @see #CONTROL_MODE_AUTO
* @see #CONTROL_MODE_USE_SCENE_MODE
+ * @see #CONTROL_MODE_OFF_KEEP_STATE
*/
public static final Key CONTROL_MODE =
new Key("android.control.mode", int.class);
--
cgit v1.2.3-59-g8ed1b