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