VPI - Vision Programming Interface

1.2 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 #include "Version.h"
64 
65 #include <stdint.h>
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
90 typedef enum
91 {
92  VPI_BACKEND_CPU = (1u << 0),
93  VPI_BACKEND_CUDA = (1u << 1),
94  VPI_BACKEND_PVA = (1u << 2),
95  VPI_BACKEND_VIC = (1u << 3),
96  VPI_BACKEND_NVENC = (1u << 4),
97  VPI_BACKEND_INVALID = 0x7FFFFFFF
99 
101 #define VPI_BACKEND_TEGRA (VPI_BACKEND_PVA | VPI_BACKEND_VIC | VPI_BACKEND_NVENC)
102 
104 #define VPI_BACKEND_ALL (VPI_BACKEND_CPU | VPI_BACKEND_CUDA | VPI_BACKEND_PVA | VPI_BACKEND_VIC | VPI_BACKEND_NVENC)
105 
106 #define VPI_FLAG_ALL ((1ULL << 32) - 1)
107 
120 #define VPI_EXCLUSIVE_STREAM_ACCESS (1u << 30)
121 
126 typedef void (*VPIParallelTask)(int taskId, int threadId, void *vpiData);
127 
150 typedef void (*VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData);
151 
157 typedef struct
158 {
166 
173 
177  void *userData;
179 
185 typedef void *VPINativeThreadHandle;
186 
191 typedef struct VPIArrayImpl *VPIArray;
192 
197 typedef struct VPIContextImpl *VPIContext;
198 
203 typedef struct VPIEventImpl *VPIEvent;
204 
209 typedef struct VPIStreamImpl *VPIStream;
210 
215 typedef struct VPIImageImpl *VPIImage;
216 
221 typedef struct VPIPyramidImpl *VPIPyramid;
222 
227 typedef struct VPIPayloadImpl *VPIPayload;
228 
235 typedef enum
236 {
241  VPI_BORDER_INVALID = 255,
243 
248 typedef enum
249 {
256 
261 
265 
273 typedef struct
274 {
275  float x,
276  y;
277 } VPIKeypoint;
278 
303 typedef struct
304 {
305  float mat3[3][3];
307 
323 typedef struct
324 {
326  float width,
329 
334 typedef struct
335 {
338 
345 
352 
355  uint8_t reserved1, reserved2;
358 
363 typedef enum
364 {
367 
370 
374 
379 typedef enum
380 {
384 
395 
399 
404 #define VPI_TERMINATION_CRITERIA_ITERATIONS (1u << 0)
405 #define VPI_TERMINATION_CRITERIA_EPSILON (1u << 1)
421 typedef float VPICameraIntrinsic[2][3];
422 
434 typedef float VPICameraExtrinsic[3][4];
435 
455 typedef float VPIPerspectiveTransform[3][3];
456 
461 typedef enum
462 {
463 
466 
469 
471 
472 #ifdef __cplusplus
473 }
474 #endif
475 
476 #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.
Functions and structures for handling VPI library version.
struct VPIArrayImpl * VPIArray
A handle to an array.
Definition: Types.h:191
int maxThreads
The maximum number of threads used by the parallel_for implementation code.
Definition: Types.h:165
void * userData
A user defined opaque pointer passed to callback function unaltered.
Definition: Types.h:177
VPIParallelForCallback callback
A pointer to the parallel_for implementation.
Definition: Types.h:172
void(* VPIParallelTask)(int taskId, int threadId, void *vpiData)
Parallel task function pointer type.
Definition: Types.h:126
void * VPINativeThreadHandle
A handle to OS-specific thread handle.
Definition: Types.h:185
struct VPIContextImpl * VPIContext
A handle to a context.
Definition: Types.h:197
void(* VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData)
Parallel for callback function pointer type.
Definition: Types.h:150
Stores the ParallelFor configuration.
Definition: Types.h:158
VPIConversionPolicy
Policy used when converting between image types.
Definition: Types.h:249
@ VPI_CONVERSION_CLAMP
Clamps input to output's type range.
Definition: Types.h:255
@ VPI_CONVERSION_INVALID
Invalid conversion.
Definition: Types.h:263
@ VPI_CONVERSION_CAST
Casts input to the output type.
Definition: Types.h:260
struct VPIEventImpl * VPIEvent
A handle to an event.
Definition: Types.h:203
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:215
int8_t templateStatus
Status of the template related to this bounding box.
Definition: Types.h:351
int8_t trackingStatus
Tracking status of this bounding box.
Definition: Types.h:344
VPIBoundingBox bbox
Bounding box being tracked.
Definition: Types.h:337
uint8_t reserved1
Reserved for future use.
Definition: Types.h:355
Stores a bounding box that is being tracked by KLT Tracker.
Definition: Types.h:335
float VPICameraExtrinsic[3][4]
Camera extrinsic matrix.
Definition: Types.h:434
float VPICameraIntrinsic[2][3]
Camera intrinsic matrix.
Definition: Types.h:421
struct VPIPayloadImpl * VPIPayload
A handle to an algorithm payload.
Definition: Types.h:227
float VPIPerspectiveTransform[3][3]
Represents a 2D perspective transform.
Definition: Types.h:455
struct VPIPyramidImpl * VPIPyramid
A handle to an image pyramid.
Definition: Types.h:221
struct VPIStreamImpl * VPIStream
A handle to a stream.
Definition: Types.h:209
VPIBackend
VPI Backend types.
Definition: Types.h:91
@ VPI_BACKEND_CUDA
CUDA backend.
Definition: Types.h:93
@ VPI_BACKEND_PVA
PVA backend.
Definition: Types.h:94
@ VPI_BACKEND_NVENC
NVENC backend.
Definition: Types.h:96
@ VPI_BACKEND_VIC
VIC backend.
Definition: Types.h:95
@ VPI_BACKEND_INVALID
Invalid backend.
Definition: Types.h:97
@ VPI_BACKEND_CPU
CPU backend.
Definition: Types.h:92
float width
Bounding box width.
Definition: Types.h:326
float y
Keypoint's y coordinate.
Definition: Types.h:276
float height
Bounding box height.
Definition: Types.h:327
VPIHomographyTransform2D xform
Defines the bounding box top left corner and its homography.
Definition: Types.h:325
float x
Keypoint's x coordinate.
Definition: Types.h:275
VPIBorderExtension
Image border extension specify how pixel values outside of the image domain should be constructed.
Definition: Types.h:236
VPIEventState
Defines the states of the event.
Definition: Types.h:462
VPIOpticalFlowQuality
Defines the quality of the optical flow algorithm.
Definition: Types.h:364
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:380
@ VPI_BORDER_ZERO
All pixels outside the image are considered to be zero.
Definition: Types.h:237
@ VPI_BORDER_CLAMP
Border pixels are repeated indefinitely.
Definition: Types.h:238
@ VPI_BORDER_MIRROR
dedcb|abcde|dcbab
Definition: Types.h:240
@ VPI_BORDER_REFLECT
edcba|abcde|edcba
Definition: Types.h:239
@ VPI_EVENT_STATE_NOT_SIGNALED
Event is not signaled yet.
Definition: Types.h:465
@ VPI_EVENT_STATE_SIGNALED
Event has been signaled.
Definition: Types.h:468
@ VPI_OPTICAL_FLOW_QUALITY_LOW
Fast but low quality optical flow implementation.
Definition: Types.h:366
@ VPI_OPTICAL_FLOW_QUALITY_HIGH
Slow but high quality optical flow implementation.
Definition: Types.h:372
@ VPI_OPTICAL_FLOW_QUALITY_MEDIUM
Speed and quality in between of VPI_OPTICAL_FLOW_QUALITY_LOW and VPI_OPTICAL_FLOW_QUALITY_HIGH.
Definition: Types.h:369
@ VPI_LOCK_WRITE
Lock memory only for writing.
Definition: Types.h:394
@ VPI_LOCK_READ_WRITE
Lock memory for reading and writing.
Definition: Types.h:397
@ VPI_LOCK_READ
Lock memory only for reading.
Definition: Types.h:383
Stores a generic 2D bounding box.
Definition: Types.h:324
Stores a generic 2D homography transform.
Definition: Types.h:304
Stores a keypoint coordinate.
Definition: Types.h:274