[{"id":21966,"web_url":"https://patchwork.libcamera.org/comment/21966/","msgid":"<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","date":"2022-01-06T16:16:47","subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for this patch!\n\nOn Thu, 6 Jan 2022 at 11:32, Naushir Patuck <naush@raspberrypi.com> wrote:\n>\n> The libcamerasrc gstreamer component does seem to not allow stream resolutions\n> that are not advertised by PipelineHandler::generateConfiguration(). This has\n> been raised in a bug report [1].\n>\n> Fix this behavior by advertising a SizeRange from the minimum ISP resolution, up\n> to the sensor resolution from PipelineHandlerRPi::generateConfiguration().\n>\n> [1] https://bugs.libcamera.org/show_bug.cgi?id=105\n>\n> Fixes: f16acb275c85 (\"pipeline: raspberrypi: Restrict the advertised maximum ISP output resolution\")\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++++--\n>  1 file changed, 5 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> index b5c687da467f..220a5749c0d9 100644\n> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> @@ -639,8 +639,11 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n>                          */\n>                         for (const auto &format : fmts) {\n>                                 PixelFormat pf = format.first.toPixelFormat();\n> -                               if (pf.isValid())\n> -                                       deviceFormats[pf].emplace_back(sensorSize);\n> +                               if (pf.isValid()) {\n> +                                       const SizeRange &ispSizes = format.second[0];\n> +                                       deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,\n> +                                                                      ispSizes.hStep, ispSizes.vStep);\n> +                               }\n\nYes, looks fine to me.\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nJust one related question... I wonder if we should munge those sizes\n(and step values) so that applications only ever see values where the\nwidth and stride match.\n\nIf I do that then cheese (which uses gstreamer) actually produces\nnon-garbled images. Hurray (never seen that before)! Though trying to\nrun cheese using v4l2-compat.so seems to fail whatever I try. *sigh*\n\nDavid\n\n>                         }\n>                 }\n>\n> --\n> 2.25.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 C63ACBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  6 Jan 2022 16:17:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E37C3604F8;\n\tThu,  6 Jan 2022 17:17:01 +0100 (CET)","from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com\n\t[IPv6:2a00:1450:4864:20::42f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 48BF260219\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  6 Jan 2022 17:16:59 +0100 (CET)","by mail-wr1-x42f.google.com with SMTP id v6so5768766wra.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 06 Jan 2022 08:16:59 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"K/bv+5+i\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=ZIA6b6jtPfylUe1UMdclQt66zsjL9B6TMrLUi23Y89I=;\n\tb=K/bv+5+ivSjUELut35i2fCNWRuI3Hw7wzCd3M9TyKbUfwIxQFK59/Al5ScC0UnRPm6\n\tZlhhW8RQtgYEALZQLSefsOs20RBLobmT2VFdSqgQLLVAA3ZIrJn3myfz/LHDwG7uNzhA\n\ti1Qflu5F01IODo8X8AlRsK9WD2PwWWx7MeR+eqKevMCpJKNtdu+LInMr18dpAuqWhwFI\n\tLV8uaIf8a8azoXmIqFyajUpiTl37JVucoMJJn7fXRHWknNfjEt4njOmJuGpRRF7KeZfQ\n\t/qZjWv158DteW65GDQ8Cc/jgljoQbDazu6U2bLz+V8Ub4vkApy7yoFInIAMaCl3v1UqS\n\tqZ6Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=ZIA6b6jtPfylUe1UMdclQt66zsjL9B6TMrLUi23Y89I=;\n\tb=zIrJsncLdHmB9/Am6DNgSOm1zIRNuCMwRDoyyl4wmmT0fi1pB4L8i22QCwPrfpiLbE\n\tOqDIvu9P93wDwN29pcG6RDEirZNIR+3ztZIblhp7XtnWtUo08XuOyROQbrNp8Ii77EYE\n\tkLZBUfsjyqlZ4/anPSoy19PxGfu6O3Iv/oCuV56kP7kW9O36RnsSf0ihdk9K39V3aSYY\n\tzblv/9k7D1+RgaCh+JDOpN2gqU39Gxz9BXuJWf6z3FT+ZP77Hf6TzdtF3bAHgI+61W62\n\tcUNDAiyoL0DFMujQN46K5HCL1NTDHWulJMw+8zrNFzcgLftww3Du7Xo8/NbEF47nKZR6\n\tLlgw==","X-Gm-Message-State":"AOAM530utN6sUSPiw+1FNDeQdwDUkEZPEVVdU9jWsMJSxrHxrJsF9aLa\n\tWpLrXH/fjMf4/bpSdHrfjzV0oKEtG5Ttupgx8fEZyw==","X-Google-Smtp-Source":"ABdhPJxFQJdg6y3Cb//W8ZDgAIjItrHC632j2JPS2syqLiH9ysMXMuRsfdw23weqXDLrEyt8hsj4BtXB1Ec4a5+lmOc=","X-Received":"by 2002:adf:ea0d:: with SMTP id\n\tq13mr49665178wrm.597.1641485818668; \n\tThu, 06 Jan 2022 08:16:58 -0800 (PST)","MIME-Version":"1.0","References":"<20220106113242.2383324-1-naush@raspberrypi.com>","In-Reply-To":"<20220106113242.2383324-1-naush@raspberrypi.com>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Thu, 6 Jan 2022 16:16:47 +0000","Message-ID":"<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21967,"web_url":"https://patchwork.libcamera.org/comment/21967/","msgid":"<CAEmqJPpgq0zQs0uo_L11NQq2pV__2POcHemkDk6Tf9UK70CMMg@mail.gmail.com>","date":"2022-01-06T16:31:25","subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi David,\n\nOn Thu, 6 Jan 2022 at 16:16, David Plowman <david.plowman@raspberrypi.com>\nwrote:\n\n> Hi Naush\n>\n> Thanks for this patch!\n>\n> On Thu, 6 Jan 2022 at 11:32, Naushir Patuck <naush@raspberrypi.com> wrote:\n> >\n> > The libcamerasrc gstreamer component does seem to not allow stream\n> resolutions\n> > that are not advertised by PipelineHandler::generateConfiguration().\n> This has\n> > been raised in a bug report [1].\n> >\n> > Fix this behavior by advertising a SizeRange from the minimum ISP\n> resolution, up\n> > to the sensor resolution from\n> PipelineHandlerRPi::generateConfiguration().\n> >\n> > [1] https://bugs.libcamera.org/show_bug.cgi?id=105\n> >\n> > Fixes: f16acb275c85 (\"pipeline: raspberrypi: Restrict the advertised\n> maximum ISP output resolution\")\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++++--\n> >  1 file changed, 5 insertions(+), 2 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > index b5c687da467f..220a5749c0d9 100644\n> > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > @@ -639,8 +639,11 @@ CameraConfiguration\n> *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n> >                          */\n> >                         for (const auto &format : fmts) {\n> >                                 PixelFormat pf =\n> format.first.toPixelFormat();\n> > -                               if (pf.isValid())\n> > -\n>  deviceFormats[pf].emplace_back(sensorSize);\n> > +                               if (pf.isValid()) {\n> > +                                       const SizeRange &ispSizes =\n> format.second[0];\n> > +\n>  deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,\n> > +\n> ispSizes.hStep, ispSizes.vStep);\n> > +                               }\n>\n> Yes, looks fine to me.\n>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n>\n> Just one related question... I wonder if we should munge those sizes\n> (and step values) so that applications only ever see values where the\n> width and stride match.\n>\n> If I do that then cheese (which uses gstreamer) actually produces\n> non-garbled images. Hurray (never seen that before)! Though trying to\n> run cheese using v4l2-compat.so seems to fail whatever I try. *sigh*\n>\n\nI did think about doing this, but wasn't sure if it was how we should solve\nthis\nproblem... Still unsure!\n\nRegards,\nNaush\n\n\n\n>\n> David\n>\n> >                         }\n> >                 }\n> >\n> > --\n> > 2.25.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 4A5FCBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  6 Jan 2022 16:31:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8363560925;\n\tThu,  6 Jan 2022 17:31:43 +0100 (CET)","from mail-lj1-x235.google.com (mail-lj1-x235.google.com\n\t[IPv6:2a00:1450:4864:20::235])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 493C160219\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  6 Jan 2022 17:31:42 +0100 (CET)","by mail-lj1-x235.google.com with SMTP id t2so4978161ljo.6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 06 Jan 2022 08:31:42 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"tG+Itie6\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=oUYOgUjJDxmIltYuvMqlVMUoFhPJgPN1NklrGf0/A5Q=;\n\tb=tG+Itie6wn+LQkZF689rPeDl3bp0R9pommjtBcznriquPr/gwEx9Eh0W5C3oVg+iph\n\tOAMOzo0u3OynB6WiY0c5RmbCN62N2T1dwAKU+OgiObBXeocX93qF5a4j1mZuKyL13pPS\n\tQtdPgkDFSpRVGSPR8TMUQHUg7W3pxL1LXqxTy9YYAvyJWNz/nWajtdw36iUJemInVN6W\n\tQcLjGMLYWeIbB7Mxpvhp3of1Ljl/gOq9JdvWGZiJa2bJz49DhI5W5LXUtfGLZvhM/AWQ\n\tsW5bbbbuJhCzez0eRqdybMksLYKMutMdOG1yTltJ0463nAhWGWFUjAi63Y0Niorc+WKY\n\tZ/fw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=oUYOgUjJDxmIltYuvMqlVMUoFhPJgPN1NklrGf0/A5Q=;\n\tb=CIxz0CzRyLH8DF+0dGyXuif+315VC/4JgsLA8ZCeY7PTwiiERL50ZyYBHzRSSwVDGZ\n\tPXe0LMhTprMR7umvxWOTmdGGHG19rEScJRxasFPbjQgdR/eWejyWgLQ1wp+i00yVZNZc\n\tTwAmlaYd406CwUMS+D/Vb+kD7JLYNEHo4lOVzB61ReirKqqtMEsqrWoUTwJM5WOyhQJV\n\t/rJICNjXtf0Y5sNe08IQBrvdAKgrTuXlfCD4q4oHiL5SgtNF1S5r9ZV0ovlh8ljv5ILW\n\teJrZrG1rIEwFXvFtsxysK9YVQAhb5ZBKh/1Ultjt8+/UnaZmkZ03MVpEMkwTRFD7eetv\n\tBGEg==","X-Gm-Message-State":"AOAM531olKbihPWr0GVG8QxyD2KtRu0ZqF3VBPoi9mkgERZS9nizslwl\n\tyARvxwj0m7+UPVe7nThYojNkXJqfgZ91W7247e5LFg==","X-Google-Smtp-Source":"ABdhPJwHOoL8Mj/NTKx39EI3CvwPE0doQXyaDVBmpu5f0yISm2EWvSe8d6GOSdOAFC8nT2AjCEnypPHevcprUHQll1w=","X-Received":"by 2002:a05:651c:510:: with SMTP id\n\to16mr32149136ljp.372.1641486701464; \n\tThu, 06 Jan 2022 08:31:41 -0800 (PST)","MIME-Version":"1.0","References":"<20220106113242.2383324-1-naush@raspberrypi.com>\n\t<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","In-Reply-To":"<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Thu, 6 Jan 2022 16:31:25 +0000","Message-ID":"<CAEmqJPpgq0zQs0uo_L11NQq2pV__2POcHemkDk6Tf9UK70CMMg@mail.gmail.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Content-Type":"multipart/alternative; boundary=\"000000000000be9ee505d4ec6776\"","Subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21976,"web_url":"https://patchwork.libcamera.org/comment/21976/","msgid":"<164156965436.10801.14717762533647363402@Monstersaurus>","date":"2022-01-07T15:34:14","subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting David Plowman (2022-01-06 16:16:47)\n> Hi Naush\n> \n> Thanks for this patch!\n> \n> On Thu, 6 Jan 2022 at 11:32, Naushir Patuck <naush@raspberrypi.com> wrote:\n> >\n> > The libcamerasrc gstreamer component does seem to not allow stream resolutions\n> > that are not advertised by PipelineHandler::generateConfiguration(). This has\n> > been raised in a bug report [1].\n> >\n> > Fix this behavior by advertising a SizeRange from the minimum ISP resolution, up\n> > to the sensor resolution from PipelineHandlerRPi::generateConfiguration().\n> >\n> > [1] https://bugs.libcamera.org/show_bug.cgi?id=105\n> >\n> > Fixes: f16acb275c85 (\"pipeline: raspberrypi: Restrict the advertised maximum ISP output resolution\")\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++++--\n> >  1 file changed, 5 insertions(+), 2 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > index b5c687da467f..220a5749c0d9 100644\n> > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > @@ -639,8 +639,11 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n> >                          */\n> >                         for (const auto &format : fmts) {\n> >                                 PixelFormat pf = format.first.toPixelFormat();\n> > -                               if (pf.isValid())\n> > -                                       deviceFormats[pf].emplace_back(sensorSize);\n> > +                               if (pf.isValid()) {\n> > +                                       const SizeRange &ispSizes = format.second[0];\n> > +                                       deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,\n> > +                                                                      ispSizes.hStep, ispSizes.vStep);\n> > +                               }\n> \n> Yes, looks fine to me.\n> \n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> \n> Just one related question... I wonder if we should munge those sizes\n> (and step values) so that applications only ever see values where the\n> width and stride match.\n> \n> If I do that then cheese (which uses gstreamer) actually produces\n> non-garbled images. Hurray (never seen that before)! Though trying to\n> run cheese using v4l2-compat.so seems to fail whatever I try. *sigh*\n\nI think if you try to run cheese with the v4l2-compat layer, while you\nhave the gstreamer plugin available they'll conflict, as we can only\nhave one CameraManager and you'll end up with two ...\n\nPerhaps that could be fixed somehow in the future if they could both end\nup mapping to the same one in the same process contexts ...\n\nThis patch seems good though, I interpret it as exposing all the size\noptions available from the isp min, only up to the sensor resolution\nwhich seems quite reasonable.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n--\nKieran\n\n\n> \n> David\n> \n> >                         }\n> >                 }\n> >\n> > --\n> > 2.25.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 B5072BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  7 Jan 2022 15:34:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1C4CD608E6;\n\tFri,  7 Jan 2022 16:34:19 +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 B4E8060868\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  7 Jan 2022 16:34:17 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 589618D7;\n\tFri,  7 Jan 2022 16:34:17 +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=\"cKZuGiNV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1641569657;\n\tbh=WqH/JV9UDtMx3MY+NCdcFMU4OllXHMYc+E3WI7lcUl4=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=cKZuGiNVnGLAINj9qpZNupjz7EZ+XoUoIAYC5KEb7cKtU4v573b2paZ3NYqyH+rxF\n\tRX2wOP6tFJg144WCRvSuOYlelURdAp0qnro5wrD4PYl1HsJE5QuAIwo0xcVyufRKYr\n\tdMj6nHT7J1rInbpY7eFx2opV0QYWuqxs9Du/V+fA=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","References":"<20220106113242.2383324-1-naush@raspberrypi.com>\n\t<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"David Plowman <david.plowman@raspberrypi.com>,\n\tNaushir Patuck <naush@raspberrypi.com>","Date":"Fri, 07 Jan 2022 15:34:14 +0000","Message-ID":"<164156965436.10801.14717762533647363402@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21977,"web_url":"https://patchwork.libcamera.org/comment/21977/","msgid":"<CAHW6GYJi09Akry4iGzr5APGSZRKv_F=muGPOcLX3mV6+BzCj_Q@mail.gmail.com>","date":"2022-01-07T15:37:10","subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Kieran\n\nThanks for the comments.\n\nOn Fri, 7 Jan 2022 at 15:34, Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting David Plowman (2022-01-06 16:16:47)\n> > Hi Naush\n> >\n> > Thanks for this patch!\n> >\n> > On Thu, 6 Jan 2022 at 11:32, Naushir Patuck <naush@raspberrypi.com> wrote:\n> > >\n> > > The libcamerasrc gstreamer component does seem to not allow stream resolutions\n> > > that are not advertised by PipelineHandler::generateConfiguration(). This has\n> > > been raised in a bug report [1].\n> > >\n> > > Fix this behavior by advertising a SizeRange from the minimum ISP resolution, up\n> > > to the sensor resolution from PipelineHandlerRPi::generateConfiguration().\n> > >\n> > > [1] https://bugs.libcamera.org/show_bug.cgi?id=105\n> > >\n> > > Fixes: f16acb275c85 (\"pipeline: raspberrypi: Restrict the advertised maximum ISP output resolution\")\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > ---\n> > >  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++++--\n> > >  1 file changed, 5 insertions(+), 2 deletions(-)\n> > >\n> > > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > index b5c687da467f..220a5749c0d9 100644\n> > > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > @@ -639,8 +639,11 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n> > >                          */\n> > >                         for (const auto &format : fmts) {\n> > >                                 PixelFormat pf = format.first.toPixelFormat();\n> > > -                               if (pf.isValid())\n> > > -                                       deviceFormats[pf].emplace_back(sensorSize);\n> > > +                               if (pf.isValid()) {\n> > > +                                       const SizeRange &ispSizes = format.second[0];\n> > > +                                       deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,\n> > > +                                                                      ispSizes.hStep, ispSizes.vStep);\n> > > +                               }\n> >\n> > Yes, looks fine to me.\n> >\n> > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> >\n> > Just one related question... I wonder if we should munge those sizes\n> > (and step values) so that applications only ever see values where the\n> > width and stride match.\n> >\n> > If I do that then cheese (which uses gstreamer) actually produces\n> > non-garbled images. Hurray (never seen that before)! Though trying to\n> > run cheese using v4l2-compat.so seems to fail whatever I try. *sigh*\n>\n> I think if you try to run cheese with the v4l2-compat layer, while you\n> have the gstreamer plugin available they'll conflict, as we can only\n> have one CameraManager and you'll end up with two ...\n>\n> Perhaps that could be fixed somehow in the future if they could both end\n> up mapping to the same one in the same process contexts ...\n>\n> This patch seems good though, I interpret it as exposing all the size\n> options available from the isp min, only up to the sensor resolution\n> which seems quite reasonable.\n\nWould you have a view on the alignment question? (i.e. only\nadvertising sizes where the width happens to be such that the stride\nmatches it exactly with no padding bytes)\n\nThanks\nDavid\n\n>\n>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> --\n> Kieran\n>\n>\n> >\n> > David\n> >\n> > >                         }\n> > >                 }\n> > >\n> > > --\n> > > 2.25.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 7214DBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  7 Jan 2022 15:37:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BB55B608E6;\n\tFri,  7 Jan 2022 16:37:22 +0100 (CET)","from mail-wr1-x430.google.com (mail-wr1-x430.google.com\n\t[IPv6:2a00:1450:4864:20::430])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 36D6760868\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  7 Jan 2022 16:37:21 +0100 (CET)","by mail-wr1-x430.google.com with SMTP id t28so5001315wrb.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 07 Jan 2022 07:37:21 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"lPQItpjj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=PZxhR35iLT6TsRcLFz1J8IsrpKZQ4o1Q0x4FuugaaAM=;\n\tb=lPQItpjjm0zdq4FznzwRpzyda4qpQi6GEBCn9mF/fauStoyr3GVLBgEzQ0SQR8guAy\n\tFtOCTJUVEFbjtLkwhxlJv0LN4a1G4grHcAARoo49MNIX3boH/4waIKzhuwNQt1Du7YuU\n\tuoMRaqnSPKzFlAAInyl+MvFgZ2pRoWmfZhK4dRCSNA25SjG2HYWamHNUm15WQuk7IVSi\n\tvXAw6k1IRnZ8kxyy0uJ1OmGM4t4nA6w6vwpBPex8sFVZfCmKMxC65DutpKY/IoNAQcEs\n\tvKh9hiMwiOrcqYtIFoa3iOLV4xpFfafEE/ZrUCUHXXturwI8RFi4baO11DtvDDK3uw3f\n\t26/Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=PZxhR35iLT6TsRcLFz1J8IsrpKZQ4o1Q0x4FuugaaAM=;\n\tb=G1QAoREelNDd3eVwwFBn9+234WSXmae9KMr+KGMsAtqHg9KllTHgdTOeh+CCsNCpq3\n\ts93H7U4x/X4ZQmeBvhurRA/aHW/kv1DJCMm8FllPr4EyR1ST4qSlZ5weVpBDhstA+q/W\n\tyy9e40Q3N3Qbv/cmdR5UEXVMiG7ZlJdPjq8CFXmr1fAE9hVqtFhInIHm9YuGeHaFIDVz\n\tmTGXqmCg6S97UuvDkORucMLZob3xuEfejpDFt9NGMdA1w0d7vjs4njWDePcOeMTqvYbP\n\tyvmg5ypyq2LJ3AdazNrJF5+5bS3wjNVauLP1eijExrjGr4T18/x++FPYh2tcWhcC/aPM\n\tYb0w==","X-Gm-Message-State":"AOAM533E3pQwy/0K/Tue0aPDjvObTxTKlKpmd5eZcgvd/3n1zQVxy6lJ\n\tk/wMmBWktQcg7rNDuPgJ78q6RWpXB7iwGrtDlSGePMDLJMPuzg==","X-Google-Smtp-Source":"ABdhPJzoWjK8ak5hlhCMCyr6WqXzcbnrs9aIE8C2jaw+0I/AyEiSygpxYnafZorjv3SN+1XVj1j17mK0BzanGm9l+qM=","X-Received":"by 2002:adf:ea0d:: with SMTP id\n\tq13mr53206572wrm.597.1641569840924; \n\tFri, 07 Jan 2022 07:37:20 -0800 (PST)","MIME-Version":"1.0","References":"<20220106113242.2383324-1-naush@raspberrypi.com>\n\t<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>\n\t<164156965436.10801.14717762533647363402@Monstersaurus>","In-Reply-To":"<164156965436.10801.14717762533647363402@Monstersaurus>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Fri, 7 Jan 2022 15:37:10 +0000","Message-ID":"<CAHW6GYJi09Akry4iGzr5APGSZRKv_F=muGPOcLX3mV6+BzCj_Q@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":22053,"web_url":"https://patchwork.libcamera.org/comment/22053/","msgid":"<164258944518.10801.2031224847905495070@Monstersaurus>","date":"2022-01-19T10:50:45","subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi David,\n\nQuoting David Plowman (2022-01-07 15:37:10)\n> Hi Kieran\n> \n> Thanks for the comments.\n> \n> On Fri, 7 Jan 2022 at 15:34, Kieran Bingham\n> <kieran.bingham@ideasonboard.com> wrote:\n> >\n> > Quoting David Plowman (2022-01-06 16:16:47)\n> > > Hi Naush\n> > >\n> > > Thanks for this patch!\n> > >\n> > > On Thu, 6 Jan 2022 at 11:32, Naushir Patuck <naush@raspberrypi.com> wrote:\n> > > >\n> > > > The libcamerasrc gstreamer component does seem to not allow stream resolutions\n> > > > that are not advertised by PipelineHandler::generateConfiguration(). This has\n> > > > been raised in a bug report [1].\n> > > >\n> > > > Fix this behavior by advertising a SizeRange from the minimum ISP resolution, up\n> > > > to the sensor resolution from PipelineHandlerRPi::generateConfiguration().\n> > > >\n> > > > [1] https://bugs.libcamera.org/show_bug.cgi?id=105\n> > > >\n> > > > Fixes: f16acb275c85 (\"pipeline: raspberrypi: Restrict the advertised maximum ISP output resolution\")\n> > > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > > ---\n> > > >  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 7 +++++--\n> > > >  1 file changed, 5 insertions(+), 2 deletions(-)\n> > > >\n> > > > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > > index b5c687da467f..220a5749c0d9 100644\n> > > > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > > @@ -639,8 +639,11 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,\n> > > >                          */\n> > > >                         for (const auto &format : fmts) {\n> > > >                                 PixelFormat pf = format.first.toPixelFormat();\n> > > > -                               if (pf.isValid())\n> > > > -                                       deviceFormats[pf].emplace_back(sensorSize);\n> > > > +                               if (pf.isValid()) {\n> > > > +                                       const SizeRange &ispSizes = format.second[0];\n> > > > +                                       deviceFormats[pf].emplace_back(ispSizes.min, sensorSize,\n> > > > +                                                                      ispSizes.hStep, ispSizes.vStep);\n> > > > +                               }\n> > >\n> > > Yes, looks fine to me.\n> > >\n> > > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > >\n> > > Just one related question... I wonder if we should munge those sizes\n> > > (and step values) so that applications only ever see values where the\n> > > width and stride match.\n> > >\n> > > If I do that then cheese (which uses gstreamer) actually produces\n> > > non-garbled images. Hurray (never seen that before)! Though trying to\n> > > run cheese using v4l2-compat.so seems to fail whatever I try. *sigh*\n> >\n> > I think if you try to run cheese with the v4l2-compat layer, while you\n> > have the gstreamer plugin available they'll conflict, as we can only\n> > have one CameraManager and you'll end up with two ...\n> >\n> > Perhaps that could be fixed somehow in the future if they could both end\n> > up mapping to the same one in the same process contexts ...\n> >\n> > This patch seems good though, I interpret it as exposing all the size\n> > options available from the isp min, only up to the sensor resolution\n> > which seems quite reasonable.\n> \n> Would you have a view on the alignment question? (i.e. only\n> advertising sizes where the width happens to be such that the stride\n> matches it exactly with no padding bytes)\n\nI would say if there are known limitations, then it is the\nresponsibility of the PH to ensure it only reports what is supported.\nThough in this case, it's a little bit dubious as the padding bytes are\nsupported, but I think we're likely not conveying the stride correctly\nto the gstreamer element perhaps.\n\nSo I think that's all worth some investigation, but on top. I'll create\na bugzilla entry to track it, as I think this patch could be merged\nwithout waiting for that.\n\n  https://bugs.libcamera.org/show_bug.cgi?id=108\n\nEither we should correctly convey the stride information to gstreamer,\nand it should make use of it accordingly, or we should not support that\nsize. (or if the limitation is on gstreamer, then it should not use a\nsize it can't support).\n\n--\nKieran\n\n\n> \n> Thanks\n> David\n> \n> >\n> >\n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > --\n> > Kieran\n> >\n> >\n> > >\n> > > David\n> > >\n> > > >                         }\n> > > >                 }\n> > > >\n> > > > --\n> > > > 2.25.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 8607ABE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 19 Jan 2022 10:50:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BE35E6094F;\n\tWed, 19 Jan 2022 11:50:49 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A48AE60210\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 19 Jan 2022 11:50:47 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 585FC464;\n\tWed, 19 Jan 2022 11:50:47 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"k+Gl1SgN\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1642589447;\n\tbh=A/m0SF4v9Fdj92/c79hBhyV3DLNbOzbMLmhTQyG/bCs=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=k+Gl1SgN5hcLu+nb4G58axd1OZjJUd9U8mZAIAh6p3E6Y3ZN8s768/XZiw6CHGMWF\n\tNIba/ZRvFwO68+eidtsH6YH0WIIueZKwkda7qt8rii0Eva8wGNiOIxh/JvcWhT2QrL\n\t/0mRCV1EZmDSGtx8bPiw9rOSoLkEIHBkOkBuZ1b4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAHW6GYJi09Akry4iGzr5APGSZRKv_F=muGPOcLX3mV6+BzCj_Q@mail.gmail.com>","References":"<20220106113242.2383324-1-naush@raspberrypi.com>\n\t<CAHW6GY+W7L8TECTfz0V1E-PR5VqAo6un2Q9cfTbZRx0mSE+Rhw@mail.gmail.com>\n\t<164156965436.10801.14717762533647363402@Monstersaurus>\n\t<CAHW6GYJi09Akry4iGzr5APGSZRKv_F=muGPOcLX3mV6+BzCj_Q@mail.gmail.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Date":"Wed, 19 Jan 2022 10:50:45 +0000","Message-ID":"<164258944518.10801.2031224847905495070@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return all\n\tISP resolutions from generateConfiguration()","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]