王慶輝 高 穎
摘 要:依據(jù) H.264 視頻編碼標(biāo)準(zhǔn),在DSP上完成視頻編碼器的設(shè)計工作,以實(shí)現(xiàn)高質(zhì)量視頻流的實(shí)時傳輸。編碼器硬件平臺選用 AD 公司的BF561開發(fā)板,圖像采集采用OV7660,利用DMA技術(shù)以達(dá)到更高效的視頻采集和數(shù)據(jù)格式轉(zhuǎn)換。測試結(jié)果表明,在DSP上實(shí)現(xiàn)實(shí)時的H.264編碼方案,并且滿足高質(zhì)量、低帶寬傳輸?shù)南到y(tǒng)要求是完全可行的。
關(guān)鍵詞:H.264;編碼器;BF561;嵌入式系統(tǒng)
中圖分類號:TN919.81文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2009)05-156-03
Design of H.264 Encoder Based on ADSP-BF561
WANG Qinghui,GAO Ying
(Shenyang Institute of Chemical Technology,Shenyang,110142,China)
Abstract:According to the H.264 recommendation,a video encoder is designed to implement high quality video flow transfer based on AD DSP.Hardware platform of the encoder is an image processing equipment based on DSP (BF561) and video capture uses OV7660.Video capture and data format transformation become easier when DMA is used.The result shows that it is possible to implement a real-time video encoder conformed to the H.264 standard on a single BF561 with high quality and low bandwidth.
Keywords:H.264;encoder;BF561;embedded system
0 引 言
互聯(lián)網(wǎng)的帶寬越來越大,基于互聯(lián)網(wǎng)的信息特別是聲音圖像實(shí)時數(shù)據(jù)的傳輸已經(jīng)成為可能。視頻和音頻數(shù)據(jù)的傳輸正好充分利用了互聯(lián)網(wǎng)帶寬,并達(dá)到了實(shí)時交流以及進(jìn)行遠(yuǎn)程開會的可能。視頻會議系統(tǒng)相比傳統(tǒng)的電話會議更充分利用了互聯(lián)網(wǎng)資源,從而降低了運(yùn)營成本。
視頻編碼器是視頻會議系統(tǒng)的主要構(gòu)成部分。目前視頻壓縮標(biāo)準(zhǔn)有H.261、H.263、MPEG4和H.264等[1]。新一代視頻編碼標(biāo)準(zhǔn)H.264與以往標(biāo)準(zhǔn)相比具有壓縮率高,網(wǎng)絡(luò)親和性好,視頻質(zhì)量優(yōu)越等優(yōu)點(diǎn)。H.264引入了許多當(dāng)前視頻編碼中的新技術(shù)[2],使得在相同的重建圖像質(zhì)量下,編碼效率比H.263和MPEG-4高50%左右。因此,視頻編碼器設(shè)計中采用了H.264編碼標(biāo)準(zhǔn),編碼器主要通過美國AD公司的BF561 DSP 芯片實(shí)現(xiàn)。目前,視頻處理方案也已經(jīng)由前幾年的ASIC方案轉(zhuǎn)向DSP平臺。在DSP平臺上進(jìn)行視頻產(chǎn)品開發(fā)有以下幾方面的優(yōu)勢:第一,用戶開發(fā)自由度更大,支持多種個性化開發(fā),可以適應(yīng)市場不斷提出的新要求,在第一時間提升產(chǎn)品性能,增強(qiáng)產(chǎn)品的競爭能力;第二,DSP處理能力強(qiáng),可以在一個DSP上同時實(shí)現(xiàn)多路音、視頻信號的壓縮處理;第三,開發(fā)周期短,能實(shí)現(xiàn)快速技術(shù)更新和產(chǎn)品換代,各種新出現(xiàn)的快速及優(yōu)化算法可靈活進(jìn)行升級。
1 BF561介紹
BF561采用了對稱雙核的架構(gòu),在一顆BF561芯片內(nèi)部集成了2個BF533 DSP內(nèi)核,2個內(nèi)核主頻都可以高達(dá)600 MHz,支持并行處理[3]。BF561處理器的特性保證了其強(qiáng)大的數(shù)字信號處理能力,并且支持低電壓低電流供電,能夠滿足多功能的數(shù)字消費(fèi)類產(chǎn)品對于性能、功耗方面的要求。
1.1 DMA介紹
Blackfin處理器用直接存儲器訪問(DMA)在存儲器之間或存儲器與外設(shè)之間傳送數(shù)據(jù)。DMA控制器可在存儲器和片上外設(shè)(外設(shè)DMA)之間進(jìn)行數(shù)據(jù)傳送,以及在L1/L2/L3存儲器間進(jìn)行數(shù)據(jù)傳送(存儲器DMA或MDMA)。DMA控制器是Blackfin處理器架構(gòu)中的重要組件,完全獨(dú)立于內(nèi)核,不會進(jìn)行周期挪用,完全無需占用處理器內(nèi)核周期。在理想的應(yīng)用配置中,內(nèi)核只需要設(shè)置DMA控制器,并在數(shù)據(jù)調(diào)用過程中響應(yīng)中斷。
BF561有3個獨(dú)立的DMA控制器DMA1,DMA2和IMDMA。DMA1和DMA2控制器各有12個外設(shè)DMA通道和4個存儲器DMA通道。IMDMA控制器有4個存儲器DMA通道。
1.2 基于描述符的DMA
基于描述符的DMA傳送需要存儲于存儲器中的參數(shù)來初始化一個DMA隊列。描述符包括所有需對DMA控制寄存器正常編程的參數(shù)。描述符允許把多個DMA隊列鏈接在一起。在基于描述符的DMA操作中,可以對一個DMA通道編程,以便在當(dāng)前傳送隊列完成后,自動設(shè)置和啟動其他DMA傳送過程。在管理一個系統(tǒng)的DMA傳送過程時,基于描述符的模型能提供最大的靈活性。
描述符列表模型分為描述符列表“小”模式和描述符列表“大”模式。在描述符列表“小”模式中,描述段包括一個16位字段,用以指向下一描述符入口地址的低16位,地址的高16位通過寄存器編程得到且保持不變,限制描述符在存儲器的一個特定64 KB大小的頁中。當(dāng)描述符需要跨頁時,可用能提供32位入口地址的描述符列表“大”模式。
2 H.264視頻編碼器構(gòu)成
H.264編碼器由視頻采集、數(shù)據(jù)格式轉(zhuǎn)換、H.264編碼3部分組成。視頻采集部分負(fù)責(zé)捕獲圖像,并且將捕獲到的圖像通過PPI接口填充到指定的視頻幀緩沖區(qū)中。數(shù)據(jù)格式轉(zhuǎn)換部分完成將輸入的4∶2∶2格式的圖像轉(zhuǎn)換成H.264編碼器能夠編碼的4∶2∶0格式的數(shù)據(jù)。H.264編碼部分負(fù)責(zé)對4∶2∶0格式圖像編碼[4]。
在本視頻編碼器設(shè)計中,BF561 A核用于運(yùn)行操作系統(tǒng)和協(xié)議棧,而H.264算法在B核實(shí)現(xiàn)。
2.1 視頻采集
視頻采集是由攝像頭OV7660完成,OV7660是美國 OmniVision 公司開發(fā)的一款CMOS彩色圖像傳感器芯片[5],支持 VGA,QVGA,CIF等多種分辨率。視頻輸出格式有Raw RGB,GRB 4∶2∶2 和YUV/YCbCr(4∶2∶2)。在本設(shè)計中,選擇CIF YVYU(4∶2∶2)格式,需要設(shè)置其相應(yīng)寄存器COM1=0X00,CLKRC=0X80,COM7=0X30,TSLB=0X05。
攝像頭配置完后,打開PPI0將視頻數(shù)據(jù)填充到Blackfin處理器的視頻幀緩沖區(qū)中。采用基于描述符的PPI DMA可以很容易的實(shí)現(xiàn)乒乓緩沖[6],從而確保不會覆蓋尚未處理完畢的輸入數(shù)據(jù)。
乒乓緩沖的原理如圖1所示。
設(shè)置兩個CIF 4∶2∶2幀大小的輸入緩沖區(qū),首先輸入數(shù)據(jù)通過PPI接口填充到4∶2∶2視頻幀1中,當(dāng)?shù)谝粠瑪?shù)據(jù)填充滿時,處理器對這幀數(shù)據(jù)進(jìn)行MDMA搬移和壓縮編碼等操作,與此同時,PPI繼續(xù)填充第二個視頻幀。當(dāng)?shù)诙€視頻幀填充滿時,處理器處理第二個視頻幀同時填充第一個視頻幀。利用乒乓緩沖,數(shù)據(jù)將源源不斷地填充到兩個視頻幀中。
2.2 數(shù)據(jù)格式轉(zhuǎn)換
視頻采集到的圖像是交織的4∶2∶2格式的YUV視頻數(shù)據(jù),而H.264視頻編碼算法對4∶2∶0格式的視頻數(shù)據(jù)進(jìn)行壓縮。4∶2∶0格式數(shù)據(jù)的亮度值緩沖區(qū)和色度值緩沖區(qū)是分離的,利用MDMA搬移,可以實(shí)現(xiàn)亮度緩沖區(qū)和色度緩沖區(qū)的分離[7]。
CIF YVYU(4∶2∶2)格式數(shù)據(jù)如表1所示,CIF 4∶2∶0格式數(shù)據(jù)如表2所示。4∶2∶2格式圖像一個宏像素中有4個Y分量,2個U分量和2個V分量[8]。4∶2∶0格式圖像一個宏像素中有4個Y分量,1個U分量和1個V分量。Y,U和V的存儲區(qū)是分開的,Y在前,然后是U,最后是V。
把4∶2∶2格式轉(zhuǎn)換成4∶2∶0格式,要保留所有的Y,并取第0,2,4,……行的U和第1,3,5……行的V。采用基于描述符列表“大”模式的MDMA,需要三對描述符source_y, dest_y,source_u,dest_u, source_v,dest_v,形成源和目的兩個描述符鏈表,進(jìn)行Y,U和V的從交織的4∶2∶2格式的源數(shù)據(jù)區(qū)到Y(jié),U和V分離的目的數(shù)據(jù)區(qū)的搬移。
當(dāng)一幀CIF 4∶2∶2格式數(shù)據(jù)通過PPI填充到一個Blackfin處理器的視頻幀緩沖區(qū)中,產(chǎn)生中斷,在中斷處理子程序中啟動MDMA,分離亮度值和色度值,然后交給H.264編碼器進(jìn)行編碼。
2.3 H.264編碼
等待產(chǎn)生一幀4∶2∶0格式數(shù)據(jù)后,對這一幀數(shù)據(jù)執(zhí)行H.264編碼,之后繼續(xù)等待4∶2∶0格式數(shù)據(jù)的產(chǎn)生,直至編碼結(jié)束。
3 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)中,H.264編碼器對攝像頭采集到的圖像編碼,并將壓縮碼流以文件的形式保存在本地存儲器中。編碼結(jié)束后,用H.264的解碼器對壓縮碼流解碼,用YUVviewerPlus.exe播放解碼后的視頻文件。
實(shí)驗(yàn)中,編碼器可達(dá)到每秒鐘編碼15幀圖像的速度。解碼后的圖像清晰度與在VisualDsp++5.0[9]中用Image Viewer查看的相比,圖像質(zhì)量基本相同,圖像很清晰。OV7660采集圖像的速度是每秒鐘30幀,H.264編碼器沒有達(dá)到實(shí)時編碼。
實(shí)驗(yàn)中,基于BF561的H.264編碼器沒有達(dá)到實(shí)時編碼的原因是沒有對H.264開源代碼優(yōu)化。由于CIF格式圖像數(shù)據(jù)比較大,需要存儲在外部存儲器中,處理器訪問外部存儲器時間比較長;DCT和運(yùn)動估計算法函數(shù)比較耗時,用C語言實(shí)現(xiàn);程序中有一些輔助函數(shù)和打印信息等,從而影響了編碼器的速度[10]。
4 結(jié) 語
基于BF561的H.264編碼器沒有達(dá)到實(shí)時編碼。未來的工作重點(diǎn)是利用VisualDSP++開發(fā)環(huán)境的C編譯器,進(jìn)行代碼優(yōu)化;充分利用內(nèi)部存儲空間資源和盡可能通過DMA、高速緩存等減少存儲分配帶來的片內(nèi)外數(shù)據(jù)調(diào)度對系統(tǒng)性能的影響;對一些系統(tǒng)調(diào)用比較頻繁、耗時較多的模塊,如DCT和運(yùn)動估計等,充分利用BF561的指令集,用匯編語言實(shí)現(xiàn);去掉源程序中不必要的輔助函數(shù)和打印信息,以實(shí)現(xiàn)基于BF561的H.264編碼器實(shí)時編碼。
隨著消費(fèi)類電子產(chǎn)品進(jìn)一步進(jìn)入普通家庭,應(yīng)用H.264標(biāo)準(zhǔn)的視頻會議、可視電話以及無人監(jiān)控系統(tǒng)等也將會得到越來越廣泛的應(yīng)用。
參考文獻(xiàn)
[1]Analog Devices Inc..ADSP-BF561 Blackfin Processor Hardware Reference[EB/OL].Revision 1.1,2007.
[2]ITU-T REC.H.264|ISO/IEC 14496-10 AVC,Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification[S].Thailand:The 7th Meeting:Pattaya,2003,72:7-14.
[3]H.264/MPEG-4 Part 10 White Paper.http://www.vcodex.com.
[4]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)H.264/AVC[M].北京:人民郵電出版社,2005.
[5]OV7660/OV7161 CMOS VGA (640x480) CameraChip?Implementation Guide[Z].Rev.1,2004.
[6] 凱茨.嵌入式媒體處理[M].殷福亮,陳喆,景源,譯.北京:電子工業(yè)出版社,2007.
[7]Analog Devices Inc.Video Framework Considerations for Image Processing on Blackfin Processors (EE-276) [Z].Rev.1,2005.
[8]劉峰.視頻圖像編碼技術(shù)及國際標(biāo)準(zhǔn)[M].北京:北京郵電大學(xué)出版社,2005.
[9]Analog Devices,Inc.VisualDsp++5.0 Device Drivers and System Services Manual for Blackfin Processors[Z].Revision 3.0,2007.
[10]蘇輝,孔德佳,余松煜.基于ADSP-BF533的實(shí)時圖像編碼關(guān)鍵技術(shù)[J].計算機(jī)工程與應(yīng)用,2005(4):88-90.
作者簡介
王慶輝 男,1972年出生,沈陽化工學(xué)院副教授,博士。主要研究方向?yàn)槎嗝襟w通信。
高 穎 女,1978年出生,遼寧沈陽人,碩士研究生。主要研究方向?yàn)橐曨l數(shù)據(jù)壓縮算法和DSP實(shí)現(xiàn)。