MI HDMI RX API
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
0.1 | 05/06/2022 | |
05/11/2022 | ||
05/25/2022 | ||
12/6/2022 | ||
12/29/2022 | ||
01/11/2023 |
1. API参考¶
1.1. 概述¶
HDMI (High Definition Multimedia Interface )即高清多媒体接口,是一种全数字化视频和音频发送接口,可以同时发送视频和音频信号。
HDMI 分为RX 端和 TX端,TX 即为source 设备,用来将数据传输给RX 设备(Sink设备)。RX 端就是接收端,接收TX发送过来的HDMI信号。
本文主要针对HDMI RX设备。
本模块同时支持CEC (消费类电子控制)功能,旨在允许用户通过仅使用一个遥控器来命令和控制HDMI连接的设备。它是一种单总线双向串行总线。
-
CEC物理地址
为了使CEC能够寻址及控制拥有特定物理地址的设备,所有系统内的设备必须拥有物理地址。软件通过EDID为CEC网络中的所有设备分配物理地址。每个设备有且只能有一个物理地址。
-
CEC逻辑地址
每一个连接到CEC控制总线上的设备都必须绑定逻辑地址,定义该设备的类型。每一个逻辑地址都只能绑定唯一一个设备(15除外)。大多数设备都只绑定一个逻辑地址,少数设备最多可以绑定两个逻辑地址。
1.2. 流程图¶
下图是HDMIRX 模块间关系图。
1.3. CEC流程图¶
1.4. 规格说明¶
细项 | chip |
---|---|
HDMI 版本 | 1.4 |
HDCP版本 | 1.4 |
CEC 版本 | 1.4 (不支持CEC wakeup 功能) |
MHL | 不支持 |
Sink HDMI input 最大分辨率 | 1920 * 1080@60Hz / 3840 * 2160@30HZ / 4096 * 2160@24HZ |
Sink DVI input 最大分辨率 | 2560 * 1600@60Hz |
3D 功能 | 不支持 |
图像格式 | 支持RGB4:4:4 / YCbCr4:4:4 支持YCbCr4:2:2 |
Audio格式 | L-PCM / L-PCM Multi-channel up to 2channels / NL-PCM |
HEAC | 不支持 |
1.5. 关键词说明¶
-
EDID
外部显示设备标识数据
-
E-EDID
扩展外部显示设备标识数据
-
DDC
显示数据通道
-
HDCP
宽带数字内容保护
-
PCM
脉冲编码调制
-
L-PCM
线性脉冲编码调制
-
NL-PCM
非线性脉冲编码调制
-
S/PDIF
索尼/飞利浦数字音频接口
-
VIC
视频识别码
2. 功能模块API¶
如下是MI HDMIRX模块的用户接口。
API名 | 功能 |
---|---|
系统功能类 | |
MI_HDMIRX_Init | HDMI RX 设备初始化 |
MI_HDMIRX_DeInit | HDMI RX 设备去初始化 |
MI_HDMIRX_Connect | 连接HDMIRX 设备,选择输入口 |
MI_HDMIRX_DisConnect | 断开HDMIRX 设备,选择输入口 |
MI_HDMIRX_GetSignalStatus | 获取HDMI RX 视频信号的状态 |
MI_HDMIRX_LoadHdcp | 加载HDMI RX HDCP Key |
MI_HDMIRX_UpdateEdid | 设置EDID 信息。 |
MI_HDMIRX_GetTimingInfo | 获取当前HDMI RX Video的Timing 信息 |
MI_HDMIRX_GetHDMILineDetStatus | 获取device ID 的 HDMI线连接状态 |
MI_HDMIRX_GetFd | 获取HDMIRX 信号侦测事件的设备文件句柄 |
MI_HDMIRX_CloseFd | 关闭HDMIRX 信号侦测事件的设备文件句柄 |
MI_HDMIRX_CecEnable | 启用/停止CEC |
MI_HDMIRX_CecGetPhyAddr | 获取CEC设备的物理地址 |
MI_HDMIRX_CecSetLogicAddr | 配置CEC 逻辑地址 |
MI_HDMIRX_CecClearLogicAddr | 清除CEC 逻辑地址 |
MI_HDMIRX_CecSendMessage | 发送CEC 消息 |
MI_HDMIRX_CecRegisterCallback | 注册CEC 回调 |
MI_HDMIRX_CecUnRegisterCallback | 注销CEC 回调 |
MI_HDMIRX_SetEQAttr | 设置 HDMI EQ 补偿强度 |
MI_HDMIRX_GetEQAttr | 获取HDMI EQ 补偿强度 |
MI_HDMIRX_EnableSwAutoEQ | 设置Auto Eq 自动补偿强度 |
MI_HDMIRX_SetHotPlug | 拉低/拉高 Hotplug |
2.1. MI_HDMIRX_Init¶
-
功能说明
HDMI RX 设备初始化。
-
语法
MI_S32 MI_HDMIRX_Init(void);
-
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
HDMI RX初始化设置,以及退出范例
//初始化HDMIRX模块。 MI_HDMIRX_Init(); //配置EDID 信息。 MI_HDMIRX_Edid_t stEdid; MI_U32 au32Edid[] = { XX, ……}; // EDID 参数 stEdid.ePortId = E_MI_HDMI_RX_ID_0; stEdid.u32EdidLength= 256 ; stEdid.u64EdidDataVirAddr = (MI_U64)au32Edid; MI_HDMIRX_UpdateEdid(&stEdid); //配置HDCP 信息。 MI_HDMIRX_Hdcp_t stHdcp; MI_U8 au8hdcp[] = { XX, ……}; // hdcp参数 stHdcp.u32HdcpLength = 320; stHdcp.u64HdcpDataVirAddr = (MI_U64)au8hdcp; MI_HDMIRX_LoadHdcp(E_MI_HDMI_RX_ID_0,&stHdcp); //选择对应的port口。 MI_HDMIRX_PortId_e ePortId; ePortId = E_MI_HDMIRX_PORT0; MI_HDMIRX_Connect(E_MI_HDMIRX_PORT0); viod VideoProcess(viod *pdata) { MI_HDMIRX_SigStatus_e eSignalStatus; While( running ) { MI_HDMIRX_GetSignalStatus(ePortId,& eSignalStatus); if(eSignalStatus) == E_MI_HDMIRX_SIG_SUPPORT) { //signal stable } else { //no signal } mSleep(20)// } } pthread_t stMonitorThrd; pthread_create(&stMonitorThrd, NULL, HDMIRX_VideoProcess,NULL); //将当前的port口断开连接。 pthread_join(&HDMIRX_VideoProcess,NULL); MI_HDMIRX_DisConnect(E_MI_HDMIRX_PORT0); //去初始化HDMIRX模块 MI_HDMIRX_DeInit();
-
相关API
2.2. MI_HDMIRX_DeInit¶
-
功能说明
HDMI RX 设备去初始化。
-
语法
MI_S32 MI_HDMIRX_DeInit(void);
-
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.3. MI_HDMIRX_Connect¶
-
功能说明
创建HDMIRX设备,选择输入口。
-
语法
MI_S32 MI_HDMIRX_Connect(MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId Port ID, 对应HDMI RX输入端口 ID 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
注意
先做Init初始化。
-
举例
-
相关API
2.4. MI_HDMIRX_DisConnect¶
-
功能说明
创建HDMIRX设备,选择输入口。
-
语法
MI_S32 MI_HDMIRX_DisConnect(MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId Port ID, 对应HDMI RX 输入端口 ID 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.5. MI_HDMIRX_GetSignalStatus¶
-
功能说明
获取HDMI RX 视频 信号的状态。
-
语法
MI_S32 MI_HDMIRX_GetSignalStatus(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_SigStatus_e *peStatus);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 peStatus 设备信号状态 输出 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.6. MI_HDMIRX_LoadHdcp¶
-
功能说明
加载 HDMI RX HDCP Key。
-
语法
MI_S32 MI_HDMIRX_LoadHdcp(MI_HDMIRX_DeviceId_e ePortId, MI_HDMIRX_Hdcp_t *pstHdcp);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstHdcp HDMI RX hdcp key 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.7. MI_HDMIRX_UpdateEdid¶
-
功能说明
更新EDID 数据到SRAM。
-
语法
MI_S32 MI_HDMIRX_UpdateEdid(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_Edid_t *pstEdid);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstEdid EDID 数据指针 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.8. MI_HDMIRX_GetTimingInfo¶
-
功能说明
获取当前HDMI RX 设备的Timing 信息
-
语法
MI_S32 MI_HDMIRX_GetTimingInfo(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_Timing_Info_t *pstTimingInfo);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstTimingInfo Timing 信息 输出 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.9. MI_HDMIRX_GetHDMILineDetStatus¶
-
功能说明
获取device ID 的 hdmi线连接状态
-
语法
MI_S32 MI_HDMIRX_GetHDMILineDetStatus(MI_HDMIRX_PortId_e ePortId, MI_BOOL *pbConnected);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pbConnected HDMI 线连接状态 输出 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
2.10. MI_HDMIRX_GetFd¶
-
功能说明
获取HDMIRX 信号侦测事件的设备文件句柄,用于 监听hdmi 信号是否变换,与轮询CPU相比有降低CPU使用率。
-
语法
MI_S32 MI_HDMIRX_GetFd (MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 -
返回值
- HDMIRX 信号侦测事件的设备文件句柄
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
MI_S32 s32HDMIRxFd; fd_set set; MS_S32 s32Return; s32HDMIRxFd = MI_HDMIRX_GetFd (E_MI_HDMIRX_PORT0); FD_ZERO(&set); /* 将set清零使集合中不含任何s32HDMIRxFd */ FD_SET(s32HDMIRxFd , &set); /* 将s32HDMIRxFd 加入set集合 */ s32Return = select(s32HDMIRxFd+1, &set, NULL, NULL, NULL); if(s32Return <0 ) { Printf(“selcet err \n”); return E_MI_FAILED; } else if (s32Return == 0) { Printf(“selcet err \n”); return E_MI_FAILED; } else { if(FD_ISSET(s32HDMIRxFd, &set)) /* 测试fd是否在set集合中*/ { MI_HDMIRX_SigStatus_e eSignalStatus; MI_HDMIRX_GetSignalStatus(E_MI_HDMIRX_PORT0,&eSignalStatus); if(enSignalStatus) == E_MI_HDMIRX_SIG_SUPPORT) { 信号稳定行为 } else { //无信号稳定行为 } } } MI_HDMIRX_CloseFd(E_MI_HDMI_RX_ID_0);
-
相关API
2.11. MI_HDMIRX_CloseFd¶
-
功能说明
关闭HDMIRX 信号侦测事件的设备文件句柄
-
语法
MI_S32 MI_HDMIRX_CloseFd (MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.12. MI_HDMIRX_CecEnable¶
-
功能说明
启动/停止CEC Channel。
启动:对CEC设备初始化,reset,此时设备处于idle 状态
停止: 停止CEC 设备接收消息,对所有发过来的message 回复NACK
-
语法
MI_S32 MI_HDMIRX_CecEnable(MI_HDMIRX_PortId_e ePortId, MI_BOOL bEnable);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 bEnable 使能开关 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
注意
Hdmi 需要连接成功
-
举例
MI_HDMIRX_PortId_e eHdmiRxPort0 MI_U16 u16CECPhyAddr; //Enable HDMI CEC MI_HDMIRX_CecEnable(eHdmiRxPort0, 1); //Get CEC PHY addr u16CECPhyAddr = MI_HDMIRX_CecGetPhyAddr(eHdmiRxPort0); //Setting CEC Logic addr MI_HDMIRX_CecSetLogicAddr(eHdmiRxPort0,CEC_LOGIC_ADDR_DEVICE_TV); //Send Message MI_HDMIRX_CecMessage_t msg; msg.u8Count = 3; msg.u8Opdata[0] = 0x10; msg.u8Opdata[1] = 0x30; msg.u8Opdata[2] = 0x20; MI_HDMIRX_CecSendMessage(eHdmiRxPort0, &msg, 100, 2); //Recieve Message static MI_S32 _HDMIRX_CEC_CallBack_Demo (MI_HDMIRX_PortId_e eHdmiRxPort0, MI_HDMIRX_CecMessage_t *pMessageData,void *pUsrParam) { int i = 0; printf("\n"); for (i = 0; i < pMessageData->u8Count; i++) { printf("%x, ", pMessageData->u8Opdata[i]); } printf("\n"); return 0; } MI_HDMIRX_CecRegisterCallback(eHdmiRxPort0, _HDMIRX_CEC_CallBack_Demo, NULL);
-
相关API
2.13. MI_HDMIRX_CecGetPhyAddr¶
-
功能说明
获取当前CEC 设备物理地址。
root device:0 0 0 0
-
语法
MI_S32 MI_HDMIRX_CecGetPhyAddr(MI_HDMIRX_PortId_e ePortId, MI_U16 *pu16PhyAddr);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pu16PhyAddr CEC设备物理地址 输出 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.14. MI_HDMIRX_CecSetLogicAddr¶
-
功能说明
设置当前CEC 设备的逻辑地址。
-
语法
MI_S32 MI_HDMIRX_CecSetLogicAddr (MI_HDMIRX_PortId_e ePortId, MI_U16 u16LogicAddr);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 u16LogicAddr CEC 逻辑地址 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
注意
逻辑地址可以是多个组合,参考数据类MI_HDMIRX_CEC_LOGIC_ADDR。
-
举例
-
相关API
2.15. MI_HDMIRX_CecClearLogicAddr¶
-
功能说明
清除当前CEC 设备逻辑地址。
-
语法
MI_S32 MI_HDMIRX_CecClearLogicAddr (MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.16. MI_HDMIRX_CecSendMessage¶
-
功能说明
通过CEC 设备发送数据。
-
语法
MI_S32 MI_HDMIRX_CecSendMessage (MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_CecMessage_t* pstMsg, MI_U32 u32TimeoutMs, MI_U8 u8RetryCount);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstMsg 发送的消息数据 输入 u32TimeoutMs 发送超时 输入 u8RetryCount 发送失败后,尝试次数, 最少是1,传0会当1处理 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.17. MI_HDMIRX_CecRegisterCallback¶
-
功能说明
注册回调函数,获取CEC收到的message。
-
语法
MI_S32 MI_HDMIRX_CecRegisterCallback (MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_CEC_CALL_BACK pfnHdmiRxCecCallback, void *pCallBackArgs);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pfnHdmiRxCecCallback 注册的回调函数,用来接收CEC 收到的message 输入 pCallBackArgs 回调函数带入的用户数据 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
注意
pCallBackArgs 在callback的时候返回给user,CEC 内部不做处理
-
举例
-
相关API
2.18. MI_HDMIRX_CecUnRegisterCallback¶
-
功能说明
注销回调函数
-
语法
MI_S32 MI_HDMIRX_CecUnRegisterCallback (MI_HDMIRX_PortId_e ePortId);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
举例
-
相关API
2.19. MI_HDMIRX_SetEQAttr¶
-
功能
设置 HDMI EQ 补偿强度。
-
语法
MI_S32 MI_HDMIRX_SetEQAttr(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_EQAttr_t *pstEqAttr);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstEqAttr EQ 补偿强度参数 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.20. MI_HDMIRX_GetEQAttr¶
-
功能
获取HDMI EQ 补偿强度。
-
语法
MI_S32 MI_HDMIRX_GetEQAttr(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_EQAttr_t *pstEqAttr);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 pstEqAttr EQ 补偿强度参数 输出 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.21. MI_HDMIRX_EnableSwAutoEQ¶
-
功能
设置AUTO EQ 自动补偿强度。
-
语法
MI_S32 MI_HDMIRX_EnableSwAutoEQ(MI_HDMIRX_PortId_e ePortId, MI_BOOL bEnable);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 bEnable 是否使能Auto Eq 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
2.22. MI_HDMIRX_SetHotPlug¶
-
功能
设置HotPlug 。
-
语法
MI_S32 MI_HDMIRX_SetHotPlug(MI_HDMIRX_PortId_e ePortId, MI_BOOL bHigh);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI RX输入端口 ID 输入 bHigh 拉高/拉低 HotPlug 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败,参照错误码。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-
-
相关API
3. 数据类型¶
相关数据类型、数据结构定义如下:
数据类型 | 定义 |
---|---|
MI_HDMIRX_PortId_e | HDMI RX 输入端口枚举。 |
MI_HDMIRX_SigStatus_e | HDMI RX 信号的状态枚举 |
MI_HDMIRX_Hdcp_t | HDMI Rx Hdcp Key的结构体 |
MI_HDMIRX_Edid_t | HDMI Rx EDID的结构体 |
MI_HDMIRX_QuantRange_e | 定义量化 范围枚举。 |
MI_HDMIRX_PixelBitWidth_e | 定义像素位宽枚举 |
MI_HDMIRX_OverSampleMode_e | 定义过采样枚举 |
MI_HDMIRX_FramePackingType_e | 定义HDMIRX 视频3D 格式枚举 |
MI_HDMIRX_ColorSpace_e | 定义颜色空间枚举 |
MI_HDMIRX_PixelFormat_e | 定义HDMIRX 像素 格式枚举 |
MI_HDMIRX_TimingInfo_t | HDMI Rx Timing 的结构体 |
MI_HDMIRX_CEC_LOGIC_ADDR | 定义CEC 设备逻辑地址, 只适用MI_HDMIRX_CecSetLogicAddr |
MI_HDMIRX_CecMessage_t | 定义CEC message 格式 |
MI_HDMIRX_CEC_CALL_BACK | 定义CEC 回调函数 |
MI_HDMIRX_EQModeType_e | 定义EQ 补偿强度模式枚举 |
MI_HDMIRX_EQAttr_t | 定义EQ 补偿强度参数的结构体 |
3.1. MI_HDMIRX_PortId_e¶
-
说明
HDMI RX 输入端口枚举。
-
定义
typedef enum { E_MI_HDMIRX_PORT0 = 0, E_MI_HDMIRX_PORT_MAX } MI_HDMIRX_PortId_e;
-
成员
成员名称 描述 E_MI_HDMIRX_PORT0 HDMI RX 输入端口等于0
3.2. MI_HDMIRX_SigStatus_e¶
-
说明
HDMI RX 信号的状态。
-
定义
typedef enum { E_MI_HDMIRX_SIG_SUPPORT = 0, E_MI_HDMIRX_SIG_NO_SIGNAL, E_MI_HDMIRX_SIG_NOT_SUPPORT, E_MI_HDMIRX_SIG_UNSTABLE, E_MI_HDMIRX_SIG_MAX } MI_HDMIRX_SigStatus_e;
-
成员
成员名称 描述 E_MI_HDMIRX_SIG_SUPPORT 当前信号稳定并且支持 E_MI_HDMIRX_SIG_NO_SIGNAL 当前是无信号状态 E_MI_HDMIRX_SIG_NOT_SUPPORT 当前信号不支持 E_MI_HDMIRX_SIG_UNSTABLE 当前信号不稳定
3.3. MI_HDMIRX_Hdcp_t¶
-
说明
HDMI Rx Hdcp Key的结构体。
-
定义
typedef struct MI_HDMIRX_Hdcp_s { MI_U32 u32HdcpLength; MI_U64 u64HdcpDataVirAddr; }MI_HDMIRX_Hdcp_t;
-
成员
成员名称 描述 u32HdcpLength Hdcp key 数据长度 u64HdcpDataVirAddr Hdcp key 数据地址 -
注意事项
这个API不支持OTP Mode。
3.4. MI_HDMIRX_Edid_t¶
-
说明
HDMI Rx EDID的结构体。
-
定义
typedef struct MI_HDMIRX_Edid_s { MI_U32 u32EdidLength; MI_U64 u64EdidDataVirAddr; }MI_HDMIRX_Edid_t;
-
成员
成员名称 描述 u32EdidLength EDID 数据长度 u64EdidDataVirAddr EDID 参数地址
3.5. MI_HDMIRX_QuantRange_e¶
-
说明
定义量化范围枚举。
-
定义
typedef enum { E_MI_HDMIRX_QUANTIZATION_DEFAULT, E_MI_HDMIRX_QUANTIZATION_LIMIT_RANGE, E_MI_HDMIRX_ QUANTIZATION_FULL_RANGE, E_MI_HDMIRX_ QUANTIZATION_RANGE_MAX } MI_HDMIRX_QuantRange_e;
-
成员
成员名称 描述 E_MI_HDMIRX_ QUANTIZATION_LIMIT_RANGE 量化 limit 范围 E_MI_HDMIRX_ QUANTIZATION_FULL_RANGE 量化 Full范围
3.6. MI_HDMIRX_PixelBitWidth_e¶
-
说明
定义像素位宽。
-
定义
typedef enum { E_MI_HDMIRX_PIXEL_BITWIDTH_8BIT = 0, E_MI_HDMIRX_PIXEL_BITWIDTH_10BIT, E_MI_HDMIRX_PIXEL_BITWIDTH_12BIT, E_MI_HDMIRX_PIXEL_BITWIDTH_16BIT, E_MI_HDMIRX_PIXEL_BITWIDTH_MAX, } MI_HDMIRX_PixelBitWidth_e;
-
成员
成员名称 描述 E_MI_HDMIRX_PIXEL_BITWIDTH_8BIT 8bit 像素位宽 E_MI_HDMIRX_PIXEL_BITWIDTH_10BIT 10bit 像素位宽 E_MI_HDMIRX_PIXEL_BITWIDTH_12BIT 12bit 像素位宽 E_MI_HDMIRX_PIXEL_BITWIDTH_16BIT 16bit 像素位宽
3.7. MI_HDMIRX_OverSampleMode_e¶
-
说明
定义过采样模式。
-
定义
typedef enum { E_MI_HDMIRX_OVERSAMPLE_1X = 0, E_MI_HDMIRX_OVERSAMPLE_2X, E_MI_HDMIRX_OVERSAMPLE_3X, E_MI_HDMIRX_OVERSAMPLE_4X, E_MI_HDMIRX_OVERSAMPLE_MAX, } MI_HDMIRX_OverSampleMode_e;
-
成员
成员名称 描述 E_MI_HDMIRX_OVERSAMPLE_1X 1倍过采样 E_MI_HDMIRX_OVERSAMPLE_2X 2倍过采样 E_MI_HDMIRX_OVERSAMPLE_3X 3倍过采样 E_MI_HDMIRX_OVERSAMPLE_4X 4 倍过采样
3.8. MI_HDMIRX_PixelFormat_e¶
-
说明
定义HDMIRX 像素 格式
-
定义
typedef enum { E_MI_HDMIRX_PIXEL_FORMAT_RGB = 0, E_MI_HDMIRX_PIXEL_FORMAT_YUV444, E_MI_HDMIRX_PIXEL_FORMAT_YUV422, E_MI_HDMIRX_PIXEL_FORMAT_YUV420, E_MI_HDMIRX_PIXEL_FORMAT_MAX, } MI_HDMIRX_PixelFormat_e;
-
成员
成员名称 描述 E_MI_HDMIRX_PIXEL_FORMAT_RGB RGB 格式 E_MI_HDMIRX_PIXEL_FORMAT_YUV444 YUV444 格式 E_MI_HDMIRX_PIXEL_FORMAT_YUV422 YUV422 格式 E_MI_HDMIRX_PIXEL_FORMAT_YUV420 YUV420 格式 -
注意事项
1.4b 不支持YUV420
3.9. MI_HDMIRX_FramePackingType_e¶
-
说明
定义HDMIRX 视频3D 格式
-
定义
typedef enum { E_MI_HDMIRX_FRAME_PACKING_TYPE_NONE, E_MI_HDMIRX_FRAME_PACKING_TYPE_SIDE_BY_SIDE, E_MI_HDMIRX_FRAME_PACKING_TYPE_TOP_AND_BOTTOM, E_MI_HDMIRX_FRAME_PACKING_TYPE_TIME_INTERLACED, E_MI_HDMIRX_FRAME_PACKING_TYPE_FRAME_PACKING, E_MI_HDMIRX_FRAME_PACKING_TYPE_3D_TILE, E_MI_HDMIRX_FRAME_PACKING_TYPE_MAX }MI_HDMIRX_FramePackingType_e;
-
成员
成员名称 描述 E_MI_HDMIRX_FRAME_PACKING_TYPE_NONE 2D 格式 E_MI_HDMIRX_FRAME_PACKING_TYPE_SIDE_BY_SIDE 左右 E_MI_HDMIRX_FRAME_PACKING_TYPE_TOP_AND_BOTTOM 上下 E_MI_HDMIRX_FRAME_PACKING_TYPE_TIME_INTERLACED, 帧交织 E_MI_HDMIRX_FRAME_PACKING_TYPE_FRAME_PACKING 帧高清 E_MI_HDMIRX_FRAME_PACKING_TYPE_3D_TILE 块 3D -
注意事项
1.4b 不支持3D 功能
3.10. MI_HDMIRX_ColorSpace_e¶
-
说明
定义HDMIRX 视频颜色空间格式
-
定义
typedef enum { E_MI_HDMIRX_COLOR_SPACE_UNKNOWN = 0, E_MI_HDMIRX_COLOR_SPACE_BT601, E_MI_HDMIRX_COLOR_SPACE_BT709, E_MI_HDMIRX_COLOR_SPACE_MAX } MI_HDMIRX_ColorSpace_e;
-
成员
成员名称 描述 E_MI_HDMIRX_COLOR_SPACE_UNKNOWN 无 E_MI_HDMIRX_COLOR_SPACE_BT601 ITU 601 颜色空间 E_MI_HDMIRX_COLOR_SPACE_BT709 ITU 709 颜色空间
3.11. MI_HDMIRX_TimingInfo_t¶
-
说明
HDMI Rx Timing 的结构体。
-
定义
typedef struct MI_HDMIRX_TimingInfo_s { MI_U32 u32Width; MI_U32 u32Height; MI_U32 u32FrameRate; MI_HDMIRX_ColorSpace_e eColorSpace; MI_HDMIRX_PixelFormat_e ePixelFmt; MI_HDMIRX_PixelBitWidth_e eBitWidth; MI_BOOL bInterlace; MI_HDMIRX_OverSampleMode_e eOverSample; MI_BOOL bHdmiMode; MI_HDMIRX_FramePackingType_e e3dFmt; MI_U32 u32Vblank; MI_BOOL bPcMode; MI_HDMIRX_QuantRange_e eQuantRange; MI_U32 u32TimingIdx; MI_BOOL bMHL; }MI_HDMIRX_TimingInfo_t;
-
成员
成员名称 描述 u32Width Timing info 的宽 u32Height Timing info 的高 u32FrameRate Timing info的帧率 eColorSpace Timing info 的颜色空间 ePixelFmt Timing info 的像素格式 eBitWidth Timing info 的位深 bInterlace Interlace Mode eOverSample HDMIRX 视频过采样大小(HDMIRX 像素重复值) bHdmiMode HDMIRX视频模式是HDMI还是DVI e3dFmt HDMIRX 视频3D格式 u32Vblank HDMIRX Vblank值,仅在视频格式为3D Frame PACKING时有效 bPcMode HDMIRX PC Timing标志 eQuantRange HDMIRX 量化范围 u32TimingIdx HDMIRX Timing 对应的Index bMHL HDMIRX MHL标志 -
注意事项
1.4b不支持3D/MHL, 结构体中的en3dFmt / bMHL / u32Vblank 都不支持。
3.12. MI_HDMIRX_CEC_LOGIC_ADDR¶
-
说明
定义CEC 设备逻辑地址,只适用MI_HDMIRX_CecSetLogicAddr,为了同时设置多个逻辑地址
-
定义
#define CEC_LOGIC_ADDR_DEVICE_TV 0 #define CEC_LOGIC_ADDR_RECORDING_DEVICE_1 1 #define CEC_LOGIC_ADDR_RECORDING_DEVICE_2 2 #define CEC_LOGIC_ADDR_TUNER_1 3 #define CEC_LOGIC_ADDR_PLAYBACK_DEVICE_1 4 #define CEC_LOGIC_ADDR_AUDIO_SYSTEM 5 #define CEC_LOGIC_ADDR_TUNER_2 6 #define CEC_LOGIC_ADDR_TUNER_3 7 #define CEC_LOGIC_ADDR_PLAYBACK_DEVICE_2 8 #define CEC_LOGIC_ADDR_RECORDING_DEVICE_3 9 #define CEC_LOGIC_ADDR_TUNER_4 10 #define CEC_LOGIC_ADDR_PLAYBACK_DEVICE_4 11 #define CEC_LOGIC_ADDR_RESERVED_1 12 #define CEC_LOGIC_ADDR_RESERVED_2 13 #define CEC_LOGIC_ADDR_FREE_USE 14 #define CEC_LOGIC_ADDR_UNREGISTER 15
-
相关数据类型及接口
3.13. MI_HDMIRX_CecMessage_t¶
-
说明
定义CEC message的数据结构。
-
定义
typedef struct MI_HDMIRX_CecMessage_s { MI_U8 u8Opdata[16]; MI_U8 u8Count; } MI_HDMIRX_CecMessage_t;
-
成员
成员名称 描述 u8Opdata 操作数,最多16个 u8Count u8Opdata操作数的个数
3.14. MI_HDMIRX_CEC_CALL_BACK¶
-
说明
定义CEC Callback的数据结构。
-
定义
typedef MI_S32 (*MI_HDMIRX_CEC_CALL_BACK)(MI_HDMIRX_PortId_e ePortId, MI_HDMIRX_CecMessage_t *pMessageData, void *pUsrParam);
-
成员
成员名称 描述 ePortId Port ID, 对应HDMI input port ID pMessageData 接收到的message 数据 pUsrParam 注册回调函数时,传入的用户数据 -
相关数据类型及接口
3.15. MI_HDMIRX_EQModeType_e¶
-
说明
定义EQ 补偿强度模式枚举
-
定义
typedef enum { E_MI_HDMIRX_EQ_AUTO, E_MI_HDMIRX_EQ_MANUAL, E_MI_HDMIRX_EQ_MAX } MI_HDMIRX_EQModeType_e;
-
成员
成员名称 描述 E_MI_HDMIRX_EQ_AUTO 自动模式,系统自动获取EQ 补偿强度 E_MI_HDMIRX_EQ_MANUAL 手动模式,用户调整EQ 补偿强度
3.16. MI_HDMIRX_EQAttr_t¶
-
说明
定义EQ 补偿强度参数的结构体
-
定义
typedef struct MI_HDMIRX_EQAttr_s { MI_HDMIRX_EQModeType_e eEQMode; MI_U8 u8ChnEqStrength[3]; }MI_HDMIRX_EQAttr_t;
-
成员
成员名称 描述 eEQMode EQ 补偿强度模式 u8ChnEqStrength EQ 补偿强度参数 -
相关数据类型及接口
4. 错误码¶
MI HDMI RX模块错误码如下表所示:
错误码 | 宏定义 | 描述 |
---|---|---|
0 | MI_HDMIRX_RET_SUCCESS | 成功 |
0xA02A2001 | MI_ERR_HDMIRX_NOT_INIT | 模块未完成初始化 |
0xA02A2002 | MI_ERR_HDMIRX_DEV_ INVALID | Device超出合法范围 |
0xA02A2003 | MI_ERR_HDMIRX_PORT_ INVALID | Port超出合法范围 |
0xA02A2004 | MI_ERR_HDMIRX_PARAM_ INVALID | 参数不合法 |
0xA02A2005 | MI_ERR_HDMIRX_TIMEOUT | 设备运行超时 |
0xA02A2006 | MI_ERR_HDMIRX_NULL_PTR | 输入参数空指针错误 |
0xA02A2007 | MI_ERR_HDMIRX_HAS_CONNECTED | 设备重连 |
0xA02A2008 | MI_ERR_HDMIRX_HDCPKEY_INVALID | HDCP Key 不正确 |
0xA02A2009 | MI_ERR_HDMIRX_FAILED | 操作出错 |
0xA02A200A | MI_ERR_HDMIRX_NOT_SUPPORT | 操作不支持 |
5. PROCFS介绍¶
5.1. cat¶
-
调试信息
cat /proc/mi_modules/mi_hdmirx/mi_hdmirx0
-
调试信息分析
记录当前HDMIRX连接状态及相应的Prepare/Timing/Audio信息,可以动态地获取到这些信息,方便调试。
-
参数说明
参数 描述 Prepare HDCP/EDID Info edid ready 扩展显示识别数据是否写入成功,1:success,0: fail edid len 扩展显示识别数据的长度 hdcp otp mode hdcp key 安全模式,1:高安, 0: 低安 key ready hdcp key是否写入成功,1:success, 0: fail key len hdcp key 长度 参数 描述 Timing Info signal status 连接信号状态 width 宽 height 高 fps 帧率 Htotal 水平方向像素 Vtotal 垂直方向像素 colorFormat 颜色格式[0-3]:RGB444,yuv444,yuv422,yuv420 colorRange 色域参数[0-2]:default,limit,full colorSpace 色域参数[0-3]:none,bt.601,bt.709,extended(其它) bitDepth 像素深度 interlace? 是否隔行 DVI? 是否DVI aspectRatio 宽高比 repetion 像素重复比例 参数 描述 Eq Info IsAuto 是否硬件Auto,1:硬件Auto ,0:软件Auto Chn0 通道0 Eq 值 Chn1 通道1 Eq 值 Chn2 通道2 Eq 值 参数 描述 Audio Info sampleFreq 采样率(32Khz,44KHz,48KHz,96KHz...) sampleSize 采样位宽(16bit,20bit,24bit) codeType 编码类型(PCM,AC-3,MP3,AAC,DTS,DD...) channel 编码通道(2CH,3CH,4CH,5CH...8Ch) pktMute Audio packet是否mute,true:mute,false:unmute fifoFlicker Audio fifo抖动,true:抖动,false:稳定 forceMode audio是否force mute,true:force mute,false:auto mute audioFifo audio 水位值 N audio 采样率fs 计算值 N ((N/Cts)*TmdsClk = fs * 128) Cts audio 采样率fs 计算值 Cts TmdsClk audio 采样率fs 计算值 TmdsClk
5.2. hdmirx echo¶
功能 | 读取SRAME里的EDID数据 |
---|---|
命令 | echo [command] [port] [size] > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
参数说明 | command:readedid ;port:0 ; size:256 |
举例 | echo readedid 0 256 > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
功能 | 拉低拉高Hotplug |
---|---|
命令 | echo [command] [port] [bHigh] > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
参数说明 | command:sethpg ;port:0 ; bHigh:1----拉高,0----拉低 |
举例 | echo sethpg 0 1 > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
功能 | 开启Auto Eq |
---|---|
命令 | echo [command] [port] [bOpen] > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
参数说明 | command:setautoeq ;port:0 ; bOpen:1----开启,0----关闭 |
举例 | echo setautoeq 0 1 > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
功能 | 发送Cec 指令 |
---|---|
命令 | echo [command] [port] [timeout] [retrycount] [datacount] [data] > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |
参数说明 | command:sendcecmsg ;port:0 ;timeout:100 ; retrycount: 重发次数;datacount:指令数量;data:指令内容 |
举例 | echo sendcecmsg 0 100 4 5 0x5f 0x84 0x10 0x00 0x05 > /proc/mi_modules/mi_hdmirx/mi_hdmirx0 |