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:
@@ -300,6 +300,17 @@ Buffer::Buffer(unsigned int index, const Buffer *metadata)
|
||||
* \return The dmabuf file descriptors
|
||||
*/
|
||||
|
||||
/**
|
||||
* \fn Buffer::mem()
|
||||
* \brief Retrieve the BufferMemory this buffer is associated with
|
||||
*
|
||||
* The association between the buffer and a BufferMemory instance is valid from
|
||||
* the time the request containing this buffer is queued to a camera to the end
|
||||
* of that request's completion handler.
|
||||
*
|
||||
* \return The BufferMemory this buffer is associated with
|
||||
*/
|
||||
|
||||
/**
|
||||
* \fn Buffer::bytesused()
|
||||
* \brief Retrieve the number of bytes occupied by the data in the buffer
|
||||
|
||||
@@ -811,10 +811,14 @@ int Camera::queueRequest(Request *request)
|
||||
|
||||
for (auto const &it : request->buffers()) {
|
||||
Stream *stream = it.first;
|
||||
Buffer *buffer = it.second;
|
||||
|
||||
if (activeStreams_.find(stream) == activeStreams_.end()) {
|
||||
LOG(Camera, Error) << "Invalid request";
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
buffer->mem_ = &stream->buffers()[buffer->index_];
|
||||
}
|
||||
|
||||
int ret = request->prepare();
|
||||
|
||||
Reference in New Issue
Block a user