VPI - Vision Programming Interface

1.0 Release

Types.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019 NVIDIA Corporation. All rights reserved.
3  *
4  * NOTICE TO LICENSEE:
5  *
6  * This source code and/or documentation ("Licensed Deliverables") are
7  * subject to NVIDIA intellectual property rights under U.S. and
8  * international Copyright laws.
9  *
10  * These Licensed Deliverables contained herein is PROPRIETARY and
11  * CONFIDENTIAL to NVIDIA and is being provided under the terms and
12  * conditions of a form of NVIDIA software license agreement by and
13  * between NVIDIA and Licensee ("License Agreement") or electronically
14  * accepted by Licensee. Notwithstanding any terms or conditions to
15  * the contrary in the License Agreement, reproduction or disclosure
16  * of the Licensed Deliverables to any third party without the express
17  * written consent of NVIDIA is prohibited.
18  *
19  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
20  * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
21  * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
22  * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
23  * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
24  * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
25  * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
26  * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
27  * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
28  * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
29  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
31  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32  * OF THESE LICENSED DELIVERABLES.
33  *
34  * U.S. Government End Users. These Licensed Deliverables are a
35  * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
36  * 1995), consisting of "commercial computer software" and "commercial
37  * computer software documentation" as such terms are used in 48
38  * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
39  * only as a commercial end item. Consistent with 48 C.F.R.12.212 and
40  * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
41  * U.S. Government End Users acquire the Licensed Deliverables with
42  * only those rights set forth herein.
43  *
44  * Any use of the Licensed Deliverables in individual and commercial
45  * software must include, in the user documentation and internal
46  * comments to the code, the above Disclaimer and U.S. Government End
47  * Users Notice.
48  */
49 
56 #ifndef NV_VPI_TYPES_H
57 #define NV_VPI_TYPES_H
58 
59 #include "ImageFormat.h"
60 #include "Interpolation.h"
61 #include "PixelType.h"
62 #include "Status.h"
63 
64 #include <stdint.h>
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
89 typedef enum
90 {
91  VPI_BACKEND_CPU = (1u << 0),
92  VPI_BACKEND_CUDA = (1u << 1),
93  VPI_BACKEND_PVA = (1u << 2),
94  VPI_BACKEND_VIC = (1u << 3),
95  VPI_BACKEND_INVALID = 0x7FFFFFFF
97 
98 #define VPI_BACKEND_ALL (VPI_BACKEND_CPU | VPI_BACKEND_CUDA | VPI_BACKEND_PVA | VPI_BACKEND_VIC)
100 #define VPI_FLAG_ALL ((1ULL << 32) - 1)
101 
108 typedef void (*VPIParallelTask)(int taskId, int threadId, void *vpiData);
109 
132 typedef void (*VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData);
133 
139 typedef struct
140 {
148 
155 
159  void *userData;
161 
167 typedef void *VPINativeThreadHandle;
168 
173 typedef struct VPIArrayImpl *VPIArray;
174 
179 typedef struct VPIContextImpl *VPIContext;
180 
185 typedef struct VPIEventImpl *VPIEvent;
186 
191 typedef struct VPIStreamImpl *VPIStream;
192 
197 typedef struct VPIImageImpl *VPIImage;
198 
203 typedef struct VPIPyramidImpl *VPIPyramid;
204 
209 typedef struct VPIPayloadImpl *VPIPayload;
210 
217 typedef enum
218 {
224 
229 typedef enum
230 {
237 
242 
246 
254 typedef struct
255 {
256  float x,
257  y;
258 } VPIKeypoint;
259 
284 typedef struct
285 {
286  float mat3[3][3];
288 
304 typedef struct
305 {
307  float width,
310 
315 typedef struct
316 {
319 
326 
333 
336  uint8_t reserved1, reserved2;
339 
344 typedef enum
345 {
349 
360 
364 
369 #define VPI_TERMINATION_CRITERIA_ITERATIONS (1u << 0)
370 #define VPI_TERMINATION_CRITERIA_EPSILON (1u << 1)
386 typedef float VPICameraIntrinsic[2][3];
387 
399 typedef float VPICameraExtrinsic[3][4];
400 
420 typedef float VPIPerspectiveTransform[3][3];
421 
426 typedef enum
427 {
428 
431 
434 
436 
437 #ifdef __cplusplus
438 }
439 #endif
440 
441 #endif /* NV_VPI_TYPES_H */
Defines types and functions to handle image formats.
Defines all interpolation types used in VPI.
Defines types and functions to handle pixel types.
Declaration of VPI status codes handling functions.
struct VPIArrayImpl * VPIArray
A handle to an array.
Definition: Types.h:173
int maxThreads
The maximum number of threads used by the parallel_for implementation code.
Definition: Types.h:147
void * userData
A user defined opaque pointer passed to callback function unaltered.
Definition: Types.h:159
VPIParallelForCallback callback
A pointer to the parallel_for implementation.
Definition: Types.h:154
void(* VPIParallelTask)(int taskId, int threadId, void *vpiData)
Parallel task function pointer type.
Definition: Types.h:108
void * VPINativeThreadHandle
A handle to OS-specific thread handle.
Definition: Types.h:167
struct VPIContextImpl * VPIContext
A handle to a context.
Definition: Types.h:179
void(* VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData)
Parallel for callback function pointer type.
Definition: Types.h:132
Stores the ParallelFor configuration.
Definition: Types.h:140
VPIConversionPolicy
Policy used when converting between image types.
Definition: Types.h:230
@ VPI_CONVERSION_CLAMP
Clamps input to output's type range.
Definition: Types.h:236
@ VPI_CONVERSION_INVALID
Invalid conversion.
Definition: Types.h:244
@ VPI_CONVERSION_CAST
Casts input to the output type.
Definition: Types.h:241
struct VPIEventImpl * VPIEvent
A handle to an event.
Definition: Types.h:185
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:197
int8_t templateStatus
Status of the template related to this bounding box.
Definition: Types.h:332
int8_t trackingStatus
Tracking status of this bounding box.
Definition: Types.h:325
VPIBoundingBox bbox
Bounding box being tracked.
Definition: Types.h:318
uint8_t reserved1
Reserved for future use.
Definition: Types.h:336
Stores a bounding box that is being tracked by KLT Tracker.
Definition: Types.h:316
float VPICameraExtrinsic[3][4]
Camera extrinsic matrix.
Definition: Types.h:399
float VPICameraIntrinsic[2][3]
Camera intrinsic matrix.
Definition: Types.h:386
struct VPIPayloadImpl * VPIPayload
A handle to an algorithm payload.
Definition: Types.h:209
float VPIPerspectiveTransform[3][3]
Represents a 2D perspective transform.
Definition: Types.h:420
struct VPIPyramidImpl * VPIPyramid
A handle to an image pyramid.
Definition: Types.h:203
struct VPIStreamImpl * VPIStream
A handle to a stream.
Definition: Types.h:191
VPIBackend
VPI Backend types.
Definition: Types.h:90
@ VPI_BACKEND_CUDA
CUDA backend.
Definition: Types.h:92
@ VPI_BACKEND_PVA
PVA backend.
Definition: Types.h:93
@ VPI_BACKEND_VIC
VIC backend.
Definition: Types.h:94
@ VPI_BACKEND_INVALID
Invalid backend.
Definition: Types.h:95
@ VPI_BACKEND_CPU
CPU backend.
Definition: Types.h:91
float width
Bounding box width.
Definition: Types.h:307
float y
Keypoint's y coordinate.
Definition: Types.h:257
float height
Bounding box height.
Definition: Types.h:308
VPIHomographyTransform2D xform
Defines the bounding box top left corner and its homography.
Definition: Types.h:306
float x
Keypoint's x coordinate.
Definition: Types.h:256
VPIBorderExtension
Image border extension specify how pixel values outside of the image domain should be constructed.
Definition: Types.h:218
VPIEventState
Defines the states of the event.
Definition: Types.h:427
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:345
@ VPI_BORDER_ZERO
All pixels outside the image are considered to be zero.
Definition: Types.h:219
@ VPI_BORDER_CLAMP
Border pixels are repeated indefinitely.
Definition: Types.h:220
@ VPI_BORDER_MIRROR
dedcb|abcde|dcbab
Definition: Types.h:222
@ VPI_BORDER_REFLECT
edcba|abcde|edcba
Definition: Types.h:221
@ VPI_EVENT_STATE_NOT_SIGNALED
Event is not signaled yet.
Definition: Types.h:430
@ VPI_EVENT_STATE_SIGNALED
Event has been signaled.
Definition: Types.h:433
@ VPI_LOCK_WRITE
Lock memory only for writing.
Definition: Types.h:359
@ VPI_LOCK_READ_WRITE
Lock memory for reading and writing.
Definition: Types.h:362
@ VPI_LOCK_READ
Lock memory only for reading.
Definition: Types.h:348
Stores a generic 2D bounding box.
Definition: Types.h:305
Stores a generic 2D homography transform.
Definition: Types.h:285
Stores a keypoint coordinate.
Definition: Types.h:255