[{"id":35887,"web_url":"https://patchwork.libcamera.org/comment/35887/","msgid":"<175819493351.2127323.17374795548824968341@neptunite.rasen.tech>","date":"2025-09-18T11:28:53","subject":"Re: [RFC PATCH v2 18/22] [DNI] apps: cam: Use\n\tCamera::metadataAvailable signal","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2025-07-21 19:46:18)\n> From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n> Handle the Camera::metadataAvailable signal and print the metadata\n> list.\n> \n> Use the --metadata option of cam to validate that the metadata list\n> in Request::metadata() matches the accumulated results.\n\nI personally think that this is a useful patch. This is what cam is for, isn't\nit?\n\nBut there's no sob tag so I can't rb it :)\n\nPaul\n\n> ---\n> Original: https://patchwork.libcamera.org/patch/22234/\n> ---\n>  src/apps/cam/camera_session.cpp | 11 +++++++++++\n>  1 file changed, 11 insertions(+)\n> \n> diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp\n> index 96ab4ca8e..16c735ef4 100644\n> --- a/src/apps/cam/camera_session.cpp\n> +++ b/src/apps/cam/camera_session.cpp\n> @@ -299,6 +299,17 @@ int CameraSession::start()\n>  \n>         camera_->requestCompleted.connect(this, &CameraSession::requestComplete);\n>  \n> +       if (printMetadata_) {\n> +               camera_->metadataAvailable.connect(this, [](Request *r, MetadataList::Diff update) {\n> +                       std::cout << \">> early metadata for \" << r->sequence() << \" with \" << update.size() << \" entries {\\n\";\n> +                       for (auto &&[tag, v] : update) {\n> +                               const auto *id = controls::controls.at(tag);\n> +                               std::cout << '\\t' << id->name() << \" = \" << v << '\\n';\n> +                       }\n> +                       std::cout << \"}\" << std::endl;\n> +               });\n> +       }\n> +\n>  #ifdef HAVE_KMS\n>         if (options_.isSet(OptDisplay))\n>                 sink_ = std::make_unique<KMSSink>(options_[OptDisplay].toString());\n> -- \n> 2.50.1\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 C2CE1C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 18 Sep 2025 11:29:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 675186936A;\n\tThu, 18 Sep 2025 13:29:01 +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 8323C62C3B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 18 Sep 2025 13:28:59 +0200 (CEST)","from neptunite.rasen.tech (unknown\n\t[IPv6:2404:7a81:160:2100:7cf2:5f58:dd2a:9ec1])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 5BC3EC6E;\n\tThu, 18 Sep 2025 13:27:39 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"dckhIQtP\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758194859;\n\tbh=8zOz+WxgxlGK9FJeVel7DDDL6CdHb0anRscgxb9AAFo=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=dckhIQtPmXSjijvgDTy3P8DN5GyEcPJoyEKORQeaQWkBya3rqFTRohzRAnFvTAtyo\n\tG8mUybDyG8leQcfTQAgJE9uYjQ+5OxmdIkLqwYJIHn+RPeE3dcSnnJUADFxc5F9Es2\n\tteUBV7a0TPJ1sdeejR60d+RQZ9m2MhNiWu5hl/1M=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250721104622.1550908-19-barnabas.pocze@ideasonboard.com>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-19-barnabas.pocze@ideasonboard.com>","Subject":"Re: [RFC PATCH v2 18/22] [DNI] apps: cam: Use\n\tCamera::metadataAvailable signal","From":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Thu, 18 Sep 2025 20:28:53 +0900","Message-ID":"<175819493351.2127323.17374795548824968341@neptunite.rasen.tech>","User-Agent":"alot/0.0.0","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":36546,"web_url":"https://patchwork.libcamera.org/comment/36546/","msgid":"<21976550-19ef-498a-908e-9fe6a901872a@ideasonboard.com>","date":"2025-10-30T10:14:13","subject":"Re: [RFC PATCH v2 18/22] [DNI] apps: cam: Use\n\tCamera::metadataAvailable signal","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2025. 09. 18. 13:28 keltezéssel, Paul Elder írta:\n> Quoting Barnabás Pőcze (2025-07-21 19:46:18)\n>> From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n>>\n>> Handle the Camera::metadataAvailable signal and print the metadata\n>> list.\n>>\n>> Use the --metadata option of cam to validate that the metadata list\n>> in Request::metadata() matches the accumulated results.\n> \n> I personally think that this is a useful patch. This is what cam is for, isn't\n> it?\n\nI think we would want a separate option for this. And another issue is that now\n`cam` is printing from two separate threads, in my experience the two will\neasily intertwine.\n\n\nRegards,\nBarnabás Pőcze\n\n\n> \n> But there's no sob tag so I can't rb it :)\n> \n> Paul\n> \n>> ---\n>> Original: https://patchwork.libcamera.org/patch/22234/\n>> ---\n>>   src/apps/cam/camera_session.cpp | 11 +++++++++++\n>>   1 file changed, 11 insertions(+)\n>>\n>> diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp\n>> index 96ab4ca8e..16c735ef4 100644\n>> --- a/src/apps/cam/camera_session.cpp\n>> +++ b/src/apps/cam/camera_session.cpp\n>> @@ -299,6 +299,17 @@ int CameraSession::start()\n>>\n>>          camera_->requestCompleted.connect(this, &CameraSession::requestComplete);\n>>\n>> +       if (printMetadata_) {\n>> +               camera_->metadataAvailable.connect(this, [](Request *r, MetadataList::Diff update) {\n>> +                       std::cout << \">> early metadata for \" << r->sequence() << \" with \" << update.size() << \" entries {\\n\";\n>> +                       for (auto &&[tag, v] : update) {\n>> +                               const auto *id = controls::controls.at(tag);\n>> +                               std::cout << '\\t' << id->name() << \" = \" << v << '\\n';\n>> +                       }\n>> +                       std::cout << \"}\" << std::endl;\n>> +               });\n>> +       }\n>> +\n>>   #ifdef HAVE_KMS\n>>          if (options_.isSet(OptDisplay))\n>>                  sink_ = std::make_unique<KMSSink>(options_[OptDisplay].toString());\n>> --\n>> 2.50.1\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 5E4E6C3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 30 Oct 2025 10:14:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5D63760891;\n\tThu, 30 Oct 2025 11:14:19 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 64E09606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 30 Oct 2025 11:14:17 +0100 (CET)","from [192.168.33.29] (185.221.140.239.nat.pool.zt.hu\n\t[185.221.140.239])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4F0D71A8F;\n\tThu, 30 Oct 2025 11:12:27 +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=\"A1YnJHxd\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761819147;\n\tbh=oyYlRzcBpjjickFlynCJhy/kB62xZyEs4sjuPmUbLsA=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=A1YnJHxdDaJMHrU5lHeWJU5XA4KHLFm90cvalNMWfwJaOQFYSCChX7ZJkY2kQyM3i\n\tSSjQQfQejfkbViPIg5EzqxCaJShXIpQVTNvZzb2URpEAJJzRpBAkxznvm4/t7f5bGy\n\tzpc5K02+A21EdoMixgE14fFeifBVr9+IskNfUNEM=","Message-ID":"<21976550-19ef-498a-908e-9fe6a901872a@ideasonboard.com>","Date":"Thu, 30 Oct 2025 11:14:13 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 18/22] [DNI] apps: cam: Use\n\tCamera::metadataAvailable signal","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-19-barnabas.pocze@ideasonboard.com>\n\t<Ew5mrpfHTJ1HSnkYIe7eaf834n-FquqEvfxXHenIkVOoxE1_1Oj29uDWdaS1OtjA7zmrf7Kp54r0wwtOp9yBZA==@protonmail.internalid>\n\t<175819493351.2127323.17374795548824968341@neptunite.rasen.tech>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<175819493351.2127323.17374795548824968341@neptunite.rasen.tech>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>"}}]