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-2019, 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 maximum number of regions of interest supported by AWB.
89
* A value of 0 means that the entire image is the only supported region of interest.
90
*
91
* @see IAutoControlSettings::setAwbRegions()
92
*/
93
virtual
uint32_t
getMaxAwbRegions
()
const
= 0;
94
95
/**
96
* Returns only the basic available sensor modes that do not have an associated
97
* extension. Basic mode types include Depth, RGB, YUV and Bayer types.
98
*
99
* @param[out] modes A vector that will be populated with the sensor modes.
100
*
101
* @returns success/status of the call.
102
*/
103
virtual
Status
getBasicSensorModes
(std::vector<SensorMode*>* modes)
const
= 0;
104
105
/**
106
* Returns all the available sensor modes including the ones that have extensions.
107
* The extended modes support some form of Wide Dynamic Range (WDR) technology.
108
*
109
* All the returned modes will support the basic sensor mode interface.
110
* @see ISensorMode
111
*
112
* @param[out] modes A vector that will be populated with the sensor modes.
113
*
114
* @returns success/status of the call.
115
*/
116
virtual
Status
getAllSensorModes
(std::vector<SensorMode*>* modes)
const
= 0;
117
118
/**
119
* Returns the valid range of focuser positions.
120
* The units are focuser steps.
121
*/
122
virtual
Range<int32_t>
getFocusPositionRange
()
const
= 0;
123
124
/**
125
* Returns the valid range of aperture step positions.
126
* The units are aperture motor steps.
127
*/
128
virtual
Range<int32_t>
getApertureMotorStepRange
()
const
= 0;
129
130
/**
131
* Returns the valid range of aperture step positions.
132
* The units are aperture motor steps/second.
133
*/
134
virtual
Range<float>
getApertureMotorSpeedRange
()
const
= 0;
135
136
/**
137
* Returns the supported aperture range.
138
*/
139
virtual
Range<float>
getLensApertureRange
()
const
= 0;
140
141
/**
142
* Returns the supported range of ISP digital gain.
143
*/
144
virtual
Range<float>
getIspDigitalGainRange
()
const
= 0;
145
146
/**
147
* Returns the supported range of Exposure Compensation.
148
*/
149
virtual
Range<float>
getExposureCompensationRange
()
const
= 0;
150
151
protected
:
152
~ICameraProperties
() {}
153
};
154
155
/**
156
* Child object representing a CameraDevice's sensor mode, returned by
157
* ICameraProperties::getAllSensorModes
158
*
159
* @defgroup ArgusSensorMode SensorMode
160
* @ingroup ArgusCameraDevice
161
*/
162
class
SensorMode
:
public
InterfaceProvider
163
{
164
protected
:
165
~SensorMode
() {}
166
};
167
168
/**
169
* @class ISensorMode
170
*
171
* Interface to the core properties of a SensorMode.
172
*
173
* @ingroup ArgusSensorMode
174
*/
175
DEFINE_UUID
(InterfaceID, IID_SENSOR_MODE, e69015e0,db2a,11e5,a837,18,00,20,0c,9a,66);
176
class
ISensorMode
:
public
Interface
177
{
178
public
:
179
static
const
InterfaceID
&
id
() {
return
IID_SENSOR_MODE; }
180
181
/**
182
* Returns the image resolution, in pixels.
183
*/
184
virtual
Size2D<uint32_t>
getResolution
()
const
= 0;
185
186
/**
187
* Returns the supported exposure time range (in nanoseconds).
188
*/
189
virtual
Range<uint64_t>
getExposureTimeRange
()
const
= 0;
190
191
/**
192
* Returns the supported frame duration range (in nanoseconds).
193
*/
194
virtual
Range<uint64_t>
getFrameDurationRange
()
const
= 0;
195
196
/**
197
* Returns the supported analog gain range.
198
*/
199
virtual
Range<float>
getAnalogGainRange
()
const
= 0;
200
201
/**
202
* Returns the bit depth of the image captured by the image sensor in the
203
* current mode. For example, a wide dynamic range image sensor capturing
204
* 16 bits per pixel would have an input bit depth of 16.
205
*/
206
virtual
uint32_t
getInputBitDepth
()
const
= 0;
207
208
/**
209
* Returns the bit depth of the image returned from the image sensor in the
210
* current mode. For example, a wide dynamic range image sensor capturing
211
* 16 bits per pixel might be connected through a Camera Serial Interface
212
* (CSI-3) which is limited to 12 bits per pixel. The sensor would have to
213
* compress the image internally and would have an output bit depth not
214
* exceeding 12.
215
*/
216
virtual
uint32_t
getOutputBitDepth
()
const
= 0;
217
218
/**
219
* Describes the type of the sensor (Bayer, Yuv, etc.) and key modes of
220
* operation which are enabled in the sensor mode (Wide-dynamic range,
221
* Piecewise Linear Compressed output, etc.)
222
*/
223
virtual
SensorModeType
getSensorModeType
()
const
= 0;
224
225
/**
226
* Checks if the buffer provided is supported by the camera device.
227
*/
228
virtual
bool
isBufferFormatSupported
(
Buffer
* buffer)
const
= 0;
229
protected
:
230
~ISensorMode
() {}
231
};
232
233
}
// namespace Argus
234
235
#endif // _ARGUS_CAMERA_DEVICE_H
Generated on Fri Oct 25 2019 11:08:00 for Libargus API by
1.8.1