/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Google Inc. * * framebuffer.h - Internal frame buffer handling */ #ifndef __LIBCAMERA_INTERNAL_FRAMEBUFFER_H__ #define __LIBCAMERA_INTERNAL_FRAMEBUFFER_H__ #include #include #include #include #include namespace libcamera { class MappedBuffer { public: using Plane = Span; ~MappedBuffer(); MappedBuffer(MappedBuffer &&other); MappedBuffer &operator=(MappedBuffer &&other); bool isValid() const { return error_ == 0; } int error() const { return error_; } const std::vector &maps() const { return maps_; } protected: MappedBuffer(); int error_; std::vector maps_; private: LIBCAMERA_DISABLE_COPY(MappedBuffer) }; class MappedFrameBuffer : public MappedBuffer { public: MappedFrameBuffer(const FrameBuffer *buffer, int flags); }; class FrameBuffer::Private : public Extensible::Private { LIBCAMERA_DECLARE_PUBLIC(FrameBuffer) public: Private(); void setRequest(Request *request) { request_ = request; } private: Request *request_; }; } /* namespace libcamera */ #endif /* __LIBCAMERA_INTERNAL_FRAMEBUFFER_H__ */