[libcamera-devel] [PATCH] py: Support controls that are ControlTypeNone

Christian Rauch Rauch.Christian at gmx.de
Fri Sep 30 19:23:41 CEST 2022


Hi David,

Returning "ControlTypeNone" was intentional to signal that no default
value exists. This is much more clear and expressive than returning a
default constructed 0. So returning "None" on the Python side makes a
lot of sense.

Reviewed-by: Christian Rauch <Rauch.Christian at gmx.de>


Am 30.09.22 um 14:18 schrieb David Plowman via libcamera-devel:
> Such controls can now be created when a control doesn't have a
> reasonable or obvious default value. We support them using Python's
> "None" value, rather than generating a runtime error.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> ---
>  src/py/libcamera/py_helpers.cpp | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/py/libcamera/py_helpers.cpp b/src/py/libcamera/py_helpers.cpp
> index 45aecce9..f685e606 100644
> --- a/src/py/libcamera/py_helpers.cpp
> +++ b/src/py/libcamera/py_helpers.cpp
> @@ -55,6 +55,7 @@ py::object controlValueToPy(const ControlValue &cv)
>  		return py::cast(v);
>  	}
>  	case ControlTypeNone:
> +		return py::none();
>  	default:
>  		throw std::runtime_error("Unsupported ControlValue type");
>  	}
> @@ -91,6 +92,7 @@ ControlValue pyToControlValue(const py::object &ob, ControlType type)
>  	case ControlTypeSize:
>  		return ControlValue(ob.cast<Size>());
>  	case ControlTypeNone:
> +		return ControlValue();
>  	default:
>  		throw std::runtime_error("Control type not implemented");
>  	}


More information about the libcamera-devel mailing list