[{"id":34722,"web_url":"https://patchwork.libcamera.org/comment/34722/","msgid":"<20250629224201.GA20333@pendragon.ideasonboard.com>","date":"2025-06-29T22:42:01","subject":"Re: [PATCH v2 1/2] pipeline: imx8-isi: Add constexpr for maximum\n\tpipeline and resize if needed","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Antoine,\n\nThank you for the patch.\n\nOn Wed, Jun 18, 2025 at 02:45:40PM +0200, Antoine Bouyer wrote:\n> This patch adds number of streams per camera as constructor parameter, and\n> limits stream count to 3. Some applications may need up to 3 streams for\n> preview + capture + video record. Currently, imx8-isi pipeline only supports\n> up to 2. Increase constant parameter to 3 to match these applications'\n> requirements.\n> \n> Minimum value between default value 3, and total amount of ISI's pipes is\n> now applied. For SOCs which only have 1 ISI pipe (ie i.MX93), available\n> stream count becomes 1.\n> \n> Signed-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nI gave a R-b tag on v1 of this patch. For future patch series, please\ncollect the tags you receive, and include them in new versions.\n\n> ---\n>  src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 17 ++++++++++-------\n>  1 file changed, 10 insertions(+), 7 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> index ecda426a6021..186b623df186 100644\n> --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp\n> @@ -40,14 +40,13 @@ class PipelineHandlerISI;\n>  class ISICameraData : public Camera::Private\n>  {\n>  public:\n> -\tISICameraData(PipelineHandler *ph)\n> +\t/* Maximum amount of streams (i.e. pipes) per camera. */\n> +\tstatic constexpr unsigned int kNumStreams = 3;\n> +\n> +\tISICameraData(PipelineHandler *ph, unsigned int numStreams)\n>  \t\t: Camera::Private(ph)\n>  \t{\n> -\t\t/*\n> -\t\t * \\todo Assume 2 channels only for now, as that's the number of\n> -\t\t * available channels on i.MX8MP.\n> -\t\t */\n> -\t\tstreams_.resize(2);\n> +\t\tstreams_.resize(std::min(kNumStreams, numStreams));\n>  \t}\n>  \n>  \tPipelineHandlerISI *pipe();\n> @@ -1052,8 +1051,12 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator)\n>  \t\t}\n>  \n>  \t\t/* Create the camera data. */\n> +\t\t/*\n> +\t\t * \\todo compute available pipes per camera instead of using\n> +\t\t * pipes_.size() for multi cameras case.\n> +\t\t */\n>  \t\tstd::unique_ptr<ISICameraData> data =\n> -\t\t\tstd::make_unique<ISICameraData>(this);\n> +\t\t\tstd::make_unique<ISICameraData>(this, pipes_.size());\n>  \n>  \t\tdata->sensor_ = CameraSensorFactoryBase::create(sensor);\n>  \t\tdata->csis_ = std::make_unique<V4L2Subdevice>(csi);","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 9D2B3BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 29 Jun 2025 22:42:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AA39068E05;\n\tMon, 30 Jun 2025 00:42: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 AAD3068DF5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 30 Jun 2025 00:42:25 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 05626669;\n\tMon, 30 Jun 2025 00:42:03 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PJcW3mRq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1751236924;\n\tbh=8gRGUzN4lrIfvLJuBPXtDCfs1kqj4RDK+Lx0W2Frygo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=PJcW3mRqbezWVeFBb/+MiTCRjV6TcURH3FIG6cSFl2o8R63cn0ZsHL+34ZzBPGePJ\n\tMWKxKKmDSRk1ZH8XtbiSvD//WhWvgPCVpFuVNt8JcZ/i0SkH/vIsJD6mlcqO2kbUAu\n\t7iU5U/pbU/AfgDGFjBkCYNgqEJVT13lt0rkwvyDI=","Date":"Mon, 30 Jun 2025 01:42:01 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Antoine Bouyer <antoine.bouyer@nxp.com>","Cc":"libcamera-devel@lists.libcamera.org, julien.vuillaumier@nxp.com","Subject":"Re: [PATCH v2 1/2] pipeline: imx8-isi: Add constexpr for maximum\n\tpipeline and resize if needed","Message-ID":"<20250629224201.GA20333@pendragon.ideasonboard.com>","References":"<20250618124541.2340270-1-antoine.bouyer@nxp.com>\n\t<20250618124541.2340270-2-antoine.bouyer@nxp.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20250618124541.2340270-2-antoine.bouyer@nxp.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]