[{"id":12810,"web_url":"https://patchwork.libcamera.org/comment/12810/","msgid":"<3821d4f7-9f8b-701b-3810-4bc7440ce174@uajain.com>","date":"2020-09-28T12:57:29","subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","submitter":{"id":1,"url":"https://patchwork.libcamera.org/api/people/1/","name":"Umang Jain","email":"email@uajain.com"},"content":"Hi Niklas,\n\nOn 9/25/20 8:37 PM, Niklas Söderlund wrote:\n> Instead of only printing the camera ID which is not intended for humans\n> to read and parse create a more user friendly string when printing\n> camera names. The ID is still printed as it is one option used to select\n> camera using the --camera option.\n>\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nLGTM.👍\nReviewed-by: Umang Jain <email@uajain.com>\n> ---\n> * Changes since v4\n> - Make cameraName() member ofr CamApp.\n>\n> * Changes since v1\n> - Only print user-friendly names when listing cameras.\n> - Update format of user-friendly names printed.\n> - Update commit message.\n> ---\n>   src/cam/main.cpp | 31 ++++++++++++++++++++++++++++++-\n>   1 file changed, 30 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index 244720b491f5c462..ed56d06c9d3386b9 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -45,6 +45,8 @@ private:\n>   \tint infoConfiguration();\n>   \tint run();\n>   \n> +\tstd::string cameraName(const Camera *camera);\n> +\n>   \tstatic CamApp *app_;\n>   \tOptionsParser::Options options_;\n>   \tCameraManager *cm_;\n> @@ -340,7 +342,7 @@ int CamApp::run()\n>   \n>   \t\tunsigned int index = 1;\n>   \t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras()) {\n> -\t\t\tstd::cout << index << \": \" << cam->id() << std::endl;\n> +\t\t\tstd::cout << index << \": \" << cameraName(cam.get()) << std::endl;\n>   \t\t\tindex++;\n>   \t\t}\n>   \t}\n> @@ -378,6 +380,33 @@ int CamApp::run()\n>   \treturn 0;\n>   }\n>   \n> +std::string CamApp::cameraName(const Camera *camera)\n> +{\n> +\tconst ControlList &props = camera->properties();\n> +\tstd::string name;\n> +\n> +\tif (props.contains(properties::Location)) {\n> +\t\tswitch (props.get(properties::Location)) {\n> +\t\tcase properties::CameraLocationFront:\n> +\t\t\tname = \"Internal front camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationBack:\n> +\t\t\tname = \"Internal back camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationExternal:\n> +\t\t\tname = \"External camera\";\n> +\t\t\tbreak;\n> +\t\t}\n> +\t}\n> +\n> +\tif (props.contains(properties::Model))\n> +\t\tname += \" \" + props.get(properties::Model);\n> +\n> +\tname += \" (\" + camera->id() + \")\";\n> +\n> +\treturn name;\n> +}\n> +\n>   void signalHandler([[maybe_unused]] int signal)\n>   {\n>   \tstd::cout << \"Exiting\" << std::endl;","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 9C9B5C3B5C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Sep 2020 12:57:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0616A60BD7;\n\tMon, 28 Sep 2020 14:57:34 +0200 (CEST)","from mail.uajain.com (static.126.159.217.95.clients.your-server.de\n\t[95.217.159.126])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0F48860364\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Sep 2020 14:57:32 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=uajain.com header.i=@uajain.com\n\theader.b=\"pNszIkr7\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=uajain.com; s=mail;\n\tt=1601297852; bh=rM7tkD4A5UfwtMazz20/9HuM+RlPGe+yU5K7ExUUNJM=;\n\th=Subject:To:References:From:In-Reply-To;\n\tb=pNszIkr75epjjLFxlxFubJCopu2egmIM38aw3uKWS0tWJcJtNUuXCf4u6lBlmYwdJ\n\txjaGRx5/4nKopS1K1a/Xb/UdF8uKvOXsOILd7Ih3d8DxfHp49NZkirXQ1YCJLhJVjH\n\tq1TvkpMxW3s+EsQgco4SR1XwXoN8C6GjDtAo2K61hxdCVXs9KUS2HPcX9UHr7hZdid\n\tAqGfKqSKKl7S4oYApEtfQjy2v0V+BC50ROQh9JB2XrwrZSF13Mpvj5s/GRhI0AxEU/\n\tkUFZV5C7xCI1ah3HakfrkhDXOGicy8g/i1IDxNAozHoiXcY3wpvuT0oWz4Cu8qHCKn\n\t8CC2cj+cwMP3g==","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20200925150743.1822226-1-niklas.soderlund@ragnatech.se>\n\t<20200925150743.1822226-7-niklas.soderlund@ragnatech.se>","From":"Umang Jain <email@uajain.com>","Message-ID":"<3821d4f7-9f8b-701b-3810-4bc7440ce174@uajain.com>","Date":"Mon, 28 Sep 2020 18:27:29 +0530","Mime-Version":"1.0","In-Reply-To":"<20200925150743.1822226-7-niklas.soderlund@ragnatech.se>","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","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>","Content-Type":"multipart/mixed;\n\tboundary=\"===============2273347352341182083==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12815,"web_url":"https://patchwork.libcamera.org/comment/12815/","msgid":"<20200928171139.GH23539@pendragon.ideasonboard.com>","date":"2020-09-28T17:11:39","subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Fri, Sep 25, 2020 at 05:07:42PM +0200, Niklas Söderlund wrote:\n> Instead of only printing the camera ID which is not intended for humans\n> to read and parse create a more user friendly string when printing\n> camera names. The ID is still printed as it is one option used to select\n> camera using the --camera option.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n> * Changes since v4\n> - Make cameraName() member ofr CamApp.\n> \n> * Changes since v1\n> - Only print user-friendly names when listing cameras.\n> - Update format of user-friendly names printed.\n> - Update commit message.\n> ---\n>  src/cam/main.cpp | 31 ++++++++++++++++++++++++++++++-\n>  1 file changed, 30 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index 244720b491f5c462..ed56d06c9d3386b9 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -45,6 +45,8 @@ private:\n>  \tint infoConfiguration();\n>  \tint run();\n>  \n> +\tstd::string cameraName(const Camera *camera);\n> +\n>  \tstatic CamApp *app_;\n>  \tOptionsParser::Options options_;\n>  \tCameraManager *cm_;\n> @@ -340,7 +342,7 @@ int CamApp::run()\n>  \n>  \t\tunsigned int index = 1;\n>  \t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras()) {\n> -\t\t\tstd::cout << index << \": \" << cam->id() << std::endl;\n> +\t\t\tstd::cout << index << \": \" << cameraName(cam.get()) << std::endl;\n>  \t\t\tindex++;\n>  \t\t}\n>  \t}\n> @@ -378,6 +380,33 @@ int CamApp::run()\n>  \treturn 0;\n>  }\n>  \n> +std::string CamApp::cameraName(const Camera *camera)\n> +{\n> +\tconst ControlList &props = camera->properties();\n> +\tstd::string name;\n> +\n> +\tif (props.contains(properties::Location)) {\n\nAs Location is mandatory, I would consider this to be a bug in\nlibcamera. Do we need to handle it explicitly ?\n\n> +\t\tswitch (props.get(properties::Location)) {\n> +\t\tcase properties::CameraLocationFront:\n> +\t\t\tname = \"Internal front camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationBack:\n> +\t\t\tname = \"Internal back camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationExternal:\n> +\t\t\tname = \"External camera\";\n> +\t\t\tbreak;\n> +\t\t}\n> +\t}\n> +\n> +\tif (props.contains(properties::Model))\n> +\t\tname += \" \" + props.get(properties::Model);\n\nFor USB cameras, ideally I'd like to see something like\n\n\"External USB camera 'Logitech StreamCam' (on port 3)\"\n\nWe don't have the infrastructure to know it's a USB camera yet, or to\nknow the port number, so we can leave that out of now. For internal\ncameras, however, the sensor model should at best be printed under\nparentheses (or in any other way that makes it apparent it's a detail),\nif at all. As cam is more developer-oriented printing the camera sensor\nmodel is probably useful, but if we consider it as an example\napplication, from an end-user point of view, the sensor model isn't very\nrelevant.\n\n> +\n> +\tname += \" (\" + camera->id() + \")\";\n> +\n> +\treturn name;\n> +}\n> +\n>  void signalHandler([[maybe_unused]] int signal)\n>  {\n>  \tstd::cout << \"Exiting\" << std::endl;","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 B03E7C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Sep 2020 17:12:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4621C603ED;\n\tMon, 28 Sep 2020 19:12:17 +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 0B55F60366\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Sep 2020 19:12:15 +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 5F16854E;\n\tMon, 28 Sep 2020 19:12:14 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"SzUWlG4o\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1601313134;\n\tbh=16PnYojx5zCeAV0kIyedmODLiwe5ema5yoh9wjmkFWQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=SzUWlG4ofLMHEAdq2uzEyfdbL3/kjtJc3xGlyytr2mxP6Qrb3lUr/pLQ4LrGf2K11\n\tTQcP5sQMQctdSp/ZaHCZY1OtRpXFKYbskedNqnD9qPvuGmT0KtP0Hi3FmAu0SKxsqe\n\tSMxHIRwqRXV5doevAgpsl2wjk3Am1waLOCvEp8Jw=","Date":"Mon, 28 Sep 2020 20:11:39 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200928171139.GH23539@pendragon.ideasonboard.com>","References":"<20200925150743.1822226-1-niklas.soderlund@ragnatech.se>\n\t<20200925150743.1822226-7-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200925150743.1822226-7-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12876,"web_url":"https://patchwork.libcamera.org/comment/12876/","msgid":"<20200929141317.GB1271798@oden.dyn.berto.se>","date":"2020-09-29T14:13:17","subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your feedback.\n\nOn 2020-09-28 20:11:39 +0300, Laurent Pinchart wrote:\n> Hi Niklas,\n> \n> Thank you for the patch.\n> \n> On Fri, Sep 25, 2020 at 05:07:42PM +0200, Niklas Söderlund wrote:\n> > Instead of only printing the camera ID which is not intended for humans\n> > to read and parse create a more user friendly string when printing\n> > camera names. The ID is still printed as it is one option used to select\n> > camera using the --camera option.\n> > \n> > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > ---\n> > * Changes since v4\n> > - Make cameraName() member ofr CamApp.\n> > \n> > * Changes since v1\n> > - Only print user-friendly names when listing cameras.\n> > - Update format of user-friendly names printed.\n> > - Update commit message.\n> > ---\n> >  src/cam/main.cpp | 31 ++++++++++++++++++++++++++++++-\n> >  1 file changed, 30 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> > index 244720b491f5c462..ed56d06c9d3386b9 100644\n> > --- a/src/cam/main.cpp\n> > +++ b/src/cam/main.cpp\n> > @@ -45,6 +45,8 @@ private:\n> >  \tint infoConfiguration();\n> >  \tint run();\n> >  \n> > +\tstd::string cameraName(const Camera *camera);\n> > +\n> >  \tstatic CamApp *app_;\n> >  \tOptionsParser::Options options_;\n> >  \tCameraManager *cm_;\n> > @@ -340,7 +342,7 @@ int CamApp::run()\n> >  \n> >  \t\tunsigned int index = 1;\n> >  \t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras()) {\n> > -\t\t\tstd::cout << index << \": \" << cam->id() << std::endl;\n> > +\t\t\tstd::cout << index << \": \" << cameraName(cam.get()) << std::endl;\n> >  \t\t\tindex++;\n> >  \t\t}\n> >  \t}\n> > @@ -378,6 +380,33 @@ int CamApp::run()\n> >  \treturn 0;\n> >  }\n> >  \n> > +std::string CamApp::cameraName(const Camera *camera)\n> > +{\n> > +\tconst ControlList &props = camera->properties();\n> > +\tstd::string name;\n> > +\n> > +\tif (props.contains(properties::Location)) {\n> \n> As Location is mandatory, I would consider this to be a bug in\n> libcamera. Do we need to handle it explicitly ?\n\nThis is leftover from when it was not, I will drop this in next version.\n\n\n> \n> > +\t\tswitch (props.get(properties::Location)) {\n> > +\t\tcase properties::CameraLocationFront:\n> > +\t\t\tname = \"Internal front camera\";\n> > +\t\t\tbreak;\n> > +\t\tcase properties::CameraLocationBack:\n> > +\t\t\tname = \"Internal back camera\";\n> > +\t\t\tbreak;\n> > +\t\tcase properties::CameraLocationExternal:\n> > +\t\t\tname = \"External camera\";\n> > +\t\t\tbreak;\n> > +\t\t}\n> > +\t}\n> > +\n> > +\tif (props.contains(properties::Model))\n> > +\t\tname += \" \" + props.get(properties::Model);\n> \n> For USB cameras, ideally I'd like to see something like\n> \n> \"External USB camera 'Logitech StreamCam' (on port 3)\"\n\nI see what you want to to, I find the sensor name the most use-full part \n:-) Mostly because I want a quick way to know which kernel driver to \npoke in to be able to fine someone else to blame when my stuff is not \nworking, never works tho it's always my fault in the end ;-P\n\nI have no strong opinion on this and was even considering dropping this \npatch for next version. You present something that can already partly be \ndone so I will try one more time :-)\n\n\tconst ControlList &props = camera->properties();\n        std::string name;\n\n        switch (props.get(properties::Location)) {\n        case properties::CameraLocationFront:\n                name = \"Internal front camera\";\n                break;\n        case properties::CameraLocationBack:\n                name = \"Internal back camera\";\n                break;\n        case properties::CameraLocationExternal:\n                name = \"External camera\";\n                if (props.contains(properties::Model))\n                        name += \" '\" + props.get(properties::Model) + \"'\";\n                break;\n        }\n\n        name += \" (\" + camera->id() + \")\";\n\n\treturn name;\n\n> \n> We don't have the infrastructure to know it's a USB camera yet, or to\n> know the port number, so we can leave that out of now. For internal\n> cameras, however, the sensor model should at best be printed under\n> parentheses (or in any other way that makes it apparent it's a detail),\n> if at all. As cam is more developer-oriented printing the camera sensor\n> model is probably useful, but if we consider it as an example\n> application, from an end-user point of view, the sensor model isn't very\n> relevant.\n> \n> > +\n> > +\tname += \" (\" + camera->id() + \")\";\n> > +\n> > +\treturn name;\n> > +}\n> > +\n> >  void signalHandler([[maybe_unused]] int signal)\n> >  {\n> >  \tstd::cout << \"Exiting\" << std::endl;\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 ED98BC3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 29 Sep 2020 14:13:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 768B2621C7;\n\tTue, 29 Sep 2020 16:13:20 +0200 (CEST)","from mail-lf1-x144.google.com (mail-lf1-x144.google.com\n\t[IPv6:2a00:1450:4864:20::144])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C854160365\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 29 Sep 2020 16:13:18 +0200 (CEST)","by mail-lf1-x144.google.com with SMTP id u8so5724874lff.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 29 Sep 2020 07:13:18 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\t193sm3216406lfb.212.2020.09.29.07.13.17\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 29 Sep 2020 07:13:17 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"A27J2HoQ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=cl3v/o9U96f46HbnMyvu+UeaeNViQ9WWieMO1sMctNc=;\n\tb=A27J2HoQcXnpNmZr0AwlPCDZcW32z23j6clWeXWnzfO95Jwdoy9Xvf2ME7ewF2xG04\n\t4kxFiam2cFRN15dq85CWMIEaVD16RzBTmtwTMHJ3mkxJ+hwt8qGlaDgMjCDdxSGrLI8S\n\tTGo1ndIIHFR094aslvj84nabILUYu+204f7SJaz7sanQuhZvuOnRhobZwHAE1ok94Jus\n\toqX+PdoXRjYPO5TImjcKD80HGWdaBryRnZo6fAoZYg2OsbNZeCRxBhiuAWyOcztx+k04\n\tijOz4ZsC5YkVxfIpf34U6ZQYT1dIuXhbG6BYMW1lcpxLSBPTkwEmW2vQUWHaNgYa6osK\n\tGnmQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=cl3v/o9U96f46HbnMyvu+UeaeNViQ9WWieMO1sMctNc=;\n\tb=DFqYRH0ibJxVvkxPegkagofe8udWhkc6p/ftQrncChq2ovIl9CzVUpy5U5G34NFuy1\n\teN8kOG0OJTGObm9DUKFdrqmY7dLMsD8xL9bcBpfsYiapnKlRrnb4dMfFYIbhhfb27sIp\n\t2ChiqXY8OYmo9SNRbrELPgOBMWkswBWv7Ci+JXo9u/ZyMh9vjEPFxlSQzxBldCo7F8u8\n\txiunnL4iw35YoCFw62J4dWh3UEz3+2o9CgJwaYeH24mB0g+t1t7ELjd+rvJl7SxRxuEA\n\torD1P2U7vOpbLdzTgbofBfhFB3JdOdU5U7k2KweRz944J0txwIAkWsTLItCtR7pbleEq\n\txDKQ==","X-Gm-Message-State":"AOAM532s5jESMQM1LcL2Lxmxoc7KhP7uQhlczpNqhmKXdc2g2UTqo9+C\n\tYKXARd64HIcYB7Ik1ZXB8cpBcFUf8NVypg==","X-Google-Smtp-Source":"ABdhPJww232BFc70dXsaAUWcijS5nquuo5y3XMk42nENPTR+PrhOZmn1KRBM6CGrFQ8qnCFJLBlkzg==","X-Received":"by 2002:ac2:4acf:: with SMTP id\n\tm15mr1189757lfp.261.1601388798159; \n\tTue, 29 Sep 2020 07:13:18 -0700 (PDT)","Date":"Tue, 29 Sep 2020 16:13:17 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20200929141317.GB1271798@oden.dyn.berto.se>","References":"<20200925150743.1822226-1-niklas.soderlund@ragnatech.se>\n\t<20200925150743.1822226-7-niklas.soderlund@ragnatech.se>\n\t<20200928171139.GH23539@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200928171139.GH23539@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v5 6/7] cam: Print user-friendly\n\tcamera names","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]