[libcamera-devel] [PATCH v4 02/14] ipu3: ipa: Report effective sensor controls with statistics to IPA

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Fri Nov 12 03:49:35 CET 2021


Hi Jean-Michel,

On Thu, Nov 11, 2021 at 03:09:16PM +0100, Jean-Michel Hautbois wrote:
> From: Han-Lin Chen <hanlinchen at chromium.org>
> 
> The Intel close sourced IPA requires the effective controls applied to
> the sensor when the statistics are generated. Report effective sensor controls
> with the statistics to IPA.
> 
> Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
> [Jean-Michel: Reword s/stastistics/statistics and move reset after IPA
> start]
> 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>

> ---
>  src/libcamera/pipeline/ipu3/frames.h | 4 ++++
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h
> index 3ef7e445..614701e2 100644
> --- a/src/libcamera/pipeline/ipu3/frames.h
> +++ b/src/libcamera/pipeline/ipu3/frames.h
> @@ -14,6 +14,8 @@
>  
>  #include <libcamera/base/signal.h>
>  
> +#include <libcamera/controls.h>
> +
>  namespace libcamera {
>  
>  class FrameBuffer;
> @@ -34,6 +36,8 @@ public:
>  		FrameBuffer *paramBuffer;
>  		FrameBuffer *statBuffer;
>  
> +		ControlList effectiveSensorControls;
> +
>  		bool paramDequeued;
>  		bool metadataProcessed;
>  	};
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 8816efc5..c984ed12 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -767,6 +767,8 @@ int PipelineHandlerIPU3::start(Camera *camera, [[maybe_unused]] const ControlLis
>  	if (ret)
>  		goto error;
>  
> +	data->delayedCtrls_->reset();
> +
>  	/*
>  	 * Start the ImgU video devices, buffers will be queued to the
>  	 * ImgU output and viewfinder when requests will be queued.
> @@ -1363,6 +1365,8 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
>  	request->metadata().set(controls::SensorTimestamp,
>  				buffer->metadata().timestamp);
>  
> +	info->effectiveSensorControls = delayedCtrls_->get(buffer->metadata().sequence);
> +
>  	if (request->findBuffer(&rawStream_))
>  		pipe()->completeBuffer(request, buffer);
>  
> @@ -1419,6 +1423,7 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer)
>  	ev.frame = info->id;
>  	ev.bufferId = info->statBuffer->cookie();
>  	ev.frameTimestamp = request->metadata().get(controls::SensorTimestamp);
> +	ev.sensorControls = info->effectiveSensorControls;
>  	ipa_->processEvent(ev);
>  }
>  
> -- 
> 2.32.0
> 


More information about the libcamera-devel mailing list