{"id":26352,"url":"https://patchwork.libcamera.org/api/1.1/patches/26352/?format=json","web_url":"https://patchwork.libcamera.org/patch/26352/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260325151416.2114564-11-stefan.klug@ideasonboard.com>","date":"2026-03-25T15:13:42","name":"[v2,10/32] pipeline: rkisp1: Add a frameStart function to handle DelayedControls::applyControls","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"646701e6258f0207516862117d638be2b6ea6407","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/1.1/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/26352/mbox/","series":[{"id":5849,"url":"https://patchwork.libcamera.org/api/1.1/series/5849/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5849","date":"2026-03-25T15:13:32","name":"rkisp1: pipeline rework for PFC","version":2,"mbox":"https://patchwork.libcamera.org/series/5849/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/26352/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26352/checks/","tags":{},"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 A6735C32FB\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Mar 2026 15:15:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E49AC6285C;\n\tWed, 25 Mar 2026 16:15:10 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 17E416284A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Mar 2026 16:15:10 +0100 (CET)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:b16a:5ed9:4ada:a95a])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 293151943; \n\tWed, 25 Mar 2026 16:13:52 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"SjHtBU4E\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774451632;\n\tbh=bWuAtp2490iH7v1FEummzNlFI1ouVcOvkqF6jlhzuYI=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=SjHtBU4EMhMR3yKCcZyQ9GkX+B+B8pmbDdVZGJAI0gXx0ElZTd/iMP1hhEu1iIkml\n\t2q7PT5HjKaAklbVTgEUHXPLTn+e4LOi50PxKzQvn9dxgtnmLrwA5vZBpWO7OnuRURV\n\txr3Nd4iCdXtouQW2/7XWRjFSXO8s0BLIqZzOZx20=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>","Subject":"[PATCH v2 10/32] pipeline: rkisp1: Add a frameStart function to\n\thandle 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","Content-Transfer-Encoding":"8bit","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>"},"content":"Move the call to applyControls into an intermediate function for\nupcoming modfications.\n\nAs the frameStart handler checks for an activeCamera we can safely\nconnect the signal in match() where all the other signals get connected.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Moved signal connection into match() function.\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++--\n 1 file changed, 10 insertions(+), 2 deletions(-)","diff":"diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 31e5ae103209..a3b78bf4dc6b 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1470,8 +1470,6 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \tdata->delayedCtrls_ =\n \t\tstd::make_unique<DelayedControls>(data->sensor_->device(),\n \t\t\t\t\t\t  params);\n-\tisp_->frameStart.connect(data->delayedCtrls_.get(),\n-\t\t\t\t &DelayedControls::applyControls);\n \n \tuint32_t supportedBlocks = kDefaultExtParamsBlocks;\n \n@@ -1506,6 +1504,15 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n \treturn 0;\n }\n \n+void PipelineHandlerRkISP1::frameStart(uint32_t sequence)\n+{\n+\tif (!activeCamera_)\n+\t\treturn;\n+\n+\tRkISP1CameraData *data = cameraData(activeCamera_);\n+\tdata->delayedCtrls_->applyControls(sequence);\n+}\n+\n bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n {\n \tDeviceMatch dm(\"rkisp1\");\n@@ -1548,6 +1555,7 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n \tif (hasSelfPath_ && !selfPath_.init(media_))\n \t\treturn false;\n \n+\tisp_->frameStart.connect(this, &PipelineHandlerRkISP1::frameStart);\n \tmainPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady);\n \tif (hasSelfPath_)\n \t\tselfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady);\n","prefixes":["v2","10/32"]}