[libcamera-devel] [PATCH 00/23] Properties and compound controls

Jacopo Mondi jacopo at jmondi.org
Mon Jan 13 17:42:22 CET 2020


Hello,
   This series includes a few components I have separately sent in the previous
weeks:

- Support for libcamera properties and definition of location and rotation
- Support for compound controls with the introduction of Span<> class

The first part of the series defines the infrastructure to parse and generate
properties. Most of the patchs has already been reviewed, the biggest new
one is the 'rotation'  property definition, which I have already sent as
follow-up to my previouse series "[PATCH v4 00/10] Camera properties" which
is now superseded by this series.

The second half of the series adds support for compound controls, control that
can transport and arbitrary number of data elements.

Support for compound is realized with the introduction of a new Span<> class,
and later extended to the rest of the libcamera code base, including support
for serialization/deserialization in the last patches of the series.

A few patches not meant for inclusion added to test compound controls.

Thanks to Laurent off-line review effort I already squashed in some of the
proposed fixes and added his signed-off where opportune.

Thanks
   j

Jacopo Mondi (21):
  [TEMP] include: linux: Update v4l2-controls.h
  libcamera: controls: Parse 'enum' in gen-controls.py
  libcamera: properties: Add location property
  libcamera: properties: Add rotation property
  libcamera: controls: Add default to ControlRange
  libcamera: camera_sensor: Parse camera properties
  libcamera: pipeline_handler: Add Camera properties
  libcamera: camera: Add Camera properties
  android: camera_device: Use Camera properties for static Metadata
  cam: Add option to list camera properties
  libcamera: controls: Add support for float controls
  libcamera: Add C++20 std::span<> implementation
  libcamera: controls: Parse 'compound' yaml property
  libcamera: controls: Support compound controls in ControlValue
  libcamera: control: Deep-copy control values
  libcamera: controls: Re-oder ControlValue methods
  libcamera: controls: Validate compound controls range
  DNI: test compound controls
  libcamera: byte_stream_buffer: Support span<>
  libcamera: control_serializer: Add support for compound controls
  DNI: test: serialization: Serialize compound controls

Laurent Pinchart (2):
  libcamera: span: Add support for STL containers
  libcamera: controls: Don't convert 32-bit and 64-bit implicitly

 Documentation/Doxyfile.in                    |   4 +-
 include/libcamera/camera.h                   |   1 +
 include/libcamera/controls.h                 |  59 ++-
 include/libcamera/meson.build                |  25 +-
 include/libcamera/property_ids.h.in          |  33 ++
 include/libcamera/span.h                     | 206 ++++++++
 include/linux/v4l2-controls.h                |   7 +
 src/android/camera_device.cpp                |  29 +-
 src/cam/main.cpp                             |  50 ++
 src/cam/main.h                               |   1 +
 src/libcamera/byte_stream_buffer.cpp         |  31 +-
 src/libcamera/camera.cpp                     |  16 +-
 src/libcamera/camera_sensor.cpp              |  49 +-
 src/libcamera/control_ids.yaml               |   5 +
 src/libcamera/control_serializer.cpp         | 132 ++++-
 src/libcamera/controls.cpp                   | 527 +++++++++++++++++--
 src/libcamera/gen-controls.py                |  60 ++-
 src/libcamera/include/byte_stream_buffer.h   |  14 +
 src/libcamera/include/camera_sensor.h        |   7 +-
 src/libcamera/include/control_serializer.h   |  10 +-
 src/libcamera/include/pipeline_handler.h     |   2 +
 src/libcamera/meson.build                    |  20 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp         |   3 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp     |   3 +
 src/libcamera/pipeline/vimc.cpp              |   9 +
 src/libcamera/pipeline_handler.cpp           |  19 +
 src/libcamera/property_ids.cpp.in            |  43 ++
 src/libcamera/property_ids.yaml              | 337 ++++++++++++
 src/libcamera/span.cpp                       |  13 +
 src/libcamera/v4l2_controls.cpp              |   9 +-
 test/controls/compound_controls.cpp          |  71 +++
 test/controls/meson.build                    |   1 +
 test/serialization/control_serialization.cpp |   2 +
 33 files changed, 1682 insertions(+), 116 deletions(-)
 create mode 100644 include/libcamera/property_ids.h.in
 create mode 100644 include/libcamera/span.h
 create mode 100644 src/libcamera/property_ids.cpp.in
 create mode 100644 src/libcamera/property_ids.yaml
 create mode 100644 src/libcamera/span.cpp
 create mode 100644 test/controls/compound_controls.cpp

--
2.24.0



More information about the libcamera-devel mailing list