Patch Detail
Show a patch.
GET /api/patches/21828/?format=api
{ "id": 21828, "url": "https://patchwork.libcamera.org/api/patches/21828/?format=api", "web_url": "https://patchwork.libcamera.org/patch/21828/", "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": "<20241107102508.48322-3-dan.scally@ideasonboard.com>", "date": "2024-11-07T10:25:04", "name": "[v2,2/6] ipa: ipu3: Use centralised libipa helpers", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "27d86d5a913ea46effbf7a7b4b72cacf0705fcee", "submitter": { "id": 156, "url": "https://patchwork.libcamera.org/api/people/156/?format=api", "name": "Dan Scally", "email": "dan.scally@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/21828/mbox/", "series": [ { "id": 4775, "url": "https://patchwork.libcamera.org/api/series/4775/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4775", "date": "2024-11-07T10:25:03", "name": "Centralise common functions in IPA modules", "version": 2, "mbox": "https://patchwork.libcamera.org/series/4775/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/21828/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/21828/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 E662CBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 7 Nov 2024 10:25:32 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E40FF6546C;\n\tThu, 7 Nov 2024 11:25:29 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D23306545A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 7 Nov 2024 11:25:24 +0100 (CET)", "from mail.ideasonboard.com\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E1AAB9FF;\n\tThu, 7 Nov 2024 11:25:15 +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=\"BsTeNKJ9\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1730975116;\n\tbh=Fw1mMHHo1lCVvD9PRfP7GwH3MQGnYJ9y17FrQ8rIAIg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=BsTeNKJ9h5tsCE/T27STiQ+jJmyy9D+2n71oa744Y85hRLZc74J1+5uKvL+yHbYdh\n\tdPNb40txzuwBTeT3pZg9xSDtHu2L/TzWELlHftuDCabGGHDnMKpGTH6ewPe/yjWm09\n\tALC6c6LXZQem0w0kFVfmyiTV7r/jetuieLNElrkM=", "From": "Daniel Scally <dan.scally@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "mike.rudenko@gmail.com,\n\tDaniel Scally <dan.scally@ideasonboard.com>", "Subject": "[PATCH v2 2/6] ipa: ipu3: Use centralised libipa helpers", "Date": "Thu, 7 Nov 2024 10:25:04 +0000", "Message-Id": "<20241107102508.48322-3-dan.scally@ideasonboard.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20241107102508.48322-1-dan.scally@ideasonboard.com>", "References": "<20241107102508.48322-1-dan.scally@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": "Use the centralised libipa helpers instead of open coding common\nfunctions.\n\nSigned-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n---\nChanges in v2:\n\n\t- Dropped the ipa:: prefix for function calls\n\n src/ipa/ipu3/algorithms/agc.cpp | 7 ++++---\n src/ipa/ipu3/algorithms/awb.cpp | 32 ++------------------------------\n src/ipa/ipu3/algorithms/awb.h | 1 -\n 3 files changed, 6 insertions(+), 34 deletions(-)", "diff": "diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\nindex c5f3d8f0..30a426bb 100644\n--- a/src/ipa/ipu3/algorithms/agc.cpp\n+++ b/src/ipa/ipu3/algorithms/agc.cpp\n@@ -17,6 +17,7 @@\n \n #include <libcamera/ipa/core_ipa_interface.h>\n \n+#include \"libipa/helpers.h\"\n #include \"libipa/histogram.h\"\n \n /**\n@@ -185,9 +186,9 @@ double Agc::estimateLuminance(double gain) const\n \t\tblueSum += std::min(std::get<2>(rgbTriples_[i]) * gain, 255.0);\n \t}\n \n-\tdouble ySum = redSum * rGain_ * 0.299\n-\t\t + greenSum * gGain_ * 0.587\n-\t\t + blueSum * bGain_ * 0.114;\n+\tdouble ySum = rec601LuminanceFromRGB(redSum * rGain_,\n+\t\t\t\t\t greenSum * gGain_,\n+\t\t\t\t\t blueSum * bGain_);\n \n \treturn ySum / (bdsGrid_.height * bdsGrid_.width) / 255;\n }\ndiff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp\nindex 4d6e3994..34284385 100644\n--- a/src/ipa/ipu3/algorithms/awb.cpp\n+++ b/src/ipa/ipu3/algorithms/awb.cpp\n@@ -13,6 +13,8 @@\n \n #include <libcamera/control_ids.h>\n \n+#include \"libipa/helpers.h\"\n+\n /**\n * \\file awb.h\n */\n@@ -301,36 +303,6 @@ void Awb::prepare(IPAContext &context,\n \tparams->use.acc_ccm = 1;\n }\n \n-/**\n- * The function estimates the correlated color temperature using\n- * from RGB color space input.\n- * In physics and color science, the Planckian locus or black body locus is\n- * the path or locus that the color of an incandescent black body would take\n- * in a particular chromaticity space as the blackbody temperature changes.\n- *\n- * If a narrow range of color temperatures is considered (those encapsulating\n- * daylight being the most practical case) one can approximate the Planckian\n- * locus in order to calculate the CCT in terms of chromaticity coordinates.\n- *\n- * More detailed information can be found in:\n- * https://en.wikipedia.org/wiki/Color_temperature#Approximation\n- */\n-uint32_t Awb::estimateCCT(double red, double green, double blue)\n-{\n-\t/* Convert the RGB values to CIE tristimulus values (XYZ) */\n-\tdouble X = (-0.14282) * (red) + (1.54924) * (green) + (-0.95641) * (blue);\n-\tdouble Y = (-0.32466) * (red) + (1.57837) * (green) + (-0.73191) * (blue);\n-\tdouble Z = (-0.68202) * (red) + (0.77073) * (green) + (0.56332) * (blue);\n-\n-\t/* Calculate the normalized chromaticity values */\n-\tdouble x = X / (X + Y + Z);\n-\tdouble y = Y / (X + Y + Z);\n-\n-\t/* Calculate CCT */\n-\tdouble n = (x - 0.3320) / (0.1858 - y);\n-\treturn 449 * n * n * n + 3525 * n * n + 6823.3 * n + 5520.33;\n-}\n-\n /* Generate an RGB vector with the average values for each zone */\n void Awb::generateZones()\n {\ndiff --git a/src/ipa/ipu3/algorithms/awb.h b/src/ipa/ipu3/algorithms/awb.h\nindex c0202823..a13c49ac 100644\n--- a/src/ipa/ipu3/algorithms/awb.h\n+++ b/src/ipa/ipu3/algorithms/awb.h\n@@ -75,7 +75,6 @@ private:\n \tvoid generateAwbStats(const ipu3_uapi_stats_3a *stats);\n \tvoid clearAwbStats();\n \tvoid awbGreyWorld();\n-\tuint32_t estimateCCT(double red, double green, double blue);\n \tstatic constexpr uint16_t threshold(float value);\n \tstatic constexpr uint16_t gainValue(double gain);\n \n", "prefixes": [ "v2", "2/6" ] }