在1995年ITU-T完成了用于視頻電話的H.263標(biāo)準(zhǔn)之后,該組織ITU-T視頻編碼專家組VCEG著手在兩方面開始進(jìn)一步的研究:一是短期研究,努力在H.263中增加許多額外的特征,這就形成H.263的第二版本H.263+和第三版本H.263++;二是長期研究,著手制定低比特率的視頻通信新標(biāo)準(zhǔn),這就是H
新的視頻編碼標(biāo)準(zhǔn)H.264與H.261/H.263和MPEG-X的視頻編碼標(biāo)準(zhǔn)有很大改進(jìn),它不僅含有一個規(guī)定視頻編碼算法的視頻編碼層(VCL,Video Coding Layer),還包括一個規(guī)定網(wǎng)絡(luò)傳輸規(guī)范的網(wǎng)絡(luò)提取層(NAL,Network Abstraction Layer)。H.264的視頻編碼層采取的編碼框架仍然是傳統(tǒng)的混合編碼框架,H.264編碼效率的提高也不只是其中某一項新的編碼技術(shù)所產(chǎn)生的決定性的結(jié)果,而是多種新技術(shù)所產(chǎn)生的細(xì)微的效果積累而致。這些新技術(shù)包括:多種新的幀內(nèi)預(yù)測方法、可變尺寸塊的運動補償技術(shù)、多參考幀的運動補償技術(shù)、4×4整數(shù)變換技術(shù)、新的環(huán)路濾波技術(shù)等。與先前的標(biāo)準(zhǔn)相比較,H.264的應(yīng)用前景更為廣泛。例如它允許在Internet中以1Mbit/s的速率傳送電視質(zhì)量的視頻信號,它可以使8 MHz的模擬帶寬中容納兩倍于MPEG-2編碼的數(shù)字電視頻道,它使無線視頻通信成為可能,它對傳統(tǒng)的數(shù)字媒體存儲技術(shù)也將產(chǎn)生巨大的影響。可以肯定,H.264標(biāo)準(zhǔn)的制定標(biāo)志著有限失真數(shù)字視頻編碼技術(shù)開始走向成熟。H.264的主要功能目標(biāo)如下:
●高壓縮率,在所有的速率上,比H.263節(jié)省約50%的比特率,在高比特率時有優(yōu)秀的圖像質(zhì)量;
●采用簡潔的設(shè)計方式,簡單的語法描述,避免過多的選項和配置,盡量利用現(xiàn)有的編碼模塊;
●低時延,對不同的業(yè)務(wù)靈活地采用相應(yīng)的時延限制;
●加強(qiáng)對誤碼和丟包的處理,增強(qiáng)解碼器的差錯恢復(fù)能力;
●在編解碼器中采用復(fù)雜度可分級設(shè)計,即在圖像質(zhì)量和編碼處理之間可分級處理,以適應(yīng)高或低復(fù)雜性的具體應(yīng)用;
●提高網(wǎng)絡(luò)適應(yīng)性,采用“網(wǎng)絡(luò)友好(Network friendliness)”的結(jié)構(gòu)和語法,以適應(yīng)IP網(wǎng)絡(luò)、移動網(wǎng)絡(luò)的應(yīng)用;
●基本檔次(Baseline profile)的使用無需版權(quán)。
H.264建議的特點可以歸納為三個方面:一是注重實用,采用成熟的技術(shù),追求更高的編碼效率,簡潔的表現(xiàn)形式;二是注重對移動和IP網(wǎng)絡(luò)的適應(yīng),采用分層技術(shù),從形式上將編碼和信道隔離開來,實質(zhì)上是在源編碼器算法中更多地考慮到信道的特點;三是在混合編碼器的基本框架下,對其主要關(guān)鍵部件都做了重大改進(jìn),如多模式運動估計、幀內(nèi)預(yù)測、多幀預(yù)測、統(tǒng)一VLC、4×4二維整數(shù)變換等。
最后,必須說明的是,H.264優(yōu)越性能的獲得不是沒有代價的,其代價是計算復(fù)雜度的大大增加,據(jù)估計,編碼的計算復(fù)雜度大約相當(dāng)于H.263的3倍,解碼復(fù)雜度大約相當(dāng)于H.263的2倍。H.264的主要特征表現(xiàn)為:
1、H.264的分層處理
與早期的標(biāo)準(zhǔn)(如H.261 /H.263、MPEG-1/MPEG-2)一樣,H.264標(biāo)準(zhǔn)并沒有明確定義編解碼器算法,而是定義了編碼視頻碼流的結(jié)構(gòu)和這個視頻碼流的解碼方法。H.264編解碼結(jié)構(gòu)功能框圖如圖1所示。H.264算法在概念上可以分為兩層:視頻編碼層(VCL)負(fù)責(zé)高效的視頻內(nèi)容表示;網(wǎng)絡(luò)提取層(NAL)負(fù)責(zé)按照網(wǎng)絡(luò)所要求的適當(dāng)方式對數(shù)據(jù)進(jìn)行打包和傳送,H.264編碼器分層結(jié)構(gòu)圖中的H. 324/M表示用于移動的H.324系統(tǒng)。
1)H.264的視頻編碼層
由H.264所定義的編碼方案表面上類似于已獲得成功應(yīng)用的視頻編碼標(biāo)準(zhǔn)(如H.263和MPEG-2)。也包括了基于塊的運動補償,基于DCT變換的殘差編碼,因比特率控制而引入的可變量化步長,Zig-Zag掃描和系數(shù)的VLC編碼等。然而,H.264草案的VCL層除了通用的基于塊運動補償?shù)幕旌暇幋a之外,還具有一些其它視頻編碼建議所沒有的新特性。為了增加標(biāo)準(zhǔn)應(yīng)用的靈活性,H.264建議與以前的建議一樣,沒有考慮視頻的前處理和后處理功能。
在VCL中,運動補償?shù)倪^程不同于先前標(biāo)準(zhǔn),一個16×16的宏塊可以具有7種不同形狀和尺寸的塊運動預(yù)測,最小的塊尺寸可以是4×4,因此每個宏塊可以有1、2、4、8或16個運動矢量,缺省的運動矢量精度通常為1/4像素,最初草案中H.264選項也支持運動矢量1/8像素精度(后來不考慮1/8像素精度)。支持小數(shù)取樣內(nèi)插濾波、支持多參考幀圖像,除了I幀、P幀和B幀外還支持兩種類型的S幀,即SP幀和SI幀。SP幀類似于P幀,是一種充分利用運動預(yù)測編碼來去除時間相關(guān)性的方法,它與P幀區(qū)別在于即使采用幾個不同參考幀預(yù)測時,也可以允許有相同的重建幀。這種S幀的引入,對于在比特流中進(jìn)行幀切換、拼接、隨機(jī)存取、快進(jìn)、快退等功能的實現(xiàn)更為方便。在編碼器預(yù)測環(huán)路采用了去方塊效應(yīng)濾波。
2)H.264的網(wǎng)絡(luò)提取層
網(wǎng)絡(luò)提取層(NAL)負(fù)責(zé)使用下層網(wǎng)絡(luò)的分段格式來封裝數(shù)據(jù),包括組幀、邏輯信道的信令、定時信息的利用或發(fā)序列結(jié)束信號等。例如,NAL支持視頻在電路交換信道上的傳輸格式,支持視頻在Internet上利用RTP/UDP/IP傳輸?shù)母袷健?/SPAN>NAL包括網(wǎng)絡(luò)提取層的頭信息、段結(jié)構(gòu)信息和實際載荷信息,即上層的VCL數(shù)據(jù)(如果采用數(shù)據(jù)分割技術(shù),數(shù)據(jù)可能由幾個部分組成)。NAL提供適當(dāng)?shù)挠成浞椒▽㈩^部信息和數(shù)據(jù)映射到傳輸協(xié)議層上,可以減少在分組交換傳輸中組幀和重同步所需要的資源開銷。
為了提高在不同特性的網(wǎng)絡(luò)上定制VCL數(shù)據(jù)格式的能力,H.264的網(wǎng)絡(luò)提取層在VCL和NAL之間定義了基于分組的接口規(guī)范、打包方式等(即上述NAL對VCL數(shù)據(jù)的承載過程),也包括了相應(yīng)的信令內(nèi)容。這樣,高效率編碼任務(wù)和網(wǎng)絡(luò)友好性任務(wù)就由VCL和NAL分別來完成。
2、H.264的檔次和級別
H.264標(biāo)準(zhǔn)規(guī)定了三個檔次,它們是基本檔次(Baseline Profile)、主檔次(Main Profile)和擴(kuò)展檔次(Extended Profile),分別對應(yīng)于不同場合的應(yīng)用。后來又增加了一個新的擴(kuò)展檔次,即專業(yè)擴(kuò)展檔次(Extended Professional Profile),其主要應(yīng)用為超高質(zhì)量的視頻圖像、數(shù)字影院等。屬于某個檔次的H.264解碼器必須支持這個檔次所包括的所有內(nèi)容,而編碼器則不需要支持這個檔次的所有內(nèi)容,但是要符合標(biāo)準(zhǔn)規(guī)定的碼流結(jié)構(gòu)。H.264三個主要檔次所規(guī)定的內(nèi)容如下:
1)基本檔次:基本檔次包含除了下述兩部分之外的所有H.264標(biāo)準(zhǔn)所規(guī)定的內(nèi)容。這兩部分是:
●B幀、加權(quán)預(yù)測(Weighted Prediction)、自適應(yīng)算術(shù)編碼(CABAC,Context-based Adaptive Binary Arithmetic Coding)、場編碼(Field Coding)及其視頻圖像宏塊自適應(yīng)切換場和幀編碼(MB-AFF,Macroblock Adaptive Field/Frame Coding)。
●SP/SI片(slice)和片的數(shù)據(jù)分割(Data Partitioning)。
2)主檔次:首先主檔次包含了基本檔次中不包括的上述第一個部分,同時主檔次不包含基本檔次中所包括的靈活宏塊順序(FMO,Flexible Macroblock Ordering)、任意片順序(ASO,Arbitrary Slice Ordering)和可冗余的圖片數(shù)據(jù)(Redundant Pictures Features)這些內(nèi)容。
3)擴(kuò)展檔次:擴(kuò)展檔次包含了除自適應(yīng)算術(shù)編碼之外的所有H.264標(biāo)準(zhǔn)所規(guī)定的內(nèi)容。H.264三個主要檔次所采用的技術(shù)分類如圖2所示。
圖2:H.264標(biāo)準(zhǔn)三個主要檔次采用技術(shù)示意圖
3、多種幀內(nèi)預(yù)測模式
在以往的視頻編碼標(biāo)準(zhǔn)中,幀內(nèi)圖像編碼是直接對宏塊進(jìn)行DCT變換、量化和熵編碼生成輸出比特流的,幀內(nèi)編碼的數(shù)據(jù)量往往要比幀間編碼圖像大很多,在強(qiáng)制刷新、碼流控制以及增加抗誤碼性能時引入的幀內(nèi)編碼往往造成碼率的不平穩(wěn)現(xiàn)象。H.264在幀內(nèi)編碼作了進(jìn)一步改進(jìn),類似于幀間編碼引入了幀內(nèi)預(yù)測方法,即對編碼宏塊進(jìn)行不同模式的幀內(nèi)預(yù)測,然后對預(yù)測誤差信號進(jìn)行DCT變換,避免了以往幀內(nèi)編碼的缺陷。幀內(nèi)4×4亮度塊共有9種可選幀內(nèi)預(yù)測模式,幀內(nèi)16×16亮度塊共有4種可選幀內(nèi)預(yù)測模式。而幀內(nèi)8×8色度塊有4種預(yù)測模式。
4、多模式高精度幀間預(yù)測
在視頻編碼標(biāo)準(zhǔn)中,幀間預(yù)測是一種充分利用時間相關(guān)性去除時間冗余數(shù)據(jù)的有效編碼方法。宏塊通常是進(jìn)行預(yù)測的基本單元,一個宏塊對應(yīng)一個運動矢量。在高級預(yù)測模式下,一個宏塊的四個8×8亮度塊各自對應(yīng)一個運動矢量。然而在H.264編碼器中,塊的劃分要復(fù)雜得多,它支持范圍從16×16到4×4大小的運動補償亮度塊尺寸,也就是說每個宏塊可以劃分成16×16、16×8、8×16或8×8四種子塊模式。如果選擇8×8模式,則每個8×8塊可以進(jìn)一步劃分成以下四種子塊模式:8×8、8×4、4×8、4×4。由此可見,H.264幀間編碼是一種多模式幀間預(yù)測編碼。對于宏塊中的每一個塊或子塊都有一個獨立的運動矢量,每個運動矢量必須進(jìn)行編碼并通過碼流來發(fā)送。
在一個宏塊中殘差數(shù)據(jù)以圖3順序進(jìn)行編碼發(fā)送。如果一個宏塊以16×16的幀內(nèi)模式編碼,則首先發(fā)送標(biāo)志為“-1”的塊,它是由每個4×4亮度塊的DC系數(shù)組成,接著發(fā)送編號為0~15的16個4×4亮度殘差編碼塊(在16×16幀內(nèi)宏塊模式下,標(biāo)號為0~15的這些4×4亮度殘差塊DC系數(shù)設(shè)為0),再接著發(fā)送標(biāo)號為16和17的2個2×2色度塊,它分別由4×4的Cb和Cr系數(shù)的DC系數(shù)組成,最后發(fā)送標(biāo)號為18~25的8個4×4色度殘差編碼塊。另外,對于H.264標(biāo)準(zhǔn),缺省的運動補償是1/4像素精度,比MPEG-1、MPEG-2、MPEG-4以及H.261、H.263的整像素或半像素相比具有更高的精度。從而使得塊的匹配更加精確,運動補償后要進(jìn)行變換編碼的殘差數(shù)據(jù)更少。
5、多參考幀預(yù)測
在H.264中,允許編碼器使用多于一幀的先前幀進(jìn)行運動估計,這就是所謂的多幀參考技術(shù)。例如選用2幀或3幀剛剛編碼好的參考幀,編碼器將選擇對每個目標(biāo)宏塊能給出更好的預(yù)測幀,并為每一個宏塊指示是哪一幀被用于預(yù)測的。
6、4×4塊的整數(shù)變換
與以往的視頻編碼標(biāo)準(zhǔn)相似,H.264對殘差采用基于塊的變換編碼,而且這種變換是整數(shù)操作而不是實數(shù)運算,其過程和DCT基本相似。這種方法的優(yōu)點在于:在編碼器和解碼器中可以得到精度相同的正變換和反變換,便于使用簡單的定點運算方式。也就是說,這種變換不會出現(xiàn)“反變換誤差”,從而消除因變換精度所引起的圖像失真。變換的最小單位是4×4塊,而不是以往常用的8×8塊。由于用于變換塊的尺寸的縮小,運動物體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區(qū)域不產(chǎn)生塊之間的灰度差異,可對幀內(nèi)宏塊亮度數(shù)據(jù)的16個4×4塊的DC系數(shù)(每個小塊一個DC系數(shù),共
7、統(tǒng)一的熵編碼
H.264建議中熵編碼有兩種方法:一種是對所有的語法單元采用統(tǒng)一的UVLC(Universal Variable-Length Coding),另一種是采用內(nèi)容自適應(yīng)的二進(jìn)制算術(shù)編碼器(CABAC)。CABAC是可選項,其編碼性能比UVLC要好,主要體現(xiàn)在三個方面。首先,基于內(nèi)容的編碼利用了編碼符號的條件概率特性;其次,算術(shù)編碼允許分配給每個符號非整數(shù)個比特;第三,自適應(yīng)算法允許熵編碼器自適應(yīng)非穩(wěn)定概率分布的符號特性。但計算復(fù)雜度要比UVLC高。UVLC使用一個長度無限的碼字集,采用規(guī)則的碼表,很容易產(chǎn)生一個碼字,解碼器也很容易識別碼字的前綴,當(dāng)發(fā)生比特錯誤時ULVC能快速獲得重同步,它是H.264的基本編碼方法。