[libcamera-devel] [PATCH 05/20] mojom: pipeline: ipa: rpi: Add fields for PiSP objects
Jacopo Mondi
jacopo.mondi at ideasonboard.com
Thu Oct 12 10:21:39 CEST 2023
Hi Naush
On Fri, Oct 06, 2023 at 02:19:45PM +0100, Naushir Patuck via libcamera-devel wrote:
> 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 at raspberrypi.com>
> Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> ---
> include/libcamera/ipa/raspberrypi.mojom | 6 +++++-
> src/ipa/rpi/common/ipa_base.cpp | 2 +-
> src/libcamera/pipeline/rpi/vc4/vc4.cpp | 5 +++--
> 3 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom
> index ab4c4e2edca3..5986c4366c15 100644
> --- a/include/libcamera/ipa/raspberrypi.mojom
> +++ b/include/libcamera/ipa/raspberrypi.mojom
> @@ -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()
> diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
> index 5939fe57f040..97f647a9e53e 100644
> --- a/src/ipa/rpi/common/ipa_base.cpp
> +++ b/src/ipa/rpi/common/ipa_base.cpp
> @@ -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)
> diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> index bc90d6324777..233473e2fe2b 100644
> --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
> @@ -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;
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list