[{"id":37317,"web_url":"https://patchwork.libcamera.org/comment/37317/","msgid":"<6qltfud75afos74svpv2ghxih7l7pyplyhvueammr2en6uw2sk@yfpdfh4dzxos>","date":"2025-12-11T15:59:32","subject":"Re: [PATCH v4 6/7] ipa: rkisp1: algorithms: dpf: Add detailed config\n\tlogging","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Rui\n\nOn Sun, Dec 07, 2025 at 07:48:07PM -0500, Rui Wang wrote:\n> Add logConfigIfChanged() helper function to log DPF configuration\n> updates when they occur. This provides visibility into the active\n> DPF parameters including:\n>\n> - Control mode and denoise enable state\n> - Filter sizes (9x9 vs 13x9 for rb)\n> - NLL scale mode (linear vs logarithmic)\n> - Gain mode\n> - Strength values (r, g, b)\n> - Spatial filter coefficients (g and rb arrays)\n> - Noise level lookup table coefficients\n>\n> The logging is triggered in prepareEnabledMode() whenever the\n> configuration is updated, helping with debugging and tuning.\n>\n> Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>\n> ---\n>\n> changelog:\n>  -Move log information into a seperate patch in series\n>\n>  src/ipa/rkisp1/algorithms/dpf.cpp | 49 +++++++++++++++++++++++++++++++\n>  src/ipa/rkisp1/algorithms/dpf.h   |  1 +\n>  2 files changed, 50 insertions(+)\n>\n> diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\n> index 68a94afe..e2e5c7ca 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.cpp\n> +++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n> @@ -274,6 +274,54 @@ bool Dpf::loadReductionConfig(int32_t mode)\n>  \treturn true;\n>  }\n>\n> +void Dpf::logConfigIfChanged(const IPAFrameContext &frameContext)\n\nI would just name it \"logConfig()\n\n> +{\n> +\tif (!frameContext.dpf.update) {\n> +\t\treturn;\n> +\t}\n\nyou know already\n\n> +\n> +\tstd::ostringstream ss;\n> +\n> +\tss << \"DPF config update: \";\n> +\tss << \" control mode=\" << static_cast<int>(runningMode_);\n> +\tss << \", denoise=\" << (frameContext.dpf.denoise ? \"enabled\" : \"disabled, \");\n> +\n> +\tss << \"rb_fltsize=\"\n> +\t   << (config_.rb_flt.fltsize == RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9 ? \"13x9\" : \"9x9\");\n> +\tss << \", nll_scale=\"\n> +\t   << (config_.nll.scale_mode == RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC ? \"log\" : \"linear\");\n> +\tss << \", gain_mode=\" << config_.gain.mode;\n> +\tss << \", strength=\" << int(strengthConfig_.r) << ',' << int(strengthConfig_.g) << ',' << int(strengthConfig_.b);\n> +\n> +\tss << \", g=[\";\n> +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> +\t\tif (i) {\n> +\t\t\tss << ',';\n> +\t\t}\n> +\t\tss << int(config_.g_flt.spatial_coeff[i]);\n> +\t}\n> +\tss << \"]\";\n> +\n> +\tss << \", rb=[\";\n> +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> +\t\tif (i) {\n> +\t\t\tss << ',';\n> +\t\t}\n> +\t\tss << int(config_.rb_flt.spatial_coeff[i]);\n> +\t}\n> +\tss << \"]\";\n> +\n> +\tss << \", nll=[\";\n> +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS; ++i) {\n> +\t\tif (i) {\n> +\t\t\tss << ',';\n> +\t\t}\n> +\t\tss << int(config_.nll.coeff[i]);\n> +\t}\n> +\tss << \"]\";\n> +\tLOG(RkISP1Dpf, Info) << ss.str();\n\nNot sure if this is worth an Info or just Debug ?\n\nDo you have a printout example ?\n\n> +}\n> +\n>  /**\n>   * \\copydoc libcamera::ipa::Algorithm::queueRequest\n>   */\n> @@ -386,6 +434,7 @@ void Dpf::prepareEnabledMode(IPAContext &context,\n>  \tstrengthConfig.setEnabled(true);\n>\n>  \t*strengthConfig = strengthConfig_;\n> +\tlogConfigIfChanged(frameContext);\n>  }\n>\n>  REGISTER_IPA_ALGORITHM(Dpf, \"Dpf\")\n> diff --git a/src/ipa/rkisp1/algorithms/dpf.h b/src/ipa/rkisp1/algorithms/dpf.h\n> index 99cdbdd3..6586256d 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.h\n> +++ b/src/ipa/rkisp1/algorithms/dpf.h\n> @@ -43,6 +43,7 @@ private:\n>  \t\t\t       rkisp1_cif_isp_dpf_strength_config &strengthConfig);\n>\n>  \tbool loadReductionConfig(int32_t mode);\n> +\tvoid logConfigIfChanged(const IPAFrameContext &frameContext);\n>\n>  \tvoid prepareDisabledMode(IPAContext &context,\n>  \t\t\t\t const uint32_t frame,\n> --\n> 2.43.0\n>","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 6E0D9BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 11 Dec 2025 15:59:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 99C5061612;\n\tThu, 11 Dec 2025 16:59:37 +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 9F26361603\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Dec 2025 16:59:36 +0100 (CET)","from ideasonboard.com (93-46-82-201.ip106.fastwebnet.it\n\t[93.46.82.201])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 163D0667;\n\tThu, 11 Dec 2025 16:59:33 +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=\"MITjbJSS\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1765468774;\n\tbh=UyTpbBOFkfI9+AtvsULrjO8coAlcJtq/LIGwYg9ole8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=MITjbJSSjK/B7YbAdyXswaoIA04S3gn/F/4HNfm5hJopWeWfgtHYAJwo1zbgIgsRw\n\tJLCPiASPXQo0xAmiZwcFbeTMNJ4ucPMJV7MXPZyyq7z/qmWwnFqgxSAhdXVyeocSmS\n\tWA6SZTO46Yvjg/Bl8VdfpS0cDRGjUuZh90a6Xi/A=","Date":"Thu, 11 Dec 2025 16:59:32 +0100","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Rui Wang <rui.wang@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v4 6/7] ipa: rkisp1: algorithms: dpf: Add detailed config\n\tlogging","Message-ID":"<6qltfud75afos74svpv2ghxih7l7pyplyhvueammr2en6uw2sk@yfpdfh4dzxos>","References":"<20251208004808.1274417-1-rui.wang@ideasonboard.com>\n\t<20251208004808.1274417-7-rui.wang@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20251208004808.1274417-7-rui.wang@ideasonboard.com>","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>"}},{"id":37356,"web_url":"https://patchwork.libcamera.org/comment/37356/","msgid":"<3968911d7be7b2ab88f4935ab916a0ce.rui.wang@ideasonboard.com>","date":"2025-12-12T23:54:39","subject":"Re: [PATCH v4 6/7] ipa: rkisp1: algorithms: dpf: Add detailed config\n\tlogging","submitter":{"id":241,"url":"https://patchwork.libcamera.org/api/people/241/","name":"Rui Wang","email":"rui.wang@ideasonboard.com"},"content":"Jacopo Mondi wrote:\n> Hi Rui\n> \n> On Sun, Dec 07, 2025 at 07:48:07PM -0500, Rui Wang wrote:\n> > Add logConfigIfChanged() helper function to log DPF configuration\n> > updates when they occur. This provides visibility into the active\n> > DPF parameters including:\n> >\n> > - Control mode and denoise enable state\n> > - Filter sizes (9x9 vs 13x9 for rb)\n> > - NLL scale mode (linear vs logarithmic)\n> > - Gain mode\n> > - Strength values (r, g, b)\n> > - Spatial filter coefficients (g and rb arrays)\n> > - Noise level lookup table coefficients\n> >\n> > The logging is triggered in prepareEnabledMode() whenever the\n> > configuration is updated, helping with debugging and tuning.\n> >\n> > Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>\n> > ---\n> >\n> > changelog:\n> >  -Move log information into a seperate patch in series\n> >\n> >  src/ipa/rkisp1/algorithms/dpf.cpp | 49 +++++++++++++++++++++++++++++++\n> >  src/ipa/rkisp1/algorithms/dpf.h   |  1 +\n> >  2 files changed, 50 insertions(+)\n> >\n> > diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\n> > index 68a94afe..e2e5c7ca 100644\n> > --- a/src/ipa/rkisp1/algorithms/dpf.cpp\n> > +++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n> > @@ -274,6 +274,54 @@ bool Dpf::loadReductionConfig(int32_t mode)\n> >  \treturn true;\n> >  }\n> >\n> > +void Dpf::logConfigIfChanged(const IPAFrameContext &frameContext)\n> \n> I would just name it \"logConfig()\nyes if that  it will  call like :\nif(updated)\n\tlogConfig(**);\n> \n> > +{\n> > +\tif (!frameContext.dpf.update) {\n> > +\t\treturn;\n> > +\t}\n> \n> you know already\n> \n> > +\n> > +\tstd::ostringstream ss;\n> > +\n> > +\tss << \"DPF config update: \";\n> > +\tss << \" control mode=\" << static_cast<int>(runningMode_);\n> > +\tss << \", denoise=\" << (frameContext.dpf.denoise ? \"enabled\" : \"disabled, \");\n> > +\n> > +\tss << \"rb_fltsize=\"\n> > +\t   << (config_.rb_flt.fltsize == RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9 ? \"13x9\" : \"9x9\");\n> > +\tss << \", nll_scale=\"\n> > +\t   << (config_.nll.scale_mode == RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC ? \"log\" : \"linear\");\n> > +\tss << \", gain_mode=\" << config_.gain.mode;\n> > +\tss << \", strength=\" << int(strengthConfig_.r) << ',' << int(strengthConfig_.g) << ',' << int(strengthConfig_.b);\n> > +\n> > +\tss << \", g=[\";\n> > +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> > +\t\tif (i) {\n> > +\t\t\tss << ',';\n> > +\t\t}\n> > +\t\tss << int(config_.g_flt.spatial_coeff[i]);\n> > +\t}\n> > +\tss << \"]\";\n> > +\n> > +\tss << \", rb=[\";\n> > +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> > +\t\tif (i) {\n> > +\t\t\tss << ',';\n> > +\t\t}\n> > +\t\tss << int(config_.rb_flt.spatial_coeff[i]);\n> > +\t}\n> > +\tss << \"]\";\n> > +\n> > +\tss << \", nll=[\";\n> > +\tfor (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS; ++i) {\n> > +\t\tif (i) {\n> > +\t\t\tss << ',';\n> > +\t\t}\n> > +\t\tss << int(config_.nll.coeff[i]);\n> > +\t}\n> > +\tss << \"]\";\n> > +\tLOG(RkISP1Dpf, Info) << ss.str();\n> \n> Not sure if this is worth an Info or just Debug ?\n>\nThose log message should belong to debug level as expected.\njust I found lots debug log print out each frame.\n> Do you have a printout example ?\n>\n[0:06:34.799242625] [393]  INFO RkISP1Dpf dpf.cpp:322 DPF config update:  control mode=2, denoise=enabledrb_fltsize=13x9, nll_scale=linear, gain_mode=5, strength=130,130,130, g=[22,18,13,8,5,2], rb=[20,18,16,11,7,3], nll=[0,26,52,78,106,138,172,208,248,292,340,392,448,508,572,640,712]\n\n> > +}\n> > +\n> >  /**\n> >   * \\copydoc libcamera::ipa::Algorithm::queueRequest\n> >   */\n> > @@ -386,6 +434,7 @@ void Dpf::prepareEnabledMode(IPAContext &context,\n> >  \tstrengthConfig.setEnabled(true);\n> >\n> >  \t*strengthConfig = strengthConfig_;\n> > +\tlogConfigIfChanged(frameContext);\n> >  }\n> >\n> >  REGISTER_IPA_ALGORITHM(Dpf, \"Dpf\")\n> > diff --git a/src/ipa/rkisp1/algorithms/dpf.h b/src/ipa/rkisp1/algorithms/dpf.h\n> > index 99cdbdd3..6586256d 100644\n> > --- a/src/ipa/rkisp1/algorithms/dpf.h\n> > +++ b/src/ipa/rkisp1/algorithms/dpf.h\n> > @@ -43,6 +43,7 @@ private:\n> >  \t\t\t       rkisp1_cif_isp_dpf_strength_config &strengthConfig);\n> >\n> >  \tbool loadReductionConfig(int32_t mode);\n> > +\tvoid logConfigIfChanged(const IPAFrameContext &frameContext);\n> >\n> >  \tvoid prepareDisabledMode(IPAContext &context,\n> >  \t\t\t\t const uint32_t frame,\n> > --\n> > 2.43.0\n> >","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 79052BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Dec 2025 23:54:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 595086192A;\n\tSat, 13 Dec 2025 00:54:46 +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 EBB33609DE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Dec 2025 00:54:44 +0100 (CET)","from pyrite.rasen.tech (unknown [198.208.62.193])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 55C02C6D;\n\tSat, 13 Dec 2025 00:54:41 +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=\"o2BFF7KF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1765583681;\n\tbh=mvW1jcTNjzobHTwp+XgYjJnPLtit5SpwlllecNn58qM=;\n\th=Date:From:To:Cc:In-Reply-To:References:Subject:From;\n\tb=o2BFF7KFCxGB6eE4LYhGCYH5Cv9PJWa/Op2RTq79+vd1TCovQ4R6naqD8P52KF90Q\n\te84QYJ2okxUe/Lm4qmWuwz2CguUl2LCUDN51yi6khh4taUsk29wIQUQDyDkWY+aJ6w\n\tUavix++HNCn+5MA1gCOOapHeb5D7pbai0sJ7nrvY=","Date":"Fri, 12 Dec 2025 18:54:39 -0500","Message-ID":"<3968911d7be7b2ab88f4935ab916a0ce.rui.wang@ideasonboard.com>","From":"Rui Wang <rui.wang@ideasonboard.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tRui Wang <rui.wang@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","In-Reply-To":"<6qltfud75afos74svpv2ghxih7l7pyplyhvueammr2en6uw2sk@yfpdfh4dzxos>","References":"<20251208004808.1274417-1-rui.wang@ideasonboard.com>\n\t<20251208004808.1274417-7-rui.wang@ideasonboard.com>\n\t<6qltfud75afos74svpv2ghxih7l7pyplyhvueammr2en6uw2sk@yfpdfh4dzxos>","Subject":"Re: [PATCH v4 6/7] ipa: rkisp1: algorithms: dpf: Add detailed config\n\tlogging","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>"}}]