[{"id":1901,"web_url":"https://patchwork.libcamera.org/comment/1901/","msgid":"<20190618074033.2eaypydvhafmgggt@uno.localdomain>","date":"2019-06-18T07:40:33","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Mon, Jun 17, 2019 at 01:09:10PM +0300, Laurent Pinchart wrote:\n> As camera names can be cumbersome to type, selection of cameras by index\n> from a list can be useful. Print the list of detected cameras with an\n> index for each item, and interpret the camera name as an index if it is\n> a numerical value in the range from 1 to the number of cameras.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nand tested on IPU3 Soraka.\n\nThanks\n   j\n> ---\n>  src/cam/main.cpp | 17 ++++++++++++++---\n>  1 file changed, 14 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index f03a9faf87fa..0e7610b1befd 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n>  \t}\n>\n>  \tif (options_.isSet(OptCamera)) {\n> -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> +\t\tconst std::string &cameraName = options_[OptCamera];\n> +\t\tchar *endptr;\n> +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> +\t\telse\n> +\t\t\tcamera_ = cm_->get(cameraName);\n> +\n>  \t\tif (!camera_) {\n>  \t\t\tstd::cout << \"Camera \"\n>  \t\t\t\t  << std::string(options_[OptCamera])\n> @@ -172,8 +179,12 @@ int CamApp::run()\n>  {\n>  \tif (options_.isSet(OptList)) {\n>  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> +\t\t\tindex++;\n> +\t\t}\n>  \t}\n>\n>  \tif (options_.isSet(OptCapture)) {\n> --\n> Regards,\n>\n> Laurent Pinchart\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B50FA61995\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 09:39:20 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 3F1E0FF80B;\n\tTue, 18 Jun 2019 07:39:20 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","Date":"Tue, 18 Jun 2019 09:40:33 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190618074033.2eaypydvhafmgggt@uno.localdomain>","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"47wkqtcpoeaeuzzj\"","Content-Disposition":"inline","In-Reply-To":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 07:39:20 -0000"}},{"id":1902,"web_url":"https://patchwork.libcamera.org/comment/1902/","msgid":"<20190618074442.GC28646@bigcity.dyn.berto.se>","date":"2019-06-18T07:44:42","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","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 work.\n\nOn 2019-06-17 13:09:10 +0300, Laurent Pinchart wrote:\n> As camera names can be cumbersome to type, selection of cameras by index\n> from a list can be useful. Print the list of detected cameras with an\n> index for each item, and interpret the camera name as an index if it is\n> a numerical value in the range from 1 to the number of cameras.\n\nI think you should also update the usage information for --camera to \nindicate both camera name and index can be used to select a camera.\n\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/cam/main.cpp | 17 ++++++++++++++---\n>  1 file changed, 14 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index f03a9faf87fa..0e7610b1befd 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n>  \t}\n>  \n>  \tif (options_.isSet(OptCamera)) {\n> -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> +\t\tconst std::string &cameraName = options_[OptCamera];\n> +\t\tchar *endptr;\n> +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> +\t\telse\n> +\t\t\tcamera_ = cm_->get(cameraName);\n> +\n>  \t\tif (!camera_) {\n>  \t\t\tstd::cout << \"Camera \"\n>  \t\t\t\t  << std::string(options_[OptCamera])\n> @@ -172,8 +179,12 @@ int CamApp::run()\n>  {\n>  \tif (options_.isSet(OptList)) {\n>  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> +\t\t\tindex++;\n> +\t\t}\n>  \t}\n>  \n>  \tif (options_.isSet(OptCapture)) {\n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["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 6E418619A4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 09:44:44 +0200 (CEST)","by mail-lf1-x144.google.com with SMTP id p24so8487544lfo.6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 00:44:44 -0700 (PDT)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tm17sm1211393lfb.9.2019.06.18.00.44.43\n\t(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);\n\tTue, 18 Jun 2019 00:44:43 -0700 (PDT)"],"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\t:user-agent; bh=PyV0jIzhrg8DMCT4G3OwZ7RvfYMaHo4rmkLN9+o2wa0=;\n\tb=pjUm63qx9D0STZhEWYD8HqUcEIzeGK1pST5Rm11Oid/piWC5oocKj74ZniH5d47+s3\n\tMSzsJCtofXgu0nDS07CgT8UXo6VATv3o/UjCfhol3yZyu4rdytQa3hvOOtshnGtshWhw\n\tOZJ9rdf6j/BM3CrtlXs3IgY4E8Et2Jcoa2JGa3vun19Bgwnl/+dCyKf1bQKc4sZXixNK\n\tGLBi3BCsCg1rkRRDyRZf1y/f5GdT+NjycXf5hOBIAqZi5iw2h4r4TvIBeinR6i+3GRXd\n\ti13xl9JMmo6I+cZ1SPRJuYkSD1yMOtpV8sPU3PaFwRY2LmBhrP077mPuVpmZCqbrhnfY\n\tidgQ==","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:user-agent;\n\tbh=PyV0jIzhrg8DMCT4G3OwZ7RvfYMaHo4rmkLN9+o2wa0=;\n\tb=k3MfLR/Yz8S/gXPG/OF0zU7vaBqWQgzZ5BUtm8qcj+wJLzHvYf2ZBABoTaBHADjFsr\n\t/oPM90ZA6sKYd7YwYZzvNiaVF4J3mIGyYPAMv2KHb7fafyKCCMM6h0CkG3QJB36crHvs\n\t3BWdJOTnU0QFw//WH6abQ9hjO6MzS4lyljV6mGh6LAVonNkJbc5UkbhQ9XPhZkUD17y9\n\tWmvvMzDnGL0lokGcKFkCE4kewOf4YxnWZ6KIjPRTh9Q6M6iylQswB1zoYrzM358/3mr8\n\t4mV9RUvtDlP1FD+pW6Ne6mBFYYILQJSWPVVVlUae9LZpOiS0XqzXv2kdqEWb3zM8fnNU\n\toyfw==","X-Gm-Message-State":"APjAAAWIdrIAuLinp6Zd+5HN3rAaOb6ucQHkK7HlXVVK0it17owOUwms\n\tr+UT6sSLYwEPbCxOCM1P8Jco/g==","X-Google-Smtp-Source":"APXvYqx3/uqSFpWL2vCeXKtpoR4Y3fUzLzSKh8Q90C73Uk7iUkpYPvsM5Yw3DBtz/7MzPVaHnxu5UA==","X-Received":"by 2002:a19:4c05:: with SMTP id z5mr48409803lfa.5.1560843883622; \n\tTue, 18 Jun 2019 00:44:43 -0700 (PDT)","Date":"Tue, 18 Jun 2019 09:44:42 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190618074442.GC28646@bigcity.dyn.berto.se>","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","User-Agent":"Mutt/1.12.0 (2019-05-25)","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 07:44:44 -0000"}},{"id":1903,"web_url":"https://patchwork.libcamera.org/comment/1903/","msgid":"<20190618183827.GC23556@pendragon.ideasonboard.com>","date":"2019-06-18T18:40:39","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nOn Tue, Jun 18, 2019 at 09:44:42AM +0200, Niklas Söderlund wrote:\n> On 2019-06-17 13:09:10 +0300, Laurent Pinchart wrote:\n> > As camera names can be cumbersome to type, selection of cameras by index\n> > from a list can be useful. Print the list of detected cameras with an\n> > index for each item, and interpret the camera name as an index if it is\n> > a numerical value in the range from 1 to the number of cameras.\n> \n> I think you should also update the usage information for --camera to \n> indicate both camera name and index can be used to select a camera.\n\nGood point ! Would the following be enough ?\n\n        parser.addOption(OptCamera, OptionString,\n-                        \"Specify which camera to operate on\", \"camera\",\n+                        \"Specify which camera to operate on, by name or by index\", \"camera\",\n                         ArgumentRequired, \"camera\");\n\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  src/cam/main.cpp | 17 ++++++++++++++---\n> >  1 file changed, 14 insertions(+), 3 deletions(-)\n> > \n> > diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> > index f03a9faf87fa..0e7610b1befd 100644\n> > --- a/src/cam/main.cpp\n> > +++ b/src/cam/main.cpp\n> > @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n> >  \t}\n> >  \n> >  \tif (options_.isSet(OptCamera)) {\n> > -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> > +\t\tconst std::string &cameraName = options_[OptCamera];\n> > +\t\tchar *endptr;\n> > +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> > +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> > +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> > +\t\telse\n> > +\t\t\tcamera_ = cm_->get(cameraName);\n> > +\n> >  \t\tif (!camera_) {\n> >  \t\t\tstd::cout << \"Camera \"\n> >  \t\t\t\t  << std::string(options_[OptCamera])\n> > @@ -172,8 +179,12 @@ int CamApp::run()\n> >  {\n> >  \tif (options_.isSet(OptList)) {\n> >  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> > -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> > -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> > +\t\t\tindex++;\n> > +\t\t}\n> >  \t}\n> >  \n> >  \tif (options_.isSet(OptCapture)) {","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 69ECD61EED\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 20:40:57 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C8017D5;\n\tTue, 18 Jun 2019 20:40:56 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1560883257;\n\tbh=JVHAQRmSb4sxO12tUVr6U6LYWJy+4ugwB+3uRlDkn5I=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=fIasN+EDejwG0htQnj8z6GgU6R5pPfq54C0OYO1HfSoOlz8gAr+FTL22dH1SO8ual\n\tpmFd3aISiX17kepBqcKdDePwG0KJdZdMXkvVElRGkopK0XEq+mXUztQIxNVjBaIkSI\n\t6Bb2UU9/FLp6rcjZHtV1GPmPkUt6TDRs0uSUQdTU=","Date":"Tue, 18 Jun 2019 21:40:39 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190618183827.GC23556@pendragon.ideasonboard.com>","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>\n\t<20190618074442.GC28646@bigcity.dyn.berto.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190618074442.GC28646@bigcity.dyn.berto.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 18:40:57 -0000"}},{"id":1904,"web_url":"https://patchwork.libcamera.org/comment/1904/","msgid":"<20190618202623.GB15747@bigcity.dyn.berto.se>","date":"2019-06-18T20:26:23","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nOn 2019-06-18 21:40:39 +0300, Laurent Pinchart wrote:\n> Hi Niklas,\n> \n> On Tue, Jun 18, 2019 at 09:44:42AM +0200, Niklas Söderlund wrote:\n> > On 2019-06-17 13:09:10 +0300, Laurent Pinchart wrote:\n> > > As camera names can be cumbersome to type, selection of cameras by index\n> > > from a list can be useful. Print the list of detected cameras with an\n> > > index for each item, and interpret the camera name as an index if it is\n> > > a numerical value in the range from 1 to the number of cameras.\n> > \n> > I think you should also update the usage information for --camera to \n> > indicate both camera name and index can be used to select a camera.\n> \n> Good point ! Would the following be enough ?\n> \n>         parser.addOption(OptCamera, OptionString,\n> -                        \"Specify which camera to operate on\", \"camera\",\n> +                        \"Specify which camera to operate on, by name or by index\", \"camera\",\n\nWorks for me, with this changed,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n>                          ArgumentRequired, \"camera\");\n> \n> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > ---\n> > >  src/cam/main.cpp | 17 ++++++++++++++---\n> > >  1 file changed, 14 insertions(+), 3 deletions(-)\n> > > \n> > > diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> > > index f03a9faf87fa..0e7610b1befd 100644\n> > > --- a/src/cam/main.cpp\n> > > +++ b/src/cam/main.cpp\n> > > @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n> > >  \t}\n> > >  \n> > >  \tif (options_.isSet(OptCamera)) {\n> > > -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> > > +\t\tconst std::string &cameraName = options_[OptCamera];\n> > > +\t\tchar *endptr;\n> > > +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> > > +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> > > +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> > > +\t\telse\n> > > +\t\t\tcamera_ = cm_->get(cameraName);\n> > > +\n> > >  \t\tif (!camera_) {\n> > >  \t\t\tstd::cout << \"Camera \"\n> > >  \t\t\t\t  << std::string(options_[OptCamera])\n> > > @@ -172,8 +179,12 @@ int CamApp::run()\n> > >  {\n> > >  \tif (options_.isSet(OptList)) {\n> > >  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> > > -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> > > -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> > > +\t\t\tindex++;\n> > > +\t\t}\n> > >  \t}\n> > >  \n> > >  \tif (options_.isSet(OptCapture)) {\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lf1-x143.google.com (mail-lf1-x143.google.com\n\t[IPv6:2a00:1450:4864:20::143])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2BE916198E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 22:26:26 +0200 (CEST)","by mail-lf1-x143.google.com with SMTP id d11so10294942lfb.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 13:26:26 -0700 (PDT)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tk82sm2755600ljb.84.2019.06.18.13.26.23\n\t(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);\n\tTue, 18 Jun 2019 13:26:24 -0700 (PDT)"],"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\t:user-agent; bh=DMDmWGI4W11JNvUwlmP9C2CUaUXLWnskllXf/8yW/Ms=;\n\tb=kNNfk0lr8Afb3mGDAru8xc0BstYNKYE/nGewaQQiRa4v6LVaBlbkFV6YkHr/v/53ai\n\tKe5Pq/5GjEqAOklsllAsNyLpS5kJrUrBRBwIyjU89m+/ob4NGVAZ1AgukLaQqbpnFD0x\n\tHuBAlc2xEZir/X3HZm/Ig/GcOtzq135CYO6rEQ/hGu0fiWwOUM42Apfm99dB3+L6Ufmj\n\tKJ9idW/XZIW9Czh0F/0YQ8q8A2yay3ulI0tbkENWSWC1JdvOKTg0sG3DV/rlpcQ6WdD7\n\tjDkwzX6xF7tHRBIiWlRQDdFeb+nxH/Fcaz8xgfT1Lawwptkef+PZwdDcszb2CHD7A5Qh\n\teT2w==","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:user-agent;\n\tbh=DMDmWGI4W11JNvUwlmP9C2CUaUXLWnskllXf/8yW/Ms=;\n\tb=U/VHQ3Bc93+xjIfTAp3SyxYj/nsMySKhqgAB4Fb1rdFSEs5/by7b1eewPbJnmlglMl\n\tDsNjj11NfSeLfBO4hTN9EBthJ/cDY8OePa6A1hMX9Mub46rQ5xZkUbtGU9+R8xcsG9RW\n\tJcU7QkUFpnrEr2zdTkhMNApT26ZOpzTGCCAbI8HXnaFinRqcE0xxvbVwRbMLiWgIvTFD\n\tXNhl5oA2ezwdRXUDxLOvTiEyNdKsXJF+14QBFGsV+xYFxYfUkXCoQtsmVQoV+F9utaly\n\t7XoJpVjRomqsVaWc6rTz5mRGZIW9AaJyCpA06umuKYMi10sPkJ9mXh+8TNcvPM6jutyn\n\tTaIw==","X-Gm-Message-State":"APjAAAWFthYKHQqq/PENYs0O0v0mrw5rhVzxZPCWRobakP8Mv73DT7et\n\ta391KNxLPtENfe2/mxxDU0lDe8hH1wA=","X-Google-Smtp-Source":"APXvYqym6AzYtW37nhRey0mfXH9u8w23DQTlseT80p0MU52Bb6sfFbq2jdCS0RXtwkZFRHZTTuUSMQ==","X-Received":"by 2002:ac2:5337:: with SMTP id\n\tf23mr20337115lfh.15.1560889585104; \n\tTue, 18 Jun 2019 13:26:25 -0700 (PDT)","Date":"Tue, 18 Jun 2019 22:26:23 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190618202623.GB15747@bigcity.dyn.berto.se>","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>\n\t<20190618074442.GC28646@bigcity.dyn.berto.se>\n\t<20190618183827.GC23556@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190618183827.GC23556@pendragon.ideasonboard.com>","User-Agent":"Mutt/1.12.0 (2019-05-25)","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 20:26:26 -0000"}},{"id":1906,"web_url":"https://patchwork.libcamera.org/comment/1906/","msgid":"<289bf152-38e1-5ae8-b415-a25a9e7a3cfc@ideasonboard.com>","date":"2019-06-18T20:42:05","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 17/06/2019 11:09, Laurent Pinchart wrote:\n> As camera names can be cumbersome to type, selection of cameras by index\n> from a list can be useful. Print the list of detected cameras with an\n> index for each item, and interpret the camera name as an index if it is\n> a numerical value in the range from 1 to the number of cameras.\n\n\nI'm very pleased to see this patch.\n\nI asked about allowing an index to identify the camera, rather than the\nextended strings sometime ago, especially as I have to deal with:\n\n- HP Wide Vision FHD Camera: HP W\n- HP Wide Vision FHD Camera: HP I\n\nBut I recall I was told that we were not going to guarantee ordering of\nthe cameras, thus an ID was not appropriate.\n\nBut as all remaining members of the team seem happy with this now, I\nfinally get to use an index!\n\nSo\n\nHighly-desired-by and:\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/cam/main.cpp | 17 ++++++++++++++---\n>  1 file changed, 14 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index f03a9faf87fa..0e7610b1befd 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n>  \t}\n>  \n>  \tif (options_.isSet(OptCamera)) {\n> -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> +\t\tconst std::string &cameraName = options_[OptCamera];\n> +\t\tchar *endptr;\n> +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> +\t\telse\n> +\t\t\tcamera_ = cm_->get(cameraName);\n> +\n>  \t\tif (!camera_) {\n>  \t\t\tstd::cout << \"Camera \"\n>  \t\t\t\t  << std::string(options_[OptCamera])\n> @@ -172,8 +179,12 @@ int CamApp::run()\n>  {\n>  \tif (options_.isSet(OptList)) {\n>  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> +\t\t\tindex++;\n> +\t\t}\n>  \t}\n>  \n>  \tif (options_.isSet(OptCapture)) {\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["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 3DA5C618F7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 22:42:09 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8E206D5;\n\tTue, 18 Jun 2019 22:42:08 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1560890528;\n\tbh=9YSwawcH7SoU3prL9sWyNMWAXHClIlvoaiC4b3wFdog=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=W9YSzJzm3hQP4DqtpxJV5KyU/iTiW/6iUMxFDFFuLLKxwkSOjViSOZSLyBdOHHBFt\n\tlFCZuf3JlM5vqbEXqammkbCRB7LW5RQM57rCpSp0NeEPvUJ1rqdkmRNoDUsJ0unmRj\n\trMZ+x+Nhpyh+LKNEKlnMYHDCJaMbDu2uQRXVmXRk=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\tmQINBFYE/WYBEACs1PwjMD9rgCu1hlIiUA1AXR4rv2v+BCLUq//vrX5S5bjzxKAryRf0uHat\n\tV/zwz6hiDrZuHUACDB7X8OaQcwhLaVlq6byfoBr25+hbZG7G3+5EUl9cQ7dQEdvNj6V6y/SC\n\trRanWfelwQThCHckbobWiQJfK9n7rYNcPMq9B8e9F020LFH7Kj6YmO95ewJGgLm+idg1Kb3C\n\tpotzWkXc1xmPzcQ1fvQMOfMwdS+4SNw4rY9f07Xb2K99rjMwZVDgESKIzhsDB5GY465sCsiQ\n\tcSAZRxqE49RTBq2+EQsbrQpIc8XiffAB8qexh5/QPzCmR4kJgCGeHIXBtgRj+nIkCJPZvZtf\n\tKr2EAbc6tgg6DkAEHJb+1okosV09+0+TXywYvtEop/WUOWQ+zo+Y/OBd+8Ptgt1pDRyOBzL8\n\tRXa8ZqRf0Mwg75D+dKntZeJHzPRJyrlfQokngAAs4PaFt6UfS+ypMAF37T6CeDArQC41V3ko\n\tlPn1yMsVD0p+6i3DPvA/GPIksDC4owjnzVX9kM8Zc5Cx+XoAN0w5Eqo4t6qEVbuettxx55gq\n\t8K8FieAjgjMSxngo/HST8TpFeqI5nVeq0/lqtBRQKumuIqDg+Bkr4L1V/PSB6XgQcOdhtd36\n\tOe9X9dXB8YSNt7VjOcO7BTmFn/Z8r92mSAfHXpb07YJWJosQOQARAQABtDBLaWVyYW4gQmlu\n\tZ2hhbSA8a2llcmFuLmJpbmdoYW1AaWRlYXNvbmJvYXJkLmNvbT6JAkAEEwEKACoCGwMFCwkI\n\tBwIGFQgJCgsCBBYCAwECHgECF4ACGQEFAlnDk/gFCQeA/YsACgkQoR5GchCkYf3X5w/9EaZ7\n\tcnUcT6dxjxrcmmMnfFPoQA1iQXr/MXQJBjFWfxRUWYzjvUJb2D/FpA8FY7y+vksoJP7pWDL7\n\tQTbksdwzagUEk7CU45iLWL/CZ/knYhj1I/+5LSLFmvZ/5Gf5xn2ZCsmg7C0MdW/GbJ8IjWA8\n\t/LKJSEYH8tefoiG6+9xSNp1p0Gesu3vhje/GdGX4wDsfAxx1rIYDYVoX4bDM+uBUQh7sQox/\n\tR1bS0AaVJzPNcjeC14MS226mQRUaUPc9250aj44WmDfcg44/kMsoLFEmQo2II9aOlxUDJ+x1\n\txohGbh9mgBoVawMO3RMBihcEjo/8ytW6v7xSF+xP4Oc+HOn7qebAkxhSWcRxQVaQYw3S9iZz\n\t2iA09AXAkbvPKuMSXi4uau5daXStfBnmOfalG0j+9Y6hOFjz5j0XzaoF6Pln0jisDtWltYhP\n\tX9LjFVhhLkTzPZB/xOeWGmsG4gv2V2ExbU3uAmb7t1VSD9+IO3Km4FtnYOKBWlxwEd8qOFpS\n\tjEqMXURKOiJvnw3OXe9MqG19XdeENA1KyhK5rqjpwdvPGfSn2V+SlsdJA0DFsobUScD9qXQw\n\tOvhapHe3XboK2+Rd7L+g/9Ud7ZKLQHAsMBXOVJbufA1AT+IaOt0ugMcFkAR5UbBg5+dZUYJj\n\t1QbPQcGmM3wfvuaWV5+SlJ+WeKIb8ta5Ag0EVgT9ZgEQAM4o5G/kmruIQJ3K9SYzmPishRHV\n\tDcUcvoakyXSX2mIoccmo9BHtD9MxIt+QmxOpYFNFM7YofX4lG0ld8H7FqoNVLd/+a0yru5Cx\n\tadeZBe3qr1eLns10Q90LuMo7/6zJhCW2w+HE7xgmCHejAwuNe3+7yt4QmwlSGUqdxl8cgtS1\n\tPlEK93xXDsgsJj/bw1EfSVdAUqhx8UQ3aVFxNug5OpoX9FdWJLKROUrfNeBE16RLrNrq2ROc\n\tiSFETpVjyC/oZtzRFnwD9Or7EFMi76/xrWzk+/b15RJ9WrpXGMrttHUUcYZEOoiC2lEXMSAF\n\tSSSj4vHbKDJ0vKQdEFtdgB1roqzxdIOg4rlHz5qwOTynueiBpaZI3PHDudZSMR5Fk6QjFooE\n\tXTw3sSl/km/lvUFiv9CYyHOLdygWohvDuMkV/Jpdkfq8XwFSjOle+vT/4VqERnYFDIGBxaRx\n\tkoBLfNDiiuR3lD8tnJ4A1F88K6ojOUs+jndKsOaQpDZV6iNFv8IaNIklTPvPkZsmNDhJMRHH\n\tIu60S7BpzNeQeT4yyY4dX9lC2JL/LOEpw8DGf5BNOP1KgjCvyp1/KcFxDAo89IeqljaRsCdP\n\t7WCIECWYem6pLwaw6IAL7oX+tEqIMPph/G/jwZcdS6Hkyt/esHPuHNwX4guqTbVEuRqbDzDI\n\t2DJO5FbxABEBAAGJAiUEGAEKAA8CGwwFAlnDlGsFCQeA/gIACgkQoR5GchCkYf1yYRAAq+Yo\n\tnbf9DGdK1kTAm2RTFg+w9oOp2Xjqfhds2PAhFFvrHQg1XfQR/UF/SjeUmaOmLSczM0s6XMeO\n\tVcE77UFtJ/+hLo4PRFKm5X1Pcar6g5m4xGqa+Xfzi9tRkwC29KMCoQOag1BhHChgqYaUH3yo\n\tUzaPwT/fY75iVI+yD0ih/e6j8qYvP8pvGwMQfrmN9YB0zB39YzCSdaUaNrWGD3iCBxg6lwSO\n\tLKeRhxxfiXCIYEf3vwOsP3YMx2JkD5doseXmWBGW1U0T/oJF+DVfKB6mv5UfsTzpVhJRgee7\n\t4jkjqFq4qsUGxcvF2xtRkfHFpZDbRgRlVmiWkqDkT4qMA+4q1y/dWwshSKi/uwVZNycuLsz+\n\t+OD8xPNCsMTqeUkAKfbD8xW4LCay3r/dD2ckoxRxtMD9eOAyu5wYzo/ydIPTh1QEj9SYyvp8\n\tO0g6CpxEwyHUQtF5oh15O018z3ZLztFJKR3RD42VKVsrnNDKnoY0f4U0z7eJv2NeF8xHMuiU\n\tRCIzqxX1GVYaNkKTnb/Qja8hnYnkUzY1Lc+OtwiGmXTwYsPZjjAaDX35J/RSKAoy5wGo/YFA\n\tJxB1gWThL4kOTbsqqXj9GLcyOImkW0lJGGR3o/fV91Zh63S5TKnf2YGGGzxki+ADdxVQAm+Q\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<289bf152-38e1-5ae8-b415-a25a9e7a3cfc@ideasonboard.com>","Date":"Tue, 18 Jun 2019 21:42:05 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.7.0","MIME-Version":"1.0","In-Reply-To":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 20:42:09 -0000"}},{"id":1908,"web_url":"https://patchwork.libcamera.org/comment/1908/","msgid":"<20190618204938.GF23556@pendragon.ideasonboard.com>","date":"2019-06-18T20:49:38","subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Tue, Jun 18, 2019 at 09:42:05PM +0100, Kieran Bingham wrote:\n> On 17/06/2019 11:09, Laurent Pinchart wrote:\n> > As camera names can be cumbersome to type, selection of cameras by index\n> > from a list can be useful. Print the list of detected cameras with an\n> > index for each item, and interpret the camera name as an index if it is\n> > a numerical value in the range from 1 to the number of cameras.\n> \n> \n> I'm very pleased to see this patch.\n> \n> I asked about allowing an index to identify the camera, rather than the\n> extended strings sometime ago, especially as I have to deal with:\n> \n> - HP Wide Vision FHD Camera: HP W\n> - HP Wide Vision FHD Camera: HP I\n> \n> But I recall I was told that we were not going to guarantee ordering of\n> the cameras, thus an ID was not appropriate.\n> \n> But as all remaining members of the team seem happy with this now, I\n> finally get to use an index!\n\nI don't think libcamera should expose an index-based API as the primary\nmean to get hold of a camera, as that's all but stable. In the cam\napplication, and for the time being, I think it's fine. We may\nreconsider that later when we'll have a good naming scheme.\n\n> So\n> \n> Highly-desired-by and:\n> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  src/cam/main.cpp | 17 ++++++++++++++---\n> >  1 file changed, 14 insertions(+), 3 deletions(-)\n> > \n> > diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> > index f03a9faf87fa..0e7610b1befd 100644\n> > --- a/src/cam/main.cpp\n> > +++ b/src/cam/main.cpp\n> > @@ -73,7 +73,14 @@ int CamApp::init(int argc, char **argv)\n> >  \t}\n> >  \n> >  \tif (options_.isSet(OptCamera)) {\n> > -\t\tcamera_ = cm_->get(options_[OptCamera]);\n> > +\t\tconst std::string &cameraName = options_[OptCamera];\n> > +\t\tchar *endptr;\n> > +\t\tunsigned long index = strtoul(cameraName.c_str(), &endptr, 10);\n> > +\t\tif (*endptr == '\\0' && index > 0 && index <= cm_->cameras().size())\n> > +\t\t\tcamera_ = cm_->cameras()[index - 1];\n> > +\t\telse\n> > +\t\t\tcamera_ = cm_->get(cameraName);\n> > +\n> >  \t\tif (!camera_) {\n> >  \t\t\tstd::cout << \"Camera \"\n> >  \t\t\t\t  << std::string(options_[OptCamera])\n> > @@ -172,8 +179,12 @@ int CamApp::run()\n> >  {\n> >  \tif (options_.isSet(OptList)) {\n> >  \t\tstd::cout << \"Available cameras:\" << std::endl;\n> > -\t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> > -\t\t\tstd::cout << \"- \" << cam->name() << std::endl;\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->name() << std::endl;\n> > +\t\t\tindex++;\n> > +\t\t}\n> >  \t}\n> >  \n> >  \tif (options_.isSet(OptCapture)) {","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 049FF618F7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 18 Jun 2019 22:49:55 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 73A73D5;\n\tTue, 18 Jun 2019 22:49:55 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1560890995;\n\tbh=cIMmbAzL42IZJw8wnVs1tfbHUjocPEEbs+QFTiz879k=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=S3Xy2sb07tgofyYaEhjJ7Gy8eBJSCigkfpBXnaGy8KpjmWZewjOUEbcxEETSACmMK\n\tXCzDKe7nHcFBlLGGFIL0f4ds4jpgZn+dJSBdmIvq8Otv2dsAeibLOYFwoK5MOHgNza\n\t2VOu29HGMjq9SDgHm+SyzxCC8+57XUSgwdIMSoOk=","Date":"Tue, 18 Jun 2019 23:49:38 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190618204938.GF23556@pendragon.ideasonboard.com>","References":"<20190617100910.10879-1-laurent.pinchart@ideasonboard.com>\n\t<289bf152-38e1-5ae8-b415-a25a9e7a3cfc@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<289bf152-38e1-5ae8-b415-a25a9e7a3cfc@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] cam: Allow selecting cameras by index","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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>","X-List-Received-Date":"Tue, 18 Jun 2019 20:49:56 -0000"}}]