[libcamera-devel,5/7] android: camera_device: Clone settings in request descriptor
diff mbox series

Message ID 20210121165305.367801-6-jacopo@jmondi.org
State Accepted
Headers show
Series
  • android: camera device and metadata improvements
Related show

Commit Message

Jacopo Mondi Jan. 21, 2021, 4:53 p.m. UTC
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.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/android/camera_device.cpp | 4 +++-
 src/android/camera_device.h   | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

Comments

Laurent Pinchart Jan. 21, 2021, 9:38 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Thu, Jan 21, 2021 at 05:53:03PM +0100, Jacopo Mondi wrote:
> 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.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  src/android/camera_device.cpp | 4 +++-
>  src/android/camera_device.h   | 4 ++--
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 578fb2271a9e..9733c84612bd 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 ab3c848edd0a..bad3be8e8066 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_;
>  	};
>
Paul Elder Jan. 22, 2021, 4:12 a.m. UTC | #2
Hi Jacopo,

On Thu, Jan 21, 2021 at 05:53:03PM +0100, Jacopo Mondi wrote:
> 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.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> ---
>  src/android/camera_device.cpp | 4 +++-
>  src/android/camera_device.h   | 4 ++--
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 578fb2271a9e..9733c84612bd 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 ab3c848edd0a..bad3be8e8066 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_;
>  	};
>  
> -- 
> 2.29.2
>

Patch
diff mbox series

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 578fb2271a9e..9733c84612bd 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 ab3c848edd0a..bad3be8e8066 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_;
 	};