summaryrefslogtreecommitdiff
path: root/src/android/camera_buffer.h
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2021-02-26 11:48:47 +0100
committerJacopo Mondi <jacopo@jmondi.org>2021-03-03 09:50:44 +0100
commit1427d124e86a134076f6abdd4a11b037e005fede (patch)
tree7ea9e5ceec0c48eef437806a63036f8010fcfcbb /src/android/camera_buffer.h
parent00fec7d5edaf190429654191a651a180b02d56f9 (diff)
android: mm: Provide helper macro for PIMPL
Each memory backend has to declare a CameraBuffer class implementation that bridges the API calls to each CameraBuffer::Private 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. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/android/camera_buffer.h')
-rw-r--r--src/android/camera_buffer.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/android/camera_buffer.h b/src/android/camera_buffer.h
index 784fbd50..7e8970b4 100644
--- a/src/android/camera_buffer.h
+++ b/src/android/camera_buffer.h
@@ -30,4 +30,37 @@ public:
size_t jpegBufferSize(size_t maxJpegBufferSize) const;
};
+#define PUBLIC_CAMERA_BUFFER_IMPLEMENTATION \
+CameraBuffer::CameraBuffer(buffer_handle_t camera3Buffer, int flags) \
+ : Extensible(new Private(this, camera3Buffer, flags)) \
+{ \
+} \
+CameraBuffer::~CameraBuffer() \
+{ \
+} \
+bool CameraBuffer::isValid() const \
+{ \
+ const Private *const d = LIBCAMERA_D_PTR(); \
+ return d->isValid(); \
+} \
+unsigned int CameraBuffer::numPlanes() const \
+{ \
+ const Private *const d = LIBCAMERA_D_PTR(); \
+ return d->numPlanes(); \
+} \
+Span<const uint8_t> CameraBuffer::plane(unsigned int plane) const \
+{ \
+ const Private *const d = LIBCAMERA_D_PTR(); \
+ return const_cast<Private *>(d)->plane(plane); \
+} \
+Span<uint8_t> CameraBuffer::plane(unsigned int plane) \
+{ \
+ Private *const d = LIBCAMERA_D_PTR(); \
+ return d->plane(plane); \
+} \
+size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const \
+{ \
+ const Private *const d = LIBCAMERA_D_PTR(); \
+ return d->jpegBufferSize(maxJpegBufferSize); \
+}
#endif /* __ANDROID_CAMERA_BUFFER_H__ */