libcamera: software_isp: Track and pass frame ids

A previous preparation patch implemented passing frame ids to stats
processing but without actual meaningful frame id value passed there.
This patch extends that by actually providing the frame id and passing
it through to the stats processor.

The frame id is taken from the request sequence number, the same as in
hardware pipelines.

Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Milan Zamazal
2024-09-27 15:46:13 +02:00
committed by Kieran Bingham
parent e334227dcc
commit f06c344bd5
7 changed files with 24 additions and 17 deletions

View File

@@ -278,12 +278,13 @@ int SoftwareIsp::exportBuffers(const Stream *stream, unsigned int count,
/**
* \brief Queue buffers to Software ISP
* \param[in] frame The frame number
* \param[in] input The input framebuffer
* \param[in] outputs The container holding the output stream pointers and
* their respective frame buffer outputs
* \return 0 on success, a negative errno on failure
*/
int SoftwareIsp::queueBuffers(FrameBuffer *input,
int SoftwareIsp::queueBuffers(uint32_t frame, FrameBuffer *input,
const std::map<const Stream *, FrameBuffer *> &outputs)
{
/*
@@ -301,7 +302,7 @@ int SoftwareIsp::queueBuffers(FrameBuffer *input,
}
for (auto iter = outputs.begin(); iter != outputs.end(); iter++)
process(input, iter->second);
process(frame, input, iter->second);
return 0;
}
@@ -333,13 +334,14 @@ void SoftwareIsp::stop()
/**
* \brief Passes the input framebuffer to the ISP worker to process
* \param[in] frame The frame number
* \param[in] input The input framebuffer
* \param[out] output The framebuffer to write the processed frame to
*/
void SoftwareIsp::process(FrameBuffer *input, FrameBuffer *output)
void SoftwareIsp::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output)
{
debayer_->invokeMethod(&DebayerCpu::process,
ConnectionTypeQueued, input, output, debayerParams_);
ConnectionTypeQueued, frame, input, output, debayerParams_);
}
void SoftwareIsp::saveIspParams()