From patchwork Wed Mar 5 13:52:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 22929 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 792BBC3257 for ; Wed, 5 Mar 2025 13:53:24 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1FF68688AE; Wed, 5 Mar 2025 14:53:24 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Fteimdnc"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id B9D7A68823 for ; Wed, 5 Mar 2025 14:53:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741182802; x=1772718802; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=X3265kruYMN74Wz+fEsqq5xfOV0S2TnNFYuszevpovw=; b=FteimdncfDFNBHTNyHs1HH7N41uMB6zq2GDm4yH2uDxWyvIprHuqrLA5 RwwXjnGJtAUzDd+m4LZpQdVrL04lcF85W44LyIA2EIOdTI1nh/pgxrV6g UTXApLVBMKT0T3CzDSKPG2ZmLBJsLMPCamnUEQdCFUyy2nXSXvA3VwXsN kt8qzKLF0156ppF2PL1HqLrzKx0ZN04kOZ0j1FLVRW4O0ufxhqEhGgLSl uyKvu87eiZzYLflox5/iylVJXcyiZ2ViYvEPPtpomtGlN0YXV1eYBH/hB x8dF+OI89f9I0jKKUg8dDqJ6NppSRVrR+pbbtnRzNcWQu+MQvi0l0orWL w==; X-CSE-ConnectionGUID: GY04Xb91T8+UnhlItrp7GQ== X-CSE-MsgGUID: 2ouQMS58RPKJ3wMJnFZNZA== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="53134794" X-IronPort-AV: E=Sophos;i="6.14,223,1736841600"; d="scan'208";a="53134794" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Mar 2025 05:53:22 -0800 X-CSE-ConnectionGUID: k97e7uQnTkK2TekvrlDA+A== X-CSE-MsgGUID: IA4UaEsOQtquPuDT4bjR/Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,223,1736841600"; d="scan'208";a="123735805" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.112.97]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Mar 2025 05:53:19 -0800 From: Stanislaw Gruszka To: libcamera-devel@lists.libcamera.org Cc: Milan Zamazal , Laurent Pinchart , Kieran Bingham , Naushir Patuck , Sakari Ailus , Hans de Goede Subject: [PATCH v6 4/5] pipeline: simple: Create DelayedControls instance once only Date: Wed, 5 Mar 2025 14:52:55 +0100 Message-Id: <20250305135256.801351-5-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250305135256.801351-1-stanislaw.gruszka@linux.intel.com> References: <20250305135256.801351-1-stanislaw.gruszka@linux.intel.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" From: Laurent Pinchart 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 Signed-off-by: Stanislaw Gruszka Reviewed-by: Stefan Klug --- src/libcamera/pipeline/simple/simple.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 7be49017..58aa3dba 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -489,6 +489,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_, " -> ", @@ -1302,15 +1309,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); - StreamConfiguration inputCfg; inputCfg.pixelFormat = pipeConfig->captureFormat; inputCfg.size = pipeConfig->captureSize;