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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Feb 29 17:42:41 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 constrols. 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>
---
 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