Merge "Camera: Move bokeh mode to extended scene mode." into rvc-dev am: 1939a00071 am: 25d9dd2f15 am: a3d3cde08f am: d7f81626da
Change-Id: Ia58ca70825abf1d8ad4a26ea58bac0652bc0da68
diff --git a/camera/ndk/impl/ACameraMetadata.cpp b/camera/ndk/impl/ACameraMetadata.cpp
index 446ca4f..631f6cd 100644
--- a/camera/ndk/impl/ACameraMetadata.cpp
+++ b/camera/ndk/impl/ACameraMetadata.cpp
@@ -508,7 +508,7 @@
case ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE:
case ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST:
case ACAMERA_CONTROL_ENABLE_ZSL:
- case ACAMERA_CONTROL_BOKEH_MODE:
+ case ACAMERA_CONTROL_EXTENDED_SCENE_MODE:
case ACAMERA_CONTROL_ZOOM_RATIO:
case ACAMERA_EDGE_MODE:
case ACAMERA_FLASH_MODE:
diff --git a/camera/ndk/include/camera/NdkCameraMetadataTags.h b/camera/ndk/include/camera/NdkCameraMetadataTags.h
index bd259eb..28feafc 100644
--- a/camera/ndk/include/camera/NdkCameraMetadataTags.h
+++ b/camera/ndk/include/camera/NdkCameraMetadataTags.h
@@ -984,10 +984,10 @@
* capture parameters itself.</p>
* <p>When set to AUTO, the individual algorithm controls in
* ACAMERA_CONTROL_* are in effect, such as ACAMERA_CONTROL_AF_MODE.</p>
- * <p>When set to USE_SCENE_MODE, the individual controls in
+ * <p>When set to USE_SCENE_MODE or USE_EXTENDED_SCENE_MODE, the individual controls in
* ACAMERA_CONTROL_* are mostly disabled, and the camera device
- * implements one of the scene mode settings (such as ACTION,
- * SUNSET, or PARTY) as it wishes. The camera device scene mode
+ * implements one of the scene mode or extended scene mode settings (such as ACTION,
+ * SUNSET, PARTY, or BOKEH) as it wishes. The camera device scene mode
* 3A settings are provided by {@link ACameraCaptureSession_captureCallback_result capture results}.</p>
* <p>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
@@ -1768,10 +1768,11 @@
ACAMERA_CONTROL_AF_SCENE_CHANGE = // byte (acamera_metadata_enum_android_control_af_scene_change_t)
ACAMERA_CONTROL_START + 42,
/**
- * <p>The list of bokeh modes for ACAMERA_CONTROL_BOKEH_MODE that are supported by this camera
- * device, and each bokeh mode's maximum streaming (non-stall) size with bokeh effect.</p>
+ * <p>The list of extended scene modes for ACAMERA_CONTROL_EXTENDED_SCENE_MODE that are supported
+ * by this camera device, and each extended scene mode's maximum streaming (non-stall) size
+ * with effect.</p>
*
- * @see ACAMERA_CONTROL_BOKEH_MODE
+ * @see ACAMERA_CONTROL_EXTENDED_SCENE_MODE
*
* <p>Type: int32[3*n]</p>
*
@@ -1780,28 +1781,28 @@
* <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li>
* </ul></p>
*
- * <p>For OFF mode, the camera behaves normally with no bokeh effect.</p>
- * <p>For STILL_CAPTURE mode, the maximum streaming dimension specifies the limit under which
- * bokeh is effective when capture intent is PREVIEW. Note that when capture intent is
- * PREVIEW, the bokeh effect may not be as high quality compared to STILL_CAPTURE intent
- * in order to maintain reasonable frame rate. The maximum streaming dimension must be one
- * of the YUV_420_888 or PRIVATE resolutions in availableStreamConfigurations, or (0, 0)
- * if preview bokeh is not supported. If the application configures a stream larger than
- * the maximum streaming dimension, bokeh effect may not be applied for this stream for
- * PREVIEW intent.</p>
- * <p>For CONTINUOUS mode, the maximum streaming dimension specifies the limit under which
- * bokeh is effective. This dimension must be one of the YUV_420_888 or PRIVATE resolutions
- * in availableStreamConfigurations, and if the sensor maximum resolution is larger than or
- * equal to 1080p, the maximum streaming dimension must be at least 1080p. If the
- * application configures a stream with larger dimension, the stream may not have bokeh
- * effect applied.</p>
+ * <p>For DISABLED mode, the camera behaves normally with no extended scene mode enabled.</p>
+ * <p>For BOKEH_STILL_CAPTURE mode, the maximum streaming dimension specifies the limit
+ * under which bokeh is effective when capture intent is PREVIEW. Note that when capture
+ * intent is PREVIEW, the bokeh effect may not be as high in quality compared to
+ * STILL_CAPTURE intent in order to maintain reasonable frame rate. The maximum streaming
+ * dimension must be one of the YUV_420_888 or PRIVATE resolutions in
+ * availableStreamConfigurations, or (0, 0) if preview bokeh is not supported. If the
+ * application configures a stream larger than the maximum streaming dimension, bokeh
+ * effect may not be applied for this stream for PREVIEW intent.</p>
+ * <p>For BOKEH_CONTINUOUS mode, the maximum streaming dimension specifies the limit under
+ * which bokeh is effective. This dimension must be one of the YUV_420_888 or PRIVATE
+ * resolutions in availableStreamConfigurations, and if the sensor maximum resolution is
+ * larger than or equal to 1080p, the maximum streaming dimension must be at least 1080p.
+ * If the application configures a stream with larger dimension, the stream may not have
+ * bokeh effect applied.</p>
*/
- ACAMERA_CONTROL_AVAILABLE_BOKEH_MAX_SIZES = // int32[3*n]
+ ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES = // int32[3*n]
ACAMERA_CONTROL_START + 43,
/**
- * <p>The ranges of supported zoom ratio for non-OFF ACAMERA_CONTROL_BOKEH_MODE.</p>
+ * <p>The ranges of supported zoom ratio for non-DISABLED ACAMERA_CONTROL_EXTENDED_SCENE_MODE.</p>
*
- * @see ACAMERA_CONTROL_BOKEH_MODE
+ * @see ACAMERA_CONTROL_EXTENDED_SCENE_MODE
*
* <p>Type: float[2*n]</p>
*
@@ -1810,20 +1811,19 @@
* <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li>
* </ul></p>
*
- * <p>When bokeh mode is enabled, the camera device may have limited range of zoom ratios
- * compared to when bokeh mode is disabled. This tag lists the zoom ratio ranges for all
- * supported non-OFF bokeh modes, in the same order as in
- * ACAMERA_CONTROL_AVAILABLE_BOKEH_CAPABILITIES.</p>
+ * <p>When extended scene mode is set, the camera device may have limited range of zoom ratios
+ * compared to when extended scene mode is DISABLED. This tag lists the zoom ratio ranges
+ * for all supported non-DISABLED extended scene modes, in the same order as in
+ * android.control.availableExtended.</p>
* <p>Range [1.0, 1.0] means that no zoom (optical or digital) is supported.</p>
- *
- * @see ACAMERA_CONTROL_AVAILABLE_BOKEH_CAPABILITIES
*/
- ACAMERA_CONTROL_AVAILABLE_BOKEH_ZOOM_RATIO_RANGES = // float[2*n]
+ ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES =
+ // float[2*n]
ACAMERA_CONTROL_START + 44,
/**
- * <p>Whether bokeh mode is enabled for a particular capture request.</p>
+ * <p>Whether extended scene mode is enabled for a particular capture request.</p>
*
- * <p>Type: byte (acamera_metadata_enum_android_control_bokeh_mode_t)</p>
+ * <p>Type: byte (acamera_metadata_enum_android_control_extended_scene_mode_t)</p>
*
* <p>This tag may appear in:
* <ul>
@@ -1833,36 +1833,33 @@
*
* <p>With bokeh mode, the camera device may blur out the parts of scene that are not in
* focus, creating a bokeh (or shallow depth of field) effect for people or objects.</p>
- * <p>When set to STILL_CAPTURE bokeh mode with STILL_CAPTURE capture intent, due to the extra
+ * <p>When set to BOKEH_STILL_CAPTURE mode with STILL_CAPTURE capture intent, due to the extra
* processing needed for high quality bokeh effect, the stall may be longer than when
* capture intent is not STILL_CAPTURE.</p>
- * <p>When set to STILL_CAPTURE bokeh mode with PREVIEW capture intent,</p>
+ * <p>When set to BOKEH_STILL_CAPTURE mode with PREVIEW capture intent,</p>
* <ul>
* <li>If the camera device has BURST_CAPTURE capability, the frame rate requirement of
* BURST_CAPTURE must still be met.</li>
- * <li>All streams not larger than the maximum streaming dimension for STILL_CAPTURE mode
- * (queried via {@link ACAMERA_CONTROL_AVAILABLE_BOKEH_CAPABILITIES })
+ * <li>All streams not larger than the maximum streaming dimension for BOKEH_STILL_CAPTURE mode
+ * (queried via {@link ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES })
* will have preview bokeh effect applied.</li>
* </ul>
- * <p>When set to CONTINUOUS mode, configured streams dimension should not exceed this mode's
+ * <p>When set to BOKEH_CONTINUOUS mode, configured streams dimension should not exceed this mode's
* maximum streaming dimension in order to have bokeh effect applied. Bokeh effect may not
* be available for streams larger than the maximum streaming dimension.</p>
- * <p>Switching between different bokeh modes may involve reconfiguration of the camera
+ * <p>Switching between different extended scene modes may involve reconfiguration of the camera
* pipeline, resulting in long latency. The application should check this key against the
* available session keys queried via
* {@link ACameraManager_getCameraCharacteristics }.</p>
- * <p>When bokeh mode is on, the camera device may override certain control parameters, such as
- * reduce frame rate or use face priority scene mode, to achieve best power and quality
- * tradeoffs. When turned on, AE, AWB, and AF run in auto modes, and only the mandatory
- * stream combinations of LIMITED hardware level are guaranteed.</p>
* <p>For a logical multi-camera, bokeh may be implemented by stereo vision from sub-cameras
* with different field of view. As a result, when bokeh mode is enabled, the camera device
- * may override ACAMERA_SCALER_CROP_REGION, and the field of view will be smaller than when
- * bokeh mode is off.</p>
+ * may override ACAMERA_SCALER_CROP_REGION or ACAMERA_CONTROL_ZOOM_RATIO, and the field of
+ * view may be smaller than when bokeh mode is off.</p>
*
+ * @see ACAMERA_CONTROL_ZOOM_RATIO
* @see ACAMERA_SCALER_CROP_REGION
*/
- ACAMERA_CONTROL_BOKEH_MODE = // byte (acamera_metadata_enum_android_control_bokeh_mode_t)
+ ACAMERA_CONTROL_EXTENDED_SCENE_MODE = // byte (acamera_metadata_enum_android_control_extended_scene_mode_t)
ACAMERA_CONTROL_START + 45,
/**
* <p>Minimum and maximum zoom ratios supported by this camera device.</p>
@@ -6993,6 +6990,7 @@
* This setting can only be used if scene mode is supported (i.e.
* ACAMERA_CONTROL_AVAILABLE_SCENE_MODES
* contain some modes other than DISABLED).</p>
+ * <p>For extended scene modes such as BOKEH, please use USE_EXTENDED_SCENE_MODE instead.</p>
*
* @see ACAMERA_CONTROL_AVAILABLE_SCENE_MODES
*/
@@ -7010,6 +7008,18 @@
*/
ACAMERA_CONTROL_MODE_OFF_KEEP_STATE = 3,
+ /**
+ * <p>Use a specific extended scene mode.</p>
+ * <p>When extended scene mode is on, the camera device may override certain control
+ * parameters, such as targetFpsRange, AE, AWB, and AF modes, to achieve best power and
+ * quality tradeoffs. Only the mandatory stream combinations of LIMITED hardware level
+ * are guaranteed.</p>
+ * <p>This setting can only be used if extended scene mode is supported (i.e.
+ * android.control.availableExtendedSceneModes
+ * contains some modes other than DISABLED).</p>
+ */
+ ACAMERA_CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4,
+
} acamera_metadata_enum_android_control_mode_t;
// ACAMERA_CONTROL_SCENE_MODE
@@ -7399,12 +7409,12 @@
} acamera_metadata_enum_android_control_af_scene_change_t;
-// ACAMERA_CONTROL_BOKEH_MODE
-typedef enum acamera_metadata_enum_acamera_control_bokeh_mode {
+// ACAMERA_CONTROL_EXTENDED_SCENE_MODE
+typedef enum acamera_metadata_enum_acamera_control_extended_scene_mode {
/**
- * <p>Bokeh mode is disabled.</p>
+ * <p>Extended scene mode is disabled.</p>
*/
- ACAMERA_CONTROL_BOKEH_MODE_OFF = 0,
+ ACAMERA_CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0,
/**
* <p>High quality bokeh mode is enabled for all non-raw streams (including YUV,
@@ -7412,7 +7422,7 @@
* extra image processing, this mode may introduce additional stall to non-raw streams.
* This mode should be used in high quality still capture use case.</p>
*/
- ACAMERA_CONTROL_BOKEH_MODE_STILL_CAPTURE = 1,
+ ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1,
/**
* <p>Bokeh effect must not slow down capture rate relative to sensor raw output,
@@ -7420,9 +7430,9 @@
* streaming dimension. This mode should be used if performance and power are a
* priority, such as video recording.</p>
*/
- ACAMERA_CONTROL_BOKEH_MODE_CONTINUOUS = 2,
+ ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS = 2,
-} acamera_metadata_enum_android_control_bokeh_mode_t;
+} acamera_metadata_enum_android_control_extended_scene_mode_t;