[{"id":33254,"web_url":"https://patchwork.libcamera.org/comment/33254/","msgid":"<173858065256.1773152.17088196404332773147@ping.linuxembedded.co.uk>","date":"2025-02-03T11:04:12","subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2025-02-03 10:43:31)\n> Fill the `FrameMetadata` object of the `FrameBuffer`s because it\n> should not be left uninitialized as users expect to be able to\n> access it and find reasonable data there.\n> \n> Bug: https://bugs.libcamera.org/show_bug.cgi?id=245\n> Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>\n\nAha, also looks good. Does this get caught by lc-compliance now ?\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> ---\n>  src/libcamera/pipeline/virtual/virtual.cpp | 18 +++++++++++++++++-\n>  src/libcamera/pipeline/virtual/virtual.h   |  1 +\n>  2 files changed, 18 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> index 94c2bd91e..1a75f35aa 100644\n> --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> @@ -286,6 +286,11 @@ int PipelineHandlerVirtual::exportFrameBuffers([[maybe_unused]] Camera *camera,\n>  int PipelineHandlerVirtual::start([[maybe_unused]] Camera *camera,\n>                                   [[maybe_unused]] const ControlList *controls)\n>  {\n> +       VirtualCameraData *data = cameraData(camera);\n> +\n> +       for (auto &s : data->streamConfigs_)\n> +               s.seq = 0;\n> +\n>         return 0;\n>  }\n>  \n> @@ -297,13 +302,24 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n>                                                Request *request)\n>  {\n>         VirtualCameraData *data = cameraData(camera);\n> +       const auto timestamp = currentTimestamp();\n>  \n>         for (auto const &[stream, buffer] : request->buffers()) {\n>                 bool found = false;\n>                 /* map buffer and fill test patterns */\n>                 for (auto &streamConfig : data->streamConfigs_) {\n>                         if (stream == &streamConfig.stream) {\n> +                               FrameMetadata &fmd = buffer->_d()->metadata();\n> +\n> +                               fmd.status = FrameMetadata::Status::FrameSuccess;\n> +                               fmd.sequence = streamConfig.seq++;\n> +                               fmd.timestamp = timestamp;\n> +\n> +                               for (const auto [i, p] : utils::enumerate(buffer->planes()))\n> +                                       fmd.planes()[i].bytesused = p.length;\n> +\n>                                 found = true;\n> +\n>                                 if (streamConfig.frameGenerator->generateFrame(\n>                                             stream->configuration().size, buffer))\n>                                         buffer->_d()->cancel();\n> @@ -315,7 +331,7 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n>                 ASSERT(found);\n>         }\n>  \n> -       request->metadata().set(controls::SensorTimestamp, currentTimestamp());\n> +       request->metadata().set(controls::SensorTimestamp, timestamp);\n>         completeRequest(request);\n>  \n>         return 0;\n> diff --git a/src/libcamera/pipeline/virtual/virtual.h b/src/libcamera/pipeline/virtual/virtual.h\n> index 92ad7d4a9..683cb82b4 100644\n> --- a/src/libcamera/pipeline/virtual/virtual.h\n> +++ b/src/libcamera/pipeline/virtual/virtual.h\n> @@ -37,6 +37,7 @@ public:\n>         struct StreamConfig {\n>                 Stream stream;\n>                 std::unique_ptr<FrameGenerator> frameGenerator;\n> +               unsigned int seq = 0;\n>         };\n>         /* The config file is parsed to the Configuration struct */\n>         struct Configuration {\n> -- \n> 2.48.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 E1280C3260\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  3 Feb 2025 11:04:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E5B4E6858A;\n\tMon,  3 Feb 2025 12:04:17 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C91E468568\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Feb 2025 12:04:15 +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 6A78C664;\n\tMon,  3 Feb 2025 12:03:04 +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=\"pgVXSYFd\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1738580584;\n\tbh=FPodqIr3wbqIO7g8x0GhR4y2sekICk6HpXniqhbmIw0=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=pgVXSYFdC+t4FgOc+MvXYvIvLi5i43ZqOmLgQ70h0v9AGd4SRZKC7GGB3gk8jFOpP\n\taayKX0ZWQKdt8E3+cItBFNf3XPT5Qqv7/unqjCP+n364oawIKW3gv+8PoA/6cl8za/\n\tD48wDmyQ5j2atuXmOtWUFrUiZYvtY2gjfaF22Hjk=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250203104318.135628-3-pobrn@protonmail.com>","References":"<20250203104318.135628-1-pobrn@protonmail.com>\n\t<20250203104318.135628-3-pobrn@protonmail.com>","Subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 03 Feb 2025 11:04:12 +0000","Message-ID":"<173858065256.1773152.17088196404332773147@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":33256,"web_url":"https://patchwork.libcamera.org/comment/33256/","msgid":"<MvoZhlrXgTYzALOlbAhxS_vWqJnCcAR1hkJhQzfJhGxogVacBFQM-RWFjPWr5GVXHkDfOuMsZgunqo3V_fF410v2j0bf89Irh_YeAAFB-oc=@protonmail.com>","date":"2025-02-03T11:14:53","subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","submitter":{"id":133,"url":"https://patchwork.libcamera.org/api/people/133/","name":"Pőcze Barnabás","email":"pobrn@protonmail.com"},"content":"2025. február 3., hétfő 12:04 keltezéssel, Kieran Bingham <kieran.bingham@ideasonboard.com> írta:\n\n> Quoting Barnabás Pőcze (2025-02-03 10:43:31)\n> > Fill the `FrameMetadata` object of the `FrameBuffer`s because it\n> > should not be left uninitialized as users expect to be able to\n> > access it and find reasonable data there.\n> >\n> > Bug: https://bugs.libcamera.org/show_bug.cgi?id=245\n> > Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>\n> \n> Aha, also looks good. Does this get caught by lc-compliance now ?\n\nNot yet.\n\n\n> \n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > ---\n> >  src/libcamera/pipeline/virtual/virtual.cpp | 18 +++++++++++++++++-\n> >  src/libcamera/pipeline/virtual/virtual.h   |  1 +\n> >  2 files changed, 18 insertions(+), 1 deletion(-)\n> >\n> > diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> > index 94c2bd91e..1a75f35aa 100644\n> > --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> > +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> > @@ -286,6 +286,11 @@ int PipelineHandlerVirtual::exportFrameBuffers([[maybe_unused]] Camera *camera,\n> >  int PipelineHandlerVirtual::start([[maybe_unused]] Camera *camera,\n> >                                   [[maybe_unused]] const ControlList *controls)\n> >  {\n> > +       VirtualCameraData *data = cameraData(camera);\n> > +\n> > +       for (auto &s : data->streamConfigs_)\n> > +               s.seq = 0;\n> > +\n> >         return 0;\n> >  }\n> >\n> > @@ -297,13 +302,24 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n> >                                                Request *request)\n> >  {\n> >         VirtualCameraData *data = cameraData(camera);\n> > +       const auto timestamp = currentTimestamp();\n> >\n> >         for (auto const &[stream, buffer] : request->buffers()) {\n> >                 bool found = false;\n> >                 /* map buffer and fill test patterns */\n> >                 for (auto &streamConfig : data->streamConfigs_) {\n> >                         if (stream == &streamConfig.stream) {\n> > +                               FrameMetadata &fmd = buffer->_d()->metadata();\n> > +\n> > +                               fmd.status = FrameMetadata::Status::FrameSuccess;\n> > +                               fmd.sequence = streamConfig.seq++;\n> > +                               fmd.timestamp = timestamp;\n> > +\n> > +                               for (const auto [i, p] : utils::enumerate(buffer->planes()))\n> > +                                       fmd.planes()[i].bytesused = p.length;\n> > +\n> >                                 found = true;\n> > +\n> >                                 if (streamConfig.frameGenerator->generateFrame(\n> >                                             stream->configuration().size, buffer))\n> >                                         buffer->_d()->cancel();\n> > @@ -315,7 +331,7 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n> >                 ASSERT(found);\n> >         }\n> >\n> > -       request->metadata().set(controls::SensorTimestamp, currentTimestamp());\n> > +       request->metadata().set(controls::SensorTimestamp, timestamp);\n> >         completeRequest(request);\n> >\n> >         return 0;\n> > diff --git a/src/libcamera/pipeline/virtual/virtual.h b/src/libcamera/pipeline/virtual/virtual.h\n> > index 92ad7d4a9..683cb82b4 100644\n> > --- a/src/libcamera/pipeline/virtual/virtual.h\n> > +++ b/src/libcamera/pipeline/virtual/virtual.h\n> > @@ -37,6 +37,7 @@ public:\n> >         struct StreamConfig {\n> >                 Stream stream;\n> >                 std::unique_ptr<FrameGenerator> frameGenerator;\n> > +               unsigned int seq = 0;\n> >         };\n> >         /* The config file is parsed to the Configuration struct */\n> >         struct Configuration {\n> > --\n> > 2.48.1\n> >\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 381EEBD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  3 Feb 2025 11:15:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5343461876;\n\tMon,  3 Feb 2025 12:15:00 +0100 (CET)","from mail-40134.protonmail.ch (mail-40134.protonmail.ch\n\t[185.70.40.134])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C701261876\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Feb 2025 12:14:58 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=protonmail.com header.i=@protonmail.com\n\theader.b=\"Qq30ceIb\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;\n\ts=protonmail3; t=1738581298; x=1738840498;\n\tbh=yWjpw/9pknkgTqE1SlP6gGPdF/1RWPijU8W5D2BqBMY=;\n\th=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:\n\tFeedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:\n\tMessage-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post;\n\tb=Qq30ceIb3aI4fpuHgKSfIJm3IOleHrl4LS8hVUdCDFAx3xxpnVgJtzsZ/AoeMS3Oi\n\tW6H5VOuRV1gcEI9j4ZcLnu0c+GaEGrtzKv2aTUhd7mUeR6aB4aTneX8VmgcDeNRL3E\n\tD6KiXAvcC/AQWRK8sRXtfjcp1xNdh2rBCWCYsg2cxwhojCj1e09SFGDd+S74Wpwgpc\n\tJKu1/d22vSPRWlO/cO+/L8FNIXheVidUUfBCpoXTPsm61rYFt1MVtiLYnj3QMrE09J\n\tRM4tWBxIOot2CoREWLtQBrzjwWmNfE4X+uqag4yql0FZZh4j2Jt1BCTnTt4Szqyf5S\n\t4dIU8sk0hSJRw==","Date":"Mon, 03 Feb 2025 11:14:53 +0000","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","Message-ID":"<MvoZhlrXgTYzALOlbAhxS_vWqJnCcAR1hkJhQzfJhGxogVacBFQM-RWFjPWr5GVXHkDfOuMsZgunqo3V_fF410v2j0bf89Irh_YeAAFB-oc=@protonmail.com>","In-Reply-To":"<173858065256.1773152.17088196404332773147@ping.linuxembedded.co.uk>","References":"<20250203104318.135628-1-pobrn@protonmail.com>\n\t<20250203104318.135628-3-pobrn@protonmail.com>\n\t<173858065256.1773152.17088196404332773147@ping.linuxembedded.co.uk>","Feedback-ID":"20568564:user:proton","X-Pm-Message-ID":"1e00ea8b5112a48e3f819103e5d299eb71fa466a","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","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":33269,"web_url":"https://patchwork.libcamera.org/comment/33269/","msgid":"<44v7yw7dlowy7kwhokpfulwftpz4b3wplgjaactuw6ikkq7quo@4d6knemw5ipv>","date":"2025-02-03T17:33:49","subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","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, Feb 03, 2025 at 10:43:31AM +0000, Barnabás Pőcze wrote:\n> Fill the `FrameMetadata` object of the `FrameBuffer`s because it\n> should not be left uninitialized as users expect to be able to\n> access it and find reasonable data there.\n>\n> Bug: https://bugs.libcamera.org/show_bug.cgi?id=245\n> Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>\n\nReviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nThanks\n  j\n\n> ---\n>  src/libcamera/pipeline/virtual/virtual.cpp | 18 +++++++++++++++++-\n>  src/libcamera/pipeline/virtual/virtual.h   |  1 +\n>  2 files changed, 18 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> index 94c2bd91e..1a75f35aa 100644\n> --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> @@ -286,6 +286,11 @@ int PipelineHandlerVirtual::exportFrameBuffers([[maybe_unused]] Camera *camera,\n>  int PipelineHandlerVirtual::start([[maybe_unused]] Camera *camera,\n>  \t\t\t\t  [[maybe_unused]] const ControlList *controls)\n>  {\n> +\tVirtualCameraData *data = cameraData(camera);\n> +\n> +\tfor (auto &s : data->streamConfigs_)\n> +\t\ts.seq = 0;\n> +\n>  \treturn 0;\n>  }\n>\n> @@ -297,13 +302,24 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n>  \t\t\t\t\t       Request *request)\n>  {\n>  \tVirtualCameraData *data = cameraData(camera);\n> +\tconst auto timestamp = currentTimestamp();\n>\n>  \tfor (auto const &[stream, buffer] : request->buffers()) {\n>  \t\tbool found = false;\n>  \t\t/* map buffer and fill test patterns */\n>  \t\tfor (auto &streamConfig : data->streamConfigs_) {\n>  \t\t\tif (stream == &streamConfig.stream) {\n> +\t\t\t\tFrameMetadata &fmd = buffer->_d()->metadata();\n> +\n> +\t\t\t\tfmd.status = FrameMetadata::Status::FrameSuccess;\n> +\t\t\t\tfmd.sequence = streamConfig.seq++;\n> +\t\t\t\tfmd.timestamp = timestamp;\n> +\n> +\t\t\t\tfor (const auto [i, p] : utils::enumerate(buffer->planes()))\n> +\t\t\t\t\tfmd.planes()[i].bytesused = p.length;\n> +\n>  \t\t\t\tfound = true;\n> +\n>  \t\t\t\tif (streamConfig.frameGenerator->generateFrame(\n>  \t\t\t\t\t    stream->configuration().size, buffer))\n>  \t\t\t\t\tbuffer->_d()->cancel();\n> @@ -315,7 +331,7 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,\n>  \t\tASSERT(found);\n>  \t}\n>\n> -\trequest->metadata().set(controls::SensorTimestamp, currentTimestamp());\n> +\trequest->metadata().set(controls::SensorTimestamp, timestamp);\n>  \tcompleteRequest(request);\n>\n>  \treturn 0;\n> diff --git a/src/libcamera/pipeline/virtual/virtual.h b/src/libcamera/pipeline/virtual/virtual.h\n> index 92ad7d4a9..683cb82b4 100644\n> --- a/src/libcamera/pipeline/virtual/virtual.h\n> +++ b/src/libcamera/pipeline/virtual/virtual.h\n> @@ -37,6 +37,7 @@ public:\n>  \tstruct StreamConfig {\n>  \t\tStream stream;\n>  \t\tstd::unique_ptr<FrameGenerator> frameGenerator;\n> +\t\tunsigned int seq = 0;\n>  \t};\n>  \t/* The config file is parsed to the Configuration struct */\n>  \tstruct Configuration {\n> --\n> 2.48.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 0A758BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  3 Feb 2025 17:33:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 469F86859E;\n\tMon,  3 Feb 2025 18:33:54 +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 DA70A61876\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Feb 2025 18:33:52 +0100 (CET)","from ideasonboard.com (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3DD7C664;\n\tMon,  3 Feb 2025 18:32:41 +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=\"MATfR/ty\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1738603961;\n\tbh=9oN3Sp9+WpuRRRrNHSirdwOPL+p0yJenb0Ccn/jWWoM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=MATfR/ty+mrh9BhrgNay2kJwmr4GFwMTyua+6nje6lwhV9s54SwgtjudbMtIpTtFZ\n\tX1iKPS5LeF/x0+nyRmMbVvCbMseIkG8JDj3rPtmF9vItwSFScBfqyVq0QGO4m2tdGe\n\t8Pcxxa9+7T7v/pfQKRanDo25NjpTKg8dxKnOd+0I=","Date":"Mon, 3 Feb 2025 18:33:49 +0100","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v1 2/3] libcamera: pipeline: virtual: Fill buffer's\n\tmetadata","Message-ID":"<44v7yw7dlowy7kwhokpfulwftpz4b3wplgjaactuw6ikkq7quo@4d6knemw5ipv>","References":"<20250203104318.135628-1-pobrn@protonmail.com>\n\t<20250203104318.135628-3-pobrn@protonmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20250203104318.135628-3-pobrn@protonmail.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>"}}]