android: camera_request: Don't embed full camera3_stream_buffer_t
The camera3_stream_buffer_t structure is meant to communicate between the camera service and the HAL. They are short-live structures that don't outlive the .process_capture_request() operation (when queuing requests) or the .process_capture_result() callback. We currently store copies of the camera3_stream_buffer_t passed to .process_capture_request() in Camera3RequestDescriptor::StreamBuffer to store the structure members that the HAL need, and reuse them when calling the .process_capture_result() callback. This is conceptually not right, as the camera3_stream_buffer_t pass to the callback are not the same objects as the ones received in .process_capture_request(). Store individual fields of the camera3_stream_buffer_t in StreamBuffer instead of copying the whole structure. This gives the HAL full control of how data is stored, and properly decouples request queueing from result reporting. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
b393edb181
commit
e82d7e4767
4 changed files with 63 additions and 47 deletions
|
@ -20,6 +20,8 @@
|
|||
#include "camera_metadata.h"
|
||||
#include "camera_worker.h"
|
||||
|
||||
class CameraStream;
|
||||
|
||||
class Camera3RequestDescriptor
|
||||
{
|
||||
public:
|
||||
|
@ -30,13 +32,11 @@ public:
|
|||
};
|
||||
|
||||
struct StreamBuffer {
|
||||
camera3_stream_buffer_t buffer;
|
||||
/*
|
||||
* FrameBuffer instances created by wrapping a camera3 provided
|
||||
* dmabuf are emplaced in this vector of unique_ptr<> for
|
||||
* lifetime management.
|
||||
*/
|
||||
CameraStream *stream;
|
||||
buffer_handle_t *camera3Buffer;
|
||||
std::unique_ptr<libcamera::FrameBuffer> frameBuffer;
|
||||
int fence;
|
||||
Status status;
|
||||
};
|
||||
|
||||
Camera3RequestDescriptor(libcamera::Camera *camera,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue