[{"id":37676,"web_url":"https://patchwork.libcamera.org/comment/37676/","msgid":"<aWj7aakzMEuIbtaD@zed>","date":"2026-01-15T14:41:17","subject":"Re: [PATCH v7 6/6] ipa: rkisp1: algorithms: data: enable DPF tuning\n\tfor sensors","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Rui\n\nOn Tue, Jan 13, 2026 at 12:46:42PM -0500, Rui Wang wrote:\n> Enable the RkISP1 denoise pre-filter (DPF) for the imx219/ov5647\n> ov5640 sensor by adding the required DPF tuning block.\n>\n> Add DPF tuning config for ov5640 to adapt mode selection\n>\n> Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>\n>\n> ---\n> changelog since v5:   No change\n>\n> changelog since v6:\n>  add ov5647 as strong noise sensor for verification\n> ---\n>  src/ipa/rkisp1/data/imx219.yaml | 38 ++++++++++++++++++++++++\n>  src/ipa/rkisp1/data/meson.build |  1 +\n>  src/ipa/rkisp1/data/ov5640.yaml | 51 +++++++++++++++++++++++++++++++--\n>  src/ipa/rkisp1/data/ov5647.yaml | 46 +++++++++++++++++++++++++++++\n\nI would split this one commit per file\n\nEven more so for ov5647 which is introduced in this patch\n\n\n>  4 files changed, 133 insertions(+), 3 deletions(-)\n>  create mode 100644 src/ipa/rkisp1/data/ov5647.yaml\n>\n> diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml\n> index 0d99cb52..d6068ada 100644\n> --- a/src/ipa/rkisp1/data/imx219.yaml\n> +++ b/src/ipa/rkisp1/data/imx219.yaml\n> @@ -111,4 +111,42 @@ algorithms:\n>                 1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,\n>                 1326, 1334, 1334,\n>               ]\n> +  - Dpf:\n> +      filter:\n> +        g:  [ 18, 13,  9,  5,  3,  1 ]\n> +        rb: [ 18, 15, 12,  8,  5,  2 ]\n> +      nll:\n> +        coeff: [\n> +          0,  14,  28,  42,  58,  76,  96, 120,\n> +          148, 180, 216, 256, 300, 348, 400, 456,\n> +          520\n> +        ]\n> +        scale-mode: \"linear\"\n> +      strength:\n> +        r: 80\n> +        g: 80\n> +        b: 80\n\nFrom your last reply to v5\n\n-------------------------------------------------------------------------------\n The is legacy config of Dpf configuaration , in the current implementation ,\n this configs are only help to initiate  struct :config_ strengthConfig_.\n in the function :\n\nint Dpf::parseConfig(const YamlObject &tuningData)\n{\n\t/* Parse base config. */\n\tint ret = parseSingleConfig(tuningData, config_, strengthConfig_);\n\tif (ret)\n\t\treturn ret;\n\n\t/* Parse modes. */\n\treturn parseModes(tuningData);\n}\n\nAs default configs , I will use it for controls initiate value for the next follow story:\nauto/manual mode enable.\n-------------------------------------------------------------------------------\n\nI understand this part of the configuration to be the initial default\nvalue for the algorithm.\n\nI wonder if it wouldn't be better expressed as\n\n        modes:\n           - type: \"default\"\n\nSo that it becomes user selectable..\n\nBut maybe it is not necessary\n\n> +      modes:\n> +        - type: \"minimal\"\n> +          filter:\n> +            g:  [ 14, 10,  7,  4,  2,  1 ]\n> +            rb: [ 14, 11,  8,  4,  2,  1 ]\n> +          nll:\n> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +            scale-mode: \"linear\"\n> +          strength:\n> +            r: 60\n> +            g: 60\n> +            b: 60\n> +        - type: \"highquality\"\n> +          filter:\n> +            g:  [ 22, 18, 13,  8,  5,  2 ]\n> +            rb: [ 20, 18, 16, 11,  7,  3 ]\n> +          nll:\n> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +            scale-mode: \"linear\"\n> +          strength:\n> +            r: 130\n> +            g: 130\n> +            b: 130\n>  ...\n> diff --git a/src/ipa/rkisp1/data/meson.build b/src/ipa/rkisp1/data/meson.build\n> index 1e3522b2..6388a8be 100644\n> --- a/src/ipa/rkisp1/data/meson.build\n> +++ b/src/ipa/rkisp1/data/meson.build\n> @@ -6,6 +6,7 @@ conf_files = files([\n>      'ov2685.yaml',\n>      'ov4689.yaml',\n>      'ov5640.yaml',\n> +    'ov5647.yaml',\n>      'ov5695.yaml',\n>      'ov8858.yaml',\n>      'uncalibrated.yaml',\n> diff --git a/src/ipa/rkisp1/data/ov5640.yaml b/src/ipa/rkisp1/data/ov5640.yaml\n> index 4b21d412..f36a45b5 100644\n> --- a/src/ipa/rkisp1/data/ov5640.yaml\n> +++ b/src/ipa/rkisp1/data/ov5640.yaml\n> @@ -232,19 +232,64 @@ algorithms:\n>              green: 2\n>              red-blue: 2\n>    - Dpf:\n> -      DomainFilter:\n> +      filter:\n>          g: [ 16, 16, 16, 16, 16, 16 ]\n>          rb: [ 16, 16, 16, 16, 16, 16 ]\n> -      NoiseLevelFunction:\n> +      nll:\n>          coeff: [\n>            1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n>            1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n>            1023\n>          ]\n>          scale-mode: \"linear\"\n> -      FilterStrength:\n> +      strength:\n>          r: 64\n>          g: 64\n>          b: 64\n> +      modes:\n> +      - type: \"minimal\"\n> +        filter:\n> +          g:  [ 14, 10,  7,  4,  2,  1 ]\n> +          rb: [ 14, 11,  8,  4,  2,  1 ]\n> +        nll:\n> +          coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +          scale-mode: \"linear\"\n> +        strength:\n> +          r: 60\n> +          g: 60\n> +          b: 60\n> +      - type: \"highquality\"\n> +        filter:\n> +          g:  [ 22, 18, 13,  8,  5,  2 ]\n> +          rb: [ 20, 18, 16, 11,  7,  3 ]\n> +        nll:\n> +          coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +          scale-mode: \"linear\"\n> +        strength:\n> +          r: 130\n> +          g: 130\n> +          b: 130\n> +      - type: \"fast\"\n> +        filter:\n> +          g:  [ 16, 12,  9,  5,  3,  1 ]\n> +          rb: [ 16, 13, 10,  6,  4,  2 ]\n> +        nll:\n> +          coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]\n> +          scale-mode: \"linear\"\n> +        strength:\n> +          r: 90\n> +          g: 90\n> +          b: 90\n> +      - type: \"zsl\"\n> +        filter:\n> +          g:  [ 18, 14, 10,  6,  3,  1 ]\n> +          rb: [ 18, 16, 13,  9,  5,  3 ]\n> +        nll:\n> +          coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]\n> +          scale-mode: \"linear\"\n> +        strength:\n> +          r: 110\n> +          g: 110\n> +          b: 110\n>    - Filter:\n>  ...\n> diff --git a/src/ipa/rkisp1/data/ov5647.yaml b/src/ipa/rkisp1/data/ov5647.yaml\n> new file mode 100644\n> index 00000000..dfdbae14\n> --- /dev/null\n> +++ b/src/ipa/rkisp1/data/ov5647.yaml\n\nThis should be split to a separate patch indeed\n\nThanks\n  j\n\n> @@ -0,0 +1,46 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +%YAML 1.1\n> +---\n> +version: 1\n> +algorithms:\n> +  - Agc:\n> +  - Awb:\n> +  - Dpf:\n> +      filter:\n> +        g:  [ 18, 13,  9,  5,  3,  1 ]\n> +        rb: [ 18, 15, 12,  8,  5,  2 ]\n> +      nll:\n> +        coeff: [\n> +          0,  14,  28,  42,  58,  76,  96, 120,\n> +          148, 180, 216, 256, 300, 348, 400, 456,\n> +          520\n> +        ]\n> +        scale-mode: \"linear\"\n> +      strength:\n> +        r: 80\n> +        g: 80\n> +        b: 80\n> +      modes:\n> +        - type: \"minimal\"\n> +          filter:\n> +            g:  [ 14, 10,  7,  4,  2,  1 ]\n> +            rb: [ 14, 11,  8,  4,  2,  1 ]\n> +          nll:\n> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +            scale-mode: \"linear\"\n> +          strength:\n> +            r: 60\n> +            g: 60\n> +            b: 60\n> +        - type: \"highquality\"\n> +          filter:\n> +            g:  [ 22, 18, 13,  8,  5,  2 ]\n> +            rb: [ 20, 18, 16, 11,  7,  3 ]\n> +          nll:\n> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n> +            scale-mode: \"linear\"\n> +          strength:\n> +            r: 1\n> +            g: 1\n> +            b: 1\n> +...\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 9D14DC3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jan 2026 14:41:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2948661FC3;\n\tThu, 15 Jan 2026 15:41:22 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 13A6261F84\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 15:41:21 +0100 (CET)","from ideasonboard.com (unknown [212.249.220.54])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2C296229;\n\tThu, 15 Jan 2026 15:40:53 +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=\"T619M7c5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768488053;\n\tbh=I+0QMrbv89+UNZAmnKaFfrrF/NwiG/ZEPRhVqjlTA0U=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=T619M7c5Dg5QPST5lQ8rAk0sTi8pb9ZJ3AxLxMjPR8llr2JWlfzOpCl4vXdU6lMZT\n\teYZPsgjCg9xDilp0LCT1R2U6xACFmASSidZpwpKY3AmjzHJ3rCGEYUV5axFdqlMLbg\n\ty9+K+aGoazO0zcZe7ZwqCtw5aGDaUCu9Bbnu7gkE=","Date":"Thu, 15 Jan 2026 15:41:17 +0100","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Rui Wang <rui.wang@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v7 6/6] ipa: rkisp1: algorithms: data: enable DPF tuning\n\tfor sensors","Message-ID":"<aWj7aakzMEuIbtaD@zed>","References":"<20260113174642.1185403-1-rui.wang@ideasonboard.com>\n\t<20260113174642.1185403-7-rui.wang@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20260113174642.1185403-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":37679,"web_url":"https://patchwork.libcamera.org/comment/37679/","msgid":"<1b048dde-9c8a-4825-94ab-453d3d8c3a1e@ideasonboard.com>","date":"2026-01-15T15:39:58","subject":"Re: [PATCH v7 6/6] ipa: rkisp1: algorithms: data: enable DPF tuning\n\tfor sensors","submitter":{"id":241,"url":"https://patchwork.libcamera.org/api/people/241/","name":"Rui Wang","email":"rui.wang@ideasonboard.com"},"content":"On 2026-01-15 09:41, Jacopo Mondi wrote:\n> Hi Rui\n>\n> On Tue, Jan 13, 2026 at 12:46:42PM -0500, Rui Wang wrote:\n>> Enable the RkISP1 denoise pre-filter (DPF) for the imx219/ov5647\n>> ov5640 sensor by adding the required DPF tuning block.\n>>\n>> Add DPF tuning config for ov5640 to adapt mode selection\n>>\n>> Signed-off-by: Rui Wang <rui.wang@ideasonboard.com>\n>>\n>> ---\n>> changelog since v5:   No change\n>>\n>> changelog since v6:\n>>   add ov5647 as strong noise sensor for verification\n>> ---\n>>   src/ipa/rkisp1/data/imx219.yaml | 38 ++++++++++++++++++++++++\n>>   src/ipa/rkisp1/data/meson.build |  1 +\n>>   src/ipa/rkisp1/data/ov5640.yaml | 51 +++++++++++++++++++++++++++++++--\n>>   src/ipa/rkisp1/data/ov5647.yaml | 46 +++++++++++++++++++++++++++++\n> I would split this one commit per file\n>\n> Even more so for ov5647 which is introduced in this patch\nThanks Jacopo for your suggestion , I would add two commits into next \npatch series.\n>\n>>   4 files changed, 133 insertions(+), 3 deletions(-)\n>>   create mode 100644 src/ipa/rkisp1/data/ov5647.yaml\n>>\n>> diff --git a/src/ipa/rkisp1/data/imx219.yaml b/src/ipa/rkisp1/data/imx219.yaml\n>> index 0d99cb52..d6068ada 100644\n>> --- a/src/ipa/rkisp1/data/imx219.yaml\n>> +++ b/src/ipa/rkisp1/data/imx219.yaml\n>> @@ -111,4 +111,42 @@ algorithms:\n>>                  1438, 1226, 1059, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1054, 1185,\n>>                  1326, 1334, 1334,\n>>                ]\n>> +  - Dpf:\n>> +      filter:\n>> +        g:  [ 18, 13,  9,  5,  3,  1 ]\n>> +        rb: [ 18, 15, 12,  8,  5,  2 ]\n>> +      nll:\n>> +        coeff: [\n>> +          0,  14,  28,  42,  58,  76,  96, 120,\n>> +          148, 180, 216, 256, 300, 348, 400, 456,\n>> +          520\n>> +        ]\n>> +        scale-mode: \"linear\"\n>> +      strength:\n>> +        r: 80\n>> +        g: 80\n>> +        b: 80\n>  From your last reply to v5\n>\n> -------------------------------------------------------------------------------\n>   The is legacy config of Dpf configuaration , in the current implementation ,\n>   this configs are only help to initiate  struct :config_ strengthConfig_.\n>   in the function :\n>\n> int Dpf::parseConfig(const YamlObject &tuningData)\n> {\n> \t/* Parse base config. */\n> \tint ret = parseSingleConfig(tuningData, config_, strengthConfig_);\n> \tif (ret)\n> \t\treturn ret;\n>\n> \t/* Parse modes. */\n> \treturn parseModes(tuningData);\n> }\n>\n> As default configs , I will use it for controls initiate value for the next follow story:\n> auto/manual mode enable.\n> -------------------------------------------------------------------------------\n>\n> I understand this part of the configuration to be the initial default\n> value for the algorithm.\n>\n> I wonder if it wouldn't be better expressed as\n>\n>          modes:\n>             - type: \"default\"\n>\n> So that it becomes user selectable..\n>\n> But maybe it is not necessary\n  I think 'default' is meaningless into the reduction options,  I would \nimplement like :\n\nint Dpf::parseConfig(const YamlObject &tuningData)\n{\n\n\t/* Parse modes. */\n\treturn parseModes(tuningData);\n}\n\nalso remove Yaml's DPF base setting , keep only modes.\n\n   -Dpf\n      filter:\n          g: [ 16, 16, 16, 16, 16, 16 ]\n          rb: [ 16, 16, 16, 16, 16, 16 ]\n\n       nll:\n          coeff: [\n            1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n            1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n            1023\n          ]\n          scale-mode: \"linear\"\n       strength:\n          r: 64\n          g: 64\n          b: 64\n\n\nand the default setting for manual for default controls  value  , which \nwill be initilized from manual mode PR, and default value\n\ncan be read from manual setting YAML, it looks more clear and simplicity.\n\n>> +      modes:\n>> +        - type: \"minimal\"\n>> +          filter:\n>> +            g:  [ 14, 10,  7,  4,  2,  1 ]\n>> +            rb: [ 14, 11,  8,  4,  2,  1 ]\n>> +          nll:\n>> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +            scale-mode: \"linear\"\n>> +          strength:\n>> +            r: 60\n>> +            g: 60\n>> +            b: 60\n>> +        - type: \"highquality\"\n>> +          filter:\n>> +            g:  [ 22, 18, 13,  8,  5,  2 ]\n>> +            rb: [ 20, 18, 16, 11,  7,  3 ]\n>> +          nll:\n>> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +            scale-mode: \"linear\"\n>> +          strength:\n>> +            r: 130\n>> +            g: 130\n>> +            b: 130\n>>   ...\n>> diff --git a/src/ipa/rkisp1/data/meson.build b/src/ipa/rkisp1/data/meson.build\n>> index 1e3522b2..6388a8be 100644\n>> --- a/src/ipa/rkisp1/data/meson.build\n>> +++ b/src/ipa/rkisp1/data/meson.build\n>> @@ -6,6 +6,7 @@ conf_files = files([\n>>       'ov2685.yaml',\n>>       'ov4689.yaml',\n>>       'ov5640.yaml',\n>> +    'ov5647.yaml',\n>>       'ov5695.yaml',\n>>       'ov8858.yaml',\n>>       'uncalibrated.yaml',\n>> diff --git a/src/ipa/rkisp1/data/ov5640.yaml b/src/ipa/rkisp1/data/ov5640.yaml\n>> index 4b21d412..f36a45b5 100644\n>> --- a/src/ipa/rkisp1/data/ov5640.yaml\n>> +++ b/src/ipa/rkisp1/data/ov5640.yaml\n>> @@ -232,19 +232,64 @@ algorithms:\n>>               green: 2\n>>               red-blue: 2\n>>     - Dpf:\n>> -      DomainFilter:\n>> +      filter:\n>>           g: [ 16, 16, 16, 16, 16, 16 ]\n>>           rb: [ 16, 16, 16, 16, 16, 16 ]\n>> -      NoiseLevelFunction:\n>> +      nll:\n>>           coeff: [\n>>             1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n>>             1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,\n>>             1023\n>>           ]\n>>           scale-mode: \"linear\"\n>> -      FilterStrength:\n>> +      strength:\n>>           r: 64\n>>           g: 64\n>>           b: 64\n>> +      modes:\n>> +      - type: \"minimal\"\n>> +        filter:\n>> +          g:  [ 14, 10,  7,  4,  2,  1 ]\n>> +          rb: [ 14, 11,  8,  4,  2,  1 ]\n>> +        nll:\n>> +          coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +          scale-mode: \"linear\"\n>> +        strength:\n>> +          r: 60\n>> +          g: 60\n>> +          b: 60\n>> +      - type: \"highquality\"\n>> +        filter:\n>> +          g:  [ 22, 18, 13,  8,  5,  2 ]\n>> +          rb: [ 20, 18, 16, 11,  7,  3 ]\n>> +        nll:\n>> +          coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +          scale-mode: \"linear\"\n>> +        strength:\n>> +          r: 130\n>> +          g: 130\n>> +          b: 130\n>> +      - type: \"fast\"\n>> +        filter:\n>> +          g:  [ 16, 12,  9,  5,  3,  1 ]\n>> +          rb: [ 16, 13, 10,  6,  4,  2 ]\n>> +        nll:\n>> +          coeff: [ 0, 16, 32, 48, 66, 86, 108, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528 ]\n>> +          scale-mode: \"linear\"\n>> +        strength:\n>> +          r: 90\n>> +          g: 90\n>> +          b: 90\n>> +      - type: \"zsl\"\n>> +        filter:\n>> +          g:  [ 18, 14, 10,  6,  3,  1 ]\n>> +          rb: [ 18, 16, 13,  9,  5,  3 ]\n>> +        nll:\n>> +          coeff: [ 0, 20, 40, 60, 82, 106, 132, 160, 192, 228, 268, 312, 360, 412, 468, 528, 592 ]\n>> +          scale-mode: \"linear\"\n>> +        strength:\n>> +          r: 110\n>> +          g: 110\n>> +          b: 110\n>>     - Filter:\n>>   ...\n>> diff --git a/src/ipa/rkisp1/data/ov5647.yaml b/src/ipa/rkisp1/data/ov5647.yaml\n>> new file mode 100644\n>> index 00000000..dfdbae14\n>> --- /dev/null\n>> +++ b/src/ipa/rkisp1/data/ov5647.yaml\n> This should be split to a separate patch indeed\n>\n> Thanks\n>    j\n>\n>> @@ -0,0 +1,46 @@\n>> +# SPDX-License-Identifier: CC0-1.0\n>> +%YAML 1.1\n>> +---\n>> +version: 1\n>> +algorithms:\n>> +  - Agc:\n>> +  - Awb:\n>> +  - Dpf:\n>> +      filter:\n>> +        g:  [ 18, 13,  9,  5,  3,  1 ]\n>> +        rb: [ 18, 15, 12,  8,  5,  2 ]\n>> +      nll:\n>> +        coeff: [\n>> +          0,  14,  28,  42,  58,  76,  96, 120,\n>> +          148, 180, 216, 256, 300, 348, 400, 456,\n>> +          520\n>> +        ]\n>> +        scale-mode: \"linear\"\n>> +      strength:\n>> +        r: 80\n>> +        g: 80\n>> +        b: 80\n>> +      modes:\n>> +        - type: \"minimal\"\n>> +          filter:\n>> +            g:  [ 14, 10,  7,  4,  2,  1 ]\n>> +            rb: [ 14, 11,  8,  4,  2,  1 ]\n>> +          nll:\n>> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +            scale-mode: \"linear\"\n>> +          strength:\n>> +            r: 60\n>> +            g: 60\n>> +            b: 60\n>> +        - type: \"highquality\"\n>> +          filter:\n>> +            g:  [ 22, 18, 13,  8,  5,  2 ]\n>> +            rb: [ 20, 18, 16, 11,  7,  3 ]\n>> +          nll:\n>> +            coeff: [ 0, 26, 52, 78, 106, 138, 172, 208, 248, 292, 340, 392, 448, 508, 572, 640, 712 ]\n>> +            scale-mode: \"linear\"\n>> +          strength:\n>> +            r: 1\n>> +            g: 1\n>> +            b: 1\n>> +...\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 AEE1BBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jan 2026 15:40:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E128361F84;\n\tThu, 15 Jan 2026 16:40:13 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1E2D361F84\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 16:40:12 +0100 (CET)","from [192.168.31.114] (unknown [209.216.103.65])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 210AF316;\n\tThu, 15 Jan 2026 16:39:44 +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=\"Nmojnglm\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768491584;\n\tbh=W3myhYomOyfMN4Hf2Sz9kkHtKvmXFMG3NS9yEmua+LY=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=NmojnglmZgBAyVMsEMuD1o/MPJk5WbnxPwHqYZj8MBtt8geV1VEfahEDxmsH8JpRM\n\tHtm16p7Yr5NrcezfgOmM5IyfrDW803o2BMhFL8cDOMJ+QOJdp8w7Ebm9xQ6mMRbaNN\n\t1/+9nY9zQUYbDG5qb+0MOf+5HzgsLKzs6KQdlNAg=","Message-ID":"<1b048dde-9c8a-4825-94ab-453d3d8c3a1e@ideasonboard.com>","Date":"Thu, 15 Jan 2026 10:39:58 -0500","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v7 6/6] ipa: rkisp1: algorithms: data: enable DPF tuning\n\tfor sensors","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260113174642.1185403-1-rui.wang@ideasonboard.com>\n\t<20260113174642.1185403-7-rui.wang@ideasonboard.com>\n\t<aWj7aakzMEuIbtaD@zed>","Content-Language":"en-US","From":"rui wang <rui.wang@ideasonboard.com>","In-Reply-To":"<aWj7aakzMEuIbtaD@zed>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>"}}]