關(guān)于H.264視頻編碼傳輸?shù)腝oS特性分析
4. 冗余片方法
H.264中參考圖像的選擇與以前在H.263中的一樣,在基于反饋的系統(tǒng)中,解碼器接收到丟失或被破壞的圖像信息時(shí),選擇參考圖像序列中正確的參考宏塊,來進(jìn)行錯(cuò)誤恢復(fù);而對(duì)于無反饋的系統(tǒng),H.264提出了冗余分片編碼。
冗余分片允許編碼器把在同一個(gè)碼流中添加同一MB的一個(gè)或更多冗余表示。需要注意的是這些冗余片的編碼參數(shù)與非冗余片的編碼參數(shù)不同,例如主片可用低QP(高質(zhì)量)來編碼,而冗余信息中能用一個(gè)高QP(低質(zhì)量)的方式來編碼,這樣質(zhì)量粗糙一些但碼率更低。解碼器在重構(gòu)時(shí),首先使用主片,如果它可用就拋棄冗余片;而如主片丟失(比如因?yàn)榘膩G失)冗余片也能被用于重構(gòu)。冗余片主要用于支持高誤碼的移動(dòng)環(huán)境。
5. 幀內(nèi)編碼
H.264中幀內(nèi)編碼大體上類似于以往的視頻編碼標(biāo)準(zhǔn),但也進(jìn)行了重要的改進(jìn),主要體現(xiàn)在:
?。?)H.264中幀內(nèi)預(yù)測(cè)宏塊的參考宏塊可以是幀間編碼宏塊,幀內(nèi)預(yù)測(cè)宏塊并不像H.263中的幀內(nèi)編碼一樣,而采用預(yù)測(cè)的幀內(nèi)編碼比非預(yù)測(cè)的幀內(nèi)編碼有更好的編碼效率,但降低了幀內(nèi)編碼的重同步性能,可以通過設(shè)置限制幀內(nèi)預(yù)測(cè)標(biāo)記來恢復(fù)這一性能。
?。?)只包含幀內(nèi)宏塊的片有兩種,一種是幀內(nèi)片(I Slice),一種是立即刷新片(IDR Slice)。立即刷新片需存在于立即刷新圖像(IDR Picture)中。與短期參考圖像相比,立即刷新圖像有更強(qiáng)壯的重同步性能。
為了更適用無線IP網(wǎng)絡(luò)環(huán)境中的應(yīng)用,H.264通過采用率失真優(yōu)化編碼和設(shè)置幀內(nèi)預(yù)測(cè)標(biāo)志,來提高幀內(nèi)圖像的重同步性能。
四、H.264的網(wǎng)絡(luò)提取層的錯(cuò)誤恢復(fù)
NAL支持眾多基于包的有線/無線通信網(wǎng)絡(luò),諸如H.320、MPEG-2和RTP/IP等。但目前,絕大部分的視頻應(yīng)用所采用的網(wǎng)絡(luò)協(xié)議層次是RTP/UDP/IP,因此在下面的描述中主要基于這個(gè)傳輸框架。下面首先分析NAL層的基本處理單元NALU以及它的網(wǎng)絡(luò)封裝、分割和合并的方法。
1. NAL單元
每個(gè)NAL單元是一個(gè)一定語法元素的可變長(zhǎng)字節(jié)字符串,包括包含一個(gè)字節(jié)的頭信息(用來表示數(shù)據(jù)類型),以及若干整數(shù)字節(jié)的負(fù)荷數(shù)據(jù)。一個(gè)NAL單元可以攜帶一個(gè)編碼片、A/B/C型數(shù)據(jù)分割或一個(gè)序列或圖像參數(shù)集。
NAL單元按RTP序列號(hào)按序傳送。其中,T為負(fù)荷數(shù)據(jù)類型,占5bit;R為重要性指示位,占2個(gè)bit;最后的F為禁止位,占1bit。具體如下:
?。?)NALU類型位
可以表示NALU的32種不同類型特征,類型1~12是H.264定義的,類型24~31是用于H.264以外的,RTP負(fù)荷規(guī)范使用這其中的一些值來定義包聚合和分裂,其他值為H.264保留。
?。?)重要性指示位
用于在重構(gòu)過程中標(biāo)記一個(gè)NAL單元的重要性,值越大,越重要。值為0表示這個(gè)NAL單元沒有用于預(yù)測(cè),因此可被解碼器拋棄而不會(huì)有錯(cuò)誤擴(kuò)散;值高于0表示此NAL單元要用于無漂移重構(gòu),且值越高,對(duì)此NAL單元丟失的影響越大。
(3)禁止位
編碼中默認(rèn)值為0,當(dāng)網(wǎng)絡(luò)識(shí)別此單元中存在比特錯(cuò)誤時(shí),可將其設(shè)為1,以便接收方丟掉該單元,主要用于適應(yīng)不同種類的網(wǎng)絡(luò)環(huán)境(比如有線無線相結(jié)合的環(huán)境)。例如對(duì)于從無線到有線的網(wǎng)關(guān),一邊是無線的非IP環(huán)境,一邊是有線網(wǎng)絡(luò)的無比特錯(cuò)誤的環(huán)境。假設(shè)一個(gè)NAL單元到達(dá)無線那邊時(shí),校驗(yàn)和檢測(cè)失敗,網(wǎng)關(guān)可以選擇從NAL流中去掉這個(gè)NAL單元,也可以把已知被破壞的NAL單元前傳給接收端。在這種情況下,智能的解碼器將嘗試重構(gòu)這個(gè)NAL單元(已知它可能包含比特錯(cuò)誤)。而非智能的解碼器將簡(jiǎn)單地拋棄這個(gè)NAL單元。NAL單元結(jié)構(gòu)規(guī)定了用于面向分組或用于流的傳輸子系統(tǒng)的通用格式。在H.320和MPEG-2系統(tǒng)中,NAL單元的流應(yīng)該在NAL單元邊界內(nèi),每個(gè)NAL單元前加一個(gè)3字節(jié)的起始前綴碼。在分組傳輸系統(tǒng)中,NAL單元由系統(tǒng)的傳輸規(guī)程確定幀界,因此不需要上述的起始前綴碼。一組NAL單元被稱為一個(gè)接入單元,定界后加上定時(shí)信息(SEI),形成基本編碼圖像。該基本編碼圖像(PCP)由一組已編碼的NAL單元組成,其后是冗余編碼圖像(RCP),它是PCP同一視頻圖像的冗余表示,用于解碼中PCP丟失情況下恢復(fù)信息。如果該編碼視頻圖像是編碼視頻序列的最后一幅圖像,應(yīng)出現(xiàn)序列NAL單元的end,表示該序列結(jié)束。一個(gè)圖像序列只有一個(gè)序列參數(shù)組,并被獨(dú)立解碼。如果該編碼圖像是整個(gè)NAL單元流的最后一幅圖像,則應(yīng)出現(xiàn)流的end?!?
H.264采用上述嚴(yán)格的接入單元,不僅使H.264可自適應(yīng)于多種網(wǎng)絡(luò),而且進(jìn)一步提高其抗誤碼能力。序列號(hào)的設(shè)置可發(fā)現(xiàn)丟的是哪一個(gè)VCL單元,冗余編碼圖像使得即使基本編碼圖像丟失,仍可得到較“粗糙”的圖像。
2. H.264中的RTP
上面闡述了NAL單元的結(jié)構(gòu)和實(shí)現(xiàn),這里要詳細(xì)討論RTP的載荷規(guī)范和抗誤碼性能。RTP可通過發(fā)送冗余信息來減少接收端的丟包率,會(huì)增加時(shí)延,與冗余片不同的是它增加的冗余信息是個(gè)別重點(diǎn)信息的備份,適合于非平等保護(hù)機(jī)制。相應(yīng)的多媒體傳輸規(guī)范有:
?。?)分組復(fù)制多次重發(fā),發(fā)送端對(duì)最重要的比特信息分組進(jìn)行復(fù)制重發(fā),使得保證接收端能至少正確接收到一次,同時(shí)接收端要丟棄已經(jīng)正確接收的分組的多余備份。
(2)基于分組的前向糾錯(cuò),對(duì)被保護(hù)的分組進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果作為冗余信息發(fā)送到接收方。由于時(shí)延,不用于對(duì)話型應(yīng)用,可用于流媒體。
(3)音頻冗余編碼,可保護(hù)包括視頻在內(nèi)的任何數(shù)據(jù)流。每個(gè)分組由頭標(biāo)、載荷以及前一分組的載荷組成,H.264中可與數(shù)據(jù)分割一起使用。
評(píng)論