From patchwork Thu Jun 30 13:38:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 16458 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 42205BE173 for ; Thu, 30 Jun 2022 13:39:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2AC216564E; Thu, 30 Jun 2022 15:39:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1656596358; bh=20I4voFLfGBuV70sG1g5XSe+hG7AB6Qj6LIuOaqdN6c=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=ayukorF+OHZp4t0Aqh2LaIPkRlB1Wma9QV92gr2CLJbf45yB6uGhLu3Prd29LmyQX tGA6U6Avm9lJORRVBMZyZqTS3xfPzyivXjOetj4KfLi1563pjcgpoFTUA1MXG29ce2 0OYTB5AG0pkKU5hD9MoSLQF6RMZ2jCySRwtQbetXA3fi8zDxfdQohA5xHgl8hZljs1 fdwSTdm2ARZTbQwkWxHERBYoYzTqvgNRVh7xE0TmAOd1brD2qoPbgl2EaMyFKtF7vt 2hVOkXUuw9wuXC8gnwvhDQtzJh6K0sdYZiPNK9TJouW84IbE6gdWhRI7XKruuS0ZUb 8692WXTAsyVyQ== Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::221]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 284C26559A for ; Thu, 30 Jun 2022 15:39:17 +0200 (CEST) Received: (Authenticated sender: jacopo@jmondi.org) by mail.gandi.net (Postfix) with ESMTPSA id 34667240003; Thu, 30 Jun 2022 13:39:15 +0000 (UTC) To: libcamera-devel@lists.libcamera.org Date: Thu, 30 Jun 2022 15:38:39 +0200 Message-Id: <20220630133902.321099-1-jacopo@jmondi.org> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 00/23] Internal controls, sensor delays and IPA rework 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-Patchwork-Original-From: Jacopo Mondi via libcamera-devel From: Jacopo Mondi Reply-To: Jacopo Mondi Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Based on the previous v2, this new version reworks slightly the first part of the series and on top, removes usage of V4L2 controls from the IPA. The logical sequence of patches is: - Introduce internal controls - Create src/libcamera/camera_sensor - Introduce sensor control delays - Move delayed controls in CameraSensor - Make the CameraSensor control interface use libcamera controls - Make the IPA module use libcamera controls - Similar adjustments to the CameraLens class This work is only performed on IPU3, RkISP1 should be similarly reworked after the work here has been validated. Jacopo Mondi (23): libcamera: control_ids: Add 'internal' argument libcamera: control_ids: Separate the id numerical space libcamera: Introduce internal controls libcamera: control_serializer: Support internal controls libcamera: Add src/libcamera/camera_sensor directory libcamera: camera_sensor: Copy CameraSensorHelper libcamera: camera_sensor: Rename the control interface libcamera: camera_sensor: Initialize controls libcamera: camera_sensor_properties: Add sensor delays libcamera: camera_sensor: Initialize delayed controls libcamera: camera_sensor: Expose DelayedControls interface libcamera: ipu3: Drop DelayedControls libcamera: camera_sensor: Cache the sensor configuration libcamera: camera_sensor: Translate libcamera/V4L2 controls libcamera: ipu3: Initialize controls in the pipeline libcamera: IPACameraSensorInfo: Add VBLANK ipa: ipu3: Configure IPA with libcamera controls ipa: ipu3: Use an up to date lineDuration ipa: ipu3: Rework IPAIPU3::processStatsBuffer() ipa: ipu3: Make algorithms use libcamera controls ipa: ipu3: Add and use LensFocusAbsolute control libcamera: camera_lens: Expose libcamera control limits libcamera: Move camera_lens.cpp in src/libcamera/camera_sensor include/libcamera/control_ids.h.in | 6 +- include/libcamera/internal/camera_lens.h | 5 +- include/libcamera/internal/camera_sensor.h | 25 +- .../libcamera/internal/camera_sensor_helper.h | 93 ++++ .../internal/camera_sensor_properties.h | 4 + include/libcamera/internal/meson.build | 16 + include/libcamera/ipa/core.mojom | 6 + include/libcamera/ipa/ipa_controls.h | 1 + include/libcamera/ipa/ipu3.mojom | 11 +- src/ipa/ipu3/algorithms/agc.cpp | 12 +- src/ipa/ipu3/ipa_context.cpp | 14 +- src/ipa/ipu3/ipa_context.h | 9 +- src/ipa/ipu3/ipu3.cpp | 236 +++------ .../{ => camera_sensor}/camera_lens.cpp | 33 +- .../{ => camera_sensor}/camera_sensor.cpp | 283 +++++++++- .../camera_sensor/camera_sensor_helper.cpp | 487 ++++++++++++++++++ .../camera_sensor_properties.cpp | 40 ++ src/libcamera/camera_sensor/meson.build | 8 + src/libcamera/control_ids.cpp.in | 12 +- src/libcamera/control_serializer.cpp | 6 + src/libcamera/internal_control_ids.yaml | 40 ++ src/libcamera/meson.build | 21 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 73 ++- .../pipeline/raspberrypi/raspberrypi.cpp | 14 +- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- src/libcamera/pipeline/vimc/vimc.cpp | 8 +- utils/gen-controls.py | 24 +- 27 files changed, 1195 insertions(+), 294 deletions(-) create mode 100644 include/libcamera/internal/camera_sensor_helper.h rename src/libcamera/{ => camera_sensor}/camera_lens.cpp (81%) rename src/libcamera/{ => camera_sensor}/camera_sensor.cpp (75%) create mode 100644 src/libcamera/camera_sensor/camera_sensor_helper.cpp rename src/libcamera/{ => camera_sensor}/camera_sensor_properties.cpp (81%) create mode 100644 src/libcamera/camera_sensor/meson.build create mode 100644 src/libcamera/internal_control_ids.yaml --- 2.36.1