[libcamera-devel] [PATCH v2 4/6] android: camera_metadata: Add method to update an entry

Jacopo Mondi jacopo at jmondi.org
Sat Jul 25 16:40:56 CEST 2020


Add a method to update an existing metadata tag entry, by wrapping
the update_metadata_entry() function provided by the Android
metadata library.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/android/camera_metadata.cpp | 27 +++++++++++++++++++++++++++
 src/android/camera_metadata.h   |  1 +
 2 files changed, 28 insertions(+)

diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
index ea33e9c2de25..f0da9ea92924 100644
--- a/src/android/camera_metadata.cpp
+++ b/src/android/camera_metadata.cpp
@@ -46,6 +46,33 @@ bool CameraMetadata::addEntry(uint32_t tag, const void *data, size_t count)
 	return false;
 }
 
+bool CameraMetadata::updateEntry(uint32_t tag, const void *data, size_t count)
+{
+	if (!valid_)
+		return false;
+
+	camera_metadata_entry_t entry;
+	int ret = find_camera_metadata_entry(metadata_, tag, &entry);
+	if (ret) {
+		const char *name = get_camera_metadata_tag_name(tag);
+		LOG(CameraMetadata, Error)
+			<< "Failed to update tag "
+			<< (name ? name : "<unknown>") << ": not present";
+		return false;
+	}
+
+	ret = update_camera_metadata_entry(metadata_, entry.index, data,
+					   count, nullptr);
+	if (ret) {
+		const char *name = get_camera_metadata_tag_name(tag);
+		LOG(CameraMetadata, Error)
+			<< "Failed to update tag " << (name ? name : "<unknown>");
+		return false;
+	}
+
+	return true;
+}
+
 camera_metadata_t *CameraMetadata::get()
 {
 	return valid_ ? metadata_ : nullptr;
diff --git a/src/android/camera_metadata.h b/src/android/camera_metadata.h
index f16dd27bbf44..9d047b1bb534 100644
--- a/src/android/camera_metadata.h
+++ b/src/android/camera_metadata.h
@@ -19,6 +19,7 @@ public:
 
 	bool isValid() const { return valid_; }
 	bool addEntry(uint32_t tag, const void *data, size_t data_count);
+	bool updateEntry(uint32_t tag, const void *data, size_t data_count);
 
 	camera_metadata_t *get();
 	const camera_metadata_t *get() const;
-- 
2.27.0



More information about the libcamera-devel mailing list