Patch Detail
Show a patch.
GET /api/1.1/patches/26869/?format=api
{ "id": 26869, "url": "https://patchwork.libcamera.org/api/1.1/patches/26869/?format=api", "web_url": "https://patchwork.libcamera.org/patch/26869/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260611011722.1767689-5-laurent.pinchart@ideasonboard.com>", "date": "2026-06-11T01:17:20", "name": "[4/6] libcamera: Drop 'yaml' prefix from ValueNode variables", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "2bf508000d0602d88a91a1104f17ed547a258a2d", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/26869/mbox/", "series": [ { "id": 5986, "url": "https://patchwork.libcamera.org/api/1.1/series/5986/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5986", "date": "2026-06-11T01:17:16", "name": "libcamera: Drop legacy mentions of YAML", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5986/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/26869/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/26869/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 4F41DC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 11 Jun 2026 01:17:32 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A713C61F24;\n\tThu, 11 Jun 2026 03:17:31 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3E85E61F24\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Jun 2026 03:17:29 +0200 (CEST)", "from killaraus.ideasonboard.com\n\t(2001-14ba-70f3-e800--a06.rev.dnainternet.fi\n\t[IPv6:2001:14ba:70f3:e800::a06])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B66AAE0D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Jun 2026 03:16:59 +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=\"nxSMBp+H\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1781140619;\n\tbh=4ocK9YLw/uTYdkEUDDUQUAH4g1hJR4wMtb5grIb5FIs=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=nxSMBp+HUrFCznxn69C7bakyNe7IfbumVJr5O5MsQ3/ObrL1KElhiuU7P1+WBl8ek\n\tPl/N0yb42f7DUDMKiyXFRh3a+dIzsldb4XjAsmbLQGRWlAG6x9/zOTD4IAI+l5Twz5\n\tiEpRboHJ35izYQx8RoNDqQuijNZJJ/GadM8vn9ps=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Subject": "[PATCH 4/6] libcamera: Drop 'yaml' prefix from ValueNode variables", "Date": "Thu, 11 Jun 2026 04:17:20 +0300", "Message-ID": "<20260611011722.1767689-5-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.53.0", "In-Reply-To": "<20260611011722.1767689-1-laurent.pinchart@ideasonboard.com>", "References": "<20260611011722.1767689-1-laurent.pinchart@ideasonboard.com>", "MIME-Version": "1.0", "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>" }, "content": "Many ValueNode variables use a 'yaml' prefix in their name. This is a\nleftover from when the ValueNode class was named YamlObject, and is now\nconfusing.\n\nRemove the prefix by either simply dropping it, renaming the variable\nwhen its name would clash, or removing temporary variables altogether.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\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(-)", "diff": "diff --git a/src/android/camera_hal_config.cpp b/src/android/camera_hal_config.cpp\nindex 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}\ndiff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp\nindex 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)\ndiff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp\nindex 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)\ndiff --git a/src/ipa/mali-c55/algorithms/lsc.cpp b/src/ipa/mali-c55/algorithms/lsc.cpp\nindex 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\ndiff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\nindex 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 \ndiff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp\nindex 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 << \"'\";\ndiff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp\nindex 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 ¶ms)\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;\n", "prefixes": [ "4/6" ] }