前言¶
概述
解决方案的内置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¶
【描述】
去初始化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¶
【描述】
关闭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_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¶
【描述】
获取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_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¶
【描述】
停止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¶
【描述】
获取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_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¶
【描述】
撤销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_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¶
【描述】
获取信息帧。
【语法】
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_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¶
【描述】
获取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_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_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¶
【描述】
获取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。
【举例】
无
【相关主题】
数据类型¶
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。
【相关数据类型及接口】
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。
【相关数据类型及接口】
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。
【相关数据类型及接口】
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。
【相关数据类型及接口】
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;
【成员】
无。
【注意事项】
无。
【相关数据类型及接口】
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。
【相关数据类型及接口】
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信息数据。 |
【注意事项】
无。
【相关数据类型及接口】
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上不支持。
【相关数据类型及接口】
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 |




