summaryrefslogtreecommitdiff
path: root/src/android/camera_metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/camera_metadata.cpp')
-rw-r--r--src/android/camera_metadata.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
new file mode 100644
index 00000000..76965108
--- /dev/null
+++ b/src/android/camera_metadata.cpp
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * camera_metadata.cpp - libcamera Android Camera Metadata Helper
+ */
+
+#include "camera_metadata.h"
+
+#include "log.h"
+
+using namespace libcamera;
+
+LOG_DEFINE_CATEGORY(CameraMetadata);
+
+CameraMetadata::CameraMetadata(size_t entryCapacity, size_t dataCapacity)
+{
+ metadata_ = allocate_camera_metadata(entryCapacity, dataCapacity);
+ valid_ = metadata_ != nullptr;
+}
+
+CameraMetadata::~CameraMetadata()
+{
+ if (metadata_)
+ free_camera_metadata(metadata_);
+}
+
+bool CameraMetadata::addEntry(uint32_t tag, const void *data, size_t count)
+{
+ if (!valid_)
+ return false;
+
+ if (!add_camera_metadata_entry(metadata_, tag, data, count))
+ return true;
+
+ const char *name = get_camera_metadata_tag_name(tag);
+ if (name)
+ LOG(CameraMetadata, Error)
+ << "Failed to add tag " << name;
+ else
+ LOG(CameraMetadata, Error)
+ << "Failed to add unknown tag " << tag;
+
+ valid_ = false;
+
+ return false;
+}
+
+camera_metadata_t *CameraMetadata::get()
+{
+ return valid_ ? metadata_ : nullptr;
+}