跳转至

MI HDMI API


REVISION HISTORY

Revision No.
Description
Date
2.03
  • Initial release
  • 04/12/2018
    2.04
  • Added MI_HDMI_SetAnalogDrvCurrent
  • 06/12/2019
    2.05
  • Revised the Doc and Summary Section
  • 01/12/2020
    2.06
  • Added new API: MI_Hdmi_InitDev, MI_Hdmi_DeInitDev
  • 04/26/2020
    2.07
  • Modified chip’s name
  • 08/04/2020
    2.08
  • Added new timing type: E_MI_HDMI_TIMING_1920x1080_5994P, E_MI_HDMI_TIMING_1920x1080_2997P, E_MI_HDMI_TIMING_1280x720_5994P
  • 04/22/2021
    2.09
  • Added new timing type: E_MI_HDMI_TIMING_1280x720_2997P
  • 05/17/2021
    2.10
  • Added new timing type: E_MI_HDMI_TIMING_3840x2160_2997P
  • 08/05/2021
  • Added PROCFS introduction
  • 08/25/2021
    2.11
  • Added new timing type: E_MI_HDMI_TIMING_800x600_60P
  • 09/16/2021
    2.12
  • Added new timing type: E_MI_HDMI_TIMING_1280x720_24P, E_MI_HDMI_TIMING_1280x720_25P, E_MI_HDMI_TIMING_1280x720_30P, E_MI_HDMI_TIMING_1920x1080_2398P, E_MI_HDMI_TIMING_640x480_60P, E_MI_HDMI_TIMING_848x480_60P, E_MI_HDMI_TIMING_1280x768_60P, E_MI_HDMI_TIMING_1280x960_60P, E_MI_HDMI_TIMING_1360x768_60P, E_MI_HDMI_TIMING_1400x1050_60P, E_MI_HDMI_TIMING_1600x900_60P, E_MI_HDMI_TIMING_1920x1200_60P, E_MI_HDMI_TIMING_1920x1440_60P, E_MI_HDMI_TIMING_2560x1600_60P
  • 11/29/2021
    2.13
  • Added Enum: E_MI_HDMI_COLOR_TYPE_AUTO, E_MI_HDMI_OUTPUT_MODE_AUTO
  • 02/26/2022
    2.14
  • Added scanning mode information.
  • 06/10/2022
    2.15
  • Added ibopper information.
  • 08/09/2024
    2.16
  • Refine doc.
  • 05/19/2025
    2.17
  • Added mhera information.
  • 10/30/2025
    2.18
  • Fixed multiple API/parameter/error code/PROCFS description errors, added missing resolution entries, updated image file names, simplified compilation configuration section
  • 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 列表

    接口调用分以下几步:

    1. 初始化hdmi模块。并注册热插拔事件,主要是回调插、拔线缆事件给App

    2. 打开hdmi

    3. 获取rx sink设备如显示器或电视的edid

    4. 根据sink 支持的timing进行配置

    5. 启动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();
      
    • 相关主题

      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 的举例。

    • 相关主题

      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 的举例。

    • 相关主题

      MI_HDMI_Close


    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的举例。

    • 相关主题

      MI_HDMI_Open


    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);
      
    • 相关主题

      MI_HDMI_GetAttr


    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举例。

    • 相关主题

      MI_HDMI_SetAttr


    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

    • 注意

    • 举例

      请参见 MI_HDMI_Init举例。

    • 相关主题

      MI_HDMI_Stop


    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

    • 相关主题

      MI_HDMI_Start


    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。

      • 该接口暂未实现。

    • 相关主题

      MI_HDMI_SetDeepColor


    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。

      • 本接口只支持设置 AVISPDAUDIO 信息帧,其他类型的信息帧设置无效。

    • 举例

      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);
      
    • 相关主题

      MI_HDMI_GetInfoFrame


    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 回调函数参数私有数据
    • 相关数据类型及接口

      MI_HDMI_Init


    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 断开连接事件
    • 相关数据类型及接口

      MI_HDMI_Init


    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_48BIT
      stUserTiming 自定义分辨率如宽/高/帧率,须与disp timing保持一致
      bEnableAudio 是否使能音频
      bIsMultiChannel 多声道数
      0:2声道;
      1:8 声道。/目前不支持
      eSampleRate 音频采样率,此参数需要与 AO 的配置保持一致
      eBitDepth 音频位宽,默认为 16,此参数需要与 AO 的配置保持一致
      bEnableAviInfoFrame 是否使能 AVI InfoFrame
      建议使能
      bEnableAudInfoFrame 是否使能 AUDIO InfoFrame
      建议使能
      bEnableSpdInfoFrame 是否使能 SPD InfoFrame
    • 注意事项

      • 用户可以根据建议值设置 HDMI 属性
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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保持一致。

    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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自动选择
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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自动选择
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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 模式
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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模块的采样率保持一致。
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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;
      
    • 相关数据类型及接口

      MI_HDMI_SetAttr


    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:P2
      abAudioFmtSupported 音频能力集,请参考 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 隔行视频模式下的音频延时
    • 相关数据类型及接口

      MI_HDMI_GetSinkInfo


    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 原始数据缓冲区
    • 相关数据类型及接口

      MI_HDMI_ForceGetEdid


    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 信息帧类型
    • 相关数据类型及接口

      MI_HDMI_DeInit

      MI_HDMI_SetInfoFrame


    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 文件。
    • 相关数据类型及接口

      MI_HDMI_SetInfoFrame

      MI_HDMI_GetInfoFrame


    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
    • 相关数据类型及接口

      MI_HDMI_SetInfoFrame

      MI_HDMI_GetInfoFrame


    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] 产品描述符
    • 相关数据类型及接口

      MI_HDMI_SetInfoFrame

      MI_HDMI_GetInfoFrame


    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 信息帧
    • 相关数据类型及接口

      MI_HDMI_SetInfoFrame

      MI_HDMI_GetInfoFrame


    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 电源,关掉后会没有信号,默认开启
    • 相关数据类型及接口

      MI_HDMI_SetAnalogDrvCurrent


    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:被MUTE
      bAvOnOff 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_48BIT
      EnableAudio 是否使能音频
      Enable:已使能
      Disable:未使能
      IsMultiChannel 是否多通道
      No:2声道
      Yes:8声道
      audio info BitDepth 音频采样位深,如 8Bit / 16Bit / 18Bit / 20Bit / 24Bit / 32Bit
      CodeType 音频输出的压缩格式
      PCM:PCM
      NON_PCM:非PCM
      SampleRate 音频输出采样率,如 32K / 44K / 48K / 88K / 96K / 176K / 192K
      infoframe bEnableAviInfoFrame 是否使能AVI InfoFrame
      true:使能
      false:未使能
      bEnableAudInfoFrame 是否使能AUDIO InfoFrame
      true:使能
      false:未使能
      bEnableSpdInfoFrame 是否使能SPD InfoFrame
      true:使能
      false:未使能