前言
前文简单介绍了HDMI传输的三个周期:控制周期、DataIsland周期和Video周期。DataIsland传输音频和辅助数据,这些数据以Packet的形式传输。本文简单介绍DataIsland Packet。
目录
前言
数据岛概述
数据岛包的构造
Packet Header
Paket Body
DataIsland Packets
空包(Null Packet)
Audio 时钟重生成包(ACR)
Audio采样包(Audio Sample Packet)
帧信息InfoFrame
通用控制包
数据岛概述
数据岛用来携带音频和辅助数据的报文,辅助数据包括信息帧和描述活动视频或者音频流或者信源端的信息。
每个数据岛包括三个部分:前导保护段Leading GB、PacketHeader+PacketBody、末尾保护段Trailing GB。
其中PH和PB的发送:
- TMDS 通道0的bit2发送数据包头(packet header)
- TMDS通道1和2的4个bit发送数据包(packet body)
数据岛包的构造
包括一个报文头、报文体(包含 4个子包)和相关的差错纠正位。
每个子包含有56bit的数据和8bit的ECC校验位组成。子包 0 加上它的奇偶校验位构成 BCH 块 0,这个块映射到通道 1 和通道 2 的bit0。
同样地,BCH 块 1(子包 1 加上它的奇偶校验位)映射到通道 1 和通道 2 的bit1上。
对于包头即BCH block4映射到通道0的bit2,包括3个byte共24bit,以及8bit ECC。
Packet Header
报文头包含 24 个数据位,附加 8 位 BCH(32,24) ECC 校验。
其中24bit的数据分为8bit的报文类型和16bit的报文,如下图。
报文类型表格如下:
举个栗子:
HB0=0x82、HB1=0x02、HB2=0x0D
Paket Body
包体部分的具体组成分为四个子包,一共是28个PB0~PB27。
还是举个例子:以下是AVI packet的包体,各个bit位代表不同含义,28个PB不一定都用的上,有的是预留以后扩展用的。其他的packet也类似,需要和pacet header的类型一起组合使用。
HDMI中的pacet有很多,常用的或者说调试HDMI最基础的就几个pacets,有些高级特性在调试的前期不需要考虑。传输Video用到AVI Packet,传输Audio要用到Audio Packet和ACR。
DataIsland Packets
空包(Null Packet)
source端可以在任何时候使用空包。空包的字节是未定义的,其包内都是 0 值。HDMI sink端应该忽略空包的包头 HB1 和 HB2,以及空包体中的全部字节。
Audio 时钟重生成包(ACR)
包头中只有包类型,没有报文数据,Sink设备应该忽略HB1和HB2。
包体中包含N和CTS(cycle time stamp),在生成音频时钟的时候会用到这两个值。
Audio采样包(Audio Sample Packet)
音频采样包携带 LPCM 和 IEC61937 压缩音频格式的数据。音频包包括 1 到 4 个音频采样。这些音频采样可能是不同的音频,也可能是同一音频的不同部分(比如 6 声道的 2 个声道数据)。
帧信息InfoFrame
CEA-861D 定义的所有的信息帧都可以在 HDMI 的信息帧中传输。
通用控制包
包头只有包的类型,没有报文数据,Sink端应该忽略HB1、HB2。
包体中包括AVMUTE、CD、PP等信息。
AVMUTE 被用以source端减少TMDS时钟变化或者中断带来的负面影响,比如pop音和噪音。
CD(color depth)用于指示色深:
如果sink端不支持Deep Color模式,CD域应该都设置为零。