二维图像金字塔的抽象表示。 更多...
|
typedef struct VPIPyramidImpl * | VPIPyramid |
| 图像金字塔的句柄。
|
|
|
VPIStatus | vpiPyramidCreate (int32_t width, int32_t height, VPIImageFormat fmt, int32_t numLevels, float scale, uint64_t flags, VPIPyramid *pyr) |
| 使用指定的标志创建空的图像金字塔实例。 更多...
|
|
void | vpiPyramidDestroy (VPIPyramid pyr) |
| 销毁图像金字塔实例以及它拥有的所有资源。 更多...
|
|
VPIStatus | vpiPyramidGetFlags (VPIPyramid pyr, uint64_t *flags) |
| 返回与金字塔关联的标志。 更多...
|
|
VPIStatus | vpiPyramidGetFormat (VPIPyramid pyr, VPIImageFormat *fmt) |
| 返回金字塔层级的图像格式。 更多...
|
|
VPIStatus | vpiPyramidGetNumLevels (VPIPyramid pyr, int32_t *numLevels) |
| 获取图像金字塔层级计数。 更多...
|
|
VPIStatus | vpiPyramidGetSize (VPIPyramid pyr, int32_t outSize, int32_t *outWidth, int32_t *outHeight) |
| 获取图像宽度和高度(以像素为单位)(一次获取所有层级)。 更多...
|
|
VPIStatus | vpiPyramidGetScale (VPIPyramid pyr, float *scale) |
| 返回金字塔层级的缩放因子。 更多...
|
|
VPIStatus | vpiPyramidLock (VPIPyramid pyr, VPILockMode lock) |
| 获取金字塔对象的锁。 更多...
|
|
VPIStatus | vpiPyramidLockData (VPIPyramid pyr, VPILockMode lock, VPIImageBufferType bufType, VPIPyramidData *out) |
| 获取金字塔对象的锁,并返回可由主机访问的金字塔每一层的指针。 更多...
|
|
VPIStatus | vpiPyramidUnlock (VPIPyramid pyr) |
| 释放图像金字塔对象的锁。 更多...
|
|
VPIStatus | vpiImageCreateWrapperPyramidLevel (VPIPyramid pyr, int32_t level, VPIImage *img) |
| 创建包裹一个金字塔层级的图像。 更多...
|
|
二维图像金字塔的抽象表示。
2D图像金字塔容器通过调用 vpiPyramidCreate 来创建,以分配和初始化一个空的(清零的)VPIPyramid 对象。图像金字塔数据的内存由VPI分配和管理。
图像格式与图像容器支持的格式匹配。金字塔不一定是二元的。层级之间的缩放比例在构造函数中定义。
诸如层级、缩放比例、宽度、高度和图像格式等参数是不可变的,并在构造时指定。内部内存布局也是后端特定的。更重要的是,不同硬件块之间高效的图像金字塔数据交换可能迫使实现将内存分配在多个内存池中(例如,dGPU和系统DRAM)。在某些情况下(为了优化性能和内存使用),限制内部分配策略以仅支持特定的后端集合可能是有益的。
vpiPyramidLockData / vpiPyramidUnlock 调用集允许用户从主机读取/写入图像数据。这些函数是非阻塞的,并且忽略设备命令队列,因此用户需要确保所有使用此图像金字塔作为输入或输出的挂起操作都已完成。此外,根据启用的后端,锁定/解锁操作可能非常耗时,例如,对于dGPU,可能涉及通过PCIe总线复制数据。
◆ VPIPyramidData
◆ vpiPyramidCreate()
pyr
#include <vpi/Pyramid.h>
使用指定的标志创建空的图像金字塔实例。
- 金字塔数据被清零。
-
参数 | [in] | width,height
|
参数 | numLevels | 宽度和高度必须 > 0。
|
参数 | scale | 层级数。
|
参数 | fmt | scale
- 从一个层级到下一个层级的缩放因子。
- 必须 > 0 且 <= 1。
- fmt
|
参数 | uint64_t | 每个层级的图像格式。
- 接受非 YUV 或 YUV 4:4:4 格式(不允许色度二次采样)
- flags
|
位字段,指定金字塔的所需特性。 | 该字段必须是零个或多个以下标志的组合 | VPIBackend 标志。此金字塔可用于在这些后端中运行的算法。如果未给出后端标志且未设置 VPI_REQUIRE_BACKENDS,它将考虑活动 VPIContext 支持的所有后端,但禁用与给定图像参数不兼容的后端。 |
- 通用对象标志
-
当前上下文已销毁。
VPI_ERROR_INVALID_OPERATION |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合 | ) |
|
pyr
VPI_SUCCESS
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 操作成功执行。
|
void vpiPyramidDestroy
VPIPyramid |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
pyr |
销毁图像金字塔实例以及它拥有的所有资源。 |
|
) |
| |
pyr
金字塔句柄。允许传递 NULL,函数对此不执行任何操作。
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
位字段,指定金字塔的所需特性。 | uint64_t | VPIStatus vpiPyramidGetFlags
|
- 通用对象标志
-
uint64_t *
flags |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
返回与金字塔关联的标志。 |
金字塔句柄。 |
|
) |
| |
pyr
强制性参数,不能为 NULL。
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
位字段,指定金字塔的所需特性。 | fmt | 指向将写入标志的位置的指针。
|
- 通用对象标志
-
VPI_ERROR_INVALID_ARGUMENT
输出 flags 指针为 NULL。 |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
pyr 为 NULL 或不代表 VPIPyramid 实例。 |
◆ vpiPyramidGetFormat() |
|
) |
| |
pyr
VPIStatus vpiPyramidGetFormat
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
位字段,指定金字塔的所需特性。 | numLevels | VPIPyramid
|
- 通用对象标志
-
fmt |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
int32_t |
返回金字塔层级的图像格式。, |
|
|
pyr 为 NULL 或不代表 VPIPyramid 实例。 |
指向将写入图像格式的位置的指针。, |
|
|
pyr 为 NULL 或不代表 VPIPyramid 实例。 |
返回值 |
|
) |
| |
pyr
VPI_ERROR_INVALID_ARGUMENT
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
参数 | 返回金字塔层级的图像格式。 | 输出 fmt 为 NULL。
- ◆ vpiPyramidGetNumLevels()
|
位字段,指定金字塔的所需特性。 | VPIStatus vpiPyramidGetNumLevels | VPIPyramid |
- 通用对象标志
-
numLevels
获取图像金字塔层级计数。 |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
指向将设置为图像金字塔层级数的变量的指针。 |
返回值 |
|
) |
| |
pyr
VPI_ERROR_INVALID_ARGUMENT
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
位字段,指定金字塔的所需特性。 | scale | 输出 numLevels 指针为 NULL。
|
- 通用对象标志
-
VPIPyramid |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
pyr |
int32_t |
|
) |
| |
pyr
outSize
int32_t *
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
- ◆ vpiPyramidGetFlags()
- outWidth
|
参数 | int32_t * | outHeight
- 获取图像宽度和高度(以像素为单位)(一次获取所有层级)。
|
- 通用对象标志
-
outSize
超出有效范围。
outWidth 和 outHeight 不能为 NULL。 |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
pyr |
int32_t * , |
|
|
◆ vpiPyramidGetScale() |
VPIStatus vpiPyramidGetScale, |
|
|
VPIPyramid |
pyr |
|
) |
| |
pyr
float *
scale
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
- ◆ vpiPyramidGetFlags()
- outWidth
- 返回金字塔层级的缩放因子。
|
参数 | int32_t * | outHeight
- 获取图像宽度和高度(以像素为单位)(一次获取所有层级)。
|
参数 | VPIStatus vpiPyramidGetScale | VPIPyramid
|
位字段,指定金字塔的所需特性。 | pyr | VPILockMode
|
- 通用对象标志
-
金字塔不得以与给定 mode 不兼容的模式锁定。 |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合 | ) |
|
pyr
lock
锁定模式。
- 金字塔数据被清零。
-
参数 | 该字段必须是零个或多个以下标志的组合 | 金字塔不得被任何流使用,否则将导致未定义的行为。
|
- 通用对象标志
-
VPI_LOCK_WRITE
VPI_LOCK_READ_WRITE |
( |
请求的后端在当前上下文中未启用。 |
该字段必须是零个或多个以下标志的组合, |
|
|
int32_t |
返回值, |
|
|
VPI_ERROR_BUFFER_LOCKED |
金字塔已被流或用户锁定。 |
|
) |
| |
pyr
VPI_SUCCESS
操作成功执行
◆ vpiPyramidLockData()
- 金字塔数据被清零。
-
- 通用对象标志
-