[{"id":36216,"web_url":"https://patchwork.libcamera.org/comment/36216/","msgid":"<02cbe6e3-5188-4b14-a2ab-3c246758e908@ideasonboard.com>","date":"2025-10-13T10:17:43","subject":"Re: [PATCH v4 2/2] ipa: ipu3, mali-c55, rkisp1, rpi: Fix reporting\n\tnon-scalar controls","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 10. 11. 8:33 keltezéssel, Paul Elder írta:\n> The ControlInfos of non-scalar controls that are reported in controls()\n> must have non-scalar default values for controls that have a defined\n> size. This is because applications should be able to directly set the\n> default value from a ControlInfo to the control.\n\nNow I am wondering if the same should be true for dynamically size arrays,\nof which there is only one: `AfWindows`. But currently its default value\nis set to a scalar value.\n\n\n> \n> Currently this is relevant to the following controls:\n> - ColourGains\n> - ColourCorrectionMatrix\n> - FrameDurationLimits\n> \n> Fix the scalarness of these controls where relevant.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n> Changes in v4:\n> - improve commit message\n> \n> No change in v3\n> \n> No change in v2\n> ---\n>   src/ipa/ipu3/ipu3.cpp             | 4 +++-\n>   src/ipa/mali-c55/mali-c55.cpp     | 5 ++++-\n>   src/ipa/rkisp1/algorithms/awb.cpp | 5 ++++-\n>   src/ipa/rkisp1/rkisp1.cpp         | 4 +++-\n>   src/ipa/rpi/common/ipa_base.cpp   | 7 ++++++-\n>   5 files changed, 20 insertions(+), 5 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\n> index 1cae08bf255f..e71639a16522 100644\n> --- a/src/ipa/ipu3/ipu3.cpp\n> +++ b/src/ipa/ipu3/ipu3.cpp\n> @@ -20,6 +20,7 @@\n>   \n>   #include <libcamera/base/file.h>\n>   #include <libcamera/base/log.h>\n> +#include <libcamera/base/span.h>\n>   #include <libcamera/base/utils.h>\n>   \n>   #include <libcamera/control_ids.h>\n> @@ -280,10 +281,11 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo,\n>   \t\tuint64_t frameSize = lineLength * frameHeights[i];\n>   \t\tframeDurations[i] = frameSize / (sensorInfo.pixelRate / 1000000U);\n>   \t}\n> +\tstd::array<int64_t, 2> defFrameDurations = { frameDurations[2], frameDurations[2] };\n>   \n>   \tcontrols[&controls::FrameDurationLimits] = ControlInfo(frameDurations[0],\n>   \t\t\t\t\t\t\t       frameDurations[1],\n> -\t\t\t\t\t\t\t       frameDurations[2]);\n> +\t\t\t\t\t\t\t       Span<const int64_t, 2>{ defFrameDurations });\n\nSmall thing, here and everywhere else, the array can created \"on the fly\":\n\n   Span<const int64_t>{{ frameDurations[2], frameDurations[2] }}\n\n\nTested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> # rkisp1\n\n>>> c.controls[lc.controls.FrameDurationLimits]\nlibcamera.ControlInfo([21066..1241564])\n>>> c.controls[lc.controls.FrameDurationLimits].default\n(33400, 33400)\n\n>>> c.controls[lc.controls.ColourCorrectionMatrix]\nlibcamera.ControlInfo([-8.000000..7.993000])\n>>> c.controls[lc.controls.ColourCorrectionMatrix].default\n(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)\n\n\nRegards,\nBarnabás Pőcze\n\n\n\n>   \n>   \tcontrols.merge(context_.ctrlMap);\n>   \t*ipaControls = ControlInfoMap(std::move(controls), controls::controls);\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 12A8DBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Oct 2025 10:17:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 48F5C60463;\n\tMon, 13 Oct 2025 12:17:47 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DD56D6031A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Oct 2025 12:17:45 +0200 (CEST)","from [192.168.33.36] (185.182.214.105.nat.pool.zt.hu\n\t[185.182.214.105])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 23281591;\n\tMon, 13 Oct 2025 12:16:08 +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=\"RAWynVPZ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760350568;\n\tbh=ELWW7gYU7HfWrcT+kq5vFQqvhsanGpAkfCH/fuaph5c=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=RAWynVPZfigAoumP7Mdkmj27GZHQFgaAblQ1EdGJaioAfdxsmVbvqSPeYuwfoKerL\n\tr/4JNfjHa2wfVPX0WAyQWFoaORbQJGP2OXPRbpTJ0HhkRxU0EzDNVBQL+xjGLku1Q+\n\tfuoXxb4SORMkhTMuUXAPRtIhZWqfivj1gHTtPqXA=","Message-ID":"<02cbe6e3-5188-4b14-a2ab-3c246758e908@ideasonboard.com>","Date":"Mon, 13 Oct 2025 12:17:43 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v4 2/2] ipa: ipu3, mali-c55, rkisp1, rpi: Fix reporting\n\tnon-scalar controls","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20251011063333.2169364-1-paul.elder@ideasonboard.com>\n\t<20251011063333.2169364-3-paul.elder@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20251011063333.2169364-3-paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}}]