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>
This commit is contained in:
parent
aa1972529b
commit
f3629363c4
20 changed files with 235 additions and 198 deletions
|
@ -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)
|
||||
|
|
52
include/libcamera/internal/mapped_framebuffer.h
Normal file
52
include/libcamera/internal/mapped_framebuffer.h
Normal file
|
@ -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__ */
|
|
@ -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',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue