summaryrefslogtreecommitdiff
path: root/src/android/camera_metadata.cpp
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2021-05-14 18:25:47 +0900
committerPaul Elder <paul.elder@ideasonboard.com>2021-05-26 13:03:10 +0900
commit9b006872cde77c4982ebbcbc2e8ec83982dc32fe (patch)
treee2cc1224e0252beed5841412901526f65257dc2e /src/android/camera_metadata.cpp
parent2a84728dab398e3bf46b72ee765b322dda94e6d2 (diff)
android: camera_metadata: Add functions for instrumenting resizing
Add utility functions to CameraMetadata to check if it has been resized, and for outputting the actual entry and data count. This is meant to be used to output information on resizing, to assist developers in choosing proper initial sizes to avoid resizing. Also make CameraDevice use these functions for static and result metadata. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Diffstat (limited to 'src/android/camera_metadata.cpp')
-rw-r--r--src/android/camera_metadata.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
index ebe43ba4..c7298d62 100644
--- a/src/android/camera_metadata.cpp
+++ b/src/android/camera_metadata.cpp
@@ -14,17 +14,19 @@ using namespace libcamera;
LOG_DEFINE_CATEGORY(CameraMetadata)
CameraMetadata::CameraMetadata()
- : metadata_(nullptr), valid_(false)
+ : metadata_(nullptr), valid_(false), resized_(false)
{
}
CameraMetadata::CameraMetadata(size_t entryCapacity, size_t dataCapacity)
+ : resized_(false)
{
metadata_ = allocate_camera_metadata(entryCapacity, dataCapacity);
valid_ = metadata_ != nullptr;
}
CameraMetadata::CameraMetadata(const camera_metadata_t *metadata)
+ : resized_(false)
{
metadata_ = clone_camera_metadata(metadata);
valid_ = metadata_ != nullptr;
@@ -55,6 +57,14 @@ CameraMetadata &CameraMetadata::operator=(const CameraMetadata &other)
return *this;
}
+std::tuple<size_t, size_t> CameraMetadata::usage() const
+{
+ size_t currentEntryCount = get_camera_metadata_entry_count(metadata_);
+ size_t currentDataCount = get_camera_metadata_data_count(metadata_);
+
+ return { currentEntryCount, currentDataCount };
+}
+
bool CameraMetadata::getEntry(uint32_t tag, camera_metadata_ro_entry_t *entry) const
{
if (find_camera_metadata_ro_entry(metadata_, tag, entry))
@@ -104,6 +114,8 @@ bool CameraMetadata::resize(size_t count, size_t size)
append_camera_metadata(metadata_, oldMetadata);
free_camera_metadata(oldMetadata);
+
+ resized_ = true;
}
return true;