Patch Detail
Show a patch.
GET /api/patches/26495/?format=api
{ "id": 26495, "url": "https://patchwork.libcamera.org/api/patches/26495/?format=api", "web_url": "https://patchwork.libcamera.org/patch/26495/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260407-kbingham-awb-split-v1-11-a39af3f4dc20@ideasonboard.com>", "date": "2026-04-07T22:01:14", "name": "[11/13] ipa: libipa: awb: Move configure to common", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "71b375307ba28e1f1750fab321cf38075d8af849", "submitter": { "id": 4, "url": "https://patchwork.libcamera.org/api/people/4/?format=api", "name": "Kieran Bingham", "email": "kieran.bingham@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/26495/mbox/", "series": [ { "id": 5874, "url": "https://patchwork.libcamera.org/api/series/5874/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5874", "date": "2026-04-07T22:01:03", "name": "ipa: simple: Convert to libipa AWB implementation", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5874/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/26495/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/26495/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 4AF02BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 7 Apr 2026 22:03:02 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 684C562DB3;\n\tWed, 8 Apr 2026 00:02:57 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B8E5B62DB6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 8 Apr 2026 00:02:43 +0200 (CEST)", "from [192.168.0.204] (ams.linuxembedded.co.uk [209.38.108.23])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C1F7D2598;\n\tWed, 8 Apr 2026 00:01:15 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"nL2GjPH9\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1775599275;\n\tbh=ACGMEBHGXk8xztCJFbq3gIfrocN+U7dV5cite7ZFeJI=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:From;\n\tb=nL2GjPH9SKXK5XVZ2lAiiBCsy3gjNcSThBhuuxa/MeRlVy/TM3C8LqHS6fIUhfdKZ\n\tlR9t7Dd8f1vOuHVqCRAceROVjxPh6IGOw4TQR1wmuNHNJjStbP1KkBoDpnRNiCwekv\n\tt1HRBQnSWUx/PlWBPkKRlVddI8v4XPyoIKevZG+c=", "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "Date": "Tue, 07 Apr 2026 23:01:14 +0100", "Subject": "[PATCH 11/13] ipa: libipa: awb: Move configure to common", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260407-kbingham-awb-split-v1-11-a39af3f4dc20@ideasonboard.com>", "References": "<20260407-kbingham-awb-split-v1-0-a39af3f4dc20@ideasonboard.com>", "In-Reply-To": "<20260407-kbingham-awb-split-v1-0-a39af3f4dc20@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "X-Mailer": "b4 0.14.2", "X-Developer-Signature": "v=1; a=ed25519-sha256; t=1775599360; l=5011;\n\ti=kieran.bingham@ideasonboard.com; s=20260204;\n\th=from:subject:message-id; \n\tbh=ACGMEBHGXk8xztCJFbq3gIfrocN+U7dV5cite7ZFeJI=;\n\tb=kIQxN28QMXXNFfvy3Zrr+V5bTB+XYTHqzJ20nW/u8TOiuUSkVC+dcB1WYg7xR1eem771schDs\n\tDypABzgo5smC3OkXt1u6SMPPs4Afv3DeRCIbmx/L9XhmHDMfkJwNwfG", "X-Developer-Key": "i=kieran.bingham@ideasonboard.com; a=ed25519;\n\tpk=IOxS2C6nWHNjLfkDR71Iesk904i6wJDfEERqV7hDBdY=", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Refactor the AWB configuration to use the common implementation supplied\nby libipa awb module.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/ipa/libipa/awb.cpp | 29 +++++++++++++++++++++++++++++\n src/ipa/libipa/awb.h | 3 +++\n src/ipa/rkisp1/algorithms/awb.cpp | 13 +------------\n src/ipa/simple/algorithms/awb.cpp | 16 ++--------------\n 4 files changed, 35 insertions(+), 26 deletions(-)", "diff": "diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp\nindex f215bea0b59483eadf95572f073928a4eb1275f4..d0c577958caebc0b7e24fe58506da964df2200fe 100644\n--- a/src/ipa/libipa/awb.cpp\n+++ b/src/ipa/libipa/awb.cpp\n@@ -11,6 +11,8 @@\n \n #include <libcamera/control_ids.h>\n \n+constexpr int32_t kDefaultColourTemperature = 5000;\n+\n /**\n * \\file awb.h\n * \\brief Base classes for AWB algorithms\n@@ -139,6 +141,33 @@ namespace ipa {\n * \\return 0 on success, a negative error code otherwise\n */\n \n+/**\n+ * \\brief Configure the Awb algorithm given an IPAConfigInfo\n+ * \\param[in] state The AWB specific active state shared across frames\n+ * \\param[in] session The AWB specific session configuration\n+ *\n+ * Configure and initialise the AWB algorithm module.\n+ *\n+ * \\return 0 if successful, an error code otherwise\n+ */\n+int AwbAlgorithm::configure(awb::ActiveState &state, awb::Session &session)\n+{\n+\tstate.manual.gains = RGB<double>{ 1.0 };\n+\tauto gains = gainsFromColourTemperature(kDefaultColourTemperature);\n+\tif (gains)\n+\t\tstate.automatic.gains = *gains;\n+\telse\n+\t\tstate.automatic.gains = RGB<double>{ 1.0 };\n+\n+\tstate.autoEnabled = true;\n+\tstate.manual.temperatureK = kDefaultColourTemperature;\n+\tstate.automatic.temperatureK = kDefaultColourTemperature;\n+\n+\tsession.enabled = true;\n+\n+\treturn 0;\n+}\n+\n /**\n * \\fn AwbAlgorithm::calculateAwb()\n * \\brief Calculate AWB data from the given statistics\ndiff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h\nindex 764be849270bcd42ecdf67aea3d13afa170c7499..4ceae537686f8f4c93686fab4b9efbc06e112b1d 100644\n--- a/src/ipa/libipa/awb.h\n+++ b/src/ipa/libipa/awb.h\n@@ -65,6 +65,9 @@ public:\n \tvirtual ~AwbAlgorithm() = default;\n \n \tvirtual int init(const YamlObject &tuningData) = 0;\n+\n+\tint configure(awb::ActiveState &state, awb::Session &session);\n+\n \tvirtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) = 0;\n \tvirtual std::optional<RGB<double>> gainsFromColourTemperature(double colourTemperature) = 0;\n \ndiff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\nindex f83da545be856c08cd758dc20a5ace91344101cf..86d5dfed3e1c2bb587705f05362229db3cdadafd 100644\n--- a/src/ipa/rkisp1/algorithms/awb.cpp\n+++ b/src/ipa/rkisp1/algorithms/awb.cpp\n@@ -128,16 +128,7 @@ int Awb::init(IPAContext &context, const YamlObject &tuningData)\n int Awb::configure(IPAContext &context,\n \t\t const IPACameraSensorInfo &configInfo)\n {\n-\tcontext.activeState.awb.manual.gains = RGB<double>{ 1.0 };\n-\tauto gains = awbAlgo_->gainsFromColourTemperature(kDefaultColourTemperature);\n-\tif (gains)\n-\t\tcontext.activeState.awb.automatic.gains = *gains;\n-\telse\n-\t\tcontext.activeState.awb.automatic.gains = RGB<double>{ 1.0 };\n-\n-\tcontext.activeState.awb.autoEnabled = true;\n-\tcontext.activeState.awb.manual.temperatureK = kDefaultColourTemperature;\n-\tcontext.activeState.awb.automatic.temperatureK = kDefaultColourTemperature;\n+\tawbAlgo_->configure(context.activeState.awb, context.configuration.awb);\n \n \t/*\n \t * Define the measurement window for AWB as a centered rectangle\n@@ -148,8 +139,6 @@ int Awb::configure(IPAContext &context,\n \tcontext.configuration.awb.measureWindow.h_size = 3 * configInfo.outputSize.width / 4;\n \tcontext.configuration.awb.measureWindow.v_size = 3 * configInfo.outputSize.height / 4;\n \n-\tcontext.configuration.awb.enabled = true;\n-\n \treturn 0;\n }\n \ndiff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/simple/algorithms/awb.cpp\nindex 90c05e86bae6eefe4874feeb1263af07acd5fcfc..230b7807075941f086911549066e39c0a04dff5c 100644\n--- a/src/ipa/simple/algorithms/awb.cpp\n+++ b/src/ipa/simple/algorithms/awb.cpp\n@@ -106,20 +106,8 @@ int Awb::init(IPAContext &context, const YamlObject &tuningData)\n int Awb::configure(IPAContext &context,\n \t\t [[maybe_unused]] const IPAConfigInfo &configInfo)\n {\n-\tcontext.activeState.awb.manual.gains = RGB<double>{ 1.0 };\n-\tauto gains = awbAlgo_->gainsFromColourTemperature(kDefaultColourTemperature);\n-\tif (gains)\n-\t\tcontext.activeState.awb.automatic.gains = *gains;\n-\telse\n-\t\tcontext.activeState.awb.automatic.gains = RGB<double>{ 1.0 };\n-\n-\tcontext.activeState.awb.autoEnabled = true;\n-\tcontext.activeState.awb.manual.temperatureK = kDefaultColourTemperature;\n-\tcontext.activeState.awb.automatic.temperatureK = kDefaultColourTemperature;\n-\n-\tcontext.configuration.awb.enabled = true;\n-\n-\treturn 0;\n+\treturn awbAlgo_->configure(context.activeState.awb,\n+\t\t\t\t context.configuration.awb);\n }\n \n /**\n", "prefixes": [ "11/13" ] }