[PATCH v5 5/5] pipeline: simple: Create DelayedControls instance once only

Kieran Bingham kieran.bingham at ideasonboard.com
Sun Mar 2 00:41:09 CET 2025


Quoting Stanislaw Gruszka (2025-02-25 16:41:16)
> 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.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka at linux.intel.com>


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.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 b92b738b..73a4138e 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<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_, " -> ",
> @@ -1294,15 +1301,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