{"id":23131,"url":"https://patchwork.libcamera.org/api/1.1/patches/23131/?format=json","web_url":"https://patchwork.libcamera.org/patch/23131/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20250403154925.382973-16-stefan.klug@ideasonboard.com>","date":"2025-04-03T15:49:20","name":"[v3,15/16] ipa: rkisp1: awb: Take the CCM into account for the AWB gains calculation","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"414c4d8f281ce43cefd9aa50abf5c0972e2e1e5e","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/1.1/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/23131/mbox/","series":[{"id":5111,"url":"https://patchwork.libcamera.org/api/1.1/series/5111/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5111","date":"2025-04-03T15:49:05","name":"Some rkisp1 awb improvements","version":3,"mbox":"https://patchwork.libcamera.org/series/5111/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/23131/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/23131/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 7C950C327D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Apr 2025 15:50:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3A2B968AB7;\n\tThu,  3 Apr 2025 17:50:21 +0200 (CEST)","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 3F0D2689A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Apr 2025 17:50:20 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:6d9d:9854:3fc1:4bb2])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8BEA419DF;\n\tThu,  3 Apr 2025 17:48:26 +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=\"VecF87Wg\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1743695306;\n\tbh=Sbt6LwHK1YT9TZAYtQnDyRTKlwqAeTCuFXpew9fnwkY=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=VecF87WgMzr/Jm0R2j43rOW0MGfIQxVR7ZnYrZjeDMY0S5nZdKwoP0lmvhMzkGrEU\n\t7+VRsK7UjMOFqO7WjyMdHG3se8Et3mN3B/gVngzgtrsM7t4ZWVgVkMRXt7kL6DeE7p\n\tEgkK44+yjPBj0IGoq8By9QBXJWkxZtESTS8DD5yM=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"[PATCH v3 15/16] ipa: rkisp1: awb: Take the CCM into account for the\n\tAWB gains calculation","Date":"Thu,  3 Apr 2025 17:49:20 +0200","Message-ID":"<20250403154925.382973-16-stefan.klug@ideasonboard.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20250403154925.382973-1-stefan.klug@ideasonboard.com>","References":"<20250403154925.382973-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":"The AWB measurements are taken after the CCM. This can be seen by\nenabling debug logging on AWB, disabling AWB (stats will still be\nprocessed) and manually chaning the CCM.\n\nThis means that the estimated colour temperature and the corresponding\nCCM also lead to changed rgbMeans which in turn leads to oscillations.\nFix that by applying the inverse transform on the rgbMeans.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Improved commit message\n- Added comment in the code\n\nChanges in v3:\n- Fixed typo in comment\n---\n src/ipa/rkisp1/algorithms/awb.cpp | 6 ++++++\n 1 file changed, 6 insertions(+)","diff":"diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\nindex 47b29725af51..03449e87e1a0 100644\n--- a/src/ipa/rkisp1/algorithms/awb.cpp\n+++ b/src/ipa/rkisp1/algorithms/awb.cpp\n@@ -397,6 +397,12 @@ RGB<double> Awb::calculateRgbMeans(const IPAFrameContext &frameContext, const rk\n \t\trgbMeans = rgbMeans.max(0.0);\n \t}\n \n+\t/*\n+\t * The ISP computes the AWB means after applying the CCM. Apply the\n+\t * inverse as we want to get the raw means before the colour gains.\n+\t */\n+\trgbMeans = frameContext.ccm.ccm.inverse() * rgbMeans;\n+\n \t/*\n \t * The ISP computes the AWB means after applying the colour gains,\n \t * divide by the gains that were used to get the raw means from the\n","prefixes":["v3","15/16"]}