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>
This commit is contained in:
committed by
Jean-Michel Hautbois
parent
f12efa6730
commit
726d6087c0
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user