MI LDC API
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 3.0 | 12/04/2020 | |
| 3.1 | 07/04/2021 | |
| 08/25/2021 | ||
| 3.2 | 05/10/2022 | |
| 4.0 | 06/13/2022 |
1. 概述¶
1.1. 模块说明¶
镜头畸变矫正(Lens distortion correction),目前模块支持功能包括镜头畸变矫正、投影变换映射函数、图像拼接、图像拼接区域融合、防抖功能以及查找表功能。
1.2. 流程框图¶
注:32X2,16X2分别为输入图像,输出图像宽高对齐限制。
1.3. 平台特性¶
各平台支持的功能:
Device0:
| 功能 平台 |
LDC | PMF | DIS | STITCH | NIR | DPU | LUT | LDC Hor |
|---|---|---|---|---|---|---|---|---|
| Muffin | Y | Y | Y | Y | Y | Y | Y | N |
| Mochi | Y | Y | Y | Y | Y | Y | Y | N |
Device1:
| 功能 平台 |
LDC | PMF | DIS | STITCH | NIR | DPU | LUT | LDC Hor |
|---|---|---|---|---|---|---|---|---|
| Muffin | Y | Y | Y | Y | Y | Y | Y | N |
功能介绍:
-
LDC
镜头畸变矫正,根据镜头标定参数,对输入图像进行畸变矫正处理,然后按照用户配置的投影模式以及感兴趣区域进行输出。
-
PMF
投影变换函数,主要是根据用户输入的3x3 Matrix 进行投影变换。
-
STITCH
图像拼接与融合,针对多sensor 输入的图像进行畸变矫正处理,然后将多个图像拼接在一起,最后将图像重叠区域进行融合处理。
-
DIS
数字图像防抖,目前支持陀螺仪算法防抖,即根据陀螺仪产生的数据计算当前帧的图像的运动偏移情况,然后根据运动偏移情况对当前图像进行平移、旋转等变换,从而起到防抖的效果。
-
NIR
用于双光融合的拼接预处理,输出图像需传递至NIR模块进一步处理。
-
DPU
用于双sensor 深度处理的拼接预处理,输出图像需传递至DPU模块进一步处理。
-
LUT
提供二维查找表功能,x,y方向上索引和表的数据位宽都是8bit,可以用于图像融合算法权重表的快速查找。
-
LDC Hor
根据镜头标定参数,对输入图像进行畸变矫正处理,该模式只对水平方向进行矫正
1.4. 关键字说明¶
-
device
LDC 对应的硬件设备。
-
channel
LDC 模块处理通道,各通道分时复用LDC硬件,目前仅支持单通道。
2. API 参考¶
| API名 | 功能 |
|---|---|
| MI_LDC_CreateDevice | 创建LDC 设备 |
| MI_LDC_DestroyDevice | 销毁LDC 设备 |
| MI_LDC_CreateChannel | 创建LDC 通道 |
| MI_LDC_DestroyChannel | 销毁LDC 通道 |
| MI_LDC_StartChannel | 启用LDC 通道 |
| MI_LDC_StopChannel | 禁用LDC 通道 |
| MI_LDC_AttachToChn | 将LDC 通道绑定到对应模块的通道 |
| MI_LDC_DetachFromChn | 将LDC 通道从对应模块通道中解绑定 |
| MI_LDC_SetChnLDCAttr | 配置LDC模式的通道属性 |
| MI_LDC_GetChnLDCAttr | 获取LDC模式的通道属性 |
| MI_LDC_SetChnDISAttr | 配置DIS模式的通道属性 |
| MI_LDC_GetChnDISAttr | 获取DIS模式的通道属性 |
| MI_LDC_SetChnPMFAttr | 配置PMF模式的通道属性 |
| MI_LDC_GetChnPMFAttr | 获取PMF模式的通道属性 |
| MI_LDC_SetChnLDCHorAttr | 配置LDC水平矫正模式通道属性 |
| MI_LDC_GetChnLDCHorAttr | 获取LDC水平矫正模式通道属性 |
| MI_LDC_SetChnStitchAttr | 配置Stitch模式的通道属性 |
| MI_LDC_GetChnStitchAttr | 获取Stitch模式的通道属性 |
| MI_LDC_SetChnDPUAttr | 配置DPU模式的通道属性 |
| MI_LDC_GetChnDPUAttr | 获取DPU模式的通道属性 |
| MI_LDC_SetChnNIRAttr | 配置NIR模式的通道属性 |
| MI_LDC_GetChnNIRAttr | 获取NIR模式的通道属性 |
| MI_LDC_SetInputPortAttr | 配置LDC input port属性 |
| MI_LDC_GetInputPortAttr | 获取LDC input port属性 |
| MI_LDC_SetOutputPortAttr | 配置LDC output port属性 |
| MI_LDC_GetOutputPortAttr | 获取LDC output port属性 |
| MI_LDC_DoLutDirectTask | 执行直接的查表任务,将buf直接送给ldc硬件处理 |
2.1. MI_LDC_CreateDevice¶
-
描述
创建一个LDC 设备。
-
语法
MI_S32 MI_LDC_CreateDevice(MI_LDC_DEV devId, MI_LDC_DevAttr_t *pstDevAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 pstDevAttr Device 属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
LDC 初始化设置, 以及退出范例:
Muffin、Mochi 平台:
MI_S32 s32Ret = MI_SUCCESS; MI_LDC_DEV LdcDevid = 0; MI_LDC_CHN LdcChnId = 0; MI_LDC_DevAttr_t stDevAttr = {}; MI_LDC_ChnAttr_t stChnAttr = {}; MI_LDC_ChnLDCAttr_t stChnLDCAttr = {}; stChnAttr. eMode = MI_LDC_WORKMODE_LDC ; MI_LDC_CreateDevice(LdcDevid, & stDevAttr); MI_LDC_CreateChannel(LdcDevid, LdcChnId, &stChnAttr); // 这里忽略具体配置细节,详细参数参见接口说明 // 需要根据通道模式使用对应的接口进行配置,以下接口调用不分先后 // 1. MI_LDC_SetInputPortAttr // 2. MI_LDC_SetChnLDCAttr // 3. MI_LDC_SetOutputPortAttr MI_LDC_StartChannel(LdcDevid, LdcChnId); /* 退出流程 */ MI_LDC_StopChannel(LdcDevid, LdcChnId); MI_LDC_DestroyChannel(LdcDevid, LdcChnId); MI_LDC_DestroyDevice(LdcDevid); -
相关主题
2.2. MI_LDC_DestroyDevice¶
-
描述
销毁LDC 设备。
-
语法
MI_S32 MI_LDC_DestroyDevice(MI_LDC_DEV devId);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
参见MI_LDC_CreateDevice 举例。
-
相关主题
2.3. MI_LDC_CreateChannel¶
-
描述
创建LDC 通道。
-
语法
MI_S32 MI_LDC_CreateChannel(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnAttr_t *pstChnAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId 通道号 输入 pstChnAttr 通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
-
需在MI_LDC_CreateDevice之后调用。
-
当前设置通道的模式之后,需要搭配对应的接口进行配置,例如配置通道模式为LDC 模式之后,只能使用LDC 模式接口进行配置;如果需要使用其它模式,需要先销毁当前通道,并重新创建对应模式的通道。
-
-
举例
参见MI_LDC_CreateDevice 举例。
-
相关主题
2.4. MI_LDC_DestroyChannel¶
-
描述
销毁LDC 通道。
-
语法
MI_S32 MI_LDC_DestroyChannel(MI_LDC_DEV devId, MI_LDC_CHN chnId);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId 通道号 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
参见MI_LDC_CreateDevice 举例。
-
相关主题
2.5. MI_LDC_StartChannel¶
-
描述
启用LDC 通道。
-
语法
MI_S32 MI_LDC_StartChannel(MI_LDC_DEV devId, MI_LDC_CHN chnId);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId 通道号 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
Device和通道 创建之后调用。
-
举例
参见MI_LDC_CreateDevice举例。
-
相关主题
2.6. MI_LDC_StopChannel¶
-
描述
停用LDC 通道。
-
语法
MI_S32 MI_LDC_StopChannel(MI_LDC_DEV devId, MI_LDC_CHN chnId);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId 通道号 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
参见MI_LDC_CreateDevice举例。
-
相关主题
2.7. MI_LDC_AttachToChn¶
-
描述
将LDC 通道绑定到对应模块的通道。
-
语法
MI_S32 MI_LDC_AttachToChn(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_SYS_ChnPort_t *pstChnPort);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnPort 目标模块的通道信息 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
-
需要在创建通道之后使用(MI_LDC_CreateChannel)。
-
仅支持绑定ISP 模块。
-
-
举例
见MI_LDC_CreateDevice 举例。
-
相关主题
2.8. MI_LDC_DetachFromChn¶
-
描述
将LDC 通道从对应模块的通道解绑定。
-
语法
MI_S32 MI_LDC_DetachFromChn(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_SYS_ChnPort_t *pstChnPort);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnPort 目标模块的通道信息 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
-
相关主题
2.9. MI_LDC_SetChnLDCAttr¶
-
描述
配置LDC模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnLDCAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnLDCAttr_t *pstChnLDCAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnLDCAttr LDC模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.10. MI_LDC_GetChnLDCAttr¶
-
描述
获取LDC模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnLDCAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnLDCAttr_t *pstChnLDCAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnLDCAttr LDC模式的通道属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.11. MI_LDC_SetChnDISAttr¶
-
描述
配置DIS模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnDISAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnDISAttr_t *pstChnDISAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnDISAttr DIS模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.12. MI_LDC_GetChnDISAttr¶
-
描述
获取DIS模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnDISAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnDISAttr_t *pstChnDISAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnDISAttr DIS模式的通道属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.13. MI_LDC_SetChnPMFAttr¶
-
描述
配置PMF模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnPMFAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnPMFAttr_t *pstChnPMFAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnPMFAttr PMF模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.14. MI_LDC_GetChnPMFAttr¶
-
描述
获取PMF模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnPMFAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnPMFAttr_t *pstChnPMFAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnPMFAttr PMF模式的通道属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.15. MI_LDC_SetChnLDCHorAttr¶
-
描述
配置LDC水平模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnLDCHorAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnLDCHorAttr_t *pstChnLDCHorAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnLDCHorAttr LDC水平模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.16. MI_LDC_GetChnLDCHorAttr¶
-
描述
获取LDC水平模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnLDCHorAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnLDCHorAttr_t *pstChnLDCHorAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnLDCHorAttr LDC水平矫正模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.17. MI_LDC_SetChnStitchAttr¶
-
描述
配置Stitch模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnStitchAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnStitchAttr_t *pstChnStitchAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnStitchAttr Stitch模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.18. MI_LDC_GetChnStitchAttr¶
-
描述
获取Stitch模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnStitchAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnStitchAttr_t *pstChnStitchAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnStitchAttr Stitch模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.19. MI_LDC_SetChnDPUAttr¶
-
描述
配置DPU模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnDPUAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnDPUAttr_t *pstChnDPUAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnDPUAttr DPU模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.20. MI_LDC_GetChnDPUAttr¶
-
描述
获取DPU模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnDPUAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnDPUAttr_t *pstChnDPUAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnDPUAttr DPU模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.21. MI_LDC_SetChnNIRAttr¶
-
描述
配置NIR模式的通道属性。
-
语法
MI_S32 MI_LDC_SetChnNIRAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnNIRAttr_t *pstChnNIRAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC 通道号 输入 pstChnNIRAttr NIR模式的通道属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.22. MI_LDC_GetChnNIRAttr¶
-
描述
获取NIR模式的通道属性。
-
语法
MI_S32 MI_LDC_GetChnNIRAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_ChnNIRAttr_t *pstChnNIRAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstChnNIRAttr NIR模式的通道属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.23. MI_LDC_SetInputPortAttr¶
-
描述
配置LDC输入端口的属性。
-
语法
MI_S32 MI_LDC_SetInputPortAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_InputPortAttr_t *pstInputAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstInputAttr 输入端口的属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
该接口需要在创建通道之后使用(MI_LDC_CreateChannel)。
-
举例
见MI_LDC_CreateDevice 举例。
2.24. MI_LDC_GetInputPortAttr¶
-
描述
获取LDC 输入端口的属性。
-
语法
MI_S32 MI_LDC_GetInputPortAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_InputPortAttr_t *pstInputAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstInputAttr 输入端口的属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
该接口需要在创建通道之后使用(MI_LDC_CreateChannel)。
-
举例
见MI_LDC_CreateDevice 举例。
2.25. MI_LDC_SetOutputPortAttr¶
-
描述
配置LDC 输出端口的属性。
-
语法
MI_S32 MI_LDC_SetOutputPortAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_OutputPortAttr_t *pstOutputAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstOutputAttr 输出端口的属性 输入 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
-
该接口需要在创建通道之后使用(MI_LDC_CreateChannel)。
-
该接口支持的格式有: NV12, ARGB8888, BGRA8888。
-
-
举例
MI_LDC_DEV devId = 0; MI_LDC_CHN chnId = 0; MI_LDC_OutputPortAttr_t stLdcPortAttr = {}; MI_LDC_GetOutputPortAttr(devId, chnId, &stLdcPortAttr); stLdcPortAttr.ePixelFmt = E_MI_SYS_PIXEL_FRAME_ARGB8888; MI_LDC_SetOutputPortAttr(devId, chnId, &stLdcPortAttr);
2.26. MI_LDC_GetOutputPortAttr¶
-
描述
获取LDC 输出端口的属性。
-
语法
MI_S32 MI_LDC_GetOutputPortAttr(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_OutputPortAttr_t *pstOutputAttr);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 pstOutputAttr 输出端口的属性 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
该接口需要在创建通道之后使用(MI_LDC_CreateChannel)。
-
举例
见MI_LDC_CreateDevice 举例。
2.27. MI_LDC_DoLutDirectTask¶
-
描述
执行直接的查表任务,将buf直接送给ldc硬件处理。
-
语法
MI_S32 MI_LDC_DoLutDirectTask(MI_LDC_DEV devID, MI_LDC_CHN chnId, MI_LDC_LutTaskAttr_t *pstAttr);
-
参数
参数名称 描述 输入/输出 devID 设备初始化参数 输入 pstAttr 查表任务配置属性 输入/输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
MI_S32 s32Ret = MI_SUCCESS; MI_LDC_DEV devId = 0; MI_LDC_CHN chnId = 0; MI_LDC_LutTaskAttr_t stLutTask = {}; MI_LDC_DirectBuf_t stTableX = {}, stTableY = {}, stTableWeight = {}; void *pVirTableX = NULL, *pVirTableY=NULL, *pVirTableWeight = NULL; #define LUT_TABLE_Init(path, table, ppVir, w, h, __exit_func__) do { \ table.ePixelFormat = E_MI_SYS_PIXEL_FRAME_I8; \ table.u32Width = w; \ table.u32Height = h; \ table.u32Stride[0] = w; \ s32Ret = MI_SYS_MMa_Alloc(0, NULL, w*h, &table.phyAddr[0]); \ if (s32Ret) { printf(“failed to malloc buf\n”); goto __exit_func__; } s32Ret = MI_SYS_Mmap(table.phyAddr[0], w*h, ppVir, false); \ if (s32Ret) { printf(“failed to Mmap buf\n”); goto __exit_func__; } s32Ret = ReadBufFromFile(path, ppVir, w*h); if (s32Ret) { goto __exit_func__; } } while(0) #define LUT_TABLE_Deinit(table, pVir) do { \ if (pVir) { MI_SYS_Munmap(pVir, table.u32Width * table.u32Height); } if (table.phyAddr[0]) { MI_SYS_MMA_Free(0, table.phyAddr[0]); } } while(0) LUT_TABLE_Init(“1080p_tableX”, stTableX, & pVirTableX, 1920, 1080, __exit); LUT_TABLE_Init(“1080p_tableY”, stTableY, & pVirTableY, 1920, 1080, __exit); LUT_TABLE_Init(“1080p_tableWeight”, stTableWeight, &pVirTableWeight, 1920, 1080, __exit); MI_LDC_DoLutDirectTask (devId, chnId, & stLutTask); __exit: LUT_TABLE_Deinit(stTableX, pVirTableX); LUT_TABLE_Deinit(stTableY, pVirTableY); LUT_TABLE_Deinit(stTableWeight, pVirTableWeight);
3. 数据类型¶
模块相关数据类型定义如下:
| 数据类型 | 定义 |
|---|---|
| MI_LDC_DEV | LDC 设备的ID |
| MI_LDC_CHN | LDC 通道的ID |
| MI_LDC_DevAttr_t | LDC 设备的属性 |
| MI_LDC_WorkMode_e | LDC的工作模式 |
| MI_LDC_ChnAttr_t | LDC 通道的属性 |
| MI_LDC_MountMode_e | LDC的挂载模式 |
| MI_LDC_SensorCalibInfo_t | LDC sensor校准参数 |
| MI_LDC_RegionMode_e | LDC 模式的区域模式 |
| MI_LDC_RegionCropMode_e | LDC 区域的裁剪模式 |
| MI_LDC_RegionPara_t | LDC模式的区域矫正参数 |
| MI_LDC_DispMapInfo_t | LDC映射表信息 |
| MI_LDC_RegionAttr_t | LDC 模式的矫正区域的属性 |
| MI_LDC_ChnLDCAttr_t | LDC模式的通道动态参数 |
| MI_LDC_DISMode_e | DIS模式的工作方式 |
| MI_LDC_ChnDISAttr_t | DIS模式的通道动态参数 |
| MI_LDC_ChnPMFAttr_t | PMF模式的通道态参数 |
| MI_LDC_CalibConfig_t | Sensor校准参数 |
| MI_LDC_ChnLDCHorAttr_t | LDC水平模式通道动态参数 |
| MI_LDC_ProjectionMode_e | Stitch的投影模式 |
| MI_LDC_ChnStitchAttr_t | Stitch模式的通道动态参数 |
| MI_LDC_ChnNIRAttr_t | NIR模式的通道动态参数 |
| MI_LDC_ChnDPUAttr_t | DPU模式的通道动态参数 |
| MI_LDC_InputPortAttr_t | LDC 输入端口的属性 |
| MI_LDC_OutputPortAttr_t | LDC 输出端口的属性 |
| MI_LDC_DirectBuf_t | LDC输入buf 类型 |
| MI_LDC_LutTaskAttr_t | LDC图像查找表任务类型 |
3.1. MI_LDC_DEV¶
-
说明
定义LDC 设备的数据类型
-
语法
typedef MI_U32 MI_LDC_DEV;
3.2. MI_LDC_CHN¶
-
说明
定义LDC 通道的数据类型
-
语法
typedef MI_U32 MI_LDC_CHN;
3.3. MI_LDC_DevAttr_t¶
-
说明
LDC设备初始化参数。
-
定义
typedef struct MI_LDC_DevAttr_s { MI_U32 u32Reserved; } MI_LDC_DevAttr_t; -
成员
成员名称 描述 u32Reserved 保留数据 -
相关数据类型及接口
MI_LDC_CreateDevice
3.4. MI_LDC_WorkMode_e¶
-
说明
LDC模块的工作模式。
-
定义
typedef enum { MI_LDC_WORKMODE_LDC = 0x01, MI_LDC_WORKMODE_LUT = 0x02, MI_LDC_WORKMODE_DIS = 0x04, MI_LDC_WORKMODE_PMF = 0x08, MI_LDC_WORKMODE_STITCH = 0x10, MI_LDC_WORKMODE_NIR = 0x20, MI_LDC_WORKMODE_DPU = 0x40, MI_LDC_WORKMODE_LDC_HORIZONTAL = 0x80, MI_LDC_WORKMODE_BUTT } MI_LDC_WorkMode_e; -
成员
成员名称 描述 MI_LDC_WORKMODE_LDC LDC 模式 MI_LDC_WORKMODE_LUT LUT 直接查表模式 MI_LDC_WORKMODE_DIS DIS 模式 MI_LDC_WORKMODE_PMF PMF 模式 MI_LDC_WORKMODE_STITCH STITCH 模式 MI_LDC_WORKMODE_NIR NIR 模式 MI_LDC_WORKMODE_DPU DPU 模式 MI_LDC_WORKMODE_LDC_HORIZONTAL LDC 水平矫正模式 MI_LDC_WORKMODE_BUTT 无效值 -
相关数据类型及接口
3.5. MI_LDC_ChnAttr_t¶
-
说明
LDC设备的通道属性。
-
定义
typedef struct MI_LDC_ChnAttr_s { MI_LDC_WorkMode_e eWorkMode; } MI_LDC_ChnAttr_t; -
成员
成员名称 描述 eWorkMode LDC 通道的工作模式 -
相关数据类型及接口
3.6. MI_LDC_MountMode_e¶
-
说明
Sensor的挂载模式。
-
定义
typedef enum { MI_LDC_DESKTOP_MOUNT = 0x01, MI_LDC_CEILING_MOUNT = 0x02, MI_LDC_WALL_MOUNT = 0x03, MI_LDC_MOUNT_BUTT } MI_LDC_MountMode_e; -
成员
成员名称 描述 MI_LDC_DESKTOP_MOUNT 地装模式 MI_LDC_CEILING_MOUNT 顶装模式 MI_LDC_WALL_MOUNT 壁装模式 MI_LDC_MOUNT_BUTT 无效值 -
相关数据类型及接口
3.7. MI_LDC_SensorCalibInfo_t¶
-
说明
LDC 模式Sensor 校准信息。
-
定义
typedef struct MI_LDC_SensorCalibInfo_s { MI_S32 s32CenterXOffset; MI_S32 s32CenterYOffset; MI_S32 s32FisheyeRadius; void* pCalibPolyBinAddr; MI_U32 u32CalibPolyBinSize; } MI_LDC_SensorCalibInfo_t; -
成员
成员名称 描述 s32CenterXOffset 图像中心点相对于物理中心点的水平偏移 s32CenterYOffset 图像中心点相对于物理中心点的垂直偏移 s32FisheyeRadius 鱼眼半径 pCalibPolyBinAddr 校准信息指针 u32CalibPolyBinSize 校准信息大小 -
相关数据类型及接口
3.8. MI_LDC_RegionMode_e¶
-
说明
LDC 模式的区域模式
-
定义
typedef enum { MI_LDC_REGION_360_PANORAMA = 0x01, MI_LDC_REGION_180_PANORAMA = 0x02, MI_LDC_REGION_NORMAL = 0x03, MI_LDC_REGION_MAP2BIN = 0x04, MI_LDC_REGION_NO_TRANSFORMATION = 0x05, MI_LDC_REGION_BUTT } MI_LDC_RegionMode_e; -
成员
成员名称 描述 MI_LDC_REGION_360_PANORAMA 360 度全景模式,适用于鱼眼镜头顶装与地装模式 MI_LDC_REGION_180_PANORAMA 180 度全景模式,适用于鱼眼镜头壁装模式 MI_LDC_REGION_NORMAL 普通矫正模式 MI_LDC_REGION_MAP2BIN 映射表模式,接受用户直接传入映射表 MI_LDC_REGION_NO_TRANSFORMATION 不做矫正 MI_LDC_REGION_BUTT 无效值 -
相关数据类型及接口
3.9. MI_LDC_RegionCropMode_e¶
-
说明
LDC 区域裁剪模式。
-
定义
typedef enum { MI_LDC_REGION_CROP_NONE = 0x00, MI_LDC_REGION_CROP_FILLING = 0x01, MI_LDC_REGION_CROP_STRETCH = 0x02, MI_LDC_REGION_CROP_BUTT } MI_LDC_RegionCropMode_e; -
成员
成员名称 描述 MI_LDC_REGION_CROP_NONE 不进行任何裁剪 MI_LDC_REGION_CROP_FILLING 依照拉伸的原则进行处理,将处理后的图像的有效区域尽可能的都裁切输出 MI_LDC_REGION_CROP_STRETCH 依照等比例缩放的原则进行处理,将处理后的图像按照预期的输出图像的宽高比例进行裁切放大 MI_LDC_REGION_CROP_BUTT 无效值 -
相关数据类型及接口
3.10. MI_LDC_RegionPara_t¶
-
说明
LDC模式的区域矫正参数。
-
定义
typedef struct MI_LDC_RegionPara_s { MI_LDC_RegionCropMode_e eCropMode; MI_S32 s32Pan; MI_S32 s32Tilt; MI_S32 s32ZoomH; MI_S32 s32ZoomV; MI_S32 s32InRadius; MI_S32 s32OutRadius; MI_S32 s32FocalRatio; MI_S32 s32DistortionRatio; MI_S32 s32OutRotate; } MI_LDC_RegionPara_t; -
成员
成员名称 描述 eCropMode 区域裁剪模式 s32Pan 该矫正区域PTZ参数的Pan值 s32Tilt 该矫正区域PTZ参数的Tilt值 s32ZoomH 该矫正区域PTZ参数的水平Zoom值 s32ZoomV 该矫正区域PTZ参数的垂直Zoom值 s32InRadius 360全景模式表示该矫正区域所对应原图的内半径,其他模式无效 s32OutRadius 360全景模式表示该矫正区域所对应原图的外半径,其他模式为矫正区域的可视半径 s32FocalRatio 用于描述到投影面的距离,数值越大曲率越小画面越平整平滑,数值越小曲率越大画面越弯曲 s32DistortionRatio 畸变强度,负数为枕型,正数为桶型,用于微调输出的图像的畸变程度,提高可视范围,但是线条会畸变 s32OutRotate 用于将输出的图像进行旋转,360 全景模式该参数无效 -
注意事项
LDC 模式支持对一幅图像的多个区域分别进行矫正,每个区域的属性配置都是相互独立的。
-
相关数据类型及接口
3.11. MI_LDC_DispMapInfo_t¶
-
说明
LDC映射表信息。
-
定义
typedef struct MI_LDC_DispMapInfo_s { MI_U32 u32Grid; void *pXmapAddr; void *pYmapAddr; MI_U32 u32XmapSize; MI_U32 u32YmapSize; } MI_LDC_DispMapInfo_t; -
成员
成员名称 描述 u32Grid 映射表的采样精度 pXmapAddr x坐标映射表的起始地址 pYmapAddr x坐标映射表的起始地址 u32XmapSize x坐标的映射表大小 u32YmapSize y坐标的映射表大小 -
相关数据类型及接口
3.12. MI_LDC_RegionAttr_t¶
-
说明
LDC 模式下区域的属性。
-
定义
typedef struct MI_LDC_RegionAttr_s { MI_LDC_RegionMode_e eRegionMode; union { MI_LDC_RegionPara_t stRegionPara; MI_LDC_DispMapInfo_t stRegionMapInfo; }; MI_SYS_WindowRect_t stOutRect; } MI_LDC_RegionAttr_t; -
成员
成员名称 描述 eRegionMode 该区域的模式 stRegionPara 该区域的参数 stRegionMapInfo 该区域映射表信息,当模式为映射表模式时使用 stOutRect 该区域的输出位置及宽高 -
相关数据类型及接口
3.13. MI_LDC_ChnLDCAttr_t¶
-
说明
LDC模式的通道属性。
-
定义
typedef struct MI_LDC_ChnLDCAttr_s { MI_BOOL bBgColor; MI_U32 u32BgColor; MI_LDC_MountMode_e eMountMode; MI_LDC_SensorCalibInfo_t stCalibInfo; MI_U32 u32RegionNum; MI_LDC_RegionAttr_t stRegionAttr[LDC_MAX_REGION_NUM]; } MI_LDC_ChnLDCAttr_t; -
成员
成员名称 描述 bBgColor 是否配置背景颜色 u32BgColor 设置背景颜色, 格式为rgb888 eMountMode 挂载模式 stCalibInfo sensor校准信息 u32RegionNum 矫正区域的数量 stRegionAttr 矫正区域属性 -
相关数据类型及接口
3.14. MI_LDC_DISMode_e¶
-
说明
DIS的工作模式。
-
定义
typedef enum { MI_LDC_DIS_NONE = 0x00, MI_LDC_DIS_GME = 0x01, MI_LDC_DIS_GYRO = 0x02, MI_LDC_DIS_BUTT, } MI_LDC_DISMode_e; -
成员
成员名称 描述 MI_LDC_DIS_NONE 不做任何防抖处理 MI_LDC_DIS_GME 基于GME 算法的防抖模式 MI_LDC_DIS_GYRO 基于陀螺仪算法的防抖模式 MI_LDC_DIS_BUTT 无效值 -
相关数据类型及接口
3.15. MI_LDC_ChnDISAttr_t¶
-
说明
DIS模式的通道参数。
-
定义
typedef struct MI_LDC_ChnDISAttr_s { MI_LDC_DISMode_e eMode; MI_S32 as32RotationMatrix[LDC_MAXTRIX_NUM]; MI_U32 u32UserSliceNum; MI_U32 u32FocalLengthX; MI_U32 u32FocalLengthY; } MI_LDC_ChnDISAttr_t; -
成员
成员名称 描述 eMode 工作模式 as32RotationMatrix 描述陀螺仪相对sensor摆放位置的映射矩阵 u32UserSliceNum 垂直方向上切分数量,主要用于Rolling Shutter相机的运动场景,每个Slice会有单独的3x3 Matrix u32FocalLengthX X轴焦距,单位pixel u32FocalLengthY Y轴焦距,单位pixel -
相关数据类型及接口
3.16. MI_LDC_ChnPMFAttr_t¶
-
说明
PMF模式的通道参数。
-
定义
typedef struct MI_LDC_ChnPMFAttr_s { MI_S64 as64PMFCoef[LDC_PMFCOEF_NUM]; } MI_LDC_ChnPMFAttr_t; -
成员
成员名称 配置范围 as64PMFCoef[0] 取值范围:[-67108864, 67106816] as64PMFCoef[1] 取值范围:[-67108864, 67106816] as64PMFCoef[2] 取值范围:[-137438953472, 137434759168] as64PMFCoef[3] 取值范围:[-67108864, 67106816] as64PMFCoef[4] 取值范围:[-67108864, 67106816] as64PMFCoef[5] 取值范围:[-137438953472, 137434759168] as64PMFCoef[6] 取值范围:[-32768, 32767] as64PMFCoef[7] 取值范围:[-32768, 32767] as64PMFCoef[8] 取固定值:33554432 参数含义:
投影变换矩阵:(x,y)=F(x0,y0)
即表示从输出坐标计算输入坐标,其中x, y为输入图像坐标,x0,y0为输出图像坐标。
-
相关数据类型及接口
3.17. MI_LDC_CalibConfig_t¶
-
说明
Sensor校准参数。
-
定义
typedef struct MI_LDC_CalibConfig_s { void *pCalibCfgAddr; MI_U32 u32CalibCfgSize; } MI_LDC_CalibConfig_t; -
成员
成员名称 描述 pCalibCfgAddr 存储校准信息的内存地址 u32CalibCfgSize 校准信息大小 -
相关数据类型及接口
3.18. MI_LDC_ChnLDCHorAttr_t¶
-
说明
LDC水平模式的通道参数。
-
定义
typedef struct MI_LDC_ChnLDCHorAttr_s { MI_BOOL bCropEn; MI_S32 s32DistortionRatio; MI_LDC_CalibConfig_t stCalCfg; } MI_LDC_ChnLDCHorAttr_t; -
成员
成员名称 描述 bCropEn 是否Crop,当选上之后LDC会将所有无效区域(黑边)裁剪,这会导致视场角变小 s32DistortionRatio 畸变强度,可以用该参数来调节图像校准的强度 stCalCfg Sensor的校准信息 -
相关数据类型及接口
3.19. MI_LDC_ProjectionMode_e¶
-
说明
Stitch模式的投影模式。
-
定义
typedef enum { MI_LDC_PROJECTION_RECTILINEAR = 0x00, MI_LDC_PROJECTION_CYLINDRICAL = 0x01, MI_LDC_PROJECTION_SPHERICAL = 0x02, MI_LDC_PROJECTION_BUTT } MI_LDC_ProjectionMode_e; -
成员
成员名称 描述 MI_LDC_PROJECTION_RECTILINEAR 直线投影模式 MI_LDC_PROJECTION_CYLINDRICAL 圆柱投影模式 MI_LDC_PROJECTION_SPHERICAL 球面投影模式 MI_LDC_PROJECTION_BUTT 无效值 -
相关数据类型及接口
3.20. MI_LDC_ChnStitchAttr_t¶
-
说明
Stitch模式的通道参数。
-
定义
typedef struct MI_LDC_ChnStitchAttr_s { MI_LDC_ProjectionMode_e eProjType; MI_S32 s32Distance; MI_LDC_CalibConfig_t stCalCfg; } MI_LDC_ChnStitchAttr_t; -
成员
成员名称 描述 eProjType 投影模式 s32Distance 拼接平面到sensor的距离,单位mm stCalCfg Sensor的校准信息 -
相关数据类型及接口
3.21. MI_LDC_ChnNIRAttr_t¶
-
说明
NIR模式的通道参数。
-
定义
typedef struct MI_LDC_ChnNIRAttr_s { MI_S32 s32Distance; MI_LDC_CalibConfig_t stCalCfg; } MI_LDC_ChnNIRAttr_t; -
成员
成员名称 描述 s32Distance 拼接平面到sensor的距离,单位mm stCalCfg Sensor的校准信息 -
相关数据类型及接口
3.22. MI_LDC_ChnDPUAttr_t¶
-
说明
DPU模式的通道参数。
-
定义
typedef struct MI_LDC_ChnDPUAttr_s { MI_S32 s32Distance; MI_LDC_CalibConfig_t stCalCfg; } MI_LDC_ChnDPUAttr_t; -
成员
成员名称 描述 s32Distance 拼接平面到sensor的距离,单位mm stCalCfg sensor校准信息 -
相关数据类型及接口
3.23. MI_LDC_InputPortAttr_t¶
-
说明
定义LDC 输入端口的属性。
-
定义
typedef struct MI_LDC_InputPortAttr_s { MI_U16 u16Width; MI_U16 u16Height; } MI_LDC_InputPortAttr_t; -
相关数据类型及接口
3.24. MI_LDC_OutputPortAttr_t¶
-
说明
定义LDC 输出端口的属性。
-
定义
typedef struct MI_LDC_OutputPortAttr_s { MI_U16 u16Width; MI_U16 u16Height; MI_SYS_PixelFormat_e ePixelFmt; } MI_LDC_OutputPortAttr_t; -
相关数据类型及接口
3.25. MI_LDC_DirectBuf_t¶
-
说明
LDC 输入buf的属性。
-
定义
typedef struct MI_LDC_DirectBuf_s { MI_SYS_PixelFormat_e ePixelFormat; MI_U32 u32Width; MI_U32 u32Height; MI_U32 u32Stride[2]; MI_PHY phyAddr[2]; } MI_LDC_DirectBuf_t; -
成员
成员名称 描述 ePixelFormat 图像格式 u32Width 图像宽度 u32Height 图像高度 u32Stride 图片每行所占字节数 phyAddr 图像存储物理地址 -
相关数据类型及接口
3.26. MI_LDC_LutTaskAttr_t¶
-
说明
LDC 图像查找表任务类型。
-
定义
typedef struct MI_LDC_LutTaskAttr_s { struct MI_LDC_LutSrcBuf_s { MI_LDC_DirectBuf_t stTableX; MI_LDC_DirectBuf_t stTableY; MI_LDC_DirectBuf_t stTableWeight; } stSrcBuf; MI_LDC_DirectBuf_t stDstBuf; } MI_LDC_LutTaskAttr_t; -
成员
成员名称 描述 stSrcBuf 查找表的数据源以及权重表 stDstBuf 存放查表之后的输出数据 -
相关数据类型及接口
4. 错误码¶
| 错误代码 | 宏定义 | 描述 |
|---|---|---|
| 0xA0172001 | MI_ERR_LDC_INVALID_DEVID | 无效的设备id |
| 0xA0172002 | MI_ERR_LDC_INVALID_CHNID | 无效的通道id |
| 0xA0172003 | MI_ERR_LDC_ILLEGAL_PARAM | 输入参数非法 |
| 0xA0172006 | MI_ERR_LDC_NULL_PTR | 输入参数空指针错误 |
| 0xA0172008 | MI_ERR_LDC_NOT_SUPPORT | 操作不支持 |
| 0xA017200C | MI_ERR_LDC_NOT_NOMEM | 内存不足 |
| 0xA0172012 | MI_ERR_LDC_BUSY | 通道正忙 |
| 0xA0172015 | MI_ERR_LDC_MOD_NOT_INIT | 模块没有初始化 |
| 0xA0172016 | MI_ERR_LDC_MOD_INITED | 模块已经初始化 |
| 0xA0172018 | MI_ERR_LDC_PORT_NOT_DISABLE | 端口没有失能 |
| 0xA017201F | MI_ERR_LDC_FAIL | 操作执行失败 |
| 0xA0172300 | MI_ERR_LDC_DEV_CREATED | 设备已经创建 |
| 0xA0172301 | MI_ERR_LDC_DEV_NOT_CREATE | 设备还没有创建 |
| 0xA0172302 | MI_ERR_LDC_DEV_NOT_DESTROY | 设备没有被销毁 |
| 0xA0172303 | MI_ERR_LDC_CHN_CREATED | 通道已经创建 |
| 0xA0172304 | MI_ERR_LDC_CHN_NOT_CREATE | 通道还没有创建 |
| 0xA0172305 | MI_ERR_LDC_CHN_NOT_STOP | 通道没有被禁用 |
| 0xA0172306 | MI_ERR_LDC_CHN_NOT_DESTROY | 通道没有被销毁 |
| 0xA0172307 | MI_ERR_LDC_PORT_NOT_UNBIND | 端口没有解绑 |
5. PROCFS介绍¶
5.1. cat¶
-
调试信息
# cat /proc/mi_modules/mi_ldc/mi_ldc<devid>
-
调试信息分析
记录当前 LDC 的使用状况以及相关属性、可以动态地获取到这些信息,方便调试和测试。
-
参数说明

参数 描述 Device Info DevID 设备 ID IRQ_Enable IRQ使能状况 IsrCnt 中断发生的次数,在cmdq mode下没有参考意义 IsrNum 中断号 TotBlkNum 总共需要处理的ldc块的数量 FramDonCnt 处理完帧的数量 cmdqif cmdq 接口地址 HalInFrmCnt 输入到Hal 的帧总数 HalDoneFrmCnt Hal 处理完的帧总数
HalDoneBlkCnt Hal 当前帧处理完的块总数 HalIsrDoneCnt Hal done中断发生的次数 HalIsrErrCnt Hal Err 中断发生的次数 
参数 描述 Channel Info ChnId 通道ID workmode 当前channel的工作模式 status 当前channel的状态:0:init 1:start 2:stop 3:destroyed InputWH 输入帧的分辨率 Pixel 输入帧的格式 Stride 输入帧的stride[0] InBufCnt 前级输入的帧总数量 IntodoCnt 待处理帧的标号(递增) Atom 底层拿住 buffer 数量 EptzInit 初始化算法所用时间 OneBinSz 计算最新view 的buffer size 所用时间 OneBin 计算最新view所用时间 TotalBin LDC 算法计算所有view的时间 LdcDone LDC 硬件处理时间 EnqTDeq 拿到前级buf到处理完的总时间 BlendT alpha blending 所用时间
参数 描述 ChnId 通道ID ViewId ldc 对应窗口的Id mode ldc使用的场景模式 NumRuns ldc 当前场景需要处理的总区块数 ImgFmt ldc 处理的图像格式 OpMode 当前bbox的模式:
0:2048x16 1:1024x32 2:512x64 3:256x128 4: 128x256flip ldc的镜像模式 InSize 当前view的输入区域 ViewSize 当前view的输出区域 OutSize 当前场景的输出区域 ViewTime 当前view的处理时间 Inblk 当前blk的输入区域 OutBlk 当前blk的算法输出区域 SclBlk 当前blk的输出区域 DeltaXY 当前blk对应delta 表的坐标 BlkTime 对应blk的处理时间
5.2. echo¶
Echo help 查看可用命令
# echo help > /proc/mi_modules/mi_ldc/mi_ldc<devid>
以devid 为0的情况为例:
| 功能 | dump LDC 输出文件 |
|---|---|
| 命令 | echo writeoutfile [chnid cnt path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| cnt:dump的数量 | |
| path:dump的路径 | |
| 举例 | echo writeoutfile 0 2 /mnt/ > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 功能 | dump LDC map文件 |
|---|---|
| 命令 | echo dumptablebin [chnid view/all path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| view/all: 下载的方式, view:具体的viewid, all:当前场景所有的view | |
| path:dump的路径 | |
| 举例 | echo dumptablebin 0 all /mnt/ > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 功能 | 配置输出属性 |
|---|---|
| 命令 | echo setout[chnid width height pixel] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| width: 输出图像的width | |
| height:输出图像的height | |
| 举例 | echo setout 0 1920 1080 11 > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 功能 | 循环播放前帧 |
|---|---|
| 命令 | echo loopbuf [chnid cnt] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| cnt:循环播放前帧的次数 | |
| 举例 | echo loopbuf 0 11 > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 功能 | 配置ldc 内部debug trace |
|---|---|
| 命令 | echo debug [chnid str] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| str:debug的方式,off: 关闭,ViewRes, ViewLock,ChnRdLock,ChnWrLock,DisGyro, Eptz | |
| 举例 | echo debug 0 ChnRdLock > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 功能 | 配置单个ldc map |
|---|---|
| 命令 | echo setbin [chnid path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
| 参数说明 | chnid: 通道ID |
| path:map的路径 | |
| 举例 | echo setbin /mnt/ldc.bin > /proc/mi_modules/mi_ldc/mi_ldc0 |