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>
This commit is contained in:
Jacopo Mondi 2020-07-24 14:28:01 +02:00
parent 3efc7e8834
commit 29b59a9146
2 changed files with 28 additions and 0 deletions

View file

@ -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;