[{"id":30396,"web_url":"https://patchwork.libcamera.org/comment/30396/","msgid":"<35797f68-efff-4850-9b7c-df0261391e87@ideasonboard.com>","date":"2024-07-13T15:31:53","subject":"Re: [PATCH v2 10/19] libcamera: software_isp: Call\n\tAlgorithm::configure","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Milan,\n\nThank you for the patch\n\nOn 03/07/24 11:21 pm, Milan Zamazal wrote:\n> This patch adds Algorithm::configure call for the defined algorithms.\n> This is preparation only since there are currently no Algorithm based\n> algorithms defined.\n>\n> A part of this change is passing IPAConfigInfo instead of ControlInfoMap\n> to configure() calls as this is what Algorithm::configure expects.\n>\n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>   .../libcamera/internal/software_isp/software_isp.h   |  2 +-\n>   include/libcamera/ipa/soft.mojom                     |  6 +++++-\n>   src/ipa/simple/module.h                              |  4 +++-\n>   src/ipa/simple/soft_simple.cpp                       | 12 +++++++++---\n>   src/libcamera/pipeline/simple/simple.cpp             | 11 +++++++----\n>   src/libcamera/software_isp/software_isp.cpp          |  7 ++++---\n>   6 files changed, 29 insertions(+), 13 deletions(-)\n>\n> diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h\n> index 7365b49a..ff26b1d4 100644\n> --- a/include/libcamera/internal/software_isp/software_isp.h\n> +++ b/include/libcamera/internal/software_isp/software_isp.h\n> @@ -61,7 +61,7 @@ public:\n>   \n>   \tint configure(const StreamConfiguration &inputCfg,\n>   \t\t      const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,\n> -\t\t      const ControlInfoMap &sensorControls);\n> +\t\t      const ipa::soft::IPAConfigInfo &configInfo);\n>   \n>   \tint exportBuffers(unsigned int output, unsigned int count,\n>   \t\t\t  std::vector<std::unique_ptr<FrameBuffer>> *buffers);\n> diff --git a/include/libcamera/ipa/soft.mojom b/include/libcamera/ipa/soft.mojom\n> index bd48ece9..5e124016 100644\n> --- a/include/libcamera/ipa/soft.mojom\n> +++ b/include/libcamera/ipa/soft.mojom\n> @@ -8,6 +8,10 @@ module ipa.soft;\n>   \n>   import \"include/libcamera/ipa/core.mojom\";\n>   \n> +struct IPAConfigInfo {\n> +\tlibcamera.ControlInfoMap sensorControls;\n> +};\n> +\n>   interface IPASoftInterface {\n>   \tinit(libcamera.IPASettings settings,\n>   \t     libcamera.SharedFD fdStats,\n> @@ -16,7 +20,7 @@ interface IPASoftInterface {\n>   \t\t=> (int32 ret);\n>   \tstart() => (int32 ret);\n>   \tstop();\n> -\tconfigure(libcamera.ControlInfoMap sensorCtrlInfoMap)\n> +\tconfigure(IPAConfigInfo configInfo)\n>   \t\t=> (int32 ret);\n>   \n>   \t[async] processStats(uint32 frame, uint32 bufferId, libcamera.ControlList sensorControls);\n> diff --git a/src/ipa/simple/module.h b/src/ipa/simple/module.h\n> index 33a7d1db..8d4d53fb 100644\n> --- a/src/ipa/simple/module.h\n> +++ b/src/ipa/simple/module.h\n> @@ -9,6 +9,8 @@\n>   \n>   #include <libcamera/controls.h>\n>   \n> +#include <libcamera/ipa/soft_ipa_interface.h>\n> +\n>   #include \"libcamera/internal/software_isp/debayer_params.h\"\n>   #include \"libcamera/internal/software_isp/swisp_stats.h\"\n>   \n> @@ -20,7 +22,7 @@ namespace libcamera {\n>   \n>   namespace ipa::soft {\n>   \n> -using Module = ipa::Module<IPAContext, IPAFrameContext, ControlInfoMap,\n> +using Module = ipa::Module<IPAContext, IPAFrameContext, IPAConfigInfo,\n>   \t\t\t   DebayerParams, SwIspStats>;\n>   \n>   } /* namespace ipa::soft */\n> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n> index dd300387..49fff312 100644\n> --- a/src/ipa/simple/soft_simple.cpp\n> +++ b/src/ipa/simple/soft_simple.cpp\n> @@ -72,7 +72,7 @@ public:\n>   \t\t const SharedFD &fdStats,\n>   \t\t const SharedFD &fdParams,\n>   \t\t const ControlInfoMap &sensorInfoMap) override;\n> -\tint configure(const ControlInfoMap &sensorInfoMap) override;\n> +\tint configure(const IPAConfigInfo &configInfo) override;\n>   \n>   \tint start() override;\n>   \tvoid stop() override;\n> @@ -206,9 +206,9 @@ int IPASoftSimple::init(const IPASettings &settings,\n>   \treturn 0;\n>   }\n>   \n> -int IPASoftSimple::configure(const ControlInfoMap &sensorInfoMap)\n> +int IPASoftSimple::configure(const IPAConfigInfo &configInfo)\n>   {\n> -\tsensorInfoMap_ = sensorInfoMap;\n> +\tsensorInfoMap_ = configInfo.sensorControls;\n>   \n>   \tconst ControlInfo &exposureInfo = sensorInfoMap_.find(V4L2_CID_EXPOSURE)->second;\n>   \tconst ControlInfo &gainInfo = sensorInfoMap_.find(V4L2_CID_ANALOGUE_GAIN)->second;\n> @@ -247,6 +247,12 @@ int IPASoftSimple::configure(const ControlInfoMap &sensorInfoMap)\n>   \t\tagainMinStep_ = 1.0;\n>   \t}\n>   \n> +\tfor (auto const &algo : algorithms()) {\n> +\t\tint ret = algo->configure(context_, configInfo);\n> +\t\tif (ret)\n> +\t\t\treturn ret;\n> +\t}\n> +\n>   \tLOG(IPASoft, Info) << \"Exposure \" << exposureMin_ << \"-\" << exposureMax_\n>   \t\t\t   << \", gain \" << againMin_ << \"-\" << againMax_\n>   \t\t\t   << \" (\" << againMinStep_ << \")\";\n> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n> index e96674ae..e0c9fe5c 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -1294,10 +1294,13 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)\n>   \tinputCfg.stride = captureFormat.planes[0].bpl;\n>   \tinputCfg.bufferCount = kNumInternalBuffers;\n>   \n> -\treturn data->converter_\n> -\t\t       ? data->converter_->configure(inputCfg, outputCfgs)\n> -\t\t       : data->swIsp_->configure(inputCfg, outputCfgs,\n> -\t\t\t\t\t\t data->sensor_->controls());\n> +\tif (data->converter_)\n> +\t\treturn data->converter_->configure(inputCfg, outputCfgs);\n\nI guess {... } braces here as well. Other than that,\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n> +\telse {\n> +\t\tipa::soft::IPAConfigInfo configInfo;\n> +\t\tconfigInfo.sensorControls = data->sensor_->controls();\n> +\t\treturn data->swIsp_->configure(inputCfg, outputCfgs, configInfo);\n> +\t}\n>   }\n>   \n>   int SimplePipelineHandler::exportFrameBuffers(Camera *camera, Stream *stream,\n> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n> index 0f4b23d3..2bbb86da 100644\n> --- a/src/libcamera/software_isp/software_isp.cpp\n> +++ b/src/libcamera/software_isp/software_isp.cpp\n> @@ -224,16 +224,17 @@ SoftwareIsp::strideAndFrameSize(const PixelFormat &outputFormat, const Size &siz\n>    * \\brief Configure the SoftwareIsp object according to the passed in parameters\n>    * \\param[in] inputCfg The input configuration\n>    * \\param[in] outputCfgs The output configurations\n> - * \\param[in] sensorControls ControlInfoMap of the controls supported by the sensor\n> + * \\param[in] configInfo The IPA configuration data, received from the pipeline\n> + * handler\n>    * \\return 0 on success, a negative errno on failure\n>    */\n>   int SoftwareIsp::configure(const StreamConfiguration &inputCfg,\n>   \t\t\t   const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,\n> -\t\t\t   const ControlInfoMap &sensorControls)\n> +\t\t\t   const ipa::soft::IPAConfigInfo &configInfo)\n>   {\n>   \tASSERT(ipa_ && debayer_);\n>   \n> -\tint ret = ipa_->configure(sensorControls);\n> +\tint ret = ipa_->configure(configInfo);\n>   \tif (ret < 0)\n>   \t\treturn ret;\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 9E935BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 13 Jul 2024 15:31:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B4C6F6336F;\n\tSat, 13 Jul 2024 17:31:58 +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 CB2E463365\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Jul 2024 17:31:57 +0200 (CEST)","from [IPV6:2405:201:2015:f873:55d7:c02e:b2eb:ee3f] (unknown\n\t[IPv6:2405:201:2015:f873:55d7:c02e:b2eb:ee3f])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E7FD9D01;\n\tSat, 13 Jul 2024 17:31:21 +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=\"LTrSV4xv\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1720884682;\n\tbh=9WbRvEyW9HUIipduKCdUHL5K0V27RAimh5wMqjCtOk8=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=LTrSV4xvv9Q453LlCbsFK+rmL8aJXhP3nIDN6rOlBnIvcYC3mOqn7ilYOojln9AxG\n\tkhQ/VXeUa22s6ZRLxAMoXWvsMO5dYCembMmdpJUOk0cFpXyG3ajH1LMMRq2LD8DfFC\n\tf0pQTfA152pwuVHZNg8fy/oN/uyMpZuJ3q4bvsqM=","Message-ID":"<35797f68-efff-4850-9b7c-df0261391e87@ideasonboard.com>","Date":"Sat, 13 Jul 2024 21:01:53 +0530","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 10/19] libcamera: software_isp: Call\n\tAlgorithm::configure","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","References":"<20240703175119.1872585-1-mzamazal@redhat.com>\n\t<20240703175119.1872585-11-mzamazal@redhat.com>","Content-Language":"en-US","From":"Umang Jain <umang.jain@ideasonboard.com>","In-Reply-To":"<20240703175119.1872585-11-mzamazal@redhat.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":30399,"web_url":"https://patchwork.libcamera.org/comment/30399/","msgid":"<877cdpuvsp.fsf@redhat.com>","date":"2024-07-13T16:00:06","subject":"Re: [PATCH v2 10/19] libcamera: software_isp: Call\n\tAlgorithm::configure","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Umang,\n\nthank you for review.\n\nUmang Jain <umang.jain@ideasonboard.com> writes:\n\n> Hi Milan,\n>\n> Thank you for the patch\n>\n> On 03/07/24 11:21 pm, Milan Zamazal wrote:\n>> This patch adds Algorithm::configure call for the defined algorithms.\n>> This is preparation only since there are currently no Algorithm based\n>> algorithms defined.\n>>\n>> A part of this change is passing IPAConfigInfo instead of ControlInfoMap\n>> to configure() calls as this is what Algorithm::configure expects.\n>>\n>> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n>> ---\n>>   .../libcamera/internal/software_isp/software_isp.h   |  2 +-\n>>   include/libcamera/ipa/soft.mojom                     |  6 +++++-\n>>   src/ipa/simple/module.h                              |  4 +++-\n>>   src/ipa/simple/soft_simple.cpp                       | 12 +++++++++---\n>>   src/libcamera/pipeline/simple/simple.cpp             | 11 +++++++----\n>>   src/libcamera/software_isp/software_isp.cpp          |  7 ++++---\n>>   6 files changed, 29 insertions(+), 13 deletions(-)\n>>\n>> diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h\n>> index 7365b49a..ff26b1d4 100644\n>> --- a/include/libcamera/internal/software_isp/software_isp.h\n>> +++ b/include/libcamera/internal/software_isp/software_isp.h\n>> @@ -61,7 +61,7 @@ public:\n>>     \tint configure(const StreamConfiguration &inputCfg,\n>>   \t\t      const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,\n>> -\t\t      const ControlInfoMap &sensorControls);\n>> +\t\t      const ipa::soft::IPAConfigInfo &configInfo);\n>>     \tint exportBuffers(unsigned int output, unsigned int count,\n>>   \t\t\t  std::vector<std::unique_ptr<FrameBuffer>> *buffers);\n>> diff --git a/include/libcamera/ipa/soft.mojom b/include/libcamera/ipa/soft.mojom\n>> index bd48ece9..5e124016 100644\n>> --- a/include/libcamera/ipa/soft.mojom\n>> +++ b/include/libcamera/ipa/soft.mojom\n>> @@ -8,6 +8,10 @@ module ipa.soft;\n>>     import \"include/libcamera/ipa/core.mojom\";\n>>   +struct IPAConfigInfo {\n>> +\tlibcamera.ControlInfoMap sensorControls;\n>> +};\n>> +\n>>   interface IPASoftInterface {\n>>   \tinit(libcamera.IPASettings settings,\n>>   \t     libcamera.SharedFD fdStats,\n>> @@ -16,7 +20,7 @@ interface IPASoftInterface {\n>>   \t\t=> (int32 ret);\n>>   \tstart() => (int32 ret);\n>>   \tstop();\n>> -\tconfigure(libcamera.ControlInfoMap sensorCtrlInfoMap)\n>> +\tconfigure(IPAConfigInfo configInfo)\n>>   \t\t=> (int32 ret);\n>>     \t[async] processStats(uint32 frame, uint32 bufferId, libcamera.ControlList sensorControls);\n>> diff --git a/src/ipa/simple/module.h b/src/ipa/simple/module.h\n>> index 33a7d1db..8d4d53fb 100644\n>> --- a/src/ipa/simple/module.h\n>> +++ b/src/ipa/simple/module.h\n>> @@ -9,6 +9,8 @@\n>>     #include <libcamera/controls.h>\n>>   +#include <libcamera/ipa/soft_ipa_interface.h>\n>> +\n>>   #include \"libcamera/internal/software_isp/debayer_params.h\"\n>>   #include \"libcamera/internal/software_isp/swisp_stats.h\"\n>>   @@ -20,7 +22,7 @@ namespace libcamera {\n>>     namespace ipa::soft {\n>>   -using Module = ipa::Module<IPAContext, IPAFrameContext, ControlInfoMap,\n>> +using Module = ipa::Module<IPAContext, IPAFrameContext, IPAConfigInfo,\n>>   \t\t\t   DebayerParams, SwIspStats>;\n>>     } /* namespace ipa::soft */\n>> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n>> index dd300387..49fff312 100644\n>> --- a/src/ipa/simple/soft_simple.cpp\n>> +++ b/src/ipa/simple/soft_simple.cpp\n>> @@ -72,7 +72,7 @@ public:\n>>   \t\t const SharedFD &fdStats,\n>>   \t\t const SharedFD &fdParams,\n>>   \t\t const ControlInfoMap &sensorInfoMap) override;\n>> -\tint configure(const ControlInfoMap &sensorInfoMap) override;\n>> +\tint configure(const IPAConfigInfo &configInfo) override;\n>>     \tint start() override;\n>>   \tvoid stop() override;\n>> @@ -206,9 +206,9 @@ int IPASoftSimple::init(const IPASettings &settings,\n>>   \treturn 0;\n>>   }\n>>   -int IPASoftSimple::configure(const ControlInfoMap &sensorInfoMap)\n>> +int IPASoftSimple::configure(const IPAConfigInfo &configInfo)\n>>   {\n>> -\tsensorInfoMap_ = sensorInfoMap;\n>> +\tsensorInfoMap_ = configInfo.sensorControls;\n>>     \tconst ControlInfo &exposureInfo = sensorInfoMap_.find(V4L2_CID_EXPOSURE)->second;\n>>   \tconst ControlInfo &gainInfo = sensorInfoMap_.find(V4L2_CID_ANALOGUE_GAIN)->second;\n>> @@ -247,6 +247,12 @@ int IPASoftSimple::configure(const ControlInfoMap &sensorInfoMap)\n>>   \t\tagainMinStep_ = 1.0;\n>>   \t}\n>>   +\tfor (auto const &algo : algorithms()) {\n>> +\t\tint ret = algo->configure(context_, configInfo);\n>> +\t\tif (ret)\n>> +\t\t\treturn ret;\n>> +\t}\n>> +\n>>   \tLOG(IPASoft, Info) << \"Exposure \" << exposureMin_ << \"-\" << exposureMax_\n>>   \t\t\t   << \", gain \" << againMin_ << \"-\" << againMax_\n>>   \t\t\t   << \" (\" << againMinStep_ << \")\";\n>> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n>> index e96674ae..e0c9fe5c 100644\n>> --- a/src/libcamera/pipeline/simple/simple.cpp\n>> +++ b/src/libcamera/pipeline/simple/simple.cpp\n>> @@ -1294,10 +1294,13 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)\n>>   \tinputCfg.stride = captureFormat.planes[0].bpl;\n>>   \tinputCfg.bufferCount = kNumInternalBuffers;\n>>   -\treturn data->converter_\n>> -\t\t       ? data->converter_->configure(inputCfg, outputCfgs)\n>> -\t\t       : data->swIsp_->configure(inputCfg, outputCfgs,\n>> -\t\t\t\t\t\t data->sensor_->controls());\n>> +\tif (data->converter_)\n>> +\t\treturn data->converter_->configure(inputCfg, outputCfgs);\n>\n> I guess {... } braces here as well. Other than that,\n\nRight, I'll fix it.  There are always more reasons to love the\nsimplicity of Lisp syntax. :-)\n\n> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n>> +\telse {\n>> +\t\tipa::soft::IPAConfigInfo configInfo;\n>> +\t\tconfigInfo.sensorControls = data->sensor_->controls();\n>> +\t\treturn data->swIsp_->configure(inputCfg, outputCfgs, configInfo);\n>> +\t}\n>>   }\n>>     int SimplePipelineHandler::exportFrameBuffers(Camera *camera, Stream *stream,\n>> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n>> index 0f4b23d3..2bbb86da 100644\n>> --- a/src/libcamera/software_isp/software_isp.cpp\n>> +++ b/src/libcamera/software_isp/software_isp.cpp\n>> @@ -224,16 +224,17 @@ SoftwareIsp::strideAndFrameSize(const PixelFormat &outputFormat, const Size &siz\n>>    * \\brief Configure the SoftwareIsp object according to the passed in parameters\n>>    * \\param[in] inputCfg The input configuration\n>>    * \\param[in] outputCfgs The output configurations\n>> - * \\param[in] sensorControls ControlInfoMap of the controls supported by the sensor\n>> + * \\param[in] configInfo The IPA configuration data, received from the pipeline\n>> + * handler\n>>    * \\return 0 on success, a negative errno on failure\n>>    */\n>>   int SoftwareIsp::configure(const StreamConfiguration &inputCfg,\n>>   \t\t\t   const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,\n>> -\t\t\t   const ControlInfoMap &sensorControls)\n>> +\t\t\t   const ipa::soft::IPAConfigInfo &configInfo)\n>>   {\n>>   \tASSERT(ipa_ && debayer_);\n>>   -\tint ret = ipa_->configure(sensorControls);\n>> +\tint ret = ipa_->configure(configInfo);\n>>   \tif (ret < 0)\n>>   \t\treturn ret;\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 0EB78BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 13 Jul 2024 16:00:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2871F63371;\n\tSat, 13 Jul 2024 18:00:16 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6518063369\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Jul 2024 18:00:14 +0200 (CEST)","from mail-lf1-f70.google.com (mail-lf1-f70.google.com\n\t[209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-423-3Gw4Z_cTOfizHCuYraFbPw-1; Sat, 13 Jul 2024 12:00:10 -0400","by mail-lf1-f70.google.com with SMTP id\n\t2adb3069b0e04-52e969d34bbso3234930e87.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Jul 2024 09:00:10 -0700 (PDT)","from nuthatch (ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-a79bc7f1f2esm61407866b.129.2024.07.13.09.00.06\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSat, 13 Jul 2024 09:00:06 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"VQU89HdF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1720886413;\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\tin-reply-to:in-reply-to:references:references;\n\tbh=I/l3bYcGaBQXNvbrKF5jRlV5cwdsATz9MihGC+tnc90=;\n\tb=VQU89HdFfTcIIelZmakpP3SihvoSBtZZ7Bgn36zMmxABQ5HQ8G3dSrByHqGmxdSAIyk5GH\n\tfcW+shTnVSChW/iLi3eyMeojJ7fDY9k65rrL2tIuowIecqLE5JGw+FqsZ9vuZcYlfzslxT\n\tr+yWnhK9pldP6DV+WAyNZr+nJtOxHqA=","X-MC-Unique":"3Gw4Z_cTOfizHCuYraFbPw-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1720886409; x=1721491209;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=I/l3bYcGaBQXNvbrKF5jRlV5cwdsATz9MihGC+tnc90=;\n\tb=d4NOBuzb2zwrbDssAC3XVrah9BSS12Xfkm6NwWiu01h/zqsn1T8RVVz96de8CKd1H/\n\t0IUQsTAmej7jN4cbNAce+FFRLCCbMByH3yJXOyS+D8OoP0ajDQWIQzyAORhtpgkmJnVf\n\tEXSCdV1etiMOBW9641niMvrEShM2MUdUiZx8D7tCTeykaE8StjAPtEyMxI0MXiUyuy5G\n\t2IQNGxpihE4hSsI5s07X9hf8ENYtDqwJHE/pGGzZQFtjuvrBnwmTqR15EtMFJFh8+QXQ\n\tUhNcH/8DuTyvO2FeJkSpxMNToMkCl7JR1mPn9Leaq5YcTzTy3p+HouigTZdYd8ThMiAA\n\tBIpg==","X-Gm-Message-State":"AOJu0Yy5GxQgigbbn+NyPsSM6pKSicgg7KdxpkFqd4dnywqe5QNPpUQw\n\tZousfJOmLkGiWiiZnfD20ku9YAYGhuK8qLXZoXdQGRfMJiMeSE0gsnanjj3Y10styiurA+anWyK\n\tcWAVLGu7/Y/A+IqAfx/yiCbXDPw9Eic5z0bKhRl8uqVfe9tP+ExOibQYWZmER37Z85C1//8lQ0x\n\tZJ5mbDKN0qzDlnnWV5eOhRrUdAQQrrwsXWylwgsuiK9dwSIaqFLpQESe8=","X-Received":["by 2002:ac2:46d8:0:b0:52e:9b2f:c313 with SMTP id\n\t2adb3069b0e04-52eb99954d3mr7906638e87.22.1720886408711; \n\tSat, 13 Jul 2024 09:00:08 -0700 (PDT)","by 2002:ac2:46d8:0:b0:52e:9b2f:c313 with SMTP id\n\t2adb3069b0e04-52eb99954d3mr7906604e87.22.1720886407176; \n\tSat, 13 Jul 2024 09:00:07 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IHqajI1kON7aBwo7MrIEZC/l7R4KTaNGeJlNB0s0xKNQXIFus4ROzo5fPu4NhMRE09j7zwF3w==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 10/19] libcamera: software_isp: Call\n\tAlgorithm::configure","In-Reply-To":"<35797f68-efff-4850-9b7c-df0261391e87@ideasonboard.com> (Umang\n\tJain's message of \"Sat, 13 Jul 2024 21:01:53 +0530\")","References":"<20240703175119.1872585-1-mzamazal@redhat.com>\n\t<20240703175119.1872585-11-mzamazal@redhat.com>\n\t<35797f68-efff-4850-9b7c-df0261391e87@ideasonboard.com>","Date":"Sat, 13 Jul 2024 18:00:06 +0200","Message-ID":"<877cdpuvsp.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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>"}}]