[{"id":39825,"web_url":"https://patchwork.libcamera.org/comment/39825/","msgid":"<amNa1z8DgY2OiqA8@zed>","date":"2026-07-24T12:32:37","subject":"Re: [RFC PATCH v2 15/43] ipa: libipa: agc_mean_luminance:\n\tconstraintClampGain(): Mark `const`","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Barnabás\n\nOn Thu, Jul 23, 2026 at 05:42:58PM +0200, Barnabás Pőcze wrote:\n> There is no reason not to have this member function as `const`. Change the\n> map lookup to use `at()` just like it is done for `calculateNewEv()`, with\n> the same requirement that validation is the job of the caller.\n>\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n>  src/ipa/libipa/agc_mean_luminance.cpp | 4 ++--\n>  src/ipa/libipa/agc_mean_luminance.h   | 2 +-\n>  2 files changed, 3 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp\n> index 083d67eb70..e8679c66be 100644\n> --- a/src/ipa/libipa/agc_mean_luminance.cpp\n> +++ b/src/ipa/libipa/agc_mean_luminance.cpp\n> @@ -539,7 +539,7 @@ double AgcMeanLuminance::estimateInitialGain(const Traits &traits) const\n>   */\n>  double AgcMeanLuminance::constraintClampGain(uint32_t constraintModeIndex,\n>  \t\t\t\t\t     const Histogram &hist,\n> -\t\t\t\t\t     double gain)\n> +\t\t\t\t\t     double gain) const\n>  {\n>  \tauto applyConstraint = [this, &gain, &hist](const AgcConstraint &constraint) {\n>  \t\tdouble lux = lux_;\n> @@ -569,7 +569,7 @@ double AgcMeanLuminance::constraintClampGain(uint32_t constraintModeIndex,\n>  \t\t}\n>  \t};\n>\n> -\tstd::vector<AgcConstraint> &constraints = constraintModes_[constraintModeIndex];\n> +\tconst std::vector<AgcConstraint> &constraints = constraintModes_.at(constraintModeIndex);\n\nIs it worth using find() to avoid an exception ? We should be rather\nsure that constraintModeIndex is in the map, so I'm not sure\n\nEither way\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\n>  \tstd::for_each(constraints.begin(), constraints.end(), applyConstraint);\n>\n>  \tstd::for_each(additionalConstraints_.begin(), additionalConstraints_.end(), applyConstraint);\n> diff --git a/src/ipa/libipa/agc_mean_luminance.h b/src/ipa/libipa/agc_mean_luminance.h\n> index eb9d6fec2b..9b82d97ab6 100644\n> --- a/src/ipa/libipa/agc_mean_luminance.h\n> +++ b/src/ipa/libipa/agc_mean_luminance.h\n> @@ -105,7 +105,7 @@ private:\n>  \tdouble estimateInitialGain(const Traits &traits) const;\n>  \tdouble constraintClampGain(uint32_t constraintModeIndex,\n>  \t\t\t\t   const Histogram &hist,\n> -\t\t\t\t   double gain);\n> +\t\t\t\t   double gain) const;\n>  \tutils::Duration filterExposure(utils::Duration exposureValue);\n>\n>  \tutils::Duration filteredExposure_;\n> --\n> 2.55.0\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 B20E3BDE4C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Jul 2026 12:32:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B206667EFC;\n\tFri, 24 Jul 2026 14:32:41 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C47EF67E89\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Jul 2026 14:32:40 +0200 (CEST)","from ideasonboard.com (93-46-82-201.ip106.fastwebnet.it\n\t[93.46.82.201])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 23131524;\n\tFri, 24 Jul 2026 14:31:39 +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=\"cCXaMePI\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784896299;\n\tbh=BjKbA0ICbgqIw8xBmv880qI4ZSebhfoqZQTyded5alA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cCXaMePIfdsnf5qtkqqvS62QF18XN17o1pFfBV8Dws/IMMRH+Tad8I35o4beZaZmf\n\tiRN5I6Eg3EwWbihxiQcOV3poySRpZEvVrTkOINPrMihDgU1wBpTmw3zqXgA7cIF4Pk\n\tqk2Nx4Wt1HlzzcoFBSqtPdJr+rYQLEgkLpr5QS1A=","Date":"Fri, 24 Jul 2026 14:32:37 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [RFC PATCH v2 15/43] ipa: libipa: agc_mean_luminance:\n\tconstraintClampGain(): Mark `const`","Message-ID":"<amNa1z8DgY2OiqA8@zed>","References":"<20260723154327.1357866-1-barnabas.pocze@ideasonboard.com>\n\t<20260723154327.1357866-16-barnabas.pocze@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260723154327.1357866-16-barnabas.pocze@ideasonboard.com>","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>"}},{"id":39826,"web_url":"https://patchwork.libcamera.org/comment/39826/","msgid":"<9dc081aa-baab-45e7-b727-d5065e35e836@ideasonboard.com>","date":"2026-07-24T12:35:27","subject":"Re: [RFC PATCH v2 15/43] ipa: libipa: agc_mean_luminance:\n\tconstraintClampGain(): Mark `const`","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 07. 24. 14:32 keltezéssel, Jacopo Mondi írta:\n> Hi Barnabás\n> \n> On Thu, Jul 23, 2026 at 05:42:58PM +0200, Barnabás Pőcze wrote:\n>> There is no reason not to have this member function as `const`. Change the\n>> map lookup to use `at()` just like it is done for `calculateNewEv()`, with\n>> the same requirement that validation is the job of the caller.\n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>>   src/ipa/libipa/agc_mean_luminance.cpp | 4 ++--\n>>   src/ipa/libipa/agc_mean_luminance.h   | 2 +-\n>>   2 files changed, 3 insertions(+), 3 deletions(-)\n>>\n>> diff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp\n>> index 083d67eb70..e8679c66be 100644\n>> --- a/src/ipa/libipa/agc_mean_luminance.cpp\n>> +++ b/src/ipa/libipa/agc_mean_luminance.cpp\n>> @@ -539,7 +539,7 @@ double AgcMeanLuminance::estimateInitialGain(const Traits &traits) const\n>>    */\n>>   double AgcMeanLuminance::constraintClampGain(uint32_t constraintModeIndex,\n>>   \t\t\t\t\t     const Histogram &hist,\n>> -\t\t\t\t\t     double gain)\n>> +\t\t\t\t\t     double gain) const\n>>   {\n>>   \tauto applyConstraint = [this, &gain, &hist](const AgcConstraint &constraint) {\n>>   \t\tdouble lux = lux_;\n>> @@ -569,7 +569,7 @@ double AgcMeanLuminance::constraintClampGain(uint32_t constraintModeIndex,\n>>   \t\t}\n>>   \t};\n>>\n>> -\tstd::vector<AgcConstraint> &constraints = constraintModes_[constraintModeIndex];\n>> +\tconst std::vector<AgcConstraint> &constraints = constraintModes_.at(constraintModeIndex);\n> \n> Is it worth using find() to avoid an exception ? We should be rather\n> sure that constraintModeIndex is in the map, so I'm not sure\n\nThe `exposureModeHelpers_` lookup also uses `.at()`, so I decided to do the same here as well.\n\n\n> \n> Either way\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n>>   \tstd::for_each(constraints.begin(), constraints.end(), applyConstraint);\n>>\n>>   \tstd::for_each(additionalConstraints_.begin(), additionalConstraints_.end(), applyConstraint);\n>> diff --git a/src/ipa/libipa/agc_mean_luminance.h b/src/ipa/libipa/agc_mean_luminance.h\n>> index eb9d6fec2b..9b82d97ab6 100644\n>> --- a/src/ipa/libipa/agc_mean_luminance.h\n>> +++ b/src/ipa/libipa/agc_mean_luminance.h\n>> @@ -105,7 +105,7 @@ private:\n>>   \tdouble estimateInitialGain(const Traits &traits) const;\n>>   \tdouble constraintClampGain(uint32_t constraintModeIndex,\n>>   \t\t\t\t   const Histogram &hist,\n>> -\t\t\t\t   double gain);\n>> +\t\t\t\t   double gain) const;\n>>   \tutils::Duration filterExposure(utils::Duration exposureValue);\n>>\n>>   \tutils::Duration filteredExposure_;\n>> --\n>> 2.55.0\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 997F8BDE17\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Jul 2026 12:35:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8FFEF67EFC;\n\tFri, 24 Jul 2026 14:35:32 +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 EC36E67E89\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Jul 2026 14:35:31 +0200 (CEST)","from [192.168.33.42] (185.182.215.156.nat.pool.zt.hu\n\t[185.182.215.156])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0A3DA524;\n\tFri, 24 Jul 2026 14:34:29 +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=\"p3t47xdA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784896470;\n\tbh=lfRjEJX3lvac5VM3TaZ/XKlSLDvDeLJJEyZT9NSr9Ew=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=p3t47xdALgBoOWyxjEJ8bCT7Bo7hvaDgremvDT6hdOmaC0CQ6Hn2BLMrDh/Evz8/T\n\t4gia7z+8h4w8LMLA/Ihgkpn9wX7xjHpztK3yvBAGR7HZ0fpaX0mYwOtctyMGx4n4u1\n\tZJkT0V8V8vO77RXWM84UMe4WQzX4IlQjxJGgfb3s=","Message-ID":"<9dc081aa-baab-45e7-b727-d5065e35e836@ideasonboard.com>","Date":"Fri, 24 Jul 2026 14:35:27 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 15/43] ipa: libipa: agc_mean_luminance:\n\tconstraintClampGain(): Mark `const`","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260723154327.1357866-1-barnabas.pocze@ideasonboard.com>\n\t<20260723154327.1357866-16-barnabas.pocze@ideasonboard.com>\n\t<amNa1z8DgY2OiqA8@zed>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<amNa1z8DgY2OiqA8@zed>","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>"}}]