[libcamera-devel] [PATCH v1 0/5] Vendor controls and properties
Naushir Patuck
naush at raspberrypi.com
Fri Nov 17 11:41:18 CET 2023
Hi,
Gentle ping on some feedback for this work please.
Thanks!
Naush
On Fri, 10 Nov 2023 at 10:59, Naushir Patuck <naush at raspberrypi.com> wrote:
>
> 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