libcamera: buffer: Add an accessor to the BufferMemory

Buffer instances reference memory, which is modelled internally by a
BufferMemory instance. Store a pointer to the BufferMemory in the Buffer
class, and populate it when the buffer is queued to the camera through a
request. This is useful for applications to access the buffer memory in
the buffer or request completion handler.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Laurent Pinchart
2019-07-12 22:32:01 +03:00
parent f1199a1011
commit 689e8916ca
8 changed files with 26 additions and 11 deletions
+3 -4
View File
@@ -221,7 +221,6 @@ void MainWindow::requestComplete(Request *request,
framesCaptured_++;
Stream *stream = buffers.begin()->first;
Buffer *buffer = buffers.begin()->second;
double fps = buffer->timestamp() - lastBufferTime_;
@@ -235,8 +234,7 @@ void MainWindow::requestComplete(Request *request,
<< " fps: " << std::fixed << std::setprecision(2) << fps
<< std::endl;
BufferMemory *mem = &stream->buffers()[buffer->index()];
display(buffer, mem);
display(buffer);
request = camera_->createRequest();
if (!request) {
@@ -261,8 +259,9 @@ void MainWindow::requestComplete(Request *request,
camera_->queueRequest(request);
}
int MainWindow::display(Buffer *buffer, BufferMemory *mem)
int MainWindow::display(Buffer *buffer)
{
BufferMemory *mem = buffer->mem();
if (mem->planes().size() != 1)
return -EINVAL;