新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 全硬件視頻處理引擎簡化視頻系統設計

        全硬件視頻處理引擎簡化視頻系統設計

        作者: 時間:2011-04-20 來源:網絡 收藏
        數字視頻處理始終是目前多媒體設備應用中的熱點問題。數字視頻的標準繁多,并且在還持續地發展變化之中,因此,系統設計必須能夠盡可能支持更廣泛的視頻格式。傳統的選擇是采用DSP進行軟件編解碼,但隨著1080i/p的高清視頻應用的迅速普及,其所要求的運算量也在急劇增長,基于軟件的處理方式逐漸開始面臨極大的挑戰。而基于硬件加速器的方案優勢則開始顯現,這種方式可以大大減輕處理器負載,并滿足移動設備苛刻的低功耗要求。目前,越來越多的系統方案開始采用基于全硬件視頻處理引擎(VPU)的設計。

          飛思卡爾i.MX53應用處理器提供了基于硬件加速器方式的典型結構,其內嵌的全硬件VPU支持從H.264、MPEG4、Divx到RV10在內的非常廣泛的視頻格式,可以涵蓋絕大部分視頻資源,并支持1080i/p高清解碼和720p編碼。此外,該處理器還可以同時進行多路視頻解碼和全雙工多路視頻編碼處理,并且允許每一路視頻采用不同的格式,從而可實現雙顯示器配置或視頻電話會議應用等。

          典型的硬件視頻處理引擎結構

          與通常意義上的全硬件VPU不同,該VPU的一個顯著的優勢在于可以在一定程度上提供可編程性,以及編解碼流程的更新。原因就在于其內置有一個16位的小型可編程DSP,這個名為BIT的處理器可以通過執行不同的固件來靈活控制編解碼的過程以及和CPU的接口 交互。

          對于CPU來說,控制VPU所需要的運算量不超過1MIPS,如此之低的計算需求同樣歸功于BIT處理器。它的內部包含了專用硬件加速器來加速碼流的處理,實現了包括幀率控制、FMO、ASO、視頻編解碼控制以及錯誤恢復等功能。VPU內大部分的子模塊也經過高度優化,在編解碼各種不同視頻格式時可以充分復用,從而降低了門數和功耗。

          MX53的VPU結構如圖1所示,它通過標準的AXI/APB與ARM處理器相連,從而可以訪問片內緩存來獲得高性能。VPU主要包括兩個組件,視頻編解碼處理IP和VPU總線轉換器。前者是整個VPU的核心,主要由嵌入式BIT處理器,視頻CODEC以及總線仲裁器組成;后者負責將AMBA APB3總線轉換成VPU內部的IP Sky Blue總線。

          

        MX53的VPU結構

          視頻解碼處理流程

          得益于BIT處理器的高度完善的控制流程,從外部的CPU角度來看,VPU是高度自主控制的,CPU所需要做的僅僅是與VPU相關的進程管理工作。需要注意的是這里的進程并非指通常意義上的系統進程,而是VPU內部專用的進程。

          VPU可以同時處理多達4路不同格式的視頻,但處理流程都是相同的。都是從創建進程開始(系統負責創建和設置一個專用進程),再到運行進程(系統運行進程需要滿足的時間點要求是解碼器處于空閑狀態并且碼流已經在內存中就緒),最后退出進程。

          如果有多個進程準備運行,每個進程將被分配一個唯一的進程索引號,該索引號基于創建的順序進行分配。例如,當1路MPEG-4解碼、1路H.264解碼、1路MPGE-2解碼和1路VC-1解碼同時進行時,MPEG-4解碼進程會被分配索引號0,而VC-1解碼被分配為索引號3。

          在多進程的環境下,進程的執行沒有優先級之分。在創建了所有的進程之后,CPU將啟動BIT處理器執行這些進程,BIT處理器同樣是利用類似時間片分割的機制來調度一個進程。

          我們跳出VPU,從整個系統的角度來看VPU的運作,下面以同時解碼1路H.264碼流和1路MPEG-4碼流為例。

          首先,初始化VPU,包括將BIT處理器所需的固件代碼裝入內存,設置初始化參數,如BIT處理器配置參數,工作緩沖區基地址、BIT代碼地址以及碼流緩沖區控制等等。

          接著創建H.264碼流和MPEG-4的解碼進程,包括設置碼流緩沖區的基地址和大小,幀緩沖區的基地址等。

          然后每個進程交替執行。一個標記(Wait BusyFlag)指示是否一幀碼流已經完成解碼,完成解碼后的碼流將會被發往圖像處理單元(IPU)進行后處理和顯示。

          最后,在解碼結束后,釋放相關的內存資源并銷毀進程。

          

        《電子系統設計》

          內存控制是使用VPU的關鍵問題

          VPU對于外部內存有完全的訪問權,它利用外部內存來加載和存儲圖像幀、碼流以及BIT處理器的代碼和數據。內存的使用量取決于視頻格式本身和目標應用。例如,H.264解碼使用的參考幀最多達16個,但H.263解碼僅僅需要使用1個。此外,不同的格式在處理De-blocking或者疊加平滑濾波的時候也需要使用大小不同的臨時內存。

          基本上,VPU使用6種不同的存儲區:幀緩沖區(用于儲存一幀圖像)、BIT處理器代碼內存區、工作緩沖區(用于BIT處理器的中間數據以及供視頻解碼硬件使用)、碼流緩沖區(用于加載碼流)、參數緩沖區(用于BIT處理器命令執行以及返回數據)、搜索RAM(用于ME模塊以減少外部內存的總線負荷)。

          其中,碼流緩沖區的處理很關鍵,對于每一個進程,系統必須分配一個獨立的碼流緩沖區。外部碼流緩沖區將組成一個緩沖區環(ring buffer)。BIT處理器將在獲得緩沖區環的起始地址后自動進行循環操作。

          在解碼處理中,CPU將碼流寫入到該緩沖區中,接著BIT處理器將讀取該碼流,如果二者配合不好,會導致碼流的重寫(overwriting)或者不足(underflow),一旦這種情況發生,解碼就會失敗。為了防止這種情況的發生,當前碼流的緩沖區讀/寫指針必須在外部的CPU和VPU內部的BIT處理器之間交換。CPU操作的寫指針和BIT操作的讀指針必須都要寫入內部寄存器,BIT處理器通過比較這兩個指針來判斷碼流緩沖區是否有碼流不足,如果是的話,則需要停止解碼來阻止誤讀碼流,直到CPU寫入足夠的碼流數據并更新寫指針。反過來,CPU也需要在對緩沖區環寫入數據之前對讀指針進行判斷以確定不會發生碼流重寫。

          在諸如1080i/p高清解碼的應用下,VPU所要求的內存帶寬很高,而現在的操作系統多為多任務操作系統,因此內存帶寬不足的問題就很可能發生,這將導致播放不流暢甚至錯誤解碼的情況發生。因此必須仔細規劃系統帶寬的使用。

          本文小結

          從上述的分析來看,對于i.MX53的VPU的使用是非常簡單的,全硬件VPU對于編解碼過程的高度封裝實際上隱藏了這一過程的復雜性,使得從整體上來看,視頻處理成為一件輕松的任務,這正是全硬件VPU的顯著優勢之一。目前,多媒體設備的市場競爭異常激烈,系統廠商的產品開發時間被壓縮得非常短,就視頻解決方案而言,應用處理器供應商必須保證其參考設計能夠提供簡潔易用的API,以及經過充分驗證的可靠性和實時編解碼性能,基于全硬件視頻處理的系統設計無疑是一種極具市場吸引力的解決方案。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大石桥市| 鄂伦春自治旗| 文安县| 施秉县| 轮台县| 平湖市| 柏乡县| 万年县| 黎川县| 枝江市| 泸西县| 边坝县| 新和县| 江口县| 靖远县| 旅游| 藁城市| 泰兴市| 宝清县| 绥化市| 长泰县| 穆棱市| 顺昌县| 隆尧县| 革吉县| 金门县| 塔城市| 湖州市| 彭水| 高安市| 鞍山市| 武汉市| 白山市| 许昌县| 北川| 和林格尔县| 长宁县| 新和县| 明星| 军事| 高平市|