mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
mojom: pipeline: ipa: rpi: Add fields for PiSP objects
Add the PiSP Frontend and Backend SharedMemObject file descriptors to the ipa::init() call. This will allow the pipeline handler to pass these objects to the IPA after construction. Add a flag to indicate if buffer swaps are needed when starting the ISP for the stitch block. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
71bb5b345f
commit
6f44b9f969
3 changed files with 9 additions and 4 deletions
|
@ -22,6 +22,9 @@ struct SensorConfig {
|
||||||
struct InitParams {
|
struct InitParams {
|
||||||
bool lensPresent;
|
bool lensPresent;
|
||||||
libcamera.IPACameraSensorInfo sensorInfo;
|
libcamera.IPACameraSensorInfo sensorInfo;
|
||||||
|
/* PISP specific */
|
||||||
|
libcamera.SharedFD fe;
|
||||||
|
libcamera.SharedFD be;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct InitResult {
|
struct InitResult {
|
||||||
|
@ -219,13 +222,14 @@ interface IPARPiEventInterface {
|
||||||
* \fn prepareIspComplete()
|
* \fn prepareIspComplete()
|
||||||
* \brief Signal completion of \a prepareIsp
|
* \brief Signal completion of \a prepareIsp
|
||||||
* \param[in] buffers Bayer and embedded buffers actioned.
|
* \param[in] buffers Bayer and embedded buffers actioned.
|
||||||
|
* \param[in] stitchSwapBuffers Whether the stitch block buffers need to be swapped.
|
||||||
*
|
*
|
||||||
* This asynchronous event is signalled to the pipeline handler once
|
* This asynchronous event is signalled to the pipeline handler once
|
||||||
* the \a prepareIsp signal has completed, and the ISP is ready to start
|
* the \a prepareIsp signal has completed, and the ISP is ready to start
|
||||||
* processing the frame. The embedded data buffer may be recycled after
|
* processing the frame. The embedded data buffer may be recycled after
|
||||||
* this event.
|
* this event.
|
||||||
*/
|
*/
|
||||||
prepareIspComplete(BufferIds buffers);
|
prepareIspComplete(BufferIds buffers, bool stitchSwapBuffers);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \fn processStatsComplete()
|
* \fn processStatsComplete()
|
||||||
|
|
|
@ -446,7 +446,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
||||||
frameCount_++;
|
frameCount_++;
|
||||||
|
|
||||||
/* Ready to push the input buffer into the ISP. */
|
/* Ready to push the input buffer into the ISP. */
|
||||||
prepareIspComplete.emit(params.buffers);
|
prepareIspComplete.emit(params.buffers, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IpaBase::processStats(const ProcessParams ¶ms)
|
void IpaBase::processStats(const ProcessParams ¶ms)
|
||||||
|
|
|
@ -78,7 +78,7 @@ public:
|
||||||
void ispOutputDequeue(FrameBuffer *buffer);
|
void ispOutputDequeue(FrameBuffer *buffer);
|
||||||
|
|
||||||
void processStatsComplete(const ipa::RPi::BufferIds &buffers);
|
void processStatsComplete(const ipa::RPi::BufferIds &buffers);
|
||||||
void prepareIspComplete(const ipa::RPi::BufferIds &buffers);
|
void prepareIspComplete(const ipa::RPi::BufferIds &buffers, bool stitchSwapBuffers);
|
||||||
void setIspControls(const ControlList &controls);
|
void setIspControls(const ControlList &controls);
|
||||||
void setCameraTimeout(uint32_t maxFrameLengthMs);
|
void setCameraTimeout(uint32_t maxFrameLengthMs);
|
||||||
|
|
||||||
|
@ -833,7 +833,8 @@ void Vc4CameraData::processStatsComplete(const ipa::RPi::BufferIds &buffers)
|
||||||
handleState();
|
handleState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Vc4CameraData::prepareIspComplete(const ipa::RPi::BufferIds &buffers)
|
void Vc4CameraData::prepareIspComplete(const ipa::RPi::BufferIds &buffers,
|
||||||
|
[[maybe_unused]] bool stitchSwapBuffers)
|
||||||
{
|
{
|
||||||
unsigned int embeddedId = buffers.embedded & RPi::MaskID;
|
unsigned int embeddedId = buffers.embedded & RPi::MaskID;
|
||||||
unsigned int bayer = buffers.bayer & RPi::MaskID;
|
unsigned int bayer = buffers.bayer & RPi::MaskID;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue