CameraMetadata: updated generated code (with markdown support)

- also updates description of android.blackLevel.lock

Change-Id: I2d10c492bd6779bbb51672da9854252ba18d4327
This commit is contained in:
Igor Murashkin
2013-12-10 17:36:40 -08:00
parent 36c245ace5
commit ace5bf0412
4 changed files with 695 additions and 1335 deletions

View File

@@ -127,74 +127,58 @@ public final class CameraCharacteristics extends CameraMetadata {
*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
/**
* <p>
* Which set of antibanding modes are
* supported
* </p>
* <p>Which set of antibanding modes are
* supported</p>
*/
public static final Key<byte[]> CONTROL_AE_AVAILABLE_ANTIBANDING_MODES =
new Key<byte[]>("android.control.aeAvailableAntibandingModes", byte[].class);
/**
* <p>
* List of frame rate ranges supported by the
* AE algorithm/hardware
* </p>
* <p>List of frame rate ranges supported by the
* AE algorithm/hardware</p>
*/
public static final Key<int[]> CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES =
new Key<int[]>("android.control.aeAvailableTargetFpsRanges", int[].class);
/**
* <p>
* Maximum and minimum exposure compensation
* <p>Maximum and minimum exposure compensation
* setting, in counts of
* android.control.aeCompensationStepSize
* </p>
* android.control.aeCompensationStepSize</p>
*/
public static final Key<int[]> CONTROL_AE_COMPENSATION_RANGE =
new Key<int[]>("android.control.aeCompensationRange", int[].class);
/**
* <p>
* Smallest step by which exposure compensation
* can be changed
* </p>
* <p>Smallest step by which exposure compensation
* can be changed</p>
*/
public static final Key<Rational> CONTROL_AE_COMPENSATION_STEP =
new Key<Rational>("android.control.aeCompensationStep", Rational.class);
/**
* <p>
* List of AF modes that can be
* selected
* </p>
* <p>List of AF modes that can be
* selected</p>
*/
public static final Key<byte[]> CONTROL_AF_AVAILABLE_MODES =
new Key<byte[]>("android.control.afAvailableModes", byte[].class);
/**
* <p>
* what subset of the full color effect enum
* list is supported
* </p>
* <p>what subset of the full color effect enum
* list is supported</p>
*/
public static final Key<byte[]> CONTROL_AVAILABLE_EFFECTS =
new Key<byte[]>("android.control.availableEffects", byte[].class);
/**
* <p>
* what subset of the scene mode enum list is
* supported.
* </p>
* <p>what subset of the scene mode enum list is
* supported.</p>
*/
public static final Key<byte[]> CONTROL_AVAILABLE_SCENE_MODES =
new Key<byte[]>("android.control.availableSceneModes", byte[].class);
/**
* <p>
* List of video stabilization modes that can
* be supported
* </p>
* <p>List of video stabilization modes that can
* be supported</p>
*/
public static final Key<byte[]> CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES =
new Key<byte[]>("android.control.availableVideoStabilizationModes", byte[].class);
@@ -205,127 +189,93 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<byte[]>("android.control.awbAvailableModes", byte[].class);
/**
* <p>
* For AE, AWB, and AF, how many individual
* regions can be listed for metering?
* </p>
* <p>For AE, AWB, and AF, how many individual
* regions can be listed for metering?</p>
*/
public static final Key<Integer> CONTROL_MAX_REGIONS =
new Key<Integer>("android.control.maxRegions", int.class);
/**
* <p>
* Whether this camera has a
* flash
* </p>
* <p>
* If no flash, none of the flash controls do
* anything. All other metadata should return 0
* </p>
* <p>Whether this camera has a
* flash</p>
* <p>If no flash, none of the flash controls do
* anything. All other metadata should return 0</p>
*/
public static final Key<Byte> FLASH_INFO_AVAILABLE =
new Key<Byte>("android.flash.info.available", byte.class);
/**
* <p>
* Supported resolutions for the JPEG
* thumbnail
* </p>
* <p>Supported resolutions for the JPEG
* thumbnail</p>
*/
public static final Key<android.hardware.camera2.Size[]> JPEG_AVAILABLE_THUMBNAIL_SIZES =
new Key<android.hardware.camera2.Size[]>("android.jpeg.availableThumbnailSizes", android.hardware.camera2.Size[].class);
/**
* <p>
* List of supported aperture
* values
* </p>
* <p>
* If variable aperture not available, only setting
* should be for the fixed aperture
* </p>
* <p>List of supported aperture
* values</p>
* <p>If variable aperture not available, only setting
* should be for the fixed aperture</p>
*/
public static final Key<float[]> LENS_INFO_AVAILABLE_APERTURES =
new Key<float[]>("android.lens.info.availableApertures", float[].class);
/**
* <p>
* List of supported ND filter
* values
* </p>
* <p>
* If not available, only setting is 0. Otherwise,
* <p>List of supported ND filter
* values</p>
* <p>If not available, only setting is 0. Otherwise,
* lists the available exposure index values for dimming
* (2 would mean the filter is set to reduce incoming
* light by two stops)
* </p>
* light by two stops)</p>
*/
public static final Key<float[]> LENS_INFO_AVAILABLE_FILTER_DENSITIES =
new Key<float[]>("android.lens.info.availableFilterDensities", float[].class);
/**
* <p>
* If fitted with optical zoom, what focal
* <p>If fitted with optical zoom, what focal
* lengths are available. If not, the static focal
* length
* </p>
* <p>
* If optical zoom not supported, only one value
* should be reported
* </p>
* length</p>
* <p>If optical zoom not supported, only one value
* should be reported</p>
*/
public static final Key<float[]> LENS_INFO_AVAILABLE_FOCAL_LENGTHS =
new Key<float[]>("android.lens.info.availableFocalLengths", float[].class);
/**
* <p>
* List of supported optical image
* stabilization modes
* </p>
* <p>List of supported optical image
* stabilization modes</p>
*/
public static final Key<byte[]> LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION =
new Key<byte[]>("android.lens.info.availableOpticalStabilization", byte[].class);
/**
* <p>
* Hyperfocal distance for this lens; set to
* 0 if fixed focus
* </p>
* <p>
* The hyperfocal distance is used for the old
* API's 'fixed' setting
* </p>
* <p>Hyperfocal distance for this lens; set to
* 0 if fixed focus</p>
* <p>The hyperfocal distance is used for the old
* API's 'fixed' setting</p>
*/
public static final Key<Float> LENS_INFO_HYPERFOCAL_DISTANCE =
new Key<Float>("android.lens.info.hyperfocalDistance", float.class);
/**
* <p>
* Shortest distance from frontmost surface
* of the lens that can be focused correctly
* </p>
* <p>
* If the lens is fixed-focus, this should be
* 0
* </p>
* <p>Shortest distance from frontmost surface
* of the lens that can be focused correctly</p>
* <p>If the lens is fixed-focus, this should be
* 0</p>
*/
public static final Key<Float> LENS_INFO_MINIMUM_FOCUS_DISTANCE =
new Key<Float>("android.lens.info.minimumFocusDistance", float.class);
/**
* <p>
* Dimensions of lens shading
* map
* </p>
* <p>Dimensions of lens shading
* map</p>
*/
public static final Key<android.hardware.camera2.Size> LENS_INFO_SHADING_MAP_SIZE =
new Key<android.hardware.camera2.Size>("android.lens.info.shadingMapSize", android.hardware.camera2.Size.class);
/**
* <p>
* Direction the camera faces relative to
* device screen
* </p>
* <p>Direction the camera faces relative to
* device screen</p>
* @see #LENS_FACING_FRONT
* @see #LENS_FACING_BACK
*/
@@ -333,18 +283,14 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<Integer>("android.lens.facing", int.class);
/**
* <p>
* If set to 1, the HAL will always split result
* <p>If set to 1, the HAL will always split result
* metadata for a single capture into multiple buffers,
* returned using multiple process_capture_result calls.
* </p>
* <p>
* Does not need to be listed in static
* returned using multiple process_capture_result calls.</p>
* <p>Does not need to be listed in static
* metadata. Support for partial results will be reworked in
* future versions of camera service. This quirk will stop
* working at that point; DO NOT USE without careful
* consideration of future support.
* </p>
* consideration of future support.</p>
*
* <b>Optional</b> - This value may be null on some devices.
*
@@ -354,160 +300,122 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<Byte>("android.quirks.usePartialResult", byte.class);
/**
* <p>
* How many output streams can be allocated at
* the same time for each type of stream
* </p>
* <p>
* Video snapshot with preview callbacks requires 3
* <p>How many output streams can be allocated at
* the same time for each type of stream</p>
* <p>Video snapshot with preview callbacks requires 3
* processed streams (preview, record, app callbacks) and
* one JPEG stream (snapshot)
* </p>
* one JPEG stream (snapshot)</p>
*/
public static final Key<int[]> REQUEST_MAX_NUM_OUTPUT_STREAMS =
new Key<int[]>("android.request.maxNumOutputStreams", int[].class);
/**
* <p>
* List of app-visible formats
* </p>
* <p>List of app-visible formats</p>
*/
public static final Key<int[]> SCALER_AVAILABLE_FORMATS =
new Key<int[]>("android.scaler.availableFormats", int[].class);
/**
* <p>
* The minimum frame duration that is supported
* <p>The minimum frame duration that is supported
* for each resolution in availableJpegSizes. Should
* correspond to the frame duration when only that JPEG
* stream is active and captured in a burst, with all
* processing set to FAST
* </p>
* <p>
* When multiple streams are configured, the minimum
* frame duration will be >= max(individual stream min
* durations)
* </p>
* processing set to FAST</p>
* <p>When multiple streams are configured, the minimum
* frame duration will be &gt;= max(individual stream min
* durations)</p>
*/
public static final Key<long[]> SCALER_AVAILABLE_JPEG_MIN_DURATIONS =
new Key<long[]>("android.scaler.availableJpegMinDurations", long[].class);
/**
* <p>
* The resolutions available for output from
* the JPEG block. Listed as width x height
* </p>
* <p>The resolutions available for output from
* the JPEG block. Listed as width x height</p>
*/
public static final Key<android.hardware.camera2.Size[]> SCALER_AVAILABLE_JPEG_SIZES =
new Key<android.hardware.camera2.Size[]>("android.scaler.availableJpegSizes", android.hardware.camera2.Size[].class);
/**
* <p>
* The maximum ratio between active area width
* <p>The maximum ratio between active area width
* and crop region width, or between active area height and
* crop region height, if the crop region height is larger
* than width
* </p>
* than width</p>
*/
public static final Key<Float> SCALER_AVAILABLE_MAX_DIGITAL_ZOOM =
new Key<Float>("android.scaler.availableMaxDigitalZoom", float.class);
/**
* <p>
* The minimum frame duration that is supported
* <p>The minimum frame duration that is supported
* for each resolution in availableProcessedSizes. Should
* correspond to the frame duration when only that processed
* stream is active, with all processing set to
* FAST
* </p>
* <p>
* When multiple streams are configured, the minimum
* frame duration will be >= max(individual stream min
* durations)
* </p>
* FAST</p>
* <p>When multiple streams are configured, the minimum
* frame duration will be &gt;= max(individual stream min
* durations)</p>
*/
public static final Key<long[]> SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS =
new Key<long[]>("android.scaler.availableProcessedMinDurations", long[].class);
/**
* <p>
* The resolutions available for use with
* <p>The resolutions available for use with
* processed output streams, such as YV12, NV12, and
* platform opaque YUV/RGB streams to the GPU or video
* encoders. Listed as width, height
* </p>
* <p>
* The actual supported resolution list may be limited by
* encoders. Listed as width, height</p>
* <p>The actual supported resolution list may be limited by
* consumer end points for different use cases. For example, for
* recording use case, the largest supported resolution may be
* limited by max supported size from encoder, for preview use
* case, the largest supported resolution may be limited by max
* resolution SurfaceTexture/SurfaceView can support.
* </p>
* resolution SurfaceTexture/SurfaceView can support.</p>
*/
public static final Key<android.hardware.camera2.Size[]> SCALER_AVAILABLE_PROCESSED_SIZES =
new Key<android.hardware.camera2.Size[]>("android.scaler.availableProcessedSizes", android.hardware.camera2.Size[].class);
/**
* <p>
* Area of raw data which corresponds to only
* <p>Area of raw data which corresponds to only
* active pixels; smaller or equal to
* pixelArraySize.
* </p>
* pixelArraySize.</p>
*/
public static final Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE =
new Key<android.graphics.Rect>("android.sensor.info.activeArraySize", android.graphics.Rect.class);
/**
* <p>
* Range of valid sensitivities
* </p>
* <p>Range of valid sensitivities</p>
*/
public static final Key<int[]> SENSOR_INFO_SENSITIVITY_RANGE =
new Key<int[]>("android.sensor.info.sensitivityRange", int[].class);
/**
* <p>
* Range of valid exposure
* times
* </p>
* <p>Range of valid exposure
* times</p>
*/
public static final Key<long[]> SENSOR_INFO_EXPOSURE_TIME_RANGE =
new Key<long[]>("android.sensor.info.exposureTimeRange", long[].class);
/**
* <p>
* Maximum possible frame duration (minimum frame
* rate)
* </p>
* <p>
* Minimum duration is a function of resolution,
* <p>Maximum possible frame duration (minimum frame
* rate)</p>
* <p>Minimum duration is a function of resolution,
* processing settings. See
* android.scaler.availableProcessedMinDurations
* android.scaler.availableJpegMinDurations
* android.scaler.availableRawMinDurations
* </p>
* android.scaler.availableRawMinDurations</p>
*/
public static final Key<Long> SENSOR_INFO_MAX_FRAME_DURATION =
new Key<Long>("android.sensor.info.maxFrameDuration", long.class);
/**
* <p>
* The physical dimensions of the full pixel
* array
* </p>
* <p>
* Needed for FOV calculation for old API
* </p>
* <p>The physical dimensions of the full pixel
* array</p>
* <p>Needed for FOV calculation for old API</p>
*/
public static final Key<float[]> SENSOR_INFO_PHYSICAL_SIZE =
new Key<float[]>("android.sensor.info.physicalSize", float[].class);
/**
* <p>
* Gain factor from electrons to raw units when
* ISO=100
* </p>
* <p>Gain factor from electrons to raw units when
* ISO=100</p>
*
* <b>Optional</b> - This value may be null on some devices.
*
@@ -519,16 +427,12 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<Rational>("android.sensor.baseGainFactor", Rational.class);
/**
* <p>
* Maximum sensitivity that is implemented
* purely through analog gain
* </p>
* <p>
* For android.sensor.sensitivity values less than or
* <p>Maximum sensitivity that is implemented
* purely through analog gain</p>
* <p>For android.sensor.sensitivity values less than or
* equal to this, all applied gain must be analog. For
* values above this, it can be a mix of analog and
* digital
* </p>
* digital</p>
*
* <b>Optional</b> - This value may be null on some devices.
*
@@ -540,60 +444,46 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<Integer>("android.sensor.maxAnalogSensitivity", int.class);
/**
* <p>
* Clockwise angle through which the output
* <p>Clockwise angle through which the output
* image needs to be rotated to be upright on the device
* 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>
* to bottom in the sensor's coordinate system</p>
*/
public static final Key<Integer> SENSOR_ORIENTATION =
new Key<Integer>("android.sensor.orientation", int.class);
/**
* <p>
* Which face detection modes are available,
* if any
* </p>
* <p>
* OFF means face detection is disabled, it must
* be included in the list.
* </p><p>
* SIMPLE means the device supports the
* <p>Which face detection modes are available,
* if any</p>
* <p>OFF means face detection is disabled, it must
* be included in the list.</p>
* <p>SIMPLE means the device supports the
* android.statistics.faceRectangles and
* android.statistics.faceScores outputs.
* </p><p>
* FULL means the device additionally supports the
* android.statistics.faceScores outputs.</p>
* <p>FULL means the device additionally supports the
* android.statistics.faceIds and
* android.statistics.faceLandmarks outputs.
* </p>
* android.statistics.faceLandmarks outputs.</p>
*/
public static final Key<byte[]> STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES =
new Key<byte[]>("android.statistics.info.availableFaceDetectModes", byte[].class);
/**
* <p>
* Maximum number of simultaneously detectable
* faces
* </p>
* <p>Maximum number of simultaneously detectable
* faces</p>
*/
public static final Key<Integer> STATISTICS_INFO_MAX_FACE_COUNT =
new Key<Integer>("android.statistics.info.maxFaceCount", int.class);
/**
* <p>
* Maximum number of supported points in the
* tonemap curve
* </p>
* <p>Maximum number of supported points in the
* tonemap curve</p>
*/
public static final Key<Integer> TONEMAP_MAX_CURVE_POINTS =
new Key<Integer>("android.tonemap.maxCurvePoints", int.class);
/**
* <p>
* A list of camera LEDs that are available on this system.
* </p>
* <p>A list of camera LEDs that are available on this system.</p>
* @see #LED_AVAILABLE_LEDS_TRANSMIT
*
* @hide
@@ -602,17 +492,14 @@ public final class CameraCharacteristics extends CameraMetadata {
new Key<int[]>("android.led.availableLeds", int[].class);
/**
* <p>
* The camera 3 HAL device can implement one of two possible
* <p>The camera 3 HAL device can implement one of two possible
* operational modes; limited and full. Full support is
* expected from new higher-end devices. Limited mode has
* hardware requirements roughly in line with those for a
* camera HAL device v1 implementation, and is expected from
* older or inexpensive devices. Full is a strict superset of
* limited, and they share the same essential operational flow.
* </p><p>
* For full details refer to "S3. Operational Modes" in camera3.h
* </p>
* limited, and they share the same essential operational flow.</p>
* <p>For full details refer to "S3. Operational Modes" in camera3.h</p>
* @see #INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED
* @see #INFO_SUPPORTED_HARDWARE_LEVEL_FULL
*/

View File

@@ -224,9 +224,7 @@ public abstract class CameraMetadata {
//
/**
* <p>
* android.led.transmit control is used
* </p>
* <p>android.led.transmit control is used</p>
* @see CameraCharacteristics#LED_AVAILABLE_LEDS
* @hide
*/
@@ -251,28 +249,22 @@ public abstract class CameraMetadata {
//
/**
* <p>
* Use the android.colorCorrection.transform matrix
* and android.colorCorrection.gains to do color conversion
* </p>
* <p>Use the android.colorCorrection.transform matrix
* and android.colorCorrection.gains to do color conversion</p>
* @see CaptureRequest#COLOR_CORRECTION_MODE
*/
public static final int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0;
/**
* <p>
* Must not slow down frame rate relative to raw
* bayer output
* </p>
* <p>Must not slow down frame rate relative to raw
* bayer output</p>
* @see CaptureRequest#COLOR_CORRECTION_MODE
*/
public static final int COLOR_CORRECTION_MODE_FAST = 1;
/**
* <p>
* Frame rate may be reduced by high
* quality
* </p>
* <p>Frame rate may be reduced by high
* quality</p>
* @see CaptureRequest#COLOR_CORRECTION_MODE
*/
public static final int COLOR_CORRECTION_MODE_HIGH_QUALITY = 2;
@@ -306,52 +298,42 @@ public abstract class CameraMetadata {
//
/**
* <p>
* Autoexposure is disabled; sensor.exposureTime,
* sensor.sensitivity and sensor.frameDuration are used
* </p>
* <p>Autoexposure is disabled; sensor.exposureTime,
* sensor.sensitivity and sensor.frameDuration are used</p>
* @see CaptureRequest#CONTROL_AE_MODE
*/
public static final int CONTROL_AE_MODE_OFF = 0;
/**
* <p>
* Autoexposure is active, no flash
* control
* </p>
* <p>Autoexposure is active, no flash
* control</p>
* @see CaptureRequest#CONTROL_AE_MODE
*/
public static final int CONTROL_AE_MODE_ON = 1;
/**
* <p>
* if flash exists Autoexposure is active, auto
* <p>if flash exists Autoexposure is active, auto
* flash control; flash may be fired when precapture
* trigger is activated, and for captures for which
* captureIntent = STILL_CAPTURE
* </p>
* captureIntent = STILL_CAPTURE</p>
* @see CaptureRequest#CONTROL_AE_MODE
*/
public static final int CONTROL_AE_MODE_ON_AUTO_FLASH = 2;
/**
* <p>
* if flash exists Autoexposure is active, auto
* <p>if flash exists Autoexposure is active, auto
* flash control for precapture trigger and always flash
* when captureIntent = STILL_CAPTURE
* </p>
* when captureIntent = STILL_CAPTURE</p>
* @see CaptureRequest#CONTROL_AE_MODE
*/
public static final int CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3;
/**
* <p>
* optional Automatic red eye reduction with flash.
* <p>optional Automatic red eye reduction with flash.
* If deemed necessary, red eye reduction sequence should
* fire when precapture trigger is activated, and final
* flash should fire when captureIntent =
* STILL_CAPTURE
* </p>
* STILL_CAPTURE</p>
* @see CaptureRequest#CONTROL_AE_MODE
*/
public static final int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4;
@@ -361,20 +343,16 @@ public abstract class CameraMetadata {
//
/**
* <p>
* The trigger is idle.
* </p>
* <p>The trigger is idle.</p>
* @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
*/
public static final int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0;
/**
* <p>
* The precapture metering sequence
* <p>The precapture metering sequence
* must be started. The exact effect of the precapture
* trigger depends on the current AE mode and
* state.
* </p>
* state.</p>
* @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
*/
public static final int CONTROL_AE_PRECAPTURE_TRIGGER_START = 1;
@@ -384,55 +362,44 @@ public abstract class CameraMetadata {
//
/**
* <p>
* The 3A routines do not control the lens;
* <p>The 3A routines do not control the lens;
* android.lens.focusDistance is controlled by the
* application
* </p>
* application</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_OFF = 0;
/**
* <p>
* if lens is not fixed focus.
* </p><p>
* Use android.lens.minimumFocusDistance to determine if lens
* <p>If lens is not fixed focus.</p>
* <p>Use android.lens.minimumFocusDistance to determine if lens
* is fixed focus In this mode, the lens does not move unless
* the autofocus trigger action is called. When that trigger
* is activated, AF must transition to ACTIVE_SCAN, then to
* the outcome of the scan (FOCUSED or
* NOT_FOCUSED).
* </p><p>
* Triggering cancel AF resets the lens position to default,
* and sets the AF state to INACTIVE.
* </p>
* NOT_FOCUSED).</p>
* <p>Triggering cancel AF resets the lens position to default,
* and sets the AF state to INACTIVE.</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_AUTO = 1;
/**
* <p>
* In this mode, the lens does not move unless the
* autofocus trigger action is called.
* </p><p>
* When that trigger is activated, AF must transition to
* <p>In this mode, the lens does not move unless the
* autofocus trigger action is called.</p>
* <p>When that trigger is activated, AF must transition to
* ACTIVE_SCAN, then to the outcome of the scan (FOCUSED or
* NOT_FOCUSED). Triggering cancel AF resets the lens
* position to default, and sets the AF state to
* INACTIVE.
* </p>
* INACTIVE.</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_MACRO = 2;
/**
* <p>
* In this mode, the AF algorithm modifies the lens
* <p>In this mode, the AF algorithm modifies the lens
* position continually to attempt to provide a
* constantly-in-focus image stream.
* </p><p>
* The focusing behavior should be suitable for good quality
* constantly-in-focus image stream.</p>
* <p>The focusing behavior should be suitable for good quality
* video recording; typically this means slower focus
* movement and no overshoots. When the AF trigger is not
* involved, the AF algorithm should start in INACTIVE state,
@@ -440,25 +407,21 @@ public abstract class CameraMetadata {
* states as appropriate. When the AF trigger is activated,
* the algorithm should immediately transition into
* AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
* lens position until a cancel AF trigger is received.
* </p><p>
* Once cancel is received, the algorithm should transition
* lens position until a cancel AF trigger is received.</p>
* <p>Once cancel is received, the algorithm should transition
* back to INACTIVE and resume passive scan. Note that this
* behavior is not identical to CONTINUOUS_PICTURE, since an
* ongoing PASSIVE_SCAN must immediately be
* canceled.
* </p>
* canceled.</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3;
/**
* <p>
* In this mode, the AF algorithm modifies the lens
* <p>In this mode, the AF algorithm modifies the lens
* position continually to attempt to provide a
* constantly-in-focus image stream.
* </p><p>
* The focusing behavior should be suitable for still image
* constantly-in-focus image stream.</p>
* <p>The focusing behavior should be suitable for still image
* capture; typically this means focusing as fast as
* possible. When the AF trigger is not involved, the AF
* algorithm should start in INACTIVE state, and then
@@ -467,22 +430,18 @@ public abstract class CameraMetadata {
* trigger is activated, the algorithm should finish its
* PASSIVE_SCAN if active, and then transition into
* AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
* lens position until a cancel AF trigger is received.
* </p><p>
* When the AF cancel trigger is activated, the algorithm
* lens position until a cancel AF trigger is received.</p>
* <p>When the AF cancel trigger is activated, the algorithm
* should transition back to INACTIVE and then act as if it
* has just been started.
* </p>
* has just been started.</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4;
/**
* <p>
* Extended depth of field (digital focus). AF
* <p>Extended depth of field (digital focus). AF
* trigger is ignored, AF state should always be
* INACTIVE.
* </p>
* INACTIVE.</p>
* @see CaptureRequest#CONTROL_AF_MODE
*/
public static final int CONTROL_AF_MODE_EDOF = 5;
@@ -492,26 +451,20 @@ public abstract class CameraMetadata {
//
/**
* <p>
* The trigger is idle.
* </p>
* <p>The trigger is idle.</p>
* @see CaptureRequest#CONTROL_AF_TRIGGER
*/
public static final int CONTROL_AF_TRIGGER_IDLE = 0;
/**
* <p>
* Autofocus must trigger now.
* </p>
* <p>Autofocus must trigger now.</p>
* @see CaptureRequest#CONTROL_AF_TRIGGER
*/
public static final int CONTROL_AF_TRIGGER_START = 1;
/**
* <p>
* Autofocus must return to initial
* state, and cancel any active trigger.
* </p>
* <p>Autofocus must return to initial
* state, and cancel any active trigger.</p>
* @see CaptureRequest#CONTROL_AF_TRIGGER
*/
public static final int CONTROL_AF_TRIGGER_CANCEL = 2;
@@ -570,59 +523,47 @@ public abstract class CameraMetadata {
//
/**
* <p>
* This request doesn't fall into the other
* <p>This request doesn't fall into the other
* categories. Default to preview-like
* behavior.
* </p>
* behavior.</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_CUSTOM = 0;
/**
* <p>
* This request is for a preview-like usecase. The
* <p>This request is for a preview-like usecase. The
* precapture trigger may be used to start off a metering
* w/flash sequence
* </p>
* w/flash sequence</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_PREVIEW = 1;
/**
* <p>
* This request is for a still capture-type
* usecase.
* </p>
* <p>This request is for a still capture-type
* usecase.</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2;
/**
* <p>
* This request is for a video recording
* usecase.
* </p>
* <p>This request is for a video recording
* usecase.</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3;
/**
* <p>
* This request is for a video snapshot (still
* image while recording video) usecase
* </p>
* <p>This request is for a video snapshot (still
* image while recording video) usecase</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4;
/**
* <p>
* This request is for a ZSL usecase; the
* <p>This request is for a ZSL usecase; the
* application will stream full-resolution images and
* reprocess one or several later for a final
* capture
* </p>
* capture</p>
* @see CaptureRequest#CONTROL_CAPTURE_INTENT
*/
public static final int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5;
@@ -681,36 +622,30 @@ public abstract class CameraMetadata {
//
/**
* <p>
* Full application control of pipeline. All 3A
* <p>Full application control of pipeline. All 3A
* routines are disabled, no other settings in
* android.control.* have any effect
* </p>
* android.control.* have any effect</p>
* @see CaptureRequest#CONTROL_MODE
*/
public static final int CONTROL_MODE_OFF = 0;
/**
* <p>
* Use settings for each individual 3A routine.
* <p>Use settings for each individual 3A routine.
* Manual control of capture parameters is disabled. All
* controls in android.control.* besides sceneMode take
* effect
* </p>
* effect</p>
* @see CaptureRequest#CONTROL_MODE
*/
public static final int CONTROL_MODE_AUTO = 1;
/**
* <p>
* Use specific scene mode. Enabling this disables
* <p>Use specific scene mode. Enabling this disables
* control.aeMode, control.awbMode and control.afMode
* controls; the HAL must ignore those settings while
* USE_SCENE_MODE is active (except for FACE_PRIORITY
* scene mode). Other control entries are still active.
* This setting can only be used if availableSceneModes !=
* UNSUPPORTED
* </p>
* UNSUPPORTED</p>
* @see CaptureRequest#CONTROL_MODE
*/
public static final int CONTROL_MODE_USE_SCENE_MODE = 2;
@@ -725,18 +660,15 @@ public abstract class CameraMetadata {
public static final int CONTROL_SCENE_MODE_UNSUPPORTED = 0;
/**
* <p>
* if face detection support exists Use face
* <p>if face detection support exists Use face
* detection data to drive 3A routines. If face detection
* statistics are disabled, should still operate correctly
* (but not return face detection statistics to the
* framework).
* </p><p>
* Unlike the other scene modes, aeMode, awbMode, and afMode
* framework).</p>
* <p>Unlike the other scene modes, aeMode, awbMode, and afMode
* remain active when FACE_PRIORITY is set. This is due to
* compatibility concerns with the old camera
* API
* </p>
* API</p>
* @see CaptureRequest#CONTROL_SCENE_MODE
*/
public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1;
@@ -821,27 +753,21 @@ public abstract class CameraMetadata {
//
/**
* <p>
* No edge enhancement is applied
* </p>
* <p>No edge enhancement is applied</p>
* @see CaptureRequest#EDGE_MODE
*/
public static final int EDGE_MODE_OFF = 0;
/**
* <p>
* Must not slow down frame rate relative to raw
* bayer output
* </p>
* <p>Must not slow down frame rate relative to raw
* bayer output</p>
* @see CaptureRequest#EDGE_MODE
*/
public static final int EDGE_MODE_FAST = 1;
/**
* <p>
* Frame rate may be reduced by high
* quality
* </p>
* <p>Frame rate may be reduced by high
* quality</p>
* @see CaptureRequest#EDGE_MODE
*/
public static final int EDGE_MODE_HIGH_QUALITY = 2;
@@ -851,30 +777,24 @@ public abstract class CameraMetadata {
//
/**
* <p>
* Do not fire the flash for this
* capture
* </p>
* <p>Do not fire the flash for this
* capture</p>
* @see CaptureRequest#FLASH_MODE
*/
public static final int FLASH_MODE_OFF = 0;
/**
* <p>
* if android.flash.available is true Fire flash
* <p>if android.flash.available is true Fire flash
* for this capture based on firingPower,
* firingTime.
* </p>
* firingTime.</p>
* @see CaptureRequest#FLASH_MODE
*/
public static final int FLASH_MODE_SINGLE = 1;
/**
* <p>
* if android.flash.available is true Flash
* <p>if android.flash.available is true Flash
* continuously on, power set by
* firingPower
* </p>
* firingPower</p>
* @see CaptureRequest#FLASH_MODE
*/
public static final int FLASH_MODE_TORCH = 2;
@@ -898,27 +818,21 @@ public abstract class CameraMetadata {
//
/**
* <p>
* No noise reduction is applied
* </p>
* <p>No noise reduction is applied</p>
* @see CaptureRequest#NOISE_REDUCTION_MODE
*/
public static final int NOISE_REDUCTION_MODE_OFF = 0;
/**
* <p>
* Must not slow down frame rate relative to raw
* bayer output
* </p>
* <p>Must not slow down frame rate relative to raw
* bayer output</p>
* @see CaptureRequest#NOISE_REDUCTION_MODE
*/
public static final int NOISE_REDUCTION_MODE_FAST = 1;
/**
* <p>
* May slow down frame rate to provide highest
* quality
* </p>
* <p>May slow down frame rate to provide highest
* quality</p>
* @see CaptureRequest#NOISE_REDUCTION_MODE
*/
public static final int NOISE_REDUCTION_MODE_HIGH_QUALITY = 2;
@@ -933,19 +847,15 @@ public abstract class CameraMetadata {
public static final int STATISTICS_FACE_DETECT_MODE_OFF = 0;
/**
* <p>
* Optional Return rectangle and confidence
* only
* </p>
* <p>Optional Return rectangle and confidence
* only</p>
* @see CaptureRequest#STATISTICS_FACE_DETECT_MODE
*/
public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1;
/**
* <p>
* Optional Return all face
* metadata
* </p>
* <p>Optional Return all face
* metadata</p>
* @see CaptureRequest#STATISTICS_FACE_DETECT_MODE
*/
public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2;
@@ -969,28 +879,22 @@ public abstract class CameraMetadata {
//
/**
* <p>
* Use the tone mapping curve specified in
* android.tonemap.curve
* </p>
* <p>Use the tone mapping curve specified in
* android.tonemap.curve</p>
* @see CaptureRequest#TONEMAP_MODE
*/
public static final int TONEMAP_MODE_CONTRAST_CURVE = 0;
/**
* <p>
* Must not slow down frame rate relative to raw
* bayer output
* </p>
* <p>Must not slow down frame rate relative to raw
* bayer output</p>
* @see CaptureRequest#TONEMAP_MODE
*/
public static final int TONEMAP_MODE_FAST = 1;
/**
* <p>
* Frame rate may be reduced by high
* quality
* </p>
* <p>Frame rate may be reduced by high
* quality</p>
* @see CaptureRequest#TONEMAP_MODE
*/
public static final int TONEMAP_MODE_HIGH_QUALITY = 2;
@@ -1000,60 +904,48 @@ public abstract class CameraMetadata {
//
/**
* <p>
* AE is off. When a camera device is opened, it starts in
* this state.
* </p>
* <p>AE is off. When a camera device is opened, it starts in
* this state.</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_INACTIVE = 0;
/**
* <p>
* AE doesn't yet have a good set of control values
* for the current scene
* </p>
* <p>AE doesn't yet have a good set of control values
* for the current scene</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_SEARCHING = 1;
/**
* <p>
* AE has a good set of control values for the
* current scene
* </p>
* <p>AE has a good set of control values for the
* current scene</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_CONVERGED = 2;
/**
* <p>
* AE has been locked (aeMode =
* LOCKED)
* </p>
* <p>AE has been locked (aeMode =
* LOCKED)</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_LOCKED = 3;
/**
* <p>
* AE has a good set of control values, but flash
* <p>AE has a good set of control values, but flash
* needs to be fired for good quality still
* capture
* </p>
* capture</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_FLASH_REQUIRED = 4;
/**
* <p>
* AE has been asked to do a precapture sequence
* <p>AE has been asked to do a precapture sequence
* (through the
* trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING)
* call), and is currently executing it. Once PRECAPTURE
* completes, AE will transition to CONVERGED or
* FLASH_REQUIRED as appropriate
* </p>
* FLASH_REQUIRED as appropriate</p>
* @see CaptureResult#CONTROL_AE_STATE
*/
public static final int CONTROL_AE_STATE_PRECAPTURE = 5;
@@ -1063,71 +955,57 @@ public abstract class CameraMetadata {
//
/**
* <p>
* AF off or has not yet tried to scan/been asked
* <p>AF off or has not yet tried to scan/been asked
* to scan. When a camera device is opened, it starts in
* this state.
* </p>
* this state.</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_INACTIVE = 0;
/**
* <p>
* if CONTINUOUS_* modes are supported. AF is
* <p>if CONTINUOUS_* modes are supported. AF is
* currently doing an AF scan initiated by a continuous
* autofocus mode
* </p>
* autofocus mode</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_PASSIVE_SCAN = 1;
/**
* <p>
* if CONTINUOUS_* modes are supported. AF currently
* <p>if CONTINUOUS_* modes are supported. AF currently
* believes it is in focus, but may restart scanning at
* any time.
* </p>
* any time.</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_PASSIVE_FOCUSED = 2;
/**
* <p>
* if AUTO or MACRO modes are supported. AF is doing
* <p>if AUTO or MACRO modes are supported. AF is doing
* an AF scan because it was triggered by AF
* trigger
* </p>
* trigger</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_ACTIVE_SCAN = 3;
/**
* <p>
* if any AF mode besides OFF is supported. AF
* <p>if any AF mode besides OFF is supported. AF
* believes it is focused correctly and is
* locked
* </p>
* locked</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_FOCUSED_LOCKED = 4;
/**
* <p>
* if any AF mode besides OFF is supported. AF has
* <p>if any AF mode besides OFF is supported. AF has
* failed to focus successfully and is
* locked
* </p>
* locked</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5;
/**
* <p>
* if CONTINUOUS_* modes are supported. AF finished a
* <p>if CONTINUOUS_* modes are supported. AF finished a
* passive scan without finding focus, and may restart
* scanning at any time.
* </p>
* scanning at any time.</p>
* @see CaptureResult#CONTROL_AF_STATE
*/
public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6;
@@ -1137,37 +1015,29 @@ public abstract class CameraMetadata {
//
/**
* <p>
* AWB is not in auto mode. When a camera device is opened, it
* starts in this state.
* </p>
* <p>AWB is not in auto mode. When a camera device is opened, it
* starts in this state.</p>
* @see CaptureResult#CONTROL_AWB_STATE
*/
public static final int CONTROL_AWB_STATE_INACTIVE = 0;
/**
* <p>
* AWB doesn't yet have a good set of control
* values for the current scene
* </p>
* <p>AWB doesn't yet have a good set of control
* values for the current scene</p>
* @see CaptureResult#CONTROL_AWB_STATE
*/
public static final int CONTROL_AWB_STATE_SEARCHING = 1;
/**
* <p>
* AWB has a good set of control values for the
* current scene
* </p>
* <p>AWB has a good set of control values for the
* current scene</p>
* @see CaptureResult#CONTROL_AWB_STATE
*/
public static final int CONTROL_AWB_STATE_CONVERGED = 2;
/**
* <p>
* AE has been locked (aeMode =
* LOCKED)
* </p>
* <p>AE has been locked (aeMode =
* LOCKED)</p>
* @see CaptureResult#CONTROL_AWB_STATE
*/
public static final int CONTROL_AWB_STATE_LOCKED = 3;
@@ -1177,36 +1047,28 @@ public abstract class CameraMetadata {
//
/**
* <p>
* No flash on camera
* </p>
* <p>No flash on camera</p>
* @see CaptureResult#FLASH_STATE
*/
public static final int FLASH_STATE_UNAVAILABLE = 0;
/**
* <p>
* if android.flash.available is true Flash is
* charging and cannot be fired
* </p>
* <p>if android.flash.available is true Flash is
* charging and cannot be fired</p>
* @see CaptureResult#FLASH_STATE
*/
public static final int FLASH_STATE_CHARGING = 1;
/**
* <p>
* if android.flash.available is true Flash is
* ready to fire
* </p>
* <p>if android.flash.available is true Flash is
* ready to fire</p>
* @see CaptureResult#FLASH_STATE
*/
public static final int FLASH_STATE_READY = 2;
/**
* <p>
* if android.flash.available is true Flash fired
* for this capture
* </p>
* <p>if android.flash.available is true Flash fired
* for this capture</p>
* @see CaptureResult#FLASH_STATE
*/
public static final int FLASH_STATE_FIRED = 3;

View File

@@ -318,10 +318,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
/**
* <p>
* When android.control.awbMode is not OFF, TRANSFORM_MATRIX
* should be ignored.
* </p>
* <p>When android.control.awbMode is not OFF, TRANSFORM_MATRIX
* should be ignored.</p>
* @see #COLOR_CORRECTION_MODE_TRANSFORM_MATRIX
* @see #COLOR_CORRECTION_MODE_FAST
* @see #COLOR_CORRECTION_MODE_HIGH_QUALITY
@@ -330,55 +328,42 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.colorCorrection.mode", int.class);
/**
* <p>
* A color transform matrix to use to transform
* from sensor RGB color space to output linear sRGB color space
* </p>
* <p>
* This matrix is either set by HAL when the request
* <p>A color transform matrix to use to transform
* from sensor RGB color space to output linear sRGB color space</p>
* <p>This matrix is either set by HAL when the request
* android.colorCorrection.mode is not TRANSFORM_MATRIX, or
* directly by the application in the request when the
* android.colorCorrection.mode is TRANSFORM_MATRIX.
* </p><p>
* In the latter case, the HAL may round the matrix to account
* android.colorCorrection.mode is TRANSFORM_MATRIX.</p>
* <p>In the latter case, the HAL may round the matrix to account
* for precision issues; the final rounded matrix should be
* reported back in this matrix result metadata.
* </p>
* reported back in this matrix result metadata.</p>
*/
public static final Key<Rational[]> COLOR_CORRECTION_TRANSFORM =
new Key<Rational[]>("android.colorCorrection.transform", Rational[].class);
/**
* <p>
* Gains applying to Bayer color channels for
* white-balance
* </p>
* <p>
* The 4-channel white-balance gains are defined in
* <p>Gains applying to Bayer color channels for
* white-balance</p>
* <p>The 4-channel white-balance gains are defined in
* the order of [R G_even G_odd B], where G_even is the gain
* for green pixels on even rows of the output, and G_odd
* is the gain for greenpixels on the odd rows. if a HAL
* does not support a separate gain for even/odd green channels,
* it should use the G_even value,and write G_odd equal to
* G_even in the output result metadata.
* </p><p>
* This array is either set by HAL when the request
* G_even in the output result metadata.</p>
* <p>This array is either set by HAL when the request
* android.colorCorrection.mode is not TRANSFORM_MATRIX, or
* directly by the application in the request when the
* android.colorCorrection.mode is TRANSFORM_MATRIX.
* </p><p>
* The ouput should be the gains actually applied by the HAL to
* the current frame.
* </p>
* android.colorCorrection.mode is TRANSFORM_MATRIX.</p>
* <p>The ouput should be the gains actually applied by the HAL to
* the current frame.</p>
*/
public static final Key<float[]> COLOR_CORRECTION_GAINS =
new Key<float[]>("android.colorCorrection.gains", float[].class);
/**
* <p>
* Enum for controlling
* antibanding
* </p>
* <p>Enum for controlling
* antibanding</p>
* @see #CONTROL_AE_ANTIBANDING_MODE_OFF
* @see #CONTROL_AE_ANTIBANDING_MODE_50HZ
* @see #CONTROL_AE_ANTIBANDING_MODE_60HZ
@@ -388,42 +373,30 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.aeAntibandingMode", int.class);
/**
* <p>
* Adjustment to AE target image
* brightness
* </p>
* <p>
* For example, if EV step is 0.333, '6' will mean an
* <p>Adjustment to AE target image
* brightness</p>
* <p>For example, if EV step is 0.333, '6' will mean an
* exposure compensation of +2 EV; -3 will mean an exposure
* compensation of -1
* </p>
* compensation of -1</p>
*/
public static final Key<Integer> CONTROL_AE_EXPOSURE_COMPENSATION =
new Key<Integer>("android.control.aeExposureCompensation", int.class);
/**
* <p>
* Whether AE is currently locked to its latest
* calculated values
* </p>
* <p>
* Note that even when AE is locked, the flash may be
* <p>Whether AE is currently locked to its latest
* calculated values</p>
* <p>Note that even when AE is locked, the flash may be
* fired if the AE mode is ON_AUTO_FLASH / ON_ALWAYS_FLASH /
* ON_AUTO_FLASH_REDEYE.
* </p>
* ON_AUTO_FLASH_REDEYE.</p>
*/
public static final Key<Boolean> CONTROL_AE_LOCK =
new Key<Boolean>("android.control.aeLock", boolean.class);
/**
* <p>
* Whether AE is currently updating the sensor
* exposure and sensitivity fields
* </p>
* <p>
* Only effective if android.control.mode =
* AUTO
* </p>
* <p>Whether AE is currently updating the sensor
* exposure and sensitivity fields</p>
* <p>Only effective if android.control.mode =
* AUTO</p>
* @see #CONTROL_AE_MODE_OFF
* @see #CONTROL_AE_MODE_ON
* @see #CONTROL_AE_MODE_ON_AUTO_FLASH
@@ -434,60 +407,45 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.aeMode", int.class);
/**
* <p>
* List of areas to use for
* metering
* </p>
* <p>
* Each area is a rectangle plus weight: xmin, ymin,
* <p>List of areas to use for
* metering</p>
* <p>Each area is a rectangle plus weight: xmin, ymin,
* xmax, ymax, weight. The rectangle is defined inclusive of the
* specified coordinates.
* </p><p>
* The coordinate system is based on the active pixel array,
* specified coordinates.</p>
* <p>The coordinate system is based on the active pixel array,
* with (0,0) being the top-left pixel in the active pixel array, and
* (android.sensor.info.activeArraySize.width - 1,
* android.sensor.info.activeArraySize.height - 1) being the
* bottom-right pixel in the active pixel array. The weight
* should be nonnegative.
* </p><p>
* If all regions have 0 weight, then no specific metering area
* should be nonnegative.</p>
* <p>If all regions have 0 weight, then no specific metering area
* needs to be used by the HAL. If the metering region is
* outside the current android.scaler.cropRegion, the HAL
* should ignore the sections outside the region and output the
* used sections in the frame metadata
* </p>
* used sections in the frame metadata</p>
*/
public static final Key<int[]> CONTROL_AE_REGIONS =
new Key<int[]>("android.control.aeRegions", int[].class);
/**
* <p>
* Range over which fps can be adjusted to
* maintain exposure
* </p>
* <p>
* Only constrains AE algorithm, not manual control
* of android.sensor.exposureTime
* </p>
* <p>Range over which fps can be adjusted to
* maintain exposure</p>
* <p>Only constrains AE algorithm, not manual control
* of android.sensor.exposureTime</p>
*/
public static final Key<int[]> CONTROL_AE_TARGET_FPS_RANGE =
new Key<int[]>("android.control.aeTargetFpsRange", int[].class);
/**
* <p>
* Whether the HAL must trigger precapture
* metering.
* </p>
* <p>
* This entry is normally set to IDLE, or is not
* <p>Whether the HAL must trigger precapture
* metering.</p>
* <p>This entry is normally set to IDLE, or is not
* included at all in the request settings. When included and
* set to START, the HAL must trigger the autoexposure
* precapture metering sequence.
* </p><p>
* The effect of AE precapture trigger depends on the current
* precapture metering sequence.</p>
* <p>The effect of AE precapture trigger depends on the current
* AE mode and state; see the camera HAL device v3 header for
* details.
* </p>
* details.</p>
* @see #CONTROL_AE_PRECAPTURE_TRIGGER_IDLE
* @see #CONTROL_AE_PRECAPTURE_TRIGGER_START
*/
@@ -495,10 +453,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.aePrecaptureTrigger", int.class);
/**
* <p>
* Whether AF is currently enabled, and what
* mode it is set to
* </p>
* <p>Whether AF is currently enabled, and what
* mode it is set to</p>
* @see #CONTROL_AF_MODE_OFF
* @see #CONTROL_AF_MODE_AUTO
* @see #CONTROL_AF_MODE_MACRO
@@ -510,46 +466,35 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.afMode", int.class);
/**
* <p>
* List of areas to use for focus
* estimation
* </p>
* <p>
* Each area is a rectangle plus weight: xmin, ymin,
* <p>List of areas to use for focus
* estimation</p>
* <p>Each area is a rectangle plus weight: xmin, ymin,
* xmax, ymax, weight. The rectangle is defined inclusive of the
* specified coordinates.
* </p><p>
* The coordinate system is based on the active pixel array,
* specified coordinates.</p>
* <p>The coordinate system is based on the active pixel array,
* with (0,0) being the top-left pixel in the active pixel array, and
* (android.sensor.info.activeArraySize.width - 1,
* android.sensor.info.activeArraySize.height - 1) being the
* bottom-right pixel in the active pixel array. The weight
* should be nonnegative.
* </p><p>
* If all regions have 0 weight, then no specific focus area
* should be nonnegative.</p>
* <p>If all regions have 0 weight, then no specific focus area
* needs to be used by the HAL. If the focusing region is
* outside the current android.scaler.cropRegion, the HAL
* should ignore the sections outside the region and output the
* used sections in the frame metadata
* </p>
* used sections in the frame metadata</p>
*/
public static final Key<int[]> CONTROL_AF_REGIONS =
new Key<int[]>("android.control.afRegions", int[].class);
/**
* <p>
* Whether the HAL must trigger autofocus.
* </p>
* <p>
* This entry is normally set to IDLE, or is not
* included at all in the request settings.
* </p><p>
* When included and set to START, the HAL must trigger the
* <p>Whether the HAL must trigger autofocus.</p>
* <p>This entry is normally set to IDLE, or is not
* included at all in the request settings.</p>
* <p>When included and set to START, the HAL must trigger the
* autofocus algorithm. The effect of AF trigger depends on the
* current AF mode and state; see the camera HAL device v3
* header for details. When set to CANCEL, the HAL must cancel
* any active trigger, and return to initial AF state.
* </p>
* any active trigger, and return to initial AF state.</p>
* @see #CONTROL_AF_TRIGGER_IDLE
* @see #CONTROL_AF_TRIGGER_START
* @see #CONTROL_AF_TRIGGER_CANCEL
@@ -558,28 +503,20 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.afTrigger", int.class);
/**
* <p>
* Whether AWB is currently locked to its
* latest calculated values
* </p>
* <p>
* Note that AWB lock is only meaningful for AUTO
* <p>Whether AWB is currently locked to its
* latest calculated values</p>
* <p>Note that AWB lock is only meaningful for AUTO
* mode; in other modes, AWB is already fixed to a specific
* setting
* </p>
* setting</p>
*/
public static final Key<Boolean> CONTROL_AWB_LOCK =
new Key<Boolean>("android.control.awbLock", boolean.class);
/**
* <p>
* Whether AWB is currently setting the color
* <p>Whether AWB is currently setting the color
* transform fields, and what its illumination target
* is
* </p>
* <p>
* [BC - AWB lock,AWB modes]
* </p>
* is</p>
* <p>[BC - AWB lock,AWB modes]</p>
* @see #CONTROL_AWB_MODE_OFF
* @see #CONTROL_AWB_MODE_AUTO
* @see #CONTROL_AWB_MODE_INCANDESCENT
@@ -594,43 +531,32 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.awbMode", int.class);
/**
* <p>
* List of areas to use for illuminant
* estimation
* </p>
* <p>
* Only used in AUTO mode.
* </p><p>
* Each area is a rectangle plus weight: xmin, ymin,
* <p>List of areas to use for illuminant
* estimation</p>
* <p>Only used in AUTO mode.</p>
* <p>Each area is a rectangle plus weight: xmin, ymin,
* xmax, ymax, weight. The rectangle is defined inclusive of the
* specified coordinates.
* </p><p>
* The coordinate system is based on the active pixel array,
* specified coordinates.</p>
* <p>The coordinate system is based on the active pixel array,
* with (0,0) being the top-left pixel in the active pixel array, and
* (android.sensor.info.activeArraySize.width - 1,
* android.sensor.info.activeArraySize.height - 1) being the
* bottom-right pixel in the active pixel array. The weight
* should be nonnegative.
* </p><p>
* If all regions have 0 weight, then no specific metering area
* should be nonnegative.</p>
* <p>If all regions have 0 weight, then no specific metering area
* needs to be used by the HAL. If the metering region is
* outside the current android.scaler.cropRegion, the HAL
* should ignore the sections outside the region and output the
* used sections in the frame metadata
* </p>
* used sections in the frame metadata</p>
*/
public static final Key<int[]> CONTROL_AWB_REGIONS =
new Key<int[]>("android.control.awbRegions", int[].class);
/**
* <p>
* Information to 3A routines about the purpose
* <p>Information to 3A routines about the purpose
* of this capture, to help decide optimal 3A
* strategy
* </p>
* <p>
* Only used if android.control.mode != OFF.
* </p>
* strategy</p>
* <p>Only used if android.control.mode != OFF.</p>
* @see #CONTROL_CAPTURE_INTENT_CUSTOM
* @see #CONTROL_CAPTURE_INTENT_PREVIEW
* @see #CONTROL_CAPTURE_INTENT_STILL_CAPTURE
@@ -642,10 +568,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.captureIntent", int.class);
/**
* <p>
* Whether any special color effect is in use.
* Only used if android.control.mode != OFF
* </p>
* <p>Whether any special color effect is in use.
* Only used if android.control.mode != OFF</p>
* @see #CONTROL_EFFECT_MODE_OFF
* @see #CONTROL_EFFECT_MODE_MONO
* @see #CONTROL_EFFECT_MODE_NEGATIVE
@@ -660,10 +584,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.effectMode", int.class);
/**
* <p>
* Overall mode of 3A control
* routines
* </p>
* <p>Overall mode of 3A control
* routines</p>
* @see #CONTROL_MODE_OFF
* @see #CONTROL_MODE_AUTO
* @see #CONTROL_MODE_USE_SCENE_MODE
@@ -672,10 +594,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.mode", int.class);
/**
* <p>
* Which scene mode is active when
* android.control.mode = SCENE_MODE
* </p>
* <p>Which scene mode is active when
* android.control.mode = SCENE_MODE</p>
* @see #CONTROL_SCENE_MODE_UNSUPPORTED
* @see #CONTROL_SCENE_MODE_FACE_PRIORITY
* @see #CONTROL_SCENE_MODE_ACTION
@@ -698,24 +618,18 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.control.sceneMode", int.class);
/**
* <p>
* Whether video stabilization is
* active
* </p>
* <p>
* If enabled, video stabilization can modify the
* <p>Whether video stabilization is
* active</p>
* <p>If enabled, video stabilization can modify the
* android.scaler.cropRegion to keep the video stream
* stabilized
* </p>
* stabilized</p>
*/
public static final Key<Boolean> CONTROL_VIDEO_STABILIZATION_MODE =
new Key<Boolean>("android.control.videoStabilizationMode", boolean.class);
/**
* <p>
* Operation mode for edge
* enhancement
* </p>
* <p>Operation mode for edge
* enhancement</p>
* @see #EDGE_MODE_OFF
* @see #EDGE_MODE_FAST
* @see #EDGE_MODE_HIGH_QUALITY
@@ -724,9 +638,7 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.edge.mode", int.class);
/**
* <p>
* Select flash operation mode
* </p>
* <p>Select flash operation mode</p>
* @see #FLASH_MODE_OFF
* @see #FLASH_MODE_SINGLE
* @see #FLASH_MODE_TORCH
@@ -735,128 +647,92 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.flash.mode", int.class);
/**
* <p>
* GPS coordinates to include in output JPEG
* EXIF
* </p>
* <p>GPS coordinates to include in output JPEG
* EXIF</p>
*/
public static final Key<double[]> JPEG_GPS_COORDINATES =
new Key<double[]>("android.jpeg.gpsCoordinates", double[].class);
/**
* <p>
* 32 characters describing GPS algorithm to
* include in EXIF
* </p>
* <p>32 characters describing GPS algorithm to
* include in EXIF</p>
*/
public static final Key<String> JPEG_GPS_PROCESSING_METHOD =
new Key<String>("android.jpeg.gpsProcessingMethod", String.class);
/**
* <p>
* Time GPS fix was made to include in
* EXIF
* </p>
* <p>Time GPS fix was made to include in
* EXIF</p>
*/
public static final Key<Long> JPEG_GPS_TIMESTAMP =
new Key<Long>("android.jpeg.gpsTimestamp", long.class);
/**
* <p>
* Orientation of JPEG image to
* write
* </p>
* <p>Orientation of JPEG image to
* write</p>
*/
public static final Key<Integer> JPEG_ORIENTATION =
new Key<Integer>("android.jpeg.orientation", int.class);
/**
* <p>
* Compression quality of the final JPEG
* image
* </p>
* <p>
* 85-95 is typical usage range
* </p>
* <p>Compression quality of the final JPEG
* image</p>
* <p>85-95 is typical usage range</p>
*/
public static final Key<Byte> JPEG_QUALITY =
new Key<Byte>("android.jpeg.quality", byte.class);
/**
* <p>
* Compression quality of JPEG
* thumbnail
* </p>
* <p>Compression quality of JPEG
* thumbnail</p>
*/
public static final Key<Byte> JPEG_THUMBNAIL_QUALITY =
new Key<Byte>("android.jpeg.thumbnailQuality", byte.class);
/**
* <p>
* Resolution of embedded JPEG
* thumbnail
* </p>
* <p>Resolution of embedded JPEG
* thumbnail</p>
*/
public static final Key<android.hardware.camera2.Size> JPEG_THUMBNAIL_SIZE =
new Key<android.hardware.camera2.Size>("android.jpeg.thumbnailSize", android.hardware.camera2.Size.class);
/**
* <p>
* Size of the lens aperture
* </p>
* <p>
* Will not be supported on most devices. Can only
* pick from supported list
* </p>
* <p>Size of the lens aperture</p>
* <p>Will not be supported on most devices. Can only
* pick from supported list</p>
*/
public static final Key<Float> LENS_APERTURE =
new Key<Float>("android.lens.aperture", float.class);
/**
* <p>
* State of lens neutral density
* filter(s)
* </p>
* <p>
* Will not be supported on most devices. Can only
* pick from supported list
* </p>
* <p>State of lens neutral density
* filter(s)</p>
* <p>Will not be supported on most devices. Can only
* pick from supported list</p>
*/
public static final Key<Float> LENS_FILTER_DENSITY =
new Key<Float>("android.lens.filterDensity", float.class);
/**
* <p>
* Lens optical zoom setting
* </p>
* <p>
* Will not be supported on most devices.
* </p>
* <p>Lens optical zoom setting</p>
* <p>Will not be supported on most devices.</p>
*/
public static final Key<Float> LENS_FOCAL_LENGTH =
new Key<Float>("android.lens.focalLength", float.class);
/**
* <p>
* Distance to plane of sharpest focus,
* measured from frontmost surface of the lens
* </p>
* <p>
* 0 = infinity focus. Used value should be clamped
* to (0,minimum focus distance)
* </p>
* <p>Distance to plane of sharpest focus,
* measured from frontmost surface of the lens</p>
* <p>0 = infinity focus. Used value should be clamped
* to (0,minimum focus distance)</p>
*/
public static final Key<Float> LENS_FOCUS_DISTANCE =
new Key<Float>("android.lens.focusDistance", float.class);
/**
* <p>
* Whether optical image stabilization is
* enabled.
* </p>
* <p>
* Will not be supported on most devices.
* </p>
* <p>Whether optical image stabilization is
* enabled.</p>
* <p>Will not be supported on most devices.</p>
* @see #LENS_OPTICAL_STABILIZATION_MODE_OFF
* @see #LENS_OPTICAL_STABILIZATION_MODE_ON
*/
@@ -864,10 +740,8 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.lens.opticalStabilizationMode", int.class);
/**
* <p>
* Mode of operation for the noise reduction
* algorithm
* </p>
* <p>Mode of operation for the noise reduction
* algorithm</p>
* @see #NOISE_REDUCTION_MODE_OFF
* @see #NOISE_REDUCTION_MODE_FAST
* @see #NOISE_REDUCTION_MODE_HIGH_QUALITY
@@ -876,11 +750,9 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.noiseReduction.mode", int.class);
/**
* <p>
* An application-specified ID for the current
* <p>An application-specified ID for the current
* request. Must be maintained unchanged in output
* frame
* </p>
* frame</p>
*
* @hide
*/
@@ -888,32 +760,24 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.request.id", int.class);
/**
* <p>
* (x, y, width, height).
* </p><p>
* A rectangle with the top-level corner of (x,y) and size
* <p>(x, y, width, height).</p>
* <p>A rectangle with the top-level corner of (x,y) and size
* (width, height). The region of the sensor that is used for
* output. Each stream must use this rectangle to produce its
* output, cropping to a smaller region if necessary to
* maintain the stream's aspect ratio.
* </p><p>
* HAL2.x uses only (x, y, width)
* </p>
* <p>
* Any additional per-stream cropping must be done to
* maximize the final pixel area of the stream.
* </p><p>
* For example, if the crop region is set to a 4:3 aspect
* maintain the stream's aspect ratio.</p>
* <p>HAL2.x uses only (x, y, width)</p>
* <p>Any additional per-stream cropping must be done to
* maximize the final pixel area of the stream.</p>
* <p>For example, if the crop region is set to a 4:3 aspect
* ratio, then 4:3 streams should use the exact crop
* region. 16:9 streams should further crop vertically
* (letterbox).
* </p><p>
* Conversely, if the crop region is set to a 16:9, then 4:3
* (letterbox).</p>
* <p>Conversely, if the crop region is set to a 16:9, then 4:3
* outputs should crop horizontally (pillarbox), and 16:9
* streams should match exactly. These additional crops must
* be centered within the crop region.
* </p><p>
* The output streams must maintain square pixels at all
* be centered within the crop region.</p>
* <p>The output streams must maintain square pixels at all
* times, no matter what the relative aspect ratios of the
* crop region and the stream are. Negative values for
* corner are allowed for raw output if full pixel array is
@@ -924,67 +788,48 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
* be set to be smaller than floor( activeArraySize.width /
* android.scaler.maxDigitalZoom ) and floor(
* activeArraySize.height / android.scaler.maxDigitalZoom),
* respectively.
* </p>
* respectively.</p>
*/
public static final Key<android.graphics.Rect> SCALER_CROP_REGION =
new Key<android.graphics.Rect>("android.scaler.cropRegion", android.graphics.Rect.class);
/**
* <p>
* Duration each pixel is exposed to
* 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>
* 1/10000 - 30 sec range. No bulb mode
* </p>
* <p>Duration each pixel is exposed to
* 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>1/10000 - 30 sec range. No bulb mode</p>
*/
public static final Key<Long> SENSOR_EXPOSURE_TIME =
new Key<Long>("android.sensor.exposureTime", long.class);
/**
* <p>
* Duration from start of frame exposure to
* start of next frame exposure
* </p>
* <p>
* Exposure time has priority, so duration is set to
* max(duration, exposure time + overhead)
* </p>
* <p>Duration from start of frame exposure to
* start of next frame exposure</p>
* <p>Exposure time has priority, so duration is set to
* max(duration, exposure time + overhead)</p>
*/
public static final Key<Long> SENSOR_FRAME_DURATION =
new Key<Long>("android.sensor.frameDuration", long.class);
/**
* <p>
* Gain applied to image data. Must be
* <p>Gain applied to image data. Must be
* implemented through analog gain only if set to values
* below 'maximum analog sensitivity'.
* </p><p>
* If the sensor can't apply this exact gain, it should lessen the
* gain to the nearest possible value (rather than gain more).
* </p>
* <p>
* ISO 12232:2006 REI method
* </p>
* below 'maximum analog sensitivity'.</p>
* <p>If the sensor can't apply this exact gain, it should lessen the
* gain to the nearest possible value (rather than gain more).</p>
* <p>ISO 12232:2006 REI method</p>
*/
public static final Key<Integer> SENSOR_SENSITIVITY =
new Key<Integer>("android.sensor.sensitivity", int.class);
/**
* <p>
* State of the face detector
* unit
* </p>
* <p>
* Whether face detection is enabled, and whether it
* <p>State of the face detector
* unit</p>
* <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
* android.statistics.info.availableFaceDetectModes.
* </p>
* android.statistics.info.availableFaceDetectModes.</p>
* @see #STATISTICS_FACE_DETECT_MODE_OFF
* @see #STATISTICS_FACE_DETECT_MODE_SIMPLE
* @see #STATISTICS_FACE_DETECT_MODE_FULL
@@ -993,15 +838,11 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.statistics.faceDetectMode", int.class);
/**
* <p>
* Whether the HAL needs to output the lens
* shading map in output result metadata
* </p>
* <p>
* When set to ON,
* <p>Whether the HAL needs to output the lens
* shading map in output result metadata</p>
* <p>When set to ON,
* android.statistics.lensShadingMap must be provided in
* the output result metdata.
* </p>
* the output result metdata.</p>
* @see #STATISTICS_LENS_SHADING_MAP_MODE_OFF
* @see #STATISTICS_LENS_SHADING_MAP_MODE_ON
*/
@@ -1009,56 +850,40 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.statistics.lensShadingMapMode", int.class);
/**
* <p>
* Table mapping blue input values to output
* values
* </p>
* <p>
* Tonemapping / contrast / gamma curve for the blue
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.
* </p><p>
* See android.tonemap.curveRed for more details.
* </p>
* <p>Table mapping blue input values to output
* values</p>
* <p>Tonemapping / contrast / gamma curve for the blue
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.</p>
* <p>See android.tonemap.curveRed for more details.</p>
*/
public static final Key<float[]> TONEMAP_CURVE_BLUE =
new Key<float[]>("android.tonemap.curveBlue", float[].class);
/**
* <p>
* Table mapping green input values to output
* values
* </p>
* <p>
* Tonemapping / contrast / gamma curve for the green
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.
* </p><p>
* See android.tonemap.curveRed for more details.
* </p>
* <p>Table mapping green input values to output
* values</p>
* <p>Tonemapping / contrast / gamma curve for the green
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.</p>
* <p>See android.tonemap.curveRed for more details.</p>
*/
public static final Key<float[]> TONEMAP_CURVE_GREEN =
new Key<float[]>("android.tonemap.curveGreen", float[].class);
/**
* <p>
* Table mapping red input values to output
* values
* </p>
* <p>
* Tonemapping / contrast / gamma curve for the red
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.
* </p><p>
* Since the input and output ranges may vary depending on
* <p>Table mapping red input values to output
* values</p>
* <p>Tonemapping / contrast / gamma curve for the red
* channel, to use when android.tonemap.mode is CONTRAST_CURVE.</p>
* <p>Since the input and output ranges may vary depending on
* the camera pipeline, the input and output pixel values
* are represented by normalized floating-point values
* between 0 and 1, with 0 == black and 1 == white.
* </p><p>
* The curve should be linearly interpolated between the
* between 0 and 1, with 0 == black and 1 == white.</p>
* <p>The curve should be linearly interpolated between the
* defined points. The points will be listed in increasing
* order of P_IN. For example, if the array is: [0.0, 0.0,
* 0.3, 0.5, 1.0, 1.0], then the input->output mapping
* for a few sample points would be: 0 -> 0, 0.15 ->
* 0.25, 0.3 -> 0.5, 0.5 -> 0.64
* </p>
* 0.3, 0.5, 1.0, 1.0], then the input-&gt;output mapping
* for a few sample points would be: 0 -&gt; 0, 0.15 -&gt;
* 0.25, 0.3 -&gt; 0.5, 0.5 -&gt; 0.64</p>
*/
public static final Key<float[]> TONEMAP_CURVE_RED =
new Key<float[]>("android.tonemap.curveRed", float[].class);
@@ -1072,20 +897,16 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Integer>("android.tonemap.mode", int.class);
/**
* <p>
* This LED is nominally used to indicate to the user
* <p>This LED is nominally used to indicate to the user
* that the camera is powered on and may be streaming images back to the
* Application Processor. In certain rare circumstances, the OS may
* disable this when video is processed locally and not transmitted to
* any untrusted applications.
* </p><p>
* In particular, the LED *must* always be on when the data could be
* transmitted off the device. The LED *should* always be on whenever
* data is stored locally on the device.
* </p><p>
* The LED *may* be off if a trusted application is using the data that
* doesn't violate the above rules.
* </p>
* any untrusted applications.</p>
* <p>In particular, the LED <em>must</em> always be on when the data could be
* transmitted off the device. The LED <em>should</em> always be on whenever
* 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>
*
* @hide
*/
@@ -1093,28 +914,44 @@ public final class CaptureRequest extends CameraMetadata implements Parcelable {
new Key<Boolean>("android.led.transmit", boolean.class);
/**
* <p>
* Whether black-level compensation is locked
* to its current values, or is free to vary
* </p>
* <p>
* When set to ON, the values used for black-level
* <p>Whether black-level compensation is locked
* to its current values, or is free to vary</p>
* <p>When set to ON, the values used for black-level
* compensation must not change until the lock is set to
* OFF
* </p><p>
* Since changes to certain capture parameters (such as
* OFF</p>
* <p>Since changes to certain capture parameters (such as
* exposure time) may require resetting of black level
* compensation, the HAL must report whether setting the
* black level lock was successful in the output result
* metadata.
* </p><p>
* The black level locking must happen at the sensor, and not at the ISP.
* metadata.</p>
* <p>For example, if a sequence of requests is as follows:</p>
* <ul>
* <li>Request 1: Exposure = 10ms, Black level lock = OFF</li>
* <li>Request 2: Exposure = 10ms, Black level lock = ON</li>
* <li>Request 3: Exposure = 10ms, Black level lock = ON</li>
* <li>Request 4: Exposure = 20ms, Black level lock = ON</li>
* <li>Request 5: Exposure = 20ms, Black level lock = ON</li>
* <li>Request 6: Exposure = 20ms, Black level lock = ON</li>
* </ul>
* <p>And the exposure change in Request 4 requires resetting the black
* level offsets, then the output result metadata is expected to be:</p>
* <ul>
* <li>Result 1: Exposure = 10ms, Black level lock = OFF</li>
* <li>Result 2: Exposure = 10ms, Black level lock = ON</li>
* <li>Result 3: Exposure = 10ms, Black level lock = ON</li>
* <li>Result 4: Exposure = 20ms, Black level lock = OFF</li>
* <li>Result 5: Exposure = 20ms, Black level lock = ON</li>
* <li>Result 6: Exposure = 20ms, Black level lock = ON</li>
* </ul>
* <p>This indicates to the application that on frame 4, black levels were
* reset due to exposure value changes, and pixel values may not be
* consistent across captures.</p>
* <p>The black level locking must happen at the sensor, and not at the ISP.
* If for some reason black level locking is no longer legal (for example,
* the analog gain has changed, which forces black levels to be
* recalculated), then the HAL is free to override this request (and it
* must report 'OFF' when this does happen) until the next time locking
* is legal again.
* </p>
* is legal again.</p>
*/
public static final Key<Boolean> BLACK_LEVEL_LOCK =
new Key<Boolean>("android.blackLevel.lock", boolean.class);

File diff suppressed because it is too large Load Diff