[libcamera-devel] [PATCH 18/31] libcamera: controls: Add a 'size' yaml property

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Mar 5 15:53:05 CET 2020


Hi

On 29/02/2020 16:42, Laurent Pinchart wrote:
> From: Jacopo Mondi <jacopo at jmondi.org>
> 
> Add a 'size' property to the control yaml description, to convey the
> size constraints of array constrols. The semantics of the property

/constrols/controls/

> contents is currently unspecified, but its presence triggers the
> generation of an array control (Control<Span<const T>>).
> 
> Example:
> 
>   - BayerGains:
>       type: float
>       description: Gains to apply to the four Bayer colour components for white balance
>       size: [4]
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Will we define dynamic sizes ? Or min/max options?

Presuming that this is 'just' for fixed size compound controls so far,
and there will be more to come on this later:

At some point we may want/need a schema and validator for this.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  src/libcamera/gen-controls.py | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libcamera/gen-controls.py b/src/libcamera/gen-controls.py
> index 6f020a327827..ff8bda6b16c1 100755
> --- a/src/libcamera/gen-controls.py
> +++ b/src/libcamera/gen-controls.py
> @@ -42,9 +42,14 @@ ${description}
>          name, ctrl = ctrl.popitem()
>          id_name = snake_case(name).upper()
>  
> +        if ctrl.get('size'):
> +            ctrl_type = 'Span<const %s>' % ctrl['type']
> +        else:
> +            ctrl_type = ctrl['type']
> +
>          info = {
>              'name': name,
> -            'type': ctrl['type'],
> +            'type': ctrl_type,
>              'description': format_description(ctrl['description']),
>              'id_name': id_name,
>          }
> @@ -92,9 +97,14 @@ def generate_h(controls):
>  
>          ids.append('\t' + id_name + ' = ' + str(id_value) + ',')
>  
> +        if ctrl.get('size'):
> +            ctrl_type = 'Span<const %s>' % ctrl['type']
> +        else:
> +            ctrl_type = ctrl['type']
> +
>          info = {
>              'name': name,
> -            'type': ctrl['type'],
> +            'type': ctrl_type,
>          }
>  
>          enum = ctrl.get('enum')
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list