新聞中心

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

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

作者: 時(shí)間:2011-04-20 來(lái)源:網(wǎng)絡(luò) 收藏
數(shù)字視頻處理始終是目前多媒體設(shè)備應(yīng)用中的熱點(diǎn)問(wèn)題。數(shù)字視頻的標(biāo)準(zhǔn)繁多,并且在還持續(xù)地發(fā)展變化之中,因此,系統(tǒng)設(shè)計(jì)必須能夠盡可能支持更廣泛的視頻格式。傳統(tǒng)的選擇是采用DSP進(jìn)行軟件編解碼,但隨著1080i/p的高清視頻應(yīng)用的迅速普及,其所要求的運(yùn)算量也在急劇增長(zhǎng),基于軟件的處理方式逐漸開(kāi)始面臨極大的挑戰(zhàn)。而基于硬件加速器的方案優(yōu)勢(shì)則開(kāi)始顯現(xiàn),這種方式可以大大減輕處理器負(fù)載,并滿足移動(dòng)設(shè)備苛刻的低功耗要求。目前,越來(lái)越多的系統(tǒng)方案開(kāi)始采用基于全硬件視頻處理引擎(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)勢(shì)在于可以在一定程度上提供可編程性,以及編解碼流程的更新。原因就在于其內(nèi)置有一個(gè)16位的小型可編程DSP,這個(gè)名為BIT的處理器可以通過(guò)執(zhí)行不同的固件來(lái)靈活控制編解碼的過(guò)程以及和CPU的接口 交互。

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

  MX53的VPU結(jié)構(gòu)如圖1所示,它通過(guò)標(biāo)準(zhǔn)的AXI/APB與ARM處理器相連,從而可以訪問(wèn)片內(nèi)緩存來(lá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角度來(lái)看,VPU是高度自主控制的,CPU所需要做的僅僅是與VPU相關(guān)的進(jìn)程管理工作。需要注意的是這里的進(jìn)程并非指通常意義上的系統(tǒng)進(jìn)程,而是VPU內(nèi)部專(zhuān)用的進(jìn)程。

  VPU可以同時(shí)處理多達(dá)4路不同格式的視頻,但處理流程都是相同的。都是從創(chuàng)建進(jìn)程開(kāi)始(系統(tǒng)負(fù)責(zé)創(chuàng)建和設(shè)置一個(gè)專(zhuān)用進(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í)行沒(méi)有優(yōu)先級(jí)之分。在創(chuàng)建了所有的進(jìn)程之后,CPU將啟動(dòng)BIT處理器執(zhí)行這些進(jìn)程,BIT處理器同樣是利用類(lèi)似時(shí)間片分割的機(jī)制來(lái)調(diào)度一個(gè)進(jìn)程。

  我們跳出VPU,從整個(gè)系統(tǒng)的角度來(lái)看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)存資源并銷(xiāo)毀進(jìn)程。

  

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

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

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

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

  本文小結(jié)

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



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉