android: camera_buffer: Implement libcamera::Extensible

In order to prepare to support more memory backends, make the
CameraBuffer class implement the PIMPL (pointer-to-implementation)
pattern by inheriting from the libcamera::Extensible class.

Temporary maintain libcamera::MappedBuffer as the CameraBuffer base
class to maintain compatibility of the CameraStream::process() interface
that requires a MappedBuffer * as second argument and will be converted
to use a CameraBuffer in the next patch.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2021-02-24 13:28:34 +01:00
parent a725baf4b3
commit 63383dec43
2 changed files with 77 additions and 2 deletions

View file

@ -9,13 +9,25 @@
#include <hardware/camera3.h>
#include <libcamera/class.h>
#include <libcamera/internal/buffer.h>
#include <libcamera/span.h>
class CameraBuffer : public libcamera::MappedBuffer
class CameraBuffer final : public libcamera::Extensible,
public libcamera::MappedBuffer
{
LIBCAMERA_DECLARE_PRIVATE(CameraBuffer)
public:
CameraBuffer(buffer_handle_t camera3Buffer, int flags);
~CameraBuffer();
bool isValid() const;
unsigned int numPlanes() const;
libcamera::Span<const uint8_t> plane(unsigned int plane) const;
libcamera::Span<uint8_t> plane(unsigned int plane);
};
#endif /* __ANDROID_CAMERA_BUFFER_H__ */