MI VIF API
1. 概述¶
1.1. 模块说明¶
视频输入(VIF)实现启用视频输入设备、视频输入通道、绑定视频输入通道等功能。
1.2. Pretzel, Macaron, Pudding, Ispahan, Ikayaki流程框图¶
Naboo系列芯片支持Vif output port1,只有在BT656接口中用到,并且outport1的width/height是outport0的一半。
MI_VIF device 和channel之间的映射关系如下:
Pretzel和Pudding芯片中N max=3,
Macaron、Ispahan和 Ikayaki芯片中N max=2
注:N为Device Id。
Mipi接口中只能用到对应VifDev中的第一个channel,BT656接口复合模式下才会用到VifDev中的multi channel。
2. API 参考¶
2.1. 功能模块API¶
表 2‑1:API参考
API名 | 功能 |
---|---|
MI_VIF_SetDevAttr | 设置 VIF 设备属性 |
MI_VIF_GetDevAttr | 获取 VIF 设备属性 |
MI_VIF_EnableDev | 启用 VIF 设备 |
MI_VIF_DisableDev | 禁用 VIF 设备 |
MI_VIF_SetChnPortAttr | 设置 VIF 通道Port属性 |
MI_VIF_GetChnPortAttr | 获取 VIF 通道Port属性 |
MI_VIF_EnableChnPort | 启用 VIF 通道Port |
MI_VIF_DisableChnPort | 禁用 VIF 通道Port |
MI_VIF_Query | 查询 VIF 通道的Port中断计数、平均帧率等信息 |
MI_VIF_SetDev2SnrPadMux | 设置VIF 设备和sensor 之间绑定关系 |
MI_VIF_InitDev | 初始化VIF设备 |
MI_VIF_DeInitDev | 反初始化VIF设备 |
MI_VIF_GetDevStatus | 获取Vif Dev当前状态 |
MI_VIF_CallBackTask_Register | 向 VIF 注册回调接口 |
MI_VIF_CallBackTask_UnRegister | 向 VIF 反注册回调接口 |
2.2. MI_VIF_SetDevAttr¶
-
功能
设置 VIF 设备属性。基本设备属性默认了部分芯片配置,满足绝大部分的 AD 芯片对接要求。
-
语法
MI_S32 MI_VIF_SetDevAttr(MI_VIF_DEV u32VifDev, MI_VIF_DevAttr_t *pstDevAttr)
-
形参
参数名称 描述 输入/输出 u32VifDev VIF 设备号。 输入 pstDevAttr VIF 设备属性指针。静态属性。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
在调用前要保证 VIF 设备处于禁用状态。如果 VIF 设备已处于使能状态,可以使用 MI_VIF_DisableDev 来禁用设备。
-
参数 pstDevAttr 主要用来配置指定 VIF 设备的视频接口模式,用于与外围camera、 sensor对接,支持的接口模式包括 BT.656、digital camera、MIPI sensor。具体属性意义参见 VIF数据类型部分的说明。
-
-
举例
VIF初始化启动及退出范例:
STCHECKRESULT(MI_SNR_GetPadInfo(eSnrPadId, &stPad0Info)); STCHECKRESULT(MI_SNR_GetPlaneInfo(eSnrPadId, 0, &stSnrPlane0Info)); u32CapWidth = stSnrPlane0Info.stCapRect.u16Width; u32CapHeight = stSnrPlane0Info.stCapRect.u16Height; ePixFormat = (MI_SYS_PixelFormat_e)RGB_BAYER_PIXEL(stSnrPlane0Info.ePixPrecision, stSnrPlane0Info.eBayerId); /************************************************ init VIF *************************************************/ MI_VIF_DevAttr_t stDevAttr; MI_VIF_InitParam_t stInitParam; memset(&stDevAttr, 0x0, sizeof(MI_VIF_DevAttr_t)); memset(&stInitParam, 0x0, sizeof(MI_VIF_InitParam_t)); stInitParam.u32DevId = 0; stInitParam.u8Data = 0; STCHECKRESULT(MI_VIF_InitDev(&stInitParam)); stDevAttr.eIntfMode = stPad0Info.eIntfMode; stDevAttr.eWorkMode = pstVifDevAttr->eWorkMode; stDevAttr.eHDRType = (MI_VIF_HDRType_e)pstVpeChnattr->eHdrType; if(stDevAttr.eIntfMode == E_MI_VIF_MODE_BT656) stDevAttr.eClkEdge = stPad0Info.unIntfAttr.stBt656Attr.eClkEdge; else stDevAttr.eClkEdge = E_MI_VIF_CLK_EDGE_DOUBLE; if(stDevAttr.eIntfMode == E_MI_VIF_MODE_MIPI) stDevAttr.eDataSeq =stPad0Info.unIntfAttr.stMipiAttr.eDataYUVOrder; else stDevAttr.eDataSeq = E_MI_VIF_INPUT_DATA_YUYV; if(stDevAttr.eIntfMode == E_MI_VIF_MODE_BT656) memcpy(&stDevAttr.stSyncAttr, &stPad0Info.unIntfAttr.stBt656Attr.stSyncAttr, sizeof(MI_VIF_SyncAttr_t)); stDevAttr.eBitOrder = E_MI_VIF_BITORDER_NORMAL; STCHECKRESULT(MI_VIF_SetDevAttr(vifDev, &stDevAttr)); STCHECKRESULT(MI_VIF_EnableDev(vifDev)); MI_VIF_ChnPortAttr_t stVifPortInfo; memset(&stVifPortInfo, 0, sizeof(MI_VIF_ChnPortAttr_t)); stVifPortInfo.stCapRect.u16X = stSnrPlane0Info.stCapRect.u16X; stVifPortInfo.stCapRect.u16Y = stSnrPlane0Info.stCapRect.u16Y; stVifPortInfo.stCapRect.u16Width = stSnrPlane0Info.stCapRect.u16Width; stVifPortInfo.stCapRect.u16Height = stSnrPlane0Info.stCapRect.u16Height; stVifPortInfo.stDestSize.u16Width = u32CapWidth; stVifPortInfo.stDestSize.u16Height = u32CapHeight; stVifPortInfo.ePixFormat = ePixFormat; //stVifPortInfo.u32FrameModeLineCount for lowlantancy mode if(stDevAttr.eIntfMode == E_MI_VIF_MODE_BT656) { stVifPortInfo.eFrameRate = E_MI_VIF_FRAMERATE_FULL; stVifPortInfo.eCapSel = E_MI_SYS_FIELDTYPE_BOTH; stVifPortInfo.eScanMode = E_MI_SYS_FRAME_SCAN_MODE_PROGRESSIVE; } STCHECKRESULT(MI_VIF_SetChnPortAttr(vifChn, vifPort, &stVifPortInfo)); STCHECKRESULT(MI_VIF_EnableChnPort(vifChn, vifPort)); /************************************************ call sys bind interface *************************************************/ /************************************************ exit call sys unbind interface *************************************************/ STCHECKRESULT(MI_VIF_DisableChnPort(vifChn, vifPort)); STCHECKRESULT(MI_VIF_DisableDev(vifDev)); STCHECKRESULT(MI_VIF_DeInitDev());
-
相关主题
2.3. MI_VIF_GetDevAttr¶
-
功能
获取 VIF 设备属性。
-
语法
MI_S32 MI_VIF_GetDevAttr(MI_VIF_DEV u32VifDev, MI_VIF_DevAttr_t *pstDevAttr)
-
形参
参数名称 描述 输入/输出 u32VifDev VIF 设备号。 输入 pstDevAttr VIF 设备属性指针。 输出 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
如果未设置 VIF 设备属性,该接口将返回失败。
-
相关主题
2.4. MI_VIF_EnableDev¶
-
功能
启用 VIF 设备。
-
语法
MI_S32 MI_VIF_EnableDev(MI_VIF_DEV u32VifDev);
-
形参
参数名称 描述 输入/输出 u32VifDev VIF 设备号。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
启用前必须已经设置设备属性,否则返回失败。
-
可重复启用,不返回失败。
-
-
举例
请参见 MI_VIF_SetDevAttr的举例。
-
相关主题
2.5. MI_VIF_DisableDev¶
-
功能
禁用 VIF 设备。
-
语法
MI_S32 MI_VIF_DisableDev(MI_VIF_DEV u32VifDev);
-
形参
参数名称 描述 输入/输出 u32VifDev VIF 设备号。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
必须先禁用所有与该 VIF 设备绑定的 VIF 通道后,才能禁用 VIF 设备。
-
可重复禁用,不返回失败。
-
-
举例
请参见 MI_VIF_SetDevAttr的举例。
-
相关主题
2.6. MI_VIF_SetChnPortAttr¶
-
功能
设置 VIF 通道次属性。
-
语法
MI_S32 MI_VIF_SetChnPortAttr(MI_VIF_CHN u32VifChn, MI_VIF_PORT u32ChnPort, MI_VIF_ChnPortAttr_t *pstAttr);
-
形参
参数名称 描述 输入/输出 u32VifChn VIF 通道号。 输入 u32ChnPort Port号 输入 pstAttr VIF 通道Port属性指针。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
- 默认情况下,使用 MI_VIF_SetChnPortAttr 接口的目的是设置端口属性,如CapSize、DestSize、FrameRate等等。
-
举例
请参见MI_VIF_SetDevAttr的举例。
-
相关主题
2.7. MI_VIF_GetChnPortAttr¶
-
功能
获取 VIF 通道次属性。
-
语法
MI_S32 MI_VIF_GetChnPortAttr(MI_VIF_CHN u32VifChn, MI_VIF_PORT u32ChnPort, MI_VIF_ChnPortAttr_t *pstAttr);
-
形参
参数名称 描述 输入/输出 u32VifChn VIF 通道号。 输入 u32ChnPort Port号。 输入 pstAttr VIF 通道Port属性指针。 输出 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
必须先设置属性再获取属性。
-
举例
请参见 MI_VIF_SetChnPortAttr 的举例。
-
相关主题
2.8. MI_VIF_EnableChnPort¶
-
功能
启用 VIF 通道。
-
语法
MI_S32 MI_VIF_EnableChnPort (MI_VIF_CHN u32VifChn,MI_VIF_PORT u32ChnPort);
-
形参
参数名称 描述 输入/输出 VifChn VIF 通道号。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
必须先设置通道属性,且通道所绑定的 VIF 设备必须使能。
-
可重复启用 VIF 通道,不返回失败。
-
-
举例
请参见 MI_VIF_SetDevAttr 的举例。
-
相关主题
2.9. MI_VIF_DisableChnPort¶
-
功能
禁用 VIF 通道。
-
语法
MI_S32 MI_VIF_DisableChnPort (MI_VIF_CHN u32VifChn, MI_VIF_PORT u32ChnPort);
-
形参
参数名称 描述 输入/输出 u32VifChn VIF 通道号。 输入 u32ChnPort Port号 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
禁用 VIF 通道Port后,此 VIF 通道Port即停止采集视频输入数据,如果已经绑定后端,则后端不会再接收到视频图像。
-
可重复禁用 VIF 通道Port,不返回失败。
-
-
举例
请参见 MI_VIF_SetDevAttr的举例。
-
相关主题
2.10. MI_VIF_Query¶
-
功能
查询 VIF 通道的中断计数、平均帧率等信息。
-
语法
MI_S32 MI_VIF_Query(MI_VIF_CHN u32VifChn, MI_VIF_PORT u32ChnPort, MI_VIF_ChnPortStat_t *pstStat);
-
形参
参数名称 描述 输入/输出 u32VifChn VIF 通道号。 输入 u32ChnPort Port口 输入 pstStat 通道信息结构体指针。 输出 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
该接口可查询中断计数、通道使能状态、平均帧率、中断丢失数、获取 VB 失败次数、图像宽高等信息。
-
通过该接口获取到的帧率是每 1 秒钟的平均帧率,即 VIF 会每隔一秒统计一次平均帧率,该值并不精确,会有些波动。
-
用户可通过该接口查询中断丢失数,如果该数值一直在增加,说明 VIF 工作出现异常。
-
暂时不支持该接口。
-
2.11. MI_VIF_SetDev2SnrPadMux¶
-
功能
设置Vif Dev 和sensor Pad 之间的绑定关系
-
语法
MI_S32 MI_VIF_SetDev2SnrPadMux(MI_VIF_Dev2SnrPadMuxCfg_t stVifDevMap[], MI_U8 u8Length);
-
形参
参数名称 描述 输入/输出 stVifDevMap Dev 和SensorPad Maping 关系 输入 u8Length Dev Num 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
在默认情况下vif Dev 和SensorPad 对应关系是vif Dev0 -> SensorPad0, vif Dev2 -> SensorPad1.如果要用到其它的Vif Dev 或者Sensor Pad 需要用MI_VIF_SetDev2SnrPadMux api 设置对应连接关系。
-
在调用 MI_SNR_SetPlaneMode 后vif Dev 和 SenosrPad 对应关系会重置到默认情况,所以应在 MI_SNR_SetPlaneMode 后调用 MI_VIF_SetDev2SnrPadMux 。
-
-
举例
该api实现Vif Dev0 bind SensorPad0, Dev1 bind SensorPad2, Dev2 bind SensorPad1绑定关系范例如下:
MI_VIF_Dev2SnrPadMuxCfg_t stVifDev[4]; stVifDev[0].eSensorPadID = E_MI_VIF_SNRPAD_ID_0; stVifDev[0].u32PlaneID = 0xff;//oxff liner mode, 0:长曝光,1:短曝光。 stVifDev[1].eSensorPadID = E_MI_VIF_SNRPAD_ID_2; stVifDev[1].u32PlaneID = 0xff; stVifDev[2].eSensorPadID = E_MI_VIF_SNRPAD_ID_1; stVifDev[2].u32PlaneID = 0xff; stVifDev[3].eSensorPadID = E_MI_VIF_SNRPAD_ID_3; stVifDev[3].u32PlaneID = 0xff; MI_VIF_SetDev2SnrPadMux(stVifDev, 4);
2.12. MI_VIF_InitDev¶
-
描述
初始化VIF设备。
-
语法
MI_S32 MI_VIF_InitDev(MI_VIF_InitParam_t *pstInitParam);
-
参数
参数名称 描述 输入/输出 pstInitParam 设备初始化参数。 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
STR功能时才调用该接口,非STR并使用默认的初始化参数,则无需调用该接口。
-
举例
请参考 MI_VIF_SetDevAttr的举例
2.13. MI_VIF_DeInitDev¶
-
描述
反初始化vif设备。
-
语法
MI_S32 MI_VIF_DeInitDev(void);
-
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
STR功能时才调用该接口,非STR时无需调用
-
若选择使用该接口,则必须在销毁VIF设备后调用,否则会返回MI_ERR_FAILED
-
若重复调用该接口,会报错 fd is Invalid并返回MI_ERR_FAILED
-
-
举例
请参考 MI_VIF_SetDevAttr的举例
2.14. MI_VIF_GetDevStatus¶
-
描述
获取Vif Dev当前状态。
-
语法
MI_S32 MI_VIF_GetDevStatus(MI_VIF_DEV u32Vifdev,MI_VIF_DevStatus_t *pstVifDevStatus);
-
参数
参数名称 描述 输入/输出 u32Vifdev VIF Dev ID 输入 pstVifDevStatus VIF Dev当前状态 输出 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,参照错误码。
-
-
依赖
-
头文件:mi_vif_datatype.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
举例
该api实现Vif Dev当前状态的获取,使用范例如下:
MI_VIF_DevStatus_t stVifDev[VIF_MAX_DEV_NUM]; MI_VIF_DEV a = 0; for(a=0;a< VIF_MAX_DEV_NUM;a++) { ret = MI_VIF_GetDevStatus(a,&stVifDev[a]); }
2.15. MI_VIF_CallBackTask_Register¶
-
描述
向VIF注册回调接口。
-
语法
MI_S32 MI_VIF_CallBackTask_Register(MI_VIF_CHN u32VifChn, MI_VIF_CallBackParam_t *pstCallBackParam);
-
参数
参数名称 描述 输入/输出 u32VifChn VIF Chn ID 输入 pstCallBackParam 回调参数 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
该接口目前只支持kernel mode调用
-
-
举例
MI_S32 _mi_vif_framestart1(MI_U64 u64Data) { DBG_ERR("DATA %llu \n", u64Data); return 0; } MI_S32 _mi_vif_framestart2(MI_U64 u64Data) { DBG_ERR("DATA %llu \n", u64Data); return 0; } static MS_S32 _mi_vif_testRegVifCallback(void) { MI_VIF_CallBackParam_t stCallBackParam1; MI_VIF_CallBackParam_t stCallBackParam2; MI_VIF_CHN u32VifChn = 0; memset(&stCallBackParam1, 0x0, sizeof(MI_VIF_CallBackParam_t)); memset(&stCallBackParam2, 0x0, sizeof(MI_VIF_CallBackParam_t)); stCallBackParam1.eCallBackMode = E_MI_VIF_CALLBACK_ISR; stCallBackParam1.eIrqType = E_MI_VIF_IRQ_FRAMESTART; stCallBackParam1.pfnCallBackFunc = _mi_vif_framestart1; stCallBackParam1.u64Data = 11; MI_VIF_CallBackTask_Register(u32VifChn,&stCallBackParam1); stCallBackParam2.eCallBackMode = E_MI_VIF_CALLBACK_ISR; stCallBackParam2.eIrqType = E_MI_VIF_IRQ_FRAMESTART; stCallBackParam2.pfnCallBackFunc = _mi_vif_framestart2; stCallBackParam2.u64Data = 22; MI_VIF_CallBackTask_Register(u32VifChn,&stCallBackParam2); return 0; } static MS_S32 _mi_vif_testUnRegVifCallback(void) { MI_VIF_CallBackParam_t stCallBackParam1; MI_VIF_CallBackParam_t stCallBackParam2; MI_VIF_CHN u32VifChn = 0; memset(&stCallBackParam1, 0x0, sizeof(MI_VIF_CallBackParam_t)); memset(&stCallBackParam1, 0x0, sizeof(MI_VIF_CallBackParam_t)); stCallBackParam1.eCallBackMode = E_MI_VIF_CALLBACK_ISR; stCallBackParam1.eIrqType = E_MI_VIF_IRQ_FRAMESTART; stCallBackParam1.pfnCallBackFunc = _mi_vif_framestart1; stCallBackParam1.u64Data = 33; MI_VIF_CallBackTask_UnRegister(u32VifChn,&stCallBackParam1); stCallBackParam2.eCallBackMode = E_MI_VIF_CALLBACK_ISR; stCallBackParam2.eIrqType = E_MI_VIF_IRQ_FRAMESTART; stCallBackParam2.pfnCallBackFunc = _mi_vif_framestart2; stCallBackParam2.u64Data = 44; MI_VIF_CallBackTask_UnRegister(u32VifChn,&stCallBackParam2); return 0; }
-
相关主题
2.16. MI_VIF_CallBackTask_UnRegister¶
-
描述
向VIF反注册回调接口。
-
语法
MI_S32 MI_VIF_CallBackTask_UnRegister(MI_VIF_CHN u32VifChn, MI_VIF_CallBackParam_t *pstCallBackParam);
-
参数
参数名称 描述 输入/输出 u32VifChn VIF Chn ID 输入 pstCallBackParam 回调参数 输入 -
返回值
-
MI_SUCCESS(0) 成功
-
非0 失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_vif.h
-
库文件:libmi_vif.a
-
-
注意
-
该接口目前只支持kernel mode调用
-
-
举例
-
相关主题
3. VIF 数据类型¶
3.1. 数据类型定义¶
表 3‑1:VIF 数据类型
数据类型 | 描述 |
---|---|
MI_VIF_IntfMode_e | 定义视频输入设备的接口模式 |
MI_VIF_WorkMode_e | 定义视频设备的复合工作模式 |
MI_VIF_FrameRate_e | 定义视频设备输出fps和输入fps的关系 |
MI_VIF_DataYuvSeq_e | 定义视频设备接收的 YUV 数据的数据排列顺序 |
MI_VIF_ClkEdge_e | 定义视频设备接收的时钟类型 |
MI_VIF_BitOrder_e | 定义视频设备的data bit翻转顺序 |
MI_VIF_HDRType_e | 定义视频设备HDR 类型 |
MI_VIF_Polar_e | 定义信号极性 |
MI_VIF_DevId_e | 定义视频设备的ID |
MI_VIF_SyncAttr_t | 定义同步信号属性 |
MI_VIF_DevAttr_t | 定义视频输入设备的属性。 |
MI_VIF_ChnPortAttr_t | 定义 VIF 通道属性。 |
MI_VIF_ChnPortStat_t | 定义VIF 通道信息结构体 |
MI_VIF_SNRPad_e | 定义 SensorPad Id |
MI_VIF_Dev2SnrPadMuxCfg_t | 定义VIF 设备和SensorPad 绑定关系 |
MI_VIF_InitParam_t | 定义VIF设备初始化参数 |
MI_VIF_DevStatus_t | 定义VIF设备当前状态 |
MI_VIF_CALLBK_FUNC | 定义回调函数类型 |
MI_VIF_CallBackMode_e | 定义回调模式 |
MI_VIF_IrqType_e | 定义硬件中断类型 |
MI_VIF_CallBackParam_t | 定义回调参数 |
3.2. MI_VIF_IntfMode_e¶
-
说明
定义视频设备的接口模式。
-
定义
typedef enum { E_MI_VIF_MODE_BT656 = 0, E_MI_VIF_MODE_DIGITAL_CAMERA, E_MI_VIF_MODE_BT1120_STANDARD, E_MI_VIF_MODE_BT1120_INTERLEAVED, E_MI_VIF_MODE_MIPI, E_MI_VIF_MODE_BT601, E_MI_VIF_MODE_NUM } MI_VIF_IntfMode_e;
-
成员
成员名称 描述 E_MI_VIF_MODE_BT656 输入数据的协议符合标准 BT.656 协议,端口数据输入模式为亮度色度复合模式,分量模式为单分量。 E_MI_VIF_MODE_DIGITAL_CAMERA 输入数据的协议为 Digital camera 协议,端口数据输入模式为亮度色度复合模式,分量模式为单分量。 E_MI_VIF_MODE_BT1120_STANDARD 输入数据的协议符合标准 BT.1120 协议 (BT.656+双分量),端口数据输入模式为亮度色度分离模式,分量模式为双分量。 E_MI_VIF_MODE_BT1120_INTERLEAVED 输入数据的协议符合 BT.1120 interleave 模式,端口数据输入模式为亮度色度分离模式,分量模式为双分量。 E_MI_VIF_MODE_MIPI 输入数据符合MIPI 协议 E_MI_VIF_MODE_BT601 输入数据符合BT.601 协议 -
注意事项
可以通过MI_SNR_GetPadInfo中的eIntfMode 获取当前接口模式。
-
相关数据类型及接口
3.3. MI_VIF_WorkMode_e¶
-
说明
定义视频设备的复合工作模式。
-
定义
typedef enum { /* BT656 multiple ch mode */ E_MI_VIF_WORK_MODE_1MULTIPLEX, E_MI_VIF_WORK_MODE_2MULTIPLEX, E_MI_VIF_WORK_MODE_4MULTIPLEX, /* RGB mode for MIPI/Parallel sensor */ E_MI_VIF_WORK_MODE_RGB_REALTIME, E_MI_VIF_WORK_MODE_RGB_FRAMEMODE, E_MI_VIF_WORK_MODE_MAX } MI_VIF_WorkMode_e;
-
成员
成员名称 | 描述 |
---|---|
E_MI_VIF_WORK_MODE_1MULTIPLEX | 1 路复合工作模式。 |
E_MI_VIF_WORK_MODE_2MULTIPLEX | 2 路复合工作模式,输入数据的协议必须为标准 BT.656 协议。 |
E_MI_VIF_WORK_MODE_4MULTIPLEX | 4 路复合工作模式,输入数据的协议必须为标准 BT.656 协议。 |
E_MI_VIF_WORK_MODE_RGB_REALTIME | RGB Realtime mode for MIPI/Parallel sensor |
E_MI_VIF_WORK_MODE_RGB_FRAMEMODE, | RGB Framemode mode for MIPI/Parallel sensor |
-
注意事项
-
当该项设为RGB_REALTIME时 后端只能绑定MI_VPE模块,且MI_VPE也要设置为Realtime mode, 两个模块之间没有Dram buffer,底层硬件直接相连,Realtime mode连接时两个模块不支持分时复用。
-
当该项设置为RGB_FRAME时,VIF向Dram写出buffer,送给后端模块。
-
Pudding、Ispahan系列芯片不支持复合工作模式,WorkMode设置为复合工作模式时无效,使用BT656 sensor时,WorkMode需设置为RGB_REALTIME或RGB_FRAME。
-
-
相关数据类型及接口
3.4. MI_VIF_FrameRate_e¶
-
说明
定义视频设备输出fps和输入fps的关系。
-
定义
typedef enum { E_MI_VIF_FRAMERATE_FULL = 0, E_MI_VIF_FRAMERATE_HALF, E_MI_VIF_FRAMERATE_QUARTR, E_MI_VIF_FRAMERATE_OCTANT, E_MI_VIF_FRAMERATE_THREE_QUARTERS, E_MI_VIF_FRAMERATE_NUM, } MI_VIF_FrameRate_e;
-
成员
成员名称 描述 E_MI_VIF_FRAMERATE_FULL 源和目标1:1输出。 E_MI_VIF_FRAMERATE_HALF 源和目标2:1输出。 E_MI_VIF_FRAMERATE_QUARTER 源和目标4:1输出。 E_MI_VIF_FRAMERATE_OCTANT 源和目标8:1输出。 E_MI_VIF_FRAMERATE_THREE_QUARTERS 源和目标4:3输出。 -
注意事项
仅在BT656 multiple channel mode 下设置有效
-
相关数据类型及接口
3.5. MI_VIF_DataYuvSeq_e¶
-
说明
定义视频设备接收的 YUV 数据的数据排列顺序。
-
定义
typedef enum { E_MI_VIF_INPUT_DATA_VUVU = 0, E_MI_VIF_INPUT_DATA_UVUV, E_MI_VIF_INPUT_DATA_UYVY = 0, E_MI_VIF_INPUT_DATA_VYUY, E_MI_VIF_INPUT_DATA_YUYV, E_MI_VIF_INPUT_DATA_YVYU, E_MI_VIF_DATA_YUV_NUM } MI_VIF_DataYuvSeq_e;
-
成员
成员名称 描述 E_MI_VIF_INPUT_DATA_VUVU YUV 数据通过分离模式输入时,C 分量的输入排列顺序为 VUVU。 E_MI_VIF_INPUT_DATA_UVUV YUV 数据通过分离模式输入时,C 分量的输入排列顺序为 UVUV。 E_MI_VIF_INPUT_DATA_UYVY YUV 数据通过复合模式输入时,顺序为UYVY。 E_MI_VIF_INPUT_DATA_VYUY YUV 数据通过复合模式输入时,顺序为VYUY。 E_MI_VIF_INPUT_DATA_YUYV YUV 数据通过复合模式输入时,顺序为YUYV。 E_MI_VIF_INPUT_DATA_YVYU YUV 数据通过复合模式输入时,顺序为YVYU。 -
相关数据类型及接口
3.6. MI_VIF_ClkEdge_e¶
-
说明
定义视频设备接收的时钟类型。
-
定义
typedef enum { E_MI_VIF_CLK_EDGE_SINGLE_UP = 0, E_MI_VIF_CLK_EDGE_SINGLE_DOWN, E_MI_VIF_CLK_EDGE_DOUBLE, E_MI_VIF_CLK_EDGE_NUM } MI_VIF_ClkEdge_e;
-
成员
成员名称 描述 E_MI_VIF_CLK_EDGE_SINGLE_UP 时钟单沿模式,且 VIF 设备在上升沿采样。 E_MI_VIF_CLK_EDGE_SINGLE_DOWN 时钟单沿模式,且 VIF 设备在下降沿采样。 E_MI_VIF_CLK_EDGE_DOUBLE 前端送过来双沿数据时,VIF 进行双沿采样。 -
注意事项
无。
-
相关数据类型及接口
3.7. MI_VIF_BitOrder_e¶
-
说明
Vif设备的data bit顺序翻转设定
-
定义
typedef enum { E_MI_VIF_BITORDER_NORMAL = 0, E_MI_VIF_BITORDER_REVERSED } MI_VIF_BitOrder_e;
-
成员
成员名称 描述 E_MI_VIF_BITORDER_NORMAL 正常data bit排序 E_MI_VIF_BITORDER_REVERSED 逆序data bit排序 -
相关数据类型及接口
3.8. MI_VIF_HDRType_e¶
-
说明
定义视频设备HDR 类型。
-
定义
typedef enum { E_MI_VIF_HDR_TYPE_OFF, E_MI_VIF_HDR_TYPE_VC, //virtual channel mode HDR,vc0->long, vc1->short E_MI_VIF_HDR_TYPE_DOL, E_MI_VIF_HDR_TYPE_EMBEDDED, //compressed HDR mode E_MI_VIF_HDR_TYPE_LI, //Line interlace HDR E_MI_VIF_HDR_TYPE_MAX } MI_VIF_HDRType_e;
-
成员
成员名称 描述 E_MI_VIF_HDR_TYPE_OFF 不开HDR E_MI_VIF_HDR_TYPE_VC virtual channel mode HDR,vc0->long, vc1->short E_MI_VIF_HDR_TYPE_DOL Digital Overlap High Dynamic Range E_MI_VIF_HDR_TYPE_EMBEDDED compressed HDR mode E_MI_VIF_HDR_TYPE_LI Line interlace HDR -
注意事项
-
hdr type和sensor相关,可以通过MI_SNR_GetPadInfo的eHDRMode获取当前sensor支持的HDR type。
-
实现HDR功能需要MI_VIF 和MI_VPE 模块设置相同的HDR类型。
-
-
相关数据类型及接口
3.9. MI_VIF_Polar_e¶
-
说明
定义视频输入信号有效。
-
定义
typedef enum { E_MI_VIF_PIN_POLAR_POS, E_MI_VIF_PIN_POLAR_NEG } MI_VIF_Polar_e;
-
成员
成员名称 描述 E_MI_VIF_PIN_POLAR_POS 高电平信号有效 E_MI_VIF_PIN_POLAR_NEG 低电平信号有效 -
注意事项
只有parallel sensor 接口可以设置
-
相关数据类型及接口
3.10. MI_VIF_DevId_e¶
-
说明
定义视频设备的ID。
-
定义
typedef enum { E_MI_VIF_DEVICE_ID0 = 0x0001, E_MI_VIF_DEVICE_ID1 = 0x0002, E_MI_VIF_DEVICE_ID2 = 0x0004, E_MI_VIF_DEVICE_ID3 = 0x0008, E_MI_VIF_DEVICE_ID4 = 0x0010, E_MI_VIF_DEVICE_ID5 = 0x0020, E_MI_VIF_DEVICE_ID6 = 0x0040, E_MI_VIF_DEVICE_ID7 = 0x0080, E_MI_VIF_DEVICE_ID8 = 0x0100, E_MI_VIF_DEVICE_ID9 = 0x0200, E_MI_VIF_DEVICE_ID10 = 0x0400, E_MI_VIF_DEVICE_ID11 = 0x0800, E_MI_VIF_DEVICE_ID12 = 0x1000, E_MI_VIF_DEVICE_ID13 = 0x2000, E_MI_VIF_DEVICE_ID14 = 0x4000, E_MI_VIF_DEVICE_ID15 = 0x8000, E_MI_VIF_DEVICE_ID_MAX = 0xffff } MI_VIF_DevId_e;
-
相关数据类型及接口
3.11. MI_VIF_SyncAttr_t¶
-
说明
同步信号属性设置。
-
定义
typedef struct MI_VIF_SyncAttr_s { MI_VIF_Polar_e eVsyncPolarity; MI_VIF_Polar_e eHsyncPolarity; MI_VIF_Polar_e ePclkPolarity; MI_U32 VsyncDelay; MI_U32 HsyncDelay; MI_U32 PclkDelay; } MI_VIF_SyncAttr_t;
-
成员
成员名称 描述 eVsyncPolarity 垂直同步信号有效极性 eHsyncPolarity 水平同步信号有效极性 ePclkPolarity Pixel Clock 有效极性 VsyncDelay 垂直同步信号延时时间 HsyncDelay 水平同步信号延时时间 PclkDelay Pixel Clock 延时时间 以1920x1080分辨率, Pclk/Hsync/Vsync都是高电平有效,波形对应关系如下:
Pclk: pixel clock, 每收到一个pixel,产生一个clock。
Hsync:行同步,有效时收到的信号属于同一行。
Vsync:场同步,有效时收到的信号属于同一张frame。
-
注意事项
只有parallel sensor 接口可以设置
-
相关数据类型及接口
3.12. MI_VIF_DevAttr_t¶
-
说明
定义视频输入设备的属性。
-
定义
typedef struct MI_VIF_DevAttr_s { MI_VIF_IntfMode_e eIntfMode; MI_VIF_WorkMode_e eWorkMode; MI_VIF_HDRType_e eHDRType; MI_VIF_ClkEdge_e eClkEdge; MI_VIF_DataYuvSeq_e eDataSeq; MI_VIF_BitOrder_e eBitOrder; /* adjust bit order layout */ MI_VIF_SyncAttr_t stSyncAttr; MI_U32 u32DevStitchMask; //multi vif dev bitmask by MI_VIF_DevId_e } MI_VIF_DevAttr_t;
-
成员
成员名称 描述 eIntfMode 接口模式。 eWorkMode 工作模式。 eHDRType HDR类型 eClkEdge 时钟边沿模式(上升沿采样、下降沿采样、双沿采样)。 eDataSeq 输入数据顺序 (仅支持 yuv 格式), Digital Camera 模式时必须配置,其它模式时无效。 eBitOrder Vif的data线layout是正序还是逆序 stSyncAttr 同步信号属性 u32DevStitchMask 图像融合设备ID -
注意事项
-
u32DevStitchMask = E_MI_VIF_DEVICE_ID0| E_MI_VIF_DEVICE_ID2
-
当设置了该参数时,后端MI_VPE 必须使用MI_VPE_CreateMultiChannelStitch API创建通道,详细用法参考MI_VPE api doc中该api的举例。
-
-
相关数据类型及接口
3.13. MI_VIF_ChnPortAttr_t¶
-
说明
定义 VIF 通道Port属性。
-
定义
typedef struct MI_VIF_ChnPortAttr_s { MI_SYS_WindowRect_t stCapRect; MI_SYS_WindowRect_t stDestSize; MI_SYS_FieldType_e enCapSel; MI_SYS_FrameScanMode_e nScanMode; MI_SYS_PixelFormat_e ePixFormat; MI_VI_FrameRate_e eFrameRate; MI_U32 u32FrameModeLineCount } MI_VIF_ChnPortAttr_t;
-
成员
此Port仅仅支持设置stDestSize,enDstFrameRate,其他属性会被忽略。
成员名称 描述 stCapRect 捕获区域起始坐标(相对于设备图像的大小)与宽高 stDestSize 目标图像大小。必须配置,且大小不应该超出外围 ADC 输出图像的大小范围,否则可能导致VIF 硬件工作异常 eCapSel 帧场选择,只用于隔行模式,建议捕获单场时选择捕获底场。逐行模式时,该项必须设置为 E_MI_SYS_FIELDTYPE_BOTH。 eScanMode 输入扫描模式 (逐行、隔行) ePixFormat 支持的像素存储格式。 eFrameRate 目标帧率和输入帧率的比值关系。如果不进行帧率控制,则该值设置为0。可以按照1:1,2:1,4:1,8:1,4:3等比例输出,仅在BT656接口中可用。 u32FrameModeLineCount 通知下一级处理的时机,用于E_MI_VIF_WORK_MODE_RGB_FRAMEMODE的时候 -
相关数据类型及接口
3.14. MI_VIF_ChnPortStat_t¶
-
说明
VIF 通道信息结构体。
-
定义
typedef struct MI_VIF_ChnStat_s { MI_BOOL bEnable; /* Whether this channel is enabled */ MI_U32 u32IntCnt; /* The VIFdeo frame interrupt count */ MI_U32 u32FrmRate; /* current frame rate */ MI_U32 u32LostInt; /* The interrupt is received but nobody care */ MI_U32 u32VbFail; /* video buffer malloc failure */ MI_U32 u32PicWidth;/* curren pic width */ MI_U32 u32PicHeight;/* current pic height */ } MI_VIF_ChnPortStat_t;
-
成员
成员名称 描述 bEnable 通道是否使能。 u32IntCnt 中断计数。 u32FrmRate 每 1 秒的平均帧率,该值不一定精确。 u32LostInt 中断丢失计数。 u32VbFail 获取 VB 失败计数。 u32PicWidth 图像宽度。 u32PicHeight 图像高度。 -
注意事项
-
结构体的中断计数,可用于无中断检测。
-
该结构体的帧率是每 1 秒钟的平均帧率,即 VIF 会每隔 1 秒统计一次平均帧率, 该值并不精确。
-
如果查询到该结构体的中断丢失计数一直在增加,说明 VIF 工作出现异常。
-
3.15. MI_VIF_SNRPad_e¶
-
说明
定义SensorPad Id。
-
定义
typedef enum { E_MI_VIF_SNRPAD_NULL, E_MI_VIF_SNRPADID0, E_MI_VIF_SNRPADID1, E_MI_VIF_SNRPADID2, E_MI_VIF_SNRPADID3, E_MI_VIF_SNRPAD_NUM }MI_VIF_SNRPad_e;
-
成员
成员名称 描述 E_MI_VIF_SNRPAD_NULL 不绑定SensorPad E_MI_VIF_SNRPADID0 对应硬件设备Sensor0 E_MI_VIF_SNRPADID1 对应硬件设备Sensor1 E_MI_VIF_SNRPADID2 对应硬件设备Sensor2 E_MI_VIF_SNRPADID3 对应硬件设备Sensor3 E_MI_VIF_SNRPAD_NUM 超过最大Sensor Num -
注意事项
在默认情况下是VIF Dev0 对应Sensor0, Dev2 对应Sensor1。
参考MI SENSOR API中的1.2章节流程框图。
-
相关数据类型及接口
3.16. MI_VIF_Dev2SnrPadMuxCfg_t¶
-
说明
定义VIF 设备和SensorPad 绑定关系。
-
定义
typedef struct MI_VIF_VIFDev2SnrPadMuxConf_s { MI_VIF_SNRPad_e eSensorPadID; //sensor Pad id MI_U32 u32PlaneID; //For HDR, 1 is short exposure, 0 is long exposure, } MI_VIF_Dev2SnrPadMuxCfg_t;
-
成员
成员名称 描述 eSensorPadID Sensor Pad Id u32PlaneID PlaneId, for HDR 1 长曝,0 短曝, for liner 为0xff. -
注意事项
在默认情况下是VIF Dev0 对应Sensor0, Dev2 对应Sensor1.默认不调用该接口。
-
相关数据类型及接口
3.17. MI_VIF_InitParam_t¶
-
说明
VIF设备初始化参数。
-
定义
typedef struct MI_VIF_InitParam_s { MI_U32 u32DevId; MI_U8 *u8Data; } MI_VIF_InitParam_t;
-
成员
成员名称 描述 u32DevId 设备ID u8Data 数据指针buffer -
相关数据类型及接口
3.18. MI_VIF_DevStatus_t¶
-
说明
VIF Dev当前状态
-
定义
typedef struct MI_VIF_VIFDevStatus_s { MI_VIF_Dev2SnrPadMuxCfg_t stDev2SensrPad; MI_U32 bDevEn; } MI_VIF_DevStatus_t;
-
成员
成员名称 描述 stDev2SensrPad VIF Dev 绑定的SensorPad及PlaneId bDevEn VIF Dev当前使能状态 -
相关数据类型及接口
3.19. MI_VIF_CALLBK_FUNC¶
-
说明
定义回调函数类型
-
定义
typedef MI_S32 (*MI_VIF_CALLBK_FUNC)(MI_U64 u64Data);
-
相关数据类型及接口
3.20. MI_VIF_CallBackMode_e¶
-
说明
定义回调模式。
-
定义
typedef enum { E_MI_VIF_CALLBACK_ISR, E_MI_VIF_CALLBACK_MAX, } MI_VIF_CallBackMode_e;
-
成员
成员名称 描述 E_MI_VIF_CALLBACK_ISR 硬件中断模式回调 E_MI_VIF_CALLBACK_MAX 回调模式最大值 -
注意事项
目前只支持ISR 回调模式。
-
相关数据类型及接口
3.21. MI_VIF_IrqType_e¶
-
说明
定义硬件中断类型
-
定义
typedef enum { E_MI_VIF_IRQ_FRAMESTART, //frame start irq E_MI_VIF_IRQ_FRAMEEND, //frame end irq E_MI_VIF_IRQ_LINEHIT, //frame line hit irq E_MI_VIF_IRQ_MAX, } MI_VIF_IrqType_e;
-
成员
成员名称 描述 E_MI_VIF_IRQ_FRAMESTART VIF Feame start 中断类型 E_MI_VIF_IRQ_FRAMEEND VIF Frame done 中断类型 E_MI_VIF_IRQ_LINEHIT VIF LineCount Hit中断类型 -
注意事项
-
E_MI_VIF_IRQ_FRAMESTART: 每一帧第一个pixel的信号触发该中断
-
E_MI_VPE_IRQ_ISPFRAMEDONE:每一帧最后一个pixel的信号触发该中断
-
E_MI_VIF_IRQ_LINEHIT:每一帧指定line到达时的信号触发该中断
-
-
相关数据类型及接口
3.22. MI_VIF_CallBackParam_t¶
-
说明
定义回调参数
-
定义
typedef struct MI_VIF_CallBackParam_s { MI_VIF_CallBackMode_e eCallBackMode; MI_VIF_IrqType_e eIrqType; MI_VIF_CALLBK_FUNC pfnCallBackFunc; MI_U64 u64Data; } MI_VIF_CallBackParam_t;
-
成员
成员名称 描述 eCallBackMode Callback mode eIrqType Hardware interrupt type pfnCallBackFunc 回调函数 u64Data 回调函数参数 -
相关数据类型及接口
4. 错误码¶
视频输入 API 错误码如下表所示。
表 4‑1:视频输入 API 错误码
错误代码 | 宏定义 | 描述 |
---|---|---|
0xA0062001 | MI_ERR_VIF_INVALID_DEVID | 视频输入设备号无效 |
0xA0062002 | MI_ERR_VIF_INVALID_CHNID | 视频输入通道号无效 |
0xA0062003 | MI_ERR_VIF_INVALID_PARA | 视频输入参数设置无效 |
0xA0062006 | MI_ERR_VIF_INVALID_NULL_PTR | 输入参数空指针错误 |
0xA0062007 | MI_ERR_VIF_FAILED_NOTCONFIG | 视频设备或通道属性未配置 |
0xA0062008 | MI_ERR_VIF_NOT_SUPPORT | 操作不支持 |
0xA0062009 | MI_ERR_VIF_NOT_PERM | 操作不允许 |
0xA006200C | MI_ERR_VIF_NOMEM | 分配内存失败 |
0xA006200E | MI_ERR_VIF_BUF_EMPTY | 视频输入缓存为空 |
0xA006200F | MI_ERR_VIF_BUF_FULL | 视频输入缓存为满 |
0xA0062010 | MI_ERR_VIF_SYS_NOTREADY | 视频输入系统未初始化 |
0xA0062012 | MI_ERR_VIF_BUSY | 视频输入系统忙 |
0xA0062080 | MI_ERR_VIF_INVALID_PORTID | 视频输入端口无效 |
0xA0062081 | MI_ERR_VIF_FAILED_DEVNOTENABLE | 视频输入设备未启用 |
0xA0062082 | MI_ERR_VIF_FAILED_DEVNOTDISABLE | 视频输入设备未禁用 |
0xA0062083 | MI_ERR_VIF_FAILED_PORTNOTENABLE | 视频输入通道未启用 |
0xA0062084 | MI_ERR_VIF_FAILED_PORTNOTDISABLE | 视频输入通道未禁用 |
0xA0062085 | MI_ERR_VIF_CFG_TIMEOUT | 视频配置属性超时 |
0xA0062086 | MI_ERR_VIF_NORM_UNMATCH | 视频ADC VIU不匹配 |
0xA0062087 | MI_ERR_VIF_INVALID_WAYID | 视频通路号无效 |
0xA0062088 | MI_ERR_VIF_INVALID_PHYCHNID | 视频物理通道号无效 |
0xA0062089 | MI_ERR_VIF_FAILED_NOTBIND | 视频通道未绑定 |
0xA006208A | MI_ERR_VIF_FAILED_BINDED | 视频通道已绑定 |
5. PROCFS介绍¶
5.1. cat¶
-
调试信息
#cat /proc/mi_modules/mi_vif/mi_vif0
-
调试信息分析
记录当前 VIF 的使用状况以及 device 属性、OutPort 属性、可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 Dev Attr u32VifDevIdx Dev 号 Intf 输入数据的协议 Clk 工作模式,Runmode Hdr Hdr 类型 IsrCnt Frame start callback count yncCnt/EnqCnt/ BarCnt/CheckCnt/ DequCnt Callback 接口执行次数 OutPort Attr Chn Channel id Pipe Pipe id Port Port id Cap_size 输入 size Dest_size 输出 size Sel 帧场选择 Scan 扫描模式,progressive or interlaced Fmt Out put pixel format Rate Frame rate type
LineCnt Frame mode line count Atom 底层拿住 buffer 数量 MetaInfo Frame id Outcount 输出 frame count Failcount 获取 outputbuffer 失败次数 Fps Frame per second Recv_size Vif 硬件收到 size Out_size Write dma size SubOut_size Write sub dma size ReadIdx/WriteIdx/ DequeIdx Read,write,deque 的 index FrameStartCnt 处理到第几 frame FrameDoneCnt 处理完多少 frame VbFail VbFail 计数 DropFrameCnt Drop frame 的数量 RingBufStatus Ring buf 状态
5.2. echo¶
功能 | Dump frame 到指定路径 |
---|---|
命令 | echo dump [chnid portid /path] > /proc/mi_modules/mi_vif/mi_vif0 |
参数说明 | Chnid: channel id Portid: port id Path: 路径存放 |
举例 | echo dump 0 0 /tmp > /proc/mi_modules/mi_vif/mi_vif0 |
功能 | 设置vif的atom 数量 |
---|---|
命令 | echo initatom [chnid InitAtom] > /proc/mi_modules/mi_vif/mi_vif0 |
参数说明 | Chnid: channel id InitAtom: Driver 最大持有buffer 数量 |
举例 | echo initatom 0 2 > /proc/mi_modules/mi_vif/mi_vif0 |
功能 | 设置timer |
---|---|
命令 | echo usetimer [devid bUseTimer] > /proc/mi_modules/mi_vif/mi_vif0 |
参数说明 | devid: device id bUseTimer: 使能timer |
举例 | echo usetimer 0 1 > /proc/mi_modules/mi_vif/mi_vif0 |