[{"id":31811,"web_url":"https://patchwork.libcamera.org/comment/31811/","msgid":"<172937423962.2485972.14809842923199252116@ping.linuxembedded.co.uk>","date":"2024-10-19T21:43:59","subject":"Re: [PATCH] ipa: rpi: Add tuning files for OV7251","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2024-10-10 14:41:48)\n> From: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> \n> OV7251 is a mono VGA global shutter sensor that has a mainline\n> driver and works with libcamera.\n> Add the supporting files for it. The tuning is copied from OV9281.\n> \n> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nNaush / David, Are you happy for this to be merged ?\n\n--\nKieran\n\n\n> ---\n>  src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp |  66 +++++++++\n>  src/ipa/rpi/cam_helper/meson.build           |   1 +\n>  src/ipa/rpi/vc4/data/meson.build             |   1 +\n>  src/ipa/rpi/vc4/data/ov7251_mono.json        | 136 +++++++++++++++++++\n>  4 files changed, 204 insertions(+)\n>  create mode 100644 src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n>  create mode 100644 src/ipa/rpi/vc4/data/ov7251_mono.json\n> \n> diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n> new file mode 100644\n> index 000000000000..7b12c44508a4\n> --- /dev/null\n> +++ b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n> @@ -0,0 +1,66 @@\n> +/* SPDX-License-Identifier: BSD-2-Clause */\n> +/*\n> + * Copyright (C) 2021, Raspberry Pi Ltd\n> + *\n> + * camera information for ov7251 sensor\n> + */\n> +\n> +#include <assert.h>\n> +\n> +#include \"cam_helper.h\"\n> +\n> +using namespace RPiController;\n> +\n> +class CamHelperOv7251 : public CamHelper\n> +{\n> +public:\n> +       CamHelperOv7251();\n> +       uint32_t gainCode(double gain) const override;\n> +       double gain(uint32_t gainCode) const override;\n> +       void getDelays(int &exposureDelay, int &gainDelay,\n> +                      int &vblankDelay, int &hblankDelay) const override;\n> +\n> +private:\n> +       /*\n> +        * Smallest difference between the frame length and integration time,\n> +        * in units of lines.\n> +        */\n> +       static constexpr int frameIntegrationDiff = 4;\n> +};\n> +\n> +/*\n> + * OV7251 doesn't output metadata, so we have to use the \"unicam parser\" which\n> + * works by counting frames.\n> + */\n> +\n> +CamHelperOv7251::CamHelperOv7251()\n> +       : CamHelper({}, frameIntegrationDiff)\n> +{\n> +}\n> +\n> +uint32_t CamHelperOv7251::gainCode(double gain) const\n> +{\n> +       return static_cast<uint32_t>(gain * 16.0);\n> +}\n> +\n> +double CamHelperOv7251::gain(uint32_t gainCode) const\n> +{\n> +       return static_cast<double>(gainCode) / 16.0;\n> +}\n> +\n> +void CamHelperOv7251::getDelays(int &exposureDelay, int &gainDelay,\n> +                               int &vblankDelay, int &hblankDelay) const\n> +{\n> +       /* The driver appears to behave as follows: */\n> +       exposureDelay = 2;\n> +       gainDelay = 2;\n> +       vblankDelay = 2;\n> +       hblankDelay = 2;\n> +}\n> +\n> +static CamHelper *create()\n> +{\n> +       return new CamHelperOv7251();\n> +}\n> +\n> +static RegisterCamHelper reg(\"ov7251\", &create);\n> diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build\n> index 1e43f1da29cd..03e88fe082e2 100644\n> --- a/src/ipa/rpi/cam_helper/meson.build\n> +++ b/src/ipa/rpi/cam_helper/meson.build\n> @@ -11,6 +11,7 @@ rpi_ipa_cam_helper_sources = files([\n>      'cam_helper_imx519.cpp',\n>      'cam_helper_imx708.cpp',\n>      'cam_helper_ov64a40.cpp',\n> +    'cam_helper_ov7251.cpp',\n>      'cam_helper_ov9281.cpp',\n>      'md_parser_smia.cpp',\n>  ])\n> diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build\n> index 60477c112196..8c34a1a5faa2 100644\n> --- a/src/ipa/rpi/vc4/data/meson.build\n> +++ b/src/ipa/rpi/vc4/data/meson.build\n> @@ -19,6 +19,7 @@ conf_files = files([\n>      'ov5647.json',\n>      'ov5647_noir.json',\n>      'ov64a40.json',\n> +    'ov7251_mono.json',\n>      'ov9281_mono.json',\n>      'se327m12.json',\n>      'uncalibrated.json',\n> diff --git a/src/ipa/rpi/vc4/data/ov7251_mono.json b/src/ipa/rpi/vc4/data/ov7251_mono.json\n> new file mode 100644\n> index 000000000000..a9d05a01b53f\n> --- /dev/null\n> +++ b/src/ipa/rpi/vc4/data/ov7251_mono.json\n> @@ -0,0 +1,136 @@\n> +{\n> +    \"version\": 2.0,\n> +    \"target\": \"bcm2835\",\n> +    \"algorithms\": [\n> +        {\n> +            \"rpi.black_level\":\n> +            {\n> +                \"black_level\": 4096\n> +            }\n> +        },\n> +        {\n> +            \"rpi.lux\":\n> +            {\n> +                \"reference_shutter_speed\": 2000,\n> +                \"reference_gain\": 1.0,\n> +                \"reference_aperture\": 1.0,\n> +                \"reference_lux\": 800,\n> +                \"reference_Y\": 20000\n> +            }\n> +        },\n> +        {\n> +            \"rpi.noise\":\n> +            {\n> +                \"reference_constant\": 0,\n> +                \"reference_slope\": 2.5\n> +            }\n> +        },\n> +        {\n> +            \"rpi.sdn\": { }\n> +        },\n> +        {\n> +            \"rpi.agc\":\n> +            {\n> +                \"metering_modes\":\n> +                {\n> +                    \"centre-weighted\":\n> +                    {\n> +                        \"weights\":\n> +                        [\n> +                            4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0\n> +                        ]\n> +                    }\n> +                },\n> +                \"exposure_modes\":\n> +                {\n> +                    \"normal\":\n> +                    {\n> +                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> +                        \"gain\": [ 1.0, 2.0, 3.0, 4.0, 8.0 ]\n> +                    },\n> +                    \"short\":\n> +                    {\n> +                        \"shutter\": [ 100, 5000, 10000, 20000, 30000 ],\n> +                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> +                    },\n> +                    \"long\":\n> +                    {\n> +                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> +                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> +                    }\n> +                },\n> +                \"constraint_modes\":\n> +                {\n> +                    \"normal\": [\n> +                        {\n> +                            \"bound\": \"LOWER\",\n> +                            \"q_lo\": 0.98,\n> +                            \"q_hi\": 1.0,\n> +                            \"y_target\":\n> +                            [\n> +                                0, 0.4,\n> +                                1000, 0.4\n> +                            ]\n> +                        }\n> +                    ]\n> +                },\n> +                \"y_target\":\n> +                [\n> +                    0, 0.16,\n> +                    1000, 0.165,\n> +                    10000, 0.17\n> +                ]\n> +            }\n> +        },\n> +        {\n> +            \"rpi.alsc\":\n> +            {\n> +                \"n_iter\": 0,\n> +                \"luminance_strength\": 1.0,\n> +                \"corner_strength\": 1.5\n> +            }\n> +        },\n> +        {\n> +            \"rpi.contrast\":\n> +            {\n> +                \"ce_enable\": 0,\n> +                \"gamma_curve\":\n> +                [\n> +                    0, 0,\n> +                    1024, 5040,\n> +                    2048, 9338,\n> +                    3072, 12356,\n> +                    4096, 15312,\n> +                    5120, 18051,\n> +                    6144, 20790,\n> +                    7168, 23193,\n> +                    8192, 25744,\n> +                    9216, 27942,\n> +                    10240, 30035,\n> +                    11264, 32005,\n> +                    12288, 33975,\n> +                    13312, 35815,\n> +                    14336, 37600,\n> +                    15360, 39168,\n> +                    16384, 40642,\n> +                    18432, 43379,\n> +                    20480, 45749,\n> +                    22528, 47753,\n> +                    24576, 49621,\n> +                    26624, 51253,\n> +                    28672, 52698,\n> +                    30720, 53796,\n> +                    32768, 54876,\n> +                    36864, 57012,\n> +                    40960, 58656,\n> +                    45056, 59954,\n> +                    49152, 61183,\n> +                    53248, 62355,\n> +                    57344, 63419,\n> +                    61440, 64476,\n> +                    65535, 65535\n> +                ]\n> +            }\n> +        }\n> +    ]\n> +}\n> \\ No newline at end of file\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 71926BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 19 Oct 2024 21:44:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4D5006538C;\n\tSat, 19 Oct 2024 23:44:04 +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 AC61465380\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 19 Oct 2024 23:44:02 +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 DA9565B3;\n\tSat, 19 Oct 2024 23:42:17 +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=\"nI8a0Fht\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1729374137;\n\tbh=vg7APSO2UQ7aCFKFe1KvBWqtzf4fAX4y5HlnHQ6XsMM=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=nI8a0FhtMiSlv3Od9hCLXwdTmXFgHL09SLsFghamxREZQucnqDYgK3cS/1OGUOj8M\n\tcswjyoFQfdzewvIZNcRguXdWekPX1o7UQb6cRtgSX28PViOPgO3TNva3IGgBqWKYF0\n\tJ948LtJnjwvvNUmXma4hHCtFHABf39AxAJpnbFTA=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20241010134148.1788425-1-kieran.bingham@ideasonboard.com>","References":"<20241010134148.1788425-1-kieran.bingham@ideasonboard.com>","Subject":"Re: [PATCH] ipa: rpi: Add tuning files for OV7251","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Dave Stevenson <dave.stevenson@raspberrypi.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Sat, 19 Oct 2024 22:43:59 +0100","Message-ID":"<172937423962.2485972.14809842923199252116@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":31849,"web_url":"https://patchwork.libcamera.org/comment/31849/","msgid":"<CAEmqJPr=Y5NEND9JGDDr=d8Dutcx57-LLpn8vq=g++R2s7uuug@mail.gmail.com>","date":"2024-10-21T10:45:11","subject":"Re: [PATCH] ipa: rpi: Add tuning files for OV7251","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Sat, 19 Oct 2024 at 22:44, Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Kieran Bingham (2024-10-10 14:41:48)\n> > From: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> >\n> > OV7251 is a mono VGA global shutter sensor that has a mainline\n> > driver and works with libcamera.\n> > Add the supporting files for it. The tuning is copied from OV9281.\n> >\n> > Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>\n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n> Naush / David, Are you happy for this to be merged ?\n\nYup\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n>\n> --\n> Kieran\n>\n>\n> > ---\n> >  src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp |  66 +++++++++\n> >  src/ipa/rpi/cam_helper/meson.build           |   1 +\n> >  src/ipa/rpi/vc4/data/meson.build             |   1 +\n> >  src/ipa/rpi/vc4/data/ov7251_mono.json        | 136 +++++++++++++++++++\n> >  4 files changed, 204 insertions(+)\n> >  create mode 100644 src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n> >  create mode 100644 src/ipa/rpi/vc4/data/ov7251_mono.json\n> >\n> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n> > new file mode 100644\n> > index 000000000000..7b12c44508a4\n> > --- /dev/null\n> > +++ b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp\n> > @@ -0,0 +1,66 @@\n> > +/* SPDX-License-Identifier: BSD-2-Clause */\n> > +/*\n> > + * Copyright (C) 2021, Raspberry Pi Ltd\n> > + *\n> > + * camera information for ov7251 sensor\n> > + */\n> > +\n> > +#include <assert.h>\n> > +\n> > +#include \"cam_helper.h\"\n> > +\n> > +using namespace RPiController;\n> > +\n> > +class CamHelperOv7251 : public CamHelper\n> > +{\n> > +public:\n> > +       CamHelperOv7251();\n> > +       uint32_t gainCode(double gain) const override;\n> > +       double gain(uint32_t gainCode) const override;\n> > +       void getDelays(int &exposureDelay, int &gainDelay,\n> > +                      int &vblankDelay, int &hblankDelay) const override;\n> > +\n> > +private:\n> > +       /*\n> > +        * Smallest difference between the frame length and integration time,\n> > +        * in units of lines.\n> > +        */\n> > +       static constexpr int frameIntegrationDiff = 4;\n> > +};\n> > +\n> > +/*\n> > + * OV7251 doesn't output metadata, so we have to use the \"unicam parser\" which\n> > + * works by counting frames.\n> > + */\n> > +\n> > +CamHelperOv7251::CamHelperOv7251()\n> > +       : CamHelper({}, frameIntegrationDiff)\n> > +{\n> > +}\n> > +\n> > +uint32_t CamHelperOv7251::gainCode(double gain) const\n> > +{\n> > +       return static_cast<uint32_t>(gain * 16.0);\n> > +}\n> > +\n> > +double CamHelperOv7251::gain(uint32_t gainCode) const\n> > +{\n> > +       return static_cast<double>(gainCode) / 16.0;\n> > +}\n> > +\n> > +void CamHelperOv7251::getDelays(int &exposureDelay, int &gainDelay,\n> > +                               int &vblankDelay, int &hblankDelay) const\n> > +{\n> > +       /* The driver appears to behave as follows: */\n> > +       exposureDelay = 2;\n> > +       gainDelay = 2;\n> > +       vblankDelay = 2;\n> > +       hblankDelay = 2;\n> > +}\n> > +\n> > +static CamHelper *create()\n> > +{\n> > +       return new CamHelperOv7251();\n> > +}\n> > +\n> > +static RegisterCamHelper reg(\"ov7251\", &create);\n> > diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build\n> > index 1e43f1da29cd..03e88fe082e2 100644\n> > --- a/src/ipa/rpi/cam_helper/meson.build\n> > +++ b/src/ipa/rpi/cam_helper/meson.build\n> > @@ -11,6 +11,7 @@ rpi_ipa_cam_helper_sources = files([\n> >      'cam_helper_imx519.cpp',\n> >      'cam_helper_imx708.cpp',\n> >      'cam_helper_ov64a40.cpp',\n> > +    'cam_helper_ov7251.cpp',\n> >      'cam_helper_ov9281.cpp',\n> >      'md_parser_smia.cpp',\n> >  ])\n> > diff --git a/src/ipa/rpi/vc4/data/meson.build b/src/ipa/rpi/vc4/data/meson.build\n> > index 60477c112196..8c34a1a5faa2 100644\n> > --- a/src/ipa/rpi/vc4/data/meson.build\n> > +++ b/src/ipa/rpi/vc4/data/meson.build\n> > @@ -19,6 +19,7 @@ conf_files = files([\n> >      'ov5647.json',\n> >      'ov5647_noir.json',\n> >      'ov64a40.json',\n> > +    'ov7251_mono.json',\n> >      'ov9281_mono.json',\n> >      'se327m12.json',\n> >      'uncalibrated.json',\n> > diff --git a/src/ipa/rpi/vc4/data/ov7251_mono.json b/src/ipa/rpi/vc4/data/ov7251_mono.json\n> > new file mode 100644\n> > index 000000000000..a9d05a01b53f\n> > --- /dev/null\n> > +++ b/src/ipa/rpi/vc4/data/ov7251_mono.json\n> > @@ -0,0 +1,136 @@\n> > +{\n> > +    \"version\": 2.0,\n> > +    \"target\": \"bcm2835\",\n> > +    \"algorithms\": [\n> > +        {\n> > +            \"rpi.black_level\":\n> > +            {\n> > +                \"black_level\": 4096\n> > +            }\n> > +        },\n> > +        {\n> > +            \"rpi.lux\":\n> > +            {\n> > +                \"reference_shutter_speed\": 2000,\n> > +                \"reference_gain\": 1.0,\n> > +                \"reference_aperture\": 1.0,\n> > +                \"reference_lux\": 800,\n> > +                \"reference_Y\": 20000\n> > +            }\n> > +        },\n> > +        {\n> > +            \"rpi.noise\":\n> > +            {\n> > +                \"reference_constant\": 0,\n> > +                \"reference_slope\": 2.5\n> > +            }\n> > +        },\n> > +        {\n> > +            \"rpi.sdn\": { }\n> > +        },\n> > +        {\n> > +            \"rpi.agc\":\n> > +            {\n> > +                \"metering_modes\":\n> > +                {\n> > +                    \"centre-weighted\":\n> > +                    {\n> > +                        \"weights\":\n> > +                        [\n> > +                            4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0\n> > +                        ]\n> > +                    }\n> > +                },\n> > +                \"exposure_modes\":\n> > +                {\n> > +                    \"normal\":\n> > +                    {\n> > +                        \"shutter\": [ 100, 15000, 30000, 60000, 120000 ],\n> > +                        \"gain\": [ 1.0, 2.0, 3.0, 4.0, 8.0 ]\n> > +                    },\n> > +                    \"short\":\n> > +                    {\n> > +                        \"shutter\": [ 100, 5000, 10000, 20000, 30000 ],\n> > +                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]\n> > +                    },\n> > +                    \"long\":\n> > +                    {\n> > +                        \"shutter\": [ 1000, 30000, 60000, 90000, 120000 ],\n> > +                        \"gain\": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]\n> > +                    }\n> > +                },\n> > +                \"constraint_modes\":\n> > +                {\n> > +                    \"normal\": [\n> > +                        {\n> > +                            \"bound\": \"LOWER\",\n> > +                            \"q_lo\": 0.98,\n> > +                            \"q_hi\": 1.0,\n> > +                            \"y_target\":\n> > +                            [\n> > +                                0, 0.4,\n> > +                                1000, 0.4\n> > +                            ]\n> > +                        }\n> > +                    ]\n> > +                },\n> > +                \"y_target\":\n> > +                [\n> > +                    0, 0.16,\n> > +                    1000, 0.165,\n> > +                    10000, 0.17\n> > +                ]\n> > +            }\n> > +        },\n> > +        {\n> > +            \"rpi.alsc\":\n> > +            {\n> > +                \"n_iter\": 0,\n> > +                \"luminance_strength\": 1.0,\n> > +                \"corner_strength\": 1.5\n> > +            }\n> > +        },\n> > +        {\n> > +            \"rpi.contrast\":\n> > +            {\n> > +                \"ce_enable\": 0,\n> > +                \"gamma_curve\":\n> > +                [\n> > +                    0, 0,\n> > +                    1024, 5040,\n> > +                    2048, 9338,\n> > +                    3072, 12356,\n> > +                    4096, 15312,\n> > +                    5120, 18051,\n> > +                    6144, 20790,\n> > +                    7168, 23193,\n> > +                    8192, 25744,\n> > +                    9216, 27942,\n> > +                    10240, 30035,\n> > +                    11264, 32005,\n> > +                    12288, 33975,\n> > +                    13312, 35815,\n> > +                    14336, 37600,\n> > +                    15360, 39168,\n> > +                    16384, 40642,\n> > +                    18432, 43379,\n> > +                    20480, 45749,\n> > +                    22528, 47753,\n> > +                    24576, 49621,\n> > +                    26624, 51253,\n> > +                    28672, 52698,\n> > +                    30720, 53796,\n> > +                    32768, 54876,\n> > +                    36864, 57012,\n> > +                    40960, 58656,\n> > +                    45056, 59954,\n> > +                    49152, 61183,\n> > +                    53248, 62355,\n> > +                    57344, 63419,\n> > +                    61440, 64476,\n> > +                    65535, 65535\n> > +                ]\n> > +            }\n> > +        }\n> > +    ]\n> > +}\n> > \\ No newline at end of file\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 0F3EEC32A3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Oct 2024 10:45:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A2A2D65392;\n\tMon, 21 Oct 2024 12:45:49 +0200 (CEST)","from mail-yb1-xb36.google.com (mail-yb1-xb36.google.com\n\t[IPv6:2607:f8b0:4864:20::b36])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 87A8D6538A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Oct 2024 12:45:46 +0200 (CEST)","by mail-yb1-xb36.google.com with SMTP id\n\t3f1490d57ef6-e2bd1bbaf03so206148276.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Oct 2024 03:45:46 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"VzFMRvG7\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1729507545; x=1730112345;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=/H09mD2O0R8akAQk6y+vQ3NPaetf8woQs8LTKWM7u68=;\n\tb=VzFMRvG78mTsf+nXBMcbPgHdY1LUL9K+BhQA+QhBNB3KrIDybuvniYCKFUrbWMQfMx\n\t2ZFxKK9A7VwKvt5/Pa++wZ9L++mr+D+hmZm42Oj8MPzMF8qvDEY+hyjtjDrsIxHSMu5v\n\tBayUmNC9I2HvZG4BPAtSwA9TzQ7OmThLY3X6rU/5qN+I2w3Sv+rMwIE5brY+60q1Qksd\n\tTL4jFxtu5B7EATlpuIZ24jMZwavCYe/HAO7xfmxtu+vs/ZyAnhYVYSC2s1HKr76x6kSa\n\tL0Xs7Ph/g4d6w3nmcgqJsNftHSetCih74Yp67hSus0PCjLboeHfuphQaWND3npy2ewZF\n\tsHDQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1729507545; x=1730112345;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=/H09mD2O0R8akAQk6y+vQ3NPaetf8woQs8LTKWM7u68=;\n\tb=wE/+U8yIRWUwcL4DJKyOyC7tRY5xigTrETifM9lRYP1Zgs17SR6i37kC8jzOgWJSwu\n\tZQ33ZCkywltGCYoinRA/kdgfIcWBGOc1H5UsHnicRveD0C7iOOT6ItlwVw6yFCgoXlK3\n\t8sKCV3IatkpUWRBZOwSETynWe28xVHo2haerOUCv72j+Ws8wt6shPYnC1Ikl73dz3phG\n\tZaM55qEX/0Tweq3gxlxwfEjASlpTOaDHtb2L3BB70pkshtIL+a4HK4Jn7EqnYXBcLQ5r\n\tlM8y8V7jMVQHyZ6JUKTIPlAm9H8Y7vX1dAL5Bxk9r5NHYe9LzqRDgONDwpKQ+y1qWnQx\n\taApQ==","X-Gm-Message-State":"AOJu0YwTntFHad/yCPInGh7ilJAP6Bb1BfXh3nK4kUVQlGulHVy+3t/3\n\tU/+1owNjMEyii2MxHTnZjUahD+NhDWv4ZLI6sB48UQQ3Bw9w8Iqb+f0PQELKx6Gt/nH+cpQYTXf\n\tuwNkKC00XvaErpQG23O1wKao1j9fAbEsyFjFzaA==","X-Google-Smtp-Source":"AGHT+IE5m79kEBaMj0A8A3SAoVjKniRfgowgy+UVMxO4mIPPoqHg+Yc+tRNB/LzFwB0XClMI2EV56GdcDhLO4WP+NtU=","X-Received":"by 2002:a05:690c:87:b0:6e5:994f:fbc2 with SMTP id\n\t00721157ae682-6e5bfe859cdmr39047717b3.10.1729507545191;\n\tMon, 21 Oct 2024 03:45:45 -0700 (PDT)","MIME-Version":"1.0","References":"<20241010134148.1788425-1-kieran.bingham@ideasonboard.com>\n\t<172937423962.2485972.14809842923199252116@ping.linuxembedded.co.uk>","In-Reply-To":"<172937423962.2485972.14809842923199252116@ping.linuxembedded.co.uk>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Mon, 21 Oct 2024 11:45:11 +0100","Message-ID":"<CAEmqJPr=Y5NEND9JGDDr=d8Dutcx57-LLpn8vq=g++R2s7uuug@mail.gmail.com>","Subject":"Re: [PATCH] ipa: rpi: Add tuning files for OV7251","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>, \n\tDave Stevenson <dave.stevenson@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","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>"}}]