VPI - Vision Programming Interface

4.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 
137  int64_t offsetBytes;
138 
146 
148 
150 #define VPI_MAX_PLANE_COUNT (6)
151 
153 typedef struct VPIImageBufferPitchLinearRec
154 {
157 
160  int32_t numPlanes;
161 
165 
167 
169 typedef enum
170 {
174 
177 
180 
185 
190 
199 
201 
202 typedef void *EGLImageKHR;
203 typedef struct cudaArray *cudaArray_t;
204 
207 typedef union VPIImageBufferRec
208 {
215 
220  cudaArray_t cudaarray;
221 
226  EGLImageKHR egl;
227 
232  int fd;
233 
235 
237 typedef struct VPIImageDataRec
238 {
243 
246 
247 } VPIImageData;
248 
288 VPI_PUBLIC VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img);
289 
297 typedef struct
298 {
304 
317 
357 VPI_PUBLIC VPIStatus vpiImageCreateView(VPIImage imgParent, const VPIRectangleI *clipBounds, uint64_t flags,
358  VPIImage *imgView);
359 
392 VPI_PUBLIC VPIStatus vpiImageSetView(VPIImage view, VPIImage parent, const VPIRectangleI *clipBounds);
393 
449  uint64_t flags, VPIImage *img);
450 
479 VPI_PUBLIC VPIStatus vpiImageSetWrapper(VPIImage img, const VPIImageData *data);
480 
491 VPI_PUBLIC void vpiImageDestroy(VPIImage img);
492 
505 VPI_PUBLIC VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height);
506 
521 
535 VPI_PUBLIC VPIStatus vpiImageGetFlags(VPIImage img, uint64_t *flags);
536 
564 
609 
624 
625 #ifdef __cplusplus
626 }
627 #endif
628 
631 #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.
unsigned char VPIByte
Definition of a byte type.
Definition: Types.h:288
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:245
VPIImageBufferPitchLinear pitch
Image stored in pitch-linear layout.
Definition: Image.h:214
EGLImageKHR egl
Image stored as an EGLImageKHR.
Definition: Image.h:226
int32_t numPlanes
Number of planes.
Definition: Image.h:160
VPIImageFormat format
Image format.
Definition: Image.h:156
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:302
VPIImageBufferType bufferType
Type of image buffer.
Definition: Image.h:242
int fd
Image stored as an NvBuffer file descriptor.
Definition: Image.h:232
int64_t offsetBytes
Offset in bytes from pBase to the first column of the first plane row.
Definition: Image.h:137
int32_t height
Height of this plane in pixels.
Definition: Image.h:123
VPIByte * pBase
Pointer to the memory buffer which contains the plane data.
Definition: Image.h:145
cudaArray_t cudaarray
Image stored in a cudaArray_t.
Definition: Image.h:220
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:150
void vpiImageDestroy(VPIImage img)
Destroy an image instance.
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:254
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:170
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:179
@ VPI_IMAGE_BUFFER_HOST_PITCH_LINEAR
Host-accessible with planes in pitch-linear memory layout.
Definition: Image.h:176
@ VPI_IMAGE_BUFFER_INVALID
Invalid buffer type.
Definition: Image.h:173
@ VPI_IMAGE_BUFFER_EGLIMAGE
EGLImage.
Definition: Image.h:189
@ VPI_IMAGE_BUFFER_NVBUFFER
NvBuffer.
Definition: Image.h:198
@ VPI_IMAGE_BUFFER_CUDA_ARRAY
Buffer stored in a cudaArray_t.
Definition: Image.h:184
Stores the image plane contents.
Definition: Image.h:154
Stores information about image characteristics and content.
Definition: Image.h:238
Represents one image plane in pitch-linear layout.
Definition: Image.h:112
Parameters for customizing image wrapping.
Definition: Image.h:298
Represents the available methods to access image contents.
Definition: Image.h:208
VPIStatus
Status codes.
Definition: Status.h:81
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:618
Stores the geometric information of a rectangle.
Definition: Types.h:592