From patchwork Wed Mar 25 15:13:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Klug X-Patchwork-Id: 26352 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 A6735C32FB for ; Wed, 25 Mar 2026 15:15:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E49AC6285C; Wed, 25 Mar 2026 16:15:10 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="SjHtBU4E"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 17E416284A for ; Wed, 25 Mar 2026 16:15:10 +0100 (CET) Received: from ideasonboard.com (unknown [IPv6:2a00:6020:448c:6c00:b16a:5ed9:4ada:a95a]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 293151943; Wed, 25 Mar 2026 16:13:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1774451632; bh=bWuAtp2490iH7v1FEummzNlFI1ouVcOvkqF6jlhzuYI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SjHtBU4EMhMR3yKCcZyQ9GkX+B+B8pmbDdVZGJAI0gXx0ElZTd/iMP1hhEu1iIkml 2q7PT5HjKaAklbVTgEUHXPLTn+e4LOi50PxKzQvn9dxgtnmLrwA5vZBpWO7OnuRURV xr3Nd4iCdXtouQW2/7XWRjFSXO8s0BLIqZzOZx20= From: Stefan Klug To: libcamera-devel@lists.libcamera.org Cc: Stefan Klug Subject: [PATCH v2 10/32] pipeline: rkisp1: Add a frameStart function to handle DelayedControls::applyControls Date: Wed, 25 Mar 2026 16:13:42 +0100 Message-ID: <20260325151416.2114564-11-stefan.klug@ideasonboard.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260325151416.2114564-1-stefan.klug@ideasonboard.com> References: <20260325151416.2114564-1-stefan.klug@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" Move the call to applyControls into an intermediate function for upcoming modfications. As the frameStart handler checks for an activeCamera we can safely connect the signal in match() where all the other signals get connected. Signed-off-by: Stefan Klug --- Changes in v2: - Moved signal connection into match() function. --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 31e5ae103209..a3b78bf4dc6b 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -1470,8 +1470,6 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor) data->delayedCtrls_ = std::make_unique(data->sensor_->device(), params); - isp_->frameStart.connect(data->delayedCtrls_.get(), - &DelayedControls::applyControls); uint32_t supportedBlocks = kDefaultExtParamsBlocks; @@ -1506,6 +1504,15 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor) return 0; } +void PipelineHandlerRkISP1::frameStart(uint32_t sequence) +{ + if (!activeCamera_) + return; + + RkISP1CameraData *data = cameraData(activeCamera_); + data->delayedCtrls_->applyControls(sequence); +} + bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator) { DeviceMatch dm("rkisp1"); @@ -1548,6 +1555,7 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator) if (hasSelfPath_ && !selfPath_.init(media_)) return false; + isp_->frameStart.connect(this, &PipelineHandlerRkISP1::frameStart); mainPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady); if (hasSelfPath_) selfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady);