[{"id":25528,"web_url":"https://patchwork.libcamera.org/comment/25528/","msgid":"<20221024074009.GZ3874866@pyrite.rasen.tech>","date":"2022-10-24T07:40:09","subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","submitter":{"id":97,"url":"https://patchwork.libcamera.org/api/people/97/","name":"Nicolas Dufresne via libcamera-devel","email":"libcamera-devel@lists.libcamera.org"},"content":"On Mon, Oct 24, 2022 at 03:03:49AM +0300, Laurent Pinchart wrote:\n> libcamera prints stream role values in log messages. To be more\n> user-friendly, add a specialization of operator<<() to print the role\n> name as a string instead of a numerical value.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  include/libcamera/stream.h |  3 +++\n>  src/libcamera/stream.cpp   | 19 +++++++++++++++++++\n>  2 files changed, 22 insertions(+)\n> \n> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> index f0ae7e62e0a3..efec695ad317 100644\n> --- a/include/libcamera/stream.h\n> +++ b/include/libcamera/stream.h\n> @@ -9,6 +9,7 @@\n>  \n>  #include <map>\n>  #include <memory>\n> +#include <ostream>\n>  #include <string>\n>  #include <vector>\n>  \n> @@ -70,6 +71,8 @@ enum StreamRole {\n>  \n>  using StreamRoles = std::vector<StreamRole>;\n>  \n> +std::ostream &operator<<(std::ostream &out, StreamRole role);\n> +\n>  class Stream\n>  {\n>  public:\n> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> index 686e693bccba..67f308157fbf 100644\n> --- a/src/libcamera/stream.cpp\n> +++ b/src/libcamera/stream.cpp\n> @@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const\n>   * acceptable.\n>   */\n>  \n> +/**\n> + * \\brief Insert a text representation of a StreamRole into an output stream\n> + * \\param[in] out The output stream\n> + * \\param[in] role The StreamRole\n> + * \\return The output stream \\a out\n> + */\n> +std::ostream &operator<<(std::ostream &out, StreamRole role)\n> +{\n> +\tstatic constexpr std::array<const char *, 4> names{\n> +\t\t\"Raw\",\n> +\t\t\"StillCapture\",\n> +\t\t\"VideoRecording\",\n> +\t\t\"Viewfinder\",\n> +\t};\n> +\n> +\tout << names[static_cast<std::underlying_type_t<StreamRole>>(role)];\n> +\treturn out;\n> +}\n> +\n>  /**\n>   * \\typedef StreamRoles\n>   * \\brief A vector of StreamRole\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 43F0EBDB16\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 Oct 2022 07:40:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8E74462EEC;\n\tMon, 24 Oct 2022 09:40:18 +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 218D562EBC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 Oct 2022 09:40:17 +0200 (CEST)","from pyrite.rasen.tech (h175-177-042-159.catv02.itscom.jp\n\t[175.177.42.159])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0BC2E471;\n\tMon, 24 Oct 2022 09:40:14 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666597218;\n\tbh=SFRhmNpXut9kWnQHLTCgxIpbgV/pRiFAwQFGDR/vbHo=;\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=spVx3zgNaer0MSmnoUfqO23NONMZofEa3LoDg88/mlGs4Fuw9lC9lve7yrydQtoPf\n\tthYJUKre3KZudM6cCvgoxmDriFZ5fkotw5ZLv41jJ27qx2Ld+wkNodjp0RMSLXt7qq\n\tAj+sK/kfovtwUeYp3m8X1kS1hCejhambfy+UDdIIqHlGxIoNfj/xcoGT1e2sqya2sV\n\tE4u8InoKK7BRY7cPiUIm3aWnCfFkvr0wGUPhjL50+WX4aOX5TYU/KW8gAC0v4HQ0Q0\n\tlRPmvXILVS5/y40+Ae0M61bk+dd4MwGU6Vkg17vrB5C0BYP3mMOU1lhPy58b8c4paK\n\t5v8R6duh0Elag==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1666597216;\n\tbh=SFRhmNpXut9kWnQHLTCgxIpbgV/pRiFAwQFGDR/vbHo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cVc+19zqmzteGuw52U0ULMsE6xDIxc8mSfrwZ3737WVTbBJJ7uJyCA5jNEVZs/vhx\n\twz972zyfRovPxV/KswvnCle3xEHSX1BlcW+i0KsXD1mSgysQhGYE1X9sDRuC865wjs\n\teGUjsqAeeq0AzGt1Nz4vZInaJeDzssjrljEM9S0M="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"cVc+19zq\"; dkim-atps=neutral","Date":"Mon, 24 Oct 2022 16:40:09 +0900","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20221024074009.GZ3874866@pyrite.rasen.tech>","References":"<20221024000356.29521-1-laurent.pinchart@ideasonboard.com>\n\t<20221024000356.29521-7-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20221024000356.29521-7-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","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":"Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"paul.elder@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":25602,"web_url":"https://patchwork.libcamera.org/comment/25602/","msgid":"<20221026150703.khlir5f3ehm3n3am@uno.localdomain>","date":"2022-10-26T15:07:03","subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent\n\nOn Mon, Oct 24, 2022 at 03:03:49AM +0300, Laurent Pinchart via libcamera-devel wrote:\n> libcamera prints stream role values in log messages. To be more\n> user-friendly, add a specialization of operator<<() to print the role\n> name as a string instead of a numerical value.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  include/libcamera/stream.h |  3 +++\n>  src/libcamera/stream.cpp   | 19 +++++++++++++++++++\n>  2 files changed, 22 insertions(+)\n>\n> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> index f0ae7e62e0a3..efec695ad317 100644\n> --- a/include/libcamera/stream.h\n> +++ b/include/libcamera/stream.h\n> @@ -9,6 +9,7 @@\n>\n>  #include <map>\n>  #include <memory>\n> +#include <ostream>\n>  #include <string>\n>  #include <vector>\n>\n> @@ -70,6 +71,8 @@ enum StreamRole {\n>\n>  using StreamRoles = std::vector<StreamRole>;\n>\n> +std::ostream &operator<<(std::ostream &out, StreamRole role);\n> +\n>  class Stream\n>  {\n>  public:\n> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> index 686e693bccba..67f308157fbf 100644\n> --- a/src/libcamera/stream.cpp\n> +++ b/src/libcamera/stream.cpp\n> @@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const\n>   * acceptable.\n>   */\n>\n> +/**\n> + * \\brief Insert a text representation of a StreamRole into an output stream\n> + * \\param[in] out The output stream\n> + * \\param[in] role The StreamRole\n> + * \\return The output stream \\a out\n> + */\n> +std::ostream &operator<<(std::ostream &out, StreamRole role)\n> +{\n> +\tstatic constexpr std::array<const char *, 4> names{\n> +\t\t\"Raw\",\n> +\t\t\"StillCapture\",\n> +\t\t\"VideoRecording\",\n> +\t\t\"Viewfinder\",\n> +\t};\n\nMy only concern is about the enum and the list of names going out of\nsync. A map might help ?\n\n> +\n> +\tout << names[static_cast<std::underlying_type_t<StreamRole>>(role)];\n> +\treturn out;\n> +}\n> +\n>  /**\n>   * \\typedef StreamRoles\n>   * \\brief A vector of StreamRole\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 204FEBDB16\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Oct 2022 15:07:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7EDCB62F58;\n\tWed, 26 Oct 2022 17:07:06 +0200 (CEST)","from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8114661F4B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Oct 2022 17:07:05 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id E7222FF818;\n\tWed, 26 Oct 2022 15:07:04 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666796826;\n\tbh=jxFFwPq4+TFbNIPx8oRKtcewMh1tJw24uBRdzXnqR5c=;\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=yX5qvULXZNTm88/NZdi2qgWgXl4H6p8rEqHljZuxzLb7mbHH0vB+17PqVsBwP2m7h\n\tmX4OPYPrjBFN7TgWjBBWoB1CmbYjv0ESuAGfsYdsPQY8J+fxcelTwuWgmvJ4UeKda6\n\tdwYnbHzp5cEXjIBpAqVBdHksDHzhJ3YRJoMkTuf3QbOzTofK2wB9DFgbltlqw2OFsT\n\tXeHTR4dR8Egc/8X7Nnivsih9BWffuMt5I2XaDwcCiNbs8n1yXuBG8MCf6/Togkh1J1\n\tQUAYYIzBlCxPIq8F4kPK3GblH6Dy1OZaqeCZOYN8dXRnrTFVrsN0Lc7GAom0KsUuHP\n\twhdATVS9gqzSw==","Date":"Wed, 26 Oct 2022 17:07:03 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20221026150703.khlir5f3ehm3n3am@uno.localdomain>","References":"<20221024000356.29521-1-laurent.pinchart@ideasonboard.com>\n\t<20221024000356.29521-7-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221024000356.29521-7-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","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":25685,"web_url":"https://patchwork.libcamera.org/comment/25685/","msgid":"<Y16yLfcSr1zverM9@pendragon.ideasonboard.com>","date":"2022-10-30T17:19:41","subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Wed, Oct 26, 2022 at 05:07:03PM +0200, Jacopo Mondi wrote:\n> On Mon, Oct 24, 2022 at 03:03:49AM +0300, Laurent Pinchart via libcamera-devel wrote:\n> > libcamera prints stream role values in log messages. To be more\n> > user-friendly, add a specialization of operator<<() to print the role\n> > name as a string instead of a numerical value.\n> >\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> > ---\n> >  include/libcamera/stream.h |  3 +++\n> >  src/libcamera/stream.cpp   | 19 +++++++++++++++++++\n> >  2 files changed, 22 insertions(+)\n> >\n> > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > index f0ae7e62e0a3..efec695ad317 100644\n> > --- a/include/libcamera/stream.h\n> > +++ b/include/libcamera/stream.h\n> > @@ -9,6 +9,7 @@\n> >\n> >  #include <map>\n> >  #include <memory>\n> > +#include <ostream>\n> >  #include <string>\n> >  #include <vector>\n> >\n> > @@ -70,6 +71,8 @@ enum StreamRole {\n> >\n> >  using StreamRoles = std::vector<StreamRole>;\n> >\n> > +std::ostream &operator<<(std::ostream &out, StreamRole role);\n> > +\n> >  class Stream\n> >  {\n> >  public:\n> > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > index 686e693bccba..67f308157fbf 100644\n> > --- a/src/libcamera/stream.cpp\n> > +++ b/src/libcamera/stream.cpp\n> > @@ -417,6 +417,25 @@ std::string StreamConfiguration::toString() const\n> >   * acceptable.\n> >   */\n> >\n> > +/**\n> > + * \\brief Insert a text representation of a StreamRole into an output stream\n> > + * \\param[in] out The output stream\n> > + * \\param[in] role The StreamRole\n> > + * \\return The output stream \\a out\n> > + */\n> > +std::ostream &operator<<(std::ostream &out, StreamRole role)\n> > +{\n> > +\tstatic constexpr std::array<const char *, 4> names{\n> > +\t\t\"Raw\",\n> > +\t\t\"StillCapture\",\n> > +\t\t\"VideoRecording\",\n> > +\t\t\"Viewfinder\",\n> > +\t};\n> \n> My only concern is about the enum and the list of names going out of\n> sync. A map might help ?\n\nI'm not very concerned by the risk of reordering values, I don't think\nwe will do that. There is a risk of forgetting to update this code when\nadding values though, but I haven't found a goog way to catch this at\ncompilation time.\n\n> > +\n> > +\tout << names[static_cast<std::underlying_type_t<StreamRole>>(role)];\n> > +\treturn out;\n> > +}\n> > +\n> >  /**\n> >   * \\typedef StreamRoles\n> >   * \\brief A vector of StreamRole","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 14AC1BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 30 Oct 2022 17:20:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5F99063022;\n\tSun, 30 Oct 2022 18:20:11 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2C95B61F47\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 30 Oct 2022 18:20:10 +0100 (CET)","from pendragon.ideasonboard.com (85-76-1-64-nat.elisa-mobile.fi\n\t[85.76.1.64])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 479BA7C5;\n\tSun, 30 Oct 2022 18:20:07 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1667150411;\n\tbh=ju1inFnS6JmM9Kr6nN7DRMljBRQQgibVAsP8TBjnbRs=;\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=pL3LbOQy/SIT7KLvP4Qdz9ifrclfWvUkoSwp/5Un0BR/sijbbUugcQPxy42kqRysW\n\tUdLR0cUY7d7V3b95duz0rUDvl2jiqejkIbfplrZScW/o7phIKwo3kTRFhs0OmTeUFv\n\tHS+HgLsksVAsLelGPqju6LzJORYo0wTzjSP/OhGagZGEtGjcvOPuUjT+hBpoohflQs\n\t0110vw5aSRIVCpXlUVdPhLPg89xyZIotZZVpgY7REMurrYO977Lug9oqP7fK2jjizv\n\tbNSvGYPjTtyPEW+DPJgQ4aNG2XK8LTQKxIFf3+gC2nOUO1Iyh2ZwzoIKT6ViJ08z+J\n\tMIyoL9UnHWxXw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1667150409;\n\tbh=ju1inFnS6JmM9Kr6nN7DRMljBRQQgibVAsP8TBjnbRs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=jVqCL6lWi+mpQV1IASXU/ginqfn714sUJALkiVXHSvLC2zqxmIbygqEjqpZaimpOG\n\tfOOIr4YpQFRFauatLGfXfIfBtEeuhhuoIyIV0tu7kEykUOWtSQretGucQ7o0brydt5\n\tgUjbmFPZk8VsLQNx8pLQOjli8vtglKmG2sQJv920="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"jVqCL6lW\"; dkim-atps=neutral","Date":"Sun, 30 Oct 2022 19:19:41 +0200","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<Y16yLfcSr1zverM9@pendragon.ideasonboard.com>","References":"<20221024000356.29521-1-laurent.pinchart@ideasonboard.com>\n\t<20221024000356.29521-7-laurent.pinchart@ideasonboard.com>\n\t<20221026150703.khlir5f3ehm3n3am@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20221026150703.khlir5f3ehm3n3am@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH v3 06/13] libcamera: stream: Add\n\toperator<<() to print StreamRole as a string","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>"}}]