From 5e2596006bc662c1e565052728cd732d8f78bf1e Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Thu, 21 Jan 2021 19:15:42 +0900 Subject: android: camera_metadata: Add copy constructor and getEntry Add a copy constructor and assignment operator to CameraMetadata, as well a constructor from camera_metadata_t. Also add a function getEntry to allow getting metadata entries from CameraMetadata. This allows us to use CameraMetadata for reading from camera_metadata_t. Reviewed-by: Paul Elder Reviewed-by: Laurent Pinchart Reviewed-by: Jacopo Mondi Signed-off-by: Paul Elder Signed-off-by: Jacopo Mondi --- src/android/camera_metadata.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/android/camera_metadata.cpp') diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp index edea48fe..8e36e758 100644 --- a/src/android/camera_metadata.cpp +++ b/src/android/camera_metadata.cpp @@ -19,12 +19,45 @@ CameraMetadata::CameraMetadata(size_t entryCapacity, size_t dataCapacity) valid_ = metadata_ != nullptr; } +CameraMetadata::CameraMetadata(const camera_metadata_t *metadata) +{ + metadata_ = clone_camera_metadata(metadata); + valid_ = metadata_ != nullptr; +} + +CameraMetadata::CameraMetadata(const CameraMetadata &other) + : CameraMetadata(other.get()) +{ +} + CameraMetadata::~CameraMetadata() { if (metadata_) free_camera_metadata(metadata_); } +CameraMetadata &CameraMetadata::operator=(const CameraMetadata &other) +{ + if (this == &other) + return *this; + + if (metadata_) + free_camera_metadata(metadata_); + + metadata_ = clone_camera_metadata(other.get()); + valid_ = metadata_ != nullptr; + + return *this; +} + +bool CameraMetadata::getEntry(uint32_t tag, camera_metadata_ro_entry_t *entry) const +{ + if (find_camera_metadata_ro_entry(metadata_, tag, entry)) + return false; + + return true; +} + bool CameraMetadata::addEntry(uint32_t tag, const void *data, size_t count) { if (!valid_) -- cgit v1.2.1