android: Move buffer mapping to CameraStream
The destination buffer for the post-processing component is currently first mapped in the CameraDevice class and then passed to CameraStream which simply calls the post-processor interface. Move the mapping to CameraStream::process() to tie the buffer mapping to the lifetime of the CameraBuffer instance. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
d5473c9626
commit
a725baf4b3
4 changed files with 16 additions and 18 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "camera_stream.h"
|
||||
|
||||
#include "camera_buffer.h"
|
||||
#include "camera_device.h"
|
||||
#include "camera_metadata.h"
|
||||
#include "jpeg/post_processor_jpeg.h"
|
||||
|
@ -96,15 +97,24 @@ int CameraStream::configure()
|
|||
}
|
||||
|
||||
int CameraStream::process(const libcamera::FrameBuffer &source,
|
||||
libcamera::MappedBuffer *destination,
|
||||
buffer_handle_t camera3Dest,
|
||||
const CameraMetadata &requestMetadata,
|
||||
CameraMetadata *resultMetadata)
|
||||
{
|
||||
if (!postProcessor_)
|
||||
return 0;
|
||||
|
||||
return postProcessor_->process(source, destination,
|
||||
requestMetadata, resultMetadata);
|
||||
/*
|
||||
* \todo Buffer mapping and processing should be moved to a
|
||||
* separate thread.
|
||||
*/
|
||||
CameraBuffer dest(camera3Dest, PROT_READ | PROT_WRITE);
|
||||
if (!dest.isValid()) {
|
||||
LOG(HAL, Error) << "Failed to map android blob buffer";
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return postProcessor_->process(source, &dest, requestMetadata, resultMetadata);
|
||||
}
|
||||
|
||||
FrameBuffer *CameraStream::getBuffer()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue