{"id":21693,"url":"https://patchwork.libcamera.org/api/patches/21693/?format=json","web_url":"https://patchwork.libcamera.org/patch/21693/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20241018160638.936993-3-stefan.klug@ideasonboard.com>","date":"2024-10-18T16:06:31","name":"[v4,2/4] ipa: rkisp1: algorithms: awb: Check for correct stats type","commit_ref":"4c131dfa5cebd96f413cfe490a899ba10796e95f","pull_url":null,"state":"accepted","archived":false,"hash":"325ce0bfe42a1080492aea9d4a14a8e67628babf","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/21693/mbox/","series":[{"id":4722,"url":"https://patchwork.libcamera.org/api/series/4722/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4722","date":"2024-10-18T16:06:29","name":"A few small fixes","version":4,"mbox":"https://patchwork.libcamera.org/series/4722/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/21693/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/21693/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 63B85C32FE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 18 Oct 2024 16:06:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1472D65391;\n\tFri, 18 Oct 2024 18:06:51 +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 7DD8165390\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 18 Oct 2024 18:06:48 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:77a0:ddb9:22bf:b8d9])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A534021C;\n\tFri, 18 Oct 2024 18:05:04 +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=\"qb5EcVtA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1729267504;\n\tbh=bpoarOGtsRZjC2G9WSLK3uGLiW7jU/sVl8mPJoVgMA8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=qb5EcVtAI+mEI5GN5qUwH784zn6w69qBY8UkCvWY5kaCmM1l8OMSYt3zC6I8oLjQa\n\tdeBp0b8TMrbJ8h6GDwES773dYHfRkOFr9nqVdPFF9Vco7qXxUBVFe3WEUJmraRS/Ru\n\tPV359ErReuFwcEUGrD44m2CfctrLRQWDZk+d4EjU=","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>,\n\tPaul Elder <paul.elder@ideasonboard.com>","Subject":"[PATCH v4 2/4] ipa: rkisp1: algorithms: awb: Check for correct stats\n\ttype","Date":"Fri, 18 Oct 2024 18:06:31 +0200","Message-ID":"<20241018160638.936993-3-stefan.klug@ideasonboard.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20241018160638.936993-1-stefan.klug@ideasonboard.com>","References":"<20241018160638.936993-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":"Sometimes the ISP produces statistics only with a subset of statistic\ntypes being valid. It doesn't happen normally, but was observed in the\nwild. Check for the RKISP1_CIF_ISP_STAT_AWB bit to prevent using invalid\nor outdated data. As it doesn't happen regularly add an error message to\nget notified when it happens.\n\nFor simpler code structure, the ColourTemperature metadata entry gets\nwritten unconditionally and overwritten later if needed.\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>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n---\nChanges in v2:\n- Added error message\n- Made condition more readable\n- Collected tags\n---\n src/ipa/rkisp1/algorithms/awb.cpp | 10 +++++++---\n 1 file changed, 7 insertions(+), 3 deletions(-)","diff":"diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\nindex 955a9ff4a897..b3c00bef9b7e 100644\n--- a/src/ipa/rkisp1/algorithms/awb.cpp\n+++ b/src/ipa/rkisp1/algorithms/awb.cpp\n@@ -215,6 +215,12 @@ void Awb::process(IPAContext &context,\n \t\t\tstatic_cast<float>(frameContext.awb.gains.red),\n \t\t\tstatic_cast<float>(frameContext.awb.gains.blue)\n \t\t});\n+\tmetadata.set(controls::ColourTemperature, activeState.awb.temperatureK);\n+\n+\tif (!stats || !(stats->meas_type & RKISP1_CIF_ISP_STAT_AWB)) {\n+\t\tLOG(RkISP1Awb, Error) << \"AWB data is missing in statistics\";\n+\t\treturn;\n+\t}\n \n \tif (rgbMode_) {\n \t\tgreenMean = awb->awb_mean[0].mean_y_or_g;\n@@ -270,10 +276,8 @@ void Awb::process(IPAContext &context,\n \t * meaningfully calculate gains. Freeze the algorithm in that case.\n \t */\n \tif (redMean < kMeanMinThreshold && greenMean < kMeanMinThreshold &&\n-\t    blueMean < kMeanMinThreshold) {\n-\t\tmetadata.set(controls::ColourTemperature, activeState.awb.temperatureK);\n+\t    blueMean < kMeanMinThreshold)\n \t\treturn;\n-\t}\n \n \tactiveState.awb.temperatureK = estimateCCT(redMean, greenMean, blueMean);\n \n","prefixes":["v4","2/4"]}