diff options
-rw-r--r-- | src/android/camera_metadata.cpp | 27 | ||||
-rw-r--r-- | src/android/camera_metadata.h | 1 |
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; |