From 2ec8d2cac7b7a453c573cfd9744a135e831fd3cf Mon Sep 17 00:00:00 2001 From: Shuzhen Wang Date: Wed, 15 Feb 2023 17:01:24 -0800 Subject: [PATCH] Camera: document multiResolution raw behavior Document that mutiResolution RAW can be supported for a logical camera without RAW capability. Test: Build Bug: 269221911 Change-Id: I24269dd63c6f354a53c39de513a140907a0e41d2 Merged-In: I24269dd63c6f354a53c39de513a140907a0e41d2 --- .../camera2/CameraCharacteristics.java | 290 +++---- .../hardware/camera2/CameraMetadata.java | 35 +- .../hardware/camera2/CaptureResult.java | 760 +++++++++--------- 3 files changed, 543 insertions(+), 542 deletions(-) diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index 331a5abdc3b33..5b2ef6e305bf7 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -2609,31 +2609,31 @@ public final class CameraCharacteristics extends CameraMetadata * * - * Input Format - * Output Format - * Capability + * Input Format + * Output Format + * Capability * * * * - * {@link android.graphics.ImageFormat#PRIVATE } - * {@link android.graphics.ImageFormat#JPEG } - * PRIVATE_REPROCESSING + * {@link android.graphics.ImageFormat#PRIVATE } + * {@link android.graphics.ImageFormat#JPEG } + * PRIVATE_REPROCESSING * * - * {@link android.graphics.ImageFormat#PRIVATE } - * {@link android.graphics.ImageFormat#YUV_420_888 } - * PRIVATE_REPROCESSING + * {@link android.graphics.ImageFormat#PRIVATE } + * {@link android.graphics.ImageFormat#YUV_420_888 } + * PRIVATE_REPROCESSING * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * {@link android.graphics.ImageFormat#JPEG } - * YUV_REPROCESSING + * {@link android.graphics.ImageFormat#YUV_420_888 } + * {@link android.graphics.ImageFormat#JPEG } + * YUV_REPROCESSING * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * {@link android.graphics.ImageFormat#YUV_420_888 } - * YUV_REPROCESSING + * {@link android.graphics.ImageFormat#YUV_420_888 } + * {@link android.graphics.ImageFormat#YUV_420_888 } + * YUV_REPROCESSING * * * @@ -2650,26 +2650,26 @@ public final class CameraCharacteristics extends CameraMetadata * * - * Input Format - * Output Format - * Capability + * Input Format + * Output Format + * Capability * * * * - * {@link android.graphics.ImageFormat#PRIVATE } - * {@link android.graphics.ImageFormat#Y8 } - * PRIVATE_REPROCESSING + * {@link android.graphics.ImageFormat#PRIVATE } + * {@link android.graphics.ImageFormat#Y8 } + * PRIVATE_REPROCESSING * * - * {@link android.graphics.ImageFormat#Y8 } - * {@link android.graphics.ImageFormat#JPEG } - * YUV_REPROCESSING + * {@link android.graphics.ImageFormat#Y8 } + * {@link android.graphics.ImageFormat#JPEG } + * YUV_REPROCESSING * * - * {@link android.graphics.ImageFormat#Y8 } - * {@link android.graphics.ImageFormat#Y8 } - * YUV_REPROCESSING + * {@link android.graphics.ImageFormat#Y8 } + * {@link android.graphics.ImageFormat#Y8 } + * YUV_REPROCESSING * * * @@ -2705,60 +2705,60 @@ public final class CameraCharacteristics extends CameraMetadata * * - * Format - * Size - * Hardware Level - * Notes + * Format + * Size + * Hardware Level + * Notes * * * * - * JPEG - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} - * Any - * + * JPEG + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} + * Any + * * * - * JPEG - * 1920x1080 (1080p) - * Any - * if 1080p <= activeArraySize + * JPEG + * 1920x1080 (1080p) + * Any + * if 1080p <= activeArraySize * * - * JPEG - * 1280x720 (720) - * Any - * if 720p <= activeArraySize + * JPEG + * 1280x720 (720) + * Any + * if 720p <= activeArraySize * * - * JPEG - * 640x480 (480p) - * Any - * if 480p <= activeArraySize + * JPEG + * 640x480 (480p) + * Any + * if 480p <= activeArraySize * * - * JPEG - * 320x240 (240p) - * Any - * if 240p <= activeArraySize + * JPEG + * 320x240 (240p) + * Any + * if 240p <= activeArraySize * * - * YUV_420_888 - * all output sizes available for JPEG - * FULL - * + * YUV_420_888 + * all output sizes available for JPEG + * FULL + * * * - * YUV_420_888 - * all output sizes available for JPEG, up to the maximum video size - * LIMITED - * + * YUV_420_888 + * all output sizes available for JPEG, up to the maximum video size + * LIMITED + * * * - * IMPLEMENTATION_DEFINED - * same as YUV_420_888 - * Any - * + * IMPLEMENTATION_DEFINED + * same as YUV_420_888 + * Any + * * * * @@ -2773,66 +2773,66 @@ public final class CameraCharacteristics extends CameraMetadata * * - * Format - * Size - * Hardware Level - * Notes + * Format + * Size + * Hardware Level + * Notes * * * * - * JPEG - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} - * Any - * + * JPEG + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} + * Any + * * * - * JPEG - * 1920x1080 (1080p) - * Any - * if 1080p <= activeArraySize + * JPEG + * 1920x1080 (1080p) + * Any + * if 1080p <= activeArraySize * * - * YUV_420_888 - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} - * FULL - * + * YUV_420_888 + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} + * FULL + * * * - * YUV_420_888 - * 1920x1080 (1080p) - * FULL - * if 1080p <= activeArraySize + * YUV_420_888 + * 1920x1080 (1080p) + * FULL + * if 1080p <= activeArraySize * * - * YUV_420_888 - * 1280x720 (720) - * FULL - * if 720p <= activeArraySize + * YUV_420_888 + * 1280x720 (720) + * FULL + * if 720p <= activeArraySize * * - * YUV_420_888 - * 640x480 (480p) - * FULL - * if 480p <= activeArraySize + * YUV_420_888 + * 640x480 (480p) + * FULL + * if 480p <= activeArraySize * * - * YUV_420_888 - * 320x240 (240p) - * FULL - * if 240p <= activeArraySize + * YUV_420_888 + * 320x240 (240p) + * FULL + * if 240p <= activeArraySize * * - * YUV_420_888 - * all output sizes available for FULL hardware level, up to the maximum video size - * LIMITED - * + * YUV_420_888 + * all output sizes available for FULL hardware level, up to the maximum video size + * LIMITED + * * * - * IMPLEMENTATION_DEFINED - * same as YUV_420_888 - * Any - * + * IMPLEMENTATION_DEFINED + * same as YUV_420_888 + * Any + * * * * @@ -2987,66 +2987,66 @@ public final class CameraCharacteristics extends CameraMetadata * * - * Format - * Size - * Hardware Level - * Notes + * Format + * Size + * Hardware Level + * Notes * * * * - * {@link android.graphics.ImageFormat#JPEG } - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} (*1) - * Any - * + * {@link android.graphics.ImageFormat#JPEG } + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} (*1) + * Any + * * * - * {@link android.graphics.ImageFormat#JPEG } - * 1920x1080 (1080p) - * Any - * if 1080p <= activeArraySize + * {@link android.graphics.ImageFormat#JPEG } + * 1920x1080 (1080p) + * Any + * if 1080p <= activeArraySize * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} - * FULL - * + * {@link android.graphics.ImageFormat#YUV_420_888 } + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} + * FULL + * * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * 1920x1080 (1080p) - * FULL - * if 1080p <= activeArraySize + * {@link android.graphics.ImageFormat#YUV_420_888 } + * 1920x1080 (1080p) + * FULL + * if 1080p <= activeArraySize * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * 1280x720 (720) - * FULL - * if 720p <= activeArraySize + * {@link android.graphics.ImageFormat#YUV_420_888 } + * 1280x720 (720) + * FULL + * if 720p <= activeArraySize * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * 640x480 (480p) - * FULL - * if 480p <= activeArraySize + * {@link android.graphics.ImageFormat#YUV_420_888 } + * 640x480 (480p) + * FULL + * if 480p <= activeArraySize * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * 320x240 (240p) - * FULL - * if 240p <= activeArraySize + * {@link android.graphics.ImageFormat#YUV_420_888 } + * 320x240 (240p) + * FULL + * if 240p <= activeArraySize * * - * {@link android.graphics.ImageFormat#YUV_420_888 } - * all output sizes available for FULL hardware level, up to the maximum video size - * LIMITED - * + * {@link android.graphics.ImageFormat#YUV_420_888 } + * all output sizes available for FULL hardware level, up to the maximum video size + * LIMITED + * * * - * {@link android.graphics.ImageFormat#PRIVATE } - * same as YUV_420_888 - * Any - * + * {@link android.graphics.ImageFormat#PRIVATE } + * same as YUV_420_888 + * Any + * * * * @@ -3492,8 +3492,8 @@ public final class CameraCharacteristics extends CameraMetadataAn array of mandatory stream combinations which are applicable when device lists * {@code PREVIEW_STABILIZATION} in {@link CameraCharacteristics#CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES android.control.availableVideoStabilizationModes}. - * This is an app-readable conversion of the preview stabilization mandatory stream combination - * {@link android.hardware.camera2.CameraDevice#createCaptureSession tables}.

+ * This is an app-readable conversion of the preview stabilization mandatory stream + * combination {@link android.hardware.camera2.CameraDevice#createCaptureSession tables}.

*

The array of * {@link android.hardware.camera2.params.MandatoryStreamCombination combinations} is * generated according to the documented diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index c67a560b58857..7055c9c6aa4dd 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -1000,24 +1000,25 @@ public abstract class CameraMetadata { * camera's crop region is set to maximum size, the FOV of the physical streams for the * ultrawide lens will be the same as the logical stream, by making the crop region * smaller than its active array size to compensate for the smaller focal length.

- *

There are two ways for the application to capture RAW images from a logical camera - * with RAW capability:

+ *

For a logical camera, typically the underlying physical cameras have different RAW + * capabilities (such as resolution or CFA pattern). There are two ways for the + * application to capture RAW images from the logical camera:

*
    - *
  • Because the underlying physical cameras may have different RAW capabilities (such - * as resolution or CFA pattern), to maintain backward compatibility, when a RAW stream - * is configured, the camera device makes sure the default active physical camera remains - * active and does not switch to other physical cameras. (One exception is that, if the - * logical camera consists of identical image sensors and advertises multiple focalLength - * due to different lenses, the camera device may generate RAW images from different - * physical cameras based on the focalLength being set by the application.) This - * backward-compatible approach usually results in loss of optical zoom, to telephoto - * lens or to ultrawide lens.
  • - *
  • Alternatively, to take advantage of the full zoomRatio range of the logical camera, - * the application should use {@link android.hardware.camera2.MultiResolutionImageReader } - * to capture RAW images from the currently active physical camera. Because different - * physical camera may have different RAW characteristics, the application needs to use - * the characteristics and result metadata of the active physical camera for the - * relevant RAW metadata.
  • + *
  • If the logical camera has RAW capability, the application can create and use RAW + * streams in the same way as before. In case a RAW stream is configured, to maintain + * backward compatibility, the camera device makes sure the default active physical + * camera remains active and does not switch to other physical cameras. (One exception + * is that, if the logical camera consists of identical image sensors and advertises + * multiple focalLength due to different lenses, the camera device may generate RAW + * images from different physical cameras based on the focalLength being set by the + * application.) This backward-compatible approach usually results in loss of optical + * zoom, to telephoto lens or to ultrawide lens.
  • + *
  • Alternatively, if supported by the device, + * {@link android.hardware.camera2.MultiResolutionImageReader } + * can be used to capture RAW images from one of the underlying physical cameras ( + * depending on current zoom level). Because different physical cameras may have + * different RAW characteristics, the application needs to use the characteristics + * and result metadata of the active physical camera for the relevant RAW metadata.
  • *
*

The capture request and result metadata tags required for backward compatible camera * functionalities will be solely based on the logical camera capability. On the other diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 3e1deb27584e3..1a15596af5667 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -990,18 +990,18 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVEINACTIVECamera device auto exposure algorithm is disabledINACTIVEINACTIVECamera device auto exposure algorithm is disabled
@@ -1009,120 +1009,120 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device initiates AE scanSEARCHINGValues changingINACTIVECamera device initiates AE scanSEARCHINGValues changing
INACTIVE{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues lockedINACTIVE{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues locked
SEARCHINGCamera device finishes AE scanCONVERGEDGood values, not changingSEARCHINGCamera device finishes AE scanCONVERGEDGood values, not changing
SEARCHINGCamera device finishes AE scanFLASH_REQUIREDConverged but too dark w/o flashSEARCHINGCamera device finishes AE scanFLASH_REQUIREDConverged but too dark w/o flash
SEARCHING{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues lockedSEARCHING{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues locked
CONVERGEDCamera device initiates AE scanSEARCHINGValues changingCONVERGEDCamera device initiates AE scanSEARCHINGValues changing
CONVERGED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues lockedCONVERGED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues locked
FLASH_REQUIREDCamera device initiates AE scanSEARCHINGValues changingFLASH_REQUIREDCamera device initiates AE scanSEARCHINGValues changing
FLASH_REQUIRED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues lockedFLASH_REQUIRED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDValues locked
LOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFSEARCHINGValues not good after unlockLOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFSEARCHINGValues not good after unlock
LOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFCONVERGEDValues good after unlockLOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFCONVERGEDValues good after unlock
LOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFFLASH_REQUIREDExposure good, but too darkLOCKED{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFFLASH_REQUIREDExposure good, but too dark
PRECAPTURESequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFCONVERGEDReady for high-quality capturePRECAPTURESequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFFCONVERGEDReady for high-quality capture
PRECAPTURESequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDReady for high-quality capturePRECAPTURESequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ONLOCKEDReady for high-quality capture
LOCKEDaeLock is ON and aePrecaptureTrigger is STARTLOCKEDPrecapture trigger is ignored when AE is already lockedLOCKEDaeLock is ON and aePrecaptureTrigger is STARTLOCKEDPrecapture trigger is ignored when AE is already locked
LOCKEDaeLock is ON and aePrecaptureTrigger is CANCELLOCKEDPrecapture trigger is ignored when AE is already lockedLOCKEDaeLock is ON and aePrecaptureTrigger is CANCELLOCKEDPrecapture trigger is ignored when AE is already locked
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is STARTPRECAPTUREStart AE precapture metering sequenceAny state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is STARTPRECAPTUREStart AE precapture metering sequence
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCELINACTIVECurrently active precapture metering sequence is canceledAny state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCELINACTIVECurrently active precapture metering sequence is canceled
@@ -1138,54 +1138,54 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device finished AE scanCONVERGEDValues are already good, transient states are skipped by camera device.INACTIVECamera device finished AE scanCONVERGEDValues are already good, transient states are skipped by camera device.
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is START, sequence doneFLASH_REQUIREDConverged but too dark w/o flash after a precapture sequence, transient states are skipped by camera device.Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is START, sequence doneFLASH_REQUIREDConverged but too dark w/o flash after a precapture sequence, transient states are skipped by camera device.
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is START, sequence doneCONVERGEDConverged after a precapture sequence, transient states are skipped by camera device.Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is START, sequence doneCONVERGEDConverged after a precapture sequence, transient states are skipped by camera device.
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCEL, convergedFLASH_REQUIREDConverged but too dark w/o flash after a precapture sequence is canceled, transient states are skipped by camera device.Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCEL, convergedFLASH_REQUIREDConverged but too dark w/o flash after a precapture sequence is canceled, transient states are skipped by camera device.
Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCEL, convergedCONVERGEDConverged after a precapture sequences canceled, transient states are skipped by camera device.Any state (excluding LOCKED){@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is CANCEL, convergedCONVERGEDConverged after a precapture sequences canceled, transient states are skipped by camera device.
CONVERGEDCamera device finished AE scanFLASH_REQUIREDConverged but too dark w/o flash after a new scan, transient states are skipped by camera device.CONVERGEDCamera device finished AE scanFLASH_REQUIREDConverged but too dark w/o flash after a new scan, transient states are skipped by camera device.
FLASH_REQUIREDCamera device finished AE scanCONVERGEDConverged after a new scan, transient states are skipped by camera device.FLASH_REQUIREDCamera device finished AE scanCONVERGEDConverged after a new scan, transient states are skipped by camera device.
@@ -1413,18 +1413,18 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVEINACTIVENever changesINACTIVEINACTIVENever changes
@@ -1432,66 +1432,66 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVEAF_TRIGGERACTIVE_SCANStart AF sweep, Lens now movingINACTIVEAF_TRIGGERACTIVE_SCANStart AF sweep, Lens now moving
ACTIVE_SCANAF sweep doneFOCUSED_LOCKEDFocused, Lens now lockedACTIVE_SCANAF sweep doneFOCUSED_LOCKEDFocused, Lens now locked
ACTIVE_SCANAF sweep doneNOT_FOCUSED_LOCKEDNot focused, Lens now lockedACTIVE_SCANAF sweep doneNOT_FOCUSED_LOCKEDNot focused, Lens now locked
ACTIVE_SCANAF_CANCELINACTIVECancel/reset AF, Lens now lockedACTIVE_SCANAF_CANCELINACTIVECancel/reset AF, Lens now locked
FOCUSED_LOCKEDAF_CANCELINACTIVECancel/reset AFFOCUSED_LOCKEDAF_CANCELINACTIVECancel/reset AF
FOCUSED_LOCKEDAF_TRIGGERACTIVE_SCANStart new sweep, Lens now movingFOCUSED_LOCKEDAF_TRIGGERACTIVE_SCANStart new sweep, Lens now moving
NOT_FOCUSED_LOCKEDAF_CANCELINACTIVECancel/reset AFNOT_FOCUSED_LOCKEDAF_CANCELINACTIVECancel/reset AF
NOT_FOCUSED_LOCKEDAF_TRIGGERACTIVE_SCANStart new sweep, Lens now movingNOT_FOCUSED_LOCKEDAF_TRIGGERACTIVE_SCANStart new sweep, Lens now moving
Any stateMode changeINACTIVEAny stateMode changeINACTIVE
@@ -1504,36 +1504,36 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVEAF_TRIGGERFOCUSED_LOCKEDFocus is already good or good after a scan, lens is now locked.INACTIVEAF_TRIGGERFOCUSED_LOCKEDFocus is already good or good after a scan, lens is now locked.
INACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDFocus failed after a scan, lens is now locked.INACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDFocus failed after a scan, lens is now locked.
FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDFocus is already good or good after a scan, lens is now locked.FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDFocus is already good or good after a scan, lens is now locked.
NOT_FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDFocus is good after a scan, lens is not locked.NOT_FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDFocus is good after a scan, lens is not locked.
@@ -1541,102 +1541,102 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingINACTIVECamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
INACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDAF state query, Lens now lockedINACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDAF state query, Lens now locked
PASSIVE_SCANCamera device completes current scanPASSIVE_FOCUSEDEnd AF scan, Lens now lockedPASSIVE_SCANCamera device completes current scanPASSIVE_FOCUSEDEnd AF scan, Lens now locked
PASSIVE_SCANCamera device fails current scanPASSIVE_UNFOCUSEDEnd AF scan, Lens now lockedPASSIVE_SCANCamera device fails current scanPASSIVE_UNFOCUSEDEnd AF scan, Lens now locked
PASSIVE_SCANAF_TRIGGERFOCUSED_LOCKEDImmediate transition, if focus is good. Lens now lockedPASSIVE_SCANAF_TRIGGERFOCUSED_LOCKEDImmediate transition, if focus is good. Lens now locked
PASSIVE_SCANAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate transition, if focus is bad. Lens now lockedPASSIVE_SCANAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate transition, if focus is bad. Lens now locked
PASSIVE_SCANAF_CANCELINACTIVEReset lens position, Lens now lockedPASSIVE_SCANAF_CANCELINACTIVEReset lens position, Lens now locked
PASSIVE_FOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingPASSIVE_FOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
PASSIVE_UNFOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingPASSIVE_UNFOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
PASSIVE_FOCUSEDAF_TRIGGERFOCUSED_LOCKEDImmediate transition, lens now lockedPASSIVE_FOCUSEDAF_TRIGGERFOCUSED_LOCKEDImmediate transition, lens now locked
PASSIVE_UNFOCUSEDAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate transition, lens now lockedPASSIVE_UNFOCUSEDAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate transition, lens now locked
FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDNo effectFOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDNo effect
FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scanFOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scan
NOT_FOCUSED_LOCKEDAF_TRIGGERNOT_FOCUSED_LOCKEDNo effectNOT_FOCUSED_LOCKEDAF_TRIGGERNOT_FOCUSED_LOCKEDNo effect
NOT_FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scanNOT_FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scan
@@ -1644,102 +1644,102 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingINACTIVECamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
INACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDAF state query, Lens now lockedINACTIVEAF_TRIGGERNOT_FOCUSED_LOCKEDAF state query, Lens now locked
PASSIVE_SCANCamera device completes current scanPASSIVE_FOCUSEDEnd AF scan, Lens now lockedPASSIVE_SCANCamera device completes current scanPASSIVE_FOCUSEDEnd AF scan, Lens now locked
PASSIVE_SCANCamera device fails current scanPASSIVE_UNFOCUSEDEnd AF scan, Lens now lockedPASSIVE_SCANCamera device fails current scanPASSIVE_UNFOCUSEDEnd AF scan, Lens now locked
PASSIVE_SCANAF_TRIGGERFOCUSED_LOCKEDEventual transition once the focus is good. Lens now lockedPASSIVE_SCANAF_TRIGGERFOCUSED_LOCKEDEventual transition once the focus is good. Lens now locked
PASSIVE_SCANAF_TRIGGERNOT_FOCUSED_LOCKEDEventual transition if cannot find focus. Lens now lockedPASSIVE_SCANAF_TRIGGERNOT_FOCUSED_LOCKEDEventual transition if cannot find focus. Lens now locked
PASSIVE_SCANAF_CANCELINACTIVEReset lens position, Lens now lockedPASSIVE_SCANAF_CANCELINACTIVEReset lens position, Lens now locked
PASSIVE_FOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingPASSIVE_FOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
PASSIVE_UNFOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now movingPASSIVE_UNFOCUSEDCamera device initiates new scanPASSIVE_SCANStart AF scan, Lens now moving
PASSIVE_FOCUSEDAF_TRIGGERFOCUSED_LOCKEDImmediate trans. Lens now lockedPASSIVE_FOCUSEDAF_TRIGGERFOCUSED_LOCKEDImmediate trans. Lens now locked
PASSIVE_UNFOCUSEDAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate trans. Lens now lockedPASSIVE_UNFOCUSEDAF_TRIGGERNOT_FOCUSED_LOCKEDImmediate trans. Lens now locked
FOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDNo effectFOCUSED_LOCKEDAF_TRIGGERFOCUSED_LOCKEDNo effect
FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scanFOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scan
NOT_FOCUSED_LOCKEDAF_TRIGGERNOT_FOCUSED_LOCKEDNo effectNOT_FOCUSED_LOCKEDAF_TRIGGERNOT_FOCUSED_LOCKEDNo effect
NOT_FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scanNOT_FOCUSED_LOCKEDAF_CANCELINACTIVERestart AF scan
@@ -1751,30 +1751,30 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
any stateCAF-->AUTO mode switchINACTIVEMode switch without trigger, initial state must be INACTIVEany stateCAF-->AUTO mode switchINACTIVEMode switch without trigger, initial state must be INACTIVE
any stateCAF-->AUTO mode switch with AF_TRIGGERtrigger-reachable states from INACTIVEMode switch with trigger, INACTIVE is skippedany stateCAF-->AUTO mode switch with AF_TRIGGERtrigger-reachable states from INACTIVEMode switch with trigger, INACTIVE is skipped
any stateAUTO-->CAF mode switchpassively reachable states from INACTIVEMode switch without trigger, passive transient state is skippedany stateAUTO-->CAF mode switchpassively reachable states from INACTIVEMode switch without trigger, passive transient state is skipped
@@ -2053,18 +2053,18 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVEINACTIVECamera device auto white balance algorithm is disabledINACTIVEINACTIVECamera device auto white balance algorithm is disabled
@@ -2072,54 +2072,54 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device initiates AWB scanSEARCHINGValues changingINACTIVECamera device initiates AWB scanSEARCHINGValues changing
INACTIVE{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues lockedINACTIVE{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues locked
SEARCHINGCamera device finishes AWB scanCONVERGEDGood values, not changingSEARCHINGCamera device finishes AWB scanCONVERGEDGood values, not changing
SEARCHING{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues lockedSEARCHING{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues locked
CONVERGEDCamera device initiates AWB scanSEARCHINGValues changingCONVERGEDCamera device initiates AWB scanSEARCHINGValues changing
CONVERGED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues lockedCONVERGED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ONLOCKEDValues locked
LOCKED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFFSEARCHINGValues not good after unlockLOCKED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFFSEARCHINGValues not good after unlock
@@ -2132,24 +2132,24 @@ public class CaptureResult extends CameraMetadata> { * * * - * - * - * - * + * + * + * + * * * * * - * - * - * - * + * + * + * + * * * - * - * - * - * + * + * + * + * * * *
StateTransition CauseNew StateNotesStateTransition CauseNew StateNotes
INACTIVECamera device finished AWB scanCONVERGEDValues are already good, transient states are skipped by camera device.INACTIVECamera device finished AWB scanCONVERGEDValues are already good, transient states are skipped by camera device.
LOCKED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFFCONVERGEDValues good after unlock, transient states are skipped by camera device.LOCKED{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFFCONVERGEDValues good after unlock, transient states are skipped by camera device.