[{"id":34990,"web_url":"https://patchwork.libcamera.org/comment/34990/","msgid":"<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>","date":"2025-07-21T18:51:24","subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Daniel Scally (2025-03-04 23:12:54)\n> Add a tuning file for the imx708 with black level offsets and lens\n> shading table data.\n> \n> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> ---\n>  src/ipa/mali-c55/data/imx708.yaml | 325 ++++++++++++++++++++++++++++++\n>  src/ipa/mali-c55/data/meson.build |   1 +\n>  2 files changed, 326 insertions(+)\n>  create mode 100644 src/ipa/mali-c55/data/imx708.yaml\n> \n> diff --git a/src/ipa/mali-c55/data/imx708.yaml b/src/ipa/mali-c55/data/imx708.yaml\n> new file mode 100644\n> index 00000000..75b8398a\n> --- /dev/null\n> +++ b/src/ipa/mali-c55/data/imx708.yaml\n> @@ -0,0 +1,325 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +%YAML 1.1\n> +---\n> +version: 1\n> +algorithms:\n> +  - Agc:\n> +  - Awb:\n> +  - BlackLevelCorrection:\n> +      offset00: 65536\n> +      offset01: 65536\n> +      offset10: 65536\n> +      offset11: 65536\n\nI think we've moved Black levels to the Sensor Helpers now ?\n\n> +  - Lsc:\n> +      meshScale: 6\n> +      sets:\n> +        - ct: 2500\n> +          r: [\n\n\nAre these tables converted from RPi tuning files ?\n\nIf so - can we have a conversion utility to support converting other\nfiles, and also keep this up to date when more parameters could be\nconverted and supported ?\n\nFor example, I expect the white balance and CCM tuning could be\nconverted straight across too...\n\n> +              227, 209, 187, 167, 150, 134, 120, 109,  99,  89,  81,  73,  67,  61,  57,  57,  57,  57,  61,  67,  73,  80,  89,  98, 109, 120, 134, 150, 168, 188, 209, 227,\n> +              218, 202, 181, 161, 143, 128, 115, 104,  93,  84,  75,  67,  61,  56,  53,  51,  51,  53,  56,  61,  67,  75,  83,  93, 103, 115, 128, 143, 161, 181, 202, 219,\n> +              210, 194, 173, 153, 136, 121, 109,  97,  87,  76,  67,  60,  53,  48,  45,  44,  44,  45,  48,  53,  60,  67,  76,  86,  97, 108, 121, 136, 154, 173, 194, 211,\n> +              204, 187, 166, 146, 130, 115, 103,  91,  80,  69,  60,  53,  46,  41,  38,  37,  37,  38,  41,  46,  53,  60,  69,  79,  91, 102, 115, 130, 147, 166, 188, 205,\n> +              197, 180, 159, 140, 124, 110,  97,  85,  73,  63,  53,  46,  40,  35,  32,  31,  31,  32,  35,  40,  46,  53,  62,  73,  85,  97, 110, 124, 140, 160, 181, 199,\n> +              192, 174, 154, 134, 119, 105,  92,  80,  67,  57,  47,  40,  34,  29,  27,  25,  25,  27,  29,  34,  40,  47,  56,  67,  79,  92, 105, 119, 135, 154, 175, 193,\n> +              187, 169, 148, 130, 114, 100,  87,  74,  62,  51,  42,  34,  29,  24,  22,  20,  20,  22,  24,  29,  34,  42,  51,  62,  74,  87, 100, 114, 130, 148, 170, 188,\n> +              182, 164, 143, 125, 110,  96,  83,  69,  57,  46,  37,  30,  24,  20,  17,  16,  16,  17,  20,  24,  30,  37,  46,  57,  69,  82,  96, 110, 125, 143, 164, 183,\n> +              178, 159, 139, 121, 106,  92,  78,  65,  52,  42,  33,  26,  20,  17,  14,  12,  12,  14,  17,  20,  26,  33,  42,  52,  65,  78,  92, 106, 121, 139, 160, 179,\n> +              175, 156, 135, 118, 103,  89,  75,  61,  49,  38,  29,  22,  17,  14,  10,   9,   9,  10,  14,  17,  22,  29,  38,  48,  61,  74,  89, 103, 118, 135, 156, 176,\n> +              172, 152, 132, 115, 100,  86,  71,  57,  45,  35,  26,  19,  14,  10,   8,   6,   6,   8,  10,  14,  19,  26,  34,  45,  57,  71,  85, 100, 115, 132, 152, 173,\n> +              170, 149, 129, 113,  98,  83,  68,  55,  42,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  11,  17,  23,  32,  42,  54,  68,  83,  97, 112, 129, 150, 170,\n> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   2,   2,   4,   6,  10,  15,  21,  30,  40,  52,  66,  80,  95, 110, 127, 147, 168,\n> +              167, 145, 126, 109,  94,  79,  64,  50,  38,  28,  20,  13,   8,   5,   2,   1,   1,   2,   4,   8,  13,  20,  28,  38,  50,  64,  79,  94, 109, 126, 145, 167,\n> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   1,   1,   1,   1,   4,   7,  12,  19,  27,  37,  49,  62,  77,  93, 108, 124, 144, 166,\n> +              166, 144, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 124, 143, 166,\n> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   1,   1,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   2,   1,   1,   2,   4,   7,  12,  19,  27,  37,  49,  62,  77,  92, 107, 124, 144, 166,\n> +              167, 145, 126, 109,  94,  79,  64,  51,  39,  28,  20,  14,   8,   5,   3,   2,   2,   3,   5,   8,  13,  20,  28,  38,  50,  64,  78,  93, 108, 125, 145, 167,\n> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   3,   3,   4,   6,  10,  15,  21,  30,  40,  52,  65,  80,  95, 110, 127, 146, 168,\n> +              169, 149, 129, 112,  98,  83,  69,  55,  43,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  12,  17,  23,  32,  42,  54,  68,  82,  97, 112, 128, 148, 169,\n> +              172, 152, 132, 115, 100,  86,  71,  58,  46,  35,  26,  20,  14,  11,   8,   7,   7,   8,  11,  14,  19,  26,  35,  45,  57,  71,  85,  99, 114, 131, 151, 171,\n> +              175, 155, 135, 118, 103,  89,  75,  61,  49,  38,  30,  23,  17,  14,  11,   9,   9,  11,  14,  17,  22,  29,  38,  48,  60,  74,  88, 102, 117, 134, 154, 174,\n> +              178, 159, 139, 121, 106,  92,  79,  65,  53,  42,  33,  26,  21,  17,  14,  13,  13,  14,  17,  20,  26,  33,  42,  52,  64,  78,  91, 105, 120, 137, 158, 177,\n> +              181, 163, 143, 125, 110,  96,  83,  70,  57,  47,  38,  30,  25,  21,  18,  16,  16,  18,  20,  25,  30,  37,  46,  57,  69,  82,  95, 108, 124, 142, 162, 181,\n> +              185, 168, 147, 129, 114, 100,  87,  75,  62,  52,  42,  35,  30,  25,  22,  21,  21,  22,  25,  30,  35,  42,  51,  62,  73,  86,  99, 113, 128, 146, 167, 185,\n> +              190, 173, 153, 134, 118, 105,  92,  80,  68,  57,  48,  40,  35,  30,  27,  26,  26,  27,  30,  35,  40,  47,  56,  67,  79,  91, 103, 117, 133, 152, 172, 190,\n> +              196, 179, 159, 139, 123, 109,  97,  85,  74,  63,  54,  47,  40,  36,  33,  31,  31,  33,  36,  40,  46,  53,  62,  73,  84,  96, 108, 122, 138, 157, 178, 195,\n> +              202, 185, 165, 146, 129, 115, 103,  91,  80,  70,  61,  54,  47,  42,  39,  38,  38,  39,  42,  46,  53,  60,  69,  79,  90, 101, 113, 128, 144, 163, 184, 201,\n> +              209, 192, 172, 153, 135, 121, 108,  97,  87,  77,  68,  60,  54,  49,  46,  45,  45,  46,  49,  54,  60,  67,  76,  86,  96, 107, 119, 134, 151, 170, 191, 207,\n> +              216, 199, 178, 159, 141, 126, 114, 103,  92,  82,  74,  66,  60,  54,  51,  50,  50,  51,  54,  60,  66,  73,  82,  91, 101, 112, 125, 140, 158, 177, 197, 215,\n> +             ]\n\nI love how you can 'see' the shading in the ascii data!\n\n<snip lots of ascii data>\n\n\nWith BLC handled however it needs ... \n\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>","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 0CE14C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Jul 2025 18:51:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1D8E269008;\n\tMon, 21 Jul 2025 20:51:29 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 81B5668FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jul 2025 20:51:27 +0200 (CEST)","from pendragon.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 4C29E7917;\n\tMon, 21 Jul 2025 20:50:50 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PIszaSAG\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753123850;\n\tbh=sYtCo8t5FiPBRMN/Za0+xjAw6CSlvp4vQwnryeLTMUQ=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=PIszaSAGZiLXGfIy4fyXhm3QGiUVrux4LEPjE4Noe59BlK8/cTuqnjHRu1rR3Z8T2\n\tseDawJHqrgf1BRPIjDzXwr4TTVc2zm03cY0KkzoIl99BPSlCAd9j7JlI66Bc8ucqDx\n\thAGmzmnBCVNCyfEpcsRhPQNrHCxOHUv1XPoc8ET4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250304231254.10588-4-dan.scally@ideasonboard.com>","References":"<20250304231254.10588-1-dan.scally@ideasonboard.com>\n\t<20250304231254.10588-4-dan.scally@ideasonboard.com>","Subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Daniel Scally <dan.scally@ideasonboard.com>","To":"Daniel Scally <dan.scally@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 21 Jul 2025 19:51:24 +0100","Message-ID":"<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":34996,"web_url":"https://patchwork.libcamera.org/comment/34996/","msgid":"<bf9f8a99-9149-43fb-8591-0f78f6759879@ideasonboard.com>","date":"2025-07-21T19:19:32","subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","submitter":{"id":156,"url":"https://patchwork.libcamera.org/api/people/156/","name":"Dan Scally","email":"dan.scally@ideasonboard.com"},"content":"Hi Kieran\n\nOn 21/07/2025 19:51, Kieran Bingham wrote:\n> Quoting Daniel Scally (2025-03-04 23:12:54)\n>> Add a tuning file for the imx708 with black level offsets and lens\n>> shading table data.\n>>\n>> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n>> ---\n>>   src/ipa/mali-c55/data/imx708.yaml | 325 ++++++++++++++++++++++++++++++\n>>   src/ipa/mali-c55/data/meson.build |   1 +\n>>   2 files changed, 326 insertions(+)\n>>   create mode 100644 src/ipa/mali-c55/data/imx708.yaml\n>>\n>> diff --git a/src/ipa/mali-c55/data/imx708.yaml b/src/ipa/mali-c55/data/imx708.yaml\n>> new file mode 100644\n>> index 00000000..75b8398a\n>> --- /dev/null\n>> +++ b/src/ipa/mali-c55/data/imx708.yaml\n>> @@ -0,0 +1,325 @@\n>> +# SPDX-License-Identifier: CC0-1.0\n>> +%YAML 1.1\n>> +---\n>> +version: 1\n>> +algorithms:\n>> +  - Agc:\n>> +  - Awb:\n>> +  - BlackLevelCorrection:\n>> +      offset00: 65536\n>> +      offset01: 65536\n>> +      offset10: 65536\n>> +      offset11: 65536\n> I think we've moved Black levels to the Sensor Helpers now ?\n\nErrr I'll have to look; the ISP needs them at a specific bit-depth and possibly the BLC algorithm \nwould need a patch to convert from the values in the CameraSensorHelpers then - which I assume are \nat some normalised depth. I'll post that and a patch for the CameraSensorHelperImx708 in a v2 of \nthis set\n\n>\n>> +  - Lsc:\n>> +      meshScale: 6\n>> +      sets:\n>> +        - ct: 2500\n>> +          r: [\n>\n> Are these tables converted from RPi tuning files ?\nNo; I ran the tuning script from patch 2 on a bunch of images.\n> If so - can we have a conversion utility to support converting other\n> files, and also keep this up to date when more parameters could be\n> converted and supported ?\n>\n> For example, I expect the white balance and CCM tuning could be\n> converted straight across too...\n>\n>> +              227, 209, 187, 167, 150, 134, 120, 109,  99,  89,  81,  73,  67,  61,  57,  57,  57,  57,  61,  67,  73,  80,  89,  98, 109, 120, 134, 150, 168, 188, 209, 227,\n>> +              218, 202, 181, 161, 143, 128, 115, 104,  93,  84,  75,  67,  61,  56,  53,  51,  51,  53,  56,  61,  67,  75,  83,  93, 103, 115, 128, 143, 161, 181, 202, 219,\n>> +              210, 194, 173, 153, 136, 121, 109,  97,  87,  76,  67,  60,  53,  48,  45,  44,  44,  45,  48,  53,  60,  67,  76,  86,  97, 108, 121, 136, 154, 173, 194, 211,\n>> +              204, 187, 166, 146, 130, 115, 103,  91,  80,  69,  60,  53,  46,  41,  38,  37,  37,  38,  41,  46,  53,  60,  69,  79,  91, 102, 115, 130, 147, 166, 188, 205,\n>> +              197, 180, 159, 140, 124, 110,  97,  85,  73,  63,  53,  46,  40,  35,  32,  31,  31,  32,  35,  40,  46,  53,  62,  73,  85,  97, 110, 124, 140, 160, 181, 199,\n>> +              192, 174, 154, 134, 119, 105,  92,  80,  67,  57,  47,  40,  34,  29,  27,  25,  25,  27,  29,  34,  40,  47,  56,  67,  79,  92, 105, 119, 135, 154, 175, 193,\n>> +              187, 169, 148, 130, 114, 100,  87,  74,  62,  51,  42,  34,  29,  24,  22,  20,  20,  22,  24,  29,  34,  42,  51,  62,  74,  87, 100, 114, 130, 148, 170, 188,\n>> +              182, 164, 143, 125, 110,  96,  83,  69,  57,  46,  37,  30,  24,  20,  17,  16,  16,  17,  20,  24,  30,  37,  46,  57,  69,  82,  96, 110, 125, 143, 164, 183,\n>> +              178, 159, 139, 121, 106,  92,  78,  65,  52,  42,  33,  26,  20,  17,  14,  12,  12,  14,  17,  20,  26,  33,  42,  52,  65,  78,  92, 106, 121, 139, 160, 179,\n>> +              175, 156, 135, 118, 103,  89,  75,  61,  49,  38,  29,  22,  17,  14,  10,   9,   9,  10,  14,  17,  22,  29,  38,  48,  61,  74,  89, 103, 118, 135, 156, 176,\n>> +              172, 152, 132, 115, 100,  86,  71,  57,  45,  35,  26,  19,  14,  10,   8,   6,   6,   8,  10,  14,  19,  26,  34,  45,  57,  71,  85, 100, 115, 132, 152, 173,\n>> +              170, 149, 129, 113,  98,  83,  68,  55,  42,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  11,  17,  23,  32,  42,  54,  68,  83,  97, 112, 129, 150, 170,\n>> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   2,   2,   4,   6,  10,  15,  21,  30,  40,  52,  66,  80,  95, 110, 127, 147, 168,\n>> +              167, 145, 126, 109,  94,  79,  64,  50,  38,  28,  20,  13,   8,   5,   2,   1,   1,   2,   4,   8,  13,  20,  28,  38,  50,  64,  79,  94, 109, 126, 145, 167,\n>> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   1,   1,   1,   1,   4,   7,  12,  19,  27,  37,  49,  62,  77,  93, 108, 124, 144, 166,\n>> +              166, 144, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 124, 143, 166,\n>> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n>> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   1,   1,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n>> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   2,   1,   1,   2,   4,   7,  12,  19,  27,  37,  49,  62,  77,  92, 107, 124, 144, 166,\n>> +              167, 145, 126, 109,  94,  79,  64,  51,  39,  28,  20,  14,   8,   5,   3,   2,   2,   3,   5,   8,  13,  20,  28,  38,  50,  64,  78,  93, 108, 125, 145, 167,\n>> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   3,   3,   4,   6,  10,  15,  21,  30,  40,  52,  65,  80,  95, 110, 127, 146, 168,\n>> +              169, 149, 129, 112,  98,  83,  69,  55,  43,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  12,  17,  23,  32,  42,  54,  68,  82,  97, 112, 128, 148, 169,\n>> +              172, 152, 132, 115, 100,  86,  71,  58,  46,  35,  26,  20,  14,  11,   8,   7,   7,   8,  11,  14,  19,  26,  35,  45,  57,  71,  85,  99, 114, 131, 151, 171,\n>> +              175, 155, 135, 118, 103,  89,  75,  61,  49,  38,  30,  23,  17,  14,  11,   9,   9,  11,  14,  17,  22,  29,  38,  48,  60,  74,  88, 102, 117, 134, 154, 174,\n>> +              178, 159, 139, 121, 106,  92,  79,  65,  53,  42,  33,  26,  21,  17,  14,  13,  13,  14,  17,  20,  26,  33,  42,  52,  64,  78,  91, 105, 120, 137, 158, 177,\n>> +              181, 163, 143, 125, 110,  96,  83,  70,  57,  47,  38,  30,  25,  21,  18,  16,  16,  18,  20,  25,  30,  37,  46,  57,  69,  82,  95, 108, 124, 142, 162, 181,\n>> +              185, 168, 147, 129, 114, 100,  87,  75,  62,  52,  42,  35,  30,  25,  22,  21,  21,  22,  25,  30,  35,  42,  51,  62,  73,  86,  99, 113, 128, 146, 167, 185,\n>> +              190, 173, 153, 134, 118, 105,  92,  80,  68,  57,  48,  40,  35,  30,  27,  26,  26,  27,  30,  35,  40,  47,  56,  67,  79,  91, 103, 117, 133, 152, 172, 190,\n>> +              196, 179, 159, 139, 123, 109,  97,  85,  74,  63,  54,  47,  40,  36,  33,  31,  31,  33,  36,  40,  46,  53,  62,  73,  84,  96, 108, 122, 138, 157, 178, 195,\n>> +              202, 185, 165, 146, 129, 115, 103,  91,  80,  70,  61,  54,  47,  42,  39,  38,  38,  39,  42,  46,  53,  60,  69,  79,  90, 101, 113, 128, 144, 163, 184, 201,\n>> +              209, 192, 172, 153, 135, 121, 108,  97,  87,  77,  68,  60,  54,  49,  46,  45,  45,  46,  49,  54,  60,  67,  76,  86,  96, 107, 119, 134, 151, 170, 191, 207,\n>> +              216, 199, 178, 159, 141, 126, 114, 103,  92,  82,  74,  66,  60,  54,  51,  50,  50,  51,  54,  60,  66,  73,  82,  91, 101, 112, 125, 140, 158, 177, 197, 215,\n>> +             ]\n> I love how you can 'see' the shading in the ascii data!\nMe too!\n>\n> <snip lots of ascii data>\n>\n>\n> With BLC handled however it needs ...\n>\n> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\nI actually have a newer version of this tuning file with the lens shading adjusted to be less heavy \naround the peripheries (that's the only change) - this turns out to be too heavy in certain lighting \nconditions; I'll post that version in the v2 of the set. Should I keep the ack (with BLC removed \ntoo), or would you like to see that version of the file first?\n\n\nThanks\n\nDan","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 4F087C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Jul 2025 19:19:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 619196900F;\n\tMon, 21 Jul 2025 21:19:37 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 659B468FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jul 2025 21:19:36 +0200 (CEST)","from [192.168.0.43]\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0ED5F7950;\n\tMon, 21 Jul 2025 21:18:59 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PzCzHZhk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753125539;\n\tbh=MFBl5UcsC6a5UwVSRVFJE3xJSScTpsibhkeGp+mMpV0=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=PzCzHZhku7v2/Q5llTVbNJMTrnLmyl210iqgDXlvx0Q2HFG9kUDeSBPeEXJHBa55d\n\t6+xhZgn1hrlx5dHmpT3YMHEcQb2gLU/ug3/dz4Vy9epI0DhEtdNP6ZrEneb7P8cjOn\n\tHxkTIaER1tgUTyrloV/CHpcL2HLj2mWMbS4IvwDk=","Message-ID":"<bf9f8a99-9149-43fb-8591-0f78f6759879@ideasonboard.com>","Date":"Mon, 21 Jul 2025 20:19:32 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20250304231254.10588-1-dan.scally@ideasonboard.com>\n\t<20250304231254.10588-4-dan.scally@ideasonboard.com>\n\t<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>","Content-Language":"en-US","From":"Dan Scally <dan.scally@ideasonboard.com>","Autocrypt":"addr=dan.scally@ideasonboard.com; keydata=\n\txsFNBGLydlEBEADa5O2s0AbUguprfvXOQun/0a8y2Vk6BqkQALgeD6KnXSWwaoCULp18etYW\n\tB31bfgrdphXQ5kUQibB0ADK8DERB4wrzrUb5CMxLBFE7mQty+v5NsP0OFNK9XTaAOcmD+Ove\n\teIjYvqurAaro91jrRVrS1gBRxIFqyPgNvwwL+alMZhn3/2jU2uvBmuRrgnc/e9cHKiuT3Dtq\n\tMHGPKL2m+plk+7tjMoQFfexoQ1JKugHAjxAhJfrkXh6uS6rc01bYCyo7ybzg53m1HLFJdNGX\n\tsUKR+dQpBs3SY4s66tc1sREJqdYyTsSZf80HjIeJjU/hRunRo4NjRIJwhvnK1GyjOvvuCKVU\n\tRWpY8dNjNu5OeAfdrlvFJOxIE9M8JuYCQTMULqd1NuzbpFMjc9524U3Cngs589T7qUMPb1H1\n\tNTA81LmtJ6Y+IV5/kiTUANflpzBwhu18Ok7kGyCq2a2jsOcVmk8gZNs04gyjuj8JziYwwLbf\n\tvzABwpFVcS8aR+nHIZV1HtOzyw8CsL8OySc3K9y+Y0NRpziMRvutrppzgyMb9V+N31mK9Mxl\n\t1YkgaTl4ciNWpdfUe0yxH03OCuHi3922qhPLF4XX5LN+NaVw5Xz2o3eeWklXdouxwV7QlN33\n\tu4+u2FWzKxDqO6WLQGjxPE0mVB4Gh5Pa1Vb0ct9Ctg0qElvtGQARAQABzShEYW4gU2NhbGx5\n\tIDxkYW4uc2NhbGx5QGlkZWFzb25ib2FyZC5jb20+wsGNBBMBCAA3FiEEsdtt8OWP7+8SNfQe\n\tkiQuh/L+GMQFAmLydlIFCQWjmoACGwMECwkIBwUVCAkKCwUWAgMBAAAKCRCSJC6H8v4YxDI2\n\tEAC2Gz0iyaXJkPInyshrREEWbo0CA6v5KKf3I/HlMPqkZ48bmGoYm4mEQGFWZJAT3K4ir8bg\n\tcEfs9V54gpbrZvdwS4abXbUK4WjKwEs8HK3XJv1WXUN2bsz5oEJWZUImh9gD3naiLLI9QMMm\n\tw/aZkT+NbN5/2KvChRWhdcha7+2Te4foOY66nIM+pw2FZM6zIkInLLUik2zXOhaZtqdeJZQi\n\tHSPU9xu7TRYN4cvdZAnSpG7gQqmLm5/uGZN1/sB3kHTustQtSXKMaIcD/DMNI3JN/t+RJVS7\n\tc0Jh/ThzTmhHyhxx3DRnDIy7kwMI4CFvmhkVC2uNs9kWsj1DuX5kt8513mvfw2OcX9UnNKmZ\n\tnhNCuF6DxVrL8wjOPuIpiEj3V+K7DFF1Cxw1/yrLs8dYdYh8T8vCY2CHBMsqpESROnTazboh\n\tAiQ2xMN1cyXtX11Qwqm5U3sykpLbx2BcmUUUEAKNsM//Zn81QXKG8vOx0ZdMfnzsCaCzt8f6\n\t9dcDBBI3tJ0BI9ByiocqUoL6759LM8qm18x3FYlxvuOs4wSGPfRVaA4yh0pgI+ModVC2Pu3y\n\tejE/IxeatGqJHh6Y+iJzskdi27uFkRixl7YJZvPJAbEn7kzSi98u/5ReEA8Qhc8KO/B7wprj\n\txjNMZNYd0Eth8+WkixHYj752NT5qshKJXcyUU87BTQRi8nZSARAAx0BJayh1Fhwbf4zoY56x\n\txHEpT6DwdTAYAetd3yiKClLVJadYxOpuqyWa1bdfQWPb+h4MeXbWw/53PBgn7gI2EA7ebIRC\n\tPJJhAIkeym7hHZoxqDQTGDJjxFEL11qF+U3rhWiL2Zt0Pl+zFq0eWYYVNiXjsIS4FI2+4m16\n\ttPbDWZFJnSZ828VGtRDQdhXfx3zyVX21lVx1bX4/OZvIET7sVUufkE4hrbqrrufre7wsjD1t\n\t8MQKSapVrr1RltpzPpScdoxknOSBRwOvpp57pJJe5A0L7+WxJ+vQoQXj0j+5tmIWOAV1qBQp\n\thyoyUk9JpPfntk2EKnZHWaApFp5TcL6c5LhUvV7F6XwOjGPuGlZQCWXee9dr7zym8iR3irWT\n\t+49bIh5PMlqSLXJDYbuyFQHFxoiNdVvvf7etvGfqFYVMPVjipqfEQ38ST2nkzx+KBICz7uwj\n\tJwLBdTXzGFKHQNckGMl7F5QdO/35An/QcxBnHVMXqaSd12tkJmoRVWduwuuoFfkTY5mUV3uX\n\txGj3iVCK4V+ezOYA7c2YolfRCNMTza6vcK/P4tDjjsyBBZrCCzhBvd4VVsnnlZhVaIxoky4K\n\taL+AP+zcQrUZmXmgZjXOLryGnsaeoVrIFyrU6ly90s1y3KLoPsDaTBMtnOdwxPmo1xisH8oL\n\ta/VRgpFBfojLPxMAEQEAAcLBfAQYAQgAJhYhBLHbbfDlj+/vEjX0HpIkLofy/hjEBQJi8nZT\n\tBQkFo5qAAhsMAAoJEJIkLofy/hjEXPcQAMIPNqiWiz/HKu9W4QIf1OMUpKn3YkVIj3p3gvfM\n\tRes4fGX94Ji599uLNrPoxKyaytC4R6BTxVriTJjWK8mbo9jZIRM4vkwkZZ2bu98EweSucxbp\n\tvjESsvMXGgxniqV/RQ/3T7LABYRoIUutARYq58p5HwSP0frF0fdFHYdTa2g7MYZl1ur2JzOC\n\tFHRpGadlNzKDE3fEdoMobxHB3Lm6FDml5GyBAA8+dQYVI0oDwJ3gpZPZ0J5Vx9RbqXe8RDuR\n\tdu90hvCJkq7/tzSQ0GeD3BwXb9/R/A4dVXhaDd91Q1qQXidI+2jwhx8iqiYxbT+DoAUkQRQy\n\txBtoCM1CxH7u45URUgD//fxYr3D4B1SlonA6vdaEdHZOGwECnDpTxecENMbz/Bx7qfrmd901\n\tD+N9SjIwrbVhhSyUXYnSUb8F+9g2RDY42Sk7GcYxIeON4VzKqWM7hpkXZ47pkK0YodO+dRKM\n\tyMcoUWrTK0Uz6UzUGKoJVbxmSW/EJLEGoI5p3NWxWtScEVv8mO49gqQdrRIOheZycDmHnItt\n\t9Qjv00uFhEwv2YfiyGk6iGF2W40s2pH2t6oeuGgmiZ7g6d0MEK8Ql/4zPItvr1c1rpwpXUC1\n\tu1kQWgtnNjFHX3KiYdqjcZeRBiry1X0zY+4Y24wUU0KsEewJwjhmCKAsju1RpdlPg2kC","In-Reply-To":"<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":34998,"web_url":"https://patchwork.libcamera.org/comment/34998/","msgid":"<175312580461.50296.8110343708998229372@ping.linuxembedded.co.uk>","date":"2025-07-21T19:23:24","subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Dan Scally (2025-07-21 20:19:32)\n> Hi Kieran\n> \n> On 21/07/2025 19:51, Kieran Bingham wrote:\n> > Quoting Daniel Scally (2025-03-04 23:12:54)\n> >> Add a tuning file for the imx708 with black level offsets and lens\n> >> shading table data.\n> >>\n> >> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> >> ---\n> >>   src/ipa/mali-c55/data/imx708.yaml | 325 ++++++++++++++++++++++++++++++\n> >>   src/ipa/mali-c55/data/meson.build |   1 +\n> >>   2 files changed, 326 insertions(+)\n> >>   create mode 100644 src/ipa/mali-c55/data/imx708.yaml\n> >>\n> >> diff --git a/src/ipa/mali-c55/data/imx708.yaml b/src/ipa/mali-c55/data/imx708.yaml\n> >> new file mode 100644\n> >> index 00000000..75b8398a\n> >> --- /dev/null\n> >> +++ b/src/ipa/mali-c55/data/imx708.yaml\n> >> @@ -0,0 +1,325 @@\n> >> +# SPDX-License-Identifier: CC0-1.0\n> >> +%YAML 1.1\n> >> +---\n> >> +version: 1\n> >> +algorithms:\n> >> +  - Agc:\n> >> +  - Awb:\n> >> +  - BlackLevelCorrection:\n> >> +      offset00: 65536\n> >> +      offset01: 65536\n> >> +      offset10: 65536\n> >> +      offset11: 65536\n> > I think we've moved Black levels to the Sensor Helpers now ?\n> \n> Errr I'll have to look; the ISP needs them at a specific bit-depth and possibly the BLC algorithm \n> would need a patch to convert from the values in the CameraSensorHelpers then - which I assume are \n> at some normalised depth. I'll post that and a patch for the CameraSensorHelperImx708 in a v2 of \n> this set\n> \n> >\n> >> +  - Lsc:\n> >> +      meshScale: 6\n> >> +      sets:\n> >> +        - ct: 2500\n> >> +          r: [\n> >\n> > Are these tables converted from RPi tuning files ?\n> No; I ran the tuning script from patch 2 on a bunch of images.\n> > If so - can we have a conversion utility to support converting other\n> > files, and also keep this up to date when more parameters could be\n> > converted and supported ?\n> >\n> > For example, I expect the white balance and CCM tuning could be\n> > converted straight across too...\n> >\n> >> +              227, 209, 187, 167, 150, 134, 120, 109,  99,  89,  81,  73,  67,  61,  57,  57,  57,  57,  61,  67,  73,  80,  89,  98, 109, 120, 134, 150, 168, 188, 209, 227,\n> >> +              218, 202, 181, 161, 143, 128, 115, 104,  93,  84,  75,  67,  61,  56,  53,  51,  51,  53,  56,  61,  67,  75,  83,  93, 103, 115, 128, 143, 161, 181, 202, 219,\n> >> +              210, 194, 173, 153, 136, 121, 109,  97,  87,  76,  67,  60,  53,  48,  45,  44,  44,  45,  48,  53,  60,  67,  76,  86,  97, 108, 121, 136, 154, 173, 194, 211,\n> >> +              204, 187, 166, 146, 130, 115, 103,  91,  80,  69,  60,  53,  46,  41,  38,  37,  37,  38,  41,  46,  53,  60,  69,  79,  91, 102, 115, 130, 147, 166, 188, 205,\n> >> +              197, 180, 159, 140, 124, 110,  97,  85,  73,  63,  53,  46,  40,  35,  32,  31,  31,  32,  35,  40,  46,  53,  62,  73,  85,  97, 110, 124, 140, 160, 181, 199,\n> >> +              192, 174, 154, 134, 119, 105,  92,  80,  67,  57,  47,  40,  34,  29,  27,  25,  25,  27,  29,  34,  40,  47,  56,  67,  79,  92, 105, 119, 135, 154, 175, 193,\n> >> +              187, 169, 148, 130, 114, 100,  87,  74,  62,  51,  42,  34,  29,  24,  22,  20,  20,  22,  24,  29,  34,  42,  51,  62,  74,  87, 100, 114, 130, 148, 170, 188,\n> >> +              182, 164, 143, 125, 110,  96,  83,  69,  57,  46,  37,  30,  24,  20,  17,  16,  16,  17,  20,  24,  30,  37,  46,  57,  69,  82,  96, 110, 125, 143, 164, 183,\n> >> +              178, 159, 139, 121, 106,  92,  78,  65,  52,  42,  33,  26,  20,  17,  14,  12,  12,  14,  17,  20,  26,  33,  42,  52,  65,  78,  92, 106, 121, 139, 160, 179,\n> >> +              175, 156, 135, 118, 103,  89,  75,  61,  49,  38,  29,  22,  17,  14,  10,   9,   9,  10,  14,  17,  22,  29,  38,  48,  61,  74,  89, 103, 118, 135, 156, 176,\n> >> +              172, 152, 132, 115, 100,  86,  71,  57,  45,  35,  26,  19,  14,  10,   8,   6,   6,   8,  10,  14,  19,  26,  34,  45,  57,  71,  85, 100, 115, 132, 152, 173,\n> >> +              170, 149, 129, 113,  98,  83,  68,  55,  42,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  11,  17,  23,  32,  42,  54,  68,  83,  97, 112, 129, 150, 170,\n> >> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   2,   2,   4,   6,  10,  15,  21,  30,  40,  52,  66,  80,  95, 110, 127, 147, 168,\n> >> +              167, 145, 126, 109,  94,  79,  64,  50,  38,  28,  20,  13,   8,   5,   2,   1,   1,   2,   4,   8,  13,  20,  28,  38,  50,  64,  79,  94, 109, 126, 145, 167,\n> >> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   1,   1,   1,   1,   4,   7,  12,  19,  27,  37,  49,  62,  77,  93, 108, 124, 144, 166,\n> >> +              166, 144, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 124, 143, 166,\n> >> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> >> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   1,   1,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> >> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   2,   1,   1,   2,   4,   7,  12,  19,  27,  37,  49,  62,  77,  92, 107, 124, 144, 166,\n> >> +              167, 145, 126, 109,  94,  79,  64,  51,  39,  28,  20,  14,   8,   5,   3,   2,   2,   3,   5,   8,  13,  20,  28,  38,  50,  64,  78,  93, 108, 125, 145, 167,\n> >> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   3,   3,   4,   6,  10,  15,  21,  30,  40,  52,  65,  80,  95, 110, 127, 146, 168,\n> >> +              169, 149, 129, 112,  98,  83,  69,  55,  43,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  12,  17,  23,  32,  42,  54,  68,  82,  97, 112, 128, 148, 169,\n> >> +              172, 152, 132, 115, 100,  86,  71,  58,  46,  35,  26,  20,  14,  11,   8,   7,   7,   8,  11,  14,  19,  26,  35,  45,  57,  71,  85,  99, 114, 131, 151, 171,\n> >> +              175, 155, 135, 118, 103,  89,  75,  61,  49,  38,  30,  23,  17,  14,  11,   9,   9,  11,  14,  17,  22,  29,  38,  48,  60,  74,  88, 102, 117, 134, 154, 174,\n> >> +              178, 159, 139, 121, 106,  92,  79,  65,  53,  42,  33,  26,  21,  17,  14,  13,  13,  14,  17,  20,  26,  33,  42,  52,  64,  78,  91, 105, 120, 137, 158, 177,\n> >> +              181, 163, 143, 125, 110,  96,  83,  70,  57,  47,  38,  30,  25,  21,  18,  16,  16,  18,  20,  25,  30,  37,  46,  57,  69,  82,  95, 108, 124, 142, 162, 181,\n> >> +              185, 168, 147, 129, 114, 100,  87,  75,  62,  52,  42,  35,  30,  25,  22,  21,  21,  22,  25,  30,  35,  42,  51,  62,  73,  86,  99, 113, 128, 146, 167, 185,\n> >> +              190, 173, 153, 134, 118, 105,  92,  80,  68,  57,  48,  40,  35,  30,  27,  26,  26,  27,  30,  35,  40,  47,  56,  67,  79,  91, 103, 117, 133, 152, 172, 190,\n> >> +              196, 179, 159, 139, 123, 109,  97,  85,  74,  63,  54,  47,  40,  36,  33,  31,  31,  33,  36,  40,  46,  53,  62,  73,  84,  96, 108, 122, 138, 157, 178, 195,\n> >> +              202, 185, 165, 146, 129, 115, 103,  91,  80,  70,  61,  54,  47,  42,  39,  38,  38,  39,  42,  46,  53,  60,  69,  79,  90, 101, 113, 128, 144, 163, 184, 201,\n> >> +              209, 192, 172, 153, 135, 121, 108,  97,  87,  77,  68,  60,  54,  49,  46,  45,  45,  46,  49,  54,  60,  67,  76,  86,  96, 107, 119, 134, 151, 170, 191, 207,\n> >> +              216, 199, 178, 159, 141, 126, 114, 103,  92,  82,  74,  66,  60,  54,  51,  50,  50,  51,  54,  60,  66,  73,  82,  91, 101, 112, 125, 140, 158, 177, 197, 215,\n> >> +             ]\n> > I love how you can 'see' the shading in the ascii data!\n> Me too!\n> >\n> > <snip lots of ascii data>\n> >\n> >\n> > With BLC handled however it needs ...\n> >\n> > Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> \n> I actually have a newer version of this tuning file with the lens shading adjusted to be less heavy \n> around the peripheries (that's the only change) - this turns out to be too heavy in certain lighting \n> conditions; I'll post that version in the v2 of the set. Should I keep the ack (with BLC removed \n> too), or would you like to see that version of the file first?\n> \n\nNo - keep the ack ;-) I don't want to review a bunch-of-numbers(TM) ;-)\n\n--\nKieran\n\n> \n> Thanks\n> \n> Dan\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 C7250BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Jul 2025 19:23:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 88D0D69013;\n\tMon, 21 Jul 2025 21:23:28 +0200 (CEST)","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 6B8FD68FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Jul 2025 21:23:27 +0200 (CEST)","from pendragon.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 62ABD22D2;\n\tMon, 21 Jul 2025 21:22:50 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"pkqxfrgR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753125770;\n\tbh=w/bey1aRsr4Xvqd9JugTovPmI85cpbodD0/dOyFaMS8=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=pkqxfrgRC7qX3Px9LYfkBhjOMXnf/rmm0vH7L33rpOL2q5GWwPTcC2sclZhqf96cP\n\tdVbCQSanodV3biSHwQU2g31Z7fhA/I4nGtqKN8+xbSbp1bRiqRcbjuYFMhZuH+3/4c\n\t00S8tjFEgK/SWoFpuucgvwKGHltvmnTu4VmaV3IY=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<bf9f8a99-9149-43fb-8591-0f78f6759879@ideasonboard.com>","References":"<20250304231254.10588-1-dan.scally@ideasonboard.com>\n\t<20250304231254.10588-4-dan.scally@ideasonboard.com>\n\t<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>\n\t<bf9f8a99-9149-43fb-8591-0f78f6759879@ideasonboard.com>","Subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Dan Scally <dan.scally@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 21 Jul 2025 20:23:24 +0100","Message-ID":"<175312580461.50296.8110343708998229372@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":35018,"web_url":"https://patchwork.libcamera.org/comment/35018/","msgid":"<175318460460.3923365.642403410549583955@neptunite.rasen.tech>","date":"2025-07-22T11:43:24","subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Quoting Daniel Scally (2025-03-05 08:12:54)\n> Add a tuning file for the imx708 with black level offsets and lens\n> shading table data.\n> \n> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n\nLooks good to me.\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  src/ipa/mali-c55/data/imx708.yaml | 325 ++++++++++++++++++++++++++++++\n>  src/ipa/mali-c55/data/meson.build |   1 +\n>  2 files changed, 326 insertions(+)\n>  create mode 100644 src/ipa/mali-c55/data/imx708.yaml\n> \n> diff --git a/src/ipa/mali-c55/data/imx708.yaml b/src/ipa/mali-c55/data/imx708.yaml\n> new file mode 100644\n> index 00000000..75b8398a\n> --- /dev/null\n> +++ b/src/ipa/mali-c55/data/imx708.yaml\n> @@ -0,0 +1,325 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +%YAML 1.1\n> +---\n> +version: 1\n> +algorithms:\n> +  - Agc:\n> +  - Awb:\n> +  - BlackLevelCorrection:\n> +      offset00: 65536\n> +      offset01: 65536\n> +      offset10: 65536\n> +      offset11: 65536\n> +  - Lsc:\n> +      meshScale: 6\n> +      sets:\n> +        - ct: 2500\n> +          r: [\n> +              227, 209, 187, 167, 150, 134, 120, 109,  99,  89,  81,  73,  67,  61,  57,  57,  57,  57,  61,  67,  73,  80,  89,  98, 109, 120, 134, 150, 168, 188, 209, 227,\n> +              218, 202, 181, 161, 143, 128, 115, 104,  93,  84,  75,  67,  61,  56,  53,  51,  51,  53,  56,  61,  67,  75,  83,  93, 103, 115, 128, 143, 161, 181, 202, 219,\n> +              210, 194, 173, 153, 136, 121, 109,  97,  87,  76,  67,  60,  53,  48,  45,  44,  44,  45,  48,  53,  60,  67,  76,  86,  97, 108, 121, 136, 154, 173, 194, 211,\n> +              204, 187, 166, 146, 130, 115, 103,  91,  80,  69,  60,  53,  46,  41,  38,  37,  37,  38,  41,  46,  53,  60,  69,  79,  91, 102, 115, 130, 147, 166, 188, 205,\n> +              197, 180, 159, 140, 124, 110,  97,  85,  73,  63,  53,  46,  40,  35,  32,  31,  31,  32,  35,  40,  46,  53,  62,  73,  85,  97, 110, 124, 140, 160, 181, 199,\n> +              192, 174, 154, 134, 119, 105,  92,  80,  67,  57,  47,  40,  34,  29,  27,  25,  25,  27,  29,  34,  40,  47,  56,  67,  79,  92, 105, 119, 135, 154, 175, 193,\n> +              187, 169, 148, 130, 114, 100,  87,  74,  62,  51,  42,  34,  29,  24,  22,  20,  20,  22,  24,  29,  34,  42,  51,  62,  74,  87, 100, 114, 130, 148, 170, 188,\n> +              182, 164, 143, 125, 110,  96,  83,  69,  57,  46,  37,  30,  24,  20,  17,  16,  16,  17,  20,  24,  30,  37,  46,  57,  69,  82,  96, 110, 125, 143, 164, 183,\n> +              178, 159, 139, 121, 106,  92,  78,  65,  52,  42,  33,  26,  20,  17,  14,  12,  12,  14,  17,  20,  26,  33,  42,  52,  65,  78,  92, 106, 121, 139, 160, 179,\n> +              175, 156, 135, 118, 103,  89,  75,  61,  49,  38,  29,  22,  17,  14,  10,   9,   9,  10,  14,  17,  22,  29,  38,  48,  61,  74,  89, 103, 118, 135, 156, 176,\n> +              172, 152, 132, 115, 100,  86,  71,  57,  45,  35,  26,  19,  14,  10,   8,   6,   6,   8,  10,  14,  19,  26,  34,  45,  57,  71,  85, 100, 115, 132, 152, 173,\n> +              170, 149, 129, 113,  98,  83,  68,  55,  42,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  11,  17,  23,  32,  42,  54,  68,  83,  97, 112, 129, 150, 170,\n> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   2,   2,   4,   6,  10,  15,  21,  30,  40,  52,  66,  80,  95, 110, 127, 147, 168,\n> +              167, 145, 126, 109,  94,  79,  64,  50,  38,  28,  20,  13,   8,   5,   2,   1,   1,   2,   4,   8,  13,  20,  28,  38,  50,  64,  79,  94, 109, 126, 145, 167,\n> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   1,   1,   1,   1,   4,   7,  12,  19,  27,  37,  49,  62,  77,  93, 108, 124, 144, 166,\n> +              166, 144, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 124, 143, 166,\n> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   1,   1,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   2,   1,   1,   2,   4,   7,  12,  19,  27,  37,  49,  62,  77,  92, 107, 124, 144, 166,\n> +              167, 145, 126, 109,  94,  79,  64,  51,  39,  28,  20,  14,   8,   5,   3,   2,   2,   3,   5,   8,  13,  20,  28,  38,  50,  64,  78,  93, 108, 125, 145, 167,\n> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   3,   3,   4,   6,  10,  15,  21,  30,  40,  52,  65,  80,  95, 110, 127, 146, 168,\n> +              169, 149, 129, 112,  98,  83,  69,  55,  43,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  12,  17,  23,  32,  42,  54,  68,  82,  97, 112, 128, 148, 169,\n> +              172, 152, 132, 115, 100,  86,  71,  58,  46,  35,  26,  20,  14,  11,   8,   7,   7,   8,  11,  14,  19,  26,  35,  45,  57,  71,  85,  99, 114, 131, 151, 171,\n> +              175, 155, 135, 118, 103,  89,  75,  61,  49,  38,  30,  23,  17,  14,  11,   9,   9,  11,  14,  17,  22,  29,  38,  48,  60,  74,  88, 102, 117, 134, 154, 174,\n> +              178, 159, 139, 121, 106,  92,  79,  65,  53,  42,  33,  26,  21,  17,  14,  13,  13,  14,  17,  20,  26,  33,  42,  52,  64,  78,  91, 105, 120, 137, 158, 177,\n> +              181, 163, 143, 125, 110,  96,  83,  70,  57,  47,  38,  30,  25,  21,  18,  16,  16,  18,  20,  25,  30,  37,  46,  57,  69,  82,  95, 108, 124, 142, 162, 181,\n> +              185, 168, 147, 129, 114, 100,  87,  75,  62,  52,  42,  35,  30,  25,  22,  21,  21,  22,  25,  30,  35,  42,  51,  62,  73,  86,  99, 113, 128, 146, 167, 185,\n> +              190, 173, 153, 134, 118, 105,  92,  80,  68,  57,  48,  40,  35,  30,  27,  26,  26,  27,  30,  35,  40,  47,  56,  67,  79,  91, 103, 117, 133, 152, 172, 190,\n> +              196, 179, 159, 139, 123, 109,  97,  85,  74,  63,  54,  47,  40,  36,  33,  31,  31,  33,  36,  40,  46,  53,  62,  73,  84,  96, 108, 122, 138, 157, 178, 195,\n> +              202, 185, 165, 146, 129, 115, 103,  91,  80,  70,  61,  54,  47,  42,  39,  38,  38,  39,  42,  46,  53,  60,  69,  79,  90, 101, 113, 128, 144, 163, 184, 201,\n> +              209, 192, 172, 153, 135, 121, 108,  97,  87,  77,  68,  60,  54,  49,  46,  45,  45,  46,  49,  54,  60,  67,  76,  86,  96, 107, 119, 134, 151, 170, 191, 207,\n> +              216, 199, 178, 159, 141, 126, 114, 103,  92,  82,  74,  66,  60,  54,  51,  50,  50,  51,  54,  60,  66,  73,  82,  91, 101, 112, 125, 140, 158, 177, 197, 215,\n> +             ]\n> +          g: [\n> +              179, 163, 144, 128, 112,  99,  88,  79,  71,  64,  58,  52,  48,  43,  41,  41,  41,  41,  43,  48,  52,  58,  64,  71,  79,  88,  99, 113, 128, 145, 164, 180,\n> +              171, 157, 139, 122, 107,  94,  84,  75,  67,  60,  53,  48,  43,  40,  38,  37,  37,  38,  40,  43,  48,  53,  60,  67,  74,  84,  94, 107, 123, 139, 158, 173,\n> +              165, 150, 132, 116, 101,  89,  79,  70,  62,  54,  48,  43,  38,  35,  32,  31,  31,  33,  35,  38,  43,  48,  54,  61,  69,  79,  89, 101, 116, 133, 151, 166,\n> +              158, 144, 127, 110,  96,  84,  74,  65,  57,  50,  43,  38,  33,  30,  28,  27,  27,  28,  30,  33,  38,  43,  49,  57,  65,  74,  84,  96, 111, 127, 145, 160,\n> +              153, 139, 121, 105,  91,  80,  70,  61,  53,  45,  38,  33,  29,  25,  23,  22,  22,  23,  25,  29,  33,  38,  45,  52,  61,  70,  80,  91, 105, 122, 140, 155,\n> +              149, 134, 116, 100,  87,  76,  66,  57,  48,  41,  34,  29,  25,  21,  19,  18,  18,  19,  21,  25,  29,  34,  41,  48,  57,  66,  76,  87, 101, 117, 135, 150,\n> +              144, 129, 112,  96,  84,  73,  63,  53,  44,  37,  30,  25,  21,  18,  16,  15,  15,  16,  18,  21,  25,  30,  37,  44,  53,  63,  73,  83,  96, 112, 130, 146,\n> +              140, 125, 108,  93,  80,  69,  59,  50,  41,  33,  27,  22,  18,  15,  13,  12,  12,  13,  15,  18,  22,  27,  33,  41,  50,  59,  69,  80,  93, 108, 126, 142,\n> +              137, 121, 104,  89,  77,  67,  56,  47,  38,  30,  24,  19,  15,  12,  10,   9,   9,  10,  12,  15,  19,  24,  30,  38,  47,  56,  66,  77,  90, 104, 122, 139,\n> +              134, 118, 101,  87,  75,  64,  54,  44,  35,  28,  21,  16,  12,  10,   8,   7,   7,   8,  10,  12,  16,  21,  27,  35,  44,  54,  64,  75,  87, 101, 119, 136,\n> +              132, 115,  98,  85,  73,  62,  51,  41,  33,  25,  19,  14,  10,   8,   6,   5,   5,   6,   8,  10,  14,  19,  25,  32,  41,  51,  62,  72,  84,  99, 116, 133,\n> +              130, 113,  96,  83,  71,  60,  49,  39,  31,  23,  17,  12,   9,   6,   4,   3,   3,   4,   6,   8,  12,  17,  23,  30,  39,  49,  60,  71,  83,  96, 114, 131,\n> +              128, 111,  95,  81,  69,  58,  48,  38,  29,  22,  16,  11,   7,   4,   3,   2,   2,   3,   4,   7,  11,  16,  22,  29,  38,  47,  58,  69,  81,  95, 112, 130,\n> +              127, 110,  93,  80,  68,  57,  46,  36,  28,  21,  15,  10,   6,   3,   2,   1,   1,   2,   3,   6,  10,  15,  20,  28,  36,  46,  57,  68,  80,  93, 110, 129,\n> +              127, 109,  92,  79,  67,  56,  45,  36,  27,  20,  14,   9,   5,   3,   1,   1,   1,   1,   3,   5,   9,  14,  20,  27,  35,  45,  56,  67,  79,  93, 109, 128,\n> +              127, 108,  92,  79,  67,  56,  45,  35,  26,  19,  13,   9,   5,   2,   1,   0,   0,   1,   2,   5,   9,  13,  19,  26,  35,  45,  55,  67,  79,  92, 109, 128,\n> +              127, 108,  92,  78,  67,  56,  45,  35,  26,  19,  13,   9,   5,   2,   1,   0,   0,   1,   2,   5,   8,  13,  19,  26,  35,  45,  55,  67,  78,  92, 108, 128,\n> +              127, 108,  92,  78,  67,  56,  45,  35,  26,  19,  13,   9,   5,   2,   1,   0,   0,   1,   2,   5,   9,  13,  19,  26,  35,  45,  55,  67,  78,  92, 108, 128,\n> +              127, 109,  92,  79,  67,  56,  45,  36,  27,  20,  14,   9,   5,   3,   1,   1,   1,   1,   3,   5,   9,  14,  20,  27,  35,  45,  56,  67,  79,  92, 109, 128,\n> +              127, 110,  93,  80,  68,  57,  46,  36,  28,  21,  15,  10,   6,   3,   2,   1,   1,   2,   3,   6,  10,  15,  20,  28,  36,  46,  57,  68,  80,  93, 110, 129,\n> +              128, 111,  95,  81,  69,  58,  48,  38,  29,  22,  16,  11,   7,   4,   3,   2,   2,   3,   4,   7,  11,  16,  22,  29,  38,  47,  58,  69,  81,  95, 112, 129,\n> +              130, 113,  96,  82,  71,  60,  49,  39,  31,  23,  17,  12,   9,   6,   4,   3,   3,   4,   6,   8,  12,  17,  23,  31,  39,  49,  60,  70,  82,  96, 113, 131,\n> +              132, 116,  99,  84,  73,  62,  51,  41,  33,  25,  19,  14,  10,   8,   6,   5,   5,   6,   8,  10,  14,  19,  25,  33,  41,  51,  61,  72,  84,  98, 115, 133,\n> +              134, 118, 101,  87,  75,  64,  54,  44,  35,  28,  21,  16,  12,  10,   8,   7,   7,   8,  10,  12,  16,  21,  27,  35,  44,  53,  64,  74,  87, 101, 118, 135,\n> +              137, 121, 104,  90,  77,  67,  56,  47,  38,  30,  24,  19,  15,  12,  10,   9,   9,  10,  12,  15,  19,  24,  30,  38,  46,  56,  66,  77,  89, 104, 122, 138,\n> +              140, 125, 108,  93,  80,  69,  59,  50,  41,  33,  27,  22,  18,  15,  13,  12,  12,  13,  15,  18,  22,  27,  33,  41,  50,  59,  69,  80,  92, 108, 125, 141,\n> +              143, 129, 112,  96,  83,  72,  63,  53,  45,  37,  30,  25,  22,  18,  16,  15,  15,  16,  18,  22,  25,  30,  37,  44,  53,  62,  72,  83,  96, 111, 129, 145,\n> +              148, 133, 116, 100,  87,  76,  66,  57,  49,  41,  34,  29,  25,  22,  20,  19,  19,  20,  22,  25,  29,  34,  41,  48,  57,  66,  75,  87, 100, 116, 133, 149,\n> +              152, 138, 121, 105,  91,  80,  70,  61,  53,  45,  39,  33,  29,  26,  24,  23,  23,  24,  26,  29,  33,  38,  45,  52,  61,  70,  79,  91, 105, 121, 138, 153,\n> +              157, 143, 126, 110,  96,  84,  74,  65,  57,  50,  43,  38,  33,  30,  28,  27,  27,  28,  30,  33,  38,  43,  50,  57,  65,  74,  83,  95, 110, 126, 143, 158,\n> +              163, 149, 132, 116, 101,  89,  79,  70,  62,  55,  48,  43,  38,  35,  33,  32,  32,  33,  35,  38,  43,  48,  54,  62,  69,  78,  88, 101, 116, 132, 149, 164,\n> +              170, 155, 137, 121, 106,  94,  83,  74,  66,  59,  53,  47,  43,  38,  36,  36,  36,  36,  38,  43,  47,  53,  59,  66,  74,  82,  93, 106, 121, 137, 155, 171,\n> +             ]\n> +          b: [\n> +              192, 178, 158, 140, 124, 110,  98,  88,  79,  72,  65,  59,  53,  48,  47,  47,  47,  47,  48,  53,  59,  65,  72,  79,  88,  98, 110, 124, 141, 159, 176, 191,\n> +              184, 170, 150, 133, 117, 103,  92,  82,  74,  66,  59,  53,  48,  44,  42,  41,  41,  42,  45,  48,  53,  59,  66,  73,  82,  92, 103, 117, 133, 151, 168, 184,\n> +              177, 162, 143, 126, 110,  97,  86,  77,  68,  60,  53,  47,  42,  38,  36,  35,  35,  36,  38,  42,  47,  53,  60,  67,  76,  86,  96, 110, 126, 144, 162, 178,\n> +              171, 156, 138, 120, 105,  92,  82,  72,  63,  55,  47,  42,  36,  33,  31,  30,  30,  31,  33,  36,  42,  47,  54,  62,  72,  82,  92, 105, 120, 138, 156, 171,\n> +              166, 151, 132, 115, 100,  88,  77,  68,  58,  50,  42,  36,  32,  28,  26,  25,  25,  26,  28,  32,  36,  42,  49,  58,  67,  77,  88, 100, 115, 133, 150, 166,\n> +              160, 146, 128, 110,  96,  84,  74,  63,  54,  45,  38,  32,  27,  24,  21,  20,  20,  21,  24,  28,  32,  38,  45,  53,  63,  73,  84,  96, 110, 127, 146, 161,\n> +              156, 141, 123, 106,  92,  80,  69,  59,  49,  41,  33,  27,  24,  20,  17,  16,  16,  18,  20,  24,  28,  34,  41,  49,  59,  69,  80,  92, 105, 122, 141, 157,\n> +              151, 137, 118, 102,  88,  77,  66,  55,  45,  37,  29,  24,  20,  16,  14,  13,  13,  14,  16,  20,  24,  30,  37,  45,  55,  66,  77,  89, 102, 119, 136, 153,\n> +              148, 132, 114,  98,  85,  74,  63,  52,  42,  33,  27,  21,  16,  14,  11,  10,  10,  11,  14,  16,  21,  26,  33,  42,  52,  62,  74,  86,  98, 115, 133, 150,\n> +              145, 129, 111,  96,  83,  71,  60,  49,  39,  31,  24,  18,  14,  11,   8,   7,   7,   8,  11,  14,  18,  23,  30,  39,  49,  60,  71,  83,  96, 112, 130, 146,\n> +              143, 127, 108,  93,  81,  69,  57,  46,  37,  28,  21,  16,  11,   8,   6,   5,   5,   6,   8,  11,  16,  21,  28,  36,  46,  57,  69,  81,  94, 109, 127, 144,\n> +              141, 124, 106,  91,  79,  67,  55,  44,  34,  26,  19,  14,   9,   6,   5,   3,   3,   5,   6,  10,  14,  19,  26,  34,  44,  55,  67,  79,  92, 107, 124, 142,\n> +              139, 122, 104,  90,  77,  65,  53,  42,  33,  25,  18,  12,   8,   5,   3,   2,   2,   3,   5,   8,  12,  18,  24,  33,  42,  53,  65,  77,  90, 105, 122, 140,\n> +              138, 120, 102,  88,  76,  64,  52,  41,  31,  23,  17,  11,   7,   4,   2,   1,   1,   2,   4,   7,  11,  16,  23,  31,  41,  52,  64,  76,  88, 103, 120, 139,\n> +              137, 119, 102,  87,  75,  63,  51,  40,  30,  22,  16,  10,   6,   3,   1,   1,   1,   1,   3,   6,  10,  15,  22,  30,  40,  51,  63,  75,  88, 103, 119, 139,\n> +              137, 118, 101,  87,  75,  62,  50,  39,  30,  22,  15,  10,   6,   3,   1,   0,   0,   1,   3,   5,  10,  15,  22,  30,  39,  50,  62,  75,  87, 102, 119, 138,\n> +              137, 118, 101,  87,  74,  62,  50,  39,  30,  22,  15,  10,   6,   3,   1,   0,   0,   1,   3,   5,  10,  15,  21,  30,  39,  50,  62,  75,  87, 102, 118, 138,\n> +              137, 118, 101,  87,  74,  62,  50,  39,  30,  22,  15,  10,   6,   3,   1,   0,   0,   1,   3,   6,  10,  15,  22,  30,  39,  50,  62,  75,  87, 102, 118, 138,\n> +              137, 119, 101,  87,  75,  62,  51,  40,  30,  22,  16,  10,   6,   3,   1,   1,   1,   2,   3,   6,  10,  15,  22,  30,  40,  51,  63,  75,  87, 102, 119, 138,\n> +              138, 119, 102,  88,  75,  63,  52,  41,  31,  23,  16,  11,   7,   4,   2,   1,   2,   2,   4,   7,  11,  16,  23,  31,  41,  52,  63,  75,  88, 103, 120, 139,\n> +              138, 121, 104,  89,  77,  65,  53,  42,  32,  24,  18,  12,   8,   5,   3,   2,   2,   3,   5,   8,  12,  18,  24,  32,  42,  53,  65,  77,  89, 105, 121, 139,\n> +              140, 123, 105,  91,  78,  66,  55,  44,  34,  26,  19,  14,   9,   6,   5,   3,   3,   5,   6,  10,  14,  19,  26,  34,  44,  55,  66,  78,  91, 106, 123, 141,\n> +              142, 125, 107,  93,  80,  68,  57,  46,  36,  28,  21,  16,  11,   8,   6,   5,   5,   6,   8,  11,  16,  21,  28,  36,  46,  57,  68,  80,  93, 108, 125, 143,\n> +              144, 128, 110,  95,  82,  71,  59,  49,  39,  30,  23,  18,  13,  11,   8,   7,   7,   8,  11,  14,  18,  24,  30,  39,  49,  59,  71,  83,  95, 111, 128, 146,\n> +              147, 131, 113,  98,  85,  73,  62,  52,  42,  33,  26,  20,  16,  13,  11,  10,  10,  11,  14,  16,  21,  27,  34,  42,  52,  62,  73,  85,  98, 114, 131, 148,\n> +              150, 135, 117, 101,  88,  76,  65,  55,  45,  37,  30,  24,  20,  16,  14,  13,  13,  14,  16,  20,  24,  30,  37,  45,  55,  65,  76,  88, 101, 117, 135, 151,\n> +              154, 140, 121, 105,  91,  79,  69,  59,  49,  40,  33,  27,  23,  20,  17,  16,  16,  18,  20,  24,  28,  34,  41,  49,  58,  69,  79,  91, 105, 121, 139, 154,\n> +              158, 144, 125, 109,  94,  83,  72,  63,  53,  45,  38,  32,  27,  23,  21,  20,  20,  22,  24,  28,  32,  38,  45,  53,  62,  72,  83,  94, 109, 126, 143, 159,\n> +              162, 148, 130, 113,  98,  86,  76,  67,  58,  49,  42,  36,  32,  28,  26,  25,  25,  26,  28,  32,  36,  42,  49,  57,  66,  76,  86,  98, 113, 130, 148, 164,\n> +              167, 153, 135, 118, 103,  91,  80,  71,  62,  54,  47,  42,  36,  32,  30,  29,  29,  30,  33,  36,  42,  47,  54,  62,  71,  80,  90, 103, 118, 135, 153, 168,\n> +              173, 161, 142, 125, 109,  96,  85,  76,  68,  59,  53,  47,  42,  38,  36,  35,  35,  36,  38,  42,  47,  53,  59,  67,  76,  85,  96, 109, 125, 142, 159, 174,\n> +              181, 168, 149, 132, 116, 102,  91,  82,  73,  65,  58,  52,  47,  42,  40,  40,  40,  40,  42,  47,  52,  58,  65,  73,  81,  91, 102, 116, 132, 149, 167, 181,\n> +             ]\n> +        - ct: 5500\n> +          r: [\n> +              210, 192, 171, 153, 135, 121, 108,  98,  88,  79,  72,  65,  59,  54,  51,  51,  51,  51,  55,  60,  66,  73,  81,  90, 100, 111, 124, 139, 157, 176, 197, 215,\n> +              201, 186, 166, 147, 130, 116, 104,  93,  84,  74,  66,  59,  54,  49,  47,  46,  46,  47,  50,  55,  61,  68,  76,  85,  95, 106, 119, 134, 151, 170, 191, 207,\n> +              194, 179, 158, 140, 124, 110,  98,  87,  77,  68,  59,  53,  47,  43,  40,  39,  39,  41,  44,  48,  55,  61,  70,  79,  89, 100, 112, 127, 144, 163, 183, 200,\n> +              188, 172, 152, 133, 118, 104,  93,  82,  71,  61,  53,  47,  40,  36,  34,  33,  33,  34,  37,  42,  48,  55,  63,  73,  84,  95, 107, 121, 137, 156, 177, 194,\n> +              182, 166, 146, 127, 112,  99,  88,  76,  65,  56,  47,  40,  35,  31,  28,  27,  27,  29,  32,  36,  42,  49,  57,  67,  78,  90, 102, 115, 131, 150, 171, 188,\n> +              177, 160, 140, 122, 108,  95,  83,  71,  60,  50,  42,  35,  30,  26,  23,  22,  22,  24,  27,  31,  36,  43,  52,  62,  73,  85,  98, 111, 126, 145, 165, 183,\n> +              172, 155, 135, 118, 104,  91,  78,  66,  55,  45,  37,  30,  26,  21,  19,  18,  18,  19,  22,  27,  31,  39,  47,  57,  69,  81,  93, 107, 122, 140, 160, 178,\n> +              168, 150, 131, 114, 100,  87,  74,  62,  50,  41,  33,  26,  21,  18,  15,  14,  14,  15,  18,  22,  27,  34,  43,  53,  64,  77,  90, 103, 118, 135, 155, 174,\n> +              164, 146, 127, 111,  97,  83,  70,  58,  46,  37,  29,  22,  18,  14,  12,  11,  11,  12,  15,  18,  24,  30,  39,  49,  60,  73,  86,  99, 114, 131, 151, 170,\n> +              162, 143, 124, 108,  94,  80,  67,  54,  43,  34,  26,  19,  14,  12,   9,   8,   8,   9,  12,  15,  20,  27,  35,  45,  57,  70,  83,  96, 111, 128, 148, 167,\n> +              159, 140, 121, 105,  91,  77,  64,  51,  40,  31,  23,  17,  12,   9,   7,   5,   5,   7,   9,  13,  18,  24,  32,  42,  54,  67,  80,  94, 108, 125, 145, 164,\n> +              156, 137, 118, 103,  89,  75,  61,  49,  38,  28,  21,  15,  10,   7,   5,   3,   3,   5,   7,  11,  16,  22,  30,  40,  51,  64,  78,  92, 106, 122, 142, 162,\n> +              155, 135, 117, 101,  87,  73,  59,  47,  36,  26,  19,  13,   8,   5,   3,   2,   2,   3,   5,   9,  14,  20,  28,  38,  49,  62,  76,  90, 104, 120, 140, 161,\n> +              154, 134, 115, 100,  86,  72,  58,  45,  34,  25,  18,  12,   7,   4,   2,   1,   1,   2,   4,   8,  13,  19,  27,  36,  48,  61,  75,  89, 103, 119, 138, 160,\n> +              153, 133, 114,  99,  85,  71,  57,  44,  33,  24,  17,  11,   6,   3,   1,   0,   1,   1,   3,   7,  12,  18,  26,  35,  47,  60,  74,  88, 102, 118, 137, 158,\n> +              153, 132, 114,  99,  84,  70,  56,  44,  33,  24,  16,  10,   6,   2,   1,   0,   0,   1,   3,   6,  11,  17,  25,  35,  46,  59,  73,  87, 102, 118, 137, 158,\n> +              153, 132, 114,  98,  84,  70,  56,  44,  33,  24,  16,  10,   6,   2,   1,   0,   0,   1,   3,   6,  11,  17,  25,  35,  46,  59,  73,  87, 101, 117, 136, 158,\n> +              153, 132, 114,  99,  84,  70,  56,  44,  33,  24,  16,  10,   6,   3,   1,   0,   1,   1,   3,   7,  11,  18,  25,  35,  46,  59,  73,  87, 101, 118, 137, 158,\n> +              154, 133, 115,  99,  85,  71,  57,  45,  34,  25,  17,  11,   7,   3,   2,   1,   1,   2,   4,   7,  12,  18,  26,  36,  47,  60,  74,  88, 102, 118, 138, 159,\n> +              155, 134, 116, 100,  86,  72,  59,  46,  35,  26,  18,  12,   8,   4,   3,   2,   2,   3,   5,   8,  13,  20,  27,  37,  48,  61,  75,  89, 103, 119, 138, 160,\n> +              156, 136, 117, 102,  88,  74,  61,  48,  37,  27,  20,  14,   9,   6,   4,   3,   3,   5,   6,  10,  15,  21,  29,  39,  50,  63,  76,  90, 104, 121, 140, 161,\n> +              157, 138, 119, 104,  90,  76,  63,  50,  39,  30,  22,  16,  11,   8,   6,   5,   5,   6,   8,  12,  17,  23,  31,  41,  52,  65,  79,  92, 106, 123, 142, 162,\n> +              160, 141, 122, 106,  92,  79,  66,  53,  42,  32,  24,  18,  13,  10,   8,   7,   7,   8,  11,  14,  19,  26,  34,  44,  55,  68,  81,  94, 109, 125, 145, 164,\n> +              163, 145, 125, 109,  95,  82,  69,  56,  45,  36,  27,  21,  16,  13,  10,  10,  10,  11,  14,  17,  22,  29,  37,  47,  58,  71,  84,  97, 112, 128, 148, 167,\n> +              166, 148, 129, 112,  98,  85,  72,  60,  49,  39,  31,  25,  20,  16,  14,  13,  13,  14,  17,  20,  26,  32,  41,  51,  62,  74,  87, 100, 115, 132, 152, 170,\n> +              169, 152, 133, 116, 101,  89,  76,  64,  53,  43,  35,  28,  24,  20,  17,  16,  16,  18,  20,  25,  30,  36,  45,  55,  66,  78,  90, 103, 118, 136, 156, 174,\n> +              173, 157, 137, 120, 106,  93,  81,  69,  58,  48,  40,  33,  28,  24,  22,  21,  21,  22,  25,  29,  34,  41,  50,  60,  71,  82,  95, 108, 123, 141, 161, 178,\n> +              178, 162, 143, 125, 110,  97,  85,  74,  63,  53,  45,  38,  33,  29,  26,  25,  25,  27,  30,  34,  39,  46,  55,  65,  76,  87,  99, 112, 128, 146, 166, 183,\n> +              184, 168, 148, 130, 115, 102,  90,  79,  69,  59,  51,  44,  38,  34,  32,  31,  31,  32,  35,  39,  45,  52,  60,  70,  81,  92, 103, 117, 133, 151, 171, 188,\n> +              189, 174, 154, 136, 120, 107,  95,  85,  75,  65,  57,  51,  44,  40,  38,  37,  37,  38,  41,  45,  52,  58,  67,  76,  86,  97, 108, 123, 139, 157, 177, 194,\n> +              196, 181, 161, 143, 126, 113, 101,  91,  81,  72,  64,  57,  51,  47,  44,  43,  43,  45,  48,  52,  58,  65,  73,  82,  92, 102, 114, 129, 146, 164, 184, 201,\n> +              204, 188, 168, 149, 133, 118, 106,  96,  86,  77,  69,  63,  56,  51,  49,  49,  49,  49,  52,  57,  63,  71,  79,  87,  97, 107, 120, 135, 153, 171, 191, 208,\n> +             ]\n> +          g: [\n> +              166, 151, 133, 117, 103,  90,  80,  72,  64,  58,  52,  47,  42,  39,  37,  37,  37,  37,  39,  43,  48,  53,  59,  66,  73,  82,  93, 106, 121, 138, 156, 172,\n> +              159, 145, 128, 112,  98,  86,  76,  68,  60,  54,  48,  43,  38,  36,  34,  33,  33,  34,  36,  39,  44,  49,  55,  62,  69,  78,  89, 101, 116, 132, 150, 165,\n> +              153, 139, 122, 106,  93,  81,  72,  63,  56,  49,  43,  38,  33,  31,  29,  28,  28,  29,  31,  34,  39,  44,  50,  57,  65,  74,  83,  96, 110, 126, 144, 159,\n> +              147, 134, 117, 101,  88,  77,  68,  59,  51,  44,  38,  33,  29,  26,  24,  24,  24,  25,  27,  30,  34,  39,  46,  53,  61,  69,  79,  91, 105, 121, 138, 153,\n> +              142, 129, 112,  96,  84,  73,  64,  55,  47,  40,  34,  29,  25,  22,  20,  20,  20,  21,  23,  26,  30,  35,  41,  49,  57,  66,  75,  86, 100, 116, 133, 148,\n> +              138, 124, 107,  92,  80,  69,  60,  51,  43,  36,  30,  25,  22,  19,  17,  16,  16,  17,  19,  22,  26,  31,  38,  45,  53,  62,  71,  82,  95, 111, 129, 144,\n> +              134, 120, 103,  88,  76,  66,  57,  48,  39,  32,  26,  22,  18,  15,  14,  13,  13,  14,  16,  19,  23,  28,  34,  41,  50,  59,  68,  79,  91, 107, 124, 140,\n> +              131, 116,  99,  85,  73,  63,  54,  44,  36,  29,  23,  19,  15,  13,  11,  10,  10,  11,  13,  16,  20,  25,  31,  38,  47,  56,  65,  76,  88, 103, 120, 136,\n> +              127, 112,  96,  82,  71,  60,  51,  42,  33,  26,  21,  16,  13,  10,   8,   8,   8,   9,  11,  13,  17,  22,  28,  35,  44,  53,  63,  73,  85, 100, 117, 133,\n> +              125, 109,  93,  80,  68,  58,  48,  39,  31,  24,  18,  14,  10,   8,   6,   6,   6,   7,   9,  11,  15,  20,  25,  33,  41,  50,  60,  71,  82,  97, 114, 130,\n> +              123, 107,  91,  78,  67,  56,  46,  37,  29,  22,  16,  12,   9,   6,   5,   4,   4,   5,   7,   9,  13,  18,  23,  31,  39,  48,  58,  69,  80,  94, 111, 128,\n> +              121, 105,  89,  76,  65,  54,  44,  35,  27,  20,  15,  10,   7,   5,   3,   2,   2,   4,   5,   8,  11,  16,  22,  29,  37,  46,  57,  67,  79,  92, 109, 126,\n> +              120, 103,  87,  75,  63,  53,  43,  34,  26,  19,  14,   9,   6,   3,   2,   1,   1,   2,   4,   6,  10,  15,  20,  27,  36,  45,  55,  66,  77,  91, 107, 125,\n> +              119, 102,  86,  74,  62,  52,  42,  32,  25,  18,  13,   8,   5,   3,   1,   1,   1,   1,   3,   6,   9,  14,  19,  26,  34,  44,  54,  65,  76,  90, 106, 124,\n> +              118, 101,  86,  73,  62,  51,  41,  32,  24,  17,  12,   8,   4,   2,   1,   0,   0,   1,   2,   5,   9,  13,  19,  26,  34,  43,  53,  64,  76,  89, 105, 123,\n> +              118, 100,  85,  72,  61,  51,  41,  31,  23,  17,  12,   7,   4,   2,   0,   0,   0,   1,   2,   5,   8,  13,  18,  25,  33,  43,  53,  64,  75,  88, 105, 123,\n> +              118, 100,  85,  72,  61,  51,  40,  31,  23,  17,  12,   7,   4,   2,   0,   0,   0,   1,   2,   5,   8,  13,  18,  25,  33,  43,  53,  64,  75,  88, 105, 123,\n> +              118, 101,  85,  73,  62,  51,  41,  32,  24,  17,  12,   7,   4,   2,   1,   0,   0,   1,   2,   5,   8,  13,  18,  25,  34,  43,  53,  64,  75,  89, 105, 123,\n> +              118, 101,  86,  73,  62,  51,  41,  32,  24,  18,  12,   8,   5,   2,   1,   1,   1,   1,   3,   5,   9,  13,  19,  26,  34,  44,  54,  64,  76,  89, 106, 124,\n> +              119, 102,  87,  74,  63,  52,  42,  33,  25,  18,  13,   9,   5,   3,   2,   1,   1,   2,   3,   6,  10,  14,  20,  27,  35,  44,  55,  65,  77,  90, 107, 124,\n> +              120, 104,  88,  75,  64,  54,  44,  34,  26,  20,  14,  10,   6,   4,   3,   2,   2,   3,   4,   7,  11,  15,  21,  28,  36,  46,  56,  66,  78,  91, 108, 125,\n> +              122, 106,  90,  77,  65,  55,  45,  36,  28,  21,  16,  11,   8,   5,   4,   3,   3,   4,   6,   8,  12,  17,  23,  30,  38,  47,  57,  68,  79,  93, 110, 127,\n> +              124, 108,  92,  79,  67,  57,  47,  38,  30,  23,  17,  13,   9,   7,   5,   5,   5,   6,   8,  10,  14,  19,  25,  32,  40,  49,  59,  70,  81,  95, 112, 129,\n> +              126, 111,  95,  81,  70,  59,  50,  40,  32,  25,  20,  15,  12,   9,   7,   7,   7,   8,  10,  12,  16,  21,  27,  34,  42,  52,  61,  72,  84,  98, 115, 131,\n> +              129, 114,  98,  84,  72,  62,  52,  43,  35,  28,  22,  17,  14,  12,  10,   9,   9,  10,  12,  15,  18,  23,  30,  37,  45,  54,  64,  74,  86, 101, 118, 134,\n> +              132, 118, 101,  87,  75,  65,  55,  46,  38,  31,  25,  20,  17,  14,  12,  12,  12,  13,  15,  18,  21,  26,  33,  40,  48,  57,  67,  77,  90, 105, 122, 137,\n> +              136, 122, 105,  90,  78,  68,  59,  50,  41,  34,  28,  24,  20,  17,  15,  15,  15,  16,  18,  21,  25,  30,  36,  43,  51,  60,  70,  80,  93, 109, 126, 141,\n> +              139, 126, 109,  94,  82,  71,  62,  53,  45,  38,  32,  27,  24,  21,  19,  18,  18,  19,  21,  25,  28,  33,  40,  47,  55,  64,  73,  84,  97, 113, 130, 145,\n> +              144, 131, 114,  99,  85,  75,  66,  57,  49,  42,  36,  32,  27,  24,  23,  22,  22,  23,  25,  28,  32,  38,  44,  51,  59,  67,  77,  88, 102, 118, 135, 150,\n> +              149, 136, 119, 104,  90,  79,  70,  61,  54,  47,  41,  36,  32,  29,  27,  26,  26,  27,  29,  32,  37,  42,  48,  55,  63,  71,  81,  93, 107, 123, 140, 155,\n> +              155, 142, 125, 109,  95,  84,  74,  66,  58,  52,  46,  41,  36,  34,  32,  31,  31,  32,  34,  37,  42,  47,  53,  60,  67,  76,  86,  98, 113, 129, 146, 161,\n> +              162, 148, 130, 115, 100,  88,  78,  70,  63,  56,  50,  45,  40,  37,  35,  35,  35,  35,  37,  41,  46,  51,  57,  64,  71,  80,  91, 103, 118, 134, 152, 167,\n> +             ]\n> +          b: [\n> +              163, 150, 132, 116, 102,  90,  80,  71,  64,  57,  51,  46,  42,  38,  37,  37,  37,  37,  39,  43,  48,  53,  59,  66,  73,  82,  92, 105, 120, 136, 154, 168,\n> +              156, 143, 126, 110,  96,  85,  75,  67,  59,  53,  47,  42,  38,  35,  33,  32,  32,  34,  36,  39,  43,  49,  54,  61,  68,  77,  87, 100, 114, 130, 147, 161,\n> +              150, 137, 120, 105,  91,  80,  71,  62,  55,  48,  42,  37,  33,  30,  28,  27,  27,  29,  31,  34,  39,  43,  49,  56,  64,  72,  82,  94, 108, 124, 141, 155,\n> +              145, 132, 115, 100,  86,  76,  67,  58,  50,  43,  37,  33,  28,  26,  24,  23,  23,  24,  26,  29,  34,  39,  45,  52,  60,  68,  78,  89, 103, 119, 136, 150,\n> +              140, 127, 110,  95,  82,  72,  63,  54,  46,  39,  33,  28,  25,  22,  20,  19,  19,  20,  22,  26,  29,  34,  41,  48,  56,  65,  74,  85,  98, 114, 131, 145,\n> +              135, 122, 106,  91,  79,  68,  59,  51,  42,  35,  29,  25,  21,  18,  16,  16,  16,  17,  19,  22,  26,  31,  37,  44,  52,  61,  71,  81,  94, 109, 126, 140,\n> +              132, 118, 102,  87,  75,  65,  56,  47,  39,  32,  26,  21,  18,  15,  13,  13,  13,  14,  16,  19,  22,  27,  33,  41,  49,  58,  67,  78,  90, 105, 122, 137,\n> +              128, 114,  98,  84,  73,  62,  53,  44,  36,  29,  23,  18,  15,  12,  11,  10,  10,  11,  13,  16,  19,  24,  30,  38,  46,  55,  65,  75,  87, 102, 118, 133,\n> +              125, 111,  95,  81,  70,  60,  50,  41,  33,  26,  20,  16,  12,  10,   8,   8,   8,   9,  11,  13,  17,  22,  27,  35,  43,  52,  62,  72,  84,  98, 115, 130,\n> +              123, 108,  92,  79,  68,  58,  48,  39,  30,  24,  18,  14,  10,   8,   6,   5,   5,   7,   9,  11,  14,  19,  25,  32,  41,  50,  60,  70,  81,  96, 112, 127,\n> +              121, 106,  90,  77,  66,  55,  46,  36,  28,  22,  16,  12,   8,   6,   5,   4,   4,   5,   7,   9,  13,  17,  23,  30,  38,  48,  58,  68,  79,  93, 109, 125,\n> +              119, 104,  88,  75,  64,  54,  44,  35,  27,  20,  15,  10,   7,   5,   3,   2,   2,   4,   5,   8,  11,  16,  21,  28,  37,  46,  56,  67,  78,  91, 107, 124,\n> +              117, 102,  86,  74,  63,  53,  42,  33,  25,  19,  13,   9,   6,   3,   2,   1,   1,   2,   4,   6,  10,  14,  20,  27,  35,  45,  55,  65,  76,  90, 106, 122,\n> +              117, 100,  85,  73,  62,  51,  41,  32,  24,  18,  12,   8,   5,   3,   1,   1,   1,   1,   3,   5,   9,  13,  19,  26,  34,  43,  54,  64,  75,  89, 104, 121,\n> +              116, 100,  84,  72,  61,  51,  40,  31,  23,  17,  12,   7,   4,   2,   1,   0,   0,   1,   2,   5,   8,  13,  18,  25,  33,  43,  53,  64,  75,  88, 103, 121,\n> +              116,  99,  84,  72,  61,  50,  40,  31,  23,  17,  11,   7,   4,   2,   0,   0,   0,   1,   2,   5,   8,  12,  18,  25,  33,  42,  53,  63,  74,  88, 103, 121,\n> +              116,  99,  84,  72,  61,  50,  40,  31,  23,  17,  11,   7,   4,   2,   0,   0,   0,   1,   2,   5,   8,  12,  18,  25,  33,  42,  53,  63,  74,  87, 103, 121,\n> +              116,  99,  84,  72,  61,  50,  40,  31,  23,  17,  11,   7,   4,   2,   0,   0,   0,   1,   2,   5,   8,  13,  18,  25,  33,  43,  53,  63,  74,  88, 103, 121,\n> +              116, 100,  85,  72,  61,  51,  41,  32,  24,  17,  12,   8,   4,   2,   1,   1,   1,   1,   3,   5,   9,  13,  19,  25,  34,  43,  53,  64,  75,  88, 104, 121,\n> +              117, 101,  86,  73,  62,  52,  42,  33,  25,  18,  13,   8,   5,   3,   2,   1,   1,   2,   3,   6,   9,  14,  20,  26,  35,  44,  54,  64,  76,  89, 105, 121,\n> +              118, 103,  87,  74,  63,  53,  43,  34,  26,  19,  14,  10,   6,   4,   3,   2,   2,   3,   4,   7,  11,  15,  21,  28,  36,  45,  55,  66,  77,  91, 106, 123,\n> +              120, 104,  89,  76,  65,  54,  45,  35,  27,  21,  15,  11,   8,   5,   4,   3,   3,   4,   6,   8,  12,  16,  22,  29,  38,  47,  57,  67,  78,  92, 108, 124,\n> +              121, 107,  91,  78,  67,  56,  47,  37,  29,  22,  17,  13,   9,   7,   5,   4,   4,   6,   7,  10,  14,  18,  24,  31,  39,  49,  59,  69,  80,  94, 110, 126,\n> +              124, 109,  93,  80,  69,  59,  49,  40,  32,  25,  19,  14,  11,   9,   7,   6,   6,   7,  10,  12,  16,  20,  26,  34,  42,  51,  61,  71,  83,  97, 113, 128,\n> +              126, 112,  96,  83,  71,  61,  52,  43,  34,  27,  22,  17,  14,  11,   9,   9,   9,  10,  12,  14,  18,  23,  29,  36,  45,  54,  63,  73,  85, 100, 116, 131,\n> +              130, 116,  99,  85,  74,  64,  54,  45,  37,  30,  24,  20,  17,  14,  12,  11,  11,  12,  14,  17,  21,  26,  32,  39,  48,  56,  66,  76,  88, 103, 119, 134,\n> +              133, 120, 103,  89,  77,  66,  57,  49,  41,  34,  28,  23,  20,  17,  15,  14,  14,  15,  17,  21,  24,  29,  35,  42,  51,  59,  68,  79,  92, 107, 123, 137,\n> +              137, 124, 107,  93,  80,  70,  61,  52,  44,  37,  31,  27,  23,  20,  18,  18,  18,  19,  21,  24,  28,  33,  39,  46,  54,  63,  72,  83,  96, 111, 127, 141,\n> +              141, 128, 112,  97,  84,  73,  65,  56,  48,  42,  36,  31,  27,  24,  22,  21,  21,  22,  25,  28,  32,  37,  43,  50,  58,  66,  76,  87, 100, 116, 132, 146,\n> +              146, 133, 117, 102,  88,  77,  68,  60,  53,  46,  40,  35,  31,  28,  26,  25,  25,  27,  29,  32,  37,  41,  47,  54,  62,  70,  79,  91, 105, 121, 137, 151,\n> +              151, 139, 123, 107,  94,  82,  73,  65,  57,  51,  45,  40,  36,  33,  31,  30,  30,  32,  34,  37,  41,  46,  52,  59,  66,  74,  84,  97, 111, 126, 143, 157,\n> +              158, 145, 128, 113,  99,  87,  77,  69,  61,  55,  49,  44,  39,  36,  34,  34,  34,  35,  37,  41,  45,  50,  56,  63,  70,  79,  89, 102, 116, 131, 148, 163,\n> +             ]\n> +        - ct: 8500\n> +          r: [\n> +              216, 198, 176, 157, 140, 124, 111, 100,  90,  82,  74,  67,  61,  55,  52,  52,  52,  52,  53,  58,  64,  70,  77,  85,  94, 104, 116, 131, 147, 166, 185, 201,\n> +              207, 191, 170, 151, 133, 118, 106,  95,  86,  77,  69,  62,  55,  51,  48,  47,  47,  47,  50,  53,  58,  65,  72,  80,  89, 100, 111, 125, 141, 159, 178, 193,\n> +              199, 183, 162, 144, 127, 112, 100,  89,  80,  70,  62,  55,  49,  44,  42,  40,  40,  41,  43,  47,  52,  59,  66,  74,  84,  94, 105, 118, 134, 152, 171, 187,\n> +              193, 176, 156, 137, 121, 107,  95,  84,  74,  64,  56,  49,  43,  38,  35,  34,  34,  35,  37,  40,  46,  52,  60,  68,  78,  89, 100, 113, 128, 145, 165, 180,\n> +              186, 170, 150, 131, 115, 101,  90,  79,  68,  58,  50,  43,  37,  33,  30,  28,  28,  29,  31,  35,  40,  46,  54,  63,  73,  83,  95, 107, 122, 139, 159, 174,\n> +              181, 164, 144, 125, 110,  97,  85,  74,  63,  53,  44,  37,  32,  28,  25,  23,  23,  24,  26,  30,  35,  41,  48,  58,  68,  79,  90, 103, 117, 134, 153, 169,\n> +              176, 159, 139, 121, 106,  92,  81,  69,  58,  48,  40,  33,  28,  23,  20,  19,  19,  20,  22,  26,  30,  36,  44,  53,  63,  75,  86,  98, 112, 129, 148, 165,\n> +              171, 154, 134, 116, 102,  89,  77,  65,  53,  44,  35,  29,  23,  20,  17,  15,  15,  16,  18,  22,  26,  32,  39,  48,  59,  71,  82,  95, 108, 125, 144, 160,\n> +              167, 150, 130, 113,  98,  85,  73,  61,  49,  40,  31,  25,  20,  16,  13,  12,  12,  12,  14,  18,  22,  28,  36,  45,  55,  67,  79,  91, 105, 120, 139, 156,\n> +              164, 146, 126, 109,  95,  82,  70,  57,  46,  36,  28,  22,  16,  13,  10,   9,   9,   9,  12,  14,  19,  25,  32,  41,  51,  63,  76,  88, 101, 117, 135, 153,\n> +              162, 143, 123, 107,  93,  80,  67,  54,  43,  33,  25,  19,  14,  10,   8,   6,   6,   7,   9,  12,  16,  22,  29,  38,  48,  60,  73,  85,  99, 114, 132, 151,\n> +              159, 140, 121, 105,  91,  77,  64,  52,  41,  31,  23,  17,  12,   8,   6,   4,   4,   5,   7,  10,  14,  20,  27,  35,  46,  58,  70,  83,  97, 111, 130, 148,\n> +              157, 138, 119, 103,  89,  75,  62,  50,  38,  29,  21,  15,  10,   6,   4,   3,   3,   4,   5,   8,  12,  18,  25,  33,  44,  55,  68,  81,  95, 109, 127, 146,\n> +              156, 136, 117, 101,  87,  74,  60,  48,  37,  27,  20,  13,   9,   5,   3,   2,   1,   2,   4,   6,  11,  16,  23,  32,  42,  54,  67,  80,  93, 108, 125, 145,\n> +              155, 135, 116, 100,  86,  72,  59,  47,  36,  26,  19,  12,   8,   4,   2,   1,   1,   1,   3,   6,  10,  15,  22,  31,  41,  52,  65,  79,  92, 107, 124, 144,\n> +              155, 134, 115,  99,  86,  72,  58,  46,  35,  26,  18,  12,   7,   3,   1,   0,   0,   1,   2,   5,   9,  15,  21,  30,  40,  52,  65,  78,  92, 106, 124, 144,\n> +              155, 134, 115,  99,  85,  72,  58,  46,  35,  25,  18,  12,   7,   3,   1,   0,   0,   0,   2,   5,   9,  14,  21,  30,  40,  51,  64,  78,  91, 106, 123, 143,\n> +              155, 134, 115,  99,  85,  72,  58,  46,  35,  26,  18,  12,   7,   3,   1,   0,   0,   1,   2,   5,   9,  14,  21,  30,  40,  51,  64,  78,  91, 106, 123, 143,\n> +              155, 135, 115, 100,  86,  72,  59,  46,  35,  26,  18,  12,   7,   4,   2,   1,   1,   1,   3,   5,   9,  15,  22,  30,  40,  52,  65,  78,  92, 106, 124, 144,\n> +              156, 136, 116, 100,  87,  73,  60,  47,  36,  27,  19,  13,   8,   5,   2,   2,   1,   2,   3,   6,  10,  16,  23,  31,  41,  53,  66,  79,  92, 107, 124, 144,\n> +              157, 137, 118, 102,  88,  75,  61,  49,  38,  28,  21,  14,  10,   6,   4,   2,   2,   3,   4,   7,  12,  17,  24,  33,  43,  54,  67,  80,  93, 108, 126, 145,\n> +              158, 139, 120, 103,  89,  76,  63,  51,  40,  30,  22,  16,  11,   7,   6,   4,   4,   4,   6,   9,  13,  19,  26,  34,  45,  56,  69,  82,  95, 110, 128, 147,\n> +              160, 141, 122, 106,  92,  79,  66,  53,  42,  33,  25,  18,  13,  10,   7,   6,   6,   6,   9,  11,  15,  21,  28,  37,  47,  59,  71,  84,  97, 112, 130, 148,\n> +              163, 144, 125, 108,  94,  81,  69,  56,  45,  35,  27,  21,  16,  12,  10,   8,   8,   9,  11,  14,  18,  24,  31,  40,  50,  62,  74,  86,  99, 114, 133, 151,\n> +              165, 148, 128, 111,  97,  84,  72,  60,  49,  39,  31,  24,  19,  15,  12,  11,  11,  11,  14,  17,  21,  27,  34,  43,  53,  65,  77,  89, 102, 118, 136, 153,\n> +              169, 152, 132, 114, 100,  87,  75,  63,  52,  42,  34,  27,  22,  19,  16,  14,  14,  15,  17,  21,  24,  30,  38,  47,  57,  68,  80,  92, 105, 121, 140, 157,\n> +              173, 156, 136, 118, 104,  91,  79,  68,  57,  47,  38,  32,  26,  22,  19,  18,  18,  19,  21,  24,  28,  34,  42,  51,  61,  72,  83,  95, 109, 125, 144, 160,\n> +              177, 161, 141, 123, 108,  95,  83,  72,  61,  52,  43,  36,  31,  26,  24,  22,  22,  23,  25,  28,  33,  39,  47,  56,  66,  76,  87,  99, 113, 130, 149, 165,\n> +              182, 166, 147, 128, 112,  99,  88,  77,  67,  57,  48,  41,  36,  31,  29,  27,  27,  28,  30,  33,  39,  44,  52,  61,  71,  81,  92, 104, 118, 135, 154, 169,\n> +              188, 172, 152, 134, 118, 104,  93,  82,  72,  62,  54,  47,  41,  37,  34,  33,  33,  33,  35,  39,  44,  50,  57,  66,  76,  85,  96, 109, 124, 141, 160, 175,\n> +              194, 178, 159, 140, 123, 110,  98,  87,  78,  68,  60,  53,  47,  43,  40,  38,  38,  39,  41,  45,  50,  56,  64,  72,  81,  91, 102, 115, 130, 147, 166, 181,\n> +              202, 185, 165, 146, 129, 115, 103,  92,  83,  73,  66,  59,  53,  47,  44,  43,  43,  43,  45,  50,  55,  61,  69,  77,  86,  95, 107, 120, 136, 153, 172, 187,\n> +             ]\n> +          g: [\n> +              177, 160, 141, 125, 110,  96,  85,  76,  68,  61,  55,  50,  45,  41,  39,  39,  39,  39,  40,  43,  47,  52,  58,  64,  71,  80,  90, 102, 117, 132, 150, 165,\n> +              169, 154, 135, 119, 104,  91,  81,  72,  64,  57,  51,  46,  41,  38,  36,  35,  35,  35,  37,  40,  43,  48,  54,  60,  67,  76,  85,  97, 111, 127, 144, 157,\n> +              162, 147, 129, 113,  98,  86,  76,  67,  59,  52,  46,  41,  36,  33,  31,  30,  30,  30,  32,  35,  39,  43,  49,  55,  63,  71,  80,  92, 105, 121, 138, 151,\n> +              156, 141, 124, 107,  93,  81,  72,  63,  55,  48,  41,  36,  32,  28,  26,  25,  25,  26,  27,  30,  34,  39,  44,  51,  58,  67,  76,  87, 100, 115, 132, 146,\n> +              150, 136, 119, 102,  89,  77,  68,  59,  51,  43,  37,  32,  28,  24,  22,  21,  21,  21,  23,  26,  30,  34,  40,  47,  54,  63,  72,  82,  95, 110, 127, 141,\n> +              146, 131, 114,  98,  84,  73,  64,  55,  47,  39,  33,  28,  24,  20,  18,  17,  17,  18,  19,  22,  26,  30,  36,  43,  51,  59,  68,  78,  90, 105, 122, 136,\n> +              141, 127, 109,  94,  81,  70,  60,  51,  43,  36,  29,  24,  20,  17,  15,  14,  14,  15,  16,  19,  22,  27,  32,  39,  47,  56,  65,  75,  86, 101, 118, 132,\n> +              137, 123, 105,  90,  78,  67,  57,  48,  40,  32,  26,  21,  17,  14,  12,  11,  11,  12,  13,  16,  19,  24,  29,  36,  44,  52,  62,  72,  83,  97, 114, 128,\n> +              134, 119, 102,  87,  75,  64,  54,  45,  37,  29,  23,  18,  14,  12,  10,   9,   9,   9,  11,  13,  16,  21,  26,  33,  41,  50,  59,  69,  80,  93, 110, 125,\n> +              131, 116,  99,  84,  72,  62,  52,  42,  34,  27,  21,  16,  12,  10,   8,   6,   6,   7,   9,  11,  14,  18,  24,  30,  38,  47,  56,  66,  77,  91, 107, 122,\n> +              129, 113,  96,  82,  70,  59,  50,  40,  32,  25,  19,  14,  10,   8,   6,   5,   5,   5,   7,   9,  12,  16,  21,  28,  36,  45,  54,  64,  75,  88, 104, 120,\n> +              127, 111,  94,  80,  68,  58,  48,  38,  30,  23,  17,  12,   9,   6,   4,   3,   3,   4,   5,   7,  10,  14,  20,  26,  34,  43,  52,  62,  73,  86, 102, 118,\n> +              125, 109,  92,  78,  67,  56,  46,  37,  28,  21,  15,  11,   7,   5,   3,   2,   2,   3,   4,   6,   9,  13,  18,  25,  32,  41,  51,  61,  72,  84, 100, 116,\n> +              124, 107,  91,  77,  66,  55,  45,  35,  27,  20,  14,  10,   6,   4,   2,   1,   1,   2,   3,   5,   8,  12,  17,  23,  31,  40,  50,  60,  71,  83,  98, 115,\n> +              124, 106,  90,  76,  65,  54,  44,  34,  26,  19,  14,   9,   6,   3,   1,   1,   0,   1,   2,   4,   7,  11,  16,  23,  30,  39,  49,  59,  70,  82,  97, 114,\n> +              123, 105,  89,  76,  64,  54,  43,  34,  26,  19,  13,   9,   5,   2,   1,   0,   0,   0,   1,   4,   7,  11,  16,  22,  30,  38,  48,  59,  69,  82,  97, 114,\n> +              123, 105,  89,  75,  64,  53,  43,  34,  25,  19,  13,   8,   5,   2,   1,   0,   0,   0,   1,   3,   7,  11,  16,  22,  29,  38,  48,  58,  69,  81,  96, 114,\n> +              123, 105,  89,  75,  64,  53,  43,  34,  26,  19,  13,   9,   5,   2,   1,   0,   0,   0,   1,   4,   7,  11,  16,  22,  29,  38,  48,  58,  69,  81,  96, 114,\n> +              123, 106,  89,  76,  65,  54,  44,  34,  26,  19,  13,   9,   5,   3,   1,   1,   0,   1,   2,   4,   7,  11,  16,  22,  30,  39,  48,  59,  69,  82,  97, 114,\n> +              124, 107,  90,  77,  65,  55,  44,  35,  27,  20,  14,  10,   6,   3,   2,   1,   1,   1,   2,   4,   8,  12,  17,  23,  31,  39,  49,  59,  70,  82,  98, 115,\n> +              125, 108,  91,  78,  66,  56,  46,  36,  28,  21,  15,  10,   7,   4,   2,   2,   1,   2,   3,   5,   8,  13,  18,  24,  32,  41,  50,  60,  71,  84,  99, 116,\n> +              126, 110,  93,  79,  67,  57,  47,  38,  29,  22,  16,  12,   8,   5,   4,   2,   2,   3,   4,   7,  10,  14,  19,  26,  33,  42,  52,  62,  72,  85, 100, 117,\n> +              128, 112,  95,  81,  69,  59,  49,  39,  31,  24,  18,  13,  10,   7,   5,   4,   4,   4,   6,   8,  11,  15,  21,  27,  35,  44,  53,  63,  74,  87, 103, 119,\n> +              130, 114,  97,  83,  71,  61,  51,  42,  33,  26,  20,  15,  11,   9,   7,   6,   6,   6,   8,  10,  13,  17,  23,  29,  37,  46,  55,  65,  76,  89, 105, 121,\n> +              132, 117, 100,  86,  74,  63,  53,  44,  36,  28,  22,  17,  14,  11,   9,   8,   8,   8,  10,  12,  15,  20,  25,  32,  40,  48,  58,  67,  79,  92, 108, 123,\n> +              135, 121, 103,  89,  76,  66,  56,  47,  39,  31,  25,  20,  16,  14,  11,  10,  10,  11,  12,  15,  18,  22,  28,  35,  42,  51,  60,  70,  81,  95, 111, 126,\n> +              139, 124, 107,  92,  79,  68,  59,  50,  42,  34,  28,  23,  19,  16,  14,  13,  13,  13,  15,  18,  21,  25,  31,  38,  46,  54,  63,  73,  85,  99, 115, 130,\n> +              143, 128, 111,  96,  83,  72,  62,  54,  45,  38,  32,  26,  23,  19,  17,  16,  16,  17,  18,  21,  24,  29,  35,  41,  49,  57,  66,  76,  88, 103, 119, 133,\n> +              147, 133, 116, 100,  86,  75,  66,  57,  49,  42,  36,  30,  26,  23,  21,  20,  20,  20,  22,  24,  28,  33,  38,  45,  53,  61,  70,  80,  92, 107, 124, 137,\n> +              152, 138, 121, 105,  91,  79,  70,  61,  53,  46,  40,  35,  30,  27,  25,  24,  24,  24,  26,  28,  33,  37,  43,  49,  57,  65,  73,  84,  97, 112, 128, 142,\n> +              158, 144, 126, 110,  96,  84,  74,  65,  58,  51,  44,  39,  35,  31,  29,  28,  28,  29,  30,  33,  37,  42,  47,  54,  61,  69,  78,  89, 102, 118, 134, 147,\n> +              165, 149, 131, 115, 101,  88,  78,  69,  61,  54,  48,  43,  38,  35,  32,  32,  32,  32,  33,  36,  41,  45,  51,  57,  64,  72,  82,  94, 107, 122, 139, 153,\n> +             ]\n> +          b: [\n> +              174, 159, 139, 123, 109,  95,  84,  75,  68,  61,  55,  50,  45,  41,  39,  39,  39,  39,  40,  43,  47,  52,  58,  64,  71,  80,  90, 102, 116, 131, 148, 161,\n> +              166, 152, 134, 118, 103,  90,  80,  71,  63,  56,  51,  45,  41,  38,  35,  34,  34,  35,  37,  39,  43,  48,  54,  60,  67,  75,  84,  96, 110, 125, 141, 154,\n> +              159, 145, 127, 111,  97,  85,  75,  66,  59,  52,  45,  41,  36,  32,  30,  29,  29,  30,  31,  34,  38,  43,  48,  55,  62,  70,  79,  90, 104, 119, 135, 148,\n> +              153, 139, 122, 106,  92,  80,  71,  62,  54,  47,  41,  36,  31,  28,  26,  25,  25,  25,  27,  30,  34,  38,  44,  50,  58,  66,  75,  86,  99, 114, 130, 143,\n> +              148, 134, 117, 101,  88,  76,  67,  58,  50,  43,  36,  31,  27,  24,  22,  21,  21,  21,  23,  25,  30,  34,  40,  46,  54,  62,  71,  81,  94, 109, 125, 138,\n> +              143, 129, 113,  97,  84,  73,  63,  55,  46,  39,  32,  27,  23,  20,  18,  17,  17,  17,  19,  22,  25,  30,  36,  42,  50,  59,  68,  78,  89, 104, 120, 133,\n> +              139, 125, 108,  93,  80,  69,  60,  51,  42,  35,  29,  24,  20,  17,  15,  14,  14,  14,  16,  19,  22,  26,  32,  39,  47,  55,  64,  74,  85, 100, 116, 130,\n> +              135, 121, 104,  89,  77,  66,  57,  48,  39,  32,  25,  21,  17,  14,  12,  11,  11,  11,  13,  16,  19,  23,  29,  36,  43,  52,  61,  71,  82,  96, 112, 126,\n> +              132, 117, 101,  86,  74,  64,  54,  45,  36,  29,  23,  18,  14,  12,   9,   8,   8,   9,  11,  13,  16,  20,  26,  33,  40,  49,  59,  68,  79,  93, 108, 123,\n> +              129, 114,  98,  83,  72,  61,  52,  42,  34,  26,  20,  16,  12,   9,   7,   6,   6,   7,   9,  11,  14,  18,  23,  30,  38,  47,  56,  66,  77,  90, 105, 120,\n> +              127, 112,  95,  81,  70,  59,  49,  40,  31,  24,  18,  14,  10,   7,   6,   4,   4,   5,   7,   9,  12,  16,  21,  28,  36,  44,  54,  64,  75,  87, 103, 118,\n> +              125, 109,  93,  79,  68,  57,  47,  38,  29,  22,  17,  12,   8,   6,   4,   3,   3,   4,   5,   7,  10,  14,  19,  26,  34,  42,  52,  62,  73,  85, 100, 116,\n> +              124, 108,  91,  78,  66,  56,  46,  36,  28,  21,  15,  11,   7,   4,   3,   2,   2,   3,   4,   6,   9,  13,  18,  24,  32,  41,  51,  61,  71,  84,  98, 114,\n> +              123, 106,  90,  76,  65,  55,  44,  35,  27,  20,  14,  10,   6,   4,   2,   1,   1,   2,   3,   5,   8,  12,  17,  23,  31,  40,  49,  60,  70,  83,  97, 113,\n> +              122, 105,  89,  76,  64,  54,  44,  34,  26,  19,  13,   9,   5,   3,   1,   1,   0,   1,   2,   4,   7,  11,  16,  22,  30,  39,  49,  59,  70,  82,  96, 112,\n> +              121, 104,  88,  75,  64,  53,  43,  33,  25,  18,  13,   8,   5,   2,   1,   0,   0,   0,   1,   4,   7,  11,  16,  22,  29,  38,  48,  58,  69,  81,  96, 112,\n> +              121, 104,  88,  75,  64,  53,  43,  33,  25,  18,  13,   8,   5,   2,   1,   0,   0,   0,   1,   3,   6,  10,  15,  22,  29,  38,  48,  58,  69,  81,  95, 112,\n> +              121, 104,  88,  75,  64,  53,  43,  33,  25,  18,  13,   8,   5,   2,   1,   0,   0,   0,   1,   3,   7,  10,  15,  22,  29,  38,  48,  58,  69,  81,  95, 112,\n> +              122, 105,  88,  75,  64,  53,  43,  34,  25,  19,  13,   9,   5,   3,   1,   1,   0,   1,   2,   4,   7,  11,  16,  22,  30,  38,  48,  58,  69,  81,  96, 112,\n> +              122, 105,  89,  76,  65,  54,  44,  34,  26,  19,  14,   9,   6,   3,   2,   1,   1,   1,   2,   4,   7,  11,  17,  23,  30,  39,  49,  59,  70,  82,  96, 113,\n> +              123, 107,  90,  77,  66,  55,  45,  36,  27,  20,  15,  10,   7,   4,   2,   2,   1,   2,   3,   5,   8,  12,  18,  24,  32,  40,  50,  60,  71,  83,  98, 114,\n> +              124, 108,  92,  78,  67,  57,  47,  37,  29,  22,  16,  11,   8,   5,   4,   2,   2,   3,   4,   6,  10,  14,  19,  25,  33,  42,  51,  61,  72,  85,  99, 115,\n> +              126, 110,  94,  80,  69,  58,  48,  39,  31,  23,  18,  13,   9,   7,   5,   4,   4,   4,   6,   8,  11,  15,  21,  27,  35,  44,  53,  63,  74,  86, 101, 117,\n> +              128, 113,  96,  82,  71,  60,  50,  41,  33,  25,  19,  15,  11,   8,   7,   5,   5,   6,   8,  10,  13,  17,  23,  29,  37,  46,  55,  65,  76,  89, 104, 119,\n> +              130, 116,  99,  85,  73,  62,  53,  44,  35,  28,  22,  17,  13,  11,   8,   7,   7,   8,  10,  12,  15,  20,  25,  32,  39,  48,  57,  67,  78,  91, 107, 121,\n> +              133, 119, 102,  88,  75,  65,  55,  46,  38,  31,  25,  20,  16,  13,  11,  10,  10,  10,  12,  15,  18,  22,  28,  34,  42,  51,  60,  70,  81,  94, 110, 124,\n> +              137, 123, 106,  91,  78,  68,  58,  50,  41,  34,  28,  23,  19,  16,  14,  13,  13,  13,  15,  18,  21,  25,  31,  38,  45,  54,  63,  72,  84,  98, 113, 127,\n> +              140, 126, 110,  95,  81,  71,  62,  53,  45,  37,  31,  26,  22,  19,  17,  16,  16,  16,  18,  21,  24,  29,  34,  41,  49,  57,  66,  75,  87, 102, 117, 131,\n> +              144, 131, 114,  99,  85,  74,  65,  57,  49,  41,  35,  30,  26,  22,  20,  19,  19,  20,  21,  24,  28,  32,  38,  45,  52,  60,  69,  79,  91, 106, 121, 135,\n> +              149, 136, 119, 103,  89,  78,  69,  60,  52,  45,  39,  34,  30,  26,  24,  23,  23,  24,  25,  28,  32,  37,  42,  49,  56,  64,  72,  83,  96, 110, 126, 139,\n> +              155, 142, 124, 109,  95,  83,  73,  65,  57,  50,  44,  39,  34,  31,  29,  28,  28,  28,  30,  33,  36,  41,  47,  53,  60,  68,  77,  88, 101, 116, 132, 144,\n> +              162, 147, 129, 114,  99,  87,  77,  68,  61,  54,  48,  42,  38,  34,  32,  31,  31,  31,  33,  36,  40,  45,  51,  57,  64,  72,  81,  93, 106, 121, 137, 150,\n> +             ]\n> +...\n> diff --git a/src/ipa/mali-c55/data/meson.build b/src/ipa/mali-c55/data/meson.build\n> index 8a5fdd36..d4d331b0 100644\n> --- a/src/ipa/mali-c55/data/meson.build\n> +++ b/src/ipa/mali-c55/data/meson.build\n> @@ -2,6 +2,7 @@\n>  \n>  conf_files = files([\n>      'imx415.yaml',\n> +    'imx708.yaml',\n>      'uncalibrated.yaml'\n>  ])\n>  \n> -- \n> 2.34.1\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 442A6BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 22 Jul 2025 11:43:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6EE5E69034;\n\tTue, 22 Jul 2025 13:43:32 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B525568F93\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 22 Jul 2025 13:43:30 +0200 (CEST)","from neptunite.rasen.tech (unknown\n\t[IPv6:2404:7a81:160:2100:5fe2:6df7:ad99:5884])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 1AA0911E6; \n\tTue, 22 Jul 2025 13:42:51 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"pTTrHQoq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753184573;\n\tbh=vj14VcsPaTeGiDZ2nR0vEd7VyHR6ySURECvP0AgC02w=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=pTTrHQoq9TsBngQIab8wv3ZkukI9zdBHci8VpvuXhwi6E2dmzI1R80LTb77h6kLR0\n\tEjrZFHCHhJMp9aUp5M0Mnd8VAA8ht9axM/FvFdg3ixplwBSRor1yg3DayWwHsg7FAa\n\tibKu2POgnu7suBYGxhb2YliDdGoYvPtNCwbdA0P4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250304231254.10588-4-dan.scally@ideasonboard.com>","References":"<20250304231254.10588-1-dan.scally@ideasonboard.com>\n\t<20250304231254.10588-4-dan.scally@ideasonboard.com>","Subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","From":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"Daniel Scally <dan.scally@ideasonboard.com>","To":"Daniel Scally <dan.scally@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 22 Jul 2025 20:43:24 +0900","Message-ID":"<175318460460.3923365.642403410549583955@neptunite.rasen.tech>","User-Agent":"alot/0.0.0","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":35061,"web_url":"https://patchwork.libcamera.org/comment/35061/","msgid":"<20250723184009.GC11202@pendragon.ideasonboard.com>","date":"2025-07-23T18:40:09","subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jul 21, 2025 at 08:19:32PM +0100, Daniel Scally wrote:\n> On 21/07/2025 19:51, Kieran Bingham wrote:\n> > Quoting Daniel Scally (2025-03-04 23:12:54)\n> >> Add a tuning file for the imx708 with black level offsets and lens\n> >> shading table data.\n> >>\n> >> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> >> ---\n> >>   src/ipa/mali-c55/data/imx708.yaml | 325 ++++++++++++++++++++++++++++++\n> >>   src/ipa/mali-c55/data/meson.build |   1 +\n> >>   2 files changed, 326 insertions(+)\n> >>   create mode 100644 src/ipa/mali-c55/data/imx708.yaml\n> >>\n> >> diff --git a/src/ipa/mali-c55/data/imx708.yaml b/src/ipa/mali-c55/data/imx708.yaml\n> >> new file mode 100644\n> >> index 00000000..75b8398a\n> >> --- /dev/null\n> >> +++ b/src/ipa/mali-c55/data/imx708.yaml\n> >> @@ -0,0 +1,325 @@\n> >> +# SPDX-License-Identifier: CC0-1.0\n> >> +%YAML 1.1\n> >> +---\n> >> +version: 1\n> >> +algorithms:\n> >> +  - Agc:\n> >> +  - Awb:\n> >> +  - BlackLevelCorrection:\n> >> +      offset00: 65536\n> >> +      offset01: 65536\n> >> +      offset10: 65536\n> >> +      offset11: 65536\n> >\n> > I think we've moved Black levels to the Sensor Helpers now ?\n> \n> Errr I'll have to look; the ISP needs them at a specific bit-depth and\n> possibly the BLC algorithm would need a patch to convert from the\n> values in the CameraSensorHelpers then - which I assume are at some\n> normalised depth. I'll post that and a patch for the\n> CameraSensorHelperImx708 in a v2 of this set\n> \n> >> +  - Lsc:\n> >> +      meshScale: 6\n> >> +      sets:\n> >> +        - ct: 2500\n> >> +          r: [\n> >\n> > Are these tables converted from RPi tuning files ?\n> \n> No; I ran the tuning script from patch 2 on a bunch of images.\n> \n> > If so - can we have a conversion utility to support converting other\n> > files, and also keep this up to date when more parameters could be\n> > converted and supported ?\n> >\n> > For example, I expect the white balance and CCM tuning could be\n> > converted straight across too...\n> >\n> >> +              227, 209, 187, 167, 150, 134, 120, 109,  99,  89,  81,  73,  67,  61,  57,  57,  57,  57,  61,  67,  73,  80,  89,  98, 109, 120, 134, 150, 168, 188, 209, 227,\n> >> +              218, 202, 181, 161, 143, 128, 115, 104,  93,  84,  75,  67,  61,  56,  53,  51,  51,  53,  56,  61,  67,  75,  83,  93, 103, 115, 128, 143, 161, 181, 202, 219,\n> >> +              210, 194, 173, 153, 136, 121, 109,  97,  87,  76,  67,  60,  53,  48,  45,  44,  44,  45,  48,  53,  60,  67,  76,  86,  97, 108, 121, 136, 154, 173, 194, 211,\n> >> +              204, 187, 166, 146, 130, 115, 103,  91,  80,  69,  60,  53,  46,  41,  38,  37,  37,  38,  41,  46,  53,  60,  69,  79,  91, 102, 115, 130, 147, 166, 188, 205,\n> >> +              197, 180, 159, 140, 124, 110,  97,  85,  73,  63,  53,  46,  40,  35,  32,  31,  31,  32,  35,  40,  46,  53,  62,  73,  85,  97, 110, 124, 140, 160, 181, 199,\n> >> +              192, 174, 154, 134, 119, 105,  92,  80,  67,  57,  47,  40,  34,  29,  27,  25,  25,  27,  29,  34,  40,  47,  56,  67,  79,  92, 105, 119, 135, 154, 175, 193,\n> >> +              187, 169, 148, 130, 114, 100,  87,  74,  62,  51,  42,  34,  29,  24,  22,  20,  20,  22,  24,  29,  34,  42,  51,  62,  74,  87, 100, 114, 130, 148, 170, 188,\n> >> +              182, 164, 143, 125, 110,  96,  83,  69,  57,  46,  37,  30,  24,  20,  17,  16,  16,  17,  20,  24,  30,  37,  46,  57,  69,  82,  96, 110, 125, 143, 164, 183,\n> >> +              178, 159, 139, 121, 106,  92,  78,  65,  52,  42,  33,  26,  20,  17,  14,  12,  12,  14,  17,  20,  26,  33,  42,  52,  65,  78,  92, 106, 121, 139, 160, 179,\n> >> +              175, 156, 135, 118, 103,  89,  75,  61,  49,  38,  29,  22,  17,  14,  10,   9,   9,  10,  14,  17,  22,  29,  38,  48,  61,  74,  89, 103, 118, 135, 156, 176,\n> >> +              172, 152, 132, 115, 100,  86,  71,  57,  45,  35,  26,  19,  14,  10,   8,   6,   6,   8,  10,  14,  19,  26,  34,  45,  57,  71,  85, 100, 115, 132, 152, 173,\n> >> +              170, 149, 129, 113,  98,  83,  68,  55,  42,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  11,  17,  23,  32,  42,  54,  68,  83,  97, 112, 129, 150, 170,\n> >> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   2,   2,   4,   6,  10,  15,  21,  30,  40,  52,  66,  80,  95, 110, 127, 147, 168,\n> >> +              167, 145, 126, 109,  94,  79,  64,  50,  38,  28,  20,  13,   8,   5,   2,   1,   1,   2,   4,   8,  13,  20,  28,  38,  50,  64,  79,  94, 109, 126, 145, 167,\n> >> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   1,   1,   1,   1,   4,   7,  12,  19,  27,  37,  49,  62,  77,  93, 108, 124, 144, 166,\n> >> +              166, 144, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 124, 143, 166,\n> >> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   0,   0,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> >> +              166, 143, 124, 108,  92,  77,  62,  48,  36,  26,  18,  12,   7,   3,   1,   1,   1,   1,   3,   6,  11,  18,  26,  36,  48,  62,  77,  92, 107, 123, 143, 166,\n> >> +              166, 144, 125, 108,  93,  78,  63,  49,  37,  27,  19,  12,   7,   4,   2,   1,   1,   2,   4,   7,  12,  19,  27,  37,  49,  62,  77,  92, 107, 124, 144, 166,\n> >> +              167, 145, 126, 109,  94,  79,  64,  51,  39,  28,  20,  14,   8,   5,   3,   2,   2,   3,   5,   8,  13,  20,  28,  38,  50,  64,  78,  93, 108, 125, 145, 167,\n> >> +              168, 147, 127, 111,  96,  81,  66,  52,  40,  30,  22,  15,  10,   6,   4,   3,   3,   4,   6,  10,  15,  21,  30,  40,  52,  65,  80,  95, 110, 127, 146, 168,\n> >> +              169, 149, 129, 112,  98,  83,  69,  55,  43,  32,  24,  17,  12,   8,   6,   4,   4,   6,   8,  12,  17,  23,  32,  42,  54,  68,  82,  97, 112, 128, 148, 169,\n> >> +              172, 152, 132, 115, 100,  86,  71,  58,  46,  35,  26,  20,  14,  11,   8,   7,   7,   8,  11,  14,  19,  26,  35,  45,  57,  71,  85,  99, 114, 131, 151, 171,\n> >> +              175, 155, 135, 118, 103,  89,  75,  61,  49,  38,  30,  23,  17,  14,  11,   9,   9,  11,  14,  17,  22,  29,  38,  48,  60,  74,  88, 102, 117, 134, 154, 174,\n> >> +              178, 159, 139, 121, 106,  92,  79,  65,  53,  42,  33,  26,  21,  17,  14,  13,  13,  14,  17,  20,  26,  33,  42,  52,  64,  78,  91, 105, 120, 137, 158, 177,\n> >> +              181, 163, 143, 125, 110,  96,  83,  70,  57,  47,  38,  30,  25,  21,  18,  16,  16,  18,  20,  25,  30,  37,  46,  57,  69,  82,  95, 108, 124, 142, 162, 181,\n> >> +              185, 168, 147, 129, 114, 100,  87,  75,  62,  52,  42,  35,  30,  25,  22,  21,  21,  22,  25,  30,  35,  42,  51,  62,  73,  86,  99, 113, 128, 146, 167, 185,\n> >> +              190, 173, 153, 134, 118, 105,  92,  80,  68,  57,  48,  40,  35,  30,  27,  26,  26,  27,  30,  35,  40,  47,  56,  67,  79,  91, 103, 117, 133, 152, 172, 190,\n> >> +              196, 179, 159, 139, 123, 109,  97,  85,  74,  63,  54,  47,  40,  36,  33,  31,  31,  33,  36,  40,  46,  53,  62,  73,  84,  96, 108, 122, 138, 157, 178, 195,\n> >> +              202, 185, 165, 146, 129, 115, 103,  91,  80,  70,  61,  54,  47,  42,  39,  38,  38,  39,  42,  46,  53,  60,  69,  79,  90, 101, 113, 128, 144, 163, 184, 201,\n> >> +              209, 192, 172, 153, 135, 121, 108,  97,  87,  77,  68,  60,  54,  49,  46,  45,  45,  46,  49,  54,  60,  67,  76,  86,  96, 107, 119, 134, 151, 170, 191, 207,\n> >> +              216, 199, 178, 159, 141, 126, 114, 103,  92,  82,  74,  66,  60,  54,  51,  50,  50,  51,  54,  60,  66,  73,  82,  91, 101, 112, 125, 140, 158, 177, 197, 215,\n> >> +             ]\n> > \n> > I love how you can 'see' the shading in the ascii data!\n> \n> Me too!\n> \n> > <snip lots of ascii data>\n> >\n> > With BLC handled however it needs ...\n> >\n> > Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> I actually have a newer version of this tuning file with the lens\n> shading adjusted to be less heavy around the peripheries (that's the\n> only change) - this turns out to be too heavy in certain lighting\n> conditions;\n\nWhat light conditions are those, and how did you adjust the LSC table ?\n\n> I'll post that version in the v2 of the set. Should I keep\n> the ack (with BLC removed too), or would you like to see that version\n> of the file first?","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 97781BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 23 Jul 2025 18:40:15 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 888416906D;\n\tWed, 23 Jul 2025 20:40:14 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 21FDE69068\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 23 Jul 2025 20:40:12 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 459C8E70;\n\tWed, 23 Jul 2025 20:39:33 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Wm0jAe4v\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753295973;\n\tbh=omeBi5TOE/rtn1v9/LC1CZpbUq/90MTdLEtDYlZi57A=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Wm0jAe4vizpnshf9oD1VsP0w73O1gbWX5BQ2zLGktZKhhBT0pUqDS/4TVuUOetOck\n\tjO9uSSf44ATHIMA2hHcaebmR7yp47LBWbtJX/ZNq9kA1h4oj9mkk+jWOq/YU5hcZip\n\t+SSjw1/HGb+aU4PjAQbkx40D9mhMPLHh7Uw92CFw=","Date":"Wed, 23 Jul 2025 21:40:09 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Dan Scally <dan.scally@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 3/3] ipa: mali-c55: Add imx708 tuning file","Message-ID":"<20250723184009.GC11202@pendragon.ideasonboard.com>","References":"<20250304231254.10588-1-dan.scally@ideasonboard.com>\n\t<20250304231254.10588-4-dan.scally@ideasonboard.com>\n\t<175312388473.50296.7978288297524531001@ping.linuxembedded.co.uk>\n\t<bf9f8a99-9149-43fb-8591-0f78f6759879@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<bf9f8a99-9149-43fb-8591-0f78f6759879@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>"}}]