[libcamera-devel] [PATCH v2 04/14] libcamera: pipeline: Add method to prepare internal buffers
Niklas Söderlund
niklas.soderlund at ragnatech.se
Fri Aug 30 01:26:43 CEST 2019
Buffers internal to a pipeline handler (buffers cycled between a CSI-2
pipeline to a ISP pipeline, parameters and statistics buffers) needs to
be prepared before they can be properly used inside a pipeline handler.
At this point the preparation consists of mapping the Buffer objects
memory and associating it with a request. Instead of adding this helper
on the Buffer object itself add it to the pipeline handler base class to
prevent it from being exposed to applications.
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 558b4b254d111e31..846272485c7d2fc0 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -485,6 +485,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