libcamera  v0.4.0
Supporting cameras in Linux since 2019
framebuffer_allocator.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2019, Google Inc.
4  *
5  * FrameBuffer allocator
6  */
7 
8 #pragma once
9 
10 #include <map>
11 #include <memory>
12 #include <vector>
13 
14 #include <libcamera/base/class.h>
15 
16 namespace libcamera {
17 
18 class Camera;
19 class FrameBuffer;
20 class Stream;
21 
23 {
24 public:
25  FrameBufferAllocator(std::shared_ptr<Camera> camera);
27 
28  int allocate(Stream *stream);
29  int free(Stream *stream);
30 
31  bool allocated() const { return !buffers_.empty(); }
32  const std::vector<std::unique_ptr<FrameBuffer>> &buffers(Stream *stream) const;
33 
34 private:
35  LIBCAMERA_DISABLE_COPY(FrameBufferAllocator)
36 
37  std::shared_ptr<Camera> camera_;
38  std::map<Stream *, std::vector<std::unique_ptr<FrameBuffer>>> buffers_;
39 };
40 
41 } /* namespace libcamera */
const std::vector< std::unique_ptr< FrameBuffer > > & buffers(Stream *stream) const
Retrieve the buffers allocated for a stream.
Definition: framebuffer_allocator.cpp:148
FrameBuffer allocator for applications.
Definition: framebuffer_allocator.h:22
FrameBufferAllocator(std::shared_ptr< Camera > camera)
Construct a FrameBufferAllocator serving a camera.
Definition: framebuffer_allocator.cpp:61
Video stream for a camera.
Definition: stream.h:75
Top-level libcamera namespace.
Definition: bound_method.h:15
bool allocated() const
Check if the allocator has allocated buffers for any stream.
Definition: framebuffer_allocator.h:31
int free(Stream *stream)
Free buffers previously allocated for a stream.
Definition: framebuffer_allocator.cpp:119
int allocate(Stream *stream)
Allocate buffers for a configured stream.
Definition: framebuffer_allocator.cpp:86