[libcamera-devel] [PATCH 01/22] ipa: ipu3: Extend ipu3 ipa interface for sensor controls

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Wed Nov 10 11:03:34 CET 2021


Hi Jean-Michel,

On Mon, Nov 08, 2021 at 02:13:29PM +0100, Jean-Michel Hautbois wrote:
> From: Han-Lin Chen <hanlinchen at chromium.org>
> 
> IPU3Event and IPU3Action use single ControlList for both libcamera and
> V4L2 controls, and it's content could be either one based on the
> context.  Extend IPU3Event and IPU3Action for sensor V4L2 controls, and
> preserve the original one for only libcamera Controls to make the
> content of an event more specific.
> 
> Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
> [Jean-Michel: remove lensControls from the original patch]
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  include/libcamera/ipa/ipu3.mojom     | 2 ++
>  src/ipa/ipu3/ipu3.cpp                | 2 +-
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
>  3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
> index 2f254ed4..16e3462e 100644
> --- a/include/libcamera/ipa/ipu3.mojom
> +++ b/include/libcamera/ipa/ipu3.mojom
> @@ -23,11 +23,13 @@ struct IPU3Event {
>  	int64 frameTimestamp;
>  	uint32 bufferId;
>  	libcamera.ControlList controls;
> +	libcamera.ControlList sensorControls;
>  };
>  
>  struct IPU3Action {
>  	IPU3Operations op;
>  	libcamera.ControlList controls;
> +	libcamera.ControlList sensorControls;
>  };
>  
>  struct IPAConfigInfo {
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index 93b700bd..bcc3863b 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -653,7 +653,7 @@ void IPAIPU3::setControls(unsigned int frame)
>  	ControlList ctrls(ctrls_);
>  	ctrls.set(V4L2_CID_EXPOSURE, static_cast<int32_t>(exposure_));
>  	ctrls.set(V4L2_CID_ANALOGUE_GAIN, static_cast<int32_t>(gain_));
> -	op.controls = ctrls;
> +	op.sensorControls = ctrls;
>  
>  	queueFrameAction.emit(frame, op);
>  }
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index eb714aa6..8816efc5 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -1248,7 +1248,7 @@ void IPU3CameraData::queueFrameAction(unsigned int id,
>  {
>  	switch (action.op) {
>  	case ipa::ipu3::ActionSetSensorControls: {
> -		const ControlList &controls = action.controls;
> +		const ControlList &controls = action.sensorControls;
>  		delayedCtrls_->push(controls);
>  		break;
>  	}
> -- 
> 2.32.0
> 


More information about the libcamera-devel mailing list