[{"id":25468,"web_url":"https://patchwork.libcamera.org/comment/25468/","msgid":"<166617966164.2560709.15894706161143178915@Monstersaurus>","date":"2022-10-19T11:41:01","subject":"Re: [libcamera-devel] [PATCH v1 3/4] ipa: rkisp1: Fill AGC and AWB\n\tmetadata","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart via libcamera-devel (2022-10-19 12:04:33)\n> Fill the frame metadata in the AGC and AWB algorithm's prepare()\n> function. Additional metadata for other algorithms will be addressed\n> later.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/ipa/rkisp1/algorithms/agc.cpp | 9 ++++++++-\n>  src/ipa/rkisp1/algorithms/awb.cpp | 8 +++++++-\n>  2 files changed, 15 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\n> index 9de11a2a3bca..a909d8aa59ea 100644\n> --- a/src/ipa/rkisp1/algorithms/agc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/agc.cpp\n> @@ -16,6 +16,8 @@\n>  \n>  #include <libcamera/ipa/core_ipa_interface.h>\n>  \n> +#include <libcamera/control_ids.h>\n> +\n>  #include \"libipa/histogram.h\"\n>  \n>  /**\n> @@ -289,7 +291,7 @@ double Agc::measureBrightness(const rkisp1_cif_isp_hist_stat *hist) const\n>   */\n>  void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,\n>                   IPAFrameContext &frameContext,\n> -                 [[maybe_unused]] ControlList &metadata,\n> +                 ControlList &metadata,\n>                   const rkisp1_stat_buffer *stats)\n>  {\n>         /*\n> @@ -333,6 +335,11 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,\n>  \n>         computeExposure(context, frameContext, yGain, iqMeanGain);\n>         frameCount_++;\n> +\n> +       utils::Duration exposureTime = context.configuration.sensor.lineDuration\n> +                                    * frameContext.sensor.exposure;\n> +       metadata.set(controls::AnalogueGain, frameContext.sensor.gain);\n> +       metadata.set(controls::ExposureTime, exposureTime.get<std::micro>());\n>  }\n>  \n>  /**\n> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\n> index 9b97db7d5c5a..93888a8e7412 100644\n> --- a/src/ipa/rkisp1/algorithms/awb.cpp\n> +++ b/src/ipa/rkisp1/algorithms/awb.cpp\n> @@ -208,7 +208,7 @@ void Awb::queueRequest(IPAContext &context,\n>  void Awb::process(IPAContext &context,\n>                   [[maybe_unused]] const uint32_t frame,\n>                   IPAFrameContext &frameContext,\n> -                 [[maybe_unused]] ControlList &metadata,\n> +                 ControlList &metadata,\n>                   const rkisp1_stat_buffer *stats)\n>  {\n>         const rkisp1_cif_isp_stat *params = &stats->params;\n> @@ -307,6 +307,12 @@ void Awb::process(IPAContext &context,\n>  \n>         frameContext.awb.temperatureK = activeState.awb.temperatureK;\n\nCan you add this one here too please?\n\n\tmetadata.set(controls::ColourTemperature,\n\t\t     frameContext.awb.temperatureK);\n\nWith that\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> +       metadata.set(controls::AwbEnable, frameContext.awb.autoEnabled);\n> +       metadata.set(controls::ColourGains, {\n> +                       static_cast<float>(frameContext.awb.gains.red),\n> +                       static_cast<float>(frameContext.awb.gains.blue)\n> +               });\n> +\n>         LOG(RkISP1Awb, Debug) << std::showpoint\n>                 << \"Means [\" << redMean << \", \" << greenMean << \", \" << blueMean\n>                 << \"], gains [\" << activeState.awb.gains.automatic.red << \", \"\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 D4F00C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Oct 2022 11:41:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2F68362E53;\n\tWed, 19 Oct 2022 13:41:06 +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 D078562DFA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Oct 2022 13:41:04 +0200 (CEST)","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 6835F5A4;\n\tWed, 19 Oct 2022 13:41:04 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666179666;\n\tbh=+5qnF/4GJKPadbTbu/ryncETtGeXpUUXTRijy4O276o=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=R9BglWEFXFynZ3mye9tvmf3xlqqu4CZIgdEnHvjsn3S7/BO2WQs8RE9fBT59NVHCv\n\tqfVwM0QoeBsiIbj5GN/QV0geJrQfUgZlCwpjI69cSz6c+X+IBHwt4g+NpjwPrHEJr2\n\tm+jtPqPOkebKHv4phNkCS+QhtHx3n2w1nhoAr1YPxRagfv2Ay5NNdHzDN8GzsKS9sj\n\tYHvHjURQVBkEGng3g77REVjevCt8hUM/Z0+Zcacc0o1U8AcIZ6d37YCw2WuBvUZa0C\n\t4aDCp/phErQIppr3R/z4o2FxO7Z+gz2hCD7V4biEbOy6P2ghsp2i/8CUBrLnlxarNf\n\tQkx8WDkqQkOeg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1666179664;\n\tbh=+5qnF/4GJKPadbTbu/ryncETtGeXpUUXTRijy4O276o=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=JaAGmJuuq3m9Tk5alrhOXNL3lLmvWRgPmb1vdf9liwAIizqKx2lhMcZGBgInTOBf8\n\tyOw5fZMwEe3mqMXFdiUocxmnm4XcF+zGdPORBS0Cl1rzx0AXWkzy1uEWmz39nFpxAw\n\tZ3v3VmhEjK+SSGmRsOeEFNVZ2qBCLHU/1tMzsXTo="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"JaAGmJuu\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20221019110434.17767-4-laurent.pinchart@ideasonboard.com>","References":"<20221019110434.17767-1-laurent.pinchart@ideasonboard.com>\n\t<20221019110434.17767-4-laurent.pinchart@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 19 Oct 2022 12:41:01 +0100","Message-ID":"<166617966164.2560709.15894706161143178915@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v1 3/4] ipa: rkisp1: Fill AGC and AWB\n\tmetadata","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":25473,"web_url":"https://patchwork.libcamera.org/comment/25473/","msgid":"<20221019115149.cfpphztfrvek4od2@uno.localdomain>","date":"2022-10-19T11:51:49","subject":"Re: [libcamera-devel] [PATCH v1 3/4] ipa: rkisp1: Fill AGC and AWB\n\tmetadata","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"With the question on 2/4 pending, this one in isolation is fine\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nOn Wed, Oct 19, 2022 at 02:04:33PM +0300, Laurent Pinchart via libcamera-devel wrote:\n> Fill the frame metadata in the AGC and AWB algorithm's prepare()\n> function. Additional metadata for other algorithms will be addressed\n> later.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/ipa/rkisp1/algorithms/agc.cpp | 9 ++++++++-\n>  src/ipa/rkisp1/algorithms/awb.cpp | 8 +++++++-\n>  2 files changed, 15 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\n> index 9de11a2a3bca..a909d8aa59ea 100644\n> --- a/src/ipa/rkisp1/algorithms/agc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/agc.cpp\n> @@ -16,6 +16,8 @@\n>\n>  #include <libcamera/ipa/core_ipa_interface.h>\n>\n> +#include <libcamera/control_ids.h>\n> +\n>  #include \"libipa/histogram.h\"\n>\n>  /**\n> @@ -289,7 +291,7 @@ double Agc::measureBrightness(const rkisp1_cif_isp_hist_stat *hist) const\n>   */\n>  void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,\n>  \t\t  IPAFrameContext &frameContext,\n> -\t\t  [[maybe_unused]] ControlList &metadata,\n> +\t\t  ControlList &metadata,\n>  \t\t  const rkisp1_stat_buffer *stats)\n>  {\n>  \t/*\n> @@ -333,6 +335,11 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,\n>\n>  \tcomputeExposure(context, frameContext, yGain, iqMeanGain);\n>  \tframeCount_++;\n> +\n> +\tutils::Duration exposureTime = context.configuration.sensor.lineDuration\n> +\t\t\t\t     * frameContext.sensor.exposure;\n> +\tmetadata.set(controls::AnalogueGain, frameContext.sensor.gain);\n> +\tmetadata.set(controls::ExposureTime, exposureTime.get<std::micro>());\n>  }\n>\n>  /**\n> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp\n> index 9b97db7d5c5a..93888a8e7412 100644\n> --- a/src/ipa/rkisp1/algorithms/awb.cpp\n> +++ b/src/ipa/rkisp1/algorithms/awb.cpp\n> @@ -208,7 +208,7 @@ void Awb::queueRequest(IPAContext &context,\n>  void Awb::process(IPAContext &context,\n>  \t\t  [[maybe_unused]] const uint32_t frame,\n>  \t\t  IPAFrameContext &frameContext,\n> -\t\t  [[maybe_unused]] ControlList &metadata,\n> +\t\t  ControlList &metadata,\n>  \t\t  const rkisp1_stat_buffer *stats)\n>  {\n>  \tconst rkisp1_cif_isp_stat *params = &stats->params;\n> @@ -307,6 +307,12 @@ void Awb::process(IPAContext &context,\n>\n>  \tframeContext.awb.temperatureK = activeState.awb.temperatureK;\n>\n> +\tmetadata.set(controls::AwbEnable, frameContext.awb.autoEnabled);\n> +\tmetadata.set(controls::ColourGains, {\n> +\t\t\tstatic_cast<float>(frameContext.awb.gains.red),\n> +\t\t\tstatic_cast<float>(frameContext.awb.gains.blue)\n> +\t\t});\n> +\n>  \tLOG(RkISP1Awb, Debug) << std::showpoint\n>  \t\t<< \"Means [\" << redMean << \", \" << greenMean << \", \" << blueMean\n>  \t\t<< \"], gains [\" << activeState.awb.gains.automatic.red << \", \"\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 D02F7C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Oct 2022 11:51:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 28B9D62E5C;\n\tWed, 19 Oct 2022 13:51:57 +0200 (CEST)","from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net\n\t[217.70.183.193])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1868A62DFA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Oct 2022 13:51:55 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 3594B24000E;\n\tWed, 19 Oct 2022 11:51:52 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666180317;\n\tbh=v81YnrXOoxAWoDr6Dk0ZZTMn7L67YRcCgDvEy6xHuAM=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=EnwOQWyn/P/fxSgWQNo532w8ICyE2ctiX6j7/Z3Ybbwjo+xEdUE/uXn8jjUH1Q3d9\n\ty3mo6Y0HyuS6PLbPwi6mDfgBJ2uGV/IKfXpIXCDrMfyShvve8W1esq+xofenFt8PlX\n\tRtHUEweB0Jb11b1HHkWx8CsLoZpmgpEEXP1Ma4vZxlI4wdfRFnT9E/IlwFGw0SOOnY\n\t5WXGn6vXWpWib4iHjFIcbr0xtnLzRPSFpZB9pQYytlMMeRXYEQp6NKGAi370eEuYS7\n\t2knXMO29YLgmOTrErdtCsc1kmHeY2HiB0oJtUlu60/JWeyBTRM2xpXesEqt8/3kqsq\n\tuKwEia95GNlyg==","Date":"Wed, 19 Oct 2022 13:51:49 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20221019115149.cfpphztfrvek4od2@uno.localdomain>","References":"<20221019110434.17767-1-laurent.pinchart@ideasonboard.com>\n\t<20221019110434.17767-4-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221019110434.17767-4-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v1 3/4] ipa: rkisp1: Fill AGC and AWB\n\tmetadata","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>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]