libcamera  v0.0.0
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 
42 
45  unsigned int stride;
46 
47  unsigned int bufferCount;
48 
49  Stream *stream() const { return stream_; }
50  void setStream(Stream *stream) { stream_ = stream; }
51  const StreamFormats &formats() const { return formats_; }
52 
53  std::string toString() const;
54 
55 private:
56  Stream *stream_;
57  StreamFormats formats_;
58 };
59 
60 enum StreamRole {
65 };
66 
67 using StreamRoles = std::vector<StreamRole>;
68 
69 class Stream
70 {
71 public:
72  Stream();
73 
75 
76 protected:
77  friend class Camera;
78 
80 };
81 
82 } /* namespace libcamera */
83 
84 #endif /* __LIBCAMERA_STREAM_H__ */
Buffer handling.
Camera device.
Definition: camera.h:70
libcamera image pixel format
Definition: pixel_format.h:17
Describe a range of sizes.
Definition: geometry.h:72
Hold information about supported stream formats.
Definition: stream.h:25
std::vector< Size > sizes(const PixelFormat &pixelformat) const
Retrieve the list of frame sizes supported for pixelformat.
Definition: stream.cpp:130
SizeRange range(const PixelFormat &pixelformat) const
Retrieve the range of minimum and maximum sizes.
Definition: stream.cpp:243
std::vector< PixelFormat > pixelformats() const
Retrieve the list of supported pixel formats.
Definition: stream.cpp:106
Video stream for a camera.
Definition: stream.h:70
const StreamConfiguration & configuration() const
Retrieve the active configuration of the stream.
Definition: stream.h:74
StreamConfiguration configuration_
The stream configuration.
Definition: stream.h:79
Stream()
Construct a stream with default parameters.
Definition: stream.cpp:417
Data structures related to geometric objects.
libcamera pixel format
StreamRole
Identify the role a stream is intended to play.
Definition: stream.h:60
@ Viewfinder
Definition: stream.h:64
@ VideoRecording
Definition: stream.h:63
@ StillCapture
Definition: stream.h:61
@ StillCaptureRaw
Definition: stream.h:62
std::vector< StreamRole > StreamRoles
A vector of StreamRole.
Definition: stream.h:67
Describe a two-dimensional size.
Definition: geometry.h:30
Configuration parameters for a stream.
Definition: stream.h:39
unsigned int bufferCount
Requested number of buffers to allocate for the stream.
Definition: stream.h:47
Size size
Stream size in pixels.
Definition: stream.h:44
const StreamFormats & formats() const
Retrieve advisory stream format information.
Definition: stream.h:51
StreamConfiguration()
Definition: stream.cpp:281
void setStream(Stream *stream)
Associate a stream with a configuration.
Definition: stream.h:50
std::string toString() const
Assemble and return a string describing the configuration.
Definition: stream.cpp:362
PixelFormat pixelFormat
Stream pixel format.
Definition: stream.h:43
Stream * stream() const
Retrieve the stream associated with the configuration.
Definition: stream.h:49
unsigned int stride
Image stride for the stream, in bytes.
Definition: stream.h:45