VPI - Vision Programming Interface

1.2 Release

PixelType.h
Go to the documentation of this file.
1 /*
2  * Copyright 2020-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_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 #ifdef __GNUC__
79 # pragma GCC diagnostic push
80 # pragma GCC diagnostic ignored "-Wpedantic"
81 #endif
82 /* clang-format off */
83 typedef enum
84 {
89 
91  VPI_PIXEL_TYPE_U8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X8),
93  VPI_PIXEL_TYPE_2U8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X8_Y8),
95  VPI_PIXEL_TYPE_3U8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X8_Y8_Z8),
97  VPI_PIXEL_TYPE_4U8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X8_Y8_Z8_W8),
98 
100  VPI_PIXEL_TYPE_S8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X8),
102  VPI_PIXEL_TYPE_2S8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X8_Y8),
104  VPI_PIXEL_TYPE_3S8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X8_Y8_Z8),
106  VPI_PIXEL_TYPE_4S8 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X8_Y8_Z8_W8),
107 
109  VPI_PIXEL_TYPE_U16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X16),
111  VPI_PIXEL_TYPE_2U16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X16_Y16),
113  VPI_PIXEL_TYPE_3U16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X16_Y16_Z16),
115  VPI_PIXEL_TYPE_4U16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X16_Y16_Z16_W16),
116 
118  VPI_PIXEL_TYPE_S16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X16),
120  VPI_PIXEL_TYPE_2S16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X16_Y16),
122  VPI_PIXEL_TYPE_3S16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X16_Y16_Z16),
124  VPI_PIXEL_TYPE_4S16 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X16_Y16_Z16_W16),
125 
127  VPI_PIXEL_TYPE_U32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X32),
129  VPI_PIXEL_TYPE_2U32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X32_Y32),
131  VPI_PIXEL_TYPE_3U32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X32_Y32_Z32),
133  VPI_PIXEL_TYPE_4U32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X32_Y32_Z32_W32),
134 
136  VPI_PIXEL_TYPE_S32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X32),
138  VPI_PIXEL_TYPE_2S32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X32_Y32),
140  VPI_PIXEL_TYPE_3S32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X32_Y32_Z32),
142  VPI_PIXEL_TYPE_4S32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X32_Y32_Z32_W32),
143 
145  VPI_PIXEL_TYPE_F32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X32),
147  VPI_PIXEL_TYPE_2F32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X32_Y32),
149  VPI_PIXEL_TYPE_3F32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X32_Y32_Z32),
151  VPI_PIXEL_TYPE_4F32 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X32_Y32_Z32_W32),
152 
154  VPI_PIXEL_TYPE_U64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X64),
156  VPI_PIXEL_TYPE_2U64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X64_Y64),
158  VPI_PIXEL_TYPE_3U64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X64_Y64_Z64),
160  VPI_PIXEL_TYPE_4U64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, UNSIGNED, X64_Y64_Z64_W64),
161 
163  VPI_PIXEL_TYPE_S64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X64),
165  VPI_PIXEL_TYPE_2S64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X64_Y64),
167  VPI_PIXEL_TYPE_3S64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X64_Y64_Z64),
169  VPI_PIXEL_TYPE_4S64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, SIGNED, X64_Y64_Z64_W64),
170 
172  VPI_PIXEL_TYPE_F64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X64),
174  VPI_PIXEL_TYPE_2F64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X64_Y64),
176  VPI_PIXEL_TYPE_3F64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X64_Y64_Z64),
178  VPI_PIXEL_TYPE_4F64 = VPI_DETAIL_MAKE_PIXEL_FMT(PL, FLOAT, X64_Y64_Z64_W64),
179 
181  VPI_PIXEL_TYPE_FORCE64 = INT64_MAX
182  /* \endcond */
183 } VPIPixelType;
184 /* clang-format on */
185 #ifdef __GNUC__
186 # pragma GCC diagnostic pop
187 #endif
188 
202 #ifdef VPI_DOXYGEN
203 # define VPI_MAKE_PIXEL_TYPE_ABBREV(memLayout, dataType, packing)
204 #else
205 # define VPI_MAKE_PIXEL_TYPE_ABBREV (VPIPixelType) VPI_DETAIL_MAKE_PIXEL_FMT
206 #endif
207 
220 #ifdef VPI_DOXYGEN
221 # define VPI_MAKE_PIXEL_TYPE(memLayout, dataType, packing)
222 #else
223 # define VPI_MAKE_PIXEL_TYPE (VPIPixelType) VPI_DETAIL_MAKE_PIXEL_TYPE
224 #endif
225 
235 VPI_PUBLIC VPIPixelType vpiMakePixelType(VPIMemLayout memLayout, VPIDataType dataType, VPIPacking packing);
236 
244 
252 
258 VPI_PUBLIC void vpiPixelTypeGetBitsPerChannel(VPIPixelType type, int32_t *bits);
259 
267 
275 
283 
291 VPI_PUBLIC const char *vpiPixelTypeGetName(VPIPixelType type);
292 
295 #ifdef __cplusplus
296 }
297 #endif
298 
299 #endif /* NV_VPI_PIXEL_TYPE_H */
Defines types and functions to handle data layouts.
VPIMemLayout vpiPixelTypeGetMemLayout(VPIPixelType type)
Get the memory layout of a pixel type.
VPIPixelType vpiMakePixelType(VPIMemLayout memLayout, VPIDataType dataType, VPIPacking packing)
Creates a user-defined pixel type.
VPIPacking vpiPixelTypeGetPacking(VPIPixelType type)
Get the packing of a pixel type.
int vpiPixelTypeGetChannelCount(VPIPixelType type)
Get the number of channels of a pixel type.
VPIDataType vpiPixelTypeGetDataType(VPIPixelType type)
Get the data type of a pixel type.
int vpiPixelTypeGetBitsPerPixel(VPIPixelType type)
Get the number of bits per pixel of a pixel type.
void vpiPixelTypeGetBitsPerChannel(VPIPixelType type, int32_t *bits)
Get the number of bits per channel of a pixel type.
const char * vpiPixelTypeGetName(VPIPixelType type)
Returns a string representation of the pixel type.
VPIPacking
Defines how channels are packed into an image plane element.
Definition: DataLayout.h:128
VPIMemLayout
Defines how the 2D plane pixels are laid out in memory.
Definition: DataLayout.h:225
VPIDataType
Defines the channel data type.
Definition: DataLayout.h:210
VPIPixelType
Pre-defined pixel types.
Definition: PixelType.h:84
@ VPI_PIXEL_TYPE_4S8
Four interleaved channels of signed 8-bit values.
Definition: PixelType.h:106
@ VPI_PIXEL_TYPE_S16
One channel of signed 16-bit value.
Definition: PixelType.h:118
@ VPI_PIXEL_TYPE_INVALID
Signal format conversion errors.
Definition: PixelType.h:88
@ VPI_PIXEL_TYPE_2U8
Two interleaved channels of unsigned 8-bit values.
Definition: PixelType.h:93
@ VPI_PIXEL_TYPE_2S64
Two interleaved channels of signed 64-bit values.
Definition: PixelType.h:165
@ VPI_PIXEL_TYPE_4F64
Four interleaved channels of 64-bit IEEE 754 floating-point values.
Definition: PixelType.h:178
@ VPI_PIXEL_TYPE_U32
One channel of unsigned 32-bit value.
Definition: PixelType.h:127
@ VPI_PIXEL_TYPE_S8
One channel of signed 8-bit value.
Definition: PixelType.h:100
@ VPI_PIXEL_TYPE_2S32
Two interleaved channels of signed 32-bit values.
Definition: PixelType.h:138
@ VPI_PIXEL_TYPE_2F32
Two interleaved channels of 32-bit IEEE 754 floating-point values.
Definition: PixelType.h:147
@ VPI_PIXEL_TYPE_4F32
Four interleaved channels of 32-bit IEEE 754 floating-point values.
Definition: PixelType.h:151
@ VPI_PIXEL_TYPE_4U64
Four interleaved channels of unsigned 64-bit values.
Definition: PixelType.h:160
@ VPI_PIXEL_TYPE_U16
One channel of unsigned 16-bit value.
Definition: PixelType.h:109
@ VPI_PIXEL_TYPE_3U16
Three interleaved channels of unsigned 16-bit values.
Definition: PixelType.h:113
@ VPI_PIXEL_TYPE_3S16
Three interleaved channels of signed 16-bit values.
Definition: PixelType.h:122
@ VPI_PIXEL_TYPE_2U16
Two interleaved channels of unsigned 16-bit values.
Definition: PixelType.h:111
@ VPI_PIXEL_TYPE_2U32
Two interleaved channels of unsigned 32-bit values.
Definition: PixelType.h:129
@ VPI_PIXEL_TYPE_3F32
Three interleaved channels of 32-bit IEEE 754 floating-point values.
Definition: PixelType.h:149
@ VPI_PIXEL_TYPE_3U32
Three interleaved channels of unsigned 32-bit values.
Definition: PixelType.h:131
@ VPI_PIXEL_TYPE_2F64
Two interleaved channels of 64-bit IEEE 754 floating-point values.
Definition: PixelType.h:174
@ VPI_PIXEL_TYPE_S64
One channel of signed 64-bit value.
Definition: PixelType.h:163
@ VPI_PIXEL_TYPE_4U32
Four interleaved channels of unsigned 32-bit values.
Definition: PixelType.h:133
@ VPI_PIXEL_TYPE_4U8
Four interleaved channels of unsigned 8-bit values.
Definition: PixelType.h:97
@ VPI_PIXEL_TYPE_2S16
Two interleaved channels of signed 16-bit values.
Definition: PixelType.h:120
@ VPI_PIXEL_TYPE_3U8
Three interleaved channels of unsigned 8-bit values.
Definition: PixelType.h:95
@ VPI_PIXEL_TYPE_U8
One channel of unsigned 8-bit value.
Definition: PixelType.h:91
@ VPI_PIXEL_TYPE_3S64
Three interleaved channels of signed 64-bit values.
Definition: PixelType.h:167
@ VPI_PIXEL_TYPE_F32
One channel of 32-bit IEEE 754 floating-point value.
Definition: PixelType.h:145
@ VPI_PIXEL_TYPE_4S16
Four interleaved channels of signed 16-bit values.
Definition: PixelType.h:124
@ VPI_PIXEL_TYPE_DEFAULT
Used to signal that the pixel type must be inferred from image format.
Definition: PixelType.h:86
@ VPI_PIXEL_TYPE_S32
One channel of signed 32-bit value.
Definition: PixelType.h:136
@ VPI_PIXEL_TYPE_F64
One channel of 64-bit IEEE 754 floating-point value.
Definition: PixelType.h:172
@ VPI_PIXEL_TYPE_4S32
Four interleaved channels of signed 32-bit values.
Definition: PixelType.h:142
@ VPI_PIXEL_TYPE_4S64
Four interleaved channels of signed 64-bit values.
Definition: PixelType.h:169
@ VPI_PIXEL_TYPE_2U64
Two interleaved channels of unsigned 64-bit values.
Definition: PixelType.h:156
@ VPI_PIXEL_TYPE_3F64
Three interleaved channels of 64-bit IEEE 754 floating-point values.
Definition: PixelType.h:176
@ VPI_PIXEL_TYPE_3S32
Three interleaved channels of signed 32-bit values.
Definition: PixelType.h:140
@ VPI_PIXEL_TYPE_2S8
Two interleaved channels of signed 8-bit values.
Definition: PixelType.h:102
@ VPI_PIXEL_TYPE_3U64
Three interleaved channels of unsigned 64-bit values.
Definition: PixelType.h:158
@ VPI_PIXEL_TYPE_3S8
Three interleaved channels of signed 8-bit values.
Definition: PixelType.h:104
@ VPI_PIXEL_TYPE_4U16
Four interleaved channels of unsigned 16-bit values.
Definition: PixelType.h:115
@ VPI_PIXEL_TYPE_U64
One channel of unsigned 64-bit value.
Definition: PixelType.h:154