{"id":17184,"url":"https://patchwork.libcamera.org/api/patches/17184/?format=json","web_url":"https://patchwork.libcamera.org/patch/17184/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20220821124343.487963-2-Rauch.Christian@gmx.de>","date":"2022-08-21T12:43:43","name":"[libcamera-devel,2/2] libcamera: control: explicitly define default control values","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"8e0ba942fec13f241340bcf897523d7c0f0960af","submitter":{"id":111,"url":"https://patchwork.libcamera.org/api/people/111/?format=json","name":"Christian Rauch","email":"Rauch.Christian@gmx.de"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/17184/mbox/","series":[{"id":3430,"url":"https://patchwork.libcamera.org/api/series/3430/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3430","date":"2022-08-21T12:43:42","name":"[libcamera-devel,1/2] libcamera: control: define an explicit default ControlInfo constructor","version":1,"mbox":"https://patchwork.libcamera.org/series/3430/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/17184/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/17184/checks/","tags":{},"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 7F747BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 21 Aug 2022 12:43:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1427861FC4;\n\tSun, 21 Aug 2022 14:43:49 +0200 (CEST)","from mout.gmx.net (mout.gmx.net [212.227.17.22])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5D60A61FA6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 21 Aug 2022 14:43:46 +0200 (CEST)","from voyager ([88.152.184.103]) by mail.gmx.net (mrgmx104\n\t[212.227.17.168]) with ESMTPSA (Nemesis) id 1MiJVG-1p43PD3M9e-00fPFw;\n\tSun, 21 Aug 2022 14:43:45 +0200"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661085829;\n\tbh=Vsd6wIo1QPrXgKL+ivKYCtVASuSr8DT/6GqRY8GQ3Hw=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=amBAiGwLxeIpc11CsuSYuLkJPRGu5uvxDmcyA8PgzYB7zSIaiNKQNklYSaaxOHJj3\n\tB7RKJOzFMc6iQRD8JasyNIY61c+TbRRTXuQbHIkA/yU+59URcE8pwj2MJrolR5ZxmS\n\tUlyi1kSmnTiys7Ak7ED5aq2Y7uCHsr/JgTnfl5NHWvps3CtMoc6d0zUar7D2BIDgZ1\n\tRFrDLjt3IRn0xbUzvam2g8j+vFieg4GGh7dSeYQI9T/qCV2m3KL6OcZwlizZrFudoA\n\t1NxKXRdt1n77oa3fGNeqN7kUwiCpTGU5/+NzJPSBwW/lPBpPvh8/gSAadlJSGwSpEw\n\t1ljaNLPzCsMkA==","v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;\n\ts=badeba3b8450; t=1661085826;\n\tbh=Vsd6wIo1QPrXgKL+ivKYCtVASuSr8DT/6GqRY8GQ3Hw=;\n\th=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References;\n\tb=flGzU8rUJ9Yk2AYcLOvK2hmdAEu9S6Rf4Ts4U1fh48TLs1f8LWOq0i5qFN78Bs/Nc\n\tJYJ4xzjvhmNXV/Vc062nZ2q2cNZbAJ56N+3LKcf4OmSkwF70tNKfcLB9B9mgIqopb8\n\tFuJb/uBHcIRwieYReSMRdmm6ZJYZXZH7Pd4q5yUU="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=gmx.net header.i=@gmx.net\n\theader.b=\"flGzU8rU\"; dkim-atps=neutral","X-UI-Sender-Class":"01bb95c1-4bf8-414a-932a-4f6e2808ef9c","To":"libcamera-devel@lists.libcamera.org","Date":"Sun, 21 Aug 2022 14:43:43 +0200","Message-Id":"<20220821124343.487963-2-Rauch.Christian@gmx.de>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20220821124343.487963-1-Rauch.Christian@gmx.de>","References":"<20220821124343.487963-1-Rauch.Christian@gmx.de>","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","X-Provags-ID":"V03:K1:YD7B+uMeFcyWKpd7Us454RGGgqxbtaZg1MGRLfu5Ct7iEu2OgRz\n\tt3ZNlQ2aHBrX+2XgGuCIjYQKSRZAEpZrmGlIDPr86ROHn/DGZOqFcK5MBFoiH48IDdLjVMq\n\tjsvQvcESQISBAMQ2x/4GCUwGNUboUeOICR9+5ilZ1xnpZeQM1MhcqyaThjRM7N4lBIWarAG\n\tc2v4fERixCO42JWUXCp3w==","X-Spam-Flag":"NO","X-UI-Out-Filterresults":"notjunk:1; V03:K0:xHlcTheobb8=:s/gXICFkRSOPoUJW+wY6SK\n\tnyv0QdhbqArNRv+fkFks2RKTs2IcAvWB16BKSjQdeCxn0SzKzRxNqh01DuCsd1s9bWfA8pLcw\n\t/FlOZV3uNNupNVRw9ZjeQb0A+YJxPPYZzKWcyjFzbIVj0xz3x205vd/yYAhpHIGCEOEAMCLgF\n\tJvHVrRPP8YiW518aV5IihmAenZRfMyy/0xMvZ9CA1M6AnrVocsLsheINGT1W5VEcl9O1eKYQM\n\taDBaBrG4/zkl80qxpIX/vvLdM9jD4GlVgF2E/jwIf0D1F0QjHF7CYJPzO7JKm9aGYMbc0fKcz\n\tdOJ882XJ6kWXojbX1z8+ovtpFgUWcVXd4+l0XVWnmL5xdJGvRMM+tRMYC/KO5edSzEItFBnBS\n\t+MA/wYB06rRvV9MKGL5CR05pdrm4YyID+6F1oIhwresBdsm5K1Dq2/Fobzd4zO6irPYZaqYia\n\tj0Xuv3PKg0e/vEMjY4CEs6VhpSSnZZpU8govh9lFgwuhor6XaqXU18tDuc5dh1NKO67jygrEx\n\ttsJnJgH9cov8EDqilHcVtMoSa89IETAxF50WhmkXeddbLRpV0HJfv8/3LB0J82SUntwBOJgeW\n\tiTo+g3DUASucUtViv3hPtHtn33vF8biKYRAdvhhHOxlnUPCdeO8Dw2DeOjPpNyesTQdJ0BGa6\n\t10QeEocGFTEYSBGYTtDPQF/PzvuhskHlh/ljO8po0frZybXKGZfhtNUnIHiW+WFnFWoqyBCM6\n\tKd+sb7RQPFClfEF9RpBKFS6GIboY2IdOWjUX/AWxYFLUsbkzRLpSPbUHVPYD+m6jw9DTn8y/L\n\tRh0dlwwRXEABd/Mgq+zaN71+bB3zy97kMBgf4aVzhM1/n6f1+YI/tfap765Np+TzDviqZkQ41\n\tkVzdG3jYISncvJRn6p2fMzyjgAoj93liyLi2XvxS+q3uaG/wJ6b0WQrxHZ2CdvNAMAsQttIhC\n\t6Vmc+8RN0eQd2Hf2GLR7fsW8w9mH1NVkWbly1blI0mKdsRgCyDzS+kh+L5Et6JQoVJVYgTjTv\n\tV1e/I+gtSLWSW57qn7jMNTRBUQ85fScxKj70XXTCuaI6ct1cdQoQJlbl0QWM0DLW8HoiNaWNc\n\t1a39VvrbNoJtfRIPicEOMZ04Y165LE7sGKQWsXGt5IFYnnYvUigY/ApHQ==","Subject":"[libcamera-devel] [PATCH 2/2] libcamera: control: explicitly define\n\tdefault control values","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":"Christian Rauch via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Christian Rauch <Rauch.Christian@gmx.de>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Explicitly set the default value for all ControlInfo to 0, false or minimum.\n\nSigned-off-by: Christian Rauch <Rauch.Christian@gmx.de>\n---\n src/ipa/raspberrypi/raspberrypi.cpp           | 22 ++++++++++---------\n src/ipa/rkisp1/rkisp1.cpp                     | 10 ++++-----\n src/libcamera/pipeline/ipu3/ipu3.cpp          |  2 +-\n .../pipeline/raspberrypi/raspberrypi.cpp      |  2 +-\n 4 files changed, 19 insertions(+), 17 deletions(-)\n\n--\n2.34.1","diff":"diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\nindex 69c73f8c..c6360a51 100644\n--- a/src/ipa/raspberrypi/raspberrypi.cpp\n+++ b/src/ipa/raspberrypi/raspberrypi.cpp\n@@ -74,23 +74,23 @@ constexpr Duration controllerMinFrameDuration = 1.0s / 30.0;\n\n /* List of controls handled by the Raspberry Pi IPA */\n static const ControlInfoMap::Map ipaControls{\n-\t{ &controls::AeEnable, ControlInfo(false, true) },\n-\t{ &controls::ExposureTime, ControlInfo(0, 66666) },\n-\t{ &controls::AnalogueGain, ControlInfo(1.0f, 16.0f) },\n+\t{ &controls::AeEnable, ControlInfo(false, true, false) },\n+\t{ &controls::ExposureTime, ControlInfo(0, 66666, 0) },\n+\t{ &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 0.0f) },\n \t{ &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) },\n \t{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },\n \t{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },\n \t{ &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) },\n-\t{ &controls::AwbEnable, ControlInfo(false, true) },\n-\t{ &controls::ColourGains, ControlInfo(0.0f, 32.0f) },\n+\t{ &controls::AwbEnable, ControlInfo(false, true, false) },\n+\t{ &controls::ColourGains, ControlInfo(0.0f, 32.0f, 0.0f) },\n \t{ &controls::AwbMode, ControlInfo(controls::AwbModeValues) },\n \t{ &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) },\n \t{ &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },\n \t{ &controls::Saturation, ControlInfo(0.0f, 32.0f, 1.0f) },\n \t{ &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },\n-\t{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },\n+\t{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f, 0.0f) },\n \t{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },\n-\t{ &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000)) },\n+\t{ &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000), INT64_C(0)) },\n \t{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }\n };\n\n@@ -463,10 +463,11 @@ int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,\n \tconst Duration maxSensorFrameDuration = mode_.maxFrameLength * mode_.lineLength;\n \tctrlMap[&controls::FrameDurationLimits] =\n \t\tControlInfo(static_cast<int64_t>(minSensorFrameDuration.get<std::micro>()),\n-\t\t\t    static_cast<int64_t>(maxSensorFrameDuration.get<std::micro>()));\n+\t\t\t    static_cast<int64_t>(maxSensorFrameDuration.get<std::micro>()),\n+\t\t\t    int64_t(0));\n\n \tctrlMap[&controls::AnalogueGain] =\n-\t\tControlInfo(1.0f, static_cast<float>(helper_->gain(maxSensorGainCode_)));\n+\t\tControlInfo(1.0f, static_cast<float>(helper_->gain(maxSensorGainCode_)), 0.0f);\n\n \t/*\n \t * Calculate the max exposure limit from the frame duration limit as V4L2\n@@ -478,7 +479,8 @@ int IPARPi::configure(const IPACameraSensorInfo &sensorInfo,\n\n \tctrlMap[&controls::ExposureTime] =\n \t\tControlInfo(static_cast<int32_t>(helper_->exposure(exposureMin).get<std::micro>()),\n-\t\t\t    static_cast<int32_t>(maxShutter.get<std::micro>()));\n+\t\t\t    static_cast<int32_t>(maxShutter.get<std::micro>()),\n+\t\t\t    int32_t(0));\n\n \tresult->controlInfo = ControlInfoMap(std::move(ctrlMap), controls::controls);\n \treturn 0;\ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 27b4212b..2121bfd2 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -91,12 +91,12 @@ namespace {\n\n /* List of controls handled by the RkISP1 IPA */\n const ControlInfoMap::Map rkisp1Controls{\n-\t{ &controls::AeEnable, ControlInfo(false, true) },\n-\t{ &controls::AwbEnable, ControlInfo(false, true) },\n+\t{ &controls::AeEnable, ControlInfo(false, true, false) },\n+\t{ &controls::AwbEnable, ControlInfo(false, true, false) },\n \t{ &controls::ColourGains, ControlInfo(0.0f, 3.996f, 1.0f) },\n-\t{ &controls::Brightness, ControlInfo(-1.0f, 0.993f) },\n-\t{ &controls::Contrast, ControlInfo(0.0f, 1.993f) },\n-\t{ &controls::Saturation, ControlInfo(0.0f, 1.993f) },\n+\t{ &controls::Brightness, ControlInfo(-1.0f, 0.993f, 0.0f) },\n+\t{ &controls::Contrast, ControlInfo(0.0f, 1.993f, 0.0f) },\n+\t{ &controls::Saturation, ControlInfo(0.0f, 1.993f, 0.0f) },\n \t{ &controls::Sharpness, ControlInfo(0.0f, 10.0f, 1.0f) },\n \t{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },\n };\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 9df24603..a1bcfe49 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -42,7 +42,7 @@ namespace libcamera {\n LOG_DEFINE_CATEGORY(IPU3)\n\n static const ControlInfoMap::Map IPU3Controls = {\n-\t{ &controls::draft::PipelineDepth, ControlInfo(2, 3) },\n+\t{ &controls::draft::PipelineDepth, ControlInfo(2, 3, 0) },\n };\n\n class IPU3CameraData : public Camera::Private\ndiff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\nindex e895584d..8fd7634d 100644\n--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n@@ -954,7 +954,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t/* Add the ScalerCrop control limits based on the current mode. */\n \tRectangle ispMinCrop(data->ispMinCropSize_);\n \tispMinCrop.scaleBy(data->sensorInfo_.analogCrop.size(), data->sensorInfo_.outputSize);\n-\tctrlMap[&controls::ScalerCrop] = ControlInfo(ispMinCrop, Rectangle(data->sensorInfo_.analogCrop.size()));\n+\tctrlMap[&controls::ScalerCrop] = ControlInfo(ispMinCrop, Rectangle(data->sensorInfo_.analogCrop.size()), ispMinCrop);\n\n \tdata->controlInfo_ = ControlInfoMap(std::move(ctrlMap), result.controlInfo.idmap());\n\n","prefixes":["libcamera-devel","2/2"]}