[{"id":35184,"web_url":"https://patchwork.libcamera.org/comment/35184/","msgid":"<z6u4vr35cly2p7iexwdyge4p4n4eapcpcoq5zy4n4ztqpa7y5e@rycjvc7y3j4m>","date":"2025-07-28T09:31:35","subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Barnabás\n\nOn Mon, Jul 21, 2025 at 12:46:11PM +0200, Barnabás Pőcze wrote:\n> Add a `MetadataList` to the `Request` object to store the metadata items\n> returned by the camera. The metadata list is initialized using the camera's\n> `MetadataListPlan` object, which is supposed to be filled by the pipeline\n> handlers.\n\nCould you mention that for the time being, the accessor member is\ncalled metadata2() ?\n\nI wonder if we should instead use metadataList() as long as we don't drop\nmetadata()\n\n>\n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> ---\n>  include/libcamera/request.h | 5 +++++\n>  src/libcamera/request.cpp   | 2 ++\n>  2 files changed, 7 insertions(+)\n>\n> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> index e214a9d13..196557865 100644\n> --- a/include/libcamera/request.h\n> +++ b/include/libcamera/request.h\n> @@ -18,6 +18,7 @@\n>\n>  #include <libcamera/controls.h>\n>  #include <libcamera/fence.h>\n> +#include <libcamera/metadata_list.h>\n>\n>  namespace libcamera {\n>\n> @@ -51,6 +52,9 @@ public:\n>\n>  \tControlList &controls() { return *controls_; }\n>  \tControlList &metadata() { return *metadata_; }\n> +#ifndef __DOXYGEN__\n> +\t[[nodiscard]] MetadataList &metadata2() { return metadata2_; }\n> +#endif\n>  \tconst BufferMap &buffers() const { return bufferMap_; }\n>  \tint addBuffer(const Stream *stream, FrameBuffer *buffer,\n>  \t\t      std::unique_ptr<Fence> fence = nullptr);\n> @@ -69,6 +73,7 @@ private:\n>\n>  \tControlList *controls_;\n>  \tControlList *metadata_;\n> +\tMetadataList metadata2_;\n>  \tBufferMap bufferMap_;\n>\n>  \tconst uint64_t cookie_;\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index 7f1e11e8f..17ca67d08 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -354,6 +354,7 @@ void Request::Private::timeout()\n>   */\n>  Request::Request(Camera *camera, uint64_t cookie)\n>  \t: Extensible(std::make_unique<Private>(camera)),\n> +\t  metadata2_(camera->_d()->metadataPlan_),\n>  \t  cookie_(cookie), status_(RequestPending)\n>  {\n>  \tcontrols_ = new ControlList(controls::controls,\n> @@ -407,6 +408,7 @@ void Request::reuse(ReuseFlag flags)\n>\n>  \tcontrols_->clear();\n>  \tmetadata_->clear();\n> +\tmetadata2_.clear();\n>  }\n>\n>  /**\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 A7E65BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Jul 2025 09:32:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6EDFF69148;\n\tMon, 28 Jul 2025 11:32:04 +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 224916146B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Jul 2025 11:32:03 +0200 (CEST)","from ideasonboard.com (mob-5-90-139-29.net.vodafone.it\n\t[5.90.139.29])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3F9E0465;\n\tMon, 28 Jul 2025 11:31:16 +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=\"QKj3gPKj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753695081;\n\tbh=l9sw4vxxhpGBhLktjS8hnZ7Hv/F0QueRMb/qthcGADY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=QKj3gPKjtoMOywhuCSk2GdbWTrSjPg13WU56/pbeIwJcvvMJ6+4weyJEKs496cg0f\n\ttSQ0fpX8n8I1/Ggl08B8DTa/eh3FhzoB3vEwbWt0bCTydlGysKpAtA467gwQ/efb4E\n\tq5z3LlazAraql3yGOiQTUiTZ0VWRy7uL09m8yPwM=","Date":"Mon, 28 Jul 2025 11:31:35 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","Subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","Message-ID":"<z6u4vr35cly2p7iexwdyge4p4n4eapcpcoq5zy4n4ztqpa7y5e@rycjvc7y3j4m>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-12-barnabas.pocze@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20250721104622.1550908-12-barnabas.pocze@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>"}},{"id":35251,"web_url":"https://patchwork.libcamera.org/comment/35251/","msgid":"<322dc3e5-b543-4cd0-955b-780f3fd76a01@ideasonboard.com>","date":"2025-07-30T14:49:05","subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","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. 07. 28. 11:31 keltezéssel, Jacopo Mondi írta:\n> Hi Barnabás\n> \n> On Mon, Jul 21, 2025 at 12:46:11PM +0200, Barnabás Pőcze wrote:\n>> Add a `MetadataList` to the `Request` object to store the metadata items\n>> returned by the camera. The metadata list is initialized using the camera's\n>> `MetadataListPlan` object, which is supposed to be filled by the pipeline\n>> handlers.\n> \n> Could you mention that for the time being, the accessor member is\n> called metadata2() ?\n\ndone\n\n\n> \n> I wonder if we should instead use metadataList() as long as we don't drop\n> metadata()\n\nSince it will eventually be removed at the end I don't think it matters too much.\nPlease confirm if I should make the change.\n\n\nRegards,\nBarnabás Pőcze\n\n> \n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n>> ---\n>>   include/libcamera/request.h | 5 +++++\n>>   src/libcamera/request.cpp   | 2 ++\n>>   2 files changed, 7 insertions(+)\n>>\n>> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n>> index e214a9d13..196557865 100644\n>> --- a/include/libcamera/request.h\n>> +++ b/include/libcamera/request.h\n>> @@ -18,6 +18,7 @@\n>>\n>>   #include <libcamera/controls.h>\n>>   #include <libcamera/fence.h>\n>> +#include <libcamera/metadata_list.h>\n>>\n>>   namespace libcamera {\n>>\n>> @@ -51,6 +52,9 @@ public:\n>>\n>>   \tControlList &controls() { return *controls_; }\n>>   \tControlList &metadata() { return *metadata_; }\n>> +#ifndef __DOXYGEN__\n>> +\t[[nodiscard]] MetadataList &metadata2() { return metadata2_; }\n>> +#endif\n>>   \tconst BufferMap &buffers() const { return bufferMap_; }\n>>   \tint addBuffer(const Stream *stream, FrameBuffer *buffer,\n>>   \t\t      std::unique_ptr<Fence> fence = nullptr);\n>> @@ -69,6 +73,7 @@ private:\n>>\n>>   \tControlList *controls_;\n>>   \tControlList *metadata_;\n>> +\tMetadataList metadata2_;\n>>   \tBufferMap bufferMap_;\n>>\n>>   \tconst uint64_t cookie_;\n>> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n>> index 7f1e11e8f..17ca67d08 100644\n>> --- a/src/libcamera/request.cpp\n>> +++ b/src/libcamera/request.cpp\n>> @@ -354,6 +354,7 @@ void Request::Private::timeout()\n>>    */\n>>   Request::Request(Camera *camera, uint64_t cookie)\n>>   \t: Extensible(std::make_unique<Private>(camera)),\n>> +\t  metadata2_(camera->_d()->metadataPlan_),\n>>   \t  cookie_(cookie), status_(RequestPending)\n>>   {\n>>   \tcontrols_ = new ControlList(controls::controls,\n>> @@ -407,6 +408,7 @@ void Request::reuse(ReuseFlag flags)\n>>\n>>   \tcontrols_->clear();\n>>   \tmetadata_->clear();\n>> +\tmetadata2_.clear();\n>>   }\n>>\n>>   /**\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 92281BDC71\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 30 Jul 2025 14:49:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4E6C76920C;\n\tWed, 30 Jul 2025 16:49:10 +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 77E71691F8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 30 Jul 2025 16:49:08 +0200 (CEST)","from [192.168.33.11] (185.182.214.105.nat.pool.zt.hu\n\t[185.182.214.105])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 09565C7A;\n\tWed, 30 Jul 2025 16:48:24 +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=\"utzFddYp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753886905;\n\tbh=sh0P/kseHzEIrQ0NpKy8qRCNw89llWs6Raj3W9xD5rI=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=utzFddYp0TT+m0wxEwrY0fRUr9nCju/95btCG06GDl9phiLtdUZESP7mr0qZsAxkq\n\tq3qNJzjBYcoZ4CzXh59hWFhNdbjWoAlDzQCLuckFYzK6Xsm09awqgVYOGEso+k4pTo\n\tG7da1IZA0dT6pP6rN5bQhSz1W9N1lh+Bx/+yNbws=","Message-ID":"<322dc3e5-b543-4cd0-955b-780f3fd76a01@ideasonboard.com>","Date":"Wed, 30 Jul 2025 16:49:05 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-12-barnabas.pocze@ideasonboard.com>\n\t<z6u4vr35cly2p7iexwdyge4p4n4eapcpcoq5zy4n4ztqpa7y5e@rycjvc7y3j4m>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<z6u4vr35cly2p7iexwdyge4p4n4eapcpcoq5zy4n4ztqpa7y5e@rycjvc7y3j4m>","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>"}},{"id":35262,"web_url":"https://patchwork.libcamera.org/comment/35262/","msgid":"<gkdpbnrqzv6v4o3y5cnykvtjlyjn4newhnhxicsb7dazw7tp2a@3dre4fcvzt7m>","date":"2025-08-02T09:57:15","subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"On Wed, Jul 30, 2025 at 04:49:05PM +0200, Barnabás Pőcze wrote:\n> Hi\n>\n> 2025. 07. 28. 11:31 keltezéssel, Jacopo Mondi írta:\n> > Hi Barnabás\n> >\n> > On Mon, Jul 21, 2025 at 12:46:11PM +0200, Barnabás Pőcze wrote:\n> > > Add a `MetadataList` to the `Request` object to store the metadata items\n> > > returned by the camera. The metadata list is initialized using the camera's\n> > > `MetadataListPlan` object, which is supposed to be filled by the pipeline\n> > > handlers.\n> >\n> > Could you mention that for the time being, the accessor member is\n> > called metadata2() ?\n>\n> done\n>\n>\n> >\n> > I wonder if we should instead use metadataList() as long as we don't drop\n> > metadata()\n>\n> Since it will eventually be removed at the end I don't think it matters too much.\n> Please confirm if I should make the change.\n>\n\nNo worries, I was thinking out loud here\n\n>\n> Regards,\n> Barnabás Pőcze\n>\n> >\n> > >\n> > > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > > Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> > > ---\n> > >   include/libcamera/request.h | 5 +++++\n> > >   src/libcamera/request.cpp   | 2 ++\n> > >   2 files changed, 7 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> > > index e214a9d13..196557865 100644\n> > > --- a/include/libcamera/request.h\n> > > +++ b/include/libcamera/request.h\n> > > @@ -18,6 +18,7 @@\n> > >\n> > >   #include <libcamera/controls.h>\n> > >   #include <libcamera/fence.h>\n> > > +#include <libcamera/metadata_list.h>\n> > >\n> > >   namespace libcamera {\n> > >\n> > > @@ -51,6 +52,9 @@ public:\n> > >\n> > >   \tControlList &controls() { return *controls_; }\n> > >   \tControlList &metadata() { return *metadata_; }\n> > > +#ifndef __DOXYGEN__\n> > > +\t[[nodiscard]] MetadataList &metadata2() { return metadata2_; }\n> > > +#endif\n> > >   \tconst BufferMap &buffers() const { return bufferMap_; }\n> > >   \tint addBuffer(const Stream *stream, FrameBuffer *buffer,\n> > >   \t\t      std::unique_ptr<Fence> fence = nullptr);\n> > > @@ -69,6 +73,7 @@ private:\n> > >\n> > >   \tControlList *controls_;\n> > >   \tControlList *metadata_;\n> > > +\tMetadataList metadata2_;\n> > >   \tBufferMap bufferMap_;\n> > >\n> > >   \tconst uint64_t cookie_;\n> > > diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> > > index 7f1e11e8f..17ca67d08 100644\n> > > --- a/src/libcamera/request.cpp\n> > > +++ b/src/libcamera/request.cpp\n> > > @@ -354,6 +354,7 @@ void Request::Private::timeout()\n> > >    */\n> > >   Request::Request(Camera *camera, uint64_t cookie)\n> > >   \t: Extensible(std::make_unique<Private>(camera)),\n> > > +\t  metadata2_(camera->_d()->metadataPlan_),\n> > >   \t  cookie_(cookie), status_(RequestPending)\n> > >   {\n> > >   \tcontrols_ = new ControlList(controls::controls,\n> > > @@ -407,6 +408,7 @@ void Request::reuse(ReuseFlag flags)\n> > >\n> > >   \tcontrols_->clear();\n> > >   \tmetadata_->clear();\n> > > +\tmetadata2_.clear();\n> > >   }\n> > >\n> > >   /**\n> > > --\n> > > 2.50.1\n> > >\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 04DF9BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat,  2 Aug 2025 09:57:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 199C36920D;\n\tSat,  2 Aug 2025 11:57:24 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0881D6920D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat,  2 Aug 2025 11:57:22 +0200 (CEST)","from ideasonboard.com (mob-5-90-138-121.net.vodafone.it\n\t[5.90.138.121])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7EAAD22B;\n\tSat,  2 Aug 2025 11:56:35 +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=\"bRqKOmUV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1754128596;\n\tbh=wlDsF6gMfHxV7v9wJAxCiW+gnaY3s4ekMfZ25VSEb9M=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=bRqKOmUVfhhlXRQT3bV1HiIjfswThIKw51hU579+kufY+pnLtND5u/OiElbWxgpHj\n\t53Q5V2E2xWbDMKLKaN0PSuzchz8cZAbu18yO5oQ3oHL5YtWkbbWQ+BvUaIoPJxrBDl\n\thT3tPd4oB+iuMNEi8pR1TfkptD0Dku9lgvDRbgL4=","Date":"Sat, 2 Aug 2025 11:57:15 +0200","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","Message-ID":"<gkdpbnrqzv6v4o3y5cnykvtjlyjn4newhnhxicsb7dazw7tp2a@3dre4fcvzt7m>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-12-barnabas.pocze@ideasonboard.com>\n\t<z6u4vr35cly2p7iexwdyge4p4n4eapcpcoq5zy4n4ztqpa7y5e@rycjvc7y3j4m>\n\t<322dc3e5-b543-4cd0-955b-780f3fd76a01@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<322dc3e5-b543-4cd0-955b-780f3fd76a01@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>"}},{"id":35874,"web_url":"https://patchwork.libcamera.org/comment/35874/","msgid":"<175818497676.2127323.13504449511216126566@neptunite.rasen.tech>","date":"2025-09-18T08:42:56","subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Barnabás,\n\nThanks for the patch.\n\nQuoting Barnabás Pőcze (2025-07-21 19:46:11)\n> Add a `MetadataList` to the `Request` object to store the metadata items\n> returned by the camera. The metadata list is initialized using the camera's\n> `MetadataListPlan` object, which is supposed to be filled by the pipeline\n> handlers.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> ---\n>  include/libcamera/request.h | 5 +++++\n>  src/libcamera/request.cpp   | 2 ++\n>  2 files changed, 7 insertions(+)\n> \n> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n> index e214a9d13..196557865 100644\n> --- a/include/libcamera/request.h\n> +++ b/include/libcamera/request.h\n> @@ -18,6 +18,7 @@\n>  \n>  #include <libcamera/controls.h>\n>  #include <libcamera/fence.h>\n> +#include <libcamera/metadata_list.h>\n>  \n>  namespace libcamera {\n>  \n> @@ -51,6 +52,9 @@ public:\n>  \n>         ControlList &controls() { return *controls_; }\n>         ControlList &metadata() { return *metadata_; }\n> +#ifndef __DOXYGEN__\n> +       [[nodiscard]] MetadataList &metadata2() { return metadata2_; }\n\nOof the name...\n\nIf we're going to remove metadata it's fine. Otherwise, as Jacopo suggested,\nI'd prefer something slightly more sustainable, like metadataList.\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> +#endif\n>         const BufferMap &buffers() const { return bufferMap_; }\n>         int addBuffer(const Stream *stream, FrameBuffer *buffer,\n>                       std::unique_ptr<Fence> fence = nullptr);\n> @@ -69,6 +73,7 @@ private:\n>  \n>         ControlList *controls_;\n>         ControlList *metadata_;\n> +       MetadataList metadata2_;\n>         BufferMap bufferMap_;\n>  \n>         const uint64_t cookie_;\n> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n> index 7f1e11e8f..17ca67d08 100644\n> --- a/src/libcamera/request.cpp\n> +++ b/src/libcamera/request.cpp\n> @@ -354,6 +354,7 @@ void Request::Private::timeout()\n>   */\n>  Request::Request(Camera *camera, uint64_t cookie)\n>         : Extensible(std::make_unique<Private>(camera)),\n> +         metadata2_(camera->_d()->metadataPlan_),\n>           cookie_(cookie), status_(RequestPending)\n>  {\n>         controls_ = new ControlList(controls::controls,\n> @@ -407,6 +408,7 @@ void Request::reuse(ReuseFlag flags)\n>  \n>         controls_->clear();\n>         metadata_->clear();\n> +       metadata2_.clear();\n>  }\n>  \n>  /**\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 0EFEDC328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 18 Sep 2025 08:43:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F18E06936F;\n\tThu, 18 Sep 2025 10:43:05 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 38DBE62C39\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 18 Sep 2025 10:43:04 +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 B4201596;\n\tThu, 18 Sep 2025 10:41:43 +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=\"bNGeLGsu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758184904;\n\tbh=LP+5PvX4WmkwlvF9nI9mCZJWxvVR5hmFGPRu7MaR39Q=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=bNGeLGsuOdMlfngwjrXOX5NPjUJaELmx+9ouMjjpG4fa9VnS5RzgJCmuv1jhw7slC\n\tbHAv7+VdXvU4trewsj+XMB+E+KZdIsVOv9POPxMzgrkeoXx/U+XtbasvThi3d54k3a\n\tqwXeYPt+yAVgiKZ7lrM94PBD2w2Xxi8VLxZNvs7E=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250721104622.1550908-12-barnabas.pocze@ideasonboard.com>","References":"<20250721104622.1550908-1-barnabas.pocze@ideasonboard.com>\n\t<20250721104622.1550908-12-barnabas.pocze@ideasonboard.com>","Subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","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 17:42:56 +0900","Message-ID":"<175818497676.2127323.13504449511216126566@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":35948,"web_url":"https://patchwork.libcamera.org/comment/35948/","msgid":"<08f05b01-e526-436d-9faa-d237404f541b@ideasonboard.com>","date":"2025-09-22T11:36:50","subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2025. 09. 18. 10:42 keltezéssel, Paul Elder írta:\n> Hi Barnabás,\n> \n> Thanks for the patch.\n> \n> Quoting Barnabás Pőcze (2025-07-21 19:46:11)\n>> Add a `MetadataList` to the `Request` object to store the metadata items\n>> returned by the camera. The metadata list is initialized using the camera's\n>> `MetadataListPlan` object, which is supposed to be filled by the pipeline\n>> handlers.\n>>\n>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n>> ---\n>>   include/libcamera/request.h | 5 +++++\n>>   src/libcamera/request.cpp   | 2 ++\n>>   2 files changed, 7 insertions(+)\n>>\n>> diff --git a/include/libcamera/request.h b/include/libcamera/request.h\n>> index e214a9d13..196557865 100644\n>> --- a/include/libcamera/request.h\n>> +++ b/include/libcamera/request.h\n>> @@ -18,6 +18,7 @@\n>>   \n>>   #include <libcamera/controls.h>\n>>   #include <libcamera/fence.h>\n>> +#include <libcamera/metadata_list.h>\n>>   \n>>   namespace libcamera {\n>>   \n>> @@ -51,6 +52,9 @@ public:\n>>   \n>>          ControlList &controls() { return *controls_; }\n>>          ControlList &metadata() { return *metadata_; }\n>> +#ifndef __DOXYGEN__\n>> +       [[nodiscard]] MetadataList &metadata2() { return metadata2_; }\n> \n> Oof the name...\n> \n> If we're going to remove metadata it's fine. Otherwise, as Jacopo suggested,\n> I'd prefer something slightly more sustainable, like metadataList.\n\nThe name is temporary, there will only be a single function named `metadata()` in the end.\n\n\nRegards,\nBarnabás Pőcze\n\n> \n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n>> +#endif\n>>          const BufferMap &buffers() const { return bufferMap_; }\n>>          int addBuffer(const Stream *stream, FrameBuffer *buffer,\n>>                        std::unique_ptr<Fence> fence = nullptr);\n>> @@ -69,6 +73,7 @@ private:\n>>   \n>>          ControlList *controls_;\n>>          ControlList *metadata_;\n>> +       MetadataList metadata2_;\n>>          BufferMap bufferMap_;\n>>   \n>>          const uint64_t cookie_;\n>> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\n>> index 7f1e11e8f..17ca67d08 100644\n>> --- a/src/libcamera/request.cpp\n>> +++ b/src/libcamera/request.cpp\n>> @@ -354,6 +354,7 @@ void Request::Private::timeout()\n>>    */\n>>   Request::Request(Camera *camera, uint64_t cookie)\n>>          : Extensible(std::make_unique<Private>(camera)),\n>> +         metadata2_(camera->_d()->metadataPlan_),\n>>            cookie_(cookie), status_(RequestPending)\n>>   {\n>>          controls_ = new ControlList(controls::controls,\n>> @@ -407,6 +408,7 @@ void Request::reuse(ReuseFlag flags)\n>>   \n>>          controls_->clear();\n>>          metadata_->clear();\n>> +       metadata2_.clear();\n>>   }\n>>   \n>>   /**\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 792F2C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Sep 2025 11:37:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D700B6B5F3;\n\tMon, 22 Sep 2025 13:36:58 +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 D417E62C35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Sep 2025 13:36:55 +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 4370022E;\n\tMon, 22 Sep 2025 13:35:33 +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=\"fKmdcLCh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758540933;\n\tbh=Bn26sJmgIVSu/tMYLTEdU542sWDigY++lsJErbE6UD0=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=fKmdcLChwHUnOI/1r7dQuo8SkPMtCFBtc2ziydu7szS+s6Pr5F6zMAFVE5Wxsp76m\n\t0tOtM+GIajEknDZPK2VPNk4EV5h/io3fit3DmU+8Nj0hkO7i1ArG+0K1+n3dK8ukLp\n\ti57SxptmLBEBhcXS6fYhTl91YvsOxOaUhSpUkf7w=","Message-ID":"<08f05b01-e526-436d-9faa-d237404f541b@ideasonboard.com>","Date":"Mon, 22 Sep 2025 13:36:50 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v2 11/22] libcamera: request: Store `MetadataList`","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-12-barnabas.pocze@ideasonboard.com>\n\t<175818497676.2127323.13504449511216126566@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":"<175818497676.2127323.13504449511216126566@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>"}}]