diff --git a/camera/ndk/impl/ACameraMetadata.cpp b/camera/ndk/impl/ACameraMetadata.cpp index 2aeffa2830..bfa60d98c6 100644 --- a/camera/ndk/impl/ACameraMetadata.cpp +++ b/camera/ndk/impl/ACameraMetadata.cpp @@ -508,7 +508,7 @@ ACameraMetadata::isCaptureRequestTag(const uint32_t tag) { 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 8b371db9c9..4f9b0d1a16 100644 --- a/camera/ndk/include/camera/NdkCameraMetadataTags.h +++ b/camera/ndk/include/camera/NdkCameraMetadataTags.h @@ -984,10 +984,10 @@ typedef enum acamera_metadata_tag { * capture parameters itself.
*When set to AUTO, the individual algorithm controls in * ACAMERA_CONTROL_* are in effect, such as ACAMERA_CONTROL_AF_MODE.
- *When set to USE_SCENE_MODE, the individual controls in + *
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}.
*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 @@ typedef enum acamera_metadata_tag { ACAMERA_CONTROL_AF_SCENE_CHANGE = // byte (acamera_metadata_enum_android_control_af_scene_change_t) ACAMERA_CONTROL_START + 42, /** - *
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.
+ *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.
* - * @see ACAMERA_CONTROL_BOKEH_MODE + * @see ACAMERA_CONTROL_EXTENDED_SCENE_MODE * *Type: int32[3*n]
* @@ -1780,28 +1781,28 @@ typedef enum acamera_metadata_tag { *For OFF mode, the camera behaves normally with no bokeh effect.
- *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.
- *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.
- */ - ACAMERA_CONTROL_AVAILABLE_BOKEH_MAX_SIZES = // int32[3*n] + *For DISABLED mode, the camera behaves normally with no extended scene mode enabled.
+ *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.
+ *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.
+ */ + ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES = // int32[3*n] ACAMERA_CONTROL_START + 43, /** - *The ranges of supported zoom ratio for non-OFF ACAMERA_CONTROL_BOKEH_MODE.
+ *The ranges of supported zoom ratio for non-DISABLED ACAMERA_CONTROL_EXTENDED_SCENE_MODE.
* - * @see ACAMERA_CONTROL_BOKEH_MODE + * @see ACAMERA_CONTROL_EXTENDED_SCENE_MODE * *Type: float[2*n]
* @@ -1810,20 +1811,19 @@ typedef enum acamera_metadata_tag { *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.
+ *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.
*Range [1.0, 1.0] means that no zoom (optical or digital) is supported.
- * - * @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, /** - *Whether bokeh mode is enabled for a particular capture request.
+ *Whether extended scene mode is enabled for a particular capture request.
* - *Type: byte (acamera_metadata_enum_android_control_bokeh_mode_t)
+ *Type: byte (acamera_metadata_enum_android_control_extended_scene_mode_t)
* *This tag may appear in: *
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.
- *When set to STILL_CAPTURE bokeh mode with STILL_CAPTURE capture intent, due to the extra + *
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.
- *When set to STILL_CAPTURE bokeh mode with PREVIEW capture intent,
+ *When set to BOKEH_STILL_CAPTURE mode with PREVIEW capture intent,
*When set to CONTINUOUS mode, configured streams dimension should not exceed this mode's + *
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.
- *Switching between different bokeh modes may involve reconfiguration of the camera + *
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 }.
- *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.
*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.
+ * 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. * + * @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, /** *Minimum and maximum zoom ratios supported by this camera device.
@@ -6891,6 +6888,7 @@ typedef enum acamera_metadata_enum_acamera_control_mode { * This setting can only be used if scene mode is supported (i.e. * ACAMERA_CONTROL_AVAILABLE_SCENE_MODES * contain some modes other than DISABLED). + *For extended scene modes such as BOKEH, please use USE_EXTENDED_SCENE_MODE instead.
* * @see ACAMERA_CONTROL_AVAILABLE_SCENE_MODES */ @@ -6908,6 +6906,18 @@ typedef enum acamera_metadata_enum_acamera_control_mode { */ ACAMERA_CONTROL_MODE_OFF_KEEP_STATE = 3, + /** + *Use a specific extended scene mode.
+ *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.
+ *This setting can only be used if extended scene mode is supported (i.e. + * android.control.availableExtendedSceneModes + * contains some modes other than DISABLED).
+ */ + ACAMERA_CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4, + } acamera_metadata_enum_android_control_mode_t; // ACAMERA_CONTROL_SCENE_MODE @@ -7297,12 +7307,12 @@ typedef enum acamera_metadata_enum_acamera_control_af_scene_change { } 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 { /** - *Bokeh mode is disabled.
+ *Extended scene mode is disabled.
*/ - ACAMERA_CONTROL_BOKEH_MODE_OFF = 0, + ACAMERA_CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0, /** *High quality bokeh mode is enabled for all non-raw streams (including YUV, @@ -7310,7 +7320,7 @@ typedef enum acamera_metadata_enum_acamera_control_bokeh_mode { * 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.
*/ - ACAMERA_CONTROL_BOKEH_MODE_STILL_CAPTURE = 1, + ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1, /** *Bokeh effect must not slow down capture rate relative to sensor raw output, @@ -7318,9 +7328,9 @@ typedef enum acamera_metadata_enum_acamera_control_bokeh_mode { * streaming dimension. This mode should be used if performance and power are a * priority, such as video recording.
*/ - 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;