[libcamera-devel] [PATCH v6 6/9] android: Add CameraMetadata helper class
Jacopo Mondi
jacopo at jmondi.org
Thu Sep 5 09:58:11 CEST 2019
Hi Laurent,
thanks for addressing this
On Thu, Sep 05, 2019 at 09:47:33AM +0200, Jacopo Mondi wrote:
> From: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> The new CameraMetadata helper class wraps the Android camera_metadata_t
> to simplify its usage.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/android/camera_metadata.cpp | 63 +++++++++++++++++++++++++++++++++
> src/android/camera_metadata.h | 31 ++++++++++++++++
> src/android/meson.build | 1 +
> 3 files changed, 95 insertions(+)
> create mode 100644 src/android/camera_metadata.cpp
> create mode 100644 src/android/camera_metadata.h
>
> diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
> new file mode 100644
> index 000000000000..c261e1f01a20
> --- /dev/null
> +++ b/src/android/camera_metadata.cpp
> @@ -0,0 +1,63 @@
> +/* 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;
> +}
> +
> +camera_metadata_t *CameraMetadata::release()
> +{
> + if (!valid_)
> + return nullptr;
> +
> + camera_metadata_t *metadata = metadata_;
> + valid_ = false;
> + metadata_ = nullptr;
> + return metadata;
> +}
I would remove this operation as it is unused.
Otherwise
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
> diff --git a/src/android/camera_metadata.h b/src/android/camera_metadata.h
> new file mode 100644
> index 000000000000..43a5598c6463
> --- /dev/null
> +++ b/src/android/camera_metadata.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2019, Google Inc.
> + *
> + * camera_metadata.h - libcamera Android Camera Metadata Helper
> + */
> +#ifndef __ANDROID_CAMERA_METADATA_H__
> +#define __ANDROID_CAMERA_METADATA_H__
> +
> +#include <stdint.h>
> +
> +#include <system/camera_metadata.h>
> +
> +class CameraMetadata
> +{
> +public:
> + CameraMetadata(size_t entryCapacity, size_t dataCapacity);
> + ~CameraMetadata();
> +
> + bool isValid() { return valid_; }
> + bool addEntry(uint32_t tag, const void *data, size_t data_count);
> +
> + camera_metadata_t *get();
> + camera_metadata_t *release();
> +
> +private:
> + camera_metadata_t *metadata_;
> + bool valid_;
> +};
> +
> +#endif /* __ANDROID_CAMERA_METADATA_H__ */
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 26537794bc29..b5e4eeeb73a8 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -2,6 +2,7 @@ android_hal_sources = files([
> 'camera3_hal.cpp',
> 'camera_hal_manager.cpp',
> 'camera_device.cpp',
> + 'camera_metadata.cpp',
> 'camera_proxy.cpp',
> 'thread_rpc.cpp'
> ])
> --
> 2.23.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190905/d8bbc1ae/attachment.sig>
More information about the libcamera-devel
mailing list