[{"id":27101,"web_url":"https://patchwork.libcamera.org/comment/27101/","msgid":"<ed5aa766-36e2-b636-ac0a-101a7437d559@ideasonboard.com>","date":"2023-05-16T05:00:19","subject":"Re: [libcamera-devel] [PATCH v4 3/4] libcamera: rkisp1: Assign\n\tsizes to roles","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> Currently each RkISP1 path (main and self) generate a configuration\n> by bounding the sensor's resolution to their respective maximum output\n> aspect ratio and size.\n>\n> \tSize maxResolution = maxResolution_.boundedToAspectRatio(resolution)\n> \t\t\t\t\t   .boundedTo(resolution);\n>\n> In the case of self path, whose maximum size is 1920x1920, the generated\n> configuration could get assigned unusual sizes, as the result of the\n> above operation\n>\n> As an example, with the imx258 sensor whose resolution is 4208x3118, the\n> resulting size for the Viewfinder use case is an unusual 1920x1423.\n>\n> Fix this by assigning to each role a desired output size:\n> - Use the sensor's resolution for StillCapture and Raw\n> - Use 1080p for Viewfinder and VideoRecording\n>\n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 12 +++++++++++-\n>   src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 10 ++++++++--\n>   src/libcamera/pipeline/rkisp1/rkisp1_path.h   |  1 +\n>   3 files changed, 20 insertions(+), 3 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index fd331168af80..5ae25a244408 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -162,6 +162,8 @@ public:\n>   \tbool match(DeviceEnumerator *enumerator) override;\n>   \n>   private:\n> +\tstatic constexpr Size kRkISP1PreviewSize = { 1920, 1080 };\n> +\n>   \tRkISP1CameraData *cameraData(Camera *camera)\n>   \t{\n>   \t\treturn static_cast<RkISP1CameraData *>(camera->_d());\n> @@ -633,12 +635,15 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>   \tbool mainPathAvailable = true;\n>   \n>   \tfor (const StreamRole role : roles) {\n> +\t\tSize size;\n>   \n>   \t\tswitch (role) {\n>   \t\tcase StreamRole::StillCapture:\n>   \t\t\t/* JPEG encoders typically expect sYCC. */\n>   \t\t\tif (!colorSpace)\n>   \t\t\t\tcolorSpace = ColorSpace::Sycc;\n> +\n> +\t\t\tsize = data->sensor_->resolution();\n>   \t\t\tbreak;\n>   \n>   \t\tcase StreamRole::Viewfinder:\n> @@ -648,12 +653,16 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>   \t\t\t */\n>   \t\t\tif (!colorSpace)\n>   \t\t\t\tcolorSpace = ColorSpace::Sycc;\n> +\n> +\t\t\tsize = kRkISP1PreviewSize;\n>   \t\t\tbreak;\n>   \n>   \t\tcase StreamRole::VideoRecording:\n>   \t\t\t/* Rec. 709 is a good default for HD video recording. */\n>   \t\t\tif (!colorSpace)\n>   \t\t\t\tcolorSpace = ColorSpace::Rec709;\n> +\n> +\t\t\tsize = kRkISP1PreviewSize;\n>   \t\t\tbreak;\n>   \n>   \t\tcase StreamRole::Raw:\n> @@ -664,6 +673,7 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>   \t\t\t}\n>   \n>   \t\t\tcolorSpace = ColorSpace::Raw;\n> +\t\t\tsize = data->sensor_->resolution();\n>   \t\t\tbreak;\n>   \n>   \t\tdefault:\n> @@ -682,7 +692,7 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>   \t\t}\n>   \n>   \t\tStreamConfiguration cfg =\n> -\t\t\tpath->generateConfiguration(data->sensor_.get(), role);\n> +\t\t\tpath->generateConfiguration(data->sensor_.get(), size, role);\n>   \t\tif (!cfg.pixelFormat.isValid())\n>   \t\t\treturn nullptr;\n>   \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> index 5547cc32b6ca..cca593b84260 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> @@ -127,15 +127,21 @@ void RkISP1Path::populateFormats()\n>   }\n>   \n>   StreamConfiguration\n> -RkISP1Path::generateConfiguration(const CameraSensor *sensor, StreamRole role)\n> +RkISP1Path::generateConfiguration(const CameraSensor *sensor,\n> +\t\t\t\t  const Size &size,\n> +\t\t\t\t  StreamRole role)\n>   {\n>   \tconst std::vector<unsigned int> &mbusCodes = sensor->mbusCodes();\n>   \tconst Size &resolution = sensor->resolution();\n>   \n> +\t/* Min and max resolutions to populate the available stream formats. */\n>   \tSize maxResolution = maxResolution_.boundedToAspectRatio(resolution)\n>   \t\t\t\t\t   .boundedTo(resolution);\n>   \tSize minResolution = minResolution_.expandedToAspectRatio(resolution);\n>   \n> +\t/* The desired stream size, bound to the max resolution. */\n> +\tSize streamSize = size.boundedTo(maxResolution);\n> +\n>   \t/* Create the list of supported stream formats. */\n>   \tstd::map<PixelFormat, std::vector<SizeRange>> streamFormats;\n>   \tunsigned int rawBitsPerPixel = 0;\n> @@ -189,7 +195,7 @@ RkISP1Path::generateConfiguration(const CameraSensor *sensor, StreamRole role)\n>   \tStreamFormats formats(streamFormats);\n>   \tStreamConfiguration cfg(formats);\n>   \tcfg.pixelFormat = format;\n> -\tcfg.size = maxResolution;\n> +\tcfg.size = streamSize;\n>   \tcfg.bufferCount = RKISP1_BUFFER_COUNT;\n>   \n>   \treturn cfg;\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.h b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> index bdf3f95b95e1..cd77957ee4a6 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> @@ -41,6 +41,7 @@ public:\n>   \tbool isEnabled() const { return link_->flags() & MEDIA_LNK_FL_ENABLED; }\n>   \n>   \tStreamConfiguration generateConfiguration(const CameraSensor *sensor,\n> +\t\t\t\t\t\t  const Size &resolution,\n>   \t\t\t\t\t\t  StreamRole role);\n>   \tCameraConfiguration::Status validate(const CameraSensor *sensor,\n>   \t\t\t\t\t     StreamConfiguration *cfg);","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 B47DFBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 16 May 2023 05:00:27 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 29D68627DE;\n\tTue, 16 May 2023 07:00:27 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0F00E60545\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 16 May 2023 07:00:26 +0200 (CEST)","from [192.168.1.106] (unknown [103.86.18.166])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DA0B1FB;\n\tTue, 16 May 2023 07:00:13 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1684213227;\n\tbh=Y3ycvr9P+5in72HuGUw7kLXpYb6Oyb83eQZPydrt8vM=;\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=WIS4Ij8B01guN/vSZ1tasYYoIJY0fJC+U+J6DgN7qP3p3hgx4mtXcXB1JpJkNclph\n\tZvUodKQZpdOpJ0l8MlUVC4/W9Dmo6zw1QJk6RWHJBt/vYvhdxjaQlh+zAMO1BnZZcp\n\tOB8NxNBvR4LeubG0f0vwY5rsM0ZT2pgoex/oLNMkmXa5PbwJT9bbGuH/xsG4SOLumY\n\taejbik1vDisjc0I41Nsas+Jzts8FhjMm4ZDfm83Ve+ZIVHunOzbYmAyEgfoTrLSOeR\n\tiuEdNQyyiRMeUdfttjWU9BCvGPAa8BxSJVl1VXNxWiypSsYpS1IbQ6EWUBvA+ZpFTq\n\tpBfltScAvu4ng==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1684213214;\n\tbh=Y3ycvr9P+5in72HuGUw7kLXpYb6Oyb83eQZPydrt8vM=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=u4NOJCHpgxtP2hf/ZriNaJlwHgI4lLUbUwNQ2YznB9Sx0gpXW237B1tQ+WHCA/WSc\n\tHNnRDMV3XbfXSi7uw/SeKond1RzVIrIrXILzh3NR0SJ6aEaPB96sgieAnzGB4NOzWE\n\t/knbOpP0OS7WcCOjyqggLis6UCUwFGhSg2ENe69Y="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"u4NOJCHp\"; dkim-atps=neutral","Message-ID":"<ed5aa766-36e2-b636-ac0a-101a7437d559@ideasonboard.com>","Date":"Tue, 16 May 2023 10:30:19 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.7.1","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-4-jacopo.mondi@ideasonboard.com>","Content-Language":"en-US","In-Reply-To":"<20230321172004.176852-4-jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v4 3/4] libcamera: rkisp1: Assign\n\tsizes to roles","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":27258,"web_url":"https://patchwork.libcamera.org/comment/27258/","msgid":"<20230605143735.GD31538@pendragon.ideasonboard.com>","date":"2023-06-05T14:37:35","subject":"Re: [libcamera-devel] [PATCH v4 3/4] libcamera: rkisp1: Assign\n\tsizes to roles","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Tue, Mar 21, 2023 at 06:20:03PM +0100, Jacopo Mondi via libcamera-devel wrote:\n> Currently each RkISP1 path (main and self) generate a configuration\n> by bounding the sensor's resolution to their respective maximum output\n> aspect ratio and size.\n> \n> \tSize maxResolution = maxResolution_.boundedToAspectRatio(resolution)\n> \t\t\t\t\t   .boundedTo(resolution);\n> \n> In the case of self path, whose maximum size is 1920x1920, the generated\n> configuration could get assigned unusual sizes, as the result of the\n> above operation\n\ns/$/./\n\n> \n> As an example, with the imx258 sensor whose resolution is 4208x3118, the\n> resulting size for the Viewfinder use case is an unusual 1920x1423.\n> \n> Fix this by assigning to each role a desired output size:\n> - Use the sensor's resolution for StillCapture and Raw\n> - Use 1080p for Viewfinder and VideoRecording\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 12 +++++++++++-\n>  src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 10 ++++++++--\n>  src/libcamera/pipeline/rkisp1/rkisp1_path.h   |  1 +\n>  3 files changed, 20 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index fd331168af80..5ae25a244408 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -162,6 +162,8 @@ public:\n>  \tbool match(DeviceEnumerator *enumerator) override;\n>  \n>  private:\n> +\tstatic constexpr Size kRkISP1PreviewSize = { 1920, 1080 };\n> +\n>  \tRkISP1CameraData *cameraData(Camera *camera)\n>  \t{\n>  \t\treturn static_cast<RkISP1CameraData *>(camera->_d());\n> @@ -633,12 +635,15 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>  \tbool mainPathAvailable = true;\n>  \n>  \tfor (const StreamRole role : roles) {\n> +\t\tSize size;\n>  \n>  \t\tswitch (role) {\n>  \t\tcase StreamRole::StillCapture:\n>  \t\t\t/* JPEG encoders typically expect sYCC. */\n>  \t\t\tif (!colorSpace)\n>  \t\t\t\tcolorSpace = ColorSpace::Sycc;\n> +\n> +\t\t\tsize = data->sensor_->resolution();\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::Viewfinder:\n> @@ -648,12 +653,16 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>  \t\t\t */\n>  \t\t\tif (!colorSpace)\n>  \t\t\t\tcolorSpace = ColorSpace::Sycc;\n> +\n> +\t\t\tsize = kRkISP1PreviewSize;\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::VideoRecording:\n>  \t\t\t/* Rec. 709 is a good default for HD video recording. */\n>  \t\t\tif (!colorSpace)\n>  \t\t\t\tcolorSpace = ColorSpace::Rec709;\n> +\n> +\t\t\tsize = kRkISP1PreviewSize;\n>  \t\t\tbreak;\n>  \n>  \t\tcase StreamRole::Raw:\n> @@ -664,6 +673,7 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>  \t\t\t}\n>  \n>  \t\t\tcolorSpace = ColorSpace::Raw;\n> +\t\t\tsize = data->sensor_->resolution();\n>  \t\t\tbreak;\n>  \n>  \t\tdefault:\n> @@ -682,7 +692,7 @@ PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n>  \t\t}\n>  \n>  \t\tStreamConfiguration cfg =\n> -\t\t\tpath->generateConfiguration(data->sensor_.get(), role);\n> +\t\t\tpath->generateConfiguration(data->sensor_.get(), size, role);\n>  \t\tif (!cfg.pixelFormat.isValid())\n>  \t\t\treturn nullptr;\n>  \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> index 5547cc32b6ca..cca593b84260 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n> @@ -127,15 +127,21 @@ void RkISP1Path::populateFormats()\n>  }\n>  \n>  StreamConfiguration\n> -RkISP1Path::generateConfiguration(const CameraSensor *sensor, StreamRole role)\n> +RkISP1Path::generateConfiguration(const CameraSensor *sensor,\n> +\t\t\t\t  const Size &size,\n> +\t\t\t\t  StreamRole role)\n\nRkISP1Path::generateConfiguration(const CameraSensor *sensor, const Size &size,\n\t\t\t\t  StreamRole role)\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  {\n>  \tconst std::vector<unsigned int> &mbusCodes = sensor->mbusCodes();\n>  \tconst Size &resolution = sensor->resolution();\n>  \n> +\t/* Min and max resolutions to populate the available stream formats. */\n>  \tSize maxResolution = maxResolution_.boundedToAspectRatio(resolution)\n>  \t\t\t\t\t   .boundedTo(resolution);\n>  \tSize minResolution = minResolution_.expandedToAspectRatio(resolution);\n>  \n> +\t/* The desired stream size, bound to the max resolution. */\n> +\tSize streamSize = size.boundedTo(maxResolution);\n> +\n>  \t/* Create the list of supported stream formats. */\n>  \tstd::map<PixelFormat, std::vector<SizeRange>> streamFormats;\n>  \tunsigned int rawBitsPerPixel = 0;\n> @@ -189,7 +195,7 @@ RkISP1Path::generateConfiguration(const CameraSensor *sensor, StreamRole role)\n>  \tStreamFormats formats(streamFormats);\n>  \tStreamConfiguration cfg(formats);\n>  \tcfg.pixelFormat = format;\n> -\tcfg.size = maxResolution;\n> +\tcfg.size = streamSize;\n>  \tcfg.bufferCount = RKISP1_BUFFER_COUNT;\n>  \n>  \treturn cfg;\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.h b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> index bdf3f95b95e1..cd77957ee4a6 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n> @@ -41,6 +41,7 @@ public:\n>  \tbool isEnabled() const { return link_->flags() & MEDIA_LNK_FL_ENABLED; }\n>  \n>  \tStreamConfiguration generateConfiguration(const CameraSensor *sensor,\n> +\t\t\t\t\t\t  const Size &resolution,\n>  \t\t\t\t\t\t  StreamRole role);\n>  \tCameraConfiguration::Status validate(const CameraSensor *sensor,\n>  \t\t\t\t\t     StreamConfiguration *cfg);","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 CB238C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Jun 2023 14:37:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0522062886;\n\tMon,  5 Jun 2023 16:37:38 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E844F6287D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Jun 2023 16:37:36 +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 452A1BC;\n\tMon,  5 Jun 2023 16:37:10 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1685975858;\n\tbh=SPc14JZuFIrx/B8BZdMcJNbaoeuj4fh4GnRrNG0dIJM=;\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=oU9X2YFqZOoDogMQNOi2qU+0xAko31BApc7TSOCY2Od2J0MNwieboq+PReiPZDTVD\n\ttzwtmZv8XhVZSkN1JAAW9TZnBZW8TrDaGX/Z5Dpc9SKuXAvm2N+KRdSftcRjTWEuAK\n\tFYxFXEoCZmqhT7Sh76LxO27EdVMQ9Tq+eR2RLIAj9vedbZ65n9SEUTm+3zaClXIV1t\n\tbWkfW0a2AUmwxheNHxbmKx/chRs8g907qkLTkqiZnqNs0YSNolz9Zznd7vFt0qNXwH\n\tsp0zuYWvoAz8WAz0x/rvWC05uj48gxTn4KXgcBOmD8x3P5Maic0EHYbUv/nOOPU48S\n\tkTJsb0J7X7K1A==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1685975832;\n\tbh=SPc14JZuFIrx/B8BZdMcJNbaoeuj4fh4GnRrNG0dIJM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=EKOjbbbi1N2ygR7oXTHryOarkCH5kq5QWhSYkPcbWf6XA5pcOIqKx646nZ24C4zZ5\n\tUK9M5mfVoEBmz1fp6s+A+MyfqqGf7vhQehhQoLJNlpCZC7SgCHhp7qN1sdM1OIQD6D\n\tq7iiQFNQrONmThbH9FspJW5l+87RDCuqZ1a3ON0Q="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"EKOjbbbi\"; dkim-atps=neutral","Date":"Mon, 5 Jun 2023 17:37:35 +0300","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Message-ID":"<20230605143735.GD31538@pendragon.ideasonboard.com>","References":"<20230321172004.176852-1-jacopo.mondi@ideasonboard.com>\n\t<20230321172004.176852-4-jacopo.mondi@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20230321172004.176852-4-jacopo.mondi@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v4 3/4] libcamera: rkisp1: Assign\n\tsizes to roles","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, libcamera@luigi311.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]