一種處理器的視頻編碼器平臺的探討-技術(shù)方案_第1頁
一種處理器的視頻編碼器平臺的探討-技術(shù)方案_第2頁
一種處理器的視頻編碼器平臺的探討-技術(shù)方案_第3頁
一種處理器的視頻編碼器平臺的探討-技術(shù)方案_第4頁
一種處理器的視頻編碼器平臺的探討-技術(shù)方案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精品文檔-下載后可編輯一種處理器的視頻編碼器平臺的探討-技術(shù)方案1硬件平臺

1.1ADSP-BF561處理器

ADSP-BF561的推出使AnalogDevices公司的Blackfin處理器系列得到了進一步的擴充,這款器件具有由兩個Blackfin處理器內(nèi)核構(gòu)成的對稱多處理結(jié)構(gòu)。相比ADSP-BF533,ADSP-BF561可提供兩倍的信號處理性能、兩倍的片上處理器以及顯著提高的數(shù)據(jù)帶寬能力。ADSP-BF561與ADSP-BF533完全代碼兼容,并利用架構(gòu)的動態(tài)電源管理能力而繼續(xù)保持了非常低的功耗。

Blackfin561是Blackfin系列中的一款高性能定點DSP視頻處理芯片。ADSP-BF561集成了兩個工作頻率均高達756MHz的Blackfin處理器內(nèi)核(ADI公司還提供了低成本的500MHz和600MHz版本)和2.6Mbytes的片上SRAM存儲器。ADSP-BF561片上存儲器被分配于每個內(nèi)核的專用、高速L1存儲器和一個128KBytes大容量共享L2存儲器之間。32位外部端口和雙16通道DMA控制器提供了極高的數(shù)據(jù)帶寬。ADSP-BF561片上外設(shè)包括兩個并行外設(shè)接口(均支持ITU-R656視頻格式化)和支持I2S格式的高速串行端口。ADSP-BF561專門針對各種消費類多媒體應(yīng)用進行了優(yōu)化。

1.2基于ADSP-BF561的視頻編碼器平臺

此評估板包括1塊ADSP-BF561處理器、32MBSDRAM和4MBFlash,板中的AD-V1836音頻編解碼器可外接4輸入/6輸出音頻接口,而ADV7183視頻解碼器和ADV7171視頻編碼器則可外接3輸入/3輸出視頻接口此外,該評估板還包括1個UART接口、1個USB調(diào)試接口和1個JTAG調(diào)試接口。攝像頭輸入的模擬視頻信號經(jīng)視頻芯片ADV7183A轉(zhuǎn)化為數(shù)字信號,此信號從Blackfin561的PPI1(并行外部接口)進入Blackfin561芯片進行壓縮,壓縮后的碼流則經(jīng)ADV7179轉(zhuǎn)換后從ADSP-BF561的PPI2口輸出。此系統(tǒng)可通過Flash加載程序,并支持串口及網(wǎng)絡(luò)傳輸。編碼過程中的原始圖像、參考幀等數(shù)據(jù)可存儲在SDRAM中。

2H.264視頻壓縮編碼算法的主要特點

H.264壓縮算法和以太網(wǎng)(IP)接口,可實現(xiàn)1路單向數(shù)字視頻、2路雙向高保真音頻、1~2路雙向異步數(shù)據(jù)在以太網(wǎng)上高質(zhì)量傳輸。視頻編解碼標準主要包括兩個系列:一個是MPEG系列,一個是H.26X系列。其中MPEG系列標準由ISO/IEC組織制定,H.26X系列標準由ITU-T制定。

H.264視頻壓縮算法采用與H.263和MPEG-4類似的、基于塊的混和編碼方法,它采用幀內(nèi)編碼(Intra)和幀間編碼(Inter)兩種編碼模式。與以往的編碼標準相比,為了提高編碼效率、壓縮比和圖像質(zhì)量,H.264采用了以下全新的編碼技術(shù):

(1)H.264按功能將視頻編碼系統(tǒng)分為視頻編碼層(VCL,VideoCodingLayer)和網(wǎng)絡(luò)抽象層(NAL,NetworkAbstractionLayer)兩個層次。其中VCL用于完成對視頻序列的高效壓縮,NAL則用于規(guī)范視頻數(shù)據(jù)的格式,主要提供頭部信息以適合各種媒體的傳輸和存儲。

(2)先進的幀內(nèi)預(yù)測,它對含有較多空域細節(jié)信息的宏塊采用4×4預(yù)測,而對于較平坦的區(qū)域則采用16×16的預(yù)測模式,前者有9種預(yù)測方法,后者有4種預(yù)測方法。

(3)幀間預(yù)測采用更多的塊劃分種類,標準中定義了7種不同尺寸和形狀的宏塊分割和子宏塊分割。由于采用更小的塊和自適應(yīng)編碼方式,故可使得預(yù)測殘差的數(shù)據(jù)量減少,從而進一步降低了碼率。

(4)1/4采樣精度運動補償:以前的標準多1/2精度運動補償,首次1/4采樣精度運動補償出現(xiàn)在MPEG-4第二部分類部分,但H.264/AVC大大減少了內(nèi)插處理的復(fù)雜度。

(5)改善“跳過”和“直接”運動推測:在以前的標準中,預(yù)測編碼圖像的“跳過”區(qū)不能有運動。當編碼有全局運動的圖像時,該限制有害。H.264/AVC對“跳過”區(qū)的運動采用推測方法。對雙預(yù)測的B幀圖像,采用運動預(yù)測方法,稱為“直接”運動補償,進一步改善編碼效率。

(6)整數(shù)變換(DCT/IDCT)。對殘差圖像的4×4整數(shù)變換技術(shù),采用定點運算來代替以往DCT變換中的浮點運算。以降低編碼時間,同時也更適合到硬件平臺的移植。

(7)H.264/AVC支持兩種熵編碼方法,即CAVLC(基于上下文的自適應(yīng)可變長編碼)和CABAC(基于上下文的自適應(yīng)算術(shù)編碼)。其中CAVLC的抗差錯能力比較高,但編碼效率比CABAC低;而CABAC的編碼效率高,但需要的計算量和存儲容量更大。

(8)多參考圖像運動補償:在MPEG-4及以前的標準中,P幀只使用一幀,B幀只使用兩幀圖像進行預(yù)測。H.264/AVC使用圖像選擇技術(shù),可以用以前已編碼過且保留在緩沖區(qū)的大量的圖像進行預(yù)測,大大提高了編碼效率。

H.264的這些新技術(shù)使運動圖像壓縮技術(shù)向前邁進了一大步,它具有優(yōu)于MPEG-4和H.263的壓縮性能,可應(yīng)用于因特網(wǎng)、數(shù)字視頻、DVD及電視廣播等高性能視頻壓縮領(lǐng)域。

3H.264視頻編碼算法的實現(xiàn)

將H.264在DSP進行改進要經(jīng)過以下3個步驟:PC機上的C算法優(yōu)化、從PC機到DSP的程序移植、在DSP平臺上的代碼優(yōu)化。

3.1PC機上的C算法優(yōu)化

根據(jù)系統(tǒng)要求,本設(shè)計選擇了ITU的Jm8.5版本baselineprofile作為標準算法軟件。ITU的參考軟件JM是基于PC機設(shè)計的,故可取得較高的編碼效果。將視頻編解碼軟件移植到DSP時,應(yīng)考慮到DSP系統(tǒng)資源,主要應(yīng)考慮的因素是系統(tǒng)空間,需要對原始的C代碼進行評估,這就需要對所移植的代碼有所了解。

了解了算法結(jié)構(gòu)以后,還需要確定在編碼算法的實現(xiàn)過程中,運算量較大且耗時較長的部分。VC6自帶的profile分析工具顯示:幀內(nèi)與幀間編碼部分占用了整體運行時間的60%以上。其中ME(MoveEstimation,運動估計)又占用了其中較多的時間。

(1)大幅刪減不必要的文件和函數(shù)

由于選用了baseline和單一參考幀,因此,很多文件和函數(shù)都可以刪減,包括有關(guān)B幀、SI片、SP片和數(shù)據(jù)分割、分層編碼、權(quán)值預(yù)測模式、CABAC編碼模式等不支持特性的冗余程序代碼,此外,還可以刪除top_pic、bottom_pic等與場有關(guān)的全局變量與局部變量、分層編碼、多slice分割以及FMO、與場編碼/幀場自適應(yīng)編碼/宏塊自適應(yīng)編碼有關(guān)的預(yù)測、參考幀排序、輸入輸出以及解碼器緩存操作等;也可以刪除隨機幀內(nèi)宏塊刷新模式和權(quán)值預(yù)測模式等相關(guān)的冗余代碼,同時刪除rtp.c;sei.c中包含一些輔助編碼信息(并不編入碼流中),如果不用,也可以刪除leaky_bucket.c用于計算泄漏緩存器的參數(shù)。

(2)配置函數(shù)的改寫

由于JM的系統(tǒng)參數(shù)配置是通過讀取encoder.cfg文件來實現(xiàn)的,故可將參數(shù)配置由讀取文件改為通過初始化集中賦值函數(shù)來實現(xiàn),這樣既減少了代碼量,又減少了對有限內(nèi)存空間的占用和讀取時間,提高了編碼器整體的編碼速度。

(3)去除冗余的打印信息

為了調(diào)試與算法改進的方便,JM保留了大量的打印信息。為了提高編碼速度,減少存儲空間消耗,這些信息完全可以刪掉。如果lor.dat和stat.dat僅需在PC機上調(diào)試時使用,也沒必要移植到DSP平臺上,跟這部分相關(guān)的代碼完全可以去除。但是,調(diào)試時所需的基本信息(如碼率、信噪比、編碼序列等)則應(yīng)保留參考。

通過調(diào)整可使得代碼的結(jié)構(gòu)、容量更加精簡,從而為接下來在DSP上的移植做好準備。

3.2從PC機到DSP的程序移植

要將PC端精簡的程序移植到ADSP-BF561的開發(fā)環(huán)境VisualDSP下,以使其能夠初步運行,所需考慮的主要是語法規(guī)則和內(nèi)存分配等問題。

(1)除去所有編譯環(huán)境不支持的函數(shù)

(2)添加與硬件相關(guān)的代碼

(3)配置LDF文件

(4)Malloc問題的解決

4DSP平臺上的代碼優(yōu)化

在VisualDSP開發(fā)環(huán)境下對代碼進行優(yōu)化的主要方法有C語言級優(yōu)化和匯編級優(yōu)化。

4.1C語言級優(yōu)化

通過VC6的profile分析工具發(fā)現(xiàn):移植與優(yōu)化的重點應(yīng)在運動估計部分。DS算法可采用兩種搜索模板,分別是有9個檢索點的大模板LD-SP和有5個檢索點的小模板SDSP(SmallDiamondSearchPattern)。搜索時,先用大模板計算,當塊誤差SAD點出現(xiàn)在中心點處時,再將大模板LDSP換為SDSP進行匹配運算,這時,5個點中具有SAD者若為中心點,則該點即為匹配點,然后結(jié)束搜索,否則將繼續(xù)以此點為搜索中心進行SPSS搜索。

經(jīng)JM實驗證實,采用此種方法,可以節(jié)約大約10%的運行時間,且代碼量無太大增長。

針對DSP的特點和相關(guān)的硬件指令,設(shè)計時可對代碼進行如下優(yōu)化:

對程序結(jié)構(gòu)進行調(diào)整。對不適合DSP執(zhí)行的語句進行改寫,以提高代碼的并行性。

宏的使用。也就是將有些較短,執(zhí)行單一、調(diào)用次數(shù)多的函數(shù)改為宏。

循環(huán)優(yōu)化是將C語言中的for循環(huán)打開,排流水線,提高并行性。

浮點數(shù)定點化。因為Blackfin561并不支持浮點運算,但原始程序代碼卻是浮點運算的格式,所以必須改成定點運算,而其修改后的執(zhí)行速度也會加快很多。

盡量用邏輯運算代替乘除運算。由于乘除運算指令的執(zhí)行時間要遠遠大于邏輯移位指令,尤其是除法指令,故應(yīng)盡量用邏輯移位運算來代替乘除運算,以加快指令的運行速度。

減少判斷轉(zhuǎn)換。

盡量靜態(tài)分配內(nèi)存。

調(diào)用系統(tǒng)提供的豐富的內(nèi)聯(lián)函數(shù)。

此外,為了充分發(fā)揮DSP的運算能力,還必須從它的硬件結(jié)構(gòu)出發(fā),限度地利用它的8個功能單元,使用軟件流水線盡量讓程序無沖突地并行執(zhí)行。也可將耗時的函數(shù)抽取出來,用線性匯編改寫,從而限度的利用DSP的并行性。

4.2匯編級優(yōu)化

匯編級優(yōu)化主要指如下幾點操作:

(1)使用寄存器資源

Blackfin561提供了8個32位數(shù)據(jù)寄存器以及一系列的地址寄存器。使用寄存器代替局部變量時,若局部變量用來保存中間結(jié)果,那么用寄存器代替局部變量可省掉很多訪問內(nèi)存的時間。

(2)使用專用指令

Blackfin561提供有求值、值、、CUP及大量視頻專用指令,應(yīng)可能用多位的指令來訪問少位的數(shù)據(jù)。通過使用這些指令能大大提高代碼的執(zhí)行速度。如用int型(32位)訪問2個short(16位)型數(shù)據(jù)時,可將其分別放在32位寄存器的高16位和低16位字段。這樣,數(shù)據(jù)讀取效率可以提高1倍,從而減少內(nèi)存訪問次數(shù)。

(3)使用并行指令和向量指令

ADSP-BF561中每條通用指令都可以和一條或兩條存儲器訪問指令并列執(zhí)行,這樣有利于ADSP-BF561的流水線滿負荷運行,更充分發(fā)揮ADSP-BF561的數(shù)據(jù)處理能力。

(4)合理存放反復(fù)調(diào)用的程序段

把被反復(fù)調(diào)用的程序段(如DCT變換和IDCT變換)放在片內(nèi)程序存儲區(qū)中,把頻繁用到的數(shù)據(jù)段(如編碼表)放在片內(nèi)數(shù)據(jù)存儲器中,而把不常用到的程序和數(shù)據(jù)段放在片外存儲器中,以避免對程序或數(shù)據(jù)進行不必要的反復(fù)搬移。

(5)合理使用內(nèi)外存儲器

BF561片內(nèi)只有256KB的存儲空間,因此當前幀、參考幀和當前幀的重建幀都必須放至片外存儲器,壓縮碼流若被主機讀取,也可放至片外。其它數(shù)據(jù)如程序代碼、全局變量、VLC碼表、各編碼模塊產(chǎn)生的中間數(shù)據(jù)等均可放至片內(nèi)。

(6)DMA的使用

由于CPU訪問片外存儲器的速度通常要比訪問片內(nèi)慢幾十倍,片外數(shù)據(jù)的傳輸通常成為程序運行時的瓶頸,這樣,即使代碼效率很高,流水線也會因為等待數(shù)據(jù)而被嚴重阻塞。解決這一問題的有效方法是用DMA傳送數(shù)據(jù)。程序是逐個宏塊進行編碼的,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論