[libcamera-devel] [PATCH v4 4/5] libcamera: controls: Add AE related controls

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Apr 24 12:56:55 CEST 2020


Hi Naush,

Thank you for the patch.

On Fri, Apr 24, 2020 at 11:46:59AM +0100, Naushir Patuck wrote:
> AeMeteringMode, AeConstraintMode, and AeExposureMode are new enum type
> controls used to specify operating modes in the AE algorithm. All modes
> may not be supported by all platforms.
> 
> ExposureValue is a new control used to set the log2 exposure adjustment
> for the AE algorithm.
> 
> Lux is a new control that returns the current lux estimate.
> 
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>

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

> ---
>  src/libcamera/control_ids.yaml | 109 +++++++++++++++++++++++++++++++++
>  1 file changed, 109 insertions(+)
> 
> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml
> index f7403081..f66b851b 100644
> --- a/src/libcamera/control_ids.yaml
> +++ b/src/libcamera/control_ids.yaml
> @@ -25,6 +25,109 @@ controls:
>  
>          \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.
> +        - name: MeteringModeMax
> +          value: 3
> +          description: Maximum allowed value (place any new values above here).
> +
> +  # 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.
> +        - name: ConstraintModeMax
> +          value: 3
> +          description: Maximum allowed value (place any new values above here).
> +
> +  # 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.
> +        - name: ExposureModeMax
> +          value: 3
> +          description: Maximum allowed value (place any new values above here).
> +
> +  - 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: |
> @@ -55,6 +158,12 @@ controls:
>          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: |

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list