数据结构 | |
结构体 | VPIPackingParams |
定义了编码在 VPIPacking 中的参数。 更多... | |
宏 | |
#define | VPI_MAX_CHANNEL_COUNT (4) |
最大 VPI 通道计数。 | |
#define | VPI_MAKE_SWIZZLE_ABBREV(x, y, z, w) |
创建用户定义的通道重排操作,使用缩写参数。 更多... | |
#define | VPI_MAKE_SWIZZLE(x, y, z, w) |
创建用户定义的通道重排操作。 更多... | |
枚举 | |
enum | VPIPacking |
定义了通道如何被打包到图像平面元素中。 更多... | |
enum | VPIDataType |
定义了通道数据类型。 更多... | |
enum | VPIMemLayout |
定义了 2D 平面像素在内存中如何布局。 更多... | |
enum | VPIChannel |
定义了格式通道名称。 更多... | |
enum | VPISwizzle |
定义了支持的通道重排操作。 更多... | |
enum | VPIEndianness |
一个 VPIPacking 值的字节序。 更多... | |
函数 | |
VPISwizzle | vpiMakeSwizzle (VPIChannel x, VPIChannel y, VPIChannel z, VPIChannel w) |
创建用户定义的 VPISwizzle 操作。 更多... | |
void | vpiSwizzleGetChannels (VPISwizzle swizzle, VPIChannel *channels) |
获取通道重排的通道。 更多... | |
int | vpiSwizzleGetChannelCount (VPISwizzle swizzle) |
获取给定通道重排指定的通道数。 更多... | |
VPIPacking | vpiMakePacking (const VPIPackingParams *params) |
根据给定的参数返回预定义的 VPIPacking。 更多... | |
void | vpiPackingGetParams (VPIPacking packing, VPIPackingParams *params) |
从格式打包中返回通道信息。 更多... | |
int | vpiPackingGetComponentCount (VPIPacking packing) |
返回给定打包定义的组件数量。 更多... | |
void | vpiPackingGetBitsPerComponent (VPIPacking packing, int32_t *bits) |
返回每个打包组件的位数。 更多... | |
int | vpiPackingGetBitsPerPixel (VPIPacking packing) |
返回给定打包的每个像素的位数。 更多... | |
struct VPIPackingParams |
定义了编码在 VPIPacking 中的参数。
定义于文件 DataLayout.h 的第 495 行。
数据字段 | ||
---|---|---|
VPIEndianness | 字节序 | 字中的组件排序。 |
VPISwizzle | 通道重排 | 通道排序。
|
int | bits[VPI_MAX_CHANNEL_COUNT] | 每个通道的位数。 如果通道不存在,则对应的 bits==0。 |
#define VPI_MAKE_SWIZZLE_ABBREV | ( | x, | |
y, | |||
z, | |||
w | |||
) |
#include <vpi/DataLayout.h>
创建用户定义的通道重排操作,使用缩写参数。
此宏用于创建用户定义的通道重排操作。参数通过 X, Y, Z, 0, 1 字面指定。它们对应于 VPIChannel 值。 例子
[in] | x | 将对应于第一个组件的通道,不带 VPI_CHANNEL 前缀。 |
[in] | y | 将对应于第二个组件的通道,不带 VPI_CHANNEL 前缀。 |
[in] | z | 将对应于第三个组件的通道,不带 VPI_CHANNEL 前缀。 |
[in] | w | 将对应于第四个组件的通道,不带 VPI_CHANNEL 前缀。 |
定义于文件 DataLayout.h 的第 419 行。
#define VPI_MAKE_SWIZZLE | ( | x, | |
y, | |||
z, | |||
w | |||
) |
#include <vpi/DataLayout.h>
创建用户定义的通道重排操作。
此宏用于创建用户定义的通道重排操作,如果它不是预定义的。 例子
[in] | x | 将对应于第一个组件的通道。 |
[in] | y | 将对应于第二个组件的通道。 |
[in] | z | 将对应于第三个组件的通道。 |
[in] | w | 将对应于第四个组件的通道。 |
定义于文件 DataLayout.h 的第 439 行。
enum VPIPacking |
#include <vpi/DataLayout.h>
定义了通道如何被打包到图像平面元素中。
打包编码了平面元素有多少个通道,以及它们在内存中如何排列。
最多 4 个通道(用 X、Y、Z、W 表示)可以打包到一个图像平面元素中,每个通道占用指定的位数。
当两个通道一个接一个地指定时,它们从最高有效位到最低有效位排序。 字用下划线分隔。 例如
X8Y8Z8W8 = 一个 32 位字,包含 4 个通道,每个通道 8 位。
在小端架构中
Address 0 || 1 || 2 || 3 WWWWWWWWZZZZZZZZYYYYYYYYXXXXXXXX
在大端架构中
Address 0 || 1 || 2 || 3 XXXXXXXXYYYYYYYYZZZZZZZZWWWWWWWW
X8_Y8_Z8_W8 = 四个连续的 8 位字,对应于 4 个通道,每个通道 8 位。
在小端架构中
Address 0 || 1 || 2 || 3 XXXXXXXXYYYYYYYYZZZZZZZZWWWWWWWW
在大端架构中
Address 0 || 1 || 2 || 3 XXXXXXXXYYYYYYYYZZZZZZZZWWWWWWWW
在字小于 8 位的情况下(例如,X1 1 位通道),通道在字内从 LSB 到 MSB 排序。
某些格式允许在像素的水平坐标为偶数或奇数时使用不同的打包。 例如,YUV422 打包格式的每个像素都包含一个 Y 通道,而只有偶数像素包含 U 通道,奇数像素包含 V 通道。 这种格式使用双下划线来分隔偶数像素和奇数像素。 刚刚描述的打包可能被称为 X8_Y8__X8_Z8,其中 X = 亮度,Y = U 色度,Z = V 色度。
定义于文件 DataLayout.h 的第 132 行。
enum VPIDataType |
#include <vpi/DataLayout.h>
定义了通道数据类型。
枚举器 | |
---|---|
VPI_DATA_TYPE_INVALID | 表示无效的数据类型。 在某些函数中用于表示错误返回值。 |
VPI_DATA_TYPE_UNSIGNED | 通道是无符号整数值。 |
VPI_DATA_TYPE_SIGNED | 通道是有符号整数值。 |
VPI_DATA_TYPE_FLOAT | 通道是浮点数值。 |
VPI_DATA_TYPE_FLOATISP | NVIDIA 的专有浮点格式。 |
定义于文件 DataLayout.h 的第 264 行。
enum VPIMemLayout |
#include <vpi/DataLayout.h>
定义了 2D 平面像素在内存中如何布局。
这定义了如何寻址像素,即,给定其 \((x,y)\) 坐标,其内存地址是什么。 块线性格式具有专有的内存表示形式,不应由用户直接寻址。
定义于文件 DataLayout.h 的第 282 行。
enum VPIChannel |
#include <vpi/DataLayout.h>
定义了格式通道名称。
通道与颜色模型无关。
枚举器 | |
---|---|
VPI_CHANNEL_INVALID | 表示无效的通道重排通道。 |
VPI_CHANNEL_0 | 不选择通道。 |
VPI_CHANNEL_X | 选择颜色模型的第一个通道。 |
VPI_CHANNEL_Y | 选择颜色模型的第二个通道。 |
VPI_CHANNEL_Z | 选择颜色模型的第三个通道。 |
VPI_CHANNEL_W | 选择颜色模型的第四个通道。 |
VPI_CHANNEL_1 | 将相应的通道设置为其最大值。 |
定义于文件 DataLayout.h 的第 321 行。
enum VPISwizzle |
#include <vpi/DataLayout.h>
定义了支持的通道重排操作。
这些操作将输入向量 \((x,y,z,w)\) 映射到输出向量 \((x',y',z',w')\)。 任何输出通道都可以选择任何输入通道,或常量零或一。 例如,通道重排 “X000” 选择第一个通道,而通道重排 “ZYXW” 交换 X 和 Z 通道,这是 RGBA 和 BGRA 图像格式之间转换所需要的。
定义于文件 DataLayout.h 的第 341 行。
enum VPIEndianness |
#include <vpi/DataLayout.h>
一个 VPIPacking 值的字节序。
枚举器 | |
---|---|
VPI_INVALID_ENDIAN | 无效的字节序值。 |
VPI_HOST_ENDIAN | 主机机器的字节序。 |
VPI_BIG_ENDIAN | 大端,最高有效字节具有较低的内存地址。 |
定义于文件 DataLayout.h 的第 487 行。
VPISwizzle vpiMakeSwizzle | ( | VPIChannel | x, |
VPIChannel | y, | ||
VPIChannel | z, | ||
VPIChannel | w | ||
) |
#include <vpi/DataLayout.h>
创建用户定义的 VPISwizzle 操作。
这与 VPI_MAKE_SWIZZLE 类似,但接受通道重排通道作为运行时变量。
[in] | x | 将对应于第一个组件的通道。 |
[in] | y | 将对应于第二个组件的通道。 |
[in] | z | 将对应于第三个组件的通道。 |
[in] | w | 将对应于第四个组件的通道。 |
VPI_SWIZZLE_INVALID | 输入通道无效。 |
void vpiSwizzleGetChannels | ( | VPISwizzle | 通道重排, |
VPIChannel * | channels | ||
) |
#include <vpi/DataLayout.h>
获取通道重排的通道。
例如,给定通道重排 VPI_SWIZZLE_YZWX,它返回 VPI_CHANNEL_Y、VPI_CHANNEL_Z、VPI_CHANNEL_W 和 VPI_CHANNEL_X。
[in] | 通道重排 | 要查询的通道重排。 |
[out] | channels | 包含 4 个元素的输出通道数组。 |
int vpiSwizzleGetChannelCount | ( | VPISwizzle | 通道重排 | ) |
VPIPacking vpiMakePacking | ( | const VPIPackingParams * | params | ) |
#include <vpi/DataLayout.h>
根据给定的参数返回预定义的 VPIPacking。
此函数在运行时根据通道特性计算 VPIPacking。
[in] | params | 打包参数。 如果 VPIPackingParams::swizzle 设置为 VPI_SWIZZLE_0000 或 VPI_SWIZZLE_INVALID,则通道重排将从 VPIPackingParams::bits 推断 |
params
对应的打包枚举。VPI_PACKING_INVALID | 请求的打包未定义或格式错误。 |
VPI_PACKING_INVALID | params 为 NULL。 |
void vpiPackingGetParams | ( | VPIPacking | packing, |
VPIPackingParams * | params | ||
) |
#include <vpi/DataLayout.h>
从格式打包中返回通道信息。
[in] | packing | 要查询的格式打包。 |
[out] | params | 打包参数。 允许传递 NULL,函数对此不执行任何操作。 |
int vpiPackingGetComponentCount | ( | VPIPacking | packing | ) |
void vpiPackingGetBitsPerComponent | ( | VPIPacking | packing, |
int32_t * | bits | ||
) |
#include <vpi/DataLayout.h>
返回每个打包组件的位数。
[in] | packing | 要查询的格式打包。 |
[out] | bits | 指向包含 4 个元素的 int32_t 数组的指针,输出将存储在该数组中。 允许传递 NULL,函数对此不执行任何操作。 |
int vpiPackingGetBitsPerPixel | ( | VPIPacking | packing | ) |
#include <vpi/DataLayout.h>
返回给定打包的每个像素的位数。
[in] | packing | 要查询的格式打包。 |