{"id":1948,"url":"https://patchwork.libcamera.org/api/patches/1948/?format=json","web_url":"https://patchwork.libcamera.org/patch/1948/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190905210940.32358-7-jacopo@jmondi.org>","date":"2019-09-05T21:09:37","name":"[libcamera-devel,v7,6/9] android: Add CameraMetadata helper class","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"b61445ff0a4d3010fff125f04de7773644c2a62f","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/1948/mbox/","series":[{"id":482,"url":"https://patchwork.libcamera.org/api/series/482/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=482","date":"2019-09-05T21:09:31","name":"android: Rework metadata tags","version":7,"mbox":"https://patchwork.libcamera.org/series/482/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/1948/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/1948/checks/","tags":{},"headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[217.70.183.198])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A278F61937\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Sep 2019 23:08:17 +0200 (CEST)","from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 1F399C0002;\n\tThu,  5 Sep 2019 21:08:16 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Thu,  5 Sep 2019 23:09:37 +0200","Message-Id":"<20190905210940.32358-7-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.23.0","In-Reply-To":"<20190905210940.32358-1-jacopo@jmondi.org>","References":"<20190905210940.32358-1-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v7 6/9] android: Add CameraMetadata helper\n\tclass","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Thu, 05 Sep 2019 21:08:18 -0000"},"content":"From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nThe new CameraMetadata helper class wraps the Android camera_metadata_t\nto simplify its usage.\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/android/camera_metadata.cpp | 52 +++++++++++++++++++++++++++++++++\n src/android/camera_metadata.h   | 30 +++++++++++++++++++\n src/android/meson.build         |  1 +\n 3 files changed, 83 insertions(+)\n create mode 100644 src/android/camera_metadata.cpp\n create mode 100644 src/android/camera_metadata.h","diff":"diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp\nnew file mode 100644\nindex 000000000000..76965108c08b\n--- /dev/null\n+++ b/src/android/camera_metadata.cpp\n@@ -0,0 +1,52 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2019, Google Inc.\n+ *\n+ * camera_metadata.cpp - libcamera Android Camera Metadata Helper\n+ */\n+\n+#include \"camera_metadata.h\"\n+\n+#include \"log.h\"\n+\n+using namespace libcamera;\n+\n+LOG_DEFINE_CATEGORY(CameraMetadata);\n+\n+CameraMetadata::CameraMetadata(size_t entryCapacity, size_t dataCapacity)\n+{\n+\tmetadata_ = allocate_camera_metadata(entryCapacity, dataCapacity);\n+\tvalid_ = metadata_ != nullptr;\n+}\n+\n+CameraMetadata::~CameraMetadata()\n+{\n+\tif (metadata_)\n+\t\tfree_camera_metadata(metadata_);\n+}\n+\n+bool CameraMetadata::addEntry(uint32_t tag, const void *data, size_t count)\n+{\n+\tif (!valid_)\n+\t\treturn false;\n+\n+\tif (!add_camera_metadata_entry(metadata_, tag, data, count))\n+\t\treturn true;\n+\n+\tconst char *name = get_camera_metadata_tag_name(tag);\n+\tif (name)\n+\t\tLOG(CameraMetadata, Error)\n+\t\t\t<< \"Failed to add tag \" << name;\n+\telse\n+\t\tLOG(CameraMetadata, Error)\n+\t\t\t<< \"Failed to add unknown tag \" << tag;\n+\n+\tvalid_ = false;\n+\n+\treturn false;\n+}\n+\n+camera_metadata_t *CameraMetadata::get()\n+{\n+\treturn valid_ ? metadata_ : nullptr;\n+}\ndiff --git a/src/android/camera_metadata.h b/src/android/camera_metadata.h\nnew file mode 100644\nindex 000000000000..75a9d7066f31\n--- /dev/null\n+++ b/src/android/camera_metadata.h\n@@ -0,0 +1,30 @@\n+/* SPDX-License-Identifier: LGPL-2.1-or-later */\n+/*\n+ * Copyright (C) 2019, Google Inc.\n+ *\n+ * camera_metadata.h - libcamera Android Camera Metadata Helper\n+ */\n+#ifndef __ANDROID_CAMERA_METADATA_H__\n+#define __ANDROID_CAMERA_METADATA_H__\n+\n+#include <stdint.h>\n+\n+#include <system/camera_metadata.h>\n+\n+class CameraMetadata\n+{\n+public:\n+\tCameraMetadata(size_t entryCapacity, size_t dataCapacity);\n+\t~CameraMetadata();\n+\n+\tbool isValid() { return valid_; }\n+\tbool addEntry(uint32_t tag, const void *data, size_t data_count);\n+\n+\tcamera_metadata_t *get();\n+\n+private:\n+\tcamera_metadata_t *metadata_;\n+\tbool valid_;\n+};\n+\n+#endif /* __ANDROID_CAMERA_METADATA_H__ */\ndiff --git a/src/android/meson.build b/src/android/meson.build\nindex 26537794bc29..b5e4eeeb73a8 100644\n--- a/src/android/meson.build\n+++ b/src/android/meson.build\n@@ -2,6 +2,7 @@ android_hal_sources = files([\n     'camera3_hal.cpp',\n     'camera_hal_manager.cpp',\n     'camera_device.cpp',\n+    'camera_metadata.cpp',\n     'camera_proxy.cpp',\n     'thread_rpc.cpp'\n ])\n","prefixes":["libcamera-devel","v7","6/9"]}