[libcamera-devel] [PATCH v3 1/2] android: camera_capabilities: Clarify CameraMetadata allocation

Umang Jain umang.jain at ideasonboard.com
Thu Sep 23 09:24:52 CEST 2021


CameraMetadata's constructor take in number of entries and number of
bytes to be allocated for those entries. However, CameraMetadata is
already capable of resizing its container on the fly, in case more
entries are added to it. Hence, the numbers passed in during the
construction acts as hint values for initialization.

Clarify this in CameraCapabilities::requestTemplatePreview() and
remove the \todo, as the arguments and the \todo gives the perspective
that we need to be quite accurate with the numbers of entries / bytes,
which is not the case.

Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
---
 src/android/camera_capabilities.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
index e92bca42..238b44db 100644
--- a/src/android/camera_capabilities.cpp
+++ b/src/android/camera_capabilities.cpp
@@ -1340,8 +1340,12 @@ std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplateManual() cons
 std::unique_ptr<CameraMetadata> CameraCapabilities::requestTemplatePreview() const
 {
 	/*
-	 * \todo Keep this in sync with the actual number of entries.
-	 * Currently: 20 entries, 35 bytes
+	 * Give initial hint of entries and number of bytes to be allocated.
+	 * It is deliberate that the hint is slightly larger than required, to
+	 * avoid resizing the container.
+	 *
+	 * CameraMetadata is capable to resize the container on the fly, if the
+	 * number of entries get exceeded.
 	 */
 	auto requestTemplate = std::make_unique<CameraMetadata>(21, 36);
 	if (!requestTemplate->isValid()) {
-- 
2.31.0



More information about the libcamera-devel mailing list