H264

H264

H.264,同時也是MPEG-4第十部分,是由ITU-T視頻編碼專家組(VCEG)和ISO/IEC動態圖像專家組(MPEG)聯合組成的聯合視頻組(JVT,Joint Video Team)提出的高度壓縮數字視頻編解碼器標準。這個標準通常被稱之為H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明確的說明它兩方面的開發者。 H264標準各主要部分有Access Unit delimiter(訪問單元分割符),SEI(附加增強信息),primary coded picture(基本圖像編碼),Redundant Coded Picture(冗餘圖像編碼)。還有Instantaneous Decoding Refresh(IDR,即時解碼刷新)、Hypothetical Reference Decoder(HRD,假想參考解碼)、Hypothetical Stream Scheduler(HSS,假想碼流調度器)。

技術

H.264和以前的標準一樣,也是DPCM加變換編碼的混合編碼模式。但它採用“回歸基本”的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮性能;加強了對各種信道的適應能力,採用“網路友好”的結構和語法,有利於對誤碼和丟包的處理;套用目標範圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求。

技術上,它集中了以往標準的優點,並吸收了標準制定中積累的經驗。與H.263 v2(H.263+)或MPEG-4簡單類(Simple Profile)相比,H.264在使用與上述編碼方法類似的最佳編碼器時,在大多數碼率下最多可節省50%的碼率。H.264在所有碼率下都能持續提供較高的視頻質量。H.264能工作在低延時模式以適應實時通信的套用(如視頻會議),同時又能很好地工作在沒有延時限制的套用,如視頻存儲和以伺服器為基礎的視頻流式套用。H.264提供包傳輸網中處理包丟失所需的工具,以及在易誤碼的無線網中處理比特誤碼的工具。

在系統層面上,H.264提出了一個新的概念,在視頻編碼層(Video Coding Layer,VCL)和網路提取層(Network Abstraction Layer,NAL)之間進行概念性分割,前者是視頻內容的核心壓縮內容之表述,後者是通過特定類型網路進行遞送的表述,這樣的結構便於信息的封裝和對信息進行更好的優先權控制。

編碼

1.幀內預測編碼

幀內編碼用來縮減圖像的空間冗餘。為了提高H.264幀內編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關性,相鄰的宏塊通常含有相似的屬性。因此,在對一給定宏塊編碼時,首先可以根據周圍的宏塊預測(典型的是根據左上角宏塊、左邊宏塊和上面宏塊,因為此宏塊已經被編碼處理),然後對預測值與實際值的差值進行編碼,這樣,相對於直接對該幀編碼而言,可以大大減小碼率。

H.264提供9種模式進行4×4像素宏塊預測,包括1種直流預測和8種方向預測。在圖中,相鄰塊的A到I共9個像素均已經被編碼,可以被用以預測,如果我們選擇模式4,那么,a、b、c、d4個像素被預測為與E相等的值,e、f、g、h4個像素被預測為與F相等的值,對於圖像中含有很少空間信息的平坦區,H.264也支持16×16的幀內編碼。

2.幀間預測編碼

幀間預測編碼利用連續幀中的時間冗餘來進行運動估計和補償。H.264的運動補償支持以往的視頻編碼標準中的大部分關鍵特性,而且靈活地添加了更多的功能,除了支持P幀、B幀外,H.264還支持一種新的流間傳送幀——SP幀,如圖3所示。碼流中包含SP幀後,能在有類似內容但有不同碼率的碼流之間快速切換,同時支持隨機接入和快速回放模式。圖3 SP-幀示意圖H.264的運動估計有以下4個特性。

(1)不同大小和形狀的宏塊分割

對每一個16×16像素宏塊的運動補償可以採用不同的大小和形狀,H.264支持7種模式,如圖4所示。小塊模式的運動補償為運動詳細信息的處理提高了性能,減少了方塊效應,提高了圖像的質量。圖4 宏塊分割方法

(2)高精度的亞像素運動補償

在H.263中採用的是半像素精度的運動估計,而在H.264中可以採用1/4或者1/8像素精度的運動估值。在要求相同精度的情況下,H.264使用1/4或者1/8像素精度的運動估計後的殘差要比H.263採用半像素精度運動估計後的殘差來得小。這樣在相同精度下,H.264在幀間編碼中所需的碼率更小。

(3)多幀預測

H.264提供可選的多幀預測功能,在幀間編碼時,可選5個不同的參考幀,提供了更好的糾錯性能,這樣更可以改善視頻圖像質量。這一特性主要套用於以下場合:周期性的運動、平移運動、在兩個不同的場景之間來回變換攝像機的鏡頭。

(4)去塊濾波器

H.264定義了自適應去除塊效應的濾波器,這可以處理預測環路中的水平和垂直塊邊緣,大大減少了方塊效應。

3.整數變換

在變換方面,H.264使用了基於4×4像素塊的類似於DCT的變換,但使用的是以整數為基礎的空間變換,不存在反變換因為取捨而存在誤差的問題,變換矩陣如圖5所示。與浮點運算相比,整數DCT變換會引起一些額外的誤差,但因為DCT變換後的量化也存在量化誤差,與之相比,整數DCT變換引起的量化誤差影響並不大。此外,整數DCT變換還具有減少運算量和複雜度,有利於向定點DSP移植的優點。

4.量化

H.264中可選52種不同的量化步長,這與H.263中有31個量化步長很相似,但是在H.264中,步長是以12.5%的複合率遞進的,而不是一個固定常數。

在H.264中,變換係數的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描,如圖6所示。大多數情況下使用簡單的之字形掃描;雙掃描僅用於使用較小量化級的塊內,有助於提高編碼效率。圖6 變換係數的讀出方式

5.熵編碼

視頻編碼處理的最後一步就是熵編碼,在H.264中採用了兩種不同的熵編碼方法:通用可變長編碼(UVLC)和基於文本的自適應二進制算術編碼(CABAC)。

在H.263等標準中,根據要編碼的數據類型如變換係數、運動矢量等,採用不同的VLC碼錶。H.264中的UVLC碼錶提供了一個簡單的方法,不管符號表述什麼類型的數據,都使用統一變字長編碼表。其優點是簡單;缺點是單一的碼錶是從機率統計分布模型得出的,沒有考慮編碼符號間的相關性,在中高碼率時效果不是很好。

因此,H.264中還提供了可選的CABAC方法。算術編碼使編碼和解碼兩邊都能使用所有句法元素(變換係數、運動矢量)的機率模型。為了提高算術編碼的效率,通過內容建模的過程,使基本機率模型能適應隨視頻幀而改變的統計特性。內容建模提供了編碼符號的條件機率估計,利用合適的內容模型,存在於符號間的相關性可以通過選擇要編碼符號鄰近的已編碼符號的相應機率模型來去除,不同的句法元素通常保持不同的模型。

編碼

H.264的目標套用涵蓋了大部分的視頻服務,如有線電視遠程監控、互動媒體、數位電視、視頻會議、視頻點播、流媒體服務等。

標準的整體框架標準的整體框架

H.264為解決不同套用中的網路傳輸的差異。定義了兩層:視頻編碼層(VCL:Video Coding Layer)負責高效的視頻內容表示,網路提取層(NAL:Network AbstractionLayer)負責以網路所要求的恰當的方式對數據進行打包和傳送(如圖所示: 標準的整體框架)。

基本層次(Baseline Profile):該層次使用了H.264的除了B-Slices,CABAC以及交織編碼模式外所有的特性。該層次主要使用於低時延的實時套用場合。

主要層次(Main Profile):包含Baseline profile的所有特性,並包括了B-slices,CABAC以及交織編碼模式。它主要針對對時延要求不高,當壓縮率和質量要求較高的場合。

擴展層次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基於宏塊的自適應幀場編碼。該層次主要針對的時各種網路視頻流傳輸方面的套用。

1.分層設計H.264的算法在概念上可以分為兩層:視頻編碼層負責高效的視頻內容表示,網路提取層(NAL:Network Abstraction Layer)負責以網路所要求的恰當的方式對數據進行打包和傳送。在VCL和NAL之間定義了一個基於分組方式的接口,打包和相應的信令屬於NAL的一部分。這樣,高編碼效率和網路友好性的任務分別由VCL和NAL來完成。

VCL層包括基於塊的運動補償混合編碼和一些新特性。與前面的視頻編碼標準一樣,H.264沒有把前處理和後處理等功能包括在草案中,這樣可以增加標準的靈活性。

NAL負責使用下層網路的分段格式來封裝數據,包括組幀、邏輯信道的信令、定時信息的利用或序列結束信號等。例如,NAL支持視頻在電路交換信道上的傳輸格式,支持視頻在Internet上利用RTP/UDP/IP傳輸的格式。NAL包括自己的頭部信息、段結構信息和實際載荷信息,即上層的VCL數據。(如果採用數據分割技術,數據可能由幾個部分組成)。

2.高精度、多模式運動估計

H.264支持1/4或1/8像素精度的運動矢量。在1/4像素精度時可使用6抽頭濾波器來減少高頻噪聲,對於1/8像素精度的運動矢量,可使用更為複雜的8抽頭的濾波器。在進行運動估計時,編碼器還可選擇"增強"內插濾波器來提高預測的效果。

在H.264的運動預測中,一個宏塊(MB)可以按圖2被分為不同的子塊,形成7種不同模式的塊尺寸。這種多模式的靈活和細緻的劃分,更切合圖像中實際運動物體的形狀,大大提高了運動估計的精確程度。在這種方式下,在每個宏塊中可以包含有1、2、4、8或16個運動矢量。

在H.264中,允許編碼器使用多於一幀的先前幀用於運動估計,這就是所謂的多幀參考技術。例如2幀或3幀剛剛編碼好的參考幀,編碼器將選擇對每個目標宏塊能給出更好的預測幀,並為每一宏塊指示是哪一幀被用於預測。

3.4×4塊的整數變換

H.264與先前的標準相似,對殘差採用基於塊的變換編碼,但變換是整數操作而不是實數運算,其過程和DCT基本相似。這種方法的優點在於:在編碼器中和解碼器中允許精度相同的變換和反變換,便於使用簡單的定點運算方式。也就是說,這裡沒有"反變換誤差"。變換的單位是4×4塊,而不是以往常用的8×8塊。由於用於變換塊的尺寸縮小,運動物體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區域不產生塊之間的灰度差異,可對幀內宏塊亮度數據的16個4×4塊的DC係數(每個小塊一個,共16個)進行第二次4×4塊的變換,對色度數據的4個4×4塊的DC係數(每個小塊一個,共4個)進行2×2塊的變換。

H.264為了提高碼率控制的能力,量化步長的變化的幅度控制在12.5%左右,而不是以不變的增幅變化。變換係數幅度的歸一化被放在反量化過程中處理以減少計算的複雜性。為了強調彩色的逼真性,對色度係數採用了較小量化步長。

4.統一的VLC

H.264中熵編碼有兩種方法,一種是對所有的待編碼的符號採用統一的VLC(UVLC :Universal VLC),另一種是採用內容自適應的二進制算術編碼(CABAC:Context-Adaptive Binary Arithmetic Coding)。CABAC是可選項,其編碼性能比UVLC稍好,但計算複雜度也高。UVLC使用一個長度無限的碼字集,設計結構非常有規則,用相同的碼錶可以對不同的對象進行編碼。這種方法很容易產生一個碼字,而解碼器也很容易地識別碼字的前綴,UVLC在發生比特錯誤時能快速獲得重同步。

5.幀內預測

在先前的H.26x系列和MPEG-x系列標準中,都是採用的幀間預測的方式。在H.264中,當編碼Intra圖像時可用幀內預測。對於每個4×4塊(除了邊緣塊特別處置以外),每個像素都可用17個最接近的先前已編碼的像素的不同加權和(有的權值可為0)來預測,即此像素所在塊的左上角的17個像素。顯然,這種幀內預測不是在時間上,而是在空間域上進行的預測編碼算法,可以除去相鄰塊之間的空間冗餘度,取得更為有效的壓縮。

按照所選取的預測參考的點不同,亮度共有9類不同的模式,但色度的幀內預測只有1類模式。

6.面向IP和無線環境

H.264 草案中包含了用於差錯消除的工具,便於壓縮視頻在誤碼、丟包多發環境中傳輸,如移動信道或IP信道中傳輸的健壯性。

為了抵禦傳輸差錯,H.264視頻流中的時間同步可以通過採用幀內圖像刷新來完成,空間同步由條結構編碼(slice structured coding)來支持。同時為了便於誤碼以後的再同步,在一幅圖像的視頻數據中還提供了一定的重同步點。另外,幀內宏塊刷新和多參考宏塊允許編碼器在決定宏塊模式的時候不僅可以考慮編碼效率,還可以考慮傳輸信道的特性。

除了利用量化步長的改變來適應信道碼率外,在H.264中,還常利用數據分割的方法來應對信道碼率的變化。從總體上說,數據分割的概念就是在編碼器中生成具有不同優先權的視頻數據以支持網路中的服務質量QoS。例如採用基於語法的數據分割(syntax-based data partitioning)方法,將每幀數據的按其重要性分為幾部分,這樣允許在緩衝區溢出時丟棄不太重要的信息。還可以採用類似的時間數據分割(temporal data partitioning)方法,通過在P幀和B幀中使用多個參考幀來完成。

在無線通信的套用中可以通過改變每一幀的量化精度或空間/時間解析度來支持無線信道的大比特率變化。可是,在多播的情況下,要求編碼器對變化的各種比特率進行回響是不可能的。因此,不同於MPEG-4中採用的精細分級編碼FGS(Fine Granular Scalability)的方法(效率比較低),H.264採用流切換的SP幀來代替分級編碼。

解碼

由於藍光格式的統一,使得市面上絕大多數的高清視頻均是採用H.264的格式編碼,它又分為四個最主要步驟,分別是流處理,逆變換,動態補償,去方塊濾波,這四步也是資源消耗的主要四個部分。

H.264解碼的四個步驟中的第一步“CAVLC/CABAC解碼”是最為消耗運算資源,這方面遠高於其他三步(簡單的說,CAVLC/CABAC是H.264編碼規範中兩種不同的算法,都是為了提高壓縮比,其中CABAC比CAVLC壓縮率更高,但解碼時自然也要求更高)。

如果所有四個步驟全採用處理器純軟體解碼運算,當碰上HDDVD版本的高碼率H.264視頻,處理器的負載會非常巨大,即使能流暢播放高清視頻,也會因為處理器壓力過重而影響其他同時開啟的應用程式的執行效率。

如果讓處理器解碼“CAVLC/CABAC解碼”和“反向轉換(Inverse Transformation)”兩部分,由顯示核心承擔“運動補償”和“解碼去塊”功能,則可以在一定程度上降低處理器的壓力。不過對於使用單核處理器或低端雙核處理器的用戶來說,這依然無法很好的應付這類視頻;其次,碰上編碼率更高的視頻,依然會給處理器造成很大的處理難度,導致視頻播放的不確定性,可能消費者會遇到某些視頻可以流暢播放,但是有些視頻卻丟幀的情況。

冗餘處理

H.264與以前的國際標準如H.263和MPEG-4相比,為達到高效的壓縮,充分利用了各種冗餘,統計冗餘和視覺生理冗餘。

1.統計冗餘:頻譜冗餘(指色彩分量之間的相關性),空間冗餘,還有時間冗餘。這是視頻壓縮區別於靜止圖像的根本點,視頻壓縮主要利用時間冗餘來實現大的壓縮比。

2.視覺生理冗餘

視覺生理冗餘是由於人類的視覺系統(HVS)特性造成的,比如人眼對色彩分量的高頻分量沒有對亮度分量的高頻分量敏感,對圖像高頻(即細節)處的噪聲不敏感等。

針對這些冗餘,視頻壓縮算法採用了不同的方法加以利用,但主要的考慮是集中在空間冗餘和時間冗餘上。H.264也採用混合(hybrid)結構,即對空間冗餘和時間冗餘分別進行處理。對空間冗餘,標準通過變換及量化達到消除的目的,這樣編碼的幀叫I幀;而時間冗餘則是通過幀間預測,即運動估計和補償來去除,這樣編碼的幀叫P幀或B幀。與以前標準不同的是,H.264在編碼I幀時,採用了幀內預測,然後對預測誤差進行編碼。這樣就充分利用了空間相關性,提高了編碼效率。H.264幀內預測以16x16的宏塊為基本單位。首先,編碼器將與當前宏塊同一幀的鄰近像素作為參考,產生對當前宏塊的預測值,然後對預測殘差進行變換與量化,再對變換與量化後的結果做熵編碼。熵編碼的結果就可以形成碼流了。由於在解碼器端能夠得到的參考數據都是經過反變換與反量化後的重建圖像,因此為了使編解碼一致,編碼器端用於預測的參考數據就和解碼器端一樣,也是經過反變換與反量化後的重建圖像。

錯誤恢復

錯誤恢復的工具隨著視頻壓縮編碼技術的提高在不斷改進。舊的標準(H.261、H263、MPEG-2的第二部分)中,使用片和宏塊組的劃分、幀內編碼宏 塊、幀內編碼片和幀內編碼圖像來防止錯誤的擴散。之後改進的標準(H.263+、MPEG-4)中,使用多幀參考和數據分割技術來恢復錯誤。

H.264標準在以前的基礎上提出了三種關鍵技術:(1)參數集合,(2) 靈活的宏塊次序(FMO),(3)冗餘片(RS)來進行錯誤的恢復。

幀內編碼

H.264中幀內編碼的技術和以前標準一樣,值得注意的是:

(1)H.264中的幀內預測編碼宏塊的參考宏塊可以是幀間編碼宏塊,幀內預測宏塊並不像H.263中的幀內編碼一樣,而採用預測的幀內編碼比非預測的幀 內編碼有更好的編碼效率,但減少了幀內編碼的重同步性能,可以通過設定限制幀內預測標記來恢復這一性能。

(2)只包含幀內宏塊的片有兩種,一種是幀內片(Islice),一種是立即刷新片(IDRslice),立即刷新片必存在於立即刷新圖像 (IDRpicture)中。與短期參考圖像相比,立即刷新圖像有更強壯的重同步性能。

在無線IP網路環境下,為了提高幀內圖像的重同步性能,要採用率失真最佳化編碼和設定限制幀內預測標記。

圖像分割

H.264支持一幅圖像劃分成片,片中宏塊的數目是任意的。在非FMO模式下,片中的宏塊次序是同光柵掃描順序,FMO模式下比較特殊。片的劃分可以適配不同的MTU尺寸,也可以用來交織分組打包。

參考圖像選擇

參考圖像數據選擇,不論是基於宏塊、基於片,還是基於幀,都是錯誤恢復的有效工具。對於有反饋的系統,編碼器獲得傳輸中丟失圖像區域的信息後,參考圖像可 以選擇解碼已經正確接收的圖像對應的原圖像區域作參考。在沒有反饋的系統中,將會使用冗餘的編碼來增加錯誤恢復性能。

數據劃分

通常情況下,一個宏塊的數據是存放在一起而組成片的,數據劃分使得一個片中的宏塊數據重新組合,把宏塊語義相關的數據組成一個劃分,由劃分來組裝片。

在H.264中有三種不同的數據劃分。

頭信息劃分:包含片中宏塊的類型,量化參數和運動矢量,是片中最重要的信息。

幀內信息劃分:包含幀內CBPs和幀內係數,幀內信息可以阻止錯誤的蔓延。

幀間信息劃分:包含幀間CBPs和幀間係數,通常比前兩個劃分要大得多。

幀內信息劃分結合頭信息解出幀內宏塊,幀間信息劃分結合頭信息解出幀間宏塊。幀間信息劃分的重要性最低,對重同步沒有貢獻。當使用數據劃分時,片中的數據根據其類型被保存到不同的快取,同時片的大小也要調整,使得片中最大的劃分小於MTU尺寸。

解碼端若獲得所有的劃分,就可以完整重構片;解碼端若發現幀內信息或幀間信息劃分丟失,可用的頭信息仍然有很好的錯誤恢復性能。這是因為宏塊類型和宏塊的運動矢量含有宏塊的基本特徵。

使用參數集

序列的參數集(SPS)包括了一個圖像序列的所有信息,圖像的參數集(PPS)包括了一個圖像所有片的信息。多個不同的序列和圖像參數集經排序存放在解碼 器。編碼器參考序列參數集設定圖像參數集,依據每一個已編碼片的片頭的存儲地址選擇合適的圖像參數集來使用。對序列的參數和圖像的參數進行重點保護才能很 好地增強H.264錯誤恢復性能。

在差錯信道中使用參數集的關鍵是保證參數集及時、可靠地到達解碼端。例如,在實時信道中,編碼器用可靠控制協定及早將他們以帶外傳輸的方式傳送,使控制協 議能夠在引用新參數的第一個片到達之前把它們發給解碼器;另外一個辦法就是使用套用層保護,重發多個備份檔案,確保至少有一個備份數據到達解碼端;第三個 辦法就是在編解碼器的硬體中固化參數集設定。

宏塊次序(FMO)

靈活的宏塊次序是H.264的一大特色,通過設定宏塊次序映射表(MBAmap)來任意地指配宏塊到不同的片組,FMO模式打亂了原宏塊順序,降低了編碼 效率,增加了時延,但增強了抗誤碼性能。FMO模式劃分圖像的模式各種各樣,重要的有棋盤模式、矩形模式等。當然FMO模式也可以使一幀中的宏塊順序分 割,使得分割後的片的大小小於無線網路的MTU尺寸。經過FMO模式分割後的圖像數據分開進行傳輸,以棋盤模式為例,當一個片組的數據丟失時可用另一個片 組的數據(包含丟失宏塊的相鄰宏塊信息)進行錯誤掩蓋。實驗數據顯示,當丟失率為(視頻會議套用時)10%時,經錯誤掩蓋後的圖像仍然有很高的質 量。

冗餘片方法

前邊提到了當使用無反饋的系統時,就不能使用參考幀選擇的方法來進行錯誤恢復,應該在編碼時增加冗餘的片來增強抗誤碼性能。要注意的是這些冗餘片的編碼參 數與非冗餘片的編碼參數不同,也就是用一個模糊的冗餘片附加在一個清晰的片之後。在解碼時先解清晰的片,如果其可用就丟棄冗餘片;否則使用冗餘模糊片來重 構圖像。

優勢

1.低碼率(Low Bit Rate):和MPEG2和MPEG4 ASP等壓縮技術相比,在同等圖像質量下,採用H.264技術壓縮後的數據量只有MPEG2的1/8,MPEG4的1/3。

2.高質量的圖象:H.264能提供連續、流暢的高質量圖象(DVD質量)。

3.容錯能力強:H.264提供了解決在不穩定網路環境下容易發生的丟包等錯誤的必要工具。

4.網路適應性強:H.264提供了網路抽象層(Network Abstraction Layer),使得H.264的檔案能容易地在不同網路上傳輸(例如網際網路,CDMA,GPRS,WCDMA,CDMA2000等)。

H.264最大的優勢是具有很高的數據壓縮比率,在同等圖像質量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個例子,原始檔案的大小如果為88GB,採用MPEG-2壓縮標準壓縮後變成3.5GB,壓縮比為25∶1,而採用H.264壓縮標準壓縮後變為879MB,從88GB到879MB,H.264的壓縮比達到驚人的102∶1。低碼率(Low Bit Rate)對H.264的高的壓縮比起到了重要的作用,和MPEG-2和MPEG-4 ASP等壓縮技術相比,H.264壓縮技術將大大節省用戶的下載時間和數據流量收費。尤其值得一提的是,H.264在具有高壓縮比的同時還擁有高質量流暢的圖像,正因為如此,經過H.264壓縮的視頻數據,在網路傳輸過程中所需要的頻寬更少,也更加經濟。

H.264/AVC/MPEG-4 第 10 部分包含一些新功能,使它比舊標準更多有效地壓縮視頻,為各種網路環境中的套用提供更大的靈活性。尤其是,一些這類關鍵功能包括:

多畫面間圖片預測包括以下功能: 以前使用圖片作為編碼引用更靈活的方式,比在過去的標準,允許達 16 參考幀 (或 32 引用欄位,在交錯編碼的情況下),在某些情況下使用。這就是與先前的標準,不同地方限制通常之一 ;或常規"B 圖片"(B-幀),兩個。此特定功能通常允許適度的改進的比特率和質量在大多數場景中。但在某些類型的場面,例如那些與重複的動作或背部來回現場削減或被揭露的背景區域,它允許比特率顯著減少,同時保持清晰。 可變塊大小運動補償(分塊) 與大為 16 × 16 和 4 × 4,使精確的運動區域分割為小塊大小。支持的 luma 預測塊大小包括 16 × 16、 16 × 8、 8 × 16、 8 × 8、 8 × 4、 4 × 8 和 4 × 4,其中許多可以在單個宏塊一起使用。色度預測塊大小是根據色度抽樣在使用相應地變小。 與最大值 32 在建造的 16 B 宏塊的情況下使用每個宏塊 (一個或兩個每個分區) 的多個運動矢量的能力 4 × 4 分區。運動向量的每個 8 × 8 或更大的分區區域可以指向不同的參考圖片。 在B 幀,包括宏-塊,從而導致更多有效的編碼使用 B 幀時使用任何宏塊類型的能力。此功能尤其是漏掉了從MPEG-4 ASP. 六個水龍頭篩選半 pel luma樣本預測,更鋒利的亞像素運動補償的推導。季像素運動是由線性插值法的 halfpel 值,以節省電能,處理派生的。 季像素精度運動補償,使移動領域的位移的精確描述。為色度解析度通常是減半兩個垂直和水平方向 (見4:2:0) 因此色度的運動補償使用八分之一色度像素格線單位。 加權的預測,允許一個編碼器,以執行運動補償時, 指定縮放和偏移量的使用,並提供一個重要的好處,在特殊情況下的性能 — — 到黑色淡入淡出、 淡入和跨-淡入淡出的過渡等。這包括 B-幀,隱式加權的預測和顯式加權預測為 P 幀。 空間預測從邊緣的相鄰塊的"內部"編碼,而不是在MPEG-2中找到的"直流"僅預測部分 2 和變換係數預測在H.263v2和 MPEG-4 部分 2 中找到。這包括 16 × 16、 8 × 8 和 4 × 4 (其中只有一種類型可以被用在每個宏塊內的 luma 預測塊大小). 無損的宏塊編碼功能,其中包括: 無損"PCM 宏塊"的代表性模式直接代表視頻數據樣本,允許特定區域的完美代表和允許一個嚴格的限制,放在每個宏塊的編碼數據的數量。 增強無損宏塊的代表性模式允許特定區域時通常使用比 PCM 模式極大地少量位完美地再現。 靈活的隔行掃描-掃描視頻編碼功能,其中包括: 宏塊自適應幀-欄位 (MBAFF) 編碼、 編碼為 16 × 16 宏塊允許在域模式下 (與 MPEG-2,凡在被編碼為一個幀的圖片加工場模式結果在加工中 16 × 8 半宏塊相比) 的幀的圖片使用宏塊的雙結構。 圖片自適應幀欄位編碼 (每或 PicAFF) 允許自由地選擇的混合的圖片編碼在這兩個欄位組合在一起進行編碼或作為個別單一欄位要么作為完整的幀。 新變換設計功能,包括: 精確匹配整數 4 × 4 塊空間變換,允許精確地放置的殘餘信號很少的"響"經常發現與事先編解碼器的設計。這種設計是在概念上類似於知名的離散餘弦變換 (DCT),介紹了在 1974 年由N.艾哈邁德、 T.Natarajan 和 K.R.Rao,這是引文 1 中的離散餘弦變換。然而,它是簡化和作出提供確切地指定解碼。 精確匹配整數 8 × 8 塊空間變換,允許高度相關的地區要壓縮更有效地比與 4 × 4 變換。這種設計是在概念上類似於知名離散餘弦變換,但簡化並作出提供確切地指定解碼。 自適應編碼器選擇之間的 4 × 4 和 8 × 8 的變換塊大小的整數轉換操作。 中學的阿達瑪變換套用於色度 DC 係數 (和也luma中一種特殊情況),獲取更多壓縮在光滑的區域的主空間變換的"DC"係數上執行。 量化設計包括: 對數步大小控制更容易位率管理由編碼器和簡化逆量化縮放 縮放矩陣由基於感性的量化最佳化編碼器選擇自定義的頻率量化 有助於防止對其他DCT常見的阻塞工件中循環去塊效應濾波器-基於圖像壓縮技術,從而更好地視覺外觀和壓縮效率 熵編碼設計包括: 上下文自適應二進制算術編碼(算術) 算法對無損壓縮的語法元素在視頻流知道在給定的上下文中的語法元素的機率。算術比 CAVLC 更有效地壓縮數據,但需要更多的處理進行解碼。 上下文自適應可變長度編碼(CAVLC),這是較低複雜性替代的算術編碼量化的變換係數值。雖然比算術,CAVLC 更低的複雜性是更詳細和更有效率比通常用於將代碼係數在其他事先設計的方法。 一種常用簡單和高度結構化變長編碼(VLC) 技術為許多不通過算術或 CAVLC,稱為指數-戈隆布編碼(或哥倫布) 編碼的語法元素。 損失復原功能包括: 允許相同的視頻語法要在許多網路環境中使用的網路抽象層(宇) 定義。H.264 的一個非常基本的設計概念是以生成自包含的數據包,若要刪除標題重複和 MPEG-4 頭擴展代碼 (港燈)。這被通過解耦信息有關的多個切片從媒體流。更高級別的參數的組合稱為一個參數集。H.264 規格包括兩種類型的參數設定: 序列參數設定 (SPS) 和圖片參數設定 (PPS)。設定仍保持不變在編碼的視頻序列,整個活動序列參數和活動圖片參數設定仍保持不變內編碼的圖片。序列和圖像參數集的結構包含如圖片大小,可選編碼模式被雇用和宏塊到切片組映射信息。 靈活宏塊排序(FMO),也稱為切片組和任意切片訂購 (ASO),這是技術重組訂購的基本地區 (塊) 圖片中的表示形式。通常被視為一個錯誤或損失的魯棒性特點,魚類統營處和麻生太郎還可用於其他目的。 數據分區 (DP),提供的能力,更重要的是並不太重要的語法元素分成不同的數據包的數據),使不等錯誤保護 (UEP) 的應用程式和其他類型的錯誤或損失的魯棒性改進功能。 冗餘片 (RS),錯誤/丟失的魯棒性功能,允許編碼器傳送額外所代表的圖片 (通常在低保真) 地區,如果主要表示法是損壞或丟失,可以使用。 幀編號、 一種功能,允許創建"子序列",通過額外的照片等圖片,檢測和隱秘性的整個圖片,網路數據包丟失或通道錯誤可能會導致損失之間可選列入啟用世俗的可擴展性。 切換切片,稱為 SP 和矽切片,允許一個編碼器,以直接一個解碼器,以跳到正在進行的視頻流為這種目的作為視頻流的位率切換和"欺騙模式"操作。當解碼器跳進視頻流使用 SP/SI 功能的中間時,它可以精確匹配解碼的圖片在那儘管作為引用在切換之前在所有使用不同的圖片或沒有圖片視頻流中的位置。 為防止意外仿真的啟動代碼,這是特殊序列的編碼的數據,允許隨機訪問成位流中的位和位元組對齊方式可以失去位元組同步的系統中恢復一個簡單的自動過程。 補充增強信息 (SEI) 和視頻可用性信息 (VUI),是額外的信息,可以插入到位流以增強視頻的套用,為多種目的。包含 3D 安排的 SEI FPA (幀包裝安排) 訊息: 0: 棋盤-像素或者是從 L 和 R 1: 按列交錯列變更-L 和 R 2: 行交替-L 和 R 按行隔行掃描 3: 並排的-L 是在左邊,右邊 R 4: 上下-L 是在上面,R 的底部 5: 幀交替-每個框架的一個視圖 輔助圖片,可以用於這種目的作為alpha 合成. 支持單色 (4:0:0) 4:2:0、 4:2:2 和 4:4:4色度抽樣(根據所選的配置檔案)。 示例支持位深度精度從 8 到 14 位每個樣品 (根據所選的配置檔案)。 對個別顏色進行編碼的能力的飛機作為他們自己的獨特圖片切片結構,宏塊模式、 運動矢量等,允許編碼器以一種簡單的並行結構設計 (支持僅在三個 4:4:4 能夠配置檔案)。 圖片順序計數、 可以使保持的圖片和隔絕計時信息,允許進行的計時信息的解碼圖片中的樣本值排序的功能和控制/改變了單獨的系統而不會影響已解碼的圖片內容。

這些技術,以及其他幾個幫助 H.264 要執行明顯優於任何事先的標準在各式各樣的各式各樣的應用程式環境的情況下。H.264 可以經常執行從根本上比 MPEG-2 視頻 — — 通常獲得相同質量的比特率的一半或更少,尤其是對高比特率和高解析度的情況。

像其他的 ISO/IEC MPEG 視頻標準,H.264/AVC 有一個參考軟體實現,可免費下載。它的主要目的是給的 H.264/AVC 的功能,而不是有用的應用程式是示例。也正在一些參考硬體設計工作,在運動圖像專家組。上述完成 H.264/AVC 涵蓋 H.264 的所有配置檔案的功能。編解碼器的配置檔案是一組的功能的確定,以滿足特定集規格的預期套用該編解碼器。這意味著許多人列出的功能不受支持的某些配置檔案。下一節中討論了各種配置檔案的 H.264/AVC。

配置檔案

該標準定義了 21 套的能力,被稱為,針對特定的應用程式的類。

非可縮放 2D 視頻應用程式的配置檔案包括以下內容:

受約束的基準配置檔案 (CBP) 主要為低成本的應用程式,此配置檔案是最通常用於視頻會議和移動應用程式。它對應的是共同的基線、 主和高配置檔案之間的功能子集。 基線配置檔案 (BP) 主要是為需要額外的數據損失魯棒性的低成本應用程式,此配置檔案用於在一些視頻會議和移動應用程式。此配置檔案包括中約束的基準配置檔案,支持的所有功能加上的魯棒性的損失 (或作其它用途例如低延遲多點視頻流合成) 可以使用的三個附加功能。此配置檔案的重要性已褪色有些自定義的約束的基線配置檔案的 2009 年。所有約束的基準配置檔案碼也被看作是碼的基準配置檔案,這些兩個配置檔案共享相同的配置檔案標識符代碼值。 擴展配置檔案 (XP) 作為流媒體視頻配置檔案,此配置檔案有相對較高的抗壓能力和魯棒性的數據損失和伺服器流切換到一些額外技巧。 主配置檔案 (MP) 此配置檔案用於定義,在 DVB 標準中使用的 MPEG-4 格式的標準清晰度數位電視廣播。它是不,不過,用於高清晰度電視廣播節目,作為高配置檔案在 2004 年為該應用程式開發時褪色此配置檔案的重要性。 高配置檔案 (HiP) 廣播和光碟的存儲應用程式,尤其是對高清晰度電視的應用程式的主配置檔案 (例如,這是通過藍光光碟的存儲格式和數位電視高清晰度電視廣播服務的配置檔案)。 逐步高調 (抑制) 類似於高配置檔案,但沒有欄位編碼功能的支持。 受約束的高配置檔案 類似於逐步高配置檔案中,但無 B (bi 預測) 切片的支持。 高 10 配置檔案 (Hi10P) 此配置檔案超越了典型的主流消費者的產品能力,在高配置檔案,生成添加支持為每個樣本的解碼的圖像精度達 10 位。 高 4:2:2 的配置檔案 (Hi422P) 我主要針對專業使用的應用程式的隔行掃描的視頻,此配置檔案生成上高 10 配置檔案中,添加支持為 4:2:2色度抽樣格式同時使用每個樣本的達 10 位解碼圖片精度。 高 4:4:4 預測配置檔案 (Hi444PP) 此配置檔案生成上高 4:2:2 的配置檔案,支持最多 4:4:4 色度採樣,每個樣品,達 14 位和另外支持高效無損地區編碼和編碼的每一幅圖片作為單獨的顏色的三個平面。

攜帶型攝像機、 編輯和專業的應用程式,標準包含四個附加幀內-僅配置檔案,它們被定義為相應的其他配置檔案的簡單子集。這些是主要為專業人員 (例如攝像機和編輯系統) 的應用程式:

高 10 內配置檔案 高 10 配置檔案限制所有內部使用。 高 4:2:2 內部配置檔案 高 4:2:2 的配置檔案限制為所有內部使用。 高 4:4:4 內部配置檔案 高 4:4:4 的配置檔案限制為所有內部使用。 CAVLC 4:4:4 的內部配置檔案 高 4:4:4 的配置檔案限制為所有內部使用和 CAVLC 熵編碼 (即,不支持算術)。

由於該的可伸縮視頻編碼(SVC) 的擴展,標準包含五個額外,它們被定義為 (由第二個單詞中的可擴展的配置檔案名稱稱標識) 的基底圖層的 H.264/AVC 配置檔案組合和實現可伸縮擴展的工具:

可擴展的基準配置檔案 主要針對視頻會議、 移動和監視應用程式,此配置檔案生成的基底圖層 (的位流的一個子集) 必須符合該約束的基線配置檔案上。對於可伸縮性工具,啟用的可用工具的一個子集。 可擴展約束的基準配置檔案 可擴展的基準配置檔案的一個子集主要供實時通信的應用程式。 可擴展的高配置檔案 主要是針對廣播和流媒體應用程式,此配置檔案生成的基底圖層必須符合 H.264/AVC 高配置檔案上。 可擴展約束的高配置檔案 子集的可擴展的高配置檔案主要用於實時通信的應用程式。 可擴展高內部配置檔案 主要針對生產應用程式,此配置檔案是約束為所有內部使用的可擴展高配置檔案。

由於該多視圖視頻編碼(MVC) 的擴展,標準包含了兩個:

立體聲高配置檔案 此配置檔案的目標是兩個視圖立體3D 視頻和 MVC 擴展的間查看預測能力的高配置檔案的工具結合在一起。 多視角高配置檔案 此配置檔案支持使用間圖片 (世俗) 和 MVC 視圖間預測,兩個或多個視圖,但不支持欄位圖片和宏塊自適應幀欄位編碼。 多視角深度高配置檔案
功能 CBP BP XP MP ProHiP HiP Hi10P Hi422P Hi444PP
位深度 (每個樣本) 8 8 8 8 8 8 8 到 10 8 到 10 8 到 14
色度 格式 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 / 4:2:2 4:2:0 / 4:2:2 / 4:4:4
靈活宏塊排序 (FMO)
Arbitrary slice ordering (ASO)
冗餘片 (RS)
數據分區
SI 和 SP 切片
交錯的編碼 (PicAFF,MBAFF)
B 切片
算術熵編碼
4: 0: 0 (單色)
與 4 × 4 8 × 8 變換的適應性
量化縮放矩陣
單獨 C b 和 C r QP 控制
單獨的顏色平面編碼
預測的無損編碼

版本

AVC 標準的版本包括以下完成修改、 更正和修正 (日期是最後批准日期在國際電信聯盟-T,雖然最後"國際標準"批准日期在 ISO/IEC 是有些不同的稍晚在大多數情況下)。每個版本代表的集成到文本的下一個較低版本的更改。加粗面臨版本是版本,其中包括相對較重大技術改進。

版本 1:(2003 年 5 月 30 日)第一次批准的包含基準,主要是和擴展配置檔案的 H.264/AVC 版本。 版本 2: (2004 年 5 月 7 日) 包含各種次要更正更正。 版本 3:(3 月 1,2005 年)H.264/AVC 包含提供包含高,高 10、 (FRExt)的保真度範圍擴展的第一修正案增添主要高 4:2:2,和高 4:4:4配置檔案。 版本 4: (2005 年 9 月 13 日) 更正包含各種次要更正和添加三個縱橫比的指標。 版本 5: (2006 年 6 月 13 日) 組成的事先去除的修訂高 4:4:4 (作為在 ISO/IEC 的更正處理) 的配置檔案。 版本 6: (2006 年 6 月 13 日) 修訂組成的次要擴展喜歡擴展色域的顏色空間支持(與上述縱橫比指標在 ISO/IEC 捆綁)。 版本 7: (2007 年 4 月 6 日) 修訂包含另外的高 4: 4: 4 預測和四個內唯一配置檔案 (高 10 內,高 4: 2: 2 內,高 4:4:4 內,和CAVLC 4: 4: 4 內)。 版本 8:(11 月 22,2007 年)H.264/AVC 包含的可伸縮視頻編碼(SVC) 修正案,包含可擴展的基線、可擴展性高,和可擴展的高幀內的配置檔案項重大補充。 版本 9: (2009 年 1 月 13 日) 包含一些小的修改更正。 版本 10: (2009 年 3 月 16 日) 修訂包含新的配置檔案 (約束的基線配置檔案) 與只有共同以前支持的各種功能的子集定義指定的配置檔案。 版本 11:(3 月 16,2009 年)H.264/AVC 含有多視圖視頻編碼(MVC) 的擴展,包括多視圖高配置檔案修訂重大補充。 12 版: (2010 年 3 月 9 日) 修訂包含新 MVC 的配置檔案 (立體聲高配置檔案) 定義的兩個視圖視頻編碼與交錯編碼工具和指定額外的 SEI 訊息 (幀包裝安排 SEI 訊息) 的支持。 13 版: (2010 年 3 月 9 日) 包含一些小的修改更正。 第 14 版: (2011 年 6 月 29 日) 指定一個新的水平 (水平 5.2) 支持更高處理速率在每秒和一個新的配置檔案 (逐步高配置檔案) 支持只編碼工具以前指定的高配置檔案的幀最大宏塊的修訂。 版本 15: (2011 年 6 月 29 日) 包含一些小的修改更正。 版本 16: (2012 年 1 月 13 日) 包含的三個新的配置檔案主要用於實時通信的應用程式定義的修訂:約束高、可擴展約束的基線,和可擴展約束高配置檔案。 版本 17: (2013 年 4 月 13 日) 與其他 SEI 訊息指標修訂。 版本 18: (2013 年 4 月 13 日) 修訂以指定的深度映射數據的 3D 立體視頻,包括一個多視圖深度高配置檔案的編碼。 版本 19: (2013 年 4 月 13 日) 更正更正為多視圖視頻子碼流提取過程中的錯誤。 20 版: (2013 年 4 月 13 日) 指定額外的顏色空間標識符 (包括支持ITU-R 建議 BT.2020 UHDTV) 和其他的修正模型中的色調映射信息 SEI 訊息的類型。

基於硬體的編碼和解碼

請參見:列表的照相機與板載視頻流編碼

因為 H.264 編碼和解碼要求大量的計算能力在特定類型的算術運算,在通用 Cpu 運行的軟體實現高效率通常較少力量。不過,最新的四核通用 x 86 Cpu 有足夠的計算能力來執行實時標清及高清編碼。壓縮效率取決於視頻的算法實現,不在是否使用硬體或軟體來實現。因此,硬體和軟體基於的執行更是電源效率、 靈活性和成本之間的差異。為提高電源效率和減少硬體形式因素,可能雇用專用硬體,為完整的編碼或解碼過程中,或在 CPU 控制的環境內加速援助。

基於 CPU 的解決辦法是已知是靈活得多,尤其是編碼必須進行時同時多格式、 多比特率和各項決議 (多螢幕視頻) 和可能用上的容器格式支持的附加功能,先進綜合的廣告功能等。基於 CPU 的軟體解決方案通常使得更容易在相同的 CPU 內的多個並發編碼會話進行負載平衡。

介紹了在 2011 年 1 月 CES (消費電子展) 的第 2 代英特爾"桑迪橋"酷睿 i3/i5/i7處理器提供稱為英特爾快速同步視頻上晶片硬體全面高清 H.264 編碼器。

硬體 H.264 編碼器可以是ASIC或FPGA。FPGA 是一個一般的可程式晶片。要使用 FPGA 作為硬體編碼器,H.264 編碼器設計需要自定義應用程式的晶片。完整的高清 H.264 編碼器可以在一個單一的低成本 FPGA 晶片上運行 2009 年 (高配置檔案、 水平 4.1,1080p,30 幀/秒)。

ASIC 編碼器與 H.264 編碼器功能,可從許多不同的半導體公司,但在 ASIC 中使用的核心設計通常由晶片及媒體, On2 (原 Hantro,由谷歌收購),想像力的技術,NGCodec 等幾個公司的一個授權。一些公司已提供的 FPGA 和 ASIC 產品。

德州儀器生產一線的胳膊 + 執行 DSP H264 BP 的 DSP 核心編碼 1080p 30 幀每秒。這允許 (其中,作為高度最佳化的 DSP 代碼實現) 的編解碼器的靈活性時正在比通用 CPU 上的軟體效率更高。

相關詞條

相關搜尋

熱門詞條

聯絡我們