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

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Nov 8 14:48:10 CET 2021


Quoting Jean-Michel Hautbois (2021-11-08 13:13:30)
> 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 stastistics to IPA.
> 
> Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
> [Jean-Michel: Reword s/stastistics/statistics]

You missed one in the commit message ;-)

> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> ---
>  src/libcamera/pipeline/ipu3/frames.h | 3 +++
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 5 +++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h
> index 3ef7e445..a897e307 100644
> --- a/src/libcamera/pipeline/ipu3/frames.h
> +++ b/src/libcamera/pipeline/ipu3/frames.h
> @@ -12,6 +12,7 @@
>  #include <queue>
>  #include <vector>
>  
> +#include <libcamera/controls.h>

I suspect checkstyle would suggest a separate group here.

>  #include <libcamera/base/signal.h>
>  
>  namespace libcamera {
> @@ -34,6 +35,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..6a7f5b9a 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -667,6 +667,8 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
>                 return ret;
>         }
>  
> +       data->delayedCtrls_->reset();
> +

Did I see a commit titled that moves this later?

>         return updateControls(data);
>  }
>  
> @@ -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