[{"id":20911,"web_url":"https://patchwork.libcamera.org/comment/20911/","msgid":"<538c2a10-7b08-4e5d-99bf-14fbefdd59e4@ideasonboard.com>","date":"2021-11-12T12:43:58","subject":"Re: [libcamera-devel] [PATCH v4 13/14] ipa: ipu3: Move ExposureTime\n\tto IPA","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi JM\n\nThank you for the patch,\n\nOn 11/11/21 7:39 PM, Jean-Michel Hautbois wrote:\n> Now that we have the exposure time calculated, pass it to the\n> controls::ExposureTime and don't use the pipeline handler for it\n> anymore.\n>\n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   src/ipa/ipu3/ipu3.cpp                |  2 ++\n>   src/libcamera/pipeline/ipu3/ipu3.cpp | 16 +---------------\n>   2 files changed, 3 insertions(+), 15 deletions(-)\n>\n> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n> index f1597f78..dc6f2ced 100644\n> --- a/src/ipa/ipu3/ipu3.cpp\n> +++ b/src/ipa/ipu3/ipu3.cpp\n> @@ -630,6 +630,8 @@ void IPAIPU3::parseStatistics(unsigned int frame,\n>   \n>   \tctrls.set(controls::ColourTemperature, context_.frameContext.awb.temperatureK);\n>   \n> +\tctrls.set(controls::ExposureTime, context_.frameContext.sensor.exposure * lineDuration_.get<std::micro>());\n> +\n>   \t/*\n>   \t * \\todo The Metadata provides a path to getting extended data\n>   \t * out to the application. Further data such as a simplifed Histogram\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index c984ed12..319bb1a3 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -47,7 +47,7 @@ class IPU3CameraData : public Camera::Private\n>   {\n>   public:\n>   \tIPU3CameraData(PipelineHandler *pipe)\n> -\t\t: Camera::Private(pipe), exposureTime_(0), supportsFlips_(false)\n> +\t\t: Camera::Private(pipe), supportsFlips_(false)\n>   \t{\n>   \t}\n>   \n> @@ -67,7 +67,6 @@ public:\n>   \tStream vfStream_;\n>   \tStream rawStream_;\n>   \n> -\tuint32_t exposureTime_;\n>   \tRectangle cropRegion_;\n>   \tbool supportsFlips_;\n>   \tTransform rotationTransform_;\n> @@ -1045,17 +1044,6 @@ int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)\n>   \n>   \tcontrols[&controls::ScalerCrop] = ControlInfo(minCrop, maxCrop, maxCrop);\n>   \n> -\t/*\n> -\t * \\todo Report the actual exposure time, use the default for the\n> -\t * moment.\n> -\t */\n> -\tconst auto exposureInfo = data->ipaControls_.find(&controls::ExposureTime);\n> -\tif (exposureInfo == data->ipaControls_.end()) {\n> -\t\tLOG(IPU3, Error) << \"Exposure control not initialized by the IPA\";\n> -\t\treturn -EINVAL;\n> -\t}\n> -\tdata->exposureTime_ = exposureInfo->second.def().get<int32_t>();\n> -\n>   \t/* Add the IPA registered controls to list of camera controls. */\n>   \tfor (const auto &ipaControl : data->ipaControls_)\n>   \t\tcontrols[ipaControl.first] = ipaControl.second;\n> @@ -1317,8 +1305,6 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer)\n>   \tpipe()->completeBuffer(request, buffer);\n>   \n>   \trequest->metadata().set(controls::draft::PipelineDepth, 3);\n> -\t/* \\todo Move the ExposureTime control to the IPA. */\n> -\trequest->metadata().set(controls::ExposureTime, exposureTime_);\n>   \t/* \\todo Actually apply the scaler crop region to the ImgU. */\n>   \tif (request->controls().contains(controls::ScalerCrop))\n>   \t\tcropRegion_ = request->controls().get(controls::ScalerCrop);","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 AF198BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Nov 2021 12:44:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 01D2A6034D;\n\tFri, 12 Nov 2021 13:44:05 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6752E6032C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Nov 2021 13:44:03 +0100 (CET)","from [192.168.1.106] (unknown [103.251.226.254])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 31D4C74C;\n\tFri, 12 Nov 2021 13:44:02 +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=\"hf25tZ7L\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1636721043;\n\tbh=17BwOKebNvUYskX75pJFcuOa0/UnAHUbkAy9FM2V6b8=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=hf25tZ7L0SOlnzqy+psjKPl7CAQLF25j9sOuSmYnw6qZHdDQ4iXcjGYAzkmIKrVcx\n\tRMAhwBpthpFAevicQyejI7CU6ZfNx7q8UHDolt761u095oY6GENaYp6tRInqNeeG62\n\ttNLAV2zRHktjYJ0NJIRCLrrcKP8j6jt7m1apFYLY=","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20211111140928.136111-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211111140928.136111-14-jeanmichel.hautbois@ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<538c2a10-7b08-4e5d-99bf-14fbefdd59e4@ideasonboard.com>","Date":"Fri, 12 Nov 2021 18:13:58 +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":"<20211111140928.136111-14-jeanmichel.hautbois@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH v4 13/14] ipa: ipu3: Move ExposureTime\n\tto IPA","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":20941,"web_url":"https://patchwork.libcamera.org/comment/20941/","msgid":"<20211112232436.GK8453@jade.amanokami.net>","date":"2021-11-12T23:24:36","subject":"Re: [libcamera-devel] [PATCH v4 13/14] ipa: ipu3: Move ExposureTime\n\tto IPA","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Jean-Michel,\n\nOn Thu, Nov 11, 2021 at 03:09:27PM +0100, Jean-Michel Hautbois wrote:\n> Now that we have the exposure time calculated, pass it to the\n\ns/pass it to the/report it in/\n\n> controls::ExposureTime and don't use the pipeline handler for it\n> anymore.\n\nyaaaaassss\n\n> \n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  src/ipa/ipu3/ipu3.cpp                |  2 ++\n>  src/libcamera/pipeline/ipu3/ipu3.cpp | 16 +---------------\n>  2 files changed, 3 insertions(+), 15 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n> index f1597f78..dc6f2ced 100644\n> --- a/src/ipa/ipu3/ipu3.cpp\n> +++ b/src/ipa/ipu3/ipu3.cpp\n> @@ -630,6 +630,8 @@ void IPAIPU3::parseStatistics(unsigned int frame,\n>  \n>  \tctrls.set(controls::ColourTemperature, context_.frameContext.awb.temperatureK);\n>  \n> +\tctrls.set(controls::ExposureTime, context_.frameContext.sensor.exposure * lineDuration_.get<std::micro>());\n> +\n>  \t/*\n>  \t * \\todo The Metadata provides a path to getting extended data\n>  \t * out to the application. Further data such as a simplifed Histogram\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index c984ed12..319bb1a3 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -47,7 +47,7 @@ class IPU3CameraData : public Camera::Private\n>  {\n>  public:\n>  \tIPU3CameraData(PipelineHandler *pipe)\n> -\t\t: Camera::Private(pipe), exposureTime_(0), supportsFlips_(false)\n> +\t\t: Camera::Private(pipe), supportsFlips_(false)\n>  \t{\n>  \t}\n>  \n> @@ -67,7 +67,6 @@ public:\n>  \tStream vfStream_;\n>  \tStream rawStream_;\n>  \n> -\tuint32_t exposureTime_;\n>  \tRectangle cropRegion_;\n>  \tbool supportsFlips_;\n>  \tTransform rotationTransform_;\n> @@ -1045,17 +1044,6 @@ int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)\n>  \n>  \tcontrols[&controls::ScalerCrop] = ControlInfo(minCrop, maxCrop, maxCrop);\n>  \n> -\t/*\n> -\t * \\todo Report the actual exposure time, use the default for the\n> -\t * moment.\n> -\t */\n> -\tconst auto exposureInfo = data->ipaControls_.find(&controls::ExposureTime);\n> -\tif (exposureInfo == data->ipaControls_.end()) {\n> -\t\tLOG(IPU3, Error) << \"Exposure control not initialized by the IPA\";\n> -\t\treturn -EINVAL;\n> -\t}\n> -\tdata->exposureTime_ = exposureInfo->second.def().get<int32_t>();\n> -\n>  \t/* Add the IPA registered controls to list of camera controls. */\n>  \tfor (const auto &ipaControl : data->ipaControls_)\n>  \t\tcontrols[ipaControl.first] = ipaControl.second;\n> @@ -1317,8 +1305,6 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer)\n>  \tpipe()->completeBuffer(request, buffer);\n>  \n>  \trequest->metadata().set(controls::draft::PipelineDepth, 3);\n> -\t/* \\todo Move the ExposureTime control to the IPA. */\n> -\trequest->metadata().set(controls::ExposureTime, exposureTime_);\n>  \t/* \\todo Actually apply the scaler crop region to the ImgU. */\n>  \tif (request->controls().contains(controls::ScalerCrop))\n>  \t\tcropRegion_ = request->controls().get(controls::ScalerCrop);\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 D4F6BBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Nov 2021 23:24:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 15D976036E;\n\tSat, 13 Nov 2021 00:24:49 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 46F55600B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Nov 2021 00:24:47 +0100 (CET)","from jade.amanokami.net (KD027085206038.au-net.ne.jp\n\t[27.85.206.38])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0502E9CA;\n\tSat, 13 Nov 2021 00:24:44 +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=\"Wb73ORuk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1636759486;\n\tbh=xn45kw/RguYLzZoy8R+WskFmFU8tkDypfISa9SpFOmQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Wb73ORuksSHI9uEoVKPrR2V3dC/NeJacI1/RbU1pxqPg6CWH9Tc9zMooMWDj4mCTo\n\tQQ57zKV/YtDb+zrFIMkscT0m9pIitNOZ+1e8NxGoJKJ7Vxeiz4/nkGStUnzmjmJYfC\n\tIFp6XyvBLsdGhMVvZTI88s9dGtCgbfeoj8ASxxwg=","Date":"Sat, 13 Nov 2021 08:24:36 +0900","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>","Message-ID":"<20211112232436.GK8453@jade.amanokami.net>","References":"<20211111140928.136111-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211111140928.136111-14-jeanmichel.hautbois@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20211111140928.136111-14-jeanmichel.hautbois@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v4 13/14] ipa: ipu3: Move ExposureTime\n\tto IPA","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>"}}]