[libcamera-devel] [PATCH 03/13] libcamera: pipeline: Add method to prepare buffer for IPA
Jacopo Mondi
jacopo at jmondi.org
Wed Aug 28 18:02:49 CEST 2019
Hi Niklas,
On Wed, Aug 28, 2019 at 03:17:00AM +0200, Niklas Söderlund wrote:
> The pipeline handlers dealing with buffers outside the request coming
> from an application needs to prepare Buffer objects before they can be
> used by other the libcamera functions. For objects coming from the user
> this is done by the Camera before the Buffers reach the pipeline
> handler. Add a new method prepareInternalBuffer() to aid with this
> preparation.
As clarified offline, this should be reworded to specify you're here
talking about internal buffers used by pipelines for
statistics/controls (also for internal buffer queues, like the
CIO2->IMGU one in the IPU3 ? )
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> src/libcamera/include/pipeline_handler.h | 2 ++
> src/libcamera/pipeline_handler.cpp | 18 ++++++++++++++++++
> 2 files changed, 20 insertions(+)
>
> diff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h
> index ffc7adb802215313..91d40ef40a465c4e 100644
> --- a/src/libcamera/include/pipeline_handler.h
> +++ b/src/libcamera/include/pipeline_handler.h
> @@ -98,6 +98,8 @@ protected:
>
> CameraData *cameraData(const Camera *camera);
>
> + void prepareInternalBuffer(Buffer *buffer, Request *request,
> + BufferMemory *mem);
Do you think this will expand ? Otherwise I wonder if this should not
be made Buffer operation, like Buffer::prepare(req, mem); or other
names that better convey the idea of initialization
outside-of-a-request...
> CameraManager *manager_;
>
> private:
> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
> index 89b67806597728f9..766fd496306ece9c 100644
> --- a/src/libcamera/pipeline_handler.cpp
> +++ b/src/libcamera/pipeline_handler.cpp
> @@ -484,6 +484,24 @@ void PipelineHandler::hotplugMediaDevice(MediaDevice *media)
> media->disconnected.connect(this, &PipelineHandler::mediaDeviceDisconnected);
> }
>
> +/**
> + * \brief Prepare buffer for internal usage by a pipeline handler
> + * \param[in,out] buffer The buffer to prepare
> + * \param[in] request The request to associate the \a buffer with
> + * \param[in] mem The memory to associate the \a buffer with
> + *
> + * Pipeline handlers creating internal buffers to facilitate data flow in the
> + * pipeline need to prepare the buffers by setting up the buffer object state.
> + * This function help pipeline handler implementations to perform this
> + * preparation.
> + */
> +void PipelineHandler::prepareInternalBuffer(Buffer *buffer, Request *request,
> + BufferMemory *mem)
> +{
> + buffer->request_ = request;
> + buffer->mem_ = mem;
> +}
> +
> /**
> * \brief Slot for the MediaDevice disconnected signal
> */
> --
> 2.22.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190828/636bcab6/attachment.sig>
More information about the libcamera-devel
mailing list