摘 要:在簡要介紹BF533 DSP開發平臺的基礎上,著重描述如何對BF533的PPI,DMA等硬件資源進行配置,以及如何將解碼器輸出的YUV數據按照ITU-R 656幀格式配置成幀后傳送到監視器進行顯示,實現H.264解碼器輸出的視頻播放。測試結果表明,視頻顯示播放可以達到實時要求,完成了一個基于低功耗DSP的實時H.264解碼器系統,為移動和無線視頻的接收終端的實現打下良好的基礎。
關鍵詞:H.264;DSP;ITU-R656;視頻解碼;視頻顯示
中圖分類號:TN919.8 文獻標識碼:B 文章編號:1004-373X(2008)06-050-03[HJ1*5]
Display of H.264 Decoded Video Based on Blackfin DSP
ZHANG Diankai,GAN Zongliang,ZHU Xiuchang
(College of Communications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing,210003,China)[HJ1*5]
Abstract:This paper introduces the resources configuration and architecture of BF533 platform and addresses the principle of H.264 decoder briefly.Then we configure the hardware resources(PPI,DMA etc.) and deliver the video data which is configured by ITU-656 format to display on monitor realizing the display of video-out ofH.264 decoder.The results oftest demonstrate the video display can meet the real-time demand and complete the H.264 decoder system which is based on low power consumption DSP,and then lay the foundation for realization of mobile and wireless terminate.
Keywords:H.264;DSP;ITU-R656;video decoder;video display[HJ1*2]
1 Blackfin533 DSP平臺簡介
Blackfin533 是美國模擬器件公司(ADI)開發的一款高性能視頻處理芯片,其主頻高達600 MHz,每秒可處理1 200 M次乘加運算,具有大量針對視頻的專用指令,可以并行處理多條指令,這些特性使得該DSP芯片能處理廣泛用于互聯網的大量圖像﹑聲音﹑文本和數據流,適用于通信和各種互聯網設備。Blackfin DSP開發平臺如圖1所示:

開發平臺的中心處理器Blackfin533是一種單核、加載/存儲結構的DSP,擁有雙MAC以及正交RISC微處理指令集。除此之外,Blackfin533還具有以下特點:雙40 b算法邏輯單元(ALU);一個40 b的移位器;4個視頻ALU;一個8通道的32 b數據寄存器;148 kB的片內存儲器(16 kB可作為指令CACHE,32 kB可作為數據CACHE);動態電源管理功能等。另外,在Blackfin533的存儲器結構中,DMA 控制器提供高帶寬數據轉移,能夠完成L1/L2 存儲器和外部存儲器之間編碼或數據塊轉移,并且高速緩沖存儲器可以設置,以便處理器和DMA可獨立地訪問。此開發平臺的外設中有ADV7171視頻編碼器(用于視頻顯示)和ADV7183視頻解碼器(用于視頻采集)。其中ADV7171可提供3種模擬視頻輸出方式,而ADV7183可提供3個模擬視頻的輸入通道。視頻編碼器連接到PPI1口,解碼器連接到PPI0口,每個PPI口都有其獨立的時鐘信號。
2 H.264解碼顯示的設計模塊
H.264解碼器的視頻顯示采用PPI口的DMA操作,他將緩沖區中的視頻數據傳輸到ADV進行數/模轉換后到監視器進行顯示播放,其中BF533的PPI口支持ITU-R656的3種輸入模式和1種輸出模式。
2.1 ITU-R 656簡介
BF533處理器支持ITU-R 656的并行數字視頻輸出,對8 b和10 b精度的數字視頻都支持,圖2和圖3分別給出了輸出模式下NTSC/PAL制式顯示的行結構和幀結構,只要按照這個結構配置幀緩沖區就可以實現視頻顯示。
在這種輸出模式下,水平標志位H、垂直標志位V和場標志位F(如圖3所示)都插入到視頻數據中進行傳送,不需要單獨傳送。活動視頻開始標志(SAV)和結束標志(EAV)表示視頻數據讀入的開始和結束,SAV發生在H的1-to-0的轉變,EAV發生在H的0-to-1轉變。完整的視頻場(field)應包含視頻的水平掃描消隱和和以及垂直掃描消隱信號。隔行掃描的視頻由奇場和偶場組成,兩場的掃描行呈交插關系,逐行掃描視頻則沒有奇偶場的區別。


如圖2所示,EAV和SAV標志有3個已定義的字節(0xFF,0x00,0x00),緊跟著是XY狀態字,XY狀態字除了F,V,H位外,包含4個保護位(P0~P4)來進行單個位錯誤檢測和修正。注意F和V僅可以作為EAV序列的一部分來改變(即H從而變到1)。標志位的定義如下:
F=0,奇數場,F=1,偶數場;V=0,垂直消隱,V=1,活動視頻;H=0,SAV,H=1,EAV;P3=V xor H,P2=F xor H,P1=F xor V,P0=F xor V xor H。
其中各個標志位在8 b和10b情況下的定義如表1所示。開發平臺的處理器接口能適應不同長度的行和場。一般來說,只要引入的視頻有合適的EAV和SAV標志,PPI就可以讀入。一個CIF圖像可以被轉換格式以適應ITU-R656幀格式的要求,其中EAV和SAV定義了每個數據流的圖像排列,V和F標志可以用來限定場和幀。
ITU-R 656輸出模式下通過PPI口從內存中輸出數據和標志字節,數據和控制標志必須在輸出前在內存的幀緩沖區中放置好。本文中采用的監視器顯示制式為NTSC,根據圖2和圖3可知每行為1 716 B,每幀為525行,因此開辟的幀緩沖區大小應為1 716×525。視頻顯示流程圖如圖2所示。


2.2 相關寄存器的配置
H.264解碼視頻顯示涉及到的硬件相關寄存器配置主要有:PLL的初始化、中斷寄存器的配置、DMA、PPI、ADV、FALSH等有關寄存器進行配置。其中DMA傳送可以是基于描述符的,也可以是基于自動緩沖的。在2種方式下都需要對各個寄存器進行相應的配置。
2.3 H.264解碼顯示的實現
本文的H.264解碼器的軟件模塊的設計主要是面向DSP硬件實現。從NAL層的比特流經逆量化和反變換后根據幀內或幀間預測模式進行相應的還原得到解碼重構幀,對重構幀的YUV數據進行視頻顯示。
將H.264解碼器輸出的YUV數據暫存到SDRAM中,然后插值為ITU-R656格式數據存儲到以frame_buffer為首地址的幀緩沖區中相應的位置,在加上合適的控制信號字節,完成ITU-R656一幀數據的初始化,用DMA傳輸幀緩沖區中的數據到PPI端口經ADV數模變換后到監視器顯示播放。框圖如圖5所示。
其中DMA傳輸分別采用了自動緩沖方式和描述符方式。在自動緩沖方式下實現圖像的動態輸出,可以在DMA中斷時按照單幀顯示的方法不斷將YUV數據寫入幀緩沖區,這樣對同一塊緩沖區邊讀邊寫的方式使得緩沖區的數據產生了沖突,在兩幀圖像的顯示之間有不定的圖像,而且從計算機中讀取數據的效率不高導致顯示延時較大,圖像顯示不連續,因此要加以改進。在描述符方式下開辟一塊連續N個緩沖區,一起讀入數N幀數據,把這N個緩沖區全部初始化為單幀顯示的形式。

然后DMA將這N幀數據連續傳送來實現了圖像的動態顯示。但由于硬件的內部資源有限,所讀入的數據幀數N也是有限的。為了克服存儲器資源的限制,在描述符方式下實現多幀圖像的顯示,采用“乒乓”機制來實現邊寫邊顯示。“乒乓”機制的實現方法如下:
typedef struct _vout_frame {
volatile unsigned char *data;
int flag;
} vout_frame;
其中data是幀緩沖區的起始地址;flag為幀緩沖區寫操作完成的標志。定義類型為結構體vout_frame的2個幀緩沖區buffer[2],對緩沖區進行寫操作,如果完成就置標志位flag為1,表示幀緩沖區寫操作完成,每次中斷產生時就檢測這個非顯示的幀緩沖區的標志位 flag,如果為0,就無操作;如果為1,就把DMA描述符的傳送地址改為這個幀緩沖區的起始地址,同時把剛才使用的那個幀緩沖區的標志位flag置0。例如當幀緩沖區1寫操作完成,則置buffer[0].flag=1,當中斷產生時檢測到這個幀緩沖區的標志位為1,則把DMA描述符的傳送地址修改為這個幀緩沖區的起始地址buffer[0].data,就可以讀取這個幀緩沖區中的數據進行顯示,然后對幀緩沖區2進行寫操作,如此循環。這樣在任意時刻,兩個緩沖區都有一個處于寫操作狀態,一個處于讀操作狀態,互不干擾,實現了視頻的顯示播放。
3 實驗結果
圖6所示顯示為claire和mobile序列YUV數據在DMA以自動緩沖方式、描述符方式傳輸數據時,播放在監視器屏幕上的截圖:x

從圖6可以看出,DMA在兩種傳輸數據方式下,在顯示單幀圖像時沒什么區別,但是在動態顯示時,自動緩沖方式不能改變傳送的幀緩沖區的地址,而描述符方式在中斷完成時可以修改DMA傳輸的地址,實現“乒乓”機制,因此動態顯示時應采用描述符方式傳送數據。
4 結 語
本文是在BF533開發平臺上實現H.264解碼器的視頻顯示播放,完善一個基于低功耗DSP的實時H.264解碼器系統,為完成移動和無線視頻的接收終端的實現打下良好的基礎。調試結果表明,已基本滿足H.264實時解碼顯示的要求,具有較好的應用意義。但是本文的主要程序大都是用C語言編寫的,沒有進行DSP硬件語言優化,運行效率不是很高,下一階段將對程序代碼進行優化。
參考文獻
[1]Thomas Wiegand,Gary J Sullivan.Overview of the H.264/AVC Video Coding Standard,IEEE,2003.
[2]Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification (ITU-T Rec.H.264 | ISO/IEC 14496-10 AVC),7th Meeting:Pattaya,Thailand,7-14 March,2003.
[3]陳峰.Blackfin系列DSP原理與系統設計\\[M\\].北京:電子工業出版社,2004.
[4]畢厚杰.新一代視頻壓縮編碼標準\\[M\\].北京:人民郵電出版社,2005.
[5]胡棟,朱秀昌.圖像通信技術與應用\\[M\\].南京:東南大學出版社,1996.
[6]朱秀昌,劉峰,胡棟.數字圖像處理與圖像通信\\[M\\].北京:北京郵電大學出版社,2002.
[7]譚浩強.C程序設計\\[M\\].北京:清華大學出版社,1999.
[8]林福宗.多媒體技術基礎\\[M\\].北京:清華大學出版社,2002.
作者簡介 張殿凱 男,1983年出生,黑龍江嫩江人。南京郵電大學碩士。研究方向為圖像處理和多媒體通信。
干宗良 男,1979年出生,新疆石河子人。南京郵電大學博士。主要研究方向為分布視頻編碼,視頻編碼DSP實現。
朱秀昌 男,1947年出生,江蘇丹徒人。南京郵電大學通信與信息工程學院副院長,教授,博導。江蘇省圖像處理與圖像通信重點實驗室主任。