[libcamera-devel] [PATCH v1 0/5] Vendor controls and properties
Naushir Patuck
naush at raspberrypi.com
Fri Nov 10 11:59:57 CET 2023
Hi,
This change introduces a first attempt at implementing vendor specific controls
and properties in libcamera. Vendor controls and properties live in their own
namespace, and each vendor must now reserve a numeric control id range to avoid
any id value clashes. Vendor controls may either live in the libcamera
control_ids.yaml/property_ids.yaml files or preferably separate vendor specific
files.
To designate a vendor control, the YAML control description must contain a
"vendor: <vendor_string>" tag. For example,
- RaspberryPiExampleControl:
type: string
vendor: rpi
description: |
Example vendor control with the "rpi" vendor tag.
will create a control in the libcamera::controls::rpi namespace, with the
numeric id value taken from the "rpi" reservation. Additionally, a #define
LIBCAMERA_RPI_VENDOR_CONTROL will be available for applications to selectively
compile in vendor control support. Similar applies to the property generation.
The current mechanism for draft controls and propertiers have been deprecated,
and now these are designated with the "draft" vendor tag. Note that this causes
an API breaking change since the numeric control id values for draft control
have their own designated range and namespace. So, for example, the use of
controls::NOISE_REDUCTION_MODE will need to be replaced with
controls::draft::NOISE_REDUCTION_MODE.
Thanks,
Naush
Naushir Patuck (5):
controls: Add vendor control/property support to generation scripts
controls: build: Allow separate vendor control YAML files
libcamera: control: Add vendor control id range reservation
libcamera: controls: Use vendor tags for draft controls and properties
documentation: Document vendor specific control and properties
handling
Documentation/guides/pipeline-handler.rst | 53 ++++++
include/libcamera/control_ids.h.in | 6 +-
include/libcamera/meson.build | 58 +++++-
include/libcamera/property_ids.h.in | 8 +-
meson.build | 2 +
src/ipa/rpi/common/ipa_base.cpp | 2 +-
src/ipa/rpi/vc4/vc4.cpp | 2 +-
src/libcamera/control_ids.cpp.in | 16 +-
src/libcamera/control_ids.yaml | 20 +--
src/libcamera/control_ids_rpi.yaml | 17 ++
src/libcamera/control_ranges.yaml | 17 ++
src/libcamera/meson.build | 20 ++-
src/libcamera/property_ids.cpp.in | 16 +-
src/libcamera/property_ids.yaml | 2 +-
src/py/libcamera/gen-py-controls.py | 31 +++-
src/py/libcamera/meson.build | 26 +--
src/py/libcamera/py_controls_generated.cpp.in | 6 +-
.../libcamera/py_properties_generated.cpp.in | 4 +-
utils/gen-controls.py | 169 +++++++++++++-----
19 files changed, 348 insertions(+), 127 deletions(-)
create mode 100644 src/libcamera/control_ids_rpi.yaml
create mode 100644 src/libcamera/control_ranges.yaml
--
2.34.1
More information about the libcamera-devel
mailing list