From patchwork Mon Jan 13 16:42:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 2615 Return-Path: Received: from relay11.mail.gandi.net (relay11.mail.gandi.net [217.70.178.231]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 40A1960607 for ; Mon, 13 Jan 2020 17:40:24 +0100 (CET) Received: from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101]) (Authenticated sender: jacopo@jmondi.org) by relay11.mail.gandi.net (Postfix) with ESMTPSA id B178E100004; Mon, 13 Jan 2020 16:40:23 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Mon, 13 Jan 2020 17:42:22 +0100 Message-Id: <20200113164245.52535-1-jacopo@jmondi.org> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 00/23] Properties and compound controls X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2020 16:40:24 -0000 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