凡是作模擬信號採集的,不多不涉及BT.656標準的,由於常見的模擬視頻信號採集芯片都支持輸出BT.656的數字信號,那麼,BT.656究竟是何種格式呢?
本文將主要介紹 標準的 8bit BT656(4:2:2)YCbCr SDTV(標清) 數字視頻信號格式,主要針對剛剛入門模擬視頻採集的初學者入門之用。
1. 幀的概念(Frame)
一個視頻序列是由N個幀組成的,採集圖像的時候通常有2種掃描方式,一種是逐行掃描(progressive scanning),一種是隔行掃描(interlaced scanning)。對於隔行掃描,每一幀通常有2個場(field),一個叫頂場(top field),一個叫底場(bottom field)。假設一幀圖像是720行,那麼,頂場就包含其中全部的偶數行,而底場則包含其中全部的奇數行。html
2. 場的概念(field) git
注意,上面提到頂場和底場,用的是「包含」二字,而不是說徹底由後者組成,由於在BT.656標準中,一個場是由三個部分組成的:web
場 = 垂直消隱頂場(First Vertical Blanking) + 有效數據行(Active Video) + 垂直消隱底場(Second Vertical Blanking)ide
對於頂場,有效數據行就是一幀圖像的全部偶數行,而底場,有效數據行就是一幀圖像的全部奇數行。頂場和底場的空白行的個數也有所不一樣,那麼,對於一個標準的 8bit BT656(4:2:2)SDTV(標清) 的視頻而言,對於一幀圖像,其格式定義以下:spa
![](http://static.javashuo.com/static/loading.gif)
由上圖能夠知道,對於PAL制式,每一幀有625行,其中,頂場有效數據288行,底場有效數據也是288行,其他行即爲垂直消隱信號。爲何是288行?由於PAL制式的SDTV或者D1的分辨率爲 720*576,即一幀有576行,故一場爲288行。orm
由上圖咱們還能夠知道,頂場有效數據的起始行爲第23行,底場有效數據的起始行爲第335行。視頻
另外,上圖中的 F 標記奇偶場,V標記 是否爲垂直消隱信號。htm
3. 每一行的組成(Lines)blog
下面說明每一行的組成,一行是由4個部分組成:seo
行 = 結束碼(EAV) + 水平消隱(Horizontal Vertical Blanking) + 起始碼(SAV) + 有效數據(Active Video)
典型的一行數據組成以下圖所示:
![](http://static.javashuo.com/static/loading.gif)
起始碼(SAV)和結束碼(EAV),它是標誌着一行的開始結束的重要標記,也包含了其餘的一些重要的信息,後面將會講到。
爲何水平消隱 是280字節,這個我暫時還沒搞清楚,不知道是否是標準定義的。
爲何一行中的有效數據是 1440 字節? 由於PAL制式的SDTV或者D1的分辨率爲 720*576,即一行有720個有效點,因爲採集的是彩色圖像,那麼一行就是由亮度信息(Y)和色差信息(CbCr)組成的,因爲是 YCbCr422格式,故一行中有720列Y,720列CbCr,這樣,一行的有效字節數就天然爲 720 x 2 = 1440 字節了。
4. EAV和SAV
EAV和SAV都是4個字節(Bytes),由上面的圖能夠知道,SAV後面跟着的就是有效的視頻數據了。那麼,EAV和SAV的格式是怎麼樣的呢?
EAV和SAV的4個字節的格式規定以下(下面以16進製表示):
FF 00 00 XY
其中,前三個字節爲固定的,必須是FF 00 00,而第4個字節(XY)是根據場、消隱信息而定的,其8個bit含義以下: 1 F V H P3 P2 P1 P0
其中,F:標記場信息,傳輸頂場時爲0,傳輸底場時爲1
V:標記消隱信息,傳輸消隱數據時爲1,傳輸有效視頻數據時爲0
H:標記EAV仍是SAV,SAV爲0,EAV爲1
而 P0~P3爲保護比特,其值取決於F、H、V,起到校驗的做用,計算方法以下:
![](http://static.javashuo.com/static/loading.gif)
5. 總結
這篇文章僅僅講了BT.656格式中最基本的一些概念,權當入門,許多視頻採集芯片都會涉及這方面的知識。若有疑問,歡迎留言討論。最後,感謝《A Brief Introduction to Digital Video》這篇英文文章對BT.656的介紹,寫得很不錯,我基本上根據它瞭解BT656和寫這篇文章的,有興趣的童鞋能夠看看。