Message ID | 20190905074737.6955-7-jacopo@jmondi.org |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Laurent, thanks for addressing this On Thu, Sep 05, 2019 at 09:47:33AM +0200, Jacopo Mondi wrote: > From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > The new CameraMetadata helper class wraps the Android camera_metadata_t > to simplify its usage. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@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@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@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
Hi Jacopo, On Thu, Sep 05, 2019 at 09:58:11AM +0200, Jacopo Mondi wrote: > On Thu, Sep 05, 2019 at 09:47:33AM +0200, Jacopo Mondi wrote: > > From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > > The new CameraMetadata helper class wraps the Android camera_metadata_t > > to simplify its usage. > > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@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. It was used in a previous version of the code, but not anymore. Feel free to remove it. > Otherwise > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> > > > 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' > > ])
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; +} 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' ])