[{"id":20949,"web_url":"https://patchwork.libcamera.org/comment/20949/","msgid":"<163697232175.2655227.17152380387769714660@Monstersaurus>","date":"2021-11-15T10:32:01","subject":"Re: [libcamera-devel] [PATCH v5 13/14] ipa: ipu3: Move ExposureTime\n\tto IPA","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Han-Lin,\n\nThis patch removes the setting of the ExposureTime control from the\nPipeline Handler, and makes it the responsibility of the IPA.\n\nA corresponding change will be required in the Intel IPA. Could you look\ninto this please? I plan to merge this series today. It won't cause you\na compile breakage, but I would guess that CTS will not get the\ninformation it expects after this.\n\nRegards\n\nKieran\n\n\n\nQuoting Jean-Michel Hautbois (2021-11-13 08:49:46)\n> Now that we have the exposure time calculated, report it in 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> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\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>         ctrls.set(controls::ColourTemperature, context_.frameContext.awb.temperatureK);\n>  \n> +       ctrls.set(controls::ExposureTime, context_.frameContext.sensor.exposure * lineDuration_.get<std::micro>());\n> +\n>         /*\n>          * \\todo The Metadata provides a path to getting extended data\n>          * 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>         IPU3CameraData(PipelineHandler *pipe)\n> -               : Camera::Private(pipe), exposureTime_(0), supportsFlips_(false)\n> +               : Camera::Private(pipe), supportsFlips_(false)\n>         {\n>         }\n>  \n> @@ -67,7 +67,6 @@ public:\n>         Stream vfStream_;\n>         Stream rawStream_;\n>  \n> -       uint32_t exposureTime_;\n>         Rectangle cropRegion_;\n>         bool supportsFlips_;\n>         Transform rotationTransform_;\n> @@ -1045,17 +1044,6 @@ int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)\n>  \n>         controls[&controls::ScalerCrop] = ControlInfo(minCrop, maxCrop, maxCrop);\n>  \n> -       /*\n> -        * \\todo Report the actual exposure time, use the default for the\n> -        * moment.\n> -        */\n> -       const auto exposureInfo = data->ipaControls_.find(&controls::ExposureTime);\n> -       if (exposureInfo == data->ipaControls_.end()) {\n> -               LOG(IPU3, Error) << \"Exposure control not initialized by the IPA\";\n> -               return -EINVAL;\n> -       }\n> -       data->exposureTime_ = exposureInfo->second.def().get<int32_t>();\n> -\n>         /* Add the IPA registered controls to list of camera controls. */\n>         for (const auto &ipaControl : data->ipaControls_)\n>                 controls[ipaControl.first] = ipaControl.second;\n> @@ -1317,8 +1305,6 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer)\n>         pipe()->completeBuffer(request, buffer);\n>  \n>         request->metadata().set(controls::draft::PipelineDepth, 3);\n> -       /* \\todo Move the ExposureTime control to the IPA. */\n> -       request->metadata().set(controls::ExposureTime, exposureTime_);\n>         /* \\todo Actually apply the scaler crop region to the ImgU. */\n>         if (request->controls().contains(controls::ScalerCrop))\n>                 cropRegion_ = 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 2FA37BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 15 Nov 2021 10:32:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 789F96036B;\n\tMon, 15 Nov 2021 11:32: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 47A6E60232\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 15 Nov 2021 11:32:04 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BBFE69CA;\n\tMon, 15 Nov 2021 11:32:03 +0100 (CET)"],"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=\"pjnXjwOS\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1636972323;\n\tbh=rEpJ9aeyxaa21jIWfW7xvMhhUwnAs2VA/FtSSRRUen8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=pjnXjwOSJqHLLT8t1GdoO8cvT3SJgaeWlzPRta8nJ4YV7jhdyR7RbCsfZuDENKESl\n\t43U9D4zR0/mFeoyqtp7PjFU8OdD2/7TwWYZcxzgf/Ft4u/tVw6KD597QBkNpF1EkQO\n\tZntIXpf+khaL2E1qjHl/9BBkSYfvaEx6s/LU3QzI=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20211113084947.21892-14-jeanmichel.hautbois@ideasonboard.com>","References":"<20211113084947.21892-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20211113084947.21892-14-jeanmichel.hautbois@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, hanlinchen@chromium.org, ","Date":"Mon, 15 Nov 2021 10:32:01 +0000","Message-ID":"<163697232175.2655227.17152380387769714660@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 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>"}}]