專利名稱:在交互式媒體環(huán)境中將事件排隊(duì)的制作方法
在交互式媒體環(huán)境中將事件排隊(duì)相關(guān)申請聲明本申請要求2005年7月1日提交的臨時申請第60/695,944號的優(yōu)先權(quán),該臨 時申請通過引用結(jié)合于此。技術(shù)領(lǐng)域所描述的安排、系統(tǒng)和方法一般涉及交互式媒體,尤其涉及在交互式媒體環(huán) 境中將事件排隊(duì)。背景交互式媒體環(huán)境一般是在可用處理能力、存儲器和對該環(huán)境中運(yùn)行的應(yīng)用程 序可用的其它資源方面受到約束的資源。交互式媒體的一個常見示例是在DVD(數(shù) 字多功能盤)上編碼的視頻,其中用戶可以與圖形菜單或其它控件交互以導(dǎo)航到特 定的視頻內(nèi)容或調(diào)用被設(shè)計到DVD中的特殊特征。在更復(fù)雜的交互式媒體環(huán)境中,盡管資源是有限的,但應(yīng)用程序仍需以其中 視頻為精確到幀的實(shí)時方式來響應(yīng)于用戶。然而,使用實(shí)時多線程化編程來實(shí)現(xiàn)這 一目標(biāo)會對交互式媒體作者施加處理諸如線程管理和同步等問題的較大負(fù)擔(dān)。概述提供了一種安排,其中交互式媒體環(huán)境中的所有應(yīng)用程序在媒體播放器中的 單個應(yīng)用程序線程上運(yùn)行。利用事件隊(duì)列來調(diào)度應(yīng)用程序線程對與該環(huán)境中發(fā)生的 事件相對應(yīng)的工作項(xiàng)的處理。工作項(xiàng)包括當(dāng)處理工作項(xiàng)時要調(diào)用的方法以及用于該 方法的自變量。由此,來自事件隊(duì)列的工作項(xiàng)的調(diào)度和處理確定了在該環(huán)境中將完 成什么工作以及何時完成。典型的事件包括根據(jù)用戶與媒體播放器的交互激發(fā)的用 戶事件、由媒體播放器激發(fā)的系統(tǒng)事件、以及由應(yīng)用程序激發(fā)的事件。在各種說明性示例中,工作項(xiàng)還包括開始時間和結(jié)束時間,并且先按照開始 時間然后按照它們被插入到隊(duì)列中的時間在事件隊(duì)列中排序。在一個說明性示例
中,應(yīng)用程序線程標(biāo)記其幵始時間對應(yīng)于當(dāng)前或先前的時間的工作項(xiàng),然后按序處 理來自隊(duì)列的所標(biāo)記的工作項(xiàng)。所有處理是在提交的基礎(chǔ)上執(zhí)行的,使得一旦應(yīng)用 程序線程開始處理一工作項(xiàng),它就不會停止。如果已經(jīng)過了工作項(xiàng)的結(jié)束時間,則 從事件隊(duì)列中丟棄該工作項(xiàng)。用于在處理期間發(fā)生的新事件的工作項(xiàng)被插入到隊(duì)列 的末尾以在已提交的工作項(xiàng)之后處理。在另一說明性示例中,用于新事件的工作項(xiàng) 基于其相對開始時間被插入到事件隊(duì)列中以在己提交的工作項(xiàng)之后處理。如定時器事件和應(yīng)用程序繪制事件等重復(fù)性事件可具有從事件隊(duì)列丟棄的各次發(fā)生。然而, 一次性(即,單次發(fā)生、非重復(fù)性的)事件從不被丟棄。有利的是,采用單個應(yīng)用程序線程的該事件排隊(duì)模型為交互式媒體作者提供 了在包括處理器周期和存儲器在內(nèi)的硬件資源受到限制的情況下以實(shí)時的精確到 幀的方式管理事件的穩(wěn)定且可預(yù)測的方法。附圖簡述
圖1是示出構(gòu)成在交互式媒體環(huán)境中使用的應(yīng)用程序的元素的說明性框圖; 圖2是示出多個標(biāo)記文檔和腳本之間的關(guān)系的圖示;圖3是包括交互式內(nèi)容處理器、視頻內(nèi)容處理器和混合器的說明性交互式媒 體播放器的框圖;圖4是第二說明性交互式媒體播放器的框圖;圖5是具有多個事件隊(duì)列和單個應(yīng)用程序線程的說明性安排的框圖;圖6是一說明性事件隊(duì)列的框圖,它示出了首先按照開始時間,然后按照工作項(xiàng)被插入到事件隊(duì)列中的時間對工作項(xiàng)的排序;圖7是應(yīng)用程序線程自動將兩個工作項(xiàng)插入到事件隊(duì)列的結(jié)尾處的說明性安排的框圖;以及圖8是用于將與交互式媒體環(huán)境中發(fā)生的事件相關(guān)聯(lián)的工作項(xiàng)排隊(duì)的說明性 方法的流程圖。詳細(xì)描述參考圖1,示出了構(gòu)成在交互式媒體環(huán)境中使用的應(yīng)用程序110的元素的說明 性框圖。通常在交互式媒體環(huán)境中使用應(yīng)用程序來允許用戶與在耦合的顯示設(shè)備 (諸如電視機(jī)或監(jiān)視器)上呈現(xiàn)圖形和視頻的交互式媒體播放器之間通過諸如遙控 器等用戶接口的交互。更具體地,應(yīng)用程序控制該環(huán)境中各種內(nèi)容對象的演示行為, 包括視頻回放。視頻上諸如菜單和交互式按鈕等圖形對象的演示也是使用應(yīng)用程序 來實(shí)現(xiàn)的。應(yīng)用程序還管理并控制該環(huán)境中的音頻回放和聲音。可以構(gòu)想,多個應(yīng) 用程序一般將同時在最具交互性的媒體設(shè)置下運(yùn)行。然而,對于應(yīng)用程序同時運(yùn)行 并沒有要求,并且在特定的設(shè)置下劃分或聚集應(yīng)用程序的決定是交互式媒體作者的 設(shè)計選擇。應(yīng)用程序還可取決于特定設(shè)置的要求在邏輯上被細(xì)分為應(yīng)用程序頁。應(yīng)用程序110包括包含零個或多個腳本文件117和119的腳本主機(jī)115以及用于生成文檔對象模型(DOM)的零個或多個標(biāo)記文檔120。標(biāo)記文檔120包括 與例如圖形對象的內(nèi)容、樣式、定時和布局有關(guān)的信息。由此, 一般使用標(biāo)記上下 文在交互式媒體環(huán)境中的圖形平面上提供圖形。在該說明性示例中,標(biāo)記文檔是依照W3C標(biāo)準(zhǔn)的XML文檔文件。如圖l所 示,可使用標(biāo)記中〈head〉(首部)部分中的〈nclude〉(包括)元素來訪問多個物 理XML文件。在某些設(shè)置中,對應(yīng)用程序而言較佳的可能是一次沒有多于一個的 活動標(biāo)記。然而,應(yīng)用程序可通過使用標(biāo)記中的〈link〉(鏈接)元素來切換其標(biāo)記 120?;蛘撸瑧?yīng)用程序可通過利用允許應(yīng)用程序獲取對當(dāng)前應(yīng)用程序內(nèi)的功能對象 的訪問的應(yīng)用程序編程接口(API)來切換其標(biāo)記120。使用通過API的loadMarkupO (加載標(biāo)記)調(diào)用,應(yīng)用程序可通過經(jīng)由API傳遞新標(biāo)記的統(tǒng)一資源標(biāo)識符(URI) 來切換標(biāo)記文件120。在應(yīng)用程序訪問新標(biāo)記的情況下,API調(diào)用僅在應(yīng)用程序中的當(dāng)前事件處理程 序完成執(zhí)行其當(dāng)前任務(wù)之后才生效。待決的任何當(dāng)前標(biāo)記相關(guān)事件處理程序也被取 消,因?yàn)橐坏┬聵?biāo)記被加載,該新標(biāo)記將使那些事件處理程序無效。在該說明性示例中,腳本主機(jī)115包含與標(biāo)記120 —起使用來實(shí)現(xiàn)交互式媒 體體驗(yàn)的腳本文件117和119。腳本文件117和119可例如使用如由國際歐洲計算 機(jī)制造協(xié)會(Ecma International)在ECMA-262規(guī)范中定義的ECMAScript (ECMA 腳本)來實(shí)現(xiàn)。被歸入ECMA-262的常見腳本化編程語言包括JavaScript和JScript。 在某些設(shè)置中,可能期望使用ECMAScript 262的一個子集,具體地是ECMA-327, 連同一主機(jī)環(huán)境和一組公共API來實(shí)現(xiàn)腳本117和119。大多數(shù)設(shè)置中的腳本上下 文用于處理來自用戶的交互式控制問題以及系統(tǒng)事件、圖形控制、視頻回放、資源 管理(例如,使用高速緩存或持久存儲資源)以及僅使用標(biāo)記120不能容易或有效 地實(shí)現(xiàn)的其它問題。API以及資源對應(yīng)用程序110的可用性由圖1中的參考標(biāo)號125來指示。資源 包括例如音頻和視頻文件、字體、圖片和圖像(例如,采用常見的文件格式,包括PNG、 JPEG、 GIF、 BMP、 TIFF等)以及應(yīng)用程序根據(jù)特定設(shè)置的環(huán)境所需的其 它資源。每一應(yīng)用程序110維護(hù)其自己的腳本主機(jī)115,它維護(hù)用于腳本的變量、函數(shù) 和其它狀態(tài)的上下文。在大多數(shù)設(shè)置中, 一個應(yīng)用程序中的變量和函數(shù)對另一應(yīng)用 程序是不可見的,除非該應(yīng)用程序例如通過使用跨所有應(yīng)用程序共享的對象被特別 地設(shè)置成允許這樣的跨應(yīng)用程序可見性。例如,在該說明性示例中,交互式媒體播 放器具有跨所有應(yīng)用程序共享的單個實(shí)例。因此,可任選地,特殊對象可例如使用 0++對象而被置于腳本主機(jī)115內(nèi)部,以實(shí)現(xiàn)其中該特殊對象都引用例如播放器的 同一內(nèi)部函數(shù)的單元素(singleton)(即, 一對象具有有限的實(shí)例化)。該可任選 方面允許交互式媒體腳本作者在邏輯上將公共對象作為單元素來對待,同時仍允許 腳本主機(jī)115實(shí)現(xiàn)將一對象展示給單個腳本主機(jī)所必需的功能?,F(xiàn)在參考圖2,提供了示出多個標(biāo)記文檔和腳本之間的關(guān)系的圖示。應(yīng)用程序 清單230與應(yīng)用程序交互,如上所述,應(yīng)用程序一般由所示的資源125、腳本205 和標(biāo)記文檔251、 260和275來定義。每一應(yīng)用程序在大多數(shù)設(shè)置中通常使用單個 應(yīng)用程序清單文件,但是應(yīng)用程序清單不是應(yīng)用程序的運(yùn)行時狀態(tài)的一部分。在該 說明性示例中,應(yīng)用程序清單230被編碼為XML文檔文件。應(yīng)用程序清單230描述了要由應(yīng)用程序110 (圖1)使用的初始標(biāo)記文件251 以及腳本主機(jī)115 (圖l)中包含的腳本文件一在圖2中由帶參考標(biāo)號205的矩形 來共同指示。如果應(yīng)用程序清單230列出了一個以上腳本,如本說明性示例中所示 的,則所有腳本都被加載到交互式媒體播放器的腳本處理引擎中。由此,多個腳本 文件如同腳本作者將所有腳本文件按照應(yīng)用程序清單230中列出的順序串接成單 個大文件那樣被對待和表現(xiàn)。如圖2所示,應(yīng)用程序清單230引用資源125。對交互式媒體環(huán)境中應(yīng)用程序 可用的資源形成了一有向圖,其根為應(yīng)用程序清單230中引用的資源125。用于每 一應(yīng)用程序的圖形的允許范圍由應(yīng)用程序清單230來規(guī)定。圖2示出了在交互式媒體環(huán)境中運(yùn)行的三個應(yīng)用程序。如上所述,每一應(yīng)用 程序一次可以僅有一個活動標(biāo)記,且應(yīng)用程序內(nèi)容按應(yīng)用程序保持分開。如由標(biāo)記 頁251、 260和275之間的箭頭所指示的,應(yīng)用程序能夠經(jīng)由腳本205從標(biāo)記頁251 前進(jìn)到260,之后從頁260前進(jìn)到275。交互式媒體環(huán)境中應(yīng)用程序的上下文執(zhí)行行進(jìn)由播放列表290來指導(dǎo),播放 列表描述了環(huán)境中包括由播放器呈現(xiàn)到顯示設(shè)備上的演示對象在內(nèi)的對象之間的 關(guān)系以及其它內(nèi)容。這些演示對象通常包括由應(yīng)用程序產(chǎn)生的視頻(可以包括如以 下更詳細(xì)描述的多個流)和圖形。播放列表290還將跨交互式媒體環(huán)境的多個資源作為單個管理實(shí)體來管理,以有效地分配并控制應(yīng)用程序?qū)Y源的消費(fèi)。如同應(yīng)用程序清單230 —樣,播放列 表290在大多數(shù)設(shè)置中可被有利地具體化為XML文檔文件。圖2中的標(biāo)記頁可在某些設(shè)置中用于向執(zhí)行上下文(由圖1中的腳本文件117 和119創(chuàng)建)激發(fā)事件。執(zhí)行上下文然后操縱由當(dāng)前應(yīng)用程序標(biāo)記創(chuàng)建的DOM。 當(dāng)在交互式媒體環(huán)境中使用標(biāo)記來指定該環(huán)境中的圖形對象的樣式、內(nèi)容、定時和 布局(如由圖2中的元素253、 262和277所表示的)時,腳本和標(biāo)記的組合允許 創(chuàng)建一組綜合能力。圖3是第一說明性交互式媒體播放器305的框圖,它包括交互式內(nèi)容處理器 (ICP) 335、視頻內(nèi)容處理器(VCP) 310和混合器339。注意,圖3所示的安排 提供了描述說明性交互式媒體播放器305中與應(yīng)用程序狀態(tài)管理有關(guān)的特征和功 能的邏輯模型。由此,交互式媒體播放器的實(shí)際實(shí)現(xiàn)可利用各種結(jié)構(gòu)形式,同時仍 如此處所描述的操作以實(shí)現(xiàn)應(yīng)用程序狀態(tài)管理的好處。交互式媒體播放器305通常 用諸如單機(jī)消費(fèi)者電子設(shè)備等專用硬件來實(shí)現(xiàn),或者使用采用計算機(jī)可讀介質(zhì)以及 諸如在個人計算機(jī)中找到的通用處理器的軟件實(shí)現(xiàn)來實(shí)現(xiàn)。VCP 310管理可通過網(wǎng)絡(luò)從多個源接收到的一個或多個媒體流,這些源包括 諸如DVD驅(qū)動器或高清晰度DVD (HD-DVD)驅(qū)動器等本地光驅(qū)、本地存儲器或 遠(yuǎn)程寬帶源。在本說明性示例中,VCP310包括一個或多個媒體處理器1,2...N, 如由圖3中的元素304和306所指示的。媒體處理器304和306處理所接收的通常 包括音頻和視頻的媒體流,以解碼并呈現(xiàn)作為音頻/視頻流在線路325上輸出的對 應(yīng)的圖像和聲音。音頻/視頻流325可以表示多個視頻元素,例如用于使用"畫中 畫"類型配置來呈現(xiàn)多個單獨(dú)的視頻窗口。媒體處理器304和306各自包括媒體源接口、多路分解器和解碼器。媒體處 理器304和306也可任選地包括解密能力。顯示設(shè)備355被耦合以接收并顯示音頻 /視頻流。利用媒體時鐘312,使得每一接收到的媒體具有相關(guān)聯(lián)的"媒體時間"。當(dāng)在 交互式媒體播放器305上暫停一視頻流時,媒體時鐘312也被暫停。當(dāng)視頻流被用 戶設(shè)置成比實(shí)時快或慢地行進(jìn)時(例如,當(dāng)視頻流被置于快進(jìn)、回退或慢動作模式 時一對這些模式中任一個的使用被稱為"特效播放"),則媒體時鐘312相應(yīng)地加
速或減慢。因此,媒體時間從媒體時鐘以及媒體處理器304和306的操作中得到。 媒體時間通過線路315被傳遞到ICP 335中的播放列表管理器337。交互式媒體環(huán) 境中的時間,包括媒體時間通常以"報時信號(tick)"來計數(shù)。ICP 335執(zhí)行所有應(yīng)用程序相關(guān)處理,并且可從可用硬件、軟件、固件或其組 合來實(shí)現(xiàn)的若干組件中安排。ICP 335的組件包括,例如標(biāo)記引擎、腳本語言解釋 器以及XML解析組件(未示出)。ICP 335在線路32〗上輸出與視頻/音頻流325 同步的圖形流?;旌掀?38取線路321上的圖形流以及線路325上的音頻/視頻流, 使得圖形在視頻流上的圖形層中呈現(xiàn)以實(shí)現(xiàn)對用戶的交互式媒體會話。在大多數(shù)設(shè)置中,ICP 335輸出在逐幀的基礎(chǔ)上與視頻流同步的圖形。然而, 這一同步可使用其它基礎(chǔ)來執(zhí)行,包括例如時間(包括如以下定義的標(biāo)題時間和媒 體時間)、視頻中的內(nèi)容、或嵌入在視頻中的用于指示或標(biāo)記流中的特定點(diǎn)的其它 元數(shù)據(jù)。ICP 335包括播放列表管理器337和任務(wù)管理器330。播放列表管理器337負(fù) 責(zé)控制環(huán)境中的演示對象。這些對象包括播放器305上的視頻回放以及運(yùn)行以生成 交互式圖形的應(yīng)用程序。播放列表管理器337管理以上在伴隨圖2的文本中描述的 播放列表290。播放列表管理器337還計算與媒體流中的內(nèi)容的每一部分相關(guān)聯(lián)的"標(biāo)題時 間"。標(biāo)題是視頻和音頻內(nèi)容的唯一序列,它具有通常由DVD作者定義的開始和 結(jié)束時間。然而,這一作者定義的標(biāo)題可以是任意的。由此,視頻中察覺到的特定 內(nèi)容可以是一個標(biāo)題的一部分、 一個完整標(biāo)題或跨多個標(biāo)題運(yùn)行。標(biāo)題的一個示例是美國在所有模擬和數(shù)字形式的預(yù)錄制視頻之前的版權(quán)警 告。DVD上有特色的吸引人的東西(例如,主電影)是另一示例,且通常是最長 的標(biāo)題。在某些設(shè)置中,電影中的各個章節(jié)可能被DVD作者指定為單獨(dú)的標(biāo)題。 對于所有這些標(biāo)題,標(biāo)題時間被定義為如在媒體時鐘312上所示的自從給定標(biāo)題開 始播放以來已經(jīng)過的時間。演示時鐘360在線路362上耦合到播放列表管理器。演示時鐘360是其時間 以與真實(shí)世界時鐘相同的步調(diào)改變的時鐘(即,演示時鐘360花費(fèi)一秒的真實(shí)時間 來前進(jìn)一秒)。與媒體時鐘312形成對比,演示時鐘360從不停止,并且不能被加 速或減慢。來自演示時鐘360的演示時間被傳遞到任務(wù)管理器330,后者使用它來 計算"應(yīng)用程序時間"和應(yīng)用程序"頁時間"。應(yīng)用程序時間是自從應(yīng)用程序啟動(或如以下更詳細(xì)描述地進(jìn)入"活動"狀 態(tài))以來已經(jīng)過的時間。當(dāng)多個應(yīng)用程序在運(yùn)行時,每一應(yīng)用程序具有其自己的應(yīng) 用程序時間的觀念。對于每一應(yīng)用程序,應(yīng)用程序時間總是在應(yīng)用程序在環(huán)境中啟 動時從零開始。例如,如果應(yīng)用程序Appl在20個任意時間單位的演示時間(對Appl是0 時間單位)處開始,并且應(yīng)用程序App2在25個時間單位的演示時間(對App2 是0時間單位)處開始,則在35個時間單位的演示時間處,Appl的應(yīng)用程序時間 是15個時間單位,而App2的應(yīng)用程序時間是10個時間單位。對于在邏輯上被細(xì) 分成頁的應(yīng)用程序,頁時間是自從應(yīng)用程序的頁被加載以來已經(jīng)過的時間。圖4是第二說明性媒體播放器405的框圖,它包括ICP435、 VCP410和混合 器439。說明性媒體播放器405在形式和功能上類似于圖3所示的交互式媒體播放 器305。然而,要注意,VCP 435包括被安排成向混合器439提供單獨(dú)的饋送425 和427的媒體處理器1,2.,.N (如由圖4中的元素404和406所指示的)。這種安 排在對個別媒體流的操縱在混合之前執(zhí)行的某些設(shè)置中是合乎需要的。例如,諸如 對媒體流中的視頻的掃視和縮放等圖像處理/選擇技術(shù)可以在由圖4中的參考標(biāo)號 425和427所表示的N個單獨(dú)饋送中的一個或多個上實(shí)現(xiàn)。音頻/視頻饋送425和427以及來自ICP 435的同步圖形流在混合器439中混 合,并在線路441上輸出到顯示設(shè)備455。圖4中的其它元素,包括ICP 435 (包 括播放列表管理器437和任務(wù)管理器430) 、 VCP410中的媒體時鐘412以及演示 時鐘460以與其在圖3中示出并在相應(yīng)的文本中描述的對應(yīng)物相似的方式來配置和 運(yùn)作。圖5是說明性安排500的框圖,它具有分別由參考標(biāo)號510、 515和518指示 的多個事件隊(duì)列1,2...N,以及單個應(yīng)用程序線程523。在這一說明性安排中,運(yùn) 行在ICP (諸如圖4中的ICP 435)上的所有應(yīng)用程序都是單線程的,并且應(yīng)用程 序線程523專用于這一目的。然而,ICP435本身不必是單線程的。在替換實(shí)現(xiàn)中, ICP 435可以利用其它線程,例如用于將資源預(yù)取到高速緩存中。事件隊(duì)列510、 515和518中的每一個被安排成從其頭端(位于圖5的右側(cè)) 饋入應(yīng)用程序線程523。分別由參考標(biāo)號527、530和532指示的多個應(yīng)用程序Appl, App2 ... AppN被安排成將分別由參考標(biāo)號535指示的工作項(xiàng)從隊(duì)列尾端(在圖5 的左側(cè))置入隊(duì)列510、 515和518中。應(yīng)用程序事件是由應(yīng)用程序激發(fā)的事件。這些可包括由腳本(例如,圖1中 的腳本主機(jī)115)或標(biāo)記(例如,圖1中的標(biāo)記120)激發(fā)的事件。在大多數(shù)情形
中,應(yīng)用程序事件僅由腳本來處理。然而,應(yīng)用程序527、 530和532不直接調(diào)用 腳本或標(biāo)記功能。相反,所有這些功能都以工作項(xiàng)的形式被置入應(yīng)用程序各自的事 件隊(duì)列中,并在應(yīng)用程序線程523處理該工作項(xiàng)時被調(diào)用。在替換安排中,來自除應(yīng)用程序之外的源的事件也使用事件隊(duì)列來調(diào)度。例 如,用戶事件通過用戶與遙控器的交互來激發(fā)。系統(tǒng)事件是由諸如圖4所示并在相 應(yīng)的文本中描述的播放器405等交互式媒體播放器激發(fā)的事件。事件隊(duì)列510、 515和518中的每一工作項(xiàng)包含如圖5所示的字段。這些字段 包括應(yīng)用程序關(guān)聯(lián)字段540、方法字段545、開始時間(BeginTime)字段552、結(jié) 束時間(EndTime)字段555以及可任選的時鐘選擇器(CloekSelector)字段558。應(yīng)用程序關(guān)聯(lián)字段540指示向其應(yīng)用工作項(xiàng)的特定應(yīng)用程序。方法字段545 包含當(dāng)該工作項(xiàng)由應(yīng)用程序線程523處理時調(diào)用的方法。方法字段545還包括用于 該方法的自變量。開始時間字段552和結(jié)束時間字段555分別用于指示該工作項(xiàng)的方法何時開 始和結(jié)束。在該說明性示例中,時間是使用應(yīng)用程序時間來表達(dá)的。然而,在替換 示例中,開始時間字段552和結(jié)束時間字段555包含取決于特定設(shè)置的要求可替換 地用標(biāo)題時間、應(yīng)用程序時間或頁時間來表達(dá)的值。在這些情況下,由工作項(xiàng)使用 的特定時間幀在時鐘選擇器字段558中指示。不論所利用的時間幀是什么,工作項(xiàng) 的開始時間必定總是小于結(jié)束時間。圖6是示出其中包含的工作項(xiàng)的排序的事件隊(duì)列515的框圖。圖6中為便于 清晰說明起見沒有示出其它事件隊(duì)列510和518 (圖5)。然而,以下描述的排序 方法同樣適用于這些其它事件隊(duì)列。事件隊(duì)列515包括如分別由參考標(biāo)號605、 610、 615和620指示的工作項(xiàng)1、 2、 3…N。每一工作項(xiàng)包括圖5所示并在相應(yīng)的文本中描述的字段。工作項(xiàng)605包括開始時間!以及相關(guān)聯(lián)的插入到事件隊(duì)列515中的插入時間tp 如由圖6中的框630所指示的。類似地,工作項(xiàng)610包括開始時間2,以及相關(guān)聯(lián) 的插入到事件隊(duì)列515中的插入時間t2,如在框635中所指示的。工作項(xiàng)615包括 開始時間3,以及相關(guān)聯(lián)的插入到事件隊(duì)列515中的插入時間t3,如在框640中所 指示的。并且,工作項(xiàng)620包括開始時間N,以及相關(guān)聯(lián)的插入到事件隊(duì)列515 中的插入時間^,如在框645中指示的。在該說明性示例中,工作項(xiàng)在事件隊(duì)列515中首先按照開始時間,然后按照 工作項(xiàng)被插入到事件隊(duì)列中的時間來排序。這種排序?qū)е聭?yīng)用程序線程523按照開
始時間的順序來處理工作項(xiàng),或者當(dāng)兩個工作項(xiàng)具有相同的開始時間時,按照FIFO(先進(jìn)先出)的順序來處理。由此,當(dāng)工作項(xiàng)620位于事件隊(duì)列515的頭部時,暗示了開始時間N〈開始時 間3;或者如果開始時間N-開始時間3,則&<13 (即,工作項(xiàng)620在工作項(xiàng)615之 前插入到事件隊(duì)列515中)。根據(jù)這一相同的推導(dǎo),對于工作項(xiàng)605、 610和615, 則開始時間3<開始時間2;或者如果開始時間3=開始時間2,則t^t2;并且 開始時間2<開始時間1;或者如果開始時間f開始時間p則t2〈tj 事件隊(duì)列中對工作項(xiàng)的排序使用兩種替代方法來執(zhí)行工作項(xiàng)可在被插入到 事件隊(duì)列時或者在處理之前從事件隊(duì)列中提取工作項(xiàng)時排序。任一安排都同樣可 用,只要對來自事件隊(duì)列的工作項(xiàng)的處理是按照開始時間然后按照隊(duì)列插入時間來 執(zhí)行的。圖7是一說明性安排的框圖,其中應(yīng)用程序線程523將兩個工作項(xiàng)705和715 自動插入到事件隊(duì)列515的尾部。為便于清晰說明起見,圖7中未示出其它事件隊(duì) 列510和518 (圖5)。然而,如下所述的應(yīng)用程序線程對工作項(xiàng)的自動插入同樣 適用于這些其它事件隊(duì)列。如圖所示,自動插入的工作項(xiàng)705和715在事件隊(duì)列 515中跟在工作項(xiàng)605和620后面。在一個說明性示例中,兩個工作項(xiàng)的自動插入 是在應(yīng)用程序啟動并且在每一報時信號之后重新調(diào)度工作項(xiàng)時執(zhí)行的。工作項(xiàng)705包括對標(biāo)記引擎(例如,圖4的ICP 435中設(shè)置的標(biāo)記引擎)的調(diào) 用以處理對應(yīng)用程序App2 530中的頁的定時,如框730所示。在框735中,工作 項(xiàng)715包括對標(biāo)記的調(diào)用以使應(yīng)用程序App2的標(biāo)記回流來反映已處理的事件然后 在顯示設(shè)備(例如,圖4中的顯示器455)上呈現(xiàn)標(biāo)記。工作項(xiàng)705和715總是在 應(yīng)用程序的報時信號中由應(yīng)用程序線程523最后處理的工作項(xiàng)。圖8是用于對在交互式媒體環(huán)境中發(fā)生的事件相關(guān)聯(lián)的工作項(xiàng)排隊(duì)的說明性 方法的流程圖。在采用單個應(yīng)用程序線程的事件排隊(duì)的說明性示例中,該方法由圖 4-7所示并在相應(yīng)的文本中描述的安排來執(zhí)行。所示的方法通常對每一報時信號迭 代地執(zhí)行。圖8是用于對在交互式媒體環(huán)境中發(fā)生的事件相關(guān)聯(lián)的工作項(xiàng)排隊(duì)的方法的 流程圖。在采用單個應(yīng)用程序線程的事件排隊(duì)的說明性示例中,該方法由圖4-7所 示并在相應(yīng)的文本中描述的安排來執(zhí)行。所示的方法通常對每一報時信號迭代地執(zhí) 行。該過程在框805處開始。在框810處,當(dāng)應(yīng)用程序線程523 (圖5-7)能夠自 由處理工作項(xiàng)時,它首先標(biāo)記事件隊(duì)列中其開始時間對應(yīng)于當(dāng)前或先前的報時信號 的每一工作項(xiàng)。應(yīng)用程序線程523僅處理所標(biāo)記的工作項(xiàng)。由此,事件隊(duì)列515 中的工作項(xiàng)從不在其開始時間之前處理。在判別框816處,如果所標(biāo)記的工作項(xiàng)的結(jié)束時間己經(jīng)過去,則如框819中 所指示地,從事件隊(duì)列515中丟棄該工作項(xiàng)。在這一情況下,將不執(zhí)行對該工作項(xiàng) 的任何處理。萬一應(yīng)用程序App2 530重新加載其頁,則該應(yīng)用程序的頁時鐘被復(fù) 位為零,并且基于該應(yīng)用程序的頁時鐘的所有未決(即,排隊(duì))的工作項(xiàng)如同它們 已到達(dá)其結(jié)束時間那樣從事件隊(duì)列丟棄。如果在判別框816處,所標(biāo)記的工作項(xiàng)的結(jié)束時間還未過去,則控制被傳遞 到框822,并且應(yīng)用程序線程523處理該工作項(xiàng)。如上在描述附圖6時所述的,每 一工作項(xiàng)按照來自事件隊(duì)列515的順序來處理首先按照開始時間,然后按照每一 工作項(xiàng)被插入到事件隊(duì)列515中的時間。重復(fù)事件和一次性(即,單次發(fā)生、非重復(fù))事件都使用圖8所示的方法來 管理。重復(fù)事件可包括其中相關(guān)聯(lián)的工作項(xiàng)具有等于下一調(diào)度的開始時間的結(jié)束時 間的周期性事件。即,每一周期性事件具有等于該事件的周期的持續(xù)時間。周期性事件通常包括如定時器事件和應(yīng)用程序繪制事件等事件。例如,如果 應(yīng)用程序的腳本(例如,在圖1中的腳本主機(jī)115中)創(chuàng)建將每IO秒回叫的定時 器,則它將向事件隊(duì)列515添加一開始時間等于當(dāng)前事件加上10秒的定時器工作 項(xiàng)。結(jié)束時間將被設(shè)為開始時間加上10秒。 一旦定時器工作項(xiàng)在事件隊(duì)列515外 執(zhí)行,則開始時間和結(jié)束時間將通過增加另外的IO秒來調(diào)整,并且工作項(xiàng)基于新 的開始時間在適當(dāng)?shù)奈恢蒙媳恢匦虏迦氲绞录?duì)列515中。周期性事件在只要可能的時候就被調(diào)用。但是,如果它們不能由應(yīng)用程序線 程523在其相關(guān)聯(lián)的工作項(xiàng)中的結(jié)束時間期滿之前被處理,則該特定調(diào)用被丟棄,并且用一新的工作項(xiàng)調(diào)度下一調(diào)用。有利的是,該事件排隊(duì)方法允許參數(shù)可被傳遞到定時器事件以指示要調(diào)用該 事件的時間。該參數(shù)必須與相關(guān)聯(lián)的工作項(xiàng)中的開始時間相同。如上所述,與周期 性定時器事件相關(guān)聯(lián)的腳本可能不是精確地在調(diào)用時間上運(yùn)行。然而,由于每一工 作項(xiàng)包括指定該方法的自變量的方法字段545 (圖5),因此該自變量的值將反映
預(yù)期的調(diào)用時間而非實(shí)際時間。因此,用于定時器事件的處理程序?qū)⒅浪谔?理什么時間(即,報時信號)。一次性事件具有帶不定(INFINITE)結(jié)束時間的相應(yīng)的工作項(xiàng)。因此, 一次 性事件從不被從事件隊(duì)列515中丟棄。例如,如果一次性事件是輸入事件,則該事 件的處理程序作為事件隊(duì)列515中帶不定結(jié)束時間的工作項(xiàng)來調(diào)度。如框822中所指示的,處理是在已提交的基礎(chǔ)上執(zhí)行的。g卩, 一旦應(yīng)用程序 線程523開始處理來自事件隊(duì)列515的工作項(xiàng),它不會停止處理。例如,可以長時 間運(yùn)行的腳本不會被異常中止,異常也不會被注入到腳本中以將其拋出。盡管這一 模式可能在應(yīng)用程序線程處理腳本時使應(yīng)用程序停滯,但是如上所述,ICP(例如, 圖4中的ICP 435)可被安排成包括在提交的工作項(xiàng)處理期間繼續(xù)運(yùn)行的其它線程。 在替換安排中,可能期望以使得新事件基于其相對開始時間被插入到事件隊(duì)列515 中以在提交的工作項(xiàng)之后處理的方式來處理工作項(xiàng)。在框830處,在所標(biāo)記的工作項(xiàng)的處理期間創(chuàng)建的任何新的工作項(xiàng)在所標(biāo)記 的工作項(xiàng)之后被插入到事件隊(duì)列515中,而不論其開始時間如何。標(biāo)記工作項(xiàng)、提 交它們以及在事件隊(duì)列中在提交的工作項(xiàng)之后插入新工作項(xiàng)的過程(如框810、 822 和830所示)確保應(yīng)用程序總是能夠負(fù)擔(dān)某些可見的進(jìn)展。如圖8中的框835和828處所指示的,應(yīng)用程序線程對每一報時信號自動將 兩個工作項(xiàng)插入到每一應(yīng)用程序事件隊(duì)列中,如圖7所示并在相應(yīng)文本中描述的。 這些工作項(xiàng)調(diào)用每一應(yīng)用程序的標(biāo)記引擎以評估應(yīng)用程序定時,然后回流并在顯示 設(shè)備上呈現(xiàn)標(biāo)記。如上所述,工作項(xiàng)在應(yīng)用程序啟動時被插入,并且在每一報時信 號之后被重新調(diào)度。另外,這兩個工作項(xiàng)總是對一個應(yīng)用程序報時信號要處理的最 后兩個工作項(xiàng),并且作為可從事件隊(duì)列515中丟棄的周期性事件來處理。注意,為清晰且易于說明起見,在以上描述中,數(shù)據(jù)、程序以及諸如操作系 統(tǒng)等其它可執(zhí)行程序組件被示為離散的塊、框或其它元素,但可以認(rèn)識到并強(qiáng)調(diào), 這些程序和組件可在不同的時刻駐留在所使用的任何硬件主機(jī)的不同存儲、存儲器 或處理組件中,并由這些主機(jī)硬件中的一個或多個處理器執(zhí)行。盡管示出并描述了用于在交互式媒體環(huán)境中管理應(yīng)用程序狀態(tài)的各種說明性 安排和方法,但是應(yīng)當(dāng)理解,所附權(quán)利要求書的范圍不必限于所描述的具體特征、 安排或方法。相反,這些具體特征、安排或方法是作為以下更特別地要求保護(hù)的在 交互式媒體環(huán)境中實(shí)現(xiàn)受管應(yīng)用程序狀態(tài)的說明性形式來公開的。
權(quán)利要求
1.一種管理對與在交互式媒體環(huán)境中發(fā)生的事件相對應(yīng)的工作項(xiàng)的處理的方法,在所述交互式媒體環(huán)境中使用一報時信號序列來對時間計數(shù),所述方法包括以下步驟標(biāo)記放置在一事件隊(duì)列中的工作項(xiàng)(810),其中具有處于當(dāng)前報時信號處或在所述當(dāng)前報時信號之前的開始時間的工作項(xiàng)被標(biāo)記;處理具有在所述當(dāng)前報時信號之后的結(jié)束時間的已標(biāo)記的工作項(xiàng)(822);以及從所述事件隊(duì)列中丟棄具有在所述當(dāng)前報時信號之前的結(jié)束時間的已標(biāo)記的工作項(xiàng)(819)。
2. 如權(quán)利要求l所述的方法,其特征在于,所述工作項(xiàng)表示由交互式媒體應(yīng) 用程序激發(fā)的一個或多個事件。
3. 如權(quán)利要求2所述的方法,其特征在于,所述一個或多個事件是由所述交 互式媒體應(yīng)用程序中的標(biāo)記激發(fā)的。
4. 如權(quán)利要求2所述的方法,其特征在于,所述一個或多個事件是由所述交 互式媒體應(yīng)用程序中的腳本激發(fā)的。
5. 如權(quán)利要求l所述的方法,其特征在于,所述工作項(xiàng)表示由交互式媒體播 放器生成的一個或多個事件。
6. 如權(quán)利要求l所述的方法,其特征在于,所述工作項(xiàng)表示由所述交互式媒 體環(huán)境中的用戶交互激發(fā)的一個或多個事件。
7. —種被安排成管理對與在交互式媒體環(huán)境中發(fā)生的事件相對應(yīng)的工作項(xiàng)的 處理的應(yīng)用程序調(diào)度器,在所述交互式媒體環(huán)境中使用一報時信號序列來對時間計 數(shù),每一所述工作項(xiàng)具有包括開始時間和結(jié)束時間的時間戳,所述應(yīng)用程序調(diào)度器 包括用于將所述工作項(xiàng)排隊(duì)的事件隊(duì)列(515),所述事件隊(duì)列具有頭端和尾端, 并且被安排成使得所述工作項(xiàng)從所述事件隊(duì)列的頭端開始處理;以及 應(yīng)用程序線程(523),它被安排成標(biāo)記其開始時間對應(yīng)于當(dāng)前報時信號或先前的報時信號的工作項(xiàng),處理已標(biāo)記的工作項(xiàng),以及將與在所述處理期間發(fā)生的新事件相關(guān)聯(lián)的工作項(xiàng)插入到所述事件隊(duì)列 的尾端,使得它們跟在已標(biāo)記的工作項(xiàng)之后。
8. 如權(quán)利要求7所述的應(yīng)用程序調(diào)度器,其特征在于,所述插入是不考慮用于所述新事件的時間戳而執(zhí)行的。
9. 如權(quán)利要求7所述的應(yīng)用程序調(diào)度器,其特征在于,每一工作項(xiàng)包括用于 指示要調(diào)用的方法以及用于該方法的自變量的字段(545)。
10. 如權(quán)利要求7所述的應(yīng)用程序調(diào)度器,其特征在于,每一工作項(xiàng)包括指 示所述時間戳是按照標(biāo)題時間、頁時間還是應(yīng)用程序時間來測量的時鐘選擇器字段(558)。
11. 如權(quán)利要求7所述的應(yīng)用程序調(diào)度器,其特征在于,當(dāng)在所述交互式媒 體環(huán)境中運(yùn)行的應(yīng)用程序重新加載其頁時,所述應(yīng)用程序線程從所述事件隊(duì)列中丟 棄所有工作項(xiàng)。
12. 如權(quán)利要求7所述的應(yīng)用程序調(diào)度器,其特征在于,所述交互式媒體環(huán) 境中的所有應(yīng)用程序運(yùn)行在一回放引擎的同一線程上。
13. —種計算機(jī)可讀介質(zhì),它在由電子設(shè)備中設(shè)置的一個或多個處理器執(zhí)行 時執(zhí)行一種管理對與在交互式媒體環(huán)境中發(fā)生的重復(fù)性和非重復(fù)性事件相關(guān)聯(lián)的 工作項(xiàng)的處理的方法,每一工作項(xiàng)具有至少包括開始時間的時間戳,所述方法包括 以下步驟按照開始時間,然后按照進(jìn)入到事件隊(duì)列的進(jìn)入時間來對所述事件隊(duì)列(515) 中的工作項(xiàng)排序;按序并在提交的基礎(chǔ)上處理來自所述事件隊(duì)列(515)的工作項(xiàng),使得與已處理的工作項(xiàng)相關(guān)聯(lián)的事件在處理終止之前被處理;以及僅從所述事件隊(duì)列(515)丟棄與重復(fù)性事件相關(guān)聯(lián)的工作項(xiàng)。
14. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,所述重復(fù)性事件是 周期性事件。
15. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,所述周期性事件是 由結(jié)束時間等于下一已調(diào)度開始時間的工作項(xiàng)來表示的。
16. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,所述排序是在將工 作項(xiàng)插入到所述事件隊(duì)列(515)期間執(zhí)行的。
17. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,所述排序是在從所 述事件隊(duì)列(515)中提取工作項(xiàng)期間執(zhí)行的。
18. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,還包括將工作項(xiàng)插入到事件隊(duì)列(515)中以調(diào)用交互式媒體應(yīng)用程序中的標(biāo)記引擎來評估定時改變 (730)的步驟。
19. 如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,還包括將工作項(xiàng)插 入到所述事件隊(duì)列(515)中以調(diào)用交互式媒體應(yīng)用程序中的標(biāo)記引擎來回流交互 式媒體應(yīng)用程序中的標(biāo)記并在顯示設(shè)備上呈現(xiàn)所述標(biāo)記(735)的步驟。
20. 如權(quán)利要求19所述的計算機(jī)可讀介質(zhì),其特征在于,在所述交互式媒體 環(huán)境中使用一報時信號序列來對時間計數(shù),并且在每一報時信號中最后處理插入的 工作項(xiàng)。
全文摘要
提供了一種安排,其中交互式媒體環(huán)境中的所有應(yīng)用程序在媒體播放器的單個應(yīng)用程序線程上運(yùn)行。利用事件隊(duì)列(819)來調(diào)度應(yīng)用程序線程對與在該環(huán)境中發(fā)生的事件相對應(yīng)的工作項(xiàng)(810)的處理。工作項(xiàng)(810)包括當(dāng)處理工作項(xiàng)(810)時要調(diào)用的方法以及用于該方法的自變量。工作項(xiàng)(810)還包括開始時間和結(jié)束時間,并且在事件隊(duì)列(819)中首先按照開始時間,然后按照它們被插入到隊(duì)列中的時間來排序。應(yīng)用程序線程標(biāo)記其開始時間對應(yīng)于當(dāng)前或先前的時間的工作項(xiàng)(810),然后按序處理來自隊(duì)列的已標(biāo)記工作項(xiàng)(822)。這種處理被提交,使得一旦應(yīng)用程序線程開始處理工作項(xiàng)(822),它就不會停止。如果已經(jīng)過了工作項(xiàng)的結(jié)束時間,則從事件隊(duì)列(819)中丟棄該工作項(xiàng)(822)。
文檔編號G06F3/00GK101213503SQ200680024300
公開日2008年7月2日 申請日期2006年6月22日 優(yōu)先權(quán)日2005年7月1日
發(fā)明者A·W·J·弗利曼, J·A·伊馮, J·C·芬格, K·瑪扎, O·科勒 申請人:微軟公司