[{"id":25007,"web_url":"https://patchwork.libcamera.org/comment/25007/","msgid":"<166368000198.3912877.9010730142188674885@Monstersaurus>","date":"2022-09-20T13:20:01","subject":"Re: [libcamera-devel] [PATCH v4 01/32] ipa: ipu3: Fix style of\n\tDoxygen comment blocks","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-09-08 02:41:29)\n> Fix various issues in Doxygen comment blocks:\n> \n> - \\param requires an [in] or [out] tag\n> - \\param must come before the body of the documetation\n> - Rename coarseSearchStep to kCoarseSearchStep\n> - White space and line wrap\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/ipa/ipu3/algorithms/af.cpp           | 23 ++++++++++-------------\n>  src/ipa/ipu3/algorithms/blc.cpp          |  4 ++--\n>  src/ipa/ipu3/algorithms/tone_mapping.cpp | 10 +++++-----\n>  3 files changed, 17 insertions(+), 20 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/algorithms/af.cpp b/src/ipa/ipu3/algorithms/af.cpp\n> index 4835a0345931..106a7614e2c7 100644\n> --- a/src/ipa/ipu3/algorithms/af.cpp\n> +++ b/src/ipa/ipu3/algorithms/af.cpp\n> @@ -196,10 +196,10 @@ int Af::configure(IPAContext &context, const IPAConfigInfo &configInfo)\n>  \n>  /**\n>   * \\brief AF coarse scan\n> - *\n> - * Find a near focused image using a coarse step. The step is determined by coarseSearchStep.\n> - *\n>   * \\param[in] context The shared IPA context\n> + *\n> + * Find a near focused image using a coarse step. The step is determined by\n> + * kCoarseSearchStep.\n>   */\n>  void Af::afCoarseScan(IPAContext &context)\n>  {\n> @@ -223,10 +223,9 @@ void Af::afCoarseScan(IPAContext &context)\n>  \n>  /**\n>   * \\brief AF fine scan\n> + * \\param[in] context The shared IPA context\n>   *\n>   * Find an optimum lens position with moving 1 step for each search.\n> - *\n> - * \\param[in] context The shared IPA context\n>   */\n>  void Af::afFineScan(IPAContext &context)\n>  {\n> @@ -244,10 +243,9 @@ void Af::afFineScan(IPAContext &context)\n>  \n>  /**\n>   * \\brief AF reset\n> + * \\param[in] context The shared IPA context\n>   *\n>   * Reset all the parameters to start over the AF process.\n> - *\n> - * \\param[in] context The shared IPA context\n>   */\n>  void Af::afReset(IPAContext &context)\n>  {\n> @@ -268,7 +266,7 @@ void Af::afReset(IPAContext &context)\n>  /**\n>   * \\brief AF variance comparison.\n>   * \\param[in] context The IPA context\n> - * \\param min_step The VCM movement step.\n> + * \\param[in] min_step The VCM movement step.\n>   *\n>   * We always pick the largest variance to replace the previous one. The image\n>   * with a larger variance also indicates it is a clearer image than previous\n> @@ -343,9 +341,8 @@ void Af::afIgnoreFrameReset()\n>  \n>  /**\n>   * \\brief Estimate variance\n> - * \\param y_item The AF filter data set from the IPU3 statistics buffer\n> - * \\param len The quantity of table item entries which are valid to process\n> - * \\param isY1 Selects between filter Y1 or Y2 to calculate the variance\n> + * \\param[in] y_items The AF filter data set from the IPU3 statistics buffer\n> + * \\param[in] isY1 Selects between filter Y1 or Y2 to calculate the variance\n>   *\n>   * Calculate the mean of the data set provided by \\a y_item, and then calculate\n>   * the variance of that data set from the mean.\n> @@ -378,13 +375,13 @@ double Af::afEstimateVariance(Span<const y_table_item_t> y_items, bool isY1)\n>  \n>  /**\n>   * \\brief Determine out-of-focus situation.\n> - * \\param context The IPA context.\n> + * \\param[in] context The IPA context.\n>   *\n>   * Out-of-focus means that the variance change rate for a focused and a new\n>   * variance is greater than a threshold.\n>   *\n>   * \\return True if the variance threshold is crossed indicating lost focus,\n> - *         false otherwise.\n> + * false otherwise\n\n:-( I prefer the indentation here so it's clearer in the code but I don't\nthink it matters either way. And would require fixing throughout I\nexpect.\n\nBut otherwise, this all looks reasonable.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n>   */\n>  bool Af::afIsOutOfFocus(IPAContext context)\n>  {\n> diff --git a/src/ipa/ipu3/algorithms/blc.cpp b/src/ipa/ipu3/algorithms/blc.cpp\n> index c561aa858b96..c32427c99549 100644\n> --- a/src/ipa/ipu3/algorithms/blc.cpp\n> +++ b/src/ipa/ipu3/algorithms/blc.cpp\n> @@ -38,8 +38,8 @@ BlackLevelCorrection::BlackLevelCorrection()\n>  \n>  /**\n>   * \\brief Fill in the parameter structure, and enable black level correction\n> - * \\param context The shared IPA context\n> - * \\param params The IPU3 parameters\n> + * \\param[in] context The shared IPA context\n> + * \\param[out] params The IPU3 parameters\n>   *\n>   * Populate the IPU3 parameter structure with the correction values for each\n>   * channel and enable the corresponding ImgU block processing.\n> diff --git a/src/ipa/ipu3/algorithms/tone_mapping.cpp b/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> index 49a5558b6faa..c21647e8c51b 100644\n> --- a/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> +++ b/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> @@ -49,8 +49,8 @@ int ToneMapping::configure(IPAContext &context,\n>  \n>  /**\n>   * \\brief Fill in the parameter structure, and enable gamma control\n> - * \\param context The shared IPA context\n> - * \\param params The IPU3 parameters\n> + * \\param[in] context The shared IPA context\n> + * \\param[out] params The IPU3 parameters\n>   *\n>   * Populate the IPU3 parameter structure with our tone mapping look up table and\n>   * enable the gamma control module in the processing blocks.\n> @@ -71,9 +71,9 @@ void ToneMapping::prepare([[maybe_unused]] IPAContext &context,\n>  \n>  /**\n>   * \\brief Calculate the tone mapping look up table\n> - * \\param context The shared IPA context\n> - * \\param frameContext The current frame context\n> - * \\param stats The IPU3 statistics and ISP results\n> + * \\param[in] context The shared IPA context\n> + * \\param[in] frameContext The current frame context\n> + * \\param[in] stats The IPU3 statistics and ISP results\n>   *\n>   * The tone mapping look up table is generated as an inverse power curve from\n>   * our gamma setting.\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 CF03FC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Sep 2022 13:20:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0D5D8621AB;\n\tTue, 20 Sep 2022 15:20:06 +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 43AE36218B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Sep 2022 15:20:04 +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 9EEF26BE;\n\tTue, 20 Sep 2022 15:20:03 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1663680006;\n\tbh=NccfjoBJ0s30Kv3RP9BuesC4xeKzzsxX7f/uDMSMGwE=;\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=KJe0ZjVVps8DEAWN4YLdKsYmHd+tTL0M/mI3G6gFA1Fthucv9gatCo1L3zJf4J2kS\n\tj6m+dTbhnsQaKDwy3weIc1JPhItcuHT+Soow5yZzL8UWNn8yaByjWtBVcO6ULdrQLH\n\tMBW1z1ooP0jTl+3xrJ8En8nZWr9NyfAg/3hT8xJJMho6ckR4AKZH5TKmrx42FIpJKY\n\tGQWPh8ZoOJusyvJTgL+kwqTU6Zu7dkFuR3LmWQs59mKSrG+/cbYqXtj87nhL4s//Sp\n\tJv3lFN2ogCdg1E9iw+5PaBjo35INx8CCNc+SgOjfvgYz7VfVY82n5NcmbodOlQ4qoz\n\t5Ob81Ma5FYuig==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1663680003;\n\tbh=NccfjoBJ0s30Kv3RP9BuesC4xeKzzsxX7f/uDMSMGwE=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=VqrYa0xSkgAoDKH8w38NPZ9KpCvJVWI6bS5Ya2q+Ol+ML3B65ymzQvb+BGlsgYyUG\n\tjxZR7uXy88ss1Q3nGHOqWr5Xs47xlwMq7AhDH6c0cGf61F8X4uKAaX7fCJacDTO5EK\n\tV44Gtx/oq9g2LGqEIKyhbKLIDEMcQqHy8qoLmUdg="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"VqrYa0xS\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220908014200.28728-2-laurent.pinchart@ideasonboard.com>","References":"<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>\n\t<20220908014200.28728-2-laurent.pinchart@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 20 Sep 2022 14:20:01 +0100","Message-ID":"<166368000198.3912877.9010730142188674885@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v4 01/32] ipa: ipu3: Fix style of\n\tDoxygen comment blocks","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":25048,"web_url":"https://patchwork.libcamera.org/comment/25048/","msgid":"<20220921100043.qbxzzetjopuoebyg@lati>","date":"2022-09-21T10:00:43","subject":"Re: [libcamera-devel] [PATCH v4 01/32] ipa: ipu3: Fix style of\n\tDoxygen comment blocks","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n   thanks for fixing this\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\nOn Thu, Sep 08, 2022 at 04:41:29AM +0300, Laurent Pinchart via libcamera-devel wrote:\n> Fix various issues in Doxygen comment blocks:\n>\n> - \\param requires an [in] or [out] tag\n> - \\param must come before the body of the documetation\n> - Rename coarseSearchStep to kCoarseSearchStep\n> - White space and line wrap\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/ipa/ipu3/algorithms/af.cpp           | 23 ++++++++++-------------\n>  src/ipa/ipu3/algorithms/blc.cpp          |  4 ++--\n>  src/ipa/ipu3/algorithms/tone_mapping.cpp | 10 +++++-----\n>  3 files changed, 17 insertions(+), 20 deletions(-)\n>\n> diff --git a/src/ipa/ipu3/algorithms/af.cpp b/src/ipa/ipu3/algorithms/af.cpp\n> index 4835a0345931..106a7614e2c7 100644\n> --- a/src/ipa/ipu3/algorithms/af.cpp\n> +++ b/src/ipa/ipu3/algorithms/af.cpp\n> @@ -196,10 +196,10 @@ int Af::configure(IPAContext &context, const IPAConfigInfo &configInfo)\n>\n>  /**\n>   * \\brief AF coarse scan\n> - *\n> - * Find a near focused image using a coarse step. The step is determined by coarseSearchStep.\n> - *\n>   * \\param[in] context The shared IPA context\n> + *\n> + * Find a near focused image using a coarse step. The step is determined by\n> + * kCoarseSearchStep.\n>   */\n>  void Af::afCoarseScan(IPAContext &context)\n>  {\n> @@ -223,10 +223,9 @@ void Af::afCoarseScan(IPAContext &context)\n>\n>  /**\n>   * \\brief AF fine scan\n> + * \\param[in] context The shared IPA context\n>   *\n>   * Find an optimum lens position with moving 1 step for each search.\n> - *\n> - * \\param[in] context The shared IPA context\n>   */\n>  void Af::afFineScan(IPAContext &context)\n>  {\n> @@ -244,10 +243,9 @@ void Af::afFineScan(IPAContext &context)\n>\n>  /**\n>   * \\brief AF reset\n> + * \\param[in] context The shared IPA context\n>   *\n>   * Reset all the parameters to start over the AF process.\n> - *\n> - * \\param[in] context The shared IPA context\n>   */\n>  void Af::afReset(IPAContext &context)\n>  {\n> @@ -268,7 +266,7 @@ void Af::afReset(IPAContext &context)\n>  /**\n>   * \\brief AF variance comparison.\n>   * \\param[in] context The IPA context\n> - * \\param min_step The VCM movement step.\n> + * \\param[in] min_step The VCM movement step.\n>   *\n>   * We always pick the largest variance to replace the previous one. The image\n>   * with a larger variance also indicates it is a clearer image than previous\n> @@ -343,9 +341,8 @@ void Af::afIgnoreFrameReset()\n>\n>  /**\n>   * \\brief Estimate variance\n> - * \\param y_item The AF filter data set from the IPU3 statistics buffer\n> - * \\param len The quantity of table item entries which are valid to process\n> - * \\param isY1 Selects between filter Y1 or Y2 to calculate the variance\n> + * \\param[in] y_items The AF filter data set from the IPU3 statistics buffer\n> + * \\param[in] isY1 Selects between filter Y1 or Y2 to calculate the variance\n>   *\n>   * Calculate the mean of the data set provided by \\a y_item, and then calculate\n>   * the variance of that data set from the mean.\n> @@ -378,13 +375,13 @@ double Af::afEstimateVariance(Span<const y_table_item_t> y_items, bool isY1)\n>\n>  /**\n>   * \\brief Determine out-of-focus situation.\n> - * \\param context The IPA context.\n> + * \\param[in] context The IPA context.\n>   *\n>   * Out-of-focus means that the variance change rate for a focused and a new\n>   * variance is greater than a threshold.\n>   *\n>   * \\return True if the variance threshold is crossed indicating lost focus,\n> - *         false otherwise.\n> + * false otherwise\n>   */\n>  bool Af::afIsOutOfFocus(IPAContext context)\n>  {\n> diff --git a/src/ipa/ipu3/algorithms/blc.cpp b/src/ipa/ipu3/algorithms/blc.cpp\n> index c561aa858b96..c32427c99549 100644\n> --- a/src/ipa/ipu3/algorithms/blc.cpp\n> +++ b/src/ipa/ipu3/algorithms/blc.cpp\n> @@ -38,8 +38,8 @@ BlackLevelCorrection::BlackLevelCorrection()\n>\n>  /**\n>   * \\brief Fill in the parameter structure, and enable black level correction\n> - * \\param context The shared IPA context\n> - * \\param params The IPU3 parameters\n> + * \\param[in] context The shared IPA context\n> + * \\param[out] params The IPU3 parameters\n>   *\n>   * Populate the IPU3 parameter structure with the correction values for each\n>   * channel and enable the corresponding ImgU block processing.\n> diff --git a/src/ipa/ipu3/algorithms/tone_mapping.cpp b/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> index 49a5558b6faa..c21647e8c51b 100644\n> --- a/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> +++ b/src/ipa/ipu3/algorithms/tone_mapping.cpp\n> @@ -49,8 +49,8 @@ int ToneMapping::configure(IPAContext &context,\n>\n>  /**\n>   * \\brief Fill in the parameter structure, and enable gamma control\n> - * \\param context The shared IPA context\n> - * \\param params The IPU3 parameters\n> + * \\param[in] context The shared IPA context\n> + * \\param[out] params The IPU3 parameters\n>   *\n>   * Populate the IPU3 parameter structure with our tone mapping look up table and\n>   * enable the gamma control module in the processing blocks.\n> @@ -71,9 +71,9 @@ void ToneMapping::prepare([[maybe_unused]] IPAContext &context,\n>\n>  /**\n>   * \\brief Calculate the tone mapping look up table\n> - * \\param context The shared IPA context\n> - * \\param frameContext The current frame context\n> - * \\param stats The IPU3 statistics and ISP results\n> + * \\param[in] context The shared IPA context\n> + * \\param[in] frameContext The current frame context\n> + * \\param[in] stats The IPU3 statistics and ISP results\n>   *\n>   * The tone mapping look up table is generated as an inverse power curve from\n>   * our gamma setting.\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 7310FC0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 21 Sep 2022 10:00:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2063C621BF;\n\tWed, 21 Sep 2022 12:00:47 +0200 (CEST)","from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::226])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 81308600AA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 21 Sep 2022 12:00:45 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 07D31C0005;\n\tWed, 21 Sep 2022 10:00:44 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1663754447;\n\tbh=HZrmDnsfTkJE2KjBVrMFDz6pDqXaiBGOF8GWoyXf1Iw=;\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=MMAo9MQTQ6TJLu9JzRLO+7ckwm+ehDVexYnj/SfMMsJJDCxCjsQ8myASoIB/IXRbt\n\tZDhq/E7WO6jxtL9+kqruhHhXJUqooVJMrImkC2Ay5tsmlz7tApRAK9czgCbjDNnX7V\n\tdB1UHt2QPJS2aHzo+jDfT8j65MJvhcc756iOrmimM9UDWCx4ghWEWKAH+Hc27mLHtm\n\t28wwBY5xYI/7VvnMCQsBzuMEABCpVB31Sb8gqVy9/eLte9o/iijmylDY6IRrd9rmWC\n\t1nEYpfMeTjed41iXCCNrOufcLkmqeInDkyT0Vq5LdDVIEWVZ6n+ETHfb2SQyEjvP8K\n\tXwj91fdZdR4ng==","Date":"Wed, 21 Sep 2022 12:00:43 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20220921100043.qbxzzetjopuoebyg@lati>","References":"<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>\n\t<20220908014200.28728-2-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220908014200.28728-2-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v4 01/32] ipa: ipu3: Fix style of\n\tDoxygen comment blocks","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":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]