diff options
Diffstat (limited to 'src/libcamera/pipeline_handler.cpp')
-rw-r--r-- | src/libcamera/pipeline_handler.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index 698dd525..11d68456 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -290,6 +290,78 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera) */ /** + * \fn PipelineHandler::exportFrameBuffers() + * \brief Allocate buffers for \a stream + * \param[in] camera The camera + * \param[in] stream The stream to allocate buffers for + * \param[out] buffers Array of buffers successfully allocated + * + * This method allocates buffers for the \a stream from the devices associated + * with the stream in the corresponding pipeline handler. Those buffers shall be + * suitable to be added to a Request for the stream, and shall be mappable to + * the CPU through their associated dmabufs with mmap(). + * + * The method may only be called after the Camera has been configured and before + * it gets started, or after it gets stopped. It shall be called only for + * streams that are part of the active camera configuration, and at most once + * per stream until buffers for the stream are freed with freeFrameBuffers(). + * + * exportFrameBuffers() shall also allocate all other resources required by + * the pipeline handler for the stream to prepare for starting the Camera. This + * responsibility is shared with importFrameBuffers(), and one and only one of + * those two methods shall be called for each stream until the buffers are + * freed. The pipeline handler shall support all combinations of + * exportFrameBuffers() and importFrameBuffers() for the streams contained in + * any camera configuration. + * + * The only intended caller is the FrameBufferAllocator helper. + * + * \return 0 on success or a negative error code otherwise + */ + +/** + * \fn PipelineHandler::importFrameBuffers() + * \brief Prepare \a stream to use external buffers + * \param[in] camera The camera + * \param[in] stream The stream to prepare for import + * + * This method prepares the pipeline handler to use buffers provided by the + * application for the \a stream. + * + * The method may only be called after the Camera has been configured and before + * it gets started, or after it gets stopped. It shall be called only for + * streams that are part of the active camera configuration, and at most once + * per stream until buffers for the stream are freed with freeFrameBuffers(). + * + * importFrameBuffers() shall also allocate all other resources required by the + * pipeline handler for the stream to prepare for starting the Camera. This + * responsibility is shared with exportFrameBuffers(), and one and only one of + * those two methods shall be called for each stream until the buffers are + * freed. The pipeline handler shall support all combinations of + * exportFrameBuffers() and importFrameBuffers() for the streams contained in + * any camera configuration. + * + * The only intended caller is Camera::start(). + * + * \return 0 on success or a negative error code otherwise + */ + +/** + * \fn PipelineHandler::freeFrameBuffers() + * \brief Free buffers allocated from the stream + * \param[in] camera The camera + * \param[in] stream The stream to free buffers for + * + * This method shall free all buffers and all other resources allocated for the + * \a stream by exportFrameBuffers() or importFrameBuffers(). It shall be + * called only after a successful call to either of these two methods, and only + * once per stream. + * + * The only intended callers are Camera::stop() and the FrameBufferAllocator + * helper. + */ + +/** * \fn PipelineHandler::allocateBuffers() * \brief Allocate buffers for a stream * \param[in] camera The camera the \a stream belongs to |