VPI - 视觉编程接口

3.2 版本

PixelType.h
前往此文件的文档。
1 /*
2  * 版权所有 2020-2021 英伟达公司。保留所有权利。
3  *
4  * 致许可方的通知:
5  *
6  * 此源代码和/或文档(“许可交付物”)受美国和
7  * 国际版权法项下的英伟达知识产权保护。
8  *
9  * 此处包含的这些许可交付物是英伟达的专有和
10  * 机密信息,并根据英伟达与
11  * 许可方(“许可协议”)之间或由许可方以电子方式
12  * 接受的 NVIDIA 软件许可协议条款和条件提供。 尽管许可协议中有任何相反的条款或条件,
13  *
14  * 未经英伟达明确书面同意,禁止将许可交付物复制或披露
15  *
16  * 给任何第三方。
17  *
18  * 尽管许可协议中有任何相反的条款或条件,
19  *
20  * 英伟达对这些许可交付物对任何用途的适用性不做任何陈述。
21  *
22  * 它们按“原样”提供,不附带任何明示或暗示的担保。
23  *
24  * 英伟达不对这些许可交付物承担任何担保责任,包括对适销性、
25  * 非侵权性以及特定用途适用性的所有默示担保。
26  *
27  * 尽管许可协议中有任何相反的条款或条件,在任何情况下,英伟达均不对任何
28  *
29  * 特殊、间接、附带或后果性损害,或因使用、数据或利润损失而导致的任何
30  *
31  * 损害承担责任,无论是在合同诉讼、过失或其他侵权
32  *
33  * 行为中,还是因使用或执行这些许可交付物而引起或与之相关的。
34  *
35  * 美国政府最终用户。 这些许可交付物是
36  *
37  * “商业项目”,该术语在 48 C.F.R. 2.101 (OCT
38  *
39  * 1995) 中定义,包括“商业计算机软件”和“商业
40  *
41  * 计算机软件文档”,这些术语在 48
42  *
43  * C.F.R. 12.212 (SEPT 1995) 中使用,并且仅作为商业最终项目提供给美国政府。
44  *
45  * 与 48 C.F.R. 12.212 和
46  *
47  * 48 C.F.R. 227.7202-1 至 227.7202-4 (JUNE 1995) 一致,所有
48  *
49  * 美国政府最终用户仅获得此处规定的权利而获得许可交付物。
50  *
51  * 在个人和商业软件中对许可交付物的任何使用都必须在用户文档和内部
52  *
53  * 代码注释中包含上述免责声明和美国政府最终用户通知。
54  *
55  */
49 
56 #ifndef NV_VPI_PIXEL_TYPE_H
57 #define NV_VPI_PIXEL_TYPE_H
58 
59 #include "DataLayout.h"
60 #include "detail/FormatUtils.h"
61 
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 
78 typedef uint64_t VPIPixelType;
79 
80 /* clang-format off */
81 
83 #define VPI_PIXEL_TYPE_DEFAULT ((VPIPixelType)0)
85 #define VPI_PIXEL_TYPE_INVALID VPI_PIXEL_TYPE_DEFAULT
86 
88 #define VPI_PIXEL_TYPE_U8 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X8)
90 #define VPI_PIXEL_TYPE_2U8 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X8_Y8)
92 #define VPI_PIXEL_TYPE_3U8 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X8_Y8_Z8)
94 #define VPI_PIXEL_TYPE_4U8 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X8_Y8_Z8_W8)
95 
97 #define VPI_PIXEL_TYPE_S8 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X8)
99 #define VPI_PIXEL_TYPE_2S8 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X8_Y8)
101 #define VPI_PIXEL_TYPE_3S8 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X8_Y8_Z8)
103 #define VPI_PIXEL_TYPE_4S8 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X8_Y8_Z8_W8)
104 
106 #define VPI_PIXEL_TYPE_U16 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X16)
108 #define VPI_PIXEL_TYPE_2U16 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X16_Y16)
110 #define VPI_PIXEL_TYPE_3U16 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X16_Y16_Z16)
112 #define VPI_PIXEL_TYPE_4U16 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X16_Y16_Z16_W16)
113 
115 #define VPI_PIXEL_TYPE_S16 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X16)
117 #define VPI_PIXEL_TYPE_2S16 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X16_Y16)
119 #define VPI_PIXEL_TYPE_3S16 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X16_Y16_Z16)
121 #define VPI_PIXEL_TYPE_4S16 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X16_Y16_Z16_W16)
122 
124 #define VPI_PIXEL_TYPE_U32 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X32)
126 #define VPI_PIXEL_TYPE_2U32 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X32_Y32)
128 #define VPI_PIXEL_TYPE_3U32 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X32_Y32_Z32)
130 #define VPI_PIXEL_TYPE_4U32 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X32_Y32_Z32_W32)
131 
133 #define VPI_PIXEL_TYPE_S32 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X32)
135 #define VPI_PIXEL_TYPE_2S32 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X32_Y32)
137 #define VPI_PIXEL_TYPE_3S32 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X32_Y32_Z32)
139 #define VPI_PIXEL_TYPE_4S32 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X32_Y32_Z32_W32)
140 
142 #define VPI_PIXEL_TYPE_F32 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X32)
144 #define VPI_PIXEL_TYPE_2F32 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X32_Y32)
146 #define VPI_PIXEL_TYPE_3F32 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X32_Y32_Z32)
148 #define VPI_PIXEL_TYPE_4F32 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X32_Y32_Z32_W32)
149 
151 #define VPI_PIXEL_TYPE_U64 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X64)
153 #define VPI_PIXEL_TYPE_2U64 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X64_Y64)
155 #define VPI_PIXEL_TYPE_3U64 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X64_Y64_Z64)
157 #define VPI_PIXEL_TYPE_4U64 VPI_DETAIL_MAKE_PIX_TYPE(PL, UNSIGNED, X64_Y64_Z64_W64)
158 
160 #define VPI_PIXEL_TYPE_S64 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X64)
162 #define VPI_PIXEL_TYPE_2S64 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X64_Y64)
164 #define VPI_PIXEL_TYPE_3S64 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X64_Y64_Z64)
166 #define VPI_PIXEL_TYPE_4S64 VPI_DETAIL_MAKE_PIX_TYPE(PL, SIGNED, X64_Y64_Z64_W64)
167 
169 #define VPI_PIXEL_TYPE_F64 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X64)
171 #define VPI_PIXEL_TYPE_2F64 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X64_Y64)
173 #define VPI_PIXEL_TYPE_3F64 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X64_Y64_Z64)
175 #define VPI_PIXEL_TYPE_4F64 VPI_DETAIL_MAKE_PIX_TYPE(PL, FLOAT, X64_Y64_Z64_W64)
176 
177 /* clang-format on */
178 
193 #ifdef VPI_DOXYGEN
194 # define VPI_MAKE_PIXEL_TYPE_ABBREV(memLayout, dataType, packing)
195 #else
196 # define VPI_MAKE_PIXEL_TYPE_ABBREV (VPIPixelType) VPI_DETAIL_MAKE_PIX_TYPE
197 #endif
198 
212 #ifdef VPI_DOXYGEN
213 # define VPI_MAKE_PIXEL_TYPE(memLayout, dataType, packing)
214 #else
215 # define VPI_MAKE_PIXEL_TYPE (VPIPixelType) VPI_DETAIL_MAKE_PIXEL_TYPE
216 #endif
217 
236 VPI_PUBLIC VPIPixelType vpiMakePixelType(VPIMemLayout memLayout, VPIDataType dataType, VPIPacking packing);
237 
248 
259 
268 VPI_PUBLIC void vpiPixelTypeGetBitsPerChannel(VPIPixelType type, int32_t *bits);
269 
280 
291 
305 
316 
325 VPI_PUBLIC const char *vpiPixelTypeGetName(VPIPixelType type);
326 
361 
364 #ifdef __cplusplus
365 }
366 #endif
367 
368 #endif /* NV_VPI_PIXEL_TYPE_H */
DataLayout.h
vpiPixelTypeGetMemLayout
VPIMemLayout vpiPixelTypeGetMemLayout(VPIPixelType type)
vpiMakePixelType
VPIPixelType vpiMakePixelType(VPIMemLayout memLayout, VPIDataType dataType, VPIPacking packing)
vpiPixelTypeSetMemLayout
VPIPixelType vpiPixelTypeSetMemLayout(VPIPixelType type, VPIMemLayout layout)
vpiPixelTypeGetPacking
VPIPacking vpiPixelTypeGetPacking(VPIPixelType type)
vpiPixelTypeGetChannelCount
int vpiPixelTypeGetChannelCount(VPIPixelType type)
vpiPixelTypeGetDataType
VPIDataType vpiPixelTypeGetDataType(VPIPixelType type)
vpiPixelTypeGetBitsPerPixel
int vpiPixelTypeGetBitsPerPixel(VPIPixelType type)
vpiPixelTypeGetBitsPerChannel
void vpiPixelTypeGetBitsPerChannel(VPIPixelType type, int32_t *bits)
获取像素类型的每通道比特数。
vpiPixelTypeGetName
const char * vpiPixelTypeGetName(VPIPixelType type)
返回像素类型的字符串表示形式。
vpiPixelTypeGetChannelType
VPIPixelType vpiPixelTypeGetChannelType(VPIPixelType type, int channel)
获取给定通道索引的像素类型。
VPIPacking
定义通道如何打包到图像平面元素中。
VPIMemLayout
定义 2D 平面像素在内存中的布局方式。