Libargus API
Libargus Camera API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
Argus
CameraDevice.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016-2020, NVIDIA CORPORATION. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of NVIDIA CORPORATION nor the names of its
13
* contributors may be used to endorse or promote products derived
14
* from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
17
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
*/
28
29
/**
30
* @file
31
* <b>Libargus API: Camera Device API</b>
32
*
33
* @b Description: This file defines objects representing a single camera device.
34
*/
35
36
#ifndef _ARGUS_CAMERA_DEVICE_H
37
#define _ARGUS_CAMERA_DEVICE_H
38
39
namespace
Argus
40
{
41
42
/**
43
* Object representing a single camera device.
44
*
45
* CameraDevices are provided by a CameraProvider and are used to
46
* access the camera devices available within the system.
47
* Each device is based on a single sensor or a set of synchronized sensors.
48
*
49
* @see ICameraProvider::getCameraDevices
50
*
51
* @defgroup ArgusCameraDevice CameraDevice
52
* @ingroup ArgusObjects
53
*/
54
class
CameraDevice
:
public
InterfaceProvider
55
{
56
protected
:
57
~CameraDevice
() {}
58
};
59
60
/**
61
* @class ICameraProperties
62
*
63
* Interface to the core CameraDevice properties.
64
*
65
* @ingroup ArgusCameraDevice
66
*/
67
DEFINE_UUID
(InterfaceID, IID_CAMERA_PROPERTIES, 436d2a73,c85b,4a29,bce5,15,60,6e,35,86,91);
68
class
ICameraProperties
:
public
Interface
69
{
70
public
:
71
static
const
InterfaceID
&
id
() {
return
IID_CAMERA_PROPERTIES; }
72
73
/**
74
* Returns the camera UUID.
75
* @todo Describe the meaning of the camera UUID.
76
*/
77
virtual
UUID
getUUID
()
const
= 0;
78
79
/**
80
* Returns the maximum number of regions of interest supported by AE.
81
* A value of 0 means that the entire image is the only supported region of interest.
82
*
83
* @see IAutoControlSettings::setAeRegions()
84
*/
85
virtual
uint32_t
getMaxAeRegions
()
const
= 0;
86
87
/**
88
* Returns the minimum size of resultant region required by AE.
89
*
90
* @see IAutoControlSettings::setAeRegions()
91
*/
92
virtual
Size2D<uint32_t>
getMinAeRegionSize
()
const
= 0;
93
94
/**
95
* Returns the maximum number of regions of interest supported by AWB.
96
* A value of 0 means that the entire image is the only supported region of interest.
97
*
98
* @see IAutoControlSettings::setAwbRegions()
99
*/
100
virtual
uint32_t
getMaxAwbRegions
()
const
= 0;
101
102
/**
103
* Returns only the basic available sensor modes that do not have an associated
104
* extension. Basic mode types include Depth, RGB, YUV and Bayer types.
105
*
106
* @param[out] modes A vector that will be populated with the sensor modes.
107
*
108
* @returns success/status of the call.
109
*/
110
virtual
Status
getBasicSensorModes
(std::vector<SensorMode*>* modes)
const
= 0;
111
112
/**
113
* Returns all the available sensor modes including the ones that have extensions.
114
* The extended modes support some form of Wide Dynamic Range (WDR) technology.
115
*
116
* All the returned modes will support the basic sensor mode interface.
117
* @see ISensorMode
118
*
119
* @param[out] modes A vector that will be populated with the sensor modes.
120
*
121
* @returns success/status of the call.
122
*/
123
virtual
Status
getAllSensorModes
(std::vector<SensorMode*>* modes)
const
= 0;
124
125
/**
126
* Returns the valid range of focuser positions.
127
* The units are focuser steps.
128
*/
129
virtual
Range<int32_t>
getFocusPositionRange
()
const
= 0;
130
131
/**
132
* Returns the valid range of aperture step positions.
133
* The units are aperture motor steps.
134
*/
135
virtual
Range<int32_t>
getApertureMotorStepRange
()
const
= 0;
136
137
/**
138
* Returns the valid range of aperture step positions.
139
* The units are aperture motor steps/second.
140
*/
141
virtual
Range<float>
getApertureMotorSpeedRange
()
const
= 0;
142
143
/**
144
* Returns the supported aperture range.
145
*/
146
virtual
Range<float>
getLensApertureRange
()
const
= 0;
147
148
/**
149
* Returns the supported range of ISP digital gain.
150
*/
151
virtual
Range<float>
getIspDigitalGainRange
()
const
= 0;
152
153
/**
154
* Returns the supported range of Exposure Compensation.
155
*/
156
virtual
Range<float>
getExposureCompensationRange
()
const
= 0;
157
158
protected
:
159
~ICameraProperties
() {}
160
};
161
162
/**
163
* Child object representing a CameraDevice's sensor mode, returned by
164
* ICameraProperties::getAllSensorModes
165
*
166
* @defgroup ArgusSensorMode SensorMode
167
* @ingroup ArgusCameraDevice
168
*/
169
class
SensorMode
:
public
InterfaceProvider
170
{
171
protected
:
172
~SensorMode
() {}
173
};
174
175
/**
176
* @class ISensorMode
177
*
178
* Interface to the core properties of a SensorMode.
179
*
180
* @ingroup ArgusSensorMode
181
*/
182
DEFINE_UUID
(InterfaceID, IID_SENSOR_MODE, e69015e0,db2a,11e5,a837,18,00,20,0c,9a,66);
183
class
ISensorMode
:
public
Interface
184
{
185
public
:
186
static
const
InterfaceID
&
id
() {
return
IID_SENSOR_MODE; }
187
188
/**
189
* Returns the image resolution, in pixels.
190
*/
191
virtual
Size2D<uint32_t>
getResolution
()
const
= 0;
192
193
/**
194
* Returns the supported exposure time range (in nanoseconds).
195
*/
196
virtual
Range<uint64_t>
getExposureTimeRange
()
const
= 0;
197
198
/**
199
* Returns the supported frame duration range (in nanoseconds).
200
*/
201
virtual
Range<uint64_t>
getFrameDurationRange
()
const
= 0;
202
203
/**
204
* Returns the supported analog gain range.
205
*/
206
virtual
Range<float>
getAnalogGainRange
()
const
= 0;
207
208
/**
209
* Returns the bit depth of the image captured by the image sensor in the
210
* current mode. For example, a wide dynamic range image sensor capturing
211
* 16 bits per pixel would have an input bit depth of 16.
212
*/
213
virtual
uint32_t
getInputBitDepth
()
const
= 0;
214
215
/**
216
* Returns the bit depth of the image returned from the image sensor in the
217
* current mode. For example, a wide dynamic range image sensor capturing
218
* 16 bits per pixel might be connected through a Camera Serial Interface
219
* (CSI-3) which is limited to 12 bits per pixel. The sensor would have to
220
* compress the image internally and would have an output bit depth not
221
* exceeding 12.
222
*/
223
virtual
uint32_t
getOutputBitDepth
()
const
= 0;
224
225
/**
226
* Describes the type of the sensor (Bayer, Yuv, etc.) and key modes of
227
* operation which are enabled in the sensor mode (Wide-dynamic range,
228
* Piecewise Linear Compressed output, etc.)
229
*/
230
virtual
SensorModeType
getSensorModeType
()
const
= 0;
231
232
/**
233
* Checks if the buffer provided is supported by the camera device.
234
*/
235
virtual
bool
isBufferFormatSupported
(
Buffer
* buffer)
const
= 0;
236
protected
:
237
~ISensorMode
() {}
238
};
239
240
}
// namespace Argus
241
242
#endif // _ARGUS_CAMERA_DEVICE_H
Generated on Wed Sep 30 2020 15:07:46 for Libargus API by
1.8.1