多媒體處理器上的MPEG-4 介紹及實作
作者:Paul Fernandez, Mark Nadeski and Gene Lin of Texas Instruments 本文刊登於新通訊元件雜誌20038月號


介紹

數位視訊已出現在各種應用,它的品質、可靠性和彈性都遠勝過傳統類比視訊;數位訊號允許使用者以全新方式觀看、存取和操控視訊,這和類比視訊也不相同。MPEG-1MPEG-2是國際標準組織 (ISO) 的動畫專家小組 (MPEG) 最先制定的視訊標準,也是讓數位視訊格式廣獲市場接受的重要關鍵;MPEG-4則是這兩種視訊標準的後繼者,可以提供更低位元速率、更大彈性和許多新特色,目前正領先跨入網際網路和行動上網的應用領域。

雖然MPEG-1 MPEG-2 H.263非常適合在它們原來設計的目標環境下工作,但是面對正在大舉進入市場的各種多媒體應用,這些標準並未提供適當的彈性,無法有效滿足它們的需求。就在彈性和高效能發生衝撞的關鍵點上,最近才獲得採用的MPEG-4標準也開始進入這個領域。MPEG-4是一種多媒體標準,專門設計來為不同應用提 供相互操作能力,某些應用的需求甚至截然不同;整體說來,絕大多數的多媒體應用都有著相同需求,它們必須能互動操作不同類型資料。視覺資料的差異包括資料型態、來源、通訊方式以及廠商想利用視覺影像提供的功能,MPEG-4可做為設計人員技術基礎,使他們得以提供多媒體功能來支援所有這些資料需求。


MPEG-4工具箱

MPEG-4
包含一組用來支援和加強這些應用的工具,包括形狀編碼 (shape coding)、移動估算 (motion estimation) 與補償、影像紋理編碼 (texture coding)、抗錯性、sprite編碼和可延展性。若廠商無意實作整個標準,MPEG-4也提供許多定義良好的子集合,它們稱為「符合點」 (conformance points),可協助廠商很自由的將系統成本最佳化,不會對操作互通性造成任何影響。結合這些能力,即可為設計人員帶來彈性和操作互通性都很好的途徑,使他們能產生極高品質的數位視訊繪圖,並支援各種不同的多媒體應用。

功能特色
MPEG-4
標準是由一組工具所組成,能支援不同類別的各種應用;整體來說,它們可分成以下幾大類:

結構和語法
MPEG-4
視覺場景 (visual scene) 可能包含一個或多個視訊物件,每個視訊物件都可藉由時間和空間資訊加以描述,包括它們的形狀、移動和紋理。某些應用可能無法使用所有的MPEG-4工具, 原因可能是相關的額外處理負擔過於龐大,或是視訊物件的產生極為困難,此時MPEG-4視訊可直接對矩形圖框 (rectangular frame) 進行編碼,它也是各種形狀物件中最簡單的一種 (degenerate cases)

MPEG-4
視覺位元串流會提供階層式的視覺場景描述,起始碼 (start codes) 則是特殊的編碼值,它們可以存取位元串流的每一層階層架構。階層架構中的各層包括:

視訊物件平面的使用方法有很多種,最常見的做法是讓它們包含某個視訊物件的時間取樣值的編碼視訊資料。每個視訊物件平面都包含多個巨集區塊 (macroblock),每個巨集區塊則會包含四個8x8亮度區塊 (luminance block) 以及兩個8x8色度區塊 (chrominance block)


MPEG-4工具
視訊壓縮工具
視訊編碼解碼器 (video codec) 可以除去空間和時間的冗餘性,達到壓縮視訊的目的。

Intra Coded VOPS (I-VOPs)
會利用視訊物件平面包含的資訊進行編碼,這能移除部份的空間冗餘性,圖框間編碼 (inter coding) 則會透過移動估算和補償來利用圖框間的時間冗餘性。圖框間編碼有兩種模式,第一種是根據前面的視訊物件平面進行預測,這種模式稱為P-VOP;第二種則根 據前面和後面的視訊物件平面進行預測,稱為B-VOP。這兩種編碼技術都是以過去的視訊標準為基礎,MPEG-4則會提供額外的工具來增加壓縮效率、抗錯 性和不同類型視訊物件的編碼能力。

形狀編碼工具 (shape coding tools)
MPEG-4
提供許多工具,可對各種形狀的物件進行編碼。二位元形狀 (binary shape) 資訊可用來定義特定時間點上,物件的那些部份 (像素) 屬於視訊物件;二位元形狀資訊還採用移動補償式區塊導向 (motion compensated block-based) 編碼技術,能同時支援無失真 (lossless) 和失真 (lossy) 編碼方式。灰階形狀 (gray scale shape) 資訊與二位元形狀資訊非常類似,但每個像素或矩陣元素不再是簡單的二位元值,而是在某個範圍內的數值 (通常是0255),代表該像素的透明度。灰階形狀資訊也採用區塊導向的移動補償技術來協助編碼,但是只支援無失真編碼方式。

Sprite
編碼
在整段視訊內容 (video segment) 中,視訊物件的某些部份會出現在場景內,sprite就是由這些區域所組成。「背景sprite(background sprite) 是很典型的範例,包含攝影機跟拍鏡頭 (camera-panning sequence) 的所有背景像素;它基本上是靜態影像,只需在傳輸開始時傳送一次,sprite能在這些情形下提供很高的壓縮效率,這也是MPEG-4包含它們的主要原因。sprite編碼技術不但適用於合成物件,也能用於自然場景中的剛體運動物件。
延展性
MPEG-4
利用多個視訊物件層 (VOL) 來實現空間延展性 (spatial scalability) 和時間延展性 (temporal scalability),例如我們可以利用兩個視訊物件層來提供空間延展性,一個是基礎層 (base-layer),另一個則是加強層 (enhancement-layer),加強層可以改善基礎層所提供視訊物件平面的空間解析度;同樣的,只要利用時間延展性,當目標圖框速率高於基礎層提供的速率時,就可以利用加強層進行解碼;換言之,時間延展性會讓畫面的動作更平順。


符合點 (Conformance Points)

符合點是操作互通性的基礎,也是標準化背後的主要推動力量;根據定義,不同產品只要支援一個共同的符合點,它們就能正確讀寫對方的位元串流。

MPEG-4
的符合點是由profilelevel來代表,profile會指定一組視訊工具,可供應用選擇採用,profile內的level則會決定位元串流的參數約束條件和對應工具。

Simple Visual Profile
是最基本的profile,其最低要求是能利用H.263基準工具支援矩形物件編碼;此外,它還會為每個巨集區塊提供4個移動向量、自由移動向量 (unrestricted motion vectors)、交流/直流估測和抗錯性。Simple Scalable Visual Profile除了包含Simple Visual Profile所有工具外,還支援時間和空間可延展物件。Advanced Simple Profile是兩種新推出的profile之一,它是以Simple Visual Profile為基礎,但增加多種新工具以改善壓縮效率。

Core Visual Profile
Main Visual Profile是可以支援非矩形視訊物件的更高階profiles,其中Core Visual Profile不但包含Simple Visual Profile所有工具,還能支援任意形狀物件和時間延展性物件;Main Visual Profile則是以Core Visual Profile工具為基礎,另外還提供交錯式編碼 (interlaced coding)、半透明和sprite物件支援。


DSP上的實作

視訊處理
普通的掌上型裝置會以30 fps速率截取RGB格式資料,並在編碼開始前,先將這些資料轉換成4:2:0 YCbCr格式 - 通常還會經過4:2:2之類的中間格式。格式轉換過程多半包含次取樣 (subsampling) 步驟,這項運算可交由DSP執行。同樣的,MPEG-4解碼器的輸出為4:2:0格式,它也會經過一系列內插運算轉換成RGB格式以供顯示,其中的部份運算也能由DSP來完成。影像的截取和解碼都需要使用龐大記憶體,因此它們通常都會儲存在DSP的外部記憶體。

圖框內編碼 (intra coding)
Intra Coded VOPS (I-VOPs)
會利用特定視訊物件平面所包含的資訊進行編碼。圖框內編碼程序也和其它的影像編碼演算法一樣,必須先執行離散餘弦轉換 (DCT),然後再執行量化處理;壓縮就是透過量化來實現,它會把絕大多數高頻係數設為零,這些零值並不必需要任何編碼。離散餘弦轉換和量化處理都需要線性轉換或比例調整 (scaling),這類運算很適合由DSP執行。

量化係數採用預測編碼,並利用鄰近區塊來進一步移除空間冗餘性,然後再經過掃描產生一組zero runs和係數,它們會採用可變長度的編碼方式。

移動估算 (motion estimation)
如圖1所示,移動估算和補償為了利用圖框之間的時間冗餘性,會根據前面的參考圖框來預測巨集區塊;由於解碼器必須重複執行此過程,它會使用前面重建的編碼圖框做為預測候選目標,而不會使用原始圖框。預測過程通常會採用區塊比對法 (block matching method),它會從參考圖框中找出多個候選區塊,與目前正要編碼的來源巨集區塊進行比較,然後找出誤差最小的區塊;由於誤差的資訊含量通常少於原來的巨集區塊,因此只需使用較少的位元即可將這些誤差值編碼。


區塊比對演算法必須計算目前來源巨集區塊和參考圖框候選區塊之間的絕對差值,這項運算可交給DSP執行;由於運算過程通常會佔用很大部份的編碼時間,因此為了減少複雜性,比對演算法會在參考圖框找出相同位置 (co-sited) 的巨集區塊,然後對它周圍某個矩形區域 (window) 內的所有巨集區塊進行比較,這種方法所須比較的區域當然小於整個圖框。對於CIF (352x288) 連續影像,使用±16的搜尋範圍即可得到良好畫質。由於DSP記憶體非常有限,通常只有執行移動估算所需的「參考區」(reference window) 會儲存入DSP記憶體,整個參考圖框則會儲存在外部記憶體。

目前有數種區塊比對演算法可供使用,其中有兩種演算法較為人熟知,一種是運算量龐大的窮舉搜尋演算法 (exhaustive search algorithm),另一種則是複雜性較低的telescopic搜尋演算法。窮舉演算法會針對搜尋區域 (search window) 內所有可能的候選區塊進行比對,telescopic搜尋演算法則是採取階段式搜尋:在每個階段,它會先對候選區塊的稀疏格點 (sparse grid) 進行比對,把得到的最佳候選向量當成下個階段起始點,並在下個階段使用較濃密的格點。telescopic搜尋演算法的運算複雜性遠低於窮舉搜尋法,但壓 縮效率比窮舉搜尋法略差;利用DSP實作這套演算法時,必須將品質和運算複雜性的取捨列入考慮。

MPEG-4 Simple Profil
還提供先進預測模式,允許每個8x8區塊使用一個移動向量;很明顯的,這些向量的選擇需要更龐大的運算量,最高可能會達到巨集區塊移動向量搜尋演算法的四倍。為了減少運算複雜性,我們可在巨集區塊 (16x16) 移動向量周圍的格點上面進行搜尋,這樣並不會對品質產生太大影響。為了提供更佳品質,我們還可以根據內插參考區 (interpolated reference window) 的預測值來計算半像素 (half pixel) 精準度的移動向量。參考區的內插計算會延著水平、垂直和對角方向進行,並以「全像素」(full pixel) 16x168x8向量做為內插計算的起始位址。

上述階段會計算出一組移動向量,我們首先利用三個相鄰區塊的向量對這些移動向量進行差值編碼 (differentially coded),然後利用可變長度編碼技術對所得到的移動向量差值進行編碼。

有些時候,對於某些移動快速的連續影像或是圖框邊緣,演算法可能無法在參考區內找到良好的比對結果,此時它會使用來源巨集區塊進行圖框內編碼 (intra-coded)

移動補償和紋理編碼
在移動補償階段,我們會利用移動向量將參考區內比對結果最好的區塊複製出來,計算移動補償預測區塊和目前來源巨集區塊之間的殘留誤差 (residual error),然後對殘留誤差進行離散餘弦轉換、量化和可變長度編碼,整個過程如圖2所示。


MPEG-4 Simple Profile
的量化過程很簡單,只須將巨集區塊的係數除以某個比例因子,這個比例因子的大小會影響零係數的數目以及非零係數的數值範圍,這轉而會影響巨集方塊編碼所需的位元數目;換言之,編碼器只要調整這個量化比例因子,就能控制位元速率和品質。

為支援預測編碼 (predictive coding),編碼器會提供一個解碼迴路,包含逆向離散餘弦轉換和逆向量化,它們可用來重建目前的巨集區塊;這個巨集區塊稍後會移至外部記憶體所儲存的重建圖框,並在下個P-VOP編碼過程使用。

解碼
解碼器所執行的程序剛好與編碼器相反,係數和額外資訊 (overhead information) 會被可變長度解碼,然後對係數進行逆向量化處理,再執行逆向離散餘弦轉換,這樣即可得到誤差係數。移動補償步驟則會複製和內插移動向量所對應的參考區塊,然後把移動補償預測值加至誤差係數,以得到最後輸出值,圖3是它們的功能方塊圖。


MPEG-4
Simple Profile還支援自由移動向量,它允許移動向量指向視訊物件平面的外面;只要在執行移動補償前先將邊界係數設定好,即可啟動這項工具。

在典型的Simple Profile解碼器實作中,把參考區從外部記憶體移到DSP記憶體會佔用很多解碼時間,因為每個巨集區塊最多有4個移動向量 (每個8x8區塊都有一個),使得每個巨集區塊都需要4次記憶體傳送動作。業界正在積極努力,希望將這些記憶體搬移動作最佳化。

速率控制
在典型的應用中,視訊序列必須以固定位元速率編碼,整段影片也必須提供穩定一致的畫質,但由於圖片的複雜性和可預測性並不一致,使得本地 (local level) 的位元速率通常都會變動。為了提供固定位元速率,編碼器可以使用緩衝儲存區,並以不同速率將資料寫入,然後在傳輸過程中以固定速率將資料讀出;同樣的,解碼器也可以擁有和編碼器相同大小的緩衝區,MPEG-4標準會根據所支援的level,規定這些緩衝區的最大儲存容量。透過位元速率的調整,我們也可以避免緩衝區發生資料溢出 (overflowing) 和資料不足 (underflowing) 的現象。改變位元速率的方法包括調整量化比例因子、跳過某些圖框和使用填充位元 (stuffing bits);緩衝區容量越大,位元速率的可變範圍就越大,視訊畫質就更容易保持穩定一致。

抗錯性 (error resilience)
抗錯性在容易發生錯誤的環境中特別重要,行動通訊就是個例子。


實作趨勢

TI
提供完整支援,使系統發展更簡單,縮短新產品上市時間。例如軟體支援就涵蓋所有主要的視訊、影像、音訊和語音壓縮標準,包括JPEGmotion- JPEGMPEG-1MPEG-2MPEG-4H.263H.264DivXWindows Media Video (WMV) 以及許多音訊標準,例如MP3Advanced Audio Coding (AAC) Windows Media Audio (WMA),獲得TI支援的語音標準則包括G.711G.723.1G.726DM270系統單晶片還能在許多作業系統執行,包括Nucleus LinuxulTRONVxWorks,程式碼也向上相容於TIDSC2x平台。

DM642
DM641DM640處理器內建視訊埠、乙太網路和多通道音訊,為整合度超越許多傳統的硬體連線式 (hard-wired) 固定功能晶片組,並提供軟體可程式能力的方便性。新處理器可在完整D1解析度下,同時對四組MPEG-2 MP@ML視訊進行即時解碼,也可以即時執行全視訊編碼 (full video encoding),並且是業界第一次支援廣播品質的Windows Media 9™ 編碼和解碼技術;此外,這些元件還支援最新的業界標準演算法,包括MPEG-4 AVC (H.264) 解碼。

 


About the authors
Paul Fernandez
Member Technical Staff, Imaging and Audio Group, Texas Instruments

Mark Nadeski
Software Development Manager, Imaging and Audio Group, Texas Instruments

Gene Lin
Sales Manger
Consumer Product, Semiconductor Sales & Marketing, Texas Instruments