summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2020-07-24 14:28:01 +0200
committerJacopo Mondi <jacopo@jmondi.org>2020-08-05 14:33:52 +0200
commit29b59a91469a5aaeab792799dfa303fc753be956 (patch)
tree7621f5f0d8ab833db210cb27f2d314ba5eb9c1d1 /src
parent3efc7e8834303fbc71779b199e415ccfe18a94f0 (diff)
android: camera_metadata: Add method to update an entry
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@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src')
-rw-r--r--src/android/camera_metadata.cpp27
-rw-r--r--src/android/camera_metadata.h1
2 files changed, 28 insertions, 0 deletions
diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
index ea33e9c2..f0da9ea9 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 f16dd27b..9d047b1b 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;