diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cam/capture.cpp | 2 | ||||
-rw-r--r-- | src/libcamera/camera.cpp | 4 | ||||
-rw-r--r-- | src/libcamera/stream.cpp | 36 | ||||
-rw-r--r-- | src/qcam/main_window.cpp | 2 |
4 files changed, 38 insertions, 6 deletions
diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp index 66ec1aba..5ffa4ae2 100644 --- a/src/cam/capture.cpp +++ b/src/cam/capture.cpp @@ -154,7 +154,7 @@ void Capture::requestComplete(Request *request, const std::map<Stream *, Buffer for (auto it = buffers.begin(); it != buffers.end(); ++it) { Stream *stream = it->first; Buffer *buffer = it->second; - BufferMemory *mem = &stream->bufferPool().buffers()[buffer->index()]; + BufferMemory *mem = &stream->buffers()[buffer->index()]; const std::string &name = streamName_[stream]; info << " " << name diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp index 1f307654..61d3e821 100644 --- a/src/libcamera/camera.cpp +++ b/src/libcamera/camera.cpp @@ -683,7 +683,7 @@ int Camera::configure(CameraConfiguration *config) * Allocate buffer objects in the pool. * Memory will be allocated and assigned later. */ - stream->bufferPool().createBuffers(cfg.bufferCount); + stream->createBuffers(cfg.bufferCount); } state_ = CameraConfigured; @@ -744,7 +744,7 @@ int Camera::freeBuffers() * All mappings must be destroyed before buffers can be freed * by the V4L2 device that has allocated them. */ - stream->bufferPool().destroyBuffers(); + stream->destroyBuffers(); } state_ = CameraConfigured; diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index 6d80646b..12067c08 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -435,20 +435,52 @@ std::unique_ptr<Buffer> Stream::createBuffer(unsigned int index) * \fn Stream::bufferPool() * \brief Retrieve the buffer pool for the stream * - * The buffer pool handles the buffers used to capture frames at the output of - * the stream. It is initially created empty and shall be populated with + * The buffer pool handles the memory buffers used to store frames for the + * stream. It is initially created empty and shall be populated with * buffers before being used. * * \return A reference to the buffer pool */ /** + * \fn Stream::buffers() + * \brief Retrieve the memory buffers in the Stream's buffer pool + * \return The list of stream's memory buffers + */ + +/** * \fn Stream::configuration() * \brief Retrieve the active configuration of the stream * \return The active configuration of the stream */ /** + * \brief Create buffers for the stream + * \param[in] count The number of buffers to create + * + * Create \a count empty buffers in the Stream's buffer pool. + */ +void Stream::createBuffers(unsigned int count) +{ + destroyBuffers(); + if (count == 0) + return; + + bufferPool_.createBuffers(count); +} + +/** + * \brief Destroy buffers in the stream + * + * If no buffers have been created or if buffers have already been destroyed no + * operation is performed. + */ +void Stream::destroyBuffers() +{ + bufferPool_.destroyBuffers(); +} + +/** * \var Stream::bufferPool_ * \brief The pool of buffers associated with the stream * diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp index 7023e115..92f88832 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -235,7 +235,7 @@ void MainWindow::requestComplete(Request *request, << " fps: " << std::fixed << std::setprecision(2) << fps << std::endl; - BufferMemory *mem = &stream->bufferPool().buffers()[buffer->index()]; + BufferMemory *mem = &stream->buffers()[buffer->index()]; display(buffer, mem); request = camera_->createRequest(); |