專利名稱:創(chuàng)建用于計算設(shè)備的軟件組件的方法、裝置以及計算機(jī)程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施方式一般涉及計算設(shè)備。更特別地,實施方式涉及創(chuàng)建用于計算設(shè)備的軟件組件的方法、裝置和計算機(jī)程序。同樣,實施方式涉及使用所述方法、裝置或計算機(jī)程序創(chuàng)建的軟件組件。
背景技術(shù):
多媒體軟件應(yīng)用的流行趨勢已經(jīng)使它們用于一系列不同計算平臺。這這樣的結(jié)果是,出現(xiàn)了使多媒體應(yīng)用跨越多個不同計算設(shè)備平臺可移植的需要。OpenMAX標(biāo)準(zhǔn)提供用于開發(fā)多媒體應(yīng)用的軟件的API,所述多媒體應(yīng)用跨越多個不同計算設(shè)備平臺可移植。
發(fā)明內(nèi)容
在權(quán)利要求中列出了本發(fā)明實施例的各種方面。本發(fā)明的第一實施例提供一種方法,包括提供一個或多個軟件模塊的軟件框架, 所述軟件模塊可配置用于定義將使用所述框架產(chǎn)生的新多媒體軟件組件的至少一個功能, 所述至少一個功能包括對于新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。本發(fā)明的第二實施例提供一種方法,包括配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能, 所述至少一個功能包括對于所述組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分;以及根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有所述至少一個功能的新組件。在本發(fā)明的一個實施例中,所述功能包括對于新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能。在本發(fā)明的一個實施例中,所述功能包括除了對于所述新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能之外的至少一個功能。在本發(fā)明的一個實施例中,所述功能包括軟件組件的完整功能。在本發(fā)明的一個實施例中,通過有限狀態(tài)機(jī)來建模所述新組件的行為,并且所述功能包括用于實現(xiàn)所述有限狀態(tài)機(jī)的有限狀態(tài)機(jī)實現(xiàn)技術(shù)。在本發(fā)明的一個實施例中,所述新組件包括一個或多個通信端口,并且所述功能包括用于管理新組件的至少一個端口的端口管理功能。在本發(fā)明的一個實施例中,所述新組件包括一個或多個通信端口,并且所述功能包括至少一個端口功能。在本發(fā)明的另一實施例中,所述至少一個端口功能定義端口能夠傳送何種數(shù)據(jù)類型。在本發(fā)明的一個實施例中,所述新組件包括一個或多個通信端口,并且所述功能包括用于定義與新組件的端口無關(guān)的至少一個新組件功能的配置管理器功能。
在本發(fā)明的一個實施例中,所述功能包括用于定義新組件的數(shù)據(jù)操作符功能的處理功能接口功能,以及用于訪問數(shù)據(jù)操作符功能的接口。在本發(fā)明的另一實施例中,數(shù)據(jù)操作符功能定義數(shù)據(jù)操作符邏輯以及新組件的數(shù)據(jù)操作符實現(xiàn)技術(shù)。在本發(fā)明的其他示例中,數(shù)據(jù)操作符邏輯定義至少一個下列數(shù)據(jù)操作符源、接收器、編解碼器、混合器、過濾器或分離器。在本發(fā)明的一個實施例中,所述功能包括用于處理來自新組件的回調(diào)通信的回調(diào)管理器功能。在本發(fā)明的一個實施例中,所述方法進(jìn)一步包括從用戶接收輸入并且使用所述輸入用于配置一個或多個軟件模塊。在本發(fā)明的一個實施例中,所述現(xiàn)有多媒體應(yīng)用編程接口是OpenMAX IL API。在本發(fā)明的一個實施例中,關(guān)于配置管理器功能,與新組件的端口無關(guān)的至少一個新組件功能包括OpenMAX IL資源管理功能。在本發(fā)明的一個實施例中,回調(diào)管理器根據(jù)下述模型中的一個或多個來處理回調(diào)通信,所述模型包括異步上下文中回調(diào)/事件通信、同步上下文中回調(diào)/事件通信、以及異步上下文外回調(diào)/事件通信。本發(fā)明的第三實施例提供一種包括根據(jù)前述方法創(chuàng)建的新多媒體軟件組件的移動電話。本發(fā)明的第四實施例提供一種裝置,包括處理器,包括計算機(jī)程序代碼的存儲器,存儲器和計算機(jī)程序代碼被配置用于利用處理器來致使所述裝置執(zhí)行至少下述操作提供一個或多個軟件模塊的軟件框架,所述軟件模塊可配置用于定義將使用所述框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。本發(fā)明的第五實施例提供一種裝置,包括處理器,包括計算機(jī)程序代碼的存儲器,存儲器和計算機(jī)程序代碼被配置用于利用處理器來致使所述裝置執(zhí)行至少下述操作配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能, 所述至少一個功能包括對于組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分;以及根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有至少一個功能的新組件。在本發(fā)明的一個實施例中,所述裝置進(jìn)一步包括用于從用戶接收輸入的輸入設(shè)備,其中所述裝置被致使根據(jù)來自用戶的輸入來配置所述一個或多個軟件模塊。在本發(fā)明的一個實施例中,所述裝置被致使在配置一個或多個軟件模塊之前在存儲器中存儲所述框架。在本發(fā)明的一個實施例中,所述裝置被致使在已經(jīng)創(chuàng)建新的組件之后在存儲器中存儲所述新組件。本發(fā)明的第六實施例提供一種計算機(jī)程序,包括用于提供一個或多個軟件模塊的軟件框架的代碼,所述軟件模塊可配置用于定義將使用軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。在本發(fā)明的一個實施例中,計算機(jī)程序是包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,其中在所述計算機(jī)可讀介質(zhì)中承載在其上具體化的通過計算機(jī)使用的計算機(jī)程序代碼。本發(fā)明的第七實施例提供一種計算機(jī)程序,包括用于配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能的代碼,所述至少一個功能包括對于組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口的所需的完整功能的至少一部分;以及用于根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有所述至少一個功能的新組件的代碼。在本發(fā)明的一個實施例中,計算機(jī)程序是包括計算機(jī)可讀介質(zhì)的計算機(jī)程序產(chǎn)品,其中在所述計算機(jī)可讀介質(zhì)中承載在其上具體化的通過計算機(jī)使用的計算機(jī)程序代碼。本發(fā)明的第八實施例提供一種利用指令編碼的計算機(jī)可讀介質(zhì),當(dāng)計算機(jī)執(zhí)行所述指令時執(zhí)行提供一個或多個軟件模塊的軟件框架,所述軟件模塊可配置用于定義將使用軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于新組件用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。本發(fā)明的第九實施例提供一種利用指令編碼的計算機(jī)可讀介質(zhì),當(dāng)計算機(jī)執(zhí)行所述指令時執(zhí)行配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能, 所述至少一個功能包括對于組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分;以及根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有所述至少一個功能的新組件。本發(fā)明的第十實施例提供一種裝置,包括用于提供一個或多個軟件模塊的軟件框架的裝置,所述軟件模塊可配置用于定義將使用軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于新組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。本發(fā)明的第十一實施例提供一種裝置,包括用于配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能的裝置,所述至少一個功能包括對于所述組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分;以及用于根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有至少一個功能的新多媒體軟件組件的裝置。
此后通過參考附圖來介紹實施方式,其中圖1是OpenMAX環(huán)境的示意圖;圖2是示出了 OpenMAX IL軟件組件的行為的狀態(tài)圖;圖3是實現(xiàn)本發(fā)明的實施方式的的第一計算設(shè)備的示意圖;圖4是示出了圖3的計算設(shè)備的硬件組件的安排的示意圖;圖5是示出了當(dāng)根據(jù)本發(fā)明的實施方式安排時圖3的計算設(shè)備的硬件和軟件組件的安排的示意圖;圖恥是不利用(i)或利用(ii)示例性開發(fā)工具來創(chuàng)建軟件組件的示意圖;圖6是根據(jù)本發(fā)明的第一實施方式的開發(fā)工具的功能示意圖;圖7是示出了圖6的開發(fā)工具的操作的流程圖;圖8是根據(jù)本發(fā)明的第二實施方式的開發(fā)工具的功能示意圖;圖9是示出了圖8的開發(fā)工具的操作的流程圖;圖10是實現(xiàn)本發(fā)明的實施方式的第二計算設(shè)備的示例性表示;圖11是示出了圖10的計算設(shè)備的硬件組件的安排的示意圖;圖12是示出了當(dāng)根據(jù)本發(fā)明的實施方式安排時圖10的計算設(shè)備的硬件和軟件組件的安排的示意圖;圖13是運(yùn)行在圖10的計算設(shè)備上并且包括本發(fā)明的第三實施方式的OpenMAX IL 用例的功能示意圖;以及圖14是示出了圖13的用例的操作的流程圖。
具體實施例方式OpenMAX是由Khronos工作組開發(fā)的一種標(biāo)準(zhǔn)。OpenMAX提供用于開發(fā)組件和應(yīng)用的一組API,其中所述組件和應(yīng)用在多種不同計算環(huán)境間是可移植的。OpenMAX提供三層接口 應(yīng)用層(AL)、集成層(IL)以及開發(fā)層(DL)。OpenMAX IL提供API并且是現(xiàn)有多媒體應(yīng)用編程接口。特別地,OpenMAX IL提供用于在媒體框架或應(yīng)用和組件集合之間交互的API,每個組件提供框架或應(yīng)用的部分功能。 例如,媒體層應(yīng)用要求使用編解碼器和揚(yáng)聲器來向人類用戶提供解碼的媒體。OpenMAX IL 提供在媒體應(yīng)用、編解碼器組件和揚(yáng)聲器之間交互的裝置,使得編解碼器可以為媒體應(yīng)用解碼數(shù)據(jù),然后可以在揚(yáng)聲器播放媒體應(yīng)用。圖1提供了 OpenMAX IL環(huán)境2的示例性表示。OpenMAX IL API與表示為IL客戶端4的高層實體進(jìn)行交互。OpenMAX API還被分成兩個部分,核心API 6和組件API (8a-ac)。IL客戶端4典型地是過濾器圖形多媒體框架(例如,GStreamer)、OpenMAX IL或應(yīng)用的功能部分。在實踐中,IL客戶端6指代調(diào)用OpenMAX IL環(huán)境的方法(參見下面)的任意軟件。IL客戶端4總是通過核心6與OpenMAX IL環(huán)境進(jìn)行通信。OpenMAX IL核心6用于動態(tài)地裝載和卸載組件(8a_8C)并且用于方便于組件通信。一旦裝載了組件,核心6允許IL客戶端直接與組件(8a到8c)通信。類似地,核心6 允許IL客戶端在兩個組件(8a到8c)之間建立通信鏈路(也被稱為隧道)。一旦建立了隧道,核心6不再被使用并且在組件(8a-8c)之間直接進(jìn)行通信流。
組件API用于創(chuàng)建新的組件(8a到8c)。組件(8a到8c)代表單獨的功能模塊。 組件(8a到8c)操作根據(jù)它們輸出的參數(shù)結(jié)構(gòu)來定義的四種類型的數(shù)據(jù)音頻、視頻、圖像和其它(例如,用于同步的時間數(shù)據(jù))。組件(8a到8c)可以具有源、接收器(sink)、編解碼器、過濾器、分離器、混合器或任意其它數(shù)據(jù)操作符的功能?;趯崿F(xiàn)方式,組件可以代表一塊硬件、軟件編解碼器、另一處理器、或它們的組合。通過稱為端口(IOa到IOd)的接口來進(jìn)行與組件的往復(fù)數(shù)據(jù)通信。在OpenMAX IL 中定義了四種類型的端口并且它們對應(yīng)于端口可以傳送的數(shù)據(jù)類型音頻、視頻、圖像數(shù)據(jù)端口和其它端口。組件可以通過輸入端口(IOb和IOd)來接收數(shù)據(jù),或通過輸出端口(IOa 和IOc)來發(fā)送數(shù)據(jù)。類似地,可以通過將一個組件的輸出端口連接到另一組件的輸入端口來建立兩個組件之間的通信隧道(例如,如組件A和B,以及B和C之間示出的)。端口可以代表通過緩沖區(qū)到數(shù)據(jù)流的組件連接。OpenMAX IL組件(8a到8c)為IL客戶端4提供對組件功能或方法的標(biāo)準(zhǔn)集合的訪問。這些功能允許IL客戶端4獲得和設(shè)置組件和端口配置參數(shù),獲得和設(shè)置組件的狀態(tài), 發(fā)送命令給組件,接收事件通知,分配緩沖區(qū),與單個組件端口建立通信以及在兩個組件端口之間建立通信。組件參數(shù)包括與組件操作(即,其具體功能,例如編解碼器)或組件的實際執(zhí)行狀態(tài)相關(guān)的數(shù)據(jù)。經(jīng)由回調(diào)功能集合,緩沖區(qū)狀態(tài)、錯誤以及其它時間敏感數(shù)據(jù)被中繼至IL客戶端4??紤]上述內(nèi)容,在一個實施例中,IL客戶端4可以是運(yùn)行在計算設(shè)備上的媒體播放器應(yīng)用。為了提供MP3播放功能,媒體播放器應(yīng)用可以與核心6進(jìn)行通信并且指示核心 6裝載組件A(8a)、組件B(8b)以及組件C(8c)。組件A代表MP3文件并且因此提供媒體數(shù)據(jù)源且具有單個輸出端口(10a)。組件B代表具有輸入端口(IOb)和輸出端口(IOc)的 MP3解碼器。解碼器解碼文件數(shù)據(jù)并且將其轉(zhuǎn)換為脈沖編碼調(diào)制(PCM)樣本,然后可以將所述樣本傳遞給組件C。組件C代表聲音驅(qū)動器,并且因此提供接收器,且具有單個輸入端口 (IOd)。聲音驅(qū)動器發(fā)送PCM聲音樣本到計算設(shè)備的揚(yáng)聲器,以發(fā)起音頻播發(fā)。圖2示出了說明組件(8a到8c)的行為的狀態(tài)模型18。組件首先被認(rèn)為是在卸載(UNLOADED)狀態(tài)20??梢酝ㄟ^從IL客戶端4到核心6的調(diào)用,將組件裝載到裝載 (LOADED)狀態(tài)22。在此后的任意時間,當(dāng)組件內(nèi)發(fā)生不可恢復(fù)的錯誤時,組件可以進(jìn)入無效(INVALID)狀態(tài)Μ。退出無效(INVALID)狀態(tài)M的唯一方式是卸載Q0)且重新裝載 (22)組件。通常,當(dāng)組件具有所有其可操作的資源時,其可以進(jìn)入空閑(IDLE)狀態(tài)沈。如果所有的可操作靜態(tài)資源都還未被分配,則轉(zhuǎn)變到空閑(IDLE)狀態(tài)沈可能失敗。當(dāng)從裝載 (22)到空閑06)的轉(zhuǎn)變失敗時,IL客戶端可以重新嘗試或選擇以將組件放置于等待資源 (WAIT FOR RESOURCE)狀態(tài)觀。在進(jìn)入等待資源狀態(tài)觀時,組件向供應(yīng)商特定的資源管理器注冊以提醒它何時資源變?yōu)榭捎玫?,在資源變?yōu)榭捎玫臅r間組件轉(zhuǎn)變到空閑狀態(tài)26。空閑狀態(tài)沈表明組件具有所有其需要的靜態(tài)資源而不未在處理數(shù)據(jù)。從空閑沈,組件可以進(jìn)入執(zhí)行(EXECUTING)狀態(tài)30、暫停(PAUSED)狀態(tài)32、加載 (LOADED)狀態(tài)22或無效(INVALID)狀態(tài)Μ。執(zhí)行狀態(tài)30表明組件是正在接收緩沖區(qū)以處理數(shù)據(jù)期間,并且會根據(jù)需要進(jìn)行對IL客戶端4的回調(diào)命令。暫停狀態(tài)32維持通過組件執(zhí)行的緩沖區(qū)上下文而不處理數(shù)據(jù)或交換緩沖區(qū)。進(jìn)一步的,從暫停狀態(tài)32到執(zhí)行狀態(tài)30的轉(zhuǎn)變使緩沖區(qū)處理能夠恢復(fù)到組件離開的位置。從執(zhí)行狀態(tài)30或暫停狀態(tài)32到空閑06)的轉(zhuǎn)變將導(dǎo)致丟失處理緩沖區(qū)的上下文,該上下文需要開始重新引入流。從空閑06)到裝載02)的轉(zhuǎn)變將導(dǎo)致諸如通信緩沖區(qū)的可操作資源將被丟失。僅通過實例的方式來提供下面的多個實施方式的說明。第一實施方式涉及用于根據(jù)OpenMAX IL標(biāo)準(zhǔn)來創(chuàng)建軟件組件的開發(fā)工具,并且下面將會介紹。圖3是具有殼42的計算設(shè)備40的示意圖。設(shè)備40的殼42封裝鍵盤和觸摸板44 以及顯示器46。圖3中示出的設(shè)備40是操作為膝上型計算機(jī)的計算設(shè)備。然而,其它實施方式涉及不能被分類為膝上型的其它計算設(shè)備。應(yīng)當(dāng)了解的是,鍵盤和觸摸板44提供設(shè)備 40的輸入設(shè)備。圖4是示出了圖3的設(shè)備13的硬件組件安排的示意說明。圖3中示出的鍵盤和觸摸板44,以及顯示器46連接到系統(tǒng)總線48。系統(tǒng)總線48進(jìn)一步連接到處理器50和電池51??偩€48進(jìn)一步連接到存儲器控制器52,其依次連接到易失性存儲器M和非易失性存儲器56。處理器50處理與各種軟件元件和操作系統(tǒng)軟件相關(guān)的指令,所述各種軟件元件和操作系統(tǒng)軟件運(yùn)行在設(shè)備40上并且提供設(shè)備40的各種功能。可以在單個處理器上提供設(shè)備40 (例如處理器50)的各種處理元件。存儲器控制器52控制對易失性存儲器M和非易失性存儲器56的訪問,以及與易失性存儲器M和非易失性存儲器56的交互。通過這種方式,處理器50能夠與各種硬件元件以及存儲器控制器52進(jìn)行通信,并且因此根據(jù)在易失性存儲器M或非易失性存儲器56 上存儲的軟件指令來控制各種硬件元件的操作。在圖4中僅示出了單個總線,即總線48。應(yīng)當(dāng)認(rèn)識到的是,可以用兩個或多個總線來替換該總線,并且圖4的拓?fù)鋵虼烁淖?。此外,已知的計算設(shè)備包括圖4中示出的那些組件之外的硬件組件,但是它們是現(xiàn)有技術(shù)中公知的并且此處不會進(jìn)一步介紹。圖5是示出了設(shè)備40的各種硬件和軟件組件的示意圖??梢园凑崭鞣N方式對運(yùn)行在設(shè)備40上的軟件進(jìn)行分類。某些軟件進(jìn)行操作以管理由各種硬件組件提供的資源以及建立執(zhí)行其它軟件的可操作環(huán)境。這種軟件被稱為設(shè)備的操作系統(tǒng)并且在圖5中由操作系統(tǒng)50來表示。操作系統(tǒng)50與存儲管理單元52進(jìn)行交互,存儲管理單元52連接到易失性存儲器M和非易失性存儲器56。操作系統(tǒng)50進(jìn)一步連接到多個應(yīng)用58,多個應(yīng)用中的每一個可以按照操作系統(tǒng)50指示的方式來訪問硬件組件。應(yīng)用58可以是用戶應(yīng)用,其可以由設(shè)備40的用戶來開始和終止。如圖5上所見的,應(yīng)用58包括開發(fā)工具59。操作系統(tǒng)50進(jìn)一步通過設(shè)備驅(qū)動器60連接到鍵盤和觸摸板44,以及通過設(shè)備驅(qū)動器62連接到顯示器46。僅示出了設(shè)備40的硬件組件中的一些,但是通常地,操作系統(tǒng) 50通過各種設(shè)備驅(qū)動器來控制設(shè)備40的硬件資源。此外,盡管已經(jīng)將設(shè)備驅(qū)動器示為與操作系統(tǒng)50相分開,但是有可能將設(shè)備驅(qū)動器合并到操作系統(tǒng)50中。通過虛線區(qū)域64描述了圖5的軟件組件。然而,軟件和硬件之間的這種區(qū)別不是本質(zhì)上的。在圖5中描述為軟件的組件可以以硬件來呈現(xiàn),并且那些描述為硬件的組件在某些情況下可以被呈現(xiàn)為軟件。在設(shè)備的操作過程中,在非易失性存儲器56上存儲的軟件指令建立操作系統(tǒng)50、 應(yīng)用58和設(shè)備驅(qū)動器60和62。通過使用圖5中示出的各種組件,用戶能夠根據(jù)各種應(yīng)用 58所提供的功能來使用設(shè)備40。例如,用戶使用鍵盤和觸摸板44以通過設(shè)備驅(qū)動器60和62與操作系統(tǒng)50進(jìn)行通信,以促使應(yīng)用58中的一個應(yīng)用通過存儲管理單元52訪問存儲在非易失性存儲器56上的數(shù)據(jù)。操作系統(tǒng)50促使將由存儲管理單元52提供的數(shù)據(jù)和由應(yīng)用提供的指令一起發(fā)送給處理器50(圖4)。處理器50將通常使用非易失性存儲器M, 返回從數(shù)據(jù)和指令得到的結(jié)果,并且通過操作系統(tǒng)50將結(jié)果返回給應(yīng)用。在來自應(yīng)用的進(jìn)一步指令的情況中,操作系統(tǒng)50將促使通過設(shè)備驅(qū)動器62在顯示器46上將結(jié)果顯示給用戶。應(yīng)當(dāng)認(rèn)識到的是,設(shè)備驅(qū)動器60和62也是來自存儲在非易失性存儲器56上的指令的軟件組件。僅通過示例的方式來呈現(xiàn)圖5的說明;已知的設(shè)備可以包括比示出的組件更多的組件。實施方式的實現(xiàn)不依賴于圖3,4和5中示出的組件的精確安排和配置。因此,在不影響實施方式的操作的情況下,可以替代具有類似功能的其它組件并且可以增加另外的組件,或者省略所示出的組件。開發(fā)工具59的功能是提供用于創(chuàng)建新軟件組件的開發(fā)環(huán)境,所述新軟件組件符合現(xiàn)有多媒體應(yīng)用編程接口。應(yīng)當(dāng)了解的是,開發(fā)工具59提供用于創(chuàng)建新軟件組件的手段。在本實施例中,通過OpenMAX ILAPI來提供現(xiàn)有多媒體應(yīng)用編程接口。然而,在其它實施方式中,可以使用其它多媒體API。圖示出了已經(jīng)創(chuàng)建用于與軟件應(yīng)用66交互使用以有助于具體多媒體用例的三個OpenMAX IL組件(6 ,6 和65c)的實例。在本實施例中,組件65全部一起工作并且與應(yīng)用66 —起執(zhí)行播放MP3文件的多媒體用例。組件6 代表用于裝載MP3文件的文件裝載器,組件6 代表用于將MP3文件解碼為聲音樣本的解碼器,以及組件65c代表用于將聲音樣本傳送給用于播發(fā)的揚(yáng)聲器的聲音驅(qū)動器。在圖的實施例中,軟件開發(fā)者必須為三個組件中的每一個編寫完整的計算機(jī)代碼,以規(guī)定它們的功能以及它們?nèi)绾闻c它們的環(huán)境進(jìn)行通信。這在圖中通過每個組件6 到65c的陰影來表示。由于必須從頭開始編寫每個新組件,所以上述過程可能是很長的。盡管由于組件6 到65c全都是 OpenMAX IL組件,在它們之間均有相似性,但是不可能進(jìn)行代碼的明顯重用。圖fe(ii)示出了根據(jù)開發(fā)工具59的示例軟件開發(fā)者創(chuàng)建組件65a到65c的實例。組件(6 到65c)中的每一個包括三個部分,主要部分(67a到67c)、側(cè)邊部分(68a到 68d)、以及頂部部分(69a到69c)。通過開發(fā)工具59的框架來提供主要部分67a到67c。 這個部分的代碼不是由開發(fā)者編寫的,而是由如圖fe(ii)中陰影缺失所指示的框架來提供的。這個部分的代碼代表每個OpenMAX IL組件必須具有以符合OpenMAX IL標(biāo)準(zhǔn)的通用功能。主要部分可以包括任意OpenMAX IL組件必須具有的組件功能和方法的標(biāo)準(zhǔn)集合,如上述參照圖1所討論的。可以由不同組件完全重用這個部分的代碼。側(cè)邊部分68a到68d 和頂部部分69a到69c代表由開發(fā)者具體編寫的計算機(jī)代碼。側(cè)邊和頂部部分向由主要部分提供的通用功能增加功能,以為每個組件提供單獨的功能。特別地,側(cè)邊部分68a到68d 代表將除了主要部分提供的通用功能外的新功能增加到組件的具體代碼。頂部部分69a到 69c代表修改由主要部分提供的通用功能的一部分的具體代碼。圖fe(ii)的操作的結(jié)果是,組件的開發(fā)更快且更容易。特別地,由開發(fā)工具59提供并且對于每個組件重用與必須在所有OpenMAX IL API兼容組件中呈現(xiàn)的通用功能相關(guān)的計算機(jī)代碼。這些優(yōu)點降低了創(chuàng)建新的OpenMAX IL組件所花費(fèi)的時間,并且因此降低實現(xiàn)新的OpenMAX IL兼容多媒體用例所花費(fèi)的時間。
在圖6的功能示意圖中示出了用以創(chuàng)建新OpenMAX IL組件的開發(fā)工具59的第一實施方式的操作。應(yīng)當(dāng)了解的是,在設(shè)備40的非易失性存儲器56中存儲開發(fā)工具59。例如,由設(shè)備40的用戶通過來自鍵盤和觸摸板44的適當(dāng)輸入,來開始開發(fā)工具59 的操作。一旦已經(jīng)啟動開發(fā)工具59,用戶可以通過經(jīng)由鍵盤和觸摸板44提供輸入來創(chuàng)建新的OpenMAX組件。開發(fā)工具提供多個預(yù)定義的軟件模塊72 (此后稱為“模塊”),預(yù)定軟件模塊的每一個必須由用戶通過輸入70來配置以定義新組件的功能。然后,基于配置的模塊 72來生成新組件74,并且由開發(fā)工具59作為輸出76輸出新組件74??紤]模塊72,每個模塊指定新組件76的不同方面。一旦配置,每個配置的模塊72 代表與新組件74相關(guān)的軟件代碼的規(guī)定部分。因此,由開發(fā)工具59使用由用戶通過輸入 70提供的模塊配置信息,來生成實現(xiàn)新組件所需要的軟件代碼。應(yīng)當(dāng)了解的是,開發(fā)工具 59提供用于配置模塊72的手段。除了通過輸入70從用戶接收配置信息之外,開發(fā)工具59能夠經(jīng)由輸入70接收與新組件74相關(guān)的特定軟件代碼。附加的軟件代碼使用戶能夠在僅由模塊72所定義的之外擴(kuò)展新組件74的定義。換句話說,用戶可以增加可選代碼,以向組件提供附加的或擴(kuò)展的功能??梢詫⑦@種附加功能增加到模塊72中的一個,以改進(jìn)或更新由該模塊提供的功能。 附加地或可替換地,這種功能可以不特定地相關(guān)于模塊72中的任意一個的功能,并且這樣定義新組件74的完全新的功能。例如,用戶可能希望創(chuàng)建新的組件以提供具體的PCM解碼功能。使用模塊72,其可以創(chuàng)建可以提供不同的PCM解碼功能的解碼器。因此,通過增加可選代碼,用戶能夠修改由模塊72所定義的解碼器以執(zhí)行不同的PCM解碼,即想要的具體的PCM解碼。在開發(fā)工具59的不同實施方式之間,模塊72的數(shù)量可以變化。具有許多模塊72 的優(yōu)點是可以通過模塊來處理用于任意新組件將與OpenMAX IL API相兼容所需的完整功能的大部分。在一些實施方式中,可以通過模塊72來處理用于任意新組件將與OpenMAX IL API相兼容所需的完整功能的全部。例如,如上述參照圖1所討論的,這可以包括任意 OpenMAX IL組件必須具有的組件功能或方法的標(biāo)準(zhǔn)集合。在這種情況下,一旦配置了所有的模塊72,開發(fā)工具59基于這些配置生成的代碼74將提供與OpenMAX IL標(biāo)準(zhǔn)相兼容的組件。這種操作將限制向需要擴(kuò)展組件的功能以提供特定能力的實例提供附加代碼的需要。 換句話說,將簡單地不需要提供附加代碼來使得組件OpenMAX IL兼容。此外,在一些實施方式中,可以由模塊72來處理軟件組件的所有功能,包括需要與OpenMAX ILAPI兼容的功能。這種操作將根本限制對提供附加代碼的需要。可替換地,具有更少模塊72的優(yōu)點是,將降低配置新組件所花費(fèi)的時間。在組件必須提供非常專業(yè)的功能的情況下,這將是特別有用的。在這種情況下,與新組件相關(guān)的大部分代碼將是附加的代碼,而不是通過模塊配置來生成的代碼。在任何情況下,一旦模塊72的配置完成并且已經(jīng)提供所有的附加代碼,開發(fā)工具 59生成用于新組件74的軟件代碼。這樣,開發(fā)工具59提供用于創(chuàng)建新軟件模塊的手段。 在已經(jīng)生成新的組件代碼之后,將新的組件代碼作為輸出76通過操作系統(tǒng)50輸出給存儲管理單元52。存儲管理單元52于是在設(shè)備40的存儲單元中的一個(例如非易失性存儲器54)上存儲新組件74。于是,新組件代碼可以用作OpenMAX環(huán)境中更廣泛的多媒體功能 (或用例)的一部分,例如如圖1所示的。例如,新組件74可以定義PCM解碼器并且形成用于播放MP3文件的用例。圖7提供了形成新組件的開發(fā)工具59第一實施方式的操作的流程圖。在步驟100處過程開始,其中開發(fā)工具59的人類用戶(例如,軟件開發(fā)者)開始新組件的設(shè)計。在實踐中,這個步驟可以涉及使用操作系統(tǒng)50來激活開發(fā)工具59應(yīng)用(例如,從家庭視窗或桌面來打開應(yīng)用)以及在開發(fā)工具59中規(guī)定要設(shè)計新的組件(例如,在開發(fā)工具59應(yīng)用內(nèi)打開新的會話)。無論何種初始化例程,當(dāng)開發(fā)工具59準(zhǔn)備好獲取來自用戶的與模塊72的配置相關(guān)的輸入時,處理流向步驟102。在步驟102,用戶配置模塊72中的每一個。由用戶進(jìn)行的模塊配置定義新組件的具體方面。例如,步驟102可以涉及定義新組件具有的端口數(shù)量,定義組件的具體端口能夠處理的數(shù)據(jù)類型,定義組件的處理功能,和/或定義組件將如何與IL客戶端進(jìn)行通信。一旦配置了所有模塊,處理流向步驟104。在步驟104,用戶可以增加新組件可能需要的任意附加代碼,以便為此其提供在模塊72提供的功能之外擴(kuò)展的任意功能。例如,用戶可以提供附加代碼來擴(kuò)展由模塊72所提供的功能。附加地或替換地,用戶可以提供特定代碼以定義不與模塊72中的一個直接相關(guān)的功能。一旦用戶已經(jīng)增加了定義新組件的功能所需要的所有特定代碼,則處理流向步驟 106。在步驟106,開發(fā)工具59生成新組件的軟件代碼。組件代碼將包括在步驟102期間由用戶定義的并且然后由開發(fā)工具59框架生成的第一部分,以及在步驟104由用戶輸入的特定代碼所提供的第二部分。一旦在步驟106已經(jīng)生成組件代碼,于是將該組件代碼被存儲在設(shè)備40的存儲器中的一個上。于是隨后可以將創(chuàng)建的組件用于提供與多媒體用例的一部分相關(guān)的功能,例如播放MP3文件。在圖8中示出了開發(fā)工具59的第二實施方式。第二實施方式從配置多個模塊的用戶接收輸入70。一旦已經(jīng)配置了模塊,則用于新組件的軟件代碼將被生成以作為輸出76。 如使用第一實施方式的實例,第二實施方式提供用于提供一個或多個模型的裝置、用于配置模塊的裝置以及用于創(chuàng)建新軟件組件的裝置。第二實施方式包含五個具體模塊FSM模塊78、PM模塊80、BPC模塊82、CoM模塊84、PFI模塊86以及CaM模塊88。此外,第二實施方式從輸入70接收附加代碼90以進(jìn)一步定義新組件。一旦已經(jīng)配置了模塊82到88并且已經(jīng)接收了附加代碼90,開發(fā)工具59生成用于新組件的代碼,在圖8中由附圖標(biāo)記82指示。下面更為詳細(xì)地介紹由開發(fā)工具59的第二實施方式定義的模塊78到88。有限狀態(tài)機(jī)(FSM)模塊78。這個模塊完全封裝在OpenMAX IL標(biāo)準(zhǔn)中定義的和在圖2中示出的狀態(tài)機(jī)。有限狀態(tài)機(jī)定義與OpenMAX ILAPI兼容的所有軟件組件的行為。這個模塊負(fù)責(zé)處理對于組件的外部刺激,即來自IL客戶端或其它組件的調(diào)用。FSM模塊78處理外部刺激以驅(qū)動組件中其它模塊(即模塊80到88)的行為。FSM模塊78還定義用于實現(xiàn)圖2的狀態(tài)機(jī)的有限狀態(tài)機(jī)實現(xiàn)技術(shù)。合適的技術(shù)包括但不限于,嵌套切換語句、狀態(tài)表和狀態(tài)模式。端口管理器(PM)模塊80 由于端口是用于在組件與IL客戶端或者其它組件之間進(jìn)行通信的機(jī)制,端口通信功能對于OpenMAX IL是主要的。PM模塊80抽象在任意OpenMAX IL組件中為了能夠處理入口(即,進(jìn)入的)組件通信需要所需的端口管理角色和責(zé)任。將 PM模塊80設(shè)計為能夠處理任意類型的OpenMAX IL端口。
基礎(chǔ)端口類(BPC)模塊82 這個模塊定義在所有情況下在所有新組件中定義的多個基礎(chǔ)端口類或類型。新組件的任意端口將繼承自開發(fā)工具59框架基礎(chǔ)類,以支持其特定的配置數(shù)據(jù)和/或功能?;A(chǔ)端口類包括下列內(nèi)容COmxILPort 這個類實現(xiàn)在任意OpenMAX IL端口中必須發(fā)現(xiàn)的所有通用功能和數(shù)據(jù)的配置。在這個類中定義的功能可以被配置一次并且由新組件的任意端口完全重用。 此外,這個端口允許開發(fā)工具59的用戶重新實現(xiàn)或更新需要例如通過附加代碼92進(jìn)行定制的通用功能或數(shù)據(jù)的這些部分。COmxILAudioPort 這個類利用必須在傳送音頻數(shù)據(jù)的任意OpenMAX IL端口中發(fā)現(xiàn)的通用數(shù)據(jù),來擴(kuò)展或更新COmxILPort類。類似地,COmxILVideoPort類提供用于傳送視頻數(shù)據(jù)的相應(yīng)基礎(chǔ)類、COmxILImagePort類提供用于傳送圖像數(shù)據(jù)的相應(yīng)基礎(chǔ)類、以及 COmxILOtherPort類提供用于傳送其它數(shù)據(jù)的相應(yīng)基礎(chǔ)類。開發(fā)工具59的用戶可以增加附加代碼92以更新或擴(kuò)展通用端口以提供特定功能,例如,具體的PCM解碼功能。在本示例中,用戶可以擴(kuò)展COmxILAudioPort,以支持由所述具體PCM端口中的標(biāo)準(zhǔn)頒布的配置數(shù)據(jù)。配置管理器(CoM)模塊84 這個模塊用于設(shè)置必須在任意OpenMAXIL組件中發(fā)現(xiàn)的但是不涉及端口的配置功能。大部分組件的配置信息涉及端口,并且因此這種信息概念地鏈接到端口并且通過BPC模塊82來配置。然而,還具有不涉及端口的其它配置信息,例如將被組件支持的配置具體組件參數(shù)。用戶更新CoM模塊84以制作能夠支持必要的但不涉及端口的任意特定數(shù)據(jù)或功能的組件。例如,用戶使用CoM模塊84來配置OpenMAX IL 資源管理。處理功能接口(PFI)模塊這個模塊定義到組件的數(shù)據(jù)操作符功能的通用接口。 這個功能可以包括但不限于下面的數(shù)據(jù)操作符源、接收器(sink)、混合器、過濾器、分離器和編解碼器。用戶使用PFI模塊86來定義每個組件固有的數(shù)據(jù)操作符邏輯。還有,用戶可以定義是否在附加獨立線程或在框架的上下文中實現(xiàn)數(shù)據(jù)操作符功能。此外,PFI模塊 86被設(shè)計為概括關(guān)于以下的通知0penMAX IL命令、OpenMAX IL狀態(tài)改變和到達(dá)數(shù)據(jù)操作功能自身的輸入/輸出緩沖區(qū)。這種接口的實現(xiàn)旨在與負(fù)責(zé)出口(即,向外的)通信的實體(例如,CaM模塊88)進(jìn)行通信?;卣{(diào)管理器(CaM)模塊88 這個模塊用于定義到IL客戶端的要求任意OpenMAX IL組件支持的OpenMAX IL回調(diào)通信以及事件通知。由CaM模塊88管理與端口相關(guān)的回調(diào)和事件處理,而不管在任意時間使用的端口的當(dāng)前通信范例和模型。這意味著,這個模塊抽象端口被隧道連接還是直接連接到IL客戶端的知識。因此,由CaM模塊按通用方式來處理出口(向外的)通信。同樣,在此處放置OpenMAX IL緩沖區(qū)標(biāo)記功能。根據(jù)OpenMAX IL 的要求將緩沖區(qū)標(biāo)記從輸入緩沖區(qū)傳送到輸出緩沖區(qū)。再次,通過CaM模塊88來完成上述內(nèi)容,使得新組件不需要特別地提供緩沖區(qū)標(biāo)記功能。CaM模塊88的另一功能是支持不同組件出口通信模型?;卣{(diào)管理器接口的設(shè)計允許不同的回調(diào)/事件通信模型,包括異步上下文中回調(diào)/事件通信。例如,如果將CaM模塊88實現(xiàn)為活動對象可以實現(xiàn)異步上下文中回調(diào)/事件通信。同步上下文中回調(diào)/事件通信。例如,如果在上下文中同步地實現(xiàn)PFI模塊 80 ( S卩,在其實現(xiàn)方式中沒有附加線程或活動對象)并且不將CaM模塊88實現(xiàn)為活動對象,則可以實現(xiàn)同步上下文中回調(diào)/事件通信。異步上下文外回調(diào)/事件通信。例如,如果利用附加線程來實現(xiàn)PFI模塊80并且不將CaM模塊88實現(xiàn)為活動對象,則可以實現(xiàn)異步上下文外回調(diào)/事件通信。圖9提供了形成新組件的開發(fā)工具59的第二實施方式的操作的流程圖。圖9的流程圖類似于涉及第一實施方式的圖7的流程圖。下面介紹圖9的與圖7不同的方面。上面通過參考圖7討論了步驟100。在步驟108,用戶配置FSM模塊78。如上所述,這涉及規(guī)定將用于實現(xiàn)技術(shù)用于實現(xiàn)圖2的狀態(tài)圖的有限狀態(tài)機(jī)實現(xiàn)技術(shù)。一旦配置了 FSM模塊,則處理流向步驟104。在步驟110,用戶配置PM模塊80。如上所述,這涉及配置在任意OpenMAX IL組件中為了能夠處理入口(即,進(jìn)入的)組件通信需要所需要的角色和責(zé)任。一旦配置了 PM模塊,處理流向步驟112。在步驟112,用戶配置BPC模塊82。如上所述,這涉及定義將用作組件的端口基礎(chǔ)的基礎(chǔ)端口。在一些情況中,基礎(chǔ)端口將實際地定義新組件的至少一個端口的完整功能。在其他情況中,基礎(chǔ)端口將用作開始點,從所述開始點起用戶可以按照附加代碼84的形式來增加附加功能(參見下面的步驟114)。一旦已經(jīng)配置了 BPC模塊,處理流向步驟114。在步驟114,用戶配置CoM模塊84。如上所述,這涉及設(shè)置這樣的配置功能,所述配置功能必須在任意OpenMAX IL組件中找到且其不涉及端口。一旦配置了 CoM模塊,處理流向步驟116。在步驟116,用戶配置PFI模塊86。如上所述,這涉及定義對每個組件將是固有的的數(shù)據(jù)操作符邏輯。一旦配置了 PFI模塊,處理流向步驟118。在步驟118,用戶配置CaM模塊88。如上所述,這涉及定義要求任意OpenMAX IL支持的OpenMAX IL回調(diào)通信以及事件通知功能。一旦配置了 CaM模塊,處理流向步驟104。如上述通過參考圖7所提及的,在步驟104,用戶增加新組件可能要求的任意附加代碼,以便為此提供由模塊提供的功能之外擴(kuò)展的任意功能。在第二實施方式中,用戶可以提供特定代碼以修改音頻端口,從而使得其能夠處理與具體PCM格式相關(guān)的數(shù)據(jù)。附加地或可替換地,用戶可以提供特定代碼以修改CoM模塊,從而使得組件能夠處理與任意端口功能無關(guān)的新資源。附加地或可替換地,用戶可以提供特定代碼以修改組件的編解碼邏輯, 從而使得組件能夠執(zhí)執(zhí)行新的編碼或解碼功能。附加地或可替換地,用戶可以提供附加代碼以定義用于向IL客戶端發(fā)布出去的回調(diào)通信的新通信模型。附加地或可替換地,用戶可以提供與不直接涉及模塊78到88中的一個的功能或能力相關(guān)的特定代碼。一旦用戶已經(jīng)增加了定義新組件的功能所需要的所有特定代碼,處理流向步驟106,上面通過參考圖7已經(jīng)討論過步驟106。盡管圖9的流程圖指定了配置模塊的具體順序,但是其它順序也是同樣有效的。 在一些實施例中用戶可以決定順序,而在其它實施方式中開發(fā)工具59自己可以決定順序。 此外,在一些實施方式中可以配置每個模塊,而在一些實施方式中僅可以配置模塊中的一些。此外,在一些實施方式中,將特定模塊指定為“強(qiáng)制的”而將其它模塊指定為“可選的”。 在這種實施方式中,僅強(qiáng)制的模塊應(yīng)當(dāng)被配置以創(chuàng)建新的組件,而可選的模塊不需要被配置,但是仍然可以被配置。第一和第二實施方式的開發(fā)工具59框架通過使用多個通用功能模塊概括新組件的設(shè)計來進(jìn)行操作。本方法的優(yōu)點如下。功能的每個模塊可以用于定義這樣的新組件設(shè)計的不同角色或責(zé)任,即該新組件設(shè)計需要確保由此產(chǎn)生的組件將與OpenMAX IL標(biāo)準(zhǔn)相兼容。例如,如上述通過參考圖1 所討論的,這可以包括任意OpenMAX IL組件必須具有的組件功能或方法的標(biāo)準(zhǔn)集合。因此,開發(fā)者可以通過配置每個模塊來設(shè)計新的組件,并且有信心的是由此產(chǎn)生的組件將與 OpenMAX IL標(biāo)準(zhǔn)相兼容。這降低了創(chuàng)建新組件所要求的工作量,并且由此減低了開發(fā)組件所花費(fèi)的時間。在沒有開發(fā)工具59的情況下,開發(fā)者必須花費(fèi)時間和努力以確保每個新組件包含如所期望的那樣工作的所有必須角色和責(zé)任,并且與OpenMAX IL標(biāo)準(zhǔn)相兼容。附加地,可以更新由配置的模塊所制作的新組件,以提供附加的或更新的功能。因此,在第一和第二實施方式中,開發(fā)工具59框架不會將新組件的組成限制為僅包括模塊。 有利地,可以通過模塊來構(gòu)造每個新組件,使得其與OpenMAX IL標(biāo)準(zhǔn)相兼容,然后可以進(jìn)一步修改所述組件以提供更新的功能。根據(jù)所述操作實現(xiàn)了將大量的代碼重用,因為僅僅進(jìn)一步的修改代表為組件專門編寫的代碼。這樣降低了創(chuàng)建新組件所需要的工作量并且也降低組件開發(fā)所花費(fèi)的時間。附加地,開發(fā)工具59框架的第一和第二實施方式可以在任意計算平臺上實現(xiàn)。例如,其可以在面向?qū)ο蟮钠脚_上實現(xiàn),其中每個模塊代表分開的類。根據(jù)這種實現(xiàn)方式,每個新組件是由每個類的對象組成的。按照一個或多個附加類的一個或多個對象,或一個或多個模塊類的附加方法和屬性的形式,提供關(guān)于組件的所要求的任意附加專用代碼??商鎿Q地,可以使用程序平臺和多個庫來實現(xiàn)框架。此外,在一些其它實施方式中,使用用于 Unix(POSIX)庫的可移植操作系統(tǒng)接口來實現(xiàn)框架。這種安排將因此與POSIX標(biāo)準(zhǔn)相兼容。 因此,框架可以在不同的POSIX兼容環(huán)境(例如不同的POSIX兼容操作系統(tǒng))之間移植。還應(yīng)當(dāng)了解的是,可以在與圖3中描述的計算設(shè)備不同的計算設(shè)備上實現(xiàn)開發(fā)工具的其它實施方式。特別地,可以將桌面計算機(jī)用作平臺,在所述平臺上操作開發(fā)工具59 的實施例以創(chuàng)建新的組件。此外,移動或便攜式電話還會提供開發(fā)工具59的一些實施例在其上操作的平臺。此外,第一和第二實施方式的開發(fā)工具59框架使用核心功能的多個通用模塊來使新組件的設(shè)計模塊化。因此,在核心功能中的一個要求更新或修改的示例性實例中,僅需要改變對應(yīng)的模塊。換句話說,不需要改變所有的其它模塊。通過按這種方式來操作,降低了為組件提供新功能所需的工作量,并且因此還降低了開發(fā)組件所花費(fèi)的時間。此外,存在與第二實施方式的特定模塊實現(xiàn)方式相關(guān)的多個優(yōu)點。這些優(yōu)點如下。關(guān)于FSM模塊78,有利的是將有限狀態(tài)機(jī)功能與新組件設(shè)計的其它部分分離,從而使得所述功能可以被定義一次并且為多個新組件設(shè)計所重用。特別地,按照由FSM模塊透明地處理狀態(tài)轉(zhuǎn)變改變和狀態(tài)驗證的方式,將狀態(tài)機(jī)功能與組件完全分離。關(guān)于PM模塊80,有利的是將端口管理功能與新組件設(shè)計的其它部分分離,使得所述功能可以被定義一次并且為多個新組件設(shè)計所重用。特別地,PM模塊80被設(shè)計為能夠管理和控制任意數(shù)量的端口,因此不需要基于組件具有的端口數(shù)量來在組件之間進(jìn)行區(qū)分。 附加地,這個模塊的實現(xiàn)可以被定義一次并且在沒有進(jìn)一步特殊化的情況下為多個新組件設(shè)計所重用。關(guān)于BPC模塊82,有利的是可以將組件的端口分隔成多個抽象層。例如,考慮用于與具體PCM技術(shù)相關(guān)的數(shù)據(jù)的新音頻端口。在最高層,COmxILPort定義任意類型的端口所需要的角色和責(zé)任。在下一層,COmxILAudioPort定義任意類型的音頻端口所需要的角色和責(zé)任。到目前為止,在規(guī)定端口中的開發(fā)僅包括配置BPC模塊82。接下來,用戶必須增加特定代碼90,其擴(kuò)展目前為止定義的通用音頻端口能力,以提供具體PCM技術(shù)。由于僅這個最后步驟實際上要求編寫特定代碼,整個過程實質(zhì)上比從開始就必須為端口編寫代碼更為高效。此外,從BPC模塊82產(chǎn)生與端口相關(guān)的代碼的重要部分,并且這個代碼可以被重用于創(chuàng)建其它音頻端口,進(jìn)一步降低必須定義的特定代碼的量。關(guān)于PFI模塊84,有利的是使用通用接口來抽象緩沖區(qū)處理,所述通用接口可以按照更好地適合具體組件設(shè)計的需求的方式來實現(xiàn)。例如,可以在組件的主要執(zhí)行線程中, 或在獨立線程中分配緩沖區(qū)處理。同樣,按照組件設(shè)計者可以在不同的組件設(shè)計中選擇按照不同方式來實現(xiàn)編解碼器功能的方式,來將編解碼器功能與剩余組件分離。例如,使用塞班(RTM)活動對象,或甚至完全在上下文中(即,在組件的主要執(zhí)行線程中),可以使用附加的處理線程來執(zhí)行編解碼器功能。關(guān)于CaM模型86,有利的是OpenMAX IL端口通信模型是通用的。特別地,使用CaM 模塊86,由開發(fā)工具59框架來透明地處理端口通信,無論它是隧道端口通信(即,組件之間)或IL客戶端通信(即,在IL客戶端和組件之間)。此外,CaM模塊86的設(shè)計允許上面陳述的不同回調(diào)/事件通信模型(即,異步上下文中回調(diào)/事件通信、同步上下文中回調(diào)/ 事件通信、以及異步上下文外回調(diào)/事件通信)。表格1包含與根據(jù)開發(fā)工具59的第二實施方式的代碼重用相關(guān)的數(shù)據(jù)。特別地, 表格1涉及兩個示例組件。第一組件是高級音頻編碼(AAC)解碼器并且包括兩個端口,以及第二組件是包括一個端口的PCM描繪器??梢詮谋砀?看出的是,在AAD解碼器的情況中,由框架所提供的代碼包括用于組件的全部代碼的78%。同樣,在PCM描繪器的情況中, 由框架提供的代碼包括用于組件的全部代碼的86%。
權(quán)利要求
1.一種方法,包括提供一個或多個軟件模塊的軟件框架,所述軟件模塊可配置以定義將使用所述軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述新多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口的功能的至少一部分。
2.一種方法,包括配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述新多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口的功能的至少一部分;以及根據(jù)配置的一個或多個軟件模塊,創(chuàng)建具有所述至少一個功能的新多媒體軟件組件。
3.根據(jù)權(quán)利要求1或2所述的方法,其中通過有限狀態(tài)機(jī)來建模所述新多媒體軟件組件的行為,并且所述至少一個功能包括用于實現(xiàn)有限狀態(tài)機(jī)的有限狀態(tài)機(jī)實現(xiàn)技術(shù)。
4.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述新多媒體軟件組件包括一個或多個通信端口,并且所述至少一個功能包括用于管理所述新多媒體軟件組件的至少一個端口的端口管理功能。
5.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述新多媒體軟件組件包括一個或多個通信端口,并且所述至少一個功能包括至少一個端口功能。
6.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述新多媒體軟件組件包括一個或多個通信端口,并且所述至少一個功能包括用于定義與所述新多媒體軟件組件的端口無關(guān)的至少一個新組件功能的管理器功能。
7.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述至少一個功能包括用于定義所述新多媒體軟件組件的數(shù)據(jù)操作符功能的處理功能接口功能,以及用于訪問數(shù)據(jù)操作符功能的接口。
8.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述至少一個功能包括用于處理來自所述新多媒體軟件組件的回調(diào)通信的回調(diào)管理器功能。
9.根據(jù)權(quán)利要求3至8中任意一項所述的方法,當(dāng)從屬于權(quán)利要求2時,進(jìn)一步包括從用戶接收輸入并且使用所述輸入用于配置所述一個或多個軟件模塊。
10.根據(jù)前述權(quán)利要求中的任意一項所述的方法,其中所述現(xiàn)有多媒體應(yīng)用編程接口是 OpenMAX ILAPI。
11.一種包括根據(jù)權(quán)利要求2至10中任意一項所述的方法創(chuàng)建的新多媒體軟件組件的移動電話機(jī)。
12.一種裝置,包括處理器;以及包括計算機(jī)程序代碼的存儲器,所述存儲器和所述計算機(jī)程序代碼被配置用于利用所述處理器來致使所述裝置執(zhí)行至少下述操作提供一個或多個軟件模塊的軟件框架,所述軟件模塊可配置用于定義將使用所述軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述新多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分。
13.一種裝置,包括處理器;以及包括計算機(jī)程序代碼的存儲器,所述存儲器和所述計算機(jī)程序代碼被配置用于利用所述處理器來致使所述裝置執(zhí)行至少下述操作配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分;以及根據(jù)所述配置的一個或多個軟件模塊,創(chuàng)建具有至少一個功能的新多媒體軟件組件。
14.一種計算機(jī)程序,包括用于提供一個或多個軟件模塊的軟件框架的代碼,所述軟件模塊可配置用于定義將使用所述軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述新多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分。
15.一種計算機(jī)程序,包括用于配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能的代碼,所述至少一個功能包括對于所述多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分;以及用于根據(jù)配置的一個或多個軟件模塊,創(chuàng)建具有至少一個功能的新多媒體軟件組件的代碼。
16.一種裝置,包括用于提供一個或多個軟件模塊的軟件框架的裝置,所述軟件模塊可配置用于定義將使用所述軟件框架產(chǎn)生的新多媒體軟件組件的至少一個功能,所述至少一個功能包括對于所述新多媒體組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分。
17.一種裝置,包括用于配置軟件框架的一個或多個軟件模塊以定義新多媒體軟件組件的至少一個功能的裝置,所述至少一個功能包括對于所述新多媒體軟件組件的用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的功能的至少一部分;以及用于根據(jù)配置的一個或多個軟件模塊,創(chuàng)建具有所述至少一個功能的新多媒體軟件組件的裝置。
全文摘要
本發(fā)明的實施例涉及提供一個或多個軟件模塊的軟件框架以及配置所述模塊。所述模塊可配置用于定義將使用所述框架產(chǎn)生的新多媒體軟件組件的至少一個功能。所述至少一個功能包括對于新組件用以符合現(xiàn)有多媒體應(yīng)用編程接口所需的完整功能的至少一部分。所述配置的模塊被用于創(chuàng)建具有所述功能的新組件。在一個實施例中,所述現(xiàn)有多媒體應(yīng)用編程接口是OpenMAX IL API。
文檔編號G06F9/44GK102473096SQ201080029430
公開日2012年5月23日 申請日期2010年6月25日 優(yōu)先權(quán)日2009年6月30日
發(fā)明者J·魯比奧 申請人:諾基亞公司