Show a patch.

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

{
    "id": 22790,
    "url": "https://patchwork.libcamera.org/api/patches/22790/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/22790/",
    "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": "<20250217100203.297894-5-stefan.klug@ideasonboard.com>",
    "date": "2025-02-17T10:01:45",
    "name": "[04/10] ipa: rkisp1: Refactor automatic/manual structure in IPAActiveState",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "2fd5603c0cbb18e078a6b234909b97aaf2aed66f",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/22790/mbox/",
    "series": [
        {
            "id": 5005,
            "url": "https://patchwork.libcamera.org/api/series/5005/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5005",
            "date": "2025-02-17T10:01:41",
            "name": "Some rkisp1 awb improvements",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5005/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/22790/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/22790/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 237D2C327D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 17 Feb 2025 10:02:26 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A8E0968673;\n\tMon, 17 Feb 2025 11:02:25 +0100 (CET)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 361396866B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 17 Feb 2025 11:02:19 +0100 (CET)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:b47f:e20a:c4c7:ece1])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id F1F7A842;\n\tMon, 17 Feb 2025 11:00:57 +0100 (CET)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Aj81ANCs\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1739786458;\n\tbh=Joq1eQL/Prjqoq7XSKLWjPq1On6oyzRirl6eiup8ERM=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Aj81ANCshS5qcRg+kLOIVrQ3c9YJ3pKpU8zp7rWJLCitoUg6HY9rLaph+/RMutYzh\n\tw30mU7RPUaxvkFpgTVxpTprJKShqLHv5o9rHBfPgG9vuOnkyjOjcp5pHO66f8uIGS2\n\tePn3IzzPa9cuxdvUQpQkg3v0hjc9n51II6Z1UxfQ=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH 04/10] ipa: rkisp1: Refactor automatic/manual structure in\n\tIPAActiveState",
        "Date": "Mon, 17 Feb 2025 11:01:45 +0100",
        "Message-ID": "<20250217100203.297894-5-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20250217100203.297894-1-stefan.klug@ideasonboard.com>",
        "References": "<20250217100203.297894-1-stefan.klug@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "Swap gains and automatic/manual in the IPAActiveState structure. This is\nin preparation to adding another member, which is easier in this\nstructure.  This is also in sync with how it is modeled in agc. This\npatch contains no functional changes.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n---\n src/ipa/rkisp1/algorithms/awb.cpp | 24 ++++++++++++------------\n src/ipa/rkisp1/ipa_context.h      |  9 ++++++---\n 2 files changed, 18 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\nindex cffaa06a22c1..147277c98bb2 100644\n--- a/src/ipa/rkisp1/algorithms/awb.cpp\n+++ b/src/ipa/rkisp1/algorithms/awb.cpp\n@@ -74,8 +74,8 @@ 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.gains.manual = RGB<double>{ 1.0 };\n-\tcontext.activeState.awb.gains.automatic = RGB<double>{ 1.0 };\n+\tcontext.activeState.awb.manual.gains = RGB<double>{ 1.0 };\n+\tcontext.activeState.awb.automatic.gains = RGB<double>{ 1.0 };\n \tcontext.activeState.awb.autoEnabled = true;\n \tcontext.activeState.awb.temperatureK = kDefaultColourTemperature;\n \n@@ -120,8 +120,8 @@ void Awb::queueRequest(IPAContext &context,\n \tconst auto &colourTemperature = controls.get(controls::ColourTemperature);\n \tbool update = false;\n \tif (colourGains) {\n-\t\tawb.gains.manual.r() = (*colourGains)[0];\n-\t\tawb.gains.manual.b() = (*colourGains)[1];\n+\t\tawb.manual.gains.r() = (*colourGains)[0];\n+\t\tawb.manual.gains.b() = (*colourGains)[1];\n \t\t/*\n \t\t * \\todo: Colour temperature reported in metadata is now\n \t\t * incorrect, as we can't deduce the temperature from the gains.\n@@ -130,17 +130,17 @@ void Awb::queueRequest(IPAContext &context,\n \t\tupdate = true;\n \t} else if (colourTemperature && colourGainCurve_) {\n \t\tconst auto &gains = colourGainCurve_->getInterpolated(*colourTemperature);\n-\t\tawb.gains.manual.r() = gains[0];\n-\t\tawb.gains.manual.b() = gains[1];\n+\t\tawb.manual.gains.r() = gains[0];\n+\t\tawb.manual.gains.b() = gains[1];\n \t\tawb.temperatureK = *colourTemperature;\n \t\tupdate = true;\n \t}\n \n \tif (update)\n \t\tLOG(RkISP1Awb, Debug)\n-\t\t\t<< \"Set colour gains to \" << awb.gains.manual;\n+\t\t\t<< \"Set colour gains to \" << awb.manual.gains;\n \n-\tframeContext.awb.gains = awb.gains.manual;\n+\tframeContext.awb.gains = awb.manual.gains;\n \tframeContext.awb.temperatureK = awb.temperatureK;\n }\n \n@@ -155,7 +155,7 @@ void Awb::prepare(IPAContext &context, const uint32_t frame,\n \t * most up-to-date automatic values we can read.\n \t */\n \tif (frameContext.awb.autoEnabled) {\n-\t\tframeContext.awb.gains = context.activeState.awb.gains.automatic;\n+\t\tframeContext.awb.gains = context.activeState.awb.automatic.gains;\n \t\tframeContext.awb.temperatureK = context.activeState.awb.temperatureK;\n \t}\n \n@@ -332,14 +332,14 @@ void Awb::process(IPAContext &context,\n \n \t/* Filter the values to avoid oscillations. */\n \tdouble speed = 0.2;\n-\tgains = gains * speed + activeState.awb.gains.automatic * (1 - speed);\n+\tgains = gains * speed + activeState.awb.automatic.gains * (1 - speed);\n \n-\tactiveState.awb.gains.automatic = gains;\n+\tactiveState.awb.automatic.gains = gains;\n \n \tLOG(RkISP1Awb, Debug)\n \t\t<< std::showpoint\n \t\t<< \"Means \" << rgbMeans << \", gains \"\n-\t\t<< activeState.awb.gains.automatic << \", temp \"\n+\t\t<< activeState.awb.automatic.gains << \", temp \"\n \t\t<< activeState.awb.temperatureK << \"K\";\n }\n \ndiff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h\nindex c765b928a55f..1a374c96cd1a 100644\n--- a/src/ipa/rkisp1/ipa_context.h\n+++ b/src/ipa/rkisp1/ipa_context.h\n@@ -89,9 +89,12 @@ struct IPAActiveState {\n \n \tstruct {\n \t\tstruct {\n-\t\t\tRGB<double> manual;\n-\t\t\tRGB<double> automatic;\n-\t\t} gains;\n+\t\t\tRGB<double> gains;\n+\t\t} manual;\n+\n+\t\tstruct {\n+\t\t\tRGB<double> gains;\n+\t\t} automatic;\n \n \t\tunsigned int temperatureK;\n \t\tbool autoEnabled;\n",
    "prefixes": [
        "04/10"
    ]
}