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