VPI - Vision Programming Interface

1.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 
114 #ifdef __cplusplus
115 extern "C" {
116 #endif
117 
126 #define VPI_DISABLE_BL_HOST_LOCK (1u << 31)
127 
134 typedef struct VPIImagePlaneRec
135 {
137  int32_t width;
138  int32_t height;
139  int32_t pitchBytes;
147  void *data;
152 } VPIImagePlane;
153 
155 #define VPI_MAX_PLANE_COUNT (6)
156 
158 typedef struct VPIImageDataRec
159 {
161  int32_t numPlanes;
167 } VPIImageData;
168 
182 VPI_PUBLIC VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint32_t flags, VPIImage *img);
183 
201 VPI_PUBLIC VPIStatus vpiImageCreateHostMemWrapper(const VPIImageData *hostData, uint32_t flags, VPIImage *img);
202 
223 VPI_PUBLIC VPIStatus vpiImageSetWrappedHostMem(VPIImage img, const VPIImageData *hostData);
224 
233 VPI_PUBLIC void vpiImageDestroy(VPIImage img);
234 
249 
258 VPI_PUBLIC VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height);
259 
269 
278 VPI_PUBLIC VPIStatus vpiImageGetFlags(VPIImage img, uint32_t *flags);
279 
299 VPI_PUBLIC VPIStatus vpiImageLock(VPIImage img, VPILockMode mode, VPIImageData *hostData);
300 
314 
315 #ifdef __cplusplus
316 }
317 #endif
318 
321 #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.
VPIStatus vpiImageSetWrappedHostMem(VPIImage img, const VPIImageData *hostData)
Redefines the wrapped host memory in an existing VPIImage wrapper.
VPIStatus vpiImageCreateHostMemWrapper(const VPIImageData *hostData, uint32_t flags, VPIImage *img)
Create an image object by wrapping around an existing host memory block.
VPIImageFormat
Pre-defined image formats.
Definition: ImageFormat.h:99
VPIPixelType
Pre-defined pixel types.
Definition: PixelType.h:84
int32_t height
Height of this plane in pixels.
Definition: Image.h:138
VPIPixelType pixelType
Type of each pixel within this plane.
Definition: Image.h:136
int32_t numPlanes
Number of planes.
Definition: Image.h:161
int32_t width
Width of this plane in pixels.
Definition: Image.h:137
void * data
Pointer to the first row of this plane.
Definition: Image.h:147
int32_t pitchBytes
Difference in bytes of beginning of one row and the beginning of the previous.
Definition: Image.h:139
VPIImageFormat format
Image format.
Definition: Image.h:160
VPIStatus vpiImageLock(VPIImage img, VPILockMode mode, VPIImageData *hostData)
Acquires the lock on an image object and returns a pointer to the image planes.
#define VPI_MAX_PLANE_COUNT
Maximum number of data planes an image can have.
Definition: Image.h:155
void vpiImageDestroy(VPIImage img)
Destroy an image instance.
struct VPIImageImpl * VPIImage
A handle to an image.
Definition: Types.h:197
VPIStatus vpiImageInvalidate(VPIImage img)
Informs that the image's wrapped memory was updated outside VPI.
VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint32_t flags, VPIImage *img)
Create an empty image instance with the specified flags.
VPIStatus vpiImageGetFlags(VPIImage img, uint32_t *flags)
Get the image flags.
VPIStatus vpiImageGetFormat(VPIImage img, VPIImageFormat *format)
Get the image format.
VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height)
Get the image size in pixels.
VPIStatus vpiImageUnlock(VPIImage img)
Releases the lock on an image object.
Stores information about image characteristics and content.
Definition: Image.h:159
Stores information about an image plane.
Definition: Image.h:135
VPIStatus
Status codes.
Definition: Status.h:81
VPILockMode
Defines the lock modes used by memory lock functions.
Definition: Types.h:345