1. 程式人生 > >FEC原理及其實現

FEC原理及其實現

感謝原作者:http://blog.csdn.net/rootusers/article/details/49097257

視訊會議中通常使用的FEC/QOS技術,這方面的資料比較複雜和稀少,根據這麼多年的工作經驗,做一下分享。

 在IP視訊通話中丟包造成的影響多種多樣。其中對視訊質量的影響主要有:馬賽克現象、區域性變形(影象的某些區域不清晰)、影象模糊、螢幕頻繁重新整理或閃爍、視音訊不同步、幀率下降、影象靜止等等。對音訊質量的影響包括:總體音訊失真、間斷或間歇性噪音、音訊中斷等。而對內容和演示資料質量的影響則包括:幻燈片模糊變形、翻頁速度減慢或螢幕頻繁重新整理和影象靜止等等。另外,丟包還會引起過度延遲,甚至是通話中斷。


      IP視訊通話中丟包造成的影響程度主要由丟包率、丟包隨時間變化情況和視訊通話中各個終端和裝置的能力所決定。正如我們通常認為的那樣,丟包率越高,對視訊通話的影響也更為明顯。

一:差錯控制技術

1. ARQ  :是一種按需重傳的機制,傳送者通過接受者的反饋得知有報文在傳輸過程中有丟失,就重傳該報文。

缺點:通訊通道的利用率不高,也就是說通道還遠遠沒有被資料流佔滿,需要接收方傳送ACK,這樣影響傳輸效率。可以想象,這種方式傳送方肯定需要一個buffer來儲存獲取到的資料。重複傳送資料包也會影響傳輸速度。可以稱之為後向糾錯。

2. FEC :是一種前向性糾錯技術,傳送方將要傳送的資料加上一定的冗餘糾錯碼一起傳送,接收方則根據糾錯碼對接收到的資料進行差錯檢測,如發現差錯,則由接收方進行糾錯。

特點:使用糾錯碼,單通道通訊,傳送方無需設定快取。

二:FEC

在計算機通訊中主要有丟失和錯誤兩種差錯。錯誤的原因是某些位元資料發生畸變;丟失的原因是某些資料包沒有收到。底層協議通常需要考慮這兩種情況,如鏈路層的FEC使用差錯校正碼對既有丟包又有錯誤碼的情況依然能重建正確的資料。它通常由硬體來實現,採用RS編碼,漢明碼等。

傳輸差錯反映到通訊高層只是資料包的丟失。因此工作在傳輸層或者應用層的FEC可通過丟失矯正碼和已知包數來處理丟失情況。

純的FEC技術不必重傳資料,但是編解碼增加了計算的開銷和複雜性,用處理能力和頻寬來換取可靠性和較小的回覆延遲,在丟包率較高的情況下,效能明顯下降,整體效能取決於丟失最嚴重的接收者。

三:範德蒙矩陣

範德蒙矩陣是法國資料家範德蒙提出的一種各列為幾何級數的的矩陣。其形式如下:

該矩陣的應用之一就是在糾錯編碼中。

四:FEC演算法是我們團隊最近剛開發出來的基於範夢德矩陣的演算法。運用在我們的視訊會議終端上,基於p2p協議,經過測試,在丟包5%的情況下,可以認為不丟包,超過50%完全能糾正過來。