[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