libcamera v0.0.0+3240-f2a18172-dirty (2021-12-20T12:34:46+00: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
16#include <libcamera/geometry.h>
18
19namespace libcamera {
20
21class Camera;
22class Stream;
23
25{
26public:
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
35private:
36 std::map<PixelFormat, std::vector<SizeRange>> formats_;
37};
38
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
56private:
57 Stream *stream_;
58 StreamFormats formats_;
59};
60
66};
67
68using StreamRoles = std::vector<StreamRole>;
69
70class Stream
71{
72public:
73 Stream();
74
76
77protected:
78 friend class Camera;
79
81};
82
83} /* namespace libcamera */
84
85#endif /* __LIBCAMERA_STREAM_H__ */
Camera device.
Definition: camera.h:77
libcamera image pixel format
Definition: pixel_format.h:17
Describe a range of sizes.
Definition: geometry.h:197
Describe a two-dimensional size.
Definition: geometry.h:51
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:131
SizeRange range(const PixelFormat &pixelformat) const
Retrieve the range of minimum and maximum sizes.
Definition: stream.cpp:244
std::vector< PixelFormat > pixelformats() const
Retrieve the list of supported pixel formats.
Definition: stream.cpp:107
Video stream for a camera.
Definition: stream.h:71
const StreamConfiguration & configuration() const
Retrieve the active configuration of the stream.
Definition: stream.h:75
StreamConfiguration configuration_
The stream configuration.
Definition: stream.h:80
Stream()
Construct a stream with default parameters.
Definition: stream.cpp:426
Frame buffer handling.
Data structures related to geometric objects.
Top-level libcamera namespace.
Definition: backtrace.h:17
StreamRole
Identify the role a stream is intended to play.
Definition: stream.h:61
@ Viewfinder
Definition: stream.h:65
@ Raw
Definition: stream.h:62
@ VideoRecording
Definition: stream.h:64
@ StillCapture
Definition: stream.h:63
std::vector< StreamRole > StreamRoles
A vector of StreamRole.
Definition: stream.h:68
libcamera pixel format
Configuration parameters for a stream.
Definition: stream.h:39
unsigned int bufferCount
Requested number of buffers to allocate for the stream.
Definition: stream.h:48
Size size
Stream size in pixels.
Definition: stream.h:44
const StreamFormats & formats() const
Retrieve advisory stream format information.
Definition: stream.h:52
StreamConfiguration()
Definition: stream.cpp:282
void setStream(Stream *stream)
Associate a stream with a configuration.
Definition: stream.h:51
std::string toString() const
Assemble and return a string describing the configuration.
Definition: stream.cpp:372
PixelFormat pixelFormat
Stream pixel format.
Definition: stream.h:43
Stream * stream() const
Retrieve the stream associated with the configuration.
Definition: stream.h:50
unsigned int frameSize
Frame size for the stream, in bytes.
Definition: stream.h:46
unsigned int stride
Image stride for the stream, in bytes.
Definition: stream.h:45