[{"id":26232,"web_url":"https://patchwork.libcamera.org/comment/26232/","msgid":"<e1c86cde-0715-e00e-5cca-a549b7cc2606@ideasonboard.com>","date":"2023-01-16T14:11:36","subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","submitter":{"id":109,"url":"https://patchwork.libcamera.org/api/people/109/","name":"Tomi Valkeinen","email":"tomi.valkeinen@ideasonboard.com"},"content":"On 12/01/2023 19:34, Daniel Oakley wrote:\n> Currently, if there are multiple steams, the --metadata flag will\n> print the metadata for each request multiple times.\n> \n> Moving the metadata print logic outside the steam for loop this will\n> no longer occur.\n> \n> Signed-off-by: Daniel Oakley <daniel.oakley@ideasonboard.com>\n> ---\n>   src/py/cam/cam.py | 10 +++++-----\n>   1 file changed, 5 insertions(+), 5 deletions(-)\n> \n> diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n> index 2701d937..967a72f5 100755\n> --- a/src/py/cam/cam.py\n> +++ b/src/py/cam/cam.py\n> @@ -266,6 +266,11 @@ class CaptureState:\n>           ctx.last = ts\n>           ctx.fps = fps\n>   \n> +        if ctx.opt_metadata:\n> +            reqmeta = req.metadata\n> +            for ctrl, val in reqmeta.items():\n> +                print(f'\\t{ctrl} = {val}')\n> +\n>           for stream, fb in buffers.items():\n>               stream_name = ctx.stream_names[stream]\n>   \n> @@ -284,11 +289,6 @@ class CaptureState:\n>                             '/'.join([str(p.bytes_used) for p in meta.planes]),\n>                             crcs))\n>   \n> -            if ctx.opt_metadata:\n> -                reqmeta = req.metadata\n> -                for ctrl, val in reqmeta.items():\n> -                    print(f'\\t{ctrl} = {val}')\n> -\n>               if ctx.opt_save_frames:\n>                   with libcamera.utils.MappedFrameBuffer(fb) as mfb:\n>                       filename = 'frame-{}-{}-{}.data'.format(ctx.id, stream_name, ctx.reqs_completed)\n\nReviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>\n\n  Tomi","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 2D38BBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jan 2023 14:11:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 57570625D8;\n\tMon, 16 Jan 2023 15:11:42 +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 531BF61F01\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jan 2023 15:11:40 +0100 (CET)","from [192.168.1.15] (91-154-32-225.elisa-laajakaista.fi\n\t[91.154.32.225])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A0860802;\n\tMon, 16 Jan 2023 15:11:39 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1673878302;\n\tbh=J0UzERPYuR7IQPa1LE5ucubiWox/8V3JoQqt+UZNjXs=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=N3CMC81Sm1F315odnketPF3yvQpRT//kJqtfSkWSEQ+NV/zZjGXY2N+dU+7qRiMOV\n\t7DcqQ98NQgdCnlh+tedJXrSxLagHxgYDoocl992bPgRo8bHpI9NUxznc8dkcDUTl0u\n\tif1D158WqYhRYOnMdg8nePhyVHRrVdFzN+Psu+vrrpT4f4Z7FIAI/U2IJKEis6BOZk\n\tGhMCjIIz0MM9CTF8jbw1Rz674wCX4SMNd3JDYCtcFLIoUl0A/p58js5J1ke10KlrNG\n\tAS92EXTKxs3EdYs2ZCDdxcTfTz/NZMHSk6C+F8Ul17Cy8Ff8kfqhK7oULRmycHEZ73\n\tYZ2ZAGllOIvfw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1673878299;\n\tbh=J0UzERPYuR7IQPa1LE5ucubiWox/8V3JoQqt+UZNjXs=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=UaoceXr9l6AXWHhKJv5nB5QPTqojEn7LcboAhTF2OTGFJVc9yv3QiLxwBnrbcN68p\n\tghsc0EJFmN/4PYDZ5+aug2YSp03cS45vdttX+eFQebrhaMtC06bWwmoPmnpM6AczPG\n\tJHY6t8GKn4mmmiCGI0uGgIav4FpT934hDweXiA0w="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"UaoceXr9\"; dkim-atps=neutral","Message-ID":"<e1c86cde-0715-e00e-5cca-a549b7cc2606@ideasonboard.com>","Date":"Mon, 16 Jan 2023 16:11:36 +0200","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.4.2","To":"Daniel Oakley <daniel.oakley@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20230112173411.11276-1-daniel.oakley@ideasonboard.com>","Content-Language":"en-US","In-Reply-To":"<20230112173411.11276-1-daniel.oakley@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","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>","From":"Tomi Valkeinen via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26233,"web_url":"https://patchwork.libcamera.org/comment/26233/","msgid":"<Y8VcKvkdUpi8XVnx@pendragon.ideasonboard.com>","date":"2023-01-16T14:16:10","subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Daniel,\n\nThank you for the patch.\n\nOn Thu, Jan 12, 2023 at 05:34:11PM +0000, Daniel Oakley via libcamera-devel wrote:\n> Currently, if there are multiple steams, the --metadata flag will\n\nIt sometimes feel like libcamera requires lots of steam to run, but in\nthis case I believe you meant s/steams/streams/.\n\n> print the metadata for each request multiple times.\n> \n> Moving the metadata print logic outside the steam for loop this will\n\nDitto.\n\n> no longer occur.\n> \n> Signed-off-by: Daniel Oakley <daniel.oakley@ideasonboard.com>\n\nI'll fix the typos when applying the patch.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/py/cam/cam.py | 10 +++++-----\n>  1 file changed, 5 insertions(+), 5 deletions(-)\n> \n> diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n> index 2701d937..967a72f5 100755\n> --- a/src/py/cam/cam.py\n> +++ b/src/py/cam/cam.py\n> @@ -266,6 +266,11 @@ class CaptureState:\n>          ctx.last = ts\n>          ctx.fps = fps\n>  \n> +        if ctx.opt_metadata:\n> +            reqmeta = req.metadata\n> +            for ctrl, val in reqmeta.items():\n> +                print(f'\\t{ctrl} = {val}')\n> +\n>          for stream, fb in buffers.items():\n>              stream_name = ctx.stream_names[stream]\n>  \n> @@ -284,11 +289,6 @@ class CaptureState:\n>                            '/'.join([str(p.bytes_used) for p in meta.planes]),\n>                            crcs))\n>  \n> -            if ctx.opt_metadata:\n> -                reqmeta = req.metadata\n> -                for ctrl, val in reqmeta.items():\n> -                    print(f'\\t{ctrl} = {val}')\n> -\n>              if ctx.opt_save_frames:\n>                  with libcamera.utils.MappedFrameBuffer(fb) as mfb:\n>                      filename = 'frame-{}-{}-{}.data'.format(ctx.id, stream_name, ctx.reqs_completed)","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 F0870BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jan 2023 14:16:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 33EE4625E4;\n\tMon, 16 Jan 2023 15:16:12 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DFFC761F01\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jan 2023 15:16:10 +0100 (CET)","from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi\n\t[213.243.189.158])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4FCA3802;\n\tMon, 16 Jan 2023 15:16:10 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1673878572;\n\tbh=Jwjz3awwADDPVSzwsfwQWiInGagk7iVPfPqYlKqK1oU=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=UeTDZUkYz3Y5ARYlXrqh1P9xcUWLsGB5ez8T2hOEIwW5+1bttncy4niDiRhmo2bNe\n\tzC6ZK1VzcvcR/sMpbsyomNcfXI55O7E9RgsH7DbZhW04ZF7TYUi9bi9fzn1ID7AgZS\n\trTri1f2Hoi3g01fvmo75lFRRU24BY15XIcTTzZEUi0lk6ypsnk0FduECmIE2xklXoC\n\thmQeyFKPKJBrs26DeHbZB9Ym8Rw7l9XcFjs+dUOk8mD+Xiofr41HsNuErfbNJ1ZByD\n\thqXFuu6bBJOcugd8ebwq4jQwXU1tMaET5lD+KOwY7AZQg1eX+CMxUz4pzB5Z9MIfFe\n\t4EJwYqsWxZKeg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1673878570;\n\tbh=Jwjz3awwADDPVSzwsfwQWiInGagk7iVPfPqYlKqK1oU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=lqFnZcDw0HM8bx0Cpa+3RpIGXprHHIOJsaPV7t5hSi6AMpLdAVExCkbRoagfsQyAh\n\t8+qN71gDtZZhFYinjT8ZnSyB5BC/kkV16Hje31YzPwAQOHGh/bB8Z5WnvCyFqk6mEY\n\t/slTXKMvrSXZ0bLYUuu27/bovUEsnSo7YOFQzgKc="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"lqFnZcDw\"; dkim-atps=neutral","Date":"Mon, 16 Jan 2023 16:16:10 +0200","To":"Daniel Oakley <daniel.oakley@ideasonboard.com>","Message-ID":"<Y8VcKvkdUpi8XVnx@pendragon.ideasonboard.com>","References":"<20230112173411.11276-1-daniel.oakley@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230112173411.11276-1-daniel.oakley@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26239,"web_url":"https://patchwork.libcamera.org/comment/26239/","msgid":"<8d8e4c6096691263bd2aba95f4630e6b9c9865c6.camel@ideasonboard.com>","date":"2023-01-16T17:00:16","subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","submitter":{"id":145,"url":"https://patchwork.libcamera.org/api/people/145/","name":"Daniel Oakley","email":"daniel.oakley@ideasonboard.com"},"content":"Thank you for reviewing this and for offering to fix those typos when\napplying the patch. I frequently impress myself with such typos, but\n\"steam\" and \"stream\" is a new one for me.\n\nThanks again,\nDaniel\n\nOn Mon, 2023-01-16 at 16:16 +0200, Laurent Pinchart wrote:\n> Hi Daniel,\n> \n> Thank you for the patch.\n> \n> On Thu, Jan 12, 2023 at 05:34:11PM +0000, Daniel Oakley via\n> libcamera-devel wrote:\n> > Currently, if there are multiple steams, the --metadata flag will\n> \n> It sometimes feel like libcamera requires lots of steam to run, but\n> in\n> this case I believe you meant s/steams/streams/.\n> \n> > print the metadata for each request multiple times.\n> > \n> > Moving the metadata print logic outside the steam for loop this\n> > will\n> \n> Ditto.\n> \n> > no longer occur.\n> > \n> > Signed-off-by: Daniel Oakley <daniel.oakley@ideasonboard.com>\n> \n> I'll fix the typos when applying the patch.\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> > ---\n> >  src/py/cam/cam.py | 10 +++++-----\n> >  1 file changed, 5 insertions(+), 5 deletions(-)\n> > \n> > diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n> > index 2701d937..967a72f5 100755\n> > --- a/src/py/cam/cam.py\n> > +++ b/src/py/cam/cam.py\n> > @@ -266,6 +266,11 @@ class CaptureState:\n> >          ctx.last = ts\n> >          ctx.fps = fps\n> >  \n> > +        if ctx.opt_metadata:\n> > +            reqmeta = req.metadata\n> > +            for ctrl, val in reqmeta.items():\n> > +                print(f'\\t{ctrl} = {val}')\n> > +\n> >          for stream, fb in buffers.items():\n> >              stream_name = ctx.stream_names[stream]\n> >  \n> > @@ -284,11 +289,6 @@ class CaptureState:\n> >                            '/'.join([str(p.bytes_used) for p in\n> > meta.planes]),\n> >                            crcs))\n> >  \n> > -            if ctx.opt_metadata:\n> > -                reqmeta = req.metadata\n> > -                for ctrl, val in reqmeta.items():\n> > -                    print(f'\\t{ctrl} = {val}')\n> > -\n> >              if ctx.opt_save_frames:\n> >                  with libcamera.utils.MappedFrameBuffer(fb) as mfb:\n> >                      filename = 'frame-{}-{}-\n> > {}.data'.format(ctx.id, stream_name, ctx.reqs_completed)\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 94186BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jan 2023 17:00:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B1138625D8;\n\tMon, 16 Jan 2023 18:00:25 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3723E61F01\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jan 2023 18:00:24 +0100 (CET)","from [192.168.5.107] (unknown [90.242.103.36])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 98C7B802;\n\tMon, 16 Jan 2023 18:00:23 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1673888425;\n\tbh=Vud5zjHfyfJ0lGcOr4sMUfhCeaBCmG1+H5YGQwjvv6c=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=abg2QjbIF7E/P75UvUeybq9nln1w5ir3OcKpWrzMpOta4jr6MVCeX58RGfqxXq3hn\n\tYcT1LkCq5TmXp1LatHNWHqMQ+vH79EKXqpNGSyqCc4lmRzQZI62JQm02HiVzsXVL4D\n\tNRPE2/O8MYprVM3uHQSx7ay/pIPvKG9WkGXVwDIbBqCqv7Lu2hFgRJu3vZ0ws+pU8q\n\tywlXerIPEmOXnktxULwreACn137n7YlfD+UyAZmQH+VE+WeRl2DoxFAWpLppw5arcV\n\t6cEgfWhBlLY2ueJ8lRdUtFsLis+LT8ZNx/eCm+kZRM8D8Ao/aSws6YGpKdFU0QkKNI\n\tjCg8BQK7Shl5g==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1673888423;\n\tbh=Vud5zjHfyfJ0lGcOr4sMUfhCeaBCmG1+H5YGQwjvv6c=;\n\th=Subject:From:To:Cc:Date:In-Reply-To:References:From;\n\tb=Wxqj7Qo5JgMiUii5c87RlnrwObdCf62VApFbFwLBIA6y2+4hv4yUKd/V+S4oeL8lm\n\tFsDqo2MUKGC0kjpz9cpubvTfcnJydOGlgBgfuwrvH+QFwjSJwtGQzdtvT8Yzays/IS\n\t8Q83kIO5/HwREK1qKi3hM4CbzwQ7l9ZdGGBm3Ku4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Wxqj7Qo5\"; dkim-atps=neutral","Message-ID":"<8d8e4c6096691263bd2aba95f4630e6b9c9865c6.camel@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Mon, 16 Jan 2023 17:00:16 +0000","In-Reply-To":"<Y8VcKvkdUpi8XVnx@pendragon.ideasonboard.com>","References":"<20230112173411.11276-1-daniel.oakley@ideasonboard.com>\n\t<Y8VcKvkdUpi8XVnx@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"base64","User-Agent":"Evolution 3.46.3 ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH] py: cam.py: Fix duplicate metadata\n\toutput if more than one steam","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>","From":"Daniel Oakley via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Daniel Oakley <daniel.oakley@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]