VPI - 视觉编程接口

3.2 版本

Image.h
前往此文件的文档。
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 */
定义用于处理图像格式的类型和函数。
定义用于处理像素类型的类型和函数。
VPI 状态代码处理函数的声明。
定义使用 VPI 编程所需的所有类型。
VPIColorSpec
颜色规格定义。
Definition: ColorSpec.h:162
uint64_t VPIPixelType
预定义的像素类型。
Definition: PixelType.h:78
uint64_t VPIImageFormat
预定义的图像格式。
Definition: ImageFormat.h:94
VPIImageBuffer buffer
存储图像内容。
Definition: Image.h:241
VPIImageBufferPitchLinear pitch
以 pitch-linear 布局存储的图像。
Definition: Image.h:210
EGLImageKHR egl
图像存储为 EGLImageKHR。
Definition: Image.h:222
void * data
指向此平面第一行的指针。
Definition: Image.h:141
int32_t numPlanes
平面数量。
Definition: Image.h:156
VPIImageFormat format
图像格式。
Definition: Image.h:152
VPIPixelType pixelType
此平面内每个像素的类型。
Definition: Image.h:115
VPIColorSpec colorSpec
颜色规格,用于覆盖 VPIImageData 包装器定义的规格。
Definition: Image.h:298
VPIImageBufferType bufferType
图像缓冲区类型。
Definition: Image.h:238
int fd
图像存储为 NvBuffer 文件描述符。
Definition: Image.h:228
int32_t height
此平面的高度,以像素为单位。
Definition: Image.h:123
cudaArray_t cudaarray
图像存储在 cudaArray_t 中。
Definition: Image.h:216
int32_t width
此平面的宽度,以像素为单位。
Definition: Image.h:119
int32_t pitchBytes
一行开始与前一行开始之间的字节差。
Definition: Image.h:134
#define VPI_MAX_PLANE_COUNT
一个图像可以拥有的最大数据平面数。
Definition: Image.h:146
void vpiImageDestroy(VPIImage img)
销毁图像实例。
struct VPIImageImpl * VPIImage
图像的句柄。
Definition: Types.h:256
VPIStatus vpiImageCreateView(VPIImage imgParent, const VPIRectangleI *clipBounds, uint64_t flags, VPIImage *imgView)
创建一个图像,该图像包装现有图像的轴对齐矩形子区域。
VPIStatus vpiImageCreateWrapper(const VPIImageData *data, const VPIImageWrapperParams *params, uint64_t flags, VPIImage *img)
通过包装现有内存块创建图像对象。
VPIStatus vpiImageLock(VPIImage img, VPILockMode mode)
获取图像对象的锁。
VPIStatus vpiImageLockData(VPIImage img, VPILockMode mode, VPIImageBufferType bufType, VPIImageData *data)
获取图像对象的锁并返回图像内容。
VPIStatus vpiInitImageWrapperParams(VPIImageWrapperParams *params)
使用默认值初始化 VPIImageWrapperParams。
VPIStatus vpiImageSetView(VPIImage view, VPIImage parent, const VPIRectangleI *clipBounds)
重新定义父图像内的图像视图位置。
VPIImageBufferType
表示图像数据的存储方式。
Definition: Image.h:166
VPIStatus vpiImageSetWrapper(VPIImage img, const VPIImageData *data)
重新定义现有 VPIImage 包装器中的包装内存。
VPIStatus vpiImageGetFlags(VPIImage img, uint64_t *flags)
获取图像标志。
VPIStatus vpiImageGetFormat(VPIImage img, VPIImageFormat *format)
获取图像格式。
VPIStatus vpiImageCreate(int32_t width, int32_t height, VPIImageFormat fmt, uint64_t flags, VPIImage *img)
使用指定的标志创建空的图像实例。
VPIStatus vpiImageGetSize(VPIImage img, int32_t *width, int32_t *height)
以像素为单位获取图像尺寸。
VPIStatus vpiImageUnlock(VPIImage img)
释放图像对象的锁。
@ VPI_IMAGE_BUFFER_CUDA_PITCH_LINEAR
可 CUDA 访问,平面采用 pitch-linear 内存布局。
Definition: Image.h:175
@ VPI_IMAGE_BUFFER_HOST_PITCH_LINEAR
主机可访问,平面采用 pitch-linear 内存布局。
Definition: Image.h:172
@ VPI_IMAGE_BUFFER_INVALID
无效的缓冲区类型。
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
缓冲区存储在 cudaArray_t 中。
Definition: Image.h:180
存储图像平面内容。
Definition: Image.h:150
存储有关图像特征和内容的信息。
Definition: Image.h:234
表示 pitch-linear 布局中的一个图像平面。
Definition: Image.h:112
用于自定义图像包装的参数。
Definition: Image.h:294
表示访问图像内容的可用方法。
Definition: Image.h:204
VPIStatus
状态代码。
Definition: Status.h:81
VPILockMode
定义内存锁定功能使用的锁定模式。
Definition: Types.h:614
存储矩形的几何信息。
Definition: Types.h:588