<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 全硬件視頻處理引擎簡化視頻系統(tǒng)設(shè)計(jì)

          全硬件視頻處理引擎簡化視頻系統(tǒng)設(shè)計(jì)

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

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

            典型的硬件視頻處理引擎結(jié)構(gòu)

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

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

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

            

          MX53的VPU結(jié)構(gòu)

            視頻解碼處理流程

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

            VPU可以同時(shí)處理多達(dá)4路不同格式的視頻,但處理流程都是相同的。都是從創(chuàng)建進(jìn)程開始(系統(tǒng)負(fù)責(zé)創(chuàng)建和設(shè)置一個(gè)專用進(jìn)程),再到運(yùn)行進(jìn)程(系統(tǒng)運(yùn)行進(jìn)程需要滿足的時(shí)間點(diǎn)要求是解碼器處于空閑狀態(tài)并且碼流已經(jīng)在內(nèi)存中就緒),最后退出進(jìn)程。

            如果有多個(gè)進(jìn)程準(zhǔn)備運(yùn)行,每個(gè)進(jìn)程將被分配一個(gè)唯一的進(jìn)程索引號(hào),該索引號(hào)基于創(chuàng)建的順序進(jìn)行分配。例如,當(dāng)1路MPEG-4解碼、1路H.264解碼、1路MPGE-2解碼和1路VC-1解碼同時(shí)進(jìn)行時(shí),MPEG-4解碼進(jìn)程會(huì)被分配索引號(hào)0,而VC-1解碼被分配為索引號(hào)3。

            在多進(jìn)程的環(huán)境下,進(jìn)程的執(zhí)行沒有優(yōu)先級(jí)之分。在創(chuàng)建了所有的進(jìn)程之后,CPU將啟動(dòng)BIT處理器執(zhí)行這些進(jìn)程,BIT處理器同樣是利用類似時(shí)間片分割的機(jī)制來調(diào)度一個(gè)進(jìn)程。

            我們跳出VPU,從整個(gè)系統(tǒng)的角度來看VPU的運(yùn)作,下面以同時(shí)解碼1路H.264碼流和1路MPEG-4碼流為例。

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

            接著創(chuàng)建H.264碼流和MPEG-4的解碼進(jìn)程,包括設(shè)置碼流緩沖區(qū)的基地址和大小,幀緩沖區(qū)的基地址等。

            然后每個(gè)進(jìn)程交替執(zhí)行。一個(gè)標(biāo)記(Wait BusyFlag)指示是否一幀碼流已經(jīng)完成解碼,完成解碼后的碼流將會(huì)被發(fā)往圖像處理單元(IPU)進(jìn)行后處理和顯示。

            最后,在解碼結(jié)束后,釋放相關(guān)的內(nèi)存資源并銷毀進(jìn)程。

            

          《電子系統(tǒng)設(shè)計(jì)》

            內(nèi)存控制是使用VPU的關(guān)鍵問題

            VPU對(duì)于外部內(nèi)存有完全的訪問權(quán),它利用外部內(nèi)存來加載和存儲(chǔ)圖像幀、碼流以及BIT處理器的代碼和數(shù)據(jù)。內(nèi)存的使用量取決于視頻格式本身和目標(biāo)應(yīng)用。例如,H.264解碼使用的參考幀最多達(dá)16個(gè),但H.263解碼僅僅需要使用1個(gè)。此外,不同的格式在處理De-blocking或者疊加平滑濾波的時(shí)候也需要使用大小不同的臨時(shí)內(nèi)存。

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

            其中,碼流緩沖區(qū)的處理很關(guān)鍵,對(duì)于每一個(gè)進(jìn)程,系統(tǒng)必須分配一個(gè)獨(dú)立的碼流緩沖區(qū)。外部碼流緩沖區(qū)將組成一個(gè)緩沖區(qū)環(huán)(ring buffer)。BIT處理器將在獲得緩沖區(qū)環(huán)的起始地址后自動(dòng)進(jìn)行循環(huán)操作。

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

            在諸如1080i/p高清解碼的應(yīng)用下,VPU所要求的內(nèi)存帶寬很高,而現(xiàn)在的操作系統(tǒng)多為多任務(wù)操作系統(tǒng),因此內(nèi)存帶寬不足的問題就很可能發(fā)生,這將導(dǎo)致播放不流暢甚至錯(cuò)誤解碼的情況發(fā)生。因此必須仔細(xì)規(guī)劃系統(tǒng)帶寬的使用。

            本文小結(jié)

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



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();