[{"id":32574,"web_url":"https://patchwork.libcamera.org/comment/32574/","msgid":"<173349016352.3135963.18112736734267035261@ping.linuxembedded.co.uk>","date":"2024-12-06T13:02:43","subject":"Re: [PATCH v3 4/4] apps: cam: Print control direction information","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Paul Elder (2024-11-29 09:19:16)\n> Now that there is support for retrieving the allowed directions of a\n> control, print this information when listing controls.\n> \n> Sample output:\n> $ cam --list-controls -c 2\n> Using camera Virtual0 as cam0\n> Control: [inout] draft::FaceDetectMode:\n>   - FaceDetectModeOff (0)\n> Control: [in   ] libcamera::FrameDurationLimits: [16666..33333]\n>    Size: 2\n> \n\nLooks good.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n> ---\n> No change in v3\n> \n> Changes in v2:\n> - s/i/in/, s/o/out/ so that the output is easier to read\n> ---\n>  src/apps/cam/camera_session.cpp | 10 ++++++++--\n>  1 file changed, 8 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp\n> index 6e9890ccfda1..9e93482775c3 100644\n> --- a/src/apps/cam/camera_session.cpp\n> +++ b/src/apps/cam/camera_session.cpp\n> @@ -159,12 +159,18 @@ CameraSession::~CameraSession()\n>  void CameraSession::listControls() const\n>  {\n>         for (const auto &[id, info] : camera_->controls()) {\n> +               std::stringstream io;\n> +               io << \"[\"\n> +                  << (id->isInput() ? \"in\" : \"  \")\n> +                  << (id->isOutput() ? \"out\" : \"   \")\n> +                  << \"] \";\n> +\n>                 if (info.values().empty()) {\n> -                       std::cout << \"Control: \"\n> +                       std::cout << \"Control: \" << io.str()\n>                                   << id->vendor() << \"::\" << id->name() << \": \"\n>                                   << info.toString() << std::endl;\n>                 } else {\n> -                       std::cout << \"Control: \"\n> +                       std::cout << \"Control: \" << io.str()\n>                                   << id->vendor() << \"::\" << id->name() << \":\"\n>                                   << std::endl;\n>                         for (const auto &value : info.values()) {\n> -- \n> 2.39.2\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 7FDE8BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Dec 2024 13:02:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C185066145;\n\tFri,  6 Dec 2024 14:02:47 +0100 (CET)","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 3E440618B3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Dec 2024 14:02:46 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A5175641;\n\tFri,  6 Dec 2024 14:02:16 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wgstINSb\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1733490136;\n\tbh=YGV6Ebg/V3EvLCJcr/ro5GKHl1TCICpeNLAGMtdlShA=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=wgstINSbl0BCxlDP6ZQf68nCHlHDGPRofQhQ43NZTaNRq3K2BNHoK44Dm+LnAsA7V\n\t0RdwETrYAgEK4rfo7ZJJ+cV2V0MyIYNz4ddpGE7b0j6xdHLtxuG4ahsh/t08LAYkow\n\tHItjllDXjaKACQ89r826TY0ERK33eYIX+HHGu7q8=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20241129091916.298359-5-paul.elder@ideasonboard.com>","References":"<20241129091916.298359-1-paul.elder@ideasonboard.com>\n\t<20241129091916.298359-5-paul.elder@ideasonboard.com>","Subject":"Re: [PATCH v3 4/4] apps: cam: Print control direction information","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Paul Elder <paul.elder@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Fri, 06 Dec 2024 13:02:43 +0000","Message-ID":"<173349016352.3135963.18112736734267035261@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":32579,"web_url":"https://patchwork.libcamera.org/comment/32579/","msgid":"<20241206131659.GI25902@pendragon.ideasonboard.com>","date":"2024-12-06T13:16:59","subject":"Re: [PATCH v3 4/4] apps: cam: Print control direction information","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Fri, Nov 29, 2024 at 06:19:16PM +0900, Paul Elder wrote:\n> Now that there is support for retrieving the allowed directions of a\n> control, print this information when listing controls.\n> \n> Sample output:\n> $ cam --list-controls -c 2\n> Using camera Virtual0 as cam0\n> Control: [inout] draft::FaceDetectMode:\n>   - FaceDetectModeOff (0)\n> Control: [in   ] libcamera::FrameDurationLimits: [16666..33333]\n>    Size: 2\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> No change in v3\n> \n> Changes in v2:\n> - s/i/in/, s/o/out/ so that the output is easier to read\n> ---\n>  src/apps/cam/camera_session.cpp | 10 ++++++++--\n>  1 file changed, 8 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp\n> index 6e9890ccfda1..9e93482775c3 100644\n> --- a/src/apps/cam/camera_session.cpp\n> +++ b/src/apps/cam/camera_session.cpp\n> @@ -159,12 +159,18 @@ CameraSession::~CameraSession()\n>  void CameraSession::listControls() const\n>  {\n>  \tfor (const auto &[id, info] : camera_->controls()) {\n> +\t\tstd::stringstream io;\n> +\t\tio << \"[\"\n> +\t\t   << (id->isInput() ? \"in\" : \"  \")\n> +\t\t   << (id->isOutput() ? \"out\" : \"   \")\n> +\t\t   << \"] \";\n> +\n>  \t\tif (info.values().empty()) {\n> -\t\t\tstd::cout << \"Control: \"\n> +\t\t\tstd::cout << \"Control: \" << io.str()\n>  \t\t\t\t  << id->vendor() << \"::\" << id->name() << \": \"\n>  \t\t\t\t  << info.toString() << std::endl;\n>  \t\t} else {\n> -\t\t\tstd::cout << \"Control: \"\n> +\t\t\tstd::cout << \"Control: \" << io.str()\n>  \t\t\t\t  << id->vendor() << \"::\" << id->name() << \":\"\n>  \t\t\t\t  << std::endl;\n>  \t\t\tfor (const auto &value : info.values()) {","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 CB529BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Dec 2024 13:17:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 82AEC66151;\n\tFri,  6 Dec 2024 14:17:14 +0100 (CET)","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 78315618B3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Dec 2024 14:17:13 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EECD6641;\n\tFri,  6 Dec 2024 14:16:43 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"dK6PBbRq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1733491004;\n\tbh=2KGnVL+wCzTzHPCihbiYcWDyrpGQP2OEZL3gemjfjEI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=dK6PBbRqtqFEKB4Nx7LnmL3COvxuBXERylpz+3mkNh6iJCkXmay7FnMw84Q4WpzwF\n\tqTw3xWW2TGd6ch4/I1NFWv1kdFNdhmvtTAto6Ro6XLuEf/ATcEngfVxHFvKVnhhoEk\n\tzJggMAWK98kQ5xSOZ1a3XmX6ZpNZTJDkJCvONio4=","Date":"Fri, 6 Dec 2024 15:16:59 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v3 4/4] apps: cam: Print control direction information","Message-ID":"<20241206131659.GI25902@pendragon.ideasonboard.com>","References":"<20241129091916.298359-1-paul.elder@ideasonboard.com>\n\t<20241129091916.298359-5-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20241129091916.298359-5-paul.elder@ideasonboard.com>","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]