專利名稱:在交互式媒體環(huán)境中將輸入事件分發(fā)到多個(gè)應(yīng)用程序的制作方法
在交互式媒體環(huán)境中將輸入事件分發(fā)到多個(gè)應(yīng)用程序 相關(guān)申請(qǐng)聲明本申請(qǐng)要求2005年7月1日提交的臨時(shí)申請(qǐng)第60/695,944號(hào)的優(yōu)先權(quán),該臨 時(shí)申請(qǐng)通過(guò)引用結(jié)合于此。技術(shù)領(lǐng)域所描述的安排、系統(tǒng)和方法一般涉及交互式媒體,尤其涉及在交互式媒體環(huán) 境中將輸入事件分發(fā)到多個(gè)應(yīng)用程序。北艮 冃眾交互式媒體環(huán)境一般是在可用處理能力、存儲(chǔ)器和對(duì)該環(huán)境中運(yùn)行的應(yīng)用程 序可用的其它資源方面受到約束的資源。交互式媒體的一個(gè)常見(jiàn)示例是在DVD(數(shù) 字多功能盤)上編碼的視頻,其中用戶可以與圖形菜單或其它控件交互以導(dǎo)航到特 定的視頻內(nèi)容或調(diào)用被設(shè)計(jì)到DVD中的特殊特征。在典型的交互式媒體環(huán)境中,諸如圖形和菜單等可視元素被給予"Z順序", 它為顯示屏上的元素提供一視覺(jué)順序。Z順序控制可視元素如何顯現(xiàn)為沿從該顯示 屏向外延伸的假想z軸一個(gè)堆疊在另一個(gè)上。具有較低Z順序的可視元素顯現(xiàn)為 在顯示的底部(并且遠(yuǎn)離觀眾),而具有較高Z順序的可視元素顯現(xiàn)為在較低Z 順序元素之上(并且因此更接近觀眾)。當(dāng)用于生成可視元素的多個(gè)應(yīng)用程序在交互式媒體環(huán)境中運(yùn)行時(shí),必須將輸 入事件分發(fā)到各應(yīng)用程序。輸入事件必須以資源高效的方式來(lái)處理。另外,必須允 許應(yīng)用程序響應(yīng)于來(lái)自環(huán)境的輸入生成圖形輸出以便為用戶動(dòng)態(tài)地創(chuàng)建豐富的交 互式體驗(yàn)。概述在交互式媒體環(huán)境中,輸入事件被分發(fā)到多個(gè)應(yīng)用程序。每一應(yīng)用程序包括 零個(gè)或多個(gè)腳本組件以及零個(gè)或多個(gè)標(biāo)記文件,并且具有對(duì)應(yīng)于該應(yīng)用程序的可視 元素在顯示上的位置的Z順序。利用一輸入事件處理順序,其中向具有焦點(diǎn)(根 據(jù)其對(duì)用戶事件的接收)的應(yīng)用程序提供消費(fèi)該輸入事件的第一機(jī)會(huì)。如果聚焦的 應(yīng)用程序未消費(fèi)該輸入事件,則從上到下按照相反的Z順序?qū)⒃撌录鬟f到其余 的應(yīng)用程序。對(duì)每一應(yīng)用程序允許了消費(fèi)輸入事件、將其傳遞給較低Z順序的應(yīng) 用程序、將其對(duì)較低Z順序的應(yīng)用程序隱藏、或用其它方式處理它的能力。輸入 事件處理在應(yīng)用程序消費(fèi)該輸入事件時(shí)停止。有利的是,以優(yōu)先順序(即,聚焦的應(yīng)用程序,之后是按相反的z順序的其余應(yīng)用程序)的輸入事件傳遞對(duì)最具交互性的應(yīng)用程序給予了優(yōu)先選擇,使得輸入 事件在包括處理器周期和存儲(chǔ)器在內(nèi)的硬件資源受到限制的環(huán)境中被高效地處理。 另外,提供了一種交互式媒體作者可從其中創(chuàng)建具有高度響應(yīng)性的交互行為的應(yīng)用 程序的可預(yù)測(cè)平臺(tái)。附圖簡(jiǎn)述
圖1是示出構(gòu)成在交互式媒體環(huán)境中使用的應(yīng)用程序的元素的說(shuō)明性框圖; 圖2是示出多個(gè)標(biāo)記文檔和腳本之間的關(guān)系的圖示;圖3是包括交互式內(nèi)容處理器、視頻內(nèi)容處理器和混合器的說(shuō)明性交互式媒 體播放器的框圖;圖4是第二說(shuō)明性交互式媒體播放器的框圖;圖5是具有多個(gè)事件隊(duì)列和單個(gè)應(yīng)用程序線程的說(shuō)明性安排的框圖;圖6是一說(shuō)明性事件隊(duì)列的框圖,它示出了首先按照開(kāi)始時(shí)間,然后按照工作項(xiàng)被插入到事件隊(duì)列中的時(shí)間對(duì)工作項(xiàng)的排序;圖7是應(yīng)用程序線程自動(dòng)將兩個(gè)工作項(xiàng)插入到事件隊(duì)列的結(jié)尾處的說(shuō)明性安排的框圖;圖8是用于將與交互式媒體環(huán)境中發(fā)生的事件相關(guān)聯(lián)的工作項(xiàng)排隊(duì)的說(shuō)明性 方法的流程圖;圖9是在交互式圖形合成模型中使用的一組平面的框圖;圖IO是示出第一說(shuō)明性應(yīng)用程序中的可視元素的Z順序的圖示;圖11是示出第二說(shuō)明性應(yīng)用程序中的可視元素的Z順序的圖示-,圖12是示出具有從圖10和ll所示的應(yīng)用程序生成的可視元素的合成顯示的圖示;圖13是示出其中應(yīng)用程序按照優(yōu)先級(jí)順序來(lái)呈現(xiàn)并以從底向上的順序來(lái)合成
的說(shuō)明性安排的圖示;圖14是其中應(yīng)用程序以優(yōu)先級(jí)順序來(lái)呈現(xiàn)并以從底向上的順序來(lái)合成的說(shuō)明 性方法的流程圖;圖15是一說(shuō)明性回放系統(tǒng)的框圖;以及圖16是用于將輸入事件分發(fā)到多個(gè)應(yīng)用程序的說(shuō)明性方法的流程圖。 詳細(xì)描述參考圖1,示出了構(gòu)成在交互式媒體環(huán)境中使用的應(yīng)用程序110的元素的說(shuō)明 性框圖。通常在交互式媒體環(huán)境中使用應(yīng)用程序來(lái)允許用戶與在耦合的顯示設(shè)備 (諸如電視機(jī)或監(jiān)視器)上呈現(xiàn)圖形和視頻的交互式媒體播放器之間通過(guò)諸如遙控 器等用戶接口的交互。更具體地,應(yīng)用程序控制該環(huán)境中各種內(nèi)容對(duì)象的演示行為, 包括視頻回放。視頻上諸如菜單和交互式按鈕等圖形對(duì)象的演示也是使用應(yīng)用程序 來(lái)實(shí)現(xiàn)的。應(yīng)用程序還管理并控制該環(huán)境中的音頻回放和聲音??梢詷?gòu)想,多個(gè)應(yīng) 用程序一般將同時(shí)在最具交互性的媒體設(shè)置下運(yùn)行。然而,對(duì)于應(yīng)用程序同時(shí)運(yùn)行 并沒(méi)有要求,并且在特定的設(shè)置下劃分或聚集應(yīng)用程序的決定是交互式媒體作者的 設(shè)計(jì)選擇。應(yīng)用程序還可取決于特定設(shè)置的要求在邏輯上被細(xì)分為應(yīng)用程序頁(yè)。應(yīng)用程序110包括包含零個(gè)或多個(gè)腳本文件117和119的腳本主機(jī)U5以及 用于生成文檔對(duì)象模型(DOM)的零個(gè)或多個(gè)標(biāo)記文檔120。標(biāo)記文檔120包括 與例如圖形對(duì)象的內(nèi)容、樣式、定時(shí)和布局有關(guān)的信息。由此, 一般使用標(biāo)記上下 文在交互式媒體環(huán)境中的圖形平面上提供圖形。在該說(shuō)明性示例中,標(biāo)記文檔是依照W3C標(biāo)準(zhǔn)的XML文檔文件。如圖l所 示,可使用標(biāo)記中〈head〉(首部)部分中的〈include〉(包括)元素來(lái)訪問(wèn)多個(gè)物 理XML文件。在某些設(shè)置中,對(duì)應(yīng)用程序而言較佳的可能是一次沒(méi)有多于一個(gè)的 活動(dòng)標(biāo)記。然而,應(yīng)用程序可通過(guò)使用標(biāo)記中的〈ink〉(鏈接)元素來(lái)切換其標(biāo)記 120。或者,應(yīng)用程序可通過(guò)利用允許應(yīng)用程序獲取對(duì)當(dāng)前應(yīng)用程序內(nèi)的功能對(duì)象 的訪問(wèn)的應(yīng)用程序編程接口(API)來(lái)切換其標(biāo)記120。使用通過(guò)API的loadMarkup() (加載標(biāo)記)調(diào)用,應(yīng)用程序可通過(guò)經(jīng)由API傳遞新標(biāo)記的統(tǒng)一資源標(biāo)識(shí)符(URI) 來(lái)切換標(biāo)記文件120。在應(yīng)用程序訪問(wèn)新標(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)記將使那些事件處理程序無(wú)效。
在該說(shuō)明性示例中,腳本主機(jī)115包含與標(biāo)記120 —起使用來(lái)實(shí)現(xiàn)交互式媒 體體驗(yàn)的腳本文件117和119。腳本文件117和19可例如使用如由國(guó)際歐洲計(jì)算 機(jī)制造協(xié)會(huì)(Ecma International)在ECMA-262規(guī)范中定義的ECMAScript (ECMA 腳本)來(lái)實(shí)現(xiàn)。被歸入ECMA-262的常見(jiàn)腳本化編程語(yǔ)言包括JavaScript和JScript。 在某些設(shè)置中,可能期望使用ECMAScript262的一個(gè)子集,具體地是ECMA-327, 連同一主機(jī)環(huán)境和一組公共API來(lái)實(shí)現(xiàn)腳本117和119。大多數(shù)設(shè)置中的腳本上下 文用于處理來(lái)自用戶的交互式控制問(wèn)題以及系統(tǒng)事件、圖形控制、視頻回放、資源 管理(例如,使用高速緩存或持久存儲(chǔ)資源)以及僅使用標(biāo)記120不能容易或有效 地實(shí)現(xiàn)的其它問(wèn)題。API以及資源對(duì)應(yīng)用程序110的可用性由圖1中的參考標(biāo)號(hào)125來(lái)指示。資源 包括例如音頻和視頻文件、字體、圖片和圖像(例如,采用常見(jiàn)的文件格式,包括 PNG、 JPEG、 GIF、 BMP、 TIFF等)以及應(yīng)用程序根據(jù)特定設(shè)置的環(huán)境所需的其 它資源。每一應(yīng)用程序110保持其自己的腳本主機(jī)115,它保持用于腳本的變量、函數(shù) 和其它狀態(tài)的上下文。在大多數(shù)設(shè)置中, 一個(gè)應(yīng)用程序中的變量和函數(shù)對(duì)另一應(yīng)用 程序是不可見(jiàn)的,除非該應(yīng)用程序例如通過(guò)使用跨所有應(yīng)用程序共享的對(duì)象被特別 地設(shè)置成允許這樣的跨應(yīng)用程序可見(jiàn)性。例如,在該說(shuō)明性示例中,交互式媒體播 放器具有跨所有應(yīng)用程序共享的單個(gè)實(shí)例。因此,可任選地,特殊對(duì)象可例如使用0++對(duì)象而被置于腳本主機(jī)115內(nèi)部,以實(shí)現(xiàn)其中該特殊對(duì)象都引用例如播放器的 同一內(nèi)部函數(shù)的單元素(singleton)(即, 一對(duì)象具有有限的實(shí)例化)。該可任選 方面允許交互式媒體腳本作者在邏輯上將公共對(duì)象作為單元素來(lái)對(duì)待,同時(shí)仍允許 腳本主機(jī)115實(shí)現(xiàn)將一對(duì)象展示給單個(gè)腳本主機(jī)所必需的功能?,F(xiàn)在參考圖2,提供了示出多個(gè)標(biāo)記文檔和腳本之間的關(guān)系的圖示。應(yīng)用程序 清單230與應(yīng)用程序交互,如上所述,應(yīng)用程序一般由所示的資源125、腳本205 和標(biāo)記文檔251、 260和275來(lái)定義。每一應(yīng)用程序在大多數(shù)設(shè)置中通常使用單個(gè) 應(yīng)用程序清單文件,但是應(yīng)用程序清單不是應(yīng)用程序的運(yùn)行時(shí)狀態(tài)的一部分。在該 說(shuō)明性示例中,應(yīng)用程序清單230被編碼為XML文檔文件。應(yīng)用程序清單230描述了要由應(yīng)用程序110 (圖1)使用的初始標(biāo)記文件251 以及腳本主機(jī)115 (圖l)中包含的腳本文件一在圖2中由帶參考標(biāo)號(hào)205的矩形 來(lái)共同指示。如果應(yīng)用程序清單230列出了一個(gè)以上腳本,如本說(shuō)明性示例中所示 的,則所有腳本都被加載到交互式媒體播放器的腳本處理引擎中。由此,多個(gè)腳本
文件如同腳本作者將所有腳本文件按照應(yīng)用程序清單230中列出的順序串接成單 個(gè)大文件那樣被對(duì)待和表現(xiàn)。如圖2所示,應(yīng)用程序清單230引用資源125。對(duì)交互式媒體環(huán)境中應(yīng)用程序 可用的資源形成了一有向圖,其根為應(yīng)用程序清單230中引用的資源125。用于每 一應(yīng)用程序的圖形的允許范圍由應(yīng)用程序清單230來(lái)規(guī)定。圖2示出了在交互式媒體環(huán)境中運(yùn)行的應(yīng)用程序。如上所述,應(yīng)用程序一次 可以僅有一個(gè)活動(dòng)標(biāo)記,且應(yīng)用程序內(nèi)容按應(yīng)用程序保持分開(kāi)。如由標(biāo)記頁(yè)251、 260和275之間的箭頭所指示的,應(yīng)用程序能夠經(jīng)由腳本205從標(biāo)記頁(yè)251前進(jìn)到 260,之后從頁(yè)260前進(jìn)到275。交互式媒體環(huán)境中應(yīng)用程序的上下文執(zhí)行行進(jìn)由播放列表290來(lái)指導(dǎo),播放 列表描述了環(huán)境中包括由播放器呈現(xiàn)到顯示設(shè)備上的演示對(duì)象在內(nèi)的對(duì)象之間的 關(guān)系以及其它內(nèi)容。這些演示對(duì)象通常包括由應(yīng)用程序產(chǎn)生的視頻(可以包括如以 下更詳細(xì)描述的多個(gè)流)和圖形。播放列表290還將跨交互式媒體環(huán)境的多個(gè)資源作為單個(gè)管理實(shí)體來(lái)管理, 以有效地分配并控制應(yīng)用程序?qū)Y源的消費(fèi)。如同應(yīng)用程序清單230 —樣,播放列 表290在大多數(shù)設(shè)置中可被有利地具體化為XML文檔文件。圖2中的標(biāo)記頁(yè)可在某些設(shè)置中用于向執(zhí)行上下文(由圖1中的腳本文件117 和119創(chuàng)建)激發(fā)事件。執(zhí)行上下文然后操縱由當(dāng)前應(yīng)用程序標(biāo)記創(chuàng)建的DOM。 當(dāng)在交互式媒體環(huán)境中使用標(biāo)記來(lái)指定該環(huán)境中的圖形對(duì)象的樣式、內(nèi)容、定時(shí)和 布局(如由圖2中的元素253、 262和277所表示的)時(shí),腳本和標(biāo)記的組合允許 創(chuàng)建一組綜合能力。圖3是第一說(shuō)明性交互式媒體播放器305的框圖,它包括交互式內(nèi)容處理器 (ICP) 335、視頻內(nèi)容處理器(VCP) 310和混合器339。注意,圖3所示的安排 提供了描述說(shuō)明性交互式媒體播放器305中與應(yīng)用程序狀態(tài)管理有關(guān)的特征和功 能的邏輯模型。由此,交互式媒體播放器的實(shí)際實(shí)現(xiàn)可利用各種結(jié)構(gòu)形式,同時(shí)仍 如此處所描述的操作以實(shí)現(xiàn)應(yīng)用程序狀態(tài)管理的好處。交互式媒體播放器305通常 用諸如單機(jī)消費(fèi)者電子設(shè)備等專用硬件來(lái)實(shí)現(xiàn),或者使用采用計(jì)算機(jī)可讀介質(zhì)以及諸如在個(gè)人計(jì)算機(jī)中找到的通用處理器的軟件實(shí)現(xiàn)來(lái)實(shí)現(xiàn)。VCP 310管理可通過(guò)網(wǎng)絡(luò)從多個(gè)源接收到的一個(gè)或多個(gè)媒體流,這些源包括 諸如DVD驅(qū)動(dòng)器或高清晰度DVD (HD-DVD)驅(qū)動(dòng)器等本地光驅(qū)、本地存儲(chǔ)器或 遠(yuǎn)程寬帶源。在本說(shuō)明性示例中,VCP310包括一個(gè)或多個(gè)媒體處理器1,2...N, 如由圖3中的元素304和306所指示的。媒體處理器304和306處理所接收的通常 包括音頻和視頻的媒體流,以解碼并呈現(xiàn)作為音頻/視頻流在線路325上輸出的對(duì) 應(yīng)的圖像和聲音。音頻/視頻流325可以表示多個(gè)視頻元素,例如用于使用"畫中 畫"類型配置來(lái)呈現(xiàn)多個(gè)單獨(dú)的視頻窗口。媒體處理器304和306各自包括媒體源接口、多路分解器和解碼器。媒體處 理器304和306也可任選地包括解密能力。顯示設(shè)備355被耦合以接收并顯示音頻 /視頻流。利用媒體時(shí)鐘312,使得每一接收到的媒體具有相關(guān)聯(lián)的"媒體時(shí)間"。當(dāng)在 交互式媒體播放器305上暫停一視頻流時(shí),媒體時(shí)鐘312也被暫停。當(dāng)視頻流被用 戶設(shè)置成比實(shí)時(shí)快或慢地行進(jìn)時(shí)(例如,當(dāng)視頻流被置于快進(jìn)、回退或慢動(dòng)作模式 時(shí)一對(duì)這些模式中任一個(gè)的使用被稱為"特效播放"),則媒體時(shí)鐘312相應(yīng)地加 速或減慢。因此,媒體時(shí)間從媒體時(shí)鐘以及媒體處理器304和306的操作中得到。 媒體時(shí)間通過(guò)線路315被傳遞到ICP 335中的播放列表管理器337。交互式媒體環(huán) 境中的時(shí)間,包括媒體時(shí)間通常以"報(bào)時(shí)信號(hào)(tick)"來(lái)計(jì)數(shù)。ICP 335執(zhí)行所有應(yīng)用程序相關(guān)處理,并且可從可用硬件、軟件、固件或其組 合來(lái)實(shí)現(xiàn)的若干組件中安排。ICP 335的組件包括,例如標(biāo)記引擎、腳本語(yǔ)言解釋 器以及XML解析組件(未示出)。ICP 335在線路321上輸出與視頻/音頻流325 同步的圖形流?;旌掀?38取線路321上的圖形流以及線路325上的音頻/視頻流, 使得圖形在視頻流上的圖形層中呈現(xiàn)以實(shí)現(xiàn)對(duì)用戶的交互式媒體會(huì)話。在大多數(shù)設(shè)置中,ICP 335輸出在逐幀的基礎(chǔ)上與視頻流同步的圖形。然而, 這一同步可使用其它基礎(chǔ)來(lái)執(zhí)行,包括例如時(shí)間(包括如以下定義的標(biāo)題時(shí)間和媒 體時(shí)間)、視頻中的內(nèi)容、或嵌入在視頻中的用于指示或標(biāo)記流中的特定點(diǎn)的其它 元數(shù)據(jù)。ICP 335包括播放列表管理器337和任務(wù)管理器330。播放列表管理器337負(fù) 責(zé)控制環(huán)境中的演示對(duì)象。這些對(duì)象包括播放器305上的視頻回放以及運(yùn)行以生成 交互式圖形的應(yīng)用程序。播放列表管理器337管理以上在伴隨圖2的文本中描述的 播放列表290。播放列表管理器337還計(jì)算與媒體流中的內(nèi)容的每一部分相關(guān)聯(lián)的"標(biāo)題時(shí) 間"。標(biāo)題是視頻和音頻內(nèi)容的唯一序列,它具有通常由DVD作者定義的開(kāi)始和 結(jié)束時(shí)間。然而,這一作者定義的標(biāo)題可以是任意的。由此,視頻中察覺(jué)到的特定 內(nèi)容可以是一個(gè)標(biāo)題的一部分、 一個(gè)完整標(biāo)題或跨多個(gè)標(biāo)題運(yùn)行。
標(biāo)題的一個(gè)示例是美國(guó)在所有模擬和數(shù)字形式的預(yù)錄制視頻之前的版權(quán)警 告。DVD上有特色的吸引人的東西(例如,主電影)是另一示例,且通常是最長(zhǎng)的標(biāo)題。在某些設(shè)置中,電影中的各個(gè)章節(jié)可能被DVD作者指定為單獨(dú)的標(biāo)題。 對(duì)于所有這些標(biāo)題,標(biāo)題時(shí)間被定義為如在媒體時(shí)鐘312上所示的自從給定標(biāo)題開(kāi) 始播放以來(lái)已經(jīng)過(guò)的時(shí)間。演示時(shí)鐘360在線路362上耦合到播放列表管理器。演示時(shí)鐘360是其時(shí)間 以與真實(shí)世界時(shí)鐘相同的步調(diào)改變的時(shí)鐘(即,演示時(shí)鐘360花費(fèi)一秒的真實(shí)時(shí)間 來(lái)前進(jìn)一秒)。與媒體時(shí)鐘312形成對(duì)比,演示時(shí)鐘360從不停止,并且不能被加 速或減慢。來(lái)自演示時(shí)鐘360的演示時(shí)間被傳遞到任務(wù)管理器330,后者使用它來(lái) 計(jì)算"應(yīng)用程序時(shí)間"和應(yīng)用程序"頁(yè)時(shí)間"。應(yīng)用程序時(shí)間是自從應(yīng)用程序啟動(dòng)(或如以下更詳細(xì)描述地進(jìn)入"活動(dòng)"狀 態(tài))以來(lái)已經(jīng)過(guò)的時(shí)間。當(dāng)多個(gè)應(yīng)用程序在運(yùn)行時(shí),每一應(yīng)用程序具有其自己的應(yīng) 用程序時(shí)間的觀念。對(duì)于每一應(yīng)用程序,應(yīng)用程序時(shí)間總是在應(yīng)用程序在環(huán)境中啟 動(dòng)時(shí)從零開(kāi)始。例如,如果應(yīng)用程序Appl在20個(gè)任意時(shí)間單位的演示時(shí)間(對(duì)Appl是0 時(shí)間單位)處開(kāi)始,并且應(yīng)用程序App2在25個(gè)時(shí)間單位的演示時(shí)間(對(duì)App2 是O時(shí)間單位)處開(kāi)始,則在35個(gè)時(shí)間單位的演示時(shí)間處,Appl的應(yīng)用程序時(shí)間 是15個(gè)時(shí)間單位,而App2的應(yīng)用程序時(shí)間是10個(gè)時(shí)間單位。對(duì)于在邏輯上被細(xì) 分成頁(yè)的應(yīng)用程序,頁(yè)時(shí)間是自從應(yīng)用程序的頁(yè)被加載以來(lái)已經(jīng)過(guò)的時(shí)間。圖4是第二說(shuō)明性媒體播放器405的框圖,它包括ICP 435、 VCP410和混合 器439。說(shuō)明性媒體播放器405在形式和功能上類似于圖3所示的交互式媒體播放 器305。然而,要注意,VCP 435包括被安排成向混合器439提供單獨(dú)的饋送425 和427的媒體處理器1,2…N (如由圖4中的元素404和406所指示的)。這種安 排在對(duì)個(gè)別媒體流的操縱在混合之前執(zhí)行的某些設(shè)置中是合乎需要的。例如,諸如 對(duì)媒體流中的視頻的掃視和縮放等圖像處理/選擇技術(shù)可以在由圖4中的參考標(biāo)號(hào) 425和427所表示的N個(gè)單獨(dú)饋送中的一個(gè)或多個(gè)上實(shí)現(xiàn)。音頻/視頻饋送425和427以及來(lái)自ICP 435的同步圖形流在混合器439中混 合,并在線路441上輸出到顯示設(shè)備455。圖4中的其它元素,包括ICP 435 (包 括播放列表管理器437和任務(wù)管理器430) 、 VCP410中的媒體時(shí)鐘412以及演示 時(shí)鐘460以與其在圖3中示出并在相應(yīng)的文本中描述的對(duì)應(yīng)物相似的方式來(lái)配置和 運(yùn)作。 圖5是說(shuō)明性安排500的框圖,它具有分別由參考標(biāo)號(hào)510、 515和518指示 的多個(gè)事件隊(duì)列1,2...N,以及單個(gè)應(yīng)用程序線程523。在這一說(shuō)明性安排中,運(yùn) 行在ICP (諸如圖4中的ICP 435)上的所有應(yīng)用程序都是單線程的,并且應(yīng)用程 序線程523專用于這一目的。然而,ICP435本身不必是單線程的。在替換實(shí)現(xiàn)中, ICP 435可以利用其它線程,例如用于將資源預(yù)取到高速緩存中。事件隊(duì)列510、 515和518中的每一個(gè)被安排成從其頭端(位于圖5的右側(cè)) 饋入應(yīng)用程序線程523。分別由參考標(biāo)號(hào)527、530和532指示的多個(gè)應(yīng)用程序Appl, App2 ... AppN被安排成將分別由參考標(biāo)號(hà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)用程序事件僅由腳本來(lái)處理。然而,應(yīng)用程序527、 530和532不直接調(diào)用 腳本或標(biāo)記功能。相反,所有這些功能都以工作項(xiàng)的形式被置入應(yīng)用程序各自的事 件隊(duì)列中,它們?cè)趹?yīng)用程序線程523處理該工作項(xiàng)時(shí)被調(diào)用。在替換安排中,來(lái)自除應(yīng)用程序之外的源的事件也使用事件隊(duì)列來(lái)調(diào)度。例 如,用戶事件通過(guò)用戶與遙控器的交互來(lái)激發(fā)。系統(tǒng)事件是由諸如圖4所示并在相 應(yīng)的文本中描述的播放器405等交互式媒體播放器激發(fā)事件,并且包括例如視頻標(biāo) 題中的章節(jié)改變。事件隊(duì)列510、 515和518中的每一工作項(xiàng)包含如圖5所示的字段。這些字段 包括應(yīng)用程序關(guān)聯(lián)字段540、方法字段545、開(kāi)始時(shí)間(BeginTime)字段552、結(jié) 束時(shí)間(EndTime)字段555以及可任選的時(shí)鐘選擇器(ClockSelector)字段558。應(yīng)用程序關(guān)聯(lián)字段540指示向其應(yīng)用工作項(xiàng)的特定應(yīng)用程序。方法字段545 包含當(dāng)該工作項(xiàng)由應(yīng)用程序線程523處理時(shí)調(diào)用的方法。方法字段545還包括用于 該方法的自變量。開(kāi)始時(shí)間字段552和結(jié)束時(shí)間字段555分別用于指示該工作項(xiàng)的方法何時(shí)開(kāi) 始和結(jié)束。在該說(shuō)明性示例中,時(shí)間是使用應(yīng)用程序時(shí)間來(lái)表達(dá)的。然而,在替換 示例中,開(kāi)始時(shí)間字段552和結(jié)束時(shí)間字段555包含取決于特定設(shè)置的要求可替換 地用標(biāo)題時(shí)間、應(yīng)用程序時(shí)間或頁(yè)時(shí)間來(lái)表達(dá)的值。在這些情況下,由工作項(xiàng)使用 的特定時(shí)間幀在時(shí)鐘選擇器字段558中指示。不論所利用的時(shí)間幀是什么,工作項(xiàng) 的開(kāi)始時(shí)間必定總是小于結(jié)束時(shí)間。圖6是示出其中包含的工作項(xiàng)的排序的事件隊(duì)列515的框圖。圖6中為便于
清晰說(shuō)明起見(jiàn)沒(méi)有示出其它事件隊(duì)列510和518 (圖5)。然而,以下描述的排序 方法同樣適用于這些其它事件隊(duì)列。事件隊(duì)列515包括如分別由參考標(biāo)號(hào)605、 610、 615和620指示的工作項(xiàng)1、 2、 3…N。每一工作項(xiàng)包括圖5所示并在相應(yīng)的文本中描述的字段。工作項(xiàng)605包括開(kāi)始時(shí)間i以及相關(guān)聯(lián)的插入到事件隊(duì)列515中的插入時(shí)間t,, 如由圖6中的框630所指示的。類似地,工作項(xiàng)610包括開(kāi)始時(shí)間2,以及相關(guān)聯(lián) 的插入到事件隊(duì)列515中的插入時(shí)間t2,如在框635中所指示的。工作項(xiàng)615包括 開(kāi)始時(shí)間3,以及相關(guān)聯(lián)的插入到事件隊(duì)列515中的插入時(shí)間t3,如在框640中所 指示的。并且,工作項(xiàng)620包括開(kāi)始時(shí)間N,以及相關(guān)聯(lián)的插入到事件隊(duì)列515 中的插入時(shí)間&,如在框645中指示的。在該說(shuō)明性示例中,工作項(xiàng)在事件隊(duì)列515中首先按照開(kāi)始時(shí)間,然后按照 工作項(xiàng)被插入到事件隊(duì)列中的時(shí)間來(lái)排序。這種排序?qū)е聭?yīng)用程序線程523按照開(kāi) 始時(shí)間的順序來(lái)處理工作項(xiàng),或者當(dāng)兩個(gè)工作項(xiàng)具有相同的開(kāi)始時(shí)間時(shí),按照FIFO (先進(jìn)先出)的順序來(lái)處理。由此,當(dāng)工作項(xiàng)620位于事件隊(duì)列515的頭部時(shí),暗示了開(kāi)始時(shí)間^開(kāi)始時(shí)間3;或者如果開(kāi)始時(shí)間!^開(kāi)始時(shí)間3,則tN^3(即,工作項(xiàng)620在工作項(xiàng)615之前插入到事件隊(duì)列515中)。根據(jù)這一相同的推導(dǎo),對(duì)于工作項(xiàng)605、 610和615, 則開(kāi)始時(shí)間3<開(kāi)始時(shí)間2;或者如果開(kāi)始時(shí)間3=開(kāi)始時(shí)間2,則tft"并且開(kāi)始時(shí)間2<開(kāi)始時(shí)間1;或者如果開(kāi)始時(shí)間2=開(kāi)始時(shí)間,,則t-t, 事件隊(duì)列中對(duì)工作項(xiàng)的排序使用兩種替代方法來(lái)執(zhí)行工作項(xiàng)可在被插入到 事件隊(duì)列時(shí)或者在處理之前從事件隊(duì)列中提取工作項(xiàng)時(shí)排序。任一安排都同樣可 用,只要對(duì)來(lái)自事件隊(duì)列的工作項(xiàng)的處理是按照開(kāi)始時(shí)間然后按照隊(duì)列插入時(shí)間來(lái) 執(zhí)行的。圖7是一說(shuō)明性安排的框圖,其中應(yīng)用程序線程523將兩個(gè)工作項(xiàng)705和715 自動(dòng)插入到事件隊(duì)列515的尾部。為便于清晰說(shuō)明起見(jiàn),圖7中未示出其它事件隊(duì) 列510和518 (圖5)。然而,如下所述的應(yīng)用程序線程對(duì)工作項(xiàng)的自動(dòng)插入同樣 適用于這些其它事件隊(duì)列。如圖所示,自動(dòng)插入的工作項(xiàng)705和715在事件隊(duì)列 515中跟在工作項(xiàng)605和620后面。在一個(gè)說(shuō)明性示例中,兩個(gè)工作項(xiàng)的自動(dòng)插入
是在應(yīng)用程序啟動(dòng)并且在每一報(bào)時(shí)信號(hào)之后重新調(diào)度工作項(xiàng)時(shí)執(zhí)行的。工作項(xiàng)705包括對(duì)標(biāo)記引擎(例如,圖4的ICP 435中設(shè)置的標(biāo)記引擎)的調(diào) 用以處理對(duì)應(yīng)用程序App2 530中的頁(yè)的定時(shí),如框730所示。在框735中,工作 項(xiàng)715包括對(duì)標(biāo)記的調(diào)用以使應(yīng)用程序App2的標(biāo)記回流來(lái)反映已處理的事件然后 在顯示設(shè)備(例如,圖4中的顯示器455)上呈現(xiàn)標(biāo)記。工作項(xiàng)705和715總是在 應(yīng)用程序的報(bào)時(shí)信號(hào)中由應(yīng)用程序線程523最后處理的工作項(xiàng)。圖8是用于對(duì)在交互式媒體環(huán)境中發(fā)生的事件相關(guān)聯(lián)的工作項(xiàng)排隊(duì)的方法的 流程圖。在采用單個(gè)應(yīng)用程序線程的事件排隊(duì)的說(shuō)明性示例中,該方法由圖4-7所 示并在相應(yīng)的文本中描述的安排來(lái)執(zhí)行。所示的方法通常對(duì)每一報(bào)時(shí)信號(hào)迭代地執(zhí) 行。該過(guò)程在框805處開(kāi)始。在框810處,當(dāng)應(yīng)用程序線程523 (圖5-7)能夠自 由處理工作項(xiàng)時(shí),它首先標(biāo)記事件隊(duì)列中其開(kāi)始時(shí)間對(duì)應(yīng)于當(dāng)前或先前的報(bào)時(shí)信號(hào) 的每一工作項(xiàng)。應(yīng)用程序線程523僅處理所標(biāo)記的工作項(xiàng)。由此,事件隊(duì)列515 中的工作項(xiàng)從不在其開(kāi)始時(shí)間之前處理。在判別框816處,如果所標(biāo)記的工作項(xiàng)的結(jié)束時(shí)間已經(jīng)過(guò)去,則如框819中 所指示地,從事件隊(duì)列515中丟棄該工作項(xiàng)。在這一情況下,將不執(zhí)行對(duì)該工作項(xiàng) 的任何處理。萬(wàn)一應(yīng)用程序App2 530重新加載其頁(yè),則該應(yīng)用程序的頁(yè)時(shí)鐘被復(fù) 位為零,并且基于該應(yīng)用程序的頁(yè)時(shí)鐘的所有未決(即,排隊(duì))的工作項(xiàng)如同它們 已到達(dá)其結(jié)束時(shí)間那樣從事件隊(duì)列丟棄。如果在判別框816處,所標(biāo)記的工作項(xiàng)的結(jié)束時(shí)間還未過(guò)去,則控制被傳遞 到框822,并且應(yīng)用程序線程523處理該工作項(xiàng)。如上在描述附圖6時(shí)所述的,每 一工作項(xiàng)按照來(lái)自事件隊(duì)列515的順序來(lái)處理首先按照開(kāi)始時(shí)間,然后按照每一 工作項(xiàng)被插入到事件隊(duì)列515中的時(shí)間。重復(fù)事件和一次性(即,單次發(fā)生、非重復(fù))事件都使用圖8所示的方法來(lái) 管理。重復(fù)事件可包括其中相關(guān)聯(lián)的工作項(xiàng)具有等于下一調(diào)度的開(kāi)始時(shí)間的結(jié)束時(shí) 間的周期性事件。即,每一周期性事件具有等于該事件的周期的持續(xù)時(shí)間。周期性事件通常包括如定時(shí)器事件和應(yīng)用程序繪制事件等事件。例如,如果 應(yīng)用程序的腳本(例如,在圖1中的腳本主機(jī)115中)創(chuàng)建將每IO秒回叫的定時(shí) 器,則它將向事件隊(duì)列515添加一開(kāi)始時(shí)間等于當(dāng)前事件加上10秒的定時(shí)器工作 項(xiàng)。結(jié)束時(shí)間將被設(shè)為開(kāi)始時(shí)間加上IO秒。 一旦定時(shí)器工作項(xiàng)在事件隊(duì)列515外 執(zhí)行,則開(kāi)始時(shí)間和結(jié)束時(shí)間將通過(guò)增加另外的IO秒來(lái)調(diào)整,并且工作項(xiàng)基于新 的開(kāi)始時(shí)間在適當(dāng)?shù)奈恢蒙媳恢匦虏迦氲绞录?duì)列515中。周期性事件在只要可能的時(shí)候就被調(diào)用。但是,如果它們不能由應(yīng)用程序線 程523在其相關(guān)聯(lián)的工作項(xiàng)中的結(jié)束時(shí)間期滿之前被處理,則該特定調(diào)用被丟棄,并且用一新的工作項(xiàng)調(diào)度下一調(diào)用。由此,周期性事件會(huì)遭受工作項(xiàng)超時(shí)。有利的是,該事件排隊(duì)方法允許參數(shù)可被傳遞到定時(shí)器事件以指示要調(diào)用該 事件的時(shí)間。該參數(shù)必須與相關(guān)聯(lián)的工作項(xiàng)中的開(kāi)始時(shí)間相同。如上所述,與周期 性定時(shí)器事件相關(guān)聯(lián)的腳本可能不是精確地在調(diào)用時(shí)間上運(yùn)行。然而,由于每一工作項(xiàng)包括指定該方法的自變量的方法字段545 (圖5),因此該自變量的值將反映 預(yù)期的調(diào)用時(shí)間而非實(shí)際時(shí)間。因此,用于定時(shí)器事件的處理程序?qū)⒅浪谔?理什么時(shí)間(即,報(bào)時(shí)信號(hào))。一次性事件具有帶不定(INFINITE)結(jié)束時(shí)間的相應(yīng)的工作項(xiàng)。因此, 一次 性事件從不被從事件隊(duì)列515中丟棄。例如,如果一次性事件是輸入事件,則該事 件的處理程序作為事件隊(duì)列515中帶不定結(jié)束時(shí)間的工作項(xiàng)來(lái)調(diào)度。如框822中所指示的,處理是在已提交的基礎(chǔ)上執(zhí)行的。即, 一旦應(yīng)用程序 線程523開(kāi)始處理來(lái)自事件隊(duì)列515的工作項(xiàng),它不會(huì)停止處理。例如,可以長(zhǎng)時(shí) 間運(yùn)行的腳本不會(huì)被異常中止,異常也不會(huì)被注入到腳本中以將其拋出。盡管這一 模式可能在應(yīng)用程序線程處理腳本時(shí)使應(yīng)用程序停滯,但是如上所述,ICP(例如, 圖4中的ICP 435)可被安排成包括在提交的工作項(xiàng)處理期間繼續(xù)運(yùn)行的其它線程。在框830處,在所標(biāo)記的工作項(xiàng)的處理期間創(chuàng)建的任何新的工作項(xiàng)在所標(biāo)記 的工作項(xiàng)之后被插入到事件隊(duì)列515中,而不論其開(kāi)始時(shí)間如何。標(biāo)記工作項(xiàng)、提 交它們以及在事件隊(duì)列中在提交的工作項(xiàng)之后插入新工作項(xiàng)的過(guò)程(如框810、 822 和830所示)確保應(yīng)用程序總是能夠負(fù)擔(dān)某些可見(jiàn)的進(jìn)展。如圖8中的框835和828處所指示的,應(yīng)用程序線程對(duì)每一報(bào)時(shí)信號(hào)自動(dòng)將 兩個(gè)工作項(xiàng)插入到每一應(yīng)用程序事件隊(duì)列中,如圖7所示并在相應(yīng)文本中描述的。 這些工作項(xiàng)調(diào)用每一應(yīng)用程序的標(biāo)記引擎以評(píng)估應(yīng)用程序定時(shí),然后回流并在顯示設(shè)備上呈現(xiàn)標(biāo)記。如上所述,工作項(xiàng)在應(yīng)用程序啟動(dòng)時(shí)被插入,并且在每一報(bào)時(shí)信 號(hào)之后被重新調(diào)度。另外,這兩個(gè)工作項(xiàng)總是對(duì)一個(gè)應(yīng)用程序報(bào)時(shí)信號(hào)要處理的最 后兩個(gè)工作項(xiàng),并且作為可從事件隊(duì)列515中丟棄的周期性事件來(lái)處理。圖9是在說(shuō)明性圖形合成模型中用于對(duì)顯示上的可視元素按照功能和/或來(lái)源 在邏輯上進(jìn)行分組的一組圖形平面900的圖示。圖形平面組900包括光標(biāo)平面905、 圖形平面912、子圖片平面918、子視頻平面922以及主視頻平面925。光標(biāo)平面 卯5是圖形平面組900中最頂上的(即,用戶930覺(jué)得最接近的)平面,其中顯示 如指針等光標(biāo)對(duì)象。其余的平面如由圖9中的箭頭935所示地按顯示的頂部到底部, 從左到右排列。圖形平面組900中的所有平面使用一稱為畫布的公共xy坐標(biāo)系統(tǒng)。第三維由 如圖9中的參考標(biāo)號(hào)940所指示地從顯示器向外投影的z軸來(lái)描述。在交互式媒體 環(huán)境中運(yùn)行的應(yīng)用程序?qū)儆谔囟ㄆ矫?。?yīng)用程序不能被顯式或任一地分配給平面一 關(guān)聯(lián)是根據(jù)應(yīng)用程序的類型來(lái)隱式地作出的。例如,字幕應(yīng)用程序在子圖片平面 918中呈現(xiàn),而大多數(shù)其它應(yīng)用程序在圖形平面912中呈現(xiàn)。圖形平面912是圖形平面組900的第二平面,并且由演示引擎如下所述地生 成。如上所述,在交互式媒體環(huán)境中生成諸如圖形和菜單等交互式內(nèi)容的應(yīng)用程序 通常被呈現(xiàn)到圖形平面912中。子圖片平面918是圖形平面組900的第三平面,并且通常用于顯示由相應(yīng)的 應(yīng)用程序產(chǎn)生的字幕和/或文字說(shuō)明。子視頻平面922是圖形平面組900中的第四 平面,并且通常被用作"畫中畫"(PIP)安排中的次要視頻顯示。如由參考標(biāo)號(hào) 942所指示的PIP窗口通常小于主視頻顯示,并且可具有其它不同特性,諸如降低 的分辨率、不同的寬高比等等。主視頻平面925是圖形平面組900中的第五平面,并且位于平面堆棧的底部。 主視頻平面925通常用于在交互式媒體環(huán)境中顯示包括如上在對(duì)附圖3的描述中描 述的視頻標(biāo)題的視頻內(nèi)容。如圖9所示,圖形平面組900中的所有平面由如下所述 的圖形呈現(xiàn)引擎混合并合成為單個(gè)顯示950。圖10是示出稱為被AppA的第一說(shuō)明性應(yīng)用程序中三個(gè)可視元素的Z順序的 圖示。要強(qiáng)調(diào)的是應(yīng)用程序內(nèi)的Z順序不同于應(yīng)用程序的Z順序。即,應(yīng)用程序 生成應(yīng)用程序內(nèi)具有Z順序的可視元素,并且應(yīng)用程序本身在運(yùn)行在ICP (主 4的ICP 435)上的多個(gè)應(yīng)用程序之中是Z排序的。應(yīng)用程序AppA生成三個(gè)可視元素,包括元素1010(十字形)、元素1020 (星) 以及元素1030 (箭頭),它們分別具有如圖所示的堆棧排列中的Z順序O、 l和2。 由此,對(duì)于一組N個(gè)元素, 一組Z順序值以針對(duì)該堆棧中的最低元素的O處開(kāi)始, 并以針對(duì)該堆棧中的最高元素的N-l處結(jié)束。元素1010、 1020和1030被繪制在 顯示1045上。圖10中的窗口 1050如同"從側(cè)面"觀看顯示1045那樣示出了由 AppA產(chǎn)生的可視元素的Z順序。顯示1045和窗口 1050如由xyz坐標(biāo)1055所指 示地相對(duì)于彼此定向。
圖11是示出被稱為AppB的第二說(shuō)明性應(yīng)用程序內(nèi)的可視元素的Z順序的圖示。應(yīng)用程序AppB生成三個(gè)可視元素,包括元素1110 (三角)、元素1020 (橢 圓)和元素1030 (矩形),它們分別具有顯示1145上堆棧排列中的Z順序0、 1 和2。窗口 1150如由xyz坐標(biāo)1155所指示地以顯示1145的側(cè)面視圖示出了由AppB 產(chǎn)生的可視元素的Z順序。圖12是示出具有從應(yīng)用程序AppA和AppB兩者生成的可視元素(由參考標(biāo) 號(hào)1210共同指示)的合成顯示1245的圖示。窗口 1250提供了顯示1245的側(cè)面視 圖(如由坐標(biāo)1255所指示的),并示出了應(yīng)用程序AppA和AppB具有相對(duì)于彼 此的相對(duì)Z順序。另外,應(yīng)用程序AppA和AppB各自生成在應(yīng)用程序內(nèi)維持其Z 順序的可視元素,如圖10和11所示并在相應(yīng)文本中描述的。圖13是示出說(shuō)明性安排1300的圖示,其中應(yīng)用程序以優(yōu)先順序呈現(xiàn)并以從 底向上的順序合成。安排1300包括顯示的側(cè)面視圖1350,它如由xyz坐標(biāo)1355 所指示地朝向用戶1330定向。在其它說(shuō)明性排列(圖13中未示出)中,呈現(xiàn)是響 應(yīng)于特定設(shè)置的要求從底向上(即,按照Z(yǔ)順序)來(lái)執(zhí)行的。五個(gè)應(yīng)用程序在交互式媒體環(huán)境中運(yùn)行,包括如分別由參考標(biāo)號(hào)1305、 1310、 1315、 1320和1325指示的AppA、 AppB、 AppC、 AppD和AppE。應(yīng)用程序如由 箭頭1352所指示地在窗口 1350中按照Z(yǔ)順序從底向上合成。合成以Z順序-O的 應(yīng)用程序AppA 1305開(kāi)始,并以Z順序=4的應(yīng)用程序AppD 1325結(jié)束。在該說(shuō)明性示例中,如在圖13所示的時(shí)間瞬間處所示,應(yīng)用程序AppC1320 是產(chǎn)生接收用戶輸入的可視元素1358的聚焦應(yīng)用程序。然而,由于在動(dòng)態(tài)環(huán)境中 運(yùn)行,具有焦點(diǎn)的特定應(yīng)用程序通常根據(jù)設(shè)計(jì)隨時(shí)間變化,并且所有應(yīng)用程序通常 可在視頻標(biāo)題進(jìn)展時(shí)按照Z(yǔ)順序上下移動(dòng)(盡管還要強(qiáng)調(diào),應(yīng)用程序能夠在它們 運(yùn)行和操作時(shí),甚至在主視頻被停止、暫?;騼鼋Y(jié)的情況下改變Z順序)。另外, 聚焦應(yīng)用程序可以位于堆棧中的任何位置(即,具有任何Z順序)。然而,在許 多情況下,聚焦應(yīng)用程序?qū)⒊蝻@示順序的頂部,使得它能以與用戶期望相一致的 方式與用戶1330交互并接收諸如按鈕按下(例如,從遙控器1332)、鼠標(biāo)點(diǎn)擊等用戶事件。如由箭頭1362所指示的,應(yīng)用程序以優(yōu)先順序來(lái)呈現(xiàn),從聚焦應(yīng)用程序(例 如,應(yīng)用程序AppD 1320)開(kāi)始,之后按照從頂部向下,即相反的Z順序呈現(xiàn)其 余應(yīng)用程序。圖14是其中應(yīng)用程序按照優(yōu)先順序呈現(xiàn)并按照從底向上的順序合成的說(shuō)明性 方法的流程圖。該方法在框1405處開(kāi)始。在框1412處,如上所述,對(duì)運(yùn)行在交互式媒體環(huán)境中的應(yīng)用程序保持z順序。對(duì)與特定視頻標(biāo)題相關(guān)聯(lián)的應(yīng)用程序的初 始Z順序由播放列表290 (圖2)使用絕對(duì)值(例如,1、 2、 5、 7、…87等)來(lái)指 定。這些絕對(duì)值通過(guò)使用播放列表詞匯排序基于播放列表Z順序來(lái)對(duì)所有應(yīng)用程 序排序而立即被轉(zhuǎn)換成相對(duì)Z排序,以打破任何捆綁。在框1415中,允許應(yīng)用程序在視頻標(biāo)題進(jìn)展時(shí)調(diào)用方法來(lái)操縱其相對(duì)Z排序。 這些方法包括,例如a)將應(yīng)用程序移至平面內(nèi)Z順序的頂部;b)將應(yīng)用程序移至平面內(nèi)Z順序的底部;以及C)將應(yīng)用程序的Z順序改為緊靠在顯示堆棧中其上方的應(yīng)用程序上方。如上所述,應(yīng)用程序?qū)儆谔囟ǖ钠矫妫@對(duì)應(yīng)用程序通過(guò)調(diào)用Z順序操縱方 法可以在Z順序中移動(dòng)多遠(yuǎn)施加了限制。例如,調(diào)用將字幕應(yīng)用程序移至頂部的 方法將使字幕應(yīng)用程序成為子圖片平面918 (圖9)中的最頂部應(yīng)用程序,但是其 中生成的可視元素可能仍被由該平面中的應(yīng)用程序呈現(xiàn)到圖形平面912中的可視 元素遮蔽(即,遮擋)。類似地,調(diào)用將常規(guī)交互式應(yīng)用程序移至底部的方法將使 其成為圖形平面912中的最底部應(yīng)用程序,但仍將其留在所有字幕應(yīng)用程序上方。在框1416處,應(yīng)用程序接收提供應(yīng)用程序的Z順序被改變的通知的事件。這 一通知替換地被安排成在應(yīng)用程序轉(zhuǎn)換到最頂部應(yīng)用程序或從最頂部應(yīng)用程序轉(zhuǎn) 換出來(lái)時(shí)接收。這一通知允許例如游戲應(yīng)用程序在由菜單生成應(yīng)用程序產(chǎn)生的菜單 移至具有最高Z順序的位置時(shí)暫停其自身。該說(shuō)明性方法在框1418處繼續(xù),其中來(lái)自應(yīng)用程序的可視元素被呈現(xiàn)到一個(gè) 或多個(gè)圖形緩沖區(qū)中。在大多數(shù)情況下,呈現(xiàn)是按照優(yōu)先順序來(lái)執(zhí)行的,以聚焦的 應(yīng)用程序開(kāi)始,之后從顯示的頂部開(kāi)始向下按照相反的Z順序呈現(xiàn)其余的應(yīng)用程 序。繪制(即,二維"2D"繪制)通過(guò)繪制到應(yīng)用程序的標(biāo)記(例如,圖1中的 標(biāo)記120)中的"畫布"對(duì)象上來(lái)處理,該對(duì)象然后以與呈現(xiàn)PNG (可移植網(wǎng)絡(luò)圖 形)文件幾乎相同的方式被呈現(xiàn)到圖形緩沖區(qū)中。在圖14所示的說(shuō)明性方法中,安排了緩沖步驟,使得應(yīng)用程序通過(guò)將對(duì)應(yīng)于 周期性呈現(xiàn)事件的工作項(xiàng)置入相應(yīng)的應(yīng)用程序事件隊(duì)列中來(lái)呈現(xiàn)??捎糜谶@一安排 的事件隊(duì)列和相關(guān)聯(lián)的方法在圖5-8中示出并在相應(yīng)的文本中描述。工作項(xiàng)的放置意味著應(yīng)用程序幀的呈現(xiàn)要遭受工作項(xiàng)超時(shí)。因此,執(zhí)行對(duì)應(yīng) 用程序的加倍緩沖以適應(yīng)在回放系統(tǒng)中的別處施加優(yōu)先級(jí)的情況下新應(yīng)用程序幀 可能并不總是對(duì)每一視頻幀呈現(xiàn)的概率。在這一情況下,最近可用的幀將繼續(xù)被示 出,直到完成了一個(gè)新的幀。在框1421處,在合成顯示之前,檢查每一應(yīng)用程序以查看它在其標(biāo)記(例如, 圖1中的標(biāo)記120)中是否包括〈clearrect〉元素。包括這一元素以產(chǎn)生由應(yīng)用程序 產(chǎn)生的圖形中的開(kāi)口 (即,"孔"),通過(guò)該開(kāi)口可看見(jiàn)主視頻平面925?!碿learrect〉 元素產(chǎn)生一矩形的開(kāi)口,但是取決于特定設(shè)置的要求,也可使用其它規(guī)則的幾何形 狀、不規(guī)則形狀以及其它任意的形狀。諸如〈clearrect〉等元素以及其它這種產(chǎn)生開(kāi)口的元素當(dāng)在方法的框1418中呈 現(xiàn)應(yīng)用程序時(shí)不被包括在圖形緩沖區(qū)中。相反,在合成期間,在Z順序低于具有 〈clearrect〉元素的應(yīng)用程序的應(yīng)用程序中清除孔,使得主視頻平面925可通過(guò)應(yīng)用 程序中的孔來(lái)看見(jiàn)。由于呈現(xiàn)是按照優(yōu)先化的方式來(lái)執(zhí)行的,因此在將應(yīng)用程序呈 現(xiàn)到緩沖區(qū)時(shí)實(shí)現(xiàn)〈clearrect〉元素是不切實(shí)際的。如果如此實(shí)現(xiàn),并且沒(méi)有立即更 新較低優(yōu)先級(jí)應(yīng)用程序,則孔可能會(huì)不恰當(dāng)?shù)爻霈F(xiàn)。這例如在改變Z順序或終止 具有^learrect〉元素的應(yīng)用程序而較低優(yōu)先級(jí)應(yīng)用程序正在等待更新且同時(shí)超時(shí) 的情況下發(fā)生。在框1425處,如圖12所示并在相應(yīng)文本中描述的,按照Z(yǔ)順序從底向上合 成應(yīng)用程序。在大多數(shù)設(shè)置下,可使用簡(jiǎn)單的畫家(Painter)算法,其中每一應(yīng)用 程序的標(biāo)記使用對(duì)每一應(yīng)用程序最近緩沖的幀來(lái)呈現(xiàn)到圖形平面912中。另外,如 上所述,在合成步驟期間實(shí)現(xiàn)^learrect〉或其它產(chǎn)生開(kāi)口的元素。該說(shuō)明性方法在 框1433處結(jié)束。圖15是說(shuō)明性回放系統(tǒng)1500的框圖。導(dǎo)航管理器1505保持運(yùn)行在交互式媒 體環(huán)境中的N個(gè)應(yīng)用程序的嚴(yán)格排序。每一應(yīng)用程序被給予了從0到N-l的Z順 序,且所有應(yīng)用程序具有唯一的Z順序。在排序之間沒(méi)有間隙,并且沒(méi)有兩個(gè)應(yīng) 用程序具有相同的Z順序。Z順序0出現(xiàn)在顯示1512的底部,而Z順序N-1出現(xiàn) 在頂部。當(dāng)視頻標(biāo)題在時(shí)間中進(jìn)展時(shí),導(dǎo)航管理器1505從由播放列表(例如,圖 2中的播放列表290)設(shè)置的初始Z順序值開(kāi)始以動(dòng)態(tài)的方式保持應(yīng)用程序的Z順 序,如上所述。導(dǎo)航管理器1505耦合到演示引擎1515和圖形呈現(xiàn)引擎1518。在大多數(shù)設(shè)置 中,演示引擎1515被安排成將圖形平面組900中的每一平面提供給圖形呈現(xiàn)引擎 1518,后者執(zhí)行將平面和其中的應(yīng)用程序合成到顯示1512中。設(shè)置在演示引擎1515和圖形呈現(xiàn)引擎1518之間的是分別由參考標(biāo)號(hào)1522、 1526和1528指示的一個(gè)或多個(gè)圖形緩沖區(qū)1、 2、…N。這N個(gè)緩沖區(qū)被安排成在 一對(duì)一的基礎(chǔ)上映射到相應(yīng)的應(yīng)用程序。即,N緩沖區(qū)-N應(yīng)腿序。在替換安排中,對(duì)所有應(yīng)用程序使用單個(gè)緩沖區(qū)(由參考標(biāo)號(hào)1540指示),或者在不相等的基礎(chǔ)上將 圖形緩沖區(qū)映射到應(yīng)用程序。圖16是用于將輸入事件分發(fā)到多個(gè)應(yīng)用程序的說(shuō)明性方法的流程圖。該方法 在框1605處開(kāi)始。在框1608處,對(duì)當(dāng)前在交互式媒體環(huán)境中,例如在ICP 435 (圖 4)上運(yùn)行的多個(gè)N個(gè)應(yīng)用程序標(biāo)注Z順序。輸入事件首先被傳遞到聚焦應(yīng)用程序,之后按照相反的Z順序被傳遞到多個(gè) N個(gè)應(yīng)用程序中的所有其余應(yīng)用程序。因此,在框1614處,輸入事件被傳遞到聚 焦應(yīng)用程序。在該說(shuō)明性方法中,輸入事件包括用戶事件、系統(tǒng)事件、應(yīng)用程序事 件和導(dǎo)航事件。用戶事件、系統(tǒng)事件和應(yīng)用程序事件在上文中對(duì)圖5的文本中描述。 導(dǎo)航事件通常包括來(lái)自遙控器(例如,圖13中的遙控器1332)的對(duì)應(yīng)于上、下、 左、右按鈕按下等的事件。在判別框1617處,如果聚焦應(yīng)用程序消費(fèi)了該輸入事件,則輸入事件處理在 框1625處停止,并且該方法終止。如果聚焦應(yīng)用程序沒(méi)有消費(fèi)該輸入事件,則在 框1632處,該輸入事件被傳遞到多個(gè)應(yīng)用程序中具有最高Z順序的應(yīng)用程序。如 果最高Z順序的應(yīng)用程序消費(fèi)了該輸入事件,則輸入事件處理在框1640處停止, 并且該方法終止。如果最高Z順序的應(yīng)用程序沒(méi)有消費(fèi)該事件,則進(jìn)行向下一最高Z順序的應(yīng) 用程序的輸入事件傳遞。在框1645處按照相反的順序?qū)順序遞減計(jì)數(shù),并且該 方法迭代通過(guò)框1648繼續(xù),直到應(yīng)用程序消費(fèi)了該輸入事件,或沒(méi)有可向其傳遞 該輸入事件的應(yīng)用程序。在后一情況下,輸入事件處理在框1650處停止,并且該 方法終止。應(yīng)用程序內(nèi)的輸入事件處理如同應(yīng)用程序和標(biāo)記對(duì)象(例如,來(lái)自圖1中的 標(biāo)記120)都被排列在單個(gè)DOM中(應(yīng)用程序?qū)ο笤陧敳?那樣來(lái)進(jìn)行。依照 W3C事件模型,這種排列允許應(yīng)用程序?qū)ο笤谳斎胧录粋鬟f到應(yīng)用程序的標(biāo)記 之前捕捉輸入事件。在每一對(duì)象處,該對(duì)象被提供了捕捉輸入事件的機(jī)會(huì)。 一旦發(fā) 生了捕捉,輸入事件處理程序即具有停止進(jìn)一步的輸入事件處理的選項(xiàng)。沒(méi)有在標(biāo) 記中處理的輸入事件通過(guò)應(yīng)用程序?qū)ο笙蛏厦芭?bubble)返回。以此方式,應(yīng)用 程序內(nèi)的事件處理采用用于跨應(yīng)用程序的事件處理的模型來(lái)統(tǒng)一。注意,在大多數(shù) 設(shè)置中,標(biāo)記僅處理用戶和導(dǎo)航事件。應(yīng)用程序和系統(tǒng)事件通常僅通過(guò)腳本來(lái)處理。應(yīng)用程序的標(biāo)記中的許多可視元素被安排成接受向特定可視元素分配指定的 "密鑰"的"訪問(wèn)密鑰(accesskey)"屬性。因此,應(yīng)用程序中具有匹配的訪問(wèn)密 鑰屬性的任何可視元素將在處理輸入事件之后消費(fèi)它。導(dǎo)航事件也用類似的方式來(lái) 處理。使用標(biāo)記中的〈event〉元素實(shí)現(xiàn)的應(yīng)用程序事件創(chuàng)建了相應(yīng)的工作項(xiàng),并如圖 5-8所示且在相應(yīng)文本中描述的那樣將其調(diào)度到事件隊(duì)列中。因此,〈event〉元素不 作為對(duì)其事件處理程序的函數(shù)調(diào)用表現(xiàn)。出現(xiàn)這一情況是因?yàn)樵谌缟纤鏊袠?biāo)記 的工作項(xiàng)之后新工作項(xiàng)被插入到事件隊(duì)列中并被處理,這最有可能在下一報(bào)時(shí)信號(hào) 中發(fā)生。另外,因?yàn)槭录凑諆?yōu)先順序(即,先是聚焦應(yīng)用程序,之后按照相反的 Z順序的其余應(yīng)用程序)被傳遞到所有應(yīng)用程序時(shí),應(yīng)用程序事件可由除創(chuàng)建該事 件的應(yīng)用程序之外的應(yīng)用程序來(lái)處理。系統(tǒng)事件也使用工作項(xiàng)范例來(lái)創(chuàng)建和調(diào)度。由腳本處理的輸入事件提出了與用標(biāo)記處理的輸入事件不同的情形,因?yàn)镮CP (諸如圖4中的ICP435)事先不知道腳本是否將處理特定的輸入事件。由此,用 于腳本的輸入事件處理程序必須返回一指示輸入事件是否被消費(fèi)的標(biāo)志返回真指 示該輸入被消費(fèi);返回假指示該輸入事件沒(méi)有被消費(fèi)。向應(yīng)用程序腳本提供了處理未被處理的輸入事件的第一機(jī)會(huì)。由此,對(duì)于訪 問(wèn)密鑰和導(dǎo)航輸入事件,腳本可覆蓋由標(biāo)記實(shí)現(xiàn)的默認(rèn)播放器行為。注意,如此處使用的"消費(fèi)"和"處理"通??梢灾竿患?。然而,在某 些情形中,它們不完全相同。例如,即使確實(shí)對(duì)輸入事件做了任何事情,應(yīng)用程序 也可能希望消費(fèi)該輸入事件以將其對(duì)較低Z順序的應(yīng)用程序隱藏?;蛘?,應(yīng)用程 序可采取某些動(dòng)作來(lái)處理一事件,但仍返回指示該事件未被處理的假標(biāo)志,使得它 可沿Z順序進(jìn)一步向下傳播。現(xiàn)在描述圖15所示的說(shuō)明性方法的一個(gè)示例。用戶正在運(yùn)行對(duì)遙控器(例如, 圖13中的遙控器1332)上的上、下、左和右按鈕作出響應(yīng)的交互式游戲。該游戲 是顯示上的最頂部應(yīng)用程序(即,它具有Z順序:N-1)。該游戲沒(méi)有被其作者設(shè) 計(jì)成處理遙控器上的"菜單"按鈕。菜單應(yīng)用程序正在與該游戲同時(shí)運(yùn)行。它具有較低的Z順序,并且顯現(xiàn)在該 游戲下方,或者它可能在顯示上沒(méi)有可視元素(且因此完全不顯現(xiàn))。由于菜單應(yīng) 用程序具有比游戲低的Z順序,因此它僅接收沒(méi)有被游戲處理的輸入事件。當(dāng)用 戶按下遙控器上的上、下、左和右鍵時(shí),游戲用標(biāo)記或者通過(guò)腳本處理程序處理這 些鍵,腳本處理程序?qū)@些鍵返回真標(biāo)志,而對(duì)任何其它東西返回假。當(dāng)用戶決定停止游戲時(shí),按下遙控器上的菜單按鈕。這一輸入事件首先被傳
遞到游戲應(yīng)用程序(作為聚焦應(yīng)用程序),且該應(yīng)用程序不處理它。該輸入事件然 后被傳遞到菜單應(yīng)用程序,該應(yīng)用程序通過(guò)調(diào)用將其自身移至顯示的頂部以具有最 高Z順序的方法(該方法在對(duì)于圖14的描述中有描述)來(lái)作出響應(yīng)。這一移動(dòng)確 保來(lái)自遙控器的將來(lái)的上、下、左和右輸入事件將首先到達(dá)菜單應(yīng)用程序,使得用 戶可導(dǎo)航菜單。注意,為清晰且易于說(shuō)明起見(jiàn),在以上描述中,數(shù)據(jù)、程序以及諸如操作系 統(tǒng)等其它可執(zhí)行程序組件被示為離散的塊、框或其它元素,但可以認(rèn)識(shí)到并強(qiáng)調(diào),這些程序和組件可在不同的時(shí)刻駐留在所使用的任何硬件主機(jī)的不同存儲(chǔ)、存儲(chǔ)器 或處理組件中,并由這些主機(jī)硬件中的一個(gè)或多個(gè)處理器執(zhí)行。盡管示出并描述了用于在交互式媒體環(huán)境中管理應(yīng)用程序狀態(tài)的各種說(shuō)明性 安排和方法,但是應(yīng)當(dāng)理解,所附權(quán)利要求書的范圍不必限于所描述的具體特征、 安排或方法。相反,這些具體特征、安排或方法是作為以下更特別地要求保護(hù)的在 交互式媒體環(huán)境中實(shí)現(xiàn)受管應(yīng)用程序狀態(tài)的說(shuō)明性形式來(lái)公開(kāi)的。權(quán)利要求
1.一種用于在交互式媒體環(huán)境中處理輸入事件的方法,所述方法包括以下步驟為運(yùn)行在所述交互式媒體環(huán)境中的多個(gè)應(yīng)用程序中的每一個(gè)保持Z順序,其中所述Z順序描述了可視元素在顯示上的相對(duì)順序(1608);將所述輸入事件傳遞到所述多個(gè)應(yīng)用程序,所述傳遞從具有焦點(diǎn)的應(yīng)用程序開(kāi)始(1614),之后從最高到最低的Z順序按照應(yīng)用程序傳遞到各其余應(yīng)用程序(1632);以及一旦所述輸入事件被一應(yīng)用程序消費(fèi)(1636)即終止事件處理。
2. 如權(quán)利要求l所述的方法,其特征在于,所述輸入事件選自用戶事件、系 統(tǒng)事件、導(dǎo)航事件和應(yīng)用程序事件中的一個(gè)。
3. 如權(quán)利要求1所述的方法,其特征在于,所述消費(fèi)包括處理所述輸入事件。
4. 如權(quán)利要求l所述的方法,其特征在于,所述消費(fèi)包括處理所述輸入事件, 并返回一假消費(fèi)指示,使得所述輸入事件被傳遞到具有較低Z順序的應(yīng)用程序。
5. 如權(quán)利要求l所述的方法,其特征在于,所述消費(fèi)包括沒(méi)有任何其它處理, 只是返回一肯定消費(fèi)指示以對(duì)具有較低Z順序的應(yīng)用程序隱藏所述輸入事件。
6. —種用于在其中有多個(gè)應(yīng)用程序運(yùn)行的交互式媒體環(huán)境中處理輸入事件的 方法,所述方法包括以下步驟為在所述交互式媒體環(huán)境中運(yùn)行的多個(gè)應(yīng)用程序中的每一個(gè)保持Z順序,其 中所述Z順序描述了所述應(yīng)用程序的優(yōu)先順序(1608);將針對(duì)所述輸入事件的一個(gè)或多個(gè)工作項(xiàng)(535)置入一事件隊(duì)列(515)中;以及按照優(yōu)先順序?qū)⑺鲚斎胧录乃鍪录?duì)列傳遞到所述多個(gè)應(yīng)用程序 (1614、 1632)。
7. 如權(quán)利要求6所述的方法,其特征在于, 一標(biāo)記(120)放置所述工作項(xiàng) (535)。
8. 如權(quán)利要求6所述的方法,其特征在于, 一交互式媒體回放系統(tǒng)(305、 405)放置所述工作項(xiàng)(535)。
9. 如權(quán)利要求6所述的方法,其特征在于,放置所述一個(gè)或多個(gè)工作項(xiàng)(535) 包括將所述一個(gè)或多個(gè)工作項(xiàng)(705、 715)在所標(biāo)記的工作項(xiàng)之后插入到所述事件 隊(duì)列(515)中。
10. 如權(quán)利要求9所述的方法,其特征在于,使用一報(bào)時(shí)信號(hào)序列在所述交 互式媒體環(huán)境中對(duì)時(shí)間進(jìn)行計(jì)數(shù),并且對(duì)每一報(bào)時(shí)信號(hào)最后處理所插入的一個(gè)或多 個(gè)工作項(xiàng)(705、 715)。
11. 如權(quán)利要求6所述的方法,其特征在于,所述輸入時(shí)間由與放置所述一 個(gè)或多個(gè)工作項(xiàng)(535)的應(yīng)用程序不同的應(yīng)用程序來(lái)處理。
12. —種計(jì)算機(jī)可讀介質(zhì),它在由電子設(shè)備中的一個(gè)或多個(gè)處理器執(zhí)行時(shí)執(zhí) 行一種用于處理輸入事件的方法,所述方法包括以下步驟為在一交互式媒體環(huán)境中運(yùn)行的多個(gè)應(yīng)用程序中的每一個(gè)保持Z順序,其中 所述Z順序描述了可視元素在顯示上的相對(duì)順序(1608);將所述輸入事件傳遞到所述多個(gè)應(yīng)用程序,所述傳遞從具有焦點(diǎn)的應(yīng)用程序 開(kāi)始(1614),之后從最高到最低Z順序按照應(yīng)用程序傳遞到各其余的應(yīng)用程序 (1632);以及允許應(yīng)用程序捕捉所述輸入事件(1617)。
13. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,捕捉所述輸入事件 的應(yīng)用程序處理所述輸入事件。
14. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,捕捉所述輸入事件的應(yīng)用程序消費(fèi)所述輸入事件。
15. 如權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,如果所述輸入事件 被消費(fèi)則返回一標(biāo)志。
16. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于, 一應(yīng)用程序?qū)ο筇?理所述輸入事件。
17. 如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,應(yīng)用程序內(nèi)的輸入 事件處理如同所述應(yīng)用程序和標(biāo)記對(duì)象在單個(gè)DOM內(nèi)且所述應(yīng)用程序?qū)ο笤陧?部一樣來(lái)進(jìn)行。
18. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于, 一腳本首先處理所 述輸入事件,之后由標(biāo)記來(lái)處理。
19. 如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,如果所述輸入事件 沒(méi)有被標(biāo)記處理,則所述輸入事件通過(guò)一應(yīng)用程序?qū)ο笙蛏弦苿?dòng)。
20. 如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,如果所述標(biāo)記包括 匹配所述輸入事件的訪問(wèn)密鑰屬性,則所述標(biāo)記接受所述輸入事件。
全文摘要
在交互式媒體環(huán)境中,輸入事件被分發(fā)到多個(gè)應(yīng)用程序,其中每一應(yīng)用程序包括零個(gè)或多個(gè)腳本組件以及零個(gè)或多個(gè)標(biāo)記文件,并具有對(duì)應(yīng)于該應(yīng)用程序的可視元素在顯示上的位置的Z順序(1608)。利用一輸入事件處理順序,其中向交互式媒體環(huán)境中具有焦點(diǎn)的應(yīng)用程序(1614)(根據(jù)其接收用戶事件)提供消費(fèi)該輸入事件的第一機(jī)會(huì)。如果聚焦應(yīng)用程序沒(méi)有消費(fèi)該輸入事件,則它然后從頂向下按照相反的Z順序被傳遞到其余的應(yīng)用程序(1632)。允許每一應(yīng)用程序消費(fèi)輸入事件、將其傳遞給較低Z順序應(yīng)用程序(1608)、將其向較低Z順序應(yīng)用程序(1608)隱藏、或以其它方式處理它的能力。當(dāng)應(yīng)用程序(1636)消費(fèi)該輸入事件時(shí),輸入事件處理停止。
文檔編號(hào)G06F3/00GK101213502SQ200680024261
公開(kāi)日2008年7月2日 申請(qǐng)日期2006年6月22日 優(yōu)先權(quán)日2005年7月1日
發(fā)明者A·W·J·弗利曼, J·A·伊馮, J·C·芬格, K·瑪扎, O·科勒 申請(qǐng)人:微軟公司