[{"id":36414,"web_url":"https://patchwork.libcamera.org/comment/36414/","msgid":"<daabcbe8-7493-4807-84cd-3236fcee5094@ideasonboard.com>","date":"2025-10-23T18:19:59","subject":"Re: [RFC PATCH 4/7] ipa: softipa: Extend configure operation to pass\n\tcontrols","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 10. 11. 18:03 keltezéssel, Kieran Bingham írta:\n> Extend the SoftIPA interface to support passing IPA controls during the\n> configuration phase so that updates can be made according to the\n> resolutions selected.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n\nThis also does not seem to be needed in this patch series. But\notherwise it looks reasonable, when it will be needed.\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   include/libcamera/internal/software_isp/software_isp.h | 3 ++-\n>   include/libcamera/ipa/soft.mojom                       | 2 +-\n>   src/ipa/simple/soft_simple.cpp                         | 6 ++++--\n>   src/libcamera/pipeline/simple/simple.cpp               | 2 +-\n>   src/libcamera/software_isp/software_isp.cpp            | 5 +++--\n>   5 files changed, 11 insertions(+), 7 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 78624659245c..0bc695177634 100644\n> --- a/include/libcamera/internal/software_isp/software_isp.h\n> +++ b/include/libcamera/internal/software_isp/software_isp.h\n> @@ -65,7 +65,8 @@ public:\n>   \n>   \tint configure(const StreamConfiguration &inputCfg,\n>   \t\t      const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,\n> -\t\t      const ipa::soft::IPAConfigInfo &configInfo);\n> +\t\t      const ipa::soft::IPAConfigInfo &configInfo,\n> +\t\t      ControlInfoMap *ipaControls);\n>   \n>   \tint exportBuffers(const Stream *stream, 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 77328c5fd51d..3acac53981e7 100644\n> --- a/include/libcamera/ipa/soft.mojom\n> +++ b/include/libcamera/ipa/soft.mojom\n> @@ -22,7 +22,7 @@ interface IPASoftInterface {\n>   \tstart() => (int32 ret);\n>   \tstop();\n>   \tconfigure(IPAConfigInfo configInfo)\n> -\t\t=> (int32 ret);\n> +\t\t=> (int32 ret, libcamera.ControlInfoMap ipaControls);\n>   \n>   \t[async] queueRequest(uint32 frame, libcamera.ControlList sensorControls);\n>   \t[async] computeParams(uint32 frame);\n> diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp\n> index b147aca2e343..0821d214815f 100644\n> --- a/src/ipa/simple/soft_simple.cpp\n> +++ b/src/ipa/simple/soft_simple.cpp\n> @@ -57,7 +57,8 @@ public:\n>   \t\t const ControlInfoMap &sensorControls,\n>   \t\t ControlInfoMap *ipaControls,\n>   \t\t bool *ccmEnabled) override;\n> -\tint configure(const IPAConfigInfo &configInfo) override;\n> +\tint configure(const IPAConfigInfo &configInfo,\n> +\t\t      ControlInfoMap *ipaControls) override;\n>   \n>   \tint start() override;\n>   \tvoid stop() override;\n> @@ -193,7 +194,8 @@ int IPASoftSimple::init(const IPASettings &settings,\n>   \treturn 0;\n>   }\n>   \n> -int IPASoftSimple::configure(const IPAConfigInfo &configInfo)\n> +int IPASoftSimple::configure(const IPAConfigInfo &configInfo,\n> +\t\t\t     [[maybe_unused]] ControlInfoMap *ipaControls)\n>   {\n>   \tsensorInfoMap_ = configInfo.sensorControls;\n>   \n> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\n> index c816cffc9e6a..a7e7ac25bac2 100644\n> --- a/src/libcamera/pipeline/simple/simple.cpp\n> +++ b/src/libcamera/pipeline/simple/simple.cpp\n> @@ -1414,7 +1414,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)\n>   \t} else {\n>   \t\tipa::soft::IPAConfigInfo configInfo;\n>   \t\tconfigInfo.sensorControls = data->sensor_->controls();\n> -\t\treturn data->swIsp_->configure(inputCfg, outputCfgs, configInfo);\n> +\t\treturn data->swIsp_->configure(inputCfg, outputCfgs, configInfo, &data->controlInfo_);\n>   \t}\n>   }\n>   \n> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n> index b7651b7d2627..953409c42fee 100644\n> --- a/src/libcamera/software_isp/software_isp.cpp\n> +++ b/src/libcamera/software_isp/software_isp.cpp\n> @@ -255,11 +255,12 @@ SoftwareIsp::strideAndFrameSize(const PixelFormat &outputFormat, const Size &siz\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 ipa::soft::IPAConfigInfo &configInfo)\n> +\t\t\t   const ipa::soft::IPAConfigInfo &configInfo,\n> +\t\t\t   ControlInfoMap *ipaControls)\n>   {\n>   \tASSERT(ipa_ && debayer_);\n>   \n> -\tint ret = ipa_->configure(configInfo);\n> +\tint ret = ipa_->configure(configInfo, ipaControls);\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 10BAABE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Oct 2025 18:20:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6F9DD60842;\n\tThu, 23 Oct 2025 20:20:05 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F372E607F4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Oct 2025 20:20:03 +0200 (CEST)","from [192.168.33.33] (185.221.141.231.nat.pool.zt.hu\n\t[185.221.141.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 82523EFE;\n\tThu, 23 Oct 2025 20:18:18 +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=\"ZlsESI/v\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761243498;\n\tbh=3eK5yfY7nChLKs+ntSKnVIFo3xsnebC7URyP74pfb5M=;\n\th=Date:Subject:To:References:From:Cc:In-Reply-To:From;\n\tb=ZlsESI/vsDKHFJ/fcjNWHvICu2ZpP6MGx7Z/X2CaEniOol5fqaclXwj0qBLhOMIeI\n\tE61ezouKASigsHWJeDs8E+cd8HW84+1v6z7PAX5eJ4qGsxKdGoTvEdiPP2pvkzJizZ\n\tfBQuSHLafeVK84NSZcPnIyzHFBM0td07y/wzZObY=","Message-ID":"<daabcbe8-7493-4807-84cd-3236fcee5094@ideasonboard.com>","Date":"Thu, 23 Oct 2025 20:19:59 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH 4/7] ipa: softipa: Extend configure operation to pass\n\tcontrols","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","References":"<20251011160335.50578-1-kieran.bingham@ideasonboard.com>\n\t<20251011160335.50578-5-kieran.bingham@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","In-Reply-To":"<20251011160335.50578-5-kieran.bingham@ideasonboard.com>","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>"}}]