HDMI协议解析

2017年06月18日 14:19:27

阅读数:2987

转载请标明出处floater的csdn blog,http://blog.csdn.net/flaoter

本文从软件工程师角度对HDMI spec进行解析,基于的spec版本为1.4,也是设备支持最多最成熟的版本,目前最新版本为2.0。

1 概述

HDMI(High-Definition Multiface Interface)是Hitachi, Panasonic, Philips, SiliconImage, Sony, Thomson, Toshiba几家公司共同发布的一款音视频传输协议,主要用于DVD, 机顶盒等音视频source到TV,显示器等sink设备的传输。传输基于的是TMDS(Transition Minimized Differential Signaling)协议。此外,使用TMDS也是DVI标准的主要特点 。

2 物理结构

 
上图是HDMI block结构图,可以看出HDMI用于audiovisual source和sink之间的连接,HDMI cable由3组差分信号传输TMDS数据,1组差分信号传输clock。此外,HDMI还有一个DDC的通道连接到sink的EDID。CEC和HEAC都是HDMI的可选协议。 
 
HDMI定义了五种类型的connector,上图是最常见的type A。 
1-9是TMDS data传输用到的引脚,共有三组; 
10-12是TMDS clock传输用到的引脚,共有一组,TMDS clock就是pixel clock; 
13是CEC引脚,一种消费电子兼容的传输协议; 
14是保留引脚; 
15,16是DDC的引脚,DDC是基于I2C协议传输,故引脚为SCL和SDA; 
17是接地; 
18是+5V power; 
19是HPD引脚,用于建立连接。

3 传输

概述

HDMI传输由三组TMDS通道和一组TMDS clock通道组成,TMDS clock的运行频率是video信号的pixel频率,在每个cycle,每个TMDS data通道发送10bit数据。 
 
上图是HDMI传输的示意图,从图中可知,HDMI传输如下四种类型数据: 
(1)Preamble控制信息,图中的CTLx,可用来表示后面传输的是data island还是video data。通过channel1和2的D[1:0]传输,占用4bit。 
(2)Data Island,即数据包,如Audio数据包。通过3个channel的D[3:0]传输,占用12bit。 
(3)Video Data,视频数据。示意图中传输的是RGB格式图像,R,G,B分别通过channel2,1,0传输,每个颜色8bit,共24bit。 
(4)HSYNC, VSYNC。使用channel0的D[1:0]传输,占用2bit。 
8bit的数据在source经过TMDS encoder后得到10bit数据,经过serializer后串行输出;在sink端先进行复原成10bit的数据,再通过TMDS decoder得到8bit的源数据。 
此外,HDMI视频是stream式的传输,不涉及packet式的传输。

流式传输的两大主流种类及流式传输特点
2015年04月14日 ::
阅读数:
转自:http://blog.csdn.net/hguisu/article/details/7418087 流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。(百度百科) 在网络上传输音/视频(英文缩写A/V)等多媒体信息目前主要有下载和流式传输两种方案。A/V文件一般都较大,所以需要的存储容量也较大;同时由于网络带宽的限制,下载常常要花数分钟甚至数小时,所以这种处理方法延迟也很大。流式传输时,声音、影像或动画等时基媒体由音视频服务器向用户计算机的连续、实时传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当声音等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。流式不仅使启动延时成十倍、百倍地缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部从Internet上下载才能观看的缺点。   .流式传输的种类   网络传输音频、视频等多媒体信息有下载和流式传输两种方案,下载方案由于A/V文件较大,所需存储容量也较大,且网络带宽的限制导致下载费时久,且延迟亦较大;而流式传输方案则避免了用户需等待整个文件全部下载后才能播放的缺点。流式传输技术又分两种,一种是顺序流式传输,另一种是实时流式传输。   ①顺序流式传输(Progressive Streaming)   顺序流式传输是顺序下载,媒体在下载文件的同时,用户可以观看在线节目。在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的部分。顺序流式传输不像实时流式传输那样,可以在传输期间根据用户连接的速度进行调整。由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,因而它经常被称作HTTP流式传输。由于该文件在播放前观看的部分是无损下载的,最终播放质量较好,因而特别适合质量较高、数据量较小、通过Modem发布的短片段,如片头、片尾、广告等。但用户在观看前必须经历数秒的延迟,传输速度较慢时尤为明显。对通过调制解调器发布的短片段,顺序流式传输显得很实用,它允许用比调制解调器更高的数据速率创建视频片段。尽管有延迟,毕竟可发布较高质量的视频片段。顺序流式文件是放在标准HTTP或FTP服务器上,因而易于管理,基本上与防火墙无关。顺序流式传输不适合长片段和有随机访问要求的视频,如讲座、演说与演示,它也不支持现场广播。因此,严格地说来,它本质上是一种点播技术。   ②实时流式传输(Realtime Streaming)   实时流式传输可保证媒体信号带宽与网络连接匹配,可实时观看节目。实时流与HTTP流式传输不同,它需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,因而特别适合现场事件,且支持随机访问,用户可对观看内容进行快进或后退以观看前面或后面的内容。理论上,实时流一经播放就不可停止,但实际上,可能发生周期暂停。实时流式传输必须匹配连接带宽,这意味着在以调制解调器速度连接时图像质量较差。而且,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量差,而没有顺序流式传输视频质量好。实时流式传输需要特定服务器,如QuickTime Streaming Server、RealServer与Windows Media Server。这些服务器允许你对媒体发送进行更多级别的控制,因而系统设置、管理比标准HTTP服务器更复杂。实时流式传输还需要特殊网络协议,如:RTSP(Realtime Streaming Protocol)或MMS(Microsoft Media Server)。这些协议在有防火墙时有时会出现问题,导致用户不能看到一些地点的实时内容。   显然,在实际应用时,具体采用哪种传输方式可根据需要确定,且流式传输也支持在播放前完全下载到硬盘。一般情况下,流式传输模式会使用RTP/UDP、RTSP/TCP两种通信协议与A/V(Audio/Video)Server建立联系,将服务器的输出重定向到一个运行A/V Player程序所在客户机的目的地址。通常,流式传输系统一般都要配置一套专用的服务器和播放器。   .流式传输的特点   与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式具有以下的特点:   ①大幅度地缩短启动延时   流式传输大幅度地缩短启动延时,因为用户不用等待所有内容下载到硬盘上才开始浏览,无论是上班时间还是晚上,速度都相当快。一般来说,一个45分钟的影片片段,在一分钟以内就显示在客户端上,而且在播放过程中,一般都不会出现断续的情况。此外,全屏播放对播放速度几乎无影响,但快进、快倒时,需要时间等待。   ②大大降低对系统缓存容量的需求   由于Internet是以包传输为基础进行断续的异步传输,其数据被分解为许多包进行传输。动态变化的网络使各个包可能选择不同的路由,故到达用户计算机的时间延迟也就不同。因此,在客户端需要缓存系统来弥补延迟和抖动的影响和保证数据包传输顺序的正确,从而使媒体数据能连续输出,且不会因网络暂时拥堵而使播放出现停顿。虽然,流式传输仍需要缓存,但由于不需要把所有的动画、视音频内容都下载到缓存中,因而对缓存的要求大大降低。   由于流媒体技术使用了数据缓冲技术,因而可保持流媒体的不间断,并保证文件传输的可靠性。   ③有特定的实时传输协议实现流式传输   由前面叙述所知,流媒体目前有三种主流格式,并需要相应的特定的实时传输协议。一般,采用RTSP等实时传输协议,更加适合动画、视音频在网上的流式实时传输。   此外,采用流媒体技术不会占用本地的硬盘空间等。

 
上图是传输720x480p video的hdmi timing图。 
在video data period,有效的video数据进行传输; 
在data island period,audio和auxiliary数据以包的形式进行传输; 
在control period,CTLx和HSYNC, SYNC进行传输。 
data island period和control period都是在消隐区进行。图中行消隐占用138像素,场消隐占45行。 
 
上图中是对时序图中描述的三种period分别传输的数据和编码类型进行说明。video数据从8bit/channel encode后变为10bit/channel, data island的packet数据从4bit/channel encode后为10bit/channel, control数据从2bit/channel encode为10bit/channel。

Control Period

 
只有两种类型的preamble信息组合,CTL0:3=1000代表接下来的是video data period,CTL0:3=1010代表接下来的是data island period。HSYNC, VSYNC此时也有可能发生变化。

Video Data Period

video data period以2个字符(pixel)长度的leading gurad band开始,guard band如下: 
ch0: q_out[9:0] = 0b1011001100 
ch1: q_out[9:0] = 0b0100110011 
ch2: q_out[9:0] = 0b1011001100

Data Island Period

data island period传输audio数据和辅助数据,辅助数据包括Infoframe和其他用于音视频信息描述的数据。data island period以2个字符长度的leading guard band开始,并以2个字符宽度的trailing guard band 结束。guard band如下: 
ch0: q_out[9:0] = n.a 
ch1: q_out[9:0] = 0b0100110011 
ch2: q_out[9:0] = 0b0100110011 
data island传输的packet类型和格式详见spec说明。 
三个传输阶段的过渡过程如下图所示: 
 
(1) 左一是control period, 分别占用三个channel的D[1:0],channel 0传输HSYNC, VSYNC, channel1,2 传输Preamble 
(2) 左二是data island period,分别占用了三个channel的D[3:0],channel 0的D[1:0]传输HSYNC, VSYNC, channel0的D[3:2]传输packet header, channel 1,2的D[3:0]传输packet。并且两端以guard band隔离 
(3)右二接下来又是control period 
(4)右一是 video data island, 占用了全部三个通道,并且开始以guard band 隔离

4 Video

支持三种pixel encoding:RGB4:4:4, YCbCr4:4:4, YCbCr4:2:2 
video format除了CEA-861-D中格式外,还会支持一些较特殊的格式 
color depth可支持一个像素24, 30, 36和48bits 
下面分别是24bit/pixel的RGB444, YCbCr422, YCbCr444的pixel encoding示意图。RGB444每个颜色占8bit, YCbCr422中Y占12bit,C占12bit,YCbCr444中Y,Cb,Cr都占用8bit。 
 
 

Deep Color模式 
Pixel Packing 
24 bit mode: 1 pixel/group, 1 fragment/group 
30 bit mode: 4 pixel/group, 5 fragment/group 
36 bit mode: 2 pixel/group, 3 fragment/group 
48 bit mode: 1 pixel/group, 2 fragment/group 
1fragment/TMDS clock, 如30bit下的4pixel,需要5次传输完成,每次1个fragment。 

5 Audio

Audio数据以Audio Sample Packet或High Bitrate Audio Stream Packet的形式传输,但是HDMI没有传输audio clock,因此sink设备需要进行audio clock regeneration。原理如下: 
 
128∗fs=N×fTMDS/CTS 
N和CTS会在Audio Clock Regeneration Packet中进行传输,TMDS clock可通过硬件获取,因此sink端可算出source传输的audio clock。

6 Control

InfoFrame

Infoframe以Infoframe packet的形式传输,它的大小不超过30字节加上一个checksum字节。具体infoframe的格式及内容需要查看spec。 
AVI(Auxiliary Video Information) Infoframe 
Audio Infoframe 
HDMI Vendor Specific Infoframe, 传输4kx2k或3D格式时需要发送此packet

EDID & DDC

sink设备在ROM中存放EDID信息,source在收到HPD后会通过DDC通道读取EDID得到显示设备的属性。EDID包含两部分,前128字节符合EDID1.3数据结构,128字节的扩展EDID,符合CEA extension verison3。CEA extension verison3如下图所示。 
 
HDMI VSDB 
HDMI sink设备在第一个扩展EDID中包含HDMI VSDB,source在读取EDID后会根据是否有此block来判断设备是HDMI还是DVI。

Hotplug

source会监测HPD pin的状态,当source和sink连接后,如果HPD为高电平,说明sink设备正常可以工作,source可通过DDC读取EDID,如果为低电平,说明sink已断开。 
sink可通过拉低HPD超过100ms来向source表明EDID发生了变化,此时source会重新读取EDID。

HDCP

涉及内容较多,会在单独章节中讲解。

转HDMI的更多相关文章

  1. [已解决]Windows10 系统下HDMI 显示器 没有声音输出的奇怪问题

    今天想用一下显示器自带的喇叭,忽然发现声音输出选项里HDMI的声音设备没了.之前开始使用这台显示器的时是用过一段时间的. 百度了一番,没发现什么线索.后来去谷歌找到这么一段文字: I'm not su ...

  2. 外接Hdmi没有声音怎么设置

    参考 http://www.3lian.com/edu/2013/07-16/81152.html 在小喇叭图标上右键->播放设备->禁用HDMI

  3. HDMI之CEC DDC学习笔记(可能有误)

    1 HDMI的音视频通路,有待学习: 2 DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据: EDID的前128字节数据格式如下:(可能有不同版本,格式可能有区别)

  4. HDMI IP学习笔记

    在HDMI的IP核中点击,生成例子.找到./simulaion/mentor文件夹,把modelsim路径转到该路径下,即可仿真.

  5. HDMI学习

    市面上大多4K显示器都配备了HDMI 1.4接口,仅能实现30Hz的刷新率,不足以带来流畅的显示效果, 酱紫情况,就算是搭配了HDMI 2.0高清线也是无法发挥其作用.只有更先进的HDMI 2.0标准 ...

  6. Windows Server+AMD GPU+HDMI时_黑边_不铺满问题的解决办法

    HDMI接显示器或电视,有黑边或者被放大了是个很常见的问题,显卡设置界面里改下Scale或者Overscan/Underscan就行,可问题是WindowsServer版的CCC没有控制颜色对比度和缩 ...

  7. 树莓派B+上手小记--使用HDMI线连接显示器

    入手还算比较顺利,一开始使用网上下的别人精简的OS,发现ACT及PWR灯一直亮着,上网查说用HDMI连接显示器需要修改配置文件config.txt,但修改后情况依旧. 如果还是用官方的系统试试吧,上网 ...

  8. 高清HDMI编码器|上海视涛科技

    HDMI编码器(E300)简介 HDMI编码器(E300)是上海视涛科技出品的高性能HDMI+VGA编码产品.该HDMI+VGA编码器是上海视涛科技完全自主研发,并适用于VGA.DVI.HDMI等信号 ...

  9. android HDMI 清晰度 分辨率

    但改变分辨率时,发送广播即可: Intent intent_outputmode_change = new Intent(ACTION_OUTPUTMODE_CHANGE);     intent_o ...

  10. 树莓派系统安装、HDMI显示

    树莓派上可以安装多种操作系统,我们采用的是官方的基于debian的raspbian.系统安装方式见 安装完系统由于我使用的是7寸的HDMI屏,装完系统如果配置不该的话会导致右边有一部分无法显示,所以在 ...

随机推荐

  1. Tomcat配置SSL后使用HTTP后跳转到HTTPS

    Tomcat配置好SSL后将HTTP请求自动转到HTTPS需要在TOMCAT/conf/web.xml的未尾加入以下配置: <login-config> <!-- Authoriza ...

  2. 2018—自学Selenium+Python 笔记(二)

    此文记录一些python语法不同之处.. 适合有研发基础的童鞋查阅.. 零基础的童鞋就怪怪一个个学吧! 记录也不一定全,随笔一记 多行语句 total=item1+\ item2+\ item3 &q ...

  3. Python学习第六课

    Python学习第六课 课前回顾 列表 创建 通过 [] :写在[]里,元素之间用逗号隔开 对应操作: 查 增 append insert 改(重新赋值) 删除(remove del pop(删除后会 ...

  4. learn-ES6基础语法1-let&const

    1.let ① 使用let声明的变量,所声明的变量只能在命令所在的代码块内有效. 同样在代码块内的a和c,c在代码块内就可以输出,a在代码块外就找不到了. ② 使用let命令声明的变量在域解析的时候不 ...

  5. Netty 服务端:新连接接入

    本文主要分析服务端新连接的接入过程,主要分为以下 3 各步骤: select 操作: processSelectedKeys 操作. 1. select 操作 在分析 select 操作前,先要回顾一 ...

  6. matlab画图命令笔记

    1 函数画图fplot % Create a function plot of y = x^3 over the domain of [-2 2]. % Plot with a thick red l ...

  7. []TLD code run

    opencv3.3.1 https://github.com/alantrrs/OpenTLD https://github.com/arthurv/OpenTLD problem opencv3.0 ...

  8. 高吞吐低延迟Java应用的垃圾回收优化

    高吞吐低延迟Java应用的垃圾回收优化 高性能应用构成了现代网络的支柱.LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求.要优化用户体验,低延迟地响应这些请求非常重要. 比如说,用户经 ...

  9. Appium环境搭建——安卓真机调试注意点

    1.安卓设备连接失败 通过adb devices命令 查看安卓设备的连接情况,如图,未成功连接 解决方法: (1)关闭360安全卫士和360手机助手(2)查看5037端口是否被占用 netstat - ...

  10. 一、Flask路由介绍

    Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是So ...