mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 15:29: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 {
|
||||
bool lensPresent;
|
||||
libcamera.IPACameraSensorInfo sensorInfo;
|
||||
/* PISP specific */
|
||||
libcamera.SharedFD fe;
|
||||
libcamera.SharedFD be;
|
||||
};
|
||||
|
||||
struct InitResult {
|
||||
|
@ -219,13 +222,14 @@ interface IPARPiEventInterface {
|
|||
* \fn prepareIspComplete()
|
||||
* \brief Signal completion of \a prepareIsp
|
||||
* \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
|
||||
* the \a prepareIsp signal has completed, and the ISP is ready to start
|
||||
* processing the frame. The embedded data buffer may be recycled after
|
||||
* this event.
|
||||
*/
|
||||
prepareIspComplete(BufferIds buffers);
|
||||
prepareIspComplete(BufferIds buffers, bool stitchSwapBuffers);
|
||||
|
||||
/**
|
||||
* \fn processStatsComplete()
|
||||
|
|
|
@ -446,7 +446,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
frameCount_++;
|
||||
|
||||
/* Ready to push the input buffer into the ISP. */
|
||||
prepareIspComplete.emit(params.buffers);
|
||||
prepareIspComplete.emit(params.buffers, false);
|
||||
}
|
||||
|
||||
void IpaBase::processStats(const ProcessParams ¶ms)
|
||||
|
|
|
@ -78,7 +78,7 @@ public:
|
|||
void ispOutputDequeue(FrameBuffer *buffer);
|
||||
|
||||
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 setCameraTimeout(uint32_t maxFrameLengthMs);
|
||||
|
||||
|
@ -833,7 +833,8 @@ void Vc4CameraData::processStatsComplete(const ipa::RPi::BufferIds &buffers)
|
|||
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 bayer = buffers.bayer & RPi::MaskID;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue