采用數字信號處理器優(yōu)化視頻編碼器
高壓縮比標準的各種特性為技術人員提供了廣闊的空間,在復雜性、延遲以及其他約束實時性能的因素之間獲得最佳平衡。
用數字視頻編碼進行視頻壓縮能夠在盡可能降低視頻容量的同時保持可接受的視頻質量。但是,為便于傳輸和存儲而降低大小的視頻壓縮可能會犧牲一些圖像質量。此外,視頻壓縮還要求處理器具備較高性能,并且在設計中要支持豐富的功能,因為不同類型的視頻應用在分辨率、帶寬以及靈活性方面都有著不同的要求。具有更高靈活性的數字信號處理器(DSP)不僅能夠充分滿足上述需求,而且還可充分發(fā)揮高級視頻壓縮標準提供的豐富選項來幫助系統開發(fā)人員實現產品優(yōu)化。
視頻編解碼(編解碼器)算法的固有結構和復雜性促使我們必須采用優(yōu)化方案。編碼器非常重要,因為它們不但必須滿足應用要求,而且也是視頻應用進行大量處理任務的主要部分。雖然編碼器是基于信息理論之上的,但在實施過程中仍需要在不同因素間權衡取舍,因此會非常復雜。編碼器應當具有高度的可配置性,并能針對各種視頻應用提供簡單易用的系統接口且實現性能最佳化,從而使開發(fā)人員受益匪淺。
視頻壓縮的特性
原始數字視頻的傳輸或存儲需要占用大量空間。像H.264/MPEG-4 AVC等高級視頻編解碼器能實現高達60:1到100:1的壓縮比并確保持續(xù)不變的吞吐量,這使我們能夠利用較窄的傳輸通道實現傳輸,并能減少視頻存儲所占的空間。
與靜態(tài)影像領域的JPEG標準一樣,ITU與MPEG視頻編碼算法也需要結合采用離散轉換編碼(DCT或類似技術)、量化和可變長度編碼等技術來壓縮幀中的宏塊。一旦算法建立了基線編碼內(I幀),只需通過視覺內容的差值或它們之間的殘留值進行編碼,就可建立眾多的后續(xù)預測幀(P幀)。我們可用所謂運動補償技術來實現這種幀間差值。該算法首先估算前一參考幀宏塊移入到當前幀的位置,然后再消除冗余并壓縮剩余部分。
圖1給出了一般性運動補償視頻編碼器的結構圖。運動矢量(MV)數據描述了各塊的移動位置,該數據在估算階段創(chuàng)建,這通常是算法中計算強度最大的階段。
圖1:一般性運動補償視頻編碼器的結構圖。
圖2顯示了P幀(右)及其參考幀(左)。在P幀下方,剩余部分(黑色部分)顯示了計算出運動矢量(藍色部分)后剩余的編碼量。
圖2:顯示計算運動矢量后剩余編碼量的P 幀及參考幀。
視頻壓縮標準僅指定位流語法與解碼進程,從而使編碼器擁有很大的創(chuàng)新空間。速率控制也是一個可以創(chuàng)新的領域,使編碼器能分配量化參數,從而以適當的方式確定視頻信號中的噪聲。此外,高級H.264/MPEG-4 AVC標準還可提供宏塊大小、運動補償四分之一像素分辨率(quarter-pel resolution)、多參考幀、雙向幀預測(B幀)以及自適應環(huán)內去塊濾波(in-loop deblocking)等多種選擇,從而既提高了靈活性同時還增強了功能。
多樣化的應用需求
視頻應用要求差異很大。高級壓縮標準的各種特性為技術人員提供了廣闊的空間,在復雜性、延遲以及其他約束實時性能的因素之間獲得最佳平衡。例如,我們可以設想,視頻電話、視頻會議以及數碼攝像機(DVR)對視頻就有著不同的要求。
視頻電話與視頻會議
就視頻電話與視頻會議應用而言,傳輸帶寬通常是最重要的問題。根據鏈接的不同,帶寬傳輸的范圍可介于每秒數十到數千KB之間。在某些情況下,我們可以確保傳輸速度,但對于互聯網及眾多企業(yè)內部網而言,傳輸速度會有很大差異。因此,視頻會議編碼器通常需要滿足不同類型的鏈路,并應實時適應不斷變化的可用帶寬。發(fā)送系統收到接收端條件后,應不斷調節(jié)編碼輸出,以確保盡可能以最少的視頻中斷提供最佳的視頻質量。如果條件較差,則編碼器可以采取降低平均比特率、跳幀或更改圖像組(GoP,即I幀與P幀相混合)等方法來應對。I幀的壓縮程度低于P幀,因此帶有較少I幀的GoP所需的整體帶寬較低。由于視頻會議的可視內容通常不會變化,因此可減少I幀的使用數量,使其低于娛樂應用的水平。
H.264采用自適應環(huán)路內去塊濾波器處理塊的邊緣,以保持視頻在當前幀與后續(xù)幀之間的平滑,從而提高視頻編碼質量,這點在低比特率時尤其有效。此外,關閉過濾器也能提高在既定比特率下可視化數據的數量,并可將運動估算分辨率從四分之一像素精度提高到二分之一乃至更高。在某些情況下,我們可能需要降低去塊濾波質量或降低分辨率,從而減小編碼工作的復雜性。
由于互聯網的分組提供不能確保質量,因此視頻會議通常能從可提高容錯率的編碼機制中受益。如圖3所示,P幀的連續(xù)圖像條(progressive strip)可用做幀內編碼(I圖像條),這樣在初始幀之后就不再需要完整的I幀了,并能減少整個I幀被丟棄和圖像破損的問題。
圖3:P 幀的連續(xù)條狀圖像可用做幀內編碼。
數字錄像
適用于家庭娛樂的數碼攝像機(DVR)可能是使用范圍最廣的實時視頻編碼器應用了。對于這種系統來說,如何實現存儲容量和畫質之間的最佳平衡是一大問題。與不能容忍延遲的視頻會議不同,如果系統緩沖可用的存儲器足夠的話,則視頻錄制的壓縮可以承受一定的實時延遲。要滿足實際要求的設計意味著讓輸出緩沖器可以處理數個幀,這樣才足以保持磁盤能獲得穩(wěn)定持續(xù)的數據流。不過,在某些情況下,由于可視信息變化非??欤瑢е滤惴óa生大量P幀數據,這時緩沖器就可能出現阻塞。只要解決了阻塞問題,圖像質量就能重新提升。
有效進行權衡取舍的機制之一就是即時改變量化參數Qp。量化是壓縮數據算法最后階段的步驟之一。提高量化可減少算法的比特率輸出,但圖像失真會與Qp的平方成正比增長。提高Qp會降低算法的比特率輸出,但同時也會影響畫質。不過,由于這種變化是實時發(fā)生的,因此有助于減少跳幀或畫面破損的現象。如果可視內容更改非???,例如緩沖器擁塞時,那么這時雖然畫質降低,但卻不會像內容緩慢變化時那樣引人注意??梢晝热莘祷剌^低比特率且緩沖器清空后,就能將Qp重設為正常值。
編碼器的靈活性
由于開發(fā)人員可在各種視頻應用中使用DSP,因此DSP編碼器在設計時就應當考慮到要發(fā)揮自身在壓縮標準方面的靈活性優(yōu)勢。例如,基于德州儀器(TI)移動應用領域OMAP媒體處理器、TMS320C64x+DSP或達芬奇(DaVinci?)處理器的編碼器就具備高度靈活性。為了最大限度地提高壓縮性能,每個編碼器都可用于充分利用其平臺的DSP架構,其中包括某些處理器中內置的視頻與圖像協處理器(VICP)。
所有編碼器均使用一套采用默認參數的基本API,因此無論使用何種類型的系統,系統接口都不會改變。擴展的API參數可使編碼器滿足特定應用的要求。默認情況下,可將參數預設為高質量,此外還提供高速預設設置。程序使用擴展參數可以覆蓋所有預設參數。
擴展參數使應用能滿足H.264或MPEG-4的要求。編碼器可支持若干選項,如YUV 4:2:2與YUV 4:2:0輸入格式、最小四分之一像素分辨率的運動補償、各種I幀間隔(從每幀都為I幀到首個I幀后無后續(xù)I幀)、Qp比特率控制、存取運動矢量、去塊濾波器控制、同時編碼兩個或更多通道以及I圖像條(strip)等等。編碼器可動態(tài)不受限制地確定默認運動矢量的搜索范圍,這種技術相對于固定范圍搜索而言是一個進步。
此外,通常都會存在最佳操作點(sweet spot),也就是既定輸入分辨率和每秒幀數(fps)情況下最佳的輸出比特率。開發(fā)人員應當認識到編碼器的這個最佳點,從而在設計方案中實現系統傳輸與畫質的最佳設計平衡。
評論