[{"id":27102,"web_url":"https://patchwork.libcamera.org/comment/27102/","msgid":"<b1da8c94-ca0b-ebc6-9cb7-418adb5da1de@ideasonboard.com>","date":"2023-05-16T05:04:32","subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn 3/21/23 10:50 PM, Jacopo Mondi via libcamera-devel wrote:\n> Crop on the resizer sink pad before downscaling to the aspect ratio\n> of the desired output size.\n>\n> Cropping the input frame to the output aspect ratio allows to maintain\n> the correct picture proportions, as otherwise downscaling would change\n> the image geometry.\n>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nThe code indeed makes sense to me.\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 5 ++++-\n>   1 file changed, 4 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> index 5079b268c464..5547cc32b6ca 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> @@ -314,7 +314,10 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n>   \tif (ret < 0)\n>   \t\treturn ret;\n>   \n> -\tRectangle rect(0, 0, ispFormat.size);\n> +\t/* Crop on the resizer input to maintain FOV before downscaling */\n> +\tSize ispCrop = inputFormat.size.boundedToAspectRatio(config.size)\n> +\t\t\t\t       .alignedUpTo(2, 2);\n> +\tRectangle rect(ispCrop);\n>   \tret = resizer_->setSelection(0, V4L2_SEL_TGT_CROP, &rect);\n>   \tif (ret < 0)\n>   \t\treturn ret;","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 BD82BC3284\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 16 May 2023 05:04:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0348B627DE;\n\tTue, 16 May 2023 07:04:39 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F095160545\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 16 May 2023 07:04:37 +0200 (CEST)","from [192.168.1.106] (unknown [103.86.18.166])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0170382F;\n\tTue, 16 May 2023 07:04:25 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1684213479;\n\tbh=FoB4tvV0egBsMlIPJHo0WRdozLe5OmmG7yIRnMCQ/bQ=;\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=SbPcT895jTs79v2o12+O2pY3nEg9BEaKQHSSJ9t1WTCIDuKNu0uqRPBnoBR/tAPKv\n\tA4sznugsK6cwEdH9Glb7gcVKwdZvsr4FciMlxQ1JvmIEc/G5mPYFs0UyXMs/zo+cBf\n\tqybb66fHkMVs5OzXRLgqAttTWCA5S3vXKwAYfNuKWLn7Wc9tsqCnkk2EfamhHHaf4q\n\tnEzwsJyH2hQfb0lDxlXmKlOrf/DR4bWtaMitz5bwCAa1RSnszdLKN42IM01kbPUpDD\n\tX7x08oVAFUgQAZb5iyzeaRRNuMGEjQjkj2pIuygaSXRXivZ1WJpLKcSglWs8tvdBq7\n\t4UeXmb1oWsBgA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1684213466;\n\tbh=FoB4tvV0egBsMlIPJHo0WRdozLe5OmmG7yIRnMCQ/bQ=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=GBMQ9fJ6QInwfD2hIhQkPoSdB0wlvX76xT+VCU2EVccLTw1AiuERHwIcS8abdnW99\n\tqe9Oyqe0HF8QSNB7smoQjGhJQ5W9x2yq0v2PZ9aRh0FONY3QlL0GDv+n3I5owbEOOh\n\t3/OIxYNggI7Te99cAQGMuRRAukkQKxYwoTxasy78="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"GBMQ9fJ6\"; dkim-atps=neutral","Message-ID":"<b1da8c94-ca0b-ebc6-9cb7-418adb5da1de@ideasonboard.com>","Date":"Tue, 16 May 2023 10:34:32 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.7.1","Content-Language":"en-US","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20230321172004.176852-1-jacopo.mondi@ideasonboard.com>\n\t<20230321172004.176852-3-jacopo.mondi@ideasonboard.com>","In-Reply-To":"<20230321172004.176852-3-jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","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":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"libcamera@luigi311.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27130,"web_url":"https://patchwork.libcamera.org/comment/27130/","msgid":"<168483185968.3378917.1019319325814306589@Monstersaurus>","date":"2023-05-23T08:50:59","subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Jacopo Mondi via libcamera-devel (2023-03-21 17:20:02)\n> Crop on the resizer sink pad before downscaling to the aspect ratio\n> of the desired output size.\n> \n> Cropping the input frame to the output aspect ratio allows to maintain\n> the correct picture proportions, as otherwise downscaling would change\n> the image geometry.\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 5 ++++-\n>  1 file changed, 4 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> index 5079b268c464..5547cc32b6ca 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> @@ -314,7 +314,10 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n>         if (ret < 0)\n>                 return ret;\n>  \n> -       Rectangle rect(0, 0, ispFormat.size);\n> +       /* Crop on the resizer input to maintain FOV before downscaling */\n> +       Size ispCrop = inputFormat.size.boundedToAspectRatio(config.size)\n> +                                      .alignedUpTo(2, 2);\n> +       Rectangle rect(ispCrop);\n\nShould this be centered ? Otherwise I can imagine a letterbox effect at\nthe *top* of the image, or a left aligned rectangle?\n\n\n>         ret = resizer_->setSelection(0, V4L2_SEL_TGT_CROP, &rect);\n>         if (ret < 0)\n>                 return ret;\n> -- \n> 2.40.0\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 54466C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 23 May 2023 08:51:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8F9FD6285F;\n\tTue, 23 May 2023 10:51:04 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BF0C760495\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 May 2023 10:51:02 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id AF20ACB3;\n\tTue, 23 May 2023 10:50:46 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1684831864;\n\tbh=mfv8D9N4WyqInb/2oRAUto7Mkyenbi5PhPPjbBEV0fI=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=ovpxWLD+4Y1vbfdf8Suv+FlFoemmSFGlgk6ecIvtLcjyK59vWGb0ZgE1mg0aEpmyd\n\t/gkYTBMzUuwnA7P2R37asd/VDSwnhd/8sssOV+O4v6QJZe4/rcxOD3DyCjea2gUOtE\n\t3SeD5QuluGJZUtWeaPrePsF4tsJHslkEsKWKBmUWr9xCIrwIML4qRjdi0HmUcZIcUz\n\t08trL0I1oJqc4eQz3fhNLjgVuD5nWQuWGaDUPt3oZ7C8PVCtB7DeqX87dZqmku+OW+\n\ttoEkRsHdqCDTuwaqS1rcvXAxMmTQn9SdQMgemxINgX7IuuOOdHkfdDnXw2zHN5O3Vr\n\tOTu9xUUl4Pjtw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1684831846;\n\tbh=mfv8D9N4WyqInb/2oRAUto7Mkyenbi5PhPPjbBEV0fI=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=Wr0tfiww9jPhTZfiEMDQ/39S7ri6pqDEUL8qgtL6v4GTybeEju5smCA+8RoBUHXNT\n\t9IzLGGYRgHe4+In3Dh33xExN2Aoft8z1UdELFcwuO9WrLXHSs8AS2zPKcxIQDSDLfe\n\tXdih8jgkC+4bodWRirayYydzLPsyF+fDVIDSKVRY="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Wr0tfiww\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20230321172004.176852-3-jacopo.mondi@ideasonboard.com>","References":"<20230321172004.176852-1-jacopo.mondi@ideasonboard.com>\n\t<20230321172004.176852-3-jacopo.mondi@ideasonboard.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 23 May 2023 09:50:59 +0100","Message-ID":"<168483185968.3378917.1019319325814306589@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>, libcamera@luigi311.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":27257,"web_url":"https://patchwork.libcamera.org/comment/27257/","msgid":"<20230605142900.GC31538@pendragon.ideasonboard.com>","date":"2023-06-05T14:29:00","subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Tue, May 23, 2023 at 09:50:59AM +0100, Kieran Bingham via libcamera-devel wrote:\n> Quoting Jacopo Mondi via libcamera-devel (2023-03-21 17:20:02)\n> > Crop on the resizer sink pad before downscaling to the aspect ratio\n> > of the desired output size.\n> > \n> > Cropping the input frame to the output aspect ratio allows to maintain\n> > the correct picture proportions, as otherwise downscaling would change\n> > the image geometry.\n> > \n> > Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> > ---\n> >  src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 5 ++++-\n> >  1 file changed, 4 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> > index 5079b268c464..5547cc32b6ca 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> > @@ -314,7 +314,10 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n> >         if (ret < 0)\n> >                 return ret;\n> >  \n> > -       Rectangle rect(0, 0, ispFormat.size);\n> > +       /* Crop on the resizer input to maintain FOV before downscaling */\n> > +       Size ispCrop = inputFormat.size.boundedToAspectRatio(config.size)\n> > +                                      .alignedUpTo(2, 2);\n> > +       Rectangle rect(ispCrop);\n> \n> Should this be centered ? Otherwise I can imagine a letterbox effect at\n> the *top* of the image, or a left aligned rectangle?\n\nYes, it should.\n\nI would also add a todo comment:\n\n\t/*\n\t * Crop on the resizer input to maintain FOV before downscaling.\n\t *\n\t * \\todo The alignment to a multiple of 2 pixels is required but may\n\t * change the aspect ratio very slightly. A more advanced algorithm to\n\t * compute the resizer input crop rectangle is needed, and it should\n\t * also take into account the need to crop away the edge pixels affected\n\t * by the ISP processing blocks.\n\t */\n\n> >         ret = resizer_->setSelection(0, V4L2_SEL_TGT_CROP, &rect);\n> >         if (ret < 0)\n> >                 return ret;","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 81BFAC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Jun 2023 14:29:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DEFAF6287D;\n\tMon,  5 Jun 2023 16:29:03 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5830062709\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Jun 2023 16:29:02 +0200 (CEST)","from pendragon.ideasonboard.com (om126156242094.26.openmobile.ne.jp\n\t[126.156.242.94])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9ACDFBC;\n\tMon,  5 Jun 2023 16:28:36 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685975343;\n\tbh=XZWilkbZifrOZzhygc9u0XOvbbhuqmvxRgxCcGHzbNA=;\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=hSdGllXt2nFY8QM5LuSQUxI86kqSx53TKz5os2PKXfzFCpQFNweNh2tQdPxhbgHOf\n\t7V7LFG91hnHhGL2MHcwkmsTTz1jVe/w8d9hdZzlgGjVNJBmf3RYyKjEb+4Rf3p0OvU\n\tKSlVcvQN2t+SqERlhFX89cCaYcNM4YkY8osfc18qbM962hBKxM9gJGSYGNvW9i3PW4\n\tOPfNUv3gvlrYjK9Dgfs8JCNBpQD++JrU4VWv8svvadXu1BR8Lj2Rh8jR4S5MqHnStV\n\tZy2lui0hrOWix+tzXHTA5sxKwCw50IL8MOZB+F4j1rt68Avhui1Fu/4kUWfFcxFKBw\n\tdqWKjpQZsh2SA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1685975317;\n\tbh=XZWilkbZifrOZzhygc9u0XOvbbhuqmvxRgxCcGHzbNA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=LC0Upsa4PgNJS55gl+fL6TVhpGkYczYqp6pt6TIbROhOdTbfvn554mMQ1SOwrQbtZ\n\t4AvJlPBY/qKraQcQ8TN4Fcd2mlY6RvpLs+eiLsuhcBxzsNL+YtZJilSbP2solHTkYR\n\tUgF1coXayaZipX0g2gL04hnW+ht1Q2MV9OzeECLs="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"LC0Upsa4\"; dkim-atps=neutral","Date":"Mon, 5 Jun 2023 17:29:00 +0300","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20230605142900.GC31538@pendragon.ideasonboard.com>","References":"<20230321172004.176852-1-jacopo.mondi@ideasonboard.com>\n\t<20230321172004.176852-3-jacopo.mondi@ideasonboard.com>\n\t<168483185968.3378917.1019319325814306589@Monstersaurus>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<168483185968.3378917.1019319325814306589@Monstersaurus>","Subject":"Re: [libcamera-devel] [PATCH v4 2/4] libcamera: rkisp1: Crop on ISP\n\tbefore downscaling","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":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, libcamera@luigi311.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]