MI SENSOR API
1. 概述¶
1.1. 概述¶
SNR(sensor)模块实现获取摄像头接口信息、调整分辨率和帧率等功能。
1.2. 流程框图¶
1.3. 关键字说明¶
-
Pad
Sensor 硬件插口位置。
-
Plane
Pad 下的通道名称。
-
Res
Resolution 分辨率简称。
-
Orien
确定方向, 设置sensor 水平和竖直方向镜像。
-
VC
Virtual Channel 虚拟通道。
2. API 参考¶
API名 | 功能 |
---|---|
MI_SNR_Enable | 设置Sensor使能 |
MI_SNR_Disable | 设置Sensor失能 |
MI_SNR_GetPadInfo | 获取Sensor设备信息 |
MI_SNR_GetPlaneInfo | 获取Sensor通道信息 |
MI_SNR_GetFps | 获取Sensor当前帧率 |
MI_SNR_SetFps | 设置Sensor帧率 |
MI_SNR_GetAnadecSrcAttr | 获取模拟信号输入参数 |
MI_SNR_QueryResCount | 获取Sensor支持分辨率的数量 |
MI_SNR_GetRes | 获取索引对应的sensor分辨率 |
MI_SNR_GetCurRes | 获取Sensor当前分辨率 |
MI_SNR_SetRes | 设置Sensor分辨率 |
MI_SNR_SetOrien | 设置Sensor翻转 |
MI_SNR_GetOrien | 获取Sensor翻转属性 |
MI_SNR_SetPlaneMode | 设置Sensor通道模式 |
MI_SNR_GetPlaneMode | 获取设置的Sensor通道模式 |
MI_SNR_CustFunction | 设置Sensor客制化功能 |
MI_SNR_InitDev | 初始化Sensor设备 |
MI_SNR_DeInitDev | 反初始化Sensor设备 |
2.1. MI_SNR_Enable¶
-
功能
设置SENSOR 对应设备的使能
-
语法
MI_S32 MI_SNR_Enable(MI_SNR_PAD_ID_e ePADId);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR 设备号。 取值范围:[0, MI_SNR_MAX_PADNUM]。 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
-
在调用前要保证 SENSOR设备处于未初始化状态。如果SENSOR设备已处于使能状态,可以使用MI_SNR_Disable 来去初始化设备。
-
enable 之前必须要设置 MI_SNR_SetPlaneMode和 MI_SNR_SetRes。
-
由于MI_SNR模块没有与Dram交互, 所以不需要与后端模块进行sys 间的bind, 数据流会自动流向MI_VIF。
-
-
举例
Sensor初始化运行和退出范例如下:
MI_U32 u32ResCount =0; MI_U8 u8ResIndex =0; MI_U8 u8ChocieRes =0; MI_SNR_PAD_ID_e eSnrPad= E_MI_SNR_PAD_ID_0; MI_SNR_QueryResCount(eSnrPad, &u32ResCount); for(u8ResIndex=0; u8ResIndex < u32ResCount; u8ResIndex++) { MI_SNR_GetRes(E_MI_SNR_PAD_ID_0, u8ResIndex, &stRes); printf("index %d, Crop(%d,%d,%d,%d), outputsize(%d,%d), maxfps %d, minfps %d, ResDesc %s\n",u8ResIndex, stRes.stCropRect.u16X, stRes.stCropRect.u16Y, stRes.stCropRect.u16Width,stRes.stCropRect.u16Height,stRes.stOutputSize.u16Width, stRes.stOutputSize.u16Height, stRes.u32MaxFps,stRes.u32MinFps, stRes.strResDesc); } printf("select res\n"); scanf("%c", &select); if(E_MI_VIF_HDR_TYPE_OFF== eHdrType) { MI_SNR_SetPlaneMode(eSnrPad, FALSE); } else { MI_SNR_SetPlaneMode(eSnrPad, TRUE); } MI_SNR_SetRes(eSnrPad,u8ResIdx); MI_SNR_Enable(eSnrPad); /*****************************/ /* Exit call interface */ /*****************************/ MI_SNR_Disable(eSnrPad);
-
相关主题
2.2. MI_SNR_Disable¶
-
功能
设置SENSOR 对应设备失能。
-
语法
MI_S32 MI_SNR_Disable(MI_SNR_PAD_ID_e ePADId);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
举例
参考MI_SNR_Enable举例。
-
相关主题
2.3. MI_SNR_GetPadInfo¶
-
功能
获取SENSOR 设备信息。
-
语法
MI_S32 MI_SNR_GetPadInfo(MI_SNR_PAD_ID_e ePADId, MI_SNR_PADInfo_t *pstPadInfo);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 pstPadInfo SENSOR设备属性指针 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
2.4. MI_SNR_GetPlaneInfo¶
-
功能
获取SENSOR 通道信息。
-
语法
MI_S32 MI_SNR_GetPlaneInfo(MI_SNR_PAD_ID_e ePADId, MI_U32 u32PlaneID, MI_SNR_PlaneInfo_t *pstPlaneInfo);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u32PlaneID SENSOR通道号。 取值范围:[0, MI_SNR_MAX_PLANENUM)。 输入 pstPlaneInfo SENSOR通道信息。 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
2.5. MI_SNR_GetFps¶
-
功能
获取SENSOR 帧率
-
语法
MI_S32 MI_SNR_GetFps(MI_SNR_PAD_ID_e ePADId, MI_U32 *pFps);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 pFps 帧率指针 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
获取到的fps范围为:
min*1000 < fps < max*1000 : 精确到小数点后3位。
-
相关主题
2.6. MI_SNR_SetFps¶
-
功能
设置SENSOR 帧率。
-
语法
MI_S32 MI_SNR_SetFps(MI_SNR_PAD_ID_e ePADId, MI_U32 u32Fps);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u32Fps 帧率 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
-
fps有两个取值区间:
min< fps < max : 精确到个位数
min*1000 < fps < max*1000 : 精确到小数点后3位。
-
Fps 的最大/最小值为MI_SNR_SetRes时设置分辨率Index所对应的max/min fps。
-
-
相关主题
2.7. MI_SNR_GetAnadecSrcAttr¶
-
功能
获取模拟信号输入参数。
-
语法
MI_S32 MI_SNR_GetAnadecSrcAttr(MI_SNR_PAD_ID_e ePADId, MI_U32 u32PlaneID, MI_SNR_Anadec_SrcAttr_t *pstSrcAttr);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u32PlaneID SENSOR通道号。 取值范围:[0, MI_SNR_MAX_PLANENUM)。 输入 pstSrcAttr 源输入参数 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
在输出为模拟信号的sensor上才可以用。
-
相关主题
2.8. MI_SNR_QueryResCount¶
-
功能
获取SENSOR支持分辨率的数量。
-
语法
MI_S32 MI_SNR_QueryResCount(MI_SNR_PAD_ID_e ePADId, MI_U32 *pu32ResCount);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 *pu32ResCount SENSOR设备支持的resolution 数量 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
举例
参考MI_SNR_GetRes 举例
-
相关主题
2.9. MI_SNR_GetRes¶
-
功能
获取resolution 映射表中索引对应的分辨率。
-
语法
MI_S32 MI_SNR_GetRes(MI_SNR_PAD_ID_e ePADId, MI_U8 u8ResIdx, MI_SNR_Res_t *pstRes);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u8ResIdx 分辨率映射表中的索引 输入 *pstRes 序号所对应的分辨率 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
举例
获取resolution列表,以及选择对应分辨率设置范例如下:
MI_U32 u32ResCount =0; MI_U8 u8ResIndex =0; MI_U8 u8ChocieRes =0; MI_SNR_QueryResCount(E_MI_SNR_PAD_ID_0, &u32ResCount); for(u8ResIndex=0; u8ResIndex < u32ResCount; u8ResIndex++) { MI_SNR_GetRes(E_MI_SNR_PAD_ID_0, u8ResIndex, &stRes); printf("index %d, Crop(%d,%d,%d,%d), outputsize(%d,%d), maxfps %d, minfps %d, ResDesc %s\n",u8ResIndex, stRes.stCropRect.u16X, stRes.stCropRect.u16Y, stRes.stCropRect.u16Width,stRes.stCropRect.u16Height,stRes.stOutputSize.u16Width, stRes.stOutputSize.u16Height,stRes.u32MaxFps,stRes.u32MinFps,stRes.strResDesc); } printf("select res\n"); scanf("%c", &select); MI_SNR_SetRes(E_MI_SNR_PAD_ID_0,u8ResIdx); MI_SNR_GetCurRes(E_MI_SNR_PAD_ID_0, &u8ResIndex, &stRes);
-
相关主题
2.10. MI_SNR_GetCurRes¶
-
功能
获取sensor当前分辨率和在分辨率映射表中的位置。
-
语法
MI_S32 MI_SNR_GetCurRes(MI_SNR_PAD_ID_e ePADId, MI_U8 *pu8CurResIdx, MI_SNR_Res_t *pstCurRes);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 *pu8CurResIdx 当前分辨率的索引 输出 *pstCurRes 当前分辨率信息 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
举例
参考MI_SNR_GetRes举例
-
相关主题
2.11. MI_SNR_SetRes¶
-
功能
设置sensor 设备输出分辨率
-
语法
MI_S32 MI_SNR_SetRes(MI_SNR_PAD_ID_e ePADId, MI_U8 u8ResIdx);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u8ResIdx Dev Num 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor_datatype.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
在MI_SNR_Enable之后不能单独call此API, 要用切换Sensor resolution 的流程切换Sensor 分辨率。
-
举例
参考MI_SNR_GetRes举例
-
相关主题
2.12. MI_SNR_SetOrien¶
-
功能
设置sensor 图象翻转属性
-
语法
MI_S32 MI_SNR_SetOrien(MI_SNR_PAD_ID_e ePADId, MI_BOOL bMirror, MI_BOOL bFlip);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 bMirror 使能竖直镜像翻转 输入 bFlip 使能水平镜像翻转 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor.h
-
库文件:libmi_sensor.a
-
-
举例
该API可以单独使用。
-
相关主题
2.13. MI_SNR_GetOrien¶
-
功能
获取sensor 图象翻转属性
-
语法
MI_S32 MI_SNR_GetOrien(MI_SNR_PAD_ID_e ePADId, MI_BOOL *pbMirror, MI_BOOL *pbFlip);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 *pbMirror 使能竖直镜像翻转 输出 *pbFlip 使能水平镜像翻转 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor.h
-
库文件:libmi_sensor.a
-
-
相关主题
2.14. MI_SNR_SetPlaneMode¶
-
功能
设置sensor Plane模式。
-
语法
MI_S32 MI_SNR_SetPlaneMode(MI_SNR_PAD_ID_e ePADId, MI_BOOL bEnable);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 bEnable 开HDR 需要置为TRUE, 否则为FALSE 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
plane和SensorPad之间有两种关系, 当PlaneMode为False时,SensorPad和Plane之间是一对一的关系;当PlaneMode为True时,SensorPad 一个对应多个Plane。由于Hdr Mode时需要用到两个Plane 分别接收长曝和短曝, 所以Plane mode应该设置为True.
-
举例
if(E_MI_VIF_HDR_TYPE_OFF== eHdrType) { MI_SNR_SetPlaneMode(eSnrPad, FALSE); } else { MI_SNR_SetPlaneMode(eSnrPad, TRUE); }
-
相关主题
2.15. MI_SNR_GetPlaneMode¶
-
功能
获取上层设置的Sensor Plane模式。
-
语法
MI_S32 MI_SNR_GetPlaneMode(MI_SNR_PAD_ID_e ePADId, MI_BOOL *pbEnable);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 *pbEnable 开HDR 需要置为TRUE, 否则为FALSE 输出 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor.h
-
库文件:libmi_sensor.a
-
-
相关主题
2.16. MI_SNR_CustFunction¶
-
功能
设置Sensor 客制化功能。例如需要对sensor寄存器需要进行读写,或者某些特殊sensor有传感器功能通过该api 获取数据等。
-
语法
MI_S32 MI_SNR_CustFunction(MI_SNR_PAD_ID_e ePADId, MI_U32 u32CmdId, MI_U32 u32DataSize, void *pCustData, MI_SNR_CUST_DIR_e eDir);
-
形参
参数名称 描述 输入/输出 ePADId SENSOR设备号。 取值范围:[0, MI_SNR_MAX_PADNUM)。 输入 u32CmdId 客制化功能ID 输入 u32DataSize 客制化功能数据 buffer size 输入 pCustData 客制化功能数据 buffer 输入 eDir 客制化数据类型 输入 -
返回值
-
MI_OK 成功。
-
非0 失败,详情参照错误码。
-
-
依赖
-
头文件:mi_sensor.h
-
库文件:libmi_sensor.a
-
-
注意
和sensor driver中的pCus_sensor_CustDefineFunction api 接口对应
-
举例
对sensor register 读写范例如下:
APP中实现如下:
#define I2C_READ (0x01) #define I2C_WRITE (0x02) typedef struct stI2CRegData_s { MI_U16 u16Reg; MI_U16 u16Data; }stI2CRegData_t; stI2CRegData_t stReadReg; stI2CRegData_t stWriteReg; MI_U16 u16DataSize=sizeof(stI2CRegData_t); memset(&stReadReg, 0x0, sizeof(stI2CRegData_t)); memset(&stWriteReg, 0x0, sizeof(stI2CRegData_t)); stReadReg.u16Reg = 0x3007; MI_SNR_CustFunction(E_MI_SNR_PAD_ID_0, I2C_READ, u16DataSize, &stReadReg, E_MI_SNR_CUSTDATA_TO_USER); stWriteReg.u16Reg = 0x3007; stWriteReg.u16Data = 0x03; MI_SNR_CustFunction(E_MI_SNR_PAD_ID_0, I2C_WRITE, u16DataSize, &stWriteReg, E_MI_SNR_CUSTDATA_TO_DRIVER); sensor driver 中实现如下函数: #define I2C_READ (0x01) #define I2C_WRITE (0x02) typedef struct stI2CRegData_s { MI_U16 u16Reg; MI_U16 u16Data; }stI2CRegData_t; static int pCus_sensor_CustDefineFunction(ms_cus_sensor *handle, u32 cmd_id, void *param) { switch(cmd_id) { case I2C_READ: { stI2CRegData_t *pRegData = (stI2CRegData_t *)param; SensorReg_Read(pRegData->u16Reg, pRegData->u16Data); } break; case I2C_WRITE: { stI2CRegData_t *pRegData = (stI2CRegData_t *)param; SensorReg_Write(pRegData->u16Reg, pRegData->u16Data); } break; default: printk("cmdid %d, unknow \n"); break } return SUCCESS; }
-
相关主题
2.17. MI_SNR_InitDev¶
-
描述
初始化Sensor设备。
-
语法
MI_S32 MI_SNR_InitDev(MI_SNR_InitParam_t *pstInitParam);
-
参数
参数名称 描述 输入/输出 pstInitParam 设备初始化参数 输入 -
返回值
-
MI_OK成功。
-
非MI_OK失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
2.18. MI_SNR_DeInitDev¶
-
描述
反初始化sensor设备。
-
语法
MI_S32 MI_SNR_DeInitDev(void);
-
返回值
-
MI_OK成功。
-
非MI_OK失败,参照错误码。
-
-
依赖
-
头文件:mi_common.h、mi_sensor.h
-
库文件:libmi_sensor.a
-
3. SENSOR数据类型¶
视频输入相关数据类型定义如下:
数据类型 | 定义 |
---|---|
MI_SNR_MAX_PADNUM | 定义支持Sensor最大数量。 |
MI_SNR_MAX_PLANENUM | 定义每一个Sensor Pad 支持通道数量 |
MI_SNR_PAD_ID_e | 定义Sensor Pad枚举类型 |
MI_SNR_HDRSrc_e | 定义Sensor HDR 通道序号 |
MI_SNR_HDRHWMode_e | 定义 HDR 硬件设置模式 |
MI_SNR_Res_t | 定义 Sensor分辨率属性 |
MI_SNR_AttrParallel_t | 定义 Parallel Sensor属性 |
MI_SNR_MipiAttr_t | 定义Mipi Sensor属性 |
MI_SNR_AttrBt656_t | 定义Bt656 Sensor属性 |
MI_SNR_IntfAttr_u | 定义Sensor接口联合体 |
MI_SNR_PADInfo_t | 定义Sensor Pad信息 |
MI_SNR_PlaneInfo_t | 定义Sensor 通道信息 |
MI_SNR_CUST_DIR_e | 定义Sensor 客制化功能数据类型 |
MI_SNR_InitParam_t | 定义Sensor 设备初始化参数 |
MI_SNR_Anadec_SrcAttr_t | 定义模拟信号输入参数 |
MI_SNR_Anadec_Status_e | 定义模拟信号状态参数 |
MI_SNR_Anadec_TransferMode_e | 定义模拟信号传输模式 |
MI_SNR_Anadec_Format_e | 定义模拟信号传输制式 |
3.1. MI_SNR_MAX_PADNUM¶
-
说明
定义支持Sensor接口最大数量。
-
定义
#define MI_SNR_MAX_PADNUM 4
3.2. MI_SNR_MAX_PLANENUM¶
-
说明
定义每一个Sensor Pad 支持通道数量。
-
定义
#define MI_SNR_MAX_PLANENUM 3
3.3. MI_SNR_PAD_ID_e¶
-
说明
Sensor Pad Id 枚举。
-
定义
typedef enum { E_MI_SNR_PAD_ID_0 = 0, E_MI_SNR_PAD_ID_1 = 1, E_MI_SNR_PAD_ID_2 = 2, E_MI_SNR_PAD_ID_3 = 3, E_MI_SNR_PAD_ID_MAX = 3, E_MI_SNR_PAD_ID_NA = 0xFF, } MI_SNR_PAD_ID_e;
-
注意事项
和硬件上Sensor Pad接口相对应。
3.4. MI_SNR_HDRSrc_e¶
-
说明
在HdrMode时,Plane通道对应的Virtual channel。
-
定义
typedef enum { E_MI_SNR_HDR_SOURCE_VC0, E_MI_SNR_HDR_SOURCE_VC1, E_MI_SNR_HDR_SOURCE_VC2, E_MI_SNR_HDR_SOURCE_VC3, E_MI_SNR_HDR_SOURCE_MAX } MI_SNR_HDRSrc_e;
-
相关数据类型及接口
3.5. MI_SNR_HDRHWMode_e¶
-
说明
定义 Sensor 硬件设置HDR模式。
-
定义
typedef enum { E_MI_SNR_HDR_HW_MODE_NONE = 0, E_MI_SNR_HDR_HW_MODE_SONY_DOL = 1, E_MI_SNR_HDR_HW_MODE_DCG = 2, E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW8 = 3, E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW10 = 4, E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW12 = 5, E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW14 = 6, E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW16 = 7, } MI_SNR_HDRHWMode_e;
-
成员
成员名称 描述 E_MI_SNR_HDR_HW_MODE_NONE 没有开HDR模式 E_MI_SNR_HDR_HW_MODE_SONY_DOL Digital Overlap High Dynamic Range E_MI_SNR_HDR_HW_MODE_DCG 双转换增益模式 E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW8 8bit 压缩模式 E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW10 10bit 压缩模式 E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW12 12bit 压缩模式 E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW14 14bit 压缩模式 E_MI_SNR_HDR_HW_MODE_EMBEDDED_RAW16 16bit 压缩模式 -
相关数据类型及接口
3.6. MI_SNR_Res_t¶
-
说明
定义 Sensor分辨率属性
-
定义
typedef struct MI_SNR_Res_s { MI_SYS_WindowRect_t stCropRect; MI_SYS_WindowSize_t stOutputSize; /**< Sensor actual output size */ MI_U32 u32MaxFps; /**< Max fps in this resolution */ MI_U32 u32MinFps; /**< Min fps in this resolution*/ MI_S8 strResDesc[32]; // Need to put “HDR” here if the resolution is for HDR } __attribute__((packed, aligned(4))) MI_SNR_Res_t;
-
成员
成员名称 描述 stCropRect 在output size上裁剪的区域 stOutputSize Sensor 输出大小范围 u32MaxFps 当前分辨率下最大帧率 u32MinFps 当前分辨率下最小帧率 strResDesc Resolution string -
注意事项
stOutputSize为Sensor的原始宽高,stCropRect为在原始图像上裁剪的大小,所以stCropRect为Sensor的实际输出区域。
-
相关数据类型及接口
3.7. MI_SNR_AttrParallel_t¶
-
说明
定义parallel sensor 属性。
-
定义
typedef struct MI_SNR_AttrParallel_s { MI_VIF_SyncAttr_t stSyncAttr; } MI_SNR_AttrParallel_t;
-
成员
成员名称 描述 stSyncAttr 同步信号属性 -
相关数据类型及接口
3.8. MI_SNR_MipiAttr_t¶
-
说明
定义Mipi sensor 属性。
-
定义
typedef struct MI_SNR_MipiAttr_s { MI_U32 u32LaneNum; // 几条信号同时传 MI_U32 u32DataFormat; //0: YUV 422 format. 1: RGB pattern. MI_VIF_DataYuvSeq_e eDataYUVOrder; MI_U32 u32HsyncMode; MI_U32 u32Sampling_delay; /** < MIPI start sampling delay */ /*bit 0~7: clk_skip_ns. bit 8~15: data_skip_ns*/ MI_SNR_HDRHWMode_e eHdrHWmode; MI_U32 u32Hdr_Virchn_num; MI_U32 u32Long_packet_type[2]; }MI_SNR_MipiAttr_t;
-
成员
成员名称 描述 u32LaneNum 支持同时传输数据的信号线数量 u32DataFormat 0: YUV 422 format. 1: RGB pattern eDataYUVOrder YUV 排列顺序 u32HsyncMode 0:同步前一条 1:同步后一条line的hsync 信号 u32Sampling_delay 延时跳过数据头部分 eHdrHWmode Sensor支持的HDR mode u32Hdr_Virchn_num Sensor支持的HDR 虚拟通道数量 u32Long_packet_type[2] Sensor支持的数据打包格式 -
相关数据类型及接口
3.9. MI_SNR_AttrBt656_t¶
-
说明
定义BT656 sensor 属性。
-
定义
typedef struct MI_SNR_AttrBt656_s { MI_U32 u32Multiplex_num; MI_VIF_SyncAttr_t stSyncAttr; MI_VIF_ClkEdge_e eClkEdge; MI_VIF_BitOrder_e eBitSwap; } MI_SNR_AttrBt656_t;
-
成员
成员名称 描述 u32Multiplex_num 复合模式的路数 stSyncAttr 同步信号属性 eClkEdge 采样时钟模式 eBitSwap 数据排列方向 -
相关数据类型及接口
3.10. MI_SNR_IntfAttr_u¶
-
说明
定义sensor 接口类型联合体。
-
定义
typedef union { MI_SNR_AttrParallel_t stParallelAttr; MI_SNR_MipiAttr_t stMipiAttr; MI_SNR_AttrBt656_t stBt656Attr; } MI_SNR_IntfAttr_u;
-
成员
成员名称 描述 stParallelAttr Parallel sensor 属性 stMipiAttr Mipi sensor属性 stBt656Attr Bt656 sensor属性 -
相关数据类型及接口
3.11. MI_SNR_PADInfo_t¶
-
说明
定义sensor Pad 信息属性。
-
定义
typedef struct MI_SNR_PADInfo_s { MI_U32 u32PlaneCount; //It is different expo number for HDR. It is mux number for BT656. //?? MI_VIF_IntfMode_e eIntfMode; MI_VIF_HDRType_e eHDRMode; MI_SNR_IntfAttr_u unIntfAttr; MI_BOOL bEarlyInit; } MI_SNR_PADInfo_t;
-
成员
成员名称 描述 u32PlaneCount BT656 sensor 代表最大复合路数 Mipi sensor 代表长短曝数量 eIntfMode Sensor 接口枚举 eHDRMode Hdr 模式 unIntfAttr Sensor 接口属性联合体 bEarlyInit Sensor 是否已经提前初始化 -
注意事项
在dualos系统中bEarlyInit为True, Pure Linux下位False。
-
相关数据类型及接口
3.12. MI_SNR_PlaneInfo_t¶
-
说明
定义sensor 通道 信息属性。
-
定义
typedef struct MI_SNR_PlaneInfo_s { MI_U32 u32PlaneID;// For HDR long/short exposure or BT656 channel 0~3 MI_S8 s8SensorName[32]; MI_SYS_WindowRect_t stCapRect; MI_SYS_BayerId_e eBayerId; MI_SYS_DataPrecision_e ePixPrecision; MI_SNR_HDRSrc_e eHdrSrc; MI_U32 u32ShutterUs; MI_U32 u32SensorGainX1024; MI_U32 u32CompGain; } MI_SNR_PlaneInfo_t;
-
成员
成员名称 描述 u32PlaneID 通道代号 s8SensorName Sensor name字符串 stCapRect 在sensor 数据上裁剪的位置 eBayerId RGB 排列顺序 ePixPrecision RGB 压缩模式 eHdrSrc HDR 通道号 u32ShutterUs Sensor Shutter u32SensorGainX1024 Sensor Gain u32CompGain Sensor Compensate Gain -
注意事项
-
当mipi接口 不开Hdr时u32PlaneID = 0xff;开HDR时 u32PlaneID =0代表长曝光,u32PlaneID =1代表短曝光。
-
当BT656接口时,代表当前Plane在复合路数中的通道id。
-
#define RGB_BAYER_PIXEL(BitMode, PixelID) (E_MI_SYS_PIXEL_FRAME_RGB_BAYER_BASE+ BitMode*E_MI_SYS_PIXEL_BAYERID_MAX+ PixelID)。
-
通过sys 接口将sensor的eBayerId和ePixPrecision 转换成sys的pixel format,设置给后端MI_VIF output和MI_VPE input。
-
MI_SYS_PixelFormat_e ePixel = RGB_BAYER_PIXEL(ePixPrecision, eBayerId);
-
-
相关数据类型及接口
3.13. MI_SNR_CUST_DIR_e¶
-
说明
定义Sensor 客制化功能数据类型。
-
定义
typedef enum { E_MI_SNR_CUSTDATA_TO_DRIVER, E_MI_SNR_CUSTDATA_TO_USER, E_MI_SNR_CUSTDATA_MAX = E_MI_SNR_CUSTDATA_TO_USER, } MI_SNR_CUST_DIR_e;
-
成员
成员名称 描述 E_MI_SNR_CUSTDATA_TO_DRIVER 客制化buffer 数据设置给Sensor Driver E_MI_SNR_CUSTDATA_TO_USER 客制化buffer 数据从sensor 获取 E_MI_SNR_CUSTDATA_MAX 数据类型MAX 选项 -
相关数据类型及接口
3.14. MI_SNR_InitParam_t¶
-
说明
sensor设备初始化参数。
-
定义
typedef struct MI_SNR_InitParam_s { MI_U32 u32DevId; MI_U8 *u8Data; } MI_SNR_InitParam_t;
-
成员
成员名称 描述 u32DevId 设备ID u8Data 数据指针buffer -
相关数据类型及接口
3.15. MI_SNR_Anadec_SrcAttr_t¶
- 说明
定义模拟信号输入参数。
-
定义
typedef struct MI_SNR_Anadec_SrcAttr_s { MI_SNR_Anadec_Status_e eStatus; MI_SNR_Anadec_TransferMode_e eTransferMode; MI_SNR_Anadec_Format_e eFormat; MI_SYS_WindowSize_t stRes; MI_U32 u32Fps; }MI_SNR_Anadec_SrcAttr_t;
-
成员
成员名称 描述 eStatus 输入源状态枚举 eTransferMode 输入源传输模式枚举 eFormat 输入源传输制式枚举 stRes 输入源分辨率 u32Fps 输入源帧率 -
相关数据类型及接口
3.16. MI_SNR_Anadec_Status_e¶
-
说明
定义模拟信号输入源状态。
-
定义
typedef enum { E_MI_SNR_ANADEC_STATUS_NO_READY = 0, E_MI_SNR_ANADEC_STATUS_DISCNT, E_MI_SNR_ANADEC_STATUS_CONNECT, E_MI_SNR_ANADEC_STATUS_NUM }MI_SNR_Anadec_Status_e;
-
成员
成员名称 描述 E_MI_SNR_ANADEC_STATUS_NO_READY 输入源未准备就绪 E_MI_SNR_ANADEC_STATUS_DISCNT 输入源状态未连接 E_MI_SNR_ANADEC_STATUS_CONNECT 输入源状态已连接 E_MI_SNR_ANADEC_STATUS_NUM 输入源状态NUM选项 -
相关数据类型及接口
3.17. MI_SNR_Anadec_TransferMode_e¶
-
说明
定义模拟信号输入源传输模式。
-
定义
typedef enum { E_MI_SNR_ANADEC_TRANSFERMODE_CVBS = 0, E_MI_SNR_ANADEC_TRANSFERMODE_CVI, E_MI_SNR_ANADEC_TRANSFERMODE_TVI, E_MI_SNR_ANADEC_TRANSFERMODE_AHD, E_MI_SNR_ANADEC_TRANSFERMODE_NUM, }MI_SNR_Anadec_TransferMode_e;
-
成员
成员名称 描述 E_MI_SNR_ANADEC_TRANSFERMODE_CVBS CVBS传输模式 E_MI_SNR_ANADEC_TRANSFERMODE_CVI CVI传输模式 E_MI_SNR_ANADEC_TRANSFERMODE_TVI TVI传输模式 E_MI_SNR_ANADEC_TRANSFERMODE_AHD AHD传输模式 E_MI_SNR_ANADEC_TRANSFERMODE_NUM 传输模式NUM选项 -
相关数据类型及接口
3.18. MI_SNR_Anadec_Format_e¶
-
说明
定义模拟信号输入源制式。
-
定义
typedef enum { E_MI_SNR_ANADEC_FORMAT_NTSC = 0, E_MI_SNR_ANADEC_FORMAT_PAL, E_MI_SNR_ANADEC_FORMAT_NUM, }MI_SNR_Anadec_Format_e;
-
成员
|成员名称 描述 |-----|------| |E_MI_SNR_ANADEC_FORMAT_NTSC|NTSC制式| |E_MI_SNR_ANADEC_FORMAT_PAL|PAL制式| |E_MI_SNR_ANADEC_FORMAT_NUM|传输制式NUM选项|
-
相关数据类型及接口
4. 错误码¶
视频输入 API错误码如下表所示。
表4-1 Sensor API 错误码
错误代码 | 宏定义 | 描述 |
---|---|---|
0xA01B2001 | MI_ERR_SNR_INVALID_DEVID | 设备号无效 |
0xA01B2002 | MI_ERR_SNR_INVALID_CHNID | 通道号无效 |
0xA01B2003 | MI_ERR_SNR_INVALID_PARA | 参数设置无效 |
0xA01B2006 | MI_ERR_SNR_INVALID_NULL_PTR | 输入参数空指针错误 |
0xA01B2007 | MI_ERR_SNR_FAILED_NOTCONFIG | 设备或通道属性未配置 |
0xA01B2008 | MI_ERR_SNR_NOT_SUPPORT | 操作不支持 |
0xA01B2009 | MI_ERR_SNR_NOT_PERM | 操作不允许 |
0xA01B200C | MI_ERR_SNR_NOMEM | 分配内存失败 |
0xA01B200E | MI_ERR_SNR_BUF_EMPTY | Buffer空 |
0xA01B200F | MI_ERR_SNR_BUF_FULL | Buffer满 |
0xA01B2010 | MI_ERR_SNR_SYS_NOTREADY | 系统未初始化 |
0xA01B2012 | MI_ERR_SNR_BUSY | 系统忙 |
0xA01B201F | MI_ERR_SNR_FAIL | 端口无效 |
5. PROCFS介绍¶
5.1. cat¶
-
调试信息
# cat /proc/mi_modules/mi_sensor/mi_sensor0
-
调试信息分析
记录当前sensor的使用状况以及相关属性、可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 Pad info Padid Sensor pad id Planemode Planemode 开关 bEnable Sensor enable bmirror 水平翻转 bflip 垂直翻转 fps 帧率 ResCnt Sensor 支持分辨率的数量 Intfmode 接口协议 Hdrmode Hdr hw mode Planecnt Plane 通道数量 Mipiattr Yuvorder Yuv 数据排列 Hdrhwmode Hdr hw mode Datafmt 数据格式,yuv/rgb HdrVchNum Sensor支持的HDR 虚拟通道数量 HsyncMode 0:同步前一条
1:同步后一条line的hsync 信号LaneNum 支持同时传输数据的信号线数量 LPackType0 数据打包格式 0 LPackType1 数据打包格式 1 samDelay 延时跳过数据头部分 BT656Attr BitSwap 数据排列方向 ClkEdge 采样时钟模式 Multinum 复合模式的路数 HPol H sync 极性 PcPol Pclk 极性 VPol V sync 极性 HDelay H sync delay VDelay V sync delay PcDelay Pclk delay ParallelAttr HPol H sync 极性 PcPol Pclk 极性 VPol V sync 极性 HDelay H sync delay VDelay V sync delay PcDelay Pclk delay Res Sensor 支持的分辨率信息 strResDesc 分辨率 CropX/CropY/CropW/CropH Crop 参数 OutW/OutH 输出的宽高 MaxFps/MinFps 最大最小帧率 Cur 当前使用的分辨率信息 Padid pad id Planeid Plane id SnrName Sensor name BayerId Bayer id ePixPrec Pixel 精确度 (12bpp,10bpp ….) eHdrSrc HDR 通道号 CropX/CropY/CropW/CropH Crop 参数
5.2. echo¶
# echo help > /proc/mi_modules/mi_sensor/mi_sensor0
Echo help 查看可用命令
功能 | 设置sensor的翻转 |
---|---|
命令 | echo setmirrorflip [PadId, bMirror, bFlip] > /proc/mi_modules/mi_sensor/mi_sensor0 |
参数说明 | PadId: pad id bMirror: 水平翻转 bFlip: 上下翻转 |
举例 | echo setmirrorflip 0 1 0 > /proc/mi_modules/mi_sensor/mi_sensor0 |
功能 | 设置sensor的帧率 |
---|---|
命令 | echo setfps [Padid, fps] > /proc/mi_modules/mi_sensor/mi_sensor0 |
参数说明 | PadId: pad id fps: 帧率 |
举例 | echo setfps 0 15 > /proc/mi_modules/mi_sensor/mi_sensor0 |