diff options
4 files changed, 560 insertions, 21 deletions
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index 55ca4865b409..54f7e37a4228 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -318,6 +318,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * OFF mode.</p> * <p>For FULL capability device ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} <code>==</code> FULL), OFF must be * included.</p> + * <p>LEGACY devices will always only support FAST mode.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL @@ -333,6 +335,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * supported by a given camera device. This field lists the * valid anti-banding modes that the application may request * for this camera device; they must include AUTO.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<int[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES = @@ -345,12 +348,15 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * given camera device, especially if no flash unit is * available. This entry lists the valid modes for * {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} for this camera device.</p> - * <p>All camera devices support ON, and all camera devices with - * flash units support ON_AUTO_FLASH and - * ON_ALWAYS_FLASH.</p> + * <p>All camera devices support ON, and all camera devices with flash + * units support ON_AUTO_FLASH and ON_ALWAYS_FLASH.</p> * <p>FULL mode camera devices always support OFF mode, * which enables application control of camera exposure time, * sensitivity, and frame duration.</p> + * <p>LEGACY mode camera devices never support OFF mode. + * LIMITED mode devices support OFF if they support the MANUAL_SENSOR + * capability.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_MODE */ @@ -361,6 +367,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>List of frame rate ranges supported by the * auto-exposure (AE) algorithm/hardware</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<android.util.Range<Integer>[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES = @@ -370,6 +377,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Maximum and minimum exposure compensation * setting, in counts of * {@link CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP android.control.aeCompensationStep}.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP */ @@ -380,6 +388,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>Smallest step by which exposure compensation * can be changed</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Rational> CONTROL_AE_COMPENSATION_STEP = @@ -394,8 +403,13 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>All LIMITED and FULL mode camera devices will support OFF mode, and all * camera devices with adjustable focuser units * (<code>{@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} > 0</code>) will support AUTO mode.</p> + * <p>LEGACY devices will support OFF mode only if they support + * focusing to infinity (by also setting {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance} to + * <code>0.0f</code>).</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AF_MODE + * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE */ @PublicKey @@ -414,6 +428,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * simply be set to OFF.</p> * <p>A color effect will only be applied if * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_EFFECT_MODE * @see CaptureRequest#CONTROL_MODE @@ -430,6 +445,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * camera device may be included here. Implementations are not expected * to be consistent across all devices. If no scene modes are supported * by the camera device, this will be set to <code>[DISABLED]</code>.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_SCENE_MODE */ @@ -440,6 +456,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>List of video stabilization modes that can * be supported</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<int[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES = @@ -455,6 +472,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>FULL mode camera devices will always support OFF mode, * which enables application control of white balance, by using * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform} and {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains}({@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} must be set to TRANSFORM_MATRIX).</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE @@ -471,6 +489,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * this corresponds to the the maximum number of elements in * {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions}, {@link CaptureRequest#CONTROL_AWB_REGIONS android.control.awbRegions}, * and {@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_REGIONS * @see CaptureRequest#CONTROL_AF_REGIONS @@ -485,6 +504,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * auto-exposure (AE); * this corresponds to the the maximum number of elements in * {@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions}.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_REGIONS */ @@ -498,6 +518,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * auto-white balance (AWB); * this corresponds to the the maximum number of elements in * {@link CaptureRequest#CONTROL_AWB_REGIONS android.control.awbRegions}.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AWB_REGIONS */ @@ -511,6 +532,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * auto-focus (AF); * this corresponds to the the maximum number of elements in * {@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AF_REGIONS */ @@ -541,9 +563,14 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode} to HIGH_SPEED_VIDEO in capture requests, the fps ranges * reported in this metadata must not be used to setup capture requests, or it will cause * request error.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CameraCharacteristics#CONTROL_AVAILABLE_SCENE_MODES * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final Key<android.hardware.camera2.params.HighSpeedVideoConfiguration[]> CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS = @@ -553,8 +580,13 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The set of edge enhancement modes supported by this camera device.</p> * <p>This tag lists the valid modes for {@link CaptureRequest#EDGE_MODE android.edge.mode}.</p> * <p>Full-capability camera devices must always support OFF and FAST.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#EDGE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<int[]> EDGE_AVAILABLE_EDGE_MODES = @@ -564,7 +596,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Whether this camera device has a * flash.</p> * <p>If no flash, none of the flash controls do - * anything. All other metadata should return 0.</p> + * anything. All other metadata should return 0. + * This key is available on all devices.</p> */ @PublicKey public static final Key<Boolean> FLASH_INFO_AVAILABLE = @@ -575,6 +608,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * camera device.</p> * <p>This tag lists valid modes for {@link CaptureRequest#HOT_PIXEL_MODE android.hotPixel.mode}.</p> * <p>FULL mode camera devices will always support FAST.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CaptureRequest#HOT_PIXEL_MODE */ @@ -595,7 +629,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <li>Each output JPEG size in android.scaler.availableStreamConfigurations will have at least * one corresponding size that has the same aspect ratio in availableThumbnailSizes, * and vice versa.</li> - * <li>All non (0, 0) sizes will have non-zero widths and heights.</li> + * <li>All non (0, 0) sizes will have non-zero widths and heights. + * This key is available on all devices.</li> * </ul> */ @PublicKey @@ -609,6 +644,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * listed value will be the fixed aperture.</p> * <p>If the camera device supports variable apertures, the aperture value * in this list will be sorted in ascending order.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<float[]> LENS_INFO_AVAILABLE_APERTURES = @@ -621,7 +662,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * availableFilterDensities must contain only 0. Otherwise, this * list contains only the exact filter density values available on * this camera device.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FILTER_DENSITY */ @PublicKey @@ -635,6 +681,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * a single value corresponding to the static focal length of the * device. Otherwise, this will report every focal length supported * by the device.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#LENS_FOCAL_LENGTH */ @@ -648,7 +695,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * {@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}.</p> * <p>If OIS is not implemented for a given camera device, this will * contain only OFF.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE */ @PublicKey @@ -660,7 +712,11 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>If the lens is not fixed focus, the camera device will report this * field when {@link CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION android.lens.info.focusDistanceCalibration} is APPROXIMATE or CALIBRATED.</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION */ @PublicKey @@ -673,6 +729,11 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>If the lens is fixed-focus, this should be * 0.</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE = @@ -682,6 +743,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Dimensions of lens shading map.</p> * <p>The map should be on the order of 30-40 rows and columns, and * must be smaller than 64x64.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final Key<android.util.Size> LENS_INFO_SHADING_MAP_SIZE = @@ -693,7 +760,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * focus related metadata entries, i.e. {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance}, * {@link CaptureResult#LENS_FOCUS_RANGE android.lens.focusRange}, {@link CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE android.lens.info.hyperfocalDistance}, and * {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FOCUS_DISTANCE * @see CaptureResult#LENS_FOCUS_RANGE * @see CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE @@ -709,6 +781,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>Direction the camera faces relative to * device screen.</p> + * <p>This key is available on all devices.</p> * @see #LENS_FACING_FRONT * @see #LENS_FACING_BACK */ @@ -720,7 +793,13 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The set of noise reduction modes supported by this camera device.</p> * <p>This tag lists the valid modes for {@link CaptureRequest#NOISE_REDUCTION_MODE android.noiseReduction.mode}.</p> * <p>Full-capability camera devices must always support OFF and FAST.</p> + * <p>Legacy-capability camera devices will only support FAST mode.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#NOISE_REDUCTION_MODE */ @PublicKey @@ -765,6 +844,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <li>Processed (but not-stalling): any non-RAW format without a stall duration. * Typically ImageFormat#YUV_420_888, ImageFormat#NV21, ImageFormat#YV12.</li> * </ul> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<int[]> REQUEST_MAX_NUM_OUTPUT_STREAMS = @@ -786,7 +866,11 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <li>ImageFormat#RAW10</li> * <li>Opaque <code>RAW</code></li> * </ul> + * <p>LEGACY mode devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} <code>==</code> LEGACY) + * never support raw streams.</p> + * <p>This key is available on all devices.</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @PublicKey @@ -814,6 +898,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * </ul> * <p>For full guarantees, query StreamConfigurationMap#getOutputStallDuration with * a processed format -- it will return 0 for a non-stalling stream.</p> + * <p>LEGACY devices will support up to 3 processing/non-stalling streams.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @@ -836,6 +922,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * Typically only the <code>JPEG</code> format (ImageFormat#JPEG)</p> * <p>For full guarantees, query StreamConfigurationMap#getOutputStallDuration with * a processed format -- it will return a non-0 value for a stalling stream.</p> + * <p>LEGACY devices will support up to 1 processing/stalling stream.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @@ -856,6 +944,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>For example, for Zero Shutter Lag (ZSL) still capture use case, the input * stream image format will be RAW_OPAQUE, the associated output stream image format * should be JPEG.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final Key<Integer> REQUEST_MAX_NUM_INPUT_STREAMS = @@ -876,6 +970,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>A pipeline depth of X stages is equivalent to a pipeline latency of * X frame intervals.</p> * <p>This value will be 8 or less.</p> + * <p>This key is available on all devices.</p> * * @see CaptureResult#REQUEST_PIPELINE_DEPTH */ @@ -924,6 +1019,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * </ul> * <p>Other capabilities may be available on either FULL or LIMITED * devices, but the application should query this field to be sure.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE @@ -945,6 +1041,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * at a more granular level than capabilities. This is especially * important for optional keys that are not listed under any capability * in {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities}.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @hide @@ -969,6 +1066,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * at a more granular level than capabilities. This is especially * important for optional keys that are not listed under any capability * in {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities}.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE @@ -984,6 +1082,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * android.request.availableResultKeys (except that it applies for * CameraCharacteristics instead of CaptureResult). See above for more * details.</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<int[]> REQUEST_AVAILABLE_CHARACTERISTICS_KEYS = @@ -994,6 +1093,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * camera device for output streams.</p> * <p>All camera devices will support JPEG and YUV_420_888 formats.</p> * <p>When set to YUV_420_888, application can access the YUV420 data directly.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @deprecated * @hide */ @@ -1010,6 +1110,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>When multiple streams are configured, the minimum * frame duration will be >= max(individual stream min * durations)</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @deprecated * @hide */ @@ -1021,6 +1122,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The JPEG resolutions that are supported by this camera device.</p> * <p>The resolutions are listed as <code>(width, height)</code> pairs. All camera devices will support * sensor maximum resolution (defined by {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @deprecated @@ -1040,6 +1142,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Crop regions that have a width or height that is smaller * than this ratio allows will be rounded up to the minimum * allowed size by the camera device.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM = @@ -1054,6 +1157,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * set to FAST.</p> * <p>When multiple streams are configured, the minimum frame duration will * be >= max(individual stream min durations).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @deprecated * @hide */ @@ -1075,6 +1179,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * can provide.</p> * <p>Please reference the documentation for the image data destination to * check if it limits the maximum size for image data.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @deprecated * @hide */ @@ -1133,6 +1238,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Attempting to configure an input stream with output streams not * listed as available in this map is not valid.</p> * <p>TODO: typedef to ReprocessFormatMap</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final Key<int[]> SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP = @@ -1220,6 +1331,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * </table> * <p>Refer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} for additional * mandatory stream configurations on a per-capability basis.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1244,6 +1356,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * calculating the max frame rate.</p> * <p>(Keep in sync with * StreamConfigurationMap#getOutputMinFrameDuration)</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#SENSOR_FRAME_DURATION * @hide @@ -1309,6 +1422,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * calculating the max frame rate (absent stalls).</p> * <p>(Keep up to date with * StreamConfigurationMap#getOutputStallDuration(int, Size) )</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1396,6 +1510,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * </table> * <p>Refer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} for additional * mandatory stream configurations on a per-capability basis.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1417,7 +1532,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * is inside of the active array. The camera device will apply the same crop region and * return the final used crop region in capture result metadata {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}.</p> * <p>FULL capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} <code>==</code> FULL) will support - * FREEFORM cropping.</p> + * FREEFORM cropping. LEGACY capability devices will only support CENTER_ONLY cropping.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SCALER_CROP_REGION @@ -1433,7 +1549,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Area of raw data which corresponds to only * active pixels.</p> * <p>It is smaller or equal to - * sensor full pixel array, which could include the black calibration pixels.</p> + * sensor full pixel array, which could include the black calibration pixels. + * This key is available on all devices.</p> */ @PublicKey public static final Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE = @@ -1445,7 +1562,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity} control.</p> * <p>The values are the standard ISO sensitivity values, * as defined in ISO 12232:2006.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_SENSITIVITY */ @PublicKey @@ -1456,6 +1578,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The arrangement of color filters on sensor; * represents the colors in the top-left 2x2 section of * the sensor, in reading order.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG * @see #SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG @@ -1472,6 +1600,10 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The min value will be <= 100e3 (100 us). For FULL * capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), * max will be >= 100e6 (100ms)</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1493,6 +1625,10 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * for the minimum frame duration values.</p> * <p>For FULL capability devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} == FULL), * max will be >= 100e6 (100ms).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1506,6 +1642,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * array.</p> * <p>This is the physical size of the sensor pixel * array defined by {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE */ @@ -1523,6 +1660,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * raw size listed in {@link CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP android.scaler.streamConfigurationMap}. * If a size corresponding to pixelArraySize is listed, the resulting * raw sensor image will include black pixels.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE @@ -1543,6 +1681,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * (8-14 bits is expected), or by the point where the sensor response * becomes too non-linear to be useful. The default value for this is * maximum representable value for a 16-bit raw sample (2^16 - 1).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN */ @@ -1556,6 +1695,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * may not based on a time source that can be compared to other system time sources.</p> * <p>This characteristic defines the source for the timestamps, and therefore whether they * can be compared against other system time sources/timestamps.</p> + * <p>This key is available on all devices.</p> * @see #SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN * @see #SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME */ @@ -1577,6 +1717,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Some devices may choose to provide a second set of calibration * information for improved quality, including * {@link CameraCharacteristics#SENSOR_REFERENCE_ILLUMINANT2 android.sensor.referenceIlluminant2} and its corresponding matrices.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM1 * @see CameraCharacteristics#SENSOR_COLOR_TRANSFORM1 @@ -1617,6 +1758,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>If this tag is present, then {@link CameraCharacteristics#SENSOR_COLOR_TRANSFORM2 android.sensor.colorTransform2}, * {@link CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM2 android.sensor.calibrationTransform2}, and * {@link CameraCharacteristics#SENSOR_FORWARD_MATRIX2 android.sensor.forwardMatrix2} will also be present.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#SENSOR_CALIBRATION_TRANSFORM2 * @see CameraCharacteristics#SENSOR_COLOR_TRANSFORM2 @@ -1804,6 +1946,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * screen in its native orientation. Also defines the * direction of rolling shutter readout, which is from top * to bottom in the sensor's coordinate system</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Integer> SENSOR_ORIENTATION = @@ -1830,6 +1973,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>FULL means the device additionally supports the * android.statistics.faceIds and * android.statistics.faceLandmarks outputs.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<int[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES = @@ -1838,6 +1982,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>The maximum number of simultaneously detectable * faces.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Integer> STATISTICS_INFO_MAX_FACE_COUNT = @@ -1849,6 +1994,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>If no hotpixel map is available for this camera device, this will contain * only OFF. If the hotpixel map is available, this will include both * the ON and OFF options.</p> + * <p>Required on devices with the RAW capability.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CaptureRequest#STATISTICS_HOT_PIXEL_MAP_MODE */ @@ -1866,7 +2013,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>The output curves in the result metadata may have a different number * of points than the input curves, and will represent the actual * hardware curves used as closely as possible when linearly interpolated.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_CURVE */ @PublicKey @@ -1878,7 +2030,12 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>This tag lists the valid modes for {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode}.</p> * <p>Full-capability camera devices must always support CONTRAST_CURVE and * FAST.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE */ @PublicKey @@ -1887,6 +2044,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>A list of camera LEDs that are available on this system.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @see #LED_AVAILABLE_LEDS_TRANSMIT * @hide */ @@ -1895,7 +2053,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>Generally classifies the overall set of the camera device functionality.</p> - * <p>Camera devices will come in two flavors: LIMITED and FULL.</p> + * <p>Camera devices will come in three flavors: LEGACY, LIMITED and FULL.</p> * <p>A FULL device has the most support possible and will support below capabilities:</p> * <ul> * <li>30fps at maximum resolution (== sensor resolution) is preferred, more than 20fps is required.</li> @@ -1912,6 +2070,9 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * To find out more refer to {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities}.</p> * <p>A LEGACY device does not support per-frame control, manual sensor control, manual * post-processing, arbitrary cropping regions, and has relaxed performance constraints.</p> + * <p>Each higher level supports everything the lower level supports + * in this order: FULL <code>></code> LIMITED <code>></code> LEGACY.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @see CameraCharacteristics#REQUEST_MAX_NUM_OUTPUT_PROC @@ -1959,6 +2120,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and * <code>android.sync.frameNumber == 2</code>, the distance is clearly * <code>4 - 2 = 2</code>.</p> + * <p>This key is available on all devices.</p> * @see #SYNC_MAX_LATENCY_PER_FRAME_CONTROL * @see #SYNC_MAX_LATENCY_UNKNOWN */ @@ -1970,4 +2132,6 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ + + } diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index a57b361d2538..d3ef07cff564 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -807,6 +807,8 @@ public abstract class CameraMetadata<TKey> { * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration} are used by the camera * device, along with android.flash.* fields, if there's * a flash unit for this camera device.</p> + * <p>LEGACY devices do not support the OFF mode and will + * override attempts to use this value to ON.</p> * * @see CaptureRequest#SENSOR_EXPOSURE_TIME * @see CaptureRequest#SENSOR_FRAME_DURATION @@ -1577,6 +1579,8 @@ public abstract class CameraMetadata<TKey> { /** * <p>Turn on custom high dynamic range (HDR) mode.</p> + * <p>This is intended for LEGACY mode devices only; + * HAL3+ camera devices should not implement this mode.</p> * @see CaptureRequest#CONTROL_SCENE_MODE * @hide */ @@ -2064,6 +2068,8 @@ public abstract class CameraMetadata<TKey> { * and may restart scanning at any time.</p> * <p>Only used by CONTINUOUS_* AF modes. This is a transient state, the camera * device may skip reporting this state in capture result.</p> + * <p>LEGACY camera devices do not support this state. When a passive + * scan has finished, it will always go to PASSIVE_FOCUSED.</p> * @see CaptureResult#CONTROL_AF_STATE */ public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6; diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 93eb3def1a68..e65e6277251e 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -518,10 +518,15 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * </code></pre> * <p>Both the input and output value ranges must match. Overflow/underflow * values are clipped to fit within the range.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX * @see #COLOR_CORRECTION_MODE_FAST * @see #COLOR_CORRECTION_MODE_HIGH_QUALITY @@ -542,8 +547,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * in this matrix result metadata. The transform should keep the magnitude * of the output color values within <code>[0, 1.0]</code> (assuming input color * values is within the normalized range <code>[0, 1.0]</code>), or clipping may occur.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM = @@ -559,8 +569,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * TRANSFORM_MATRIX.</p> * <p>The gains in the result metadata are the gains actually * applied by the camera device to the current frame.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS = @@ -580,6 +595,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * use the highest-quality aberration correction algorithms, even if it slows down * capture rate. FAST means the camera device will not slow down capture rate when * applying aberration correction.</p> + * <p>LEGACY devices will always be in FAST mode.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES * @see #COLOR_CORRECTION_ABERRATION_MODE_OFF @@ -620,6 +637,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * ensure it selects exposure times that do not cause banding * issues. The {@link CaptureResult#STATISTICS_SCENE_FLICKER android.statistics.sceneFlicker} key can assist * the application in this.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES * @see CaptureRequest#CONTROL_AE_MODE @@ -652,6 +670,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * state. Once the new exposure target is reached, {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} will * change from SEARCHING to either CONVERGED, LOCKED (if AE lock is enabled), or * FLASH_REQUIRED (if the scene is too dark for still capture).</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP @@ -678,6 +697,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * is ON_AUTO_FLASH/ON_AUTO_FLASH_REDEYE and the scene is too dark. If the * {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_ALWAYS_FLASH, the scene may become overexposed.</p> * <p>See {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE lock related state transition details.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION * @see CaptureRequest#CONTROL_AE_MODE @@ -711,6 +731,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * camera device auto-exposure routine for the overridden * fields for a given capture will be available in its * CaptureResult.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE @@ -762,7 +783,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Range over which fps can be adjusted to * maintain exposure.</p> * <p>Only constrains auto-exposure (AE) algorithm, not - * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}</p> + * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} + * This key is available on all devices.</p> * * @see CaptureRequest#SENSOR_EXPOSURE_TIME */ @@ -789,8 +811,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * depends on the current AE mode and state; see * {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE precapture state transition * details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureResult#CONTROL_AE_STATE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START */ @@ -805,7 +832,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * (i.e. <code>{@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} > 0</code>).</p> * <p>If the lens is controlled by the camera device auto-focus algorithm, * the camera device will report the current AF status in {@link CaptureResult#CONTROL_AF_STATE android.control.afState} - * in result metadata.</p> + * in result metadata. + * This key is available on all devices.</p> * * @see CaptureResult#CONTROL_AF_STATE * @see CaptureRequest#CONTROL_MODE @@ -864,6 +892,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * START for multiple captures in a row means restarting the AF operation over * and over again.</p> * <p>See {@link CaptureResult#CONTROL_AF_STATE android.control.afState} for what the trigger means for each AF mode.</p> + * <p>This key is available on all devices.</p> * * @see CaptureResult#CONTROL_AF_STATE * @see #CONTROL_AF_TRIGGER_IDLE @@ -880,6 +909,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Note that AWB lock is only meaningful when * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} is in the AUTO mode; in other modes, * AWB is already fixed to a specific setting.</p> + * <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AWB_MODE */ @@ -907,6 +938,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform}, * {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains} and * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} are ignored.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE @@ -965,7 +997,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF</code> and any 3A routine is active.</p> * <p>ZERO_SHUTTER_LAG will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} * contains ZSL. MANUAL will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} - * contains MANUAL_SENSOR.</p> + * contains MANUAL_SENSOR. + * This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -991,6 +1024,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * devices.</p> * <p>A color effect will only be applied if * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see #CONTROL_EFFECT_MODE_OFF @@ -1025,6 +1059,10 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * 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.</p> + * <p>LEGACY mode devices will only support AUTO and USE_SCENE_MODE modes. + * LIMITED mode devices will only support OFF and OFF_KEEP_STATE if they + * support the MANUAL_SENSOR capability.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AF_MODE * @see #CONTROL_MODE_OFF @@ -1049,6 +1087,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * to the implementor of the camera device. Their behavior will not be * consistent across all devices, and any given device may only implement * a subset of these modes.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AF_MODE @@ -1093,6 +1132,9 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>If a camera device supports both this mode and OIS ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), * turning both modes on may produce undesirable interaction, so it is recommended not to * enable both at the same time.</p> + * <p>Some LEGACY camera devices will not support changing video stabilization + * mode; in this case the value will always override to OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE * @see CaptureRequest#SCALER_CROP_REGION @@ -1114,8 +1156,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * camera device will use the highest-quality enhancement algorithms, * even if it slows down capture rate. FAST means the camera device will * not slow down capture rate when applying edge enhancement.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #EDGE_MODE_OFF * @see #EDGE_MODE_FAST * @see #EDGE_MODE_HIGH_QUALITY @@ -1139,6 +1186,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>When set to TORCH, the flash will be on continuously. This mode can be used * for use cases such as preview, auto-focus assist, still capture, or video recording.</p> * <p>The flash status will be reported by {@link CaptureResult#FLASH_STATE android.flash.state} in the capture result metadata.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER @@ -1159,6 +1207,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Hotpixel correction interpolates out, or otherwise removes, pixels * that do not accurately encode the incoming light (i.e. pixels that * are stuck at an arbitrary value).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES * @see #HOT_PIXEL_MODE_OFF @@ -1171,6 +1220,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>A location object to use when generating image GPS metadata.</p> + * <p>This key is available on all devices.</p> */ @PublicKey @SyntheticKey @@ -1180,6 +1230,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>GPS coordinates to include in output JPEG * EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<double[]> JPEG_GPS_COORDINATES = @@ -1188,6 +1239,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>32 characters describing GPS algorithm to * include in EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<String> JPEG_GPS_PROCESSING_METHOD = @@ -1196,6 +1248,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>Time GPS fix was made to include in * EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<Long> JPEG_GPS_TIMESTAMP = @@ -1204,6 +1257,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>Orientation of JPEG image to * write</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Integer> JPEG_ORIENTATION = @@ -1213,6 +1267,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Compression quality of the final JPEG * image.</p> * <p>85-95 is typical usage range.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Byte> JPEG_QUALITY = @@ -1221,6 +1276,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>Compression quality of JPEG * thumbnail.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Byte> JPEG_THUMBNAIL_QUALITY = @@ -1238,6 +1294,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * 16:9 aspect ratio, the primary image will be cropped vertically (letterbox) to * generate the thumbnail image. The thumbnail image will always have a smaller Field * Of View (FOV) than the primary image when aspect ratios differ.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<android.util.Size> JPEG_THUMBNAIL_SIZE = @@ -1261,8 +1318,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * the ON modes, this will be overridden by the camera device * auto-exposure algorithm, the overridden values are then provided * back to the user in the corresponding result.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES * @see CaptureResult#LENS_STATE * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1289,7 +1351,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>It may take several frames before the lens filter density changes * to the requested value. While the filter density is still changing, * {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES * @see CaptureResult#LENS_STATE */ @@ -1308,6 +1375,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * While the focal length is still changing, {@link CaptureResult#LENS_STATE android.lens.state} will * be set to MOVING.</p> * <p>This is expected not to be supported on most devices.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE @@ -1320,13 +1388,20 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>Distance to plane of sharpest focus, * measured from frontmost surface of the lens.</p> - * <p>0 means infinity focus. Used value will be clamped - * to [0, {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}].</p> + * <p><code>0.0f</code> means infinity focus. Used value will be clamped + * to <code>[0.0f, {@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance}]</code>.</p> * <p>Like {@link CaptureRequest#LENS_FOCAL_LENGTH android.lens.focalLength}, this setting won't be applied * instantaneously, and it may take several frames before the lens * can move to the requested focus distance. While the lens is still moving, * {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.</p> + * <p>LEGACY devices support at most setting this to <code>0.0f</code> + * for infinity focus.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_FOCAL_LENGTH * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE * @see CaptureResult#LENS_STATE @@ -1355,8 +1430,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Not all devices will support OIS; see * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION android.lens.info.availableOpticalStabilization} for * available controls.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION * @see #LENS_OPTICAL_STABILIZATION_MODE_OFF * @see #LENS_OPTICAL_STABILIZATION_MODE_ON @@ -1376,7 +1456,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * will use the highest-quality noise filtering algorithms, * even if it slows down capture rate. FAST means the camera device will not * slow down capture rate when applying noise filtering.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES * @see #NOISE_REDUCTION_MODE_OFF * @see #NOISE_REDUCTION_MODE_FAST @@ -1390,6 +1475,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>An application-specified ID for the current * request. Must be maintained unchanged in output * frame</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ public static final Key<Integer> REQUEST_ID = @@ -1426,6 +1512,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * for rounding and other hardware requirements; the final * crop region used will be included in the output capture * result.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE @@ -1439,6 +1526,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * light.</p> * <p>If the sensor can't expose this exact duration, it should shorten the * duration exposed to the nearest possible value (rather than expose longer).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Long> SENSOR_EXPOSURE_TIME = @@ -1516,7 +1609,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * delivered.</p> * <p>For more details about stalling, see * StreamConfigurationMap#getOutputStallDuration(int,Size).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @PublicKey @@ -1535,7 +1633,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * requested, it will reduce the gain to the nearest supported * value. The final sensitivity used will be available in the * output capture result.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE * @see CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY */ @@ -1608,9 +1711,14 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * AUTO modes({@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} <code>!=</code> OFF and {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} <code>!=</code> OFF), * to get best results, it is recommended that the applications wait for the AE and AWB to * be converged before using the returned shading map data.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE * @see #SHADING_MODE_OFF * @see #SHADING_MODE_FAST @@ -1626,7 +1734,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>Whether face detection is enabled, and whether it * should output just the basic fields or the full set of * fields. Value must be one of the - * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}.</p> + * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}. + * This key is available on all devices.</p> * * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES * @see #STATISTICS_FACE_DETECT_MODE_OFF @@ -1642,6 +1751,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>If set to ON, a hotpixel map is returned in {@link CaptureResult#STATISTICS_HOT_PIXEL_MAP android.statistics.hotPixelMap}. * If set to OFF, no hotpixel map will be returned.</p> * <p>This must be set to a valid mode from {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES android.statistics.info.availableHotPixelMapModes}.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CaptureResult#STATISTICS_HOT_PIXEL_MAP * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES @@ -1656,6 +1766,13 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>When set to ON, * android.statistics.lensShadingMap will be provided in * the output result metadata.</p> + * <p>Required for devices with the RAW capability.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #STATISTICS_LENS_SHADING_MAP_MODE_OFF * @see #STATISTICS_LENS_SHADING_MAP_MODE_ON */ @@ -1668,7 +1785,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is * CONTRAST_CURVE.</p> * <p>See android.tonemap.curveRed for more details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -1680,7 +1802,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is * CONTRAST_CURVE.</p> * <p>See android.tonemap.curveRed for more details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -1731,7 +1858,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * 0.8000, 0.9063, 0.8667, 0.9389, 0.9333, 0.9701, 1.0000, 1.0000 ] * </code></pre> * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE * @hide @@ -1785,7 +1917,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * (0.8000, 0.9063), (0.8667, 0.9389), (0.9333, 0.9701), (1.0000, 1.0000) ] * </code></pre> * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE */ @@ -1816,7 +1953,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>If a request is sent with CONTRAST_CURVE with the camera device's * provided curve in FAST or HIGH_QUALITY, the image's tonemap will be * roughly the same.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES * @see CaptureRequest#TONEMAP_CURVE * @see CaptureRequest#TONEMAP_MODE @@ -1839,6 +1981,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * data is stored locally on the device.</p> * <p>The LED <em>may</em> be off if a trusted application is using the data that * doesn't violate the above rules.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ public static final Key<Boolean> LED_TRANSMIT = @@ -1882,6 +2025,12 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * possible, only overriding the lock to OFF when changes to * other request parameters require a black level recalculation * or reset.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Boolean> BLACK_LEVEL_LOCK = @@ -1891,4 +2040,6 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ + + } diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 01276a28e320..fc1baf2a6014 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -369,10 +369,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * </code></pre> * <p>Both the input and output value ranges must match. Overflow/underflow * values are clipped to fit within the range.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX * @see #COLOR_CORRECTION_MODE_FAST * @see #COLOR_CORRECTION_MODE_HIGH_QUALITY @@ -393,8 +398,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * in this matrix result metadata. The transform should keep the magnitude * of the output color values within <code>[0, 1.0]</code> (assuming input color * values is within the normalized range <code>[0, 1.0]</code>), or clipping may occur.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.hardware.camera2.params.ColorSpaceTransform> COLOR_CORRECTION_TRANSFORM = @@ -410,8 +420,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * TRANSFORM_MATRIX.</p> * <p>The gains in the result metadata are the gains actually * applied by the camera device to the current frame.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.hardware.camera2.params.RggbChannelVector> COLOR_CORRECTION_GAINS = @@ -431,6 +446,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * use the highest-quality aberration correction algorithms, even if it slows down * capture rate. FAST means the camera device will not slow down capture rate when * applying aberration correction.</p> + * <p>LEGACY devices will always be in FAST mode.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES * @see #COLOR_CORRECTION_ABERRATION_MODE_OFF @@ -471,6 +488,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * ensure it selects exposure times that do not cause banding * issues. The {@link CaptureResult#STATISTICS_SCENE_FLICKER android.statistics.sceneFlicker} key can assist * the application in this.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES * @see CaptureRequest#CONTROL_AE_MODE @@ -503,6 +521,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * state. Once the new exposure target is reached, {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} will * change from SEARCHING to either CONVERGED, LOCKED (if AE lock is enabled), or * FLASH_REQUIRED (if the scene is too dark for still capture).</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE * @see CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP @@ -529,6 +548,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * is ON_AUTO_FLASH/ON_AUTO_FLASH_REDEYE and the scene is too dark. If the * {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is ON_ALWAYS_FLASH, the scene may become overexposed.</p> * <p>See {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE lock related state transition details.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION * @see CaptureRequest#CONTROL_AE_MODE @@ -562,6 +582,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * camera device auto-exposure routine for the overridden * fields for a given capture will be available in its * CaptureResult.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE @@ -613,7 +634,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Range over which fps can be adjusted to * maintain exposure.</p> * <p>Only constrains auto-exposure (AE) algorithm, not - * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}</p> + * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} + * This key is available on all devices.</p> * * @see CaptureRequest#SENSOR_EXPOSURE_TIME */ @@ -640,8 +662,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * depends on the current AE mode and state; see * {@link CaptureResult#CONTROL_AE_STATE android.control.aeState} for AE precapture state transition * details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureResult#CONTROL_AE_STATE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE * @see #CONTROL_AE_PRECAPTURE_TRIGGER_START */ @@ -831,12 +858,17 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * </tr> * </tbody> * </table> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_LOCK * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER * @see CaptureRequest#CONTROL_MODE * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AE_STATE_INACTIVE * @see #CONTROL_AE_STATE_SEARCHING * @see #CONTROL_AE_STATE_CONVERGED @@ -855,7 +887,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * (i.e. <code>{@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} > 0</code>).</p> * <p>If the lens is controlled by the camera device auto-focus algorithm, * the camera device will report the current AF status in {@link CaptureResult#CONTROL_AF_STATE android.control.afState} - * in result metadata.</p> + * in result metadata. + * This key is available on all devices.</p> * * @see CaptureResult#CONTROL_AF_STATE * @see CaptureRequest#CONTROL_MODE @@ -914,6 +947,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * START for multiple captures in a row means restarting the AF operation over * and over again.</p> * <p>See {@link CaptureResult#CONTROL_AF_STATE android.control.afState} for what the trigger means for each AF mode.</p> + * <p>This key is available on all devices.</p> * * @see CaptureResult#CONTROL_AF_STATE * @see #CONTROL_AF_TRIGGER_IDLE @@ -1306,6 +1340,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * </tr> * </tbody> * </table> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AF_MODE * @see CaptureRequest#CONTROL_MODE @@ -1328,6 +1363,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Note that AWB lock is only meaningful when * {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} is in the AUTO mode; in other modes, * AWB is already fixed to a specific setting.</p> + * <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AWB_MODE */ @@ -1355,6 +1392,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform}, * {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains} and * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} are ignored.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#COLOR_CORRECTION_GAINS * @see CaptureRequest#COLOR_CORRECTION_MODE @@ -1413,7 +1451,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF</code> and any 3A routine is active.</p> * <p>ZERO_SHUTTER_LAG will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} * contains ZSL. MANUAL will be supported if {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} - * contains MANUAL_SENSOR.</p> + * contains MANUAL_SENSOR. + * This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES @@ -1546,11 +1585,16 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * </tr> * </tbody> * </table> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AWB_LOCK * @see CaptureRequest#CONTROL_AWB_MODE * @see CaptureRequest#CONTROL_MODE * @see CaptureRequest#CONTROL_SCENE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #CONTROL_AWB_STATE_INACTIVE * @see #CONTROL_AWB_STATE_SEARCHING * @see #CONTROL_AWB_STATE_CONVERGED @@ -1570,6 +1614,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * devices.</p> * <p>A color effect will only be applied if * {@link CaptureRequest#CONTROL_MODE android.control.mode} != OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_MODE * @see #CONTROL_EFFECT_MODE_OFF @@ -1604,6 +1649,10 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * 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.</p> + * <p>LEGACY mode devices will only support AUTO and USE_SCENE_MODE modes. + * LIMITED mode devices will only support OFF and OFF_KEEP_STATE if they + * support the MANUAL_SENSOR capability.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AF_MODE * @see #CONTROL_MODE_OFF @@ -1628,6 +1677,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * to the implementor of the camera device. Their behavior will not be * consistent across all devices, and any given device may only implement * a subset of these modes.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AF_MODE @@ -1672,6 +1722,9 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>If a camera device supports both this mode and OIS ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), * turning both modes on may produce undesirable interaction, so it is recommended not to * enable both at the same time.</p> + * <p>Some LEGACY camera devices will not support changing video stabilization + * mode; in this case the value will always override to OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE * @see CaptureRequest#SCALER_CROP_REGION @@ -1693,8 +1746,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * camera device will use the highest-quality enhancement algorithms, * even if it slows down capture rate. FAST means the camera device will * not slow down capture rate when applying edge enhancement.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CameraCharacteristics#EDGE_AVAILABLE_EDGE_MODES + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #EDGE_MODE_OFF * @see #EDGE_MODE_FAST * @see #EDGE_MODE_HIGH_QUALITY @@ -1718,6 +1776,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>When set to TORCH, the flash will be on continuously. This mode can be used * for use cases such as preview, auto-focus assist, still capture, or video recording.</p> * <p>The flash status will be reported by {@link CaptureResult#FLASH_STATE android.flash.state} in the capture result metadata.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER @@ -1737,8 +1796,25 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>When the camera device doesn't have flash unit * (i.e. <code>{@link CameraCharacteristics#FLASH_INFO_AVAILABLE android.flash.info.available} == false</code>), this state will always be UNAVAILABLE. * Other states indicate the current flash status.</p> + * <p>In certain conditions, this will be available on LEGACY devices:</p> + * <ul> + * <li>Flash-less cameras always return UNAVAILABLE.</li> + * <li>Using {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} <code>==</code> ON_ALWAYS_FLASH + * will always return FIRED.</li> + * <li>Using {@link CaptureRequest#FLASH_MODE android.flash.mode} <code>==</code> TORCH + * will always return FIRED.</li> + * </ul> + * <p>In all other conditions the state will not be available on + * LEGACY devices (i.e. it will be <code>null</code>).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CaptureRequest#CONTROL_AE_MODE * @see CameraCharacteristics#FLASH_INFO_AVAILABLE + * @see CaptureRequest#FLASH_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #FLASH_STATE_UNAVAILABLE * @see #FLASH_STATE_CHARGING * @see #FLASH_STATE_READY @@ -1756,6 +1832,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Hotpixel correction interpolates out, or otherwise removes, pixels * that do not accurately encode the incoming light (i.e. pixels that * are stuck at an arbitrary value).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES * @see #HOT_PIXEL_MODE_OFF @@ -1768,6 +1845,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>A location object to use when generating image GPS metadata.</p> + * <p>This key is available on all devices.</p> */ @PublicKey @SyntheticKey @@ -1777,6 +1855,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>GPS coordinates to include in output JPEG * EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<double[]> JPEG_GPS_COORDINATES = @@ -1785,6 +1864,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>32 characters describing GPS algorithm to * include in EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<String> JPEG_GPS_PROCESSING_METHOD = @@ -1793,6 +1873,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>Time GPS fix was made to include in * EXIF</p> + * <p>This key is available on all devices.</p> * @hide */ public static final Key<Long> JPEG_GPS_TIMESTAMP = @@ -1801,6 +1882,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>Orientation of JPEG image to * write</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Integer> JPEG_ORIENTATION = @@ -1810,6 +1892,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Compression quality of the final JPEG * image.</p> * <p>85-95 is typical usage range.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Byte> JPEG_QUALITY = @@ -1818,6 +1901,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>Compression quality of JPEG * thumbnail.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<Byte> JPEG_THUMBNAIL_QUALITY = @@ -1835,6 +1919,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * 16:9 aspect ratio, the primary image will be cropped vertically (letterbox) to * generate the thumbnail image. The thumbnail image will always have a smaller Field * Of View (FOV) than the primary image when aspect ratios differ.</p> + * <p>This key is available on all devices.</p> */ @PublicKey public static final Key<android.util.Size> JPEG_THUMBNAIL_SIZE = @@ -1858,8 +1943,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * the ON modes, this will be overridden by the camera device * auto-exposure algorithm, the overridden values are then provided * back to the user in the corresponding result.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES * @see CaptureResult#LENS_STATE * @see CaptureRequest#SENSOR_EXPOSURE_TIME @@ -1886,7 +1976,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>It may take several frames before the lens filter density changes * to the requested value. While the filter density is still changing, * {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES * @see CaptureResult#LENS_STATE */ @@ -1905,6 +2000,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * While the focal length is still changing, {@link CaptureResult#LENS_STATE android.lens.state} will * be set to MOVING.</p> * <p>This is expected not to be supported on most devices.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FOCUS_DISTANCE @@ -1918,6 +2014,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Distance to plane of sharpest focus, * measured from frontmost surface of the lens.</p> * <p>Should be zero for fixed-focus cameras</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Float> LENS_FOCUS_DISTANCE = @@ -1928,6 +2030,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * sharp focus (depth of field).</p> * <p>If variable focus not supported, can still report * fixed depth of field range</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.util.Pair<Float,Float>> LENS_FOCUS_RANGE = @@ -1953,8 +2061,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Not all devices will support OIS; see * {@link CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION android.lens.info.availableOpticalStabilization} for * available controls.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION * @see #LENS_OPTICAL_STABILIZATION_MODE_OFF * @see #LENS_OPTICAL_STABILIZATION_MODE_ON @@ -1984,7 +2097,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Then this state will always be STATIONARY.</p> * <p>When the state is MOVING, it indicates that at least one of the lens parameters * is changing.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#LENS_APERTURE * @see CaptureRequest#LENS_FILTER_DENSITY * @see CaptureRequest#LENS_FOCAL_LENGTH @@ -2011,7 +2129,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * will use the highest-quality noise filtering algorithms, * even if it slows down capture rate. FAST means the camera device will not * slow down capture rate when applying noise filtering.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES * @see #NOISE_REDUCTION_MODE_OFF * @see #NOISE_REDUCTION_MODE_FAST @@ -2048,6 +2171,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * increases with every new result (that is, each new result has a unique * frameCount value).</p> * <p>Reset on release()</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @deprecated * @hide */ @@ -2059,6 +2183,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>An application-specified ID for the current * request. Must be maintained unchanged in output * frame</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ public static final Key<Integer> REQUEST_ID = @@ -2072,6 +2197,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * what streams are configured, the data may undergo less processing, * and some pipeline stages skipped.</p> * <p>See {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} for more details.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH */ @@ -2110,6 +2236,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * for rounding and other hardware requirements; the final * crop region used will be included in the output capture * result.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE @@ -2123,6 +2250,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * light.</p> * <p>If the sensor can't expose this exact duration, it should shorten the * duration exposed to the nearest possible value (rather than expose longer).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Long> SENSOR_EXPOSURE_TIME = @@ -2200,7 +2333,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * delivered.</p> * <p>For more details about stalling, see * StreamConfigurationMap#getOutputStallDuration(int,Size).</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP */ @PublicKey @@ -2219,7 +2357,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * requested, it will reduce the gain to the nearest supported * value. The final sensitivity used will be available in the * output capture result.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE * @see CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY */ @@ -2243,6 +2386,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * android.os.SystemClock#elapsedRealtimeNanos(), and they can be * compared to other timestamps from other subsystems that are using * that base.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE */ @@ -2376,7 +2520,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * and last rows inside of the {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.</p> * <p>For typical camera sensors that use rolling shutters, this is also equivalent * to the frame readout time.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Limited capability</b> - + * Present on all camera devices that report being at least {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED HARDWARE_LEVEL_LIMITED} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE */ @PublicKey @@ -2410,9 +2559,14 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * AUTO modes({@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} <code>!=</code> OFF and {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} <code>!=</code> OFF), * to get best results, it is recommended that the applications wait for the AE and AWB to * be converged before using the returned shading map data.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_AWB_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE * @see #SHADING_MODE_OFF * @see #SHADING_MODE_FAST @@ -2428,7 +2582,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Whether face detection is enabled, and whether it * should output just the basic fields or the full set of * fields. Value must be one of the - * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}.</p> + * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}. + * This key is available on all devices.</p> * * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES * @see #STATISTICS_FACE_DETECT_MODE_OFF @@ -2444,7 +2599,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>Each detected face is given a unique ID that is valid for as long as the face is visible * to the camera device. A face that leaves the field of view and later returns may be * assigned a new ID.</p> - * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} == FULL</p> + * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} == FULL + * This key is available on all devices.</p> * * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide @@ -2457,7 +2613,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * faces.</p> * <p>The coordinate system is that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with * <code>(0, 0)</code> being the top-left pixel of the active array.</p> - * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} == FULL</p> + * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} == FULL + * This key is available on all devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE @@ -2471,7 +2628,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * faces.</p> * <p>The coordinate system is that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with * <code>(0, 0)</code> being the top-left pixel of the active array.</p> - * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} != OFF</p> + * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} != OFF + * This key is available on all devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE @@ -2484,6 +2642,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>List of the face confidence scores for * detected faces</p> * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} != OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide @@ -2495,6 +2654,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>List of the faces detected through camera face detection * in this result.</p> * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} <code>!=</code> OFF.</p> + * <p>This key is available on all devices.</p> * * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE */ @@ -2543,8 +2703,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>As a visualization only, inverting the full-color map to recover an * image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> * <p><img alt="Image of a uniform white wall (inverse shading map)" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<android.hardware.camera2.params.LensShadingMap> STATISTICS_LENS_SHADING_CORRECTION_MAP = @@ -2591,8 +2756,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>As a visualization only, inverting the full-color map to recover an * image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> * <p><img alt="Image of a uniform white wall (inverse shading map)" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#COLOR_CORRECTION_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ public static final Key<float[]> STATISTICS_LENS_SHADING_MAP = @@ -2659,10 +2829,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * into this metadata field. See * {@link CaptureRequest#CONTROL_AE_ANTIBANDING_MODE android.control.aeAntibandingMode} for more details.</p> * <p>Reports NONE if there doesn't appear to be flickering illumination.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE * @see CaptureRequest#CONTROL_AE_MODE * @see CaptureRequest#CONTROL_MODE + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #STATISTICS_SCENE_FLICKER_NONE * @see #STATISTICS_SCENE_FLICKER_50HZ * @see #STATISTICS_SCENE_FLICKER_60HZ @@ -2676,6 +2851,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>If set to ON, a hotpixel map is returned in {@link CaptureResult#STATISTICS_HOT_PIXEL_MAP android.statistics.hotPixelMap}. * If set to OFF, no hotpixel map will be returned.</p> * <p>This must be set to a valid mode from {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES android.statistics.info.availableHotPixelMapModes}.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CaptureResult#STATISTICS_HOT_PIXEL_MAP * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES @@ -2692,6 +2868,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * height dimensions are given in {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}. * This may include hot pixels that lie outside of the active array * bounds given by {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE @@ -2706,6 +2883,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>When set to ON, * android.statistics.lensShadingMap will be provided in * the output result metadata.</p> + * <p>Required for devices with the RAW capability.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> + * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see #STATISTICS_LENS_SHADING_MAP_MODE_OFF * @see #STATISTICS_LENS_SHADING_MAP_MODE_ON */ @@ -2718,7 +2902,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is * CONTRAST_CURVE.</p> * <p>See android.tonemap.curveRed for more details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -2730,7 +2919,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is * CONTRAST_CURVE.</p> * <p>See android.tonemap.curveRed for more details.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CaptureRequest#TONEMAP_MODE * @hide */ @@ -2781,7 +2975,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * 0.8000, 0.9063, 0.8667, 0.9389, 0.9333, 0.9701, 1.0000, 1.0000 ] * </code></pre> * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE * @hide @@ -2835,7 +3034,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * (0.8000, 0.9063), (0.8667, 0.9389), (0.9333, 0.9701), (1.0000, 1.0000) ] * </code></pre> * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE */ @@ -2866,7 +3070,12 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>If a request is sent with CONTRAST_CURVE with the camera device's * provided curve in FAST or HIGH_QUALITY, the image's tonemap will be * roughly the same.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @see CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES * @see CaptureRequest#TONEMAP_CURVE * @see CaptureRequest#TONEMAP_MODE @@ -2889,6 +3098,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * data is stored locally on the device.</p> * <p>The LED <em>may</em> be off if a trusted application is using the data that * doesn't violate the above rules.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ public static final Key<Boolean> LED_TRANSMIT = @@ -2901,8 +3111,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * ON if {@link CaptureRequest#BLACK_LEVEL_LOCK android.blackLevel.lock} was ON in the capture request, unless * a change in other capture settings forced the camera device to * perform a black level reset.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * <p><b>Full capability</b> - + * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the + * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> * * @see CaptureRequest#BLACK_LEVEL_LOCK + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ @PublicKey public static final Key<Boolean> BLACK_LEVEL_LOCK = @@ -2960,6 +3175,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>In other words, results for this current request and up to * {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} prior requests may have their * android.sync.frameNumber change to CONVERGING.</p> + * <p>This key is available on all devices.</p> * * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH * @see #SYNC_FRAME_NUMBER_CONVERGING @@ -2973,4 +3189,6 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ + + } |