From patchwork Mon Dec 16 04:39:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 22331 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 E591CC32F6 for ; Mon, 16 Dec 2024 04:40:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D4AA467F3A; Mon, 16 Dec 2024 05:40:19 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="dR7N2aPv"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 0877D62C8A for ; Mon, 16 Dec 2024 05:40:18 +0100 (CET) Received: from neptunite.flets-east.jp (unknown [IPv6:2404:7a81:160:2100:c11a:e451:861f:3d32]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9521313C; Mon, 16 Dec 2024 05:39:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1734323981; bh=GQ/nOqmhprdVo9tcPhmeo4y3jgc+QQNtsGXMY5IOm4g=; h=From:To:Cc:Subject:Date:From; b=dR7N2aPvhfzuHz7tsfL+POXTddMxhr25UonVTpFNdqtLW24fC6xQ/0lzG1tsgejw8 4tqbbmU/AJ6bjdfQVg6ykQss2C5ukR0uELfU0SjjszujQ2tWezCNPsVEURRwPR2Fpd DWd6iS92Ik2vIg0rGtBuq/kH2AMuOLkhkp/riz0A= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder Subject: [PATCH v5 0/8] AEGC controls Date: Mon, 16 Dec 2024 13:39:46 +0900 Message-Id: <20241216043954.3506855-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" This patch series introduces a new set of AEGC controls that allow: - flicker avoidance when switching from auto to manual - shutter priority / gain priority To achieve this, we remove the existing AeEnable control and add two separate controls that control enabling/disabling auto-exposure and auto-gain. The definition of AeState is also made more concrete. The first two patches add the new controls, as well as documentation and design rationale. The rest of the patches naturally update the existing users of AeEnable, before finally removing the control altogether. v4 mainly improves documentation and implements the proper behavior when transitioning between auto and manual modes for the rkisp1. v5 is mostly minor wording changes, plus a fix to the rkisp1 aegc implementation to support mixed manual-auto ae modes (aka "shutter priority" / "gain priority"). Thanks, Paul Jacopo Mondi (4): libcamera: uvcvideo: Register ExposureTimeMode control test: ipa_data_serialization: Use DebugMetadataEnable ipa: raspberry: Port to the new AEGC controls controls: Remove AeEnable and AeLocked Paul Elder (4): controls: Introduce AEGC-related controls Documentation: design: ae: Document the design for AE controls ipa: rkisp1: Port to the new AEGC controls gstreamer: Generate the new AEGC controls Documentation/design/ae.rst | 320 ++++++++++++++++++ Documentation/index.rst | 4 +- Documentation/meson.build | 1 + src/ipa/rkisp1/algorithms/agc.cpp | 122 +++++-- src/ipa/rkisp1/ipa_context.cpp | 24 +- src/ipa/rkisp1/ipa_context.h | 8 +- src/ipa/rpi/common/ipa_base.cpp | 74 +++- src/ipa/rpi/controller/agc_algorithm.h | 8 +- src/ipa/rpi/controller/rpi/agc.cpp | 52 ++- src/ipa/rpi/controller/rpi/agc.h | 8 +- src/ipa/rpi/controller/rpi/agc_channel.cpp | 24 +- src/ipa/rpi/controller/rpi/agc_channel.h | 8 +- src/libcamera/control_ids_core.yaml | 268 +++++++++++++-- src/libcamera/control_ids_draft.yaml | 29 -- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 53 ++- .../ipa_data_serializer_test.cpp | 2 +- utils/codegen/gen-gst-controls.py | 5 +- 17 files changed, 890 insertions(+), 120 deletions(-) create mode 100644 Documentation/design/ae.rst