libcamera  v0.3.1+12-19bbca3c
Supporting cameras in Linux since 2019
mapped_framebuffer.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2021, Google Inc.
4  *
5  * Frame buffer memory mapping support
6  */
7 
8 #pragma once
9 
10 #include <stdint.h>
11 #include <vector>
12 
13 #include <libcamera/base/class.h>
14 #include <libcamera/base/flags.h>
15 #include <libcamera/base/span.h>
16 
17 #include <libcamera/framebuffer.h>
18 
19 namespace libcamera {
20 
22 {
23 public:
24  using Plane = Span<uint8_t>;
25 
26  ~MappedBuffer();
27 
28  MappedBuffer(MappedBuffer &&other);
30 
31  bool isValid() const { return error_ == 0; }
32  int error() const { return error_; }
33  const std::vector<Plane> &planes() const { return planes_; }
34 
35 protected:
36  MappedBuffer();
37 
38  int error_;
39  std::vector<Plane> planes_;
40  std::vector<Plane> maps_;
41 
42 private:
44 };
45 
47 {
48 public:
49  enum class MapFlag {
50  Read = 1 << 0,
51  Write = 1 << 1,
52  ReadWrite = Read | Write,
53  };
54 
56 
57  MappedFrameBuffer(const FrameBuffer *buffer, MapFlags flags);
58 };
59 
61 
62 } /* namespace libcamera */
Frame buffer handling.
Utilities to help constructing class interfaces.
const std::vector< Plane > & planes() const
Retrieve the mapped planes.
Definition: mapped_framebuffer.h:33
MapFlag
Specify the mapping mode for the FrameBuffer.
Definition: mapped_framebuffer.h:49
Top-level libcamera namespace.
Definition: backtrace.h:17
Span< uint8_t > Plane
A mapped region of memory accessible to the CPU.
Definition: mapped_framebuffer.h:24
Frame buffer data and its associated dynamic metadata.
Definition: framebuffer.h:49
int error() const
Retrieve the map error status.
Definition: mapped_framebuffer.h:32
Map a FrameBuffer using the MappedBuffer interface.
Definition: mapped_framebuffer.h:46
#define LIBCAMERA_DISABLE_COPY(klass)
Disable copy construction and assignment of the klass.
std::vector< Plane > maps_
Stores the mapped buffer.
Definition: mapped_framebuffer.h:40
#define LIBCAMERA_FLAGS_ENABLE_OPERATORS(_enum)
Enable bitwise operations on the enum enumeration.
Provide an interface to support managing memory mapped buffers.
Definition: mapped_framebuffer.h:21
int error_
Stores the error value if present.
Definition: mapped_framebuffer.h:38
Enum-based bit fields.
Type-safe container for enum-based bitfields.
Definition: flags.h:15
bool isValid() const
Check if the MappedBuffer instance is valid.
Definition: mapped_framebuffer.h:31
MappedBuffer & operator=(MappedBuffer &&other)
Move assignment operator, replace the mappings with those of other.
Definition: mapped_framebuffer.cpp:82
MappedBuffer()
Construct an empty MappedBuffer.
Definition: mapped_framebuffer.cpp:53
std::vector< Plane > planes_
Stores the internal mapped planes.
Definition: mapped_framebuffer.h:39