# ITU-R BT.656 [time_reference_signals]: http://data.linuxtoy.cn/image/timing_reference_signals.png "time reference signals composition of interface data stream" [F_and_V]: http://data.linuxtoy.cn/image/BT656_F_and_V.png "SAV/EAV Field interval definitions" [BT656_Frame]: http://data.linuxtoy.cn/image/BT656_Frame.jpg "BT656 Frame" ITU-R -- International Telecommunication Union Radiocommunication ITU-R Bt.656是标清数字视频信号传输标准 定义了一个并行的硬件接口(8根或者10根并行数据线和1根时钟信号线)用来传输一路YCbCr 4:2:2的数字视频流. 传输速率是BT.601的2倍,行场同步信号嵌入在数据流中,先传Y,后传UV。 # 帧场的概念 一个视频序列一般由N帧图像构成. 采集图像时一般由2种扫描方式,逐行扫描(progressive scanning) 和隔行扫描(interlaced scanning). 为什么会有隔行扫描: 以前的模拟CRT显示器的工作原理是通过电子束在屏幕上一行行地扫描后发光来显示图像的. 受制于当时的带宽限制,将一幅图像分成两场来扫 第一场称为奇数场,只扫描奇数行, 第二场称为偶数场,只扫描偶数行. 由于人眼具有视觉暂留效应,因此在眼中看来仍然是一幅完整的图像. NTSC制共525行扫描线,每秒60场图像. PAL制为625行扫描线,每秒50场图像. 但是目前CRT已被淘汰,液晶显示器属于固定像素显示设备,显示图像时不需要扫描,而且各个像素点可以认为几乎是同时发光,所以可以认为对于现在的液晶显示设备来说,都是逐行扫描的. 但是从摄像机的角度来看,传统的模拟摄像机都是隔行的,而高清摄像机虽然是数字的,但扫描方式是从模拟摄像机沿用过来的,在保留隔行扫描的同时,还增加了逐行扫描格式. PAL制NTSC制的技术指标: | 制式 | 场频 | 帧频 | 行频 | 总行数 | 场回扫行数 | 图像行数 | | -- | -- | -- | -- | -- | -- | -- | | PAL | 50Hz | 25Hz | 15625Hz | 625 | 25 x 2 | 576 | | NTSC | 29.97 x 2 Hz | 29.97 Hz | 15734.25Hz | 525 | 20 x 2 | 486 | 行频 = 帧频 * 总行数 # 数字信号格式 数字信号以8bit或者10bit的形式编码.这些信号包含一下几部分。 数字信号包含: - 视频信号(video signals) - 数字消隐数据(digital blanking data) - 定时基准信号(time reference signals) - 辅助信号(ancillary signals) # 定时基准信号 SAV(start of active video) 每个视频数据块的开始(at the beginning of each video data block) EAV(end of active video) 每个视频数据块的结尾 ![time reference signals in data stream][time_reference_signals] 定时基准信号由4个字段组成,用16进制表示如下: 10bit形式: 3FF 000 000 XYZ 8bit形式: FF 00 00 XY 前3个字段是固定前缀, 第4个字段用于定义 第二场的标识、场消隐状态、行消隐状态 对于10bit形式的编码, 第4个字段的定义如下: | bit9 (MSB) | bit8 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | | 1 | F | V | H | P3 | P2 | P1 | P0 | 0 | 0 | 对于8bit形式的编码,所以考虑兼容性,下表中的bit1和bit0没有定义, 第4个字段的定义如下: | bit7 (MSB) | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | | -- | -- | -- | -- | -- | -- | -- | -- | | 1 | F | V | H | P3 | P2 | P1 | P0 | F 场同步信号: - F = 0 表示field1 - F = 1 表示field2 V 垂直同步信号: - V = 0 表示接下来的数据为有效图像数据. - V = 1 表示接下来的数据为消隐区数据. H 水平同步信号: - H = 0 表示SAV - H = 1 表示EAV P0 P1 P2 P4 是保护位(protection bits),用来校验F V H, 校验规则如下: - P3=V(XOR)H;P2=F(XOR)H;P1=F(XOR)V;P0=F(XOR)V(XOR)H F V的定义见下表: ![F and V definitions][F_and_V] P3 P2 P1 P0 与 F V H的关系见下表: $$ \begin{array}{ccc|cccc|} \text{ F } & \text{ V } & \text{ H } & \text{P3} & \text{P2} & \text{P1} & \text{P0} \\\\ \hline 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 1 & 1 & 0 & 1 \\\\ 0 & 1 & 0 & 1 & 0 & 1 & 1 \\\\ 0 & 1 & 1 & 0 & 1 & 1 & 0 \\\\ 1 & 0 & 0 & 0 & 1 & 1 & 1 \\\\ 1 & 0 & 1 & 1 & 0 & 1 & 0 \\\\ 1 & 1 & 0 & 1 & 1 & 0 & 0 \\\\ 1 & 1 & 1 & 0 & 0 & 0 & 1 \\\\ \end{array} $$ # BT656行场帧的构成 在BT656标准中一个场由3部分构成: - 场 = First Vertical Blanking + Active Video lines + Second Vertical Blanking - - 对于顶场(Top Field), Active Video 就是一帧图像的所有偶数行 - 对于底场(Bottom Field), Active Video 就是一帧图像的所有奇数行 - NTSC先传输bottom field, PAL先传输top field 一行由4部分构成: - 行 = 结束码(EAV) + 水平消隐(Horizontal Blanking) + 起始码(SAV) + 有效数据(Active video data) BT656 行场帧构成的示意图: ![BT656 Line Field and Frame][BT656_Frame] 下表中的SAV与EAV是按照8bit位宽定义的. $$ \begin{array}{cc} \begin{array}{c|ccccc} \text{行数} & \text{ F } & \text{ V } & \text{EAV(H=1)} & \text{SAV(H=0)} \\\\ \hline \text{4~19} & 0 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \text{20~263} & 0 & 0 & \text{(1001 1101) 0x9D} & \text{(1000 0000) 0x80} \\\\ \text{264~265} & 0 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \hline \text{266~282} & 1 & 1 & \text{(1111 0001) 0xF1} & \text{(1110 1100) 0xEC} \\\\ \text{283~525} & 1 & 0 & \text{(1101 1010) 0xDA} & \text{(1100 0111) 0xC7} \\\\ \text{1~3} & 1 & 1 & \text{(1111 0001) 0xF1} & \text{(1110 1100) 0xEC} \\\\ \end{array} \qquad \qquad \begin{array}{c|cccc} \text{行数} & \text{ F } & \text{ V } & \text{EAV(H=1)} & \text{SAV(H=0)} \\\\ \hline \text{1~22} & 0 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \text{23~310} & 0 & 0 & \text{(1001 1101) 0x9D} & \text{(1000 0000) 0x80} \\\\ \text{311~312} & 0 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \hline \text{313~335} & 1 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \text{336~623} & 1 & 0 & \text{(1001 1101) 0x9D} & \text{(1000 0000) 0x80} \\\\ \text{624~625} & 1 & 1 & \text{(1011 0110) 0xB6} & \text{(1010 1011) 0xAB} \\\\ \end{array} \end{array} $$ 对于一个标准的8bit BT656(4:2:2) PAL制式的视频: 一帧有625行,其中顶场有效数据和底场有效数据分别为288行.因为PAL制的SDTV或者D1的分辨率为720x576 一行的有效数据是1440个字节. 包含720个Y分量、360个Cb分量、360个Cr分量 水平消隐区有280个字节 对于一个标准的8bit BT656(4:2:2) NTSC制式的视频: Field1: 16行(first vertical blanking) + 244行 + 2行(second vertical blanking) Field2: 17行(first vertical blanking) + 243行 + 3行(second vertical blanking) 一帧有525行,其中Field1有244行, Field2有243行. 标准的NTSC分辨率为720x480 一行的有效数据是1440个字节. 包含720个Y分量、360个Cb分量、360个Cr分量 水平消隐区有276个字节. 包含138个Y分量,69个Cb分量, 69个Cr分量 # 辅助信号 辅助信号的定义见ITU-R BT.1364 辅助信号用于在消隐区发送非视频数据信息(如数字音频,隐藏字幕等...) 以10bit形式只在行消隐期间传送 以 8bit形式只在场消隐中的行有效期间传送