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-2017, 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 supported aperture range.
126
*/
127
virtual
Range<float>
getLensApertureRange
()
const
= 0;
128
129
/**
130
* Returns the supported range of ISP digital gain.
131
*/
132
virtual
Range<float>
getIspDigitalGainRange
()
const
= 0;
133
134
/**
135
* Returns the supported range of Exposure Compensation.
136
*/
137
virtual
Range<float>
getExposureCompensationRange
()
const
= 0;
138
139
protected
:
140
~ICameraProperties
() {}
141
};
142
143
/**
144
* Child object representing a CameraDevice's sensor mode, returned by
145
* ICameraProperties::getAllSensorModes
146
*
147
* @defgroup ArgusSensorMode SensorMode
148
* @ingroup ArgusCameraDevice
149
*/
150
class
SensorMode
:
public
InterfaceProvider
151
{
152
protected
:
153
~SensorMode
() {}
154
};
155
156
/**
157
* @class ISensorMode
158
*
159
* Interface to the core properties of a SensorMode.
160
*
161
* @ingroup ArgusSensorMode
162
*/
163
DEFINE_UUID
(InterfaceID, IID_SENSOR_MODE, e69015e0,db2a,11e5,a837,18,00,20,0c,9a,66);
164
class
ISensorMode
:
public
Interface
165
{
166
public
:
167
static
const
InterfaceID
&
id
() {
return
IID_SENSOR_MODE; }
168
169
/**
170
* Returns the image resolution, in pixels.
171
*/
172
virtual
Size2D<uint32_t>
getResolution
()
const
= 0;
173
174
/**
175
* Returns the supported exposure time range (in nanoseconds).
176
*/
177
virtual
Range<uint64_t>
getExposureTimeRange
()
const
= 0;
178
179
/**
180
* Returns the supported frame duration range (in nanoseconds).
181
*/
182
virtual
Range<uint64_t>
getFrameDurationRange
()
const
= 0;
183
184
/**
185
* Returns the supported analog gain range.
186
*/
187
virtual
Range<float>
getAnalogGainRange
()
const
= 0;
188
189
/**
190
* Returns the bit depth of the image captured by the image sensor in the
191
* current mode. For example, a wide dynamic range image sensor capturing
192
* 16 bits per pixel would have an input bit depth of 16.
193
*/
194
virtual
uint32_t
getInputBitDepth
()
const
= 0;
195
196
/**
197
* Returns the bit depth of the image returned from the image sensor in the
198
* current mode. For example, a wide dynamic range image sensor capturing
199
* 16 bits per pixel might be connected through a Camera Serial Interface
200
* (CSI-3) which is limited to 12 bits per pixel. The sensor would have to
201
* compress the image internally and would have an output bit depth not
202
* exceeding 12.
203
*/
204
virtual
uint32_t
getOutputBitDepth
()
const
= 0;
205
206
/**
207
* Describes the type of the sensor (Bayer, Yuv, etc.) and key modes of
208
* operation which are enabled in the sensor mode (Wide-dynamic range,
209
* Piecewise Linear Compressed output, etc.)
210
*/
211
virtual
SensorModeType
getSensorModeType
()
const
= 0;
212
213
/**
214
* Checks if the buffer provided is supported by the camera device.
215
*/
216
virtual
bool
isBufferFormatSupported
(
Buffer
* buffer)
const
= 0;
217
protected
:
218
~ISensorMode
() {}
219
};
220
221
}
// namespace Argus
222
223
#endif // _ARGUS_CAMERA_DEVICE_H
Generated on Mon Aug 7 2017 10:33:31 for Libargus API by
1.8.1