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