[libcamera-devel] [PATCH v6 8/9] android: Add skeletal still and manual request templates

Paul Elder paul.elder at ideasonboard.com
Fri Jul 30 12:35:35 CEST 2021


Add skeletal still and manual request templates so that we can expand
them for FULL support.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

---
Changes in v6
- order the template functions alphabetically
---
 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 20d1c99f..1bf3ffa5 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -1323,6 +1323,15 @@ PixelFormat CameraCapabilities::toPixelFormat(int format) const
 	return it->second;
 }
 
+std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() const
+{
+	std::unique_ptr<CameraMetadata> manualTemplate = requestTemplatePreview();
+	if (!manualTemplate)
+		return nullptr;
+
+	return manualTemplate;
+}
+
 std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplatePreview() const
 {
 	/*
@@ -1412,6 +1421,15 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplatePreview() con
 	return requestTemplate;
 }
 
+std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateStill() const
+{
+	std::unique_ptr<CameraMetadata> stillTemplate = requestTemplatePreview();
+	if (!stillTemplate)
+		return nullptr;
+
+	return stillTemplate;
+}
+
 std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateVideo() const
 {
 	std::unique_ptr<CameraMetadata> previewTemplate = requestTemplatePreview();
diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h
index dc5339c1..576f1e7c 100644
--- a/src/android/camera_capabilities.h
+++ b/src/android/camera_capabilities.h
@@ -32,7 +32,9 @@ public:
 	libcamera::PixelFormat toPixelFormat(int format) const;
 	unsigned int maxJpegBufferSize() const { return maxJpegBufferSize_; }
 
+	std::unique_ptr<CameraMetadata> requestTemplateManual() const;
 	std::unique_ptr<CameraMetadata> requestTemplatePreview() const;
+	std::unique_ptr<CameraMetadata> requestTemplateStill() const;
 	std::unique_ptr<CameraMetadata> requestTemplateVideo() const;
 
 private:
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



More information about the libcamera-devel mailing list