[{"id":27159,"web_url":"https://patchwork.libcamera.org/comment/27159/","msgid":"<20230529124445.GC15292@pendragon.ideasonboard.com>","date":"2023-05-29T12:44:45","subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Mon, May 29, 2023 at 02:39:25PM +0200, Jacopo Mondi via libcamera-devel wrote:\n> As the sensor's analogue gain range is known, drop the arbitrary\n> maximum limit for the sensor analogue gain.\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nI'm pretty sure that as soon as we'll merge this patch we'll get a\nregression report and will need to implement proper AGC tuning. Oh well\n:-)\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/ipa/ipu3/algorithms/agc.cpp | 7 +++----\n>  1 file changed, 3 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\n> index b5309bdbea25..606a237a4a59 100644\n> --- a/src/ipa/ipu3/algorithms/agc.cpp\n> +++ b/src/ipa/ipu3/algorithms/agc.cpp\n> @@ -47,9 +47,8 @@ namespace ipa::ipu3::algorithms {\n>  \n>  LOG_DEFINE_CATEGORY(IPU3Agc)\n>  \n> -/* Limits for analogue gain values */\n> +/* Minimum limit for analogue gain value */\n>  static constexpr double kMinAnalogueGain = 1.0;\n> -static constexpr double kMaxAnalogueGain = 8.0;\n>  \n>  /* \\todo Honour the FrameDurationLimits control instead of hardcoding a limit */\n>  static constexpr utils::Duration kMaxShutterSpeed = 60ms;\n> @@ -97,10 +96,10 @@ int Agc::configure(IPAContext &context,\n>  \t\t\t\t    kMaxShutterSpeed);\n>  \n>  \tminAnalogueGain_ = std::max(configuration.agc.minAnalogueGain, kMinAnalogueGain);\n> -\tmaxAnalogueGain_ = std::min(configuration.agc.maxAnalogueGain, kMaxAnalogueGain);\n> +\tmaxAnalogueGain_ = configuration.agc.maxAnalogueGain;\n>  \n>  \t/* Configure the default exposure and gain. */\n> -\tactiveState.agc.gain = std::max(minAnalogueGain_, kMinAnalogueGain);\n> +\tactiveState.agc.gain = minAnalogueGain_;\n>  \tactiveState.agc.exposure = 10ms / configuration.sensor.lineDuration;\n>  \n>  \tframeCount_ = 0;","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 F08FEC3213\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 May 2023 12:44:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6DF92626F5;\n\tMon, 29 May 2023 14:44:45 +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 5A28B626F5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 May 2023 14:44:44 +0200 (CEST)","from pendragon.ideasonboard.com (om126255106133.24.openmobile.ne.jp\n\t[126.255.106.133])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8E6206D5;\n\tMon, 29 May 2023 14:44:23 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685364285;\n\tbh=wjGrYn3tLaO6YEjGiZQ0vdcfa909voIbwy/MYjYaoBE=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=jaq5ekdR06SEP61BmhpFp97n9CBAd+/cHgiYIsHSIk+YmF1w7vxR5qvRrH3xnGUlS\n\tzPDMQ9rhVvuZuTkDhl+14w3ZBxKU+xrGHvLNUb/RhgB+1Blf6rW5hAK+JGClJ+Sy34\n\ttJUlIicUq/RpUd5y2e45TE9CNN7auSMJeJxn+g7tiPVhG95PYTyWWUfVWBwsxlJTVc\n\tgVYBWrd3ym07yPgel92Bo4hlKsxQfCjP0kkm98tvowxcbefZ63C8Q/Drp02xij/fs1\n\tXeWLF8+Y035MiLGQa/nmruaEik1F6xMVZM8DPcD18y9LGialEX/wwyikDn08H3Caf0\n\tNzh8GHTzfMQMg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1685364264;\n\tbh=wjGrYn3tLaO6YEjGiZQ0vdcfa909voIbwy/MYjYaoBE=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=d1tP58meUCKJc0E6pqsM7Vnk7CeFkGKHrvxGDhMWWUePbsf62r1+BAYxEAzOHacBs\n\tlkVKsSQtz2EKrQ7xO1bkyvcssimwZtssHGGgKSmAjxvmENiuIN/xAeeWChOrKbcVns\n\tlSYkjdwGPU7I0QOeOErEQojijnZDsiDe1s4P7Vpc="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"d1tP58me\"; dkim-atps=neutral","Date":"Mon, 29 May 2023 15:44:45 +0300","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Message-ID":"<20230529124445.GC15292@pendragon.ideasonboard.com>","References":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27203,"web_url":"https://patchwork.libcamera.org/comment/27203/","msgid":"<378a26f8-564c-b6d8-72f8-aa92f65da25d@yoseli.org>","date":"2023-06-01T05:32:08","subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","submitter":{"id":127,"url":"https://patchwork.libcamera.org/api/people/127/","name":"Jean-Michel Hautbois","email":"jeanmichel.hautbois@yoseli.org"},"content":"Hi guys,\n\nOn 29/05/2023 14:44, Laurent Pinchart via libcamera-devel wrote:\n> Hi Jacopo,\n> \n> Thank you for the patch.\n> \n> On Mon, May 29, 2023 at 02:39:25PM +0200, Jacopo Mondi via libcamera-devel wrote:\n>> As the sensor's analogue gain range is known, drop the arbitrary\n>> maximum limit for the sensor analogue gain.\n>>\n>> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n> I'm pretty sure that as soon as we'll merge this patch we'll get a\n> regression report and will need to implement proper AGC tuning. Oh well\n> :-)\n\nThis limit was, if I recall correctly, set to limit the gain as we could \nfor instance have a driver (or sensor) setting a maximum of 16 while \nafter 8 it is not behaving correctly (hello Omnivision). On the sgo2, \nthe ov sensor is going full white for a too high gain (again, if I \nrecall correctly). One could argue this is a driver issue, but the \ndatasheet says it can do it.\n\nThe other reason was that multiplying by more than 8 is really a lot of \namplification for such sensors. Maybe having the possibility to add a \ntuning value for this would make sense (ie, having a maximum default \nwhich can be overridden) ?\n\nWait and see then, if there is a regression, this should be seen quite \neasily (just put your device in a black room :-D).\n\nJM\n\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n>> ---\n>>   src/ipa/ipu3/algorithms/agc.cpp | 7 +++----\n>>   1 file changed, 3 insertions(+), 4 deletions(-)\n>>\n>> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\n>> index b5309bdbea25..606a237a4a59 100644\n>> --- a/src/ipa/ipu3/algorithms/agc.cpp\n>> +++ b/src/ipa/ipu3/algorithms/agc.cpp\n>> @@ -47,9 +47,8 @@ namespace ipa::ipu3::algorithms {\n>>   \n>>   LOG_DEFINE_CATEGORY(IPU3Agc)\n>>   \n>> -/* Limits for analogue gain values */\n>> +/* Minimum limit for analogue gain value */\n>>   static constexpr double kMinAnalogueGain = 1.0;\n>> -static constexpr double kMaxAnalogueGain = 8.0;\n>>   \n>>   /* \\todo Honour the FrameDurationLimits control instead of hardcoding a limit */\n>>   static constexpr utils::Duration kMaxShutterSpeed = 60ms;\n>> @@ -97,10 +96,10 @@ int Agc::configure(IPAContext &context,\n>>   \t\t\t\t    kMaxShutterSpeed);\n>>   \n>>   \tminAnalogueGain_ = std::max(configuration.agc.minAnalogueGain, kMinAnalogueGain);\n>> -\tmaxAnalogueGain_ = std::min(configuration.agc.maxAnalogueGain, kMaxAnalogueGain);\n>> +\tmaxAnalogueGain_ = configuration.agc.maxAnalogueGain;\n>>   \n>>   \t/* Configure the default exposure and gain. */\n>> -\tactiveState.agc.gain = std::max(minAnalogueGain_, kMinAnalogueGain);\n>> +\tactiveState.agc.gain = minAnalogueGain_;\n>>   \tactiveState.agc.exposure = 10ms / configuration.sensor.lineDuration;\n>>   \n>>   \tframeCount_ = 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 2EFD8C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  1 Jun 2023 05:32:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 67E7B62722;\n\tThu,  1 Jun 2023 07:32:11 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::228])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4721360579\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  1 Jun 2023 07:32:09 +0200 (CEST)","by mail.gandi.net (Postfix) with ESMTPSA id AF36E1BF206;\n\tThu,  1 Jun 2023 05:32:08 +0000 (UTC)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685597531;\n\tbh=TiBo196a9WHii/0Rxb+Ll/KtgqD4f67YkYIghsRO0U8=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=q7uoFOdxtHGLhqzyLPTBtAUFtWVOHY5a5tgtFrsb6Onqa52/oQIdSNp3Hf7Xbg2nG\n\t1qmoK+/gRjbNspPtmQSjfAfTTJLGI1UMCy+9I0viy1KwmIHt1PbHR1CbFu4ukEVBzJ\n\tKFmpbKq2D1UCNJZU/Qsyph8mLAlZ8Hl43gpJaBXeRAA9rbAA+mTGDUv4P/j8PLgTnh\n\tpNgzjmP0U3gLsiyvgbo56hJTGpYUnyBGHmeZmN9MwbTIbzx9soxeIMtbKRXdsprxL9\n\t9GH1HiF1F3JYg8TKG7x+Eg6G4xQCCsui7RDBW/JnO7j8dRiMYhcR5X1LYxp5Lai4Je\n\tb4wLeWUzKOAgQ==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=yoseli.org; s=gm1;\n\tt=1685597529;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=bETQcHrH3bE2v+4ESuujXbnoyCj1dYZJvEG5bHCqdmE=;\n\tb=ezFKj2Pxz5aZmcNF8+Eck+EiCGtII343D21eMZkIvWlcJPmI4gWsaHQJNIxiRgG6oap46H\n\tQhoWyw4LUSNHpg8rkimmXLXBOIrj7WPwyXNBabVGO2iINYHpzM4yt9xRr2BCPa307CH9HV\n\taabItgIOw5mKWT9/ZEAnBRxRkfz2VQQYo4YwCeFk4tS+fMv/X0qVJUVEYzQoSu3PgDpTtC\n\tKaRmLwY/xd6QzuG+lLLaWuRYzKfaWDBQmZnWScJaQQkyFcqmlqjL/RDKgk7Y3izYCB0YoJ\n\tjGPW12aTUEvY6//Rwo5KoYMMwQY2gJ0rbxUJike+mVBGK5Ukn4BxgZ0RWaa/lQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=yoseli.org\n\theader.i=@yoseli.org header.b=\"ezFKj2Px\"; \n\tdkim-atps=neutral","X-GND-Sasl":["jeanmichel.hautbois@yoseli.org","jeanmichel.hautbois@yoseli.org","jeanmichel.hautbois@yoseli.org"],"Message-ID":"<378a26f8-564c-b6d8-72f8-aa92f65da25d@yoseli.org>","Date":"Thu, 1 Jun 2023 07:32:08 +0200","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.11.0","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","References":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>\n\t<20230529124445.GC15292@pendragon.ideasonboard.com>","In-Reply-To":"<20230529124445.GC15292@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","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>","From":"Jean-Michel Hautbois via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27205,"web_url":"https://patchwork.libcamera.org/comment/27205/","msgid":"<20230601072648.GB22609@pendragon.ideasonboard.com>","date":"2023-06-01T07:26:48","subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jean-Michel,\n\nOn Thu, Jun 01, 2023 at 07:32:08AM +0200, Jean-Michel Hautbois wrote:\n> On 29/05/2023 14:44, Laurent Pinchart via libcamera-devel wrote:\n> > On Mon, May 29, 2023 at 02:39:25PM +0200, Jacopo Mondi via libcamera-devel wrote:\n> >> As the sensor's analogue gain range is known, drop the arbitrary\n> >> maximum limit for the sensor analogue gain.\n> >>\n> >> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> > \n> > I'm pretty sure that as soon as we'll merge this patch we'll get a\n> > regression report and will need to implement proper AGC tuning. Oh well\n> > :-)\n> \n> This limit was, if I recall correctly, set to limit the gain as we could \n> for instance have a driver (or sensor) setting a maximum of 16 while \n> after 8 it is not behaving correctly (hello Omnivision). On the sgo2, \n> the ov sensor is going full white for a too high gain (again, if I \n> recall correctly). One could argue this is a driver issue, but the \n> datasheet says it can do it.\n\nRegardless of whether this is a hardware issue or a driver issue, it's\nan issue. I don't think a hardcoded gain in the IPA module is the right\nsolution though, if gains above a certain value don't work, we can\neither disallow that on the driver side, or have a sensor-specific\nmaximum in the camera sensor helpers.\n\n> The other reason was that multiplying by more than 8 is really a lot of \n> amplification for such sensors. Maybe having the possibility to add a \n> tuning value for this would make sense (ie, having a maximum default \n> which can be overridden) ?\n\nToo high gains will cause lots of noise, but again that is\ndevice-specific, and should thus be handled in the tuning data, no as a\nhardcoded maximum gain in the IPA module. Tuning is performed based on\nmaximum acceptable noise levels (hello ISO-12232), so we could even have\ndifferent tuning files for the same platform for different use cases.\n\n> Wait and see then, if there is a regression, this should be seen quite \n> easily (just put your device in a black room :-D).\n\nThat's a good idea. Jacopo, could you try this ?\n\n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > \n> >> ---\n> >>   src/ipa/ipu3/algorithms/agc.cpp | 7 +++----\n> >>   1 file changed, 3 insertions(+), 4 deletions(-)\n> >>\n> >> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\n> >> index b5309bdbea25..606a237a4a59 100644\n> >> --- a/src/ipa/ipu3/algorithms/agc.cpp\n> >> +++ b/src/ipa/ipu3/algorithms/agc.cpp\n> >> @@ -47,9 +47,8 @@ namespace ipa::ipu3::algorithms {\n> >>   \n> >>   LOG_DEFINE_CATEGORY(IPU3Agc)\n> >>   \n> >> -/* Limits for analogue gain values */\n> >> +/* Minimum limit for analogue gain value */\n> >>   static constexpr double kMinAnalogueGain = 1.0;\n> >> -static constexpr double kMaxAnalogueGain = 8.0;\n> >>   \n> >>   /* \\todo Honour the FrameDurationLimits control instead of hardcoding a limit */\n> >>   static constexpr utils::Duration kMaxShutterSpeed = 60ms;\n> >> @@ -97,10 +96,10 @@ int Agc::configure(IPAContext &context,\n> >>   \t\t\t\t    kMaxShutterSpeed);\n> >>   \n> >>   \tminAnalogueGain_ = std::max(configuration.agc.minAnalogueGain, kMinAnalogueGain);\n> >> -\tmaxAnalogueGain_ = std::min(configuration.agc.maxAnalogueGain, kMaxAnalogueGain);\n> >> +\tmaxAnalogueGain_ = configuration.agc.maxAnalogueGain;\n> >>   \n> >>   \t/* Configure the default exposure and gain. */\n> >> -\tactiveState.agc.gain = std::max(minAnalogueGain_, kMinAnalogueGain);\n> >> +\tactiveState.agc.gain = minAnalogueGain_;\n> >>   \tactiveState.agc.exposure = 10ms / configuration.sensor.lineDuration;\n> >>   \n> >>   \tframeCount_ = 0;","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 2E00EC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  1 Jun 2023 07:26:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9F900626FA;\n\tThu,  1 Jun 2023 09:26:53 +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 A125361EA6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  1 Jun 2023 09:26:51 +0200 (CEST)","from pendragon.ideasonboard.com (om126205251136.34.openmobile.ne.jp\n\t[126.205.251.136])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 49D71289;\n\tThu,  1 Jun 2023 09:26:27 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685604413;\n\tbh=CduafbNLjbSVJZ8KkA46a71ajJsKuDuZu24MgnNmRsA=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=ZAtmvBWDGNVyKmeLbmk/IAF5kJQfS9sUALzBCyYWo5dG/RFdzyhf16stVFcMPYL84\n\tNqM+LQUOznYRW50E34EWWc2ulXSmfUwsuzuT2vJD5s3K+W7z1ytPBdY4Y9rDGqH6n0\n\tltnxHxOniZiBMdhTt/mVsY2r9Mqbak1+g7ppGBXDHWkA+zjE2D/qtXDNP/8GxSvV2q\n\t8dpDVEsjl3nLLbEbJiyogQkxsEiJ1wOWGU3aMF1mpcwSL/ONshH0n6rLfOgOlU0VG9\n\tQDYCJ1Wm7nB9f7Ussr7/BFgDjkpteLhfjUL25aRML7ZdFYipbEaPdTTH81OrKQpGyH\n\tBlbeCAAkTAnsQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1685604389;\n\tbh=CduafbNLjbSVJZ8KkA46a71ajJsKuDuZu24MgnNmRsA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Q94yKxeEfiHZVmBLHZo1U6gD0n2/NC1hp+gxNS1phuot22Y8Pd3h7Besdz9XMBlY3\n\tEqBsP5Zk4IbrQC+1MyQW4rtC7Qvdhrbmy7AskXdI2TOgvrnbjIa0o6Qtc0AW0yoCie\n\tOTSzdvNcSqKJuF0uj7s8I2oje+YzCKonNp0rBOAk="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Q94yKxeE\"; dkim-atps=neutral","Date":"Thu, 1 Jun 2023 10:26:48 +0300","To":"Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>","Message-ID":"<20230601072648.GB22609@pendragon.ideasonboard.com>","References":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>\n\t<20230529124445.GC15292@pendragon.ideasonboard.com>\n\t<378a26f8-564c-b6d8-72f8-aa92f65da25d@yoseli.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<378a26f8-564c-b6d8-72f8-aa92f65da25d@yoseli.org>","Subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27281,"web_url":"https://patchwork.libcamera.org/comment/27281/","msgid":"<33bb7ae8-c39d-2a93-6e13-9374cf1d7fe5@ideasonboard.com>","date":"2023-06-06T14:54:48","subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","submitter":{"id":156,"url":"https://patchwork.libcamera.org/api/people/156/","name":"Dan Scally","email":"dan.scally@ideasonboard.com"},"content":"Hello\n\nOn 29/05/2023 13:39, Jacopo Mondi via libcamera-devel wrote:\n> As the sensor's analogue gain range is known, drop the arbitrary\n> maximum limit for the sensor analogue gain.\n>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\n\nI tested this on my Surface Go 2 and couldn't see any regressions from it. With the typo in the \nsubject line fixed:\n\n\nReviewed-and-tested-by: Daniel Scally <dan.scally@ideasonboard.com>\n\n\n\n> ---\n>   src/ipa/ipu3/algorithms/agc.cpp | 7 +++----\n>   1 file changed, 3 insertions(+), 4 deletions(-)\n>\n> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\n> index b5309bdbea25..606a237a4a59 100644\n> --- a/src/ipa/ipu3/algorithms/agc.cpp\n> +++ b/src/ipa/ipu3/algorithms/agc.cpp\n> @@ -47,9 +47,8 @@ namespace ipa::ipu3::algorithms {\n>   \n>   LOG_DEFINE_CATEGORY(IPU3Agc)\n>   \n> -/* Limits for analogue gain values */\n> +/* Minimum limit for analogue gain value */\n>   static constexpr double kMinAnalogueGain = 1.0;\n> -static constexpr double kMaxAnalogueGain = 8.0;\n>   \n>   /* \\todo Honour the FrameDurationLimits control instead of hardcoding a limit */\n>   static constexpr utils::Duration kMaxShutterSpeed = 60ms;\n> @@ -97,10 +96,10 @@ int Agc::configure(IPAContext &context,\n>   \t\t\t\t    kMaxShutterSpeed);\n>   \n>   \tminAnalogueGain_ = std::max(configuration.agc.minAnalogueGain, kMinAnalogueGain);\n> -\tmaxAnalogueGain_ = std::min(configuration.agc.maxAnalogueGain, kMaxAnalogueGain);\n> +\tmaxAnalogueGain_ = configuration.agc.maxAnalogueGain;\n>   \n>   \t/* Configure the default exposure and gain. */\n> -\tactiveState.agc.gain = std::max(minAnalogueGain_, kMinAnalogueGain);\n> +\tactiveState.agc.gain = minAnalogueGain_;\n>   \tactiveState.agc.exposure = 10ms / configuration.sensor.lineDuration;\n>   \n>   \tframeCount_ = 0;","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 49C99C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  6 Jun 2023 14:54:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 91D1E62722;\n\tTue,  6 Jun 2023 16:54:53 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D3E5062709\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  6 Jun 2023 16:54:51 +0200 (CEST)","from [192.168.0.43]\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 34BF9AB;\n\tTue,  6 Jun 2023 16:54:26 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1686063293;\n\tbh=8bpvezUNt8nA8PBAxf8pDu4P9dS3vXir4RDsEvOkwI4=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=HEvDGRmof8PS8Dvddrh8NSc/UW86z3+LlW/dfU36RVNEyH8ABbkh4GaBY551o2g9k\n\tR84Y6RaxMuzOiSHtTBNxomZJ/THqx5quRIpQK9dPeW4/EdpAmV56vQR0iiNqy7RHWs\n\tZDRdey5WXP90cjBmVGoT4Ku3iH9aLEY/v+ItkbjQaCyQnd8UozXe4WOZDdetZTA9ha\n\t5NPBjidYb3GqoV1UTkGhTyOnp+KBdVT/pAw1dZU9kwBZuCW4zsgTOxb0+gq58EPXOi\n\txK/9jUn5vyaOaHZqke4qrbZwSY25vn8/qUaMjJ5k4PvaCSt3uoUQ5Ov5tKp9KMOKxG\n\tMCmFPWmhtfqBw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1686063266;\n\tbh=8bpvezUNt8nA8PBAxf8pDu4P9dS3vXir4RDsEvOkwI4=;\n\th=Date:To:References:From:Subject:In-Reply-To:From;\n\tb=tWfLmC9dkMhWV884fKwpt0sKStWu0tjlV2+U5OlbekivCaooLXlMzDZfCKKBeEtof\n\t1lJlI0lUpABUhQVI3vjdDMfoC8gT9Zn7S4+cxGUGsde5nhUGkXubIIX1lROPv+gB+x\n\tczFhoQa36HBpN44fEFQJFji5/wPEU3wVVs+BJgIg="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"tWfLmC9d\"; dkim-atps=neutral","Message-ID":"<33bb7ae8-c39d-2a93-6e13-9374cf1d7fe5@ideasonboard.com>","Date":"Tue, 6 Jun 2023 15:54:48 +0100","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.11.0","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>","Content-Language":"en-US","In-Reply-To":"<20230529123926.74775-1-jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: ipu3: agc: Drop hard-codec\n\tanalogue gain max","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>","From":"Dan Scally via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Dan Scally <dan.scally@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]