[{"id":21241,"web_url":"https://patchwork.libcamera.org/comment/21241/","msgid":"<163784194081.3059017.4856917172982176496@Monstersaurus>","date":"2021-11-25T12:05:40","subject":"Re: [libcamera-devel] [PATCH 4/4] ipa: ipu3: agc: Introduce\n\tlineDuration in IPASessionConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Jean-Michel Hautbois (2021-11-25 10:21:43)\n> Instead of having a local cached value for line duration, store it in\n> the IPASessionConfiguration::agc structure.\n\nin the ... sensor specific session configuration structure ;-)\n\n--\nKieran\n\n\n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> ---\n>  src/ipa/ipu3/algorithms/agc.cpp | 20 +++++++++++---------\n>  src/ipa/ipu3/algorithms/agc.h   |  2 --\n>  src/ipa/ipu3/ipa_context.cpp    |  3 +++\n>  src/ipa/ipu3/ipa_context.h      |  1 +\n>  4 files changed, 15 insertions(+), 11 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\n> index b822c79b..c463e688 100644\n> --- a/src/ipa/ipu3/algorithms/agc.cpp\n> +++ b/src/ipa/ipu3/algorithms/agc.cpp\n> @@ -70,7 +70,7 @@ static constexpr uint32_t kNumStartupFrames = 10;\n>  static constexpr double kRelativeLuminanceTarget = 0.16;\n>  \n>  Agc::Agc()\n> -       : frameCount_(0), lineDuration_(0s), filteredExposure_(0s)\n> +       : frameCount_(0), filteredExposure_(0s)\n>  {\n>  }\n>  \n> @@ -83,16 +83,18 @@ Agc::Agc()\n>   */\n>  int Agc::configure(IPAContext &context, const IPAConfigInfo &configInfo)\n>  {\n> -       stride_ = context.configuration.grid.stride;\n> +       IPASessionConfiguration &configuration = context.configuration;\n> +       IPAFrameContext &frameContext = context.frameContext;\n> +\n> +       stride_ = configuration.grid.stride;\n>  \n>         /* \\todo use the IPAContext to provide the limits */\n> -       lineDuration_ = configInfo.sensorInfo.lineLength * 1.0s\n> -                     / configInfo.sensorInfo.pixelRate;\n> +       configuration.agc.lineDuration = configInfo.sensorInfo.lineLength * 1.0s\n> +                                      / configInfo.sensorInfo.pixelRate;\n>  \n>         /* Configure the default exposure and gain. */\n> -       context.frameContext.agc.gain =\n> -               std::max(context.configuration.agc.minAnalogueGain, kMinAnalogueGain);\n> -       context.frameContext.agc.exposure = 10ms / lineDuration_;\n> +       frameContext.agc.gain = std::max(configuration.agc.minAnalogueGain, kMinAnalogueGain);\n> +       frameContext.agc.exposure = 10ms / configuration.agc.lineDuration;\n>  \n>         return 0;\n>  }\n> @@ -200,7 +202,7 @@ void Agc::computeExposure(IPAContext &context, double yGain, double iqMeanGain)\n>         /* extracted from Rpi::Agc::computeTargetExposure */\n>  \n>         /* Calculate the shutter time in seconds */\n> -       utils::Duration currentShutter = exposure * lineDuration_;\n> +       utils::Duration currentShutter = exposure * configuration.agc.lineDuration;\n>  \n>         /*\n>          * Update the exposure value for the next computation using the values\n> @@ -245,7 +247,7 @@ void Agc::computeExposure(IPAContext &context, double yGain, double iqMeanGain)\n>                             << stepGain;\n>  \n>         /* Update the estimated exposure and gain. */\n> -       frameContext.agc.exposure = shutterTime / lineDuration_;\n> +       frameContext.agc.exposure = shutterTime / configuration.agc.lineDuration;\n>         frameContext.agc.gain = stepGain;\n>  }\n>  \n> diff --git a/src/ipa/ipu3/algorithms/agc.h b/src/ipa/ipu3/algorithms/agc.h\n> index d9f17e6f..ed997e67 100644\n> --- a/src/ipa/ipu3/algorithms/agc.h\n> +++ b/src/ipa/ipu3/algorithms/agc.h\n> @@ -42,8 +42,6 @@ private:\n>  \n>         uint64_t frameCount_;\n>  \n> -       utils::Duration lineDuration_;\n> -\n>         utils::Duration filteredExposure_;\n>  \n>         uint32_t stride_;\n> diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp\n> index 86794ac1..ace9c66f 100644\n> --- a/src/ipa/ipu3/ipa_context.cpp\n> +++ b/src/ipa/ipu3/ipa_context.cpp\n> @@ -84,6 +84,9 @@ namespace libcamera::ipa::ipu3 {\n>   *\n>   * \\var IPASessionConfiguration::agc.maxAnalogueGain\n>   * \\brief Maximum analogue gain supported with the configured sensor\n> + *\n> + * \\var IPASessionConfiguration::agc.lineDuration\n> + * \\brief Line duration in microseconds\n>   */\n>  \n>  /**\n> diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h\n> index c6dc0814..7696fd14 100644\n> --- a/src/ipa/ipu3/ipa_context.h\n> +++ b/src/ipa/ipu3/ipa_context.h\n> @@ -30,6 +30,7 @@ struct IPASessionConfiguration {\n>                 utils::Duration maxShutterSpeed;\n>                 double minAnalogueGain;\n>                 double maxAnalogueGain;\n> +               utils::Duration lineDuration;\n>         } agc;\n>  };\n>  \n> -- \n> 2.32.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 93830BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Nov 2021 12:05:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4CA996036F;\n\tThu, 25 Nov 2021 13:05:45 +0100 (CET)","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 D574560231\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Nov 2021 13:05:43 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9171290E;\n\tThu, 25 Nov 2021 13:05:43 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"hAdMpa/S\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1637841943;\n\tbh=VqmUZNE2bJTKxDIoQjHDNPoudU+qj6VhA/fwfY0aur0=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=hAdMpa/S2OLuaSl3bD9+H+F94Ci7+s4ttyste7iQlIsCuXimVrten+iDi2QmH7tLr\n\thYDGI3lnEXvRitYDXqH8i8QbJ57OtrsdNzQh85JtVqTAt7JovTFYisLVNDoDqiMZzS\n\te5Oyo4AGImBW+YvZB1WJkkR50YT96Kp5uWfcdVMw=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20211125102143.52556-5-jeanmichel.hautbois@ideasonboard.com>","References":"<20211125102143.52556-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211125102143.52556-5-jeanmichel.hautbois@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 25 Nov 2021 12:05:40 +0000","Message-ID":"<163784194081.3059017.4856917172982176496@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH 4/4] ipa: ipu3: agc: Introduce\n\tlineDuration in IPASessionConfiguration","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>"}}]