From patchwork Wed Aug 18 15:53:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Michel Hautbois X-Patchwork-Id: 13388 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 03438BD87C for ; Wed, 18 Aug 2021 15:54:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DD3CD688A6; Wed, 18 Aug 2021 17:54:09 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="of8QesLW"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id CE9726888A for ; Wed, 18 Aug 2021 17:54:07 +0200 (CEST) Received: from tatooine.ideasonboard.com (unknown [IPv6:2a01:e0a:169:7140:946e:2bbb:370e:41e4]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 69FF5EE; Wed, 18 Aug 2021 17:54:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1629302047; bh=poysHI7YDpJNrS0iM60t13jZ0lFvQrDlAx+D/jOsr4A=; h=From:To:Cc:Subject:Date:From; b=of8QesLWU2MzdfsQkLidZEKEegzEeQOZ/FbJRd10Z1b58KMkHYlqmaix5Tx6N3Kbz SRSaeMjpJuk2BudRZ2xb+HKOUjp3tzlNrNN+uSMy+vsttF6lVlkhFSoraHmQlXTBqc gepMt3dz2y8b3K9SvomPpd4vvMyzK6gok8jO7490= From: Jean-Michel Hautbois To: libcamera-devel@lists.libcamera.org Date: Wed, 18 Aug 2021 17:53:54 +0200 Message-Id: <20210818155403.268694-1-jeanmichel.hautbois@ideasonboard.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 0/9] IPU3: Introduce modularity for algorithms 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 splits the algorithms in IPU3 into a modular form. When the Metadata class was discussed a proposal from Kieran was to have a fully-defined structure which would be used to pass the context between algorithms and the IPAIPU3 class, as well as between the algorithms themselves. The algorithms are statically emplaced in a list for the moment, and a registration system may be used later. In order to demonstrate how to add a new algorithm, patch 5/9 moves the contrast algorithm from AWB into its own algorithm. Patch 6/9 and 7/9 change the AWB and AGC to use the new interface. And the two latest patches are indeed the usage of the new modular interface applied to AWB and AGC. Jean-Michel Hautbois (9): ipa: move libipa::Algorithm to ipa/ipu3/algorithms ipa: ipu3: Introduce a Context structure ipa: ipu3: Add the functions to the Algorithm class ipa: ipu3: Introduce modular algorithm ipa: ipu3: Introduce a modular contrast algorithm ipa: ipu3: convert AWB to the new algorithm interface ipa: ipu3: convert AGC to the new algorithm interface ipa: ipu3: Move IPU3 awb into algorithms ipa: ipu3: Move IPU3 agc into algorithms .../ipu3/{ipu3_agc.cpp => algorithms/agc.cpp} | 39 ++-- src/ipa/ipu3/{ipu3_agc.h => algorithms/agc.h} | 32 ++-- src/ipa/ipu3/algorithms/algorithm.cpp | 76 ++++++++ src/ipa/ipu3/algorithms/algorithm.h | 33 ++++ .../ipu3/{ipu3_awb.cpp => algorithms/awb.cpp} | 168 +++++++----------- src/ipa/ipu3/{ipu3_awb.h => algorithms/awb.h} | 26 +-- src/ipa/ipu3/algorithms/contrast.cpp | 53 ++++++ src/ipa/ipu3/algorithms/contrast.h | 32 ++++ src/ipa/ipu3/algorithms/meson.build | 8 + src/ipa/ipu3/ipa_context.h | 54 ++++++ src/ipa/ipu3/ipu3.cpp | 124 +++++++++---- src/ipa/ipu3/meson.build | 6 +- src/ipa/libipa/algorithm.cpp | 39 ---- src/ipa/libipa/algorithm.h | 24 --- src/ipa/libipa/libipa.cpp | 22 +++ src/ipa/libipa/meson.build | 5 +- 16 files changed, 484 insertions(+), 257 deletions(-) rename src/ipa/ipu3/{ipu3_agc.cpp => algorithms/agc.cpp} (88%) rename src/ipa/ipu3/{ipu3_agc.h => algorithms/agc.h} (51%) create mode 100644 src/ipa/ipu3/algorithms/algorithm.cpp create mode 100644 src/ipa/ipu3/algorithms/algorithm.h rename src/ipa/ipu3/{ipu3_awb.cpp => algorithms/awb.cpp} (71%) rename src/ipa/ipu3/{ipu3_awb.h => algorithms/awb.h} (77%) create mode 100644 src/ipa/ipu3/algorithms/contrast.cpp create mode 100644 src/ipa/ipu3/algorithms/contrast.h create mode 100644 src/ipa/ipu3/algorithms/meson.build create mode 100644 src/ipa/ipu3/ipa_context.h delete mode 100644 src/ipa/libipa/algorithm.cpp delete mode 100644 src/ipa/libipa/algorithm.h create mode 100644 src/ipa/libipa/libipa.cpp Reviewed-by: Laurent Pinchart