如何通過開源API在DSP上進行視頻處理_第1頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、如何通過開源api在dsp上進行視頻處理數(shù)字信號處理器()具有精彩的多媒體性能。普通而言,它們運行編所需的周期惟獨通用處理器(gpp)內(nèi)核的40%到50%。dsp還能提供比asic大得多的靈便性和可重配置性。但迄今為止,要在數(shù)字視頻應(yīng)用中運用dsp,編程人員還不得不花費較多時光精力去學(xué)習(xí)相關(guān)專用語言。不過,隨著應(yīng)用編程接口(api)的浮現(xiàn),已不再需要學(xué)習(xí)這些專用dsp語言了。在運行于gpp上的應(yīng)用中,api可以輕輕松松地充分發(fā)揮dsp的優(yōu)勢。開源多媒體構(gòu)架在gpp上普通運行在操作系統(tǒng)下,是這些api的抱負(fù)對象。利用api可以卸載視頻編解碼器的計算負(fù)荷,大大減小dsp編程的復(fù)雜性。這種計劃只要求

2、編程人員具備基本的dsp學(xué)問即可,無需編寫代碼來整合dsp功能與那些運行在gpp上的功能。這種優(yōu)勢,加上利用免費開源插件和構(gòu)架提供的許多功能的能力,可以大幅度縮短新視頻產(chǎn)品的上市時光。硬件平臺的挑選在挑選運行編解碼器(壓縮傳輸或存儲的數(shù)字流,再解壓以供查看或編輯)的硬件平臺時,開發(fā)人員有幾種可選計劃。asic是特地為數(shù)字視頻應(yīng)用而設(shè)計的,能在這類應(yīng)用中提供高性能和低功耗。它的缺點流片(nre)費用很高。此外,asic若有變幻,比如改動以適應(yīng)編解碼標(biāo)準(zhǔn),相關(guān)實現(xiàn)費用十分昂揚。另一方面,gpp內(nèi)核的流片費用相對較低,針對變動舉行重編程相當(dāng)簡單。但因為它們在執(zhí)行計算密集的信號處理應(yīng)用時效率低下,故在

3、應(yīng)用于數(shù)字視頻處理時性能較低。例如,gpp通過一系列移位和加法運算來實現(xiàn)乘法運算,而每一個移位和加法運算需要一個以上的時鐘周期。dsp具有集上述二者之優(yōu)勢的潛力。不同于gpp,dsp是為數(shù)字視頻應(yīng)用中計算密集的信號處理應(yīng)用而優(yōu)化的。它具有單周期乘法器或乘法累加單元,能夠加快編解碼算法的執(zhí)行速度。更高性能的dsp還包含有幾個可以并行操作的自立執(zhí)行單元,這使得它們能夠每條命令執(zhí)行好幾個操作。此外,dsp還提供徹低的軟件編程能力,包括現(xiàn)場重編程能力。這就讓用戶可以先推出mpeg-2產(chǎn)品,以后再升級為h.264視頻編解碼器。dsp在數(shù)字視頻應(yīng)用中的主要局限是它們通常需要采納專用語言來編程,而認(rèn)識dsp

4、的編程人員遠(yuǎn)沒有認(rèn)識流行的gpp架構(gòu)的來得多。圖1:只含解碼器的范例中的多媒體框架職責(zé)和數(shù)據(jù)流程組件集成的挑戰(zhàn)數(shù)字視頻系統(tǒng)的開發(fā)人員還瀕臨著集成的挑戰(zhàn)。數(shù)字視頻系統(tǒng)包含了多個、解碼器、編解碼器、多種算法及其它軟件,這些組件都必需集成到一個可執(zhí)行映象(image)中,然后才干在系統(tǒng)上運行內(nèi)容。集成全部這些組件并確保其運行協(xié)調(diào)是一件很困難的任務(wù)。不同的系統(tǒng)可能需要迥然不同的視頻、圖像、語音、音頻和其他多媒體模塊。手工集成每一個軟件模塊或算法的開發(fā)人員就被增值功能性(比如增強創(chuàng)新性功能)搞得頭痛不已。許多數(shù)字視頻開發(fā)人員都開頭實行開源途徑來構(gòu)建軟件。一種常用的計劃是從開源獲得軟件的重要部分,而在可用

5、性和硬件集成方面充分發(fā)揮內(nèi)部專業(yè)能力。開發(fā)人員經(jīng)常參加開源技術(shù)開發(fā)項目,以滿足特定要求并把內(nèi)部開發(fā)的代碼和開源代碼集成在一起來創(chuàng)建新產(chǎn)品。新的api為了解決上述問題,(ti)開發(fā)出了一款api,該產(chǎn)品能夠充分發(fā)揮開源多媒體框架中的gstreamer等dsp的優(yōu)勢。這款api使多媒體編程人員可以利用認(rèn)識環(huán)境中的dsp編解碼引擎,把數(shù)字視頻編程人員從復(fù)雜的dsp編程中解放出來,讓/linux開發(fā)人員得以輕松利用dsp編解碼器的加速功能,無需具備相關(guān)硬件學(xué)問。該接口還能自動高效地在arm和dsp間舉行工作劃分,從而不再需要為運行在dsp上和運行在gpp內(nèi)核上的功能間的協(xié)調(diào)而編寫代碼。該接口已由ti根

6、據(jù)開源社群標(biāo)準(zhǔn)以gstreamer插件的形式開發(fā)勝利。圖2:gstreamer內(nèi)數(shù)據(jù)通過gstbuffer結(jié)構(gòu)舉行表征的辦法與其它幾種操作系統(tǒng)及其相應(yīng)多媒體框架所實行的辦法相全都。gstreamer是一種媒體處理庫,提供了某種轉(zhuǎn)換過程的抽象模型,其通過管道的概念舉行工作,媒體在其中根據(jù)已定義的方向從輸入流到輸出。gstreamer能夠以一種簡化編程過程的方式來提取不同媒體的操作行為,在數(shù)字視頻編程社群中廣受歡迎。通過gstreamer,能夠編寫出一種能夠支持多種不同格式和網(wǎng)絡(luò)的通用視頻或音樂播放器。而且大部分操作由插件執(zhí)行,并非gstreamer內(nèi)核。gstreamer的基本功能性主要與注冊和

7、加載插件有關(guān),并可提供基類,這些基類定義了gstreamer類的基本功能。gstreamer過濾器源過濾器負(fù)責(zé)從從數(shù)據(jù)源獵取原始的多媒體數(shù)據(jù)以供處理,這里的數(shù)據(jù)源可以是硬盤文件(比如文件源過濾器),或cd或dvd光盤,也可以是電視接收卡或網(wǎng)絡(luò)這種“實時”源。某些源過濾器只是容易地把原始數(shù)據(jù)傳遞到剖析器(parser)或分別過濾器(splitter filter),同時其它源過濾器也執(zhí)行自己的剖析步驟。變換過濾器 (transform filter)接收原始數(shù)據(jù)或部分經(jīng)過處理的數(shù)據(jù),進一步處理后再傳遞到下一級過濾器。變換過濾器有多種類型,剖析器即是一例。這種過濾器把原始字節(jié)流分別為多個樣本或幀、

8、壓縮器或解壓縮器,以及格式轉(zhuǎn)換器。展現(xiàn)過濾器(renderer filter)普通接收徹低處理過的數(shù)據(jù),并在系統(tǒng)上或通過揚聲器或某些外部設(shè)備舉行播放。這一類過濾器還包括“file writer (文件創(chuàng)建器)”過濾器和網(wǎng)絡(luò)傳輸過濾器,前者可以把數(shù)據(jù)保存到硬盤或其它持久穩(wěn)固的存儲設(shè)備上。數(shù)據(jù)處理在plug-in_chain() 或 plug-in_loop()函數(shù)中舉行。該函數(shù)可能像元件縮放那么容易,也可能像真切的mp3解碼器那么復(fù)雜。數(shù)據(jù)被處理后,利用一個gst_pad_push()函數(shù)從gstreamer元件(element)的源襯墊(pad)發(fā)送出去,由此把數(shù)據(jù)傳遞到管道鏈的下一個元件。g

9、streamer緩沖器在gstreamer中,緩沖器是數(shù)據(jù)傳輸?shù)幕締卧?。gstbuffer(實例)類提供了把一個存儲區(qū)定義為流媒體的一部分所必須的所有狀態(tài)。經(jīng)由gstbuffer結(jié)構(gòu),gstreame內(nèi)部的數(shù)據(jù)表示遵循幾種其它操作系統(tǒng)及其各自的多媒體構(gòu)架所采納的辦法(比如,microsoft directshow中的媒體采樣概念)。此外,還支持次級緩沖器,允許緩沖器的一小部分成為它自己的緩沖器,利用這種處理機制確保了存儲空間不會過早釋放。圖3:復(fù)用已分配在驅(qū)動器上且在物理上是延續(xù)的緩沖的一種有效途徑。緩沖器通常利用gst_buffer_new()來創(chuàng)建。創(chuàng)建好一個緩沖器之后,普通是為它分配存

10、儲器,設(shè)置緩沖器數(shù)據(jù)的大小。下面給出了一個緩沖器創(chuàng)建的例子,該緩沖器能夠保存具有給定寬度、高度和每像素位的視頻幀。緩沖器創(chuàng)建基于davinci技術(shù)的dm644x器件上arm926的mmu(存儲器管理單元)具有虛擬/物理尋址能力。然而,c64x+dsp內(nèi)核只能夠處理物理地址。因此,用于dsp處理的輸入和輸出緩沖器必需駐存在物理上延續(xù)的存儲器中。虛擬到物理地址的轉(zhuǎn)換由編解碼引擎處理。通過復(fù)用(指針指向)某些由驅(qū)動器分配的緩沖器,可獲得物理上延續(xù)的存儲器,這里用法了linux中的一些技術(shù),比如dma_alloc_coherent(),來在內(nèi)核空間中分配這類存儲器。由ti開發(fā)的庫/內(nèi)核模塊cmem,允

11、許從用戶空間應(yīng)用來分配物理上延續(xù)的存儲器。例如,我們利用前面提到的cmem驅(qū)動器來分配物理上延續(xù)的“輸出”緩沖器。編解碼引擎對幀舉行解碼,并把解碼后的幀放在輸出緩沖器中。接下來,指向輸出緩沖器的指針被傳遞給fbvideosink(通過 gstbuffer)。這個videosink必需把解碼后的數(shù)據(jù)memcpy(復(fù)制)到幀緩存中,然后才干顯示。因為memcpy操作是一種成本很高的gpp用法,這種辦法使得arm 和ddr接口的負(fù)載很重,因而增強了功耗,且效率極低。這種技術(shù)對十分小的緩沖器是可行的,但在開發(fā)人員用法d1(和更高)大小的緩沖器時,將開頭降低系統(tǒng)性能。一種更有效的計劃是復(fù)用已經(jīng)驅(qū)動器分配

12、了的物理延續(xù)緩沖器,并在編解碼器引擎和videosink插件之間把指向這些緩沖器的指針往返傳遞。幸運的是,gstreamer提供了一個便于這類交互作用的api。這個api替代計劃利用gst_buffer_new()來創(chuàng)建新的緩沖器。當(dāng)元件獲知它將在哪一個源襯墊上推進數(shù)據(jù)時,就對gst_pad_alloc_buffer()函數(shù)舉行調(diào)用。這允許對應(yīng)的元件為調(diào)用元件的工作提供特別的“硬件”緩沖器,故而削減了系統(tǒng)所需的memcpys數(shù)量。視頻解碼器插件(變換過濾器,通過編解碼器引擎api能夠充分利用dsp的優(yōu)勢)將把從視頻展現(xiàn)過濾器獲得的緩沖器用作視頻解碼器和執(zhí)行解碼的輸出緩沖器。一旦解碼完成,這個輸

13、出緩沖器將被推進(即指針被傳遞)給視頻展現(xiàn)過濾器插件。因為解碼后的圖像已經(jīng)存在于視頻驅(qū)動存儲器中,就不再需要memcpy了,在幀被顯示時,視頻展現(xiàn)過濾器將只需把目前的顯示緩沖器轉(zhuǎn)換為這種特定的緩沖器就可以了。av同步處理播放期間的音頻/視頻(av)同步處理普通需要三類決策:一是重復(fù)幀的決策。普通在媒體流的幀的顯示時光比幀間隔時光更大時采納。二是顯示幀的決策。普通在媒體流的幀的顯示時光在最小和最大閾值之間時采納。三是跳幀決策。普通在幀的顯示時光落后顯示時光起碼兩個幀時采納。這樣,跳過當(dāng)前幀,處理下一個幀,以期彌補下一個幀間隔。持續(xù)這樣做直到下一個幀被顯示或不再剩有幀可供比較。另外,管道中的全部元

14、件都用法共同的時鐘,以便于這些活動的舉行。幸運的是,全部這些決策都由gstreamer內(nèi)核庫中的音頻視頻sink基類來完成。這樣一來,av同步的復(fù)雜性大部分都在用戶那里被轉(zhuǎn)移了。以插件形式開發(fā)的接口ti開發(fā)了一種gstreamer變換過濾器插件,它利用dsp來舉行視頻解碼,運行于arm上,用法linux操作系統(tǒng)。ti還提供有l(wèi)inux外設(shè)驅(qū)動器,在驅(qū)動器接口和編解碼引擎api方面符合標(biāo)準(zhǔn)開源機構(gòu)的要求,后者注重了dsp編程的相當(dāng)大部分的復(fù)雜性。由硬件創(chuàng)造商提供的api,事先已針對硬件實現(xiàn)做了優(yōu)化。假如改用新的硬件,無需轉(zhuǎn)變應(yīng)用代碼就可挺直替以新的驅(qū)動器。這種計劃大幅度降低了視頻開發(fā)的成本和交付

15、周期。硬件的計算資源以一種最優(yōu)方式被執(zhí)行,無需任何匯編編程。其中包括無數(shù)復(fù)雜的操作,比如dsp資源的最佳利用,和基于硬件的加速引擎;鏈接模式(chained mode)下增加型挺直存儲器拜訪(enhanced direct memory access)外設(shè)的用法,以提高數(shù)據(jù)傳輸效率;以及中斷模式和tasklet模式的數(shù)據(jù)包處理,以靈便滿足不同應(yīng)用的要求。因為gstreamer是一種十分流行、廣為人知的架構(gòu),它已成為數(shù)字視頻開發(fā)的一種標(biāo)準(zhǔn),在這種環(huán)境中充分利用 dsp優(yōu)勢的能力使得編程人員不再需要學(xué)習(xí)專用dsp編程語言。該計劃還易于把dsp的功能和gpp內(nèi)核上運行的典型應(yīng)用的一些其他要求集成在一起。利用其他gstreamer插件,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論