From patchwork Wed Nov 13 13:12:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 21883 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 AB1ACBE173 for ; Wed, 13 Nov 2024 13:13:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 415AC65816; Wed, 13 Nov 2024 14:13:19 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="T8VmTPnv"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id CC1E8657CF for ; Wed, 13 Nov 2024 14:13:17 +0100 (CET) Received: from neptunite.flets-east.jp (unknown [IPv6:2404:7a81:160:2100:eb25:7aa0:7da7:eb24]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CAC8EEA7; Wed, 13 Nov 2024 14:13:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1731503584; bh=juUGjQY9B6HLCPCdY1J8Ypg9SG+QvBhr2BGhKxA3LWc=; h=From:To:Cc:Subject:Date:From; b=T8VmTPnvHNZeMfiaaHM8ncA18rK8wJMZkbJWTi4owJPNK3DyrSu4LS5JdNgXVlVti g2cUh+ABVofMvnVUMEOYxmPzFgIz8t+deLmGDKf67amJ0s0YEF8ATq8doG2X2zviuT 0et4DOQhbsc85NCgMh5VtvKAXcQg2jNnY6kifqak= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: laurent.pinchart@ideasonboard.com, jacopo.mondi@ideasonboard.com, naush@raspberrypi.com, david.plowman@raspberrypi.com, Paul Elder Subject: [PATCH v3 0/8] AEGC controls Date: Wed, 13 Nov 2024 22:12:48 +0900 Message-Id: <20241113131256.3170817-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. Thanks, Paul Jacopo Mondi (4): libcamera: uvcvideo: Register ExposureTimeMode control test: ipa_data_serialization: Use ExposureTimeMode 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 | 348 ++++++++++++++++++ src/ipa/rkisp1/algorithms/agc.cpp | 68 +++- src/ipa/rkisp1/ipa_context.cpp | 14 +- src/ipa/rkisp1/ipa_context.h | 6 +- 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 | 249 +++++++++++-- src/libcamera/control_ids_draft.yaml | 29 -- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 54 ++- .../ipa_data_serializer_test.cpp | 2 +- utils/codegen/gen-gst-controls.py | 5 +- 15 files changed, 835 insertions(+), 114 deletions(-) create mode 100644 Documentation/design/ae.rst