From 4b1aa21db09df16d1a23d074e1b1c915b1b36ae4 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 6 Oct 2020 17:56:50 +0200 Subject: android: camera_device: Queue request using Worker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a CameraWorker class member to the CameraDevice class and queue capture requests to it to delegate its handling. Start and stop the CameraWorker when the libcamera::Camera is started or stopped. Tie the CaptureRequest lifetime to the Camera3RequestDescriptor's one by storing it as unique_ptr<> in the descriptor to simplify handling of request creation and deletion. Reviewed-by: Niklas Söderlund Reviewed-by: Laurent Pinchart Signed-off-by: Jacopo Mondi --- src/android/camera_device.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/android/camera_device.h') diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 777d1a35..86f2b897 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -25,6 +25,7 @@ #include "libcamera/internal/message.h" #include "camera_stream.h" +#include "camera_worker.h" #include "jpeg/encoder.h" class CameraMetadata; @@ -73,7 +74,8 @@ private: CameraDevice(unsigned int id, const std::shared_ptr &camera); struct Camera3RequestDescriptor { - Camera3RequestDescriptor(unsigned int frameNumber, + Camera3RequestDescriptor(libcamera::Camera *camera, + unsigned int frameNumber, unsigned int numBuffers); ~Camera3RequestDescriptor(); @@ -81,6 +83,7 @@ private: uint32_t numBuffers; camera3_stream_buffer_t *buffers; std::vector> frameBuffers; + std::unique_ptr request; }; struct Camera3StreamConfiguration { @@ -108,6 +111,8 @@ private: unsigned int id_; camera3_device_t camera3Device_; + CameraWorker worker_; + bool running_; std::shared_ptr camera_; std::unique_ptr config_; -- cgit v1.2.1