From patchwork Thu Jun 18 12:38:25 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 26972 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id EA6DAC328C for ; Thu, 18 Jun 2026 12:39:12 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D223565702; Thu, 18 Jun 2026 14:39:03 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="CmCXqXPh"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 05B0A62B2B for ; Thu, 18 Jun 2026 14:38:50 +0200 (CEST) Received: from pb-laptop.local (185.182.214.63.nat.pool.zt.hu [185.182.214.63]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 237F11894 for ; Thu, 18 Jun 2026 14:38:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1781786295; bh=sGXTWWmMp6Fi3e+EBGURZjujEJ8RE1acQMhO/Uan8q0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=CmCXqXPhnSCsOIPLWoo7Wmvqeitw0wHR7+J7+oeiwHKj2hHuqDXPyeiUoGaXcuuYW EKYux4yXh4VG7u+X2tyA75rJSx/xf4dovHAgzv3nNlwz4ABlEz0IUG4LeSXJ99aaEs 7/9DYitOvRG12lOkMjv4w0u2gYyMiQHRtu/T6Se8= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [RFC PATCH v1 08/27] libcamera: pipeline: imx8-isi: pipeFromStream(): Take `ISICameraData` Date: Thu, 18 Jun 2026 14:38:25 +0200 Message-ID: <20260618123844.656396-9-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260618123844.656396-1-barnabas.pocze@ideasonboard.com> References: <20260618123844.656396-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The function actually needs the pipeline handler specific camera data, and in most callers it is already available, so accept that as argument. Signed-off-by: Barnabás Pőcze --- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp index c3d2695556..5f15fbdc08 100644 --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp @@ -136,7 +136,7 @@ private: return static_cast(camera->_d()); } - Pipe *pipeFromStream(Camera *camera, const Stream *stream); + Pipe *pipeFromStream(ISICameraData *data, const Stream *stream); StreamConfiguration generateYUVConfiguration(Camera *camera, const Size &size); @@ -865,7 +865,7 @@ int PipelineHandlerISI::configure(Camera *camera, CameraConfiguration *c) */ data->enabledStreams_.clear(); for (const auto &config : *c) { - Pipe *pipe = pipeFromStream(camera, config.stream()); + Pipe *pipe = pipeFromStream(data, config.stream()); /* * Configure the ISI sink compose rectangle to downscale the @@ -915,7 +915,7 @@ int PipelineHandlerISI::exportFrameBuffers(Camera *camera, Stream *stream, std::vector> *buffers) { unsigned int count = stream->configuration().bufferCount; - Pipe *pipe = pipeFromStream(camera, stream); + Pipe *pipe = pipeFromStream(cameraData(camera), stream); return pipe->capture->exportBuffers(count, buffers); } @@ -926,7 +926,7 @@ int PipelineHandlerISI::start(Camera *camera, ISICameraData *data = cameraData(camera); for (const auto &stream : data->enabledStreams_) { - Pipe *pipe = pipeFromStream(camera, stream); + Pipe *pipe = pipeFromStream(data, stream); const StreamConfiguration &config = stream->configuration(); int ret = pipe->capture->importBuffers(config.bufferCount); @@ -946,7 +946,7 @@ void PipelineHandlerISI::stopDevice(Camera *camera) ISICameraData *data = cameraData(camera); for (const auto &stream : data->enabledStreams_) { - Pipe *pipe = pipeFromStream(camera, stream); + Pipe *pipe = pipeFromStream(data, stream); pipe->capture->streamOff(); pipe->capture->releaseBuffers(); @@ -955,8 +955,10 @@ void PipelineHandlerISI::stopDevice(Camera *camera) int PipelineHandlerISI::queueRequestDevice(Camera *camera, Request *request) { + ISICameraData *data = cameraData(camera); + for (auto &[stream, buffer] : request->buffers()) { - Pipe *pipe = pipeFromStream(camera, stream); + Pipe *pipe = pipeFromStream(data, stream); int ret = pipe->capture->queueBuffer(buffer); if (ret) @@ -1110,10 +1112,9 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) return numCameras > 0; } -PipelineHandlerISI::Pipe *PipelineHandlerISI::pipeFromStream(Camera *camera, +PipelineHandlerISI::Pipe *PipelineHandlerISI::pipeFromStream(ISICameraData *data, const Stream *stream) { - ISICameraData *data = cameraData(camera); unsigned int pipeIndex = data->pipeIndex(stream); ASSERT(pipeIndex < pipes_.size());