Show a patch.

GET /api/1.1/patches/26495/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 26495,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/26495/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/26495/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/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/1.1/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/1.1/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"
    ]
}