summaryrefslogtreecommitdiff
path: root/src/android/camera_request.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-19 17:17:59 +0530
committerUmang Jain <umang.jain@ideasonboard.com>2021-10-19 19:15:53 +0530
commite82d7e476759fb76dc280ff4b8a4a4f246deb103 (patch)
tree6ca76cd93973ddcacbad1c5f21a41a59ac49362a /src/android/camera_request.h
parentb393edb181a9ec5d0544a453029627fb3e81075c (diff)
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>
Diffstat (limited to 'src/android/camera_request.h')
-rw-r--r--src/android/camera_request.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/android/camera_request.h b/src/android/camera_request.h
index a030febf..05dabf89 100644
--- a/src/android/camera_request.h
+++ b/src/android/camera_request.h
@@ -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,