[libcamera-devel] [PATCH 03/13] libcamera: pipeline: Add method to prepare buffer for IPA

Niklas Söderlund niklas.soderlund at ragnatech.se
Wed Aug 28 03:17:00 CEST 2019


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.

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);
 	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



More information about the libcamera-devel mailing list