VPI - Vision Programming Interface

3.0 Release

Image.h
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 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_IMAGE_H
57 #define NV_VPI_IMAGE_H
58 
59 #include "Export.h"
60 #include "ImageFormat.h"
61 #include "PixelType.h"
62 #include "Status.h"
63 #include "Types.h"
64 
65 #include <stdint.h>
66 
106 #ifdef __cplusplus
107 extern "C" {
108 #endif
109 
111 typedef struct VPIImagePlanePitchLinearRec
112 {
116 
119  int32_t width;
120 
123  int32_t height;
124 
134  int32_t pitchBytes;
135 
141  void *data;
142 
144 
146 #define VPI_MAX_PLANE_COUNT (6)
147 
149 typedef struct VPIImageBufferPitchLinearRec
150 {
153 
156  int32_t numPlanes;
157 
161 
163 
165 typedef enum
166 {
170 
173 
176 
181 
186 
195 
197 
198 typedef void *EGLImageKHR;
199 typedef struct cudaArray *cudaArray_t;
200 
203 typedef union VPIImageBufferRec
204 {
211 
216  cudaArray_t cudaarray;
217 
222  EGLImageKHR egl;
223 
228  int fd;
229 
231 
233 typedef struct VPIImageDataRec
234 {
239 
242 
243 } VPIImageData;
244 
284 VPI_PUBLIC VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img);
285 
293 typedef struct
294 {
300 
313 
353 VPI_PUBLIC VPIStatus vpiImageCreateView(VPIImage imgParent, const VPIRectangleI *clipBounds, uint64_t flags,
354  VPIImage *imgView);
355 
388 VPI_PUBLIC VPIStatus vpiImageSetView(VPIImage view, VPIImage parent, const VPIRectangleI *clipBounds);
389 
445  uint64_t flags, VPIImage *img);
446 
475 VPI_PUBLIC VPIStatus vpiImageSetWrapper(VPIImage img, const VPIImageData *data);
476 
487 VPI_PUBLIC void vpiImageDestroy(VPIImage img);
488 
501 VPI_PUBLIC VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height);
502 
517 
531 VPI_PUBLIC VPIStatus vpiImageGetFlags(VPIImage img, uint64_t *flags);
532 
560 
605 
620 
621 #ifdef __cplusplus
622 }
623 #endif
624 
627 #endif /* NV_VPI_IMAGE_H */
Defines types and functions to handle image formats.
Defines types and functions to handle pixel types.
Declaration of VPI status codes handling functions.
Defines all types needed for programming with VPI.
VPIColorSpec
Color spec definitions.
Definition: ColorSpec.h:162
uint64_t VPIPixelType
Pre-defined pixel types.
Definition: PixelType.h:78
uint64_t VPIImageFormat
Pre-defined image formats.
Definition: ImageFormat.h:94
VPIImageBuffer buffer
Stores the image contents.
Definition: Image.h:241
VPIImageBufferPitchLinear pitch
Image stored in pitch-linear layout.
Definition: Image.h:210
EGLImageKHR egl
Image stored as an EGLImageKHR.
Definition: Image.h:222
void * data
Pointer to the first row of this plane.
Definition: Image.h:141
int32_t numPlanes
Number of planes.
Definition: Image.h:156
VPIImageFormat format
Image format.
Definition: Image.h:152
VPIPixelType pixelType
Type of each pixel within this plane.
Definition: Image.h:115
VPIColorSpec colorSpec
Color spec to override the one defined by the VPIImageData wrapper.
Definition: Image.h:298
VPIImageBufferType bufferType
Type of image buffer.
Definition: Image.h:238
int fd
Image stored as an NvBuffer file descriptor.
Definition: Image.h:228
int32_t height
Height of this plane in pixels.
Definition: Image.h:123
cudaArray_t cudaarray
Image stored in a cudaArray_t.
Definition: Image.h:216
int32_t width
Width of this plane in pixels.
Definition: Image.h:119
int32_t pitchBytes
Difference in bytes of beginning of one row and the beginning of the previous.
Definition: Image.h:134
#define VPI_MAX_PLANE_COUNT
Maximum number of data planes an image can have.
Definition: Image.h:146
void vpiImageDestroy(VPIImage img)
Destroy an image instance.
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:256
VPIStatus vpiImageCreateView(VPIImage imgParent, const VPIRectangleI *clipBounds, uint64_t flags, VPIImage *imgView)
Create an image that wraps an axis-aligned rectangular sub-region of an existing image.
VPIStatus vpiImageCreateWrapper(const VPIImageData *data, const VPIImageWrapperParams *params, uint64_t flags, VPIImage *img)
Create an image object by wrapping an existing memory block.
VPIStatus vpiImageLock(VPIImage img, VPILockMode mode)
Acquires the lock on an image object.
VPIStatus vpiImageLockData(VPIImage img, VPILockMode mode, VPIImageBufferType bufType, VPIImageData *data)
Acquires the lock on an image object and returns the image contents.
VPIStatus vpiInitImageWrapperParams(VPIImageWrapperParams *params)
Initialize VPIImageWrapperParams with default values.
VPIStatus vpiImageSetView(VPIImage view, VPIImage parent, const VPIRectangleI *clipBounds)
Redefines the image view position inside a parent image.
VPIImageBufferType
Represents how the image data is stored.
Definition: Image.h:166
VPIStatus vpiImageSetWrapper(VPIImage img, const VPIImageData *data)
Redefines the wrapped memory in an existing VPIImage wrapper.
VPIStatus vpiImageGetFlags(VPIImage img, uint64_t *flags)
Get the image flags.
VPIStatus vpiImageGetFormat(VPIImage img, VPIImageFormat *format)
Get the image format.
VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img)
Create an empty image instance with the specified flags.
VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height)
Get the image dimensions in pixels.
VPIStatus vpiImageUnlock(VPIImage img)
Releases the lock on an image object.
@ VPI_IMAGE_BUFFER_CUDA_PITCH_LINEAR
CUDA-accessible with planes in pitch-linear memory layout.
Definition: Image.h:175
@ VPI_IMAGE_BUFFER_HOST_PITCH_LINEAR
Host-accessible with planes in pitch-linear memory layout.
Definition: Image.h:172
@ VPI_IMAGE_BUFFER_INVALID
Invalid buffer type.
Definition: Image.h:169
@ VPI_IMAGE_BUFFER_EGLIMAGE
EGLImage.
Definition: Image.h:185
@ VPI_IMAGE_BUFFER_NVBUFFER
NvBuffer.
Definition: Image.h:194
@ VPI_IMAGE_BUFFER_CUDA_ARRAY
Buffer stored in a cudaArray_t.
Definition: Image.h:180
Stores the image plane contents.
Definition: Image.h:150
Stores information about image characteristics and content.
Definition: Image.h:234
Represents one image plane in pitch-linear layout.
Definition: Image.h:112
Parameters for customizing image wrapping.
Definition: Image.h:294
Represents the available methods to access image contents.
Definition: Image.h:204
VPIStatus
Status codes.
Definition: Status.h:81
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:592
Stores the geometric information of a rectangle.
Definition: Types.h:566