ZHDA249 July 2026 TDA4VE-Q1
自定义阈值包的公共接口分为 include/TI 下的三个头文件。
1) 聚合包头文件
tivx_custom_threshold.h 头文件为使用该包的应用程序提供了一个包含点。
#include <TI/tivx.h>
#include <TI/tivx_custom_threshold_kernels.h>
#include <TI/tivx_custom_threshold_nodes.h>应用程序可以包含此头文件来访问内核包管理 API 和公共节点创建 API。
2) 内核定义和包 API
tivx_custom_threshold_kernels.h 头文件定义了主机和目标内核实现使用的模块名称和唯一内核名称。
#define TIVX_MODULE_NAME_CUSTOM_THRESHOLD "custom_threshold"
#define TIVX_KERNEL_CUSTOM_THRESHOLD_NAME "com.ti.custom.threshold"模块名称在模块注册和加载过程中标识内核包。内核名称在主机内核、目标内核和应用程序创建或找到相应的 OpenVX 节点时定义自定义阈值内核。
公共头文件中的数字用户内核 ID 不是固定的,而是由主机内核在运行时使用 vxAllocateUserKernelId() 来分配。这避免了分配硬编码的内核枚举值,并允许 OpenVX 上下文提供可用的用户内核 ID。
同一头文件还定义了主机内核、目标内核和节点创建 API 共享的参数索引。
enum{
TIVX_KERNEL_CUSTOM_THRESHOLD_INPUT_IDX = 0,
TIVX_KERNEL_CUSTOM_THRESHOLD_THRESHOLD_IDX,
TIVX_KERNEL_CUSTOM_THRESHOLD_OUTPUT_IDX,
TIVX_KERNEL_CUSTOM_THRESHOLD_MAX_PARAMS
};| 索引 | 参数 | 方向 | OpenVX 类型 | 说明 |
| TIVX_KERNEL_CUSTOM_THRESHOLD_INPUT_IDX | 输入图像 | 输入 | VX_TYPE_IMAGE | U8 灰度源图像 |
TIVX_KERNEL_CUSTOM_THRESHOLD_THRESHOLD_IDX | 阈值 | 输入 | VX_TYPE_SCALAR | 用于像素比较的 U8 标量 |
TIVX_KERNEL_CUSTOM_THRESHOLD_OUTPUT_IDX | 输出图像 | 输出 | VX_TYPE_IMAGE | U8 二进制输出图像 |
TIVX_KERNEL_CUSTOM_THRESHOLD_MAX_PARAMS | 参数计数 | - | - | 节点参数总数 |
void tivxCustomThresholdLoadKernels(vx_context context);
void tivxCustomThresholdUnLoadKernels(vx_context context);这些函数负责协调主机内核模块和 A72 目标内核注册。该应用程序在创建 OpenVX 上下文后调用加载函数,并在释放上下文之前调用卸载函数。
A72 目标内核注册函数也在公共接口中声明。
void tivxRegisterCustomThresholdTargetA72Kernels(void);
void tivxUnRegisterCustomThresholdTargetA72Kernels(void);这些函数注册和注销与 TIVX_TARGET_MPU_0 关联的目标内核实现。
3) 公共节点创建 API
Tivx_custom_threshold_nodes.h 头文件声明应用程序用于实例化自定义阈值节点的辅助函数。
VX_API_ENTRY vx_node VX_API_CALL
tivxCustomThresholdNode(
vx_graph graph,
vx_image input,
vx_scalar threshold,
vx_image output);此函数接受 OpenVX 图形和三个节点参数,并返回 vx_node 对象。在内部,实现使用内核名称 TIVX_KERNEL_CUSTOM_THRESHOLD_NAME 创建节点,并将输入图像、阈值标量和输出图像与其相应的参数索引关联起来。