[{"id":35886,"web_url":"https://patchwork.libcamera.org/comment/35886/","msgid":"<175819483223.2127323.10949890437141020233@neptunite.rasen.tech>","date":"2025-09-18T11:27:12","subject":"Re: [RFC PATCH v2 17/22] guides: pipeline_handler: Document\n\tPipelineHandler::metadataAvailable","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:17)\n> From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n> Document the new available helpers to accumulate metadata results in\n> Request::metadata and notify applications about metadata availability.\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> ---\n> Original: https://patchwork.libcamera.org/patch/22230/\n> ---\n>  Documentation/guides/pipeline-handler.rst | 26 ++++++++++++++++-------\n>  1 file changed, 18 insertions(+), 8 deletions(-)\n> \n> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n> index 0d5df7269..2b5e8414d 100644\n> --- a/Documentation/guides/pipeline-handler.rst\n> +++ b/Documentation/guides/pipeline-handler.rst\n> @@ -1425,18 +1425,28 @@ classes documentation.\n>  .. _libcamera Signal and Slot: https://libcamera.org/api-html/classlibcamera_1_1Signal.html#details\n>  \n>  In order to notify applications about the availability of new frames and data,\n> -the ``Camera`` device exposes two ``Signals`` to which applications can connect\n> -to be notified of frame completion events. The ``bufferComplete`` signal serves\n> -to report to applications the completion event of a single ``Stream`` part of a\n> -``Request``, while the ``requestComplete`` signal notifies the completion of all\n> -the ``Streams`` and data submitted as part of a request. This mechanism allows\n> +the ``Camera`` device exposes three ``Signals`` to which applications can\n> +connect to be notified of frame completion and metadata availability events.\n> +\n> +The ``metadataAvailable`` signal serves to notify about the availability of\n> +metadata and accumulates metadata results in the list of metadata associated\n\nafaiu the metadataAvailable signal does not accumulate metadata results but\nrather returns only the metadata that has been newly reported since the last\ntime the signal was emitted for the particular Request.\n\n> +with a ``Request``.  The ``bufferComplete`` signal serves to report to\n> +applications the completion event of a single ``Stream`` part of a ``Request``,\n> +while the ``requestComplete`` signal notifies the completion of all the\n> +``Streams`` and data submitted as part of a request. This mechanism allows\n>  implementation of partial request completion, which allows an application to\n>  inspect completed buffers associated with the single streams without waiting for\n>  all of them to be ready.\n>  \n> -The ``bufferComplete`` and ``requestComplete`` signals are emitted by the\n> -``Camera`` device upon notifications received from the pipeline handler, which\n> -tracks the buffers and request completion status.\n> +The ``metadataAvailable``, ``bufferComplete`` and ``requestComplete`` signals\n> +are emitted by the ``Camera`` device upon notifications received from the\n> +pipeline handler, which tracks the metadata, buffers and request completion\n> +status.\n> +\n> +Metadata availability is signalled by the pipeline handlers by calling the\n> +PipelineHandler base class ``metadataAvailable`` function. This function\n> +notifies applications about metadata availability and accumulates metadata\n> +results in the ``Request::metadata()`` list.\n\nHere it's fine since this describes the metadataAvailable helper function, and\nmatches my understanding of what it does.\n\n\nPaul\n\n>  \n>  The single buffer completion notification is implemented by pipeline handlers by\n>  `connecting`_ the ``bufferReady`` signal of the capture devices they have queued\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 4B839C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 18 Sep 2025 11:27:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 215486936F;\n\tThu, 18 Sep 2025 13:27:19 +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 E643862C3B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 18 Sep 2025 13:27:17 +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 BA546C6E;\n\tThu, 18 Sep 2025 13:25:57 +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=\"iml5K7Qk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758194758;\n\tbh=+jCenFLckjX5wVKNs5i9a+mctLLK9pNz7BhqquA+2C0=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=iml5K7Qkj9kOLunccMUPj/ZK2ImuyltUC7tKv44Ljn1ePSo2bYE2qJ8hsnmWabfZ7\n\t1TaD4gRdBekvp1hxsx2dgXwedPCsbYbl5fSw/ed3WJ1vLIUinkKh+LKTAUfDooGUWH\n\tm7a/x1Vhakfpc2DpUEQFvHc3tV07a8dS2thRXKO4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250721104622.1550908-18-barnabas.pocze@ideasonboard.com>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-18-barnabas.pocze@ideasonboard.com>","Subject":"Re: [RFC PATCH v2 17/22] guides: pipeline_handler: Document\n\tPipelineHandler::metadataAvailable","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:27:12 +0900","Message-ID":"<175819483223.2127323.10949890437141020233@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":35951,"web_url":"https://patchwork.libcamera.org/comment/35951/","msgid":"<13180536-bacf-44a7-a971-a3c527f2ac69@ideasonboard.com>","date":"2025-09-22T12:11:48","subject":"Re: [RFC PATCH v2 17/22] guides: pipeline_handler: Document\n\tPipelineHandler::metadataAvailable","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:27 keltezéssel, Paul Elder írta:\n> Quoting Barnabás Pőcze (2025-07-21 19:46:17)\n>> From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n>>\n>> Document the new available helpers to accumulate metadata results in\n>> Request::metadata and notify applications about metadata availability.\n>>\n>> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> ---\n>> Original: https://patchwork.libcamera.org/patch/22230/\n>> ---\n>>   Documentation/guides/pipeline-handler.rst | 26 ++++++++++++++++-------\n>>   1 file changed, 18 insertions(+), 8 deletions(-)\n>>\n>> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n>> index 0d5df7269..2b5e8414d 100644\n>> --- a/Documentation/guides/pipeline-handler.rst\n>> +++ b/Documentation/guides/pipeline-handler.rst\n>> @@ -1425,18 +1425,28 @@ classes documentation.\n>>   .. _libcamera Signal and Slot: https://libcamera.org/api-html/classlibcamera_1_1Signal.html#details\n>>   \n>>   In order to notify applications about the availability of new frames and data,\n>> -the ``Camera`` device exposes two ``Signals`` to which applications can connect\n>> -to be notified of frame completion events. The ``bufferComplete`` signal serves\n>> -to report to applications the completion event of a single ``Stream`` part of a\n>> -``Request``, while the ``requestComplete`` signal notifies the completion of all\n>> -the ``Streams`` and data submitted as part of a request. This mechanism allows\n>> +the ``Camera`` device exposes three ``Signals`` to which applications can\n>> +connect to be notified of frame completion and metadata availability events.\n>> +\n>> +The ``metadataAvailable`` signal serves to notify about the availability of\n>> +metadata and accumulates metadata results in the list of metadata associated\n> \n> afaiu the metadataAvailable signal does not accumulate metadata results but\n> rather returns only the metadata that has been newly reported since the last\n> time the signal was emitted for the particular Request.\n\nThat's true, thanks. The new version now says:\n\n   The ``metadataAvailable`` signal serves to notify about the availability of\n   metadata for a particular ``Request``.\n\n\nRegards,\nBarnabás Pőcze\n\n\n> \n>> +with a ``Request``.  The ``bufferComplete`` signal serves to report to\n>> +applications the completion event of a single ``Stream`` part of a ``Request``,\n>> +while the ``requestComplete`` signal notifies the completion of all the\n>> +``Streams`` and data submitted as part of a request. This mechanism allows\n>>   implementation of partial request completion, which allows an application to\n>>   inspect completed buffers associated with the single streams without waiting for\n>>   all of them to be ready.\n>>   \n>> -The ``bufferComplete`` and ``requestComplete`` signals are emitted by the\n>> -``Camera`` device upon notifications received from the pipeline handler, which\n>> -tracks the buffers and request completion status.\n>> +The ``metadataAvailable``, ``bufferComplete`` and ``requestComplete`` signals\n>> +are emitted by the ``Camera`` device upon notifications received from the\n>> +pipeline handler, which tracks the metadata, buffers and request completion\n>> +status.\n>> +\n>> +Metadata availability is signalled by the pipeline handlers by calling the\n>> +PipelineHandler base class ``metadataAvailable`` function. This function\n>> +notifies applications about metadata availability and accumulates metadata\n>> +results in the ``Request::metadata()`` list.\n> \n> Here it's fine since this describes the metadataAvailable helper function, and\n> matches my understanding of what it does.\n> \n> \n> Paul\n> \n>>   \n>>   The single buffer completion notification is implemented by pipeline handlers by\n>>   `connecting`_ the ``bufferReady`` signal of the capture devices they have queued\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 2B785BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Sep 2025 12:11:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0AC716B5F9;\n\tMon, 22 Sep 2025 14:11:54 +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 B28EE6B599\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Sep 2025 14:11:52 +0200 (CEST)","from [192.168.33.12] (185.221.142.115.nat.pool.zt.hu\n\t[185.221.142.115])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CF1A5669;\n\tMon, 22 Sep 2025 14:10:29 +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=\"vZSmH35q\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758543030;\n\tbh=mVzdObMQrNmcV5pT2St+VX3m7TrGBICqpg8RRIFTdvk=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=vZSmH35qjzm3Uqb2Lw5CSZNIRDrMG3FEKL0TLiGCvRjcGFajdT+ZU/GVgoZm+6ley\n\tjVvePceuYK69u3m1Uh/7fy94KSvu7yn3FThEEQNxTgSe4eoIjLhb5xwx/ChvHHNoJy\n\tTIHPqHOJJdz8Cv/+LgyOrdHOkq3fWbQVQ3QeJAAc=","Message-ID":"<13180536-bacf-44a7-a971-a3c527f2ac69@ideasonboard.com>","Date":"Mon, 22 Sep 2025 14:11:48 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 17/22] guides: pipeline_handler: Document\n\tPipelineHandler::metadataAvailable","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-18-barnabas.pocze@ideasonboard.com>\n\t<175819483223.2127323.10949890437141020233@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":"<175819483223.2127323.10949890437141020233@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>"}}]