[{"id":39064,"web_url":"https://patchwork.libcamera.org/comment/39064/","msgid":"<e482c669-7091-4e6e-ae1d-6d9552e324f7@ideasonboard.com>","date":"2026-06-15T08:16:49","subject":"Re: [PATCH 4/6] libcamera: Drop 'yaml' prefix from ValueNode\n\tvariables","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 06. 11. 3:17 keltezéssel, Laurent Pinchart írta:\n> Many ValueNode variables use a 'yaml' prefix in their name. This is a\n> leftover from when the ValueNode class was named YamlObject, and is now\n> confusing.\n> \n> Remove the prefix by either simply dropping it, renaming the variable\n> when its name would clash, or removing temporary variables altogether.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   src/android/camera_hal_config.cpp          |  6 +--\n>   src/ipa/libipa/agc_mean_luminance.cpp      | 12 ++---\n>   src/ipa/libipa/awb.cpp                     |  6 +--\n>   src/ipa/mali-c55/algorithms/lsc.cpp        | 15 +++----\n>   src/ipa/rkisp1/algorithms/agc.cpp          |  4 +-\n>   src/ipa/rkisp1/algorithms/lsc.cpp          | 51 ++++++++++------------\n>   src/ipa/rpi/controller/rpi/agc_channel.cpp |  4 +-\n>   7 files changed, 46 insertions(+), 52 deletions(-)\n> \n> diff --git a/src/android/camera_hal_config.cpp b/src/android/camera_hal_config.cpp\n> index 4a9c0577a0be..3631cb7ad9f2 100644\n> --- a/src/android/camera_hal_config.cpp\n> +++ b/src/android/camera_hal_config.cpp\n> @@ -76,12 +76,12 @@ int CameraHalConfig::Private::parseConfigFile(File &file,\n>   \tif (!root->contains(\"cameras\"))\n>   \t\treturn -EINVAL;\n>   \n> -\tconst ValueNode &yamlObjectCameras = (*root)[\"cameras\"];\n> +\tconst ValueNode &camerasNode = (*root)[\"cameras\"];\n>   \n> -\tif (!yamlObjectCameras.isDictionary())\n> +\tif (!camerasNode.isDictionary())\n>   \t\treturn -EINVAL;\n>   \n> -\tfor (const auto &[cameraId, configData] : yamlObjectCameras.asDict()) {\n> +\tfor (const auto &[cameraId, configData] : camerasNode.asDict()) {\n>   \t\tif (parseCameraConfigData(cameraId, configData))\n>   \t\t\treturn -EINVAL;\n>   \t}\n> diff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp\n> index c226dd23552c..2d3bc709f3c1 100644\n> --- a/src/ipa/libipa/agc_mean_luminance.cpp\n> +++ b/src/ipa/libipa/agc_mean_luminance.cpp\n> @@ -218,9 +218,9 @@ int AgcMeanLuminance::parseConstraintModes(const ValueNode &tuningData)\n>   {\n>   \tstd::vector<ControlValue> availableConstraintModes;\n>   \n> -\tconst ValueNode &yamlConstraintModes = tuningData[controls::AeConstraintMode.name()];\n> -\tif (yamlConstraintModes.isDictionary()) {\n> -\t\tfor (const auto &[modeName, modeDict] : yamlConstraintModes.asDict()) {\n> +\tconst ValueNode &constraintModes = tuningData[controls::AeConstraintMode.name()];\n> +\tif (constraintModes.isDictionary()) {\n> +\t\tfor (const auto &[modeName, modeDict] : constraintModes.asDict()) {\n>   \t\t\tif (AeConstraintModeNameValueMap.find(modeName) ==\n>   \t\t\t    AeConstraintModeNameValueMap.end()) {\n>   \t\t\t\tLOG(AgcMeanLuminance, Warning)\n> @@ -273,9 +273,9 @@ int AgcMeanLuminance::parseExposureModes(const ValueNode &tuningData)\n>   {\n>   \tstd::vector<ControlValue> availableExposureModes;\n>   \n> -\tconst ValueNode &yamlExposureModes = tuningData[controls::AeExposureMode.name()];\n> -\tif (yamlExposureModes.isDictionary()) {\n> -\t\tfor (const auto &[modeName, modeValues] : yamlExposureModes.asDict()) {\n> +\tconst ValueNode &exposureModes = tuningData[controls::AeExposureMode.name()];\n> +\tif (exposureModes.isDictionary()) {\n> +\t\tfor (const auto &[modeName, modeValues] : exposureModes.asDict()) {\n>   \t\t\tif (AeExposureModeNameValueMap.find(modeName) ==\n>   \t\t\t    AeExposureModeNameValueMap.end()) {\n>   \t\t\t\tLOG(AgcMeanLuminance, Warning)\n> diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp\n> index af966f1e007c..29a78069c52c 100644\n> --- a/src/ipa/libipa/awb.cpp\n> +++ b/src/ipa/libipa/awb.cpp\n> @@ -167,14 +167,14 @@ int AwbAlgorithm::parseModeConfigs(const ValueNode &tuningData,\n>   {\n>   \tstd::vector<ControlValue> availableModes;\n>   \n> -\tconst ValueNode &yamlModes = tuningData[controls::AwbMode.name()];\n> -\tif (!yamlModes.isDictionary()) {\n> +\tconst ValueNode &modes = tuningData[controls::AwbMode.name()];\n> +\tif (!modes.isDictionary()) {\n>   \t\tLOG(Awb, Error)\n>   \t\t\t<< \"AwbModes must be a dictionary.\";\n>   \t\treturn -EINVAL;\n>   \t}\n>   \n> -\tfor (const auto &[modeName, modeDict] : yamlModes.asDict()) {\n> +\tfor (const auto &[modeName, modeDict] : modes.asDict()) {\n>   \t\tif (controls::AwbModeNameValueMap.find(modeName) ==\n>   \t\t    controls::AwbModeNameValueMap.end()) {\n>   \t\t\tLOG(Awb, Warning)\n> diff --git a/src/ipa/mali-c55/algorithms/lsc.cpp b/src/ipa/mali-c55/algorithms/lsc.cpp\n> index 36e50163aecc..097239dcef3e 100644\n> --- a/src/ipa/mali-c55/algorithms/lsc.cpp\n> +++ b/src/ipa/mali-c55/algorithms/lsc.cpp\n> @@ -26,16 +26,15 @@ int Lsc::init([[maybe_unused]] IPAContext &context, const ValueNode &tuningData)\n>   \n>   \tmeshScale_ = tuningData[\"meshScale\"].get<uint32_t>(0);\n>   \n> -\tconst ValueNode &yamlSets = tuningData[\"sets\"];\n> -\tif (!yamlSets.isList()) {\n> +\tconst ValueNode &sets = tuningData[\"sets\"];\n> +\tif (!sets.isList()) {\n>   \t\tLOG(MaliC55Lsc, Error) << \"LSC tables missing or invalid\";\n>   \t\treturn -EINVAL;\n>   \t}\n>   \n>   \tsize_t tableSize = 0;\n> -\tconst auto &sets = yamlSets.asList();\n> -\tfor (const auto &yamlSet : sets) {\n> -\t\tuint32_t ct = yamlSet[\"ct\"].get<uint32_t>(0);\n> +\tfor (const auto &set : sets.asList()) {\n> +\t\tuint32_t ct = set[\"ct\"].get<uint32_t>(0);\n>   \n>   \t\tif (!ct) {\n>   \t\t\tLOG(MaliC55Lsc, Error) << \"Invalid colour temperature\";\n> @@ -50,11 +49,11 @@ int Lsc::init([[maybe_unused]] IPAContext &context, const ValueNode &tuningData)\n>   \t\t}\n>   \n>   \t\tstd::vector<uint8_t> rTable =\n> -\t\t\tyamlSet[\"r\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n> +\t\t\tset[\"r\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n>   \t\tstd::vector<uint8_t> gTable =\n> -\t\t\tyamlSet[\"g\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n> +\t\t\tset[\"g\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n>   \t\tstd::vector<uint8_t> bTable =\n> -\t\t\tyamlSet[\"b\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n> +\t\t\tset[\"b\"].get<std::vector<uint8_t>>().value_or(utils::defopt);\n>   \n>   \t\t/*\n>   \t\t * Some validation to do; only 16x16 and 32x32 tables of\n> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\n> index 9bb9d943163f..aace46a8d094 100644\n> --- a/src/ipa/rkisp1/algorithms/agc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/agc.cpp\n> @@ -142,8 +142,8 @@ int Agc::init(IPAContext &context, const ValueNode &tuningData)\n>   \tif (ret)\n>   \t\treturn ret;\n>   \n> -\tconst ValueNode &yamlMeteringModes = tuningData[\"AeMeteringMode\"];\n> -\tret = parseMeteringModes(context, yamlMeteringModes);\n> +\tconst ValueNode &meteringModes = tuningData[\"AeMeteringMode\"];\n> +\tret = parseMeteringModes(context, meteringModes);\n>   \tif (ret)\n>   \t\treturn ret;\n>   \n> diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp\n> index 25f7c512b35c..a7e3ef8b2eb9 100644\n> --- a/src/ipa/rkisp1/algorithms/lsc.cpp\n> +++ b/src/ipa/rkisp1/algorithms/lsc.cpp\n> @@ -184,20 +184,19 @@ public:\n>   \t{\n>   \t}\n>   \n> -\tint parseLscData(const ValueNode &yamlSets,\n> +\tint parseLscData(const ValueNode &sets,\n>   \t\t\t LensShadingCorrection::ShadingDescriptorMap &lscData);\n>   \n>   private:\n>   \tSize sensorSize_;\n>   };\n>   \n> -int LscPolynomialLoader::parseLscData(const ValueNode &yamlSets,\n> +int LscPolynomialLoader::parseLscData(const ValueNode &sets,\n>   \t\t\t\t      LensShadingCorrection::ShadingDescriptorMap &lscData)\n>   {\n> -\tconst auto &sets = yamlSets.asList();\n> -\tfor (const auto &yamlSet : sets) {\n> +\tfor (const auto &set : sets.asList()) {\n>   \t\tstd::optional<LscPolynomial> pr, pgr, pgb, pb;\n> -\t\tuint32_t ct = yamlSet[\"ct\"].get<uint32_t>(0);\n> +\t\tuint32_t ct = set[\"ct\"].get<uint32_t>(0);\n>   \n>   \t\tif (lscData.count(ct)) {\n>   \t\t\tLOG(RkISP1Lsc, Error)\n> @@ -206,10 +205,10 @@ int LscPolynomialLoader::parseLscData(const ValueNode &yamlSets,\n>   \t\t\treturn -EINVAL;\n>   \t\t}\n>   \n> -\t\tpr = yamlSet[\"r\"].get<LscPolynomial>();\n> -\t\tpgr = yamlSet[\"gr\"].get<LscPolynomial>();\n> -\t\tpgb = yamlSet[\"gb\"].get<LscPolynomial>();\n> -\t\tpb = yamlSet[\"b\"].get<LscPolynomial>();\n> +\t\tpr = set[\"r\"].get<LscPolynomial>();\n> +\t\tpgr = set[\"gr\"].get<LscPolynomial>();\n> +\t\tpgb = set[\"gb\"].get<LscPolynomial>();\n> +\t\tpb = set[\"b\"].get<LscPolynomial>();\n>   \n>   \t\tif (!(pr || pgr || pgb || pb)) {\n>   \t\t\tLOG(RkISP1Lsc, Error)\n> @@ -261,7 +260,7 @@ private:\n>   class LscTableLoader\n>   {\n>   public:\n> -\tint parseLscData(const ValueNode &yamlSets,\n> +\tint parseLscData(const ValueNode &sets,\n>   \t\t\t LensShadingCorrection::ShadingDescriptorMap &lscData);\n>   \n>   private:\n> @@ -269,13 +268,11 @@ private:\n>   \t\t\t\t\t const char *prop);\n>   };\n>   \n> -int LscTableLoader::parseLscData(const ValueNode &yamlSets,\n> +int LscTableLoader::parseLscData(const ValueNode &sets,\n>   \t\t\t\t LensShadingCorrection::ShadingDescriptorMap &lscData)\n>   {\n> -\tconst auto &sets = yamlSets.asList();\n> -\n> -\tfor (const auto &yamlSet : sets) {\n> -\t\tuint32_t ct = yamlSet[\"ct\"].get<uint32_t>(0);\n> +\tfor (const auto &set : sets.asList()) {\n> +\t\tuint32_t ct = set[\"ct\"].get<uint32_t>(0);\n>   \n>   \t\tif (lscData.count(ct)) {\n>   \t\t\tLOG(RkISP1Lsc, Error)\n> @@ -284,14 +281,14 @@ int LscTableLoader::parseLscData(const ValueNode &yamlSets,\n>   \t\t\treturn -EINVAL;\n>   \t\t}\n>   \n> -\t\tLensShadingCorrection::Components set;\n> -\t\tset.r = parseTable(yamlSet, \"r\");\n> -\t\tset.gr = parseTable(yamlSet, \"gr\");\n> -\t\tset.gb = parseTable(yamlSet, \"gb\");\n> -\t\tset.b = parseTable(yamlSet, \"b\");\n> +\t\tLensShadingCorrection::Components components;\n> +\t\tcomponents.r = parseTable(set, \"r\");\n> +\t\tcomponents.gr = parseTable(set, \"gr\");\n> +\t\tcomponents.gb = parseTable(set, \"gb\");\n> +\t\tcomponents.b = parseTable(set, \"b\");\n>   \n> -\t\tif (set.r.empty() || set.gr.empty() ||\n> -\t\t    set.gb.empty() || set.b.empty()) {\n> +\t\tif (components.r.empty() || components.gr.empty() ||\n> +\t\t    components.gb.empty() || components.b.empty()) {\n>   \t\t\tLOG(RkISP1Lsc, Error)\n>   \t\t\t\t<< \"Set for color temperature \" << ct\n>   \t\t\t\t<< \" is missing tables\";\n> @@ -299,7 +296,7 @@ int LscTableLoader::parseLscData(const ValueNode &yamlSets,\n>   \t\t}\n>   \n>   \t\tlscData.emplace(\n> -\t\t\tct, std::make_unique<LscTableShadingDescriptor>(std::move(set)));\n> +\t\t\tct, std::make_unique<LscTableShadingDescriptor>(std::move(components)));\n>   \t}\n>   \n>   \tif (lscData.empty()) {\n> @@ -384,8 +381,8 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,\n>   \t\treturn -EINVAL;\n>   \n>   \t/* Get all defined sets to apply. */\n> -\tconst ValueNode &yamlSets = tuningData[\"sets\"];\n> -\tif (!yamlSets.isList()) {\n> +\tconst ValueNode &sets = tuningData[\"sets\"];\n> +\tif (!sets.isList()) {\n>   \t\tLOG(RkISP1Lsc, Error)\n>   \t\t\t<< \"'sets' parameter not found in tuning file\";\n>   \t\treturn -EINVAL;\n> @@ -398,7 +395,7 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,\n>   \tif (type == \"table\") {\n>   \t\tLOG(RkISP1Lsc, Debug) << \"Loading tabular LSC data.\";\n>   \t\tauto loader = LscTableLoader();\n> -\t\tret = loader.parseLscData(yamlSets, lscData);\n> +\t\tret = loader.parseLscData(sets, lscData);\n>   \t} else if (type == \"polynomial\") {\n>   \t\tLOG(RkISP1Lsc, Debug) << \"Loading polynomial LSC data.\";\n>   \t\t/*\n> @@ -406,7 +403,7 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,\n>   \t\t * Let's wait how the internal discussions progress.\n>   \t\t */\n>   \t\tauto loader = LscPolynomialLoader(context.sensorInfo.activeAreaSize);\n> -\t\tret = loader.parseLscData(yamlSets, lscData);\n> +\t\tret = loader.parseLscData(sets, lscData);\n>   \t} else {\n>   \t\tLOG(RkISP1Lsc, Error) << \"Unsupported LSC data type '\"\n>   \t\t\t\t      << type << \"'\";\n> diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp\n> index c9462eed850e..1f7cd0842321 100644\n> --- a/src/ipa/rpi/controller/rpi/agc_channel.cpp\n> +++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp\n> @@ -31,9 +31,7 @@ LOG_DECLARE_CATEGORY(RPiAgc)\n>   \n>   int AgcMeteringMode::read(const libcamera::ValueNode &params)\n>   {\n> -\tconst ValueNode &yamlWeights = params[\"weights\"];\n> -\n> -\tfor (const auto &p : yamlWeights.asList()) {\n> +\tfor (const auto &p : params[\"weights\"].asList()) {\n>   \t\tauto value = p.get<double>();\n>   \t\tif (!value)\n>   \t\t\treturn -EINVAL;","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 248C7C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 15 Jun 2026 08:16:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D763E623DA;\n\tMon, 15 Jun 2026 10:16:51 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 99382623CD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 15 Jun 2026 10:16:50 +0200 (CEST)","from [192.168.33.26] (185.221.142.169.nat.pool.zt.hu\n\t[185.221.142.169])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8FF32C77;\n\tMon, 15 Jun 2026 10:16:17 +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=\"cTQHHW+x\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1781511378;\n\tbh=jwjuAUXff1W/VooU7Rg2TGuqsHhlzIoFeGs3Hj5hbcc=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=cTQHHW+x9aqtm2xPFT2xQXMrj8dfPEBt0ddJ+p4uw1TEuIeUdyKMr4a3JdkMbf8pO\n\t8bRxUetl2XHfzLdGWZV6ne3qCbxUOt6AqGyqdFNrbC1mD14nUhGqMquAodcykNJPUo\n\tr0/6GJ3i48RmZ5TrkbR8kaS4n/RhmHfQP93LGu14=","Message-ID":"<e482c669-7091-4e6e-ae1d-6d9552e324f7@ideasonboard.com>","Date":"Mon, 15 Jun 2026 10:16:49 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 4/6] libcamera: Drop 'yaml' prefix from ValueNode\n\tvariables","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260611011722.1767689-1-laurent.pinchart@ideasonboard.com>\n\t<20260611011722.1767689-5-laurent.pinchart@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":"<20260611011722.1767689-5-laurent.pinchart@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>"}}]