VPI - Vision Programming Interface

3.0 Release

Types.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2023 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 = (1ULL << 0),
93  VPI_BACKEND_CUDA = (1ULL << 1),
94  VPI_BACKEND_PVA = (1ULL << 2),
95  VPI_BACKEND_VIC = (1ULL << 3),
96  VPI_BACKEND_NVENC = (1ULL << 4),
97  VPI_BACKEND_OFA = (1ULL << 5),
98  VPI_BACKEND_INVALID = (1ULL << 15)
100 
102 #define VPI_BACKEND_TEGRA (VPI_BACKEND_VIC | VPI_BACKEND_NVENC | VPI_BACKEND_OFA)
103 
104 #define VPI_BACKEND_MASK ((VPI_BACKEND_INVALID << 1) - 1)
105 
107 #define VPI_BACKEND_ALL \
108  (VPI_BACKEND_CPU | VPI_BACKEND_CUDA | VPI_BACKEND_PVA | VPI_BACKEND_VIC | VPI_BACKEND_NVENC | VPI_BACKEND_OFA)
109 
136 #define VPI_EXCLUSIVE_STREAM_ACCESS (1ULL << 16)
137 
146 #define VPI_RESTRICT_MEM_USAGE (1ULL << 17)
147 
159 #define VPI_REQUIRE_BACKENDS (1ULL << 18)
160 
167 typedef void (*VPIParallelTask)(int taskId, int threadId, void *vpiData);
168 
191 typedef void (*VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData);
192 
198 typedef struct
199 {
207 
214 
218  void *userData;
220 
226 typedef void *VPINativeThreadHandle;
227 
232 typedef struct VPIArrayImpl *VPIArray;
233 
238 typedef struct VPIContextImpl *VPIContext;
239 
244 typedef struct VPIEventImpl *VPIEvent;
245 
250 typedef struct VPIStreamImpl *VPIStream;
251 
256 typedef struct VPIImageImpl *VPIImage;
257 
262 typedef struct VPIPyramidImpl *VPIPyramid;
263 
268 typedef struct VPIPayloadImpl *VPIPayload;
269 
276 typedef enum
277 {
285 
290 typedef enum
291 {
298 
303 
307 
314 typedef struct
315 {
316  float x;
317  float y;
319 
326 typedef struct
327 {
328  uint32_t x;
329  uint32_t y;
331 
335 typedef enum
336 {
340 
344 #define VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH 32
345 
349 #define VPI_BRIEF_DESCRIPTOR_BIT_WIDTH (VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH * 8)
350 
354 typedef struct
355 {
356  uint8_t data[VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH];
358 
383 typedef struct
384 {
385  float mat3[3][3];
387 
403 typedef struct
404 {
406  float width,
409 
415 typedef struct
416 {
417  float left;
418  float top;
419  float width;
420  float height;
422 
424 typedef enum
425 {
435 
442 
452 
462 
467 typedef struct
468 {
471 
478 
485 
488  uint8_t reserved1, reserved2;
491 
495 typedef struct
496 {
499 
502 
504  int32_t seqIndex;
505 
508  float filterLR;
509 
513 
517  void *userData;
519 
525 typedef struct
526 {
528  float mean[4];
529 
531  float covariance[4][4];
532 
534  int32_t pixelCount;
535 
537  float sum[4];
538 
539 } VPIStats;
540 
544 #define VPI_MAX_MATCHES_PER_DESCRIPTOR (3)
545 
551 typedef struct
552 {
555 
558 
559 } VPIMatches;
560 
565 typedef struct VPIRectangleIRec
566 {
567  int32_t x, y; /*< Rectangle origin position (x, y). */
568  int32_t width, height; /*< Rectangle size dimensions (width, height). */
569 } VPIRectangleI;
570 
575 typedef enum
576 {
579 
582 
586 
591 typedef enum
592 {
596 
607 
611 
616 #define VPI_TERMINATION_CRITERIA_ITERATIONS (1u << 0)
617 #define VPI_TERMINATION_CRITERIA_EPSILON (1u << 1)
633 typedef float VPICameraIntrinsic[2][3];
634 
646 typedef float VPICameraExtrinsic[3][4];
647 
667 typedef float VPIPerspectiveTransform[3][3];
668 
673 typedef enum
674 {
677 
680 
682 
686 typedef enum
687 {
689  VPI_FLIP_HORIZ = 1U << 0,
690 
692  VPI_FLIP_VERT = 1U << 1,
693 
698 
700 
704 typedef enum
705 {
708 
711 
714 
716 
720 typedef enum
721 {
724 
728 
733 #define VPI_STAT_PIXEL_COUNT (1U << 0)
734 
736 #define VPI_STAT_SUM (1U << 1)
737 
739 #define VPI_STAT_MEAN ((1U << 2) | VPI_STAT_SUM | VPI_STAT_PIXEL_COUNT)
740 
742 #define VPI_STAT_VARIANCE ((1U << 3) | VPI_STAT_MEAN)
743 
745 #define VPI_STAT_COVARIANCE ((1U << 4) | VPI_STAT_VARIANCE)
746 
747 #ifdef __cplusplus
748 }
749 #endif
750 
751 #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.
#define VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH
Length of Brief Descriptor Array.
Definition: Types.h:344
VPIGradientMethod
Different method to generate gradients.
Definition: Types.h:721
@ VPI_GRADIENT_SOBEL
Generate the gradient in x direction and y direction via sobel operator.
Definition: Types.h:723
@ VPI_GRADIENT_BLUR_PREWITT
Generate the gradient by using prewitt operator on blurred input image.
Definition: Types.h:726
#define VPI_MAX_MATCHES_PER_DESCRIPTOR
Maximum number of matches per descriptor.
Definition: Types.h:544
VPITrackingState
Object tracking state.
Definition: Types.h:425
@ VPI_TRACKING_STATE_LOST
Object isn't being tracked anymore.
Definition: Types.h:434
@ VPI_TRACKING_STATE_SHADOW_TRACKED
Object is being tracked with low confidence.
Definition: Types.h:460
@ VPI_TRACKING_STATE_TRACKED
Object is being tracked with high confidence.
Definition: Types.h:451
@ VPI_TRACKING_STATE_NEW
New object to be tracked.
Definition: Types.h:441
VPINormType
Defines the magnitude of vectors.
Definition: Types.h:705
@ VPI_NORM_L2
L2 norm.
Definition: Types.h:710
@ VPI_NORM_HAMMING
Hamming norm.
Definition: Types.h:713
@ VPI_NORM_L1
L1 norm.
Definition: Types.h:707
VPICornerScore
Defines different types of corner scores.
Definition: Types.h:336
@ VPI_CORNER_SCORE_FAST
Use FAST corner scores.
Definition: Types.h:338
@ VPI_CORNER_SCORE_HARRIS
Use Harris response corner scores.
Definition: Types.h:337
VPIFlipMode
Defines image flip directions.
Definition: Types.h:687
@ VPI_FLIP_HORIZ
Flip horizontally.
Definition: Types.h:689
@ VPI_FLIP_VERT
Flip vertically.
Definition: Types.h:692
@ VPI_FLIP_BOTH
Flip horizontally and vertically.
Definition: Types.h:697
Stores a BRIEF Descriptor.
Definition: Types.h:355
Functions and structures for handling VPI library version.
struct VPIArrayImpl * VPIArray
A handle to an array.
Definition: Types.h:232
int maxThreads
The maximum number of threads used by the parallel_for implementation code.
Definition: Types.h:206
void * userData
A user defined opaque pointer passed to callback function unaltered.
Definition: Types.h:218
VPIParallelForCallback callback
A pointer to the parallel_for implementation.
Definition: Types.h:213
void(* VPIParallelTask)(int taskId, int threadId, void *vpiData)
Parallel task function pointer type.
Definition: Types.h:167
void * VPINativeThreadHandle
A handle to OS-specific thread handle.
Definition: Types.h:226
struct VPIContextImpl * VPIContext
A handle to a context.
Definition: Types.h:238
void(* VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData)
Parallel for callback function pointer type.
Definition: Types.h:191
Stores the ParallelFor configuration.
Definition: Types.h:199
VPIConversionPolicy
Policy used when converting between image types.
Definition: Types.h:291
@ VPI_CONVERSION_CLAMP
Clamps input to output's type range.
Definition: Types.h:297
@ VPI_CONVERSION_INVALID
Invalid conversion.
Definition: Types.h:305
@ VPI_CONVERSION_CAST
Casts input to the output type.
Definition: Types.h:302
VPITrackingState state
Tracking status of this bounding box.
Definition: Types.h:501
void * userData
Pointer to some unspecified user data.
Definition: Types.h:517
float filterChannelWeightsLR
Learning rate for weights of different feature channels in DCF.
Definition: Types.h:512
float filterLR
Learning rate for DCF filter in exponential moving average.
Definition: Types.h:508
VPIAxisAlignedBoundingBoxF32 bbox
Bounding box around the object being tracked.
Definition: Types.h:498
int32_t seqIndex
Index of the input sequence where the tracked object is in.
Definition: Types.h:504
Stores information about an object tracked by DCF Tracker.
Definition: Types.h:496
struct VPIEventImpl * VPIEvent
A handle to an event.
Definition: Types.h:244
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:256
int8_t templateStatus
Status of the template related to this bounding box.
Definition: Types.h:484
int8_t trackingStatus
Tracking status of this bounding box.
Definition: Types.h:477
VPIBoundingBox bbox
Bounding box being tracked.
Definition: Types.h:470
uint8_t reserved1
Reserved for future use.
Definition: Types.h:488
Stores a bounding box that is being tracked by KLT Tracker.
Definition: Types.h:468
float VPICameraExtrinsic[3][4]
Camera extrinsic matrix.
Definition: Types.h:646
float VPICameraIntrinsic[2][3]
Camera intrinsic matrix.
Definition: Types.h:633
struct VPIPayloadImpl * VPIPayload
A handle to an algorithm payload.
Definition: Types.h:268
float VPIPerspectiveTransform[3][3]
Represents a 2D perspective transform.
Definition: Types.h:667
struct VPIPyramidImpl * VPIPyramid
A handle to an image pyramid.
Definition: Types.h:262
struct VPIStreamImpl * VPIStream
A handle to a stream.
Definition: Types.h:250
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_OFA
OFA backend.
Definition: Types.h:97
@ VPI_BACKEND_VIC
VIC backend.
Definition: Types.h:95
@ VPI_BACKEND_INVALID
Invalid backend.
Definition: Types.h:98
@ VPI_BACKEND_CPU
CPU backend.
Definition: Types.h:92
int32_t pixelCount
Total pixel count.
Definition: Types.h:534
float width
Bounding box width.
Definition: Types.h:406
float left
Defines the bounding box's left corner's coordinate.
Definition: Types.h:417
float top
Defines the bounding box's top corner's coordinate.
Definition: Types.h:418
float height
Bounding box height.
Definition: Types.h:420
float width
Bounding box width.
Definition: Types.h:419
uint32_t y
Keypoint's y coordinate.
Definition: Types.h:329
float height
Bounding box height.
Definition: Types.h:407
VPIHomographyTransform2D xform
Defines the bounding box top left corner and its homography.
Definition: Types.h:405
float x
Keypoint's x coordinate.
Definition: Types.h:316
float y
Keypoint's y coordinate.
Definition: Types.h:317
uint32_t x
Keypoint's x coordinate.
Definition: Types.h:328
VPIBorderExtension
Image border extension specify how pixel values outside of the image domain should be constructed.
Definition: Types.h:277
VPIEventState
Defines the states of the event.
Definition: Types.h:674
VPIOpticalFlowQuality
Defines the quality of the optical flow algorithm.
Definition: Types.h:576
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:592
@ VPI_BORDER_INVALID
Invalid border.
Definition: Types.h:283
@ VPI_BORDER_ZERO
All pixels outside the image are considered to be zero.
Definition: Types.h:278
@ VPI_BORDER_LIMITED
Consider image as limited to not access outside pixels.
Definition: Types.h:282
@ VPI_BORDER_CLAMP
Border pixels are repeated indefinitely.
Definition: Types.h:279
@ VPI_BORDER_MIRROR
dedcb|abcde|dcbab
Definition: Types.h:281
@ VPI_BORDER_REFLECT
edcba|abcde|edcba
Definition: Types.h:280
@ VPI_EVENT_STATE_NOT_SIGNALED
Event is not signaled yet.
Definition: Types.h:676
@ VPI_EVENT_STATE_SIGNALED
Event has been signaled.
Definition: Types.h:679
@ VPI_OPTICAL_FLOW_QUALITY_LOW
Fast but low quality optical flow implementation.
Definition: Types.h:578
@ VPI_OPTICAL_FLOW_QUALITY_HIGH
Slow but high quality optical flow implementation.
Definition: Types.h:584
@ 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:581
@ VPI_LOCK_WRITE
Lock memory only for writing.
Definition: Types.h:606
@ VPI_LOCK_READ_WRITE
Lock memory for reading and writing.
Definition: Types.h:609
@ VPI_LOCK_READ
Lock memory only for reading.
Definition: Types.h:595
Stores an axis-aligned 32-bit floating point 2D bounding box.
Definition: Types.h:416
Stores a generic 2D bounding box.
Definition: Types.h:404
Stores a generic 2D homography transform.
Definition: Types.h:384
Stores a float32 keypoint coordinate The coordinate is relative to the top-left corner of an image.
Definition: Types.h:315
Stores a U32 keypoint coordinate The coordinate is relative to the top-left corner of an image.
Definition: Types.h:327
Stores the matches between 2 descriptors.
Definition: Types.h:552
Stores the geometric information of a rectangle.
Definition: Types.h:566
Stores the statistics of an image.
Definition: Types.h:526