由于傳統采用RGB 格式存儲數據流以用于多畫面合成的方法十分浪費資源。因此,為了在有限的頻帶條件下最大限度地提高資源利用率,本文提出了一種在不影響畫面質量的同時解決其資源利用問題的新方案。事實上。視頻會議多畫面軟件已經應用到生活的諸多領域。而且將會有更廣泛地使用。
1 數據流的捕獲
Windows 下捕獲數據包的結構如圖l 所示,其中NDIS 的NDIS (Network Driver Inte

利用 winpcap 進行網絡數據包的捕獲和過濾的設計步驟如下:
(1)打開網卡,設置網卡為混雜模式;
(2)回調函數Network Tap,得到監聽命令后從網絡設備驅動程序處收集數據包,并把監聽到的數據包傳送給過濾程序;
(3)當Packet filter 監聽到數據包到達時,NDIS 中間驅動程序調用分組驅動程序,該程序可將數據傳遞給每一個參與進程的分組過濾程序;
(4)由Packet filter過濾程序決定丟棄或接收數據包,并將接收的數據拷貝到相應的程序;
(5)通過分組過濾器后,再將未過濾掉的數據包提交給核心緩沖區,當系統緩沖區滿后,再將數據包拷貝到用戶緩沖區。監聽程序可以直接從用戶緩沖區中讀取捕獲的數據包;
(6)關閉網卡。
2 視頻數據流的解碼
捕獲到的視頻數據流。通常在網絡傳輸中都采用H.263視頻編碼建議,其圖像格式為CIF格式。H.263-CIF格式的數據流是一種壓縮編碼圖像格式,這種格式在網絡傳輸過程中可節省頻帶資源,可在有限的帶寬下最大限度地提高資源利用率。但是,CIF格式必須經過處理才能應用于多畫面合成。只有通過解碼使捕獲到的視頻數據流變成YUV(RGB)格式后,此圖像格式才可直接運用于多畫面合成,而且此格式的圖像合成也比較方便、快捷。為了使圖像由 H.263格式轉變為YUV(RGB)格式,應運用H.263解碼器進行解碼。其編解碼算法的概要圖如圖2所示。

3 多畫面合成
視頻數據流經過解碼之后,可將其變成YUV(RGB)格式。下一環節即是視頻數據流的合成(多畫面合成),這也是本文的關鍵技術。在視頻會議系統中,參加會議的與會者或許不只兩、三個,所有與會者可能分布全國乃至世界各地。為了使每個與會者都能進行面對面的直接交流,就需要在同一時間看到所有的與會者,因此,多畫面合成技術必不可少。通過多畫面合成能使N個不同的視頻畫面實時地在同一臺
YUV主要的采樣格式有YCbCr4:2:O、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4.:4。其中YCbCr4:1:1比較常用,其含義是每個點保存一個8 bit的亮度值(也就是Y值),每2x2個點保存一個Cr和Cb值,這樣,圖像在人的視覺中不會起太大的變化。RGB (R,G,B都是8 bit unsigned)模型的4個點需要8×3=24 bits,而現在僅需要8+(8/4)+(8/4)=12 bits,平均每個點占12 bits。這樣就把圖像的數據壓縮至一半。YUV411為每個像素都提取Y分量,UV分量在水平方向上每4個像素采樣一次。YUV420并非V分量采樣為 0,而只是跟YUV411相比,在水平方向上提高了一倍的色差采樣頻率,并在垂直方向上以U/V間隔的方式減小了一半色差采樣。
經過解碼即可得到YUV格式的數據流,H.263-CIF的圖像格式亮度取樣像素個數、亮度取樣行數為352x288,圖像是由許多像素點組成的,即一幅 H.263-CIF圖像占有352×288個像素點,經過解碼。這些值將不變化,即YUV格式的亮度取樣像素個數、亮度取樣行數也為352×288、也占有352×288個像素點。現在假設視頻數據是YUV420格式.它的采樣格式為4:2:0。在對YUV420格式的視頻數據進行存儲時,可按照圖3所示的存儲格式,先存儲所有的Y,之后存儲U,再存儲V,并且每個像素點占用一個Y,平均四個像素點占用一個U和V。每個像素點占用一個字節,則一幅圖像所占用的字節數將是352×288×(1+1,4+1/4)。

下面以四畫面為例來介紹該軟件的多畫面合成過程。當捕獲到的四個視頻數據流經過解碼后。每幅圖像的所有數據都是連續地保存在存儲單元中。這里用Ⅰ、Ⅱ、Ⅲ、Ⅳ來表示這四幅圖像,它們在存儲單元中的存儲狀態如圖4所示。每一副圖像都是單獨存儲的。實際需要得到的四合一圖像如圖5所示。

圖像在顯示時,所有像素點均有序排列,例如一幅352×288的圖像,它在存儲像素點時,首先存Y信號第l行的352個象素點,其次是第2行??直至第 288行存完Y信號,然后存儲U信號第l~288行的所有像素點,最后再存儲V信號的所有像素點。但四幅圖像合成之后,其圖像大小就會變為一副圖像的兩倍即704×576,因此,需要改變其存儲格式。即重新調整這四幅圖像的像素存儲順序,其具體過程如下:
(1)存儲第1幅圖像Y信號的第1行共352個像素點,再存儲第Ⅱ幅圖像Y信號的第l行共352個像素點,這樣就組成了新圖像Y信號的第1行共704個像素點:
(2)依此次序存儲新圖像Y信號的第2~288行;
(3)新圖像的第289行由第Ⅲ幅圖像Y信號的第1行其352個像素點加第Ⅳ幅圖像Y信號的第1行的352個像素點組成;
(4)新圖像的第290~576行Y信號也依此次序存儲,直到多畫面合成圖像所有的Y信號存儲完畢;
(5)重新從步驟(1)至步驟(4)以完成U、V信號的存儲。
經過上述5個步驟之后,新的多畫面圖像即按照設計的格式存儲起來,該多畫面的顯示可借助微軟公司的DirectShow來實現,這樣即可完成視頻會議的多畫面軟件系統設計。
4 結束語
在視頻會議系統多畫面軟件的分析與設計過程中,可先捕獲視頻數據流,并在經過解碼后用于多畫面合成。多畫面合成是視頻會議系統中的關鍵部分,捕獲數據及解碼是為這一過程作鋪墊,本文以四畫面合成為例,對多畫面合成過程進行了介紹。
在視頻會議中,運用多畫面軟件可以更好地進行實時性對話,提高會議效率。本文介紹的多畫面軟件不僅能應用于視頻會議,還可以廣泛地應用于其他場合。例如,在畫面合成時,應用該軟件對數據的存儲格式稍做改變,即可得到電視畫面的畫中畫效果;在常見的監視系統中運用多畫面合成技術,可以使多個監視器捕獲到的圖像同時在一個屏幕上顯示。視頻會議多畫面軟件不僅可以廣泛運用于會議,還可在軍事、交通、治安等復雜的指揮和控制場合發揮積極作用。
