Patch Detail
Show a patch.
GET /api/patches/25546/?format=api
{ "id": 25546, "url": "https://patchwork.libcamera.org/api/patches/25546/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25546/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20251212103401.3776-4-david.plowman@raspberrypi.com>", "date": "2025-12-12T10:23:52", "name": "[v3,3/4] ipa: rpi: controller: Ignore algorithms that are not enabled", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "6a279d69102d991415ce8ddbb134b6480d734e0a", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25546/mbox/", "series": [ { "id": 5659, "url": "https://patchwork.libcamera.org/api/series/5659/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5659", "date": "2025-12-12T10:23:49", "name": "Raspberry Pi AWB using neural networks", "version": 3, "mbox": "https://patchwork.libcamera.org/series/5659/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25546/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25546/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 8A7F3C326B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Dec 2025 10:34:17 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C832A61664;\n\tFri, 12 Dec 2025 11:34:16 +0100 (CET)", "from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com\n\t[IPv6:2a00:1450:4864:20::32c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B49AD61645\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Dec 2025 11:34:14 +0100 (CET)", "by mail-wm1-x32c.google.com with SMTP id\n\t5b1f17b1804b1-4779aa4f928so12448525e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Dec 2025 02:34:14 -0800 (PST)", "from localhost.localdomain ([2a06:61c0:f337:0:9c1f:b517:931a:3b19])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42fa8a7044csm12232495f8f.15.2025.12.12.02.34.11\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 12 Dec 2025 02:34:11 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"iq8uptHD\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1765535654; x=1766140454;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=rHmpk8rHk/IlsYU76ryoqPKQ/4NYcVsL5LSqEDs/vLU=;\n\tb=iq8uptHD9jKAP+c3IARobMnxAD9f/gS3puGA34R4e29ZVB+7Kj14u2JMHQuD9riakz\n\tociSFfb/3AS1IdE6/p6CDObhaBM+nfBDtwwKbnSpknN3hh9QdK92a+V2p7bo3LD1L+im\n\tuSA7ZiLfhUgIUBr1j8NUEQ1PYYXpWzTs2ur80MdCIFxqBBByRMaDVoPdcqV8HEHGgLVC\n\tZDUGyxCCnB5/0N+wf3LzAnc2jVakZMfimVwerJIm5OSlyBAj5RxNgEupvCYoLJ1tsWqX\n\tZsiZJtRPCXv6U+FZhkU2vDFn9ynO3fkV/aRchIaTujyWyCHaExqSCBX24AMfJ0KeG7pp\n\tuCAQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1765535654; x=1766140454;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=rHmpk8rHk/IlsYU76ryoqPKQ/4NYcVsL5LSqEDs/vLU=;\n\tb=QdrkKZIw5oXD7VTZpY7hQF6RJNXgcgpFPSAT+5OKHJ6dq4T5wQ6D+IJIpKQa0nRhw1\n\tMNwfL/P4Z2Ie5RbLQ/ZbWH9sU9ujy7ReiwPRmPsKetSBZVGdcTawXAVKFYyCOM/yt3wS\n\tQhnNRmnXIOv4pMgq4Ung5ySjxe0yIkokC7itxflOgMvhxEWpX5uI6oSTz+HtTQirWP1F\n\tvIGIstHyzcD1nCy6udgE49Wg2qyHdyGQ8E/0F0YweLp5GeKUqhD21KYODrh1H+w+5zyT\n\tm1RjuznPPiZ9lvPjYiiM/dRv4wai7MxU5Q3YV0AoE1Fg/RtNJXse9UIF1TOEejHB9761\n\ty9Vw==", "X-Gm-Message-State": "AOJu0Yw4wUHbEeyNmEZvWTK23saHVmcd+XLH8ZkMkVyVT8v2iNovPgvg\n\tnQUtyJvZixO+xzczXYOn9sVJHZtQ5khnqOQmREUxWlC+aQBja0pycsJkVfVBRPNxZqgsOoom1IQ\n\tFgmxd", "X-Gm-Gg": "AY/fxX4YjyRW40ilnYFO1h+A9PrXN8mW/e8OAlynV/qY93yrAFow9KePBRVOzx7QnQY\n\tvVR7GtUJveYAL8hIp5mKBnWgb7wujle9zMHs6LoMJbQfjHjBJATQwefiD+hvr8Haz4UqXafwlNB\n\tzNpBtijbeAtm7mUhhf0VTOSiCAkZ3HmK3QXt4aBTDNWRGBbzZ5ofWihXIGBuBj0MkWgGCLlREkL\n\tGiJo6r3pWmWy8ZNz+Pj7/p1MTccw6fSYG/Q4QgNiufVjg57oDYOOfPY0JSXWwwqma3BYhhOR9cy\n\tqmVOuheL2nS8tOFLzWlGdq4/H2RoHhOBnXjLJsolzGPl5sYJVlWsNxIPsKaYUby8CSaKY3+nbnq\n\trfdDtMwU2I7qvVuTHp6QHtcRoiKFQA+Edxqew8WYgg12DMdwVFJRgMYEbrpGqDCdpH6uvdX+3p+\n\ted/xXcdQC8LVLOqeEB65Ng7Rwk38CzPwkwLWfgNNmEXdpaqZcysm8b7DLDooZrHKVVeWBsuIfO+\n\taO55ZU6kE/Kh9Va+g5/L7t1Jg==", "X-Google-Smtp-Source": "AGHT+IGUmx+gGkMacnKbNrvEjBGk+ngEmge+pTwrEJByYsjGXIBzrj83XTtjPmD1k/1gentPdm1/Xw==", "X-Received": "by 2002:a05:600c:828d:b0:45b:7d77:b592 with SMTP id\n\t5b1f17b1804b1-47a8f8c05e7mr17785315e9.12.1765535653913; \n\tFri, 12 Dec 2025 02:34:13 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Peter Bailey <peter.bailey@raspberrypi.com>,\n\tDavid Plowman <david.plowman@raspberrypi.com>,\n\tNaushir Patuck <naush@raspberrypi.com>", "Subject": "[PATCH v3 3/4] ipa: rpi: controller: Ignore algorithms that are not\n\tenabled", "Date": "Fri, 12 Dec 2025 10:23:52 +0000", "Message-ID": "<20251212103401.3776-4-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.47.3", "In-Reply-To": "<20251212103401.3776-1-david.plowman@raspberrypi.com>", "References": "<20251212103401.3776-1-david.plowman@raspberrypi.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": "From: Peter Bailey <peter.bailey@raspberrypi.com>\n\nAlgorithms may now contain an \"enabled\" field which can be set to\nfalse to disable it and prevent it from being loaded. If not present,\nalgorithms are treated as enabled by default for backwards\ncompatability.\n\nWe additionally prevent duplicate versions of the same algorithm type\n(such as AWB) from loading, and flag an error. This will prevent\nundefined behaviour if (for example) two distinct AWB algorithms are\ntrying to run simultaneously.\n\nSigned-off-by: Peter Bailey <peter.bailey@raspberrypi.com>\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n---\n src/ipa/rpi/controller/controller.cpp | 18 ++++++++++++++++++\n 1 file changed, 18 insertions(+)", "diff": "diff --git a/src/ipa/rpi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp\nindex df45dcd3..88de6f36 100644\n--- a/src/ipa/rpi/controller/controller.cpp\n+++ b/src/ipa/rpi/controller/controller.cpp\n@@ -145,6 +145,14 @@ int Controller::read(char const *filename)\n \n int Controller::createAlgorithm(const std::string &name, const YamlObject ¶ms)\n {\n+\t/* Any algorithm may be disabled by setting \"enabled\" to false. */\n+\tbool enabled = params[\"enabled\"].get<bool>(true);\n+\tLOG(RPiController, Debug)\n+\t\t<< \"Algorithm \" << name << \": \"\n+\t\t<< (enabled ? \"enabled\" : \"disabled\");\n+\tif (!enabled)\n+\t\treturn 0;\n+\n \tauto it = getAlgorithms().find(name);\n \tif (it == getAlgorithms().end()) {\n \t\tLOG(RPiController, Warning)\n@@ -152,6 +160,16 @@ int Controller::createAlgorithm(const std::string &name, const YamlObject ¶m\n \t\treturn 0;\n \t}\n \n+\t/* Do not allow duplicate versions of algorithms (e.g. AWB) to run. */\n+\tsize_t pos = name.find_last_of('.');\n+\tstd::string const &algoType =\n+\t\tpos == std::string::npos ? name : name.substr(pos + 1);\n+\tif (getAlgorithm(algoType)) {\n+\t\tLOG(RPiController, Error)\n+\t\t\t<< \"Algorithm type '\" << algoType << \"' already exists\";\n+\t\treturn -1;\n+\t}\n+\n \tAlgorithm *algo = (*it->second)(this);\n \tint ret = algo->read(params);\n \tif (ret)\n", "prefixes": [ "v3", "3/4" ] }