VPI - 视觉编程接口

3.2 版本

ColorSpec.h
转到此文件的文档。
1 /*
2  * 版权所有 2020-2021 NVIDIA Corporation。保留所有权利。
3  *
4  * 许可方须知:
5  *
6  * 此源代码和/或文档(“许可交付物”)受美国和国际版权法项下的 NVIDIA 知识产权保护。
7  * 受美国和国际版权法项下的 NVIDIA 知识产权保护。
8  * 国际版权法。
9  *
10  * 此处包含的这些许可交付物是 NVIDIA 的专有和机密信息,并根据 NVIDIA 软件许可协议(一种形式)的条款和条件提供,
11  * 机密信息,并根据 NVIDIA 软件许可协议(一种形式)的条款和条件提供,
12  * NVIDIA 与被许可方之间(“许可协议”)或被许可方以电子方式接受的协议。尽管许可协议中有任何相反的条款或条件,
13  * NVIDIA 与被许可方之间(“许可协议”)或被许可方以电子方式接受的协议。尽管许可协议中有任何相反的条款或条件,
14  * 被许可方接受。尽管许可协议中有任何相反的条款或条件,
15  * 与许可协议中的条款或条件相反,未经 NVIDIA 明确书面同意,禁止向任何第三方复制或披露许可交付物。
16  * 与许可协议中的条款或条件相反,未经 NVIDIA 明确书面同意,禁止向任何第三方复制或披露许可交付物。
17  * 书面同意,禁止。
18  *
19  * 尽管许可协议中有任何相反的条款或条件,NVIDIA 对这些许可交付物用于任何目的的适用性不作任何陈述。
20  * 许可协议,NVIDIA 对这些许可交付物用于任何目的的适用性不作任何陈述。
21  * 适用性不作任何陈述。
22  * 交付物“按原样”提供,不提供任何明示或暗示的保证。
23  * NVIDIA 声明不对这些许可交付物承担任何保证责任,包括对适销性、非侵权性和特定用途适用性的所有默示保证。
24  * NVIDIA 声明不对这些许可交付物承担任何保证责任,包括对适销性、非侵权性和特定用途适用性的所有默示保证。
25  * 非侵权性和特定用途适用性的所有默示保证。
26  * 尽管许可协议中有任何相反的条款或条件,在任何情况下,NVIDIA 均不对任何特殊、间接、附带或后果性损害,或任何因使用、数据或利润损失而造成的任何损害承担责任,
27  * 尽管许可协议中有任何相反的条款或条件,在任何情况下,NVIDIA 均不对任何特殊、间接、附带或后果性损害,或任何因使用、数据或利润损失而造成的任何损害承担责任,
28  * NVIDIA 均不对任何特殊、间接、附带或后果性损害,或任何因使用、数据或利润损失而造成的任何损害承担责任,
29  * 或利润损失而造成的任何损害承担责任,
30  * 无论是由于合同诉讼、过失或其他侵权行为,因使用或执行这些许可交付物而引起或与之相关的诉讼。
31  * 无论是由于合同诉讼、过失或其他侵权行为,因使用或执行这些许可交付物而引起或与之相关的诉讼。
32  * 这些许可交付物而引起或与之相关的诉讼。
33  *
34  * 美国政府最终用户。这些许可交付物是“商业项目”,该术语在 48 C.F.R. 2.101(OCT
35  * 美国政府最终用户。这些许可交付物是“商业项目”,该术语在 48 C.F.R. 2.101(OCT
36  * 1995) 中定义,包括“商业计算机软件”和“商业计算机软件文档”,这些术语在 48
37  * 1995) 中定义,包括“商业计算机软件”和“商业计算机软件文档”,这些术语在 48
38  * C.F.R. 12.212 (SEPT 1995) 中使用,并且仅作为商业最终项目提供给美国政府。与 48 C.F.R.12.212 和
39  * C.F.R. 12.212 (SEPT 1995) 中使用,并且仅作为商业最终项目提供给美国政府。与 48 C.F.R.12.212 和
40  * 48 C.F.R. 227.7202-1 至 227.7202-4 (1995 年 6 月) 一致,所有美国政府最终用户均根据本文规定的权利获得许可交付物。
41  * 48 C.F.R. 227.7202-1 至 227.7202-4 (1995 年 6 月) 一致,所有美国政府最终用户均根据本文规定的权利获得许可交付物。
42  * 仅根据本文规定的权利获得许可交付物。
43  *
44  * 在个人和商业软件中使用许可交付物时,必须在用户文档和代码内部注释中包含上述免责声明和美国政府最终用户须知。
45  * 软件必须包括,在用户文档和内部
46  * 注释到代码中,上述免责声明和美国政府最终
47  * 用户须知。
48  */
49 
56 #ifndef NV_VPI_COLORSPEC_H
57 #define NV_VPI_COLORSPEC_H
58 
59 #include "Export.h"
60 #include "detail/FormatUtils.h"
61 
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 
76 typedef enum
77 {
84 
86 typedef enum
87 {
96 
98 typedef enum
99 {
102  VPI_WHITE_POINT_UNDEFINED = INT32_MAX
104 
106 typedef enum
107 {
115 
117 typedef enum
118 {
127 
129 typedef enum
130 {
134 
136 typedef enum
137 {
144 
160 /* clang-format off */
161 typedef enum
162 {
165 
167  VPI_COLOR_SPEC_DEFAULT = VPI_DETAIL_MAKE_CSPC(SPACE_UNDEFINED, ENC_UNDEFINED, XFER_LINEAR, RANGE_FULL, LOC_BOTH, LOC_BOTH),
168 
172  VPI_COLOR_SPEC_UNDEFINED = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_UNDEFINED, XFER_LINEAR, RANGE_FULL, LOC_BOTH, LOC_BOTH),
173 
175  VPI_COLOR_SPEC_BT601 = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT601, XFER_BT709, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
176 
178  VPI_COLOR_SPEC_BT601_ER = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT601, XFER_BT709, RANGE_FULL, LOC_EVEN, LOC_EVEN),
179 
181  VPI_COLOR_SPEC_BT709 = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT709, XFER_BT709, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
182 
184  VPI_COLOR_SPEC_BT709_ER = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT709, XFER_BT709, RANGE_FULL, LOC_EVEN, LOC_EVEN),
185 
187  VPI_COLOR_SPEC_BT709_LINEAR = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT709, XFER_LINEAR, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
188 
190  VPI_COLOR_SPEC_BT2020 = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020, XFER_BT2020, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
191 
193  VPI_COLOR_SPEC_BT2020_ER = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020, XFER_BT2020, RANGE_FULL, LOC_EVEN, LOC_EVEN),
194 
196  VPI_COLOR_SPEC_BT2020_LINEAR = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020, XFER_LINEAR, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
197 
199  VPI_COLOR_SPEC_BT2020_PQ = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020, XFER_PQ, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
200 
202  VPI_COLOR_SPEC_BT2020_PQ_ER = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020, XFER_PQ, RANGE_FULL, LOC_EVEN, LOC_EVEN),
203 
205  VPI_COLOR_SPEC_BT2020c = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020c, XFER_BT2020, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
206 
208  VPI_COLOR_SPEC_BT2020c_ER = VPI_DETAIL_MAKE_CSPC(SPACE_BT2020, ENC_BT2020c, XFER_BT2020, RANGE_FULL, LOC_EVEN, LOC_EVEN),
209 
211  VPI_COLOR_SPEC_MPEG2_BT601 = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT601, XFER_BT709, RANGE_FULL, LOC_EVEN, LOC_CENTER),
212 
214  VPI_COLOR_SPEC_MPEG2_BT709 = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT709, XFER_BT709, RANGE_FULL, LOC_EVEN, LOC_CENTER),
215 
217  VPI_COLOR_SPEC_MPEG2_SMPTE240M = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_SMPTE240M, XFER_SMPTE240M, RANGE_FULL, LOC_EVEN, LOC_CENTER),
218 
220  VPI_COLOR_SPEC_sRGB = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_UNDEFINED, XFER_sRGB, RANGE_FULL, LOC_BOTH, LOC_BOTH),
221 
223  VPI_COLOR_SPEC_sYCC = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_BT601, XFER_sYCC, RANGE_FULL, LOC_CENTER, LOC_CENTER),
224 
226  VPI_COLOR_SPEC_SMPTE240M = VPI_DETAIL_MAKE_CSPC(SPACE_BT709, ENC_SMPTE240M, XFER_SMPTE240M, RANGE_LIMITED, LOC_EVEN, LOC_EVEN),
227 
229  VPI_COLOR_SPEC_DISPLAYP3 = VPI_DETAIL_MAKE_CSPC(SPACE_DCIP3, ENC_UNDEFINED, XFER_sRGB, RANGE_FULL, LOC_BOTH, LOC_BOTH),
230 
232  VPI_COLOR_SPEC_DISPLAYP3_LINEAR = VPI_DETAIL_MAKE_CSPC(SPACE_DCIP3, ENC_UNDEFINED, XFER_LINEAR, RANGE_FULL, LOC_BOTH, LOC_BOTH),
233 
235  VPI_COLOR_SPEC_SENSOR = VPI_DETAIL_MAKE_CSPC(SPACE_SENSOR, ENC_UNDEFINED, XFER_LINEAR, RANGE_FULL, LOC_BOTH, LOC_BOTH),
236 } VPIColorSpec;
237 /* clang-format on */
238 
255 #ifdef VPI_DOXYGEN
256 # define VPI_MAKE_COLOR_SPEC_ABBREV(cspace, encoding, xferFunc, range, locHoriz, locVert)
257 #else
258 # define VPI_MAKE_COLOR_SPEC_ABBREV (VPIColorSpec) VPI_DETAIL_MAKE_CSPC
259 #endif
260 
278 #ifdef VPI_DOXYGEN
279 # define VPI_MAKE_COLOR_SPEC(cspace, encoding, xferFunc, range, locHoriz, locVert)
280 #else
281 # define VPI_MAKE_COLOR_SPEC (VPIColorSpec) VPI_DETAIL_MAKE_COLOR_SPEC
282 #endif
283 
296  VPIColorTransferFunction xferFunc, VPIColorRange range,
297  VPIChromaLocation locHoriz, VPIChromaLocation locVert);
298 
302 typedef enum
303 {
329 
354 
379 
386 
388  VPI_RAW_FORCE8 = UINT8_MAX
389  /* \endcond */
390 } VPIRawPattern;
391 
399 typedef enum
400 {
405 
408 
411 
414 
417 
420 
424 
434 VPI_PUBLIC VPIChromaSubsampling vpiMakeChromaSubsampling(int samplesHoriz, int samplesVert);
435 
446 
456 
466 
476 
490  VPIChromaLocation locVert);
491 
501 
514 
524 
536 
546 
558 
568 
580 
589 VPI_PUBLIC const char *vpiColorSpecGetName(VPIColorSpec cspec);
590 
593 #ifdef __cplusplus
594 }
595 #endif
596 
597 #endif /* NV_VPI_COLORSPEC_H */
VPIColorSpec
颜色规格定义。
VPIColorSpace vpiColorSpecGetSpace(VPIColorSpec cspec)
获取给定颜色规格的 color_space。
VPIColorSpec vpiColorSpecSetSpace(VPIColorSpec cspec, VPIColorSpace cspace)
设置给定颜色规格的 color_space。
VPIRawPattern
定义 RAW 颜色模型使用的拜耳模式。
VPIChromaLocation vpiColorSpecGetChromaLocHoriz(VPIColorSpec cspec)
获取给定颜色规格的色度水平采样位置。
VPIColorRange vpiColorSpecGetRange(VPIColorSpec cspec)
获取给定颜色规格的颜色量化范围。
VPIColorRange
定义特定 VPIColorSpec 的颜色范围。
VPIColorModel
定义颜色模型。
VPIColorSpec vpiColorSpecSetRange(VPIColorSpec cspec, VPIColorRange range)
设置给定颜色规格的颜色量化范围。
VPIChromaSubsampling vpiMakeChromaSubsampling(int samplesHoriz, int samplesVert)
根据水平和垂直采样创建 VPIChromaSubsampling。
VPIColorTransferFunction
定义特定 VPIColorSpec 中的颜色传递函数。
VPIYCbCrEncoding
定义特定 VPIColorSpec 中使用的 YCbCr 编码。
VPIColorTransferFunction vpiColorSpecGetTransferFunction(VPIColorSpec cspec)
获取给定颜色规格的颜色传递函数。
VPIColorSpec vpiMakeColorSpec(VPIColorSpace cspace, VPIYCbCrEncoding encoding, VPIColorTransferFunction xferFunc, VPIColorRange range, VPIChromaLocation locHoriz, VPIChromaLocation locVert)
创建用户定义的 VPIColorSpec。
VPIChromaSubsampling
定义如何进行色度二次采样。
int vpiChromaSubsamplingGetSamplesVert(VPIChromaSubsampling css)
获取每组 4 个垂直亮度样本的色度样本数。
VPIYCbCrEncoding vpiColorSpecGetYCbCrEncoding(VPIColorSpec cspec)
获取给定颜色规格的 R'G'B' <-> Y'CbCr 编码方案。
VPIColorSpace
定义 VPIColorSpec 的颜色原色和白点。
VPIColorSpec vpiColorSpecSetChromaLoc(VPIColorSpec cspec, VPIChromaLocation locHoriz, VPIChromaLocation locVert)
设置给定颜色规格的色度样本位置。
VPIWhitePoint
定义与 VPIColorSpace 关联的白点。
int vpiChromaSubsamplingGetSamplesHoriz(VPIChromaSubsampling css)
获取每组 4 个水平亮度样本的色度样本数。
VPIChromaLocation
色度采样位置。
VPIColorSpec vpiColorSpecSetTransferFunction(VPIColorSpec cspec, VPIColorTransferFunction xferFunc)
设置给定颜色规格的颜色传递函数。
VPIChromaLocation vpiColorSpecGetChromaLocVert(VPIColorSpec cspec)
获取给定颜色规格的色度垂直采样位置。
VPIColorSpec vpiColorSpecSetYCbCrEncoding(VPIColorSpec cspec, VPIYCbCrEncoding encoding)
设置给定颜色规格的 R'G'B' <-> Y'CbCr 编码方案。
const char * vpiColorSpecGetName(VPIColorSpec cspec)
返回颜色规格的字符串表示形式。
@ VPI_COLOR_SPEC_BT709
颜色规格,定义 ITU-R BT.709 标准,有限范围。
@ VPI_COLOR_SPEC_BT2020_ER
颜色规格,定义 ITU-R BT.2020 标准,全范围。
@ VPI_COLOR_SPEC_MPEG2_BT601
颜色规格,定义使用 ITU-R BT.601 编码的 MPEG2 标准。
@ VPI_COLOR_SPEC_INVALID
无效的颜色规格。
@ VPI_COLOR_SPEC_UNDEFINED
未定义颜色规格。
@ VPI_COLOR_SPEC_DEFAULT
默认颜色规格。
@ VPI_COLOR_SPEC_BT2020c
颜色规格,定义用于恒定亮度的 ITU-R BT.2020 标准,有限范围。
@ VPI_COLOR_SPEC_SENSOR
颜色规格,用于来自图像传感器的图像,紧随去马赛克之后。
@ VPI_COLOR_SPEC_sRGB
颜色规格,定义 sRGB 标准。
@ VPI_COLOR_SPEC_DISPLAYP3
颜色规格,定义 Display P3 标准,带有 sRGB 颜色传递函数。
@ VPI_COLOR_SPEC_BT709_LINEAR
颜色规格,定义 ITU-R BT.709 标准,有限范围和线性传递函数。
@ VPI_COLOR_SPEC_BT2020c_ER
颜色规格,定义用于恒定亮度的 ITU-R BT.2020 标准,全范围。
@ VPI_COLOR_SPEC_DISPLAYP3_LINEAR
颜色规格,定义 Display P3 标准,带有线性颜色传递函数。
@ VPI_COLOR_SPEC_SMPTE240M
颜色规格,定义 SMPTE 240M 标准,有限范围。
@ VPI_COLOR_SPEC_BT2020_PQ
颜色规格,定义 ITU-R BT.2020 标准,有限范围和感知量化器传递函数。
@ VPI_COLOR_SPEC_MPEG2_BT709
颜色规格,定义使用 ITU-R BT.709 编码的 MPEG2 标准。
@ VPI_COLOR_SPEC_BT601_ER
颜色规格,定义 ITU-R BT.601 标准,全范围,带有 BT.709 色度坐标和传递函数...
@ VPI_COLOR_SPEC_BT2020_PQ_ER
颜色规格,定义 ITU-R BT.2020 标准,全范围和感知量化器传递函数。
@ VPI_COLOR_SPEC_BT2020
颜色规格,定义 ITU-R BT.2020 标准,有限范围。
@ VPI_COLOR_SPEC_BT2020_LINEAR
颜色规格,定义 ITU-R BT.2020 标准,有限范围和线性传递函数。
@ VPI_COLOR_SPEC_BT709_ER
颜色规格,定义 ITU-R BT.709 标准,全范围。
@ VPI_COLOR_SPEC_sYCC
颜色规格,定义 sYCC 标准。
@ VPI_COLOR_SPEC_MPEG2_SMPTE240M
颜色规格,定义使用 SMPTE 240M 编码的 MPEG2 标准。
@ VPI_COLOR_SPEC_BT601
颜色规格,定义 ITU-R BT.601 标准,有限范围,带有 BT.709 色度坐标和传递函数...
@ VPI_RAW_BAYER_CBRC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_CRCC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_CCCR
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_GBRG
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_RCCB
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_BCCR
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_INVALID
无效的 RAW 模式。
@ VPI_RAW_BAYER_CCRC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_RGGB
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_CCCC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_GRBG
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_RCCC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_CRBC
拜耳格式,其中 X 通道映射到如下样本
@ VPI_RAW_BAYER_BGGR
拜耳格式,其中 X 通道映射到如下样本
@ VPI_COLOR_RANGE_FULL
值覆盖底层类型的完整范围。
@ VPI_COLOR_RANGE_LIMITED
值覆盖底层类型的有限范围。
@ VPI_COLOR_MODEL_RGB
红色、绿色、蓝色分量。
@ VPI_COLOR_MODEL_UNDEFINED
颜色模型未定义。
@ VPI_COLOR_MODEL_XYZ
CIE XYZ 三刺激值颜色规格。
@ VPI_COLOR_MODEL_RAW
RAW 颜色模型,用于拜耳图像格式。
@ VPI_COLOR_MODEL_YCbCr
亮度 + 色度(蓝色-亮度,红色-亮度)。
@ VPI_COLOR_XFER_LINEAR
线性颜色传递函数。
@ VPI_COLOR_XFER_BT709
颜色传递函数,由 ITU-R BT.709 标准指定。
@ VPI_COLOR_XFER_sRGB
颜色传递函数,由 sRGB 标准指定。
@ VPI_COLOR_XFER_PQ
感知量化器颜色传递函数。
@ VPI_COLOR_XFER_sYCC
颜色传递函数,由 sYCC 标准指定。
@ VPI_COLOR_XFER_SMPTE240M
颜色传递函数,由 SMPTE 240M 标准指定。
@ VPI_COLOR_XFER_BT2020
颜色传递函数,由 ITU-R BT.2020 标准指定。
@ VPI_YCbCr_ENC_BT2020
编码,由 ITU-R BT.2020 标准指定。
@ VPI_YCbCr_ENC_BT601
编码,由 ITU-R BT.601 标准指定。
@ VPI_YCbCr_ENC_BT709
编码,由 ITU-R BT.709 标准指定。
@ VPI_YCbCr_ENC_BT2020c
编码,由具有恒定亮度的 ITU-R BT.2020 指定。
@ VPI_YCbCr_ENC_SMPTE240M
编码,由 SMPTE 240M 标准指定。
@ VPI_YCbCr_ENC_UNDEFINED
未定义编码。
@ VPI_CSS_422
4:2:2 BT.601 子采样。
@ VPI_CSS_422R
4:2:2R BT.601 子采样。
@ VPI_CSS_INVALID
无效的色度子采样。
@ VPI_CSS_411R
4:1:1 子采样。
@ VPI_CSS_420
4:2:0 子采样。
@ VPI_CSS_NONE
当不进行色度子采样时使用,特别是对于没有色度分量的颜色规格。
@ VPI_CSS_444
4:4:4 子采样。
@ VPI_CSS_411
4:1:1 子采样。
@ VPI_COLOR_SPACE_BT709
颜色原色,来自 ITU-R BT.709 标准,D65 白点。
@ VPI_COLOR_SPACE_BT2020
颜色原色,来自 ITU-R BT.2020 标准,D65 白点。
@ VPI_COLOR_SPACE_BT601
颜色原色,来自 ITU-R BT.601/625 行标准,也称为 EBU 3213-E。
@ VPI_COLOR_SPACE_SENSOR
颜色空间,来自用于捕获图像的传感器。
@ VPI_COLOR_SPACE_DCIP3
颜色原色,来自 DCI-P3 标准,D65 白点。
@ VPI_COLOR_SPACE_UNDEFINED
颜色空间未定义。
@ VPI_WHITE_POINT_UNDEFINED
白点未定义。
@ VPI_WHITE_POINT_D65
D65 白点,K = 6504。
@ VPI_CHROMA_LOC_BOTH
从偶数和奇数坐标采样色度。
@ VPI_CHROMA_LOC_CENTER
在偶数和奇数坐标之间精确地采样色度。
@ VPI_CHROMA_LOC_ODD
使用奇数坐标采样色度。
@ VPI_CHROMA_LOC_EVEN
使用偶数坐标采样色度。