[{"id":38074,"web_url":"https://patchwork.libcamera.org/comment/38074/","msgid":"<177021243756.3721496.13825992678540394900@isaac-ThinkPad-T16-Gen-2>","date":"2026-02-04T13:40:37","subject":"Re: [PATCH v12 5/7] ipa: rkisp1: algorithms: dpf: Add detailed\n\tconfig logging","submitter":{"id":215,"url":"https://patchwork.libcamera.org/api/people/215/","name":"Isaac Scott","email":"isaac.scott@ideasonboard.com"},"content":"Hi Rui,\n\nQuoting Rui Wang (2026-02-01 19:16:05)\n> Add logConfig() 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> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n> ---\n> changelog since v5:\n>  - remove curly bracket in single state if-else\n> \n>  Reviewed-by tags from v5 are carried over (no function changes).\n> \n> changelog since v6: No change\n> changelog since v8:\n>  - add logConfi argument : rkisp1_cif_isp_dpf_config rkisp1_cif_isp_dpf_strength_config\n> ---\n>  src/ipa/rkisp1/algorithms/dpf.cpp | 53 +++++++++++++++++++++++++++++--\n>  src/ipa/rkisp1/algorithms/dpf.h   |  6 +++-\n>  2 files changed, 55 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp\n> index 0d3a9f0e..9863bfb6 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.cpp\n> +++ b/src/ipa/rkisp1/algorithms/dpf.cpp\n> @@ -285,6 +285,49 @@ bool Dpf::loadConfig(int32_t mode)\n>         return true;\n>  }\n>  \n> +void Dpf::logConfig(const IPAFrameContext &frameContext,\n> +                   const struct rkisp1_cif_isp_dpf_config &config,\n> +                   const struct rkisp1_cif_isp_dpf_strength_config &strengthConfig) const\n> +{\n> +       std::ostringstream ss;\n> +\n> +       ss << \"DPF config update: \";\n> +       ss << \" control mode=\" << activeMode_->modeValue;\n> +       ss << \", denoise=\" << (frameContext.dpf.denoise ? \"enabled\" : \"disabled\");\n> +\n> +       ss << \", rb_fltsize=\"\n> +          << (config.rb_flt.fltsize == RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9 ? \"13x9\" : \"9x9\");\n> +       ss << \", nll_scale=\"\n> +          << (config.nll.scale_mode == RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC ? \"log\" : \"linear\");\n> +       ss << \", gain_mode=\" << config.gain.mode;\n> +       ss << \", strength=\" << int(strengthConfig.r) << ',' << int(strengthConfig.g) << ',' << int(strengthConfig.b);\n> +\n> +       ss << \", g=[\";\n> +       for (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> +               if (i)\n> +                       ss << ',';\n> +               ss << int(config.g_flt.spatial_coeff[i]);\n> +       }\n> +       ss << \"]\";\n> +\n> +       ss << \", rb=[\";\n> +       for (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS; ++i) {\n> +               if (i)\n> +                       ss << ',';\n> +               ss << int(config.rb_flt.spatial_coeff[i]);\n> +       }\n> +       ss << \"]\";\n> +\n> +       ss << \", nll=[\";\n> +       for (size_t i = 0; i < RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS; ++i) {\n> +               if (i)\n> +                       ss << ',';\n> +               ss << int(config.nll.coeff[i]);\n> +       }\n> +       ss << \"]\";\n> +       LOG(RkISP1Dpf, Debug) << ss.str();\n> +}\n> +\n\nReviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>\n\n>  /**\n>   * \\copydoc libcamera::ipa::Algorithm::queueRequest\n>   */\n> @@ -321,7 +364,7 @@ void Dpf::queueRequest(IPAContext &context,\n>                         break;\n>                 }\n>                 if (update)\n> -                       LOG(RkISP1Dpf, Debug) << \"Set denoise to \" << modeName(*denoise);\n> +                       LOG(RkISP1Dpf, Debug) << \"Set denoise to \" << *denoise;\n>         }\n>  \n>         frameContext.dpf.denoise = dpf.denoise;\n> @@ -342,7 +385,7 @@ void Dpf::prepare(IPAContext &context, const uint32_t frame,\n>                 return;\n>         }\n>  \n> -       prepareEnabledMode(context, params);\n> +       prepareEnabledMode(context, frameContext, params);\n>  }\n>  \n>  void Dpf::prepareDisabledMode(RkISP1Params *params)\n> @@ -353,7 +396,8 @@ void Dpf::prepareDisabledMode(RkISP1Params *params)\n>         dpfStrength.setEnabled(false);\n>  }\n>  \n> -void Dpf::prepareEnabledMode(IPAContext &context, RkISP1Params *params)\n> +void Dpf::prepareEnabledMode(IPAContext &context, IPAFrameContext &frameContext,\n> +                            RkISP1Params *params)\n>  {\n>         if (activeMode_ == noiseReductionModes_.end())\n>                 return;\n> @@ -389,6 +433,9 @@ void Dpf::prepareEnabledMode(IPAContext &context, RkISP1Params *params)\n>         auto strengthConfig = params->block<BlockType::DpfStrength>();\n>         strengthConfig.setEnabled(true);\n>         *strengthConfig = modeConfig.strength;\n> +\n> +       if (frameContext.dpf.update)\n> +               logConfig(frameContext, *config, *strengthConfig);\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 208d8fe9..66d3f302 100644\n> --- a/src/ipa/rkisp1/algorithms/dpf.h\n> +++ b/src/ipa/rkisp1/algorithms/dpf.h\n> @@ -43,9 +43,13 @@ private:\n>                               rkisp1_cif_isp_dpf_strength_config &strengthConfig);\n>  \n>         bool loadConfig(int32_t mode);\n> +       void logConfig(const IPAFrameContext &frameContext,\n> +                      const struct rkisp1_cif_isp_dpf_config &config,\n> +                      const struct rkisp1_cif_isp_dpf_strength_config &strengthConfig) const;\n>  \n>         void prepareDisabledMode(RkISP1Params *params);\n> -       void prepareEnabledMode(IPAContext &context, RkISP1Params *params);\n> +       void prepareEnabledMode(IPAContext &context, IPAFrameContext &frameContext,\n> +                               RkISP1Params *params);\n>  \n>         std::vector<ModeConfig> noiseReductionModes_;\n>         std::vector<ModeConfig>::const_iterator activeMode_;\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 60142BD78E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  4 Feb 2026 13:40:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 63BD66202B;\n\tWed,  4 Feb 2026 14:40:42 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3BE6A61FBF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  4 Feb 2026 14:40:41 +0100 (CET)","from thinkpad.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B64C8833;\n\tWed,  4 Feb 2026 14:39:58 +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=\"T+T/tv88\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1770212398;\n\tbh=zX8yp6ZGMxsDMW0iexFtVm2PXtCtmPdsmOjdH0fdxSA=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=T+T/tv88jsj77DDS77CdZyRfKjgrkoatXxMIET+8DBlD9uJ+gobtI0x28NYfFVgv1\n\tzLetczwi+dRCB7kWaFYfwHUMmgQTkqHGijBBRn7Jz1TuUd1X9AvAoA6Jl546NzZ1RC\n\tj2NoTgdMRcdE/bSjgH9ANvipSVpZ24s9xmNwIRvc=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260201191607.2740223-6-rui.wang@ideasonboard.com>","References":"<20260201191607.2740223-1-rui.wang@ideasonboard.com>\n\t<20260201191607.2740223-6-rui.wang@ideasonboard.com>","Subject":"Re: [PATCH v12 5/7] ipa: rkisp1: algorithms: dpf: Add detailed\n\tconfig logging","From":"Isaac Scott <isaac.scott@ideasonboard.com>","Cc":"Rui Wang <rui.wang@ideasonboard.com>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Rui Wang <rui.wang@ideasonboard.com>, libcamera-devel@lists.libcamera.org","Date":"Wed, 04 Feb 2026 13:40:37 +0000","Message-ID":"<177021243756.3721496.13825992678540394900@isaac-ThinkPad-T16-Gen-2>","User-Agent":"alot/0.10","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>"}}]