席世文 深圳供電局有限公司
由于信息技術的發展,視頻壓縮編碼技術也隨之在一步步發展,這就導致雖然網絡寬帶資源是收到限制的,但是人們依然能夠還是能夠獲得海量的視頻資源。這種技術的原理就是將原始的視頻內容,使用信源壓縮編碼將其壓縮成為比特流,然后再將其封裝變成一個數據包,最后在將這些信息使用網絡從發送端傳輸到接收端。但是這個過程存在著很多問題,有可能會導致數據包丟失的情形發生,比如說當發生緩存溢出、出現信道噪聲以及排隊發生延遲等等都有可能造成數據包的丟失,這將會對接收端接收到的視頻的質量產生不良的影響。
應用層前向糾錯技術是目前來說,能夠保證在廣播網絡之中的傳輸效果的最佳方法,這種方法主要就是在發送端進行前行糾錯的編碼。前向糾錯主要被分為兩種類型,一類是物理層前向糾錯,而另外一種是應用層的前行糾錯。一般在物理層能夠使用的額糾錯碼有兩種類型,一種是LDPC碼,而另外一種是turbo碼。應用層一般使用的是噴泉碼,這是一種適合進行二元刪除信道的一種前向糾錯碼,這種類型的糾錯碼能夠做到很好地提高信道的網絡魯棒性以及信道的容量。
假如說給定一個源符號集,該源符號集僅僅包含著k 個符號,而使用了噴泉碼進行編碼就能夠產生更多的、任意的編碼符號,此外,如果接收端能夠接收到這其中的任意n 個編碼符號的話,那么就可以據此解碼得到相同的k 個源符號,并且在這之中存在一種情況就是n 是略大于k 的。而一般來說最為理想的噴泉碼實際上是n 與k 的數值相同。其中還有一個概念就是系統噴泉碼,系統噴泉碼具體就是指,采用噴泉碼所產生的前k 個編碼的符號,是較為特殊的,他們與源符號是完全相同的。經過數代人的研究,其中第一種產生使用效果的噴泉碼是LT 碼,但是這種碼存在一些缺陷,就是隨著源符號數目的增加,編解碼的復雜程度也會隨之增加,即兩者的關系是一種非線性增長關系。后來人們為了克服這一個缺點,又進行了更深層次的研究,又發現了性能更加完善的Rap-tor 碼,這種碼具有很多優秀的特點,比如說解碼的開銷很小、解碼的復雜程度也很低等等。隨著之后的進一步發展,目前這種碼已經逐步被標準化成為DVB 以及3GPP 之中的一部分。
目前來說,視頻廣播傳輸已經開始廣泛地應用raptor 碼。當然隨著技術的進一步發展還有更為先進的碼被發現,比如說滑動窗raptor 碼,這種碼在分級視頻編碼碼流的廣播之中被廣泛的應用到,這種碼的主要特點就是在源符號集的基礎上,使用固定大小窗口進行滑動式的編碼,這樣做的好處主要是能夠虛擬地使得編碼數據塊的長度增加,進而能夠進一步提高譯碼的成功概率,與此同時,還能夠起到一個不等差錯保護的作用。關于不等差錯保護作用,相關學者研究發現了一種擴展窗編碼,這種編碼具有不等差錯保護的特性,并且還被廣泛的應用到SVC 的廣播之中。之后有學者根據SVC 碼流具有不同層數據間存在的解碼之間的依賴關系,提出來一種新型的前向糾錯方案即Layer-Aware,這種方案能夠有效地提升寬帶的利用效率。
但是前人的研究雖然能夠有效地解決一些視頻傳輸之中存在問題,但是他們在考慮問題的時候,往往會忽略我們如今已經處于無線網絡的環境之中,信道寬帶受到嚴重的限制,那么我們應該如何在這個不利的情況下來保證視頻廣播的質量以及效果不受到影響。由于本文就在系統raptor 碼的基礎上,對在無線網絡環境之下,對視頻廣播通信進行應用層前向糾錯。這種方案主要是針對不同的終端存在著不同的信道狀態,然后以此來犧牲一些低丟包率終端的視頻的質量,然后來獲得總體上的提升,使得小區內所有用戶所接收到的視頻質量能夠得到有效的提升。
根據上述的介紹已經能夠清楚地知道LT 碼的編解碼是一種呈現非線性增長關系即源符號增加則編解碼的復雜程度也會隨之增加,這就可以很明顯地發現,這種碼并不適合應用到實際的系統之中,將會受到及其嚴重的制約。因此Shokrollahi 對這種碼進行了改進,在不改變LT 碼原來的特性的基礎上,增加了一個預編碼的過程,這就變成了raptor 碼,這種碼與LT 碼相比會更加的實用,也具有更多地優勢。首先,對于raptor 碼來說,它是一種解碼的開銷很小,并且進行解碼的成功概率會更高的一種碼,它的編解碼的復雜程度與源符號的數目呈現出一種線性增長。具體來研究raptor 碼的編碼過程主要是分為兩步,第一步是預編碼步驟,源符號經過這一步驟之后會變成一種中間符號;第二步就是LT 編碼的步驟,中間符號經過這一步驟最終變為raptor 碼。由于在raptor 編碼的過程之中加入了一個預編碼的過程,所以實質上只要在LT 碼的解碼的階段之中,能夠做到將原來的部分中間符號的數目恢復,那么就能夠通過中間符號來找到原來的源符號,這樣做實質上能夠很大程度上降低對于LT 碼的解碼性能上的一些要求,此外這種做法還能夠保證在編解碼時間復雜度不增加的情況下,源符還能夠高概率、高效率地被還原。在真正進行raptor 碼的解碼階段的時候,接收端需要考慮到一些因素,包括源符號的數量、中間符號的數量以及零符號的數量等問題,并且還要考慮到當接收端所接收到的編碼符號的數量是大于等于源符號的數量的時候,這才是解碼器在進行正確解碼的過程。但是進行raptor碼的編碼的過程是一個與解碼過程正好相反的過程,當然也可以被分為兩個步驟,第一個步驟就是LT 解碼極短,通過這個階段獲得中間符號;然后第二個階段就是恢復源符號階段,就是對中間符號進行解碼從而獲得源符號。
在使用raptor 碼的時候,破解raptor 碼的譯碼失敗率就存在以下兩種情況,一種就是當接收端所接收到的編碼符號的數量是大于源符號的數量的時候,那么就有很高的概率(接近1 的概率)恢復源符號。相反地,如果接收端所接收到的編碼符號的數量小于或者是等于源符號的數量的時候,那么將會有0.85 × 0.567r-k 的概率恢復源符號。
假如說是按照一個固定代大小的方式對每一個視頻條帶進行編碼,然后在進行raptor 編碼的時候使用這些視頻條帶作為進行編碼的源符號,最后再采用優先級劃分的方式對視頻數據進行一個劃分,這個劃分方法的核心首先就是要將每一個編碼變成視頻調點,然后在將視頻條帶劃分成為不同的等級。在這種情況下,如果有一條視頻條帶發生丟失的情況,那么根據原有的預測編碼的結構,就有可能導致那些相同的圖像組中的相同的視頻條帶的部分的解碼受到一定的影響。在這個時候就可以采用計算整個圖像組之內的平方誤差和,然后根據這個平方誤差和來對視頻條帶的重要程度進行衡量。假如說將在一個圖像組內圖像的數目總和定義為N,然后再用X 和Y 分別來定義圖像的寬度和高度,其單位是像素,那么總失真和就是X、Y 以及N 的平方誤差和的乘積。如果發現某個視頻的第一幀丟失的話,可以采取一些方法進行恢復,比如說基于雙線性內插的幀內錯誤隱藏算法,這種算法的作用是將那些丟失的數據恢復,也可以稱之為重建。如果是其他幀發生丟失的情況,可以采取另一種方法進行恢復,比如說基于零運動矢量復制的幀間錯誤隱藏算法,然后對那些丟失的數據進行恢復。假如說是某一幀的某一宏塊發生丟失的情況,那么這個時候就可以直接其前一幀相同位置的宏塊直接補上丟失位置的宏塊。
假如說在信道寬帶受到限制的情況下,進行視頻單播,實際上這個時候之后少部分的視頻符號能夠真正地、正確無誤地傳輸到接收端,這個時候的視頻質量并不是很高,為了更好地提升接收所接收到的視頻的質量,已達到最優的情形,只需要同時滿足兩個條件:第一點就是接收端的質量問題,即接收是否能夠接收到足夠多的視頻符號;第二點就是視頻符號的重要性的問題,保證接收端所接受到的視頻符號都是需要接收到的視頻符號之后最為重要的。如果想要獲得最好的視頻質量,那么就要做好最優的視頻傳輸。假設在raptor 的編碼過程之中,發送端有N個編碼符號,總的待傳輸的編碼數目有K個,其中有K1 是實際傳輸出去的源符號數目,而有P1 隨機丟包率,接收端所能接收到的編碼數碼是R。假設是在較為理想的狀態下,進行編碼的過程之中不需要進行解碼開銷的階段,那么只有當R 等于K1 的時候,才能夠實現正確的解碼。在這個時候需要做的就是在源符號之中選擇其中最為重要的源符號進行編碼,即保接收端能夠接收到這些最為重要的源符號,這個時候視頻的質量就能夠獲得最優值。
由于廣播與單播是不一樣的情況,廣播的發送端與接收端之間的鏈路狀態差異較大,所以單播的方案并不適合廣播。在考慮廣播的糾錯方案時需要考慮到數據包在發送端以及接收端之間傳輸的時候的丟包率。假設丟包率是隨機分布的,那么先考慮一個編碼單元,發送端有N 個編碼,整個過程之中有K 個視頻源符號,K1 是其中最為重要的源符號,K2 是其中不重要的源符號,先計算出源符號的優先等級,在計算其視頻失真大小。最后為了使得視頻的質量能夠達到最優的效果,采用啟發式搜索算法進行計算來確定最重要的源符號數目以及最不重要的源符號數目。最終表明丟失那些不重要的源符號,然后傳輸最為重要的源符號,最終獲得更為高質量的視頻,即本文想要提出的方案:犧牲少部分低丟包率的終端所能夠接收的視頻的質量,然后保存高丟包率的終端能夠接收到的視頻的質量,最終達到一個用戶總體上的視頻質量的提高,從而最終獲得一個更加優秀的廣播傳輸的效果。
本文的核心就是針對raptor 碼提出一種糾錯方案,該種方案主要是適用于視頻廣播,進行應用層前行糾錯的方案,主要是結合視頻壓縮編碼器所具有的獨特的結構上的特點,首先對壓縮的視頻進行一個優化級的劃分,然后在討論一下在單播的情況下的視頻質量最優的方案,在結合到廣播場景之中,提升視頻的質量。總體上來說就是犧牲低丟包率終端的視頻質量,來提高整體的質量。