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