CVB++ 15.0
c_driver.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include "../namespace.hpp"
8
9#include "c_core.h"
10#include "c_img.h"
11
12
13
14namespace Cvb
15{
16
17CVB_BEGIN_INLINE_NS
18
19namespace CExports
20{
21
22CVB_DEF_CAPI_X(cvbbool_t, CanGrabber, (IMG Image))
23CVB_DEF_CAPI_X(cvbbool_t, CanBoardSelect, (IMG Image))
24CVB_DEF_CAPI_X(cvbbool_t, CanBoardSelect2, (IMG Image))
25CVB_DEF_CAPI_X(cvbbool_t, CanCameraSelect, (IMG Image))
26CVB_DEF_CAPI_X(cvbbool_t, CanCameraSelect2, (IMG Image))
27CVB_DEF_CAPI_X(cvbbool_t, CanDeviceControl, (IMG Image))
28CVB_DEF_CAPI_X(cvbbool_t, CanImageRect, (IMG Image))
29CVB_DEF_CAPI_X(cvbbool_t, CanBasicDIO, (IMG Image))
30CVB_DEF_CAPI_X(cvbbool_t, CanRingBuffer, (IMG Image))
31CVB_DEF_CAPI_X(cvbbool_t, CanNodeMapHandle, (IMG Image))
32CVB_DEF_CAPI_X(cvbbool_t, CanNodeMapHandle2, (IMG Image))
33CVB_DEF_CAPI_X(cvbbool_t, CanNotify, (IMG Image))
34CVB_DEF_CAPI_X(cvbbool_t, CanSoftwareTrigger, (IMG Image))
35CVB_DEF_CAPI_X(cvbbool_t, CanGrab2, (IMG Image))
36
37
38CVB_DEF_CAPI_X(cvbres_t, GetDriverID, (IMG Image, cvbguid_t & guid))
39
40
41
42
43
44CVB_DEF_CAPI_X(cvbres_t, SetBoard, (IMG Image, cvbval_t nBoard))
45CVB_DEF_CAPI_X(cvbres_t, GetBoard, (IMG Image, cvbval_t * nBoard))
46
47
48CVB_DEF_CAPI_X(cvbres_t, BS2GetNumBoards, (IMG Image, cvbval_t & NumBoards))
49CVB_DEF_CAPI_X(cvbres_t, BS2GetBoard, (IMG Image, cvbval_t & ActBoard))
50CVB_DEF_CAPI_X(cvbres_t, BS2SetBoard, (IMG Image, cvbval_t NewBoard, IMG & imgNew))
51
52
53
54CVB_DEF_CAPI_X(cvbres_t, SetCamPort, (IMG Image, cvbval_t Port, cvbval_t ImagesToWait))
55CVB_DEF_CAPI_X(cvbres_t, GetNumPorts, (IMG Image, cvbval_t & NumPorts))
56CVB_DEF_CAPI_X(cvbres_t, GetCamPort, (IMG Image, cvbval_t & Port))
57
58
59CVB_DEF_CAPI_X(cvbres_t, CS2GetNumPorts, (IMG Image, cvbval_t & NumPorts))
60CVB_DEF_CAPI_X(cvbres_t, CS2GetCamPort, (IMG Image, cvbval_t & Port))
61CVB_DEF_CAPI_X(cvbres_t, CS2SetCamPort, (IMG Image, cvbval_t Port, cvbval_t ImgToWait, IMG & imgNew))
62
63
64#ifdef _WIN32
65typedef long DEVICECTRL_CMD;
66#elif defined __linux__
67typedef uint32_t DEVICECTRL_CMD;
68#else
69#error CVB: Unsupported platform and/or compiler!
70#endif
71
72enum DC_OPERATION
73{
74 DC_GET = 0x00000000,
75 // gets the current setting of the parameter
76 DC_SET = 0x10000000,
77 // sets the given parameter
78 DC_GETMIN = 0x20000000,
79 // gets the min valid value for a parameter (if possible)
80 DC_GETMAX = 0x30000000,
81 // gets the max valid value for a parameter (if possible)
82 DC_VERIFY = 0x40000000,
83 // verifies the validity of a parameter settings without actually setting it (if possible)
84 DC_OPERATION_MASK = 0xF0000000,
85 DC_PARAM_MASK = 0x0FFFFFFF
86};
87
88
89
90
91
92CVB_DEF_CAPI_X(cvbres_t, DCBinaryCommand , (IMG Image, DEVICECTRL_CMD iCmd, const void * pInBuf, size_t iInBufSize, void * pOutBuf, size_t & iOutBufSize))
93CVB_DEF_CAPI_X(cvbres_t, DCStrCommand, (IMG Image, DEVICECTRL_CMD iCmd, const char * pInStr, size_t iInStrSize, char * pOutStr, size_t & iOutStrSize))
94
95
96
97CVB_DEF_CAPI_X(cvbres_t, STTrigger, (IMG Image, cvbval_t iSWTrgID))
98
99
100
101enum IMAGERECT_CMD
102{
103
104 IMAGERECT_CMD_GET = 0,
105 IMAGERECT_CMD_SET_AUTODELETE = 1,
106 IMAGERECT_CMD_VALIDATE = 2,
107 IMAGERECT_CMD_SET = 3,
108 IMAGERECT_CMD_RESET = 4,
109 IMAGERECT_CMD_CHECK = 5
110};
111
112
113CVB_DEF_CAPI_X(cvbres_t, IRImageSize, (IMG Image, IMAGERECT_CMD lAction, cvbdim_t & Dx, cvbdim_t & Dy, IMG & imgNew))
114CVB_DEF_CAPI_X(cvbres_t, IRImageOffset, (IMG Image, IMAGERECT_CMD lAction, cvbdim_t & XOffset, cvbdim_t & YOffset))
115
116
117
118CVB_DEF_CAPI_X(cvbres_t, BDIOGetNumInputs, (IMG Image, cvbval_t & Num))
119CVB_DEF_CAPI_X(cvbres_t, BDIOGetNumOutputs, (IMG Image, cvbval_t & Num))
120CVB_DEF_CAPI_X(cvbres_t, BDIOGetInBit, (IMG Image, cvbval_t Num, cvbval_t & Bit))
121CVB_DEF_CAPI_X(cvbres_t, BDIOGetInDword, (IMG Image, cvbval_t Num, cvbuint32_t & Value))
122CVB_DEF_CAPI_X(cvbres_t, BDIOGetOutBit, (IMG Image, cvbval_t Num, cvbval_t & Bit))
123CVB_DEF_CAPI_X(cvbres_t, BDIOGetOutDword, (IMG Image, cvbval_t Num, cvbuint32_t & Value))
124CVB_DEF_CAPI_X(cvbres_t, BDIOSetOutBit, (IMG Image, cvbval_t Num, cvbval_t Value))
125CVB_DEF_CAPI_X(cvbres_t, BDIOSetOutDword, (IMG Image, cvbval_t Num, cvbuint32_t Value, cvbuint32_t Mask))
126
127
128
129enum GRAB_INFO_CMD
130{
131
132 GRAB_INFO_NUMBER_IMAGES_AQCUIRED = 0,
133 GRAB_INFO_NUMBER_IMAGES_LOST = 1,
134 GRAB_INFO_NUMBER_IMAGES_LOST_LOCKED = 2,
135 GRAB_INFO_NUMBER_IMAGES_LOCKED = 3,
136 GRAB_INFO_NUMBER_IMAGES_PENDIG = 4,
137 GRAB_INFO_GRAB_ACTIVE = 5,
138 GRAB_INFO_TIMESTAMP = 6,
139 GRAB_INFO_NUMBER_TRIGGERS_LOST = 7,
140 GRAB_INFO_CAMERA_DETECTED = 8,
141 G2INFO_NumBuffersPending = 10,
142 G2INFO_NumBuffersDelivered = 11,
143 G2INFO_NumBuffersCorrupt = 12,
144 G2INFO_NumBuffersCorruptOnDelivery = 13,
145 G2INFO_NumBuffersLost = 14,
146 G2INFO_NumBuffersLostLocked = 15,
147 G2INFO_NumBuffersAcquired = 16,
148 G2INFO_NumBuffersQueued = 17,
149 G2INFO_NumBuffersAnnounced = 18,
150 G2INFO_NumBuffersInIncompleteList = 19,
151 G2INFO_NumPacketsReceived = 20,
152 G2INFO_NumResends = 21,
153 G2INFO_NumBuffersLocked = 22
154
155};
156
157
158CVB_DEF_CAPI_X(cvbres_t, G2Grab, (IMG Image))
159CVB_DEF_CAPI_X(cvbres_t, G2Wait, (IMG Image))
160CVB_DEF_CAPI_X(cvbres_t, G2Freeze, (IMG Image, cvbbool_t bKill))
161CVB_DEF_CAPI_X(cvbres_t, G2GetGrabStatus, (IMG Image, GRAB_INFO_CMD RequestType, double & RequestAnswer))
162
163
164enum RINGBUFFER_INFO_CMD
165{
166 RINGBUFFER_INFO_TIMESTAMP = 0,
167 RINGBUFFER_INFO_TAG = 1,
168 RINGBUFFER_INFO_LOCKED = 2
169};
170
171enum RINGBUFFER_NUMBUFFER_CMD
172{
173 RINGBUFFER_NUMBUFFER_CMD_GET = 0,
174 RINGBUFFER_NUMBUFFER_CMD_SET = 1,
175 RINGBUFFER_NUMBUFFER_CMD_VALIDATE = 2
176};
177
178enum RINGBUFFER_LOCKMODE_CMD
179{
180 RINGBUFFER_LOCKMODE_CMD_GET = 0,
181 RINGBUFFER_LOCKMODE_CMD_SET = 1,
182 RINGBUFFER_LOCKMODE_CMD_VALIDATE = 2
183};
184
185enum RINGBUFFER_LOCKMODE
186{
187 RINGBUFFER_LOCKMODE_AUTO = 0,
188 // lockmode off was 1 (removed)
189 RINGBUFFER_LOCKMODE_ON = 2,
190 RINGBUFFER_LOCKMODE_INVALID = 3
191};
192
193CVB_DEF_CAPI_X(cvbres_t, Snap, (IMG Image))
194CVB_DEF_CAPI_X(cvbres_t, SetTimeout, (IMG Image, cvbuint32_t dwTimeout))
195
196
197CVB_DEF_CAPI_X(cvbres_t, RBNumBuffer, (IMG Image, RINGBUFFER_NUMBUFFER_CMD Action, cvbval_t & Num, IMG & imgNew))
198CVB_DEF_CAPI_X(cvbres_t, RBUnlock, (IMG Image, cvbval_t BufferIndex))
199CVB_DEF_CAPI_X(cvbres_t, RBLockMode, (IMG Image, RINGBUFFER_LOCKMODE_CMD LockModeCmd, RINGBUFFER_LOCKMODE & Mode))
200CVB_DEF_CAPI_X(cvbres_t, RBIsLocked, (IMG Image, cvbval_t lBufferIndex, cvbbool_t & bIsLocked))
201CVB_DEF_CAPI_X(cvbres_t, RBGetBufferImage, (IMG Image, cvbval_t lBufferIndex, IMG & I))
202CVB_DEF_CAPI_X(cvbres_t, RBBufferSeq, (IMG Image, cvbval_t lSequenceIndex, cvbval_t & lBufferIndex))
203CVB_DEF_CAPI_X(cvbres_t, RBGetRingBufferInfo, (IMG Image, cvbval_t lBufferIndex, RINGBUFFER_INFO_CMD lRequestedInformation, double & dInfo))
204
205
206typedef void * NODEMAP;
207
208CVB_DEF_CAPI_X(cvbres_t, NMHGetNodeMap, (IMG Image, NODEMAP & NodeMap))
209
210static const char NMH2_ID_DEVICE[] = "Device"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
211static const char NMH2_ID_FACTORY[] = "TLFactory"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
212static const char NMH2_ID_SYSTEM[] = "TLSystem"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
213static const char NMH2_ID_INTERFACE[] = "TLInterface"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
214static const char NMH2_ID_TLDEVICE[] = "TLDevice"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
215static const char NMH2_ID_DATASTREAM[] = "TLDatastream"; // NOLINT(cppcoreguidelines-avoid-c-arrays)
216
217
218CVB_DEF_CAPI_X(cvbres_t, NMH2GetNum, (IMG Image, size_t & NumNodeMaps))
219CVB_DEF_CAPI_X(cvbres_t, NMH2GetID, (IMG Image, size_t IDIndex, char * IDBuffer, size_t & IDBufferSize))
220CVB_DEF_CAPI_X(cvbres_t, NMH2GetNodeMap, (IMG Image, const char * ID, NODEMAP & NodeMap))
221CVB_DEF_CAPI_X(cvbres_t, NMH2GetDescription, (IMG Image, const char * ID, char * DescBuffer, size_t & DescBufferSize))
222
223
224enum DODiscoverLevel
225{
226 DO_AT_LEVEL_UNKNOWN = 0,
227 DO_AT_LEVEL_SYSTEM = 1,
228 DO_AT_LEVEL_VIN = 2,
229 DO_AT_LEVEL_TLSYSTEM = 3,
230 DO_AT_LEVEL_TLIFACE = 4,
231 DO_AT_LEVEL_TLDEVICE = 5,
232 DO_AT_LEVEL_TLSTREAM = 6
233};
234
235
236enum DODiscoverInfoCommands
237{
238 DO_DISCOVER_INFO_ACCESS_TOKEN = 1000,
239 DO_DISCOVER_INFO_LEVEL,
240 DO_DISCOVER_INFO_INTERFACE_NET_LIST = 2000,
241 DO_DISCOVER_INFO_INTERFACE_NET_MAC,
242 DO_DISCOVER_INFO_INTERFACE_TLTYPE,
243 DO_DISCOVER_INFO_INTERFACE_DISPLAYNAME,
244 DO_DISCOVER_INFO_INTERFACE_DRIVERTYPE,
245 DO_DISCOVER_INFO_INTERFACE_ID,
246 DO_DISCOVER_INFO_DEVICE_TLTYPE = 3000,
247 DO_DISCOVER_INFO_DEVICE_USERNAME,
248 DO_DISCOVER_INFO_DEVICE_SERIALNUMBER,
249 DO_DISCOVER_INFO_DEVICE_NET_MAC,
250 DO_DISCOVER_INFO_DEVICE_NET_IP,
251 DO_DISCOVER_INFO_DEVICE_NET_SUBNETMASK,
252 DO_DISCOVER_INFO_DEVICE_USB_VID,
253 DO_DISCOVER_INFO_DEVICE_USB_PID,
254 DO_DISCOVER_INFO_DEVICE_VENDOR,
255 DO_DISCOVER_INFO_DEVICE_MODEL,
256 DO_DISCOVER_INFO_DEVICE_ID,
257 DO_DISCOVER_INFO_DEVICE_ACCESS_STATUS,
258 DO_DISCOVER_INFO_TRANSPORTLAYER_ID = 4000,
259 DO_DISCOVER_INFO_TRANSPORTLAYER_PATH,
260 DO_DISCOVER_INFO_TRANSPORTLAYER_VENDOR,
261 DO_DISCOVER_INFO_DEVICE_USB_PORT_PATH,
262 DO_DISCOVER_INFO_CUSTOM
263};
264
265
266union DODiscoverFlags
267{
268
269 cvbuint64_t AsUINT;
270 struct Flags
271 {
272
273 cvbuint64_t Partial : 1;
274 cvbuint64_t Depth : 4;
275 cvbuint64_t Reserved : 3;
276 cvbuint64_t IgnoreVINs : 1;
277 cvbuint64_t IgnoreTLs : 1;
278 cvbuint64_t IgnoreSD : 1;
279 cvbuint64_t IgnoreFD : 1;
280 cvbuint64_t IgnoreAccessStatus : 1;
281 cvbuint64_t IncludeMockTL : 1;
282 }
283 AsFlags;
284};
285
286
287enum
288{
289 DO_DISCOVER_FLAG_PARTIAL = 0x1,
290
291 DO_DISCOVER_FLAG_LEVEL_SYSTEM = DO_AT_LEVEL_SYSTEM << 1,
292 DO_DISCOVER_FLAG_LEVEL_VIN = DO_AT_LEVEL_VIN << 1,
293 DO_DISCOVER_FLAG_LEVEL_TL = DO_AT_LEVEL_TLSYSTEM << 1,
294 DO_DISCOVER_FLAG_LEVEL_INTERFACE = DO_AT_LEVEL_TLIFACE << 1,
295 DO_DISCOVER_FLAG_LEVEL_DEVICE = DO_AT_LEVEL_TLDEVICE << 1,
296 DO_DISCOVER_FLAG_LEVEL_STREAM = DO_AT_LEVEL_TLSTREAM << 1,
297
298 DO_DISCOVER_FLAG_IGNORE_VINS = 0x1 << 8,
299 DO_DISCOVER_FLAG_IGNORE_TLS = 0x1 << 9,
300 DO_DISCOVER_FLAG_IGNORE_SD = 0x1 << 10,
301 DO_DISCOVER_FLAG_IGNORE_FD = 0x1 << 11,
302 DO_DISCOVER_FLAG_IGNORE_ACCESS_STATUS = 0x1 << 12,
303 DO_DISCOVER_FLAG_INCLUDE_MOCKTL = 0x1 << 13
304};
305
306typedef void * ATLIST;
307typedef void * DEVOBJ;
308
309CVB_DEF_CAPI_X(cvbres_t, DODiscover, (const char * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout))
310CVB_DEF_CAPI_X(cvbres_t, DODiscoverW, (const wchar_t * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout))
311CVB_DEF_CAPI_X(cvbres_t, DOEntryGetInfo, (ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, char * InfoUtf8, size_t & InfoSize))
312CVB_DEF_CAPI_X(cvbres_t, DOEntryGetInfoW, (ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, wchar_t * Info, size_t & InfoSize))
313CVB_DEF_CAPI_X(cvbres_t, DOGetNumEntries, (ATLIST List, size_t & NumEntries))
314CVB_DEF_CAPI_X(cvbres_t, DOSetParameter, (ATLIST List, size_t Index, const char * Name, const char * Value))
315CVB_DEF_CAPI_X(cvbres_t, DOSetParameterW, (ATLIST List, size_t Index, const wchar_t * Name, const wchar_t * Value))
316CVB_DEF_CAPI_X(cvbres_t, DOSetFeature, (ATLIST List, size_t Index, const char * NodeMapID, const char * Name, const char * Value))
317CVB_DEF_CAPI_X(cvbres_t, DOSetFeatureW, (ATLIST List, size_t Index, const wchar_t * NodeMapID, const wchar_t * Name, const wchar_t * Value))
318
319CVB_DEF_CAPI_X(cvbres_t, LoadDeviceObject, (const char * AccessToken, DEVOBJ & DeviceObject))
320CVB_DEF_CAPI_X(cvbres_t, LoadDeviceObjectW, (const wchar_t * AccessToken, DEVOBJ & DeviceObject))
321
322
323inline cvbres_t DODiscoverTyped(const char * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout)
324{
325 return DODiscover(Seed, Flags, Reserved, List, DiscoverTimeout);
326}
327
328inline cvbres_t DODiscoverTyped(const wchar_t * Seed, cvbuint64_t Flags, cvbuint64_t Reserved, ATLIST & List, size_t DiscoverTimeout)
329{
330 return DODiscoverW(Seed, Flags, Reserved, List, DiscoverTimeout);
331}
332
333inline cvbres_t DOEntryGetInfoTyped(ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, wchar_t * InfoUtf8, size_t & InfoSize)
334{
335 return DOEntryGetInfoW(List, Index, InfoCommand, InfoUtf8, InfoSize);
336}
337
338
339inline cvbres_t DOEntryGetInfoTyped(ATLIST List, size_t Index, DODiscoverInfoCommands InfoCommand, char * InfoUtf8, size_t & InfoSize)
340{
341 return DOEntryGetInfo(List, Index, InfoCommand, InfoUtf8, InfoSize);
342}
343
344
345
346inline cvbres_t DOSetParameterTyped(ATLIST List, size_t Index, const char * Name, const char * Value)
347{
348 return DOSetParameter(List, Index, Name, Value);
349}
350
351inline cvbres_t DOSetParameterTyped(ATLIST List, size_t Index, const wchar_t * Name, const wchar_t * Value)
352{
353 return DOSetParameterW(List, Index, Name, Value);
354}
355
356inline cvbres_t DOSetFeatureTyped(ATLIST List, size_t Index, const char * NodeMapID, const char * Name, const char * Value)
357{
358 return DOSetFeature(List, Index, NodeMapID, Name, Value);
359}
360
361inline cvbres_t DOSetFeatureTyped(ATLIST List, size_t Index, const wchar_t * NodeMapID, const wchar_t * Name, const wchar_t * Value)
362{
363 return DOSetFeatureW(List, Index, NodeMapID, Name, Value);
364}
365
366inline cvbres_t _ppLoadDeviceObjectTyped(const char * AccessToken, DEVOBJ & DeviceObject)
367{
368 return LoadDeviceObject(AccessToken, DeviceObject);
369}
370
371inline cvbres_t _ppLoadDeviceObjectTyped(const wchar_t * AccessToken, DEVOBJ & DeviceObject)
372{
373 return LoadDeviceObjectW(AccessToken, DeviceObject);
374}
375
376
377
378enum CVNotifyInfoCmd
379{
380 CVNO_INFO_COUNT_REGISTERED,
381 CVNO_INFO_COUNT_FIRED,
382 CVNO_INFO_IS_AVAILABLE,
383 NO_INFO_CUSTOM_CMD = 0x10000
384};
385
386typedef cvbval_t CVNotifyInfo_t;
387
388
389enum CVNotifyDatatypes
390{
391 CVNO_DATA_VOID = -1,
392 CVNO_DATA_INTEGER64 = 0,
393 CVNO_DATA_FLOAT64,
394 CVNO_DATA_STRING,
395 CVNO_DATA_BINARY,
396 CVNO_DATA_BOOL8,
397 CVNO_DATA_CUSTOM = 0x10000
398};
399
400
401typedef cvbval_t CVNotifyDatatype_t;
402
403
404enum CVNotifyEventIDs
405{
406 CVNO_REGISTRATION_INVALID = 0,
407 CVNO_EID_ERROR = 1,
408 CVNO_EID_DEVICE_DISCONNECTED = 2,
409 CVNO_EID_DEVICE_RECONNECT = 3,
410 CVNO_EID_GEOMETRY_CHANGE = 4,
411 CVNO_EID_METADATA_CHANGE = 5,
412 CVNO_EID_CUSTOM = 0x10000
413};
414
415typedef cvbval_t CVNotifyEvent_t;
416typedef void(__stdcall *CVBDRIVER_NOTIFY_CB) (CVNotifyEvent_t EventID, void *Buf, size_t Size, CVNotifyDatatype_t DataType, void *UserData);
417
418
419CVB_DEF_CAPI_X(cvbres_t, NORegister, (IMG Image, CVNotifyEvent_t EventID, CVBDRIVER_NOTIFY_CB pCB, void *UserData, intptr_t &Cookie))
420CVB_DEF_CAPI_X(cvbres_t, NOUnregister, (IMG Image, intptr_t Cookie))
421CVB_DEF_CAPI_X(cvbres_t, NOGetNumSupported, (IMG Image, size_t &NumEvents))
422CVB_DEF_CAPI_X(cvbres_t, NOGetDescription, (IMG Image, size_t Index, char *DescriptiveName, size_t &Size, CVNotifyEvent_t &EventID))
423CVB_DEF_CAPI_X(cvbres_t, NOGetStatus, (IMG Image, CVNotifyEvent_t eventID, CVNotifyInfo_t StatusCmd, cvbint64_t &Info))
424CVB_DEF_CAPI_X(cvbres_t, NOIsCookieValid, (IMG Image, intptr_t Cookie, cvbbool_t &IsValid))
425
426
427CVB_DEF_CAPI(cvbres_t, CVDCreateOrGetDeviceObject, (const char* AccessToken, DEVOBJ& DeviceObject))
428CVB_DEF_CAPI(cvbres_t, CVDCreateOrGetDeviceObjectW, (const wchar_t* AccessToken, DEVOBJ& DeviceObject))
429
430inline cvbres_t _ppCVDCreateOrGetDeviceObjectTyped(const char* AccessToken, DEVOBJ& DeviceObject)
431{
432 return _ppCVDCreateOrGetDeviceObject(AccessToken, DeviceObject);
433}
434
435inline cvbres_t _ppCVDCreateOrGetDeviceObjectTyped(const wchar_t* AccessToken, DEVOBJ& DeviceObject)
436{
437 return _ppCVDCreateOrGetDeviceObjectW(AccessToken, DeviceObject);
438}
439
440
441typedef void* CVDSTREAM;
442
443
444CVB_DEF_CAPI(cvbres_t, CVDDeviceGetStreamCount, (DEVOBJ DeviceObject, size_t& Count))
445CVB_DEF_CAPI(cvbres_t, CVDDeviceGetStreamAt, (DEVOBJ DeviceObject, size_t Index, CVDSTREAM& Stream))
446
447
448typedef cvbres_t(__stdcall* CVDReleaseFlowSetPool) (void* Context);
449
450
451struct CVDFlow
452{
453 size_t Size;
454 void* Buffer;
455};
456
457
458struct CVDFlowSet
459{
460 cvbuint32_t Version;
461 size_t NumEntries;
462 CVDFlow* Flows;
463};
464
465
466CVB_DEF_CAPI(cvbres_t, CVDStreamRegisterManagedFlowSetPool, (CVDSTREAM Stream, size_t Count))
467CVB_DEF_CAPI(cvbres_t, CVDStreamRegisterExternalFlowSetPool, (CVDSTREAM Stream, const CVDFlowSet Pool[], size_t PoolSize, CVDReleaseFlowSetPool OnRelease, void* pPrivate))
468CVB_DEF_CAPI(cvbres_t, CVDStreamUnregisterFlowSetPool, (CVDSTREAM Stream))
469CVB_DEF_CAPI(cvbres_t, CVDStreamGetFlowSetCount, (CVDSTREAM Stream, size_t& Count))
470
471
472CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowSetMinCount, (CVDSTREAM Stream, size_t& Count))
473CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowCount, (CVDSTREAM Stream, size_t& Count))
474CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowSize, (CVDSTREAM Stream, size_t FlowIndex, size_t& SizeInBytes))
475CVB_DEF_CAPI(cvbres_t, CVDStreamFlowSetInfoGetFlowAlignment, (CVDSTREAM Stream, size_t FlowIndex, size_t& AlignmentInBytes))
476CVB_DEF_CAPI(cvbbool_t, CVDCanFlowSetInfo, (CVDSTREAM Stream))
477
478
479enum CVDWaitStatus
480{
481 CVDWS_Ok,
482 CVDWS_Canceled,
483 CVDWS_Timeout
484};
485
486
487typedef void* CVCANCELLATIONTOKEN;
488
489
490CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineStart, (CVDSTREAM Stream, cvbint64_t BufferCountToAcquire))
491CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineStop, (CVDSTREAM Stream, cvbint64_t Timeout))
492CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineAbort, (CVDSTREAM Stream))
493CVB_DEF_CAPI(cvbres_t, CVDStreamAcquisitionEngineWaitForNextComposite, (CVDSTREAM Stream, cvbint64_t Timeout, CVCANCELLATIONTOKEN Token, CVDWaitStatus& WaitStatus, CVCOMPOSITE& Composite))
494
495
496CVB_DEF_CAPI(cvbres_t, CVDStreamControlStart, (CVDSTREAM Stream, cvbint64_t FrameCountToAcquire))
497CVB_DEF_CAPI(cvbres_t, CVDStreamControlStop, (CVDSTREAM Stream))
498CVB_DEF_CAPI(cvbres_t, CVDStreamControlAbort, (CVDSTREAM Stream))
499
500
501enum CVDGNDCHeaderInfoCmd
502{
503 CVDGNDCCNTI_VersionMajor = 0,
504 CVDGNDCCNTI_VersionMinor = 1,
505 CVDGNDCCNTI_VersionSubMinor = 2,
506 CVDGNDCCNTI_HeaderType = 6,
507 CVDGNDCCNTI_FlagsValue = 7,
508 CVDGNDCCNTI_HeaderSize = 8,
509 CVDGNDCCNTI_ContainerId = 9,
510 CVDGNDCCNTI_VariableFields = 10,
511 CVDGNDCCNTI_DataSize = 16,
512 CVDGNDCCNTI_DataOffset = 17,
513 CVDGNDCCNTI_DescriptorSize = 18,
514 CVDGNDCCNTI_ComponentCount = 19
515};
516
517enum CVDGNDCComponentInfoCmd
518{
519 CVDGNDCCMPI_ComponentOffset = 0,
520 CVDGNDCCMPI_HeaderType = 1,
521 CVDGNDCCMPI_FlagsValue = 2,
522 CVDGNDCCMPI_HeaderSize = 3,
523 // Reserved values 4-9
524 CVDGNDCCMPI_GroupId = 10,
525 CVDGNDCCMPI_SourceId = 11,
526 CVDGNDCCMPI_RegionId = 12,
527 CVDGNDCCMPI_RegionOffsetX = 13,
528 CVDGNDCCMPI_RegionOffsetY = 14,
529 CVDGNDCCMPI_Timestamp = 15,
530 CVDGNDCCMPI_TypeId = 16,
531 CVDGNDCCMPI_Format = 17,
532 // Reserved values 18-20
533 CVDGNDCCMPI_PartCount = 21,
534};
535
536
537enum CVDGNDCPartInfoCmd
538{
539 CVDGNDCPI_PartOffset = 0,
540 CVDGNDCPI_HeaderType = 1,
541 CVDGNDCPI_FlagsValue = 2,
542 CVDGNDCPI_HeaderSize = 3,
543 CVDGNDCPI_Format = 4,
544 // Reserved values 5-6
545 CVDGNDCPI_FlowId = 7,
546 CVDGNDCPI_FlowOffset = 8,
547 CVDGNDCPI_DataSize = 9,
548 CVDGNDCPI_DataOffset = 10,
549
550 CVDGNDC1DPI_Size = 1000,
551 CVDGNDC1DPI_Padding = 1001,
552 // 1002-1003 reserved
553 CVDGNCDC1DPI_InfoTypeSpecific = 1004,
554
555 CVDGNDC2DPI_SizeX = 2000,
556 CVDGNDC2DPI_SizeY = 2001,
557 CVDGNDC2DPI_PaddingX = 2002,
558 CVDGNDC2DPI_PaddingY = 2003,
559
560 CVDGNDCH264PI_SizeX = 3000,
561 CVDGNDCH264PI_SizeY = 3001,
562 CVDGNDCH264PI_PaddingX = 3002,
563 CVDGNDCH264PI_PaddingY = 3003,
564 // 3004-3005 Reserved
565 CVDGNDCH264PI_ProfileIDC = 3006,
566 CVDGNDCH264PI_H264Flags = 3007,
567 CVDGNDCH264PI_LevelIDC = 3008,
568 CVDGNDCH264PI_SpropInterleavingDepth = 3009,
569 CVDGNDCH264PI_SpropMaxDonDiff = 3010,
570 CVDGNDCH264PI_SpropDeintBufReq = 3011,
571 CVDGNDCH264PI_SpropInitBufTime = 3012
572};
573
574
575struct CVDGenDCPartConfig
576{
577 cvbuint16_t PartType;
578 cvbuint32_t PfncFormat;
579 cvbuint16_t FlowId;
580 cvbuint64_t FlowOffset;
581 cvbuint64_t DataSize;
582};
583
584
585struct CVDGenDCComponentConfig
586{
587 cvbuint32_t TypeId;
588 cvbuint32_t PfncFormat;
589 cvbuint16_t PartCount;
590 CVDGenDCPartConfig* Parts;
591};
592
593
594struct CVDGenDCDescriptorConfig
595{
596 cvbuint32_t ComponentCount;
597 CVDGenDCComponentConfig* Components;
598};
599
600
601typedef void* CVDGNDCDESCRIPTORDATA;
602
603
604CVB_DEF_CAPI(cvbres_t, CVDGNDCCreateDescriptor, (const CVDGenDCDescriptorConfig &Config, CVDGNDCDESCRIPTORDATA &Descriptor))
605CVB_DEF_CAPI(cvbres_t, CVDGNDCSetHeaderInfo, (CVDGNDCDESCRIPTORDATA Descriptor, CVDGNDCHeaderInfoCmd Cmd, size_t InfoSize, const void* Info))
606CVB_DEF_CAPI(cvbres_t, CVDGNDCSetComponentInfo, (CVDGNDCDESCRIPTORDATA Descriptor, CVDGNDCComponentInfoCmd Cmd, size_t InfoSize, const void *Info, size_t ComponentIndex))
607CVB_DEF_CAPI(cvbres_t, CVDGNDCSetPartInfo, (CVDGNDCDESCRIPTORDATA Descriptor, CVDGNDCPartInfoCmd Cmd, size_t InfoSize, const void *Info, size_t ComponentIndex, size_t PartIndex))
608
609
610typedef void* CVDGNDCDESCRIPTOR;
611
612
613CVB_DEF_CAPI(cvbres_t, CVDGNDCGetHeaderInfo, (CVDGNDCDESCRIPTOR Descriptor, CVDGNDCHeaderInfoCmd InfoCmd, size_t& InfoSize, void* Info))
614CVB_DEF_CAPI(cvbres_t, CVDGNDCGetComponentInfo, (CVDGNDCDESCRIPTOR Descriptor, CVDGNDCComponentInfoCmd InfoCmd, size_t& InfoSize, void *Info, size_t ComponentIndex))
615CVB_DEF_CAPI(cvbres_t, CVDGNDCGetPartInfo, (CVDGNDCDESCRIPTOR Descriptor, CVDGNDCPartInfoCmd InfoCmd, size_t& InfoSize, void *Info, size_t ComponentIndex, size_t PartIndex))
616CVB_DEF_CAPI(cvbres_t, CVDGNDCSerialize, (CVDGNDCDESCRIPTOR Descriptor, size_t& BufferSize, void* Buffer))
617
618typedef void *CVDGNDCDESCRIPTORPROVIDER;
619
620CVB_DEF_CAPI(cvbres_t, CVDGNDCPGetDescriptor, (CVDGNDCDESCRIPTORPROVIDER Provider, CVDGNDCDESCRIPTOR &Descriptor))
621CVB_DEF_CAPI(cvbbool_t, CVDCanGenDCDescriptorProvider, (CVDGNDCDESCRIPTORPROVIDER Provider))
622
623}
624
625
626CVB_END_INLINE_NS
627
628
629}
630
@ DataType
Definition spectral.hpp:148
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
WaitStatus
Status after waiting for an image to be returned.
Definition global.hpp:396
@ Timeout
A timeout occurred, no image buffer has been returned.
Definition global.hpp:400