[{"id":24446,"web_url":"https://patchwork.libcamera.org/comment/24446/","msgid":"<165999923257.2190824.6096917411857885379@Monstersaurus>","date":"2022-08-08T22:53:52","subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart via libcamera-devel (2022-08-02 11:09:52)\n> Pass the path name of the YAML IPA tuning file to the IPA module. The\n> file name is derived from the sensor name (\"${sensor_name}.yaml\"), with\n> a fallback to \"uncalibrated.yaml\".\n> \n> The tuning file name can be manually overridden with the\n> LIBCAMERA_IPU3_TUNING_FILE environment variable.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/ipu3/ipu3.cpp | 22 ++++++++++++++++++++--\n>  1 file changed, 20 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 4fe52f74a68c..5c4a0a567ff2 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -1243,8 +1243,26 @@ int IPU3CameraData::loadIPA()\n>         if (ret)\n>                 return ret;\n>  \n> -       ret = ipa_->init(IPASettings{ \"\", sensor->model() }, sensorInfo,\n> -                        sensor->controls(), &ipaControls_);\n> +       /*\n> +        * The API tuning file is made from the sensor name unless the\n> +        * environment variable overrides it. If\n\nIf ?\n\n> +        */\n> +       std::string ipaTuningFile;\n> +       char const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_IPU3_TUNING_FILE\");\n\nThis is just about OK for RPi where there is usually only a single\ncamera, but this doesn't really work when there are more such as most IPU3\ndevices.\n\nI would be tempted to drop this - and move towards having a libcamera\nyaml config file that could override this on a per-camera id basis.\n\n\n> +       if (!configFromEnv || *configFromEnv == '\\0') {\n> +               ipaTuningFile = ipa_->configurationFile(sensor->model() + \".yaml\");\n> +               /*\n> +                * If the tuning file isn't found, fall back to the\n> +                * 'uncalibrated' configuration file.\n> +                */\n> +               if (ipaTuningFile.empty())\n> +                       ipaTuningFile = ipa_->configurationFile(\"uncalibrated.yaml\");\n> +       } else {\n> +               ipaTuningFile = std::string(configFromEnv);\n> +       }\n> +\n> +       ret = ipa_->init(IPASettings{ ipaTuningFile, sensor->model() },\n> +                        sensorInfo, sensor->controls(), &ipaControls_);\n>         if (ret) {\n>                 LOG(IPU3, Error) << \"Failed to initialise the IPU3 IPA\";\n>                 return ret;\n> -- \n> Regards,\n> \n> Laurent Pinchart\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 452FFC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  8 Aug 2022 22:53:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 840F46332B;\n\tTue,  9 Aug 2022 00:53:57 +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 B2378600EA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  9 Aug 2022 00:53:55 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4CAA6481;\n\tTue,  9 Aug 2022 00:53:55 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659999237;\n\tbh=YMV/vx090i4+ha2zWN+/U070RUdxW5blYhqu3++Fbs0=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=FG6VYbLPHHbTzoWL/PVulJ9FPrQBrahejqkQNDXKyOHuA61Xw1XNl6cwp/zD3OSLA\n\tFlSlfGsk2nr7YT2VaxtT5keI+D6BePGm5uF4OrCOK7ys3nH230dycd0p3/hQquh/yU\n\tl9y4YUrWs1pZxsdYI2zYRJEORr7hEmnghRYRwmw5s/LuhfuFGk+56bKvg88IzA0R9l\n\tziKVbk3xjU5iJy1IUMS+sydnBSY/oZrW0a3/VKqJe2rCzdKrrmwoh/Q3v50h+cPqgZ\n\tiBCCuW2ewlnp/vMf25XPC9iTzlr+0aYRT7+MY7qhmLYlHBcdkaGxevfPhn61LKi/lM\n\tnUdHuYsYnjTNw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1659999235;\n\tbh=YMV/vx090i4+ha2zWN+/U070RUdxW5blYhqu3++Fbs0=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=TiegEY08xoA/2vU2h1PxTUUImZMeqaIz7GqcW+derqUwhkBP3hyg7+iio3dofnET5\n\tw6ENIn6n75f3g5lBLKngYL7N+odCQ5PLQa5ZKTMc/k1Ra2ECo1004O67F1vBcxtlj6\n\t2ZYv0/PvHPDFul9D8EDP5iBkpKhImDsgIal++UPE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"TiegEY08\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220802100955.1546-2-laurent.pinchart@ideasonboard.com>","References":"<20220802100955.1546-1-laurent.pinchart@ideasonboard.com>\n\t<20220802100955.1546-2-laurent.pinchart@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 08 Aug 2022 23:53:52 +0100","Message-ID":"<165999923257.2190824.6096917411857885379@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24479,"web_url":"https://patchwork.libcamera.org/comment/24479/","msgid":"<YvJxdSd0aR5gLI1R@pendragon.ideasonboard.com>","date":"2022-08-09T14:38:45","subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Mon, Aug 08, 2022 at 11:53:52PM +0100, Kieran Bingham wrote:\n> Quoting Laurent Pinchart via libcamera-devel (2022-08-02 11:09:52)\n> > Pass the path name of the YAML IPA tuning file to the IPA module. The\n> > file name is derived from the sensor name (\"${sensor_name}.yaml\"), with\n> > a fallback to \"uncalibrated.yaml\".\n> > \n> > The tuning file name can be manually overridden with the\n> > LIBCAMERA_IPU3_TUNING_FILE environment variable.\n> > \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  src/libcamera/pipeline/ipu3/ipu3.cpp | 22 ++++++++++++++++++++--\n> >  1 file changed, 20 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index 4fe52f74a68c..5c4a0a567ff2 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -1243,8 +1243,26 @@ int IPU3CameraData::loadIPA()\n> >         if (ret)\n> >                 return ret;\n> >  \n> > -       ret = ipa_->init(IPASettings{ \"\", sensor->model() }, sensorInfo,\n> > -                        sensor->controls(), &ipaControls_);\n> > +       /*\n> > +        * The API tuning file is made from the sensor name unless the\n> > +        * environment variable overrides it. If\n> \n> If ?\n\nGood question :-)\n\n> > +        */\n> > +       std::string ipaTuningFile;\n> > +       char const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_IPU3_TUNING_FILE\");\n> \n> This is just about OK for RPi where there is usually only a single\n> camera, but this doesn't really work when there are more such as most IPU3\n> devices.\n> \n> I would be tempted to drop this - and move towards having a libcamera\n> yaml config file that could override this on a per-camera id basis.\n\nYou're right, I'll drop it.\n\n> > +       if (!configFromEnv || *configFromEnv == '\\0') {\n> > +               ipaTuningFile = ipa_->configurationFile(sensor->model() + \".yaml\");\n> > +               /*\n> > +                * If the tuning file isn't found, fall back to the\n> > +                * 'uncalibrated' configuration file.\n> > +                */\n> > +               if (ipaTuningFile.empty())\n> > +                       ipaTuningFile = ipa_->configurationFile(\"uncalibrated.yaml\");\n> > +       } else {\n> > +               ipaTuningFile = std::string(configFromEnv);\n> > +       }\n> > +\n> > +       ret = ipa_->init(IPASettings{ ipaTuningFile, sensor->model() },\n> > +                        sensorInfo, sensor->controls(), &ipaControls_);\n> >         if (ret) {\n> >                 LOG(IPU3, Error) << \"Failed to initialise the IPU3 IPA\";\n> >                 return ret;","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 DFA60BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  9 Aug 2022 14:38:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5463D6332B;\n\tTue,  9 Aug 2022 16:38:58 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1B2D561FAA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  9 Aug 2022 16:38:57 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 74B14481;\n\tTue,  9 Aug 2022 16:38:56 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1660055938;\n\tbh=F1IllKRQs0uth1yqqEcwH3kxdmlrWII7RfIVG2Oe7dg=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=kCtt1rPG5ZKxcMBUM0qc+wD9FgeTynQaH4/xSHFYu6rmQg2uNmda/7lZo/tpmCzK3\n\t3Rkc0U8uRJGN43JgFDRhBnmoUYe5jfYMOUtmCAR+si7C5S5Uxh6dSPT7+vb/5AzNMz\n\tNRuuZtiXyzzoLlTExQRcDKSS9ibzzOnOeQEglSgdc1n6lsrPsPlnAOaaq/Ub/93axF\n\tw0/pw6nweqk1bGoUpNP3rRIWDqHa/zZ8oGF+ZJyf6Kp9e+c/xGX1rxjYt6cEasrw2H\n\t8r0VvlkPN2vxr8mW4v8+wihZf6Pn7PxbNUVaygabvnGviTWOnT/Kempf9wKJvJm3oW\n\tDb4XsETRRlDTw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1660055936;\n\tbh=F1IllKRQs0uth1yqqEcwH3kxdmlrWII7RfIVG2Oe7dg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=NQaZip74+8zgFUAATgojQN3su9+KAFtxmo7uK0XqtwMB7qQ7nUgvqyLdfFkVmOn3E\n\tJ74yz6tw5EMOwwwVO4tUAu6EQtZy+E1+YBDU/fL2Kxdnuk69rm6tLcpqWCAQoQra8Q\n\tItCQF7GsrEthMNh1p0jFSsHgGP83SoU6O0lGz9O4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"NQaZip74\"; dkim-atps=neutral","Date":"Tue, 9 Aug 2022 17:38:45 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<YvJxdSd0aR5gLI1R@pendragon.ideasonboard.com>","References":"<20220802100955.1546-1-laurent.pinchart@ideasonboard.com>\n\t<20220802100955.1546-2-laurent.pinchart@ideasonboard.com>\n\t<165999923257.2190824.6096917411857885379@Monstersaurus>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<165999923257.2190824.6096917411857885379@Monstersaurus>","Subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24487,"web_url":"https://patchwork.libcamera.org/comment/24487/","msgid":"<166007418328.15821.4947134723001991243@Monstersaurus>","date":"2022-08-09T19:43:03","subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2022-08-09 15:38:45)\n> Hi Kieran,\n> \n> On Mon, Aug 08, 2022 at 11:53:52PM +0100, Kieran Bingham wrote:\n> > Quoting Laurent Pinchart via libcamera-devel (2022-08-02 11:09:52)\n> > > Pass the path name of the YAML IPA tuning file to the IPA module. The\n> > > file name is derived from the sensor name (\"${sensor_name}.yaml\"), with\n> > > a fallback to \"uncalibrated.yaml\".\n> > > \n> > > The tuning file name can be manually overridden with the\n> > > LIBCAMERA_IPU3_TUNING_FILE environment variable.\n> > > \n> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > ---\n> > >  src/libcamera/pipeline/ipu3/ipu3.cpp | 22 ++++++++++++++++++++--\n> > >  1 file changed, 20 insertions(+), 2 deletions(-)\n> > > \n> > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > index 4fe52f74a68c..5c4a0a567ff2 100644\n> > > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > @@ -1243,8 +1243,26 @@ int IPU3CameraData::loadIPA()\n> > >         if (ret)\n> > >                 return ret;\n> > >  \n> > > -       ret = ipa_->init(IPASettings{ \"\", sensor->model() }, sensorInfo,\n> > > -                        sensor->controls(), &ipaControls_);\n> > > +       /*\n> > > +        * The API tuning file is made from the sensor name unless the\n> > > +        * environment variable overrides it. If\n> > \n> > If ?\n> \n> Good question :-)\n\nWith this answered,\n\n> \n> > > +        */\n> > > +       std::string ipaTuningFile;\n> > > +       char const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_IPU3_TUNING_FILE\");\n> > \n> > This is just about OK for RPi where there is usually only a single\n> > camera, but this doesn't really work when there are more such as most IPU3\n> > devices.\n> > \n> > I would be tempted to drop this - and move towards having a libcamera\n> > yaml config file that could override this on a per-camera id basis.\n> \n> You're right, I'll drop it.\n\nAnd this dropped...\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> > > +       if (!configFromEnv || *configFromEnv == '\\0') {\n> > > +               ipaTuningFile = ipa_->configurationFile(sensor->model() + \".yaml\");\n> > > +               /*\n> > > +                * If the tuning file isn't found, fall back to the\n> > > +                * 'uncalibrated' configuration file.\n> > > +                */\n> > > +               if (ipaTuningFile.empty())\n> > > +                       ipaTuningFile = ipa_->configurationFile(\"uncalibrated.yaml\");\n> > > +       } else {\n> > > +               ipaTuningFile = std::string(configFromEnv);\n> > > +       }\n> > > +\n> > > +       ret = ipa_->init(IPASettings{ ipaTuningFile, sensor->model() },\n> > > +                        sensorInfo, sensor->controls(), &ipaControls_);\n> > >         if (ret) {\n> > >                 LOG(IPU3, Error) << \"Failed to initialise the IPU3 IPA\";\n> > >                 return ret;\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","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 B316EC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  9 Aug 2022 19:43:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0280E6332B;\n\tTue,  9 Aug 2022 21:43:07 +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 E866761FAA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  9 Aug 2022 21:43:05 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 78DB4481;\n\tTue,  9 Aug 2022 21:43:05 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1660074187;\n\tbh=7H3Vbmad/ymJk4414alGF0R+pF0nRFClNDy68lYyCz4=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=mhu/UfGVBhGMIz6lvqfcJgZ9OO/mxUPYa71V/ZtNHHq78eksJ4BRcquYTNS3oVQEq\n\tFuA1MLL+XT4UJDpJhi1/Ct10hEOQiDqdm/YhrTOeK4RfbVoQkH6HXNLFOVjAUP2XEu\n\t/FZbWKqo13rveDwVN3qtOXsuPcVCOFkoGCeXxgdhbIdFhviBMQ7WdXVRzyFldoxMnG\n\tKIqwpdwnjTPaP1Q2yrA3lALYJsofOa0IjH4qeLSm/G3VdPV4Qq/afZ8+xRBoLUCD8w\n\tfSzftkSDcn2F8jvMPdv2RvzLQ+70DiPDP1i7rbdI+hnCrX58GJTQ6AeNKrAPSV+5Of\n\t5WKcdpTVz/h+g==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1660074185;\n\tbh=7H3Vbmad/ymJk4414alGF0R+pF0nRFClNDy68lYyCz4=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=qGhwSgBtPmvk4mWcInMV4JJf2p3BkbeIH26ruR78iZsmtEjYEu55YHcbOzwFQBfrr\n\tGwDTIzGYJ6WC8BSlETJX9sUFW7EJPljCj8ezCAngcB2I2QQet83NCDbG0b/3QhBlFp\n\tj7yI+2k4x5MKsJ1kzgFDmrxbDc4oa2FyXkQsqZh4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"qGhwSgBt\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<YvJxdSd0aR5gLI1R@pendragon.ideasonboard.com>","References":"<20220802100955.1546-1-laurent.pinchart@ideasonboard.com>\n\t<20220802100955.1546-2-laurent.pinchart@ideasonboard.com>\n\t<165999923257.2190824.6096917411857885379@Monstersaurus>\n\t<YvJxdSd0aR5gLI1R@pendragon.ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Tue, 09 Aug 2022 20:43:03 +0100","Message-ID":"<166007418328.15821.4947134723001991243@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [RFC PATCH 1/4] pipeline: ipu3: Support IPA\n\ttuning file","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>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]