{"id":23645,"url":"https://patchwork.libcamera.org/api/1.1/patches/23645/?format=json","web_url":"https://patchwork.libcamera.org/patch/23645/","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":"<20250624171223.2181226-2-kieran.bingham@ideasonboard.com>","date":"2025-06-24T17:12:21","name":"[1/3] ipa: rkisp1: cproc: Report metadata","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"00157876f668ec250d6a24ce3560f078c46683b8","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/1.1/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/23645/mbox/","series":[{"id":5245,"url":"https://patchwork.libcamera.org/api/1.1/series/5245/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5245","date":"2025-06-24T17:12:20","name":"rkisp1: cproc - Metadata and Hue developments","version":1,"mbox":"https://patchwork.libcamera.org/series/5245/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/23645/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/23645/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 2ED58C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Jun 2025 17:12:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AF75668DEF;\n\tTue, 24 Jun 2025 19:12:30 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6B91468DDD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Jun 2025 19:12:27 +0200 (CEST)","from Monstersaurus.hippo-penny.ts.net\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A79383D5;\n\tTue, 24 Jun 2025 19:12:09 +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=\"tADlDAr+\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750785129;\n\tbh=4h/zOOYNTmEk+ptkmff2Xq2AtxC5eI7iSZg4FPiZPfU=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=tADlDAr+9Q9DJI42LYAP9Af+dT0W6PaUyzjOIyN5LYg2hkw3Odp23ss1un8gntZum\n\tfjSNvJzeLhMJ3eoe+ex5vc7FBv/2EtOWO6QuWTTLyQM7YUfhUVMcuKc8QU5YWloEpp\n\tP+9VD2nqM1X+mq+3mcYSzUiNZZ7c8eXZBmC66+00=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"\"van Veen, Stephan\" <stephan.vanveen@karlstorz.com>,\n\t\"Zenker, Sebastian\" <sebastian.zenker@karlstorz.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH 1/3] ipa: rkisp1: cproc: Report metadata","Date":"Tue, 24 Jun 2025 18:12:21 +0100","Message-ID":"<20250624171223.2181226-2-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.49.0","In-Reply-To":"<20250624171223.2181226-1-kieran.bingham@ideasonboard.com>","References":"<20250624171223.2181226-1-kieran.bingham@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":"From: \"van Veen, Stephan\" <stephan.vanveen@karlstorz.com>\n\nPresently the colour processing component exposes controls for\nbrightness, saturation, and contrast to the applications which are\nhandled and processed accordingly on the ISP.\n\nThe implementation lacks reporting the values that are set back to the\napplication.\n\nProvide the inverse conversion functions to convert the values applied\nand report them in the completed request metadata.\n\nSigned-off-by: van Veen, Stephan <stephan.vanveen@karlstorz.com>\nSigned-off-by: Zenker, Sebastian <sebastian.zenker@karlstorz.com>\n[Kieran: Refactor commit message, fix checkstyle warnings]\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/ipa/rkisp1/algorithms/cproc.cpp | 22 ++++++++++++++++++++++\n src/ipa/rkisp1/algorithms/cproc.h   |  4 ++++\n 2 files changed, 26 insertions(+)","diff":"diff --git a/src/ipa/rkisp1/algorithms/cproc.cpp b/src/ipa/rkisp1/algorithms/cproc.cpp\nindex d1fff6990d37..9213ee49b374 100644\n--- a/src/ipa/rkisp1/algorithms/cproc.cpp\n+++ b/src/ipa/rkisp1/algorithms/cproc.cpp\n@@ -44,11 +44,21 @@ int convertBrightness(const float v)\n \treturn std::clamp<int>(std::lround(v * 128), -128, 127);\n }\n \n+float convertBrightness(const int v)\n+{\n+\treturn static_cast<float>(v) / 128.0f;\n+}\n+\n int convertContrastOrSaturation(const float v)\n {\n \treturn std::clamp<int>(std::lround(v * 128), 0, 255);\n }\n \n+float convertContrastOrSaturation(const int v)\n+{\n+\treturn static_cast<float>(v) / 128.0f;\n+}\n+\n } /* namespace */\n \n /**\n@@ -153,6 +163,18 @@ void ColorProcessing::prepare([[maybe_unused]] IPAContext &context,\n \tconfig->sat = frameContext.cproc.saturation;\n }\n \n+/**\n+ * \\copydoc libcamera::ipa::Algorithm::process\n+ */\n+void ColorProcessing::process([[maybe_unused]] IPAContext &context, [[maybe_unused]] const uint32_t frame,\n+\t\t\t      IPAFrameContext &frameContext, [[maybe_unused]] const rkisp1_stat_buffer *stats,\n+\t\t\t      ControlList &metadata)\n+{\n+\tmetadata.set(controls::Brightness, convertBrightness(frameContext.cproc.brightness));\n+\tmetadata.set(controls::Contrast, convertContrastOrSaturation(frameContext.cproc.contrast));\n+\tmetadata.set(controls::Saturation, convertContrastOrSaturation(frameContext.cproc.saturation));\n+}\n+\n REGISTER_IPA_ALGORITHM(ColorProcessing, \"ColorProcessing\")\n \n } /* namespace ipa::rkisp1::algorithms */\ndiff --git a/src/ipa/rkisp1/algorithms/cproc.h b/src/ipa/rkisp1/algorithms/cproc.h\nindex fd38fd17e8bb..9b589ebd4ad7 100644\n--- a/src/ipa/rkisp1/algorithms/cproc.h\n+++ b/src/ipa/rkisp1/algorithms/cproc.h\n@@ -30,6 +30,10 @@ public:\n \tvoid prepare(IPAContext &context, const uint32_t frame,\n \t\t     IPAFrameContext &frameContext,\n \t\t     RkISP1Params *params) override;\n+\tvoid process(IPAContext &context, const uint32_t frame,\n+\t\t     IPAFrameContext &frameContext,\n+\t\t     const rkisp1_stat_buffer *stats,\n+\t\t     ControlList &metadata) override;\n };\n \n } /* namespace ipa::rkisp1::algorithms */\n","prefixes":["1/3"]}