[{"id":18582,"web_url":"https://patchwork.libcamera.org/comment/18582/","msgid":"<20210806021444.GQ2167@pyrite.rasen.tech>","date":"2021-08-06T02:14:44","subject":"Re: [libcamera-devel] [PATCH] ipa: vimc: Add configure() function","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Laurent,\n\nOn Thu, Aug 05, 2021 at 08:01:47PM +0300, Laurent Pinchart wrote:\n> As part of an effort to make the vimc IPA usable for testing, extend it\n> with a configure function. The configuration is currently ignored by the\n> IPA.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Umang, I've had this in my tree for some time, if it helps the work\n> you're doing on testing buffer mapping in vimc, please feel free to use\n> this patch (as-is, or squashed into anything else).\n> ---\n>  include/libcamera/ipa/vimc.mojom     |  5 +++++\n>  src/ipa/vimc/vimc.cpp                | 11 +++++++++++\n>  src/libcamera/pipeline/vimc/vimc.cpp | 16 ++++++++++++++++\n>  3 files changed, 32 insertions(+)\n> \n> diff --git a/include/libcamera/ipa/vimc.mojom b/include/libcamera/ipa/vimc.mojom\n> index 86bc318a878e..85d25e27ebcd 100644\n> --- a/include/libcamera/ipa/vimc.mojom\n> +++ b/include/libcamera/ipa/vimc.mojom\n> @@ -19,6 +19,11 @@ enum IPAOperationCode {\n>  \n>  interface IPAVimcInterface {\n>  \tinit(libcamera.IPASettings settings) => (int32 ret);\n> +\n> +\tconfigure(libcamera.IPACameraSensorInfo sensorInfo,\n> +\t\t  map<uint32, libcamera.IPAStream> streamConfig,\n> +\t\t  map<uint32, libcamera.ControlInfoMap> entityControls) => ();\n\nSince we're going to use it for testing, should we return int?\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> +\n>  \tstart() => (int32 ret);\n>  \tstop();\n>  };\n> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n> index 0c0ee006fdc7..5da5c6c09d68 100644\n> --- a/src/ipa/vimc/vimc.cpp\n> +++ b/src/ipa/vimc/vimc.cpp\n> @@ -34,6 +34,10 @@ public:\n>  \tint start() override;\n>  \tvoid stop() override;\n>  \n> +\tvoid configure(const IPACameraSensorInfo &sensorInfo,\n> +\t\t       const std::map<unsigned int, IPAStream> &streamConfig,\n> +\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) override;\n> +\n>  private:\n>  \tvoid initTrace();\n>  \tvoid trace(enum ipa::vimc::IPAOperationCode operation);\n> @@ -86,6 +90,13 @@ void IPAVimc::stop()\n>  \tLOG(IPAVimc, Debug) << \"stop vimc IPA!\";\n>  }\n>  \n> +void IPAVimc::configure([[maybe_unused]] const IPACameraSensorInfo &sensorInfo,\n> +\t\t\t[[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,\n> +\t\t\t[[maybe_unused]] const std::map<unsigned int, ControlInfoMap> &entityControls)\n> +{\n> +\tLOG(IPAVimc, Debug) << \"configure()\";\n> +}\n> +\n>  void IPAVimc::initTrace()\n>  {\n>  \tstruct stat fifoStat;\n> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> index 12f7517fd0ae..b7dd6595d608 100644\n> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> @@ -295,6 +295,22 @@ int PipelineHandlerVimc::configure(Camera *camera, CameraConfiguration *config)\n>  \n>  \tcfg.setStream(&data->stream_);\n>  \n> +\tif (data->ipa_) {\n> +\t\t/* Inform IPA of stream configuration and sensor controls. */\n> +\t\tstd::map<unsigned int, IPAStream> streamConfig;\n> +\t\tstreamConfig.emplace(std::piecewise_construct,\n> +\t\t\t\t     std::forward_as_tuple(0),\n> +\t\t\t\t     std::forward_as_tuple(cfg.pixelFormat, cfg.size));\n> +\n> +\t\tstd::map<unsigned int, ControlInfoMap> entityControls;\n> +\t\tentityControls.emplace(0, data->sensor_->controls());\n> +\n> +\t\tIPACameraSensorInfo sensorInfo;\n> +\t\tdata->sensor_->sensorInfo(&sensorInfo);\n> +\n> +\t\tdata->ipa_->configure(sensorInfo, streamConfig, entityControls);\n> +\t}\n> +\n>  \treturn 0;\n>  }\n>  \n> -- \n> Regards,\n> \n> Laurent Pinchart\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 752D0C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Aug 2021 02:14:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D0CC568811;\n\tFri,  6 Aug 2021 04:14: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 9CEE26026E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Aug 2021 04:14:52 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 18FB34FB;\n\tFri,  6 Aug 2021 04:14:50 +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=\"TYsWZig9\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1628216092;\n\tbh=kaszb0j3Y9+dzkNafAOvSBTTYB8TqoJi85lycUJdICs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=TYsWZig9SqsYurHTTkYPSSHa0uzdl6AUffT4oQkR80fgeNgPCvmpKIB6pHdKY1NiA\n\tBw1gWzWedjsGFd4nQUwX2oW7JTVAvi8jRESYa5bLeRJNtxi7i1m4/d/T9F5RpNsGKj\n\tc+55MoKV1hX5SHZ+E47UkBiw0YSsnoi13dDdYaAs=","Date":"Fri, 6 Aug 2021 11:14:44 +0900","From":"paul.elder@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210806021444.GQ2167@pyrite.rasen.tech>","References":"<20210805170147.20050-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210805170147.20050-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] ipa: vimc: Add configure() function","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18584,"web_url":"https://patchwork.libcamera.org/comment/18584/","msgid":"<e8e78ec9-d643-69f2-494b-a65d4cca79d5@ideasonboard.com>","date":"2021-08-06T07:22:23","subject":"Re: [libcamera-devel] [PATCH] ipa: vimc: Add configure() function","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Laurent,\n\nthanks for the patch.\n\nOn 8/5/21 10:31 PM, Laurent Pinchart wrote:\n> As part of an effort to make the vimc IPA usable for testing, extend it\n> with a configure function. The configuration is currently ignored by the\n> IPA.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Umang, I've had this in my tree for some time, if it helps the work\n> you're doing on testing buffer mapping in vimc, please feel free to use\n> this patch (as-is, or squashed into anything else).\nOk. :-)\n> ---\n>   include/libcamera/ipa/vimc.mojom     |  5 +++++\n>   src/ipa/vimc/vimc.cpp                | 11 +++++++++++\n>   src/libcamera/pipeline/vimc/vimc.cpp | 16 ++++++++++++++++\n>   3 files changed, 32 insertions(+)\n>\n> diff --git a/include/libcamera/ipa/vimc.mojom b/include/libcamera/ipa/vimc.mojom\n> index 86bc318a878e..85d25e27ebcd 100644\n> --- a/include/libcamera/ipa/vimc.mojom\n> +++ b/include/libcamera/ipa/vimc.mojom\n> @@ -19,6 +19,11 @@ enum IPAOperationCode {\n>   \n>   interface IPAVimcInterface {\n>   \tinit(libcamera.IPASettings settings) => (int32 ret);\n> +\n> +\tconfigure(libcamera.IPACameraSensorInfo sensorInfo,\n> +\t\t  map<uint32, libcamera.IPAStream> streamConfig,\n> +\t\t  map<uint32, libcamera.ControlInfoMap> entityControls) => ();\n> +\n\nWe should return int here, as IPU3 does. I'll fixup this and carry it in \nmy ongoing series.\n\nWe can merge this as part of that series.\n\nRest looks good:\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n>   \tstart() => (int32 ret);\n>   \tstop();\n>   };\n> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\n> index 0c0ee006fdc7..5da5c6c09d68 100644\n> --- a/src/ipa/vimc/vimc.cpp\n> +++ b/src/ipa/vimc/vimc.cpp\n> @@ -34,6 +34,10 @@ public:\n>   \tint start() override;\n>   \tvoid stop() override;\n>   \n> +\tvoid configure(const IPACameraSensorInfo &sensorInfo,\n> +\t\t       const std::map<unsigned int, IPAStream> &streamConfig,\n> +\t\t       const std::map<unsigned int, ControlInfoMap> &entityControls) override;\n> +\n>   private:\n>   \tvoid initTrace();\n>   \tvoid trace(enum ipa::vimc::IPAOperationCode operation);\n> @@ -86,6 +90,13 @@ void IPAVimc::stop()\n>   \tLOG(IPAVimc, Debug) << \"stop vimc IPA!\";\n>   }\n>   \n> +void IPAVimc::configure([[maybe_unused]] const IPACameraSensorInfo &sensorInfo,\n> +\t\t\t[[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,\n> +\t\t\t[[maybe_unused]] const std::map<unsigned int, ControlInfoMap> &entityControls)\n> +{\n> +\tLOG(IPAVimc, Debug) << \"configure()\";\n> +}\n> +\n>   void IPAVimc::initTrace()\n>   {\n>   \tstruct stat fifoStat;\n> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\n> index 12f7517fd0ae..b7dd6595d608 100644\n> --- a/src/libcamera/pipeline/vimc/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc/vimc.cpp\n> @@ -295,6 +295,22 @@ int PipelineHandlerVimc::configure(Camera *camera, CameraConfiguration *config)\n>   \n>   \tcfg.setStream(&data->stream_);\n>   \n> +\tif (data->ipa_) {\n> +\t\t/* Inform IPA of stream configuration and sensor controls. */\n> +\t\tstd::map<unsigned int, IPAStream> streamConfig;\n> +\t\tstreamConfig.emplace(std::piecewise_construct,\n> +\t\t\t\t     std::forward_as_tuple(0),\n> +\t\t\t\t     std::forward_as_tuple(cfg.pixelFormat, cfg.size));\n> +\n> +\t\tstd::map<unsigned int, ControlInfoMap> entityControls;\n> +\t\tentityControls.emplace(0, data->sensor_->controls());\n> +\n> +\t\tIPACameraSensorInfo sensorInfo;\n> +\t\tdata->sensor_->sensorInfo(&sensorInfo);\n> +\n> +\t\tdata->ipa_->configure(sensorInfo, streamConfig, entityControls);\n> +\t}\n> +\n>   \treturn 0;\n>   }\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 52A30C3235\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Aug 2021 07:22:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A079C6881B;\n\tFri,  6 Aug 2021 09:22:31 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8E316687D0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Aug 2021 09:22:30 +0200 (CEST)","from [192.168.1.104] (unknown [103.251.226.40])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 70C284FB;\n\tFri,  6 Aug 2021 09:22:29 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PMvxmNFT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1628234550;\n\tbh=m81F6ar5+pTrEpRDrqIUnoaw3GqR86zJD5iGEbJNP84=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=PMvxmNFTBcc99tdpiDBrlK6nmmGzgMmtqyM84hagRKIjxhTGsSTNx7GCD4A+c9YXa\n\tNIh9p0qt6zN8T/xqfFhOQNqCXCyTbMJvEvmbSQ6FypkdWy7gTWypcviNSuAFjHHUXB\n\ttroHrkGVNvmmcxF660dyI8QDM82Emzip86ohu+T4=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210805170147.20050-1-laurent.pinchart@ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<e8e78ec9-d643-69f2-494b-a65d4cca79d5@ideasonboard.com>","Date":"Fri, 6 Aug 2021 12:52:23 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<20210805170147.20050-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH] ipa: vimc: Add configure() function","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>"}}]