API 的主要入口点是 VPIStream 对象。更多...
类型定义 | |
typedef struct VPIStreamImpl * | VPIStream |
流的句柄。 | |
函数 | |
VPIStatus | vpiStreamCreateWrapperCUDA (CUstream cudaStream, uint64_t flags, VPIStream *stream) |
将现有的 cudaStream_t 封装到 VPI 流中。更多... | |
VPIStatus | vpiStreamCreate (uint64_t flags, VPIStream *stream) |
创建流实例。更多... | |
void | vpiStreamDestroy (VPIStream stream) |
销毁流实例并释放所有硬件资源。更多... | |
VPIStatus | vpiStreamFlush (VPIStream stream) |
提交所有挂起的操作以供执行。更多... | |
VPIStatus | vpiStreamSync (VPIStream stream) |
阻塞调用线程,直到此流队列中所有提交的命令都完成(队列为空)。更多... | |
VPIStatus | vpiStreamWaitEvent (VPIStream stream, VPIEvent event) |
推送一个命令,该命令会阻塞提交到流的所有未来命令的处理,直到事件被信号化。更多... | |
VPIStatus | vpiStreamGetThreadHandle (VPIStream stream, VPINativeThreadHandle *handle) |
返回后台流处理线程的操作系统特定句柄。更多... | |
VPIStatus | vpiStreamGetFlags (VPIStream stream, uint64_t *flags) |
获取创建 VPIStream 时传递的标志。更多... | |
内存创建标志。 | |
enum | VPIBackend |
VPI 后端类型。更多... | |
流特定标志。 | |
#define | VPI_STREAM_GREEDY (1ULL << 63) |
在每次提交时将操作刷新到后端。 | |
API 的主要入口点是 VPIStream 对象。
此对象表示一个命令队列 (FIFO),用于存储要执行的命令列表。命令可能包括运行特定的 CV 算法或在特定后端中发出事件信号。这允许 API 函数相对于调用线程异步执行。调用任何 CV 函数只是将相应的命令推送到 VPIStream 实例中的命令队列并立即返回。然后,排队的命令将被消耗并分派到关联的后端设备。
enum VPIBackend |
#include <vpi/Types.h>
VPI 后端类型。
枚举器 | |
---|---|
VPI_BACKEND_CPU | CPU 后端。 |
VPI_BACKEND_CUDA | CUDA 后端。 |
VPI_BACKEND_PVA | PVA 后端。 |
VPI_BACKEND_VIC | VIC 后端。 |
VPI_BACKEND_NVENC | NVENC 后端。 |
VPI_BACKEND_OFA | OFA 后端。 |
VPI_BACKEND_INVALID | 无效后端。 |
#include <vpi/CUDAInterop.h>
将现有的 cudaStream_t
封装到 VPI 流中。
CUDA 算法将在封装的 cudaStream_t
中提交执行。这允许将 VPI 驱动的处理插入到现有的 CUDA 管道中。算法仍然可以提交到其他后端。
VPIStream 不拥有 cudaStream_t
。它在 VPIStream 生命周期内必须有效。
只有当保证提交给 VPIStream 的所有任务都已完成时,CUDA 内核才能直接提交到 cudaStream_t。
[in] | cudaStream | 要封装的 CUDA 流句柄。
|
[in] | flags | 位字段,指定流的所需特性。VPI_BACKEND_CUDA 始终在内部添加。
|
[out] | stream | 将接收新创建的 VPIStream 的指针。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 stream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | 输入 cudaStream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | 未给出任何后端,并且设置了 VPI_REQUIRE_BACKENDS。 |
VPI_ERROR_OUT_OF_MEMORY | 资源不足,无法创建数组。 |
VPI_ERROR_INVALID_OPERATION | 请求的后端在当前上下文中未启用。 |
VPI_ERROR_INVALID_CONTEXT | 当前上下文已销毁。 |
VPI_SUCCESS | 操作执行成功。 |
#include <vpi/Stream.h>
创建流实例。
[in] | flags | 位字段,指定流的所需特性。
|
[out] | stream | 指向将接收创建的流句柄的内存的指针。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 stream 句柄为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | flags 无效。 |
VPI_ERROR_INVALID_ARGUMENT | 未给出任何后端,并且设置了 VPI_REQUIRE_BACKENDS。 |
VPI_ERROR_OUT_OF_MEMORY | 资源不足,无法分配图像。 |
VPI_ERROR_INVALID_CONTEXT | 当前上下文已销毁。 |
VPI_ERROR_INVALID_OPERATION | 请求的后端在当前上下文中未启用。 |
VPI_SUCCESS | 操作执行成功。 |
void vpiStreamDestroy | ( | VPIStream | stream | ) |
#include <vpi/Stream.h>
销毁流实例并释放所有硬件资源。
此操作将隐式同步流,以保证提交给它的所有操作都已完成。
[in] | stream | 要销毁的流句柄。允许传递 NULL,该函数对此不执行任何操作。 |
#include <vpi/Stream.h>
提交所有挂起的操作以供执行。
[in] | stream | 流句柄。
|
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL 或不代表 VPIStream 实例。 |
VPI_SUCCESS | 操作执行成功 |
#include <vpi/Stream.h>
阻塞调用线程,直到此流队列中所有提交的命令都完成(队列为空)。
此函数调用等效于原子性地调用 vpiEventRecord,然后调用 vpiStreamWaitEvent。
该操作将隐式刷新流。
[in] | stream | 流句柄。
|
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL 或不代表 VPIStream 实例。 |
VPI_SUCCESS | 操作执行成功 |
#include <vpi/Stream.h>
推送一个命令,该命令会阻塞提交到流的所有未来命令的处理,直到事件被信号化。
[in] | stream | 流句柄。
|
[in] | event | 事件句柄。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 event 无效。 |
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL 或不代表 VPIStream 实例。 |
VPI_SUCCESS | 操作执行成功 |
VPIStatus vpiStreamGetThreadHandle | ( | VPIStream | stream, |
VPINativeThreadHandle * | handle | ||
) |
#include <vpi/Stream.h>
返回后台流处理线程的操作系统特定句柄。
[in] | stream | 流句柄。
|
[out] | handle | 流处理线程句柄。 |
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL 或不代表 VPIStream 实例。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 handle 指针为 NULL。 |
VPI_SUCCESS | 操作执行成功。 |
#include <vpi/Stream.h>
获取创建 VPIStream 时传递的标志。
[in] | stream | 流句柄。
|
[out] | flags | 指向变量的指针,标志将存储到该变量中。 |
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL 或不代表 VPIStream 实例。 |
VPI_ERROR_INVALID_ARGUMENT | 输出 flags 指针为 NULL。 |
VPI_SUCCESS | 操作执行成功。 |