Introduce the AeState, ExposureTimeMode and AnalogueGainMode controls to model the AEGC algorithm block. The three controls allow applications to select the exposure time and analogue gain computation calculation mode (auto vs manual) independently from one another, while the AeState control reports the global state for the AEGC algorithm. The new controls are meant to replace the existing AeEnable and AeLocked controls, which are momentarily kept not to break compilation of platforms making use of them. Bug: https://bugs.libcamera.org/show_bug.cgi?id=42 Bug: https://bugs.libcamera.org/show_bug.cgi?id=43 Bug: https://bugs.libcamera.org/show_bug.cgi?id=47 Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
298 lines
11 KiB
YAML
298 lines
11 KiB
YAML
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
#
|
|
# Copyright (C) 2019, Google Inc.
|
|
#
|
|
%YAML 1.1
|
|
---
|
|
# Unless otherwise stated, all controls are bi-directional, i.e. they can be
|
|
# set through Request::controls() and returned out through Request::metadata().
|
|
vendor: draft
|
|
controls:
|
|
- AePrecaptureTrigger:
|
|
type: int32_t
|
|
direction: inout
|
|
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.
|
|
|
|
- NoiseReductionMode:
|
|
type: int32_t
|
|
direction: inout
|
|
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
|
|
direction: inout
|
|
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.
|
|
|
|
- AwbState:
|
|
type: int32_t
|
|
direction: out
|
|
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
|
|
direction: out
|
|
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
|
|
direction: inout
|
|
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.
|
|
|
|
- PipelineDepth:
|
|
type: int32_t
|
|
direction: out
|
|
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
|
|
direction: out
|
|
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
|
|
direction: inout
|
|
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).
|
|
|
|
- FaceDetectMode:
|
|
type: int32_t
|
|
direction: inout
|
|
description: |
|
|
Control to select the face detection mode used by the pipeline.
|
|
|
|
Currently identical to ANDROID_STATISTICS_FACE_DETECT_MODE.
|
|
|
|
\sa FaceDetectFaceRectangles
|
|
\sa FaceDetectFaceScores
|
|
\sa FaceDetectFaceLandmarks
|
|
\sa FaceDetectFaceIds
|
|
|
|
enum:
|
|
- name: FaceDetectModeOff
|
|
value: 0
|
|
description: |
|
|
Pipeline doesn't perform face detection and doesn't report any
|
|
control related to face detection.
|
|
- name: FaceDetectModeSimple
|
|
value: 1
|
|
description: |
|
|
Pipeline performs face detection and reports the
|
|
FaceDetectFaceRectangles and FaceDetectFaceScores controls for each
|
|
detected face. FaceDetectFaceLandmarks and FaceDetectFaceIds are
|
|
optional.
|
|
- name: FaceDetectModeFull
|
|
value: 2
|
|
description: |
|
|
Pipeline performs face detection and reports all the controls
|
|
related to face detection including FaceDetectFaceRectangles,
|
|
FaceDetectFaceScores, FaceDetectFaceLandmarks, and
|
|
FaceDeteceFaceIds for each detected face.
|
|
|
|
- FaceDetectFaceRectangles:
|
|
type: Rectangle
|
|
direction: out
|
|
description: |
|
|
Boundary rectangles of the detected faces. The number of values is
|
|
the number of detected faces.
|
|
|
|
The FaceDetectFaceRectangles control can only be returned in metadata.
|
|
|
|
Currently identical to ANDROID_STATISTICS_FACE_RECTANGLES.
|
|
size: [n]
|
|
|
|
- FaceDetectFaceScores:
|
|
type: uint8_t
|
|
direction: out
|
|
description: |
|
|
Confidence score of each of the detected faces. The range of score is
|
|
[0, 100]. The number of values should be the number of faces reported
|
|
in FaceDetectFaceRectangles.
|
|
|
|
The FaceDetectFaceScores control can only be returned in metadata.
|
|
|
|
Currently identical to ANDROID_STATISTICS_FACE_SCORES.
|
|
size: [n]
|
|
|
|
- FaceDetectFaceLandmarks:
|
|
type: Point
|
|
direction: out
|
|
description: |
|
|
Array of human face landmark coordinates in format [..., left_eye_i,
|
|
right_eye_i, mouth_i, left_eye_i+1, ...], with i = index of face. The
|
|
number of values should be 3 * the number of faces reported in
|
|
FaceDetectFaceRectangles.
|
|
|
|
The FaceDetectFaceLandmarks control can only be returned in metadata.
|
|
|
|
Currently identical to ANDROID_STATISTICS_FACE_LANDMARKS.
|
|
size: [n]
|
|
|
|
- FaceDetectFaceIds:
|
|
type: int32_t
|
|
direction: out
|
|
description: |
|
|
Each detected face is given a unique ID that is valid for as long as the
|
|
face is visible to the camera device. A face that leaves the field of
|
|
view and later returns may be assigned a new ID. The number of values
|
|
should be the number of faces reported in FaceDetectFaceRectangles.
|
|
|
|
The FaceDetectFaceIds control can only be returned in metadata.
|
|
|
|
Currently identical to ANDROID_STATISTICS_FACE_IDS.
|
|
size: [n]
|
|
|
|
...
|