From patchwork Mon Feb 24 01:23:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 22839 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 7D658C324E for ; Mon, 24 Feb 2025 01:23:45 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 9B64E686BF; Mon, 24 Feb 2025 02:23:44 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="bivYiSQ2"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 991F561855 for ; Mon, 24 Feb 2025 02:23:42 +0100 (CET) Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 44A6F7EA; Mon, 24 Feb 2025 02:22:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1740360136; bh=nJAsTsbwcU+d9D1XZKpJHr1LYjzyypigjFUrtuHuazU=; h=From:To:Cc:Subject:Date:From; b=bivYiSQ2/36YfQ/UFwp8+c1b2yVxOvI+sei+yz+R3Nsnqqct31TMOPfVvFGgNeLEY zuvB1N0D7HkFatki+q9/zriZP1UC8LDAsQlDqTlIwgixFtlBVvEWGSQ+Ah8Bi+1vip Fg8cdfUxCrobrEk1Wc6tPDQJ7719wQS6EUQZ2sV4= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Cc: Stanislaw Gruszka Subject: [PATCH] pipeline: simple: Create DelayedControls instance once only Date: Mon, 24 Feb 2025 03:23:25 +0200 Message-ID: <20250224012325.24246-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.45.3 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 DelayedControls instance for the camera sensor is created in SimplePipelineHandler::configure(). Constant deletion and reconstruction of a new object is unnecessary, as the control delays are an intrinsic property of the sensor and are known at initialization time. Move the DelayedControls creation to the SimpleCameraData class constructor. Signed-off-by: Laurent Pinchart Reviewed-by: Milan Zamazal --- src/libcamera/pipeline/simple/simple.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) base-commit: d476f8358be1536d4edd680c6024f784ff022f5d -- Regards, Laurent Pinchart diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 6e039bf35fc1..bd3a8a6ec6b7 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -488,6 +488,13 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe, if (!sensor_) return; + const CameraSensorProperties::SensorDelays &delays = sensor_->sensorDelays(); + std::unordered_map params = { + { V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } }, + { V4L2_CID_EXPOSURE, { delays.exposureDelay, false } }, + }; + delayedCtrls_ = std::make_unique(sensor_->device(), params); + LOG(SimplePipeline, Debug) << "Found pipeline: " << utils::join(entities_, " -> ", @@ -1277,14 +1284,6 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) if (outputCfgs.empty()) return 0; - const CameraSensorProperties::SensorDelays &delays = data->sensor_->sensorDelays(); - std::unordered_map params = { - { V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } }, - { V4L2_CID_EXPOSURE, { delays.exposureDelay, false } }, - }; - data->delayedCtrls_ = - std::make_unique(data->sensor_->device(), - params); data->video_->frameStart.connect(data->delayedCtrls_.get(), &DelayedControls::applyControls);