Patch Detail
Show a patch.
GET /api/patches/25257/?format=api
{ "id": 25257, "url": "https://patchwork.libcamera.org/api/patches/25257/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25257/", "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": "<20251127023739.179652-21-bryan.odonoghue@linaro.org>", "date": "2025-11-27T02:37:35", "name": "[v5,20/24] libcamera: software_isp: Implement a static init() routine", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "65b0923580d2c9fc2022cc18486713943c906acc", "submitter": { "id": 175, "url": "https://patchwork.libcamera.org/api/people/175/?format=api", "name": "Bryan O'Donoghue", "email": "bryan.odonoghue@linaro.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25257/mbox/", "series": [ { "id": 5617, "url": "https://patchwork.libcamera.org/api/series/5617/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5617", "date": "2025-11-27T02:37:15", "name": "Add GLES 2.0 GPUISP to libcamera", "version": 5, "mbox": "https://patchwork.libcamera.org/series/5617/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25257/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25257/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 7E526C0F2A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 27 Nov 2025 02:38:31 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3813560AC8;\n\tThu, 27 Nov 2025 03:38:31 +0100 (CET)", "from mail-wm1-x333.google.com (mail-wm1-x333.google.com\n\t[IPv6:2a00:1450:4864:20::333])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4212860C68\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 27 Nov 2025 03:38:26 +0100 (CET)", "by mail-wm1-x333.google.com with SMTP id\n\t5b1f17b1804b1-4775895d69cso1144955e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Nov 2025 18:38:26 -0800 (PST)", "from inspiron14p-linux.ht.home (188-141-3-146.dynamic.upc.ie.\n\t[188.141.3.146]) by smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4790552c3c9sm58186345e9.0.2025.11.26.18.38.24\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 26 Nov 2025 18:38:25 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"E67RJRJj\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764211105; x=1764815905;\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=XGZEOlg3N1WKIZQYXL2EvkWqNCC95nhRh04jkinhjFs=;\n\tb=E67RJRJj7Q/nEpQohbeByB0My/BX2QmeUGLEUSDFscus09NFeJxOHUJ++TIPnJhbEf\n\tyN8HX7Eo0t+ZwPrGGF7A1OFsbn8rTLpiq5ilTsXzcYAGZBSCQPAgZSRbcKlfzdXib12R\n\tqYOc07IoeQYZgIDJmD7PemCHjQMOnjyyMXr9Yzib7dN2QSkXZ7QYgBtNiONH7VJ9NvV+\n\t3VbbyCqdTb9hHN08YquF1hS0iBMKnOKsyscm9vMQIsnV/91Ll33A+S34w2v/ws7BTFnB\n\tvPLQJovd3t5SlQOzs/FHV8LOTuODtuGzzd9SWpvRuXddBN8q8fQMyGplgzGv21BH2uUc\n\tyOew==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764211105; x=1764815905;\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=XGZEOlg3N1WKIZQYXL2EvkWqNCC95nhRh04jkinhjFs=;\n\tb=mTs+/hd3VBM9Jo/uF4yYstOTx8yHCpV20/QXTptVh9eh4BKqWjAb6jUd1QG/pKBYEq\n\tHGDT4368KKLsnpEYe0wcxe4+r2LMEL2+K/4KZsfpWikJ6q8tz+Kqx8w/5poskuJmBIjE\n\tC9d+K7EwAnLJNW8JmmqdOPh0ozjbHfAfItwRRvI3QJTN/isNDnfkDWmAydoyzpTcZZ8Q\n\tEEKi1FraGAAqh7Dp/vPI2Dl4jpR0D0Yxum4f9BKJcl2ShP8gwxizQ4JKebN2WAmzL5yT\n\txPEMxnP9dcZL5RcLYNwMo7ZxaozmZviCCQL71//NV+nS9+OyJp322a+uTsuhYOCrFbs1\n\ti47g==", "X-Gm-Message-State": "AOJu0YwrrxXOTc4zORQNK1l7CqVctPBh6KNvk4eVBaTXC8XCNrRh65Qz\n\tV8UjkzoMmpjmI1EmglbG4lHs9Vt2z7Oy7fu8yz/XLR/Gqyab+oJxVuu+PK1CT0zO93G8UiCfdD1\n\tg8B+oqrE=", "X-Gm-Gg": "ASbGnctIZK59NXXZrY+/tZT8ugveYe/8DjNLupV28fGv4j1HEIr5iCGNnBOb5axtMBQ\n\tYYPYhZBXLZTvxtfrlaHOoOlNqejW6H3uKb0UJuKYJyOZGLYeNEI2/8GdiSDlQbWU04/4Jbc+8c2\n\tgpYCTeOpEOJmvPyK43eCukl3hsEZOIKMq2f9C+XKYPmedPII6jOrjtUcZswVQnWYJEyvmvMY7qr\n\tGdb4I1+eqvUZ9eRZQiCLHkrhEM9dCppYXL4ZlZDg4Ob7th/7ALyOaQp/8hgy4RJxoGRaNYIHSWJ\n\tmf619M522GvFJxneoeIahe0WGSrQv37gR87MHhqSKLeZO3SAksOwXyKoRYTDnXFY/7sa2LOBy9C\n\tw77QK81PZLJO4IRl3BK0Gl3/YO4n8QWzwFi+xunRXGMpnEHSjWNL9hBdFXURlFci9wSqSoKQsJx\n\tt1m+TGHhjPkOrrEMaolDwuCpGVBFYna/VW7Yhyiq/NSENG9bV70C1TUqHSrSa8dm1X6Wk=", "X-Google-Smtp-Source": "AGHT+IFvWfWYkN+rc0xLbjG+TdVbs+pnGLNubdJos3xPRMeIlU6MlnjEfdWYaEu5n3FuiLeTr2On8Q==", "X-Received": "by 2002:a05:600c:6287:b0:477:7925:f7fb with SMTP id\n\t5b1f17b1804b1-47904ad0724mr75489355e9.10.1764211105619; \n\tWed, 26 Nov 2025 18:38:25 -0800 (PST)", "From": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "pavel@ucw.cz,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>", "Subject": "[PATCH v5 20/24] libcamera: software_isp: Implement a static init()\n\troutine", "Date": "Thu, 27 Nov 2025 02:37:35 +0000", "Message-ID": "<20251127023739.179652-21-bryan.odonoghue@linaro.org>", "X-Mailer": "git-send-email 2.51.2", "In-Reply-To": "<20251127023739.179652-1-bryan.odonoghue@linaro.org>", "References": "<20251127023739.179652-1-bryan.odonoghue@linaro.org>", "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": "This is an overloaded init() routine that allows the CCM class to self\nenumerate a default identity CCM at colour temperature 6500k.\n\nThis is required for the case where we are running GPUISP but don't have a\nCCM for the sensor. In this case we want to generate a default CCM and use\nit instead of using the CPUISP's lookup tables.\n\nSigned-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n---\n src/ipa/simple/algorithms/ccm.cpp | 18 ++++++++++++++++++\n src/ipa/simple/algorithms/ccm.h | 1 +\n 2 files changed, 19 insertions(+)", "diff": "diff --git a/src/ipa/simple/algorithms/ccm.cpp b/src/ipa/simple/algorithms/ccm.cpp\nindex 0a98406c1..e3da6adfc 100644\n--- a/src/ipa/simple/algorithms/ccm.cpp\n+++ b/src/ipa/simple/algorithms/ccm.cpp\n@@ -42,6 +42,24 @@ int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData\n \treturn 0;\n }\n \n+int Ccm::init([[maybe_unused]] IPAContext &context)\n+{\n+\t/* Initialize with identity CCM at standard D65 color temperature */\n+\tfloat identity[] = { 1, 0, 0,\n+\t\t\t 0, 1, 0,\n+\t\t\t 0, 0, 1 };\n+\tMatrix<float, 3, 3> identityMatrix(identity);\n+\n+\tstd::map<unsigned int, Matrix<float, 3, 3>> ccmData;\n+\tccmData[6500] = identityMatrix;\n+\n+\tccm_ = Interpolator<Matrix<float, 3, 3>>(std::move(ccmData));\n+\n+\tcontext.ccmEnabled = true;\n+\tcontext.ctrlMap[&controls::Saturation] = ControlInfo(0.0f, 2.0f, 1.0f);\n+\treturn 0;\n+}\n+\n int Ccm::configure(IPAContext &context,\n \t\t [[maybe_unused]] const IPAConfigInfo &configInfo)\n {\ndiff --git a/src/ipa/simple/algorithms/ccm.h b/src/ipa/simple/algorithms/ccm.h\nindex 8279a3d59..b46f17726 100644\n--- a/src/ipa/simple/algorithms/ccm.h\n+++ b/src/ipa/simple/algorithms/ccm.h\n@@ -26,6 +26,7 @@ public:\n \t~Ccm() = default;\n \n \tint init(IPAContext &context, const YamlObject &tuningData) override;\n+\tint init(IPAContext &context) override;\n \tint configure(IPAContext &context,\n \t\t const IPAConfigInfo &configInfo) override;\n \tvoid queueRequest(typename Module::Context &context,\n", "prefixes": [ "v5", "20/24" ] }