關鍵詞: AVS , dsp , 視頻編碼器
隨著數字視頻技術的發展,近年來世界上出現了許多數字音視頻壓縮標準。AVS(Audio Vicleo Coding Stand-ard)是我國自主制定,擁有自主知識產權的音視頻編碼標準。與世界其他知名音視頻編碼標準相比,它具有如下特點:①性能高,編碼效率比MPEG2高2倍以上,與H.264的編碼效率相當;②算法復雜度比H.264低;③軟硬件實現成本都低于H.264;④專利授權模式簡單,費用明顯低于同類標準。在碼率和PSNR相當的情況下,AVS的編碼速度是H.264的4倍以上。
AVS視頻標準采用了一系列技術來達到高效率的視頻編碼,包括幀內預測、幀間預測、變換和量化、熵編碼等。幀問預測使用基于塊的運動矢量消除圖像聞的冗余;幀內預測使用空間預測模式消除圖像內的冗余;再通過對預測殘差進行變換和量化消除圖像內的視覺冗余;最后,運動矢量、預測模式、量化參數和變換系數用熵編碼進行壓縮,以消除編碼碼字冗余。
DSP的實現是AVS硬件應用的一個重要領域,而實時性則是一個重要要求;但由于標準提出的時間短,所以DSP實現的實例很少,能將AV5算法在DSP上實現,對AVS的發展有很大的意義。另外,具有強大處理能力的DSP非常適合應用在通信和圖像處理領域。
本系統選用TI公司最新推出的數字媒體處理器TMS320DM6446(簡稱“DM6446”),其主頻高達594MHz,具有豐富的專為多媒體運算優化的指令集,包括可簡化設計并能降低系統成本的集成多媒體與通信外設。片上集成的基于ARM9的ARM926EJ-S核(主頻高達297 MHz),豐富的媒體、外設接口,為AVS視頻編解碼方案提供了很好的硬件基礎。
1 系統硬件設計
本系統是基于DSP的視頻監控系統,通過DSP對CCD攝像頭獲取的YUV 4:2:0信號進行實時處理,將壓縮后的數據流通過以太網接口發送到監控室。
數據壓縮單元主要由DSP和SDRAM實現。系統硬件結構框圖如圖1所示。
DM6446增加了很多外圍設備及接口。例如:
◇視頻處理子系統VPSS(Video Processing Subsystem),其中包含CCD設備接口;
◇擴展內存接口EMIF(External Memory Inter-faces);
◇FPGA接口(VLYNQ Interface);
◇以太網接口1O/100Mbps EMAC(Ethernet MAC)。
視頻信號采集進來之后,采用EDMA方式進行數據搬移;搬移到緩存(cache)中后,DM6446便對數據進行壓縮處理。圖2為該系統的軟件流程圖。
緩存完l幀后,DSP便通過EDMA讀取數據,并對數據進行壓縮處理,結果通過EDMA存儲在SDRAM中。當DSP處理完1幀之后,通知主機讀取數據;主機接到通知后,通過以太網以EDMA形式將壓縮數據讀到主機內存中并保存在硬盤里。在監控主機上安裝有AVS解碼器客戶端,還可以在主機上對傳輸的數據進行實時播放。上述過程循環執行。在執行過程中可以根據視頻碼率自動調節有關參數。
2 系統軟件設計
2.1 AVS視頻壓縮原理
該系統采用AVS視頻標準,原理框圖如圖3所示。
在AVS視頻標準中,所有宏塊都要進行幀內預測或幀間預測。預測殘差需要進行8×8離散余弦變換(DCT)和量化,然后對量化系數進行掃描,得到一維排列的量化系數,最后對量化系數進行熵編碼。AVS使用環路濾波器對重建圖像濾波,優點在于:一方面可以消除方塊效應.改善重建圖像的主觀質量;另一方面能夠提高編碼效率。濾波強度可以自適應調整。
2.2 AVS的主要技術
(1)變換和量化
考慮到編碼性能、實現復雜度、AVS視頻標準的主要應用等多方面因素,AVS視頻標準最終選擇了8×8離散余弦變換。在AVS中,采用帶PIT(Pre-Scaled Integer Transform)的8x8整數余弦變換技術,即正向縮放、量化、反向縮放結合在一起,而解碼端只進行反量化,不再需要反向縮放。AVS的8×8變換量化可在16位精度上無失配地實現。
對于PC機,一般將DCT中大量的乘加運算使用加法和移位來實現。但就本系統的TMS32013M6446而言,乘加可以通過合理安排流水線而在一個周期內完成,完全沒有必要也不應該為了減少乘法而使用大量的加法和移位運算。而對于2的整次冪的乘法還是應使用移位來實現,因為移位運算比乘法運算的功耗要低。
(2)幀內預測
AVS視頻標準使用幀內預測技術來提高幀內編碼宏塊的編碼效率,預測時使用當前塊的左邊塊和上邊塊中的相鄰像素作為參考像素。AVS視頻標準的幀內預測以8×8亮度塊和色度塊為單位,定義了5種8×8亮度塊預測模式和4種8×8色度塊預測模式(參見表1和圖4),大大簡化了幀內預測。
(3)幀間預測
AVS支持P幀和B幀兩種幀間預測圖像。P幀至多采用2個前向參考幀,可在不增加緩沖區大小的前提下提高編碼效率;B幀采用前后各一個參考幀。
AVS視頻標準中運動補償塊的大小包括16×16、16×8、8×16、8×8等。運動矢量的精度為1/4像素,為得到非整數樣本,需要進行插值運算。AVS視頻標準定義了2個4抽頭FIR濾波器,分別用于l/2和1/4亮度樣本的插值。與H.264使用的6抽頭FIR濾波器相比,AVS視頻標準的濾波器實現復雜度較低。
(4)環路濾波
基于塊的視頻編碼很容易造成方塊效應,特別是在低碼率的情況下。AVS視頻標準定義了自適應環路濾波器來消除方塊效應,改善重建圖像的主觀質量,同時可提高編碼效率。環路濾波是對亮度塊和色度塊的邊界進行的。濾波時首先對塊的水平邊界濾波,然后再對塊的垂直邊界濾波。濾波強度由宏塊編碼模式、量化參數和運動矢量等決定。H.264的環路濾波器濾波時使用邊界左右各4個像素,而AVS視頻標準只使用左右各3個像素,實現復雜度低于H.264的環路濾波器。AVS視頻標準使用的環路濾波器也更有利于DSP的并行實現。
(5)熵編碼
AVS視頻標準使用k階(k=O~3)指數哥倫布碼。CBP、宏塊模式和運動矢最等用0階指數哥倫布碼編碼。量化系數使用全部4種指數哥倫布碼,采用2D-VLC編碼方法,對量化系數的(run、level)進行編碼。指數哥倫布碼的碼字結構非常規則,解碼器不需要存儲碼表。量化系數使用的19張映射表所需的存儲空間小于2 KB。視頻標準還定義了新的ESCAPE編碼方法,能夠獲得O.05~O.08 dB的編碼增益。
2.3 程序在DSP上的優化
本系統壓縮部分程序以AVS參考代碼rm52f為編碼部分的源代碼基礎,針對AVS編碼算法和DSP的特點對其結構和算法進行了調整和改進。對程序作如下優化:
①合理設置結構體和變量類型。經常用到的數組變量不放到結構體中,否則要進行雙級尋址,降低效率;對變最長度進行合理定義,嚴格合理區分8位、16位、32位的變量分配,能用小的則不用大的。(注意:在循環體中,循環計數變量應一律使用int型,即船位,而不要使用short型)
②循環展開。過多過深的循環不利于編譯器做軟件流水優化,影響DSP并行處理,因此根據DSP特性適當拆開內循環,可以使DSP在一個周期內執行多條指令。優化循環較好的方法是抽出循環作為單獨文件,對其重新編寫、編譯和單獨執行。由于內層循環是惟一可以進行軟件流水的循環,所以應該注意以下問題(否則會使循環不能進行軟件流水,嚴重影響性能):①可以包括內聯函數,但不可包括函數調用;②不可有條件終止、提前退出指令;③必須遞減計數且在O時終止(可用-o2、-o3自動轉換);④不可在循環體中修改循環計數值。
③使用EEMA方式進行數據搬移,這在CPU頻繁訪問外部存儲器數據時能大大節省CPU資源。其主要實現了下列數據傳輸:視頻數據從片外存儲器傳到片內Cache中;編 碼數據從片內傳輸到片外保存;做運動補償時,將片外對應的參考塊數據傳輸到片內。
④使用內聯函數和線性匯編。DSP提供了許多非常有用的內聯函數(Intrinsics),使用這些內聯函數可以很大程度地提高程序運行速度。對于耗時最多的運動估計和DCT變換部分進行線性匯編能大大提高程序的執行效率。使用線性匯編和標準匯編相比,不必考慮并行指令安排、指令延遲、寄存器使用和功能單元的使用,可以大大縮短編寫代碼的時間,且效率遠遠高于C程序。
⑤利用編譯選頂。可以通過參數-o3的設置進行最高級別的軟件流水線優化;可以通過參數-mt告訴編譯器源程序沒有使用混疊技術,以此提高編譯器優化的效果;可以通過參數-pm的設置,使編譯器對程序級代碼進行優化。使用C64xx型DSP時,應使用-mv6400編譯選項,以便對此類DSP進行更高級別的優化。
⑥利用快速算法。AVS編碼器中,運動估計耗時相當大。優化運動估計的搜索次序,采用自適應的搜索策略可以較大地提高運動估計的速度,比如使用FastME來進行優化。另外在1/4像素插值方面也可進行一些調整,以避免重復計算。
3 總結
本系統很好地實現了對視頻數據的實時壓縮處理及傳輸,能夠實現圖像數據讀寫、內存讀寫、SDRAM讀寫、配置空間讀寫和寄存器讀寫操作,同時協調幾種操作實現圖像數據的AVS壓縮。本系統能夠完成4路CIF格式(352×288)視頻的實時編碼,且有預留資源可供性能擴展。以CIF格式測試序序bus為例,本系統壓縮的結果:當設置QP為36時,碼率為952.77 kbps,SNRY(亮度信號的信噪比)為30.80 dB,編碼速度為36 fps。從結果中可以看出,對于視頻監控系統,PSNR(峰值信噪比)指標較理想,編碼速度也滿足了實時的要求。隨著AVS視頻編碼技術的不斷完善,該系統可以很容易地進行升級,將在電視會議等領域得到廣泛應用,具有很大的發展潛力。
評論
查看更多