summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/ipu3/ipu3.cpp
diff options
context:
space:
mode:
authorHan-Lin Chen <hanlinchen@chromium.org>2021-10-29 19:59:15 +0800
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-11-15 10:49:13 +0100
commit726d6087c00c1e29b014b04d6044b303d30e4111 (patch)
tree12ffb02bfe3b2972a37c56a857dd098bc861a1cd /src/libcamera/pipeline/ipu3/ipu3.cpp
parentf12efa6730645ba5a9a6c05ea182824ced2a0c3f (diff)
ipu3: ipa: Report effective sensor controls with statistics to IPA
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@chromium.org> [Jean-Michel: Reword s/stastistics/statistics and move reset after IPA start] Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline/ipu3/ipu3.cpp')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 75fb2d90..63916caf 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);
}