[PATCH v7 4/5] pipeline: simple: Create DelayedControls instance once only
Stanislaw Gruszka
stanislaw.gruszka at linux.intel.com
Thu Apr 3 09:45:50 CEST 2025
From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
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.
Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com> # v6
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka at linux.intel.com>
---
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 c97904076b63..262192b849e2 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -542,6 +542,13 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
if (!sensor_)
return;
+ const CameraSensorProperties::SensorDelays &delays = sensor_->sensorDelays();
+ std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
+ { V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
+ { V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
+ };
+ delayedCtrls_ = std::make_unique<DelayedControls>(sensor_->device(), params);
+
LOG(SimplePipeline, Debug)
<< "Found pipeline: "
<< utils::join(entities_, " -> ",
@@ -1388,15 +1395,6 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
if (outputCfgs.empty())
return 0;
- const CameraSensorProperties::SensorDelays &delays = data->sensor_->sensorDelays();
- std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
- { V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
- { V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
- };
- data->delayedCtrls_ =
- std::make_unique<DelayedControls>(data->sensor_->device(),
- params);
-
StreamConfiguration inputCfg;
inputCfg.pixelFormat = pipeConfig->captureFormat;
inputCfg.size = pipeConfig->captureSize;
--
2.43.0
More information about the libcamera-devel
mailing list