libcamera  v0.2.0+85-1c5830a9
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 
8 #pragma once
9 
10 #include <map>
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 #include <vector>
15 
16 #include <libcamera/color_space.h>
17 #include <libcamera/framebuffer.h>
18 #include <libcamera/geometry.h>
19 #include <libcamera/pixel_format.h>
20 
21 namespace libcamera {
22 
23 class Camera;
24 class Stream;
25 
27 {
28 public:
29  StreamFormats();
30  StreamFormats(const std::map<PixelFormat, std::vector<SizeRange>> &formats);
31 
32  std::vector<PixelFormat> pixelformats() const;
33  std::vector<Size> sizes(const PixelFormat &pixelformat) const;
34 
35  SizeRange range(const PixelFormat &pixelformat) const;
36 
37 private:
38  std::map<PixelFormat, std::vector<SizeRange>> formats_;
39 };
40 
43  StreamConfiguration(const StreamFormats &formats);
44 
47  unsigned int stride;
48  unsigned int frameSize;
49 
50  unsigned int bufferCount;
51 
52  std::optional<ColorSpace> colorSpace;
53 
54  Stream *stream() const { return stream_; }
55  void setStream(Stream *stream) { stream_ = stream; }
56  const StreamFormats &formats() const { return formats_; }
57 
58  std::string toString() const;
59 
60 private:
61  Stream *stream_;
62  StreamFormats formats_;
63 };
64 
65 enum class StreamRole {
66  Raw,
69  Viewfinder,
70 };
71 
72 std::ostream &operator<<(std::ostream &out, StreamRole role);
73 
74 class Stream
75 {
76 public:
77  Stream();
78 
79  const StreamConfiguration &configuration() const { return configuration_; }
80 
81 protected:
82  friend class Camera;
83 
85 };
86 
87 } /* namespace libcamera */
Frame buffer handling.
libcamera image pixel format
Definition: pixel_format.h:17
Class and enums to represent color spaces.
Video stream for a camera.
Definition: stream.h:74
unsigned int frameSize
Frame size for the stream, in bytes.
Definition: stream.h:48
Top-level libcamera namespace.
Definition: backtrace.h:17
const StreamConfiguration & configuration() const
Retrieve the active configuration of the stream.
Definition: stream.h:79
unsigned int bufferCount
Requested number of buffers to allocate for the stream.
Definition: stream.h:50
Describe a two-dimensional size.
Definition: geometry.h:52
std::vector< Size > sizes(const PixelFormat &pixelformat) const
Retrieve the list of frame sizes supported for pixelformat.
Definition: stream.cpp:131
Stream * stream() const
Retrieve the stream associated with the configuration.
Definition: stream.h:54
const StreamFormats & formats() const
Retrieve advisory stream format information.
Definition: stream.h:56
Camera device.
Definition: camera.h:113
PixelFormat pixelFormat
Stream pixel format.
Definition: stream.h:45
void setStream(Stream *stream)
Associate a stream with a configuration.
Definition: stream.h:55
unsigned int stride
Image stride for the stream, in bytes.
Definition: stream.h:47
std::ostream & operator<<(std::ostream &out, const Point &p)
Insert a text representation of a Point into an output stream.
Definition: geometry.cpp:91
std::optional< ColorSpace > colorSpace
The ColorSpace for this stream.
Definition: stream.h:52
Hold information about supported stream formats.
Definition: stream.h:26
StreamRole
Identify the role a stream is intended to play.
Definition: stream.h:65
Describe a range of sizes.
Definition: geometry.h:200
StreamConfiguration configuration_
The stream configuration.
Definition: stream.h:84
Size size
Stream size in pixels.
Definition: stream.h:46
std::vector< PixelFormat > pixelformats() const
Retrieve the list of supported pixel formats.
Definition: stream.cpp:107
Data structures related to geometric objects.
SizeRange range(const PixelFormat &pixelformat) const
Retrieve the range of minimum and maximum sizes.
Definition: stream.cpp:244
Configuration parameters for a stream.
Definition: stream.h:41
libcamera pixel format