diff options
author | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2021-08-06 10:18:30 +0100 |
---|---|---|
committer | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2021-08-10 10:53:57 +0100 |
commit | f3629363c4d25f32c76449740e918445180906db (patch) | |
tree | 1d81e18a6763aaa5261694efad3df305eca0c51b /include | |
parent | aa1972529b67ccaa4800727923cda6609526a79a (diff) |
libcamera: Give MappedFrameBuffer its own implementation
The MappedFrameBuffer is a convenience feature which sits on top of the
FrameBuffer and facilitates mapping it to CPU accessible memory with
mmap.
This implementation is internal and currently sits in the same internal
files as the internal FrameBuffer, thus exposing those internals to
users of the MappedFramebuffer implementation.
Move the MappedFrameBuffer and MappedBuffer implementation to its own
implementation files, and fix the sources throughout to use that
accordingly.
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/internal/framebuffer.h | 34 | ||||
-rw-r--r-- | include/libcamera/internal/mapped_framebuffer.h | 52 | ||||
-rw-r--r-- | include/libcamera/internal/meson.build | 1 |
3 files changed, 53 insertions, 34 deletions
diff --git a/include/libcamera/internal/framebuffer.h b/include/libcamera/internal/framebuffer.h index 8c187adf..606aed2b 100644 --- a/include/libcamera/internal/framebuffer.h +++ b/include/libcamera/internal/framebuffer.h @@ -7,46 +7,12 @@ #ifndef __LIBCAMERA_INTERNAL_FRAMEBUFFER_H__ #define __LIBCAMERA_INTERNAL_FRAMEBUFFER_H__ -#include <sys/mman.h> -#include <vector> - #include <libcamera/base/class.h> -#include <libcamera/base/span.h> #include <libcamera/framebuffer.h> namespace libcamera { -class MappedBuffer -{ -public: - using Plane = Span<uint8_t>; - - ~MappedBuffer(); - - MappedBuffer(MappedBuffer &&other); - MappedBuffer &operator=(MappedBuffer &&other); - - bool isValid() const { return error_ == 0; } - int error() const { return error_; } - const std::vector<Plane> &maps() const { return maps_; } - -protected: - MappedBuffer(); - - int error_; - std::vector<Plane> 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) diff --git a/include/libcamera/internal/mapped_framebuffer.h b/include/libcamera/internal/mapped_framebuffer.h new file mode 100644 index 00000000..41e58736 --- /dev/null +++ b/include/libcamera/internal/mapped_framebuffer.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* + * Copyright (C) 2021, Google Inc. + * + * mapped_framebuffer.h - Frame buffer memory mapping support + */ +#ifndef __LIBCAMERA_INTERNAL_MAPPED_FRAMEBUFFER_H__ +#define __LIBCAMERA_INTERNAL_MAPPED_FRAMEBUFFER_H__ + +#include <sys/mman.h> +#include <vector> + +#include <libcamera/base/class.h> +#include <libcamera/base/span.h> + +#include <libcamera/framebuffer.h> + +namespace libcamera { + +class MappedBuffer +{ +public: + using Plane = Span<uint8_t>; + + ~MappedBuffer(); + + MappedBuffer(MappedBuffer &&other); + MappedBuffer &operator=(MappedBuffer &&other); + + bool isValid() const { return error_ == 0; } + int error() const { return error_; } + const std::vector<Plane> &maps() const { return maps_; } + +protected: + MappedBuffer(); + + int error_; + std::vector<Plane> maps_; + +private: + LIBCAMERA_DISABLE_COPY(MappedBuffer) +}; + +class MappedFrameBuffer : public MappedBuffer +{ +public: + MappedFrameBuffer(const FrameBuffer *buffer, int flags); +}; + +} /* namespace libcamera */ + +#endif /* __LIBCAMERA_INTERNAL_MAPPED_FRAMEBUFFER_H__ */ diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build index dac1a2d3..665fd6de 100644 --- a/include/libcamera/internal/meson.build +++ b/include/libcamera/internal/meson.build @@ -28,6 +28,7 @@ libcamera_internal_headers = files([ 'ipa_module.h', 'ipa_proxy.h', 'ipc_unixsocket.h', + 'mapped_framebuffer.h', 'media_device.h', 'media_object.h', 'pipeline_handler.h', |