VPI - Vision Programming Interface

3.1 Release

Types.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2024 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 
319 typedef struct
320 {
321  float x;
322  float y;
323  float octave;
324  float layer;
326 
333 typedef struct
334 {
335  float x;
336  float y;
338 
345 typedef struct
346 {
347  uint32_t x;
348  uint32_t y;
350 
354 typedef enum
355 {
359 
363 #define VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH 32
364 
368 #define VPI_BRIEF_DESCRIPTOR_BIT_WIDTH (VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH * 8)
369 
373 typedef struct
374 {
378 
403 typedef struct
404 {
405  float mat3[3][3];
407 
423 typedef struct
424 {
426  float width,
429 
435 typedef struct
436 {
437  float left;
438  float top;
439  float width;
440  float height;
442 
444 typedef enum
445 {
455 
462 
472 
482 
487 typedef struct
488 {
491 
498 
505 
508  uint8_t reserved1, reserved2;
511 
515 typedef struct
516 {
519 
522 
526  int32_t seqIndex;
527 
530  float filterLR;
531 
535 
539  void *userData;
541 
547 typedef struct
548 {
550  float mean[4];
551 
553  float covariance[4][4];
554 
556  int32_t pixelCount;
557 
559  float sum[4];
560 
561 } VPIStats;
562 
566 #define VPI_MAX_MATCHES_PER_DESCRIPTOR (3)
567 
573 typedef struct
574 {
577 
580 
581 } VPIMatches;
582 
587 typedef struct VPIRectangleIRec
588 {
589  int32_t x, y; /*< Rectangle origin position (x, y). */
590  int32_t width, height; /*< Rectangle size dimensions (width, height). */
591 } VPIRectangleI;
592 
597 typedef enum
598 {
601 
604 
608 
613 typedef enum
614 {
618 
629 
633 
638 #define VPI_TERMINATION_CRITERIA_ITERATIONS (1u << 0)
639 #define VPI_TERMINATION_CRITERIA_EPSILON (1u << 1)
655 typedef float VPICameraIntrinsic[2][3];
656 
668 typedef float VPICameraExtrinsic[3][4];
669 
689 typedef float VPIPerspectiveTransform[3][3];
690 
695 typedef enum
696 {
699 
702 
704 
708 typedef enum
709 {
711  VPI_FLIP_HORIZ = 1U << 0,
712 
714  VPI_FLIP_VERT = 1U << 1,
715 
720 
722 
726 typedef enum
727 {
730 
733 
736 
738 
742 typedef enum
743 {
746 
750 
755 #define VPI_STAT_PIXEL_COUNT (1U << 0)
756 
758 #define VPI_STAT_SUM (1U << 1)
759 
761 #define VPI_STAT_MEAN ((1U << 2) | VPI_STAT_SUM | VPI_STAT_PIXEL_COUNT)
762 
764 #define VPI_STAT_VARIANCE ((1U << 3) | VPI_STAT_MEAN)
765 
767 #define VPI_STAT_COVARIANCE ((1U << 4) | VPI_STAT_VARIANCE)
768 
769 #ifdef __cplusplus
770 }
771 #endif
772 
773 #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:363
VPIGradientMethod
Different method to generate gradients.
Definition: Types.h:743
@ VPI_GRADIENT_SOBEL
Generate the gradient in x direction and y direction via sobel operator.
Definition: Types.h:745
@ VPI_GRADIENT_BLUR_PREWITT
Generate the gradient by using prewitt operator on blurred input image.
Definition: Types.h:748
#define VPI_MAX_MATCHES_PER_DESCRIPTOR
Maximum number of matches per descriptor.
Definition: Types.h:566
VPITrackingState
Object tracking state.
Definition: Types.h:445
@ VPI_TRACKING_STATE_LOST
Object isn't being tracked anymore.
Definition: Types.h:454
@ VPI_TRACKING_STATE_SHADOW_TRACKED
Object is being tracked with low confidence.
Definition: Types.h:480
@ VPI_TRACKING_STATE_TRACKED
Object is being tracked with high confidence.
Definition: Types.h:471
@ VPI_TRACKING_STATE_NEW
New object to be tracked.
Definition: Types.h:461
VPINormType
Defines the magnitude of vectors.
Definition: Types.h:727
@ VPI_NORM_L2
L2 norm.
Definition: Types.h:732
@ VPI_NORM_HAMMING
Hamming norm.
Definition: Types.h:735
@ VPI_NORM_L1
L1 norm.
Definition: Types.h:729
VPICornerScore
Defines different types of corner scores.
Definition: Types.h:355
@ VPI_CORNER_SCORE_FAST
Use FAST corner scores.
Definition: Types.h:357
@ VPI_CORNER_SCORE_HARRIS
Use Harris response corner scores.
Definition: Types.h:356
VPIFlipMode
Defines image flip directions.
Definition: Types.h:709
@ VPI_FLIP_HORIZ
Flip horizontally.
Definition: Types.h:711
@ VPI_FLIP_VERT
Flip vertically.
Definition: Types.h:714
@ VPI_FLIP_BOTH
Flip horizontally and vertically.
Definition: Types.h:719
Stores a BRIEF Descriptor.
Definition: Types.h:374
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:521
void * userData
Pointer to some unspecified user data.
Definition: Types.h:539
float filterChannelWeightsLR
Learning rate for weights of different feature channels in DCF.
Definition: Types.h:534
float filterLR
Learning rate for DCF filter in exponential moving average.
Definition: Types.h:530
VPIAxisAlignedBoundingBoxF32 bbox
Bounding box around the object being tracked.
Definition: Types.h:518
int32_t seqIndex
Index of the input sequence where the tracked object is in.
Definition: Types.h:526
Stores information about an object tracked by DCF Tracker.
Definition: Types.h:516
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:504
int8_t trackingStatus
Tracking status of this bounding box.
Definition: Types.h:497
VPIBoundingBox bbox
Bounding box being tracked.
Definition: Types.h:490
uint8_t reserved1
Reserved for future use.
Definition: Types.h:508
Stores a bounding box that is being tracked by KLT Tracker.
Definition: Types.h:488
float VPICameraExtrinsic[3][4]
Camera extrinsic matrix.
Definition: Types.h:668
float VPICameraIntrinsic[2][3]
Camera intrinsic matrix.
Definition: Types.h:655
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:689
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:556
float width
Bounding box width.
Definition: Types.h:426
float left
Defines the bounding box's left corner's coordinate.
Definition: Types.h:437
float top
Defines the bounding box's top corner's coordinate.
Definition: Types.h:438
float height
Bounding box height.
Definition: Types.h:440
float layer
Pyramid layer within the octave where the keypoint is located.
Definition: Types.h:324
float octave
Pyramid octave (or pyramid level) where the keypoint is located.
Definition: Types.h:323
float y
Keypoint's y coordinate.
Definition: Types.h:322
float width
Bounding box width.
Definition: Types.h:439
uint32_t y
Keypoint's y coordinate.
Definition: Types.h:348
float x
Keypoint's x coordinate.
Definition: Types.h:321
float height
Bounding box height.
Definition: Types.h:427
VPIHomographyTransform2D xform
Defines the bounding box top left corner and its homography.
Definition: Types.h:425
float x
Keypoint's x coordinate.
Definition: Types.h:335
float y
Keypoint's y coordinate.
Definition: Types.h:336
uint32_t x
Keypoint's x coordinate.
Definition: Types.h:347
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:696
VPIOpticalFlowQuality
Defines the quality of the optical flow algorithm.
Definition: Types.h:598
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:614
@ 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:698
@ VPI_EVENT_STATE_SIGNALED
Event has been signaled.
Definition: Types.h:701
@ VPI_OPTICAL_FLOW_QUALITY_LOW
Fast but low quality optical flow implementation.
Definition: Types.h:600
@ VPI_OPTICAL_FLOW_QUALITY_HIGH
Slow but high quality optical flow implementation.
Definition: Types.h:606
@ 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:603
@ VPI_LOCK_WRITE
Lock memory only for writing.
Definition: Types.h:628
@ VPI_LOCK_READ_WRITE
Lock memory for reading and writing.
Definition: Types.h:631
@ VPI_LOCK_READ
Lock memory only for reading.
Definition: Types.h:617
Stores an axis-aligned 32-bit floating point 2D bounding box.
Definition: Types.h:436
Stores a generic 2D bounding box.
Definition: Types.h:424
Stores a generic 2D homography transform.
Definition: Types.h:404
Stores a float32 keypoint coordinate The coordinate is relative to the top-left corner of an image.
Definition: Types.h:334
Stores a U32 keypoint coordinate The coordinate is relative to the top-left corner of an image.
Definition: Types.h:346
Stores the matches between 2 descriptors.
Definition: Types.h:574
Stores a float32 pyramidal-based keypoint coordinate The coordinate includes the (x,...
Definition: Types.h:320
Stores the geometric information of a rectangle.
Definition: Types.h:588
Stores the statistics of an image.
Definition: Types.h:548