MI HDMI API¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 2.03 | 04/12/2018 | |
| 2.04 | 06/12/2019 | |
| 2.05 | 01/12/2020 | |
| 2.06 | 04/26/2020 | |
| 2.07 | 08/04/2020 | |
| 2.08 | 04/22/2021 | |
| 2.09 | 05/17/2021 | |
| 2.10 | 08/05/2021 | |
| 08/25/2021 | ||
| 2.11 | 09/16/2021 | |
| 2.12 | 11/29/2021 | |
| 2.13 | 02/26/2022 | |
| 2.14 | 06/10/2022 | |
| 2.15 | 08/09/2024 | |
| 2.16 | 05/19/2025 | |
| 2.17 | 10/30/2025 | |
| 2.18 | 01/07/2026 |
1. 概述¶
1.1. 模块说明¶
HDMI (High Definition Multimedia Interface),即高清多媒体接口,是一种全数字化视频和声音发送接口,可以同时发送未压缩的音频及视频信号。
HDMI可以分为TX 端与RX端,TX即source设备,用来将数据传输给RX(显示器/电视等sink设备)。本模块目前只支持基于HDMI ver1.4 的HDMITx。
1.2. 基本结构¶
1.3. 功能介绍与工作原理¶
1.3.1 功能介绍¶
1.MI HDMI 用于输出timing到TV/显示器,当前协议规格是1.4。故最大分辨率只能到4kp@30fps
2.支持热插拔,并且可以注册callback回传到user mode
3.不支持 HDCP
4.不支持 I mode 输出(隔行输出)
5.不支持CEC
6.只支持color depth为8bit的视频,不支持10bit/12bit
7.输出color domain 支持YUV444/RGB444,不支持YUV422,如果是DVI mode 只支持RGB444
8.timing来源于disp,并且其内部是硬件直连,即timing必须与disp 设置对齐一致。
9.HDMI mode可以输出音频,DVI mode不输出音频
10.输出音频时其audio sample和channel等须与AO(audio output) dev对齐(内部硬件直连),且不可以单独输出,须和视频一起输出。
11.audio格式:sample rate:32k,44.1k,48k,channel:2
1.3.2 工作原理¶
disp load 相应屏参设置完timing后,(如需要输出audio,相关设定须设定到audio output dev),然后用此timing设定(和audio 参数)设置到hdmi后,hdmi 按协议发timing到显示器或电视。 timing 相关配置可参考mi_disp api doc中说明。 具体hdmi协议握手参考如下:

1.hdmitx设备在接入hdmi线缆后提供5V power,rx设备在检测到5v power后则拉高hpd脚
2.tx检测到hpd被拉高后则 读取 rx端内部edid信息。
3.根据edid信息解析出相应timing后再和disp所设timing 判断是否可以发送。
1.4. 应用场景¶
配合disp/audio output 输出hdmi timing 画面到显示器或电视等sink设备。
1.5. 平台差异¶
表1-1
| 平台差异 | Taiyaki/Takoyaki | Tiramisu | Muffin | Mochi | Ibopper | Mhera |
|---|---|---|---|---|---|---|
| 1920x1080P@24 | Y | Y | Y | Y | Y | Y |
| 1920x1080P@25 | Y | Y | Y | Y | Y | Y |
| 1920x1080P@30 | Y | Y | Y | Y | Y | Y |
| 1920x1080P@50 | Y | Y | Y | Y | Y | Y |
| 1920x1080P@60 | Y | Y | Y | Y | Y | Y |
| 1280x720P@60 | Y | Y | Y | Y | Y | Y |
| 1280x720P@50 | Y | Y | Y | Y | Y | Y |
| 720x576P@50 | Y | Y | Y | Y | Y | Y |
| 720x480P@60 | Y | Y | Y | Y | Y | Y |
| 1280x1024P@60 | Y | Y | Y | Y | Y | Y |
| 1024x768P@60 | Y | Y | Y | Y | Y | Y |
| 1440x900P@60 | Y | Y | Y | Y | Y | Y |
| 1600x1200P@60 | Y | Y | Y | Y | Y | Y |
| 1280x800P@60 | Y | Y | Y | Y | Y | Y |
| 1366x768P@60 | Y | Y | Y | Y | Y | Y |
| 1680x1050P@60 | Y | Y | Y | Y | Y | Y |
| 3840x2160P@30 | Y | Y | Y | Y | Y | Y |
| 3840x2160P@24 | Y | Y | Y | Y | Y | Y |
| 3840x2160P@25 | Y | Y | Y | Y | Y | Y |
| 2560x1440P@30 | N | Y | Y | Y | Y | Y |
| 2560x1440P@50 | N | Y | Y | Y | Y | Y |
| 2560x1440P@60 | N | Y | Y | Y | Y | Y |
| Audio_32K | Y | Y | Y | Y | Y | Y |
| Audio_48K | Y | Y | Y | Y | Y | Y |
| 1920x1080P@59.94 | N | Y | Y | Y | Y | Y |
| 1920x1080P@29.97 | N | Y | Y | Y | Y | Y |
| 1280x720P@59.94 | N | Y | Y | Y | Y | Y |
| 1280x720P@29.97 | N | Y | Y | Y | Y | Y |
| 3840x2160P@29.97 | N | Y | Y | Y | Y | Y |
| 800x600P@60 | N | Y | Y | Y | Y | Y |
| 1280x720P@24 | N | N | Y | Y | Y | Y |
| 1280x720P@25 | N | N | Y | Y | Y | Y |
| 1280x720P@30 | N | N | Y | Y | Y | Y |
| 1920x1080P@23.98 | N | N | Y | Y | Y | Y |
| 640x480P@60 | N | N | Y | Y | Y | Y |
| 848x480P@60 | N | N | Y | Y | Y | Y |
| 1280x768P@60 | N | N | Y | Y | Y | Y |
| 1280x960P@60 | N | N | Y | Y | Y | Y |
| 1360x768P@60 | N | N | Y | Y | Y | Y |
| 1400x1050P@60 | N | N | Y | Y | Y | Y |
| 1600x900P@60 | N | N | Y | Y | Y | Y |
| 1920x1200P@60 | N | N | Y | Y | Y | Y |
| 1920x1440P@60 | N | N | Y | Y | Y | Y |
| 2560x1600P@60 | N | N | Y | Y | Y | Y |
1.6. 开发流程¶
1.6.1 编译配置¶
进入alkaid project根目录,make menuconfig,开启hdmi子模块。路径如下所示:
```
Generic Options -> Interface Compile Config -> hdmi
```
重新编译project,编译完成将在sdk/interface/src/hdmi下生成 mi_hdmi.ko。
1.6.2 接口调用¶
hdmi用户开发主要调用mi hdmi接口实现hdmi的配置及启动timing发送。主要是初始化,打开设备,设置参数,启动。详细API参数介绍请参考第2章 API 列表 。

接口调用分以下几步:
-
初始化hdmi模块。并注册热插拔事件,主要是回调插、拔线缆事件给App
-
打开hdmi
-
获取rx sink设备如显示器或电视的edid
-
根据sink 支持的timing进行配置
-
启动hdmi
1.7. 实例介绍¶
本实例介绍hdmi 功能调用调用流程。
功能总览:
-
初始化disp设备:配置HDMI的接口属性。
-
初始化AO设备(可选):配置AO Device参数
-
获取sink设备edid,解析后按sink设备支持的timing配置disp/hdmi。
-
配置并启动hdmi。
-
停止并释放hdmi。
#include <stdio.h> #include <unistd.h> #include <string.h> #include <pthread.h> #include <sys/prctl.h> #include <poll.h> #include <fcntl.h> #include <stdlib.h> #include <signal.h> #include <assert.h> #include <sys/resource.h> #include <sys/mman.h> #include <sys/types.h> #include <sys/time.h> #include <sys/stat.h> #include "mi_sys.h" #include "mi_disp.h" #include "mi_ao.h" #include "mi_common.h" #include "mi_hdmi.h" MI_HDMI_InitParam_t stInitParam; MI_HDMI_Attr_t stAttr; MI_HDMI_Edid_t stEdid; //初始化DISP Device参数并配置 interface为hdmi stPubAttr.eIntfSync = E_MI_DISP_OUTPUT_1080P60; // 输出Timing:1080P60 stPubAttr.eIntfType = E_MI_DISP_INTF_HDMI; // 接口类型:HDMI MI_DISP_SetPubAttr(DispDev, &stPubAttr); // 配置DISP Device参数 MI_DISP_Enable(DispDev); // 启用DISP Device //初始化AO Device参数 MI_AO_Open(0, &pstAudioOutCtx->stAoAttr); MI_AO_AttachIf(pstAudioOutCtx->DevId, E_MI_AO_IF_HDMI_A, 0); MI_AO_SetVolume(pstAudioOutCtx->DevId, 5, 5, E_MI_AO_GAIN_FADING_OFF); /* 初始化配置hdmi并启动HDMI */ stInitParam.pCallBackArgs = NULL; stInitParam.pfnHdmiEventCallback = NULL; memset(&stInitParam, 0, sizeof(MI_HDMI_InitParam_t)); MI_HDMI_Init(&stInitParam); MI_HDMI_Open(0); /* 获取sink设备支持的timing */ MI_HDMI_ForceGetEdid(0, &stEdid); ...parser... /* 根据sink 支持的timing进行配置 */ MI_HDMI_GetAttr(0, &stAttr); stAttr.stVideoAttr.bEnableVideo = TRUE; stAttr.stVideoAttr.eOutputMode = E_MI_HDMI_OUTPUT_MODE_HDMI; stAttr.stVideoAttr.eTimingType = E_MI_HDMI_TIMING_1080_60P; stAttr.stVideoAttr.eColorType= E_MI_HDMI_COLOR_TYPE_YCBCR444; stAttr.stVideoAttr.eDeepColorMode = E_MI_HDMI_DEEP_COLOR_24BIT; stAttr.stAudioAttr.bEnableAudio = TRUE; stAttr.stAudioAttr.bIsMultiChannel = FALSE; stAttr.stAudioAttr.eBitDepth = E_MI_HDMI_BIT_DEPTH_16; MI_HDMI_SetAttr(0, &stAttr); MI_HDMI_Start(0); .... /* 停止HDMI */ MI_HDMI_Stop(0); MI_HDMI_Close(0); MI_HDMI_DeInit();
2. API 列表¶
该功能模块提供以下 API:
| API名 | 功能 |
|---|---|
| MI_HDMI_Init | 初始化 HDMI |
| MI_HDMI_DeInit | 去初始化 HDMI |
| MI_HDMI_Open | 打开 HDMI |
| MI_HDMI_Close | 关闭 HDMI |
| MI_HDMI_SetAttr | 设置 HDMI 属性 |
| MI_HDMI_GetAttr | 获取 HDMI 属性 |
| MI_HDMI_Start | 启动 HDMI |
| MI_HDMI_Stop | 停止 HDMI |
| MI_HDMI_GetSinkInfo | 获取 HDMI Sink 端的能力信息 |
| MI_HDMI_SetAvMute | 设置 HDMI 音视频静音功能 |
| MI_HDMI_ForceGetEdid | 获取 HDMI 的 EDID 信息 |
| MI_HDMI_SetDeepColor | 设置 HDMI 的 Deep Color 模式 |
| MI_HDMI_GetDeepColor | 获取 HDMI 的 Deep Color 模式 |
| MI_HDMI_SetInfoFrame | 设置 HDMI 的 Info Frame信息 |
| MI_HDMI_GetInfoFrame | 获取 当前设置的HDMI 的 Info Frame信息 |
| MI_HDMI_SetAnalogDrvCurrent | 设置 HDMI 的通道驱动电流 |
| MI_HDMI_InitDev | 初始化HDMI设备 |
| MI_HDMI_DeInitDev | 反初始化HDMI设备 |
2.1. MI_HDMI_Init¶
-
功能
初始化 HDMI模块。
-
语法
MI_S32 MI_HDMI_Init(MI_HDMI_InitParam_t *pstInitParam); -
形参
表2-2
参数名称 描述 输入/输出 pstInitParam 初始化参数结构体指针 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
HDMI 在注册事件回调后,系统会以回调的形式通知App有热插拔之类的操作,如果用户不需要对相应事件做特殊响应,可以将初始化参数结构体中的函数指针置为 NULL。
-
特殊说明
注册的pfnHdmiEventCallback回调,主要功能是回调插、拔线缆事件给App,目前设计是在SDK层开一个线程,然后检查对应的事件来上报给回调注册者。
-
举例
1. MI_HDMI_InitParam_t stHdmiPara; 2. MI_HDMI_Attr_t stAttr; 3. MI_HDMI_TimingType_e eTimingType; 4. MI_HDMI_Edid_t stEdid; 5. /* 启动DISP */ 6. eTimingType = E_MI_HDMI_TIMING_1080_60P; 7. /* 启动HDMI */ 8. stHdmiPara.pCallBackArgs = NULL; 9. stHdmiPara.pfnHdmiEventCallback = NULL; 10. MI_HDMI_Init(&stHdmiPara); 11. MI_HDMI_Open(0); 12. /* 获取sink设备支持的timing */ 13. MI_HDMI_ForceGetEdid(0, &stEdid); 14. ... 15. /* 根据sink 支持的timing进行配置 */ 16. MI_HDMI_GetAttr(0, &stAttr); 17. stAttr.stVideoAttr.bEnableVideo = TRUE; 18. stAttr.stVideoAttr.eOutputMode = E_MI_HDMI_OUTPUT_MODE_HDMI; 19. stAttr.stVideoAttr.eTimingType = E_MI_HDMI_TIMING_1080_60P; 20. stAttr.stVideoAttr.eColorType= E_MI_HDMI_COLOR_TYPE_YCBCR444; 21. stAttr.stVideoAttr.eDeepColorMode = E_MI_HDMI_DEEP_COLOR_24BIT; 22. stAttr.stAudioAttr.bEnableAudio = FALSE; 23. stAttr.stAudioAttr.bIsMultiChannel = FALSE; 24. stAttr.stAudioAttr.eBitDepth = E_MI_HDMI_BIT_DEPTH_16; 25. MI_HDMI_SetAttr(0, &stAttr); 26. MI_HDMI_Start(0); 27. /* 停止HDMI */ 28. MI_HDMI_Stop(0); 29. MI_HDMI_Close(0); 30. MI_HDMI_DeInit(); -
相关主题
2.2. MI_HDMI_DeInit¶
-
功能
去初始化 HDMI。
-
语法
MI_S32 MI_HDMI_DeInit(); -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
举例
请参见 MI_HDMI_Init 的举例。
-
相关主题
2.3. MI_HDMI_Open¶
-
功能
打开 HDMI。
-
语法
MI_S32 MI_HDMI_Open(MI_HDMI_DeviceId_e eHdmi); -
形参
表2-3
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
打开 HDMI 之前必须先调用MI_HDMI_Init
重复打开 HDMI 返回成功。
-
举例
请参见 MI_HDMI_Init 的举例。
-
相关主题
2.4. MI_HDMI_Close¶
-
功能
关闭 HDMI。
-
语法
MI_S32 MI_HDMI_Close(MI_HDMI_DeviceId_e eHdmi); -
形参
表2-4
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
重复关闭返回成功。
-
举例
请参见 MI_HDMI_Init的举例。
-
相关主题
2.5. MI_HDMI_SetAttr¶
-
功能
设置 HDMI 属性。
-
语法
MI_S32 MI_HDMI_SetAttr(MI_HDMI_DeviceId_e eHdmi,MI_HDMI_Attr_t*pstAttr); -
形参
表2-5
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 pstAttr HDMI 属性结构体指针。 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
设置 HDMI 属性之前需要调用MI_HDMI_Open。
-
用户需要在调用MI_HDMI_Start 之前设置 HDMI 属性。
-
在调用 MI_HDMI_Start 之后设置 HDMI 属性,需要先调用MI_HDMI_Stop 再设置新的 HDMI 属性。
-
传输 audio时需要确保有传输视频数据,音频是夹到视频中传输的
-
-
举例
1. MI_HDMI_InitParam_t stHdmiPara; 2. MI_HDMI_Attr_t stAttr; 3. MI_HDMI_TimingType_e eTimingType; 4. /* 启动DISP */ 5. /* HDMI start后设置HDMI属性 */ 6. MI_HDMI_Stop(0); 7. MI_HDMI_GetAttr(0, &stAttr); 8. /* 用户更改HDMI属性,如timing */ 9. stAttr.stVideoAttr.eTimingType = E_MI_HDMI_TIMING_720_60P; 10. MI_HDMI_SetAttr(0, &stAttr); 11. MI_HDMI_Start(0); -
相关主题
2.6. MI_HDMI_GetAttr¶
-
功能
获取 HDMI 属性。
-
语法
MI_S32 MI_HDMI_GetAttr(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_Attr_t *pstAttr); -
形参
表2-6
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 pstAttr HDMI 属性结构体指针。 输出 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
举例
请参见 MI_HDMI_Init举例。
-
相关主题
2.7. MI_HDMI_Start¶
-
功能
启动 HDMI。
-
语法
MI_S32 MI_HDMI_Start(MI_HDMI_DeviceId_e eHdmi); -
形参
表2-7
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
- 启动 HDMI 前必须先调用 MI_HDMI_Open
-
举例
请参见 MI_HDMI_Init举例。
-
相关主题
2.8. MI_HDMI_Stop¶
-
功能
停止 HDMI设备工作。
-
语法
MI_S32 MI_HDMI_Stop(MI_HDMI_DeviceId_e eHdmi); -
形参
表2-8
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
相关主题
2.9. MI_HDMI_GetSinkInfo¶
-
功能
获取 HDMI Sink 端的能力级信息。
-
语法
MI_S32 MI_HDMI_GetSinkInfo(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_SinkInfo_t *pstSinkInfo); -
形参
表2-9
参数名称 描述 输入/输出 eHdmi HDMI 接口号。取值范围:0 输入 pstSinkInfo HDMI Sink 端能力级结构体指针 输出 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
调用前必须先打开 HDMI。为了确保 HDMI 打开完成,建议在调用MI_HDMI_Open 接口后等待 500ms 左右。
-
应在 HDMI 启动且插入线缆之后调用。
-
一般在插入事件处理函数中或者强制获取 EDID 之后使用。
-
-
举例
1. MI_HDMI_InitParam_t stHdmiPara; 2. MI_HDMI_Attr_t stAttr; 3. MI_HDMI_TimingType_e eTimingType; 4. MI_HDMI_SinkInfo_t stSinkInfo; 5. /* 启动DISP */ 6. /* 启动HDMI */ 7. /* 获取HDMI Sink端能力级 */ 8. MI_HDMI_GetSinkInfo(0, &stSinkInfo);
2.10. MI_HDMI_SetAvMute¶
-
功能
设置 HDMI 音视频静音功能。
-
语法
MI_S32 MI_HDMI_SetAvMute(MI_HDMI_DeviceId_e eHdmi, MI_BOOL bAvMute);
-
形参
表2-10
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 bAvMute 是否设置 HDMI 音视频静音。取值范围:
1:设置音视频静音。
0:关闭音视频静音。输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
需要在调用MI_HDMI_Start之后使用。
-
举例
1. MI_HDMI_Start(0); 2. MI_HDMI_SetAvMute(0, MI_TRUE);
2.11. MI_HDMI_ForceGetEdid¶
-
功能
获取 HDMI 的 EDID 信息。
-
语法
MI_S32 MI_HDMI_ForceGetEdid(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_Edid_t *pstEdidData); -
形参
表2-11
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 pstEdidData HDMI 的 EDID 信息。 输出 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
- 调用前必须先打开 HDMI。
-
举例
1. MI_HDMI_InitParam_t stHdmiPara; 2. MI_HDMI_Attr_t stAttr; 3. MI_HDMI_Edid_t stEdidData; 4. /* 启动DISP */ 5. /* 启动HDMI */ 6. /* 获取HDMI EDID信息 */ 7. MI_HDMI_ForceGetEdid(0, &stEdidData);
2.12. MI_HDMI_SetDeepColor¶
-
功能
设置 Deep Color 模式。
-
语法
MI_S32 MI_HDMI_SetDeepColor(MI_HDMI_DeviceId_e eHdmi,MI_HDMI_DeepColor_e eDeepColor); -
形参
表2-12
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 eDeepColor HDMI 的 Deep Color 模式。 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
该接口属于高级接口,一般不需要调用。
-
调用前必须先打开 HDMI。
-
该接口可用于设置 MI_HDMI_SetAttr不支持的某些 Deep Color 模式。
-
该接口暂未实现。
-
-
举例
1. MI_HDMI_InitParam_t stHdmiPara; 2. MI_HDMI_Attr_t stAttr; 3. /* 启动 DISP*/ 4. /* 启动 HDMI */ 5. /* 设置 Deep color 模式 */ 6. MI_HDMI_SetDeepColor (0, E_MI_HDMI_DEEP_COLOR_24BIT);
2.13. MI_HDMI_GetDeepColor¶
-
功能
获取 Deep Color 模式。
-
语法
MI_S32 MI_HDMI_GetDeepColor(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_DeepColor_e *peDeepColor); -
形参
表2-13
参数名称 描述 输入/输出 eHdmi HDMI 接口号。取值范围:0 输入 peDeepColor HDMI 的 Deep Color 模式指针。 输出 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
该接口属于高级接口,一般不需要调用。
-
调用前必须先打开 HDMI。
-
该接口暂未实现。
-
-
相关主题
2.14. MI_HDMI_SetInfoFrame¶
-
功能
设置 HDMI 的信息帧。
-
语法
MI_S32 MI_HDMI_SetInfoFrame(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_InfoFrame_t *pstInfoFrame); -
形参
表2-14
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 pstInfoFrame 图像信息帧结构体指针。 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
该接口一般用于用户态回调函数中配置信息帧属性。其他情况,一般不需调用本接口。
-
调用前必须先打开 HDMI。
-
本接口只支持设置
AVI、SPD和AUDIO信息帧,其他类型的信息帧设置无效。
-
-
举例
1. MI_HDMI_DeviceId_e eHdmi = E_MI_HDMI_ID_0; 2. MI_HDMI_InfoFrame_t stAviInfoFrame = {E_MI_HDMI_INFOFRAME_TYPE_AVI}; 3. MI_HDMI_InfoFrame_t stAudInfoFrame = {E_MI_HDMI_INFOFRAME_TYPE_AUDIO}; 4. MI_HDMI_InfoFrame_t stSpdInfoFrame = {E_MI_HDMI_INFOFRAME_TYPE_SPD}; 5. /* AviInfoFrame */ 6. stAviInfoFrame.unInforUnit.stAviInfoFrame.bEnableAfdOverWrite = 0; 7. ... 8. /* AudioInfoFrame */ 9. stAudInfoFrame.unInforUnit.stAudInfoFrame.u32ChannelCount = 2; 10. ... 11. /* SpdInfoFrame */ 12. stSpdInfoFrame.unInforUnit.stSpdInfoFrame.au8VendorName[0] = 0; 13. ... 14. MI_HDMI_SetInfoFrame(eHdmi, &stAviInfoFrame); -
相关主题
2.15. MI_HDMI_GetInfoFrame¶
-
功能
获取 HDMI 的信息帧。
-
语法
MI_S32 MI_HDMI_GetInfoFrame(MI_HDMI_DeviceId_e eHdmi,MI_HDMI_InfoFrameType_e eInfoFrameType,MI_HDMI_InfoFrame_t *pstInfoFrame); -
形参
表2-15
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 eInfoFrameType 信息帧类型。 输入 pstInfoFrame 图像信息帧结构体指针。 输出 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
该接口一般用于用户态回调函数中获取信息帧属性。其他情况,一般不需调用本接口。
2.16. MI_HDMI_SetAnalogDrvCurrent¶
-
功能
设置 HDMI 通道的驱动电流
-
语法
MI_S32 MI_HDMI_SetAnalogDrvCurrent(MI_HDMI_DeviceId_e eHdmi,MI_HDMI_AnalogDrvCurrent_t *pstAnalogDrvCurrent); -
形参
表2-16
参数名称 描述 输入/输出 eHdmi HDMI 接口号。
取值范围:0输入 pstAnalogDrvCurrent HDMI 输出电流的结构体类型 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
-
该接口属于高级接口,提供给用户调整hdmi的通道输出电流。
-
调用前必须先打开 HDMI。
-
-
举例
1. MI_HDMI_AnalogDrvCurrent_t CurInfo = {}; 2. memset(&CurInfo, 0xFF, sizeof(CurInfo)); 3. MI_HDMI_SetAnalogDrvCurrent(g_HdmiAttr.eHdmi, &CurInfo);
2.17. MI_HDMI_InitDev¶
-
功能
初始化hdmi设备
-
语法
MI_S32 MI_HDMI_InitDev(MI_HDMI_InitParam_t *pstInitParam); -
形参
表2-17
参数名称 描述 输入/输出 pstInitParam 初始化参数结构体指针,可以配置为NULL 输入 -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
- 此接口在Version 2.06以上版本推荐使用,用于替换原有MI_HDMI_Init接口。
2.18. MI_HDMI_DeInitDev¶
-
功能
反初始化HDMI设备
-
语法
MI_S32 MI_HDMI_DeInitDev(void); -
返回值
-
0:成功。
-
非0:失败,详情参照错误码。
-
-
依赖
-
头文件:mi_hdmi.h、mi_hdmi_datatype.h
-
库文件:libmi_hdmi.a / libmi_hdmi.so
-
-
注意
此接口在Version 2.06以上版本推荐使用,用于替换原有MI_HDMI_DeInit接口。
3. HDMI 数据类型¶
HDMI 相关数据类型定义如下:
| 数据类型 | 定义 |
|---|---|
| MI_HDMI_DeviceId_e | 定义 HDMI 接口号 |
| MI_HDMI_InitParam_t | 定义 HDMI 初始化属性结构体 |
| MI_HDMI_EventCallBack | 定义 HDMI 回调函数 |
| MI_HDMI_EventType_e | 定义 HDMI 事件通知类型 |
| MI_HDMI_Attr_t | 定义 HDMI 属性结构体 |
| MI_HDMI_TimingType_e | 定义 HDMI 视频制式类型 |
| MI_HDMI_OutputMode_e | 定义 HDMI 颜色空间类型 |
| MI_HDMI_ColorType_e | 定义 HDMI 输出颜色类型 |
| MI_HDMI_DeepColor_e | 定义 HDMI 深色模式类型 |
| MI_HDMI_SampleRate_e | 定义 HDMI 音频输出采样率类型 |
| MI_HDMI_BitDepth_e | 定义 HDMI 音频输出采样位宽类型 |
| MI_HDMI_SinkInfo_t | 定义 HDMI Sink 端能力级结构体 |
| MI_HDMI_Edid_t | 定义 HDMI EDID 信息结构体 |
| MI_HDMI_InfoFrameType_e | 定义 HDMI 信息帧类型 |
| MI_HDMI_AviInfoFrameVer_t | 定义 AVI 信息帧结构体 |
| MI_HDMI_AudInfoFrameVer_t | 定义 AUDIO 信息帧结构体 |
| MI_HDMI_SpdInfoFrame_t | 定义 SPD 信息帧结构体 |
| MI_HDMI_InfoFrameUnit_u | 定义 HDMI 信息帧联合体 |
| MI_HDMI_AnalogDrvCurrent_t | 定义 HDMI 通道驱动电流结构体 |
注:本节已涵盖各重要的数据类型,部分未列出数据类型请参见 mi_hdmi_datatype.h
3.1. MI_HDMI_DeviceId_e¶
-
说明
定义 HDMI 接口号。
-
定义
typedef enum { E_MI_HDMI_ID_0 = 0, E_MI_HDMI_ID_MAX } MI_HDMI_DeviceId_e; -
成员
表3-2
成员名称 描述 E_MI_HDMI_ID_0 HDMI 接口 0
3.2. MI_HDMI_InitParam_t¶
-
说明
定义 HDMI 初始化属性结构体。
-
定义
typedef struct MI_HDMI_InitParam_s { MI_HDMI_EventCallBack pfnHdmiEventCallback; void *pCallBackArgs; }MI_HDMI_InitParam_t; -
成员
表3-3
成员名称 描述 pfnHdmiEventCallback 事件处理回调函数 pCallBackArgs 回调函数参数私有数据 -
相关数据类型及接口
3.3. MI_HDMI_EventCallBack¶
-
说明
定义 HDMI 回调函数。
-
语法
typedef MI_S32 (*MI_HDMI_EventCallBack) (MI_HDMI_DeviceId_e eHdmi, MI_HDMI_EventType_e event, void *pEventParam, void *pUsrParam); -
成员
表3-4
成员名称 描述 MI_HDMI_EventType_e HDMI事件类型 pEventParam pUsrParam 事件私有数据
3.4. MI_HDMI_EventType_e¶
-
说明
定义 HDMI 事件通知类型。
-
定义
typedef enum { E_MI_HDMI_EVENT_HOTPLUG = 0, E_MI_HDMI_EVENT_NO_PLUG, E_MI_HDMI_EVENT_MAX } MI_HDMI_EventType_e; -
成员
表3-5
成员名称 描述 E_MI_HDMI_EVENT_HOTPLUG HDMI Cable 连接事件 E_MI_HDMI_EVENT_NO_PLUG HDMI Cable 断开连接事件 -
相关数据类型及接口
3.5. MI_HDMI_Attr_t¶
-
说明
定义 HDMI 属性结构体。
-
定义
typedef struct MI_HDMI_Attr_s { MI_BOOL bConnect; MI_HDMI_VideoAttr_t stVideoAttr; MI_HDMI_AudioAttr_t stAudioAttr; MI_HDMI_EnInfoFrame_t stEnInfoFrame; } MI_HDMI_Attr_t; typedef struct MI_HDMI_VideoAttr_s { MI_BOOL bEnableVideo; MI_HDMI_TimingType_e eTimingType; MI_HDMI_OutputMode_e eOutputMode; MI_HDMI_ColorType_e eColorType; MI_HDMI_ColorType_e eInColorType; MI_HDMI_DeepColor_e eDeepColorMode; MI_HDMI_UserTiming_t stUserTiming; } MI_HDMI_VideoAttr_t; typedef struct MI_HDMI_AudioAttr_s { MI_BOOL bEnableAudio; MI_BOOL bIsMultiChannel; MI_HDMI_SampleRate_e eSampleRate; MI_HDMI_BitDepth_e eBitDepth; MI_HDMI_AudioCodeType_e eCodeType; } MI_HDMI_AudioAttr_t; typedef struct MI_HDMI_EnInfoFrame_s { MI_BOOL bEnableAviInfoFrame; MI_BOOL bEnableAudInfoFrame; MI_BOOL bEnableSpdInfoFrame; } MI_HDMI_EnInfoFrame_t; -
成员
表3-6
成员名称 描述 bEnableVideo 是否输出视频 eTimingType 视频制式,此参数需要与视频输出配置的制式保持一致 eOutputMode HDMI 输出视频模式 eColorType HDMI 输出颜色类型 eInColorType HDMI 输入颜色类型 eDeepColorMode DeepColor 输出模式。
默认为 MI_HDMI_DEEP_COLOR_24BIT 不支持。
MI_HDMI_DEEP_COLOR_30BIT 和MI_HDMI_DEEP_COLOR_36BIT。
MI_HDMI_DEEP_COLOR_48BITstUserTiming 自定义分辨率如宽/高/帧率,须与disp timing保持一致 bEnableAudio 是否使能音频 bIsMultiChannel 多声道数
0:2声道;
1:8 声道。/目前不支持eSampleRate 音频采样率,此参数需要与 AO 的配置保持一致 eBitDepth 音频位宽,默认为 16,此参数需要与 AO 的配置保持一致 bEnableAviInfoFrame 是否使能 AVI InfoFrame
建议使能bEnableAudInfoFrame 是否使能 AUDIO InfoFrame
建议使能bEnableSpdInfoFrame 是否使能 SPD InfoFrame -
注意事项
- 用户可以根据建议值设置 HDMI 属性
-
相关数据类型及接口
3.6. MI_HDMI_TimingType_e¶
-
说明
定义 HDMI 视频制式类型。
-
定义
typedef enum { E_MI_HDMI_TIMING_480_60I = 0, E_MI_HDMI_TIMING_480_60P = 1, E_MI_HDMI_TIMING_576_50I = 2, E_MI_HDMI_TIMING_576_50P = 3, E_MI_HDMI_TIMING_720_50P = 4, E_MI_HDMI_TIMING_720_60P = 5, E_MI_HDMI_TIMING_1080_50I = 6, E_MI_HDMI_TIMING_1080_50P = 7, E_MI_HDMI_TIMING_1080_60I = 8, E_MI_HDMI_TIMING_1080_60P = 9, E_MI_HDMI_TIMING_1080_30P = 10, E_MI_HDMI_TIMING_1080_25P = 11, E_MI_HDMI_TIMING_1080_24P = 12, E_MI_HDMI_TIMING_4K2K_30P = 13, E_MI_HDMI_TIMING_1440_50P = 14, E_MI_HDMI_TIMING_1440_60P = 15, E_MI_HDMI_TIMING_1440_24P = 16, E_MI_HDMI_TIMING_1440_30P = 17, E_MI_HDMI_TIMING_1470_50P = 18, E_MI_HDMI_TIMING_1470_60P = 19, E_MI_HDMI_TIMING_1470_24P = 20, E_MI_HDMI_TIMING_1470_30P = 21, E_MI_HDMI_TIMING_1920x2205_24P = 22, E_MI_HDMI_TIMING_1920x2205_30P = 23, E_MI_HDMI_TIMING_4K2K_25P = 24, E_MI_HDMI_TIMING_4K1K_60P = 25, E_MI_HDMI_TIMING_4K2K_60P = 26, E_MI_HDMI_TIMING_4K2K_24P = 27, E_MI_HDMI_TIMING_4K2K_50P = 28, E_MI_HDMI_TIMING_2205_24P = 29, E_MI_HDMI_TIMING_4K1K_120P = 30, E_MI_HDMI_TIMING_4096x2160_24P = 31, E_MI_HDMI_TIMING_4096x2160_25P = 32, E_MI_HDMI_TIMING_4096x2160_30P = 33, E_MI_HDMI_TIMING_4096x2160_50P = 34, E_MI_HDMI_TIMING_4096x2160_60P = 35, E_MI_HDMI_TIMING_1024x768_60P = 36, E_MI_HDMI_TIMING_1280x1024_60P = 37, E_MI_HDMI_TIMING_1440x900_60P = 38, E_MI_HDMI_TIMING_1600x1200_60P = 39, E_MI_HDMI_TIMING_1280x800_60P = 40, E_MI_HDMI_TIMING_1366x768_60P = 41, E_MI_HDMI_TIMING_1680x1050_60P = 42, E_MI_HDMI_TIMING_1920x1080_5994P = 43, E_MI_HDMI_TIMING_1920x1080_2997P = 44, E_MI_HDMI_TIMING_1280x720_5994P = 45, E_MI_HDMI_TIMING_1280x720_2997P = 46, E_MI_HDMI_TIMING_3840x2160_2997P = 47, E_MI_HDMI_TIMING_800x600_60P = 48, E_MI_HDMI_TIMING_1280x720_24P = 49, E_MI_HDMI_TIMING_1280x720_25P = 50, E_MI_HDMI_TIMING_1280x720_30P = 51, E_MI_HDMI_TIMING_1920x1080_2398P = 52, E_MI_HDMI_TIMING_640x480_60P = 53, E_MI_HDMI_TIMING_848x480_60P = 54, E_MI_HDMI_TIMING_1280x768_60P = 55, E_MI_HDMI_TIMING_1280x960_60P = 56, E_MI_HDMI_TIMING_1360x768_60P = 57, E_MI_HDMI_TIMING_1400x1050_60P = 58, E_MI_HDMI_TIMING_1600x900_60P = 59, E_MI_HDMI_TIMING_1920x1200_60P = 60, E_MI_HDMI_TIMING_1920x1440_60P = 61, E_MI_HDMI_TIMING_2560x1600_60P = 62, E_MI_HDMI_TIMING_USER = 63, E_MI_HDMI_TIMING_MAX, } MI_HDMI_TimingType_e; -
注意事项
-
需要根据视频输出的制式设置相应的 HDMI 的制式。
-
当App在设置timing的时候,需要匹配DISP模块的timing,HDMI的timing需和DISP模块的timing保持一致。
-
-
相关数据类型及接口
3.7. MI_HDMI_OutputMode_e¶
-
说明
定义 HDMI 输出模式类型
-
定义
typedef enum { E_MI_HDMI_OUTPUT_MODE_HDMI = 0, E_MI_HDMI_OUTPUT_MODE_HDMI_HDCP, E_MI_HDMI_OUTPUT_MODE_DVI, E_MI_HDMI_OUTPUT_MODE_DVI_HDCP, E_MI_HDMI_OUTPUT_MODE_AUTO, E_MI_HDMI_OUTPUT_MODE_MAX, } MI_HDMI_OutputMode_e; -
成员
表3-7
成员名称 描述 E_MI_HDMI_OUTPUT_MODE_HDMI HDMI 输出模式 E_MI_HDMI_OUTPUT_MODE_HDMI_HDCP HDMI + HDCP 输出模式 E_MI_HDMI_OUTPUT_MODE_DVI DVI 输出模式 E_MI_HDMI_OUTPUT_MODE_DVI_HDCP DVI + HDCP 输出模式 E_MI_HDMI_OUTPUT_MODE_AUTO 自动模式,根据EDID自动选择 -
相关数据类型及接口
3.8. MI_HDMI_ColorType_e¶
-
说明
定义 HDMI 颜色空间类型。
-
定义
typedef enum { E_MI_HDMI_COLOR_TYPE_RGB444 = 0, E_MI_HDMI_COLOR_TYPE_YCBCR422, E_MI_HDMI_COLOR_TYPE_YCBCR444, E_MI_HDMI_COLOR_TYPE_YCBCR420, E_MI_HDMI_COLOR_TYPE_AUTO, E_MI_HDMI_COLOR_TYPE_MAX } MI_HDMI_ColorType_e; -
成员
表3-8
成员名称 描述 E_MI_HDMI_COLOR_TYPE_RGB444 RGB444 输出模式 E_MI_HDMI_COLOR_TYPE_YCBCR422 YCBCR422 输出模式 E_MI_HDMI_COLOR_TYPE_YCBCR444 YCBCR444 输出模式 E_MI_HDMI_COLOR_TYPE_YCBCR420 YCBCR420 输出模式 E_MI_HDMI_COLOR_TYPE_AUTO 自动模式,根据EDID自动选择 -
相关数据类型及接口
3.9. MI_HDMI_DeepColor_e¶
-
说明
定义 HDMI 深色模式类型。
-
定义
typedef enum { E_MI_HDMI_DEEP_COLOR_24BIT = 0x00, E_MI_HDMI_DEEP_COLOR_30BIT, E_MI_HDMI_DEEP_COLOR_36BIT, E_MI_HDMI_DEEP_COLOR_48BIT, E_MI_HDMI_DEEP_COLOR_MAX, } MI_HDMI_DeepColor_e; -
成员
表3-9
成员名称 描述 E_MI_HDMI_DEEP_COLOR_24BIT HDMI Deep Color 24bit 模式 E_MI_HDMI_DEEP_COLOR_30BIT HDMI Deep Color 30bit 模式 E_MI_HDMI_DEEP_COLOR_36BIT HDMI Deep Color 36bit 模式 E_MI_HDMI_DEEP_COLOR_48BIT HDMI Deep Color 48bit 模式 -
相关数据类型及接口
3.10. MI_HDMI_SampleRate_e¶
-
说明
定义 HDMI 音频输出采样率类型。
-
定义
typedef enum { E_MI_HDMI_AUDIO_SAMPLERATE_UNKNOWN = 0, E_MI_HDMI_AUDIO_SAMPLERATE_32K = 1, E_MI_HDMI_AUDIO_SAMPLERATE_44K = 2, E_MI_HDMI_AUDIO_SAMPLERATE_48K = 3, E_MI_HDMI_AUDIO_SAMPLERATE_88K = 4, E_MI_HDMI_AUDIO_SAMPLERATE_96K = 5, E_MI_HDMI_AUDIO_SAMPLERATE_176K = 6, E_MI_HDMI_AUDIO_SAMPLERATE_192K = 7, E_MI_HDMI_AUDIO_SAMPLERATE_MAX, } MI_HDMI_SampleRate_e; -
注意事项
- 当App在设置采样率的时候,需要匹配Audio模块的采样率,HDMI的采样率需和Audio模块的采样率保持一致。
-
相关数据类型及接口
3.11. MI_HDMI_BitDepth_e¶
-
说明
定义 HDMI 音频输出采样位宽类型。
-
定义
typedef enum { E_MI_HDMI_BIT_DEPTH_8 = 8, E_MI_HDMI_BIT_DEPTH_16 = 16, E_MI_HDMI_BIT_DEPTH_18 = 18, E_MI_HDMI_BIT_DEPTH_20 = 20, E_MI_HDMI_BIT_DEPTH_24 = 24, E_MI_HDMI_BIT_DEPTH_32 = 32, E_MI_HDMI_BIT_DEPTH_MAX }MI_HDMI_BitDepth_e; -
相关数据类型及接口
3.12. MI_HDMI_SinkInfo_t¶
-
说明
定义 HDMI Sink 端能力级结构体。
-
定义
typedef struct MI_HDMI_Sink_Info_s { MI_BOOL bConnected; MI_BOOL bSupportHdmi; MI_HDMI_TimingType_e eNativeTimingType; MI_BOOL abVideoFmtSupported[E_MI_HDMI_TIMING_MAX]; MI_BOOL bSupportYCbCr444; MI_BOOL bSupportYCbCr422; MI_BOOL bSupportYCbCr; MI_BOOL bSupportxvYcc601; MI_BOOL bSupportxvYcc709; MI_U8 u8MdBit; MI_BOOL abAudioFmtSupported[MI_HDMI_MAX_ACAP_CNT]; MI_U32 au32AudioSampleRateSupported[MI_HDMI_MAX_AUDIO_SAMPLE_RATE_CNT]; MI_U32 u32MaxPcmChannels; MI_U8 u8Speaker; MI_U8 au8IdManufactureName[4]; MI_U32 u32IdProductCode; MI_U32 u32IdSerialNumber; MI_U32 u32WeekOfManufacture; MI_U32 u32YearOfManufacture; MI_U8 u8Version; MI_U8 u8Revision; MI_U8 u8EdidExternBlockNum; MI_U8 au8IeeRegId[3];//IEEE registeration identifier MI_U8 u8PhyAddr_A; MI_U8 u8PhyAddr_B; MI_U8 u8PhyAddr_C; MI_U8 u8PhyAddr_D; MI_BOOL bSupportDviDual; MI_BOOL bSupportDeepColorYcbcr444; MI_BOOL bSupportDeepColor30Bit; MI_BOOL bSupportDeepColor36Bit; MI_BOOL bSupportDeepColor48Bit; MI_BOOL bSupportAi; MI_U32 u8MaxTmdsClock; MI_BOOL bILatencyFieldsPresent; MI_BOOL bLatencyFieldsPresent; MI_BOOL bHdmiVideoPresent; MI_U8 u8VideoLatency; MI_U8 u8AudioLatency; MI_U8 u8InterlacedVideoLatency; MI_U8 u8InterlacedAudioLatency; } MI_HDMI_SinkInfo_t; -
成员
表3-10
成员名称 描述 bConnected 设备是否连接 bSupportHdmi 设备是否支持 HDMI,如果不支持,则为 DVI 设备 eNativeTimingType 显示设备物理分辨率。 abVideoFmtSupported 视频能力集。
1:支持这种显示格式;
0:不支持。bSupportYCbCr 是否支持 YCBCR 显示。
1:支持 YCBCR 显示;
0:只支持 RGB 显示。bSupportxvYCC601 是否支持 xvYCC601 颜色格式 bSupportxvYCC709 是否支持 xvYCC709 颜色格式 u8MdBit xvYCC601 支持的传输 profile:
1:P0; 2:P1; 4:P2abAudioFmtSupported 音频能力集,请参考 EIA-CEA-861-D 表 37
1:支持这种显示格式;
0:不支持。u32AudioSampleRateSupported 音频采样率能力集,0 为非法值,其他为支持的音频采样率。 u32MaxPcmChannels 音频最大的 PCM 通道数。 u8Speaker 扬声器位置,请参考 EIA-CEA-861-D 中SpeakerDATABlock 的定义。 u8IDManufactureName 设备厂商标识。 u32IDProductCode 设备 ID u32IDSerialNumber 设备序列号 u32WeekOfManufacture 设备生产日期(周) u32YearOfManufacture 设备生产日期(年) u8Version 设备版本号 u8Revision 设备子版本号 au8EDIDExternBlockNum EDID 扩展块数目 au8IEERegId 24-bit IEEE Registration Identifier (0x000C03)。 u8PhyAddr_A CEC 物理地址 A u8PhyAddr_B CEC 物理地址 B u8PhyAddr_C CEC 物理地址 C u8PhyAddr_D CEC 物理地址 D bSupportDVIDual 是否支持 DVI dual-link 操作。 bSupportDeepColorYCBCR444 是否支持 YCBCR 4:4:4 Deep Color 模式。 bSupportDeepColor36Bit 是否支持 Deep Color 36bit模式 bSupportDeepColor48Bit 是否支持 Deep Color 48bit模式 bSupportAI 是否支持 Supports_AI 模式 u8MaxTMDSClock 最大 TMDS 时钟 bLatencyFieldsPresent 延时标志位 bHDMIVideoPresent Video_Latency 和 Audio_Latency fields 是否存在。 u8VideoLatency 视频延时 u8AudioLatency 音频延时 u8InterlacedVideoLatency 隔行视频模式下的视频延时 u8InterlacedAudioLatency 隔行视频模式下的音频延时 -
相关数据类型及接口
3.13. MI_HDMI_Edid_t¶
-
说明
定义 HDMI EDID 信息结构体
-
定义
typedef struct MI_HDMI_Edid_s { MI_BOOL bEdidValid; MI_U32 u32Edidlength; MI_U8 au8Edid[512]; } MI_HDMI_Edid_t; -
成员
表3-11
成员名称 描述 bEdidValid EDID 信息是否有效 u32Edidlength EDID 信息数据长度,一般为256 Byte au8Edid EDID 原始数据缓冲区 -
相关数据类型及接口
3.14. MI_HDMI_InfoFrameType_e¶
-
说明
定义 HDMI 信息帧类型。
-
定义
typedef enum { E_MI_HDMI_INFOFRAME_TYPE_AVI = 0, E_MI_HDMI_INFOFRAME_TYPE_SPD, E_MI_HDMI_INFOFRAME_TYPE_AUDIO, E_MI_HDMI_INFOFRAME_TYPE_MAX } MI_HDMI_InfoFrameType_e; -
成员
表3-12
成员名称 描述 E_MI_HDMI_INFOFRAME_TYPE_AVI AVI 信息帧类型 E_MI_HDMI_INFOFRAME_TYPE_SPD SPD 信息帧类型 E_MI_HDMI_INFOFRAME_TYPE_AUDIO AUDIO 信息帧类型 -
相关数据类型及接口
3.15. MI_HDMI_AviInfoFrameVer_t¶
-
说明
定义 AVI 信息帧结构体。
-
定义
typedef struct MI_HDMIAviInforFrameVer_s { MI_BOOL bEnableAfdOverWrite; MI_U8 A0Value; MI_HDMI_ColorType_e eColorType; MI_HDMI_Colorimetry_e eColorimetry; MI_HDMI_ExtColorimetry_e eExtColorimetry; MI_HDMI_YccQuantRange_e eYccQuantRange; MI_HDMI_TimingType_e eTimingType; //trans to MS_VIDEO_TIMING in impl MI_HDMI_VideoAfdRatio_e eAfdRatio; MI_HDMI_ScanInfo_e eScanInfo; MI_HDMI_AspectRatio_e eAspectRatio; } MI_HDMI_AviInfoFrameVer_t; -
成员
表3-13
成员名称 描述 eColorType 颜色空间类型 eScanInfo 扫描信息枚举变量 eAspectRatio 幅形比枚举变量 eExtColorimetry 扩展色彩空间矩阵 eTimingType 视频格式类型 eYccQuantRange YCC 色彩空间范围 -
注意事项
- 各成员变量的枚举成员详见 mi_hdmi_datatype.h 文件。
-
相关数据类型及接口
3.16. MI_HDMI_AudInfoFrameVer_t¶
-
说明
定义 AUDIO 信息帧结构体。
-
定义
typedef struct MI_HDMI_AudInfoFrameVer_s { MI_U32 u32ChannelCount; MI_HDMI_AudioCodeType_e eAudioCodeType; MI_HDMI_SampleRate_e eSampleRate; } MI_HDMI_AudInfoFrameVer_t; -
成员
表3-14
成员名称 描述 u32ChannelCount 通道个数。 eAudioCodeType 音频数据编码类型。 eSampleRate 采样频率。
推荐设 0
0:表由码流头决定。
1:32kHz
2:44.1 kHz
3:48 kHz
4:88.2 kHz
5:96 kHz
6:176.4 kHz
7:192 kHz -
相关数据类型及接口
3.17. MI_HDMI_SpdInfoFrame_t¶
-
说明
定义 SPD 信息帧结构体。
-
定义
typedef struct MI_HDMI_SpdInfoFrame_s { MI_U8 au8VendorName[8]; MI_U8 au8ProductDescription[16]; } MI_HDMI_SpdInfoFrame_t; -
成员
表3-15
成员名称 描述 au8VendorName[8] 卖方名称 au8ProductDescription[16] 产品描述符 -
相关数据类型及接口
3.18. MI_HDMI_InfoFrameUnit_u¶
-
说明
定义 HDMI 信息帧联合体。
-
定义
typedef union { MI_HDMI_AviInfoFrameVer_t stAviInfoFrame; MI_HDMI_AudInfoFrameVer_t stAudInfoFrame; MI_HDMI_SpdInfoFrame_t stSpdInfoFrame; } MI_HDMI_InfoFrameUnit_u; -
成员
表3-16
成员名称 描述 stAviInfoFrame AVI 信息帧 stAudInfoFrame AUD 信息帧 stSpdInfoFrame SPD 信息帧 -
相关数据类型及接口
3.19. MI_HDMI_AnalogDrvCurrent_t¶
-
说明
定义 HDMI 通道驱动电流结构体。
-
定义
typedef struct MI_HDMI_AnalogDrvCurrent_s { MI_U8 u8DrvCurTap1Ch0; MI_U8 u8DrvCurTap1Ch1; MI_U8 u8DrvCurTap1Ch2; MI_U8 u8DrvCurTap1Ch3; MI_U8 u8DrvCurTap2Ch0; MI_U8 u8DrvCurTap2Ch1; MI_U8 u8DrvCurTap2Ch2; MI_U8 u8DrvCurTap2Ch3; MI_U8 u8DrvCurPdRtermCh; MI_U8 u8DrvCurPdLdoPreDrvCh; MI_U8 u8DrvCurPdLdoMuxCh; } MI_HDMI_AnalogDrvCurrent_t; -
成员
表3-17
成员名称 描述 u8DrvCurTap1Ch0 Tap1 通道0驱动电流配置 u8DrvCurTap1Ch1 Tap1 通道1驱动电流配置 u8DrvCurTap1Ch2 Tap1 通道2驱动电流配置 u8DrvCurTap1Ch3 Tap1 通道3驱动电流配置 u8DrvCurTap2Ch0 Tap2 通道0驱动电流配置 u8DrvCurTap2Ch1 Tap2 通道1驱动电流配置 u8DrvCurTap2Ch2 Tap2 通道2驱动电流配置 u8DrvCurTap2Ch3 Tap2 通道3驱动电流配置 u8DrvCurPdRtermCh 50ohm 阻抗匹配,关掉信号质量会变差,默认开启 u8DrvCurPdLdoPreDrvCh PreDriver LDO 电源,关掉后会没有信号,默认开启 u8DrvCurPdLdoMuxCh Mux LDO 电源,关掉后会没有信号,默认开启 -
相关数据类型及接口
4. 错误码¶
表4-1 HDMI API 错误码
| 错误代码 | 宏定义 | 描述 |
|---|---|---|
| 0xA00B1003 | MI_ERR_HDMI_INVALID_PARAM | 非法参数 |
| 0xA00B2001 | MI_ERR_HDMI_INVALID_DEVID | 无效设备ID |
| 0xA00B101F | MI_ERR_HDMI_DRV_FAILED | HDMI驱动返回失败 |
| 0xA00B2015 | MI_ERR_HDMI_NOT_INIT | HDMI 未初始化 |
| 0xA00B2008 | MI_ERR_HDMI_NOT_SUPPORT | 不支持操作 |
| 0xA00B11E0 | MI_ERR_HDMI_UNSUPPORT_TIMING | 不支持输出timing |
| 0xA00B11E1 | MI_ERR_HDMI_UNSUPPORT_COLORTYPE | 不支持颜色类型 |
| 0xA00B11E4 | MI_ERR_HDMI_UNSUPPORT_ACODETYPE | 不支持的音频编码类型 |
| 0xA00B11E5 | MI_ERR_HDMI_UNSUPPORT_AFREQ | 不支持的音频频率 |
| 0xA00B11E6 | MI_ERR_HDMI_EDID_HEADER_ERR | EDID头信息解析失败 |
| 0xA00B11E7 | MI_ERR_HDMI_EDID_DATA_ERR | EDID数据错误 |
| 0xA00B11E8 | MI_ERR_HDMI_EDID_PRASE_ERR | EDID解析错误 |
5. PROCFS介绍¶
5.1. cat¶
-
调试信息
# cat /proc/mi_modules/mi_hdmi/mi_hdmi0 --------------------------------------- HDMI0 Dev Info ------------------------------------- Hdmi Module swVerion = 0x210 InitFlag bHdmiTxRuning PowerOnOff bSignalOnOff IsbAvMute bAvOnOff Init Open On On UnMute Off EnableVideo TimingType OutputMode InColor OutColor DeepColorMode Enable 4k2k@30 HDMI RGB444 RGB444 24Bit EnableAudio IsMultiChannel BitDepth CodeType SampleRate Disable No 16Bit PCM 48K bEnableAviInfoFrame bEnableAudInfoFrame bEnableSpdInfoFrame true true true -
调试信息分析
记录当前HDMI的使用状况以及device属性可以动态地获取到这些信息,方便调试和测试。
-
参数说明
参数 描述 device info swVerion HDMI模块软件版本号 InitFlag HDMI模块是否初始化
Init:已初始化
UnInit:未初始化bHdmiTxRuning HDMI TX是否运行
Open:已打开
Close:已关闭PowerOnOff HDMI电源是否开启
On:开启
Off:关闭bSignalOnOff HDMI信号是否输出
On:输出
Off:关闭IsbAvMute 音视频是否处于MUTE状态
UnMute:未被MUTE
Mute:被MUTEbAvOnOff AV输出开关
On:开启
Off:关闭EnableVideo 是否使能视频
Enable:已使能
Disable:未使能TimingType 当前HDMI的输出分辨率,显示为分辨率描述字符串,如 4k2k@30 OutputMode HDMI输出模式
HDMI:HDMI模式
DVI:DVI模式
HDMI_HDCP / DVI_HDCP:HDCP模式
AUTO:自动模式InColor HDMI输入颜色空间,如 RGB444 / YUV422 / YUV444 / YUV420 / AUTO OutColor HDMI输出颜色空间,如 RGB444 / YUV422 / YUV444 / YUV420 / AUTO DeepColorMode 色彩位深
24Bit:对应 E_MI_HDMI_DEEP_COLOR_24BIT
30Bit:对应 E_MI_HDMI_DEEP_COLOR_30BIT
36Bit:对应 E_MI_HDMI_DEEP_COLOR_36BIT
48Bit:对应 E_MI_HDMI_DEEP_COLOR_48BITEnableAudio 是否使能音频
Enable:已使能
Disable:未使能IsMultiChannel 是否多通道
No:2声道
Yes:8声道audio info BitDepth 音频采样位深,如 8Bit / 16Bit / 18Bit / 20Bit / 24Bit / 32Bit CodeType 音频输出的压缩格式
PCM:PCM
NON_PCM:非PCMSampleRate 音频输出采样率,如 32K / 44K / 48K / 88K / 96K / 176K / 192K infoframe bEnableAviInfoFrame 是否使能AVI InfoFrame
true:使能
false:未使能bEnableAudInfoFrame 是否使能AUDIO InfoFrame
true:使能
false:未使能bEnableSpdInfoFrame 是否使能SPD InfoFrame
true:使能
false:未使能