[libcamera-devel] [PATCH v3 4/5] android: camera_device: Use AE FPS range in template

Jacopo Mondi jacopo at jmondi.org
Mon Feb 22 11:52:21 CET 2021


The request template returned by requestTemplatePreview() uses an
arbitrary {15, 30} Auto-Exposure algorithm FPS range. Use the one
calculated at static metadata creation time, which is consistent with
the camera limits.

Once template generation will be performed inspecting the requested
capture intent, the FPS range over which the AE algorithm can range
shall be tuned accordingly.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/android/camera_device.cpp | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 1658e4a4dd9f..c0939eaf27ac 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1418,12 +1418,21 @@ CameraMetadata *CameraDevice::requestTemplatePreview()
 	requestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,
 				  &aeLock, 1);
 
-	std::vector<int32_t> aeFpsTarget = {
-		15, 30,
-	};
-	requestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
-				  aeFpsTarget.data(),
-				  aeFpsTarget.size());
+	/* Get the FPS range registered in the static metadata. */
+	camera_metadata_ro_entry_t entry;
+	bool found = staticMetadata_->getEntry(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
+					       &entry);
+	if (found)
+		/*
+		 * \todo Depending on the requested CaptureIntent, the FPS range
+		 * needs to be adjusted. For example, the capture template for
+		 * video capture intent shall report a fixed value.
+		 *
+		 * Also assume the AE_AVAILABLE_TARGET_FPS_RANGE static metadata
+		 * has been assembled as {{min, max} {max, max}}.
+		 */
+		requestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
+					  entry.data.i32, 2);
 
 	uint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;
 	requestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,
-- 
2.30.0



More information about the libcamera-devel mailing list