(本文取自數位視訊月刊,原文刊載在:http://www.dvo.org.tw/publication/20050403.html)1. 前言在2001年12月,ITU-T VCEG與ISO MPEG共同組成聯合視訊小組(Joint Video Term,JVT)來研訂新的視訊壓縮格式,此新格式在ITU-T組織中稱為H.264,在ISO組織中則納入MPEG-4 Part-10 (ISO/IEC 14496-10)並命名為Advanced Video Coding (AVC),通常合併稱為H.264/AVC [1],其國際標準的第一版於2003年公佈,而增修的第二版也於2005年3月定案。相關研究顯示H.264/AVC與MPEG-2及MPEG-4相較 之下,無論是壓縮率或視訊品質皆有大幅的提升[2],而且H.264/AVC也首次將視訊編碼層(Video Coding Layer,VCL)與網路提取層(Network Abstraction Layer,NAL)的概念涵蓋進來,以往視訊標準著重的是壓縮效能部分,而H.264/AVC包含一個內建的NAL網路協定適應層,藉由NAL來提供網 路的狀態,可以讓VCL有更好的編解碼彈性與糾錯能力,使得H.264/AVC非常適用於多媒體串流(multimedia streaming)及行動電視(mobile TV)的相關應用。在第一版的標準規範中,H.264/AVC根據使用的編碼工具種類來提供三種編碼規模(Profile),如表1所示分別為 Baseline Profile、Main Profile、Extension Profile,而相對應的影片尺寸與位元率等級由Level 1至Level 5.1,涵蓋小畫面與高解析度畫面的應用範圍。Baseline Profile主要是著眼於低位元率的應用(例如:影像通訊),而且其運算複雜度低,所以也適合應用於個人隨身的多媒體撥放機;Main Profile因為有支援交錯式影片(interlaced content)的編碼,所以適合應用於HDTV數位電視廣播,而且非常容易整合在傳統的MPEG-2 Transport/Program Stream上來傳送H.264/AVC位元流;對於IP-TV或是MOD (Multimedia On Demand)等應用,使用包含高抗錯性編碼工具(error resilient tools)的Extension Profile即可以滿足這些需求。然而,微軟®公司在2003年將其視訊壓縮技術向美國的電影電視工程師協會(Society of Motion Picture and Television Engineers,SMPTE)提出公開標準化的申請,並以VC-1 (Video Codec 1)為此新標準的命名[3],由於VC-1在高解析度影片上的表現出色,導致H.264/AVC在DVD Forum與Blu-ray Disc Association的高解析度DVD影片測試中敗陣下來,其主要原因是H.264/AVC使用較小尺寸的轉換公式與無法調整的量化矩陣,造成不能完整 保留影像的高頻細節資訊,因此H.264/AVC於2004年展開標準增修的討論,來納入稱之為Fidelity Range Extensions (FRExt) [4]的新編碼工具,並以先前Main Profile為基礎來擴充增加4個新的等級(Table 1),期望能夠在高解析度影片的應用上扳回劣勢,目前增修的H.264/AVC第二版標準已於2005年3月發表。本文後段將探討網路提取層的相關特性, 接著來說明視訊編碼層的原理,最後並討論H.264/AVC的應用現況。 2. 網路提取層 (Network Abstraction Layer,NAL)H.264/AVC標準的特色是將網路提取層的概念涵蓋進來,亦即以NAL封包為單位的方 式來做為VCL編解碼的運算單位,這樣傳輸層拿到NAL封包之後不需要再進行切割,只需附加該傳輸協定的檔頭資訊(adding header only)就可以交由底層傳送出去,如圖1所示,可以將NAL當成是一個專作封裝(packaging)的模組,用來將VCL壓縮過的bitstream 封裝成適當大小的封包單位(NAL-unit),並在NAL-unit Header中的NAL-unit Type欄位記載此封包的型式,每種型式分別對應到VCL中不同的編解碼工具。NAL另外一個重要的功能為當網路發生壅塞而導致封包錯誤或接收次序錯亂 (out-of-order)的狀況時,傳輸層協定會在Reference Flag作設定的動作,接收端的VCL在收到這種NAL封包時,就知道要進行所謂的糾錯運算(error concealment),在解壓縮的同時也會嘗試將錯誤修正回來。如圖2所示,一個完整的H.264/AVC bitstream是由多個NAL-units所組成的,所以此bitstream也稱之為NAL unit stream,一個NAL unit stream內可以包含多個壓縮視訊序列(coded video sequence),一個單獨的壓縮視訊序列代表一部視訊影片,而壓縮視訊序列又是由多個access units所組成,當接收端收到一個access unit後,可以完整地解碼成單張的畫面,而每個壓縮視訊序列的第一個access unit必須為Instantaneous Decoding Refresh (IDR) access unit,IDR access unit的內容全是採用intra-prediction編碼,所以自己本身即可完全解碼,不用參考其他access unit的資料。access unit亦是由多個NAL-units所組成,標準中總共規範12種的NAL-unit型式,這些可以進一步分類成VCL NAL-unit及non-VCL NAL-unit,所謂的VCL NAL-unit純粹是壓縮影像的內容,而所謂的non-VCL NAL-unit則有兩種:Parameter Sets與Supplemental Enhancement Information (SEI),SEI可以存放影片簡介、版權宣告、使用者自行定義的資料…等;Parameter Sets主要是描述整個壓縮視訊序列的參數,例如:長寬比例、影像顯現的時間點(timestamp)、相關解碼所需的參數…等,這些資訊非常重要,萬一 在傳送的過程中發生錯誤,會導致整段影片無法解碼,以往像MPEG-2/-4都把這些資訊放在一般的packet header,所以很容易隨著packet loss而消失,現在H.264/AVC將這些資訊獨立出來成為特殊的parameter set,可以採用所謂的out-of-band的方式來傳送,以便將out-of-band channel用最高層級的通道編碼(channel coding)保護機制,來保證傳輸的正確性。 3. 視訊編碼層 (Video Coding Layer,VCL)視訊壓縮的原理是利用影像在時間與空間上存有相似性,這些相似的資料經過壓縮演算法處理之 後,可以將人眼無法感知的部分抽離出來,這些稱為視覺冗餘(visual redundancy)的部分在去除之後,就可以達到視訊壓縮的目的。如圖1所示,H.264/AVC的視訊編碼機制是以圖塊(block-based) 為基礎單元,也就是說先將整張影像分割成許多矩形的小區域,稱之為巨圖塊(macroblock,MB),再將這些巨圖塊進行編碼,先使用畫面內預測 (intra-prediction)與畫面間預測(inter-prediction)技術,以去除影像之間的相似性來得到所謂的差餘影像 (residual),再將差餘影像施以空間轉換(transform)與量化(quantize)來去除視覺冗餘,最後視訊編碼層會輸出編碼過的位元流 (bitstream),之後再包裝成網路提取層的單元封包(NAL-unit),經由網路傳送到遠端或儲存在儲存媒體中。H.264/AVC允許視訊影 片以frame或是以filed的方式來進行編碼,兩者可以共存,而frame可以是progress或是interlace形式,對同一段影片來說也可 使用兩者來混合編碼,這個特性與MPEG-2相同。而在影像色彩格式的支援上,H.264/AVC第一版的標準只支援YCrCb 4:2:0取樣的方式,而在增修的第二版標準中增加4:2:2與4:4:4取樣格式,通常這些格式會被數位電影或HDTV影片所採用。 3.1 H.264/AVC影像格式階層架構 3.2 Slice的編碼模式 3.3畫面內預測技術(Intra-frame Prediction) 3.4畫面間預測技術(Inter-frame Prediction) 3.5 轉換、量化與熵編碼演算法 (Transform, Quantization, and Entropy Coding) 3.6 內嵌式去區塊效應濾波器(In-Loop De-blocking Filter) 4. 結論 # 計畫相關資訊 # 參考文獻 |