summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2021-01-21 12:52:10 +0100
committerJacopo Mondi <jacopo@jmondi.org>2021-01-22 10:37:33 +0100
commit9e6eece622a00166e9f6a2013aa07ef8095b016c (patch)
tree0e93ea4200193a814c888f8c0067b440433fabe7
parentb9369a0e6079df987a70fd9edfa294d098147d93 (diff)
android: camera_device: Clone settings in request descriptor
When a Camera3RequestDescriptor instance is created to wrap a camera3_capture_request_t the settings associated with the request are cloned for later re-use. Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r--src/android/camera_device.cpp4
-rw-r--r--src/android/camera_device.h4
2 files changed, 5 insertions, 3 deletions
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index abccb0db..822de254 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -22,7 +22,6 @@
#include "libcamera/internal/log.h"
#include "libcamera/internal/utils.h"
-#include "camera_metadata.h"
#include "system/graphics.h"
using namespace libcamera;
@@ -311,6 +310,9 @@ CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor(
*/
frameBuffers_.reserve(numBuffers_);
+ /* Clone the controls associated with the camera3 request. */
+ settings_ = CameraMetadata(camera3Request->settings);
+
/*
* Create the libcamera::Request unique_ptr<> to tie its lifetime
* to the descriptor's one. Set the descriptor's address as the
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index c2afc9d3..96b7fd99 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -24,12 +24,11 @@
#include "libcamera/internal/log.h"
#include "libcamera/internal/message.h"
+#include "camera_metadata.h"
#include "camera_stream.h"
#include "camera_worker.h"
#include "jpeg/encoder.h"
-class CameraMetadata;
-
class MappedCamera3Buffer : public libcamera::MappedBuffer
{
public:
@@ -82,6 +81,7 @@ private:
uint32_t numBuffers_;
camera3_stream_buffer_t *buffers_;
std::vector<std::unique_ptr<libcamera::FrameBuffer>> frameBuffers_;
+ CameraMetadata settings_;
std::unique_ptr<CaptureRequest> request_;
};