[libcamera-devel] [PATCH 12/12] android: mm: Provide helper macro for PIMPL
Jacopo Mondi
jacopo at jmondi.org
Fri Feb 26 14:29:32 CET 2021
Each memory backend has to declare a CameraBuffer class implementation
that bridges the API calls to each CameraBufferImpl implementation.
As the code is likely the same for most (if not all) backends, provide
a convenience macro that expands to the CameraBuffer class declaration.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/android/camera_buffer.h | 31 +++++++++++++++++++
src/android/mm/android_generic_buffer.cpp | 35 +---------------------
src/android/mm/cros_cbm.cpp | 36 +----------------------
3 files changed, 33 insertions(+), 69 deletions(-)
diff --git a/src/android/camera_buffer.h b/src/android/camera_buffer.h
index b251e4514864..e7f50a4622f9 100644
--- a/src/android/camera_buffer.h
+++ b/src/android/camera_buffer.h
@@ -30,4 +30,35 @@ private:
CameraBufferImpl *impl_;
};
+#define CAMERA_BUFFER_PIMPL \
+ CameraBuffer::CameraBuffer(buffer_handle_t camera3Buffer, int flags) \
+ : impl_(new CameraBuffer::CameraBufferImpl(camera3Buffer, \
+ flags)) \
+ { \
+ } \
+ CameraBuffer::~CameraBuffer() \
+ { \
+ delete impl_; \
+ } \
+ bool CameraBuffer::isValid() const \
+ { \
+ return impl_->isValid(); \
+ } \
+ unsigned int CameraBuffer::numPlanes() const \
+ { \
+ return impl_->numPlanes(); \
+ } \
+ ssize_t CameraBuffer::planeSize(unsigned int plane) const \
+ { \
+ return impl_->planeSize(plane); \
+ } \
+ const uint8_t *CameraBuffer::plane(unsigned int plane) const \
+ { \
+ return impl_->plane(plane); \
+ } \
+ uint8_t *CameraBuffer::plane(unsigned int plane) \
+ { \
+ return impl_->plane(plane); \
+ }
+
#endif /* __ANDROID_CAMERA_BUFFER_H__ */
diff --git a/src/android/mm/android_generic_buffer.cpp b/src/android/mm/android_generic_buffer.cpp
index 10a43a61bd4d..2f532be83cc9 100644
--- a/src/android/mm/android_generic_buffer.cpp
+++ b/src/android/mm/android_generic_buffer.cpp
@@ -89,37 +89,4 @@ uint8_t *CameraBuffer::CameraBufferImpl::plane(unsigned int plane)
return maps_[plane].data();
}
-CameraBuffer::CameraBuffer(buffer_handle_t camera3Buffer, int flags)
- : impl_(new CameraBuffer::CameraBufferImpl(camera3Buffer, flags))
-{
-}
-
-CameraBuffer::~CameraBuffer()
-{
- delete impl_;
-}
-
-bool CameraBuffer::isValid() const
-{
- return impl_->isValid();
-}
-
-unsigned int CameraBuffer::numPlanes() const
-{
- return impl_->numPlanes();
-}
-
-ssize_t CameraBuffer::planeSize(unsigned int plane) const
-{
- return impl_->planeSize(plane);
-}
-
-const uint8_t *CameraBuffer::plane(unsigned int plane) const
-{
- return impl_->plane(plane);
-}
-
-uint8_t *CameraBuffer::plane(unsigned int plane)
-{
- return impl_->plane(plane);
-}
+CAMERA_BUFFER_PIMPL
diff --git a/src/android/mm/cros_cbm.cpp b/src/android/mm/cros_cbm.cpp
index 6c931c99d2d0..ad18aede663a 100644
--- a/src/android/mm/cros_cbm.cpp
+++ b/src/android/mm/cros_cbm.cpp
@@ -130,38 +130,4 @@ uint8_t *CameraBuffer::CameraBufferImpl::plane(unsigned int plane)
return static_cast<uint8_t *>(addr);
}
-CameraBuffer::CameraBuffer(buffer_handle_t camera3Buffer, int flags)
- : impl_(new CameraBuffer::CameraBufferImpl(camera3Buffer, flags))
-{
-}
-
-CameraBuffer::~CameraBuffer()
-{
- delete impl_;
-}
-
-bool CameraBuffer::isValid() const
-{
- return impl_->isValid();
-}
-
-unsigned int CameraBuffer::numPlanes() const
-{
- return impl_->numPlanes();
-}
-
-ssize_t CameraBuffer::planeSize(unsigned int plane) const
-{
- return impl_->planeSize(plane);
-}
-
-const uint8_t *CameraBuffer::plane(unsigned int plane) const
-{
- return impl_->plane(plane);
-}
-
-uint8_t *CameraBuffer::plane(unsigned int plane)
-{
- return impl_->plane(plane);
-}
-
+CAMERA_BUFFER_PIMPL
--
2.30.0
More information about the libcamera-devel
mailing list