blob: b6238946a8d58cf5b5dff0e69e1eff47fb937458 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* stream.cpp - Video stream for a Camera
*/
#include <libcamera/stream.h>
/**
* \file stream.h
* \brief Video stream for a Camera
*
* A camera device can provide frames in different resolutions and formats
* concurrently from a single image source. The Stream class represents
* one of the multiple concurrent streams.
*
* All streams exposed by a camera device share the same image source and are
* thus not fully independent. Parameters related to the image source, such as
* the exposure time or flash control, are common to all streams. Other
* parameters, such as format or resolution, may be specified per-stream,
* depending on the capabilities of the camera device.
*
* Camera devices expose at least one stream, and may expose additional streams
* based on the device capabilities. This can be used, for instance, to
* implement concurrent viewfinder and video capture, or concurrent viewfinder,
* video capture and still image capture.
*/
namespace libcamera {
/**
* \class Stream
* \brief Video stream for a camera
*
* The Stream class models all static information which are associated with a
* single video stream. Streams are exposed by the Camera object they belong to.
*
* Cameras may supply more than one stream from the same video source. In such
* cases an application can inspect all available streams and select the ones
* that best fit its use case.
*
* \todo Add capabilities to the stream API. Without this the Stream class only
* serves to reveal how many streams of unknown capabilities a camera supports.
* This in itself is productive as it allows applications to configure and
* capture from one or more streams even if they won't be able to select the
* optimal stream for the task.
*/
/**
* \brief Construct a stream with default parameters
*/
Stream::Stream()
{
}
/**
* \fn Stream::bufferPool()
* \brief Retrieve the buffer pool for the stream
*
* The buffer pool handles the buffers used to capture frames at the output of
* the stream. It is initially created empty and shall be populated with
* buffers before being used.
*
* \return A reference to the buffer pool
*/
/**
* \struct StreamConfiguration
* \brief Configuration parameters for a stream
*
* The StreamConfiguration structure models all information which can be
* configured for a single video stream.
*/
/**
* \var StreamConfiguration::width
* \brief Stream width in pixels
*/
/**
* \var StreamConfiguration::height
* \brief Stream height in pixels
*/
/**
* \var StreamConfiguration::pixelFormat
* \brief Stream pixel format
*
* This is a little endian four character code representation of the pixel
* format described in V4L2 using the V4L2_PIX_FMT_* definitions.
*/
/**
* \var StreamConfiguration::bufferCount
* \brief Requested number of buffers to allocate for the stream
*/
} /* namespace libcamera */
|