基于OMAP的MPEG-4實時解碼器的實現
隨著移動通信和多媒體技術的發展,人們對通信的要求已不滿足于傳統的語音業務,而是追求更高品質的視頻、音頻等多媒體信息服務。在多媒體通信中,視頻區別于音頻和文字的顯著特點是其大數據量以及高處理復雜度。現有的移動終端一般采用DSP芯片作為核心,DSP芯片在數據處理方面具有較多的優勢,但其系統處理和控制能力比較弱。第三代移動通信(3G)終端需要提供更多更復雜的服務如實時視頻交互等,原有的DSP芯片很難滿足這些需求[1]。TI公司提出了開放式多媒體應用平臺OMAP(Open Multimedia Applications Platform)體系結構,并為此設計了OMAP處理器。筆者利用本文提出的方法在使用TI OMAP1510的PocketPC上實現了MPEG-4簡單級(simple profile)解碼,基本滿足了實時的要求,同時保持了較好的質量。
本文引用地址:http://www.j9360.com/article/86685.htm1 開放式多媒體平臺(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橋所發送的指示函數退出循環的特殊消息,然后檢查定制消息或流數據,并對這些消息或數據流進行適當處理。刪除函數清空創建函數所分配的資源,包括相關模塊和數據流。刪除函數還必須關閉算法、釋放存儲器以及分配給節點的其它資源。
評論