aclvencChannelDescParamType
acldvppChannelDescParamType
enum acldvppChannelDescParamType {
ACL_DVPP_CSC_MATRIX_UINT32 = 0, // 色域转换矩阵属性,该属性类型对应的值为uint32_t类型
ACL_DVPP_MODE_UINT32, // 通道描述信息中的通道模式,该属性类型对应的值为uint32_t类型
ACL_DVPP_CHANNEL_ID_UINT64, // 通道ID,该属性类型对应的值为uint64_t类型
ACL_DVPP_CHANNEL_HEIGHT_UINT32, // 通道的高度,该属性类型对应的值为uint32_t类型
ACL_DVPP_CHANNEL_WIDTH_UINT32, // 通道的宽度,该属性类型对应的值为uint32_t类型
ACL_DVPP_JPEGD_PRECISION_MODE_ENUM // JPEGD解码输出图片的宽、高对齐模式,该属性类型对应的值为int32_t类型
}
表1 属性配置
| 属性类型 | 取值说明 |
|---|---|
| ACL_DVPP_CSC_MATRIX_UINT32 | 色域转换矩阵属性,属性值请参见acldvppCscMatrix。 |
| ACL_DVPP_MODE_UINT32 | 通道描述信息中的通道模式,用于明确图片数据处理通道用于实现哪种功能,目前支持VPC、JPEGD、JPEGE、PNGD功能。属性值请参见acldvppChannelMode。 |
| ACL_DVPP_CHANNEL_ID_UINT64 | 通道ID。 |
| ACL_DVPP_CHANNEL_HEIGHT_UINT32 | 通道的高度,目前仅支持在JPEGE功能中使用该属性,其它功能中设置该属性无效。 Atlas 200/500 A2推理产品上,默认值为8192,最大值为16384,若输入图片高大于8192,则需要调用acldvppSetChannelDescParam接口设置通道高度。 |
| ACL_DVPP_CHANNEL_WIDTH_UINT32 | 通道的宽度,目前仅支持在JPEGE功能中使用该属性,其它功能中设置该属性无效。 默认值为8192,最大值为16384,若输入图片宽大于8192,则需要调用acldvppSetChannelDescParam接口设置通道宽度。 |
| ACL_DVPP_JPEGD_PRECISION_MODE_ENUM | JPEGD解码输出图片的宽、高对齐模式,模式选项参见acldvppJpegdPrecisionMode。 目前仅支持在JPEGD功能中使用该属性,其它功能中设置该属性无效。 |
父主题: 数据类型及其操作接口
aclvdecChannelDescParamType
enum aclvdecChannelDescParamType {
ACL_VDEC_CSC_MATRIX_UINT32 = 0, //色域转换矩阵属性,该属性类型对应的值为uint32_t类型
ACL_VDEC_OUT_MODE_UINT32, //是否实时出帧,该属性类型对应的值为uint32_t类型
ACL_VDEC_THREAD_ID_UINT64, //回调线程ID,该属性类型对应的值为uint64_t类型
ACL_VDEC_CALLBACK_PTR, //回调函数,该属性类型对应的值是内存指针
ACL_VDEC_CHANNEL_ID_UINT32, //通道号,该属性类型对应的值为uint32_t类型
ACL_VDEC_ENCODE_TYPE_UINT32, //视频编码协议,该属性类型对应的值为uint32_t类型
ACL_VDEC_OUT_PIC_FORMAT_UINT32, //输出图片格式,该属性类型对应的值为uint32_t类型
ACL_VDEC_OUT_PIC_WIDTH_UINT32, //解码码流最大宽度,该属性类型对应的值为uint32_t类型
ACL_VDEC_OUT_PIC_HEIGHT_UINT32, //解码码流最大高度,该属性类型对应的值为uint32_t类型
ACL_VDEC_REF_FRAME_NUM_UINT32, //参考帧数量,该属性类型对应的值为uint32_t类型
ACL_VDEC_BIT_DEPTH_UINT32 //视频位宽,该属性类型对应的值为uint32_t类型
}
表1 属性配置
| 属性类型 | 取值说明 |
|---|---|
| ACL_VDEC_CSC_MATRIX_UINT32 | 色域转换矩阵属性,属性值请参见acldvppCscMatrix。 |
| ACL_VDEC_OUT_MODE_UINT32 | 设置是否实时出帧(即发送一帧解码一帧,无需依赖后续帧的传入)。 取值范围如下: - 0:默认出帧模式,由于解码过程中存在缓存帧,无法实时输出,因此VDEC需要在收到码流中的多帧数据后,才开始输出解码结果。 - 1:快速出帧模式,VDEC获取码流中的一帧数据后,就开始实时输出解码结果。只支持简单参考关系的H264/H265标准码流(无长期参考帧,无B帧)。 |
| ACL_VDEC_THREAD_ID_UINT64 | 回调线程ID。 (说明:同一个进程内,在不同的Device上注册VDEC解码回调函数的线程时,不能指定同一个线程ID。 同一个Device上,多路VDEC解码可以指定同一个线程ID,但相比一个线程处理一路VDEC解码任务来说,一个线程内串行处理多路VDEC解码任务时,VDEC解码性能可能下降。) |
| ACL_VDEC_CALLBACK_PTR | 解码回调函数。 请参见aclvdecCallback。 |
| ACL_VDEC_CHANNEL_ID_UINT32 | 通道ID。 Atlas 200/500 A2推理产品,该参数值的取值范围[0, 255]。 |
| ACL_VDEC_ENCODE_TYPE_UINT32 | 视频编码协议H265-main level(0)、H264-baseline level(1)、H264-main level(2)、H264-high level(3)。 请参见acldvppStreamFormat。 |
| ACL_VDEC_OUT_PIC_FORMAT_UINT32 | YUV图像存储格式,支持如下格式: - YUV420SP NV12 - YUV420SP NV21 - RGB888 - BGR888 如果不设置输出格式,默认使用YUV420SP NV12。 |
| ACL_VDEC_OUT_PIC_WIDTH_UINT32 | 解码码流最大宽度。 Atlas 200/500 A2推理产品,如果不设置解码码流最大宽度,内部默认使用4096。 |
| ACL_VDEC_OUT_PIC_HEIGHT_UINT32 | 解码码流最大高度。 Atlas 200/500 A2推理产品,如果不设置解码码流最大宽度,内部默认使用4096。 |
| ACL_VDEC_REF_FRAME_NUM_UINT32 | 参考帧数量,取值范围[0, 16]。 Atlas 200/500 A2推理产品,如果不设置参考帧数量,内部默认使用8。 |
| ACL_VDEC_BIT_DEPTH_UINT32 | 设置视频位宽,默认值为10-bit。 取值范围如下: - 0:8-bit - 1: 10-bit(默认值) |
父主题: 数据类型及其操作接口
aclvencChannelDescParamType
enum aclvencChannelDescParamType {
ACL_VENC_THREAD_ID_UINT64 = 0, //回调线程ID,该属性类型对应的值为uint64_t类型
ACL_VENC_CALLBACK_PTR, //回调函数,该属性类型对应的值是内存指针
ACL_VENC_PIXEL_FORMAT_UINT32, //输入图像格式,该属性类型对应的值为uint32_t类型
ACL_VENC_ENCODE_TYPE_UINT32, //视频编码协议,该属性类型对应的值为uint32_t类型
ACL_VENC_PIC_WIDTH_UINT32, //输入图片宽度,该属性类型对应的值为uint32_t类型
ACL_VENC_PIC_HEIGHT_UINT32, //输入图片高度,该属性类型对应的值为uint32_t类型
ACL_VENC_KEY_FRAME_INTERVAL_UINT32, //关键帧间隔,该属性类型对应的值为uint32_t类型
ACL_VENC_BUF_ADDR_PTR, //编码输出缓存地址
ACL_VENC_BUF_SIZE_UINT32, //编码输出缓存大小,该属性类型对应的值为uint32_t类型
ACL_VENC_RC_MODE_UINT32, //码率控制模式,该属性类型对应的值为uint32_t类型
ACL_VENC_SRC_RATE_UINT32, //输入码流帧率,该属性类型对应的值为uint32_t类型
ACL_VENC_MAX_BITRATE_UINT32, //输出码率,该属性类型对应的值为uint32_t类型
ACL_VENC_MAX_IP_PROP_UINT32 //一个GOP内单个I帧bit数和单个P帧bit数的比例,该属性类型对应的值为uint32_t类型
}
表1 属性配置
| 属性类型 | 取值说明 |
|---|---|
| ACL_VENC_THREAD_ID_UINT64 | 回调线程ID。(说明:同一个进程内,在不同的Device上注册VENC编码回调函数的线程时,不能指定同一个线程ID。) |
| ACL_VENC_CALLBACK_PTR | 编码回调函数。 |
| ACL_VENC_PIXEL_FORMAT_UINT32 | 输入图像格式,支持如下格式: - PIXEL_FORMAT_YUV_SEMIPLANAR_420 - PIXEL_FORMAT_YVU_SEMIPLANAR_420 |
| ACL_VENC_ENCODE_TYPE_UINT32 | 视频编码协议。 参见acldvppStreamFormat。 |
| ACL_VENC_PIC_WIDTH_UINT32 | 图片宽度。 |
| ACL_VENC_PIC_HEIGHT_UINT32 | 图片高度。 |
| ACL_VENC_KEY_FRAME_INTERVAL_UINT32 | 关键帧间隔,取值范围[1,65536]。 |
| ACL_VENC_BUF_ADDR_PTR | 编码输出缓存指针。 |
| ACL_VENC_BUF_SIZE_UINT32 | 编码输出缓存大小,单位为Byte。(说明:Atlas 200/500 A2推理产品 ,如果不设置该参数,参数值默认为8M;如果设置该参数,参数值最小为5M。) |
| ACL_VENC_RC_MODE_UINT32 | 指定码率控制模式。 - 0表示使用默认值 - 1表示变码率VBR模式 - 2表示定码率CBR模式 (说明:如果不设置该参数,则采用默认值0。 Atlas 200/500 A2推理产品 ,默认值0表示VBR模式。) |
| ACL_VENC_SRC_RATE_UINT32 | 输入码流帧率,单位fps。 Atlas 200/500 A2推理产品,取值范围0或者[1,240]。 如果不设置该参数,默认为30;如果设置为0,表示使用默认值,即30。如果该值和实际输入码流帧率相差太大,会影响输出码率。 |
| ACL_VENC_MAX_BITRATE_UINT32 | 输出码率,单位kbps。 Atlas 200/500 A2推理产品,取值范围[2,614400],如果不设置该参数,默认为2000;如果设置为0,表示使用默认值,即2000。 |
| ACL_VENC_MAX_IP_PROP_UINT32 | 一个GOP内单个I帧bit数和单个P帧bit数的比例,取值范围0或[1,100] 。如果不设置该参数,VBR模式下此值默认为80,CBR模式下此值默认为70;如果设置为0,表示使用默认值,即VBR模式下此值默认为80,CBR模式下此值默认为70。 |
父主题: 数据类型及其操作接口
aclmdlConfigAttr
typedef enum {
ACL_MDL_PRIORITY_INT32 = 0,
ACL_MDL_LOAD_TYPE_SIZET,
ACL_MDL_PATH_PTR,
ACL_MDL_MEM_ADDR_PTR,
ACL_MDL_MEM_SIZET,
ACL_MDL_WEIGHT_ADDR_PTR,
ACL_MDL_WEIGHT_SIZET,
ACL_MDL_WORKSPACE_ADDR_PTR,
ACL_MDL_WORKSPACE_SIZET,
ACL_MDL_INPUTQ_NUM_SIZET,
ACL_MDL_INPUTQ_ADDR_PTR,
ACL_MDL_OUTPUTQ_NUM_SIZET,
ACL_MDL_OUTPUTQ_ADDR_PTR,
ACL_MDL_WORKSPACE_MEM_OPTIMIZE
} aclmdlConfigAttr;
表1 模型加载选项配置
| 选项 | 取值说明 |
|---|---|
| ACL_MDL_PRIORITY_INT32 | 模型执行的优先级,数字越小优先级越高,取值[0,7],可选项。默认值为0。 |
| ACL_MDL_LOAD_TYPE_SIZET | 模型加载方式,必选项。 ACL_MDL_LOAD_TYPE_SIZET(表示模型加载方式)的取值使用如下宏: - ACL_MDL_LOAD_FROM_FILE text<br> #define ACL_MDL_LOAD_FROM_FILE 1<br> - ACL_MDL_LOAD_FROM_FILE_WITH_MEM text<br> #define ACL_MDL_LOAD_FROM_FILE_WITH_MEM 2<br> - ACL_MDL_LOAD_FROM_MEM text<br> #define ACL_MDL_LOAD_FROM_MEM 3<br> - ACL_MDL_LOAD_FROM_MEM_WITH_MEM text<br> #define ACL_MDL_LOAD_FROM_MEM_WITH_MEM 4<br> - ACL_MDL_LOAD_FROM_FILE_WITH_Q text<br> #define ACL_MDL_LOAD_FROM_FILE_WITH_Q 5<br> |
| ACL_MDL_PATH_PTR | 离线模型文件路径的指针,如果选择从文件加载模型,则该选项必选。 |
| ACL_MDL_MEM_ADDR_PTR | 模型在内存中的起始地址,如果选择从内存加载模型,则该选项必选。 |
| ACL_MDL_MEM_SIZET | 模型在内存中的大小,如果选择从内存加载模型,则该选项必选,与ACL_MDL_MEM_ADDR_PTR选项配合使用。 |
| ACL_MDL_WEIGHT_ADDR_PTR | Device上模型权值内存(存放权值数据)的指针,如果需要由用户管理权值内存,则该选项必选。若不配置该选项,则表示由系统管理内存。 |
| ACL_MDL_WEIGHT_SIZET | 权值内存大小,单位为Byte,如果需要由用户管理权值内存,则该选项必选,与ACL_MDL_WEIGHT_ADDR_PTR选项配合使用。 |
| ACL_MDL_WORKSPACE_ADDR_PTR | Device上模型所需工作内存(存放模型执行过程中的临时数据)的指针,如果需要由用户管理工作内存,则该选项必选。若不配置该选项,则表示由系统管理内存。 |
| ACL_MDL_WORKSPACE_SIZET | 模型所需工作内存的大小,单位为Byte,如果需要由用户管理工作内存,则该选项必选,与ACL_MDL_WORKSPACE_ADDR_PTR选项配合使用。 |
| ACL_MDL_INPUTQ_NUM_SIZET | 模型输入队列大小 ,带队列加载模型时,该选项必选,与ACL_MDL_INPUTQ_ADDR_PTR选项配合使用。 |
| ACL_MDL_INPUTQ_ADDR_PTR | 模型输入队列ID的指针,带队列加载模型时,该选项必选,一个模型输入对应一个队列ID。 |
| ACL_MDL_OUTPUTQ_NUM_SIZET | 模型输出队列大小,带队列加载模型时,该选项必选,与ACL_MDL_OUTPUTQ_ADDR_PTR选项配置使用。 |
| ACL_MDL_OUTPUTQ_ADDR_PTR | 模型输出队列ID的指针,带队列加载模型时,该选项必选,一个模型输出对应一个队列ID。 |
| ACL_MDL_WORKSPACE_MEM_OPTIMIZE | 是否开启模型工作内存优化功能,1开启,0不开启。 若关注内存规划或内存资源有限时,建议在模型加载前,开启工作内存优化功能,此时工作内存中不包含存放模型输入、输出数据的内存,工作内存大小会减小,达到节省内存的目的。 在模型执行前,还需要由用户申请存放模型输入、输出数据的内存,因此即使在模型加载时开启工作内存优化功能,也不会影响后续的模型执行。 |
:::note 说明
-
关于如何获取om文件,请参见《ATC工具使用指南》。
-
对om模型文件大小有限制的场景下,如果使用ATC工具生成om文件时,将--external_weight参数设置为1(1表示将原始网络中的Const/Constant节点的权重保存在单独的文件中,且该文件保存在与om文件同级的weight目录下),那么在使用本接口加载om文件时,需将weight目录与om文件放在同级目录下,这时AscendCL会自行到weight目录下查找权重文件,否则可能会导致单独的权重文件加载不成功。 :::
父主题: 数据类型及其操作接口
aclMemType
typedef enum {
ACL_MEMTYPE_DEVICE = 0, //Device内存
ACL_MEMTYPE_HOST = 1, //Host内存
ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT = 2 //Host内存
}
ACL_MEMTYPE_HOST和ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT都标识Host内存,但在使用上有区别:
- ACL_MEMTYPE_HOST:若通过aclSetCompileopt接口将ACL_OP_JIT_COMPILE设置为disable,设置该选项时,算子输入或输出的值的变化,不会触发算子重新编译;若通过aclSetCompileopt接口将ACL_OP_JIT_COMPILE设置为enable,算子输入或输出的值的变化,会触发算子重新编译。
- ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT :设置该选项时,算子输入或输出的值的变化,都不会触发算子重新编译。若算子编译时依赖其输入或输出的值,此时如果设置为 ACL_MEMTYPE_HOST_COMPILE_INDEPENT,则可能会导致编译失败。
父主题: 数据类型及其操作接口
在线提单