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 | |
11/15/2022 | ||
4.1 | 01/12/2023 | |
02/16/2023 | ||
03/15/2023 | ||
06/29/2023 | ||
08/09/2023 | ||
08/10/2023 | ||
09/05/2023 | ||
09/26/2023 | ||
11/21/2023 |
1. 概述¶
1.1. 模块说明¶
镜头畸变矫正(Lens distortion correction),目前模块支持功能包括镜头畸变矫正、投影变换映射函数、图像拼接、图像拼接区域融合、防抖功能以及查找表功能。
1.2. 流程框图¶
1.2.1 Souffle 框图¶
1.2.1.1 DIS
1.2.1.1.2 DIS-GME Mode
注:
- DIS-GME模式做防抖处理时需要参考前帧信息,故DIS Process需要如上图四个图片信息(分辨率为1080P与120x68的前帧与当前帧);
- 当LDC启用DIS-GME模式时,前级只能绑定SCL模块,让其3个Output port输出上图中要求的分辨率图片并送给LDC 的3个Input port;
- 目前支持的最大原始图片分辨率为4K;
- 对齐限制:由于DIS属于LDC的子模块,故输入图和输出图宽需16 pixel对齐,高需2 pixel对齐,例子如下:
- 若前级绑SCL时,三个输入图的尺寸如:Origin Pictrue按上述要求对齐,1080P Pictrue默认符合上述要求,120x68 Pictrue的宽由于MI_LDC内部有强制对齐,内部会自动Stride到128x68。
- 若以MI_SYS_ChnInputPortPutBuf送流给DIS时,三个输入图尺寸如:Origin Pictrue按上述要求对齐,1080P Pictrue默认符合上述要求,120x68 Pictrue需在送流前,将其Stride到128x68后才可送入Input port2。
1.2.1.1.2 DIS-GYRO Mode
注:
- DIS-GYRO模式做防抖处理时需要当前帧数据与内部的陀螺仪数据,故DIS Process需要如上图一个图片信息;
- 当LDC启用DIS-GYRO模式时,前级模块无特定限制,图片尺寸可参考LDC限制。
- 当LDC启用DIS-GYRO模式时,由于需要实时从Sensor端获取部分信息帮助算法进行运算,故需在串入pipeline的情况下才可正常工作。
1.2.1.2 STITCH
注:
- 融合区域 宽度最大支持1648,高度最大支持4224。
- 融合后默认只输出融合后图像,不会含有重叠区的图像。
- 对齐限制:输入图和输出图宽需16 pixel对齐,高需2 pixel对齐,若有配置采样精度大于16则对齐要求和采样精度匹配,例如设置grid_size=32则要求输入图32pixel对齐。
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 | N | N | N | Y | N |
Maruko | N | N | N | N | N | N | N | Y |
Souffle | Y | Y | Y | Y | Y | N | Y | N |
iFord | Y | Y | N | N | N | N | N | N |
注意:iFord平台支持LDC Hor,其属于ISP子模块,具体使用方式请参考MI ISP API说明。
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
数字图像防抖,目前支持陀螺仪算法与GME算法防抖。其中,陀螺仪算法根据陀螺仪产生的数据计算当前帧的图像的运动偏移情况,而GME算法会参考前一帧信息计算当前帧的图像的运动偏移情况,然后根据运动偏移情况对当前图像进行平移、旋转等变换,从而起到防抖的效果。
-
NIR
用于双光融合的拼接预处理,输出图像需传递至NIR模块进一步处理。
-
DPU
用于双sensor 深度处理的拼接预处理,输出图像需传递至DPU模块进一步处理。
-
LUT
提供二维查找表功能,x,y方向上索引和表的数据位宽都是8bit,可以用于图像融合算法权重表的快速查找。
-
LDC Hor
根据镜头标定参数,对输入图像进行畸变矫正处理,该模式只对水平方向进行矫正
各平台支持的输入/输出规格:
Input | Muffin | Mochi | Souffle | iFord | |
---|---|---|---|---|---|
Pixel | yuv420SP NV12 | Y | Y | Y | Y |
ARGB系列(DIS模式不支持) | Y | Y | Y | N | |
Pixel Alignment (WxH) | 32x2 | 32x2 | 16x2 | 16x2 |
Output | Muffin | Mochi | Souffle | iFord | |
---|---|---|---|---|---|
Pixel | yuv420SP NV12 | Y | Y | Y | Y |
yuv422 YUYV(STITCH模式不支持) | Y | N | N | Y | |
ARGB系列(STITCH模式不支持) | Y | Y | Y | N | |
Pixel Alignment (WxH) | 16x2 | 16x2 | 16x2 | 16x2 |
注意:Maruko和iFord平台的LDC Hor,属于ISP子模块,具体输入/输出规格请参考MI ISP API规格说明。
各平台支持的不同功能的最大通道数量:
功能 平台 |
LDC | PMF | DIS | STITCH | NIR | DPU | LUT | LDC Hor |
---|---|---|---|---|---|---|---|---|
Muffin | 16 | 16 | 4 | 1 | 16 | 16 | 16 | / |
Mochi | 16 | 16 | 1 | / | 16 | 16 | 16 | / |
Maruko | / | / | / | / | / | / | / | 16 |
Souffle | 16 | 16 | 4 | 1 | 16 | 16 | 16 | / |
iFord | 16 | 16 | / | / | / | / | / | / |
1.4. 关键字说明¶
-
device
LDC 对应的硬件设备。
-
channel
LDC 模块处理通道,各通道分时复用LDC硬件。
2. API 参考¶
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 ; stChnAttr.eInputBindType = E_MI_SYS_BIND_TYPE_FRAME_BASE; 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);
Maruko 平台:
MI_S32 s32Ret = MI_SUCCESS; MI_LDC_DEV LdcDevId = 0; MI_LDC_CHN LdcChnId = 0; MI_LDC_DevAttr_t stDevAttr = {0}; MI_LDC_ChnAttr_t stChnAttr = {}; MI_LDC_ChnLDCHorAttr_t stChnLdcHorAttr = {}; MI_SYS_ChnPort_t stDstChnPort = {}; stChnAttr.eMode = MI_LDC_WORKMODE_LDC_HORIZONTAL; stChnAttr.eInputBindType = E_MI_SYS_BIND_TYPE_FRAME_BASE; MI_LDC_CreateDevice(LdcDevId, &stDevAttr); MI_LDC_CreateChannel(LdcDevId, LdcChnId, &stChnAttr); //这里忽略具体配置细节,详细参数参见接口说明 s32Ret = MI_LDC_SetChnLDCHorAttr(LdcDevid, LdcChnId, &stChnLDCHorAttr) if (s32Ret) { return -1; } stDstChnPort. eModId = E_MI_MODULE_ID_ISP; stDstChnPort. u32DevId = 0; stDstChnPort. u32ChnId = 0; stDstChnPort. u32PortId = 0; MI_LDC_AttachToChn(LdcDevId, LdcChnId, &stDstChnPort); /*退出释放资源*/ MI_LDC_DetachFromChn(LdcDevId, LdcChnId, &stDstChnPort); 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
-
-
举例
LDC 初始化设置, DIS设置,以及退出范例:
Souffle 平台:
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_ChnDISAttr_t stChnDISAttr = {}; #if defined(__USE_DIS_GME_MODE__) stChnAttr.eMode = MI_LDC_WORKMODE_DIS ; stChnAttr.eInputBindType = E_MI_SYS_BIND_TYPE_FRAME_BASE; MI_LDC_CreateDevice(LdcDevid, & stDevAttr); MI_LDC_CreateChannel(LdcDevid, LdcChnId, &stChnAttr); stChnDISAttr.eMode = MI_LDC_DIS_GME_8DOF; stChnDISAttr.eSceneType = MI_LDC_DIS_FIX_SCENE; stChnDISAttr.eMotionLevel = MI_LDC_DIS_MOTION_LEVEL1; stChnDISAttr.u8CropRatio = 70; // 这里忽略具体配置细节,详细参数参见接口说明 // 需要根据通道模式使用对应的接口进行配置,以下接口调用不分先后 // 1. MI_LDC_SetChnDISAttr // 2. MI_LDC_GetChnDISAttr // 3. MI_LDC_SetOutputPortAttr // 若需要前级绑定scl模块送流,注意需要往LDC Module: // input port0送入原图; // input port1送入原图scalling down/up后的1080P图片; // input port2送入原图scalling down/up后的120x68图片。 // 若需要手动送流,注意需要往LDC Module: // input port0送入原图; // input port1送入原图scalling down/up后的1080P图片; // input port2送入原图scalling down/up 120x68,且Stride为128x68的图片, // Stride例子:for (h = 0; h < 68; h++) { fread(pic_addr + h * 128, 1, 120, fd);} #elif defined(__USE_DIS_GYRO_MODE__) stChnAttr.eMode = MI_LDC_WORKMODE_DIS ; stChnAttr.eInputBindType = E_MI_SYS_BIND_TYPE_FRAME_BASE; MI_LDC_CreateDevice(LdcDevid, & stDevAttr); MI_LDC_CreateChannel(LdcDevid, LdcChnId, &stChnAttr); stChnDISAttr.eMode = MI_LDC_DIS_GYRO; stChnDISAttr.as32RotationMatrix[LDC_MAXTRIX_NUM] = {-1, 0, 0, 0, -1, 0, 0, 0, -1}; stChnDISAttr.u32UserSliceNum = 6; /*! * set FocalLengh (pixel) = FocalLength(mm) / SensorUnitCellSize(μm) * 1000 * 100 * eg IMX307: 5.92(pixel) / 2.9(μm) * 1000 * 100 = 204137 * eg IMX317: 6(pixel) / 1.62(μm) * 1000*100 = 370370 */ stChnDISAttr.u32FocalLengthX = 370370; stChnDISAttr.u32FocalLengthY = 370370; // 这里忽略具体配置细节,详细参数参见接口说明 // 需要根据通道模式使用对应的接口进行配置,以下接口调用不分先后 // 1. MI_LDC_SetChnDISAttr // 2. MI_LDC_GetChnDISAttr // 3. MI_LDC_SetOutputPortAttr // 由于跑MI_LDC_DIS_GYRO模式需要实时从Sensor端获取部分信息帮助算法进行运算,故需在串起pipeline的情况下才可正常工作 #elif defined(__USE_DIS_GYRO_AND_LDC_MODE__) stChnAttr.eMode = MI_LDC_WORKMODE_DIS_LDC; stChnAttr.eInputBindType = E_MI_SYS_BIND_TYPE_FRAME_BASE; MI_LDC_CreateDevice(LdcDevid, & stDevAttr); MI_LDC_CreateChannel(LdcDevid, LdcChnId, &stChnAttr); stChnDISAttr.eMode = MI_LDC_DIS_GYRO; stChnDISAttr.as32RotationMatrix[LDC_MAXTRIX_NUM] = {0, 1, 0, -1, 0, 0, 0, 0, 1}; stChnDISAttr.u32UserSliceNum = 6; /*! * set FocalLengh (pixel) = FocalLength(mm) / SensorUnitCellSize(um) * 1000 * 100 * eg IMX307: 5.92(pixel) / 2.9(um) * 1000 * 100 = 204137 * eg IMX317: 6(pixel) / 1.62(um) * 1000*100 = 370370 */ stChnDISAttr.u32FocalLengthX = 370370; stChnDISAttr.u32FocalLengthY = 370370; /*! * 只填入sensor校准参数MI_LDC_SensorCalibInfo_t ,其他参数不需要填写 */ MI_LDC_ChnLDCAttr_t stChnLDCAttr = {}; stChnLDCAttr.stCalibInfo.s32CenterXOffset = 0; stChnLDCAttr.stCalibInfo.s32CenterYOffset = 0; stChnLDCAttr.stCalibInfo.s32FisheyeRadius =2203; stChnLDCAttr.stCalibInfo.pCalibPolyBinAddr = 0x400080000; stChnLDCAttr.stCalibInfo.u32CalibPolyBinSize = 0x4000; // 这里忽略具体配置细节,详细参数参见接口说明 // 需要根据通道模式使用对应的接口进行配置 // 以下接口调用需强制先调用MI_LDC_SetChnLDCAttr设定镜头标定产物,后调用MI_LDC_SetChnDISAttr设定防抖相关参数 // 1. MI_LDC_SetChnLDCAttr // 2. MI_LDC_GetChnLDCAttr // 3. MI_LDC_SetChnDISAttr // 4. MI_LDC_GetChnDISAttr // 由于跑MI_LDC_DIS_GYRO模式需要实时从Sensor端获取部分信息帮助算法进行运算,故需在串起pipeline的情况下才可正常工作 #endif MI_LDC_StartChannel(LdcDevid, LdcChnId); /* 退出流程 */ MI_LDC_StopChannel(LdcDevid, LdcChnId); MI_LDC_DestroyChannel(LdcDevid, LdcChnId); MI_LDC_DestroyDevice(LdcDevid);
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_SetChnDISAttr 举例
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);
2.28. MI_LDC_GetRegionBorderMappedPointCnt¶
-
描述
获取框线映射到目标区域后的点迹个数。
-
语法
MI_S32 MI_LDC_GetRegionBorderMappedPointCnt(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_U32 u32RegionId, MI_U32 * pu32PointCnt);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 u32RegionId 移动的区域号 输入 pu32PointCnt 映射框线坐标点的个数 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
该接口需要在设置区域属性、输入输出端口属性之后使用(MI_LDC_SetChnLDCAttr、MI_LDC_SetInputPortAttr、MI_LDC_SetOutputPortAttr)。
-
举例
见MI_LDC_CreateDevice 举例。
2.29. MI_LDC_GetRegionBorderMappedPoints¶
-
描述
获取框线映射的坐标点迹。
-
语法
MI_S32 MI_LDC_GetRegionBorderMappedPoints(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_U32 u32RegionId, MI_LDC_Point_t *pstPoints);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC通道号 输入 u32RegionId 移动的区域号 输入 pstPoints 映射框线的坐标 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
注意
该接口需要在获取框线坐标点个数之后使用(MI_LDC_GetRegionBorderMappedPointCnt)。
-
举例
见MI_LDC_CreateDevice 举例。
2.30. MI_LDC_GetDisplacementMapSize¶
-
描述
获取坐标查询功能中映射表尺寸。
-
语法
MI_S32 MI_LDC_GetDisplacementMapSize(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_DispMapConf_t *pstDispMapConf, MI_LDC_DispMapSize_t *pstDispMapSize);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC 通道号 输入 pstDispMapConf 坐标查询功能中映射表配置 输入 pstDispMapSize 坐标查询功能中映射表尺寸 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.31. MI_LDC_GenerateDisplacementMap¶
-
描述
生成坐标查询功能中映射表。
-
语法
MI_S32 MI_LDC_GenerateDisplacementMap(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_DispMapConf_t *pstDispMapConf, MI_LDC_DispMapInfo_t *pstDispMapInfo);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC 通道号 输入 pstDispMapConf 坐标查询功能中映射表配置 输入 pstDispMapInfo 坐标查询功能中映射表信息 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
2.32. MI_LDC_QueryMappingPoint¶
-
描述
查询映射坐标。
-
语法
MI_S32 MI_LDC_QueryMappingPoint(MI_LDC_DEV devId, MI_LDC_CHN chnId, MI_LDC_DispMapSize_t *pstDispMapSize, MI_LDC_DispMapInfo_t *pstDispMapInfo, MI_LDC_Point_t *pstOriPoint, MI_LDC_Point_t *pstMapPoint);
-
参数
参数名称 描述 输入/输出 devId LDC 设备号 输入 chnId LDC 通道号 输入 pstDispMapSize 坐标查询功能中映射表尺寸 输入 pstDispMapInfo 坐标查询功能中映射表信息 输入 pstOriPoint 要查询的坐标点 输入 pstMapPoint 查询后的映射坐标点 输出 -
返回值
-
0 成功。
-
非0 失败,参照错误码。
-
-
需求
-
头文件:mi_ldc.h
-
库文件:libmi_ldc.a
-
-
举例
见 MI_LDC_CreateDevice 举例
3. 数据类型¶
模块相关数据类型定义如下:
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_DIS_LDC = (MI_LDC_WORKMODE_DIS | MI_LDC_WORKMODE_LDC), 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_DIS_LDC DIS 模式叠加LDC模式,DIS仅支持设定MI_LDC_DIS_GYRO模式 MI_LDC_WORKMODE_BUTT 无效值 -
相关数据类型及接口
3.5. MI_LDC_ChnAttr_t¶
-
说明
LDC设备的通道属性。
-
定义
typedef struct MI_LDC_ChnAttr_s { MI_LDC_WorkMode_e eWorkMode; MI_SYS_BindType_e eInputBindType; } MI_LDC_ChnAttr_t;
-
成员
成员名称 描述 eWorkMode LDC 通道的工作模式 eInputBindType LDC 通道的输入模式 -
注意
-
当输入数据源为DRAM时,需配置eInputBindType为E_MI_SYS_BIND_TYPE_FRAME_BASE。
-
当eWorkMode为MI_LDC_WORKMODE_STITCH时,Souffle平台支持配置eInputBindType为E_MI_SYS_BIND_TYPE_REALTIME,此时ISP-LDC之间必须以E_MI_SYS_BIND_TYPE_REALTIME模式绑定,且LDC不允许多通道分时复用。
-
当eWorkMode为MI_LDC_WORKMODE_DIS时,Souffle平台仅支持配置eInputBindType为E_MI_SYS_BIND_TYPE_FRAME_BASE。
-
当eWorkMode为MI_LDC_WORKMODE_LDC且u32RegionNum为1时,Souffle平台支持配置eInputBindType为E_MI_SYS_BIND_TYPE_HW_AUTOSYNC,此时ISP-LDC-SCL之间必须以E_MI_SYS_BIND_TYPE_HW_AUTOSYNC模式绑定,且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_S32 s32Rotate; } 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 全景模式该参数无效 s32Rotate 该校正区域PTZ参数的rotate值,normal模式下该参数才有效 -
注意事项
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_U32 u32XOffset; MI_U32 u32YOffset; } MI_LDC_DispMapInfo_t;
-
成员
成员名称 描述 u32Grid 映射表的采样精度 pXmapAddr x坐标映射表的起始地址 pYmapAddr x坐标映射表的起始地址 u32XmapSize x坐标的映射表大小 u32YmapSize y坐标的映射表大小 u32XOffset 当前映射表对应到输出图的x偏移量,只在坐标查询功能中有效 u32YOffset 当前映射表对应到输出图的y偏移量,只在坐标查询功能中有效 -
相关数据类型及接口
3.12. MI_LDC_RegionAttr_t¶
-
说明
LDC 模式下区域的属性。
-
定义
typedef struct MI_LDC_RegionAttr_s { MI_LDC_RegionMode_e eRegionMode; MI_U8 u8Map2RegionId; union { MI_LDC_RegionPara_t stRegionPara; MI_LDC_DispMapInfo_t stRegionMapInfo; }; MI_SYS_WindowRect_t stOutRect; } MI_LDC_RegionAttr_t;
-
成员
成员名称 描述 eRegionMode 该区域的模式 u8Map2RegionId 该区域对应的映射区域号 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_6DOF = 0x01, MI_LDC_DIS_GME_8DOF = 0x02, MI_LDC_DIS_GYRO = 0x03, MI_LDC_DIS_BUTT, } MI_LDC_DISMode_e;
-
成员
成员名称 描述 MI_LDC_DIS_NONE 不做任何防抖处理。 MI_LDC_DIS_GME_6DOF 基于GME 的6自由度防抖模式,不使用陀螺仪。 MI_LDC_DIS_GME_8DOF 基于GME 的8自由度防抖模式,不使用陀螺仪。 MI_LDC_DIS_GYRO 基于陀螺仪算法的防抖模式。该模式可叠加LDC的畸变矫正功能 MI_LDC_DIS_BUTT 无效值。 注意:
当MI_LDC_DIS_GYRO需叠加LDC畸变矫正功能时,强制要求先调用MI_LDC_SetChnLDCAttr设定镜头校准参数(MI_LDC_SensorCalibInfo_t),后调用MI_LDC_SetChnDISAttr设定防抖相关参数。
-
相关数据类型及接口
3.15. MI_LDC_DISSceneType_e¶
-
说明
镜头状态。
-
定义
typedef enum { MI_LDC_DIS_FIX_SCENE = 0x00, MI_LDC_DIS_MOVE_SCENE = 0x01, MI_LDC_DIS_SCENE_BUTT, } MI_LDC_DISSceneType_e;
-
成员
成员名称 描述 MI_LDC_DIS_FIX_SCENE 镜头固定,默认值。 MI_LDC_DIS_MOVE_SCENE 镜头移动。 MI_LDC_DIS_SCENE_BUTT 无效值。 -
相关数据类型及接口
3.16. MI_LDC_DISMotionLevel_e¶
-
说明
镜头抖动幅度。
-
定义
typedef enum { MI_LDC_DIS_MOTION_LEVEL0 = 0x00, MI_LDC_DIS_MOTION_LEVEL1 = 0x01, MI_LDC_DIS_MOTION_BUTT, } MI_LDC_DISMotionLevel_e;
-
成员
成员名称 描述 MI_LDC_DIS_MOTION_LEVEL0 镜头抖动幅度较小。 MI_LDC_DIS_MOTION_LEVEL1 镜头抖动幅度较大,默认值。 MI_LDC_DIS_MOTION_BUTT 无效值。 -
相关数据类型及接口
3.17. MI_LDC_ChnDISAttr_t¶
-
说明
DIS模式的通道参数。
-
定义
typedef struct MI_LDC_ChnDISAttr_s { MI_LDC_DISMode_e eMode; MI_LDC_DISSceneType_e eSceneType; MI_LDC_DISMotionLevel_e eMotionLevel; MI_S32 as32RotationMatrix[LDC_MAXTRIX_NUM]; MI_U32 u32UserSliceNum; MI_U32 u32FocalLengthX; MI_U32 u32FocalLengthY; MI_U8 u8CropRatio; } MI_LDC_ChnDISAttr_t;
-
成员
成员名称 描述 eMode 工作模式。 eSceneType 镜头状态,MI_LDC_DIS_GME_6DOF或MI_LDC_DIS_GME_8DOF模式下设置。 eMotionLevel 镜头抖动强度,MI_LDC_DIS_GME_6DOF或MI_LDC_DIS_GME_8DOF模式下设置。 as32RotationMatrix 描述陀螺仪相对sensor摆放位置的映射矩阵,MI_LDC_DIS_GYRO模式下设置。 u32UserSliceNum 垂直方向上切分数量,主要用于Rolling Shutter相机的运动场景,每个Slice会有单独的3x3 Matrix,目前支持最大的设定为12,MI_LDC_DIS_GYRO模式下设置。 u32FocalLengthX X轴焦距,单位pixel,MI_LDC_DIS_GYRO模式下设置。 u32FocalLengthY Y轴焦距,单位pixel,MI_LDC_DIS_GYRO模式下设置。 u8CropRatio DIS图像裁剪后的图像比例,MI_LDC_DIS_GME_6DOF或MI_LDC_DIS_GME_8DOF或MI_LDC_DIS_NONE模式下设置。取值范围为[50, 98],默认为70,该参数最终设定值为u8CropRatio*0.01。默认为70时,即裁剪后图像宽高为原来的0.7倍(裁减掉输入图像四周各15%),若输入图像宽高为1920×1080,则裁剪后图像宽为1920×70%=1344,高为1080×70%=756。 注意:
-
as32RotationMatrix成员设定:其定义陀螺仪角位与CMOS Sensor正摆之对应矩阵,必须输入正确的3x3补偿矩阵,若是输入错误,会造成DIS(MI_LDC_DIS_GYRO)补偿到错误方向。
安装方式 特性说明
Sensor正摆(陀螺仪位于红框位置,红点为陀螺仪的PIN 1位置)
陀螺仪传感器 ICG-20660 的轴线方向和旋转极性PIN 1 位置 as32RotationMatrix设定
[1, 0, 0, 0, 1, 0, 0, 0, -1]
[0, 1, 0, -1, 0, 0, 0, 0, -1]
[-1, 0, 0, 0, -1, 0, 0, 0, -1]
[0, -1, 0, 1, 0, 0, 0, 0, -1] -
u32UserSliceNum成员设定:此输入参数决定LDC要切分多少水平切片进行DIS(MI_LDC_DIS_GYRO)补偿。若输出高度(由MI_LDC_SetOutputPortAttr设置)为1512,则每个水平切片由上到下为1512/6=252。在设置时需注意切片高度是否接近对齐32的数值,避免多余的CPU资源被占用。
-
u32FocalLengthX与 u32FocalLengthY成员设定:焦距设置,在输入前需将焦距换算到pixel单位,换算公式为:u32FocalLengthX/Y(pixels) = (FocalLength(mm)/CMOS_Unit_CellSize(μm)) * 10^5,,其中FocalLength与CMOS_Unit_CellSize可以Sensor的Lensspec与datasheet中找到,如下为例子:
FocalLength(mm)在Lens spec的例子 CMOS_Unit_CellSize(μm)在Sensor datasheet的例子
-
-
相关数据类型及接口
3.18. 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.19. MI_LDC_CalibConfig_t¶
-
说明
Sensor校准参数。
-
定义
typedef struct MI_LDC_CalibConfig_s { void *pCalibCfgAddr; MI_U32 u32CalibCfgSize; } MI_LDC_CalibConfig_t;
-
成员
成员名称 描述 pCalibCfgAddr 存储校准信息的内存地址 u32CalibCfgSize 校准信息大小 -
相关数据类型及接口
3.20. 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.21. 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.22. 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_U8 u8PairNum; MI_LDC_StitchDisparity_t astDisparity[LDC_MAX_PAIR_NUM]; } MI_LDC_ChnStitchAttr_t;
-
成员
成员名称 描述 eProjType 投影模式 s32Distance 拼接平面到sensor的距离,单位mm stCalCfg Sensor的校准信息 u8PairNum 重叠区域数量 astDisparity 视差图信息(每个重叠区一个视差图) -
相关数据类型及接口
3.23. 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.24. 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.25. MI_LDC_InputPortAttr_t¶
-
说明
定义LDC 输入端口的属性。
-
定义
typedef struct MI_LDC_InputPortAttr_s { MI_U16 u16Width; MI_U16 u16Height; } MI_LDC_InputPortAttr_t;
-
相关数据类型及接口
3.26. 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.27. 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.28. 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 存放查表之后的输出数据 -
相关数据类型及接口
3.29. MI_LDC_StitchDisparity_t¶
-
说明
LDC Stitch所需的视差图信息
-
定义
typedef struct MI_LDC_StitchDisparity_s { void *pMapData; MI_U32 u32MapSize; } MI_LDC_StitchDisparity_t;
-
成员
成员名称 描述 pMapData 视差图数据 u32MapSize 视差图数据大小 -
相关数据类型及接口
3.30. MI_LDC_Point_t¶
-
说明
LDC映射框线的坐标
-
定义
typedef struct MI_LDC_Point_s { MI_S16 s16X; MI_S16 s16Y; } MI_LDC_Point_t;
-
成员
成员名称 描述 s16X 映射框线的X坐标 s16Y 映射框线的Y坐标 -
相关数据类型及接口
3.31. MI_LDC_DispMapType_e¶
-
说明
坐标查询功能中映射表的类型
-
定义
typedef enum { E_MI_LDC_DISPMAP_SRC = 0, E_MI_LDC_DISPMAP_DST, E_MI_LDC_DISPMAP_BUTT, } MI_LDC_DispMapType_e;
-
成员
成员名称 描述 E_MI_LDC_DISPMAP_SRC 在坐标查询功能中,将输入图坐标映射到输出图坐标的映射表类型 E_MI_LDC_DISPMAP_DST 在坐标查询功能中,将输出图坐标映射到输入图坐标的映射表类型 E_MI_LDC_DISPMAP_BUTT 无效值 -
相关数据类型及接口
3.32. MI_LDC_DispMapConf_t¶
-
说明
坐标查询功能中映射表的配置
-
定义
typedef struct MI_LDC_DispMapConf_s { MI_U32 u32RegionIdx; MI_LDC_DispMapType_e eMapType; } MI_LDC_DispMapConf_t;
-
成员
成员名称 描述 u32RegionIdx 区域索引。对于拼接场景,该索引会依据拼接的输出区域从左至右从0逐渐递增 eMapType 坐标查询功能中映射表的类型 -
相关数据类型及接口
3.33. MI_LDC_DispMapSize_t¶
-
说明
坐标查询功能中映射表的尺寸
-
定义
typedef struct MI_LDC_DispMapSize_s { MI_U32 u32Width; MI_U32 u32Height; } MI_LDC_DispMapSize_t;
-
成员
成员名称 描述 u32Width 坐标查询功能中映射表的宽度 u32Height 坐标查询功能中映射表的高度 -
相关数据类型及接口
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 接口地址 ClkMhz LDC 时钟频率 HalInFrmCnt 输入到Hal 的帧总数 HalDoneFrmCnt Hal 处理完的帧总数
HalDoneBlkCnt Hal 当前帧处理完的块总数 HalIsrDoneCnt Hal done中断发生的次数 HalIsrErrCnt Hal Err 中断发生的次数 ProcessTime LDC 硬件处理时间 参数 描述 Channel Info ChnId 通道ID workmode 当前channel的工作模式 status 当前channel的状态:0:uninit 1:init 2:start 3:stop 4:destroyed InputWH 输入帧的分辨率 Pixel 输入帧的格式 Stride 输入帧的stride[0] InBufCnt 前级输入的帧总数量 IntodoCnt 待处理帧的标号(递增) Atom 底层拿住buf数量 PassId 0:DIS 1:LDC 2:STITCH PreTEnq 申请输出buf的时间 EnqTDeq 拿到前级buf到处理完的总时间 Process 前级buf的处理时间 ClrPad 清理输出buf填充部分的耗时 参数 描述 ChnId 通道ID ViewId ldc 对应窗口的Id mode ldc使用的场景模式 NumRuns ldc 当前场景需要处理的总区块数 InSize 当前view的输入区域 ViewSize 当前view的输出区域 OutSize 当前场景的输出区域 ViewTime 当前view的处理时间 BlkId 当前blk的ID INV 当前blk是否翻转 Inblk 当前blk的输入区域 OutBlk 当前blk的算法输出区域 SclBlk 当前blk的输出区域 DeltaXY 当前blk对应delta 表的坐标 参数 描述 DIS Device Info Dev 设备 ID Mode 设备模式 HwResetCnt DIS HW复位次数 CurTaskCycle 当次DIS HW 处理花费的Cycle数 MaxTaskCycle 在整个pipeline流程中,DIS HW 处理最大Cycle数 CycleThrd DIS HW 所设定单次处理Cycle的阈值,超过该阈值会触发TimeoutExcp InlierThrd DIS HW 所设定单次处理得到的Inlier阈值,小于该阈值会触发InlierLessExcp IrqCnt ISR执行次数 DoneIrqCnt DIS HW 一帧完成中断次数 SelLessExcpCnt DIS HW 触发选点过小异常次数 InlierLessExcpCnt DIS HW 触发内点过小异常次数 Div0ExcpCnt DIS HW 触发除零异常次数 NoconfidExcpCnt DIS HW 触发无Confid异常次数 TimeOutExcpCnt DIS HW 触发超时异常次数 参数 描述 DIS Channel Info ChnId 通道 ID bCreated 通道是否被创建 disMode DIS的工作模式 cmdqif cmdq 接口地址 motionLv 镜头抖动强度 sceneType 镜头状态 cropRatio 图像裁剪后的图像比例 sliceNum 垂直方向上切分数量 focalLengthX X轴焦距 focalLengthY Y轴焦距 TaskCnt 任务完成次数 HwDoneCnt 硬件任务完成次数 AlgoDoneCnt 算法任务完成次数
5.2. echo¶
Echo help 查看可用命令
# echo help > /proc/mi_modules/mi_ldc/mi_ldc<devid>
以devid 为0的情况为例:
功能 | dump LDC 输出文件 |
---|---|
命令 | echo dumpoutputtask [chnid type cnt path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chnid: 通道ID |
type: dump的数据类别, 0:dis, 1:ldc,2:stitch | |
cnt:dump的数量 | |
path:dump的路径 | |
举例 | echo dumpoutputtask 0 1 2 /mnt/ > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | dump LDC 输入文件 |
---|---|
命令 | echo dumpinputtask [chnid type cnt path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chnid: 通道ID |
type: dump的数据类别, 0:dis, 1:ldc,2:stitch | |
cnt:dump的数量 | |
path:dump的路径 | |
举例 | echo dumpinputtask 0 1 2 /mnt/ > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | dump LDC map文件 |
---|---|
命令 | echo dumpalgobin [chnid view/all path] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chnid: 通道ID |
view/all: dump的内容, view:具体的viewid, all:当前场景所有的view | |
path:dump的路径 | |
举例 | echo dumpalgobin 0 all /mnt/ > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | 打印DIS HW调试信息 |
---|---|
命令 | echo dis_sel_dbgcfg [chn_id cfg_id] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chn_id: 通道ID |
cfg_id:调试配置等级,范围[1, 5] | |
举例 | echo dis_sel_dbgcfg 0 1 > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | 设定DIS HW inlier个数阈值 |
---|---|
命令 | echo dis_cfg_inlier_thrd [chn_id thrd] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chn_id: 通道ID |
thrd: inlier个数阈值,范围[1, 7] | |
举例 | echo dis_cfg_inlier_thrd 0 1 > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | 设定DIS HW 处理cycle阈值 |
---|---|
命令 | echo dis_cfg_cycle_thrd [chn_id thrd] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chn_id: 通道ID |
thrd: cycle阈值,范围[0, 2147483647] | |
举例 | echo dis_cfg_cycle_thrd 0 1 > /proc/mi_modules/mi_ldc/mi_ldc0 |
功能 | bypass DIS防抖功能(保持视场角一致) |
---|---|
命令 | echo dis_bypass [chn_id switch] > /proc/mi_modules/mi_ldc/mi_ldc0 |
参数说明 | chn_id: 通道ID |
switch: 是否开启,(0-off, 1-on) | |
举例 | echo dis_bypass 0 0 > /proc/mi_modules/mi_ldc/mi_ldc0 |