[{"id":26398,"web_url":"https://patchwork.libcamera.org/comment/26398/","msgid":"<167555065943.2778051.12496219296170637958@Monstersaurus>","date":"2023-02-04T22:44:19","subject":"Re: [libcamera-devel] [PATCH v3 1/8] rkisp1: Add camera lens to PH\n\tand expose it to the IPA","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Daniel Semkowicz via libcamera-devel (2023-01-19 08:41:05)\n> Check in pipeline handler if camera lens exists, add expose its controls\n> to the IPA.\n> \n\nLooks ok to me.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Daniel Semkowicz <dse@thaumatec.com>\n> ---\n>  include/libcamera/ipa/rkisp1.mojom       | 1 +\n>  src/ipa/rkisp1/rkisp1.cpp                | 5 +++++\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +++++\n>  3 files changed, 11 insertions(+)\n> \n> diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\n> index 1009e970..bf6e9141 100644\n> --- a/include/libcamera/ipa/rkisp1.mojom\n> +++ b/include/libcamera/ipa/rkisp1.mojom\n> @@ -11,6 +11,7 @@ import \"include/libcamera/ipa/core.mojom\";\n>  struct IPAConfigInfo {\n>         libcamera.IPACameraSensorInfo sensorInfo;\n>         libcamera.ControlInfoMap sensorControls;\n> +       libcamera.ControlInfoMap lensControls;\n>  };\n>  \n>  interface IPARkISP1Interface {\n> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> index 6544c925..9e861fc0 100644\n> --- a/src/ipa/rkisp1/rkisp1.cpp\n> +++ b/src/ipa/rkisp1/rkisp1.cpp\n> @@ -7,6 +7,7 @@\n>  \n>  #include <algorithm>\n>  #include <math.h>\n> +#include <optional>\n>  #include <queue>\n>  #include <stdint.h>\n>  #include <string.h>\n> @@ -80,6 +81,7 @@ private:\n>         std::map<unsigned int, MappedFrameBuffer> mappedBuffers_;\n>  \n>         ControlInfoMap sensorControls_;\n> +       std::optional<ControlInfoMap> lensControls_;\n>  \n>         /* revision-specific data */\n>         rkisp1_cif_isp_version hwRevision_;\n> @@ -215,6 +217,9 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,\n>  {\n>         sensorControls_ = ipaConfig.sensorControls;\n>  \n> +       if (!ipaConfig.lensControls.empty())\n> +               lensControls_ = ipaConfig.lensControls;\n> +\n>         const auto itExp = sensorControls_.find(V4L2_CID_EXPOSURE);\n>         int32_t minExposure = itExp->second.min().get<int32_t>();\n>         int32_t maxExposure = itExp->second.max().get<int32_t>();\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 5bdb4d25..0559d261 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -31,6 +31,7 @@\n>  #include <libcamera/ipa/rkisp1_ipa_proxy.h>\n>  \n>  #include \"libcamera/internal/camera.h\"\n> +#include \"libcamera/internal/camera_lens.h\"\n>  #include \"libcamera/internal/camera_sensor.h\"\n>  #include \"libcamera/internal/delayed_controls.h\"\n>  #include \"libcamera/internal/device_enumerator.h\"\n> @@ -807,6 +808,10 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n>  \n>         ipaConfig.sensorControls = data->sensor_->controls();\n>  \n> +       CameraLens *lens = data->sensor_->focusLens();\n> +       if (lens)\n> +               ipaConfig.lensControls = lens->controls();\n> +\n>         ret = data->ipa_->configure(ipaConfig, streamConfig, &data->controlInfo_);\n>         if (ret) {\n>                 LOG(RkISP1, Error) << \"failed configuring IPA (\" << ret << \")\";\n> -- \n> 2.39.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 76A02BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat,  4 Feb 2023 22:44:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C6935625DF;\n\tSat,  4 Feb 2023 23:44:23 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C50CB625DD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat,  4 Feb 2023 23:44:22 +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 55DBF1026;\n\tSat,  4 Feb 2023 23:44:22 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1675550663;\n\tbh=fHDr18NWPgMBxh5obGtEvpKEYUTJh7ytnc0JeDYi7hI=;\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=oFm4EP1t4gtNP3UyrEKkG4mIUrEbRW+4mTzW0+rWWlVg6sSZz9+KqHAXA5qmgY9rs\n\tBUgx/mCcPK5T1N/gvuS9r6KOtgtiBwgEX0PHgndtRT4VaTYmS/UgUBewNFSnJvtnXu\n\tVgP3OcaJY758wstsnaG2bAvmNrNmaLsFrQKru9jccD1H/LOT3y6Bg2V21Fm5Khu64O\n\txQPLeCLeq2LL/55gLRy+fVwaXdyrxv2l0drM2OmWx9+JQo8BIQccxHm2n/gUDMyaBV\n\teZd/ZRmWwxZIwd/YJML+JW1JtYOiqwe6hC0ryqReo9OwZWHdPHaUw8uAQJhl+gDOid\n\tO/YjdgBzLr+7Q==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1675550662;\n\tbh=fHDr18NWPgMBxh5obGtEvpKEYUTJh7ytnc0JeDYi7hI=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=T1UVDZnyoqWFxvJ8oJs3HFyQqbrJhdk2HMyhxgYxbEJ5rLU1gc5hwmge+2GHmTlaU\n\t7OzPlHDxtyVRaBq89sBMyi0dvr2tZucuRUVGnhkui7ZxN7iqi1Gotxgit1qIPMkLtf\n\tCYNW21Ic6xMtof9tTxT+ghsTmIiXkCWFLsXRtx6o="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"T1UVDZny\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20230119084112.20564-2-dse@thaumatec.com>","References":"<20230119084112.20564-1-dse@thaumatec.com>\n\t<20230119084112.20564-2-dse@thaumatec.com>","To":"Daniel Semkowicz <dse@thaumatec.com>, libcamera-devel@lists.libcamera.org","Date":"Sat, 04 Feb 2023 22:44:19 +0000","Message-ID":"<167555065943.2778051.12496219296170637958@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3 1/8] rkisp1: Add camera lens to PH\n\tand expose it to the 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>","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":26400,"web_url":"https://patchwork.libcamera.org/comment/26400/","msgid":"<20230206091332.ubp6p4zy7qipsisj@uno.localdomain>","date":"2023-02-06T09:13:32","subject":"Re: [libcamera-devel] [PATCH v3 1/8] rkisp1: Add camera lens to PH\n\tand expose it to the IPA","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Daniel\n\nOn Sat, Feb 04, 2023 at 10:44:19PM +0000, Kieran Bingham via libcamera-devel wrote:\n> Quoting Daniel Semkowicz via libcamera-devel (2023-01-19 08:41:05)\n> > Check in pipeline handler if camera lens exists, add expose its controls\n> > to the IPA.\n> >\n>\n> Looks ok to me.\n>\n>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nLooks good to me as well\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nThanks\n  j\n\n>\n> > Signed-off-by: Daniel Semkowicz <dse@thaumatec.com>\n> > ---\n> >  include/libcamera/ipa/rkisp1.mojom       | 1 +\n> >  src/ipa/rkisp1/rkisp1.cpp                | 5 +++++\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +++++\n> >  3 files changed, 11 insertions(+)\n> >\n> > diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\n> > index 1009e970..bf6e9141 100644\n> > --- a/include/libcamera/ipa/rkisp1.mojom\n> > +++ b/include/libcamera/ipa/rkisp1.mojom\n> > @@ -11,6 +11,7 @@ import \"include/libcamera/ipa/core.mojom\";\n> >  struct IPAConfigInfo {\n> >         libcamera.IPACameraSensorInfo sensorInfo;\n> >         libcamera.ControlInfoMap sensorControls;\n> > +       libcamera.ControlInfoMap lensControls;\n> >  };\n> >\n> >  interface IPARkISP1Interface {\n> > diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\n> > index 6544c925..9e861fc0 100644\n> > --- a/src/ipa/rkisp1/rkisp1.cpp\n> > +++ b/src/ipa/rkisp1/rkisp1.cpp\n> > @@ -7,6 +7,7 @@\n> >\n> >  #include <algorithm>\n> >  #include <math.h>\n> > +#include <optional>\n> >  #include <queue>\n> >  #include <stdint.h>\n> >  #include <string.h>\n> > @@ -80,6 +81,7 @@ private:\n> >         std::map<unsigned int, MappedFrameBuffer> mappedBuffers_;\n> >\n> >         ControlInfoMap sensorControls_;\n> > +       std::optional<ControlInfoMap> lensControls_;\n> >\n> >         /* revision-specific data */\n> >         rkisp1_cif_isp_version hwRevision_;\n> > @@ -215,6 +217,9 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,\n> >  {\n> >         sensorControls_ = ipaConfig.sensorControls;\n> >\n> > +       if (!ipaConfig.lensControls.empty())\n> > +               lensControls_ = ipaConfig.lensControls;\n> > +\n> >         const auto itExp = sensorControls_.find(V4L2_CID_EXPOSURE);\n> >         int32_t minExposure = itExp->second.min().get<int32_t>();\n> >         int32_t maxExposure = itExp->second.max().get<int32_t>();\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index 5bdb4d25..0559d261 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -31,6 +31,7 @@\n> >  #include <libcamera/ipa/rkisp1_ipa_proxy.h>\n> >\n> >  #include \"libcamera/internal/camera.h\"\n> > +#include \"libcamera/internal/camera_lens.h\"\n> >  #include \"libcamera/internal/camera_sensor.h\"\n> >  #include \"libcamera/internal/delayed_controls.h\"\n> >  #include \"libcamera/internal/device_enumerator.h\"\n> > @@ -807,6 +808,10 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n> >\n> >         ipaConfig.sensorControls = data->sensor_->controls();\n> >\n> > +       CameraLens *lens = data->sensor_->focusLens();\n> > +       if (lens)\n> > +               ipaConfig.lensControls = lens->controls();\n> > +\n> >         ret = data->ipa_->configure(ipaConfig, streamConfig, &data->controlInfo_);\n> >         if (ret) {\n> >                 LOG(RkISP1, Error) << \"failed configuring IPA (\" << ret << \")\";\n> > --\n> > 2.39.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 37DD0BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  6 Feb 2023 09:13:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E1EE1625F4;\n\tMon,  6 Feb 2023 10:13:37 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 40C2861EF3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  6 Feb 2023 10:13:36 +0100 (CET)","from ideasonboard.com (host-79-55-56-167.retail.telecomitalia.it\n\t[79.55.56.167])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C24454DA;\n\tMon,  6 Feb 2023 10:13:35 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1675674817;\n\tbh=V2ZsgsJqNRjJxhVRT6T/PVKc1gNqqWcp6pH4465z1J0=;\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=FiYraFPrsUFGdNvn2/WMIp0qiyXcJv3zAg0J5au95a2otN+dxBKxRAZjkd0OfAIGj\n\t1733x1bvV8AeX2QisErMxQMG0Go92PHCcAqKYBqAcOv+hQxX640nACOH6H/hz7DKpe\n\tEOyY+Zv8Xai2OcMNisfoIGAwWKqa+gxN9/l9LnVK65boolGXoSv7BcOJz7f08dsdAX\n\t/JdUDvWZOWLqCvEBuxr2Z9o9quGiknmpoPbzcLoUhVOxgcki+7H4Gvq9x6EY4dWNag\n\tti+5N7csJ0kqebDcv2OL8q2k1YhIRf0aWLlzW2PUjRZZeyVpAKtkX9TLZNf40YJGUJ\n\t47WzVjfpPpq8w==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1675674816;\n\tbh=V2ZsgsJqNRjJxhVRT6T/PVKc1gNqqWcp6pH4465z1J0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=iqK5HVaCmtoVUVnvvBkjDXkhxrU80FjSOnMKRbGufSeGImx6urg3cqlbPvmA9Uxpw\n\te548eck5PibxKhPnrbnYBdBMkpq8eDTAaPoTvH3j2fmVsCtpbKQVZ7PtpaZ6xPO2gh\n\tZ1+hJ2WMxJacidDiUdOqNrN4jJGKavZu0vdPIsTE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"iqK5HVaC\"; dkim-atps=neutral","Date":"Mon, 6 Feb 2023 10:13:32 +0100","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20230206091332.ubp6p4zy7qipsisj@uno.localdomain>","References":"<20230119084112.20564-1-dse@thaumatec.com>\n\t<20230119084112.20564-2-dse@thaumatec.com>\n\t<167555065943.2778051.12496219296170637958@Monstersaurus>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<167555065943.2778051.12496219296170637958@Monstersaurus>","Subject":"Re: [libcamera-devel] [PATCH v3 1/8] rkisp1: Add camera lens to PH\n\tand expose it to the 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>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]