[{"id":23305,"web_url":"https://patchwork.libcamera.org/comment/23305/","msgid":"<YpoCtT9EU4USK6+i@pendragon.ideasonboard.com>","date":"2022-06-03T12:46:45","subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Fri, Jun 03, 2022 at 11:32:24AM +0200, Jacopo Mondi via libcamera-devel wrote:\n> With the recent addition of operator<<() to most libcamera core classes\n> to replace usage of the toString() function, the Request class was left\n> behind.\n> \n> Add operator<<() for the Request class.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  include/libcamera/request.h |  3 +++\n>  src/libcamera/request.cpp   | 12 ++++++++++++\n>  2 files changed, 15 insertions(+)\n> \n> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> index 1eb537e9b09b..dffde1536cad 100644\n> --- a/include/libcamera/request.h\n> +++ b/include/libcamera/request.h\n> @@ -9,6 +9,7 @@\n>  \n>  #include <map>\n>  #include <memory>\n> +#include <ostream>\n>  #include <stdint.h>\n>  #include <string>\n>  #include <unordered_set>\n> @@ -75,4 +76,6 @@ private:\n>  \tStatus status_;\n>  };\n>  \n> +std::ostream &operator<<(std::ostream &out, const Request &r);\n> +\n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index 5704972d86af..f630f0818cbd 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -594,4 +594,16 @@ std::string Request::toString() const\n>  \treturn ss.str();\n>  }\n>  \n> +/**\n> + * \\brief Insert a text representation of a Request into an output stream\n> + * \\param[in] out The output stream\n> + * \\param[in] r The Request\n> + * \\return The output stream \\a out\n> + */\n> +std::ostream &operator<<(std::ostream &out, const Request &r)\n> +{\n> +\tout << r.toString();\n> +\treturn out;\n\nRequest::toString() already uses an std::stringstream, it's thus better\ndo to this the other way around, move the implementation to operator<<()\nand implement toString() as a wrapper. See V4L2SubdeviceFormat for\ninstance.\n\n> +}\n> +\n>  } /* namespace libcamera */","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 25911BD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  3 Jun 2022 12:46:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6853065633;\n\tFri,  3 Jun 2022 14:46:52 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 86EF560105\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Jun 2022 14:46:50 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(lmontsouris-659-1-41-236.w92-154.abo.wanadoo.fr [92.154.76.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 16254E1A;\n\tFri,  3 Jun 2022 14:46:50 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1654260412;\n\tbh=R70YiTM/IENDEVwpF8ms0qUni6ryHcmeLTdvHdOEAqg=;\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=zRegl17QOuftfFo2vLjcnBuXurTG5fYiM+O5wpu9qGfAz3w5ZvsZnM0YzAYBrzCy7\n\tQVFU1+Cehiy1o77KAPexU5uGGdyhFM67CwGoXiOjDgHuHJ4jONMyYDV+goD3GVH1vO\n\tLEPKFu+DJ0DRYdt7wXft0GfV/TbADe0xZ+tIPoF1zRqfoRnTSAn84dObISvG1qxl42\n\tRKm2JPmZxrS+LB2OQlCjDKxCLsO3Nv+No+T5cqRi5DhqNKPmjnmrUMx8LLjqcLOoUI\n\tOsTyhtOQU1Y29kFhL0gEcDFMVFBNHvti74bQHA5gybIAhqiYlf/U2WO1RBwbEupa91\n\tMgHm4mN1waN4Q==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1654260410;\n\tbh=R70YiTM/IENDEVwpF8ms0qUni6ryHcmeLTdvHdOEAqg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=r/VyyEncrrp5+uikRIjhEG7G4vl6q/YiA41+98mJi4PD57bNhRkea7VHfdCUtjFV+\n\tXS5ikRIAte16vw+7uVkgijcHwGYTQgs1D49Q4LvUxas4bK8wZL8/Yxg5mSrwtmr1OU\n\t4poWuzAe4aVCC7ZEhthssTVbz9Ok0f7c+KZEs8cY="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"r/VyyEnc\"; dkim-atps=neutral","Date":"Fri, 3 Jun 2022 15:46:45 +0300","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YpoCtT9EU4USK6+i@pendragon.ideasonboard.com>","References":"<20220603093224.28579-1-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220603093224.28579-1-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","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":23308,"web_url":"https://patchwork.libcamera.org/comment/23308/","msgid":"<20220603161211.wyrhccp3jqisj4rs@uno.localdomain>","date":"2022-06-03T16:12:11","subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent\n\nOn Fri, Jun 03, 2022 at 03:46:45PM +0300, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Fri, Jun 03, 2022 at 11:32:24AM +0200, Jacopo Mondi via libcamera-devel wrote:\n> > With the recent addition of operator<<() to most libcamera core classes\n> > to replace usage of the toString() function, the Request class was left\n> > behind.\n> >\n> > Add operator<<() for the Request class.\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  include/libcamera/request.h |  3 +++\n> >  src/libcamera/request.cpp   | 12 ++++++++++++\n> >  2 files changed, 15 insertions(+)\n> >\n> > diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> > index 1eb537e9b09b..dffde1536cad 100644\n> > --- a/include/libcamera/request.h\n> > +++ b/include/libcamera/request.h\n> > @@ -9,6 +9,7 @@\n> >\n> >  #include <map>\n> >  #include <memory>\n> > +#include <ostream>\n> >  #include <stdint.h>\n> >  #include <string>\n> >  #include <unordered_set>\n> > @@ -75,4 +76,6 @@ private:\n> >  \tStatus status_;\n> >  };\n> >\n> > +std::ostream &operator<<(std::ostream &out, const Request &r);\n> > +\n> >  } /* namespace libcamera */\n> > diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> > index 5704972d86af..f630f0818cbd 100644\n> > --- a/src/libcamera/request.cpp\n> > +++ b/src/libcamera/request.cpp\n> > @@ -594,4 +594,16 @@ std::string Request::toString() const\n> >  \treturn ss.str();\n> >  }\n> >\n> > +/**\n> > + * \\brief Insert a text representation of a Request into an output stream\n> > + * \\param[in] out The output stream\n> > + * \\param[in] r The Request\n> > + * \\return The output stream \\a out\n> > + */\n> > +std::ostream &operator<<(std::ostream &out, const Request &r)\n> > +{\n> > +\tout << r.toString();\n> > +\treturn out;\n>\n> Request::toString() already uses an std::stringstream, it's thus better\n> do to this the other way around, move the implementation to operator<<()\n> and implement toString() as a wrapper. See V4L2SubdeviceFormat for\n> instance.\n>\n\nIf not that we need\n         r._d()->pending_.size()\nwhich is private.\n\nEither we expose the pendin buffers array (so far we only have\nRequest::Private::hasPendingBuffers()) or we keep it the way it is.\n\n> > +}\n> > +\n> >  } /* namespace libcamera */\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 D8882BD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  3 Jun 2022 16:12:15 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D77D765633;\n\tFri,  3 Jun 2022 18:12:14 +0200 (CEST)","from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::223])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D2C3060105\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Jun 2022 18:12:13 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 4390460002;\n\tFri,  3 Jun 2022 16:12:12 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1654272734;\n\tbh=x0FbXtwWlnIq8tzqUmTbSKpwzYMTraF5IaCQRSOC6Gw=;\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=UB6p7XQTzzDClA4UmLSlCAU1YZF6E6T1QLNzBB1+BLV1akk8ySjo+q5+z6pC2ig9I\n\tPhsMJlMywkTTEvz08+WNEs2aqCL2CUgvtl4lWt2qjoAcWAIeFZK/avDsOMuKZrxLKb\n\tlpvZwubhthzd+TrBw9j0cKK82adImaEF8AhvjCDoXp9ENtg6DIgT8SuJFVRMnd/wbD\n\tBW4sA27Ll2t602KqiqHrc7OMK+LIIY/7dfGocR1E7Tq/2QkbExa9Lv9NPn0AQTmdky\n\trNibQgKBcYQCXzNIjbEFAZAT0gNXL96+Nyb3zOFyZdnb/vEvTz4G9D4Rpi5HuBYx3/\n\t1Xevrd+657i4g==","Date":"Fri, 3 Jun 2022 18:12:11 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20220603161211.wyrhccp3jqisj4rs@uno.localdomain>","References":"<20220603093224.28579-1-jacopo@jmondi.org>\n\t<YpoCtT9EU4USK6+i@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<YpoCtT9EU4USK6+i@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","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>"}},{"id":23309,"web_url":"https://patchwork.libcamera.org/comment/23309/","msgid":"<Yppuzd6gBFXXrXlW@pendragon.ideasonboard.com>","date":"2022-06-03T20:27:57","subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Fri, Jun 03, 2022 at 06:12:11PM +0200, Jacopo Mondi wrote:\n> On Fri, Jun 03, 2022 at 03:46:45PM +0300, Laurent Pinchart wrote:\n> > On Fri, Jun 03, 2022 at 11:32:24AM +0200, Jacopo Mondi via libcamera-devel wrote:\n> > > With the recent addition of operator<<() to most libcamera core classes\n> > > to replace usage of the toString() function, the Request class was left\n> > > behind.\n> > >\n> > > Add operator<<() for the Request class.\n> > >\n> > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > ---\n> > >  include/libcamera/request.h |  3 +++\n> > >  src/libcamera/request.cpp   | 12 ++++++++++++\n> > >  2 files changed, 15 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> > > index 1eb537e9b09b..dffde1536cad 100644\n> > > --- a/include/libcamera/request.h\n> > > +++ b/include/libcamera/request.h\n> > > @@ -9,6 +9,7 @@\n> > >\n> > >  #include <map>\n> > >  #include <memory>\n> > > +#include <ostream>\n> > >  #include <stdint.h>\n> > >  #include <string>\n> > >  #include <unordered_set>\n> > > @@ -75,4 +76,6 @@ private:\n> > >  \tStatus status_;\n> > >  };\n> > >\n> > > +std::ostream &operator<<(std::ostream &out, const Request &r);\n> > > +\n> > >  } /* namespace libcamera */\n> > > diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> > > index 5704972d86af..f630f0818cbd 100644\n> > > --- a/src/libcamera/request.cpp\n> > > +++ b/src/libcamera/request.cpp\n> > > @@ -594,4 +594,16 @@ std::string Request::toString() const\n> > >  \treturn ss.str();\n> > >  }\n> > >\n> > > +/**\n> > > + * \\brief Insert a text representation of a Request into an output stream\n> > > + * \\param[in] out The output stream\n> > > + * \\param[in] r The Request\n> > > + * \\return The output stream \\a out\n> > > + */\n> > > +std::ostream &operator<<(std::ostream &out, const Request &r)\n> > > +{\n> > > +\tout << r.toString();\n> > > +\treturn out;\n> >\n> > Request::toString() already uses an std::stringstream, it's thus better\n> > do to this the other way around, move the implementation to operator<<()\n> > and implement toString() as a wrapper. See V4L2SubdeviceFormat for\n> > instance.\n> \n> If not that we need\n>          r._d()->pending_.size()\n> which is private.\n> \n> Either we expose the pendin buffers array (so far we only have\n> Request::Private::hasPendingBuffers()) or we keep it the way it is.\n\nYou can fix this by making the operator<<() function a friend of the\nRequest class. That's a very valid use case for a friend statement, as\noperator<<() is meant to operate on an instance of the Request class.\n\n> > > +}\n> > > +\n> > >  } /* namespace libcamera */","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 96DBCBD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  3 Jun 2022 20:28:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B6B6B6040E;\n\tFri,  3 Jun 2022 22:28:05 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 42F2460105\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Jun 2022 22:28:03 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(lmontsouris-659-1-41-236.w92-154.abo.wanadoo.fr [92.154.76.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CFF2110F6;\n\tFri,  3 Jun 2022 22:28:02 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1654288085;\n\tbh=uBawTRAoGPKmPNv0TX5j91dN7duqUJBsbL4nj9ROvL4=;\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=4gi1U7yILS5LV/mAm/zAinEiQ1x6P2geIz9wSOj2ETjaePrdiIbgcWyBPaMiECpc3\n\tzYqySCZGtVHfwsvPU+/MLt7/FmpDA0XQNUQjwCIDq2XQQn3livLXUvScR8Kzp2HBwP\n\t6EKKfdR5u/3mweLKdynWSFbyFG/HNqKHwiaaJeJ7gpfVFljMFi94y2YsjLKZ9mQ+PB\n\tjEly9NCPp/MuFnWFpNqdL10mgfNKJw209MFlqY3Jn57glnyneSsLz/b4djm+4aXqeH\n\tm1kVBFR9t25FJtp0uKNcqFpTG0Q1l4frnr6lGtfgeww72B82Vl6x3yd5sSaxTgEI5+\n\tEPqHNfRh/2WNQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1654288082;\n\tbh=uBawTRAoGPKmPNv0TX5j91dN7duqUJBsbL4nj9ROvL4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=KEEjyhzlkzT+FvLcDOEXrqyP9GqaYwlgEbRfSmGhYH649OhL9BzodI39NGqeFRVWg\n\ttWAeHGGrXrFJFdn+/2eCB1cMg73Uy5cogbuOm1eGUiHPTPc3jyCvQcWlwUefXUPCvf\n\tvQZeVyrFGJADT0U2cWVb8iFfoVos3NkyPmd/brrU="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"KEEjyhzl\"; dkim-atps=neutral","Date":"Fri, 3 Jun 2022 23:27:57 +0300","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<Yppuzd6gBFXXrXlW@pendragon.ideasonboard.com>","References":"<20220603093224.28579-1-jacopo@jmondi.org>\n\t<YpoCtT9EU4USK6+i@pendragon.ideasonboard.com>\n\t<20220603161211.wyrhccp3jqisj4rs@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220603161211.wyrhccp3jqisj4rs@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: request: Add operator<<()","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>"}}]