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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Mar 6 16:59:48 CET 2020


From: Jacopo Mondi <jacopo at jmondi.org>

Add a 'size' property to the control yaml description, to convey the
size constraints of array controls. The semantics of the property
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>
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,

Laurent Pinchart



More information about the libcamera-devel mailing list