{"id":25825,"url":"https://patchwork.libcamera.org/api/covers/25825/?format=json","web_url":"https://patchwork.libcamera.org/cover/25825/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260118202953.1554892-1-rui.wang@ideasonboard.com>","date":"2026-01-18T20:29:49","name":"[v1,0/4] Filter algorithm refactoring and mode switching","submitter":{"id":241,"url":"https://patchwork.libcamera.org/api/people/241/?format=json","name":"Rui Wang","email":"rui.wang@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/25825/mbox/","series":[{"id":5712,"url":"https://patchwork.libcamera.org/api/series/5712/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5712","date":"2026-01-18T20:29:49","name":"Filter algorithm refactoring and mode switching","version":1,"mbox":"https://patchwork.libcamera.org/series/5712/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/25825/comments/","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 D9B0DBDCBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 18 Jan 2026 20:30:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E9D6B61FC3;\n\tSun, 18 Jan 2026 21:30:09 +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 5393B61FB7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 18 Jan 2026 21:30:08 +0100 (CET)","from rui-Precision-7560.local (unknown [209.216.103.65])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CC78E1BA;\n\tSun, 18 Jan 2026 21:29:37 +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=\"SDBiOfJp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768768178;\n\tbh=q1p5sbP02DZN4NDa2g3kh+nHMGhbdvpwqtr0Aa6yNGQ=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=SDBiOfJpvmv1eeF5v2f6LwO92156VHMgaCR8h3w+nK4e7JA1eG/Q6yeo3Ds4UB7sT\n\tzYTF9g10RnqWLdXiyOhJuhGP9CwrFdvkC+dWwntfvfzIuFbohwwOoR74ZfczyjbA2u\n\tp8Jf1Jqhs1h8Qryqfm5xBfvXtJrsYascc+poJNDs=","From":"Rui Wang <rui.wang@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Rui Wang <rui.wang@ideasonboard.com>","Subject":"[PATCH v1 0/4]  Filter algorithm refactoring and mode switching","Date":"Sun, 18 Jan 2026 15:29:49 -0500","Message-ID":"<20260118202953.1554892-1-rui.wang@ideasonboard.com>","X-Mailer":"git-send-email 2.43.0","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 patch series refactors the RkISP1 Filter algorithm to support\nnoise reduction mode switching via tuning data, similar to the DPF\nalgorithm implementation.\nThe current Filter implementation uses hardcoded lookup tables for\ndenoise and sharpness parameters. This series replaces that approach\nwith a flexible mode-based configuration system that allows filter\nparameters to be fully specified in YAML tuning files.\nKey improvements:\n- Introduce noise reduction mode switching infrastructure with support\n  for multiple configurable modes (Minimal, Fast, HighQuality, ZSL).\n- Replace hardcoded denoise/sharpness lookup tables with tuning data\n  loaded from YAML configuration files.\n- Maintain sharpness control as an override mechanism that modulates\n  sharpening factors on top of the base noise reduction mode.\n- Refactor prepare() into helper functions for better code organization.\n- Change filter.denoise from uint8_t to bool to reflect its actual usage.\n- Add initial tuning configurations for IMX219 and OV5640 sensors.\nThe implementation follows the same design pattern as the DPF algorithm,\nensuring consistency across the rkisp1 IPA module and enabling\nsensor-specific filter tuning.\n\n\nRui Wang (4):\n  ipa: rkisp1: algorithms: filter: Implement noise reduction mode\n    switching\n  pa: rkisp1: algorithms: filter: Add helper fun and sharpness presets\n  ipa: rkisp1: algorithms: filter: Integrate mode switching with\n    prepare()\n  ipa: rkisp1: data: Add Filter tuning configuration for sensors\n\n src/ipa/rkisp1/algorithms/filter.cpp | 346 +++++++++++++++++++--------\n src/ipa/rkisp1/algorithms/filter.h   |  23 +-\n src/ipa/rkisp1/data/imx219.yaml      |  48 ++++\n src/ipa/rkisp1/data/ov5640.yaml      |  47 ++++\n src/ipa/rkisp1/ipa_context.h         |   2 +-\n 5 files changed, 361 insertions(+), 105 deletions(-)"}