| # SPDX-License-Identifier: LGPL-2.1-or-later |
| # |
| # Copyright (C) 2019, Google Inc. |
| # |
| %YAML 1.2 |
| --- |
| # Unless otherwise stated, all controls are bi-directional, i.e. they can be |
| # set through Request::controls() and returned out through Request::metadata(). |
| controls: |
| - AeEnable: |
| type: bool |
| description: | |
| Enable or disable the AE. |
| |
| \sa ExposureTime AnalogueGain |
| |
| - AeLocked: |
| type: bool |
| description: | |
| Report the lock status of a running AE algorithm. |
| |
| If the AE algorithm is locked the value shall be set to true, if it's |
| converging it shall be set to false. If the AE algorithm is not |
| running the control shall not be present in the metadata control list. |
| |
| \sa AeEnable |
| |
| # AeMeteringMode needs further attention: |
| # - Auto-generate max enum value. |
| # - Better handling of custom types. |
| - AeMeteringMode: |
| type: int32_t |
| description: | |
| Specify a metering mode for the AE algorithm to use. The metering |
| modes determine which parts of the image are used to determine the |
| scene brightness. Metering modes may be platform specific and not |
| all metering modes may be supported. |
| enum: |
| - name: MeteringCentreWeighted |
| value: 0 |
| description: Centre-weighted metering mode. |
| - name: MeteringSpot |
| value: 1 |
| description: Spot metering mode. |
| - name: MeteringMatrix |
| value: 2 |
| description: Matrix metering mode. |
| - name: MeteringCustom |
| value: 3 |
| description: Custom metering mode. |
| |
| # AeConstraintMode needs further attention: |
| # - Auto-generate max enum value. |
| # - Better handling of custom types. |
| - AeConstraintMode: |
| type: int32_t |
| description: | |
| Specify a constraint mode for the AE algorithm to use. These determine |
| how the measured scene brightness is adjusted to reach the desired |
| target exposure. Constraint modes may be platform specific, and not |
| all constraint modes may be supported. |
| enum: |
| - name: ConstraintNormal |
| value: 0 |
| description: Default constraint mode. |
| This mode aims to balance the exposure of different parts of the |
| image so as to reach a reasonable average level. However, highlights |
| in the image may appear over-exposed and lowlights may appear |
| under-exposed. |
| - name: ConstraintHighlight |
| value: 1 |
| description: Highlight constraint mode. |
| This mode adjusts the exposure levels in order to try and avoid |
| over-exposing the brightest parts (highlights) of an image. |
| Other non-highlight parts of the image may appear under-exposed. |
| - name: ConstraintShadows |
| value: 2 |
| description: Shadows constraint mode. |
| This mode adjusts the exposure levels in order to try and avoid |
| under-exposing the dark parts (shadows) of an image. Other normally |
| exposed parts of the image may appear over-exposed. |
| - name: ConstraintCustom |
| value: 3 |
| description: Custom constraint mode. |
| |
| # AeExposureMode needs further attention: |
| # - Auto-generate max enum value. |
| # - Better handling of custom types. |
| - AeExposureMode: |
| type: int32_t |
| description: | |
| Specify an exposure mode for the AE algorithm to use. These specify |
| how the desired total exposure is divided between the shutter time |
| and the sensor's analogue gain. The exposure modes are platform |
| specific, and not all exposure modes may be supported. |
| enum: |
| - name: ExposureNormal |
| value: 0 |
| description: Default exposure mode. |
| - name: ExposureShort |
| value: 1 |
| description: Exposure mode allowing only short exposure times. |
| - name: ExposureLong |
| value: 2 |
| description: Exposure mode allowing long exposure times. |
| - name: ExposureCustom |
| value: 3 |
| description: Custom exposure mode. |
| |
| - ExposureValue: |
| type: float |
| description: | |
| Specify an Exposure Value (EV) parameter. The EV parameter will only be |
| applied if the AE algorithm is currently enabled. |
| |
| By convention EV adjusts the exposure as log2. For example |
| EV = [-2, -1, 0.5, 0, 0.5, 1, 2] results in an exposure adjustment |
| of [1/4x, 1/2x, 1/sqrt(2)x, 1x, sqrt(2)x, 2x, 4x]. |
| |
| \sa AeEnable |
| |
| - ExposureTime: |
| type: int32_t |
| description: | |
| Exposure time (shutter speed) for the frame applied in the sensor |
| device. This value is specified in micro-seconds. |
| |
| Setting this value means that it is now fixed and the AE algorithm may |
| not change it. Setting it back to zero returns it to the control of the |
| AE algorithm. |
| |
| \sa AnalogueGain AeEnable |
| |
| \todo Document the interactions between AeEnable and setting a fixed |
| value for this control. Consider interactions with other AE features, |
| such as aperture and aperture/shutter priority mode, and decide if |
| control of which features should be automatically adjusted shouldn't |
| better be handled through a separate AE mode control. |
| |
| - AnalogueGain: |
| type: float |
| description: | |
| Analogue gain value applied in the sensor device. |
| The value of the control specifies the gain multiplier applied to all |
| colour channels. This value cannot be lower than 1.0. |
| |
| Setting this value means that it is now fixed and the AE algorithm may |
| not change it. Setting it back to zero returns it to the control of the |
| AE algorithm. |
| |
| \sa ExposureTime AeEnable |
| |
| \todo Document the interactions between AeEnable and setting a fixed |
| value for this control. Consider interactions with other AE features, |
| such as aperture and aperture/shutter priority mode, and decide if |
| control of which features should be automatically adjusted shouldn't |
| better be handled through a separate AE mode control. |
| |
| - Brightness: |
| type: float |
| description: | |
| Specify a fixed brightness parameter. Positive values (up to 1.0) |
| produce brighter images; negative values (up to -1.0) produce darker |
| images and 0.0 leaves pixels unchanged. |
| |
| - Contrast: |
| type: float |
| description: | |
| Specify a fixed contrast parameter. Normal contrast is given by the |
| value 1.0; larger values produce images with more contrast. |
| |
| - Lux: |
| type: float |
| description: | |
| Report an estimate of the current illuminance level in lux. The Lux |
| control can only be returned in metadata. |
| |
| - AwbEnable: |
| type: bool |
| description: | |
| Enable or disable the AWB. |
| |
| \sa ColourGains |
| |
| # AwbMode needs further attention: |
| # - Auto-generate max enum value. |
| # - Better handling of custom types. |
| - AwbMode: |
| type: int32_t |
| description: | |
| Specify the range of illuminants to use for the AWB algorithm. The modes |
| supported are platform specific, and not all modes may be supported. |
| enum: |
| - name: AwbAuto |
| value: 0 |
| description: Search over the whole colour temperature range. |
| - name: AwbIncandescent |
| value: 1 |
| description: Incandescent AWB lamp mode. |
| - name: AwbTungsten |
| value: 2 |
| description: Tungsten AWB lamp mode. |
| - name: AwbFluorescent |
| value: 3 |
| description: Fluorescent AWB lamp mode. |
| - name: AwbIndoor |
| value: 4 |
| description: Indoor AWB lighting mode. |
| - name: AwbDaylight |
| value: 5 |
| description: Daylight AWB lighting mode. |
| - name: AwbCloudy |
| value: 6 |
| description: Cloudy AWB lighting mode. |
| - name: AwbCustom |
| value: 7 |
| description: Custom AWB mode. |
| |
| - AwbLocked: |
| type: bool |
| description: | |
| Report the lock status of a running AWB algorithm. |
| |
| If the AWB algorithm is locked the value shall be set to true, if it's |
| converging it shall be set to false. If the AWB algorithm is not |
| running the control shall not be present in the metadata control list. |
| |
| \sa AwbEnable |
| |
| - ColourGains: |
| type: float |
| description: | |
| Pair of gain values for the Red and Blue colour channels, in that |
| order. ColourGains can only be applied in a Request when the AWB is |
| disabled. |
| |
| \sa AwbEnable |
| size: [2] |
| |
| - ColourTemperature: |
| type: int32_t |
| description: Report the current estimate of the colour temperature, in |
| kelvin, for this frame. The ColourTemperature control can only be |
| returned in metadata. |
| |
| - Saturation: |
| type: float |
| description: | |
| Specify a fixed saturation parameter. Normal saturation is given by |
| the value 1.0; larger values produce more saturated colours; 0.0 |
| produces a greyscale image. |
| |
| - SensorBlackLevels: |
| type: int32_t |
| description: | |
| Reports the sensor black levels used for processing a frame, in the |
| order R, Gr, Gb, B. These values are returned as numbers out of a 16-bit |
| pixel range (as if pixels ranged from 0 to 65535). The SensorBlackLevels |
| control can only be returned in metadata. |
| size: [4] |
| |
| - Sharpness: |
| type: float |
| description: | |
| A value of 0.0 means no sharpening. The minimum value means |
| minimal sharpening, and shall be 0.0 unless the camera can't |
| disable sharpening completely. The default value shall give a |
| "reasonable" level of sharpening, suitable for most use cases. |
| The maximum value may apply extremely high levels of sharpening, |
| higher than anyone could reasonably want. Negative values are |
| not allowed. Note also that sharpening is not applied to raw |
| streams. |
| |
| - FocusFoM: |
| type: int32_t |
| description: | |
| Reports a Figure of Merit (FoM) to indicate how in-focus the frame is. |
| A larger FocusFoM value indicates a more in-focus frame. This control |
| depends on the IPA to gather ISP statistics from the defined focus |
| region, and combine them in a suitable way to generate a FocusFoM value. |
| In this respect, it is not necessarily aimed at providing a way to |
| implement a focus algorithm by the application, rather an indication of |
| how in-focus a frame is. |
| |
| - ColourCorrectionMatrix: |
| type: float |
| description: | |
| The 3x3 matrix that converts camera RGB to sRGB within the |
| imaging pipeline. This should describe the matrix that is used |
| after pixels have been white-balanced, but before any gamma |
| transformation. The 3x3 matrix is stored in conventional reading |
| order in an array of 9 floating point values. |
| |
| size: [3x3] |
| |
| - ScalerCrop: |
| type: Rectangle |
| description: | |
| Sets the image portion that will be scaled to form the whole of |
| the final output image. The (x,y) location of this rectangle is |
| relative to the PixelArrayActiveAreas that is being used. The units |
| remain native sensor pixels, even if the sensor is being used in |
| a binning or skipping mode. |
| |
| This control is only present when the pipeline supports scaling. Its |
| maximum valid value is given by the properties::ScalerCropMaximum |
| property, and the two can be used to implement digital zoom. |
| |
| - DigitalGain: |
| type: float |
| description: | |
| Digital gain value applied during the processing steps applied |
| to the image as captured from the sensor. |
| |
| The global digital gain factor is applied to all the colour channels |
| of the RAW image. Different pipeline models are free to |
| specify how the global gain factor applies to each separate |
| channel. |
| |
| If an imaging pipeline applies digital gain in distinct |
| processing steps, this value indicates their total sum. |
| Pipelines are free to decide how to adjust each processing |
| step to respect the received gain factor and shall report |
| their total value in the request metadata. |
| |
| - FrameDuration: |
| type: int64_t |
| description: | |
| The instantaneous frame duration from start of frame exposure to start |
| of next exposure, expressed in microseconds. This control is meant to |
| be returned in metadata. |
| |
| - FrameDurationLimits: |
| type: int64_t |
| description: | |
| The minimum and maximum (in that order) frame duration, |
| expressed in microseconds. |
| |
| When provided by applications, the control specifies the sensor frame |
| duration interval the pipeline has to use. This limits the largest |
| exposure time the sensor can use. For example, if a maximum frame |
| duration of 33ms is requested (corresponding to 30 frames per second), |
| the sensor will not be able to raise the exposure time above 33ms. |
| A fixed frame duration is achieved by setting the minimum and maximum |
| values to be the same. Setting both values to 0 reverts to using the |
| IPA provided defaults. |
| |
| The maximum frame duration provides the absolute limit to the shutter |
| speed computed by the AE algorithm and it overrides any exposure mode |
| setting specified with controls::AeExposureMode. Similarly, when a |
| manual exposure time is set through controls::ExposureTime, it also |
| gets clipped to the limits set by this control. When reported in |
| metadata, the control expresses the minimum and maximum frame |
| durations used after being clipped to the sensor provided frame |
| duration limits. |
| |
| \sa AeExposureMode |
| \sa ExposureTime |
| |
| \todo Define how to calculate the capture frame rate by |
| defining controls to report additional delays introduced by |
| the capture pipeline or post-processing stages (ie JPEG |
| conversion, frame scaling). |
| |
| \todo Provide an explicit definition of default control values, for |
| this and all other controls. |
| |
| size: [2] |
| |
| - SensorTimestamp: |
| type: int64_t |
| description: | |
| The time when the first row of the image sensor active array is exposed. |
| |
| The timestamp, expressed in nanoseconds, represents a monotonically |
| increasing counter since the system boot time, as defined by the |
| Linux-specific CLOCK_BOOTTIME clock id. |
| |
| The SensorTimestamp control can only be returned in metadata. |
| |
| \todo Define how the sensor timestamp has to be used in the reprocessing |
| use case. |
| |
| # ---------------------------------------------------------------------------- |
| # Draft controls section |
| |
| - AePrecaptureTrigger: |
| type: int32_t |
| draft: true |
| description: | |
| Control for AE metering trigger. Currently identical to |
| ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER. |
| |
| Whether the camera device will trigger a precapture metering sequence |
| when it processes this request. |
| enum: |
| - name: AePrecaptureTriggerIdle |
| value: 0 |
| description: The trigger is idle. |
| - name: AePrecaptureTriggerStart |
| value: 1 |
| description: The pre-capture AE metering is started by the camera. |
| - name: AePrecaptureTriggerCancel |
| value: 2 |
| description: | |
| The camera will cancel any active or completed metering sequence. |
| The AE algorithm is reset to its initial state. |
| |
| - AfTrigger: |
| type: int32_t |
| draft: true |
| description: | |
| Control for AF trigger. Currently identical to |
| ANDROID_CONTROL_AF_TRIGGER. |
| |
| Whether the camera device will trigger autofocus for this request. |
| enum: |
| - name: AfTriggerIdle |
| value: 0 |
| description: The trigger is idle. |
| - name: AfTriggerStart |
| value: 1 |
| description: The AF routine is started by the camera. |
| - name: AfTriggerCancel |
| value: 2 |
| description: | |
| The camera will cancel any active trigger and the AF routine is |
| reset to its initial state. |
| |
| - NoiseReductionMode: |
| type: int32_t |
| draft: true |
| description: | |
| Control to select the noise reduction algorithm mode. Currently |
| identical to ANDROID_NOISE_REDUCTION_MODE. |
| |
| Mode of operation for the noise reduction algorithm. |
| enum: |
| - name: NoiseReductionModeOff |
| value: 0 |
| description: No noise reduction is applied |
| - name: NoiseReductionModeFast |
| value: 1 |
| description: | |
| Noise reduction is applied without reducing the frame rate. |
| - name: NoiseReductionModeHighQuality |
| value: 2 |
| description: | |
| High quality noise reduction at the expense of frame rate. |
| - name: NoiseReductionModeMinimal |
| value: 3 |
| description: | |
| Minimal noise reduction is applied without reducing the frame rate. |
| - name: NoiseReductionModeZSL |
| value: 4 |
| description: | |
| Noise reduction is applied at different levels to different streams. |
| |
| - ColorCorrectionAberrationMode: |
| type: int32_t |
| draft: true |
| description: | |
| Control to select the color correction aberration mode. Currently |
| identical to ANDROID_COLOR_CORRECTION_ABERRATION_MODE. |
| |
| Mode of operation for the chromatic aberration correction algorithm. |
| enum: |
| - name: ColorCorrectionAberrationOff |
| value: 0 |
| description: No aberration correction is applied. |
| - name: ColorCorrectionAberrationFast |
| value: 1 |
| description: Aberration correction will not slow down the frame rate. |
| - name: ColorCorrectionAberrationHighQuality |
| value: 2 |
| description: | |
| High quality aberration correction which might reduce the frame |
| rate. |
| |
| - AeState: |
| type: int32_t |
| draft: true |
| description: | |
| Control to report the current AE algorithm state. Currently identical to |
| ANDROID_CONTROL_AE_STATE. |
| |
| Current state of the AE algorithm. |
| enum: |
| - name: AeStateInactive |
| value: 0 |
| description: The AE algorithm is inactive. |
| - name: AeStateSearching |
| value: 1 |
| description: The AE algorithm has not converged yet. |
| - name: AeStateConverged |
| value: 2 |
| description: The AE algorithm has converged. |
| - name: AeStateLocked |
| value: 3 |
| description: The AE algorithm is locked. |
| - name: AeStateFlashRequired |
| value: 4 |
| description: The AE algorithm would need a flash for good results |
| - name: AeStatePrecapture |
| value: 5 |
| description: | |
| The AE algorithm has started a pre-capture metering session. |
| \sa AePrecaptureTrigger |
| |
| - AfState: |
| type: int32_t |
| draft: true |
| description: | |
| Control to report the current AF algorithm state. Currently identical to |
| ANDROID_CONTROL_AF_STATE. |
| |
| Current state of the AF algorithm. |
| enum: |
| - name: AfStateInactive |
| value: 0 |
| description: The AF algorithm is inactive. |
| - name: AfStatePassiveScan |
| value: 1 |
| description: | |
| AF is performing a passive scan of the scene in continuous |
| auto-focus mode. |
| - name: AfStatePassiveFocused |
| value: 2 |
| description: | |
| AF believes the scene is in focus, but might restart scanning. |
| - name: AfStateActiveScan |
| value: 3 |
| description: | |
| AF is performing a scan triggered by an AF trigger request. |
| \sa AfTrigger |
| - name: AfStateFocusedLock |
| value: 4 |
| description: | |
| AF believes has focused correctly and has locked focus. |
| - name: AfStateNotFocusedLock |
| value: 5 |
| description: | |
| AF has not been able to focus and has locked. |
| - name: AfStatePassiveUnfocused |
| value: 6 |
| description: | |
| AF has completed a passive scan without finding focus. |
| |
| - AwbState: |
| type: int32_t |
| draft: true |
| description: | |
| Control to report the current AWB algorithm state. Currently identical |
| to ANDROID_CONTROL_AWB_STATE. |
| |
| Current state of the AWB algorithm. |
| enum: |
| - name: AwbStateInactive |
| value: 0 |
| description: The AWB algorithm is inactive. |
| - name: AwbStateSearching |
| value: 1 |
| description: The AWB algorithm has not converged yet. |
| - name: AwbConverged |
| value: 2 |
| description: The AWB algorithm has converged. |
| - name: AwbLocked |
| value: 3 |
| description: The AWB algorithm is locked. |
| |
| - SensorRollingShutterSkew: |
| type: int64_t |
| draft: true |
| description: | |
| Control to report the time between the start of exposure of the first |
| row and the start of exposure of the last row. Currently identical to |
| ANDROID_SENSOR_ROLLING_SHUTTER_SKEW |
| |
| - LensShadingMapMode: |
| type: int32_t |
| draft: true |
| description: | |
| Control to report if the lens shading map is available. Currently |
| identical to ANDROID_STATISTICS_LENS_SHADING_MAP_MODE. |
| enum: |
| - name: LensShadingMapModeOff |
| value: 0 |
| description: No lens shading map mode is available. |
| - name: LensShadingMapModeOn |
| value: 1 |
| description: The lens shading map mode is available. |
| |
| - SceneFlicker: |
| type: int32_t |
| draft: true |
| description: | |
| Control to report the detected scene light frequency. Currently |
| identical to ANDROID_STATISTICS_SCENE_FLICKER. |
| enum: |
| - name: SceneFickerOff |
| value: 0 |
| description: No flickering detected. |
| - name: SceneFicker50Hz |
| value: 1 |
| description: 50Hz flickering detected. |
| - name: SceneFicker60Hz |
| value: 2 |
| description: 60Hz flickering detected. |
| |
| - PipelineDepth: |
| type: int32_t |
| draft: true |
| description: | |
| Specifies the number of pipeline stages the frame went through from when |
| it was exposed to when the final completed result was available to the |
| framework. Always less than or equal to PipelineMaxDepth. Currently |
| identical to ANDROID_REQUEST_PIPELINE_DEPTH. |
| |
| The typical value for this control is 3 as a frame is first exposed, |
| captured and then processed in a single pass through the ISP. Any |
| additional processing step performed after the ISP pass (in example face |
| detection, additional format conversions etc) count as an additional |
| pipeline stage. |
| |
| - MaxLatency: |
| type: int32_t |
| draft: true |
| description: | |
| The maximum number of frames that can occur after a request (different |
| than the previous) has been submitted, and before the result's state |
| becomes synchronized. A value of -1 indicates unknown latency, and 0 |
| indicates per-frame control. Currently identical to |
| ANDROID_SYNC_MAX_LATENCY. |
| |
| - TestPatternMode: |
| type: int32_t |
| draft: true |
| description: | |
| Control to select the test pattern mode. Currently identical to |
| ANDROID_SENSOR_TEST_PATTERN_MODE. |
| enum: |
| - name: TestPatternModeOff |
| value: 0 |
| description: | |
| No test pattern mode is used. The camera device returns frames from |
| the image sensor. |
| - name: TestPatternModeSolidColor |
| value: 1 |
| description: | |
| Each pixel in [R, G_even, G_odd, B] is replaced by its respective |
| color channel provided in test pattern data. |
| \todo Add control for test pattern data. |
| - name: TestPatternModeColorBars |
| value: 2 |
| description: | |
| All pixel data is replaced with an 8-bar color pattern. The vertical |
| bars (left-to-right) are as follows; white, yellow, cyan, green, |
| magenta, red, blue and black. Each bar should take up 1/8 of the |
| sensor pixel array width. When this is not possible, the bar size |
| should be rounded down to the nearest integer and the pattern can |
| repeat on the right side. Each bar's height must always take up the |
| full sensor pixel array height. |
| - name: TestPatternModeColorBarsFadeToGray |
| value: 3 |
| description: | |
| The test pattern is similar to TestPatternModeColorBars, |
| except that each bar should start at its specified color at the top |
| and fade to gray at the bottom. Furthermore each bar is further |
| subdevided into a left and right half. The left half should have a |
| smooth gradient, and the right half should have a quantized |
| gradient. In particular, the right half's should consist of blocks |
| of the same color for 1/16th active sensor pixel array width. The |
| least significant bits in the quantized gradient should be copied |
| from the most significant bits of the smooth gradient. The height of |
| each bar should always be a multiple of 128. When this is not the |
| case, the pattern should repeat at the bottom of the image. |
| - name: TestPatternModePn9 |
| value: 4 |
| description: | |
| All pixel data is replaced by a pseudo-random sequence generated |
| from a PN9 512-bit sequence (typically implemented in hardware with |
| a linear feedback shift register). The generator should be reset at |
| the beginning of each frame, and thus each subsequent raw frame with |
| this test pattern should be exactly the same as the last. |
| - name: TestPatternModeCustom1 |
| value: 256 |
| description: | |
| The first custom test pattern. All custom patterns that are |
| available only on this camera device are at least this numeric |
| value. All of the custom test patterns will be static (that is the |
| raw image must not vary from frame to frame). |
| |
| ... |