基於OMAP的MPEG-4即時解碼器的實現
| [日期:2008-8-6] |
來源:電子技術應用 作者:薑 超 劉濟林 王興國 |
[字型:大 中 小] |
隨著移動通訊和多媒體技術的發展,人們對通訊的要求已不滿足於傳統的語音業務,而是追求更高品質的視頻、音頻等多媒體資訊服務。在多媒體通訊中,視頻區別於音頻和文字的顯著特點是其大資料量以及高處理複雜度。現有的移動終端一般採用DSP晶片作為核心,DSP晶片在資料處理方面具有較多的優勢,但其系統處理和控制能力比較弱。第三代移動通訊(3G)終端需要提供更多更複雜的服務如即時視頻互動等,原有的DSP晶片很難滿足這些需求[1]。TI公司提出了開放式多媒體應用平台OMAP(Open Multimedia Applications Platform)體繫結構,並為此設計了OMAP處理器。筆者利用本文提出的方法在使用TI OMAP1510的PocketPC上實現了MPEG-4簡單級(simple profile)解碼,基本滿足了即時的要求,同時保持了較好的品質。
1 開放式多媒體平台(OMAP)
OMAP採用一種獨特的雙核結構,把控制效能較強的ARM處理器與高效能低功耗的DSP核結合,是一種開放式的、可程式化的基於DSP的體繫結構。主要目標是滿足2.5G和3G網路上行動電話、PDA上的語音與多媒體需要。
1.1 OMAP的硬體平台
OMAP硬體平台主要由DSP核、ARM核以及業務控制器(Traffic Controller)組成。這三部分可以獨立地進行時鐘管理,有效地控制功耗。OMAP硬體平台採用雙核技術提高作業系統的效率和最佳化多媒體代碼的執行。即時性任務如即時視頻通訊等由DSP完成,非即時性任務和系統控制工作如介面互動、作業系統等由ARM完成[2]。例如,使用者在進行視頻通訊時可以同時使用作業系統上的應用軟體如Word、Excel等,這樣分別利用了DSP低功耗而又較強資料處理能力和ARM的較強控制能力的優勢。與傳統只使用ARM或者只使用DSP晶片的移動終端相比,OMAP成功地解決了效能與功耗的最佳組合問題。
OMAP硬體平台不斷升級,以滿足日益增長的應用需求。本文使用OMAP1510晶片,它的兩個關鍵區段是TI增強型ARM925(TI925T)和TMS320C55x DSP。TMS320C55x DSP的工作主頻為200MHz,內部有32K字雙存取SRAM,48K字單存取SRAM和12K字的高速指令緩衝。它具有高度的並行能力,32位讀寫和功能強大的EMIF、雙流水線的獨立操作以及雙MAC的運算能力。它採用了三項關鍵的革新技術:增大的空閑省電地區、變長指令、擴大的並行機制。此外TMS320C55x DSP核增加了處理運動估計、離散餘弦變換(DCT)、離散餘弦反變換(IDCT)、1/2像素插值的硬體加速器,降低了視頻處理的功耗,其結構對於多媒體應用高度最佳化,適合低功耗的即時語音影像處理。TI增強型ARM925採用ARM9TDMI技術,工作主頻為175MHz,有16K位元組的高速指令緩衝、8K位元組的高速資料緩衝和17個字的寫緩衝。ARM和DSP都可以訪問內部SRAM和外部儲存空間介面,但ARM是平台的核心,它能訪問全部16M位元組的記憶體空間和DSP的128K位元組的I/O空間。
1.2 OMAP的軟體平台
OMAP的軟體結構建立在兩個作業系統之上,一個是基於ARM的作業系統如WindowsCE、Linux等;另一個是基於DSP的即時作業系統(RTOS)DSP/BIOS。無縫串連兩個作業系統的關鍵技術是DSP/BIOS橋。DSP/BIOS橋建立的這種串連使ARM端的客戶能與DSP上的任務交換資訊和資料[3]。對於軟體開發人員來說,DSP/BIOS橋提供了一種使用DSP的無縫介面,開發人員可以在GPP(通用處理器,包括ARM)上使用標準應用程式編程介面訪問並控制DSP的運行環境。
2 MPEG-4即時視頻解碼在OMAP上的軟體實現
2.1 MPEG-4解碼流程
MPEG-4標準因其給出多種抗誤碼工具而適於應用在無線通道環境下的多媒體通訊[4]。本文實現的是主要應用於無線通訊的簡單級(simple profile)[5],因而只使用了I幀和P幀。其解碼的流程1所示。如果是I幀,碼流中主要是紋理資訊,經過可變長(VLC)解碼、反掃描、反預測、反量化和反DCT(IDCT)可以直接得到重構的幀。如果是P幀,碼流中還含有運動向量資訊,經過VLC解碼、反掃描、反預測、反量化和反DCT得到的只是殘差資訊。利用解碼得到的運動向量、殘差資訊和參考幀進行運動補償可以得到重構的幀。
2.2 在OMAP1510上的程式結構
在OMAP上開發程式通常分為兩部分,一部分是使用Embedded Visual C開發ARM端程式,另一部分是使用TI CCS開發DSP端程式。前者主要是為了使設計的演算法與xDAIS(eXpressDSP TM演算法標準)相容,在ARM端程式中調用一些DSP/BIOS橋的API實現在DSP上初始化訊號處理任務、與DSP任務交換訊息、對來自DSP和從DSP發出的資料流進行緩衝、暫停、繼續、刪除DSP任務並進行資源狀態查詢等。而具體的功能實現則是在DSP端完成。圖2顯示了TI-enhanced ARM925應用程式與DSP節點之間的關係。
通過寫節點封裝器的建立、執行及刪除函數,將xDAIS演算法封裝於DSP節點中。建立函數可分配節點處理和xDAIS演算法所需的儲存空間,還可分配節點的相關模組。這些模組是傳遞到執行和刪除函數的一種結構。建立函數還可給出xDAIS演算法的執行個體,並可將其啟用,還可初始化任何在任務執行前必須初始化的資料或參數。執行函數是主要的指派函數,在此函數執行階段中一般不分配儲存空間及其它資源。執行函數一般包括訊息處理迴圈,該迴圈可中斷函數並等待來自ARM925的訊息或資料流,然後節點將這些訊息或資料指派到合適的xDAIS控制或處理任務中去。同時執行函數查詢DSP/BIOS橋所發送的指示函數退出迴圈的特殊訊息,然後檢查定製訊息或流資料,並對這些訊息或資料流進行適當處理。刪除函數清空建立函數所分配的資源,包括相關模組和資料流。刪除函數還必須關閉演算法、釋放儲存空間以及分配給節點的其它資源。
2.3 程式的最佳化考慮
(1)合理分配儲存位置。TMS320C55x的片記憶體儲器容量小而存取速度快,片外儲存空間容量大但存取速度慢。在分配儲存空間的時候應考慮到這個特點合理地安排程式各部分。對於那些使用頻繁的變數應考慮放在片內,如VLC表、運動向量、反量化、反DCT的係數以及其它中間變數都應放在片內,而對於那些執行次數比較少或者比較大的變數如參考幀和當前解碼出的幀則應該放在片外。此外由於編譯和分配空間是以檔案為單位的,所以應當把使用頻繁的函數盡量放在相同的幾個檔案中,再將這幾個檔案放入片記憶體儲器以高效地利用有限的片內資源。
(2)資料轉送的管理。對於視頻解碼工作來說,TMS320C55x的片記憶體儲器資源不是很多,必須合理利用。例如一幀4:2:0的QCIF(176×144)映像,如果以緊湊的方式(2個位元組存到一個16bit的字中)存放也需要18K字。因此不可能在解碼時把一整幀都放在片內,而應考慮使用DMA在需要時把映像的一部分傳入片內進行處理。此外,為了使CPU訪問和DMA傳輸同時無衝突地進行,將資料訪問設計成乒乓結構。在解I幀時片內準備兩個大小為一宏塊行的儲存區用於存放YUV資料,CPU將解碼的一宏塊行資料放在其中一塊後,DMA把這一宏塊行的資料轉送到片外對應的位置,同時CPU解下一宏塊行的資料並將結果放在另外一Block Storage區,DMA再傳送此塊的資料,如此反覆執行。選擇兩宏塊行大小的原因是不能使用片內太多的儲存空間資源,同時如果每次解碼傳輸的資料太少將過於頻繁地啟動DMA,導致效率下降,折衷考慮決定在片內為解碼資料開闢兩宏塊行大小的緩衝。而在解P幀的時候因為要先讀入參考幀的某些資料所以更為複雜。在片內開闢兩塊緩衝,用以存放對Inter宏塊進行運動補償所需的參考幀中對應搜尋範圍內的資料,同時準備兩個宏塊大小的片內空間用於存放當前宏塊解碼的結果(為描述方便稱為M1和M2)。此時需要使用兩個DMA通道,通道1負責將解當前宏塊進行運動補償時所需的參考幀部分資料讀到片內緩衝中,通道2負責將解碼的資料轉送到片外對應的空間。先啟動通道1讀所需參考幀資料到緩衝1,CPU用這些資料和讀入的碼流對Inter宏塊進行運動補償解出當前宏塊的資料放入M1,同時通道1讀下一宏塊所需的參考幀資料到緩衝2。之後CPU、通道1、通道2並行工作,CPU利用緩衝2的資料解下一宏塊放入M2,通道1再讀資料到緩衝1中,通道2將解碼的資料從M1傳輸到片外對應的空間,如此迴圈,P幀利用DMA解碼3所示。
(3)使用TI提供的IMGLIB庫函數。IMGLIB是專門為影像處理和視頻提供的庫,用來提高視頻處理速度。這些庫函數中有的是軟體庫函數,是用彙編寫成的高效代碼例如反量化函數IMG_dequantize_8x8等;有的則是硬體庫函數,它們利用OMAP1510晶片中一些專門為視頻編解碼的硬體加速模組來處理資料,如利用反DCT模組的IMG_idct_8x8等,這些函數處理資料的速度更快,效率更高。在使用某些庫函數的時候需要按照其介面的要求調整。
(4)使用DSP內部固定的intrinsics指令,這些指令主要執行一些簡單的算術操作,由於它們是由最佳化的彙編代碼寫成,因而使用它們可以提高代碼執行的效率。
(5)其它一些最佳化考慮和措施。為了使程式的效率更高,採用了一些代碼最佳化的措施,例如將一些迴圈內部展開,特別是對多重迴圈的控制,如果外層迴圈較少,可將內層迴圈展開,把轉移條件結合起來,以減少內層與外層之間的相互聯絡,減少判斷轉移並實現並行操作。又如利用DMA來代替原有的複製函數、為方便將浮點數定點化、使用移位操作代替乘除法等。此外,在應用到多媒體通訊中,採用支援資料分割的方法來有效控制無線通訊中可能產生的誤碼。
3 測試結果
使用QCIF(176×144)的兩測試碼流foreman和carphone(各編碼100幀)在使用資料分割和沒使用資料分割的情況下得到的解碼速度(包括顯示部分)如表1所示。
從表1可以看出,本文提出的方法基本上能夠滿足MPEG-4即時解碼的需求,即使對比較複雜的使用資料分割的序列,仍能達到25幀/秒(fps)以上,映像的品質也比較好,因此適合在無線終端實現多媒體的應用。
OMAP平台因其專屬的雙核結構和為無線應用提供了一個強大的軟硬體基礎。本文結合其在MPEG-4解碼中應用的執行個體,具體闡述了OMAP1510的軟體最佳化開發方法,並基本上實現了即時解碼,希望能對使用OMAP或準備使用的開發人員具有借鑒意義。
參考文獻
1 Jamil Chaoi. Dedicated Systems Magazine. 2001 Q2.
2 謝 凱.開放式的多媒體應用平台OMAP.電子技術應用,2001;27(11)
3 TI公司. OMAP1510 Multimedia Processor Technical Reference Manual. Dec.2002
4 宋 彬,常義林.視頻通訊抗誤碼方法研究的新進展.電子學報,2002;(10)
5 ISO/IEC JTC 1/SC 29/WG 11 N 3056, Information technology-Coding of audio-viusal objects-Part2:Visual, Version 1.0, Jan ,2000