消費(fèi)者對他們的多媒體設(shè)備的期望越來越高,這迫使應(yīng)用程序開發(fā)人員跟上。幸運(yùn)的是,帶有標(biāo)準(zhǔn)組件的中間件框架正在出現(xiàn)以幫助設(shè)計(jì)人員。Fakhir 介紹了 OpenMAX 多媒體框架并說明了它如何改變多媒體設(shè)備的開發(fā)。
一個漸進(jìn)但革命性的變化正在改變當(dāng)今軟件應(yīng)用程序中使用多媒體的方式。不久前,大多數(shù)多媒體供應(yīng)商都有自己的實(shí)施方案。代碼互操作性和可移植性通常不是主要要求。但現(xiàn)在,隨著硬件越來越強(qiáng)大,終端用戶的需求越來越大,多媒體領(lǐng)域已經(jīng)向各個方向擴(kuò)展。
這種擴(kuò)展現(xiàn)在已經(jīng)達(dá)到了單個供應(yīng)商無法滿足所有要求的程度。加速硬件、編解碼器、容器格式、網(wǎng)絡(luò)流媒體和其他高度專業(yè)化的子域已經(jīng)出現(xiàn)。這種增長引發(fā)了人們感知多媒體服務(wù)方式的重大轉(zhuǎn)變。
從服務(wù)到框架
為了理解這種轉(zhuǎn)變,開發(fā)人員必須檢查傳統(tǒng)的多媒體庫。這些庫通常具有靜態(tài)結(jié)構(gòu)并提供一組固定的服務(wù)。所提供的服務(wù)是確定性的,例如“播放 WAV 文件”或“播放 MP3 文件”。API 本身是特定于供應(yīng)商的,為一個多媒體庫編寫的應(yīng)用程序通常不能移植到另一個。庫實(shí)現(xiàn)保持不透明,限制了自定義或擴(kuò)展的選項(xiàng)。
為了滿足不斷擴(kuò)展的多媒體領(lǐng)域不斷增長的需求,軟件供應(yīng)商已將他們的重點(diǎn)轉(zhuǎn)移到多媒體框架上,如圖 1 所示。框架是來自不同來源的軟件的異構(gòu)混合物。多媒體框架的關(guān)鍵特性是一個靈活和可擴(kuò)展的架構(gòu),它允許框架提供的服務(wù)隨著行業(yè)不斷變化的需求而發(fā)展。
圖1
多媒體框架的靈活性是通過利用組件的概念來實(shí)現(xiàn)的。組件就像簡單的構(gòu)建塊一樣執(zhí)行,它們組合在一起形成更復(fù)雜的系統(tǒng)??蚣?API 不提供對特定服務(wù)的訪問,而是允許開發(fā)人員根據(jù)設(shè)計(jì)要求組裝不同的組件。該框架獨(dú)立于這些組件實(shí)際執(zhí)行的操作以及它們的執(zhí)行方式。
為什么框架范式在多媒體上運(yùn)行良好?答案在于多媒體處理的本質(zhì)。多媒體處理本質(zhì)上涉及通過不同階段的線性數(shù)據(jù)流。每個階段都有明確的定義,并且在邏輯上獨(dú)立于其他階段。因此,以管道形式線性排列的組件自然適合多媒體。圖 2 顯示了音頻播放的示例管道。多媒體數(shù)據(jù)從一端流入,并在從另一端離開管道時由不同的組件處理。
圖 2
多媒體框架優(yōu)勢
沒有例子就很難實(shí)現(xiàn)這個概念的力量??蚣芡ǔ0S富的組件庫。表 1 對四種類型的組件進(jìn)行了分類。框架用戶通常會從表格的每一列中選擇一個組件,并將生成的四個組件組成一個管道。很容易看出,使用這些示例組件可以進(jìn)行多種配置。例如,MP4 解復(fù)用器、MPEG4 解碼器、視頻縮放和視頻輸出組件可以連接在一起以顯示視頻。為該視頻添加對字幕的支持就像將字幕組件添加到管道一樣簡單。
框架的一個重要特征是每個組件都與其他組件松散耦合,因此易于替換。例如,可以用硬件加速的視頻解碼器代替標(biāo)準(zhǔn)視頻解碼器。增強(qiáng)現(xiàn)有應(yīng)用程序被簡化,因?yàn)橛脩糁恍杼砑踊蛱鎿Q現(xiàn)有組件具有更多增強(qiáng)版本。
標(biāo)準(zhǔn)化確?;ゲ僮餍?/p>
每個組件的內(nèi)部邏輯都封裝在標(biāo)準(zhǔn)組件定義中。這種標(biāo)準(zhǔn)化和前面提到的松散耦合提供了一個很好的平臺來確保不同軟件供應(yīng)商編寫的組件之間的互操作性。幾個軟件供應(yīng)商可能會為一個框架做出貢獻(xiàn),他們的所有組件都可以無縫地配合和協(xié)同工作??蚣芤部捎米鬈浖晒ぞ?。
當(dāng)今使用的更流行的多媒體框架通常依賴于平臺。示例包括用于 MS Windows 的 DirectX 和用于 Linux 的 GStreamer。但是標(biāo)準(zhǔn)化已經(jīng)提高了一個檔次。Khronos 等跨行業(yè)組織已經(jīng)對框架定義本身進(jìn)行了標(biāo)準(zhǔn)化。一個中立組織的開放、免版稅框架定義鼓勵了軟件供應(yīng)商之間的合作。Khronos 定義的多媒體框架稱為 OpenMAX (www.khronos.org/openmax/)。盡管這是一個新標(biāo)準(zhǔn),但已有多家公司采用了它。
OpenMAX 標(biāo)準(zhǔn)由三個級別組成,如圖 3 所示。到目前為止所討論的內(nèi)容對應(yīng)于定義基于組件的框架的 OpenMAX 集成級別 (IL)。IL 級別之上和之下的其他兩個級別解決了框架同樣重要的方面:實(shí)現(xiàn)和使用。
圖 3
為多媒體框架編寫組件
組件庫是多媒體框架中最大的功能區(qū)域,涉及軟件和芯片供應(yīng)商的最大努力。供應(yīng)商通常專注于某些服務(wù);例如,軟件供應(yīng)商可能專門提供 MPEG4 等視頻編解碼器。一旦嵌入到框架的組件中,這個特定的編解碼器就可以成為多媒體框架的一部分。供應(yīng)商將服務(wù)封裝到組件中,使其標(biāo)準(zhǔn)化并易于插入現(xiàn)有軟件,從而為廣泛使用其產(chǎn)品開辟了機(jī)會。
多媒體框架的另一個顯著特征是它允許將第三方服務(wù)集成到組件中很容易??蚣転榇四康奶峁┝颂厥獾墓ぞ吆图夹g(shù)。
鑒于這些輔助工具通常因框架而異,本次討論將集中在 OpenMAX 框架相關(guān)的功能,特別是 Mentor Graphics 的 Nucleus Multimedia Framework 實(shí)現(xiàn)。
多媒體數(shù)據(jù)處理對時間非常關(guān)鍵。數(shù)據(jù)必須實(shí)時壓縮、解壓縮或轉(zhuǎn)換為其他格式。這種數(shù)據(jù)處理采用必須高度優(yōu)化的計(jì)算密集型算法。OpenMAX Development Level (DL) 解決了這一重要的優(yōu)化領(lǐng)域,為大量與多媒體處理相關(guān)的常用算法提供了一個 API。
服務(wù)提供商不必?fù)?dān)心實(shí)施和優(yōu)化這些算法;他們只是在他們的軟件中使用 OpenMAX DL API。然后,這些 API 的實(shí)際實(shí)現(xiàn)由此類系統(tǒng)中的另一個利益相關(guān)者(即硅供應(yīng)商)提供。硅供應(yīng)商實(shí)施所有 OpenMAX DL 定義的算法,這些算法專門針對供應(yīng)商的硬件平臺進(jìn)行了優(yōu)化。這通過允許他們的軟件在硬件上有效運(yùn)行而使軟件供應(yīng)商受益,并通過確保為其平臺編寫的軟件充分利用硬件來幫助硅供應(yīng)商。
框架組件執(zhí)行許多常見操作,例如管理緩沖區(qū)、維護(hù)組件狀態(tài)和保護(hù)數(shù)據(jù)。一些框架通過允許組件層次結(jié)構(gòu)來簡化組件編寫者的任務(wù)。一個通用基礎(chǔ)組件提供所有通用功能以及可以從該基礎(chǔ)組件派生的其他組件,如圖 4 所示。使用面向?qū)ο蟮脑O(shè)計(jì)原則,派生組件繼承基礎(chǔ)組件的屬性,最大限度地減少冗余并幫助組件作家只專注于他們的特定服務(wù)。
圖 4
因?yàn)榭蚣艹洚?dāng)來自不同來源的軟件的異構(gòu)混合,組件編寫者可能并不總是熟悉另一個組件。這就是框架提供的其他調(diào)試和開發(fā)工具發(fā)揮作用的地方。調(diào)試工具至關(guān)重要,因?yàn)樗鼈冇兄诳梢暬嗝襟w管道并定位問題。圖 5 表示使用 Nucleus Multimedia Framework 調(diào)試器的實(shí)時組件管道。
圖 5
在軟件應(yīng)用程序中使用多媒體框架
盡管基于組件的框架具有優(yōu)勢,但這些類型的 API 并不容易被應(yīng)用程序開發(fā)人員接受,他們習(xí)慣于簡單的 API,例如“播放 MP3 文件”。必須創(chuàng)建組件,將它們連接在一起,然后使用它們??ì 無論多么簡單的操作??ì 都沒有提供足夠的抽象級別來證明它們的使用是合理的。
OpenMAX 應(yīng)用層 (AL) 旨在解決這些問題,提供易于使用的 API,隱藏了底層框架的機(jī)制。這也使用戶應(yīng)用程序更具可移植性,因?yàn)樗鼈兪褂每缢杏布脚_一致的開放標(biāo)準(zhǔn),而不是依賴專有 API。
最近,一些框架已經(jīng)轉(zhuǎn)移到更高的抽象層次。開發(fā)人員不提供編程語言 API,而是通過在簡單的 XML 中定義應(yīng)用程序來創(chuàng)建應(yīng)用程序。這種技術(shù)在用戶界面應(yīng)用程序中流行起來。在如此高的水平上集成多媒體框架使多媒體能夠以迄今為止不可能的方式使用。
簡化集成的 API
嵌入式行業(yè)正在加速努力建立免版稅的 API,以支持媒體創(chuàng)作并促進(jìn)在各種平臺和設(shè)備上的采用。Khronos Group 密切參與了這些努力,其媒體庫可移植性的 OpenMAX 標(biāo)準(zhǔn)正在獲得強(qiáng)大的動力。
OpenMAX 跨平臺 API 支持跨多個操作系統(tǒng)和硅平臺開發(fā)、集成和編程來自不同軟件供應(yīng)商的加速多媒體組件。通過這種方法,嵌入式設(shè)備集成商可以利用來自任何軟件供應(yīng)商的庫和編解碼器組件,只要它們基于 OpenMAX API 構(gòu)建,同時實(shí)現(xiàn)新硅平臺的全部加速潛力。結(jié)果將是具有最先進(jìn)多媒體功能的設(shè)備以硅片速率交付給消費(fèi)者。
審核編輯:郭婷
-
解碼器
+關(guān)注
關(guān)注
9文章
1144瀏覽量
40827 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6859瀏覽量
123501 -
API
+關(guān)注
關(guān)注
2文章
1507瀏覽量
62215
發(fā)布評論請先 登錄
相關(guān)推薦
評論