視訊編碼的運算極為複雜,又需要龐大的資料頻寬,因此成為視訊系統單晶片設計人員的最大挑戰之一。此外,由於視訊標準的種類繁多,消費者對畫質的要求又日益嚴苛,這些因素都使這項挑戰更為艱鉅。許多廠商在評估系統單晶片效能時,常把對於H.264高畫質視訊編碼與解碼的支援能力當成一項重要指標。
視訊編碼的運算極為複雜,又需要龐大的資料頻寬,因此成為視訊系統單晶片設計人員的最大挑戰之一。此外,由於視訊標準的種類繁多,消費者對畫質的要求又日益嚴苛,這些因素都使這項挑戰更為艱鉅。許多廠商在評估系統單晶片效能時,常把對於H.264高畫質視訊編碼與解碼的支援能力當成一項重要指標。
高畫質視訊編碼應用(解析度為720p、1080i)正在消費市場快速成長,包括從低階到高階的數位相機、視訊監控、視訊電話和數位電視廣播等各種應用,這些應用的整體系統要求、所能接受的限制以及功能取捨各有不同,主要考慮因素包括畫質、解決方案成本、多種視訊格式的支援能力、耗電量和通訊延遲時間。
舉例來說,廣播市場很注重畫質,數位相機市場則對每台相機的銷售成本極為敏感,而多種視訊格式的支援能力是網路機上盒市場的關鍵要求,延遲時間則是視訊會議應用的重要考量之一,這類例子不勝枚舉。同時,視訊編碼器解決方案必須根據應用環境進行調整,才能發揮最強大的效能。
挑戰編解碼的複雜性
視訊演算法需要龐大的運算處理和資料頻寬,實際複雜性則是由編碼與解碼模式、視訊標準、解析度、圖框率和畫質要求決定。一般而言,編碼複雜性會比解碼高出 3~5倍,且解析度和圖框率都會直接影響複雜性。若從系統單晶片和產品開發等各種角度來看,H.264格式的高畫質視訊編碼最困難,例如30fps圖框率下的720p和1080i解析度。
高畫質要求迫使編碼作業必須採用複雜演算法,這類演算法需要複雜的處理運算和龐大的資料頻寬。一般而言,30fps圖框率和720p解析度的H.264高畫質編碼約需2G~3Gbit/s的資料頻寬,另外,實際編碼演算法的運算需求很容易達到GFLOPS範圍,這些規格要求為系統單晶片架構和設計以及軟體最佳化帶來極大壓力,它們必須克服許多困難才能發展出高畫質編碼解決方案。
可程式方案滿足不同應用需求
H.264和MPEG等視訊標準的壓縮效率越來越高,晶片還須根據目標應用支援其他的專屬標準,例如Real Video、Window Media和On2 Video等標準,面對這些不斷變動的需求,唯有可程式解決方案才能跟上新標準和新功能的發展腳步。
圖框率、解析度和畫質等效能要求日益嚴苛,過去廠商都是利用特定應用積體電路(ASIC)來滿足更高的效能需求,但由於ASIC不具備可程式能力,所以無法應付視訊市場的動態變化。在消費市場上,成本是晶片成敗的關鍵;在行動應用領域,耗電量則是最重要的考慮之一,因為電池壽命就由它決定,表1是各種系統單晶片架構的優缺點比較。
例如TMS320C64x+系列是專為視訊應用所設計的可程式數位訊號處理器(DSP),C64x/C64x+數位訊號處理器核心可用來發展高階視訊應用,例如機上盒、個人錄影機和高階行動電話等,設計人員還能提高時脈頻率或使用多顆數位訊號處理器以提供更強大的效能,這些方法的缺點是需要更大的晶片面積、更高成本和更多電源。
同時採用DSP與協同處理器
另一種做法是增加專用的協同處理器,這樣只需較低的成本與耗電即可提高影像與視訊效能,這種做法兼具可程式數位訊號處理器與ASIC解決方案的優點,協同處理器提供更強大的處理能力和專用硬體,例如硬體支援VLC/VLD,故可用來增強視訊和影像效能。這些協同處理器會在不同的時脈速率下操作,所需的晶片面積也較少,因此使用協同處理器的視訊和影像應用還能減少耗電量。
圖1是普通視訊編碼器的功能方塊圖,移動估測(Motion-estimation)會利用移動向量判斷巨集區塊的移動,能減少輸入圖框的時間冗餘性,接著是對移動補償後的預測差值圖框執行變換,通常為離散餘弦變換(DCT),以便去除預測誤差的關聯性,然後根據輸入位元率要求將預測誤差量化,再利用可變長度編碼 (VLC)對量化後的DCT係數、移動向量和邊緣資訊(Side Information)進行熵編碼(Entropy Coding),編碼器的重建路徑則是由逆變換、量化、迴路濾波器和移動補償組成,用以模擬解碼器端的作業。
現有各種視訊標準都採用同樣的方塊圖,只不過每個方塊的彈性和細節有所不同,表2列出MPEG-2主類別(MP)、先進簡單類別(ASP)和H.264高級類別(HP)之間的差異。
視訊SoC架構內含多個次系統
圖2是使用數位訊號處理器和協同處理器的典型視訊系統單晶片方塊圖,在系統單晶片內,包含許多不同的次系統,負責提供各種不同的功能。其中,數位訊號處理器次系統包含數位訊號處理器、L1和L2記憶體,數位訊號處理器次系統負責執行視訊與音訊演算法。
協同處理器次系統包含控制器和各種處理器,其所含的專屬處理硬體可加速MPEG-4和H.264等高效能視訊和影像演算法,設計人員應該根據應用需求選擇使用完全可程式、主要為單指令多資料(SIMD)或是專屬的協同處理器。
視訊演算法通常必須將龐大的資料移進或移出系統單晶片,這項工作可由DMA引擎負責處理。而為了協助視訊和影像應用,DMA引擎通常會支援多種不同的資料移動方式,例如2D到2D的資料傳送。
系統單晶片包含一個連接相機的裝置,例如CCD或CMOS的影像處理管線、連接各種儲存裝置例如硬碟或DVD的周邊電路,以及根據特定應用提供的其他專屬介面,例如USB、乙太網路或HDMI等介面。
透過軟體分割實現效能
圖3是以特定架構為目標的典型軟體最佳化流程,第一階段是將所指定的視訊演算法映射到數位訊號處理器和協同處理器,這主要是透過軟體功能的分割來達成,想要實現最佳效能,就必須選擇正確的軟體分割方式。
基本發展流程的第一步是設計循序執行的程式碼(Sequential Code)來使用數位訊號處理器和協同處理器等底層硬體,然後透過一組符合性(Conformance)測試串流和其他視訊串流來驗證基本功能流程。接下來是分析程式碼的執行頻率以便找出使用最頻繁的函式,再根據分析結果進行特定演算法或處理器的最佳化。
演算法最佳化包括找出移動估測、模式選擇、速率控制和變換等快速演筭法,在許多狀況下,這類快速演算法必須犧牲部分畫質以便降低複雜性。下一步是針對數位訊號處理器和協同處理器等底層架構,將所選擇的演算法最佳化。許多最佳化技巧都能減少特定演算法所需的時脈週期數目,例如迴路展開(Loop Unrolling)和軟體執行管線等。
接著必須針對特定的系統單晶片實現軟體最佳化,以便減少使用DMA和編碼配置(Code Placement)所額外占用的資料頻寬,進而將快取記憶體所受的影響減至最小。這個過程會重複應用於每個平行執行緒,但若設計人員使用專屬協同處理器,前述的某些步驟可能就不適用。
最佳化的最後一個階段是所有平行執行緒的並行排程(Concurrent Scheduling),這主要是透過軟體將程式的執行分成多個管線來實現(圖4)。在這個過程中,減少並行執行緒之間的通訊需求是一項重要考量,本地協同處理器則能用來達成這項要求,它能減少高頻下出現的低階互動例如巨集區塊,進而提升系統的整體效能。
選擇正確編碼方式 提高視訊畫質
演算法設計人員可選擇許多不同的視訊編碼方式,它們都能讓編碼結果符合特定標準的要求,區別僅在於畫質的優劣,設計人員必須選擇正確的編碼方式,才能在所給定的運算複雜性限制下產生最完美的畫質。許多指標可用來評估視訊畫質,主觀畫質測量如ITU所建議是最可靠的方法,但很浪費時間,峰值訊號雜波比 (PSNR)則是應用最廣泛的方法,它的計算很簡單,故能縮短應用的開發時間。
在視訊編碼器裡,移動估測是運算最複雜和資料量最龐大的功能方塊,演算法設計人員常會使用更快的演算法和智慧型搜尋機制來減少這項功能的複雜性,但須以犧牲畫質為代價。同樣地,有些速度很快的模式選擇演算法如框內與框間模式的比較、框內模式或框間模式的選擇等,也會影響畫質。
演算法設計人員可以利用智慧型模式選擇演算法來選擇最好的結果,不必浪費時間嘗試所有可能組合,而視訊演算法的複雜性也會降低。最後,演算法設計人員會選擇最適合應用的速率控制機制,例如針對須要減少延遲時間的視訊通訊,本地儲存或離線處理所量身設計的機制。
實際取捨須由各種因素決定,例如解析度、位元率、圖框率和應用環境等,高畫質應用的取捨考量與低解析度應用例如CIF解析度,則有所不同,譬如在高畫質應用裡,16組移動向量對於畫質增益的影響就比較少。在演算法最佳化階段,演算法設計人員會比較這些取捨條件,然後選出一組最適合應用與架構的組合。
一般而言,每家廠商都會針對標準視訊測試序列例如Foreman、Mobile和Akiyo等,提供如圖5所示的峰值訊號雜波比圖。值得注意的是,產生良好畫質的關鍵在於找出正確的模式選擇機制、快速的移動估測演算法和速率控制機制,這些視訊編碼參數正是不同解決方案之間的主要區別,每家廠商都把它們當成最機密的智慧財。
順利整合與擴展
視訊演算法整合至客戶系統所需的時間應盡量減少,這是加速新產品上市時程的重要關鍵之一,想要順利完成整合,視訊編碼器就必須遵守API/介面標準。德州儀器已定義一套Express數位訊號處理器算法標準(xDAIS)來解決整合的問題,這套標準能讓多種演算法和多個演算法案例(Instances of Algorithm)在系統中共存,同時提供一套方法使用硬體資源例如DMA,該公司最近還以xDAIS為基礎制定一套稱為Express DSP Digital Media(XDM)的加強型標準,設計人員可如圖6所示利用它發展隨插即用的多媒體演算法架構。
系統單晶片設計趨於複雜
隨著高畫質內容日益流行、新標準和新應用不斷出現,例如視訊轉碼,以及現有應用持續整合,視訊編碼將繼續成為產業界和學術界的熱門領域。系統單晶片越來越複雜,使軟體最佳化和建模工具變得更重要,設計人員須將這些因素正確組合在一起,因為它們將是系統成敗的最大關鍵。