[libcamera-devel,RFC,v4,08/21] android: Add skeletal still and manual request templates
diff mbox series

Message ID 20210716105631.158153-9-paul.elder@ideasonboard.com
State Superseded
Headers show
Series
  • Preliminary FULL plumbing
Related show

Commit Message

Paul Elder July 16, 2021, 10:56 a.m. UTC
Add skeletal still and manual request templates so that we can expand
them for FULL support.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
---
 src/android/camera_capabilities.cpp | 18 ++++++++++++++++++
 src/android/camera_capabilities.h   |  2 ++
 src/android/camera_device.cpp       |  7 +++++--
 3 files changed, 25 insertions(+), 2 deletions(-)

Comments

Jacopo Mondi July 17, 2021, 10:16 a.m. UTC | #1
On Fri, Jul 16, 2021 at 07:56:18PM +0900, Paul Elder wrote:
> Add skeletal still and manual request templates so that we can expand
> them for FULL support.
>
> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> ---
>  src/android/camera_capabilities.cpp | 18 ++++++++++++++++++
>  src/android/camera_capabilities.h   |  2 ++
>  src/android/camera_device.cpp       |  7 +++++--
>  3 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
> index 09b3d82d..21e31cf2 100644
> --- a/src/android/camera_capabilities.cpp
> +++ b/src/android/camera_capabilities.cpp
> @@ -1443,3 +1443,21 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateVideo() const
>
>  	return previewTemplate;
>  }
> +
> +std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateStill() const
> +{
> +	std::unique_ptr<CameraMetadata> stillTemplate = requestTemplatePreview();
> +	if (!stillTemplate)
> +		return nullptr;

You could directly return the requestTemplatePreview() function return value.
Anyway, looks good
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

> +
> +	return stillTemplate;
> +}
> +
> +std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() const
> +{
> +	std::unique_ptr<CameraMetadata> manualTemplate = requestTemplatePreview();
> +	if (!manualTemplate)
> +		return nullptr;
> +
> +	return manualTemplate;
> +}
> diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h
> index cf68539b..52a203c8 100644
> --- a/src/android/camera_capabilities.h
> +++ b/src/android/camera_capabilities.h
> @@ -34,6 +34,8 @@ public:
>
>  	std::unique_ptr<CameraMetadata> requestTemplatePreview() const;
>  	std::unique_ptr<CameraMetadata> requestTemplateVideo() const;
> +	std::unique_ptr<CameraMetadata> requestTemplateStill() const;
> +	std::unique_ptr<CameraMetadata> requestTemplateManual() const;
>
>  private:
>  	LIBCAMERA_DISABLE_COPY_AND_MOVE(CameraCapabilities)
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 678cde23..692d0a5b 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -487,7 +487,7 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
>  		 * for the torch mode we currently do not support.
>  		 */
>  		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;
> -		requestTemplate = capabilities_.requestTemplatePreview();
> +		requestTemplate = capabilities_.requestTemplateStill();
>  		break;
>  	case CAMERA3_TEMPLATE_VIDEO_RECORD:
>  		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;
> @@ -497,9 +497,12 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
>  		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT;
>  		requestTemplate = capabilities_.requestTemplateVideo();
>  		break;
> +	case CAMERA3_TEMPLATE_MANUAL:
> +		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL;
> +		requestTemplate = capabilities_.requestTemplateManual();
> +		break;
>  	/* \todo Implement templates generation for the remaining use cases. */
>  	case CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG:
> -	case CAMERA3_TEMPLATE_MANUAL:
>  	default:
>  		LOG(HAL, Error) << "Unsupported template request type: " << type;
>  		return nullptr;
> --
> 2.27.0
>

Patch
diff mbox series

diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index 09b3d82d..21e31cf2 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -1443,3 +1443,21 @@  std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateVideo() const
 
 	return previewTemplate;
 }
+
+std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateStill() const
+{
+	std::unique_ptr<CameraMetadata> stillTemplate = requestTemplatePreview();
+	if (!stillTemplate)
+		return nullptr;
+
+	return stillTemplate;
+}
+
+std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() const
+{
+	std::unique_ptr<CameraMetadata> manualTemplate = requestTemplatePreview();
+	if (!manualTemplate)
+		return nullptr;
+
+	return manualTemplate;
+}
diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h
index cf68539b..52a203c8 100644
--- a/src/android/camera_capabilities.h
+++ b/src/android/camera_capabilities.h
@@ -34,6 +34,8 @@  public:
 
 	std::unique_ptr<CameraMetadata> requestTemplatePreview() const;
 	std::unique_ptr<CameraMetadata> requestTemplateVideo() const;
+	std::unique_ptr<CameraMetadata> requestTemplateStill() const;
+	std::unique_ptr<CameraMetadata> requestTemplateManual() const;
 
 private:
 	LIBCAMERA_DISABLE_COPY_AND_MOVE(CameraCapabilities)
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 678cde23..692d0a5b 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -487,7 +487,7 @@  const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
 		 * for the torch mode we currently do not support.
 		 */
 		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;
-		requestTemplate = capabilities_.requestTemplatePreview();
+		requestTemplate = capabilities_.requestTemplateStill();
 		break;
 	case CAMERA3_TEMPLATE_VIDEO_RECORD:
 		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;
@@ -497,9 +497,12 @@  const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
 		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT;
 		requestTemplate = capabilities_.requestTemplateVideo();
 		break;
+	case CAMERA3_TEMPLATE_MANUAL:
+		captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL;
+		requestTemplate = capabilities_.requestTemplateManual();
+		break;
 	/* \todo Implement templates generation for the remaining use cases. */
 	case CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG:
-	case CAMERA3_TEMPLATE_MANUAL:
 	default:
 		LOG(HAL, Error) << "Unsupported template request type: " << type;
 		return nullptr;