Patch Detail
Show a patch.
GET /api/1.1/patches/24861/?format=api
{ "id": 24861, "url": "https://patchwork.libcamera.org/api/1.1/patches/24861/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24861/", "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": "<20251028170847.2673396-9-rui.wang@ideasonboard.com>", "date": "2025-10-28T17:08:38", "name": "[v1,09/16] ipa: rkisp1: algorithms: dpf: handle DPF enable toggle", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "c65560532e90d09b3e07f0510bf8031d53b2ee7f", "submitter": { "id": 241, "url": "https://patchwork.libcamera.org/api/1.1/people/241/?format=api", "name": "Rui Wang", "email": "rui.wang@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24861/mbox/", "series": [ { "id": 5539, "url": "https://patchwork.libcamera.org/api/1.1/series/5539/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5539", "date": "2025-10-28T17:08:30", "name": "[v1,01/16] ipa: rkisp1: algorithms: add Denoise base class shell", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5539/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24861/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24861/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 E11A6BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 28 Oct 2025 17:09:20 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 740F660840;\n\tTue, 28 Oct 2025 18:09:20 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 440286080D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Oct 2025 18:09:16 +0100 (CET)", "from rui-Precision-7560.local (unknown [209.216.122.90])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 61DDE16CD;\n\tTue, 28 Oct 2025 18:07:27 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"HF7coTxD\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761671247;\n\tbh=zNy83JNJ07WUcf2XuDb7bWd83wJfMp4DWSgffFPJik8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=HF7coTxD0ryjE46O1YkufM6TKI3gm+iDcgg81e+lQtGWUn3bKq5R7OzSfnkdgdhcM\n\t0AVOqJzGnEBB7k3Le1rfrbTcIL1K14kVFmkX8ggrtpeSd8v/x0/Aa0I8x5uX4jKZ4H\n\tRP74bJTNaJ44Wgxd88PW2GtdUFREAHmYr246BCVY=", "From": "Rui Wang <rui.wang@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Rui Wang <rui.wang@ideasonboard.com>", "Subject": "[PATCH v1 09/16] ipa: rkisp1: algorithms: dpf: handle DPF enable\n\ttoggle", "Date": "Tue, 28 Oct 2025 13:08:38 -0400", "Message-ID": "<20251028170847.2673396-9-rui.wang@ideasonboard.com>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20251028170847.2673396-1-rui.wang@ideasonboard.com>", "References": "<20251028170847.2673396-1-rui.wang@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": "Implement handleEnableControl() to process the DpfEnable control and\nsynchronize the enable state across context and frame state. Update\nqueueRequest() to call this handler, clearing the update flag first.\n\nThe enable control allows applications to globally enable/disable DPF\nprocessing without changing other configuration. Changes are logged\nand trigger frame updates.\n\nThis replaces the previous draft::NoiseReductionMode handling with\nthe new RkISP1-specific DpfEnable control.\n\nSigned-off-by: Rui Wang <rui.wang@ideasonboard.com>\n---\n src/ipa/rkisp1/algorithms/denoise.h | 1 +\n src/ipa/rkisp1/algorithms/dpf.cpp | 48 ++++++++++-------------------\n src/ipa/rkisp1/algorithms/dpf.h | 1 +\n 3 files changed, 18 insertions(+), 32 deletions(-)", "diff": "diff --git a/src/ipa/rkisp1/algorithms/denoise.h b/src/ipa/rkisp1/algorithms/denoise.h\nindex 5fc78588..5bc3f941 100644\n--- a/src/ipa/rkisp1/algorithms/denoise.h\n+++ b/src/ipa/rkisp1/algorithms/denoise.h\n@@ -37,6 +37,7 @@ protected:\n \ttemplate<typename LevelContainer>\n \tint selectIsoBand(unsigned iso, const LevelContainer &levels) const;\n \tvirtual bool parseConfig(const YamlObject &tuningData) = 0;\n+\tvirtual void handleEnableControl(const ControlList &controls, IPAFrameContext &frameContext, IPAContext &context) = 0;\n \n private:\n \tbool manualMode_ = false; /**< Current manual/auto mode state */\ndiff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\nindex a5059741..d0bed3e4 100644\n--- a/src/ipa/rkisp1/algorithms/dpf.cpp\n+++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n@@ -229,6 +229,20 @@ bool Dpf::parseSingleConfig(const YamlObject &config,\n \treturn true;\n }\n \n+void Dpf::handleEnableControl(const ControlList &controls, IPAFrameContext &frameContext, IPAContext &context)\n+{\n+\tif (const auto &c = controls.get(controls::rkisp1::DpfEnable); c) {\n+\t\tbool requested = *c != 0;\n+\t\tif (requested != enableDpf_) {\n+\t\t\tenableDpf_ = requested;\n+\t\t\tframeContext.dpf.update = true;\n+\t\t\tLOG(RkISP1Dpf, Info) << \"DPF global \" << (enableDpf_ ? \"enabled\" : \"disabled\");\n+\t\t}\n+\t}\n+\tcontext.activeState.dpf.denoise = enableDpf_;\n+\tframeContext.dpf.denoise = enableDpf_;\n+}\n+\n /**\n * \\copydoc libcamera::ipa::Algorithm::queueRequest\n */\n@@ -237,38 +251,8 @@ void Dpf::queueRequest(IPAContext &context,\n \t\t IPAFrameContext &frameContext,\n \t\t const ControlList &controls)\n {\n-\tauto &dpf = context.activeState.dpf;\n-\tbool update = false;\n-\n-\tconst auto &denoise = controls.get(controls::draft::NoiseReductionMode);\n-\tif (denoise) {\n-\t\tLOG(RkISP1Dpf, Debug) << \"Set denoise to \" << *denoise;\n-\n-\t\tswitch (*denoise) {\n-\t\tcase controls::draft::NoiseReductionModeOff:\n-\t\t\tif (dpf.denoise) {\n-\t\t\t\tdpf.denoise = false;\n-\t\t\t\tupdate = true;\n-\t\t\t}\n-\t\t\tbreak;\n-\t\tcase controls::draft::NoiseReductionModeMinimal:\n-\t\tcase controls::draft::NoiseReductionModeHighQuality:\n-\t\tcase controls::draft::NoiseReductionModeFast:\n-\t\t\tif (!dpf.denoise) {\n-\t\t\t\tdpf.denoise = true;\n-\t\t\t\tupdate = true;\n-\t\t\t}\n-\t\t\tbreak;\n-\t\tdefault:\n-\t\t\tLOG(RkISP1Dpf, Error)\n-\t\t\t\t<< \"Unsupported denoise value \"\n-\t\t\t\t<< *denoise;\n-\t\t\tbreak;\n-\t\t}\n-\t}\n-\n-\tframeContext.dpf.denoise = dpf.denoise;\n-\tframeContext.dpf.update = update;\n+\tframeContext.dpf.update = false;\n+\thandleEnableControl(controls, frameContext, context);\n }\n \n /**\ndiff --git a/src/ipa/rkisp1/algorithms/dpf.h b/src/ipa/rkisp1/algorithms/dpf.h\nindex faeb6c27..c01f711c 100644\n--- a/src/ipa/rkisp1/algorithms/dpf.h\n+++ b/src/ipa/rkisp1/algorithms/dpf.h\n@@ -50,6 +50,7 @@ private:\n \tbool useIsoLevels_ = false;\n \tbool enableDpf_ = true; /* YAML master enable */\n \n+\tvoid handleEnableControl(const ControlList &controls, IPAFrameContext &frameContext, IPAContext &context) override;\n \tbool parseConfig(const YamlObject &tuningData) override;\n \tbool parseSingleConfig(const YamlObject &config,\n \t\t\t rkisp1_cif_isp_dpf_config &cfg,\n", "prefixes": [ "v1", "09/16" ] }