[{"id":30153,"web_url":"https://patchwork.libcamera.org/comment/30153/","msgid":"<02316d28-9f7c-4208-8912-c70af8a66554@ideasonboard.com>","date":"2024-06-29T05:13:53","subject":"Re: [PATCH 13/19] libcamera: software_isp: Call Algorithm::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 26/06/24 12:50 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                              |  3 ++-\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, 28 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 8753c2fd..1ba9eb62 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 dad352ba..65d90bfa 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>           prepare(uint32 frame);\n> diff --git a/src/ipa/simple/module.h b/src/ipa/simple/module.h\n> index 21328ecd..e518e742 100644\n> --- a/src/ipa/simple/module.h\n> +++ b/src/ipa/simple/module.h\n> @@ -10,6 +10,7 @@\n>   #include <libcamera/controls.h>\n>   \n>   #include <libcamera/ipa/core_ipa_interface.h>\n> +#include <libcamera/ipa/soft_ipa_interface.h>\n\nI think the core_ipa_interface header can be (or should be dropped). It \nis already included as part of template for module_ipa_interface via:\nutils/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl\n\nOther IPAs (IPU3, RkISP1) also needs to be cleaned up, I'll try to \npropose a patch for them.\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n>   \n>   #include \"libcamera/internal/software_isp/debayer_params.h\"\n>   #include \"libcamera/internal/software_isp/swisp_stats.h\"\n> @@ -22,7 +23,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 514a9db5..7200abaf 100644\n> --- a/src/ipa/simple/soft_simple.cpp\n> +++ b/src/ipa/simple/soft_simple.cpp\n> @@ -73,7 +73,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> @@ -209,9 +209,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> @@ -250,6 +250,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 0fa9db38..a82d05f4 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -1288,10 +1288,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> +\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 ba3f1bae..1f176214 100644\n> --- a/src/libcamera/software_isp/software_isp.cpp\n> +++ b/src/libcamera/software_isp/software_isp.cpp\n> @@ -223,16 +223,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 62225BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 29 Jun 2024 05:14:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7AAF162C99;\n\tSat, 29 Jun 2024 07:13:59 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8A137619C7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Jun 2024 07:13:58 +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 CFE4A4B0;\n\tSat, 29 Jun 2024 07:13:32 +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=\"Z18f2u8U\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1719638013;\n\tbh=5Rzm9z2aFLqPvteRJVPempQKL7rV64b3byXUyzkroh0=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=Z18f2u8U4iKDpzz2JUnOjDJGzH0zi+csnEV3CsoNHkDlflbBFUG8QJlAFRUYyGj8J\n\tgdOW+chzLi1OJ3UbVhwJsk9fp03PWeq7sNLpgvWXb+6EqLF3dpLnHCuQlst21FE78k\n\trglRrcOz/0N6PLgY/pTkj68HtG+IyqJz4FGjUH5Q=","Message-ID":"<02316d28-9f7c-4208-8912-c70af8a66554@ideasonboard.com>","Date":"Sat, 29 Jun 2024 10:43:53 +0530","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 13/19] libcamera: software_isp: Call Algorithm::configure","Content-Language":"en-US","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","References":"<20240626072100.55497-1-mzamazal@redhat.com>\n\t<20240626072100.55497-14-mzamazal@redhat.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","In-Reply-To":"<20240626072100.55497-14-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":30281,"web_url":"https://patchwork.libcamera.org/comment/30281/","msgid":"<875xtmjsi8.fsf@redhat.com>","date":"2024-07-03T17:27:11","subject":"Re: [PATCH 13/19] libcamera: software_isp: Call Algorithm::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 26/06/24 12:50 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                              |  3 ++-\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, 28 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 8753c2fd..1ba9eb62 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 dad352ba..65d90bfa 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>>             prepare(uint32 frame);\n>> diff --git a/src/ipa/simple/module.h b/src/ipa/simple/module.h\n>> index 21328ecd..e518e742 100644\n>> --- a/src/ipa/simple/module.h\n>> +++ b/src/ipa/simple/module.h\n>> @@ -10,6 +10,7 @@\n>>   #include <libcamera/controls.h>\n>>     #include <libcamera/ipa/core_ipa_interface.h>\n>> +#include <libcamera/ipa/soft_ipa_interface.h>\n>\n> I think the core_ipa_interface header can be (or should be dropped). It is already included as part of\n> template for module_ipa_interface via:\n> utils/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl\n\nAnd I don't see anything from core_ipa_interface.h used here directly so\nI'll drop the include.\n\n> Other IPAs (IPU3, RkISP1) also needs to be cleaned up, I'll try to propose a patch for them.\n>\n> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n>>     #include \"libcamera/internal/software_isp/debayer_params.h\"\n>>   #include \"libcamera/internal/software_isp/swisp_stats.h\"\n>> @@ -22,7 +23,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 514a9db5..7200abaf 100644\n>> --- a/src/ipa/simple/soft_simple.cpp\n>> +++ b/src/ipa/simple/soft_simple.cpp\n>> @@ -73,7 +73,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>> @@ -209,9 +209,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>> @@ -250,6 +250,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 0fa9db38..a82d05f4 100644\n>> --- a/src/libcamera/pipeline/simple/simple.cpp\n>> +++ b/src/libcamera/pipeline/simple/simple.cpp\n>> @@ -1288,10 +1288,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>> +\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 ba3f1bae..1f176214 100644\n>> --- a/src/libcamera/software_isp/software_isp.cpp\n>> +++ b/src/libcamera/software_isp/software_isp.cpp\n>> @@ -223,16 +223,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 9E41ABD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Jul 2024 17:27:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9949462E22;\n\tWed,  3 Jul 2024 19:27:18 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3CE2862C95\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Jul 2024 19:27:17 +0200 (CEST)","from mail-ed1-f69.google.com (mail-ed1-f69.google.com\n\t[209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-84-u77sSgCcPl6KQ86Ve-Nrew-1; Wed, 03 Jul 2024 13:27:14 -0400","by mail-ed1-f69.google.com with SMTP id\n\t4fb4d7f45d1cf-58d152f7f67so690631a12.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 03 Jul 2024 10:27:14 -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\t4fb4d7f45d1cf-58614f3d3f1sm7286516a12.94.2024.07.03.10.27.12\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 03 Jul 2024 10:27:12 -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=\"CdBhLTO5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1720027636;\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=sj6ivLj5CCEeqZjmri+tmsmac+/KTrzXsnHsUuc62Mo=;\n\tb=CdBhLTO5ZWnA4MB7GTyNjzG6kMMl34DsXCMP/61Gn/Rp7XzGOr9AGwIV6do0nExMQIM/SR\n\tWniScfpIFsP+znIEYXQjH0jwqOGByyJXJJumErulh89fY000IRkm1EdmttEcZMMDS4fEL3\n\tEU6vDSkCavZTdHjpMmEognlEcwim9ZY=","X-MC-Unique":"u77sSgCcPl6KQ86Ve-Nrew-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1720027633; x=1720632433;\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=sj6ivLj5CCEeqZjmri+tmsmac+/KTrzXsnHsUuc62Mo=;\n\tb=C0izXvtHKwmqKW85QmfmpHcX/Txra4v09UhmKFUSOrVd6idmWhWidhiY9r76ANOZr2\n\tyRUKPIoF2Kiq7wNFN9IVGclol/J9fzK2iom4nM/i09ZrTHi+ZzbLTiR/6Jk2EJq+zzfF\n\tO2BCT4ooXFGNEUdzavVC8oqQAKbJPutc041zVqgczR2X04FG42k3iQVCpTbUJ0y+UasD\n\tuRPNV+QSyCE4lAJ8NAbGlKB48pJvuxoMMoAGCcQ5OrC8zx3FjnjLqs+swhr1VKGkMikt\n\tawR3jTgSVL9RoFVEChx3s+Cw/Z6kbnkCtCa1GtzVSgTLIwpbCy5TOObYnf71mMKiBMfA\n\to6Qg==","X-Gm-Message-State":"AOJu0YxjbGNspZKM1p6OgFMkzs3H0s6RFlfkcimGecZDTJrq29LHPKdy\n\tTEhzG9SavEDwkRYLtz81sbmzlgkntRWB8n3ChrPP+4z8i0fmxvHer+AsBdTDvgUYor18w61AicU\n\tFQTasJA58ux0evddJQHG8y7ajFQYgdYHHTQGQNyTBEn0qyxkZEfAtCA3AY2tcJyhUWTvlAAfiYj\n\tlLjPIo79k7v1U7lSm0COy65kaDK+E0uSiqh2/suYI00yz/mvZVYSAPeQ0=","X-Received":["by 2002:a05:6402:510e:b0:579:e6ff:c61f with SMTP id\n\t4fb4d7f45d1cf-5879f69c6afmr11367059a12.25.1720027633354; \n\tWed, 03 Jul 2024 10:27:13 -0700 (PDT)","by 2002:a05:6402:510e:b0:579:e6ff:c61f with SMTP id\n\t4fb4d7f45d1cf-5879f69c6afmr11367043a12.25.1720027632910; \n\tWed, 03 Jul 2024 10:27:12 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IFVyIylyAD8tsSM0I1C/gMHmSM43dE9ZNSdCkH544PdrxHY4hoz4ZQp0MkjbB8ytRF0cgUWKQ==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 13/19] libcamera: software_isp: Call Algorithm::configure","In-Reply-To":"<02316d28-9f7c-4208-8912-c70af8a66554@ideasonboard.com> (Umang\n\tJain's message of \"Sat, 29 Jun 2024 10:43:53 +0530\")","References":"<20240626072100.55497-1-mzamazal@redhat.com>\n\t<20240626072100.55497-14-mzamazal@redhat.com>\n\t<02316d28-9f7c-4208-8912-c70af8a66554@ideasonboard.com>","Date":"Wed, 03 Jul 2024 19:27:11 +0200","Message-ID":"<875xtmjsi8.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>"}}]