[libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls necessary for FULL compliance

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Apr 27 07:01:26 CEST 2021


Hi Paul,

Ah, this is where the plumbing starts to happen :-)

On Thu, Apr 22, 2021 at 06:40:58PM +0900, Paul Elder wrote:
> Add controls necessary for FULL compliance:
> - BlackLevelLocked
> - EdgeMode
> - FrameDuration
> - SensorSensitivity
> - TonemapMode
> 
> While at it, change the names of some AwbState values to be consistent
> and to avoid potential conflicts with AwbLocked.
> 
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
>  src/libcamera/control_ids.yaml | 78 +++++++++++++++++++++++++++++++++-
>  1 file changed, 76 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml
> index f025819a..61c5c96f 100644
> --- a/src/libcamera/control_ids.yaml
> +++ b/src/libcamera/control_ids.yaml
> @@ -420,6 +420,13 @@ controls:
>              The camera will cancel any active trigger and the AF routine is
>              reset to its initial state.
>  
> +  - BlackLevelLocked:
> +      type: bool
> +      draft: true
> +      description: |
> +        Whether black-level compensation is locked to its current values, or is
> +        free to vary. Currently identical to ANDROID_BLACK_LEVEL_LOCK.
> +
>    - NoiseReductionMode:
>        type: int32_t
>        draft: true
> @@ -554,13 +561,46 @@ controls:
>          - name: AwbStateSearching
>            value: 1
>            description: The AWB algorithm has not converged yet.
> -        - name: AwbConverged
> +        - name: AwbStateConverged
>            value: 2
>            description: The AWB algorithm has converged.
> -        - name: AwbLocked
> +        - name: AwbStateLocked
>            value: 3
>            description: The AWB algorithm is locked.

This is fine for now, be we should really merge this and AwbLocked.

> +  - EdgeMode:
> +      type: int32_t
> +      draft: true
> +      description: |
> +       Control to report the operation mode of edge enhancement. Currently
> +       identical to ANDROID_EDGE_MODE.
> +      enum:
> +        - name: EdgeModeOff
> +          value: 0
> +          description: No edge enhancement is applied.
> +        - name: EdgeModeFast
> +          value: 1
> +          description: |
> +           Apply edge enhancement at a quality level tha does not
> +           slow down frame rate relative to sensor output.
> +        - name: EdgeModeHighQuality
> +          value: 2
> +          description: |
> +           Apply high-quality edge enhancement, at a cost of possible reduced
> +           output frame rate.
> +        - name: EdgeModeZSL
> +          value: 3
> +          description: |
> +           Edge enhancement is applied at different levels for different output
> +           streams, based on resolution.
> +
> +  - FrameDuration:
> +      type: int64_t
> +      draft: true
> +      description: |
> +       Duration from start of frame exposure to start of next frame exposure, in
> +       nanoseconds. Currently identical to ANDROID_SENSOR_FRAME_DURATION.

We already have FrameDurations for this. I'm OK adding a draft control
as a very first step, but we'll have to merge it with FrameDurations.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> +
>    - SensorRollingShutterSkew:
>        type: int64_t
>        draft: true
> @@ -569,6 +609,13 @@ controls:
>         row and the start of exposure of the last row. Currently identical to
>         ANDROID_SENSOR_ROLLING_SHUTTER_SKEW
>  
> +  - SensorSensitivity:
> +      type: int32_t
> +      draft: true
> +      description: |
> +       The amount of gain applied to sensor data before processing. Currently
> +       identical to ANDROID_SENSOR_SENSITIVITY.
> +
>    - LensShadingMapMode:
>        type: int32_t
>        draft: true
> @@ -600,6 +647,33 @@ controls:
>            value: 2
>            description: 60Hz flickering detected.
>  
> +  - TonemapMode:
> +      type: int32_t
> +      draft: true
> +      description: |
> +       High-level global contrast/gamma/tonemapping control. Currently identical
> +       to ANDROID_TONEMAP_MODE.
> +      enum:
> +        - name: TonemapModeContrastCurve
> +          value: 0
> +          description: Use the specified tonemapping curve.
> +        - name: TonemapModeFast
> +          value: 1
> +          description: |
> +           Advanced gamma mapping and color enhancement may be applied, without
> +           reducing frame rate compared to raw sensor output.
> +        - name: TonemapModeHighQuality
> +          value: 2
> +          description: |
> +           High-quality gamma mapping and color enhancement will be applied, at
> +           the cost of possibly reduced frame rate compared to raw sensor output.
> +        - name: TonemapModeGammaValue
> +          value: 3
> +          description: Use the specified gamma value for tonemapping.
> +        - name: TonemapModePresetCurve
> +          value: 4
> +          description: Use the specified preset tonemapping curve.
> +
>    - PipelineDepth:
>        type: int32_t
>        draft: true

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list