專利名稱:音頻視頻交互傳輸系統(tǒng)的流生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及音頻視頻交互(AVI)傳輸系統(tǒng)的流生成器(flowbuilder)。
音頻視頻交互(AVI)系統(tǒng)是建議采用的廣播娛樂系統(tǒng),在該系統(tǒng)中,復(fù)合信號(hào)從廣播站傳送到接收站。AVI信號(hào)如同在當(dāng)前的電視系統(tǒng)中那樣,包括音頻和視頻組分,還包括交互應(yīng)用組分。接收站包括數(shù)據(jù)處理器,該數(shù)據(jù)處理器根據(jù)交互應(yīng)用組分來提取交互應(yīng)用組分、提供分別疊加在廣播的視頻和音頻上的屏幕顯示和伴音、以及對(duì)收視者的輸入作出反應(yīng)。接收站中的數(shù)據(jù)處理器還可以包括諸如調(diào)制解調(diào)器這樣的通信設(shè)備,以便再根據(jù)交互應(yīng)用組分將來自收視者的信息回傳給廣播機(jī)構(gòu)或諸如廣告客戶這樣的另一方。
交互應(yīng)用組分由多個(gè)模塊組成,其中包括目錄模塊,該模塊充當(dāng)構(gòu)成交互節(jié)目部分的其它模塊的目錄。此外,至少有一個(gè)代碼模塊,它包含被接收站中的數(shù)據(jù)處理器執(zhí)行的可執(zhí)行代碼。特別是,稱為自動(dòng)執(zhí)行模塊的一個(gè)代碼模塊包含著啟動(dòng)交互應(yīng)用的執(zhí)行所必需的可執(zhí)行代碼。自動(dòng)地從交互應(yīng)用組分提取該自動(dòng)執(zhí)行模塊,并在接收站中的數(shù)據(jù)處理器首次檢測(cè)到交互應(yīng)用組分的存在時(shí)對(duì)其進(jìn)行執(zhí)行。還可以有一個(gè)或多個(gè)數(shù)據(jù)模塊,該數(shù)據(jù)模塊(或這些數(shù)據(jù)模塊)包含著將要被接收站中的數(shù)據(jù)處理器根據(jù)在代碼模塊(或在一些代碼模塊)中的可執(zhí)行代碼進(jìn)行處理的數(shù)據(jù)。最后,AVI復(fù)合信號(hào)還可以包括信號(hào)模塊,用以將消息發(fā)送給交互應(yīng)用。
為了使收視者能夠隨時(shí)加入AVI應(yīng)用以便根據(jù)他們自己的步調(diào)繼續(xù)將交互進(jìn)行下去,以及為了將在接收站中的數(shù)據(jù)處理器所需的存儲(chǔ)器數(shù)量減至最小,設(shè)想了在AVI信號(hào)中不斷地重復(fù)代碼和數(shù)據(jù)模塊??赡苄枰鼓承┠K比其它模塊更經(jīng)常地重復(fù)。例如,為了使收視者首次調(diào)諧AVI復(fù)合信號(hào)的時(shí)刻和收視者可以開始進(jìn)行交互的時(shí)刻之間的時(shí)間最短,也許需要比在交互組分中的其它模塊更經(jīng)常地重復(fù)目錄模塊和自動(dòng)執(zhí)行模塊。此外,也許需要保證在某一預(yù)定的時(shí)刻之前將某一模塊傳輸給接收站。例如,在打字幕的情形中,包含字幕的數(shù)據(jù)模塊必須在發(fā)出這些字詞的音頻組分之前到達(dá)接收機(jī)。
應(yīng)用編程人員在對(duì)該應(yīng)用進(jìn)行編程時(shí)知道哪一個(gè)模塊應(yīng)當(dāng)比其它模塊更經(jīng)常地被重復(fù)和/或哪一個(gè)模塊必須在預(yù)定的時(shí)刻之前被傳輸。編程人員因此能夠提供規(guī)定哪些模塊要被包括在交互應(yīng)用組分中的數(shù)據(jù)并提供這些模塊的調(diào)度數(shù)據(jù),作為應(yīng)用準(zhǔn)備的一部分。需要提供對(duì)如此提供的模塊和調(diào)度數(shù)據(jù)進(jìn)行分析、產(chǎn)生滿足任何需要的調(diào)度約束的交互組分?jǐn)?shù)據(jù)流并最大限度地符合任何其它的調(diào)度約束的機(jī)制。
根據(jù)本發(fā)明的原理,一種產(chǎn)生音頻視頻交互(AVI)復(fù)合信號(hào)的、表示應(yīng)用程序的交互組分?jǐn)?shù)據(jù)流的方法包括以下步驟首先產(chǎn)生表示應(yīng)用程序的程序文件;然后產(chǎn)生確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù);最后根據(jù)流數(shù)據(jù)有選擇地將程序文件插入到數(shù)據(jù)流中從而產(chǎn)生數(shù)據(jù)流。用于產(chǎn)生這樣的交互組分?jǐn)?shù)據(jù)流的設(shè)備包括表示應(yīng)用程序的程序文件源和確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù)源。一個(gè)流生成器根據(jù)來自流數(shù)據(jù)源的數(shù)據(jù)有選擇地將來自文件源的文件插入到交互組分中。
在附圖中
圖1是包括本發(fā)明的流生成器的發(fā)射站的局部的方框圖;圖2是包括本發(fā)明的流生成器的數(shù)據(jù)處理系統(tǒng)的方框圖;圖3是說明圖1所示的流生成器的操作的數(shù)據(jù)流程圖;圖4是說明目錄文件的結(jié)構(gòu)的存儲(chǔ)器布局圖,它有助于理解圖3所示的流生成器的操作;圖5是說明在圖3所示的流生成器中使用的模塊文件和調(diào)度文件的結(jié)構(gòu)和相互關(guān)系的存儲(chǔ)器布局圖;圖6是由在圖3所示的流生成器中的調(diào)度模塊執(zhí)行的處理的流程圖;圖7是有助于理解圖6所示的調(diào)度進(jìn)程的時(shí)序圖。
圖1是包括本發(fā)明的流生成器的發(fā)射站的局部的方框圖。在圖1中,應(yīng)用編程人員將諸如代碼和數(shù)據(jù)文件這樣的應(yīng)用文件和規(guī)定要被包括在應(yīng)用組分?jǐn)?shù)據(jù)流中的模塊和這些模塊的調(diào)度信息的流數(shù)據(jù)提供給流生成器10的相應(yīng)輸入端。流生成器10的輸出端與傳送分組器(transport packetizer)20的輸入端連接。傳送分組器20的輸出端與多路轉(zhuǎn)換器30的第一輸入端連接。多路轉(zhuǎn)換器30的輸出端與攜帶AVI數(shù)據(jù)流的傳送介質(zhì)連接。多路轉(zhuǎn)換器30的第二輸入端接收被分組的視頻表示數(shù)據(jù)信息,多路轉(zhuǎn)換器30的第三輸入端接收被分組的音頻表示數(shù)據(jù)信號(hào)。
圖2是包括本發(fā)明的流生成器10的數(shù)據(jù)處理系統(tǒng)的方框圖。在圖2中,中央處理部件(CPU)11通過系統(tǒng)總線14與讀/寫存儲(chǔ)器(RAM)12和只讀存儲(chǔ)器(ROM)13連接。圖2的數(shù)據(jù)處理系統(tǒng)還包括給應(yīng)用編程人員提供數(shù)據(jù)的用戶輸入設(shè)備16和從應(yīng)用編程人員接收數(shù)據(jù)的顯示設(shè)備15,兩者也與系統(tǒng)總線連接。海量存儲(chǔ)設(shè)備17也與系統(tǒng)總線連接,可用來暫存包含應(yīng)用文件、流數(shù)據(jù)文件和應(yīng)用編程人員使用的應(yīng)用生成器的程序的文件。CPU11、RAM12、ROM13、顯示設(shè)備15、用戶輸入設(shè)備16和海量存儲(chǔ)設(shè)備17按照數(shù)據(jù)處理系統(tǒng)中已知的方式操作,它們的操作將不詳細(xì)描述。例如,迄今描述的圖2的數(shù)據(jù)處理系統(tǒng)可在已知的個(gè)人計(jì)算機(jī)(PC)或工作站中實(shí)現(xiàn)。其它已知設(shè)備、例如網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器、打印機(jī)、總線擴(kuò)展器等也可以與數(shù)據(jù)處理系統(tǒng)中的系統(tǒng)總線連接。
分組器輸出適配器18提供了一個(gè)附加的輸出端口,該輸出端口是(圖1的)傳送分組器20的接口。分組器輸出適配器18也與系統(tǒng)總線14連接,并且可以僅僅是一個(gè)串行或并行輸出端口,就象當(dāng)前用作打印機(jī)的接口那樣。但是,也可要求專門設(shè)計(jì)的輸出適配器。數(shù)據(jù)處理系統(tǒng)接口設(shè)計(jì)領(lǐng)域的普通技術(shù)人員懂得如何設(shè)計(jì)和實(shí)現(xiàn)任何這樣的輸出適配器。分組器輸出適配器18的輸出端與流生成器10的輸出端19連接。輸出端19與傳送分組器20的輸入端連接。
參看圖1和圖2,在操作時(shí),應(yīng)用編程人員利用用戶輸入設(shè)備16和顯示設(shè)備15來產(chǎn)生代碼和數(shù)據(jù)文件的源數(shù)據(jù)。源數(shù)據(jù)暫存在海量存儲(chǔ)設(shè)備17中。應(yīng)用生成器中的編譯程序(它也存儲(chǔ)在海量存儲(chǔ)設(shè)備17中)按照已知的方式將源數(shù)據(jù)翻譯成為可執(zhí)行代碼文件以及相關(guān)的數(shù)據(jù)文件,并將這些文件存儲(chǔ)在海量存儲(chǔ)設(shè)備17中。以類似的方式,應(yīng)用編程人員產(chǎn)生用于規(guī)定要被包括在交互組分中的模塊和它們的特性以及對(duì)模塊插入交互組分?jǐn)?shù)據(jù)流進(jìn)行調(diào)度的源流數(shù)據(jù)。以下將更詳細(xì)地描述這一源數(shù)據(jù)的內(nèi)容。流生成器10對(duì)源流數(shù)據(jù)進(jìn)行處理,把代碼和數(shù)據(jù)文件與模塊聯(lián)系起來、對(duì)將模塊插入應(yīng)用組分?jǐn)?shù)據(jù)流進(jìn)行調(diào)度以及產(chǎn)生該數(shù)據(jù)流。流生成器10的輸出是交互組分?jǐn)?shù)據(jù)流,該數(shù)據(jù)流中的每一規(guī)定模塊被恰當(dāng)?shù)囟ㄐ虿⒃诤线m的時(shí)刻出現(xiàn)。該輸出通過輸出端19提供給傳送分組器20。傳送分組器20按照已知的方式對(duì)交互組分?jǐn)?shù)據(jù)流進(jìn)行分組。多路轉(zhuǎn)換器30也按照已知的方式對(duì)分組數(shù)據(jù)流以及分組視頻和音頻組分進(jìn)行多路轉(zhuǎn)換以便形成AVI數(shù)據(jù)流。
圖3是說明圖1和圖2所示流生成器10的操作的數(shù)據(jù)流程圖。在圖3中,應(yīng)用生成器5從應(yīng)用編程人員接收表示交互應(yīng)用程序的、由可執(zhí)行代碼的數(shù)據(jù)組成的源數(shù)據(jù)。應(yīng)用生成器5產(chǎn)生包含代碼和數(shù)據(jù)文件的文件集合104。還可以在流生成器10內(nèi)產(chǎn)生模塊。例如,可以在流生成器10內(nèi)產(chǎn)生信號(hào)模塊和/或小的數(shù)據(jù)模塊并在內(nèi)部對(duì)它們進(jìn)行處理。(雖然可以如此產(chǎn)生任何類型的模塊,但應(yīng)用生成器5事實(shí)上更多地產(chǎn)生代碼和較大的數(shù)據(jù)模塊。)圖3的其余部分表示通過流生成器10的數(shù)據(jù)流動(dòng)。
流生成器10分析應(yīng)用編程人員提供的源流數(shù)據(jù)。以下將詳細(xì)描述源流數(shù)據(jù)的格式。流數(shù)據(jù)包括(1)與應(yīng)用有關(guān)的數(shù)據(jù),(2)規(guī)定要被包括在應(yīng)用中的模塊和它們的特性的數(shù)據(jù),(3)把代碼和數(shù)據(jù)文件與模塊聯(lián)系起來的數(shù)據(jù),以及(4)對(duì)模塊在應(yīng)用組分?jǐn)?shù)據(jù)流中的出現(xiàn)進(jìn)行調(diào)度的數(shù)據(jù)。流數(shù)據(jù)在步驟102中被處理,更準(zhǔn)確地說,被進(jìn)行分析。與應(yīng)用有關(guān)的數(shù)據(jù)和規(guī)定模塊和它們的特性的數(shù)據(jù)傳送給步驟106。步驟106構(gòu)成目錄模塊并將構(gòu)成的目錄模塊存儲(chǔ)在目錄文件108中。
圖4是說明目錄文件108的結(jié)構(gòu)的存儲(chǔ)器布局圖。在圖4中,目錄文件108中的數(shù)據(jù)字段用水平帶來表示,記錄由粗水平線來分隔。目錄文件108具有包含應(yīng)用數(shù)據(jù)的第一記錄,應(yīng)用數(shù)據(jù)包括應(yīng)用標(biāo)識(shí)符、運(yùn)行應(yīng)用所需的譯碼器存儲(chǔ)器、和應(yīng)用中的模塊總數(shù)。當(dāng)與應(yīng)用有關(guān)的數(shù)據(jù)被步驟106接收時(shí),它就被存儲(chǔ)和被分析。將適當(dāng)?shù)臄?shù)據(jù)放在目錄文件108的第一記錄的相應(yīng)字段中。目錄文件108還具有用于在應(yīng)用中的每一模塊的一個(gè)記錄,該記錄包括模塊標(biāo)識(shí)符、存儲(chǔ)器運(yùn)行這一模塊所需的模塊長(zhǎng)度、和其它標(biāo)志。當(dāng)規(guī)定模塊和其特性的數(shù)據(jù)被步驟106接收時(shí),它也被存儲(chǔ)和被分析。如果該數(shù)據(jù)與新定義的模塊有關(guān),則就在目錄文件108中產(chǎn)生一個(gè)新的記錄。然后將適當(dāng)?shù)哪K數(shù)據(jù)放入該新記錄的相應(yīng)字段中。在數(shù)據(jù)被步驟106接收時(shí),可以更新以前定義的記錄中的字段。例如,每當(dāng)新定義一模塊,就用加一來更新應(yīng)用記錄中的、指定在該應(yīng)用中的模塊的總數(shù)的字段。
包含應(yīng)用數(shù)據(jù)的源流數(shù)據(jù)語句是Application(APPIN_ID,APPLN_MEMORY)(實(shí)際的編程語句可以具有不同的形式,并且/或者包含不同的或額外的自變量,這些自變量為簡(jiǎn)明起見已被省略。此外,系統(tǒng)編程領(lǐng)域的普通技術(shù)人員將能夠選擇諸如面向目標(biāo)編程這樣的編程范例和諸如C++編程環(huán)境這樣的編程環(huán)境來產(chǎn)生和處理這樣的編程語句)。當(dāng)步驟102識(shí)別出流數(shù)據(jù)中的該語句時(shí),它就被傳送給構(gòu)成目錄模塊步驟106,該構(gòu)成目錄模塊處理106初始化目錄模塊文件108,并將應(yīng)用標(biāo)識(shí)符(APPLN ID)和所需的應(yīng)用存儲(chǔ)器(APPLN MEMORY)插入第一記錄的相應(yīng)字段中。
有四條可能的規(guī)定模塊和它們的特性的源流數(shù)據(jù)語句appAutoExec(MODULE_ID,MODULE_MEMORY)appCode(MODULE_ID,MODULE_MEMORY)appDate(MODULE_ID,MODULE_MEMORY)appSignal()第一條編程語句標(biāo)識(shí)包含在接收站首次檢測(cè)到交互組分時(shí)被自動(dòng)地執(zhí)行的代碼的自動(dòng)執(zhí)行模塊。第二條編程語句標(biāo)識(shí)包含可執(zhí)行代碼的模塊而第三條編程語句標(biāo)識(shí)包含數(shù)據(jù)的模塊。當(dāng)這些編程語句之一被步驟102識(shí)別時(shí),它就被傳送給構(gòu)成目錄模塊處理106,該構(gòu)成目錄模塊步驟106建立新的模塊記錄,并將模塊標(biāo)識(shí)符(MODULE_ID)和所需的模塊存儲(chǔ)器(MODULE_MEMORY)插入新建立的模塊記錄的相應(yīng)字段中。這些編程語句的最后一條指定信號(hào)模塊。這是將信號(hào)發(fā)送給接收站的特殊模塊。在最佳實(shí)施例中,信號(hào)模塊被限制為120個(gè)字符并且沒有被指定出模塊名。
再參看圖3,在流動(dòng)數(shù)據(jù)在步驟102中被進(jìn)行分析時(shí),把代碼和數(shù)據(jù)文件與模塊聯(lián)系起來的數(shù)據(jù)提供給處理110。步驟110從文件集合104檢索合適的代碼和/或數(shù)據(jù)文件、從目錄文件108的相關(guān)模塊記錄檢索數(shù)據(jù)。步驟110利用檢索數(shù)據(jù)來格式化并產(chǎn)生包含該文件的數(shù)據(jù)的文件并將其存儲(chǔ)在模塊文件集合112中。
圖5的右手側(cè)是說明模塊文件112的結(jié)構(gòu)的存儲(chǔ)器布局圖。被包括在交互組分?jǐn)?shù)據(jù)流中的每一模塊都具有在模塊文件112中的一個(gè)記錄,該記錄包含實(shí)際構(gòu)成模塊的數(shù)據(jù),該數(shù)據(jù)將通過傳送介質(zhì)傳送給接收站。如圖5所示,每一模塊包括包含與該模塊相關(guān)的數(shù)據(jù)的標(biāo)題字段和模塊數(shù)據(jù)字段。標(biāo)題字段包括模塊標(biāo)識(shí)符、模塊版本編號(hào)和模塊長(zhǎng)度,此時(shí)它將包含循環(huán)冗余檢驗(yàn)(CRC)碼。這些信息中的某些可以根據(jù)文件集合104中的代碼或數(shù)據(jù)文件來確定,某些可以由步驟106保持的模塊相關(guān)的數(shù)據(jù)來提供。模塊數(shù)據(jù)字段包含構(gòu)成該模塊的可執(zhí)行代碼或數(shù)據(jù),它是從文件集合104中的指定的代碼或數(shù)據(jù)文件檢索出的。在最佳實(shí)施例中,將標(biāo)題數(shù)據(jù)字段形成標(biāo)題數(shù)據(jù)包,模塊數(shù)據(jù)字段將在(圖1的)傳送分組器20中被分組成為多個(gè)同樣大小的數(shù)據(jù)包。
包含把代碼和數(shù)據(jù)文件與模塊聯(lián)系起來的數(shù)據(jù)的源流數(shù)據(jù)語句是MODULE_ID.module Source(Module File)或MODULE_ID.module Source(Module Buffer)第一條語句把來自文件集合104的代碼或數(shù)據(jù)文件與以前定義的模塊聯(lián)系起來;第二條語句把以前由在源流數(shù)據(jù)中的適當(dāng)?shù)木幊陶Z句(未表示出來)定義的存儲(chǔ)器緩沖器與以前定義的模塊聯(lián)系起來。如上所述,第二條語句允許應(yīng)用編程人員在源流數(shù)據(jù)中定義模塊數(shù)據(jù)。當(dāng)步驟102識(shí)別出流數(shù)據(jù)中的這兩條語句中的任一條時(shí),該條語句就被傳送給格式化模塊步驟110,該格式化模塊步驟110在模塊文件112中建立新的記錄,并將編程語句的模塊標(biāo)識(shí)符(MODULE_ID)、模塊版本編號(hào)(如果該語句對(duì)于相同的模塊被多次調(diào)用,則處理110就自動(dòng)地維護(hù)該模塊版本編號(hào))、和模塊長(zhǎng)度(來自目錄文件108中的相應(yīng)記錄)放入到模塊文件112中新建立的記錄的標(biāo)題字段中。然后文件集合104的指定的代碼或數(shù)據(jù)文件(對(duì)于第一條語句)或存儲(chǔ)器緩沖器(對(duì)于第二條語句)的內(nèi)容就被拷貝到在模塊文件112中新建立的記錄的模塊數(shù)據(jù)字段中去。
再參看圖3,當(dāng)流數(shù)據(jù)在步驟102中被進(jìn)行分析時(shí),將對(duì)模塊在應(yīng)用分量數(shù)據(jù)流中的出現(xiàn)進(jìn)行調(diào)度的數(shù)據(jù)傳送給步驟114。步驟114收集應(yīng)用編程人員提供的所有調(diào)度信息。收集的調(diào)度數(shù)據(jù)可以包含模塊必要的預(yù)定時(shí)間和任選的預(yù)定時(shí)間。以下將更詳細(xì)地描述不同類型的調(diào)度請(qǐng)求。當(dāng)已收集了所有的調(diào)度信息時(shí),就給步驟114提供指令來對(duì)模塊進(jìn)行調(diào)度。然后對(duì)收集的調(diào)度數(shù)據(jù)進(jìn)行處理并試圖根據(jù)收集的調(diào)度數(shù)據(jù)對(duì)模塊進(jìn)行調(diào)度。如果不能夠滿足全部必要的預(yù)定時(shí)間,則調(diào)度請(qǐng)求就失敗,將診斷信息返回給應(yīng)用編程人員。否則就產(chǎn)生將模塊放入交互組分?jǐn)?shù)據(jù)流中的定時(shí)信息并將其存儲(chǔ)在調(diào)度文件116中。以下將更詳細(xì)地描述產(chǎn)生調(diào)度文件116的過程。
圖5的左手側(cè)是說明調(diào)度文件116的結(jié)構(gòu)的存儲(chǔ)器布局圖。調(diào)度文件116具有一個(gè)對(duì)于模塊在交互組分?jǐn)?shù)據(jù)流中的每次出現(xiàn)(也稱為事例(instance))的記錄,該記錄包含該出現(xiàn)與交互程序的開始的時(shí)間偏移、指向在模塊文件112中的、包含將要在時(shí)間偏移處被放入交互組分?jǐn)?shù)據(jù)流的模塊數(shù)據(jù)的記錄的指針;要被放入數(shù)據(jù)流的傳輸單元的長(zhǎng)度;以及在要被包括在被調(diào)度的傳輸單元中的數(shù)據(jù)的模塊數(shù)據(jù)字段內(nèi)的偏移。按照時(shí)間偏移的次序來維護(hù)調(diào)度文件116中的各記錄(即,從與第一個(gè)被調(diào)度模塊相關(guān)的記錄直到與最后的被調(diào)度模塊相關(guān)的記錄)。關(guān)于這些字段的更詳細(xì)的描述在下面給出。
在圖5中,調(diào)度文件116中的第一個(gè)記錄包含用于將模塊文件112中的第一個(gè)模塊插入交互組分?jǐn)?shù)據(jù)流的調(diào)度數(shù)據(jù),這由從該記錄的模塊指針字段指向模塊文件112中的第一個(gè)記錄的箭頭所表示。調(diào)度文件116中的第二個(gè)記錄與模塊文件112中的第四個(gè)模塊相關(guān),調(diào)度文件116中的第三個(gè)記錄與模塊文件112中的第三個(gè)模塊相關(guān)。
如上所述,應(yīng)用編程人員可以給包含必要的和任選的預(yù)定時(shí)間的流生成器10提供調(diào)度數(shù)據(jù)。在最佳實(shí)施例中,有四類模塊調(diào)度請(qǐng)求目錄模塊、定時(shí)模塊、靈活時(shí)間模塊和最大插入模塊(max-insert module)。
如上所述,流生成器10中的步驟106根據(jù)來自應(yīng)用編程人員的流數(shù)據(jù)自動(dòng)地產(chǎn)生目錄模塊。調(diào)度模塊處理114在交互組分?jǐn)?shù)據(jù)流的開始處(時(shí)間偏移=O)自動(dòng)地放置目錄模塊的事例。在最佳實(shí)施例中,這是不能夠改變的,因此在此時(shí)任何其它模塊的所需的調(diào)度請(qǐng)求將導(dǎo)致是錯(cuò)誤的沖突,并將發(fā)出診斷信息。
可以利用兩條編程語句中的一條根據(jù)來自應(yīng)用編程人員的流數(shù)據(jù)對(duì)目錄模塊的其它事例進(jìn)行調(diào)度insertDirectory(insertionTime)或
insertDirectory(insertionTime,moduleSpacing,insertionDuration).第一條語句要求在時(shí)間偏移insertionTime處將目錄模塊的事例插入交互組分?jǐn)?shù)據(jù)流。第二條語句要求在insertionDuration的持續(xù)時(shí)間內(nèi)、從時(shí)間偏移insertionTime開始、間隔時(shí)間偏移moduleSpacing地插入多個(gè)事例。如果省略了insertionDuration自變量,則插入目錄模塊的多個(gè)事例(instance),至到交互程序結(jié)束為止。與由這些編程語句表示的插入請(qǐng)求(和隨后的所有插入請(qǐng)求)有關(guān)的數(shù)據(jù)被暫存在流生成器10的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(未表示出來)中。在不存在應(yīng)用編程人員的任何這樣的調(diào)度請(qǐng)求的條件下,目錄模塊就按照與自動(dòng)執(zhí)行模塊相同的頻率被自動(dòng)地調(diào)度(以下描述)。
MODULE_ID.insertModule(insertionTime)該語句要求在時(shí)間偏移insertionTime處將模塊MODULE_ID的事例插入數(shù)據(jù)流。對(duì)任何模塊可以進(jìn)行任意多次這樣的調(diào)度請(qǐng)求。定時(shí)調(diào)度請(qǐng)求是必要的調(diào)度請(qǐng)求。為了調(diào)度的成功,所有的定時(shí)調(diào)度請(qǐng)求必須無沖突地得到滿足。與所有這樣的調(diào)度請(qǐng)求有關(guān)的數(shù)據(jù)被存儲(chǔ)在流生成器10的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中。
靈活時(shí)間模塊調(diào)度請(qǐng)求是在調(diào)度時(shí)間上有某種靈活性的模塊調(diào)度請(qǐng)求。有若干種靈活時(shí)間模塊調(diào)度請(qǐng)求。第一種是在當(dāng)前系統(tǒng)時(shí)間之后的第一個(gè)可用時(shí)刻將被請(qǐng)求模塊的一個(gè)事例插入交互組分?jǐn)?shù)據(jù)流的請(qǐng)求,第一個(gè)可用時(shí)刻是流生成器10利用沒有在此描述的編程語句進(jìn)行維護(hù)的時(shí)間偏移值。請(qǐng)求調(diào)度這種靈活時(shí)間模塊的編程語句是
MODULE_ID.insertModule()該編程語句的形式與定時(shí)模塊調(diào)度請(qǐng)求(上面)的相同,沒有規(guī)定插入時(shí)間偏移。
第二種靈活時(shí)間模塊調(diào)度請(qǐng)求是將被請(qǐng)求模塊的多個(gè)事例插入交互組分?jǐn)?shù)據(jù)流的請(qǐng)求。請(qǐng)求調(diào)度這種靈活時(shí)間模塊的編程語句是MODULE_ID.insertModule(insertionTime,moduleSpacing,insertionPeriod)該語句要求將被請(qǐng)求模塊MODULE ID的多個(gè)事例插入交互組分?jǐn)?shù)據(jù)流。第一個(gè)事例在insertionTime之后的第一個(gè)可用時(shí)間偏移處被插入。被請(qǐng)求模塊MODULE_ID的事例之間的時(shí)間間隔為時(shí)間偏移間隔moduleSpacing。在從insertionTime起的時(shí)間偏移持續(xù)時(shí)間insertionPeriod內(nèi)插入事例。如果省略了insertionPeriod自變量,則在insertionTime和交互應(yīng)用的結(jié)束之間插入被請(qǐng)求模塊的多個(gè)事例。如果不能夠?qū)Χ鄠€(gè)事例的任一個(gè)進(jìn)行調(diào)度,則調(diào)度失敗,發(fā)出診斷信息。最大插入模塊調(diào)度請(qǐng)求的編程語句是MODULE_ID.insertModule(insertionTime,MAXIMUM_INSERTION,insertionPeriod).該語句類似于靈活時(shí)間模塊請(qǐng)求(上面)的多事例形式,預(yù)先定義的常數(shù)MAXIMUM_INSERTION作為moduleSpacing自變量來提供。在這一情形中,在時(shí)間偏移持續(xù)時(shí)間insertionPeriod內(nèi)有多少能嵌入的所請(qǐng)求的模塊MODULE ID的事例便插入多少到交互分量數(shù)據(jù)流中去。但是,在這一情形中,如果沒有事例能夠被調(diào)度,則調(diào)度仍然繼續(xù),因此,不發(fā)出診斷信息。
如上所述,在全部調(diào)度請(qǐng)求都已被接收和處理之后,就提供一條指令來對(duì)交互組分?jǐn)?shù)據(jù)流進(jìn)行調(diào)度。這種指令的編程語句是ScheduleFlow().如上所述,根據(jù)該指令,對(duì)存儲(chǔ)在流生成器10的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中的、表示所有以前輸入的調(diào)度請(qǐng)求的以前存儲(chǔ)數(shù)據(jù)進(jìn)行分析,并產(chǎn)生調(diào)度文件116。
一般來說,當(dāng)任一模塊請(qǐng)求被調(diào)度時(shí),交互組分?jǐn)?shù)據(jù)流中的開始時(shí)間偏移從該請(qǐng)求來確定,而該模塊的結(jié)束時(shí)間偏移根據(jù)模塊長(zhǎng)度和交互組分的傳輸速率來確定。對(duì)照已被調(diào)度的模塊來檢驗(yàn)由調(diào)度請(qǐng)求表示的時(shí)間段,以便確定是否存在任何沖突。如果存在沖突,則采取消解行動(dòng),這取決于正在被處理的調(diào)度請(qǐng)求的類型(定時(shí)、靈活時(shí)間等)。否則,則在表示新近被調(diào)度的模塊的(圖5的)調(diào)度文件116中建立一個(gè)新的記錄。
參看圖5,在調(diào)度文件116的新的記錄中,開始時(shí)間偏移被插入到時(shí)間偏移字段,指向包括將要在該時(shí)間偏移處被傳送的模塊的模塊文件112中的入口的指針被插入到模塊指針字段。模塊長(zhǎng)度是從模塊標(biāo)題檢索的,并被插入到傳輸單元長(zhǎng)度字段,傳輸單元偏移最初設(shè)定為0??梢园凑找韵旅枋龅姆绞阶鳛闆_突消解過程的一部分來改變這最后兩個(gè)字段。
圖6是圖3的調(diào)度模塊步驟114根據(jù)scheduleFlow()編程語句所執(zhí)行的步驟200的流程圖,圖7是有助于理解圖6所示的調(diào)度步驟的時(shí)序圖。在圖7中,用長(zhǎng)方形來表示模塊,模塊的標(biāo)識(shí)符位于相應(yīng)等時(shí)線上的長(zhǎng)方形內(nèi),每一等時(shí)線表示在調(diào)度步驟中的不同時(shí)刻的交互組分?jǐn)?shù)據(jù)流的相同部分。
在圖6中,過程開始于步200。在步202,如上所述,第一目錄模塊在時(shí)間偏移0時(shí)插入到交互分量數(shù)據(jù)流。參看圖5,調(diào)度文件116中的第一個(gè)記錄表示該第一個(gè)目錄模塊,模塊文件112中的第一個(gè)記錄包含該目錄模塊。在這一情形中,時(shí)間偏移字段的值為0,模塊指針指向模塊文件112中的目錄模塊入口。傳輸單元長(zhǎng)度包含目錄模塊的長(zhǎng)度,傳輸單元偏移為0。參看圖7,等時(shí)線a)表示在時(shí)刻0該第一目錄模塊300插入后的數(shù)據(jù)流。
在步204,對(duì)所有定時(shí)模塊請(qǐng)求進(jìn)行調(diào)度。如上所述,定時(shí)模塊請(qǐng)求可用于任何類型的模塊,包括目錄模塊在內(nèi)。首先,對(duì)所有定時(shí)目錄模塊進(jìn)行調(diào)度。然后按照其余的定時(shí)模塊請(qǐng)求在(圖3的)源數(shù)據(jù)流中出現(xiàn)的次序?qū)λ鼈冞M(jìn)行調(diào)度。如上所述,確定每一定時(shí)模塊請(qǐng)求的開始和結(jié)束時(shí)間偏移。如果這兩個(gè)時(shí)間偏移中的任何一個(gè)與以前調(diào)度的模塊重疊,則存在沖突。在這種情形中,調(diào)度失敗,發(fā)出診斷信息。
例如,圖7的等時(shí)線b)表示步206結(jié)束之后的數(shù)據(jù)源。在這一例子中,在時(shí)刻t1作出定時(shí)目錄模塊請(qǐng)求。根據(jù)這一請(qǐng)求,在數(shù)據(jù)流中插入目錄模塊的事例302。然后按照這樣的次序在時(shí)刻t2作出自動(dòng)執(zhí)行模塊的定時(shí)模塊請(qǐng)求,在時(shí)刻t3作出代碼1模塊的定時(shí)模塊請(qǐng)求。根據(jù)這些請(qǐng)求,自動(dòng)執(zhí)行模塊的事例304在時(shí)刻t2插入到數(shù)據(jù)流,代碼1模塊的事例306在時(shí)刻t3插入到數(shù)據(jù)流。但是,如果在時(shí)刻t4接著作出定時(shí)模塊請(qǐng)求,則將造成與以前調(diào)度的代碼1模塊的沖突,調(diào)度失敗,將發(fā)出診斷信息。
在步206,對(duì)應(yīng)用編程人員作出的多事例靈活時(shí)間請(qǐng)求的那些目錄模塊調(diào)度請(qǐng)求或者由流生成器10(按照如上所述的與自動(dòng)執(zhí)行模塊相同的重復(fù)頻率)自動(dòng)地產(chǎn)生的那些目錄模塊調(diào)度請(qǐng)求進(jìn)行處理。對(duì)目錄模塊的多個(gè)事例進(jìn)行調(diào)度是從第一個(gè)被請(qǐng)求的或自動(dòng)地被產(chǎn)生的事例開始直到最后一個(gè)被請(qǐng)求的或自動(dòng)地被產(chǎn)生的事例(即交互程序的結(jié)束)。對(duì)每一個(gè)被請(qǐng)求的事例,計(jì)算所需的開始時(shí)刻。如果在該所需的開始時(shí)刻已對(duì)一模塊進(jìn)行調(diào)度,則尋找盡可能地接近所需的開始時(shí)刻的沒有其它模塊已被調(diào)度的時(shí)刻,該時(shí)刻可以在所需開始時(shí)刻之前或在其之后。然后從該時(shí)刻開始對(duì)目錄模塊進(jìn)行調(diào)度。
如果在可用的時(shí)隙內(nèi)不能夠嵌入整個(gè)目錄模塊,則將該目錄模塊分成為多個(gè)傳輸單元。將在第一個(gè)可用時(shí)隙盡可能多的能嵌入的目錄模塊插入到數(shù)據(jù)流中的傳輸單元,將該目錄模塊的余下部分嵌入到占據(jù)全部隨后可用時(shí)隙的傳輸單元中,直到整個(gè)目錄模塊已被傳送為止。如果該目錄模塊的最后的傳輸單元超過了下一個(gè)目錄模塊事例的所需開始時(shí)刻,則調(diào)度失敗,產(chǎn)生診斷信息。
參看圖5,當(dāng)一模塊被分割時(shí),對(duì)插入到數(shù)據(jù)流的每一傳輸單元在調(diào)度文件116中建立單獨(dú)的記錄。這樣地來建立第一個(gè)記錄,其時(shí)間偏移是模塊第一部分的開始時(shí)刻,模塊指針指向包含所需模塊(此時(shí)為目錄模塊)的模塊文件112中的記錄。傳輸單元長(zhǎng)度被設(shè)定為能夠在第一部分中被傳輸?shù)淖止?jié)數(shù),傳輸單元偏移被設(shè)定為0。然后這樣地建立調(diào)度文件116中的第二記錄,其時(shí)間偏移是數(shù)據(jù)流中下一個(gè)可用時(shí)隙的開始時(shí)刻,模塊指針仍然指向包含所需模塊的模塊文件112中的記錄。在這一情形中,傳輸單元長(zhǎng)度包含能夠在第二部分中被傳輸?shù)淖止?jié)數(shù),傳輸單元偏移被設(shè)定為指向在模塊文件112的所需模塊記錄中的模塊字段內(nèi)要被傳輸?shù)南乱粋€(gè)字節(jié)。類似地建立調(diào)度文件116中的各相繼的記錄,直到整個(gè)模塊已被傳輸為止。
現(xiàn)在參看圖7,等時(shí)線c)表示步206結(jié)束之后的數(shù)據(jù)流。在這一例子中,作出編程人員的靈活時(shí)間目錄模塊請(qǐng)求,以便從所需時(shí)刻t5開始插入該目錄模塊的多個(gè)事例,各事例之間間隔著模塊間隔(SPACING),直到交互分量數(shù)據(jù)流的結(jié)束。在這一情形中,所需時(shí)刻t5與以前所調(diào)度的自動(dòng)執(zhí)行模塊304重疊。與t5最接近的可用時(shí)刻是時(shí)刻t6、即該自動(dòng)執(zhí)行模塊304的結(jié)束。有足夠的自由時(shí)間來傳送整個(gè)目錄模塊,因此設(shè)置調(diào)度文件116的一入口以便在時(shí)刻t6將目錄模塊的整個(gè)事例308插入到數(shù)據(jù)流。目錄模塊的下一個(gè)事例的所需開始時(shí)刻是在時(shí)刻t7。這一時(shí)刻是可用的,但是,沒有足夠的時(shí)間來包括目錄模塊的整個(gè)事例,該目錄模塊必須被分割。
目錄模塊事例的第一部分310(標(biāo)為“D”)開始于時(shí)刻t7,結(jié)束于時(shí)刻t3,時(shí)刻t3是以前調(diào)度的代碼1模塊事例306的開始時(shí)刻。目錄模塊事例的第二部分(標(biāo)為“IR”)312開始于時(shí)刻t8,該時(shí)刻t8是代碼1模塊事例306的結(jié)束,結(jié)束于時(shí)刻t9。如圖7中的線鏈接部分310和312所示,第一部分310和第二部分312的組合包括了目錄模塊的整個(gè)事例。
如上所述,對(duì)于目錄模塊的這一事例產(chǎn)生了(圖5的)調(diào)度文件116中的兩個(gè)記錄。第一個(gè)記錄放置在代碼1模塊記錄之前,該記錄包括t7的時(shí)間偏移、包含著在第一部分中的字節(jié)數(shù)B1的傳輸長(zhǎng)度字段、和0的傳輸單元偏移。第二個(gè)記錄放置在代碼1模塊記錄之后,該記錄包括t8的時(shí)間偏移、包含著在第二部分中的字節(jié)數(shù)B2的傳輸長(zhǎng)度字段、和B1+1的傳輸單元偏移。這兩個(gè)記錄的模塊指針都指向模塊文件112中包含著目錄模塊的記錄。
再參看圖7,目錄模塊下一個(gè)事例的所需開始時(shí)刻是時(shí)刻t10,該時(shí)刻是時(shí)刻t7+SPACING(間隔)。因?yàn)檫@一時(shí)刻是可用的,以及有足夠的可用的時(shí)間用于目錄模塊的整個(gè)事例,所以按照如上所述的方式設(shè)置(圖5的)調(diào)度文件116中的一個(gè)記錄以便從時(shí)刻t10開始將目錄模塊的事例314插入到數(shù)據(jù)流。如果目錄模塊以前的事例(310,312)的結(jié)束時(shí)刻t9比下一個(gè)示例的所需開始時(shí)刻t10晚(這是可能出現(xiàn)的,例如,如果代碼1模塊的事例306的持續(xù)時(shí)間較長(zhǎng)),則調(diào)度就失敗了,從而發(fā)出診斷信息。直到交互組分程序結(jié)束之前,繼續(xù)插入被SPACING(間隔)分隔開的目錄模塊的事例的上述過程。還可以規(guī)定用于將模塊的多個(gè)事例插入到數(shù)據(jù)流的時(shí)間段(如上所述)。如果已作出了這樣的請(qǐng)求,則只要事例的所需開始時(shí)間在規(guī)定的時(shí)間段內(nèi),就插入目錄模塊事例。
再參看圖6,在步208,靈活時(shí)間模塊被調(diào)度。如上所述,有兩類靈活時(shí)間模塊請(qǐng)求。第一類是單事例靈活時(shí)間模塊請(qǐng)求,第二類是多事例靈活時(shí)間模塊請(qǐng)求。在步208,首先按照應(yīng)用編程人員在源流數(shù)據(jù)中提供單事例靈活時(shí)間模塊請(qǐng)求的次序?qū)λ械膯蝹€(gè)事例靈活時(shí)間模塊請(qǐng)求(這些請(qǐng)求可以包括對(duì)目錄模塊單個(gè)事例的請(qǐng)求)進(jìn)行調(diào)度。如上所述,所需開始時(shí)刻根據(jù)源流數(shù)據(jù)中的請(qǐng)求來確定。如果所需開始時(shí)刻是可用的,則在調(diào)度文件116中這樣地建立一個(gè)記錄,其所需開始時(shí)刻存儲(chǔ)在時(shí)間偏移字段中,模塊指針指向模塊文件112中包含著所需模塊的記錄。如上所述,如果可用時(shí)間不足以傳輸所需模塊的整個(gè)事例,則該模塊可被分割成為各個(gè)部分。如果所需開始時(shí)刻不是可用的,則在下一個(gè)可用時(shí)刻插入所需模塊,如果需要,所需模塊可被分割成為各個(gè)部分。如上所述,插入時(shí)間間隔可以由應(yīng)用編程人員來規(guī)定。如果不能夠在所需開始時(shí)刻的插入時(shí)間間隔內(nèi)對(duì)所需模塊進(jìn)行調(diào)度,則調(diào)度失敗,發(fā)出診斷信息。
參看圖7,等時(shí)線d)表示步208的第一部分結(jié)束之后的數(shù)據(jù)流。在等時(shí)線d)中,在插入時(shí)間間隔(PERIOD)內(nèi)的時(shí)刻t3對(duì)信號(hào)模塊S的事例進(jìn)行調(diào)度的請(qǐng)求被處理。但是,時(shí)刻t3不是可用的,因此尋找下一個(gè)可用時(shí)隙。這一時(shí)隙位于時(shí)刻t9,該時(shí)刻t9是目錄模塊事例的第二部分312的結(jié)束。因?yàn)檫@一時(shí)隙在插入時(shí)間間隔(PERIOD)內(nèi),所以按照下面描述的方式從時(shí)刻t9開始將該信號(hào)模塊S的事例316插入到數(shù)據(jù)流。如果縮短了插入時(shí)間間隔(PERIOD),以致使其不延伸到時(shí)刻t9,則這一調(diào)度請(qǐng)求失敗,發(fā)出診斷信息。
再參看圖6,在步208對(duì)多事例靈活時(shí)間模塊請(qǐng)求進(jìn)行調(diào)度。在對(duì)下一個(gè)模塊請(qǐng)求進(jìn)行調(diào)度之前對(duì)一個(gè)模塊的全部被請(qǐng)求事例進(jìn)行調(diào)度。如以上詳細(xì)描述的那樣,任何這種調(diào)度請(qǐng)求的調(diào)度過程與多個(gè)事例目錄模塊請(qǐng)求的調(diào)度過程相同,在此將不再詳細(xì)描述。以數(shù)據(jù)流中的第一個(gè)所需事例開始到數(shù)據(jù)流中的最后一個(gè)所需事例為止,對(duì)各事例進(jìn)行調(diào)度。所需開始時(shí)刻根據(jù)調(diào)度請(qǐng)求來確定。如果所需開始時(shí)刻是可用的,則在調(diào)度文件116中建立記錄,以便在該時(shí)刻插入需要模塊的事例。如果所需時(shí)刻不是可用的,則尋找下一個(gè)可用時(shí)刻,并在該時(shí)刻插入該事例。如果沒有足夠的時(shí)間來插入整個(gè)事例,則將該事例分成若干部分。如果不能夠在下一個(gè)事例的所需開始時(shí)刻之前調(diào)度整個(gè)事例,則調(diào)度失敗,發(fā)出診斷信息。
應(yīng)用編程人員可以以兩種方式來改變對(duì)多個(gè)事例靈活時(shí)間模塊請(qǐng)求進(jìn)行調(diào)度的次序。首先,可以利用源流數(shù)據(jù)中的編程語句來給予每一模塊一個(gè)優(yōu)先級(jí)。給模塊指定優(yōu)先級(jí)的編程語句是MODULE_ID.set Priority(priorityValue)在最佳實(shí)施例中,priorityValue 0是最高的優(yōu)先級(jí),較小的值具有比較大的值高的優(yōu)先級(jí)。在多個(gè)事例靈活時(shí)間模塊請(qǐng)求正在被調(diào)度時(shí),在對(duì)較低優(yōu)先級(jí)模塊的任何事例進(jìn)行調(diào)度之前先對(duì)具有較高優(yōu)先級(jí)的模塊的全部事例進(jìn)行調(diào)度。
其次,即使應(yīng)用編程人員沒有給各模塊設(shè)置優(yōu)先級(jí),各模塊根據(jù)它們?cè)谠戳鲾?shù)據(jù)中被定義的次序接受優(yōu)先級(jí),在源流數(shù)據(jù)中被較早定義的模塊具有比被較后定義的模塊高的優(yōu)先級(jí)。在這一情形中,當(dāng)多個(gè)事例靈活時(shí)間模塊請(qǐng)求正在被調(diào)度時(shí),在對(duì)被較后定義的模塊的任何事例進(jìn)行調(diào)度之前先對(duì)在源流數(shù)據(jù)中被較早定義的模塊的全部事例進(jìn)行調(diào)度。
再參看圖7,等時(shí)線e)表示步208的第二部分已結(jié)束之后的數(shù)據(jù)流。在等時(shí)線e)中,從時(shí)刻t10開始,在各事例之間以間隔著模塊間隔(SPACING)的方式來插入數(shù)據(jù)模塊的多個(gè)事例的一個(gè)靈活時(shí)間請(qǐng)求被處理。因?yàn)闀r(shí)刻t10不是可用的,所以數(shù)據(jù)模塊的事例318在下一個(gè)可用時(shí)刻t11插入。下一個(gè)所需插入時(shí)刻t12是在時(shí)刻t10之后的SPACING時(shí)刻。時(shí)刻t12又不是可用的,因此數(shù)據(jù)模塊的下一個(gè)事例320在下一個(gè)可用時(shí)刻t13插入。下一個(gè)所需時(shí)刻t14是時(shí)刻t12之后的SPACING時(shí)刻。該時(shí)刻是可用的,因此數(shù)據(jù)模塊的事例322在時(shí)刻t14插入(只部分地示于圖7)。
再參看圖6,然后在步210對(duì)全部最大插入模塊請(qǐng)求進(jìn)行處理。每一最大插入模塊請(qǐng)求包括開始時(shí)刻和一時(shí)間間隔,在此時(shí)間間隔內(nèi)將盡可能多的被請(qǐng)求模塊的事例插入到數(shù)據(jù)流。對(duì)于任一單個(gè)事例,尋找下一個(gè)可用時(shí)刻。在調(diào)度文件116中這樣地來建立記錄,將其時(shí)間偏移設(shè)定為這一時(shí)刻,模塊指針指向模塊文件中包含所需模塊的記錄。如果有足夠的時(shí)間來插入所需模塊的整個(gè)事例,則將傳輸單元長(zhǎng)度設(shè)定為模塊的長(zhǎng)度,將傳輸偏移設(shè)定為0。否則,就如上所述,對(duì)模塊進(jìn)行分割。
可以有許多由應(yīng)用編程人員提交的最大插入模塊請(qǐng)求。(如上所述,或者明顯地由應(yīng)用編程人員利用setPriority編程語句、或者由在源數(shù)據(jù)流中的模塊定義語句的位置)指定給每一模塊的優(yōu)先級(jí)影響著模塊示例的調(diào)度。從最高優(yōu)先級(jí)開始,在下一個(gè)可用時(shí)刻對(duì)處于該優(yōu)先級(jí)的每一被請(qǐng)求項(xiàng)目的一個(gè)事例進(jìn)行調(diào)度。然后處理下一較低優(yōu)先級(jí),在下一個(gè)可用時(shí)刻再對(duì)處于該優(yōu)先級(jí)的每一被請(qǐng)求項(xiàng)目的一個(gè)事例進(jìn)行調(diào)度。如此進(jìn)行下去,直到處于最低優(yōu)先級(jí)的每一項(xiàng)目的一個(gè)事例被調(diào)度為止。然后從最高優(yōu)先級(jí)開始重復(fù)該過程。流生成器10在優(yōu)先級(jí)的調(diào)度事例中循環(huán),直到再?zèng)]有可用時(shí)間為止。
參看圖7,已對(duì)三個(gè)小的數(shù)據(jù)模塊A、B和C處理了最大插入模塊請(qǐng)求,A具有最高優(yōu)先級(jí),B具有中間優(yōu)先級(jí),而C具有最低優(yōu)先級(jí)。因?yàn)閿?shù)據(jù)模塊A具有最高優(yōu)先級(jí),所以在下一個(gè)可用時(shí)刻t15首先對(duì)數(shù)據(jù)模塊A的一個(gè)事例324進(jìn)行調(diào)度。然后在下一個(gè)可用時(shí)刻t16對(duì)下一個(gè)較低優(yōu)先級(jí)的數(shù)據(jù)模塊B的一個(gè)事例326進(jìn)行調(diào)度。然后在下一個(gè)可用時(shí)刻t17對(duì)下一個(gè)較低優(yōu)先級(jí)的數(shù)據(jù)模塊C的一個(gè)事例328進(jìn)行調(diào)度。因?yàn)槟KC具有最低優(yōu)先級(jí),所以流生成器10循環(huán)回到最高優(yōu)先級(jí)。再在下一個(gè)可用時(shí)刻t18對(duì)最高優(yōu)先級(jí)的數(shù)據(jù)模塊A的一個(gè)事例330進(jìn)行調(diào)度。然后在下一個(gè)可用時(shí)刻t19對(duì)下一個(gè)較低優(yōu)先級(jí)的數(shù)據(jù)模塊B的一個(gè)事例332進(jìn)行調(diào)度。然后在下一個(gè)可用時(shí)刻t20對(duì)最低優(yōu)先級(jí)的數(shù)據(jù)模塊C的一個(gè)事例進(jìn)行調(diào)度。但是,在從時(shí)刻t20開始的可用時(shí)間內(nèi)不能嵌入模塊C的整個(gè)事例,因此以如上所述的方式將數(shù)據(jù)模塊C分割成為兩部分。在時(shí)刻t20對(duì)第一部分334進(jìn)行調(diào)度,在時(shí)刻t21對(duì)第二部分336進(jìn)行調(diào)度。如此進(jìn)行下去,直到全部可用的時(shí)隙填滿數(shù)據(jù)模塊A、B和C的事例為止。
再參看圖3,當(dāng)全部可用時(shí)間已填入了最大插入模塊時(shí),調(diào)度文件116就完成了。然后步驟118通過處理調(diào)度文件116和模塊文件112中的數(shù)據(jù)來實(shí)時(shí)地產(chǎn)生交互分量數(shù)據(jù)流。步驟118從(圖1的)傳輸系統(tǒng)中(未表示出來)的系統(tǒng)時(shí)鐘接收(也未表示出來)時(shí)鐘信號(hào)。當(dāng)交互程序被啟動(dòng)時(shí),步驟118讀出調(diào)度文件中的第一個(gè)記錄。然后將系統(tǒng)時(shí)鐘的時(shí)間與在該第一個(gè)記錄中的時(shí)間偏移字段比較。當(dāng)系統(tǒng)時(shí)鐘的時(shí)間與時(shí)間偏移字段相同時(shí),就是對(duì)被調(diào)度的模塊進(jìn)行分組的時(shí)候了。首先,將標(biāo)題數(shù)據(jù)提供給(圖1的)分組器20。該數(shù)據(jù)包括來自模塊文件112中的標(biāo)題字段的模塊標(biāo)識(shí)符、模塊中的全部字節(jié)數(shù)和模塊版本編號(hào)、以及來自調(diào)度文件116中的相應(yīng)字段的傳輸單元長(zhǎng)度和偏移。該標(biāo)題數(shù)據(jù)被分組成為稱為標(biāo)題或輔助數(shù)據(jù)包的特殊類型的單個(gè)數(shù)據(jù)包。其次,從模塊文件112中檢索模塊指針指向的模塊文件112的記錄的模塊數(shù)據(jù),并將其提供給傳送分組器20。調(diào)度文件116中的當(dāng)前記錄的傳輸單元長(zhǎng)度字段表示要被提供給傳送分組器20的模塊數(shù)據(jù)的字節(jié)數(shù),傳輸單元偏移字段表示在模塊數(shù)據(jù)文件112中的被指定記錄的模塊數(shù)據(jù)字段中的模塊數(shù)據(jù)的開始位置。傳送分組器20對(duì)在相繼的數(shù)據(jù)包中的模塊數(shù)據(jù)進(jìn)行分組并將其提供給多路轉(zhuǎn)換器30,多路轉(zhuǎn)換器30再將交互組分?jǐn)?shù)據(jù)包與視頻和音頻數(shù)據(jù)包組合在一起,并將被多路轉(zhuǎn)換的數(shù)據(jù)包流提供給傳送介質(zhì)。步驟118然后讀出下一個(gè)記錄,重復(fù)該過程,直到交互處理結(jié)束為止。
權(quán)利要求
1.一種產(chǎn)生音頻視頻交互(AVI)復(fù)合信號(hào)的表示應(yīng)用程序的交互組分?jǐn)?shù)據(jù)流的方法,其特征在于以下步驟產(chǎn)生表示應(yīng)用程序的程序文件;產(chǎn)生確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù);以及通過根據(jù)流數(shù)據(jù)有選擇地將程序文件插入到數(shù)據(jù)流中來產(chǎn)生數(shù)據(jù)流。
2.如權(quán)利要求1的方法,其特征在于,數(shù)據(jù)流產(chǎn)生步驟包括以下步驟對(duì)流數(shù)據(jù)進(jìn)行分析以便將其分成表示應(yīng)用程序的數(shù)據(jù)、規(guī)定模塊和它們的特性的數(shù)據(jù)、將程序文件與模塊聯(lián)系起來的數(shù)據(jù)、以及表示交互組分中的各模塊的調(diào)度的數(shù)據(jù);響應(yīng)表示應(yīng)用程序的數(shù)據(jù)和規(guī)定模塊和它們的特性的數(shù)據(jù)來構(gòu)成目錄模塊;響應(yīng)將程序文件與模塊聯(lián)系起來的數(shù)據(jù)來格式化模塊;以及響應(yīng)表示交互組分中的各模塊的調(diào)度的數(shù)據(jù)來將各模塊調(diào)度進(jìn)數(shù)據(jù)流。
3.如權(quán)利要求2的方法,其特征在于表示模塊調(diào)度的數(shù)據(jù)包括各相繼的調(diào)度請(qǐng)求,其中每一調(diào)度請(qǐng)求規(guī)定一個(gè)模塊;對(duì)于每一調(diào)度請(qǐng)求,模塊調(diào)度步驟包括以下步驟確定在調(diào)度請(qǐng)求和以前被調(diào)度的模塊之間是否存在沖突;如果存在沖突就執(zhí)行沖突消解處理;如果不存在沖突就對(duì)數(shù)據(jù)流中的規(guī)定模塊的事例進(jìn)行調(diào)度。
4.如權(quán)利要求3的方法,其特征在于調(diào)度請(qǐng)求是在被請(qǐng)求的預(yù)定時(shí)刻對(duì)定時(shí)模塊進(jìn)行調(diào)度的請(qǐng)求;以及沖突確定步驟包括以下步驟根據(jù)請(qǐng)求的預(yù)定時(shí)刻確定插入開始時(shí)刻;根據(jù)識(shí)別的模塊的大小和預(yù)定的傳輸速度確定插入結(jié)束時(shí)刻;確定插入開始時(shí)刻和插入結(jié)束時(shí)刻中的任一時(shí)刻是否與模塊以前被調(diào)度的事例重疊;及如果插入開始時(shí)刻和插入結(jié)束時(shí)刻中的任一時(shí)刻與模塊以前被調(diào)度的事例重疊就斷定存在沖突;及沖突消解步驟包括以下步驟斷定調(diào)度步驟已經(jīng)失?。话l(fā)出診斷信息。
5.如權(quán)利要求4的方法,其特征在于規(guī)定的模塊是目錄模塊。
6.如權(quán)利要求3的方法,其特征在于相繼的調(diào)度請(qǐng)求之一是在被請(qǐng)求的預(yù)定時(shí)刻對(duì)靈活時(shí)間模塊進(jìn)行調(diào)度的請(qǐng)求;以及事例調(diào)度步驟包括以下步驟確定被請(qǐng)求的預(yù)定時(shí)刻是否與模塊以前被調(diào)度的事例重疊;如果被請(qǐng)求的預(yù)定時(shí)刻不與以前被調(diào)度的模塊重疊,就將事例開始時(shí)刻設(shè)定為被請(qǐng)求的預(yù)定時(shí)刻,否則,就將事例開始時(shí)刻設(shè)定為數(shù)據(jù)流中的沒有模塊被調(diào)度的下一個(gè)時(shí)刻;根據(jù)規(guī)定模塊的大小和預(yù)定的傳輸速度確定是否有足夠的時(shí)間將規(guī)定模塊的整個(gè)事例插入到數(shù)據(jù)流;如果有足夠的時(shí)間,就在事例開始時(shí)刻將模塊的整個(gè)事例插入到數(shù)據(jù)流,否則,就從事例開始時(shí)刻起將模塊插入到數(shù)據(jù)流開始時(shí)的多個(gè)相繼的可用時(shí)隙中去。
7.如權(quán)利要求6的方法,其特征在于調(diào)度請(qǐng)求是在被請(qǐng)求的預(yù)定時(shí)刻和在規(guī)定模塊的插入時(shí)間間隔內(nèi)對(duì)靈活時(shí)間模塊進(jìn)行調(diào)度的請(qǐng)求;沖突確定步驟包括以下步驟確定事例開始時(shí)刻是否在插入時(shí)間間隔內(nèi);及如果事例開始時(shí)刻不在插入時(shí)間間隔內(nèi)就斷定存在沖突;及沖突消解步驟包括以下步驟斷定調(diào)度步驟已經(jīng)失?。话l(fā)出診斷信息。
8.如權(quán)利要求6的方法,其特征在于調(diào)度請(qǐng)求之一是從被請(qǐng)求的預(yù)定時(shí)刻起相距一個(gè)模塊間隔時(shí)間的調(diào)度靈活時(shí)間模塊的多個(gè)事例的請(qǐng)求;模塊調(diào)度步驟還包括以下步驟以等于被遞增了模塊間隔時(shí)間的以前開始時(shí)刻的所需開始時(shí)刻來重復(fù)事例調(diào)度步驟,直到應(yīng)用程序結(jié)束為止;沖突確定步驟包括以下步驟確定規(guī)定模塊的以前被調(diào)度的事例的結(jié)束插入時(shí)刻;確定該結(jié)束插入時(shí)刻是否晚于規(guī)定模塊當(dāng)前事例的事例開始時(shí)刻;及如果該結(jié)束插入時(shí)刻晚于規(guī)定模塊當(dāng)前事例的事例開始時(shí)刻,就斷定存在沖突;及沖突消解步驟包括以下步驟斷定調(diào)度步驟已經(jīng)失??;發(fā)出診斷信息。
9.如權(quán)利要求8的方法,其特征在于模塊的特性是優(yōu)先級(jí)值;構(gòu)成目錄模塊的步驟包括根據(jù)規(guī)定了模塊和它們的特性的數(shù)據(jù)將優(yōu)先級(jí)值指定給模塊的步驟;相繼的調(diào)度請(qǐng)求的一個(gè)子集是在被請(qǐng)求的預(yù)定時(shí)刻對(duì)靈活時(shí)間模塊進(jìn)行調(diào)度的請(qǐng)求;事例調(diào)度步驟包括以下步驟初始地選擇規(guī)定被指定了最高的優(yōu)先級(jí)值的模塊的調(diào)度請(qǐng)求的子集中的一個(gè);執(zhí)行被選擇的調(diào)度請(qǐng)求的重復(fù)步驟;選擇規(guī)定被指定了下一較低的優(yōu)先級(jí)值的模塊的調(diào)度請(qǐng)求的子集中的下一個(gè);及重復(fù)執(zhí)行和選擇步驟,直到指定給在被選擇的調(diào)度請(qǐng)求中被規(guī)定的模塊的優(yōu)先級(jí)值是最低的優(yōu)先級(jí)值為止,然后重復(fù)初始的選擇步驟。
10.如權(quán)利要求8的方法,其特征在于,重復(fù)步驟重復(fù)事例調(diào)度步驟,直到應(yīng)用程序結(jié)束為止。
11.如權(quán)利要求8的方法,其特征在于調(diào)度請(qǐng)求之一是一個(gè)從被請(qǐng)求的預(yù)定時(shí)刻起,在規(guī)定模塊的插入時(shí)間間隔內(nèi)對(duì)被模塊間隔時(shí)間的靈活時(shí)間模塊的多個(gè)事例進(jìn)行調(diào)度的請(qǐng)求;及重復(fù)步驟從被請(qǐng)求的預(yù)定時(shí)刻起重復(fù)事例調(diào)度步驟,直到插入時(shí)間間隔結(jié)束為止。
12.如權(quán)利要求6的方法,其特征在于,規(guī)定的模塊是目錄模塊。
13.如權(quán)利要求3的方法,其特征在于相繼的調(diào)度請(qǐng)求之一是在被請(qǐng)求的預(yù)定時(shí)刻對(duì)最大插入模塊進(jìn)行調(diào)度的請(qǐng)求;及事例調(diào)度步驟包括以下步驟從被請(qǐng)求的預(yù)定時(shí)刻起將事例開始時(shí)刻設(shè)定為數(shù)據(jù)流中沒有模塊被調(diào)度的下一個(gè)時(shí)刻;根據(jù)規(guī)定模塊的大小和預(yù)定的傳輸速度確定是否有足夠的時(shí)間將規(guī)定模塊的整個(gè)事例插入到數(shù)據(jù)流中;如果有足夠的時(shí)間,就在事例開始時(shí)刻將模塊的整個(gè)事例插入到數(shù)據(jù)流,否則,就從事例開始時(shí)刻起將模塊插入到數(shù)據(jù)流中的多個(gè)可用時(shí)隙中去;及重復(fù)設(shè)定、確定和插入步驟。
14.如權(quán)利要求13的方法,其特征在于重復(fù)步驟重復(fù)到應(yīng)用程序結(jié)束為止。
15.如權(quán)利要求13的方法,其特征在于調(diào)度請(qǐng)求之一是在被請(qǐng)求的調(diào)度時(shí)刻、在規(guī)定模塊的插入時(shí)間間隔內(nèi)對(duì)最大插入模塊進(jìn)行調(diào)度的請(qǐng)求;及重復(fù)步驟重復(fù)到應(yīng)用程序結(jié)束為止。
16.如權(quán)利要求13的方法,其特征在于模塊的特性是優(yōu)先級(jí)值;數(shù)據(jù)流產(chǎn)生步驟還包括根據(jù)規(guī)定了各模塊和它們的特性的數(shù)據(jù)來給模塊指定優(yōu)先級(jí)值的步驟;相繼的調(diào)度請(qǐng)求的一個(gè)子集是在被請(qǐng)求的預(yù)定時(shí)刻對(duì)最大插入模塊進(jìn)行調(diào)度的請(qǐng)求;及事例調(diào)度步驟還包括以下步驟初始地選擇規(guī)定被指定了最高的優(yōu)先級(jí)值的模塊的調(diào)度請(qǐng)求的子集中的一個(gè);對(duì)被選的調(diào)度請(qǐng)求執(zhí)行設(shè)定、確定和插入步驟;選擇規(guī)定被指定了下一較低的優(yōu)先級(jí)值的模塊的調(diào)度請(qǐng)求的子集中的下一個(gè);及重復(fù)執(zhí)行和選擇步驟,直到指定給在被選擇的調(diào)度請(qǐng)求中被規(guī)定的模塊的優(yōu)先級(jí)值是最低的優(yōu)先級(jí)值為止,然后重復(fù)初始的選擇步驟。
17.如權(quán)利要求13的方法,其特征在于,重復(fù)步驟重復(fù)到應(yīng)用程序結(jié)束為止。
18.如權(quán)利要求13的方法,其特征在于調(diào)度請(qǐng)求之一是在被請(qǐng)求的調(diào)度時(shí)刻、在規(guī)定模塊的插入時(shí)間間隔內(nèi)對(duì)最大插入模塊進(jìn)行調(diào)度的請(qǐng)求;及重復(fù)步驟重復(fù)到插入時(shí)間間隔結(jié)束為止。
19.如權(quán)利要求2的方法,其特征在于,對(duì)模塊進(jìn)行調(diào)度的步驟包括首先把目錄模塊作為數(shù)據(jù)流中的第一個(gè)模塊來進(jìn)行調(diào)度的步驟。
20.如權(quán)利要求2的方法,其特征在于表示模塊調(diào)度的數(shù)據(jù)包括其各自分別規(guī)定一個(gè)模塊的相繼的調(diào)度請(qǐng)求,從由定時(shí)模塊請(qǐng)求、靈活時(shí)間模塊請(qǐng)求和最大插入模塊請(qǐng)求組成的集合中選擇每一請(qǐng)求;及對(duì)模塊進(jìn)行調(diào)度的步驟包括以下步驟自動(dòng)地把目錄模塊作為數(shù)據(jù)流中的第一個(gè)模塊來進(jìn)行調(diào)度;然后對(duì)數(shù)據(jù)流中的定時(shí)模塊請(qǐng)求進(jìn)行調(diào)度;然后如果在相繼的調(diào)度請(qǐng)求中沒有規(guī)定目錄模塊的調(diào)度請(qǐng)求,則自動(dòng)地將目錄模塊調(diào)度到數(shù)據(jù)流中去;然后將靈活時(shí)間模塊請(qǐng)求調(diào)度到數(shù)據(jù)流中去;然后將最大插入模塊請(qǐng)求調(diào)度到數(shù)據(jù)流中去。
21.如權(quán)利要求20的方法,其特征在于相繼的調(diào)度請(qǐng)求之一規(guī)定自動(dòng)執(zhí)行模塊;如果在相繼的調(diào)度請(qǐng)求中沒有規(guī)定目錄模塊的調(diào)度請(qǐng)求,則自動(dòng)地對(duì)目錄模塊進(jìn)行調(diào)度的步驟就包括在數(shù)據(jù)流中按照與自動(dòng)執(zhí)行模塊相同的頻率對(duì)目錄模塊進(jìn)行調(diào)度的步驟。
22.一種產(chǎn)生音頻視頻交互(AVI)復(fù)合信號(hào)的交互組分的設(shè)備,該交互組分表示應(yīng)用程序,該設(shè)備的特征在于表示應(yīng)用程序的程序文件源;確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù)源;及根據(jù)流數(shù)據(jù)源的數(shù)據(jù)有選擇地將文件源的文件插入(30)交互組分的流生成器(10)。
23.如權(quán)利要求22的設(shè)備,其特征在于文件源包括表示應(yīng)用程序的數(shù)據(jù)源;以及應(yīng)用生成器,響應(yīng)應(yīng)用程序數(shù)據(jù)源來產(chǎn)生程序文件。
24.如權(quán)利要求22的設(shè)備,其特征在于交互組分包括攜帶多個(gè)模塊的相繼的傳輸單元;流數(shù)據(jù)包括表示應(yīng)用程序的數(shù)據(jù)、規(guī)定模塊和它們的特性的數(shù)據(jù)、把程序文件與模塊聯(lián)系起來的數(shù)據(jù)、以及表示交互組分中的模塊的調(diào)度的數(shù)據(jù);流生成器包括分析程序,對(duì)流數(shù)據(jù)進(jìn)行分析,使其被分成表示應(yīng)用程序的數(shù)據(jù)、規(guī)定模塊和它們的特性的數(shù)據(jù)、把程序文件與模塊聯(lián)系起來的數(shù)據(jù)、以及表示在交互組分中的模塊的調(diào)度的數(shù)據(jù);目錄模塊構(gòu)成程序,響應(yīng)表示應(yīng)用程序的被分析數(shù)據(jù)和規(guī)定各模塊和它們的特性的被分析數(shù)據(jù)來構(gòu)成目錄模塊文件,該目錄模塊文件包括一個(gè)含有應(yīng)用數(shù)據(jù)的記錄和一個(gè)用于每一被規(guī)定模塊的、含有模塊表示數(shù)據(jù)的記錄;模塊格式化程序,響應(yīng)把程序文件與模塊聯(lián)系起來的被分析數(shù)據(jù)來構(gòu)成模塊文件,該模塊文件包括用于每一相關(guān)的程序文件和模塊的、含有與模塊相關(guān)的程序文件的記錄;以及模塊調(diào)度程序,響應(yīng)表示模塊的調(diào)度的被分析數(shù)據(jù)來產(chǎn)生調(diào)度文件,該調(diào)度文件包括用于交互組分中的每一傳輸單元的、包含指向包括將要在傳輸單元中被傳送的程序文件的模塊文件中的記錄的指針和傳輸單元將要被傳輸?shù)臅r(shí)刻的記錄。
全文摘要
用于產(chǎn)生音頻視頻交互(AVI)復(fù)合信號(hào)的、表示應(yīng)用程序的交互組分?jǐn)?shù)據(jù)流的方法和設(shè)備。該方法的步驟是產(chǎn)生表示應(yīng)用程序的程序文件,產(chǎn)生確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù),最后根據(jù)該流數(shù)據(jù)有選擇地將程序文件插入數(shù)據(jù)流來產(chǎn)生數(shù)據(jù)流。該設(shè)備包括表示應(yīng)用程序的程序文件源、確定交互組分的數(shù)據(jù)結(jié)構(gòu)的流數(shù)據(jù)源、以及根據(jù)流數(shù)據(jù)源的數(shù)據(jù)有選擇地將文件源的文件插入(30)交互組分的流生成器(16)。
文檔編號(hào)H04N7/52GK1120776SQ9510813
公開日1996年4月17日 申請(qǐng)日期1995年6月29日 優(yōu)先權(quán)日1994年6月30日
發(fā)明者小·A·W·杰瑟普, K·約瑟夫斯 申請(qǐng)人:Rca湯姆森許可公司