summaryrefslogtreecommitdiff
path: root/src/py
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-11-09 12:30:18 +0000
committerNaushir Patuck <naush@raspberrypi.com>2023-11-30 13:59:27 +0000
commite18a007b9d0b69149f81412b6313c682c874d7ea (patch)
treeee4796ea0cae47ccee3ecd95abb2a72f9b3d197e /src/py
parentd3365b358f350931ce5b1e51c39c23fa47b4a7ca (diff)
libcamera: controls: Use vendor tags for draft controls and properties
Label draft controls and properties through the "draft" vendor tag and deprecate the existing "draft: true" mechanism. This uses the new vendor tags mechanism to place draft controls in the same libcamera::controls::draft namespace and provide a defined control id range for these controls. This requires moving all draft controls from control_ids.yaml to control_ids_draft.yaml. One breaking change in this commit is that draft control ids also move to the libcamera::controls::draft namespace from the existing libcamera::controls namespace. This is desirable to avoid API breakages when adding new libcamera controls. So, for example, the use of controls::NOISE_REDUCTION_MODE will need to be replaced with controls::draft::NOISE_REDUCTION_MODE. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/py')
-rwxr-xr-xsrc/py/libcamera/gen-py-controls.py10
-rw-r--r--src/py/libcamera/py_controls_generated.cpp.in5
-rw-r--r--src/py/libcamera/py_properties_generated.cpp.in5
3 files changed, 4 insertions, 16 deletions
diff --git a/src/py/libcamera/gen-py-controls.py b/src/py/libcamera/gen-py-controls.py
index 8ae8d512..8efbf95b 100755
--- a/src/py/libcamera/gen-py-controls.py
+++ b/src/py/libcamera/gen-py-controls.py
@@ -32,14 +32,12 @@ def generate_py(controls, mode):
name, ctrl = ctrls.popitem()
if vendor not in vendors and vendor != 'libcamera':
- vendors_class_def.append('class Py{}Controls\n{{\n}};\n'.format(vendor))
- vendor_defs.append('\tauto {} = py::class_<Py{}Controls>(controls, \"{}\");'.format(vendor, vendor, vendor))
+ vendor_mode_str = f'{vendor.capitalize()}{mode.capitalize()}'
+ vendors_class_def.append('class Py{}\n{{\n}};\n'.format(vendor_mode_str))
+ vendor_defs.append('\tauto {} = py::class_<Py{}>(controls, \"{}\");'.format(vendor, vendor_mode_str, vendor))
vendors.append(vendor)
- if ctrl.get('draft'):
- ns = 'libcamera::{}::draft::'.format(mode)
- container = 'draft'
- elif vendor != 'libcamera':
+ if vendor != 'libcamera':
ns = 'libcamera::{}::{}::'.format(mode, vendor)
container = vendor
else:
diff --git a/src/py/libcamera/py_controls_generated.cpp.in b/src/py/libcamera/py_controls_generated.cpp.in
index ec4b55ef..8d282ce5 100644
--- a/src/py/libcamera/py_controls_generated.cpp.in
+++ b/src/py/libcamera/py_controls_generated.cpp.in
@@ -17,16 +17,11 @@ class PyControls
{
};
-class PyDraftControls
-{
-};
-
${vendors_class_def}
void init_py_controls_generated(py::module& m)
{
auto controls = py::class_<PyControls>(m, "controls");
- auto draft = py::class_<PyDraftControls>(controls, "draft");
${vendors_defs}
${controls}
diff --git a/src/py/libcamera/py_properties_generated.cpp.in b/src/py/libcamera/py_properties_generated.cpp.in
index f7b5ec8c..e3802b81 100644
--- a/src/py/libcamera/py_properties_generated.cpp.in
+++ b/src/py/libcamera/py_properties_generated.cpp.in
@@ -17,16 +17,11 @@ class PyProperties
{
};
-class PyDraftProperties
-{
-};
-
${vendors_class_def}
void init_py_properties_generated(py::module& m)
{
auto controls = py::class_<PyProperties>(m, "properties");
- auto draft = py::class_<PyDraftProperties>(controls, "draft");
${vendors_defs}
${controls}