
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、如何通過開源api在dsp上進行視頻處理數字信號處理器()具有精彩的多媒體性能。普通而言,它們運行編所需的周期惟獨通用處理器(gpp)內核的40%到50%。dsp還能提供比asic大得多的靈便性和可重配置性。但迄今為止,要在數字視頻應用中運用dsp,編程人員還不得不花費較多時光精力去學習相關專用語言。不過,隨著應用編程接口(api)的浮現,已不再需要學習這些專用dsp語言了。在運行于gpp上的應用中,api可以輕輕松松地充分發揮dsp的優勢。開源多媒體構架在gpp上普通運行在操作系統下,是這些api的抱負對象。利用api可以卸載視頻編解碼器的計算負荷,大大減小dsp編程的復雜性。這種計劃只要求
2、編程人員具備基本的dsp學問即可,無需編寫代碼來整合dsp功能與那些運行在gpp上的功能。這種優勢,加上利用免費開源插件和構架提供的許多功能的能力,可以大幅度縮短新視頻產品的上市時光。硬件平臺的挑選在挑選運行編解碼器(壓縮傳輸或存儲的數字流,再解壓以供查看或編輯)的硬件平臺時,開發人員有幾種可選計劃。asic是特地為數字視頻應用而設計的,能在這類應用中提供高性能和低功耗。它的缺點流片(nre)費用很高。此外,asic若有變幻,比如改動以適應編解碼標準,相關實現費用十分昂揚。另一方面,gpp內核的流片費用相對較低,針對變動舉行重編程相當簡單。但因為它們在執行計算密集的信號處理應用時效率低下,故在
3、應用于數字視頻處理時性能較低。例如,gpp通過一系列移位和加法運算來實現乘法運算,而每一個移位和加法運算需要一個以上的時鐘周期。dsp具有集上述二者之優勢的潛力。不同于gpp,dsp是為數字視頻應用中計算密集的信號處理應用而優化的。它具有單周期乘法器或乘法累加單元,能夠加快編解碼算法的執行速度。更高性能的dsp還包含有幾個可以并行操作的自立執行單元,這使得它們能夠每條命令執行好幾個操作。此外,dsp還提供徹低的軟件編程能力,包括現場重編程能力。這就讓用戶可以先推出mpeg-2產品,以后再升級為h.264視頻編解碼器。dsp在數字視頻應用中的主要局限是它們通常需要采納專用語言來編程,而認識dsp
4、的編程人員遠沒有認識流行的gpp架構的來得多。圖1:只含解碼器的范例中的多媒體框架職責和數據流程組件集成的挑戰數字視頻系統的開發人員還瀕臨著集成的挑戰。數字視頻系統包含了多個、解碼器、編解碼器、多種算法及其它軟件,這些組件都必需集成到一個可執行映象(image)中,然后才干在系統上運行內容。集成全部這些組件并確保其運行協調是一件很困難的任務。不同的系統可能需要迥然不同的視頻、圖像、語音、音頻和其他多媒體模塊。手工集成每一個軟件模塊或算法的開發人員就被增值功能性(比如增強創新性功能)搞得頭痛不已。許多數字視頻開發人員都開頭實行開源途徑來構建軟件。一種常用的計劃是從開源獲得軟件的重要部分,而在可用
5、性和硬件集成方面充分發揮內部專業能力。開發人員經常參加開源技術開發項目,以滿足特定要求并把內部開發的代碼和開源代碼集成在一起來創建新產品。新的api為了解決上述問題,(ti)開發出了一款api,該產品能夠充分發揮開源多媒體框架中的gstreamer等dsp的優勢。這款api使多媒體編程人員可以利用認識環境中的dsp編解碼引擎,把數字視頻編程人員從復雜的dsp編程中解放出來,讓/linux開發人員得以輕松利用dsp編解碼器的加速功能,無需具備相關硬件學問。該接口還能自動高效地在arm和dsp間舉行工作劃分,從而不再需要為運行在dsp上和運行在gpp內核上的功能間的協調而編寫代碼。該接口已由ti根
6、據開源社群標準以gstreamer插件的形式開發勝利。圖2:gstreamer內數據通過gstbuffer結構舉行表征的辦法與其它幾種操作系統及其相應多媒體框架所實行的辦法相全都。gstreamer是一種媒體處理庫,提供了某種轉換過程的抽象模型,其通過管道的概念舉行工作,媒體在其中根據已定義的方向從輸入流到輸出。gstreamer能夠以一種簡化編程過程的方式來提取不同媒體的操作行為,在數字視頻編程社群中廣受歡迎。通過gstreamer,能夠編寫出一種能夠支持多種不同格式和網絡的通用視頻或音樂播放器。而且大部分操作由插件執行,并非gstreamer內核。gstreamer的基本功能性主要與注冊和
7、加載插件有關,并可提供基類,這些基類定義了gstreamer類的基本功能。gstreamer過濾器源過濾器負責從從數據源獵取原始的多媒體數據以供處理,這里的數據源可以是硬盤文件(比如文件源過濾器),或cd或dvd光盤,也可以是電視接收卡或網絡這種“實時”源。某些源過濾器只是容易地把原始數據傳遞到剖析器(parser)或分別過濾器(splitter filter),同時其它源過濾器也執行自己的剖析步驟。變換過濾器 (transform filter)接收原始數據或部分經過處理的數據,進一步處理后再傳遞到下一級過濾器。變換過濾器有多種類型,剖析器即是一例。這種過濾器把原始字節流分別為多個樣本或幀、
8、壓縮器或解壓縮器,以及格式轉換器。展現過濾器(renderer filter)普通接收徹低處理過的數據,并在系統上或通過揚聲器或某些外部設備舉行播放。這一類過濾器還包括“file writer (文件創建器)”過濾器和網絡傳輸過濾器,前者可以把數據保存到硬盤或其它持久穩固的存儲設備上。數據處理在plug-in_chain() 或 plug-in_loop()函數中舉行。該函數可能像元件縮放那么容易,也可能像真切的mp3解碼器那么復雜。數據被處理后,利用一個gst_pad_push()函數從gstreamer元件(element)的源襯墊(pad)發送出去,由此把數據傳遞到管道鏈的下一個元件。g
9、streamer緩沖器在gstreamer中,緩沖器是數據傳輸的基本單元。gstbuffer(實例)類提供了把一個存儲區定義為流媒體的一部分所必須的所有狀態。經由gstbuffer結構,gstreame內部的數據表示遵循幾種其它操作系統及其各自的多媒體構架所采納的辦法(比如,microsoft directshow中的媒體采樣概念)。此外,還支持次級緩沖器,允許緩沖器的一小部分成為它自己的緩沖器,利用這種處理機制確保了存儲空間不會過早釋放。圖3:復用已分配在驅動器上且在物理上是延續的緩沖的一種有效途徑。緩沖器通常利用gst_buffer_new()來創建。創建好一個緩沖器之后,普通是為它分配存
10、儲器,設置緩沖器數據的大小。下面給出了一個緩沖器創建的例子,該緩沖器能夠保存具有給定寬度、高度和每像素位的視頻幀。緩沖器創建基于davinci技術的dm644x器件上arm926的mmu(存儲器管理單元)具有虛擬/物理尋址能力。然而,c64x+dsp內核只能夠處理物理地址。因此,用于dsp處理的輸入和輸出緩沖器必需駐存在物理上延續的存儲器中。虛擬到物理地址的轉換由編解碼引擎處理。通過復用(指針指向)某些由驅動器分配的緩沖器,可獲得物理上延續的存儲器,這里用法了linux中的一些技術,比如dma_alloc_coherent(),來在內核空間中分配這類存儲器。由ti開發的庫/內核模塊cmem,允
11、許從用戶空間應用來分配物理上延續的存儲器。例如,我們利用前面提到的cmem驅動器來分配物理上延續的“輸出”緩沖器。編解碼引擎對幀舉行解碼,并把解碼后的幀放在輸出緩沖器中。接下來,指向輸出緩沖器的指針被傳遞給fbvideosink(通過 gstbuffer)。這個videosink必需把解碼后的數據memcpy(復制)到幀緩存中,然后才干顯示。因為memcpy操作是一種成本很高的gpp用法,這種辦法使得arm 和ddr接口的負載很重,因而增強了功耗,且效率極低。這種技術對十分小的緩沖器是可行的,但在開發人員用法d1(和更高)大小的緩沖器時,將開頭降低系統性能。一種更有效的計劃是復用已經驅動器分配
12、了的物理延續緩沖器,并在編解碼器引擎和videosink插件之間把指向這些緩沖器的指針往返傳遞。幸運的是,gstreamer提供了一個便于這類交互作用的api。這個api替代計劃利用gst_buffer_new()來創建新的緩沖器。當元件獲知它將在哪一個源襯墊上推進數據時,就對gst_pad_alloc_buffer()函數舉行調用。這允許對應的元件為調用元件的工作提供特別的“硬件”緩沖器,故而削減了系統所需的memcpys數量。視頻解碼器插件(變換過濾器,通過編解碼器引擎api能夠充分利用dsp的優勢)將把從視頻展現過濾器獲得的緩沖器用作視頻解碼器和執行解碼的輸出緩沖器。一旦解碼完成,這個輸
13、出緩沖器將被推進(即指針被傳遞)給視頻展現過濾器插件。因為解碼后的圖像已經存在于視頻驅動存儲器中,就不再需要memcpy了,在幀被顯示時,視頻展現過濾器將只需把目前的顯示緩沖器轉換為這種特定的緩沖器就可以了。av同步處理播放期間的音頻/視頻(av)同步處理普通需要三類決策:一是重復幀的決策。普通在媒體流的幀的顯示時光比幀間隔時光更大時采納。二是顯示幀的決策。普通在媒體流的幀的顯示時光在最小和最大閾值之間時采納。三是跳幀決策。普通在幀的顯示時光落后顯示時光起碼兩個幀時采納。這樣,跳過當前幀,處理下一個幀,以期彌補下一個幀間隔。持續這樣做直到下一個幀被顯示或不再剩有幀可供比較。另外,管道中的全部元
14、件都用法共同的時鐘,以便于這些活動的舉行。幸運的是,全部這些決策都由gstreamer內核庫中的音頻視頻sink基類來完成。這樣一來,av同步的復雜性大部分都在用戶那里被轉移了。以插件形式開發的接口ti開發了一種gstreamer變換過濾器插件,它利用dsp來舉行視頻解碼,運行于arm上,用法linux操作系統。ti還提供有linux外設驅動器,在驅動器接口和編解碼引擎api方面符合標準開源機構的要求,后者注重了dsp編程的相當大部分的復雜性。由硬件創造商提供的api,事先已針對硬件實現做了優化。假如改用新的硬件,無需轉變應用代碼就可挺直替以新的驅動器。這種計劃大幅度降低了視頻開發的成本和交付
15、周期。硬件的計算資源以一種最優方式被執行,無需任何匯編編程。其中包括無數復雜的操作,比如dsp資源的最佳利用,和基于硬件的加速引擎;鏈接模式(chained mode)下增加型挺直存儲器拜訪(enhanced direct memory access)外設的用法,以提高數據傳輸效率;以及中斷模式和tasklet模式的數據包處理,以靈便滿足不同應用的要求。因為gstreamer是一種十分流行、廣為人知的架構,它已成為數字視頻開發的一種標準,在這種環境中充分利用 dsp優勢的能力使得編程人員不再需要學習專用dsp編程語言。該計劃還易于把dsp的功能和gpp內核上運行的典型應用的一些其他要求集成在一起。利用其他gstreamer插件,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物第十章浮力單元試卷 2024-2025學年人教版物理八年級下冊
- 2024年紡織品檢驗員考試注意事項試題及答案
- 土壤普查試題答案及解析
- 山東會計綜評試題及答案
- 社區建設考試試題及答案
- 必修四 測試題及答案
- 助理廣告師考試中廣告交流策略的深入分析試題及答案
- 廣告設計師廣告效果測評試題及答案
- 管理會計試題卷及答案
- 強化實踐國際商業美術設計師考試試題及答案
- 2024年研發部規劃
- 《冠心病》課件(完整版)
- 失業保險待遇申領表
- 銷售提成及職能部門員工利潤分紅方案
- 藥用植物學智慧樹知到答案2024年浙江中醫藥大學
- 評職稱業績合同協議書
- 廣東省佛山2022-2023學年外研版八年級下學期英語期末模擬試卷(二)
- 四年級《爺爺的爺爺從哪里來》閱讀測評題
- 2020-2024年安徽省初中學業水平考試中考英語試卷(5年真題+答案解析)
- 2024年福建省泉州市中考二模地理試題
- 2024年重慶八中中考數學一模試卷
評論
0/150
提交評論