zhaohuarong 发表于 2017-12-8 17:14:01

Android中HDMI开发(海思方案)

本帖最后由 zhaohuarong 于 2017-12-8 17:13 编辑

HDMI(High Definition Multimedia Interface,高清晰度多媒体接口)是一种数字化视频/音频接口技术,是适合影像传输的专用型数字化接口,其可同时传送音频和影音信号。同时无需在信号传送前进行数/模或者模/数转换。HDMI 可搭配宽带数字内容保护(HDCP),以防止具有著作权的影音内容遭到未经授权的复制。

HDMI结构框架


重要概念:
【CEC】
Consumer Electronics Control 消费者电子控制。
【TMDS】
Transition Minimized Differential Signaling 也被称为最小化传输差分信号。
【EDID】
Extended Display Identification Data 外部显示设备标识数据。
【DDC】
Display Data Channel 显示数据通道。
【HDCP】
High -bandwidth Digital Content Protection 高带宽数字内容保护技术。
【HPD】
Hot Plug Detect 热插拔探测。

HDMI 功能结构图

使用的 HDMI 的参数的公共接口是hi_unf_hdmi.h

HI_UNF_HDMI_CALLBACK_FUNC_S 主要属性

参数名称 默认值 描述
pfnHdmiEventCallback NULL 注册回调函数
pPrivateData NULL 注册的回调函数的参数
enDefaultMode HI_UNF_HDMI_FORCE_NULL EDID 读取失败时使用的输出模式,建议客户在实际使用时使用HI_UNF_HDMI_FORCE_HDMI 的模式



HDMI 的热插拔检测事件
场景说明:
该场景用于检测接收端设备连接状态,并设置相应的HDMI 状态。当 HDMI 连接到接收端设备,则解析接收端设备能力集,实现播放。若在播放过程中 HDMI 与接收端设备断开,则停止HDMI 播放。

HDMI基本使用流程


注意事项
1.打开 HDMI 设备后,只有在触发HotPlug 事件,在HotPlug 处理函数中配置HDMI且在调用HI_UNF_HDMI_Start 接口后,HDMI 才会正常输出。
2. HI_UNF_HDMI_RegCallbackFunc 和HI_UNF_HDMI_LoadHDCPKey 一定要在HI_UNF_HDMI_Open 之前执行。
3. HDMI 支持在Linux 下的多进程多线程调用。如果存在多个应用程序同时使用HDMI,则每个应用程序一定要在该应用的HI_UNF_HDMI_Open 之前执行HI_UNF_HDMI_RegCallbackFunc。执行HI_UNF_HDMI_Open 之前每个应用都可调用多次HI_UNF_HDMI_RegCallbackFunc 注册多个回调函数。
4. 推荐在 HDMI 的HotPlug 事件处理函数中配置HDMI 设备的属性。


HDMI 的CEC 消息发送

场景说明
该场景是根据HDMI 扩展协议Customer Electronics Control,通过向接收端发送特定的消息,实现一键待机、一键唤醒等功能。



工作流程

HDMI CEC 功能使用流程






注意事项

1.编译时需要打开对应的编译选项才会支持 CEC,执行 make menuconfig => MSP => HDMI Config-> 选中CEC Support 选项。

2.并非所有设备都支持 CEC 功能,请先确认接收端设备是否支持CEC 或者支持特定的CEC 指令。


小甲鱼 发表于 2017-12-12 17:10:49

支持,期待楼主的干货!

zhaohuarong 发表于 2017-12-8 17:14:27

{:10_249:}

像番茄加两个蛋 发表于 2017-12-8 17:21:12

好专业啊感觉

alltolove 发表于 2017-12-9 06:12:12

你们是想把vr这类的外部设备连接到手机上吧{:5_94:}

zhaohuarong 发表于 2017-12-9 22:53:54

alltolove 发表于 2017-12-9 06:12
你们是想把vr这类的外部设备连接到手机上吧

android对于HDMI的支持在4.0之后就是标准了,Android很多应用场景山都需要HDMI输出,比如Android机顶盒需要输出到屏幕上。
页: [1]
查看完整版本: Android中HDMI开发(海思方案)