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 <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Paul Elder 2021-01-21 19:15:42 +09:00 committed by Jacopo Mondi
parent afbf0ec626
commit 5e2596006b
2 changed files with 38 additions and 0 deletions

View file

@ -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_)