libcamera  v0.0.0+100-debian/0_git20200629+e7aa92a-8-9-g77f5237c-dirty (2021-05-05T16:20:29+01:00)
Supporting cameras in Linux since 2019
stream.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  * stream.h - Video stream for a Camera
6  */
7 #ifndef __LIBCAMERA_STREAM_H__
8 #define __LIBCAMERA_STREAM_H__
9 
10 #include <map>
11 #include <memory>
12 #include <string>
13 #include <vector>
14 
15 #include <libcamera/buffer.h>
16 #include <libcamera/geometry.h>
17 #include <libcamera/pixel_format.h>
18 
19 namespace libcamera {
20 
21 class Camera;
22 class Stream;
23 
25 {
26 public:
27  StreamFormats();
28  StreamFormats(const std::map<PixelFormat, std::vector<SizeRange>> &formats);
29 
30  std::vector<PixelFormat> pixelformats() const;
31  std::vector<Size> sizes(const PixelFormat &pixelformat) const;
32 
33  SizeRange range(const PixelFormat &pixelformat) const;
34 
35 private:
36  std::map<PixelFormat, std::vector<SizeRange>> formats_;
37 };
38 
41  StreamConfiguration(const StreamFormats &formats);
42 
45  unsigned int stride;
46  unsigned int frameSize;
47 
48  unsigned int bufferCount;
49 
50  Stream *stream() const { return stream_; }
51  void setStream(Stream *stream) { stream_ = stream; }
52  const StreamFormats &formats() const { return formats_; }
53 
54  std::string toString() const;
55 
56 private:
57  Stream *stream_;
58  StreamFormats formats_;
59 };
60 
61 enum StreamRole {
62  Raw,
66 };
67 
68 using StreamRoles = std::vector<StreamRole>;
69 
70 class Stream
71 {
72 public:
73  Stream();
74 
75  const StreamConfiguration &configuration() const { return configuration_; }
76 
77 protected:
78  friend class Camera;
79 
81 };
82 
83 } /* namespace libcamera */
84 
85 #endif /* __LIBCAMERA_STREAM_H__ */
Definition: stream.h:65
std::vector< StreamRole > StreamRoles
A vector of StreamRole.
Definition: stream.h:68
libcamera image pixel format
Definition: pixel_format.h:16
Video stream for a camera.
Definition: stream.h:70
unsigned int frameSize
Frame size for the stream, in bytes.
Definition: stream.h:46
Top-level libcamera namespace.
Definition: bound_method.h:15
const StreamConfiguration & configuration() const
Retrieve the active configuration of the stream.
Definition: stream.h:75
unsigned int bufferCount
Requested number of buffers to allocate for the stream.
Definition: stream.h:48
Definition: stream.h:62
Describe a two-dimensional size.
Definition: geometry.h:50
std::vector< Size > sizes(const PixelFormat &pixelformat) const
Retrieve the list of frame sizes supported for pixelformat.
Definition: stream.cpp:130
Stream * stream() const
Retrieve the stream associated with the configuration.
Definition: stream.h:50
const StreamFormats & formats() const
Retrieve advisory stream format information.
Definition: stream.h:52
Camera device.
Definition: camera.h:74
PixelFormat pixelFormat
Stream pixel format.
Definition: stream.h:43
void setStream(Stream *stream)
Associate a stream with a configuration.
Definition: stream.h:51
unsigned int stride
Image stride for the stream, in bytes.
Definition: stream.h:45
Definition: stream.h:63
Hold information about supported stream formats.
Definition: stream.h:24
StreamRole
Identify the role a stream is intended to play.
Definition: stream.h:61
Buffer handling.
Describe a range of sizes.
Definition: geometry.h:166
StreamConfiguration configuration_
The stream configuration.
Definition: stream.h:80
Size size
Stream size in pixels.
Definition: stream.h:44
std::vector< PixelFormat > pixelformats() const
Retrieve the list of supported pixel formats.
Definition: stream.cpp:106
Data structures related to geometric objects.
SizeRange range(const PixelFormat &pixelformat) const
Retrieve the range of minimum and maximum sizes.
Definition: stream.cpp:243
Definition: stream.h:64
Configuration parameters for a stream.
Definition: stream.h:39
libcamera pixel format