[{"id":37948,"web_url":"https://patchwork.libcamera.org/comment/37948/","msgid":"<4a202b61-a470-4333-9a4a-3e2fef047274@collabora.com>","date":"2026-01-26T15:13:31","subject":"Re: [PATCH v4 11/15] libcamera: ipa: simple: Use float type for\n\tadjustment controls","submitter":{"id":140,"url":"https://patchwork.libcamera.org/api/people/140/","name":"Robert Mader","email":"robert.mader@collabora.com"},"content":"Reviewed-by: Robert Mader <robert.mader@collabora.com>\n\nOn 22.01.26 17:19, Milan Zamazal wrote:\n> control_ids.h defines the contrast type as float, let's use the same in\n> simple IPA, instead of double.  Saturation and gamma already use float,\n> except for the knobs initializers, let's use float for the knobs too.\n>\n> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>   include/libcamera/internal/software_isp/debayer_params.h | 2 +-\n>   src/ipa/simple/algorithms/adjust.cpp                     | 4 ++--\n>   src/ipa/simple/algorithms/lut.cpp                        | 2 +-\n>   src/ipa/simple/ipa_context.h                             | 8 ++++----\n>   4 files changed, 8 insertions(+), 8 deletions(-)\n>\n> diff --git a/include/libcamera/internal/software_isp/debayer_params.h b/include/libcamera/internal/software_isp/debayer_params.h\n> index 256c7d43d..2d69bd295 100644\n> --- a/include/libcamera/internal/software_isp/debayer_params.h\n> +++ b/include/libcamera/internal/software_isp/debayer_params.h\n> @@ -59,7 +59,7 @@ struct DebayerParams {\n>   \tMatrix<float, 3, 3> ccm;\n>   \tRGB<float> blackLevel;\n>   \tfloat gamma;\n> -\tdouble contrastExp;\n> +\tfloat contrastExp;\n>   };\n>   \n>   } /* namespace libcamera */\n> diff --git a/src/ipa/simple/algorithms/adjust.cpp b/src/ipa/simple/algorithms/adjust.cpp\n> index a067f7b84..a8b7c5ab6 100644\n> --- a/src/ipa/simple/algorithms/adjust.cpp\n> +++ b/src/ipa/simple/algorithms/adjust.cpp\n> @@ -34,8 +34,8 @@ int Adjust::configure(IPAContext &context,\n>   \t\t      [[maybe_unused]] const IPAConfigInfo &configInfo)\n>   {\n>   \tcontext.activeState.knobs.gamma = kDefaultGamma;\n> -\tcontext.activeState.knobs.contrast = std::optional<double>();\n> -\tcontext.activeState.knobs.saturation = std::optional<double>();\n> +\tcontext.activeState.knobs.contrast = std::optional<float>();\n> +\tcontext.activeState.knobs.saturation = std::optional<float>();\n>   \n>   \treturn 0;\n>   }\n> diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp\n> index d8e92c613..fd442259a 100644\n> --- a/src/ipa/simple/algorithms/lut.cpp\n> +++ b/src/ipa/simple/algorithms/lut.cpp\n> @@ -40,7 +40,7 @@ void Lut::updateGammaTable(IPAContext &context)\n>   \tconst auto gamma = 1.0 / context.activeState.knobs.gamma;\n>   \tconst auto contrast = context.activeState.knobs.contrast.value_or(1.0);\n>   \t/* Convert 0..2 to 0..infinity; avoid actual inifinity at tan(pi/2) */\n> -\tdouble contrastExp = tan(std::clamp(contrast * M_PI_4, 0.0, M_PI_2 - 0.00001));\n> +\tfloat contrastExp = tan(std::clamp(contrast * M_PI_4, 0.0, M_PI_2 - 0.00001));\n>   \n>   \tif (!context.gpuIspEnabled) {\n>   \t\tauto &gammaTable = context.activeState.gamma.gammaTable;\n> diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/simple/ipa_context.h\n> index eeade9d35..293e35b71 100644\n> --- a/src/ipa/simple/ipa_context.h\n> +++ b/src/ipa/simple/ipa_context.h\n> @@ -58,8 +58,8 @@ struct IPAActiveState {\n>   \t\tstd::array<double, kGammaLookupSize> gammaTable;\n>   \t\tuint8_t blackLevel;\n>   \t\tfloat gamma;\n> -\t\tdouble contrast;\n> -\t\tdouble contrastExp;\n> +\t\tfloat contrast;\n> +\t\tfloat contrastExp;\n>   \t} gamma;\n>   \n>   \tMatrix<float, 3, 3> combinedMatrix;\n> @@ -68,7 +68,7 @@ struct IPAActiveState {\n>   \tstruct {\n>   \t\tfloat gamma;\n>   \t\t/* 0..2 range, 1.0 = normal */\n> -\t\tstd::optional<double> contrast;\n> +\t\tstd::optional<float> contrast;\n>   \t\tstd::optional<float> saturation;\n>   \t} knobs;\n>   };\n> @@ -87,7 +87,7 @@ struct IPAFrameContext : public FrameContext {\n>   \t} gains;\n>   \n>   \tfloat gamma;\n> -\tstd::optional<double> contrast;\n> +\tstd::optional<float> contrast;\n>   \tstd::optional<float> saturation;\n>   };\n>","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 42EF1C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 26 Jan 2026 15:13:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C66B661FC7;\n\tMon, 26 Jan 2026 16:13:45 +0100 (CET)","from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com\n\t[136.143.188.12])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 88EE961A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jan 2026 16:13:43 +0100 (CET)","by mx.zohomail.com with SMTPS id 1769440413972552.1018970917764;\n\tMon, 26 Jan 2026 07:13:33 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=collabora.com\n\theader.i=robert.mader@collabora.com header.b=\"QQ7AopDM\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1769440419; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=Gbhqf5baOd1fPoaBKoSbjNfiogLeVKFRPfAYZpNByG+iWNKj9HbJJA82BZisSkVCGjOjRtfGGBEN83520b2JbUgXDOZUPHSQq1F4olf0Psyk95Tl0DpMqYLiXz27pO1HHTcPqXG4L99o97IMEDJSGZ4H3aQOcmKMvVRBkCA4ITc=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1769440419;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=VQlP/H2ELAwxryGJcxWHa4hxGjSI8jBznXVsbI7A99M=; \n\tb=RgVdyhReIz8mXkbWp2phBYRRclMRDwDFSatjB7VwBOqFPJsqRv1z1q9tiGg/hbWHrW7TPEUeWTuajZc0NgUXmnneZtt4T4drr5EizXKudMZTsv25pyXH9aEMyUyISHepOS1qnLE/HPsfCKBqJ4KRY1GObA+/FJHCHUhGnt2mzZ4=","ARC-Authentication-Results":"i=1; mx.zohomail.com;\n\tdkim=pass  header.i=collabora.com;\n\tspf=pass  smtp.mailfrom=robert.mader@collabora.com;\n\tdmarc=pass header.from=<robert.mader@collabora.com>","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1769440419;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=VQlP/H2ELAwxryGJcxWHa4hxGjSI8jBznXVsbI7A99M=;\n\tb=QQ7AopDMzWG/lq87vooCNxYTMSycRX2OwaAY/tQjociFh/g0ydYFG786a9kK+oEK\n\tpVsw1VygwZ00gCWQ/3L2gSOak9VFjBTAw0tJsdFrMUkw29RYGZ8EnxCKFG3biVj5nxa\n\tv5nxrv7Iw/dDraCh86zivkBLWDAkrEaHIc1hisoY=","Message-ID":"<4a202b61-a470-4333-9a4a-3e2fef047274@collabora.com>","Date":"Mon, 26 Jan 2026 16:13:31 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 11/15] libcamera: ipa: simple: Use float type for\n\tadjustment controls","To":"libcamera-devel@lists.libcamera.org","References":"<20260122161935.208562-1-mzamazal@redhat.com>\n\t<20260122161935.208562-12-mzamazal@redhat.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<20260122161935.208562-12-mzamazal@redhat.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>"}}]