前言

概述

解决方案的内置HDMI(High-Definition MultiMedia Interface)模块支持视频的HDMI输出。

说明: 本文未有特殊说明,SS625V100、SS522V101、SS522V100与SS524V100完全一致;SS927V100与SS928V100内容完全一致。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

SS928

V100

SS626

V100

SS524

V100

SS522

V100

SS522

V101

SS528

V100

SS625

V100

SS927

V100

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师

  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2025-09-15

第1次临时版本发布。

概述

重要概念

HDMI的音频不能单独输出,必须依赖于视频输出,且HDMI的时钟来源于VO的时钟,因此接口调用顺序上需要先使能VO,再调用HDMI接口,然后配置音视频输出。

规格说明

文档中未特别注明为HDMI2.0规格,默认只支持HDMI1.4规格的产品。

须知: 所有解决方案采用是同一套API接口,但只支持HDMI1.4 API接口的解决方案,不支持HDMI2.0相关参数。

解决方案HDMI规格说明,如表1所示。未明确列出的规格表示不支持。

表 1 解决方案HDMI规格说明

产品名称

HDMI规格

SS528V100

HDMI2.0

SS625V100

HDMI1.4

SS524V100

HDMI1.4

SS522V101

HDMI1.4

SS928V100

HDMI2.0

SS626V100

双路HDMI2.0

API参考

该功能模块提供以下MPI。

  • ss_mpi_hdmi_init:初始化HDMI。

  • ss_mpi_hdmi_deinit:去初始化HDMI。

  • ss_mpi_hdmi_open:打开HDMI。

  • ss_mpi_hdmi_close:关闭HDMI。

  • ss_mpi_hdmi_set_attr:设置HDMI属性。

  • ss_mpi_hdmi_get_attr:获取HDMI属性。

  • ss_mpi_hdmi_start:启动HDMI输出。

  • ss_mpi_hdmi_stop:停止HDMI输出。

  • ss_mpi_hdmi_get_sink_capability:获取HDMI Sink端的能力集。

  • ss_mpi_hdmi_force_get_edid:获取HDMI的EDID原始数据。

  • ss_mpi_hdmi_register_callback:注册事件回调函数

  • ss_mpi_hdmi_unregister_callback:撤销事件回调函数

  • ss_mpi_hdmi_set_infoframe:设置信息帧。

  • ss_mpi_hdmi_get_infoframe:获取信息帧。

  • ss_mpi_hdmi_set_hw_spec:设置指标参数。

  • ss_mpi_hdmi_get_hw_spec:获取指标参数。

  • ss_mpi_hdmi_set_avmute:设置AVMUTE。

  • ss_mpi_hdmi_set_mod_param: HDMI模块参数设置。

  • ss_mpi_hdmi_get_mod_param: 获取HDMI模块参数。

ss_mpi_hdmi_init

【描述】

初始化HDMI。

【语法】

td_s32 ss_mpi_hdmi_init(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

【举例】

注意:举例时未检查API返回值,建议用户使用时请检查返回值做相应处理,下同。

ot_hdmi_attr      st_attr;
 
/* 初始化HDMI */
ss_mpi_hdmi_init();
/* 打开HDMI */
ss_mpi_hdmi_open(OT_HDMI_ID_0);
/* 获取HDMI属性 */
ss_mpi_hdmi_get_attr(OT_HDMI_ID_0, &st_attr);
/* 设置HDMI属性 */
st_attr. enable_hdmi = TD_TRUE;
st_attr. video_format = OT_HDMI_VIDEO_FORMAT_720P_60;
st_attr. deep_color_mode = OT_HDMI_DEEP_COLOR_OFF;
st_attr. enable_audio = TD_TRUE;
st_attr. sample_rate  = OT_HDMI_SAMPLE_RATE_48K;
st_attr. bit_depth = OT_HDMI_BIT_DEPTH_16;
ss_mpi_hdmi_set_attr(OT_HDMI_ID_0, &st_attr);
/* 启动HDMI */
ss_mpi_hdmi_start(OT_HDMI_ID_0);
 
/*以下,为使用结束后退出流程*/
/* 停止HDMI */
ss_mpi_hdmi_stop(OT_HDMI_ID_0);
/* 关闭HDMI */
ss_mpi_hdmi_close(OT_HDMI_ID_0);
/* 去初始化HDMI */
ss_mpi_hdmi_deinit();

【相关主题】

ss_mpi_hdmi_deinit

ss_mpi_hdmi_deinit

【描述】

去初始化HDMI。

【语法】

td_s32 ss_mpi_hdmi_deinit(td_void);

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 若已初始化成功,程序出现异常需要退出时需要调用此接口。

  • 未初始化就去初始化或重复去初始化返回成功。

【举例】

请参见ss_mpi_hdmi_init和ss_mpi_hdmi_register_callback的举例。

【相关主题】

无。

ss_mpi_hdmi_open

【描述】

打开HDMI。

【语法】

td_s32 ss_mpi_hdmi_open(ot_hdmi_id hdmi);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0。参见ot_hdmi_id保留将来扩展多个HDMI设备支持,下同。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • ss_mpi_hdmi_open之前须确保HDMI已被初始化,否则将返回OT_ERR_HDMI_NOT_INIT。

  • 重复打开HDMI返回成功。

  • 调用该接口时,如果处于未接入hdmi线的状态下,该接口调度耗时相对较长(正常1~3s)。如果是正常接hdmi线且sink端状态正常,该接口耗时为1s左右。

【举例】

请参见ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_close

ss_mpi_hdmi_close

【描述】

关闭HDMI。

【语法】

td_s32 ss_mpi_hdmi_close(ot_hdmi_id hdmi);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • HDMI open成功之后,若应用发生异常,需要退出,需要调用此接口及ss_mpi_hdmi_deinit释放HDMI资源。

【举例】

请参见ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_open

ss_mpi_hdmi_set_attr

【描述】

设置HDMI属性。

【语法】

td_s32 ss_mpi_hdmi_set_attr(ot_hdmi_id hdmi, const ot_hdmi_attr *attr);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

attr

HDMI属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 用户需在启动之前设置HDMI属性;若HDMI已启动,则应先停止HDMI,设置属性后再重新启动。不遵循该流程使用的行为是未定义的。

  • 部分属性SSxx中暂时不支持,见数据类型ot_hdmi_attr说明。

  • 若只设置部分属性,设置前应先获取属性,赋值该部分属性后再设置。

  • 部分显示设备的EDID可能不够准确,如有的显示设备具备显示4kP60的能力,但其EDID中申明并不支持4kP60和SCDC,此时调用此接口设置4kP60输出时,为了避免引入兼容性问题,HDMI驱动不会强制设置4kP60输出,电视不会正常显示(串口会有如下提示:sink is not support scdc)。针对类似情况,若确定显示设备支持4kP60,可将接口参数中auth_mode设置为TD_TRUE,HDMI驱动将强制按照4kP60输出。但存在引入各种兼容性问题的风险,如电视花屏、闪屏,甚至死机等。

  • SS625V100、SS524V100、SS522V101只支持到HDMI1.4,属性中的video_format取值最大只能到OT_HDMI_VIDEO_FORMAT_3840X2160P_30。

  • 此接口为同步接口,在调用过程中,驱动可能会通过SCDC与显示设备交互,此过程耗时较长(正常约3~5s)。

  • 设置属性前应用必须参考对端能力,特殊情况如对端不支持HDMI时必须先调用VDP的mpi接口ss_mpi_vo_set_hdmi_param将HDMI的color space设置成RGB,然后再通过本接口将模式设置成DVI模式,否则驱动会有错误打印。

  • 关于VDP的ss_mpi_vo_set_hdmi_param,使用时需要先调用HDMI的ss_mpi_hdmi_stop接口将HDMI的信号关断然后再调用,设置完成后需再调用HDMI的ss_mpi_hdmi_start接口打开信号输出。

  • 在调用此接口前一定要先调用ss_mpi_hdmi_get_sink_capability接口获取对端的能力然后合理的配置属性,特别的情况如对端不支持HDMI时需要先调用VO的ss_mpi_vo_set_hdmi_param接口将颜色空间配置成RGB,然后才能调用此接口来配置HDMI的其他属性,否则驱动会有报错。

  • 有开机画面且非平滑过渡的场景下,应用上电后第一次设置属性前一定要先调用一次ss_mpi_hdmi_stop,否则可能会导致兼容性问题。

备注:当auth_mode设置为TD_TRUE时驱动会强制SCDC操作,若显示设备不支持或不插HDMI线,此接口耗时可能更长。

【举例】

请参见ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_get_attr

ss_mpi_hdmi_get_attr

【描述】

获取HDMI属性。

【语法】

td_s32 ss_mpi_hdmi_get_attr(ot_hdmi_id hdmi, ot_hdmi_attr *attr);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

attr

HDMI属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 若只设置部分属性,设置前应先获取属性,赋值需要修改的属性后再设置。

【举例】

请参见ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_set_attr

ss_mpi_hdmi_start

【描述】

启动HDMI输出。

【语法】

td_s32 ss_mpi_hdmi_start(ot_hdmi_id hdmi);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 调用该接口时输出4K60且sink端能力支持,此时该接口耗时会在1s左右。如果输出4K30及以下分辨率,该接口耗时会在1s以内。

【举例】

请参见ss_mpi_hdmi_init和ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_stop

ss_mpi_hdmi_stop

【描述】

停止HDMI输出。

【语法】

td_s32 ss_mpi_hdmi_stop(ot_hdmi_id hdmi);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

【举例】

请参见ss_mpi_hdmi_register_callback的举例。

【相关主题】

ss_mpi_hdmi_get_sink_capability

【描述】

获取HDMI Sink端的能力集。

【语法】

td_s32 ss_mpi_hdmi_get_sink_capability(ot_hdmi_id hdmi, ot_hdmi_sink_capability *capability);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

capability

HDMI Sink端能力集结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 应在HDMI启动且插入线缆之后调用。

  • 驱动会在应用调用ss_mpi_hdmi_open后读取显示设备的EDID,读取和解析过程需要一定时间。因此,若应用注册HDMI事件回调,则建议在检测到插入事件后调用;若应用不注册回调,则在open HDMI后延时1~2秒再调用此接口(若不延时,则可能出现获取失败)。

【举例】

ot_hdmi_edid st_edid_data;
ot_hdmi_sink_capability st_sink_cap;
/* 初始化HDMI */
ss_mpi_hdmi_init();
/* 打开HDMI */
ss_mpi_hdmi_open(OT_HDMI_ID_0);
/*设置属性*/
/* 启动HDMI */
ss_mpi_hdmi_start(OT_HDMI_ID_0);
sleep(2);
/* 获取EDID */
ss_mpi_hdmi_force_get_edid(OT_HDMI_ID_0, &st_edid_data);
/*获取能力集合*/
ss_mpi_hdmi_get_sink_capability(OT_HDMI_ID_0, &st_sink_cap);

【相关主题】

ss_mpi_hdmi_force_get_edid

ss_mpi_hdmi_force_get_edid

【描述】

获取HDMI的EDID原始数据。

【语法】

td_s32 ss_mpi_hdmi_force_get_edid(ot_hdmi_id hdmi, ot_hdmi_edid *edid_data);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

edid_data

HDMI的EDID信息。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • HDMI内部在线缆插入后已从Sink获取EDID。该API为强制获取EDID,一般情况下不需使用。

【举例】

请参见ss_mpi_hdmi_get_sink_capability。

【相关主题】

ss_mpi_hdmi_get_sink_capability

ss_mpi_hdmi_register_callback

【描述】

注册HDMI事件回调函数。

【语法】

td_s32 ss_mpi_hdmi_register_callback(ot_hdmi_id hdmi, const ot_hdmi_callback_func *callback_func);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

callback_func

HDMI 回调函数结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 建议用户注册HDMI事件回调函数。例如,当产生热插拔事件时,可以通过注册的回调函数读取热插拔后产生的能力集信息为依据更改HDMI的属性,然后重新启动HDMI,使HDMI的属性适配新插入的对端显示器/电视。若用户不注册事件回调函数,则当事件产生时,HDMI内部会采取默认的处理方式。

  • 若用户注册了事件回调函数,则退出HDMI前应调用ss_mpi_hdmi_unregister_callback注销该回调函数,否则会有内存泄漏的问题。

  • 若用户没有注册回调函数,则驱动报的事件会走内核回调处理。

  • 内核事件回调函数只在用户start HDMI之后才能正常响应拔插事件。

  • 内核回调函数中若事件为HPD事件驱动会自动start HMDI,若事件为UNHPD事件驱动会自动stop HDMI。

  • 重复注册同一回调函数与参数将返回OT_ERR_HDMI_CALLBACK_ALREADY。

  • 建议用户最多同时注册10个不同的回调函数,注册超过10个的回调函数将会影响之前注册的回调函数使用。

  • 若同时注册了多个不同的事件回调函数,当一个事件产生时,HDMI会按事件回调函数注册先后顺序,遍历事件池,响应用户注册的回调函数。

【举例】

#define HDMI_PRINT       printf("[HDMI]%s[%d]:\t",__func__,__LINE__);printf
#define HDMI_CHK_FAILURE_NORET(s32_ret) do{\
   if(s32_ret!=TD_SUCCESS)\
   {\
      HDMI_PRINT("s32_ret=%d is not expected TD_SUCCESS!\n",s32_ret);\
   }\
}while(0);
#define HDMI_CHK_FAILURE_RET(s32_ret) do{\
   if(s32_ret!=TD_SUCCESS)\
   {\
      HDMI_PRINT("s32_ret=%d is not expected TD_SUCCESS!\n",s32_ret);\
      return TD_FAILURE;\
   }\
}while(0);
#define HDMI_CHK_FAILURE_GOTO(res,lable) do{\
   if(TD_FAILURE==res)\
   {HDMI_PRINT("return failure!\n");goto lable;}\
}while(0);
typedef struct hdmi_args_s
{
   OT_HDMI_ID_E          en_hdmi;
   OT_HDMI_VIDEO_FORMAT_E e_force_format;
}hdmi_args_s;
static ot_s32 hdmi_unplug_proc(TD_VOID *p_private_data)
{
   ot_s32          s32_ret = TD_SUCCESS;
   hdmi_args_s     *p_args  = (hdmi_args_s *)p_private_data;
   ot_hdmi_id    h_hdmi   =  p_args->en_hdmi;
   HDMI_PRINT("\n --- unplug event handling. --- \n");
   s32_ret = ss_mpi_hdmi_stop(h_hdmi);
   HDMI_CHK_FAILURE_RET(s32_ret);
   return s32_ret;
}
static  ot_s32 hdmi_hot_plug_proc(TD_VOID *p_private_data)
{
   ot_s32                    s32_ret = TD_SUCCESS;
   hdmi_args_s    *p_args  = (hdmi_args_s *)p_private_data;
   ot_hdmi_id                h_hdmi   =  p_args->en_hdmi;
   ot_hdmi_attr              st_hdmi_attr;
   ot_hdmi_sink_capability   st_sink_cap;
   HDMI_PRINT("\n --- hotplug event handling --- \n");
   s32_ret = ss_mpi_hdmi_get_attr (h_hdmi, &st_hdmi_attr);
   HDMI_CHK_FAILURE_RET(s32_ret);
   s32_ret = ss_mpi_hdmi_get_sink_capability (h_hdmi, &st_sink_cap);
   HDMI_CHK_FAILURE_RET(s32_ret);
   if (TD_FALSE == st_sink_cap.connected )
   {
      HDMI_PRINT("st_sink_cap.connected is TD_FALSE!\n");
      return TD_FAILURE;
   }
   if(TD_TRUE == st_sink_cap.support_hdmi)
   {
      st_hdmi_attr.enable_hdmi = TD_TRUE;
   }
   else
   {
      st_hdmi_attr.enable_hdmi = TD_FALSE;
   }
   if(TD_TRUE == st_hdmi_attr.enable_hdmi)
   {
       st_hdmi_attr.enable_hdmi = TD_TRUE;
       st_hdmi_attr.deep_color_mode = OT_HDMI_DEEP_COLOR_OFF;
       st_hdmi_attr.enable_audio = TD_TRUE;
       st_hdmi_attr.bit_depth = OT_HDMI_BIT_DEPTH_16;
   }
   else
   {
      st_hdmi_attr.enable_hdmi = TD_FALSE;
      st_hdmi_attr.enable_audio = TD_FALSE;
   }
   if (p_args->e_force_format >= OT_HDMI_VIDEO_FORMAT_1080P_60
       &&   p_args->e_force_format < OT_HDMI_VIDEO_FORMAT_BUTT 
       &&   st_sink_cap.video_format_supported[p_args->e_force_format] )
   {
        HDMI_PRINT("set force format=%d\n",p_args->e_force_format);
        st_hdmi_attr.video_format = p_args->e_force_format;
   }
   else 
   {
        HDMI_PRINT("not support expected format=%d, we set native format=%d\n",p_args->e_force_format,st_sink_cap. native_video_format);
        st_hdmi_attr. video_format= st_sink_cap. native_video_format;
   }
         
   s32_ret = ss_mpi_hdmi_set_attr (h_hdmi, &st_hdmi_attr);
   HDMI_CHK_FAILURE_RET(s32_ret);
 
   /* ss_mpi_hdmi_set_attr must before ss_mpi_hdmi_start! */
   s32_ret = ss_mpi_hdmi_start(h_hdmi);
   HDMI_CHK_FAILURE_RET(s32_ret);
   return s32_ret;
}
 
TD_VOID hdmi_event_proc(ot_hdmi_event_type event, TD_VOID *p_private_data)
{
    switch (event)
    {
     case OT_HDMI_EVENT_HOTPLUG:
        hdmi_hot_plug_proc(p_private_data);
        break;
     case OT_HDMI_EVENT_NO_PLUG:
        hdmi_unplug_proc(p_private_data);
        break;
     case OT_HDMI_EVENT_EDID_FAIL:
        break;
     default:
        HDMI_PRINT("un-known event:%d\n",event);
        return;
    }
    return;
}
ot_hdmi_callback_func g_st_callback_func;
hdmi_args_s g_st_hdmi_args;
/* 初始化HDMI流程 */
 ot_s32 ss_adp_hdmi_init(ot_hdmi_id en_hdmi_id, OT_HDMI_VIDEO_FORMAT_E e_force_format)
{
   ot_s32 s32_ret = TD_FAILURE;
   s32_ret = ss_mpi_hdmi_init();
   HDMI_CHK_FAILURE_RET(s32_ret);
 
   g_st_hdmi_args.en_hdmi                 = en_hdmi_id;
   g_st_hdmi_args.e_force_format          = e_force_format;
 
   g_st_callback_func.pfn_hdmi_event_callback = hdmi_event_proc;
   g_st_callback_func.private_data = &g_st_hdmi_args;
   s32_ret = ss_mpi_hdmi_open(g_st_hdmi_args.en_hdmi);
   HDMI_CHK_FAILURE_GOTO(s32_ret, ERROR2);
   s32_ret = ss_mpi_hdmi_register_callback(g_st_hdmi_args.en_hdmi, &g_st_callback_func);
   HDMI_CHK_FAILURE_GOTO(s32_ret, ERROR1);
   return TD_SUCCESS;
 
   ERROR1:
   s32_ret |= ss_mpi_hdmi_close(g_st_hdmi_args.en_hdmi);
 
   ERROR2:
   s32_ret |= ss_mpi_hdmi_deinit();
   return s32_ret;
}
 
/* 退出HDMI流程 */
 ot_s32 ss_adp_hdmi_deinit(ot_hdmi_id en_hdmi_id)
{
   ot_s32 s32_ret = TD_FAILURE;
   s32_ret = ss_mpi_hdmi_stop(en_hdmi_id);
   HDMI_CHK_FAILURE_NORET(s32_ret);
   g_st_hdmi_args.en_hdmi= en_hdmi_id;
   g_st_callback_func.pfn_hdmi_event_callback = hdmi_event_proc;
   g_st_callback_func.private_data = &g_st_hdmi_args;
   s32_ret = ss_mpi_hdmi_unregister_callback(en_hdmi_id, &g_st_callback_func);
   HDMI_CHK_FAILURE_NORET(s32_ret);
   s32_ret = ss_mpi_hdmi_close(en_hdmi_id);
   HDMI_CHK_FAILURE_NORET(s32_ret);
   s32_ret = ss_mpi_hdmi_deinit();
   HDMI_CHK_FAILURE_NORET(s32_ret);
   return s32_ret;
}

【相关主题】

ss_mpi_hdmi_unregister_callback

ss_mpi_hdmi_unregister_callback

【描述】

撤销HDMI事件回调函数。

【语法】

td_s32 ss_mpi_hdmi_unregister_callback(ot_hdmi_id hdmi, const ot_hdmi_callback_func *callback_func);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

callback_func

HDMI 回调函数结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 若用户注册了回调函数,则退出HDMI前,应使用撤销HDMI事件回调函数。

  • 重复撤销或未注册就撤销将返回OT_ERR_HDMI_CALLBACK_NOT_REGISTER。

【举例】

见ss_mpi_hdmi_register_callback。

【相关主题】

ss_mpi_hdmi_register_callback

ss_mpi_hdmi_set_infoframe

【描述】

设置信息帧。

【语法】

td_s32 ss_mpi_hdmi_set_infoframe(ot_hdmi_id hdmi, const ot_hdmi_infoframe *infoframe);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

infoframe

HDMI信息帧结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 该接口属于高级接口,一般不需要调用。若用户使用,则应根据已设置的音视频相关属性(如enVideoFORMAT),及遵从《High-Definition Multimedia Interface Specification Version 1.4b》、《High-Definition Multimedia Interface Specification Version 2.0》、《CEA-861-D》与《CEA-861-F》标准基础上设置信息帧,不依据音视频属性遵从标准发送信息帧的行为是未定义的。调用此接口,可能会造成显示异常。

【举例】

ot_hdmi_infoframe st_infoframe;
/* 初始化HDMI */
ss_mpi_hdmi_init ();
/* 打开HDMI */
ss_mpi_hdmi_open (OT_HDMI_ID_0);
/* 设置属性 */
/* 启动HDMI */
ss_mpi_hdmi_start (OT_HDMI_ID_0);
/*设置AVI的有效宽高比*/
ss_mpi_hdmi_get_infoframe(OT_HDMI_ID_0, OT_INFOFRAME_TYPE_AVI, &st_infoframe);
st_infoframe.infoframe_type = OT_INFOFRAME_TYPE_AVI;
st_infoframe.infor_unit.avi_infoframe.active_aspect_ratio = OT_HDMI_PIC_ASP_RATIO_16TO9;
ss_mpi_hdmi_set_infoframe(OT_HDMI_ID_0, &st_infoframe);

【相关主题】

ss_mpi_hdmi_get_infoframe

ss_mpi_hdmi_get_infoframe

【描述】

获取信息帧。

【语法】

td_s32 ss_mpi_hdmi_get_infoframe(ot_hdmi_id hdmi, ot_hdmi_infoframe_type infoframe_type, ot_hdmi_infoframe *infoframe);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

infoframe_type

信息帧类型。

输入

infoframe

HDMI信息帧结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 该接口属于高级接口,一般不需要调用。

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 调用前须确保单板上电后己调用过ss_mpi_hdmi_set_attr,否则通过此接口获取到的部分参数可能是非法值。

【举例】

请参考ss_mpi_hdmi_set_infoframe

【相关主题】

ss_mpi_hdmi_set_infoframe

ss_mpi_hdmi_set_hw_spec

【描述】

设置HDMI指标参数。

【语法】

td_s32 ss_mpi_hdmi_set_hw_spec(ot_hdmi_id hdmi, const ot_hdmi_hw_spec *hw_spec);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

hw_spec

HDMI指标参数结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 正常情况请勿使用该接口。若必要情况下需要设置HDMI硬件指标参数,请务必确保参数设置后HDMI电气特性符合协议标准,否则可能出现不可预知的兼容性问题。

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 若需要设置HDMI硬件指标参数,请务必在调用ss_mpi_hdmi_set_attr后调用此接口。

  • 调用此接口前请务必先调用ss_mpi_hdmi_get_hw_spec获取当前所有频段的指标参数。根据实际需求调整对应频段的具体参数(参考ot_hdmi_hw_spec)。

  • 根据不同分辨率,色深(Deep Color)以及颜色空间(Color Space)可划分为四个频段,如表1所示。

调用该接口调试硬件指标时,分辨率,色深以及颜色空间必须按下表设置,其中[25M, 100M]TMDS时钟频段需要下表两种配置都要调试。同时必须将ot_hdmi_attr成员auth_mode_en设置成TD_TRUE。若调试结束后,正常使用该接口设置指标参数时,请必须将ot_hdmi_attr成员auth_mode_en设置成TD_FALSE。

表 1 色深(Deep Color)以及颜色空间(Color Space)频段表

TMDS时钟频段

分辨率(video_format)

色深(deep_color_mode)

颜色空间(enVidOutMode)

[25M, 100M]

OT_HDMI_VIDEO_FORMAT_480P_60

OT_HDMI_DEEP_COLOR_24BIT

OT_HDMI_VIDEO_MODE_RGB444

OT_HDMI_VIDEO_FORMAT_1080P_30

OT_HDMI_DEEP_COLOR_24BIT

OT_HDMI_VIDEO_MODE_RGB444

(100M, 165M]

OT_HDMI_VIDEO_FORMAT_1080P_60

OT_HDMI_DEEP_COLOR_24BIT

OT_HDMI_VIDEO_MODE_RGB444

(165M, 340M]

OT_HDMI_VIDEO_FORMAT_3840X2160P_30

OT_HDMI_DEEP_COLOR_24BIT

OT_HDMI_VIDEO_MODE_RGB444

(340M, 600M]

注意:只在支持HDMI2.0的情况下,需要配置

OT_HDMI_VIDEO_FORMAT_3840X2160P_60

OT_HDMI_DEEP_COLOR_24BIT

OT_HDMI_VIDEO_MODE_RGB444

  • 其他注意事项请参考ot_hdmi_hw_spec。

  • color space需要通过VO的ss_mpi_vo_set_hdmi_param接口设置。此接口请参考《MPP 媒体处理软件V5.0 开发参考》。

  • 如果用户有开机画面场景,且用户使用此接口自行配置了HDMI硬件指标参数,请在开机画面场景下使用相关的函数设置相同的HDMI硬件指标参数。

【举例】

ot_hdmi_attr      st_attr;
ot_hdmi_hw_spec  st_hw_spec;
/* 初始化HDMI */
ss_mpi_hdmi_init();
/* 打开HDMI */
ss_mpi_hdmi_open(OT_HDMI_ID_0);
/* 获取HDMI属性 */
ss_mpi_hdmi_get_attr(OT_HDMI_ID_0, &st_attr);
/* 设置HDMI属性 */
st_attr.video_format = OT_HDMI_VIDEO_FORMAT_720P_60;
st_attr.deep_color_mode = OT_HDMI_DEEP_COLOR_24BIT;
st_attr.audio_en = TD_TRUE;
st_attr.sample_rate  = OT_HDMI_SAMPLE_RATE_48K;
st_attr.bit_depth = OT_HDMI_BIT_DEPTH_16;
ss_mpi_hdmi_set_attr(OT_HDMI_ID_0, &st_attr);
 
//获取HDMI硬件指标参数
ss_mpi_hdmi_get_hw_spec(OT_HDMI_ID_0, &st_hw_spec);
//根据需求配置TMDS时钟频段[25M, 100M]的硬件指标参数, 若不需要配置请勿修改。
st_hw_spec.hw_param[0].i_de_main_clk = 18;
st_hw_spec.hw_param[0].i_de_main_data = 18;
st_hw_spec.hw_param[0].i_main_clk= 28;
st_hw_spec.hw_param[0].i_main_data= 29;
//根据需求配置TMDS时钟频段(100M, 165M]的硬件指标参数, 若不需要配置请勿修改。
st_hw_spec.hw_param[1].i_de_main_clk = 19;
st_hw_spec.hw_param[1].i_de_main_data = 19;
st_hw_spec.hw_param[1].i_main_clk= 30;
st_hw_spec.hw_param[1].i_main_data= 31;
//根据需求配置TMDS时钟频段(165M, 340M]的硬件指标参数, 若不需要配置请勿修改。
st_hw_spec.hw_param[2].i_de_main_clk = 20;
st_hw_spec.hw_param[2].i_de_main_data = 20;
st_hw_spec.hw_param[2].i_main_clk= 32;
st_hw_spec.hw_param[2].i_main_data= 33;
//根据需求配置TMDS时钟频段(340M, 600M]的硬件指标参数, 若不需要配置请勿修改。
st_hw_spec.hw_param[3].i_de_main_clk = 21;
st_hw_spec.hw_param[3].i_de_main_data = 21;
st_hw_spec.hw_param[3].i_main_clk= 34;
st_hw_spec.hw_param[3].i_main_data= 35;
//设置HDMI硬件指标参数
ss_mpi_hdmi_set_hw_spec (OT_HDMI_ID_0, &st_hw_spec);
 
/* 启动HDMI */
ss_mpi_hdmi_start(OT_HDMI_ID_0);
 
/*以下,为使用结束后退出流程*/
/* 停止HDMI */
ss_mpi_hdmi_stop(OT_HDMI_ID_0);
 
/* 关闭HDMI */
ss_mpi_hdmi_close(OT_HDMI_ID_0);
 
/* 去初始化HDMI */
ss_mpi_hdmi_deinit();

【相关主题】

ss_mpi_hdmi_get_hw_spec

ss_mpi_hdmi_get_hw_spec

【描述】

获取HDMI指标参数。

【语法】

td_s32 ss_mpi_hdmi_get_hw_spec(ot_hdmi_id hdmi, ot_hdmi_hw_spec *hw_spec);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

hw_spec

HDMI指标参数结构体。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

【举例】

参考ss_mpi_hdmi_set_hw_spec。

【相关主题】

ss_mpi_hdmi_set_hw_spec

ss_mpi_hdmi_set_avmute

【描述】

设置AVMUTE。

【语法】

td_s32 ss_mpi_hdmi_set_avmute(ot_hdmi_id hdmi, td_bool avmute_en);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

avmute_en

AVMUTE使能标志。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 由于不同设备对AVMUTE包有不同的响应,在有些设备上有可能会导致黑屏、绿屏等异常现象,建议不要使用此接口。

  • AVMUTE的设置操作在start、stop接口中均有涉及,其中在ss_mpi_hdmi_start接口中驱动会clean avmute,在ss_mpi_hdmi_stop接口中驱动会set avmute。

  • 用户通过此接口设置了AVMUTE之后,如果后续有stop、start等操作时,AVMUTE的状态会被改变,最终状态可能会与用户前面设置的值不一样。

  • 没有注册回调函数时用户不调用ss_mpi_hdmi_start或ss_mpi_hdmi_stopAVMUTE状态也可能被改变,详细说明请参看ss_mpi_hdmi_register_callback接口的注意事项。

  • 请在对端设备稳定时调用该接口,可能存在启动业务时对端设备HPD不稳定从而重新start hdmi,最终会导致set avmute失败的情况。

【举例】

/* 初始化HDMI */
ss_mpi_hdmi_init();
/* 打开HDMI */
ss_mpi_hdmi_open(OT_HDMI_ID_0);
/* 启动HDMI */
ss_mpi_hdmi_start(OT_HDMI_ID_0);
/* avmute set */
ss_mpi_hdmi_set_avmute(OT_HDMI_ID_0, TD_TRUE);
/*以下,为使用结束后退出流程*/
/* avmute clear */
ss_mpi_hdmi_set_avmute(OT_HDMI_ID_0, TD_FALSE);
/* 停止HDMI */
ss_mpi_hdmi_stop(OT_HDMI_ID_0);
/* 关闭HDMI */
ss_mpi_hdmi_close(OT_HDMI_ID_0);
/* 去初始化HDMI */
ss_mpi_hdmi_deinit();

【相关主题】

ss_mpi_hdmi_set_hw_spec

ss_mpi_hdmi_set_mod_param

【描述】

HDMI模块参数设置。

【语法】

td_s32 ss_mpi_hdmi_set_mod_param(ot_hdmi_id hdmi, const ot_hdmi_mod_param *mod_param);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

mod_param

模块参数值,包括走线长度和展频开关。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

  • 调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

  • 若需调用此接口,请在ss_mpi_hdmi_set_attr接口之前完成设置。

  • 不同走线长度对应不同的指标参数,使用时请根据实际的情况选择正确的参数。

  • 枚举值与走线长度的对应关系请参考ot_hdmi_trace_len的说明。

  • 若不设置则驱动对每个解决方案会有一个默认的尺寸:

    • SS528V100默认2.5inch

    • SS625V100默认3.5inch

    • SS524V100默认3.0inch

    • SS522V101默认3.0inch

    • SS928V100默认2.0inch

    • SS626V100默认2.0inch

  • 解决方案默认的指标参数与另外的9套调试参数里相同尺寸的参数不是同一套,也就是说每个解决方案都有总共10套指标参数(1套默认参数加9套调试参数)。

  • 可以通过将trace_len设置成OT_HDMI_TRACE_DEFAULT切回到解决方案的默认指标参数配置。

  • 当前除了SS528V100、SS625V100、SS524V100、SS522V101、SS928V100、SS626V100之外的其他解决方案都不支持走线长度设置,接口调用后不会返回报错但是会将对应的配置值强制设置成对应的默认走线长度(OT_HDMI_TRACE_DEFAULT)。

  • 如果用户有开机画面场景,且用户使用此接口自行配置了HDMI硬件指标参数,请在开机画面场景下使用相关的接口设置相同的HDMI硬件指标参数。

  • 展频开关驱动默认是不开的,打开展频会对兼容性有影响请谨慎设置。

  • 当前除了SS528V100、SS625V100、SS524V100、SS522V101、SS928V100、SS626V100之外的其他解决方案都不支持展频开关设置,接口调用后不会返回报错但是会将对应的配置值强制设置成对应的默认值(关展频)。

  • SS928V100开机画面场景已支持走线长度设置,若不设置则默认是与2.0 inch对应的配置。

【举例】

【相关主题】

ss_mpi_hdmi_get_mod_param

ss_mpi_hdmi_get_mod_param

【描述】

获取HDMI模块参数。

【语法】

td_s32 ss_mpi_hdmi_get_mod_param(ot_hdmi_id hdmi, ot_hdmi_mod_param *mod_param);

【参数】

参数名称

描述

输入/输出

hdmi

HDMI接口号。

取值:0

输入

mod_param

模块参数,包括走线长度和展频开关。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【需求】

  • 头文件:ss_mpi_hdmi.h、ot_comm_hdmi.h

  • 库文件:libss_hdmi.a

【注意】

调用前须确保HDMI已被open,否则将返回OT_ERR_HDMI_DEV_NOT_OPEN。

【举例】

【相关主题】

ss_mpi_hdmi_set_mod_param

数据类型

HDMI相关数据类型定义如下:

  • ot_hdmi_id:定义HDMI接口号。

  • ot_hdmi_callback:定义HDMI回调函数指针类型。

  • ot_hdmi_callback_func:定义HDMI回调函数结构体。

  • ot_hdmi_event_type:定义HDMI事件通知枚举。

  • ot_hdmi_attr:定义HDMI属性结构体。

  • ot_hdmi_video_format:定义HDMI视频制式枚举。

  • ot_hdmi_video_mode:定义HDMI颜色空间类型枚举。

  • ot_hdmi_deep_color:定义HDMI深色模式枚举。

  • ot_hdmi_sample_rate:定义HDMI音频输出采样率枚举。

  • ot_hdmi_bit_depth:定义HDMI音频输出采样位宽枚举。

  • ot_hdmi_audio_format_code:定义HDMI音频格式枚举。

  • ot_hdmi_audio_info:定义HDMI音频能力集信息。

  • ot_hdmi_timing_info:定义HDMI详细时序信息。

  • ot_hdmi_detail_timing:定义HDMI详细时序能力集信息。

  • ot_hdmi_sink_capability:定义HDMI Sink端能力集结构体。

  • ot_hdmi_edid:定义HDMI EDID信息结构体。

  • ot_hdmi_infoframe_type:定义HDMI信息帧类型枚举。

  • ot_hdmi_infoframe:定义HDMI信息帧结构体。

  • ot_hdmi_infoframe_unit:定义HDMI信息帧单元结构体。

  • ot_hdmi_avi_infoframe:定义AVI信息帧(版本2)单元结构体。

  • ot_hdmi_audio_infoframe:定义AUDIO信息帧(版本1)单元结构体。

  • ot_hdmi_vendorspec_infoframe:vendor信息帧结构体。

  • ot_hdmi_color_space:定义颜色空间枚举。

  • ot_hdmi_bar_info:定义Bar信息枚举。

  • ot_hdmi_scan_info:定义Scan信息枚举。

  • ot_hdmi_colorimetry:定义Colorimetry信息枚举。

  • ot_hdmi_ex_colorimetry:定义扩展Colorimetry信息枚举

  • ot_pic_aspect_ratio:定义图像宽高比枚举。

  • ot_hdmi_active_aspect_ratio:定义实际图像宽高比枚举。

  • ot_hdmi_pic_scaline:定义图像扫描信息枚举。

  • ot_hdmi_rgb_quant_range:定义RGB量化范围枚举。

  • ot_hdmi_pixel_repetition:定义像素复制次数枚举。

  • ot_hdmi_content_type:定义内容信息枚举。

  • ot_hdmi_ycc_quant_range:定义YCC量化范围枚举。

  • ot_hdmi_audio_chn_cnt:定义音频通道数枚举。

  • ot_hdmi_coding_type:定义音频编码类型枚举。

  • ot_hdmi_audio_sample_size:定义音频采样大小枚举。

  • ot_hdmi_audio_sample_freq:定义音频采样频率枚举。

  • ot_hdmi_level_shift_val:定义音频Shift信息枚举。

  • ot_hdmi_lfe_playback_level:定义音频Playback信息枚举。

  • ot_hdmi_eotf:定义支持的EOTF能力结构体。

  • ot_hdmi_hdr_metadata_type:定义支持metadata类型结构体。

  • ot_hdmi_hdr_capability:定义HDR能力结构体。

  • ot_hdmi_hw_param:HDMI指标参数结构体。

  • ot_hdmi_hw_spec:HDMI指标参数。

  • ot_hdmi_mod_param:HDMI模块参数设置。

  • ot_hdmi_trace_len:HDMI信号线在PCB板上的走线长度枚举。

  • OT_HDMI_VENDOR_USER_DATA_MAX_LEN:最大自定义vendor数据的长度。

  • OT_HDMI_MAX_AUDIO_CAPBILITY_CNT:能获取的音频能力个数。

  • OT_HDMI_MAX_SAMPLE_RATE_NUM:音频采样率个数。

  • OT_HDMI_MAX_BIT_DEPTH_NUM:音频采样深度个数。

  • OT_HDMI_DETAIL_TIMING_MAX:详细的视频制式信息个数。

  • OT_HDMI_EDID_RAW_DATA_LEN:EDID原始数据的长度。

  • OT_HDMI_HW_PARAM_NUM:硬件参数的个数。

  • OT_HDMI_MANUFACTURE_NAME_LEN:制造商名称的长度。

注:本节已涵盖各重要的数据类型,部分未列出数据类型请参见ot_comm_hdmi.h

ot_hdmi_id

【说明】

定义HDMI接口号。

【定义】

typedef enum {
    OT_HDMI_ID_0 = 0,
    OT_HDMI_ID_1 = 1,
    OT_HDMI_ID_BUTT
} ot_hdmi_id;

【成员】

成员名称

描述

OT_HDMI_ID_0

HDMI接口0

OT_HDMI_ID_1

HDMI接口1,仅SS626V100支持

【注意事项】

  • 保留将来扩展多个HDMI设备支持。

  • 设置其他值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

无。

ot_hdmi_callback

【说明】

定义HDMI回调函数指针类型。

【定义】

typedef void (*ot_hdmi_callback)(ot_hdmi_event_type event, td_void *private_data);

【成员】

成员名称

描述

ot_hdmi_event_type

HDMI事件通知类型

private_data

事件私有数据。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_callback_func

【说明】

定义HDMI回调函数结构体。

【定义】

typedef struct {
    ot_hdmi_callback   hdmi_event_callback;
    td_void             *private_data;
} ot_hdmi_callback_func;

【成员】

成员名称

描述

hdmi_event_callback

事件处理回调函数。

private_data

回调函数参数私有数据。

【注意事项】

  • 建议用户注册事件回调函数,若不注册则HDMI内部采取默认行为。见ss_mpi_hdmi_register_callback。

  • 私有数据不能为局部变量,否则可能导致回调函数中不能正常访问。

  • 回调函数参数私有数据,一般并不使用,赋值可以为NULL。

【相关数据类型及接口】

ot_hdmi_event_type

【说明】

定义HDMI事件通知枚举。

【定义】

typedef enum {
    OT_HDMI_EVENT_HOTPLUG = 0x10,
    OT_HDMI_EVENT_NO_PLUG,
    OT_HDMI_EVENT_EDID_FAIL,
    OT_HDMI_EVENT_BUTT
} ot_hdmi_event_type;

【成员】

成员名称

描述

OT_HDMI_EVENT_HOTPLUG

HDMI Cable插入事件。

OT_HDMI_EVENT_NO_PLUG

HDMI Cable拔出事件。

OT_HDMI_EVENT_EDID_FAIL

HDMI EDID读取失败事件。

【注意事项】

【相关数据类型及接口】

ot_hdmi_attr

【说明】

定义HDMI属性结构体。

【定义】

typedef struct {
    td_bool                 hdmi_en;
    ot_hdmi_video_format    video_format;
    ot_hdmi_deep_color     deep_color_mode;
    td_bool                 audio_en;
    ot_hdmi_sample_rate    sample_rate;
    ot_hdmi_bit_depth      bit_depth;
    td_bool                 auth_mode_en;
    td_bool                 deep_color_adapt_en;
    td_u32                  pix_clk;
} ot_hdmi_attr;

【成员】

成员名称

描述

hdmi_en

是否强制HDMI输出。

TD_TRUE:强制HDMI输出;

TD_FALSE:DVI输出。

video_format

视频制式,此参数需要与VO配置的制式保持一致。

建议用户设置为Sink能力集支持的制式。

deep_color_mode

DeepColor输出模式。

OT_HDMI_DEEP_COLOR_24BIT、OT_HDMI_DEEP_COLOR_30BIT、OT_HDMI_DEEP_COLOR_36BIT、

默认为OT_HDMI_DEEP_COLOR_24BIT。

部分Sink不支持OT_HDMI_DEEP_COLOR_30BIT和OT_HDMI_DEEP_COLOR_36BIT,设置此DeepColor可能引起异常。

audio_en

是否使能音频。

sample_rate

音频采样率,此参数需要与AO的配置保持一致。

SSxx目前不支持采样率小于32KHz的采样率,建议用户设置为Sink能力集支持的采样率。

bit_depth

音频位宽,默认为16,此参数需要与AO的配置保持一致。

建议用户设置为Sink能力集支持位宽。

auth_mode_en

使能该模式,HDMI强制输出,不再去根据显示或认证设备的EDID信息来自适应调整,主要针对认证场景。

0:不使能auth_mode;

1:使能auth_mode。

说明:默认为TD_FALSE,此标志用于调试和HDMI认证测试用,建议用户不要修改,其他注意事项请参考ss_mpi_hdmi_set_attr。

deep_color_adapt_en

是否打开驱动Deepcolor自适应策略。

默认为TD_TRUE。建议用户设置为TD_TRUE。

pix_clk

用户设置自定义时序的像素时钟(单位:KHz)。

说明:用户设置自定义时序时一定设置此参数,此参数仅当video_format为OT_HDMI_VIDEO_FORMAT_VESA_CUSTOMER_DEFINE时才会生效。

注意:当配置自定义时序时,如果配置的pix_clk小于25M,需要在配置VO模块时进行倍频操作,使最终clk配置大于25M。同时需要设置HDMI信息帧中的avi_infoframe,需要把pixel_repetition置为对应倍频倍数。

【注意事项】

  • 用户可以根据建议值设置HDMI属性。

  • 用户设置DVI模式输出之前必须先通过VO的接口将color space设置成RGB。

  • 对于暂时不支持的属性,请设置为默认值。

  • 用户设置自定义时序时,一定要设置该时序对应的像素时钟pix_clk(其他情况下不需要设置此参数,即使设置也不会生效),否则可能显示设备无法正常显示。此参数的合法性需用户保证,驱动无法识别该参数是否合法,如果参数不合法,也可能导致显示设备无法正常显示。

  • enable_hdmi被设置为TD_FALSE时,HDMI驱动将工作在DVI模式,此时不输出音频以及所有信息帧。

【相关数据类型及接口】

ot_hdmi_video_format

【说明】

定义HDMI视频制式枚举。

【定义】

typedef enum {
    OT_HDMI_VIDEO_FORMAT_1080P_60,
    OT_HDMI_VIDEO_FORMAT_1080P_50,
    OT_HDMI_VIDEO_FORMAT_1080P_30,
    OT_HDMI_VIDEO_FORMAT_1080P_25,
    OT_HDMI_VIDEO_FORMAT_1080P_24,
    OT_HDMI_VIDEO_FORMAT_1080i_60,
    OT_HDMI_VIDEO_FORMAT_1080i_50,
    OT_HDMI_VIDEO_FORMAT_720P_60,
    OT_HDMI_VIDEO_FORMAT_720P_50,
    OT_HDMI_VIDEO_FORMAT_576P_50,
    OT_HDMI_VIDEO_FORMAT_480P_60,
    OT_HDMI_VIDEO_FORMAT_PAL,                  /* B D G H I PAL */
    OT_HDMI_VIDEO_FORMAT_NTSC,                 /* (M)NTSC       */
    OT_HDMI_VIDEO_FORMAT_861D_640X480_60,
    OT_HDMI_VIDEO_FORMAT_VESA_800X600_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1024X768_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1280X800_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1280X1024_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1366X768_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1440X900_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1400X1050_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1600X1200_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1680X1050_60,
    OT_HDMI_VIDEO_FORMAT_VESA_1920X1200_60,
    OT_HDMI_VIDEO_FORMAT_2560x1440_30,
    OT_HDMI_VIDEO_FORMAT_2560x1440_60,
    OT_HDMI_VIDEO_FORMAT_2560x1600_60,
    OT_HDMI_VIDEO_FORMAT_1920x2160_30,
    OT_HDMI_VIDEO_FORMAT_3840X2160P_24,               
    OT_HDMI_VIDEO_FORMAT_3840X2160P_25,               
    OT_HDMI_VIDEO_FORMAT_3840X2160P_30,               
    OT_HDMI_VIDEO_FORMAT_3840X2160P_50,               
    OT_HDMI_VIDEO_FORMAT_3840X2160P_60,               
    OT_HDMI_VIDEO_FORMAT_4096X2160P_24,               
    OT_HDMI_VIDEO_FORMAT_4096X2160P_25,               
    OT_HDMI_VIDEO_FORMAT_4096X2160P_30,               
    OT_HDMI_VIDEO_FORMAT_4096X2160P_50,               
    OT_HDMI_VIDEO_FORMAT_4096X2160P_60,        
    OT_HDMI_VIDEO_FORMAT_3840X2160P_120,
    OT_HDMI_VIDEO_FORMAT_4096X2160P_120,
    OT_HDMI_VIDEO_FORMAT_7680X4320P_30,
    OT_HDMI_VIDEO_FORMAT_VESA_CUSTOMER_DEFINE,
    OT_HDMI_VIDEO_FORMAT_BUTT
} ot_hdmi_video_format;

【成员】

无。

【注意事项】

  • 需要根据视频输出的制式设置相应的HDMI的制式。

    • OT_HDMI_VIDEO_FORMAT_3840X2160P_50

    • OT_HDMI_VIDEO_FORMAT_3840X2160P_60

    • OT_HDMI_VIDEO_FORMAT_4096X2160P_50

    • OT_HDMI_VIDEO_FORMAT_4096X2160P_60

    以上四种制式为HDMI2.0规格,仅支持HDMI1.4的产品不支持这几种制式。

  • 暂不支持如下制式:

    • OT_HDMI_VIDEO_FORMAT_3840X2160P_120

    • OT_HDMI_VIDEO_FORMAT_4096X2160P_120

    • OT_HDMI_VIDEO_FORMAT_7680X4320P_30

    设置这些参数将返回OT_ERR_HDMI_FEATURE_NO_SUPPORT。

  • 当ot_hdmi_attr中的hdmi_en设置成TD_FALSE(DVI模式)时,不支持OT_HDMI_VIDEO_FORMAT_3840X2160P_24及以上分辨率,强行设置时会返回OT_ERR_HDMI_FEATURE_NO_SUPPORT。

【相关数据类型及接口】

ss_mpi_hdmi_set_attr

ot_hdmi_video_mode

【说明】

定义HDMI颜色空间类型枚举。

【定义】

typedef enum {
    OT_HDMI_VIDEO_MODE_RGB444,
    OT_HDMI_VIDEO_MODE_YCBCR422,
    OT_HDMI_VIDEO_MODE_YCBCR444,
    OT_HDMI_VIDEO_MODE_YCBCR420,
    OT_HDMI_VIDEO_MODE_BUTT
} ot_hdmi_video_mode;

【成员】

成员名称

描述

OT_HDMI_VIDEO_MODE_RGB444

RGB444输出模式

OT_HDMI_VIDEO_MODE_YCBCR422

YCBCR422输出模式

OT_HDMI_VIDEO_MODE_YCBCR444

YCBCR444输出模式

OT_HDMI_VIDEO_MODE_YCBCR420

YCBCR420输出模式

【注意事项】

OT_HDMI_VIDEO_MODE_YCBCR420为HDMI2.0规格,仅支持HDMI1.4的产品不支持此颜色空间。

【相关数据类型及接口】

无。

ot_hdmi_deep_color

【说明】

定义HDMI深色模式枚举。

【定义】

typedef enum {
    OT_HDMI_DEEP_COLOR_24BIT,
    OT_HDMI_DEEP_COLOR_30BIT,
    OT_HDMI_DEEP_COLOR_36BIT,
    OT_HDMI_DEEP_COLOR_BUTT
} ot_hdmi_deep_color;

【成员】

成员名称

描述

OT_HDMI_DEEP_COLOR_24BIT

HDMI Deep Color 24bit模式

OT_HDMI_DEEP_COLOR_30BIT

HDMI Deep Color 30bit模式

OT_HDMI_DEEP_COLOR_36BIT

HDMI Deep Color 36bit模式

【注意事项】

  • 若获取到对端能力不支持30bit和36bit时,建议不要设置,否则显示设备很有可能无显示。

  • 设置OT_HDMI_DEEP_COLOR_BUTT及枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ss_mpi_hdmi_set_attr

ot_hdmi_sample_rate

【说明】

定义HDMI音频输出采样率枚举。

【定义】

typedef enum {
    OT_HDMI_SAMPLE_RATE_UNKNOWN,
    OT_HDMI_SAMPLE_RATE_8K,
    OT_HDMI_SAMPLE_RATE_11K,
    OT_HDMI_SAMPLE_RATE_12K,
    OT_HDMI_SAMPLE_RATE_16K,
    OT_HDMI_SAMPLE_RATE_22K,
    OT_HDMI_SAMPLE_RATE_24K,
    OT_HDMI_SAMPLE_RATE_32K,
    OT_HDMI_SAMPLE_RATE_44K,
    OT_HDMI_SAMPLE_RATE_48K,
    OT_HDMI_SAMPLE_RATE_88K,
    OT_HDMI_SAMPLE_RATE_96K,
    OT_HDMI_SAMPLE_RATE_176K,
    OT_HDMI_SAMPLE_RATE_192K,
    OT_HDMI_SAMPLE_RATE_768K,
    OT_HDMI_SAMPLE_RATE_BUTT
} ot_hdmi_sample_rate;

【成员】

无。

【注意事项】

  • 当前仅支持OT_HDMI_SAMPLE_RATE_32K、OT_HDMI_SAMPLE_RATE_44K、OT_HDMI_SAMPLE_RATE_48K。

  • 设置OT_HDMI_SAMPLE_RATE_BUTT及枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA,设置其他参数将返回OT_ERR_HDMI_FEATURE_NO_SUPPORT。

  • 音频模块传递给HDMI的数据,采样率必须与HDMI输出的保持一致。如音频模块采集的音频源为8KHz,而HDMI需要输出48KHz音频数据,此时需要音频模块对源数据进行重采样到48KHz。

【相关数据类型及接口】

ss_mpi_hdmi_set_attr

ot_hdmi_bit_depth

【说明】

定义HDMI音频输出采样位宽枚举。

【定义】

typedef enum {
    OT_HDMI_BIT_DEPTH_UNKNOWN,
    OT_HDMI_BIT_DEPTH_8,
    OT_HDMI_BIT_DEPTH_16,
    OT_HDMI_BIT_DEPTH_18,
    OT_HDMI_BIT_DEPTH_20,
    OT_HDMI_BIT_DEPTH_24,
    OT_HDMI_BIT_DEPTH_32,
    OT_HDMI_BIT_DEPTH_BUTT
} ot_hdmi_bit_depth;

【成员】

无。

【注意事项】

  • 目前只支持设置OT_HDMI_BIT_DEPTH_16的音频采样位宽。

  • OT_HDMI_BIT_DEPTH_UNKNOWN、OT_HDMI_BIT_DEPTH_8、OT_HDMI_BIT_DEPTH_18、OT_HDMI_BIT_DEPTH_20、OT_HDMI_BIT_DEPTH_24、OT_HDMI_BIT_DEPTH_32暂不支持,设置这些参数时将返回OT_ERR_HDMI_FEATURE_NO_SUPPORT。设置OT_HDMI_BIT_DEPTH_BUTT及枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ss_mpi_hdmi_set_attr

ot_hdmi_audio_format_code

【说明】

定义HDMI音频格式枚举。

【定义】

typedef enum {
    OT_HDMI_AUDIO_FORMAT_CODE_RESERVED,
    OT_HDMI_AUDIO_FORMAT_CODE_PCM,
    OT_HDMI_AUDIO_FORMAT_CODE_AC3,
    OT_HDMI_AUDIO_FORMAT_CODE_MPEG1,
    OT_HDMI_AUDIO_FORMAT_CODE_MP3,
    OT_HDMI_AUDIO_FORMAT_CODE_MPEG2,
    OT_HDMI_AUDIO_FORMAT_CODE_AAC,
    OT_HDMI_AUDIO_FORMAT_CODE_DTS,
    OT_HDMI_AUDIO_FORMAT_CODE_ATRAC,
    OT_HDMI_AUDIO_FORMAT_CODE_ONE_BIT,
    OT_HDMI_AUDIO_FORMAT_CODE_DDP,
    OT_HDMI_AUDIO_FORMAT_CODE_DTS_HD,
    OT_HDMI_AUDIO_FORMAT_CODE_MAT,
    OT_HDMI_AUDIO_FORMAT_CODE_DST,
    OT_HDMI_AUDIO_FORMAT_CODE_WMA_PRO,
    OT_HDMI_AUDIO_FORMAT_CODE_BUTT,
} ot_hdmi_audio_format_code;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_hdmi_set_attr

ot_hdmi_audio_info

【说明】

定义HDMI音频能力集信息。

【定义】

typedef struct {
    ot_hdmi_audio_format_code   audio_format_code;
    ot_hdmi_sample_rate        support_sample_rate[OT_HDMI_MAX_SAMPLE_RATE_NUM];
    td_u8                       audio_chn;
    ot_hdmi_bit_depth           support_bit_depth[OT_HDMI_MAX_BIT_DEPTH_NUM];
    td_u32                      support_bit_depth_num;
    td_u32                      max_bit_rate;
} ot_hdmi_audio_info;

【成员】

成员名称

描述

audio_format_code

支持的音频格式。

support_sample_rate

支持的音频采样率。

audio_chn

支持的音频通道数。

support_bit_depth

支持的采样bit深度。

support_bit_depth_num

支持不同的bit深度种类个数。

max_bit_rate

最大比特率。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_timing_info

【说明】

定义HDMI Detail Timing信息。

【定义】

typedef struct {
    td_u32       vfb;
    td_u32       vbb;
    td_u32       vact;
    td_u32       hfb;
    td_u32       hbb;
    td_u32       hact;
    td_u32       vpw;
    td_u32       hpw;
    td_bool      idv;
    td_bool      ihs;
    td_bool      ivs;
    td_u32       img_width;
    td_u32       img_height;
    td_u32       aspect_ratio_w;
    td_u32       aspect_ratio_h;
    td_bool      interlace;
    td_s32       pixel_clk;
} ot_hdmi_timing_info;

【成员】

成员名称

描述

vfb

垂直消隐前肩,隔行输出时表示顶场垂直消隐前肩。单位:行。

vbb

垂直消隐后肩,隔行输出时表示顶场垂直消隐后肩。单位:行。

vact

垂直有效区,隔行输出时表示顶场垂直有效区。单位:行。

hfb

水平消隐前肩。单位:像素。

hbb

水平消隐后肩。单位:像素。

hact

水平有效区。单位:像素。

vpw

垂直同步信号的宽度。单位:行。

hpw

水平同步信号的宽度。单位:像素。

idv

数据有效信号的极性。配置0为高有效,配置1为低有效。

ihs

水平有效信号的极性,配置0为高有效,配置1为低有效。

ivs

垂直有效信号的极性,配置0为高有效,配置1为低有效。

img_width

图像宽度

img_height

图像高度

aspect_ratio_w

宽高比宽

aspect_ratio_h

宽高比高

interlace

隔行标志

pixel_clk

时序的像素时钟

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_detail_timing

【说明】

定义HDMI Detail Timing能力集信息。

【定义】

typedef struct {
    td_u32                    detail_timing_num;
    ot_hdmi_timing_info     detail_timing[OT_HDMI_DETAIL_TIMING_MAX];
} ot_hdmi_detail_timing;

【成员】

成员名称

描述

detail_timing_num

支持的详细时序个数。

detail_timing[OT_HDMI_DETAIL_TIMING_MAX]

支持的详细时序信息。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_sink_capability

【说明】

定义HDMI Sink端能力集结构体。

【定义】

typedef struct {
    td_bool             is_connected;
    td_bool             support_hdmi;
    td_bool             is_sink_power_on;
    ot_hdmi_video_format   native_video_format;
    td_bool             support_video_format [OT_HDMI_VIDEO_FORMAT_BUTT];
    td_bool             support_ycbcr;
    td_bool             support_xvycc601;
    td_bool             support_xvycc709;
    td_u8               md_bit;
    td_u32              audio_info_num;
    ot_hdmi_audio_info  audio_info[OT_HDMI_MAX_AUDIO_CAPBILITY_CNT];
    td_bool             speaker[OT_HDMI_AUDIO_SPEAKER_BUTT];
    td_u8               manufacture_name[OT_HDMI_MANUFACTURE_NAME_LEN];
    td_u32              pdt_code;
    td_u32              serial_num;
    td_u32              week_of_manufacture;
    td_u32              year_of_manufacture;
    td_u8               version;
    td_u8               revision;
    td_u8               edid_ex_blk_num;
    td_bool             is_phy_addr_valid;
    td_u8               phys_addr_a;
    td_u8               phys_addr_b;
    td_u8               phys_addr_c;
    td_u8               phys_addr_d;
    td_bool             support_dvi_dual;
    td_bool             support_deepcolor_ycbcr444;
    td_bool             support_deepcolor_30bit;
    td_bool             support_deepcolor_36bit;
    td_bool             support_deepcolor_48bit;
    td_bool             support_ai;
    td_u32              max_tmds_clk;
    td_bool             i_latency_fields_present;
    td_bool             latency_fields_present;
    td_bool             hdmi_video_present;
    td_u8               video_latency;
    td_u8               audio_latency;
    td_u8               interlaced_video_latency;
    td_u8               interlaced_audio_latency;
    td_bool             support_y420_dc_30bit;
    td_bool             support_y420_dc_36bit;
    td_bool             support_y420_dc_48bit;
    td_bool             support_hdmi_2_0;
    td_bool             support_y420_format[OT_HDMI_VIDEO_FORMAT_BUTT];
    td_bool             only_support_y420_format[OT_HDMI_VIDEO_FORMAT_BUTT];
    td_bool             ycc_quant_selectable;
    td_bool             rgb_quant_selectable;
    td_bool             support_hdr;
    ot_hdmi_hdr_capability  hdr;
    ot_hdmi_detail_timing  detailed_timing;
} ot_hdmi_sink_capability;

【成员】

成员名称

描述

is_connected

设备是否连接

support_hdmi

设备是否支持HDMI(默认为HDMI1.4),如果不支持,则为DVI设备。

is_sink_power_on

Sink设备是否上电。

native_video_format

显示设备物理分辨率。

support_video_format

视频能力集。

TD_TRUE:支持这种显示格式;

TD_FALSE:不支持。

support_ycbcr

是否支持YCBCR显示。

TD_TRUE:支持YCBCR显示;

TD_FALSE:只支持RGB显示。

support_xvycc601

是否支持xvYCC601颜色格式。

support_xvycc709

是否支持xvYCC709颜色格式。

md_bit

xvYCC601支持的传输profile:1:P0,2:P1,4:P2

audio_info_num

支持的音频信息个数,取值范围[1~16]

audio_info

支持的音频信息。最多支持16组数据。每组音频信息包括:音频编码格式、采样率、Channel个数、采样bit深度及其个数、最大bit率。

注意:OT_HDMI_MAX_AUDIO_CAPBILITY_CNT值为16。

详细请参考EIA-CEA-861-F 7.5.2 Audio Data Block

speaker

扬声器位置,请参考EIA-CEA-861-F中SpeakerDATABlock的定义。

manufacture_name

设备厂商标识。

注意:OT_HDMI_MANUFACTURE_NAME_LEN值为4。

pdt_code

设备ID。

serial_num

设备序列号。

week_of_manufacture

设备生产日期(周)。

year_of_manufacture

设备生产日期(年)。

version

设备版本号。

revision

设备子版本号。

edid_ex_blk_num

EDID扩展块数目。

is_phys_addr_valid

CEC物理地址是否有效标志。

phys_addr_a

CEC物理地址A。

phys_addr_b

CEC物理地址B。

phys_addr_c

CEC物理地址C。

phys_addr_d

CEC物理地址D。

support_dvi_dual

是否支持 DVI dual-link 操作。

support_deepcolor_ycbcr444

是否支持 YCBCR 4:4:4 Deep Color模式。

support_deepcolor_30bit

是否支持Deep Color 30bit 模式。

support_deepcolor_36bit

是否支持Deep Color 36bit 模式。

support_deepcolor_48bit

是否支持Deep Color 48bit 模式。

support_ai

是否支持 Supports_AI 模式。

max_tmds_clk

最大TMDS时钟。

i_latency_fields_present

延时标志位。

latency_fields_present

Video_Latency和Audio_Latency fields是否存在。

hdmi_video_present

特殊的视频格式。

video_latency

视频延时。

audio_latency

音频延时。

interlaced_video_latency

隔行视频模式下的视频延时。

interlaced_audio_latency

隔行视频模式下的音频延时。

support_y420_dc_30bit

是否支持YCbCr420 的deep-color 30bit模式。

support_y420_dc_36bit

是否支持YCbCr420 的deep-color 36bit模式。

support_y420_dc_48bit

是否支持YCbCr420 的deep-color 48bit模式。

support_hdmi_2_0

是否支持HDMI2.0。

support_y420_format

支持YCbCr420的视频制式。

only_support_y420_format

只支持YCbCr420的视频制式。

ycc_quant_selectable

是否支持YCbCr Quantization可选。

rgb_quant_selectable

是否支持RGB Quantization可选。

support_hdr

Sink是否支持HDR。

hdr

Sink支持HDR能力的详细信息。

detailed_timing

支持的详细时序能力集信息。

【注意事项】

能力上报不区分HDMI1.4和HDMI2.0。

【相关数据类型及接口】

ss_mpi_hdmi_get_sink_capability

ot_hdmi_edid

【说明】

定义HDMI EDID信息结构体。

【定义】

typedef struct {
    td_bool                 edid_valid;
    td_u32                  edid_len;
    td_u8                   edid[OT_HDMI_EDID_RAW_DATA_LEN];
} ot_hdmi_edid;

【成员】

成员名称

描述

edid_valid

EDID信息是否有效。

edid_len

EDID信息数据长度。

edid[OT_HDMI_EDID_RAW_DATA_LEN]

EDID信息数据。

【注意事项】

无。

【相关数据类型及接口】

ss_mpi_hdmi_force_get_edid

ot_hdmi_infoframe_type

【说明】

定义HDMI信息帧类型枚举。

【定义】

typedef enum {
    OT_INFOFRAME_TYPE_AVI,
    OT_INFOFRAME_TYPE_AUDIO,
    OT_INFOFRAME_TYPE_VENDORSPEC,
    OT_INFOFRAME_TYPE_BUTT
} ot_hdmi_infoframe_type;

【成员】

无。

【注意事项】

【相关数据类型及接口】

ot_hdmi_infoframe

【说明】

定义HDMI信息帧结构体。

【定义】

typedef struct {
    ot_hdmi_infoframe_type  infoframe_type;
    ot_hdmi_infoframe_unit  infoframe_unit;
} ot_hdmi_infoframe;

【成员】

成员名称

描述

infoframe_type

信息帧类型

infoframe_unit

信息帧单元(内容)

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_infoframe_unit

【说明】

定义HDMI信息帧单元结构体。

【定义】

typedef union {
    ot_hdmi_avi_infoframe   avi_infoframe;
    ot_hdmi_audio_infoframe   audio_infoframe;
    ot_hdmi_vendorspec_infoframe vendor_spec_infoframe;
} ot_hdmi_infoframe_unit;

【成员】

成员名称

描述

avi_infoframe

AVI信息帧单元

audio_infoframe

AUDIO信息帧单元

vendor_spec_infoframe

VENDOR信息帧单元

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_avi_infoframe

【说明】

定义HDMI AVI信息帧(版本2)单元结构体。

【定义】

typedef struct {
    ot_hdmi_video_format       timing_mode;
    ot_hdmi_color_space        color_space;
    td_bool                    active_info_present;
    ot_hdmi_bar_info           bar_info;
    ot_hdmi_scan_info          scan_info;
    ot_hdmi_colorimetry         colorimetry;
    ot_hdmi_ex_colorimetry     ex_colorimetry;
    ot_pic_aspect_ratio        aspect_ratio;
    ot_hdmi_active_aspect_ratio   active_aspect_ratio;
    ot_hdmi_pic_scaline    pic_scaling;
    ot_hdmi_rgb_quant_range      rgb_quant;
    td_bool                       is_it_content;
    ot_hdmi_pixel_repetition   pixel_repetition;
    ot_hdmi_content_type       content_type;
    ot_hdmi_ycc_quant_range      ycc_quant;
    td_u16                     line_n_end_of_top_bar;
    td_u16                     line_n_start_of_bot_bar;
    td_u16                     pixel_n_end_of_left_bar;
    td_u16                     pixel_n_start_of_right_bar;
} ot_hdmi_avi_infoframe;

【成员】

成员名称

描述

timing_mode

视频时序

color_space

颜色空间

active_info_present

Info是否有效

bar_info

Bar信息

scan_info

Scan信息

colorimetry

色域

ex_colorimetry

扩展色域

aspect_ratio

图像宽高比

active_aspect_ratio

有效宽高比

pic_scaling

图像均衡

rgb_quant

RGB量化

is_it_content

ITContent是否有效

pixel_repetition

像素加倍

content_type

ITContent类型

ycc_quant

YCC量化

line_n_end_of_top_bar

TopBar终止行数

line_n_start_of_bot_bar

BottomBar开始行数

pixel_n_end_of_left_bar

LeftBar终止像素数

pixel_n_start_of_right_bar

RightBar开始像素数

【注意事项】

详细描述请参见《High-Definition Multimedia Interface Specification Version 1.4b》、《High-Definition Multimedia Interface Specification Version 2.0》、《CEA-861-D》与《CEA-861-F》

【相关数据类型及接口】

ot_hdmi_audio_infoframe

【说明】

定义HDMI AUDIO信息帧(版本1)单元结构体。

【定义】

typedef struct {
    ot_hdmi_audio_chn_cnt           chn_cnt;
    ot_hdmi_coding_type              coding_type;
    ot_hdmi_audio_sample_size       sample_size;
    ot_hdmi_audio_sample_freq       sampling_freq;
    td_u8                               chn_alloc;
    ot_hdmi_level_shift_val             level_shift;
    ot_hdmi_lfe_playback_level      lfe_playback_level;
    td_bool                             down_mix_inhibit;
} ot_hdmi_audio_infoframe;

【成员】

成员名称

描述

chn_cnt

音频通道个数

coding_type

音频格式

sample_size

音频采样深度(位宽)

sampling_freq

音频采样率

chn_alloc

Channel/Speaker分配

level_shift

Level Shift Value,左移值

lfe_playback_level

LFE playback level information,LFE 播放等级信息。

down_mix_inhibit

Down-mix Inhibit 标志位。

【注意事项】

详细描述请参见《High-Definition Multimedia Interface Specification Version 1.4b》、《High-Definition Multimedia Interface Specification Version 2.0》、《CEA-861-D》与《CEA-861-F》

【相关数据类型及接口】

ot_hdmi_vendorspec_infoframe

【说明】

vendor信息帧结构体。

【定义】

typedef struct {
    td_u8 data_len;
    td_u8 user_data[OT_HDMI_VENDOR_USER_DATA_MAX_LEN];
} ot_hdmi_vendorspec_infoframe;

【成员】

成员名称

描述

data_len

用户数据的长度

user_data[OT_HDMI_VENDOR_USER_DATA_MAX_LEN]

用户数据

【注意事项】

用户可以通过该接口设置自定数据,当data_len为0时停止发送用户数据。

【相关数据类型及接口】

ot_hdmi_color_space

【说明】

定义颜色空间枚举。

【定义】

typedef enum {
    OT_HDMI_COLOR_SPACE_RGB444,
    OT_HDMI_COLOR_SPACE_YCBCR422,
    OT_HDMI_COLOR_SPACE_YCBCR444,
    OT_HDMI_COLOR_SPACE_YCBCR420,
    OT_HDMI_COLOR_SPACE_BUTT
} ot_hdmi_color_space;

【成员】

无。

【注意事项】

OT_HDMI_COLOR_SPACE_YCBCR420为HDMI2.0规格,仅支持HDMI1.4规格的产品不支持此颜色空间。

【相关数据类型及接口】

ot_hdmi_bar_info

【说明】

定义Bar信息枚举。

【定义】

typedef enum {
    OT_HDMI_BAR_INFO_NOT_VALID,
    OT_HDMI_BAR_INFO_V,
    OT_HDMI_BAR_INFO_H,
    OT_HDMI_BAR_INFO_VH,
    OT_HDMI_BAR_INFO_BUTT
} ot_hdmi_bar_info;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_scan_info

【说明】

定义Scan信息枚举。

【定义】

typedef enum {
    OT_HDMI_SCAN_INFO_NO_DATA,
    OT_HDMI_SCAN_INFO_OVERSCANNED,
    OT_HDMI_SCAN_INFO_UNDERSCANNED,
    OT_HDMI_SCAN_INFO_BUTT
} ot_hdmi_scan_info;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_colorimetry

【说明】

定义Colorimetry信息枚举。

【定义】

typedef enum {
    OT_HDMI_COMMON_COLORIMETRY_NO_DATA,
    OT_HDMI_COMMON_COLORIMETRY_ITU601,
    OT_HDMI_COMMON_COLORIMETRY_ITU709,
    OT_HDMI_COMMON_COLORIMETRY_BUTT
} ot_hdmi_colorimetry;

【成员】

无。

【注意事项】

OT_HDMI_COMMON_COLORIMETRY_BUTT值有效,其含义表示设置为扩展色域,详细描述请参见《CEA-861-D》。

【相关数据类型及接口】

ot_hdmi_ex_colorimetry

【说明】

定义扩展Colorimetry信息枚举。

【定义】

typedef enum {
    OT_HDMI_COMMON_COLORIMETRY_XVYCC_601,
    OT_HDMI_COMMON_COLORIMETRY_XVYCC_709,
    OT_HDMI_COMMON_COLORIMETRY_S_YCC_601,
    OT_HDMI_COMMON_COLORIMETRY_ADOBE_YCC_601,
    OT_HDMI_COMMON_COLORIMETRY_ADOBE_RGB,
    OT_HDMI_COMMON_COLORIMETRY_2020_CONST_LUMINOUS,
    OT_HDMI_COMMON_COLORIMETRY_2020_NON_CONST_LUMINOUS,
    OT_HDMI_COMMON_COLORIMETRY_BUTT
} ot_hdmi_ex_colorimetry;

【成员】

无。

【注意事项】

【相关数据类型及接口】

ot_pic_aspect_ratio

【说明】

定义图像宽高比枚举。

【定义】

typedef enum {
    OT_HDMI_PIC_ASPECT_RATIO_NO_DATA,
    OT_HDMI_PIC_ASPECT_RATIO_4TO3,
    OT_HDMI_PIC_ASPECT_RATIO_16TO9,
    OT_HDMI_PIC_ASPECT_RATIO_64TO27,
    OT_HDMI_PIC_ASPECT_RATIO_256TO135,
    OT_HDMI_PIC_ASPECT_RATIO_BUTT,
} ot_pic_aspect_ratio;

【成员】

无。

【注意事项】

设置枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ot_hdmi_active_aspect_ratio

【说明】

定义实际图像宽高比枚举。

【定义】

typedef enum {
    OT_HDMI_ACTIVE_ASPECT_RATIO_16TO9_TOP=2,
    OT_HDMI_ACTIVE_ASPECT_RATIO_14TO9_TOP,
    OT_HDMI_ACTIVE_ASPECT_RATIO_16TO9_BOX_CENTER,
    OT_HDMI_ACTIVE_ASPECT_RATIO_SAME_PIC=8,
    OT_HDMI_ACTIVE_ASPECT_RATIO_4TO3_CENTER,
    OT_HDMI_ACTIVE_ASPECT_RATIO_16TO9_CENTER,
    OT_HDMI_ACTIVE_ASPECT_RATIO_14TO9_CENTER,
    OT_HDMI_ACTIVE_ASPECT_RATIO_4TO3_14_9=13,
    OT_HDMI_ACTIVE_ASPECT_RATIO_16TO9_14_9,
    OT_HDMI_ACTIVE_ASPECT_RATIO_16TO9_4_3,
    OT_HDMI_ACTIVE_ASPECT_RATIO_BUTT
} ot_hdmi_active_aspect_ratio;

【成员】

无。

【注意事项】

【相关数据类型及接口】

ot_hdmi_pic_scaline

【说明】

定义图像扫描信息枚举。

【定义】

typedef enum {
    OT_HDMI_PICTURE_NON_UNIFORM_SCALING,
    OT_HDMI_PICTURE_SCALING_H,
    OT_HDMI_PICTURE_SCALING_V,
    OT_HDMI_PICTURE_SCALING_HV,
    OT_HDMI_PICTURE_SCALING_BUTT
} ot_hdmi_pic_scaline;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_rgb_quant_range

【说明】

定义RGB量化范围枚举。

【定义】

typedef enum {
    OT_HDMI_RGB_QUANT_DEFAULT_RANGE,
    OT_HDMI_RGB_QUANT_LIMITED_RANGE,
    OT_HDMI_RGB_QUANT_FULL_RANGE,
    OT_HDMI_RGB_QUANT_FULL_BUTT
} ot_hdmi_rgb_quant_range;

【成员】

无。

【注意事项】

【相关数据类型及接口】

ot_hdmi_pixel_repetition

【说明】

定义像素复制次数枚举。

【定义】

typedef enum {
    OT_HDMI_PIXEL_REPET_NO,
    OT_HDMI_PIXEL_REPET_2_TIMES,
    OT_HDMI_PIXEL_REPET_3_TIMES,
    OT_HDMI_PIXEL_REPET_4_TIMES,
    OT_HDMI_PIXEL_REPET_5_TIMES,
    OT_HDMI_PIXEL_REPET_6_TIMES,
    OT_HDMI_PIXEL_REPET_7_TIMES,
    OT_HDMI_PIXEL_REPET_8_TIMES,
    OT_HDMI_PIXEL_REPET_9_TIMES,
    OT_HDMI_PIXEL_REPET_10_TIMES,
    OT_HDMI_PIXEL_REPET_BUTT
} ot_hdmi_pixel_repetition;

【成员】

无。

【注意事项】

设置枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ot_hdmi_content_type

【说明】

定义内容信息枚举。

【定义】

typedef enum {
    OT_HDMI_CONTNET_GRAPHIC,
    OT_HDMI_CONTNET_PHOTO,
    OT_HDMI_CONTNET_CINEMA,
    OT_HDMI_CONTNET_GAME,
    OT_HDMI_CONTNET_BUTT
} ot_hdmi_content_type;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_ycc_quant_range

【说明】

定义YCC量化范围枚举。

【定义】

typedef enum {
    OT_HDMI_YCC_QUANT_LIMITED_RANGE,
    OT_HDMI_YCC_QUANT_FULL_RANGE,
    OT_HDMI_YCC_QUANT_BUTT
} ot_hdmi_ycc_quant_range;

【成员】

无。

【注意事项】

设置枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ot_hdmi_audio_chn_cnt

【说明】

定义音频通道数枚举。

【定义】

typedef enum {
    OT_HDMI_AUDIO_CHANEL_CNT_STREAM,
    OT_HDMI_AUDIO_CHANEL_CNT_2,
    OT_HDMI_AUDIO_CHANEL_CNT_3,
    OT_HDMI_AUDIO_CHANEL_CNT_4,
    OT_HDMI_AUDIO_CHANEL_CNT_5,
    OT_HDMI_AUDIO_CHANEL_CNT_6,
    OT_HDMI_AUDIO_CHANEL_CNT_7,
    OT_HDMI_AUDIO_CHANEL_CNT_8,
    OT_HDMI_AUDIO_CHANEL_BUTT
} ot_hdmi_audio_chn_cnt;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_coding_type

【说明】

定义音频编码类型枚举。

【定义】

typedef enum {
    OT_HDMI_AUDIO_CODING_REFER_STREAM_HEAD,
    OT_HDMI_AUDIO_CODING_PCM,
    OT_HDMI_AUDIO_CODING_AC3,
    OT_HDMI_AUDIO_CODING_MPEG1,
    OT_HDMI_AUDIO_CODING_MP3,
    OT_HDMI_AUDIO_CODING_MPEG2,
    OT_HDMI_AUDIO_CODING_AACLC,
    OT_HDMI_AUDIO_CODING_DTS,
    OT_HDMI_AUDIO_CODING_ATRAC,
    OT_HDMI_AUDIO_CODIND_ONE_BIT_AUDIO,
    OT_HDMI_AUDIO_CODING_ENAHNCED_AC3,
    OT_HDMI_AUDIO_CODING_DTS_HD,
    OT_HDMI_AUDIO_CODING_MAT,
    OT_HDMI_AUDIO_CODING_DST,
    OT_HDMI_AUDIO_CODING_WMA_PRO,
    OT_HDMI_AUDIO_CODING_BUTT
} ot_hdmi_coding_type;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_audio_sample_size

【说明】

定义音频采样大小枚举。

【定义】

typedef enum {
    OT_HDMI_AUDIO_SAMPLE_SIZE_STREAM,
    OT_HDMI_AUDIO_SAMPLE_SIZE_16,
    OT_HDMI_AUDIO_SAMPLE_SIZE_20,
    OT_HDMI_AUDIO_SAMPLE_SIZE_24,
    OT_HDMI_AUDIO_SAMPLE_SIZE_BUTT
} ot_hdmi_audio_sample_size;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_audio_sample_freq

【说明】

定义音频采样频率枚举。

【定义】

typedef enum {
    OT_HDMI_AUDIO_SAMPLE_FREQ_STREAM,
    OT_HDMI_AUDIO_SAMPLE_FREQ_32000,
    OT_HDMI_AUDIO_SAMPLE_FREQ_44100,
    OT_HDMI_AUDIO_SAMPLE_FREQ_48000,
    OT_HDMI_AUDIO_SAMPLE_FREQ_88200,
    OT_HDMI_AUDIO_SAMPLE_FREQ_96000,
    OT_HDMI_AUDIO_SAMPLE_FREQ_176400,
    OT_HDMI_AUDIO_SAMPLE_FREQ_192000,
    OT_HDMI_AUDIO_SAMPLE_FREQ_BUTT
} ot_hdmi_audio_sample_freq;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_level_shift_val

【说明】

定义音频Shift信息枚举。

【定义】

typedef enum {
    OT_HDMI_LEVEL_SHIFT_VALUE_0_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_1_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_2_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_3_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_4_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_5_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_6_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_7_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_8_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_9_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_10_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_11_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_12_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_13_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_14_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_15_DB,
    OT_HDMI_LEVEL_SHIFT_VALUE_BUTT
} ot_hdmi_level_shift_val;

【成员】

无。

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_lfe_playback_level

【说明】

定义音频Playback信息枚举。

【定义】

typedef enum {
    OT_HDMI_LFE_PLAYBACK_NO,
    OT_HDMI_LFE_PLAYBACK_0_DB,
    OT_HDMI_LFE_PLAYBACK_10_DB,
    OT_HDMI_LFE_PLAYBACK_BUTT
} ot_hdmi_lfe_playback_level;

【成员】

无。

【注意事项】

设置枚举以外的值将返回OT_ERR_HDMI_INVALID_PARA。

【相关数据类型及接口】

ot_hdmi_eotf

【说明】

定义支持的EOTF能力结构体。

【定义】

typedef struct {
    td_bool eotf_sdr;
    td_bool eotf_hdr;
    td_bool eotf_smpte_st2084;
    td_bool eotf_hlg;
    td_bool eotf_future;
} ot_hdmi_eotf;

【成员】

成员名称

描述

eotf_sdr

是否支持Traditional Gamma - SDR Luminance Range

eotf_hdr

是否支持Traditional Gamma - HDR Luminance Range

eotf_smpte_st2084

是否支持SMPTE ST 2084中定义的EOTF类型

eotf_hlg

是否支持Hybrid Log-Gamma EOTF类型

eotf_future

保留

【注意事项】

无。

【相关数据类型及接口】

ot_hdmi_hdr_metadata_type

【说明】

定义支持metadata类型结构体。

【定义】

typedef struct {
    td_bool descriptor_type1;
} ot_hdmi_hdr_metadata_type;

【成员】

成员名称

描述

descriptor_type1

是否支持静态metadata 类型1

【注意事项】

HDR相关能力在SS528V100、SS625V100、SS524V100、SS522V101上不支持。

【相关数据类型及接口】

ot_hdmi_hdr_capability

【说明】

定义HDR能力结构体。

【定义】

typedef struct {
    ot_hdmi_eotf                  eotf;
    ot_hdmi_hdr_metadata_type     metadata;
    td_u8                         max_luma_cv;
    td_u8                         avg_luma_cv;
    td_u8                         min_luma_cv;
} ot_hdmi_hdr_capability;

【成员】

成员名称

描述

eotf

Sink支持的EOTF类型

metadata

Sink支持的metadata类型

max_luma_cv

Sink支持的最大亮度值

avg_luma_cv

Sink支持的帧平均亮度值

min_luma_cv

Sink支持的最小亮度值

【注意事项】

HDR相关能力在SS528V100、SS625V100、SS524V100、SS522V101上不支持。

【相关数据类型及接口】

ss_mpi_hdmi_get_sink_capability

ot_hdmi_hw_param

【说明】

HDMI指标参数结构体。

【定义】

typedef struct {
    td_u32 i_de_main_clk;
    td_u32 i_de_main_data;
    td_u32 i_main_clk;
    td_u32 i_main_data;
    td_u32 ft_cap_clk;
    td_u32 ft_cap_data;
} ot_hdmi_hw_param;

【成员】

成员名称

描述

i_de_main_clk

clk线的辅助区电流。

取值范围:[0, 43]

i_de_main_data

data线的辅助区电流。

取值范围:[0, 43]

i_main_clk

clk线的主区电流。

取值范围:(0, 43]

i_main_data

data线的主区电流。

取值范围:(0, 43]

ft_cap_clk

clk线的上升沿。

取值范围:[0, 4],其中"0"代表关闭上升沿调整,"1", "2", "3", "4"分别代表上升沿抬升距离交叉点的位置为:18ps, 35ps, 45ps, 55ps

ft_cap_data

data线的上升沿。

取值范围:[0, 4],其中"0"代表关闭上升沿调整,"1", "2", "3", "4"分别代表上升沿抬升距离交叉点的位置为:18ps, 35ps, 45ps, 55ps

【注意事项】

  • HDMI指标参数中上升沿参数在SS928V100、SS626V100上不建议设置,如果进行设置不会返回失败,但是设置不生效。

  • SS928V100、SS626V100的指标参数取值范围有变化。

    • 辅助区电流 取值范围:[0, 63]

    • 主区电流 取值范围:(0, 63]

【相关数据类型及接口】

ot_hdmi_hw_spec

【说明】

HDMI指标参数。

【定义】

typedef struct {
   ot_hdmi_hw_param hw_param[OT_HDMI_HW_PARAM_NUM];
} ot_hdmi_hw_spec;

【成员】

成员名称

描述

hw_param[OT_HDMI_HW_PARAM_NUM]

指标参数。

【相关数据类型及接口】

ot_hdmi_mod_param

【说明】

HDMI模块参数设置。

【定义】

typedef struct {
    ot_hdmi_trace_len  trace_len; /* Phy parameters selection. */
    td_bool emi_en; /* emi enable/disable */
} ot_hdmi_mod_param;

【成员】

成员名称

描述

trace_len

HDMI信号线在PCB板上的走线长度。

emi_en

展频使能开关

【相关数据类型及接口】

ot_hdmi_trace_len

【说明】

HDMI信号线在PCB板上的走线长度枚举。

  • OT_HDMI_TRACE_LEN_0表示1英寸,后续每个档位按照0.5英寸递增,即OT_HDMI_TRACE_LEN_1表示1.5英寸。

  • OT_HDMI_TRACE_DEFAULT表示默认配置。

  • 当前仅支持1-5英寸走线长度。

【定义】

typedef enum {
    OT_HDMI_TRACE_LEN_0,
    OT_HDMI_TRACE_LEN_1,
    OT_HDMI_TRACE_LEN_2,
    OT_HDMI_TRACE_LEN_3,
    OT_HDMI_TRACE_LEN_4,
    OT_HDMI_TRACE_LEN_5,
    OT_HDMI_TRACE_LEN_6,
    OT_HDMI_TRACE_LEN_7,
    OT_HDMI_TRACE_LEN_8,
    OT_HDMI_TRACE_DEFAULT,
    OT_HDMI_TRACE_BUTT
} ot_hdmi_trace_len;

【成员】

【相关数据类型及接口】

OT_HDMI_VENDOR_USER_DATA_MAX_LEN

【说明】

最大自定义vendor数据的长度。

【定义】

#define OT_HDMI_VENDOR_USER_DATA_MAX_LEN 22

【成员】

【相关数据类型及接口】

OT_HDMI_MAX_AUDIO_CAPBILITY_CNT

【说明】

能获取的音频能力个数。

【定义】

#define OT_HDMI_MAX_AUDIO_CAPBILITY_CNT     16

【成员】

【相关数据类型及接口】

OT_HDMI_MAX_SAMPLE_RATE_NUM

【说明】

音频采样率个数。

【定义】

#define OT_HDMI_MAX_SAMPLE_RATE_NUM     8

【成员】

【相关数据类型及接口】

OT_HDMI_MAX_BIT_DEPTH_NUM

【说明】

音频采样深度个数。

【定义】

#define OT_HDMI_MAX_BIT_DEPTH_NUM     6

【成员】

【相关数据类型及接口】

OT_HDMI_DETAIL_TIMING_MAX

【说明】

详细的视频制式信息个数。

【定义】

#define OT_HDMI_DETAIL_TIMING_MAX     10

【成员】

【相关数据类型及接口】

OT_HDMI_EDID_RAW_DATA_LEN

【说明】

EDID原始数据的长度。

【定义】

#define OT_HDMI_EDID_RAW_DATA_LEN     512

【成员】

【相关数据类型及接口】

OT_HDMI_HW_PARAM_NUM

【说明】

硬件参数的个数。

【定义】

#define OT_HDMI_HW_PARAM_NUM     4

【成员】

【相关数据类型及接口】

OT_HDMI_MANUFACTURE_NAME_LEN

【说明】

制造商名称的长度。

【定义】

#define OT_HDMI_MANUFACTURE_NAME_LEN     4

【成员】

【相关数据类型及接口】

错误码

HDMI API错误码如下所示。

表 1 HDMI API错误码

错误代码

宏定义

描述

0xa0288001

OT_ERR_HDMI_NOT_INIT

HDMI未初始化

0xa0288002

OT_ERR_HDMI_INVALID_PARA

参数非法

0xa0288003

OT_ERR_HDMI_NULL_PTR

空指针

0xa0288004

OT_ERR_HDMI_DEV_NOT_OPEN

HDMI未打开

0xa0288005

OT_ERR_HDMI_DEV_NOT_CONNECT

HDMI设备未连接

0xa0288006

OT_ERR_HDMI_READ_SINK_FAILED

HDMI读取Sink端失败

0xa0288007

OT_ERR_HDMI_INIT_ALREADY

HDMI已经初始化

0xa0288008

OT_ERR_HDMI_CALLBACK_ALREADY

HDMI回调已注册

0xa0288009

OT_ERR_HDMI_INVALID_CALLBACK

回调函数无效

0xa028800a

OT_ERR_HDMI_FEATURE_NO_SUPPORT

功能不支持

0xa028800b

OT_ERR_HDMI_BUS_BUSY

总线忙

0xa028800c

OT_ERR_HDMI_READ_EVENT_FAILED

事件读失败

0xa028800d

OT_ERR_HDMI_NOT_START

HDMI没有启动

0xa028800e

OT_ERR_HDMI_READ_EDID_FAILED

HDMI读取EDID失败

0xa028800f

OT_ERR_HDMI_INIT_FAILED

HDMI初始化失败

0xa0288010

OT_ERR_HDMI_CREATE_TESK_FAILED

HDMI内核创建任务失败

0xa0288011

OT_ERR_HDMI_MALLOC_FAILED

HDMI分配内存失败

0xa0288012

OT_ERR_HDMI_FREE_FAILED

HDMI释放内存失败

0xa0288013

OT_ERR_HDMI_PTHREAD_CREATE_FAILED

HDMI创建线程失败

0xa0288014

OT_ERR_HDMI_PTHREAD_JOIN_FAILED

HDMI等待线程结束失败

0xa0288015

OT_ERR_HDMI_STRATEGY_FAILED

HDMI内核自适应策略失败

0xa0288016

OT_ERR_HDMI_SET_ATTR_FAILED

HDMI设置属性失败

0xa0288017

OT_ERR_HDMI_CALLBACK_NOT_REGISTER

HDMI回调没有注册

0xa0288018

OT_ERR_HDMI_UNKNOWN_COMMAND

HDMI未知命令

0xa0288019

OT_ERR_HDMI_MUTEX_LOCK_FAILED

HDMI加锁失败

Proc调试信息

【HDMI软硬件总体状态调试信息】

须知: 解决方案不支持的规格,该部分proc信息无效。

# cat /proc/umap/hdmi0

[HDMI] Version: [V1.0.0.0 B010 Release], Build Time[Sep  6 2019, 10:49:13]

HDMI version:   2.0.0.20190620.0

----------------------------- app attr ----------------------------------
hdmie enable        : YES                 audio enable        : YES                 
auth mode enable    : NO                  deep color mode     : 24                 
deep color adapt    : NO                  
----------------------------- sw status ---------------------------------
thread run          : YES                 run status          : OPEN START
tmds mode           : HDMI1.4             kernel cnt          : 0                   
user cnt            : 1                   kernel callback     : NO                 
user callback cnt   : 1                   transit state       : BOOT->APP
emi enable          : NO                  pcb len             : 0                   
----------------------------- hw status ---------------------------------
hot plug            : YES                 rsen                : NO                 
phy output enable   : NO                  phy power enable    : NO                  
tmds mode           : HDMI1.4             avmute              : NO
emi enable          : NO                  src_scramble        : YES                 
sink_scramble       : YES                 tmds_bit_clk_ratio  : 40
---------------------------- detect timming -----------------------------
sync sw enable      : NO                  hsync polarity      : P                   
progressive         : YES                 vsync polarity      : P                  
hsync total         : 1650                hactive cnt         : 1280
vsync total         : 750                 vactive cnt         : 720                 
---------------------- task id=1112 event pool[0] status --------------------------
cnt|err total|hpd|unhpd|edid fail |rsen con|rsen dis
wr:|0      |0  |0    |0       |0      |0       
rd:|0      |0  |0    |0       |0      |0       
memory[wkflg=0 |rdable= 0| rdptr=0 | wrptr=0 ]: 
 
---------------------------- spec info ----------------------------------
                user_seting                    |default_seting   |cur_seting   
stage         |first |second|third |fourth |first |second|third |fourth|
i_de_main_clk |0     |0     |0     |0      |0     |0     |0     |0     |0            
i_de_main_data|1     |1     |1     |1      |1     |1     |1     |1     |1            
i_main_clk    |20    |20    |20    |21     |20    |20    |20    |21    |20           
i_main_data   |27    |27    |28    |33     |27    |27    |28    |33    |28           
ft_cap_clk    |0     |0     |0     |0      |0     |0     |0     |0     |0            
ft_cap_data   |0     |0     |3     |0      |0     |0     |3     |0     |3  

【调试信息分析】

记录HDMI输出管理模块信息。

【参数说明】

Parameter

Description

app attr

hdmie enable

是否使能HDMI模式。

取值:{YES, NO}

audio enable

当前用户是否使能音频。

取值:{YES, NO}

deep color mode

当前用户设置的图像色彩深度。

取值:{24, 30, 36, 48, OFF, UNKNOWN}

deep color adapt

当前用户是否使能DeepColor自适应策略。

取值:{YES, NO}

auth mode enable

是否使能认证模式。

取值:{YES, NO}

sw status

thread run

当前HDMI驱动线程是否运行。

取值:{YES, NO}

run status

HDMI运行状态。

取值:{NONE, OPEN, START, STOP, CLOSE}

tmds mode

当前TMDS工作模式。

取值:{NONE, DVI, HDMI1.4, HDMI2.0, AUTO, HDMI2.1, UNKNOWN}

kernel cnt

Kernel下打开HDMI设备的计数。

user cnt

用户打开HDMI设备的计数。

kernel callback

HDMI回调是否被注册。

取值:{YES, NO}

user callback cnt

用户回调次数。

transit state

启动过程状态记录。

取值:{NONE, BOOT->MCE, MCE->APP, BOOT->APP}

emi enable

是否使能展频功能。

取值:{YES, NO}

pcb len

HDMI走线参数信息。

取值:[0, 9]

hw status

hot plug

硬件Hotplug状态。

取值:{YES, NO}

rsen

硬件Rsen状态。

取值:{YES, NO}

phy output enable

HDMI Phy是否已打开。

取值:{YES, NO}

phy power enable

HDMI Phy是否已上电。

取值:{YES, NO}

tmds mode

当前硬件TMDS工作模式。

取值:{NONE, DVI, HDMI1.4, HDMI2.0, AUTO, UNKNOWN}

avmute

当前是否使能音视频Mute(显示端)。

取值:{YES, NO}

emi

当前硬件展频状态。

取值:{YES, NO}

src_scramble

源端加扰状态。

注意:目前只有SS528V100有此信息。

sink_scramble

sink端加扰状态。

注意:目前只有SS528V100有此信息。

tmds_bit_clk_ratio

源端tmds时钟速率。

注意:目前只有SS528V100有此信息。

detect timming

sync sw enable

是否使用软件极性配置。

取值:{YES, NO}

hsync polarity

Hsync极性逻辑检测值。

取值:{P, N}

progressive

当前是否逐行输出。

取值:{YES, NO}

vsync polarity

Vsync极性逻辑检测值。

取值:{P, N}

hsync total

行总像素点数逻辑检测值。

hactive cnt

行有效像素点逻辑检测值。

vsync total

场总行数逻辑检测值。

vactive cnt

场有效行数逻辑检测值。

emi enable

展频使能标志。

取值:{YES, NO}

emi debug enable

展频调试模式使能标志。

取值:{YES, NO}

task id event pool status

err total

失败事件总次数。

hpd

热插拔事件-插入次数。

unhpd

热插拔事件-拔出次数。

edid fail

EDID读取失败次数。

rsen con

Rsen连接次数。

rsen dis

Rsen断开次数。

wkflg

唤醒标志。

rdable

事件池中可读事件数。

rdptr

事件池中事件读指针。

wrptr

事件池中事件写指针。

spec info

user_seting

用户设置的指标参数。

default_seting

驱动默认的指标参数。

cur_seting

驱动实际设置的指标参数。

注:

  • N/A/NONE/UNKNOWN为未知/无效;reserved为保留/未知;ERROR为错误。

  • spec info的stage栏中first、second、third、fourth分别表示四个频段。

须知: 注意avmute与下面的audio mute、video mute的区别:

  • avmute是由TX发送给RX的一个标准的协议包,RX在接收到该数据包后会自动mute自身的音视频输出。proc里的avmute状态表示的是TX是否有发送avmute包。

  • audio mute、video mute是TX实现的一个功能,主要目的是用于调试的场景,其状态反应的是TX音视频数据的输出情况。

【HDMI音频调试信息】

# cat /proc/umap/hdmi0_ao 
 
[HDMI] Version: [V1.0.0.0 B010 Release], Build Time[Sep  6 2019, 10:49:13]
 
HDMI version:   2.0.0.20190620.0
------------ audio attr ------------------------- audio info ----------
sound intf          : I2S                  |audio info enable   : YES                  
code type           : STREAM               |code type           : STREAM               
channel cnt         : 2_CH                 |channel cnt         : 2_CH                 
sample freq         : 48000                |sample freq         : STR_HEADER           
sample depth        : 16                   |sample depth        : 16                   
down sample         : NO                   |sample size         : STR_HEADER           
---------------- audio path ---------------|down mix inhibit    : NO                   
audio enable        : YES                  |level shift value   : 0                    
audio mute          : NO                   |lfe playback        : UNKNOWN              
sound intf          : I2S                  |channel/speakeralloc: 0x00 (0)
channel cnt         : 2_CH                 |audio info raw data : 
sample freq         : 48000                | 84 01 0a 70  01 00 00 00 
sample depth        : 16                   | 00 00 00 00  00 00 
down sample         : NO                   |
ref cts             : 74250                |
reg cts             : 152062               |
ref n               : 6144                 |
reg n               : 6144                 | 

【调试信息分析】

记录当前HDMI音频工作状态。

【参数说明】

Parameter

Description

audio attr

sound intf

用户配置的HDMI音频接口类型。

取值:{I2S, SPDIF, HBRA, UNKNOWN}

code type

音频编码类型。

取值:{STREAM, L-PCM, AC3, MPEG1, MP3, MPEG2, AAC_LC, DTS, ATRAC, OneBitAudio, EAC3, DTS-HD, MAT, DST, WMA_PRO, Reserved, UNKNOWN}

注:详见《 EIA-CEA-861-D(F)》。

channel cnt

音频通道数。

取值:{STR_HEADER, 2_CH, 3_CH, 4_CH, 5_CH, 6_CH, 7_CH, 8_CH}

注:详见《EIA-CEA-861-D(F)》。

sample freq

音频采样频率。

注:SSxx仅支持32000Hz、44100Hz、48000Hz采样率

sample depth

采样深度(位宽)。

down sample

是否降采样。

取值:{YES, NO}

audio info

audio info enable

音频信息帧是否使能。

取值:{YES, NO}

code type

音频编码类型。

取值:{ STREAM, L-PCM, AC3, MPEG1, MP3, MPEG2, AAC_LC, DTS, ATRAC, OneBitAudio, EAC3, DTS-HD, MAT, DST, WMA_PRO, Reserved, UNKNOWN}

注:详见《 EIA-CEA-861-D(F)》。

channel cnt

音频通道数。

取值:{STR_HEADER, 2_CH, 3_CH, 4_CH, 5_CH, 6_CH, 7_CH, 8_CH}

注:详见《 EIA-CEA-861-D(F)》。

sample freq

音频采样频率。

取值:{ STR_HEADER, 32KHz, 44.1KHz, 48KHz , 88.2KHz , 96KHz, 176.4KHz, 192KHz }

注:SSxx目前仅支持32KHz, 44.1KHz, 48KHz采样率。

sample depth

采样深度。

sample size

采样大小(位宽)。

取值:{STR_HEADER, 16bit, 20bit, 24bit}

down mix inhibit

Down-mix Inhibit 标志位。

取值:{YES, NO}

注:详见《 EIA-CEA-861-D(F)》。

level shift value

Level Shift Value。

取值:{0~15 dB}

注:详见《 EIA-CEA-861-D(F)》。

lfe playback

LFE playback level information,LFE播放等级信息。

取值:{UNKNOWN, 0dB, +10dB, Reserved}

注:详见《 EIA-CEA-861-D(F)》。

channel/speakeralloc

Channel/Speaker分配。

取值:{0x00~0xff}

注:以十六进制/十进制显示,详见《 EIA-CEA-861-D(F)》。

audio info raw data

AudioInfoframe原始数据

audio path

audio enable

HDMI硬件音频是否使能。

取值:{YES, NO}

audio mute

音频Mute是否使能。

取值:{YES, NO}

sound intf

音频接口类型。

取值:{I2S, SPDIF, HBRA, UNKNOWN}

注:SSxx目前只支持I2S。

channel cnt

当前音频输出通道数。

取值:{STR_HEADER, 2_CH, 3_CH, 4_CH, 5_CH, 6_CH, 7_CH, 8_CH}

注:详见《 EIA-CEA-861-D(F)》。

sample freq

当前音频采样频率。

注:SSxx仅支持32000Hz、44100Hz、48000Hz采样率。

sample depth

当前音频采样深度。

down sample

当前音频是否降采样。

取值:{YES, NO}

ref cts

协议规定理论CTS值。

reg cts

实际输出的CTS值

注:详见《 EIA-CEA-861-D(F)》。

ref n

协议规定理论N值。

reg n

实际输出N值

注:详见《EIA-CEA-861-D(F)》。

注:N/A/NONE/UNKNOWN为未知/无效;reserved为保留/未知;ERROR为错误。

【HDMI视频调试信息】

# cat /proc/umap/hdmi0_vo 
 
[HDMI] Version: [V1.0.0.0 B010 Release], Build Time[Sep  6 2019, 10:49:13]
 
HDMI version:   2.0.0.20190620.0
--------------------- video attr -------------- avi info ----------------
video timing        : 1280*720p60 16:9     |avi infoframe enable: YES                  
disp fmt            : 720P@60              |current format      : 1280*720p60 16:9(vic= 4)
pixel clk           : 74250                |vsif format         : (HDMI vic= 0)
in bit depth        : 10 bit               |bar data present    : NONE                 
in color space      : YCBCR444             |color space         : YCBCR444             
colorimetry         : ITU-R BT.709         |colorimetry         : ITU-R BT.709         
pic aspect ratio    : 16:9                 |pic aspect ratio    : 16:9                 
act aspect ratio    : PICTURE              |act aspect ratio    : PICTURE              
pixel repeat        : 1                    |pixel repeat        : no repetition        
ycc quantization    : LIMITED              |ycc quantization    : LIMITED              
rgb quantization    : DEFAULT              |rgb quantization    : DEFAULT              
ext colorimetry     : XV_YCC601            |ext colorimetry     : XV_YCC601            
stereo mode         : NONE                 |it content valid    : NO                   
vsync pol           : 0                    |hsync pol           : 0                    
------------ video path -------------------|it content type     : GRAPHICS             
video mute          : NO                   |pic scaling         : UNKNOWN              
out bit depth       : 08 bit               |act fmt present     : YES                  
out color space     : YCBCR444             |scan info           : NONE                 
ycbcr420_422        : NO                   |avi info raw data   :
ycbcr422_444        : NO                   | 82 02 0d 73  50 a8 00 04 
ycbcr444_422        : NO                   | 00 00 00 00  00 00 00 00 
ycbcr422_420        : NO                   | 00 
rgb2ycbcr           : NO                   |vsif info raw data  :
ycbcr2rgb           : NO                   | 81 01 07 68  03 0c 00 00 
dither              : 10_8                 | 00 00 00 
deep color mode     : 24 bit(OFF)          | 

【调试信息分析】

记录当前HDMI视频工作状态。

【参数说明】

Parameter

Description

video attr

video timing

当前视频时序。

注:详见《EIA-CEA-861-D(F)》、《VESA Display Monitor Timing Standard》。

disp fmt

当前视频制式。

注:详见《EIA-CEA-861-D(F)》、《VESA Display Monitor Timing Standard》。

pixel clk

像素时钟。

注:详见《EIA-CEA-861-D(F)》、《VESA Display Monitor Timing Standard》。

in bit depth

VO输出给HDMI视频色深。

取值:{8bit, 10bit, 12bit, 16bit, UNKNOWN}

注: UNKNOWN为未知。

in color space

VO输出给HDMI的颜色空间。

取值:{RGB, YCbCr422, YCbCr444, YCbCr420, UNKNOWN}

注: UNKNOWN为未知。

colorimetry

VO输出给HDMI的色域。

取值:{No Data, SMPTE 170M, ITU-R BT.709, Extended }

pic aspect ratio

输入视频的宽高比。

取值:{ NONE, 4:3, 16:9, FUTURE, UNKNOWN}

注: UNKNOWN为未知。

act aspect ratio

输入视频有效图像的宽高比。

取值:{ Reserved, 16:9_TOP, 14:9_TOP, 16:9_CENTER, PICTURE, 4:3, 16:9, 14:9, 4:3_SP_14_9, 16:9_SP_14_9, 16:9_SP_4_3, UNKNOWN}

注: UNKNOWN为未知。

pixel repeat

像素Repeat次数。

ycc quantization

YCC量化范围。

取值:{LIMITED, FULL, UNKNOWN}

注: UNKNOWN为未知。

rgb quantization

RGB量化范围。

取值:{DEFAULT, LIMITED, FULL, UNKNOWN}

注:UNKNOWN为未知。

ext colorimetry

输入图像扩展色域。

取值:{XV_YCC601, XV_YCC709, S_YCC601, ADOBE_YCC601, ADOBE_RGB, BT2020_cYCC, BT2020_RGB/YCC, UNKNOWN}

stereo mode

StereoMode

取值:{FRAME_PACK, FIELD_ALTER, LINE_ALTERN, SBS_FULL, L_DEPTH, L_DEPTH_GGD, TAndB, Reserved, SByS_HALF, NONE}

注:NONE为未知。

vsync pol

HDMI是否使能垂直反向。

取值:{0, 1}

video path

video mute

HDMI硬件是否使能视频Mute。

取值:{YES, NO}

out bit depth

输出视频色深。

取值:{8bit, 10bit, 12bit, 16bit, UNKNOWN}

out color space

输出图像颜色空间

取值:{RGB, YCbCr422, YCbCr444, YCbCr420, UNKNOWN}

ycbcr420_422

颜色空间是否有进行YCbCr420到YCbCr422转换

取值:{YES, NO}

ycbcr422_444

颜色空间是否有进行YCbCr422到YCbCr444转换。

取值:{YES, NO}

ycbcr444_422

颜色空间是否有进行YCbCr444到YCbCr422转换。

取值:{YES, NO}

ycbcr422_420

颜色空间是否有进行YCbCr422到YCbCr420转换。

取值:{YES, NO}

rgb2ycbcr

颜色空间是否有进行RGB到YCbCr的转换。

取值:{YES, NO}

ycbcr2rgb

颜色空间是否有进行YCbCr到RGB的转换。

取值:{YES, NO}

dither

Dither工作模式。

取值:{12_10, 12_8, 10_8, disable}

deep color mode

逻辑工作的DeepColor模式。

取值:{24 bit, 30 bit, 36 bit, 48 bit, 24 bit(OFF), UNKNOWN}

avi info

avi infoframe enable

AVI信息帧是否使能。

取值:{YES, NO}

current format

当前视频制式/VIC码。

注:详见《 EIA-CEA-861-D(F)》。

vsif format

4k非3D制式/VIC码。

注:详见《HDMI Specification 2.0》

bar data present

Bar信息。

取值:{NONE, HnVp, HpVn, HpVp}

注::H, horizontal 水平;V, vertical垂直;p, positive 正;n, negative 负;详见《EIA-CEA-861-D(F)》。

color space

视频颜色空间。

取值:{RGB, YCbCr422, YCbCr444, YCbCr420, UNKNOWN}

注:UNKNOWN为未知。

colorimetry

色域。

取值:{ No Data, SMPTE 170M, ITU-R BT.709, Extended }

pic aspect ratio

视频的宽高比。

取值:{NONE, 4:3, 16:9, FUTURE, UNKNOWN}

注:UNKNOWN为未知。

act aspect ratio

视频有效图像的宽高比。

取值:{ Reserved, 16:9_TOP, 14:9_TOP, 16:9_CENTER, PICTURE, 4:3, 16:9, 14:9, 4:3_SP_14_9, 16:9_SP_14_9, 16:9_SP_4_3, UNKNOWN}

注:UNKNOWN为未知。

pixel repeat

像素Repeat次数。

ycc quantization

YCC量化范围。

取值:{LIMITED, FULL, UNKNOWN}

注:UNKNOWN为未知。

rgb quantization

RGB量化范围。

取值:{DEFAULT, LIMITED, FULL, UNKNOWN}

注:UNKNOWN为未知。

ext colorimetry

图像扩展色域。

取值:{XV_YCC601, XV_YCC709, S_YCC601, ADOBE_YCC601, ADOBE_RGB, BT2020_YCC, BT2020_RGB/YCC, UNKNOWN}

注: UNKNOWN为未知。

it content valid

IT Content是否有效。

取值:{YES, NO}

注:详见《EIA-CEA-861-D(F)》。

hsync pol

是否使能水平反向。

取值:{0, 1}

it content type

IT Content类型。

取值:{GRAPHICS, PHOTO, CINEMA, GAME}

pic scaling

图像均衡。

取值:{UNKNOWN, HpVn, HnVp, HpVp}

注::H, horizontal 水平;V, vertical垂直;p, positive 正;n, negative 负;详见《EIA-CEA-861-D(F)》。

act fmt present

有效信息是否显示。

取值:{YES, NO}

注:详见《EIA-CEA-861-D(F)》。

scan info

Scan标志位

取值:{NONE, OVER_SCAN, UNDERS_SCAN, Reserved}

avi info raw data

AVI 信息帧原始数据。

vsif info raw data

VSIF信息帧原始数据。

注:N/A/NONE/UNKNOWN为未知/无效;reserved为保留/未知;ERROR为错误。

【EDID调试信息】

# cat /proc/umap/hdmi0_sink
 
[HDMI] Version: [V1.0.0.0 B010 Release], Build Time[Sep  6 2019, 10:49:13]
 
HDMI version:   2.0.0.20190620.0
 
------------------------------ edid raw data ----------------------------
/* 00H: */ 0x00,0xff,0xff,0xff,  0xff,0xff,0xff,0x00,  0x10,0xac,0x16,0xf0,  0x4c,0x45,0x43,0x41,  
/* 0fH: */ 0x1c,0x15,0x01,0x03,  0x80,0x34,0x20,0x78,  0xea,0x1e,0xc5,0xae,  0x4f,0x34,0xb1,0x26,  
/* 1fH: */ 0x0e,0x50,0x54,0xa5,  0x4b,0x00,0x81,0x80,  0xa9,0x40,0xd1,0x00,  0x71,0x4f,0x01,0x01,  
/* 2fH: */ 0x01,0x01,0x01,0x01,  0x01,0x01,0x28,0x3c,  0x80,0xa0,0x70,0xb0,  0x23,0x40,0x30,0x20,  
/* 3fH: */ 0x36,0x00,0x06,0x44,  0x21,0x00,0x00,0x1a,  0x00,0x00,0x00,0xff,  0x00,0x38,0x32,0x57,  
/* 4fH: */ 0x58,0x44,0x31,0x37,  0x34,0x41,0x43,0x45,  0x4c,0x0a,0x00,0x00,  0x00,0xfc,0x00,0x44,  
/* 5fH: */ 0x45,0x4c,0x4c,0x20,  0x55,0x32,0x34,0x31,  0x30,0x0a,0x20,0x20,  0x00,0x00,0x00,0xfd,  
/* 6fH: */ 0x00,0x38,0x4c,0x1e,  0x51,0x11,0x00,0x0a,  0x20,0x20,0x20,0x20,  0x20,0x20,0x01,0x1c,  
/* 7fH: */ 0x02,0x03,0x29,0xf1,  0x50,0x90,0x05,0x04,  0x03,0x02,0x07,0x16,  0x01,0x1f,0x12,0x13,  
/* 8fH: */ 0x14,0x20,0x15,0x11,  0x06,0x23,0x09,0x07,  0x07,0x67,0x03,0x0c,  0x00,0x10,0x00,0x38,  
/* 9fH: */ 0x2d,0x83,0x01,0x00,  0x00,0xe3,0x05,0x03,  0x01,0x02,0x3a,0x80,  0x18,0x71,0x38,0x2d,  
/* afH: */ 0x40,0x58,0x2c,0x45,  0x00,0x06,0x44,0x21,  0x00,0x00,0x1e,0x01,  0x1d,0x80,0x18,0x71,  
/* bfH: */ 0x1c,0x16,0x20,0x58,  0x2c,0x25,0x00,0x06,  0x44,0x21,0x00,0x00,  0x9e,0x01,0x1d,0x00,  
/* cfH: */ 0x72,0x51,0xd0,0x1e,  0x20,0x6e,0x28,0x55,  0x00,0x06,0x44,0x21,  0x00,0x00,0x1e,0x8c,  
/* dfH: */ 0x0a,0xd0,0x8a,0x20,  0xe0,0x2d,0x10,0x10,  0x3e,0x96,0x00,0x06,  0x44,0x21,0x00,0x00,  
/* efH: */ 0x18,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x00,  0x00,0x00,0x00,0x3e,
-------------------------------- sw status ------------------------------
cap from sink       : YES                  raw update err cnt  : 0                    
cap is valid        : YES                  parse error type    : 0                    
raw is valid        : YES                  parse warn type     : 0x00000000
raw get err cnt     : 0                    raw length          : 256                  
-------------------------------- basic cap ------------------------------
hdmi1.4 support     : YES                 1st block version   : 1.3
hdmi2.0 support     : NO                  manufacturer name   : DEL                 
max tmds clock(MHz) : 225                 product code        : 61462               
serial number       : 1094927692          week of manufacture : 28                  
max disp width      : 52                  maxdisp height      : 32                  
scdc support        : NO                  year of manufacture : 2011                
dvi dual support    : NO                  cec addr is valid   : YES                 
ai support          : NO                  cec addr            : 01.00.00.00
ext block cnt       : 1                   speaker support     : FL_FR           
rgb quan selectable : NO                  ycc quan selectable : NO                  
-------------------------------- video cap ------------------------------
native format       : 1080P_60 16:9(vic 16)
color space         : rgb444 ycbcr444 ycbcr422
deep color          : rgb_30bit rgb_36bit ycbcr444_samergb
ycbcr420 deep color :
ycbcr420[also]      :
ycbcr420[olny]      :
colorimetry         : xvycc601 xvycc709
-------------------------------- format cap -----------------------------
1080P_60 16:9       1080i_60 16:9       720P_60 16:9        480P_60 16:9        
480P_60 4:3         NTSC 16:9           PAL 16:9            640X480_60 4:3      
1080P_50 16:9       576P_50 16:9        720P_50 16:9        1080i_50 16:9       
1080P_24 16:9       PAL 4:3             576P_50 4:3         NTSC 4:3            
1280x1024_60        1600x1200_60        1920x1200_60        1152x864_75         
V800X600_60         V800X600_56         V640X480_75         V640X480_72         
V640X480_67         V640X480_60         V720X400_88         V720X400_70         
 
---------------------------------- audio cap ----------------------------
NO.0:
code type           : L-PCM               max channel num     : 2                   
max bit rate(KHz)   : N/A                 bit depth           : 16 20 24
sample rate(Hz)     : 32000 44100 48000
------------------------------------ detail timing --------------------------------------
[NO.]:hact|vact|p/i |pclk|aspw|asph|hfb |hpw |hbb |vfb |vpw |vbb |img_w|img_h|ihs |ivs |idv 
[  0]:1920|1200|P   |154m|0   |0   |48  |32  |112 |3   |6   |32  |518  |324  |YES |NO  |NO   
[  1]:1920|1080|P   |148m|0   |0   |88  |44  |192 |4   |5   |41  |518  |324  |YES |YES |NO   
[  2]:1920|540 |I   |74 m|0   |0   |88  |44  |192 |2   |5   |20  |518  |324  |YES |YES |NO   
[  3]:1280|720 |P   |74 m|0   |0   |110 |40  |260 |5   |5   |25  |518  |324  |YES |YES |NO   
[  4]:720 |480 |P   |27 m|0   |0   |16  |62  |122 |9   |6   |36  |518  |324  |NO  |NO  |NO 

【调试信息分析】

记录当前显示设备的EDID。

【参数说明】

Parameter

Description

edid raw data

-

EDID原始数据,长度256Bytes

sw status

cap from sink

能力集是否来自显示设备(SINK)。

取值:{YES, NO}

注:能力集可能来自用于测试的数据,此时指示NO。

raw update err cnt

原始数据更新错误次数。

cap is valid

能力集是否有效。

取值:{YES, NO}

parse error type

EDID解析错误标志。

取值:

0:无错误;

1:校验错误;

2:数据头错误;

3:基础数据块为非1.3版本;

4:扩展数据块TAG值未知;

5:CEA值无效;

6及以上,保留值。

raw is valid

原始数据是否有效。

取值:{YES, NO}

parse warn type

EDID解析警告标志。

取值:{0x00000000~0xffffffff}

取值中每bit表示一类警告,见下

Bit0:无警告;

Bit1:VENDOR块无效;

Bit2:DTD块数量溢出;

Bit3:DTD块非法;

Bit4:无扩展块;

Bit5:扩展块数量大于4;

Bit6:AUDIO块数量溢出;

Bit7:VIC个数溢出;

Bit8:VIC非法;

Bit9:VSDB非法;

Bit10:HFVSDB非法;

Bit11:SPEAKER DB非法;

Bit12:YCBCR420 VIC数量溢出;

Bit13:数据块长度非法。

Bit14~Bit31:保留。

raw get err cnt

原始数据获取失败次数。

raw length

原始数据长度。

basic cap

HDMI1.4 support

Sink端是否支持HDMI1.4。

取值:{YES, NO}

1st block version

EDID第一块版本号。

HDMI2.0 support

是否支持HDMI2.0

取值:{YES, NO}

manufacturer name

Sink端厂商名。

max tmds clock(MHz)

最大TMDS时钟。

注:详见《EIA-CEA-861-D(F)》。

product code

Sink端产品号。

serial number

Sink产品序列号。

week of manufacture

Sink端产品制造周。

注:详见《EIA-CEA-861-D(F)》。

max disp width

Sink最大显示的水平宽度(单位:厘米)。

max disp height

Sink最大显示的垂直高度(单位:厘米)。

SCDC support

Sink端是否支持SCDC。

取值:{YES, NO}

year of manufacture

Sink端产品制造年份。

dvi dual support

Sink端是否支持DVI Dual。

cec addr is valid

Sink端CEC地址是否有效。

取值:{YES, NO}

AI support

Sink端是否支持AI。

取值:{YES, NO}

cec addr

CEC物理地址。

ext block cnt

EDID扩展块数量。

speaker support

Sink端支持的扬声器。

取值:{ FL_FR, LFE, FC, RL_RR, RC, FLC_FRC, RLC_RRC, FLW_FRW, FLH_FRH, TC, FCH, UNKNOWN}

注:详见《EIA-CEA-861-D(F)》。

rgb quan selectable

Sink端是否支持RGB量化范围可选。

取值:{YES, NO}

ycc quan selectable

Sink端是否支持YCbCr量化范围可选。

取值:{YES, NO}

video cap

native format

显示设备的最佳制式/VIC码。

注:详见《EIA-CEA-861-D(F)》。

color space

显示设备支持的颜色空间。

取值:{ RGB444, YCbCr444, YCbCr422, YCbCr420}

注:详见《EIA-CEA-861-D(F)》。

deep color

支持的深色位数。

取值:{RGB_30Bit, RGB_36Bit, RGB_48Bit, YCbCr444_SameRGB}

注:详见《EIA-CEA-861-D(F)》。

ycbcr420 deep color

支持YCbCr420的深色位数。

取值:{ 30Bit, 36Bit, 48Bit}

注:详见《EIA-CEA-861-D(F)》。

ycbcr420[also]

除RGB、YCbCr444、YCbCr422外,同时支持YCbCr420的VIC码。

注:详见《EIA-CEA-861-D(F)》。

ycbcr420[olny]

只支持YCbCr420 的VIC码。

注:详见《EIA-CEA-861-D(F)》。

colorimetry

Colorimetry色域。

取值:{ xvYCC601, xvYCC709, sYCC601 ,AdobleYCC601, AdobleRGB, BT2020cYCC, BT2020YCC, BT2020RGB}

注:详见《EIA-CEA-861-D(F)》。

format cap

-

Sink端支持哪些制式。

注:详见《EIA-CEA-861-D(F)》、《VESA Display Monitor Timing Standard》

audio cap

NO.x:

编号x

code type

编码类型。

取值:{STREAM, L-PCM, AC3, MPEG1, MP3, MPEG2, AAC_LC, DTS, ATRAC, OneBitAudio, EAC3, DTS-HD, MAT, DST, WMA_PRO, Reserved, UNKNOWN}

注:详见《EIA-CEA-861-D(F)》。

max channel num

最大通道数。

max bit rate(KHz)

最大bit速率。

bit depth

支持的Bit深度。

取值:{0, 8, 16, 18, 20, 24, 32, N/A}

sample rate(Hz)

采样速率。

取值:{0, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000, 768000}

detail timing

NO.

编号

hact

水平有效像素

vact

垂直有效像素

P/I

逐/隔行

pclk

像素时钟

aspw

宽高比-宽

asph

宽高比-高

hfb

水平消隐前肩

hpw

水平脉冲宽度

hbb

水平消隐后肩

vfb

垂直消隐前肩

vpw

垂直同步信号的宽度

vbb

垂直消隐后肩

img_w

图像宽

img_h

图像高

ihs

水平有效信号的极性,配置0为高有效,配置1为低有效

ivs

垂直有效信号的极性,配置0为高有效,配置1为低有效

idv

数据有效信号的极性。配置0为高有效,配置1为低有效

注:N/A/NONE/UNKNOWN为未知/无效;reserved为保留/未知;ERROR为错误。

Debug调试

当出现问题时,可通过Debug调试辅助完成一些实验,帮助快速定位问题原因。

须知:

  • Debug命令属于高级调试接口,无特殊原因请不要使用。

  • 正常情况下请勿使用,否则可能导致显示异常或无显示。

  • SS626V100在使用Debug调试时,写入路径/proc/umap/argv中的argv取值为[hdmi0, hdmi1],两个取值代表着对不同HDMI口进行调试。

【HDMI Debug调试命令】

  • help (h)

    命令:echo help > /proc/umap/hdmi0

    功能:查看当前支持的debug命令、命令编号以及简化命令。

    参数说明:无

    说明:每条命令有对应的简化命令以及编号,使用时可选择使用命令全称、简化命令以及命令对应的编号。

  • thread (t)

    命令:echo thread argv1 > /proc/umap/hdmi0

    功能:内核线程启动与停止。

    参数说明:argv1取值[0, 1],0表示停止运行,1表示启动运行。

  • oe (o)

    命令:echo oe argv1 > /proc/umap/hdmi0

    功能:HDMI OE打开与关闭。

    参数说明:argv1取值[0, 1],0表示关闭输出,1表示打开输出。

  • event (e)

    命令:echo event argv1 > /proc/umap/hdmi0

    功能:软件模拟产生事件。

    参数说明如表1

表 1 event命令参数说明

argv1

说明

16

HPD,产生HotPlug事件

17

HOTUNPLUG,产生UN-HotPlug事件

18

EDID_FAIL,产生EDID失败事件

21

RSEN_CONNECT,产生connect事件

22

RSEN_DISCONNECT,产生disconnect事件

25

SCRAMBLE_FAIL,产生加扰失败注销事件

26

SCRAMBLE_SUCCESS,产生加扰成功注销事件

27

ZERO_DRM_TIMEOUT,产生全0信息帧发送超时事件

28

HDR_SWITCH_TIMEOUT,产生HDR模式切换事件

  • edid (ed)

    命令:echo edid argv1 argv2 > /proc/umap/hdmi0

    功能:EDID调试。

    参数说明如表2所示。

表 2 edid命令参数说明

argv1

argv2

说明

0 (s)

任意值

从sink端读取EDID

1 (f)

EDID文件路径

EDID原始数据文件路径,软件加载EDID数据

  • avmute (a)

    命令:echo avmute argv1 > /proc/umap/hdmi0

    功能:AVMUTE开关。

    参数说明:argv1取值[0, 1],0表示发clear AVMUTE包,1表示发AVMUTE包。

  • cbar (c)

    命令:echo cbar argv1 > /proc/umap/hdmi0

    功能:colorbar开关。

    参数说明:argv1取值[0, 1],0表示关闭colorbar,1表示打开colorbar。

  • scdc (sc)

    命令:echo scdc argv1 argv2 argv3 > /proc/umap/hdmi0

    功能:SCDC调试。

    须知: SS625V100、SS524V100、SS522V101均不支持SCDC。

参数说明:

参数说明如表3所示。

表 3 scdc命令参数说明

argv1

argv2

argv3

说明

0

x

x

关闭SCDC

1

x

x

打开SCDC

2

x

x

获取SCDC状态

  • ddc (dd)

    命令:echo ddc argv1 > /proc/umap/hdmi0

    功能:设置DDC速率。

    参数说明:argv1取值[1, 300],表示DDC速率为1-300KHz。

    注意事项:此速率并非精确值,实际速率可能与此值有偏差。

  • hdmimode (m)

    命令:echo hdmimode argv1 > /proc/umap/hdmi0

    功能:设置HDMI输出模式。

    参数说明:argv1取值[0, 2],0表示DVI模式,1表示HDMI1.4模式,2表示HDMI2.0模式。

  • outclrspace (oc)

    命令:echo outclrspace argv1 > /proc/umap/hdmi0

    功能:设置输出的Color Space。

    参数说明:argv1取值[0, 3],0表示RGB,1表示YCbCr422,2表示YCbCr444,3表示YCbCr420。

  • deepclr (d)

    命令:echo deepclr argv1 > /proc/umap/hdmi0

    功能:设置输出的Deep Color。

    参数说明:argv1取值[0, 2],0表示8bit,1表示10bit,2表示12bit。

  • dither (di)

    命令:echo dither argv1 > /proc/umap/hdmi0

    功能:设置dither开关。

    参数说明如表4

表 4 dither命令参数说明

argv1

说明

0

关闭dither

1

打开dither,10bit->8bit模式

2

打开dither,12bit->8bit模式

3

打开dither,12bit->10bit模式

  • aut (au)

    命令:echo aut argv1 > /proc/umap/hdmi0

    功能:认证模式开关。

    参数说明:argv1取值[0, 1],0表示关闭认证模式,1表示打开认证模式。

  • cmd

    命令:echo cmd argv1 argv2(optional) > /proc/umap/hdmi0

    功能:其他调试命令。

    参数说明如表5

表 5 cmd命令参数说明

argv 1

argv 2

说明

0

x

关闭HDMI输出

1

x

开启HDMI输出

2

x

发送黑帧

3

x

关闭黑帧

4

≥ 0

0:选择模拟指标参数0

1:选择模拟指标参数1

注:x表示无效参数。

  • compat(cmp)

    命令:echo chcompat argv1 argv2 > /proc/umap/hdmi0

    功能:兼容性调试命令。

    参数说明如表6

表 6 compat命令参数说明

argv 1

argv 2

说明

0

0

关闭不发avmute包的调试功能。

1

打开不发avmute包的调试功能。

1

0

关闭使用gen5包来发送avi信息帧的调试功能。

1

打开使用gen5包来发送avi信息帧的调试功能。

  • mutedelay(md)

    命令:echo mutedelay argv1 > /proc/umap/hdmi0

    功能:设置mute delay的时长。

    参数说明:argv1取值[0, 100000],单位ms。

  • fmtdelay(fd)

    命令:echo fmtdelay argv1 > /proc/umap/hdmi0

    功能:设置fmt delay的时长。

    参数说明:argv1取值[0, 100000],单位ms。

  • threadtime(time)

    命令:echo thread_time argv1 > /proc/umap/hdmi0

    功能:设置HDMI HPD线程检测时间间隔

    参数说明:argv1取值[10, 100],表示间隔时间为10-100ms

缩略语

缩略语

说明

HDMI

High-Definition Multimedia Interface

TMDS

Transition Minimized Differential Signaling

CTS (Audio)

Cycle Time Stamp

EDID

Extended Display Identification Data

OSD

On Screen Display

SDR

Standard Dynamic Range

HDR

High Dynamic Range

DRM

Dynamic Range and Mastering

HLG

Hybrid Log Gamma

DDC

Display Data Channel

CTS

Compliance Test Specification

AVI

Auxiliary Video Information

DSC

Display Stream Compression

OE

Output enable

Gbps

Giga Bit Per Second

PCB

Printed Circuit Board

EOTF

Electro-Optical Transfer Function