From 1427d124e86a134076f6abdd4a11b037e005fede Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Fri, 26 Feb 2021 11:48:47 +0100 Subject: 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 Signed-off-by: Jacopo Mondi --- src/android/camera_buffer.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/android/camera_buffer.h') 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 CameraBuffer::plane(unsigned int plane) const \ +{ \ + const Private *const d = LIBCAMERA_D_PTR(); \ + return const_cast(d)->plane(plane); \ +} \ +Span 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__ */ -- cgit v1.2.1