專利名稱:再現(xiàn)裝置、再現(xiàn)方法、再現(xiàn)程序、及其記錄介質和數(shù)據(jù)結構的制作方法
技術領域:
本發(fā)明涉及一種再現(xiàn)裝置,其使得對記錄在大容量記錄介質上的程序進行的再現(xiàn)控制更加易于執(zhí)行,以及涉及其再現(xiàn)方法、其再現(xiàn)程序、其記錄介質以及其數(shù)據(jù)結構。
背景技術:
到目前為止,對于銷售包已經實現(xiàn)了一種交互功能,該交互功能為輸入用戶數(shù)據(jù)而顯示用于各種設置的菜單屏和子菜單屏以及菜單屏上的按鈕(按鈕圖像),并且用于執(zhí)行所選定的功能,所述銷售包是記錄在如DVD的記錄介質上的如電影、戲劇、音樂會等的視頻數(shù)據(jù)和音頻數(shù)據(jù)的包。
現(xiàn)在,將描述數(shù)字音頻致密盤(CD-DA),它是這種銷售包的一個典型的例子。一張CD-DA通常含有多個音樂數(shù)據(jù)軌道。每個軌道被指定一個編號。當執(zhí)行標準再現(xiàn)時,音樂數(shù)據(jù)以軌道號向上的次序被連續(xù)地再現(xiàn)。當具有最大軌道號的音樂數(shù)據(jù)再現(xiàn)完之后,停止再現(xiàn)。
除了以軌道號次序再現(xiàn)音樂數(shù)據(jù)的標準再現(xiàn)操作之外,許多CD播放器模型還具有其它的不是以軌道號順序再現(xiàn)音樂數(shù)據(jù)的再現(xiàn)功能,如隨機再現(xiàn)、混洗再現(xiàn)和盤片重復再現(xiàn)。隨機再現(xiàn)是從那些記錄在盤上的軌道中隨機地挑選出一條音樂數(shù)據(jù)軌道,并在音樂數(shù)據(jù)的特定軌道再現(xiàn)完成之后再現(xiàn)所挑選的音樂數(shù)據(jù)軌道的功能。混洗再現(xiàn)是與軌道號次序無關地再現(xiàn)記錄在盤上的音樂數(shù)據(jù),并在記錄在盤上的所有音樂數(shù)據(jù)軌道再現(xiàn)完成之后停止再現(xiàn)的功能。在標準再現(xiàn)中,盤重復再現(xiàn)功能在最后一條音樂數(shù)據(jù)軌道再現(xiàn)完成這后,從音樂數(shù)據(jù)的起始軌道開始重復標準再現(xiàn)。在混洗再現(xiàn)中,盤重復再現(xiàn)功能改變了軌道號的再現(xiàn)次序,并以改變后的次序再現(xiàn)音樂數(shù)據(jù)。
在CD-DA中,音樂數(shù)據(jù)的排列僅由軌道號來指定。因而,很清楚,內容的開頭就是具有軌道號#1的音樂數(shù)據(jù)的開頭,內容的末尾就是具有最大軌道號的音樂數(shù)據(jù)的末尾。
另一方面,還有一條系統(tǒng)可以根據(jù)記錄在記錄介質上的指令或程序,對記錄在該記錄介質上的視頻數(shù)據(jù)和音頻數(shù)據(jù)內容執(zhí)行再現(xiàn)控制。舉例來說,如電影的主體部、預告片、電影制作場景、菜單等的多個內容被記錄在DVD視頻盤上。當從盤上再現(xiàn)內容時,根據(jù)指令和程序來控制對這些內容的再現(xiàn)。專利文件1公開了根據(jù)這樣的指令和程序執(zhí)行內容再現(xiàn)控制的技術。
專利文件1日本專利申請?zhí)亻_No.2004-304767發(fā)明內容然而,在這樣一個根據(jù)指令和程序執(zhí)行再現(xiàn)控制的系統(tǒng)中,播放器難以檢測內容的末尾。
當再現(xiàn)一部電影的結尾序幕部分時,可以預計該內容已到達末尾。然而,實際上,結尾字幕部分的末尾并非總是內容的末尾。舉例來說,如果在結尾字幕部分結束時執(zhí)行的程序導致菜單屏的出現(xiàn),那么可以想到,一個菜單屏和電影的主體部對是內容。因而,不能確定電影主體部的末尾是內容的末尾。另外,再現(xiàn)控制程序可被看作該內容的一部分。
因此,如果內容包括再現(xiàn)控制程序,則很難確定該內容的末尾。換句話說,“內容的末尾”取決于該內容創(chuàng)建者怎樣識別該內容。因此,只有該內容創(chuàng)建者知道該內容的末尾。
DVD視頻標準沒有定義一種允許內容方將內容的一個特定部分是“內容的末尾”通知給播放器方的方式。因此,對DVD播放器來說,難以從DVD視頻盤來再現(xiàn)數(shù)據(jù)以實現(xiàn)該播放器的獨特功能。
例如,該播放器可能不具有重復地再現(xiàn)一段內容的重復功能。相反,該播放器可以僅重復再現(xiàn)單個標題(一段連續(xù)的程序鏈)來直接地和連續(xù)不斷地從開頭到末尾再現(xiàn)一段內容。因此,難以實現(xiàn)播放器的獨特功能。
考慮到前述內容,期望提供一種再現(xiàn)裝置,其允許當根據(jù)再現(xiàn)控制程序執(zhí)行對內容的再現(xiàn)控制時易于實現(xiàn)播放器的獨特功能,以及提供其再現(xiàn)方法、其再現(xiàn)程序、其記錄介質和其數(shù)據(jù)結構。
根據(jù)本發(fā)明的一個實施例,提供了一種再現(xiàn)記錄在記錄介質上的內容數(shù)據(jù)的再現(xiàn)裝置。該再現(xiàn)裝置具有播放器部、內容再現(xiàn)部、接口部。播放器部具有用于從記錄介質上讀取數(shù)據(jù)的讀取部,在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序,用于接收用戶輸入的輸入部,和用于輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。內容再現(xiàn)部根據(jù)再現(xiàn)控制程序再現(xiàn)內容數(shù)據(jù)。接口部用于在內容再現(xiàn)部、再現(xiàn)控制程序和播放器部之間進行連接通信(interface)。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給接口部,并且接口部執(zhí)行相應于該指令的處理。
根據(jù)本發(fā)明的一個實施例,提供了一種再現(xiàn)記錄介質上的內容數(shù)據(jù)的再現(xiàn)方法。根據(jù)從記錄介質讀取的再現(xiàn)控制程序再現(xiàn)記錄介質上的內容數(shù)據(jù),在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。內容再現(xiàn)步驟、再現(xiàn)控制程序以及播放器部相互連接通信,該播放器部具有從記錄介質讀取數(shù)據(jù)的讀取部,接收用戶輸入的輸入部,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給該連接通信步驟,并且該連接通信步驟執(zhí)行相應于該指令的處理。
根據(jù)本發(fā)明的一個實施例,提供了一種再現(xiàn)程序,其使計算機裝置執(zhí)行再現(xiàn)記錄介質上的內容數(shù)據(jù)的再現(xiàn)方法。根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質上再現(xiàn)內容數(shù)據(jù),在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。內容再現(xiàn)步驟、再現(xiàn)控制程序以及播放器部相互連接通信,該播放器具有從記錄介質讀取數(shù)據(jù)的讀取部,接收用戶輸入的輸入部,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給該連接通信步驟,并且該連接通信步驟執(zhí)行相應于該指令的處理。
根據(jù)本發(fā)明的一個實施例,提供了一種記錄介質,其中的數(shù)據(jù)是計算機裝置可讀取的并且在其上記錄有再現(xiàn)程序,該再現(xiàn)程序使計算機裝置執(zhí)行再現(xiàn)記錄介質上的內容數(shù)據(jù)的再現(xiàn)方法。根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質上再現(xiàn)內容數(shù)據(jù),在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。內容再現(xiàn)步驟、再現(xiàn)控制程序以及播放器部相互連接通信,該播放器部具有從記錄介質讀取數(shù)據(jù)的讀取部,接收用戶輸入的輸入部,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給該連接通信步驟,并且該連接通信步驟執(zhí)行相應于該指令的處理。
根據(jù)本發(fā)明的一個實施例,提供了一種記錄介質,其中的數(shù)據(jù)是計算機裝置可讀取的,并且在其上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。再現(xiàn)控制程序及根據(jù)該再現(xiàn)控制程序的內容數(shù)據(jù)被再現(xiàn)。播放器部被連接通信,其具有從記錄介質讀取數(shù)據(jù)的讀取部,接收用戶輸入的輸入部,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。向該連接通信步驟描述代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令。
根據(jù)本發(fā)明的一個實施例,提供了一種信號,該信號具有一種數(shù)據(jù)結構,其中,包含視頻流和音頻流中的至少一種的內容數(shù)據(jù)以及控制該內容數(shù)據(jù)再現(xiàn)的再現(xiàn)控制程序被多路復用,該信號可通過通信線路被傳送和接收,而且該信號可由計算機裝置處理。該內容數(shù)據(jù)根據(jù)再現(xiàn)控制程序而再現(xiàn)。將內容數(shù)據(jù)的末尾通知給計算機裝置的指令在內容數(shù)據(jù)中被描述,當計算機裝置正在再現(xiàn)內容數(shù)據(jù)時,該指令由計算機裝置讀取。
根據(jù)本發(fā)明的一個實施例,該再現(xiàn)裝置具有播放器部、內容再現(xiàn)部、接口部。播放器部具有配置成用于從記錄介質中讀取數(shù)據(jù)的讀取部,在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序,配置成用于接收用戶輸入的輸入部,和配置成用于輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。內容再現(xiàn)部根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù)。接口部用于在內容再現(xiàn)部、再現(xiàn)控制程序和播放器部之間進行連接通信。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給接口部,并且該接口部執(zhí)行相應于該指令的處理。因此,雖然根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù),但是當把內容的末尾通知給播放器部時,播放器部能執(zhí)行獨特的再現(xiàn)操作。
根據(jù)本發(fā)明的一個實施例,根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質上再現(xiàn)內容數(shù)據(jù),在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。內容再現(xiàn)步驟、再現(xiàn)控制程序以及播放器部相互連接通信,該播放部具有配置成用于從記錄介質讀取數(shù)據(jù)的讀取部,配置成用于接收用戶輸入的輸入部,以及配置成用于輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。當代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給該連接通信步驟,并且該連接通信步驟執(zhí)行相應于該指令的處理。因此,雖然根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù),但是當把內容的末尾通知給播放器部時,播放器部能執(zhí)行獨特的再現(xiàn)操作。
根據(jù)本發(fā)明的一個實施例,從記錄介質再現(xiàn)再現(xiàn)控制程序和根據(jù)該再現(xiàn)控制程序的內容數(shù)據(jù),該記錄介質上的數(shù)據(jù)可以被計算機裝置讀取,并且在記錄介質上記錄有包含視頻流和音頻流中的至少一種的內容數(shù)據(jù)以及控制再現(xiàn)該內容數(shù)據(jù)的再現(xiàn)控制程序。播放器部被連接通信,該播放器部具有配置成用于從記錄介質讀取數(shù)據(jù)的讀取部,配置成用于接收用戶輸入的輸入部,以及配置成輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。向該連接通信步驟描述代表所再現(xiàn)的內容數(shù)據(jù)的末尾的指令。因此,雖然根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù),但是當把內容的末尾通知給播放器部時,在從記錄介質再現(xiàn)數(shù)據(jù)的計算機裝置中,播放器部能執(zhí)行獨特的再現(xiàn)操作。
根據(jù)本發(fā)明的一個實施例,在一個數(shù)據(jù)結構中,包含視頻流和音頻流中的至少一種的內容數(shù)據(jù)以及控制內容數(shù)據(jù)再現(xiàn)的再現(xiàn)控制程序被多路復用。該數(shù)據(jù)結構通過通信線路被傳送和接收。該數(shù)據(jù)結構可由計算機裝置處理。該內容數(shù)據(jù)根據(jù)再現(xiàn)控制程序而再現(xiàn)。將內容數(shù)據(jù)的末尾通知給計算機裝置的指令在內容數(shù)據(jù)中被描述,當計算機裝置正在再現(xiàn)內容數(shù)據(jù)時,該指令被計算機裝置讀取。因此,雖然根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù),但是當把內容的末尾通知給播放器部時,在處理具有該數(shù)據(jù)結構的數(shù)據(jù)的計算機裝置中,播放器部能執(zhí)行獨特的再現(xiàn)操作。
如上面所描述的,根據(jù)本發(fā)明的一個實施例,對內容執(zhí)行再現(xiàn)控制的腳本程序明確地把內容的末尾通知給播放器。由于播放器接收表示內容末尾的信息,該播放器能夠容易地完成在內容的末尾之后執(zhí)行的獨特的再現(xiàn)控制功能。
根據(jù)例如盤重復功能是否被設置的播放器設定和菜單屏是否被提供的內容狀態(tài),可以指定在內容的末尾將要執(zhí)行的播放器操作。因此,可以防止發(fā)生由于缺乏對用戶考慮而造成的例如黑屏的出現(xiàn)等不適當情形。另外,可以提供用戶友好型界面。
當內容創(chuàng)建者僅在他或她想要將其指定為內容的末尾的一個部分處描述方法end時,播放器無需提供復雜的程序而自動執(zhí)行適當?shù)奶幚?。因而,能夠?jié)省創(chuàng)建內容所需的大量時間和工作。
通過下文對最佳模式的實施方式的詳細描述,如在附圖中所示出的那樣,本發(fā)明的這些以及其它目標、特征和優(yōu)點將變得更加明顯。
結合附圖,通過下文的詳細描述,本發(fā)明將能得到更充分的理解,其中相似的參考數(shù)字表示相似元件,其中圖1是表示根據(jù)UMD視頻標準的層結構的示意圖;圖2是表示根據(jù)本發(fā)明一個實施例的播放器模型的例子的示意圖;圖3是表示一個電影播放器的內部結構的例子的示意圖;圖4是表示電影播放器的播放狀態(tài)和停止狀態(tài)的示意圖;圖5是表示根據(jù)本發(fā)明一個實施例的電影播放器的事件模型的示意圖;圖6表示在再現(xiàn)播放列表期間所發(fā)生的事件的例子的示意圖;圖7A和圖7B是電影播放器對象所具有的屬性的例子的列表;圖8是電影播放器對象所具有的方法的例子的列表;圖9是用戶鍵輸入的例子的列表;圖10是用戶鍵輸入的例子的列表;圖11A、11B、11C是根據(jù)鍵輸入的控制指令的例子的列表;圖12是根據(jù)鍵輸入的事件的例子的列表;圖13是事件處理程序的例子的列表;圖14是事件處理程序的例子的列表;圖15是表示當用戶輸入事件發(fā)生時,所提供的程序執(zhí)行的處理的例子;圖16是描述一個腳本程序的例子的示意圖;圖17是表示一個腳本程序的例子的示意圖;圖18是表示根據(jù)UMD視頻標準的文件管理結構的例子的示意圖;
圖19是表示文件“PLAYLIST.DAT”總體結構的語法的例子;圖20是塊PlayItem()的內部結構的例子;圖21是塊PlayListMark()的內部結構的例子;圖22是描述塊Mark()的字段mark_type的表;圖23是描述剪輯(clip)AV流文件中指定標志時間的示意圖;圖24是表示剪輯AV流文件“XXXXX.CLP”總體結構的語法的例子的表;圖25是描述塊StreamInfo()的基本流的對應關系的表;圖26是表示塊StaticInfo()的內部結構的例子的表;圖27是表示塊DynamicInfo()的內部結構的例子的表;圖28是表示塊Ep_map()的內部結構的例子的表;圖29是表示根據(jù)本發(fā)明的一個實施例的盤再現(xiàn)裝置的結構的例子的方框圖;圖30A、30B是詳細描述盤再現(xiàn)裝置的操作的功能框圖;圖31是表示根據(jù)本發(fā)明的實施例的電影播放器狀態(tài)的定義的示意圖;圖32是現(xiàn)有狀態(tài)和由電影播放器的四個狀態(tài)中的每個狀態(tài)的方法改變后的狀態(tài)的組合的表;圖33A到圖33E是描述在執(zhí)行方法play()時的電影播放器的狀態(tài)改變的例子的示意圖;圖34是描述播放項的再現(xiàn)方法的示意圖;圖35是當電影播放器再現(xiàn)的播放列表到達開頭或者末尾時,電影播放器的操作的例子的表;圖36是描述播放列表之間的再現(xiàn)的示意圖;圖37是表示在播放列表的末尾處腳本層中的處理和電影播放器的操作的例子的流程圖;圖38是描述UMD視頻播放器所具有的三種類型存儲區(qū)的示意圖;圖39是描述播放器狀態(tài)的備份的示意圖;圖40是播放器狀態(tài)的備份的列表;圖41是描述對恢復信息進行恢復和丟棄的示意圖;圖42是描述對恢復信息進行恢復和丟棄的表;圖43是描述對恢復信息進行恢復和丟棄的表;
圖44是描述對恢復信息進行恢復和丟棄的表;圖45是表示在方法stop()使用變元resumeInfoClearFlag的UMD視頻播放器的操作的例子的流程圖;圖46是播放器狀態(tài)的生存周期的例子的表;圖47A、47B是恢復信息的生存周期的例子的表;圖48是用戶數(shù)據(jù)的生存周期的例子的表;圖49是描述內容可以包含多個末尾的示意圖;圖50是表示執(zhí)行如圖2所示的播放器模型的方法end()的多個部件的示意圖;圖51是表示方法end()的描述的例子的示意圖;圖52是表示利用方法end()執(zhí)行盤重復功能的處理的例子的流程圖;以及圖53是表示利用方法end()在內容的末尾執(zhí)行播放器獨特功能的處理的例子的示意圖。
具體實施例方式
下面,將以下列順序描述本發(fā)明的實施例。
1. UMD視頻標準2. 根據(jù)UMD視頻標準的播放器模式3. 電影播放器的事件模型4. 電影播放器對象5. 腳本程序的例子6. 文件管理結構7. 顯示再現(xiàn)裝置8. 電影播放器的狀態(tài)改變模型8-1.電影播放器狀態(tài)的定義8-2.使電影播放器改變狀態(tài)的方法8-3.再現(xiàn)播放列表期間的電影播放器的操作8-4.電影播放器的再現(xiàn)恢復功能8-5.單個數(shù)據(jù)的生存周期
9.在內容末尾的處理1.UMD視頻標準為了便于理解,將要描述根據(jù)本發(fā)明實施例的系統(tǒng)。相據(jù)本發(fā)明的這個實施例,用一種稱為ECMA腳本的腳本語言描述一個播放器模型。ECMA腳本是基于由歐洲計算機制造商協(xié)會(ECMA)定義的JavaScript(Sun Microsystems公司的注冊商標)的交叉平臺腳本語言。ECMA腳本具有與HTML文檔的高兼容性,并且能定義原始對象。因此,ECMA腳本適用于本發(fā)明該實施例的播放器模型。
換句話說,相關技術中的DVD視頻使用在DVD視頻標準中定義的非通用指令來描述實現(xiàn)交互功能的控制程序??刂瞥绦虮环稚⒌厍度氲蕉鄠€文件中,一個數(shù)據(jù)文件的多個位置,或者一個AV文件中。執(zhí)行所嵌入的控制程序的條件和順序被定義在DVD標準中。
在DVD視頻系統(tǒng)中,難以構建通用的內容創(chuàng)建系統(tǒng)。因此,使用模板創(chuàng)建內容,這樣故事按照準備好的劇情被創(chuàng)建。當創(chuàng)建復雜內容的時候,有必要使用用戶定制的內容創(chuàng)建系統(tǒng)來代替模板。根據(jù)本發(fā)明的這個實施例,為了解決這樣的問題,使用作為通用和可擴展的腳本語言的ECMA腳本來控制AV內容。
在下面的描述中,本發(fā)明的這個實施例的標準被稱作通用介質盤視頻標準(UMD是Sony Computer Entertainment公司的注冊商標)。UMD視頻標準的腳本部分被稱作UMD視頻腳本標準。
接下來,將簡要描述UMD視頻標準。圖1示出了UMD視頻標準的層結構。UMD視頻標準定義了三個層——腳本層、播放列表層以及剪輯層。根據(jù)這種結構對流進行管理。
UMD視頻標準處理已被數(shù)字編碼為一個MPEG2流且被多路復用的視頻數(shù)據(jù)、音頻數(shù)據(jù)和字幕數(shù)據(jù)的MPEG2包化基本流。視頻數(shù)據(jù)、音頻數(shù)據(jù)和字幕數(shù)據(jù)的基本流被多路復用的MPEG2流被稱作剪輯AV流。該剪輯AV流包含在剪輯AV流文件中。當記錄剪輯AV流文件時,以一對一的關系對應的創(chuàng)建剪輯信息文件。一套剪輯信息文件和相應于該剪輯信息文件的剪輯AV文件被稱作一個剪輯。
剪輯是在某個時間在盤上記錄的一個數(shù)據(jù)單元。剪輯的再現(xiàn)次序是在播放列表層中管理的,該播放列表層是剪輯層上面的層。播放列表層是指定剪輯再現(xiàn)路徑的層。播放列表層包含至少一個播放列表(PlayList)。播放列表是一組播放項(PlayItem)。一個播放項包含一對表示剪輯的再現(xiàn)范圍的入點和出點。利用多個播放項,能以任何次序對多個剪輯進行再現(xiàn)。播放項能夠指定同一個剪輯。剪輯AV流文件的入點和出點由時間戳(剪輯內部時間)來指定。時間戳通過剪輯信息文件的信息被轉換為剪輯AV流的字節(jié)位置。
播放列表僅是一種在其中表示全部或者部分剪輯的播放項被以指定次序再現(xiàn)的結構。僅利用一個播放列表,很難實現(xiàn)剪輯再現(xiàn)分支以及和用戶的交互。根據(jù)本發(fā)明的這個實施例,多個播放列表一同被包含在文件“PLAYLIST.DAT”中。
在UMD視頻腳本中對腳本層進行描述,其中語言規(guī)范ECMA腳本被擴展。UMD視頻腳本是一種在其中ECMA腳本被擴展以完成用于UMD視頻的原始功能的腳本。
腳本層是播放列表層的上一層。腳本層是由使播放器再現(xiàn)播放列表和對播放器進行設置的指令序列組成的。利用腳本層中的指令,可以以這樣一種方式實現(xiàn)對播放列表的再現(xiàn),即選擇根據(jù)多個語言的多個流中的一個或者按照根據(jù)預定條件選擇的播放列表再現(xiàn)播放項。使用具有這樣的條件分支的播放列表再現(xiàn)的應用的一個例子是多重故事(multi story)。腳本層實現(xiàn)與用戶的交互功能。
根據(jù)本發(fā)明的這個實施例,腳本層是由被稱作源文件的文件組成的。源文件包含按照真實ECMA腳本描述的腳本數(shù)據(jù)(腳本程序),用于按鈕操作的音效的聲音數(shù)據(jù),由用于菜單屏的背景圖像的圖像數(shù)據(jù)組成的屏幕圖案,以及用于顯示例如按鈕圖像的GUI部件的圖像數(shù)據(jù)(位圖數(shù)據(jù))。
可以有多個源文件。根據(jù)本發(fā)明的這個實施例,按照預定命名規(guī)則指定源文件的文件名。例如,文件名的擴展名“RCO”表示該文件是一個源文件。
2.根據(jù)UMD視頻標準的播放器模型下面將描述根據(jù)UMD視頻標準再現(xiàn)數(shù)據(jù)的再現(xiàn)裝置(播放器)模型(這種模式被稱作播放器模型)。該播放器從盤上讀取源文件、播放列表文件以及剪輯信息文件。其后,播放器以在源文件中定義的再現(xiàn)次序從盤上讀取剪輯AV流文件、播放列表文件以及剪輯信息文件,并且從剪輯AV流文件中再現(xiàn)視頻數(shù)據(jù)、音頻數(shù)據(jù)和字幕數(shù)據(jù)等。
根據(jù)腳本程序的語言規(guī)范,將再現(xiàn)播放列表的功能塊實現(xiàn)為該腳本程序的一個對象。在UMD視頻標準中,再現(xiàn)播放列表的對象被稱作電影播放器對象。使播放器再現(xiàn)播放列表和對播放器進行設置的指令是該電影播放器對象所具有的方法。電影播放器對象由腳本層中的方法控制。在這點上,允許電影播放器對象將狀態(tài)改變和再現(xiàn)位置通知給腳本層的功能是必須的。這個功能對應于電影播放器對象發(fā)出一個到腳本程序的事件的操作。對應于該事件的處理被描述為事件處理程序。
當創(chuàng)建了一個其信息通過事件從電影播放器對象傳送到腳本程序,并且該腳本程序通過對象控制電影播放器對象的模型時,腳本程序能控制對剪輯AV流的再現(xiàn)。
圖2示意性地示出了本發(fā)明這個實施例的播放器模型的例子。電影播放器300是根據(jù)UMD視頻標準再現(xiàn)視頻數(shù)據(jù)、音頻數(shù)據(jù)以及字幕數(shù)據(jù)的模塊。上述的電影播放器對象是一個包含在操作電影對象的腳本程序中的對象。換句話說,電影播放器對象是一個抽象的執(zhí)行模塊,其實現(xiàn)電影播放器的功能,并且其可由腳本程序操縱。
另外,由于電影播放器300和電影播放器對象被認為實質是相同的,他們可由相同的參考數(shù)字來描述。
在圖2中,電影播放器300利用根據(jù)用戶輸入310從底層(圖2中所示的本地執(zhí)行平臺301)接收到的方法和利用根據(jù)播放列表和剪輯信息的數(shù)據(jù)庫從頂層(腳本層)接收到的方法來讀取剪輯AV流文件,并解碼和顯示該剪輯AV流。
電影播放器對象300的內部結構取決于再現(xiàn)UMD視頻的UMD視頻播放器的實施方式。腳本層302將應用編程接口(API)提供給電影播放器對象300,該應用編程接口將方法和屬性作為黑箱對象來使用。在這個例子中,UMD視頻播放器表示實現(xiàn)電影播放器的真實裝置。所有UMD視頻播放器按照UMD視頻標準實現(xiàn)電影播放器,并具有與之相關的再現(xiàn)兼容性。
如圖2所示,電影播放器對象300具有三條輸入/輸出通道,其分別是可從本地執(zhí)行平臺301接收控制指令311的通道,把事件312通知給腳本層302的通道,以及從腳本層302接收方法313的通道。
控制指令311是控制電影播放器300的操作的指令,并且其是從本地執(zhí)行平臺301接收到的。本地執(zhí)行平臺301是作為真實裝置的UMD視頻播放器的裝置特有部分和電影播放器300之間的接口。事件312是從電影播放器300傳送到腳本層302的腳本事件。方法313是腳本層302的腳本程序利用其將指令發(fā)送到電影播放器300的方法。
按照UMD視頻標準,電影播放器對象300包含播放列表和剪輯信息的數(shù)據(jù)庫320。電影播放器300使用戶輸入310無效(屏蔽用戶輸入310),并且根據(jù)數(shù)據(jù)庫320把由時間指定的再現(xiàn)位置轉換成剪輯AV流的字節(jié)位置。
電影播放器對象300中的重放模塊321解碼剪輯AV流,該剪輯AV流是其音頻數(shù)據(jù)、視頻數(shù)據(jù)以及字幕數(shù)據(jù)被多路復用的MPEG2節(jié)目流(PS)。重放模塊321具有播放狀態(tài)和停止狀態(tài)的兩種狀態(tài),并且通過控制指令和方法從一種狀態(tài)改變到另一種狀態(tài)(見圖3)。應該注意到,剪輯AV流并不局限于MPEG2PS。例如,該模型能把MPEG2傳輸流(TS)處理成與MPEG2PS相同的流。
腳本層302是按照UMD視頻標準來執(zhí)行腳本程序、控制電影播放器對象300并且顯示屏幕的層。腳本層302完成內容創(chuàng)建方想要創(chuàng)建的劇本。腳本層302發(fā)送方法313到電影播放器對象300,并且從其接收事件312。腳本層302在它和本地執(zhí)行平臺301之間把對應于用戶輸入310的鍵事件314和使本地執(zhí)行平臺301顯示屏幕的方法315進行交換。
本地執(zhí)行平臺301也具有未在UMD視頻標準中定義的各種功能。根據(jù)本發(fā)明的這個實施例,存在有方法315,腳本層302利用該方法315把指令發(fā)送到本地執(zhí)行平臺301,在本地執(zhí)行平臺301中定義的其功能被抽象化的對象。腳本程序將方法315看作包含在該對象中。這是因為一個方法被包含在一個對象中,因而,控制對象330被定義在本地執(zhí)行平臺301中。方法315被定義為控制對象330的方法。
例如,菜單屏上的按鈕可由本地執(zhí)行平臺301利用從腳本層302的腳本程序提供給本地執(zhí)行平臺301的方法315來顯示。當用戶選擇或者確定按鈕中一個時,本地執(zhí)行平臺301把對應于用戶輸入310的鍵事件314通知給腳本層302。腳本層302中的腳本程序執(zhí)行對應于用戶輸入310的鍵事件314的處理。
指定電影播放器300和腳本層302的角色以使當電影播放器300解碼視頻數(shù)據(jù)、音頻數(shù)據(jù)以及字幕數(shù)據(jù)并控制對所解碼數(shù)據(jù)的顯示時,腳本層302放置并顯示部件圖像(在下文中被稱作GUI部件),該部件圖像組成例如按鈕的圖形用戶界面(GUI),并對應于對GUI部件的選擇和確定進行處理。
本地執(zhí)行平臺301是電影播放器對象300和腳本程序運行的平臺。當真實的UMD視頻播放器是硬件設備時,UMD視頻播放器將本地執(zhí)行平臺301實現(xiàn)為用于協(xié)調在硬件和電影播放器300之間的處理。
例如,本地執(zhí)行平臺301從用戶接收用戶輸入310并且確定所接收的用戶輸入310是針對電影播放器對象300的指令還是針對腳本層302中所顯示的按鈕的指令。當所確定的結果表示用戶輸入310是針對電影播放器300的指令時,本地執(zhí)行平臺301把用戶輸入310轉換為控制指令311,作為對電影播放器300的內部控制指令,并且將該控制指令發(fā)送到電影播放器300。
另一方面,當所確定的結果表示用戶的輸入310是針對腳本層302中所顯示的GUI部件的指令時,本地執(zhí)行平臺301把相應于用戶輸入310的鍵事件314通知給腳本層302。本地執(zhí)行平臺301能根據(jù)用戶輸入310利用從腳本層302發(fā)送的方法315在屏幕上顯示按鈕圖像。換句話說,本地執(zhí)行平臺301和腳本層302可以不通過電影播放器300直接地交換事件和方法。
另外,本地執(zhí)行平臺301可訪問電影播放器300的屬性并且檢查電影播放器300的狀態(tài)。
下面,將詳細描述電影播放器300。圖3示出了電影播放器300的內部結構的一個例子。如上所述,電影播放器300由數(shù)據(jù)庫320和重放模塊321組成。數(shù)據(jù)庫320是存儲從盤中讀取的播放列表信息和剪輯的信息,即剪輯信息的區(qū)域。
重放模塊321是由解碼器引擎322和屬性323組成的。屬性323是表示重放模塊321的狀態(tài)的值。屬性323具有兩種類型的屬性323A(只讀參數(shù))和屬性323B(播放器狀態(tài)),屬性323A的值取決于電影播放器300的初始設置,如語言代碼,屬性323B的值根據(jù)重放模塊321的狀態(tài)而改變。
其值取決于初始設置的屬性323A的值是由本地系統(tǒng),例如真實的裝置來設置的。因此,屬性323A的值不被播放列表、剪輯信息以及腳本程序改變。屬性323A的值僅可從腳本程序中讀出。相反,表示重放模塊321的狀態(tài)的屬性323B的值,可從腳本程序中讀出。另外,也可從特定的腳本程序中寫入屬性323B的值。
在該操作模型中,假定在再現(xiàn)剪輯AV流之前,從盤中預先裝入播放列表和剪輯信息。替代地,可用其它實現(xiàn)方式實現(xiàn)電影播放器模型的操作。
電影播放器對象300再現(xiàn)由腳本層302或者本地執(zhí)行平臺301指定的播放列表。例如,電影播放器300參照數(shù)據(jù)庫320并且根據(jù)所指定的播放列表獲得作為文件的字節(jié)位置的剪輯AV流的再現(xiàn)位置。在重放模塊321中,解碼器引擎322根據(jù)再現(xiàn)位置的信息來控制對剪輯AV流的解碼。
如圖4所示,根據(jù)播放列表的再現(xiàn)狀態(tài),電影播放器300具有播放狀態(tài)和停止狀態(tài)兩種狀態(tài)。播放狀態(tài)表示播放列表被指定并且其正被再現(xiàn)。播放狀態(tài)包括標準再現(xiàn)、例如雙倍速再現(xiàn)和1/2倍速再現(xiàn)的變速再現(xiàn)、快進、快退以及暫停。所謂的分步(step)再現(xiàn),其中每幀被正向再現(xiàn)以及被反向再現(xiàn),是暫停狀態(tài)和播放狀態(tài)被重復的狀態(tài)。停止狀態(tài)表示播放列表不被再現(xiàn)。在停止狀態(tài)中,沒有選擇播放列表并且表示“當前再現(xiàn)的播放列表號”的播放器狀態(tài)的值是不確定的。
電影播放器300的狀態(tài)取決于電影播放器300中的解碼器引擎322在播放狀態(tài)和停止狀態(tài)之間的狀態(tài)改變。根據(jù)解碼引擎322的狀態(tài)改變來更新屬性323B的值。
恢復信息324存儲在停止狀態(tài)發(fā)生之前現(xiàn)存的狀態(tài)。在電影播放器300解碼播放列表之后,當電影播放器300處于播放狀態(tài)時,如果電影播放器300的狀態(tài)被改變到停止狀態(tài)時,恢復信息324存儲在停止狀態(tài)發(fā)生之前現(xiàn)存的狀態(tài)。另外,恢復信息324可被存儲在播放器的作為硬件用于盤的每一標題的非易失性存儲器中。盤對于每個標題具有唯一的標識信息(稱為標題ID)。恢復信息324和該標識信息被相關地存儲。因此,當具有根據(jù)標識信息的標題的盤狀態(tài)從停止狀態(tài)改變到播放狀態(tài)時,根據(jù)恢復信息324,能夠從發(fā)生停止狀態(tài)的位置再現(xiàn)數(shù)據(jù)。
3.電影播放器的事件模型下面,將描述電影播放器300的事件模型。在電影播放器300再現(xiàn)播放列表的播放狀態(tài)下,電影播放器300產生各種事件。事件執(zhí)行被描述為腳本并被稱為事件處理程序的處理程序。事件處理程序是當事件發(fā)生時所調用的方法。在事件發(fā)生時開始執(zhí)行處理程序的程序執(zhí)行模型被稱為事件驅動模型。在事件驅動模型中,發(fā)生不規(guī)則事件。當事件發(fā)生時,執(zhí)行預定的程序。根據(jù)本發(fā)明的這個實施例,腳本程序用事件處理程序組來控制電影播放器對象300的操作。
圖5示意性地示出了本發(fā)明這個實施例的電影播放器300的事件模型。在圖5中,事件處理程序onEventA()onEventB()以及onEventC()是接口。事件處理程序的內容被描述為腳本。事件處理程序的內容例如由內容創(chuàng)建方創(chuàng)建并執(zhí)行。在UMD視頻腳本標準中,給每個事件提供一個事件處理程序,其中電影播放器對象300把每個事件通知給腳本程序。在圖5所示的例子中,確定當事件A發(fā)生時所執(zhí)行的處理程序是事件處理程序onEventA()。這適用于事件B和事件C。因此,當事件B發(fā)生時,執(zhí)行與其相應的事件處理程序onEventB()。當事件C發(fā)生時,執(zhí)行與其相應的事件處理程序onEventC()。
由于系統(tǒng)方選擇在事件發(fā)生時所調用的事件處理程序,因此,內容創(chuàng)建方無需描述用于確定在腳本程序中發(fā)生了什么事件的處理。
圖6示出了當正在再現(xiàn)播放列表時所發(fā)生的事件的例子。由于在播放列表PlayList的開始處描述章節(jié)標志ChapterMark,當從開頭再現(xiàn)播放列表時,發(fā)生對應于章節(jié)標志的事件Chapter。當無論何時將現(xiàn)有的章節(jié)改變到另一章節(jié)時,都把事件Chapter通知給腳本層302并執(zhí)行相應的事件處理程序onChapter。當對于事件標志EventMark的再現(xiàn)時間用盡時,相應的標志事件就發(fā)生了。在播放列表的末尾,電影播放器300暫停對播放列表的再現(xiàn)并把事件PlayListEnd通知給腳本層302。腳本層302方使電影播放器300用相應的事件處理程序OnPlayListEnd()開始再現(xiàn)另一個播放列表。通過這種方式,電影播放器300以內容創(chuàng)建方想要的次序持續(xù)再現(xiàn)播放列表的序列。
以這種方式,在播放器運行時,發(fā)生各種事件。當把事件的發(fā)生通知給較高級別的程序時,較高級別的程序能知道播放器的狀態(tài)。當較高級別的程序提供相應于被通知的事件而執(zhí)行的程序(事件處理程序)時,它能夠處理各種事件。下面將描述事件以及事件處理程序。
當內容創(chuàng)建方還未描述事件處理程序時,較高級別的程序執(zhí)行一個建立在播放器中的并且定義在標準中的操作(缺省的事件處理程序)或忽略該事件。當對于特殊事件無需執(zhí)行任何處理時,如果根據(jù)事件的事件處理程序未被描述,那么該事件能被主動地忽略掉。
作為事件模型,可以具有事件收聽器模型、單方法模型等等,在事件收聽器模型中,一個對象根據(jù)預定的事件將收聽器登記到播放器對象。當在播放器對象中發(fā)生的事件是已經被登記的事件時,播放器對象將該事件傳送到已登記該事件的對象。該對象執(zhí)行相應于該事件的方法。在單方法模型中,當無論何時事件發(fā)生時,都調用一個方法。
本發(fā)明這個實施例的事件模型比需要如事件登記處理和事件刪除處理等處理的事件收聽器模型簡單。單方法模型需要知道發(fā)生的是什么事件并且在方法中描述一個預處理,該預處理改變?yōu)榘l(fā)生的每個事件所準備的處理例程。由于由內容創(chuàng)建方執(zhí)行該方法,即使該模型是簡單的,也會增加內容創(chuàng)建方的負擔。另外當無論何時事件發(fā)生時,由于調用大處理程序(方法),將占用大存儲區(qū)并且執(zhí)行速度會變慢。因此,由于本發(fā)明的這個實施例的模型針對各個事件提供處理程序(事件處理程序),可以說,這個模型在這些點上比其它模型優(yōu)越。
4.電影播放器對象下面,將描述電影播放器對象300的外部規(guī)范。通常,根據(jù)ECMA腳本語言規(guī)范定義的對象具有屬性和方法。如圖2和圖3示出的該對象,本發(fā)明這個實施例的電影播放器對象300具有屬性和方法。當外部對象指定目標對象的對象名稱和屬性名稱時,外部對象能夠直接讀取和寫入該目標對象的被指定的屬性。替代性地,當設置屬性值的方法setXXX()(其中“XXX”表示屬性名)和讀取屬性值的方法getXXX()被定義時,這些方法能夠讀取和寫入其它對象的屬性。
圖7A和圖7B示出了電影播放器對象300所具有的屬性的例子的列表。這些屬性對應于圖3所示的屬性323。圖7示出了屬于圖3所示的只讀參數(shù)323A的屬性的例子。屬性scriptVersion表示UMD視頻腳本的版本。屬性audioChannelCapability表示UMD視頻播放器能再現(xiàn)的音頻通道數(shù)量。屬性languageCode表示設置給UMD視頻播放器的菜單顯示語言的語言碼。屬性audioLanguageCode表示設置給UMD視頻播放器的音頻語言的語言碼。屬性subtitleLanguageCode表示設置給UMD視頻播放器的字幕語言的語言碼。
當在電影播放器300裝入一個盤時,根據(jù)由在只讀參數(shù)323A中設置的屬性languageCode表示的語言碼,來決定從盤中讀取的腳本文件。如果裝入電影播放器300中的盤不具有根據(jù)語言的腳本文件,從盤中讀取一個缺省的腳本文件。例如,從盤中讀取位于多個腳本文件的開頭的文件作為缺省腳本文件。
圖7B示出了屬于圖3所示的播放器狀態(tài)323B的屬性的例子。屬性playListNumber表示當前正被再現(xiàn)的播放列表的播放列表號。屬性chapterNumber表示當前正被再現(xiàn)的章節(jié)的章節(jié)號。屬性videoNumber表示當前正被再現(xiàn)的視頻流的視頻流號。屬性audioNumber表示當前正被再現(xiàn)的音頻流的音頻流號。屬性subtitleNumber表示當前正被再現(xiàn)的字幕流的字幕流號。屬性playListTime表示當播放列表的開頭是0時,再現(xiàn)播放列表之后所消耗的時間。屬性audioFlag表示音頻再現(xiàn)和雙單聲LR的開/關(ON/OFF)。屬性subtitleFlag表示字幕顯示的開/關(ON/OFF)。
雙單聲是其中立體聲音頻的左右(L,R)聲道被獨立地用作單耳聲道的模式。
當電影播放器300處在播放狀態(tài)或者暫停狀態(tài)時,屬于播放器狀態(tài)323B的每個屬性表示這些信息。當把電影播放器300該變?yōu)橥V範顟B(tài)時,屬于播放器狀態(tài)323B的每個屬性被備份為恢復信息324。在這點上,播放器狀態(tài)323B的內容會被清除。
圖8示出了電影播放器對象300所具有的方法的例子的列表。該方法對應于圖2所示的方法313。方法play()再現(xiàn)視頻數(shù)據(jù)。方法playChapter()指定章節(jié)并且再現(xiàn)所指定章節(jié)的視頻數(shù)據(jù)。方法resume()用恢復信息324開始再現(xiàn)視頻數(shù)據(jù)。方法stop()停止對視頻數(shù)據(jù)的再現(xiàn)。方法pause()暫停對視頻數(shù)據(jù)的再現(xiàn)。方法playStep()逐幀地再現(xiàn)視頻數(shù)據(jù)。方法changeStream()把視頻流、音頻流和/或字幕流的現(xiàn)有流改變?yōu)榱硪粋€流。方法getPlayerStatus()獲得電影播放器300的播放狀態(tài)、停止狀態(tài)、暫停狀態(tài)等。方法changeResumeInfo()改變恢復信息324的內容。方法reset()停止對視頻數(shù)據(jù)的再現(xiàn)并且清除恢復信息324的內容。
根據(jù)UMD視頻標準,能在顯示屏的一個部分顯示視頻數(shù)據(jù)。下列四種方法是在顯示屏的一個部分顯示視頻數(shù)據(jù)的方法。方法setPos()設置視頻數(shù)據(jù)的顯示位置。方法getPos()獲得視頻數(shù)據(jù)的顯示位置。方法setSize()設置視頻數(shù)據(jù)的顯示尺寸。方法getSize()獲得視頻數(shù)據(jù)的顯示尺寸。
現(xiàn)實中,電影播放器300和本地執(zhí)行平臺301是整合在一起的。換句話說,電影播放器300UMD和本地執(zhí)行平臺301相當于作為裝入盤并從盤中再現(xiàn)視頻數(shù)據(jù)的UMD播放器的硬件和控制UMD播放器的軟件。什么部分是硬件和軟件取決于其實施結構。例如,當UMD播放器是個人電腦等時,除了盤驅動器之外的其它部分是由軟件組成的。當使用單個UMD播放器時,除了盤驅動器之外,例如視頻解碼器、音頻解碼器等也可以由硬件組成。因此,方法、指令和事件并不總是明確地在如圖2所示的電影播放器300和本地執(zhí)行平臺301之間交換。
另一方面,關于用戶的鍵輸入,如在圖2中所示,首先通過本地執(zhí)行平臺301接收用戶輸入310。換句話說,本地執(zhí)行平臺301接收作為用戶輸入310的用戶鍵輸入。本地執(zhí)行平臺301確定用戶輸入310是對電影播放器300的指令還是對腳本層302中的腳本程序的事件。根據(jù)所確定的結果,本地執(zhí)行平臺301發(fā)送控制指令311或者鍵事件314并把所發(fā)控制指令311或者鍵事件314通知給相應的上一層(電影播放器300或腳本層302)。
圖9和圖10示出了作為用戶輸入310的鍵輸入的例子。在圖9和圖10中,具有前綴“VM”的鍵是虛擬鍵。
圖9示出了關于電影播放器300的操作的鍵輸入的例子。鍵VK_PLAY提供相應于啟動再現(xiàn)的播放鍵的功能。鍵VK_STOP提供相應于停止再現(xiàn)的停止鍵的功能。鍵VK_PAUSE提供相應于暫停再現(xiàn)的暫停鍵的功能。鍵VK_FAST_FORWARD提供相應于執(zhí)行快進再現(xiàn)的快進鍵的功能。鍵VK_FAST_REVERSE提供相應于執(zhí)行快退再現(xiàn)的快退鍵的功能。鍵VK_SLOW_FORWARD提供相應于執(zhí)行慢進再現(xiàn)的慢(進)鍵的功能。鍵VK_SLOW_REVERSE提供相應于執(zhí)行慢退再現(xiàn)的慢(退)鍵的功能。鍵VK_STEP_FORWARD提供相應于執(zhí)行分步正向再現(xiàn)的步(進)鍵的功能。VK_STEP_REVERSE提供相應于執(zhí)行分步反向再現(xiàn)的步(退)鍵的功能。
鍵VK_NEXT提供相應于輸入了表示“下一個”值的下一個指定鍵的功能。鍵VK_PREVIOUS提供相應于輸入了表示“前一個”值的前一個指定鍵的功能。利用鍵VK_NEXT和鍵VK_PREVIOUS,用戶能分別指定例如到下一章節(jié)以及前一章節(jié)的跳轉。
鍵VK_ANGLE提供相應于為多角度視頻數(shù)據(jù)指定角度改變的角度改變鍵的功能。鍵VK_SUBTITLE提供相應于指定英文字幕、日文字幕以及字幕ON/OFF的字幕改變鍵的功能。鍵VK_AUDIO提供相應于指定比如環(huán)繞模式或者雙語模式的音頻模式的音頻改變鍵的功能。鍵VK_VIDEO_ASPECT提供相應于改變視頻數(shù)據(jù)的寬高比的示象改變鍵的功能。
圖10示出了關于菜單操作的鍵輸入的例子。鍵VK_UP提供相應于輸入了表示“向上”值的向上指定鍵的功能。鍵VK_DOWN提供相應于輸入了表示“向下”值的向下指定鍵的功能。鍵VK_RIGHT提供相應于輸入了表示“向右”值的向右指定鍵的功能。鍵VK_LEFT提供相應于輸入了表示“向左”值的向左指定鍵的功能。鍵VK_UP_RIGHT提供相應于輸入了表示“向右上”值的向右上指定鍵的功能。鍵VK_UP_LEFT提供相應于輸入了表示“向左上”值的向左上指定鍵的功能。鍵VK_DOWN_RIGHT提供相應于輸入了表示“向右下”值的向右下指定鍵的功能。鍵VK_DOWNL_EFF提供相應于輸入值表示“向左下”的向左下指定鍵的功能。利用這些方向鍵,用戶可使例如光標在顯示屏上移動。
鍵VK_MENU提供相應于顯示菜單的菜單鍵的功能。鍵VK_ENTER提供相應于完成指令輸入或者數(shù)據(jù)輸入的輸入鍵的功能。鍵VK_RETURN提供返回處理的上一步的功能。
鍵VK_COLORED_KEY_1提供相應于彩色功能鍵1的功能。鍵VK_COLORED_KEY_2提供相應于彩色功能鍵2的功能。鍵VK_COLORED_KEY_3提供相應于彩色功能鍵3的功能。鍵VK_COLORED_KEY_4提供相應于彩色功能鍵4的功能。鍵VK_COLORED_KEY_5提供相應于彩色功能鍵5的功能。鍵VK_COLORED_KEY_6提供相應于彩色功能鍵6的功能。
由于從其職能上來看,圖9中所示的鍵輸入的功能不同于圖10中所示的這些鍵輸入的功能,因此本地執(zhí)行平臺301需要選擇這些鍵輸入所要通知的目的地。如上所述,圖9中所示的鍵輸入指定對視頻數(shù)據(jù)、音頻數(shù)據(jù)以及字幕數(shù)據(jù)的再現(xiàn)操作。當本地執(zhí)行平臺301接收到作為用戶輸入310的圖9所示的鍵輸入中的一個時,本地執(zhí)行平臺301將接收到的鍵輸入轉換為圖11所示的指令并且把轉換的指令通知給電影播放器300。
另一方面,由于圖10所示的鍵輸入是對GUI的用戶輸入310,因此需要把這些輸入通知給組成屏幕和放置了按鈕的腳本層302。當本地執(zhí)行平臺301接收到作為用戶輸入310的如圖10所示的鍵輸入時,本地執(zhí)行平臺301把鍵輸入轉換為圖2所示的事件314,并且把事件314通知給腳本層302。圖12示出了根據(jù)鍵輸入的事件314的例子。
圖9和圖10同樣示出了如鍵VK_ANGLE、鍵VK_SUBTITLE和鍵VK_AUDIO等關于流改變的鍵輸入。首先,利用這些鍵,用戶輸入310通知給用戶輸入310。電影播放器300把表示電影播放器300已經發(fā)送流改變請求的事件通知給腳本程序。腳本程序利用流改變方法使電影播放器300把如音頻流或者字幕流的現(xiàn)有流改變成另一個流。因此這些鍵是本地執(zhí)行平臺301需要通知給電影播放器300的鍵輸入。
下面,將詳細描述圖11中所示的指令。指令uo_timeSearch(playListTime)從正被再現(xiàn)的播放列表的指定時間開始啟動再現(xiàn)。變元playListTime表示當播放列表的開始是0時播放列表的時間。由于這個指令不指定播放列表號,因此由變元playListTime表示的時間是在被再現(xiàn)的播放列表范圍內的指定時間。指令uo_play()以標準再現(xiàn)速度開始再現(xiàn)。其開始位置根據(jù)恢復信息324來確定。當不存在恢復信息324時,這個用戶操作無效。這個指令相應于無播放列表號的方法play()的執(zhí)行。利用這個指令,用戶不能指定播放列表號。
指令uo_playChapter(chapterNumber)從正初再現(xiàn)的播放列表中的變元chapterNumber所指定的章節(jié)開始啟動再現(xiàn)。如果沒有章節(jié)號,該指令從正被再現(xiàn)的章節(jié)的開頭開始啟動再現(xiàn)。該指令相應于無章節(jié)號的方法playChapter()。指令uo_playPrevChapter()從緊挨著的前一章節(jié)開始啟動再現(xiàn),指令uo_playNextChapter從緊挨著的后一章節(jié)開始啟動再現(xiàn)。
指令uo_jumpToEnd()用于跳轉到播放列表的末尾。該指令相應于停止再現(xiàn)和產生事件playListEnd的用戶操作。利用該指令,腳本層302執(zhí)行事件處理程序onPlayListEnd。指令uo_forwardScan(speed)啟動由變元speed指定再現(xiàn)速度的正向再現(xiàn)。指令uo_backwardScan(speed)啟動由變元speed指定再現(xiàn)速度的反向再現(xiàn)。這些指令uo_forwardScan(speed)和uo_backwardScan(speed)的變元speed取決于UMD視頻播放器的實現(xiàn)方式。
指令uo_playStep(forward)開始步進再現(xiàn)。指令uo_playStep(backward)開始步退再現(xiàn)。指令uo_pauseOn()暫停再現(xiàn)。指令uo_pauseOff()取消再現(xiàn)的暫停狀態(tài)。
指令uo_setAudioEnabled(Boolean)改變音頻流的ON/OFF。當執(zhí)行該指令時,標記audioFlag的值相應地改變。指令uo_setSubtitleEnabled(Boolean)改變字幕流的ON/OFF。當執(zhí)行該指令時,相應地改變標記subtitleFlag的值。指令uo_angleChange()改變顯示角度。當對應于用戶操作把該指令通知給電影播放器300時,電影播放器300將事件angleChange通知給腳本層302。指令uo_audiochange(audioStreamNumber)改變將要再現(xiàn)的音頻流。指令uo_changeAudioChannel(value)改變音頻通道的號或者在雙單聲道再現(xiàn)中將一個通道改變?yōu)榱硪煌ǖ?。當?zhí)行該指令時,相應地改變標記audioFlag的值。指令uo_subtitleChange(subtitleStreamNumber)把現(xiàn)有的字幕流改變?yōu)榱硪粋€字幕流。
下面,將詳細描述圖12中所示的事件和電影播放器300的方法之間的關系。事件menu跳轉到一個菜單。本地執(zhí)行平臺301將此事件通知給腳本層302而不是電影播放器300。當腳本層302接收到事件menu時,腳本層302執(zhí)行事件處理程序onMenu。事件exit是當本地執(zhí)行平臺301完成UMD視頻應用時本地執(zhí)行平臺301發(fā)出的事件。當腳本層302接收到事件exit時,腳本層302執(zhí)行事件處理程序onExit。
事件resourceChanged是當將現(xiàn)有的源文件改變?yōu)榱硪粋€源文件時,本地執(zhí)行平臺301產生的事件。當腳本層302接收到事件resourceChanged時,腳本層302執(zhí)行事件處理程序onResourceChanged。
事件up、事件down、事件left,、事件right、事件focusIn、事件focusOut、事件push以及事件cancel是當聚焦到屏幕上的作為GUI部件的按鈕圖像上時所發(fā)生的事件。本地執(zhí)行平臺301把這些事件通知給腳本層302而不是電影播放器300。當聚焦到一個按鈕圖像上時,例如在屏幕上顯示的光標表示按鈕圖像的坐標,以使按鈕圖像可被選擇。當分別聚焦在向上按鈕圖像、向下按鈕圖像、向左按鈕圖像以及向右按鈕圖像上時,事件up、事件down、事件left和事件right發(fā)生。事件focusIn當聚焦在任何按鈕圖像上時發(fā)生。當解除對任何被聚焦的按鈕圖像聚焦時事件focusOut發(fā)生。當對任何被聚焦的按鈕圖像執(zhí)行按下操作時,事件push發(fā)生。當對于任何按鈕圖像執(zhí)行與按下操作相反的取消操作時,事件cancel發(fā)生。
事件autoPlay和事件continuePlay是使腳本層302開始執(zhí)行腳本的事件。事件autoPlay是當裝入盤時使腳本自動開始執(zhí)行的事件。事件continuePlay是當裝入盤時根據(jù)例如恢復信息324使腳本在腳本的執(zhí)行被停止的位置處恢復執(zhí)行。
存在有當圖12中所示的事件發(fā)生時所執(zhí)行的程序。相應于這些事件的程序被稱為事件處理程序。事件和事件處理程序可使用例如名稱來相互關聯(lián)。通過在相應事件的名稱上加上前綴“on”來創(chuàng)建事件處理程序的名稱。圖13和圖14示出了事件處理程序的例子。當內容創(chuàng)建者描述事件處理程序內容時,UMD視頻播放器能執(zhí)行內容創(chuàng)建者想要的各種操作。
圖13示出了電影播放器對象300所具有的事件以及與其相應的事件處理程序的例子。圖13所示的事件對應于圖2中所示的事件312。電影播放器300把在圖13中所示的事件通知給腳本層302。事件處理程序是各種接口。事件處理程序的內容是由內容創(chuàng)建者通過使用例如腳本語言實現(xiàn)的。由于事件處理程序具有這種結構,因此當事件發(fā)生時,能夠完成內容創(chuàng)建者想要的操作。
事件mark和事件處理程序onMark()是在檢測到一個事件mark時執(zhí)行的。在如播放列表中嵌入事件mark。當電影播放器300正在再現(xiàn)播放列表時,電影播放器300從播放列表檢測事件mark。當電影播放器300檢測到事件mark時,電影播放器300把事件mark通知給腳本層302。腳本層302執(zhí)行對應于事件mark的事件處理程序onMark()。同樣地,當完成對播放列表的再現(xiàn)時,執(zhí)行事件playListEnd以及事件處理程序onPlayListEnd()。當檢測到chapter-mark時,執(zhí)行事件chapter和事件處理程序onChapter()。chapter-mark被嵌入在例如播放列表中并且由電影播放器300在它正在再現(xiàn)播放列表時被檢測。
當角度改變由用戶操作來指定時,執(zhí)行事件angleChange以及事件處理程序onAngleChange()。例如,當由作為用戶輸入310的用戶操作把鍵輸入VK_ANGLE輸入到本地執(zhí)行平臺301中時,本地執(zhí)行平臺301把用戶輸入310轉換為指令uo_angleChange()并且將它提供給電影播放器300。電影播放器300產生相應于指令uo_angleChange的事件angleChange并且把事件angleChange提供給腳本層302。腳本層302執(zhí)行相應于事件angleChange的事件處理程序onAngleChange()。同樣地,當由用戶操作指定音頻改變時,執(zhí)行事件audioChange和事件處理程序onAudioChange()。當由用戶操作指定字幕改變時,執(zhí)行事件subtitleChange和事件處理程序onSubtitleChange()。
圖14示出了控制器對象330所具有的事件處理程序的例子。圖14中所示的事件處理程序是屬于本地執(zhí)行平臺301的控制器對象330的事件處理程序。當本地執(zhí)行平臺301把事件處理程序通知給腳本層302時,腳本層302執(zhí)行它們。
事件menu和事件處理程序onMenu()跳轉到菜單。事件menu是當菜單鍵被用戶操作按下時本地執(zhí)行平臺301通知給腳本層302的事件。腳本層302接收到該事件,執(zhí)行與此對應的事件處理程序onMenu(),并用事件處理程序onMenu()來放置并顯示組成菜單屏的GUI部件。事件exit和事件處理程序onExit()是一個事件以及其相對應的事件處理程序。當本地執(zhí)行平臺301完成UMD視頻應用時,本地執(zhí)行平臺301產生事件exit。
當由如用戶操作來指定UMD視頻播放器的操作的完成時,本地執(zhí)行平臺301把事件exit通知給腳本層302。當腳本層302收到事件exit時,該腳本利用事件處理程序onExit()執(zhí)行退出處理。
事件resourceChanged和事件處理程序onResourceChanged()是一個事件和其相應的事件處理程序。在本地執(zhí)行平臺301已經把現(xiàn)有的源文件改變?yōu)榱硪粋€源文件之后,本地執(zhí)行平臺301產生事件resoureeChanged。
事件autoPlay、事件處理程序onAutoPlay()、事件continuePlay以及事件處理程序onContinuePlay()使腳本開始執(zhí)行。
除了用于控制器對象330的事件處理程序之外,還存在有用于按鈕的事件處理程序。然而,用于按鈕的事件處理程序不與本發(fā)明這個實施例密切相關,它們的描述將被忽略。
下面將參照圖15所示的流程圖,簡要描述當用戶輸入事件發(fā)生時執(zhí)行所提供的程序的處理的例子。圖15示出了這樣的一個例子,其中當UMD視頻播放器正在從盤中正常地再現(xiàn)數(shù)據(jù)時,當用戶按下一個鍵使UMD視頻播放器再現(xiàn)下一章節(jié)時(例如,“next”鍵),UMD視頻播放器根據(jù)鍵輸入跳轉到下一章節(jié),開始從下一章節(jié)再現(xiàn)數(shù)據(jù),并且在屏幕上顯示所提供的信息。
當UMD視頻播放器正在從盤中正常地再現(xiàn)數(shù)據(jù)時,當用戶在UMD視頻播放器的遙控指令器上按下鍵“next”時(在步驟S10),鍵VK_NEXT作為用戶輸入310提供給本地執(zhí)行平臺301。本地執(zhí)行平臺301產生對應于用戶輸入310的用戶指令uo_playNextChapter()(在步驟S11)。本地執(zhí)行平臺301把用戶指令uo_playNextChapter()通知給電影播放器300。
當電影播放器300接收到指令uo_playNextChapter()時,電影播放器300搜索數(shù)據(jù)庫320以根據(jù)播放列表信息基于當前再現(xiàn)位置找到下一章節(jié)標志的位置(在步驟S12)。在步驟S13,確定下一章節(jié)標志是否存在。當所確定的結果表示下一章節(jié)標志不存在時,電影播放器300不跳轉到下一章節(jié),而是恢復當前的再現(xiàn)操作。
相反,當在步驟S13所確定的結果表示下一章節(jié)標志存在時,流程前進到步驟S14。在步驟S14中,電影播放器300停止當前的再現(xiàn)并且從數(shù)據(jù)庫320的剪輯信息文件的特征點信息中得到剪輯AV流文件中的下一章節(jié)標志的字節(jié)位置。在步驟S15中,電影播放器300訪問所得到的文件字節(jié)位置并且從該位置開始再現(xiàn)流。
在步驟S16之后,執(zhí)行顯示消息的過程,該消息通知用戶屏幕上現(xiàn)有的章節(jié)被改變?yōu)榈南乱徽鹿?jié)。當現(xiàn)有的章節(jié)被改變?yōu)橄乱徽虏⑶覐南乱徽鹿?jié)的開頭開始再現(xiàn)時,事件chapter發(fā)生(在步驟S16處)。例如,電影播放器300檢測位于在章節(jié)的開始處的章節(jié)標志并且產生事件chapter。電影播放器300把事件chapter通知給腳本層302。另外,電影播放器300把所跳轉到的章節(jié)的章節(jié)號通知給腳本層302。腳本層302開始執(zhí)行相應于所通知的事件的事件處理程序,例如事件處理程序onChapter()(在步驟S17)。
在這個例子中,假定在事件處理程序中描述了顯示一個消息的操作,該消息表示屏幕上的章節(jié)被改變。腳本層302中的腳本執(zhí)行事件處理程序,當事件發(fā)生時得到電影播放器300通知給腳本層302的章節(jié)號(在步驟S18),并且使本地執(zhí)行平臺301在屏幕上顯示例如表示所得到的章節(jié)號的章節(jié)開頭的預定消息。相應地,本地執(zhí)行平臺301在屏幕上顯示該消息并且完成事件處理程序的處理(在步驟S20)。
在前述過程中,當用戶操作使電影播放器300從下章節(jié)開始再現(xiàn)數(shù)據(jù)的鍵“next”時,電影播放器300跳轉到下一章節(jié)。當電影播放器300開始再現(xiàn)下一章節(jié)時,電影播放器300在屏幕上顯示表示下一章節(jié)的開頭的消息。
因此用戶輸入的事件使得電影播放器300的狀態(tài)將被改變并且新的事件將發(fā)生。利用新事件,電影播放器300能夠執(zhí)行各種處理過程。
電影播放器模型能夠再現(xiàn)視頻數(shù)據(jù)、音頻數(shù)據(jù)以及字幕數(shù)據(jù)。利用內容創(chuàng)建者想要的事件并使它們在再現(xiàn)過程中發(fā)生,并且利用相應于該事件執(zhí)行的相應的事件處理程序,能夠完成他或她想要的操作。另外,當播放器正在再現(xiàn)播放列表的同時對其執(zhí)行用戶操作時,本地執(zhí)行平臺301將對應于作為用戶操作的用戶輸入310的控制指令提供給電影播放器300以使播放器的現(xiàn)有狀態(tài)改變?yōu)橛脩粝M牧硪粋€狀態(tài)。另外,本地執(zhí)行平臺301把對應于作為對播放器的用戶操作的用戶輸入310的事件通知給腳本層302中的腳本。結果,能夠對應于用戶的操作實現(xiàn)內容創(chuàng)建者所提供的對播放器的操作。
由于播放器模型具有這樣的一種結構,用戶能再現(xiàn)視頻數(shù)據(jù)、音頻數(shù)據(jù)以及字幕數(shù)據(jù)并交互地操作它們。
5.腳本程序的例子下面,將描述腳本層302中的腳本程序的例子。假定內容創(chuàng)建者創(chuàng)建了如圖16中所示的內容再現(xiàn)流程。圖16中所示的內容具有作為顯示元件的播放列表400和401,頂菜單402,以及消息403。播放列表400用于顯示當盤裝入時自動顯示的警告信息。播放列表401是作為內容的例子的電影的主體部分。頂菜單402具有如按鈕的GUI部件,利用GUI部件例如用戶可使腳本再現(xiàn)播放列表401。在播放列表401的再現(xiàn)過程中的任何時間可顯示消息403。
另外,在圖16所示的結構中,提供多個事件處理程序。當將盤裝入UMD視頻播放器中時,事件處理程序onAutoPlay()從盤中自動再現(xiàn)播放列表400并且在屏幕上顯示警告消息。事件處理程序onPlayListEnd()是當播放列表再現(xiàn)完成時調用的事件處理程序。在圖16所示的例子中,當完成再現(xiàn)播放列表400或者播放列表401時,調用事件處理程序onPlayListEnd()。換句話說,事件處理程序onPlayListEnd()確定播放列表的再現(xiàn)是否完成了。當完成對播放列表400的再現(xiàn)時,事件處理程序onPlayListEnd()開始對播放列表401的再現(xiàn)。當播放列表401的再現(xiàn)完成時,事件處理程序onPlayListEnd調用頂菜單402。
當用戶操作菜單鍵時,調用事件處理程序onMenu()。事件處理程序onMenu()調用頂菜單402并且在屏幕上顯示它。在播放列表的執(zhí)行期間,當由標志Mark指定的時間被用盡時執(zhí)行事件處理程序onMark()。在圖16所示的例子中,在播放列表401中設置標記Mark。在播放列表401的執(zhí)行期間,當由標志Mark指定的時間被用盡時,在屏幕上顯示消息403。
在圖16所示的例子中,當把盤裝入UMD視頻播放器中時,調用事件處理程序onAutoPlay。事件處理程序onAutoPlay再現(xiàn)播放列表400并且在屏幕上顯示警告消息。播放列表400的再現(xiàn)時間被用盡之后,播放列表400到達末尾并且調用事件處理程序onPlayListEnd。事件處理程序onPlayListEnd確定播放列表400已經完全被再現(xiàn),并且再現(xiàn)下一個播放列表401。當播放列表401正被再現(xiàn)的同時用戶操作菜單鍵時,調用事件處理程序onMenu。事件處理程序onMenu在屏幕上顯示頂菜單402。對應于在頂菜單402上的預定操作,事件處理程序onMenu從開頭開始再現(xiàn)播放列表401。當播放列表401的再現(xiàn)時間對于由標志Mark所指定的時間已經被用盡時,調用事件處理程序onMark。事件處理程序onMark在屏幕上顯示消息403。當已經完全再現(xiàn)完播放列表401時,調用事件處理程序onPlayListEnd。事件處理程序onPlayListEnd確定播放列表401已經被完全再現(xiàn)完并且在屏幕上顯示頂菜單402。
圖17示出了用于完成圖16所示的操作的腳本程序的例子。如上所述,腳本程序具有事件處理程序以及在相應事件發(fā)生時執(zhí)行這些事件處理程序。腳本程序以擴展名“RCO”存儲在源文件“SCRIPT.DAT”中。
方法“movieplayer.play()”使電影播放器300再現(xiàn)播放列表。將被再現(xiàn)的播放列表的播放列表號作為變元被描述在括號()中。當已經完全再現(xiàn)完播放列表時,事件playListEnd發(fā)生。當事件playListEnd發(fā)生時,腳本調用事件處理程序movieplayer.onPlayListEnd()。在這點上,把事件playListEnd以及對象event_info提供給腳本。將已經完成再現(xiàn)的播放列表的播放列表號等存儲在對象event_info中。該腳本能對應于對象event_info的內容而改變下一個操作。
6.文件管理結構下面,將參照圖18來描述根據(jù)UMD視頻標準的文件管理結構。文件在目錄結構中被分級管理并且被記錄在盤上??墒褂糜蓢H標準化組織(ISO)9660通過標準化形成的盤文件系統(tǒng),通用盤格式(UDF)或者相似的格式。
在根目錄下放置文件“TITLEID.DAT”以及目錄“VIDEO”。在目錄“VIDEO”下面放置目錄“RESOURCE”、目錄“CLIP”、目錄“STREAM”以及文件“PLAYLIST.DAT”。
文件“TITLEID.DAT”是存儲對于每個標題都不同的標題標識符(內容的類型)的文件。一個盤具有一個文件“TITLEID.DAT”。
源文件“JA000000.RCO”放置在目錄“RESOURCE”之下。如上所述,除了組成腳本層302的腳本程序之外,在源文件中還包含組成菜單屏的數(shù)據(jù),例如像圖像數(shù)據(jù)和聲音數(shù)據(jù)的部分數(shù)據(jù)。在目錄“RESOURCE”下通常放置一個源文件。替代地,目錄“RESOURCE”之下可以放置多個源文件。對于語言不同的多個菜單而創(chuàng)建多個源文件。然而在這種情況下,每次僅使用一個源文件。
源文件具有一個文件名,其具有一個作為分隔符的句點和固定的源文件所具有的擴展名“RCO”。句點之前的字符串表示源文件的內容。源文件的文件名具有“CCdannn.RCO”的格式。開頭兩個字符“CC”表示源文件的語言碼。下一個字符“d”是表示語言碼是否是缺省語言的標記。下一個字符“a”表示顯示屏的寬高比。下面的四個字符“nnnn”表示識別號。指定該識別號以使源文件的文件名不是冗余的。
根據(jù)源文件的命名規(guī)則,其中的文件名表示源數(shù)據(jù)的語言屬性以及顯示屏的寬高比。根據(jù)文件名適當?shù)剡x擇源文件。
在目錄“CLIP”下放置至少一個剪輯信息文件。一個剪輯信息文件具有一個由五到數(shù)個字符如“00001”(在這個例子中,為多個數(shù)字)的字符串部分組成的文件名、一個作為分隔符的句點以及一個如“CLP”的擴展部分。擴展部分“CLP”表示該文件是剪輯信息文件。
在目錄“STREAM”下放置至少一個剪輯AV流文件。一個剪輯AV流文件具有一個由五到數(shù)個字符如“00001”(在這個例子中,為多個數(shù)字)的字符串部分組成的文件名、一個作為分隔符的句點以及一個如“PS”的擴展部分。擴展部分“PS”表示該文件是剪輯AV流文件。根據(jù)本發(fā)明的這個實施例,剪輯AV流文件是運動圖像專家組2(MPEG2)節(jié)目流,其中的視頻流、音頻流和字幕流被多路復用并且被包含在由擴展部分“PS”標識的文件中。
如上所述,剪輯AV流文件是一個其中的視頻數(shù)據(jù)和音頻數(shù)據(jù)被壓縮編碼以及分時復用的文件。因此當讀取以及解碼剪輯AV流文件時,能獲得視頻數(shù)據(jù)和音頻數(shù)據(jù)。剪輯信息文件是描述剪輯AV流文件的特征的文件。因此,剪輯信息文件和剪輯AV流文件相互關聯(lián)。根據(jù)本發(fā)明的這個實施例,由于剪輯信息文件的文件名的具有數(shù)個到五個字符的字符串部分與剪輯AV流文件是相同的,可容易地得到其中的相互關系。
如上所述,源文件包含描述腳本程序的腳本文件。按照本發(fā)明的這個實施例,源文件包含使盤的再現(xiàn)狀態(tài)將被交互改變的程序。在從盤中讀取其它文件之前讀取源文件。
文件“PLAYLIST.DAT”是描述指定剪輯AV流再現(xiàn)次序的播放列表的播放列表文件。下面,參照圖24到圖26,將描述文件“PLAYLIST.DAT”文件的內部結構。圖24示出了表示文件“PLAYLIST.DAT”整體結構的語法的例子。在該例子中,以C語言描述該語法,其用作計算機裝置程序的描述語言。其也應用到表示其它語法的表中。
字段name_length具有8位的數(shù)據(jù)長度并且表示指定給播放列表文件的名稱的長度。字段name_string具有255字節(jié)的數(shù)據(jù)長度并且表示指定給播放列表文件的名稱。在字段name_string中,從頭開始的由字段name_length表示的字節(jié)長度的區(qū)域被用作有效名稱。當字段值“name_length”是“10”時,從字段name_string的開頭開始的10個字節(jié)被解釋為有效名稱。
字段number_of_PlayLists具有16個字節(jié)的數(shù)據(jù)長度并且表示隨后的PlayList()塊數(shù)。for循環(huán)跟隨在字段number_of_PlayLists之后。For循環(huán)描述相應于字段number_of_playLists的塊PlayList()。塊PlayList()是播放列表其本身。
下面,將描述塊PlayList()的內部結構的例子。塊PlayList()以字段PlayList_data_length開始。字段PlayList_data_length具有32位的數(shù)據(jù)長度并且表示包括字段PlayList_data_length的塊PlayList()的數(shù)據(jù)長度。字段PlayList_data_length之后跟隨著具有15位數(shù)據(jù)長度的字段reserved_for_word_alignment和具有1位的數(shù)據(jù)長度的標記capture_enable_flag_PlayList。字段reserved_for_word_alignment以及具有1位的數(shù)據(jù)長度的標記capture_enable_flag_PlayList在塊PlayList()中以16位排列數(shù)據(jù)。
標記capture_enable_flag_PlayList是表示屬于含有標記capture_enable_flag_PlayList的塊PlayList()的移動圖像是否允許被二次使用的標記。當標記capture_enable_flag_PlayList的值是例如“1”時,它表示屬于PlayList()的移動圖像允許在播放器中被二次使用。
在前述的例子中,標記cpature_enable_flag_PlayList具有1位的數(shù)據(jù)長度。替代地,標記capture_enable_flag_PlayList具有多個位的數(shù)據(jù)長度,其描述多個二次使用允許級。例如,標記capture_enable_flag_PlayList具有2位的數(shù)據(jù)長度。在這種情況下,當標記值為“0”時,優(yōu)選地可以不禁止二次使用移動圖像。當標記的值是“1”時,允許移動圖像在以下的情況中被二次使用,其中移動圖像是以預定分辨率或者低于如64像素×64行的分辨率壓縮編碼形成的。當標記的值是“2”時,優(yōu)選地可允許沒有任何限制地二次使用移動圖像??商娲?,當標記的位0的值是“0”時,可允許移動圖像在內容再現(xiàn)應用中被二次使用。當標記的位1的值是“1”時,可允許移動圖像在電影播放器中的另一個應用(例如,墻紙圖像或者屏幕保護程序)中被二次使用。在這種情況下,標記的位0和位1值可以被結合使用。
字段PlayList_name_length具有8位的數(shù)據(jù)長度并且表示指定給塊PlayList()的名稱長度。字段PlayList_name_string具有255位的數(shù)據(jù)長度并且表示指定給塊PlayList()的名稱。在字段PlayList_name_string中,從頭開始的由字段PlayList_name_string表示的字節(jié)長度的區(qū)域被用作有效名稱。
字段number_of_PlayItems具有16位的數(shù)據(jù)長度并且表示隨后的PlayItem()塊數(shù)。字段number_of_PlayItem之后是for循環(huán)。For循環(huán)描述對應于字段number_of_PlayItems的塊PlayItem()。塊PlayItem()是播放項本身。
給塊PlayList的塊PlayItem()指定標識信息(ID)。例如,在塊PlayList()的開始處所描述的塊PlayItem()被指定為例如0。以出現(xiàn)的順序將連續(xù)的號如1,2等指定給塊PlayItem()。連續(xù)號初用作塊PlayItem()的標識信息。對于塊PlayItem()重復的for循環(huán)中的變元i能被用作塊PlayItem()的標識信息。塊PlayItem()之后是塊PlayListMark()。
下面,參照圖20,將描述塊PlayItem()的內部結構的例子。塊PlayItem()以字段length開始。字段length具有16位的數(shù)據(jù)長度并表示塊PlayItem()的長度。字段length后面是字段Clip_Information_file_name_length。字段Clip_Information_file_name_length具有16位數(shù)據(jù)長度并且表示對應于塊PlayItem()的剪輯信息文件的名稱長度。字段Clip_Information_file_name具有以字節(jié)表示的可變數(shù)據(jù)長度并且表示對應于塊PlayItem()的剪輯信息文件的名稱。在字段Clip_Information_file_name中,從頭開始的由由字段Clip_Information_file_name表示的字節(jié)長度的區(qū)域用作有效名稱。當由字段Clip_Information_fil_ename指定剪輯信息文件時,根據(jù)文件名的上述關系可識別相應于剪輯信息文件的剪輯AV流文件。
字段IN_time以及字段OUT_time每個具有33位的數(shù)據(jù)長度。字段IN_time以及字段OUT_time是指定剪輯AV流文件的再現(xiàn)開始部分以及再現(xiàn)結束部分的時間信息,該剪輯AV流文件相應于由塊PlayItem()中的字段Clip_Information_ille_name指定的剪輯信息文件。利用字段IN_time和字段OUT_time的信息,能指定除剪輯AV流文件的開頭之外的再現(xiàn)開始位置。同樣,利用字段IN_time和字段OUT_time的信息,能指定除剪輯AV流文件的末尾之外的再現(xiàn)結束位置。字段reserved_for_word_alignment是使數(shù)據(jù)結構的數(shù)據(jù)長度變?yōu)?6位的倍數(shù)的調整字段。字段reserved_for_word_alignment具有15位的數(shù)據(jù)長度。
下面,將參照圖21來描述塊PlayListMark()的內部結構的例子。塊PlayListMark()以字段length開始。字段length具有32位的數(shù)據(jù)長度并且表示塊PlayListMark()的長度。字段length之后是字段number_of_PlayList_marks。字段number_of_PlayList_marks具有16位的數(shù)據(jù)長度并且表示Mark()的塊數(shù)。字段number_of_PlayList_marks之后是for循環(huán)。該for循環(huán)描述對應于字段number_of_PlayList_marks的塊Mark()。
下面,將描述塊Mark()的內部結構的例子。塊Mark()以字段mark_type開始。字段mark_type具有8位的數(shù)據(jù)長度并且表示包括字段mark_type的塊Mark()的類型。根據(jù)本發(fā)明的這個實施例,如圖22所示,定義兩種類型的標志,章節(jié)標志和事件標志。章節(jié)是劃分播放列表(塊PlayList())的搜索單元。章節(jié)標志利用時間信息表示章節(jié)位置。事件標志是使事件發(fā)生的標志。
字段mark_name_length具有8位的數(shù)據(jù)長度并且表示指定給塊Mark()的名稱的長度。在塊Mark()最后一行的字段mark_name_string表示指定給塊Mark()的名稱。在字段mark_name_string中,從頭開始的由字段mark_name_length表示的字節(jié)長度的區(qū)域被用作有效名稱。
字段ref_to_PlayItem_id、字段mark_time_stamp、字段entry_ES_stream_id以及字段entry_ES_private_stream_id這四個元素通過剪輯AV流文件與定義在塊PlayList()中的塊Mark()相互關聯(lián)。換句話說,字段ref_to_PlayItem_id具有16位的數(shù)據(jù)長度并且表示塊PlayItem( )的標識信息。因此,字段ref_to_PlayItem_id標識剪輯信息文件和剪輯AV流文件。
字段mark_time_stamp具有33位的數(shù)據(jù)長度并且在剪輯AV流文件中指定一個標志的時間。下面,參照圖23,字段mark_time_stamp將被簡要描述。在圖23中由數(shù)字0、1和2指定的三個播放項(PlayItem(#0)、PlayItem(#1)、PlayItem(#2))組成播放列表。假定播放列表的時間t0被包括在播放項1(PlayItem(#1))中。另外,假定播放項0、1和2分別通過剪輯信息文件對應于剪輯AV流文件的節(jié)目流A、B和C。
在這種情況下,當把標志指定給播放列表的時間t0時,字段ref_to_PlayItem_id的值是“1”,其表示播放項包括時刻t0。另外,與相應的剪輯AV流文件中的時刻t0相對應的時間被描述在字段mark_time_stamp中。返回圖21的描述,字段mark_time_stamp之后是字段entry_ES_stream_id以及字段entry_ES_private_stream_id。字段entry_ES_stream_id以及字段entry_ES_private_stream_id每個具有8位的數(shù)據(jù)長度。當塊Mark()與預定基本流相互關聯(lián)時,字段entry_ES_stream_id和字段entry_ES_private_stream_id識別該基本流。字段entry_ES_stream_id和字段entry_ES_priva_stream_id分別表示其中的基本流被多路復用的包(packet())的流ID(stream_id)和專用包首部(private_packet_header())的專用流ID(private_stream_id)。
包(packet())的流ID(stream_id)和專用包首部(private_packet_header())的專用流ID(private_stream_id)是基于例如MPEG2系統(tǒng)的節(jié)目流上的規(guī)定的。
當剪輯AV流#0的章節(jié)結構不同于剪輯AV流#1的章節(jié)結構時,使用字段entry_ES_stream_id和字段entry_ES_private_stream_id。當塊Mark()與預定基本流不相關時,這兩個字段的值是“0”。
下面,參照圖24到圖28,將描述剪輯信息文件的內部結構。如上所述,剪輯信息文件“XXXXX.CLP”描述放置在目錄“STREAM”下的相應剪輯AV流文件“XXXXX.PS”的特征等。
圖24示出了表示剪輯AV流文件“XXXXX.CLP”的總體結構的語法的例子。剪輯AV流文件“XXXXX.CLP”以字段presentation_start_time和字段presentation_end_time開始。字段presentation_start_time和字段presentation_end_time中的每個具有33位的數(shù)據(jù)長度并且表示相應的剪輯AV流文件的開始和結束的時間。作為時間信息,可以使用MPEG2系統(tǒng)的放映時間戳(PTS)。PTS具有90kHz的精度。
字段presentation_start_time和字段presentation_end_time之后是具有7位的數(shù)據(jù)長度的字段reserved_for_word_alignment和具有1位的數(shù)據(jù)長度的標記capture_enable_flag_Clip。字段reserved_for_word_alignment和具有1位的數(shù)據(jù)長度的標記capture_enable_flag_Clip在文件“XXXXX.CLP”中以16位排列數(shù)據(jù)。標記capture_enable_flag_Clip是表示包含在相應于文件“XXXXX.CLP”的剪輯AV流文件中的移動圖像是否允許被二次使用的標記。例如,當標記capture_enable_flag_Clip的值是例如“1”時,表示相應于文件“XXXXX.CLP”的剪輯AV流文件的移動圖像允許在視頻播放器中被二次使用。
字段number_of_streams具有8位的數(shù)據(jù)長度并且表示隨后的StreamInfo()塊數(shù)。字段number_of_streams之后是for循環(huán)。該for循環(huán)描述相應于字段number_of_streams的塊StreamInfo()。該for循環(huán)之后是塊EP_map()。
下面,將描述塊StreamInfo()的內部結構的例子。塊StreamInfo()以字段length開始。字段length具有16位的數(shù)據(jù)長度并且表示塊StreamInfo()的長度。字段length之后是每個具有8位的數(shù)據(jù)長度的字段stream_id和字段private_stream。如圖25所示,塊StreamInfo()與基本流相互關聯(lián)。在圖25所示的例子中,當塊StreamInfo()的字段stream_id的值是在從“0xE0”到“oxEF”的范圍內時,塊StreamInfo()是與視頻流相互關聯(lián)的。當塊StreamInfo()的字段stream_id的值是“0xBD”時,塊StreamInfo()是與自適應變換聲音編碼(ATRAC)音頻流、線性脈沖碼調制(LPCM)音頻流,或者字幕流相互關聯(lián)的。當塊StreamInfo()的字段private_stream_id的值是在從“0x00”到“0x0F”、從“0x10”到“0x1F”和從“0x80”到“0x9F”的范圍內時,塊StreamInfo()分別是與ATRAC音頻流、LPCM音頻流以及字幕流相互關聯(lián)的。
在圖25中,“0x”表示十六進制符號。這個符號應用在下面描述中。
塊StreamInfo()主要描述兩種類型的信息,第一種類型在流中沒有變化,第二種類型在流中變化。在流中沒有變化的信息被描述在塊StaticInfo()中,而在流中變化的信息被以時間信息指定的改變點在塊DynamicInfo()中描述。
塊StaticInfo()以具有8位的數(shù)據(jù)長度的字段reserved_for_word_alignment開始。字段reserved_for_word_alignment在塊StreamInfo()中以1個字節(jié)排列數(shù)據(jù)。字段reserved_for_word_alignment之后是字段number_of_DynamicInfo。字段number_of_DynamicInfo具有8位的數(shù)據(jù)長度并且表示隨后的DynamicInfo()的塊數(shù)。字段number_of_DynamciInfo之后是for循環(huán)。該For循環(huán)描述相應于字段number_of_DynamicInfo而重復的字段pts_change_point和塊DynamicInfo()。
字段pts_change_point具有33位的數(shù)據(jù)長度并且表示在該時間利用PTS使塊DynamicInfo()的信息變成有效的時間。每個流開始的時間由字段pts_change_point表示并且等于被定義在文件“XXXXX.CLP”中的字段presentation_start_time。
下面,將參照圖26來描述塊StaticInfo()的內部結構的例子。塊StaticInfo()的內容取決于相應的基本流的類型。相應的基本流的類型能被如圖25所示的字段stream_id和字段private_stream_id的值識別。圖26使用if語句示出了其內容根據(jù)基本流的類型而改變的塊StaticInfo(),該基本流是視頻流、音頻流或者字幕流。下面,將根據(jù)基本流的類型來描述塊StaticInfo()。圖26使用if語句示出了塊StaticInfo(),其表示基本流的類型是視頻流,音頻流,或者是字幕流。下面,將根據(jù)基本流的類型來描述塊StaticInfo()。
當基本流是視頻流時,塊StaticInfo()是由具有4位數(shù)據(jù)長度的字段picture_size,具有4位數(shù)據(jù)長度的字段frame_rate,以及1位數(shù)據(jù)長度的標記cc_flag組成的。字段picture_size和字段frame_rate表示視頻流的圖像大小以及幀頻率。標記cc_flag表示視頻流是否包含一個閉合字幕。當標記cc_flag的值是例如“1”時,該視頻流包含一個閉合字幕(closed_caption)。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。
當基本流是音頻流時,塊StaticInfo()是由具有16位數(shù)據(jù)長度的字段audio_language_code,具有8位數(shù)據(jù)長度的字段channel_configuration,具有1位數(shù)據(jù)長度的標記lfe_existance,以及具有4位數(shù)據(jù)長度的字段sampling_frequeny組成的。字段audio_language_code表示包含在音頻流中的語言碼。字段channel_configuration表示如單聲道、立體聲、多通道等的音頻數(shù)據(jù)通道屬性。字段lfe_existance表示音頻流是否包含低頻重音通道。當字段lfe_existance的值是例如“1”時,音頻流包含低頻重音通道。字段sampling_frequency表示音頻數(shù)據(jù)的采樣頻率。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。
當基本流是字幕流時,塊StaticInfo()是由具有16位的數(shù)據(jù)長度的字段subtitle_language_code和具有1位數(shù)據(jù)長度的標記configurable_flag組成的。字段subtitle_language_code表示包含在字幕流中的語言碼。標記configurable_flag表示是否允許改變所顯示的字幕流的字符的大小和位置。當標記configurable_flag的值是例如“1”時,表示所顯示的字幕流的字符的大小和位置允許被改變。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。
下面,將參照圖27來描述塊DynamicInfo()的內部結構的例子。塊DynamicInfo()以具有8位數(shù)據(jù)長度的字段reserved_for_word_alignment開始。位于字段reserved_for_word_alignment之后的元素取塊于基本流的類型?;玖鞯念愋湍軌蛲ㄟ^參照圖25描述的字段stream_id和字段private_stream_id的值來識別。圖27使用一個if語句示出了其內容根據(jù)基本流的類型而改變的塊DynamicInfo(),該基本流是視頻流、音頻流或者字幕流。下面,將根據(jù)基本流的類型描述塊DynamicInfo()。
當基本流是一個視頻流時,塊DynamicInfo()是由具有4位數(shù)據(jù)長度的字段display_aspect_ratio組成的。字段display_aspect_ratio表示視頻數(shù)據(jù)的顯示輸出的寬高比是16∶9還是4∶3。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。
當基本流是一個音頻流時,塊DynamicInfo()是由具有4位數(shù)據(jù)長度的字段channel_assignment組成的。當音頻流是由雙通道組成的時,字段channel_assignment表示輸出是立體聲還是雙單聲道。雙單聲道是用于再現(xiàn)例如雙語音頻數(shù)據(jù)的。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。
當基本流是字幕流時,塊DynamicInfo()是由字段reserved_for_word_alignment組成的。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。換句話說,關于字幕流,塊DynamicInfo()沒有定義動態(tài)改變的屬性。
下面,將參照圖28來描述塊EP_map()的內部結構的例子。塊EP_map()利用時間信息和位置信息來表示每個基本流的位流的有效解碼起始位置,(被稱為入口點或者隨機存取點(RAP))。位置信息可以是對在其上記錄有基本流的記錄介質的最小存取單元。能從由塊EP_map()表示的位置開始解碼每個基本流。
由于一個固定速率流的有效解碼起始位置能被計算出來,所以不需要如塊EP_map()的信息。另一方面,對于可變速率流和其數(shù)據(jù)大小在每個存取單元中改變的流,如根據(jù)MPEG視頻壓縮編碼系統(tǒng)的流,塊EP_map()是隨機存取數(shù)據(jù)必需的重要信息。
塊EP_map()以具有8位數(shù)據(jù)長度的字段reserved_for_word_alignment開始。字段reserved_for_word_alignment以16位排列數(shù)據(jù)。字段reservedf_or_word_alignment之后是字段number_of_stream_id_entries。字段number_of_stream_id_entries具有8位的數(shù)據(jù)長度并且表示在塊EP_map()中描述的基本流數(shù)。第一個for循環(huán)描述相應于字段number_of_stream_id_entries而重復的字段stream_id、字段private_stream_id以及字段number_of_EP_entries。在第一個for循環(huán)中的第二個for循環(huán)描述相應于字段number_of_EP_entries而重復的字段PTS_EP_start和字段RPN_EP_start。
第一個for循環(huán)描述每個具有8位數(shù)據(jù)長度的字段stream_id和字段private_stream_id并且識別如圖25所示的基本流的類型。字段stream_id和字段private_stream_id之后是字段number_of_EP_entries。字段number_of_EP_entries具有32位的數(shù)據(jù)長度并且表示在基本流中描述的入口點數(shù)。第二個for循環(huán)描述相應于字段number_of_EP_entries而重復的字段PTS_EP_start和RPN_EP_start。
字段PTS_EP_start和字段RPN_EP_start每個具有33位的數(shù)據(jù)長度并表示入口點本身。字段PTS_EP_start利用PTS表示剪輯AV流文件中的入口點的時間。另一方面,字段RPN_EP_start表示在2048字節(jié)單元中的剪輯AV流文件中的入口點位置。
根據(jù)本發(fā)明的這個實施例,作為盤存取單元的一個扇區(qū)是2048字節(jié)。因此,字段RPN_EP_start表示扇區(qū)中的剪輯AV流文件的入口點位置。
在包private_stream_2之后即刻就是視頻流的有效再現(xiàn)起始位置。包private_stream_2是包含能被用于解碼視頻流的信息的包。因此,視頻流的入口點位置是包含包private_stream_2的包pack()的位置。
塊EP_map與剪輯AV流的時間和剪輯AV流文件的位置相關。因此,利用剪輯AV流的存取點的時間信息(時間戳),能容易地搜索剪輯AV流文件以找到讀出數(shù)據(jù)的數(shù)據(jù)地址。結果,盤能被隨機地平穩(wěn)讀取。
根據(jù)本發(fā)明的這個實施例,在塊EP_map()中,對每個基本流的時間信息和位置信息的設置(在第二個for循環(huán)中對字段PTS_EP_start和字段RPN_EP_start進行設置)被以升序(降序)預先登記。換句話說,已經按預定方向重新排列了時間信息和位置信息。因此,能夠對數(shù)據(jù)執(zhí)行二進位的搜索。
根據(jù)本發(fā)明的這個實施例,如上所述,視頻數(shù)據(jù)的基本流是根據(jù)MPEG2-Video標準的基本流。然而本發(fā)明的這個實施例不局限于這個例子。例如,視頻數(shù)據(jù)的基本流可以是按照MPEG4-Visual標準或者MPEG4-AVC標準的基本流。同樣地,根據(jù)本發(fā)明的這個實施例,如上所述,音頻數(shù)據(jù)的基本流是根據(jù)ATRAC音頻流的基本流。然而,本發(fā)明的這個實施例不限于這樣的一個例子。代替地,音頻數(shù)據(jù)的基本流可以是根據(jù)如MPEG1/2/4的音頻系統(tǒng)的基本流。
7.盤再現(xiàn)裝置下面,將描述根據(jù)本發(fā)明一個實施例的盤再現(xiàn)裝置。圖29示出了根據(jù)本發(fā)明一個實施例的盤再現(xiàn)裝置100的結構的一個例子。連接到總線111的是中央處理單元(CPU)112、存儲器113、驅動接口114、輸入接口115、視頻解碼器116、音頻解碼器117、視頻輸出接口118、和音頻輸出接口119。盤再現(xiàn)裝置100的每一個部分能夠通過總線111與其它部分交換視頻流、音頻流、各種指令、數(shù)據(jù)等。
此外,盤驅動器102連接到驅動器接口114。盤驅動器102通過驅動器接口114與總線111交換數(shù)據(jù)和指令。
CPU 112具有只讀存儲器(ROM)和隨機訪問存儲器(RAM)(未示出)。CPU 112根據(jù)預先存儲在ROM中的程序和數(shù)據(jù)通過總線111與盤再現(xiàn)裝置100的每一個部分交換數(shù)據(jù)和指令,并且控制整個盤再現(xiàn)裝置100。所述RAM用作CPU 112的工作存儲器。
盡管在圖29中進行了省略,盤再現(xiàn)裝置100也可以具有非易失性存儲器,如能夠重寫數(shù)據(jù)并且在盤再現(xiàn)裝置100的電源被關掉后能夠保持數(shù)據(jù)的閃速存儲器。所述非易失性存儲器連接到例如總線111,使得CPU 112將數(shù)據(jù)寫到非易失性存儲器上并且從非易失性存儲器讀取數(shù)據(jù)。
供給到輸入接口115的是從輸入裝置輸入的輸入信號,使用所述輸入裝置用戶能夠執(zhí)行輸入操作。輸入裝置例如是遙控指令器,利用該遙控指令器,用戶通過使用例如紅外信號和布置在盤再現(xiàn)裝置100上的鍵遙控地操作盤再現(xiàn)裝置100。輸入接口115將從輸入裝置提供的輸入信號轉換成用于CPU 112的控制信號并且輸出該控制信號。
以圖18到圖28所示的格式記錄在盤101上的是播放列表、腳本程序、剪輯信息文件、剪輯AV流文件等。當將盤101裝入盤驅動器102時,盤驅動器100自動或者根據(jù)用戶的輸入操作從盤101再現(xiàn)它們。從盤101讀出的腳本文件、播放列表文件和剪輯信息文件被提供給CPU 112并且存儲在例如CPU 112的RAM中。CPU 112根據(jù)存儲在RAM中的數(shù)據(jù)和腳本程序從盤101讀取剪輯AV流文件。
從盤101讀出的剪輯AV流文件暫時存儲在存儲器113中。視頻解碼器116根據(jù)從CPU 112接收到的指令對存儲在存儲器113中的剪輯AV流文件的視頻流和字幕流進行解碼。CPU 112執(zhí)行圖像處理,如對解碼后的視頻數(shù)據(jù)和字幕數(shù)據(jù)的放大處理或者縮小處理,對視頻流和字幕流的合成處理或者相加處理等圖像處理,并且CPU 112獲得一個視頻數(shù)據(jù)流。圖像處理可以由視頻解碼器116和視頻輸出接口118執(zhí)行。視頻數(shù)據(jù)在存儲器113中被緩沖并且被提供給視頻輸出接口118。視頻輸出接口118將所提供的視頻數(shù)據(jù)轉換成模擬視頻信號并且將模擬視頻信號提供給視頻輸出終端120。
同樣地,音頻解碼器117根據(jù)從CPU 112接收到的指令解碼存儲在存儲器113中的剪輯AV流文件的音頻流。解碼的音頻數(shù)據(jù)在存儲器113中被緩沖并且被提供給音頻輸出接口119。音頻輸出接口119將所提供的音頻數(shù)據(jù)轉換成例如模擬音頻信號并且將模擬音頻信號提供給音頻輸出終端121。
在該例子中,圖29中示出的每一部分由獨立的硬件構成。然而,本發(fā)明的這個實施例不局限于這個例子。換句話說,所述視頻解碼器116和/或音頻解碼器117可以由在CPU 112上運行的軟件構成。
盤再現(xiàn)裝置100具有CPU 112和存儲器并且根據(jù)程序工作。因此,可以認為盤再現(xiàn)裝置100是一種計算機裝置。
圖30是詳細描述圖29中示出的盤再現(xiàn)裝置100的操作的功能框圖。盤再現(xiàn)裝置100主要由操作系統(tǒng)201和視頻內容現(xiàn)現(xiàn)部分210組成。視頻內容再現(xiàn)部分210基本上是在操作系統(tǒng)201上運行的軟件程序。代替性地,視頻內容再現(xiàn)部分210可以由整體運行的軟件和硬件組成。在下面的描述中,假定視頻內容再現(xiàn)部分210由軟件構成。在圖30中,省略了盤驅動器102。
當盤再現(xiàn)裝置100的電源接通時,操作系統(tǒng)201最先啟動CPU 112并執(zhí)行必要的處理,如每一部分的初始化設置,并且從ROM讀取應用程序(在這個例子中,該程序是視頻內容再現(xiàn)部分210)。當視頻內容再現(xiàn)部分210正在運行時,操作系統(tǒng)201將諸如從盤101讀取文件和對文件系統(tǒng)進行解釋的基本服務提供給視頻內容再現(xiàn)部分210。例如,相應于從視頻內容再現(xiàn)部分210提供的讀文件請求,操作系統(tǒng)201通過驅動接口114控制盤驅動器102,并且從盤101讀出數(shù)據(jù)。從盤101讀取的數(shù)據(jù)在操作系統(tǒng)201的控制下供給到視頻內容再現(xiàn)部分210。
操作系統(tǒng)201具有實際上并行地分時控制多個軟件模塊的多任務處理功能。換句話說,組成如圖30所示的視頻內容再現(xiàn)部分210的每一個模塊能夠由操作系統(tǒng)201的多任務處理功能并行地操作。
下面將更具體地描述視頻內容再現(xiàn)部分210的操作。視頻內容再現(xiàn)部分210具有其它幾個內部模塊并且實現(xiàn)下面的功能。
(1)視頻內容再現(xiàn)部分210確定所裝入的盤101是不是一個根據(jù)UMD視頻標準的盤(下文這個盤被稱作UMD視頻盤)。
(2)當所確定的結果表示所裝入的盤101是UMD視頻盤時,視頻內容再現(xiàn)部分210從盤101讀取源文件并且將腳本文件供給到腳本控制模塊211。
(3)當所確定的結果表示所裝入的盤101是UMD視頻盤時,視頻內容再現(xiàn)部分210還讀取構成數(shù)據(jù)庫的文件(即播放列表文件、剪輯信息文件等)并且將所述文件提供給播放器控制模塊212。
下面將描述視頻內容再現(xiàn)部分210的模塊的操作。
腳本控制模塊211將接收到的源文件存儲到例如CPU 112的RAM(未示出)的預定區(qū)域。CPU 112(腳本控制模塊211)從RAM讀取源文件、解釋源文件并且執(zhí)行它??商娲兀梢詫⒃次募鎯υ诖鎯ζ?13的預定區(qū)中,并且當需要時將源文件寫到CPU 112的RAM(未示出)中。
如在播放器模型中描述的,產生和輸出菜單屏的圖像、相應于用戶的輸入移動光標以及改變菜單屏的GUI是由根據(jù)腳本程序而進行控制的圖形處理模塊219實現(xiàn)的。這里,利用被包含在存儲于存儲器113的源文件的圖像數(shù)據(jù)和聲音數(shù)據(jù),產生了菜單屏等。通過執(zhí)行腳本程序,腳本控制模塊211能夠控制播放器控制模塊212。
播放器控制模塊212參考包含在從盤101中讀出的文件,諸如播放列表文件“PLAYLIST.DAT”和剪輯信息文件“XXXXX.CLP”的數(shù)據(jù)庫信息,并且執(zhí)行下面的控制以從盤101再現(xiàn)視頻內容。
(1)播放器控制模塊212分析如播放列表和剪輯信息的數(shù)據(jù)庫信息。
(2)播放器控制模塊212控制內容數(shù)據(jù)供應模塊213、解碼控制模塊214和緩沖控制模塊215。
(3)播放器控制模塊212執(zhí)行如播放狀態(tài)、停止狀態(tài)和暫停狀態(tài)的播放器狀態(tài)改變控制,以及根據(jù)從腳本控制模塊211或者輸入接口115接收到的指令執(zhí)行如流改變的再現(xiàn)控制處理。
(4)播放器控制模塊212獲得正從解碼控制模塊214再現(xiàn)的視頻流的時間信息,顯示時間并且產生標志事件。
內容數(shù)據(jù)供應模塊213根據(jù)從播放器控制模塊212接收到的指令從盤101讀取如剪輯AV流文件的內容數(shù)據(jù)并且將內容數(shù)據(jù)提供給緩沖控制模塊215。緩沖控制模塊215將內容數(shù)據(jù)作為緩沖器的內容(substance)21SA存儲在存儲器113中。內容數(shù)據(jù)供應模塊213控制緩沖控制模塊215以根據(jù)來自它的請求將存儲在存儲器113中的內容數(shù)據(jù)提供給視頻解碼器控制模塊216、音頻解碼器控制模塊217和字幕解碼器控制模塊218。此外,內容數(shù)據(jù)供應模塊213從盤101讀取內容數(shù)據(jù),使得在緩沖控制模塊215的控制下所存儲的內容數(shù)據(jù)達到預定的數(shù)量。
解碼控制模塊214根據(jù)從播放器控制模塊212接收到的指令控制視頻解碼器控制模塊216、音頻解碼器控制模塊217和字幕解碼器控制模塊218的運行。解碼控制模塊214具有內部時鐘功能并且控制視頻解碼器控制模塊216、音頻解碼器控制模塊217和字幕解碼器控制模塊218的操作,使得視頻數(shù)據(jù)和音頻數(shù)據(jù)同步輸出。
緩沖控制模塊215專門使用存儲器113的一部分作為緩沖器的內容215A。緩沖控制模塊215存儲數(shù)據(jù)開始指針和數(shù)據(jù)寫指針。緩沖控制模塊215也具有作為內部模塊的視頻讀取功能、音頻讀取功能和字幕讀取功能。視頻讀取功能具有視頻讀取指針。所述視頻讀取功能具有將信息au_information()存儲為存取單元信息的寄存器。音頻讀取功能具有音頻讀取指針。字幕讀取功能具有字幕讀取指針和字幕讀取功能標記。字幕讀取功能標記根據(jù)它的值控制字幕讀取功能的允許/禁止。當例如“1”被寫到字幕讀取功能標記上時,允許字幕讀取功能。當例如“0”被寫到字幕讀取功能標記上時,禁止字幕讀取功能。
作為緩沖控制模塊215的內部模塊的視頻讀取功能、音頻讀取功能和字幕讀取功能具有解復用器功能,其對被復用的剪輯AV流進行解復用,所述剪輯AV流中的視頻流、音頻流和字幕流已經被多路復用;并且其獲得視頻流、音頻流和字幕流。根據(jù)本發(fā)明的這個實施例,剪輯AV流由多個基本流組成,所述基本流根據(jù)MPEG2系統(tǒng)節(jié)目流格式被分時多路復用。因此,視頻讀取功能、音頻讀取功能和字幕讀取功能具有用于MPEG2系統(tǒng)節(jié)目流的解復用器功能。
因此,視頻讀取功能讀取放置在視頻流的預定位置的字段stream_id(參見圖25)的值并且保存該值。同樣地,音頻讀取功能和字幕讀取功能讀取字段stream_id和字段private_stream_id(參見圖25)的值并且保存所述值。使用字段stream_id和字段private_stream_id的值對所提供的比特流進行分析。
視頻解碼器控制模塊216使得緩沖控制模塊215的視頻讀取功能從存儲器113讀取視頻流的一個視頻存取單元并且將該視頻存取單元提供給視頻解碼器116。視頻解碼器控制模塊216控制視頻解碼器116對以存取單元提供給視頻解碼器116的視頻流進行解碼,并且產生視頻數(shù)據(jù)。將所述視頻數(shù)據(jù)提供給圖形處理模塊219。
同樣地,音頻解碼器控制模塊217使緩沖控制模塊215的音頻讀取功能從存儲器113讀取音頻流的一個音頻存取單元并且將該音頻流單元提供給音頻解碼器117。根據(jù)本發(fā)明的這個實施例,組成音頻流的存取單元(音頻幀)具有預定的固定長度。音頻解碼器控制模塊217控制音頻解碼器117對以存取單元提供給的音頻解碼器117的音頻流進行解碼,并且產生音頻數(shù)據(jù)。將所述音頻數(shù)據(jù)提供給音頻輸出模塊242。
字幕解碼器控制模塊218使緩沖控制模塊215的字幕讀取功能從存儲器113讀取字幕流的一個字幕存取單元,并且將該字幕存取單元提供給字幕解碼器控制模塊218。根據(jù)本發(fā)明的這個實施例,組成字幕流的字幕存取單元在開頭包含長度信息。字幕解碼器控制模塊218具有能夠解碼所提供的字幕流并且產生字幕圖像數(shù)據(jù)的字幕解碼功能。將字幕圖像數(shù)據(jù)提供給圖形處理模塊219。
如上所述,在視頻解碼器控制模塊216的控制下由視頻解碼器116解碼出的視頻數(shù)據(jù)和由字幕解碼器控制模塊218解碼出的字幕圖像數(shù)據(jù)被提供給圖形處理模塊219。圖形處理模塊219以預定方式給所提供的視頻數(shù)據(jù)增加字幕圖像數(shù)據(jù),并且產生被輸出的視頻信號。圖形處理模塊219根據(jù)從腳本控制模塊211和播放器控制模塊212接收到的指令產生菜單圖像和消息圖像,并且利用所輸出的視頻信號將它們覆蓋起來。
例如,圖形處理模塊219對于提供的字幕圖像數(shù)據(jù)執(zhí)行放大處理和縮小處理,并且根據(jù)從腳本控制模塊211接收到的指令以預定的方式將處理過的圖像數(shù)據(jù)加到視頻數(shù)據(jù)上。
此外,圖形處理模塊219根據(jù)預定的視頻輸出裝置的寬高比和在從盤101再現(xiàn)的內容中標明的輸出寬高比對輸出信號的寬高比進行轉換。當視頻輸出裝置的寬高比是16∶9并且輸出寬高比也是16∶9時,圖形處理模塊219直接輸出視頻數(shù)據(jù)。當視頻輸出裝置的寬高比是16∶9而輸出寬高比是4∶3時,圖形處理模塊219執(zhí)行將圖像的高度與視頻輸出裝置的屏幕的高度相匹配的擠壓(縮小)處理,將黑色部分插入圖像的左邊和右邊,并且輸出合成的圖像。當視頻輸出裝置的寬高比是4∶3并且輸出寬高比為是4∶3時,圖形處理模塊219直接輸出視頻數(shù)據(jù)。當視頻輸出裝置的寬高比是4∶3而輸出寬高比是16∶9時,圖形處理模塊219執(zhí)行將圖像的寬度與視頻輸出裝置的屏幕的寬度相匹配的擠壓處理,將黑色部分插入圖像的上部和下部區(qū)域,并且輸出合成的圖像。
圖形處理模塊219根據(jù)來自播放器控制模塊212的請求還執(zhí)行捕捉正在被處理的視頻信號的處理并且將所請求的視頻信號提供給播放器控制模塊212。
視頻輸出模塊241專門使用存儲器113的一部分作為先進先出(FIFO)緩沖器。視頻輸出模塊241暫時在緩沖器中存儲由圖形處理模塊219處理的視頻數(shù)據(jù)并且以預定的定時從那里讀取視頻數(shù)據(jù)。從緩沖器讀取的視頻數(shù)據(jù)被從視頻輸出接口118輸出。
音頻輸出模塊242專門使用存儲器113的一部分作為FIFO緩沖器。音頻輸出模塊242存儲從音頻輸出接口119輸出到緩沖器的音頻數(shù)據(jù)并且以預定的定時從那里讀取音頻數(shù)據(jù)。從緩沖器讀取的音頻數(shù)據(jù)被從音頻輸出接口119輸出。
當內容的音頻模式是雙單聲道時(例如,兩種語言),音頻輸出模塊242根據(jù)預定音頻輸出模式輸出音頻數(shù)據(jù)。當音頻輸出模式是“主音頻”時,音頻輸出模塊242復制例如存儲器113中的左通道音頻數(shù)據(jù)并且輸出左通道的音頻數(shù)據(jù)和存儲器113的音頻數(shù)據(jù)。因此,音頻輸出模塊242輸出僅左通道的音頻數(shù)據(jù)。當音頻輸出模式是“子音頻”時,音頻輸出模塊242復制例如存儲器113中的右通道的音頻數(shù)據(jù)并且輸出右通道的音頻數(shù)據(jù)和存儲器113的音頻數(shù)據(jù)。因此,音頻輸出模塊242輸出僅右通道的音頻數(shù)據(jù)。當音頻輸出模式是“主和子音頻”或者內容是立體聲時,音頻輸出模塊242直接地輸出音頻數(shù)據(jù)。
用戶能夠交互式地在例如視頻內容再現(xiàn)部分210產生的菜單屏上設置音頻輸出模式。
非易失性存儲器控制模塊250將數(shù)據(jù)寫到一個區(qū)域并且根據(jù)從播放器控制模塊212接收到的指令從該區(qū)域讀取數(shù)據(jù),其中在該區(qū)域中的數(shù)據(jù)在視頻內容再現(xiàn)部分210的操作完成后不被擦除(該區(qū)域被稱作非易失性區(qū)域)。非易失性存儲器控制模塊250具有存儲多組帶有標題識別ID(Title_ID)的鍵鑰的數(shù)據(jù)Saved_Player_Status和數(shù)據(jù)Saved_Player_Data的功能。非易失性存儲器控制模塊250將播放器控制模塊212所具有的數(shù)據(jù)Backup_Player_Starus存儲為數(shù)據(jù)Saved_Player_Status。數(shù)據(jù)Backup_Player_Status對應于例如播放器控制模塊212的操作完成之前現(xiàn)存的播放器狀態(tài)323B的數(shù)據(jù)。數(shù)據(jù)Saved_Player_Status對應于恢復信息324。此外,非易失性存儲器控制模塊250將播放器控制模塊212具有的數(shù)據(jù)User_Data存儲為數(shù)據(jù)Saved_User_Data。數(shù)據(jù)User_Data是用戶對于播放器控制模塊212設置的預定數(shù)據(jù)。
非易失性存儲器控制模塊250相關地將一組帶有盤101的標題ID的數(shù)據(jù)Saved_Player_Status和數(shù)據(jù)Saved_User_Data存儲在盤再現(xiàn)裝置100的閃速存儲器的預定區(qū)域中。在其中非易失性存儲器控制模塊250存儲數(shù)據(jù)的存儲介質不局限于閃速存儲器,也可以是硬盤等。
8、電影播放器的狀態(tài)改變模式8-1.對電影播放器的狀態(tài)的定義下面將詳細描述根據(jù)本發(fā)明的一個實施例的電影播放器300的狀態(tài)改變模式。根據(jù)本發(fā)明的這個實施例,僅僅定義了電影播放器300的內部狀態(tài)。換句話說,根據(jù)本發(fā)明的這個實施例,電影播放器300的狀態(tài)是基于它的操作和功能而定義的。
更具體而言,關于電影播放器300的操作,從對播放列表進行再現(xiàn)的觀點而言,定義了它的兩種狀態(tài),即電影播放器300處于播放狀態(tài)或者處于停止狀態(tài)。此外,關于電影播放器300的功能,定義了電影播放器300是否從本地執(zhí)行平臺301接收控制指令的兩種狀態(tài)。
圖31概念性地示出了根據(jù)本發(fā)明的這個實施例對電影播放器300的狀態(tài)的定義。首先,根據(jù)電影播放器300的操作將描述它的狀態(tài)。參考圖3,從對播放列表進行再現(xiàn)的觀點來看,電影播放器300處于播放狀態(tài)或者停止狀態(tài)。在播放狀態(tài)中,電影播放器300已經選取了播放列表并且正在再現(xiàn)所選取的播放列表。在停止狀態(tài)中,電影播放器300不再現(xiàn)播放列表。在停止狀態(tài)中,電影播放器300還沒有選取播放列表。換句話說,可以說電影播放器300的重放模塊321正在解碼剪輯AV流的狀態(tài)是播放狀態(tài)而重放模塊321不是正在解碼剪輯AV流的狀態(tài)是停止狀態(tài)。
播放狀態(tài)被細分為幾個狀態(tài)。換句話說,播放狀態(tài)被細分成正向標準速度的標準再現(xiàn)、不是標準速度的可變速正向和反向再現(xiàn)以及暫停。分步正向的再現(xiàn)和分步反向再現(xiàn)是通過交替地執(zhí)行標準再現(xiàn)和暫停來實現(xiàn)的。電影播放器300正在再現(xiàn)播放列表的狀態(tài)與電影播放器300處于播放狀態(tài)含義相同。
下面,對于電影播放器300的功能描述它們的狀態(tài)。對于電影播放器300的功能,它具有電影播放器300從本地執(zhí)行平臺301接收控制指令311的模式(這個模式被稱作標準模式)和電影播放器300忽略控制指令311的模式(這個模式被稱作菜單模式)。電影播放器300的兩個操作模式被定義為它的狀態(tài)。
在標準模式下,電影播放器300的操作能夠由用戶輸入310而不通過腳本層302中的腳本程序來控制。
另一方面,在菜單模式下,電影播放器300并不接收控制指令311。電影播放器300僅僅接收來自腳本層302的方法313。因此,電影播放器300的操作能夠由腳本層302中的腳本程序控制。例如,將用戶輸入310作為來自本地執(zhí)行平臺301的事件314而提供給腳本層302。腳本層302中的腳本程序以對應于鍵事件314的方法313控制電影播放器300的操作。
換句話說,使用菜單模式,內容創(chuàng)建者一方能夠控制電影播放器300的操作。此外,使用菜單模式,采用較少種類的鍵能夠實現(xiàn)各種控制。
因此,電影播放器300關于操作具有兩種狀態(tài),這兩種狀態(tài)是播放狀態(tài)和停止狀態(tài)。此外,電影播放器300關于功能具有兩種模式,這兩種模式是標準模式和菜單模式。因此,在電影播放器300中,定義了作為兩種操作狀態(tài)和兩種功能狀態(tài)的結合的四種狀態(tài)。換句話說,在電影播放器300產生之后直到它被消除,電影播放器300處于這四個狀態(tài)中的一個狀態(tài)。電影播放器300的產生和消除將在后面進行描述。
在該模型中,當使電影播放器300改變現(xiàn)有狀態(tài)為另一個狀態(tài)的方法313被發(fā)出時,電影播放器300根據(jù)方法313快速地將現(xiàn)有狀態(tài)改變?yōu)榱硪粋€狀態(tài)。在實際設備中,在將方法313發(fā)送給電影播放器300之后直到電影播放器300根據(jù)方法313已經改變現(xiàn)有狀態(tài)為另一個狀態(tài)的時間取決于所述裝置的執(zhí)行情況。
當使處于特殊狀態(tài)的電影播放器300改變現(xiàn)有狀態(tài)為相同狀態(tài)的方法313被發(fā)出時,電影播放器300的狀態(tài)沒有改變。例如,當電影播放器300處于標準模式并處于停止狀態(tài)時,即使使電影播放器300改變現(xiàn)有模式和狀態(tài)為標準模式和停止狀態(tài)的方法313被發(fā)出,電影播放器300的現(xiàn)有模式和狀態(tài)也不改變。
暫停狀態(tài)包含在播放狀態(tài)中。為了將電影播放器300的停止狀態(tài)改變?yōu)闀和顟B(tài),使用具有標識暫停的變元值pauseMode的方法play()。
下面將描述作為電影播放器300的兩種狀態(tài)和兩種操作模式的結合的四種狀態(tài)和四種狀態(tài)的狀態(tài)改變。在下面的描述中,電影播放器300的功能模式的標準模式和菜單模式分別叫做“標準”和“菜單”。另一方面,電影播放器300的操作狀態(tài)的播放狀態(tài)和停止狀態(tài)叫做“播放”和“停止”。電影播放器300的模式和狀態(tài)的結合方便地由State{mode,state}表示。在下面的描述中,電影播放器300的狀態(tài)和模式的改變叫做狀態(tài)改變。
如從圖31清晰所示,電影播放器300具有包括從現(xiàn)有狀態(tài)到相同狀態(tài)的狀態(tài)改變的全部16種狀態(tài)改變,即4×4=16種狀態(tài)改變。這些狀態(tài)改變由從腳本層302提供到電影播放器300的方法313執(zhí)行。換句話說,電影播放器300的狀態(tài)改變在電影播放器300的外部執(zhí)行。換句話說,在沒有從腳本層302提供的方法的情況下狀態(tài)改變不會自動在電影播放器300中執(zhí)行。此外,狀態(tài)改變不依照從本地執(zhí)行平臺301提供的控制指令在電影播放器300中執(zhí)行。
根據(jù)本發(fā)明的這個實施例,因為方法313的變元的結合受到限定,不可能執(zhí)行本來以所述方法在電影播放器300中是可行的所有16種狀態(tài)改變。
下面將一個接一個地描述在電影播放器300中是可行的四種狀態(tài),所述四種狀態(tài)是State{Menu,Stop},State{Normal,Stop},State{Menu,Play}和State{Normal,Play}。
(1)State{Menu,Stop}電影播放器300當前沒有再現(xiàn)播放列表(處于停止狀態(tài))并且當前沒有從本地執(zhí)行平臺301接收控制指令311。這個狀態(tài)用于在其上沒有在后臺再現(xiàn)移動圖像的菜單屏等。
為了允許腳本程序安全地控制剛剛已經產生的電影播放器300,電影播放器300不接收來自本地執(zhí)行平臺301的控制指令311是有效的。因此,在電影播放器300產生之后立即處于State{Menu,Stop}。
(2)State{Normal,Stop}電影播放器300當前沒有再現(xiàn)播放列表(處于停止狀態(tài))并且正在從本地執(zhí)行平臺301接收控制指令311。這個狀態(tài)用于當電影播放器300不是正在再現(xiàn)例如移動圖像時。因為在這個狀態(tài)下電影播放器300接收控制指令311,優(yōu)選的,在電影播放器300產生之后即刻不使用這個狀態(tài)。
(3)State{Menu,Play}電影播放器300正在再現(xiàn)播放列表(處于播放狀態(tài))并且當前沒有從本地執(zhí)行平臺301接收控制指令311。這個狀態(tài)用于在其上在后臺正在再現(xiàn)移動圖像的菜單屏等。
(4)State{Normal,Play}電影播放器300正在再現(xiàn)播放列表(處于播放狀態(tài))并且正在從本地執(zhí)行平臺301接收控制指令311。這個狀態(tài)用于電影播放器300正在再現(xiàn)視頻內容的主體部時。
下面將簡要描述產生電影播放器300的模型。例如,當盤再現(xiàn)裝置100的電源被接通且操作系統(tǒng)201被CPU 112啟動時,執(zhí)行如對各個部分進行初始化設置的必要處理。此外,視頻內容再現(xiàn)部分210從ROM中被調用。視頻內容再現(xiàn)部分210由CPU 112來執(zhí)行。結果,產生了電影播放器300。當盤再現(xiàn)裝置100的電源被關斷時,電影播放器300被消除。
電影播放器300被假定為一個隱含對象。因此,對于腳本程序來說沒有必要清楚地產生電影播放器300。
如上所述,在產生了電影播放器300之后,電影播放器300即刻處于菜單模式和停止狀態(tài)(State{Menu,Stop})。在產生了電影播放器300之后,電影播放器300所具有的以下屬性即刻變得不確定。
Property audioFlagProperty audioNumber
Property chapterNumberProperty playListNumberProperty playSpeedProperty subtitleFlagProperty subtitleNumberProperty videoNumber當電影播放器300被初始化時,具有將再現(xiàn)恢復到先前停止位置的“恢復再現(xiàn)功能”的UMD視頻播放器能設置存儲在非易失性存儲器中的值來代替其屬性的默認值。例如,能使用恢復信息324。
8-2.使電影播放器改變狀態(tài)的方法下面將描述使電影播放器300改變現(xiàn)有狀態(tài)為另一個狀態(tài)的方法313。圖32示出了電影播放器300的關于現(xiàn)有狀態(tài){Mode,State}和由方法313改變的狀態(tài){Mode,State}的四個狀態(tài)的組合。如從圖32清楚看到的,如使電影播放器300改變現(xiàn)有狀態(tài)為另一個狀態(tài)的方法313一樣,存在有方法stop()、方法play()和方法resume()。由方法resume()引起的電影播放器300的操作取決于是否存在恢復信息324。
下面將描述方法stop()。方法stop()使電影播放器300與現(xiàn)有模式無關地將現(xiàn)有狀態(tài)改變?yōu)橥V範顟B(tài)。方法stop()具有一個用于模式的變元。帶有一個變元的方法stop()允許電影播放器300將現(xiàn)有的狀態(tài)和模式改變?yōu)橛勺冊付ǖ耐V範顟B(tài)和模式。如將在后面描述的那樣,當滿足特定的條件而執(zhí)行方法stop()時,對播放器狀態(tài)323B進行備份并且將其保存為恢復信息324。
下面將描述方法play()。方法play()使電影播放器300將現(xiàn)有狀態(tài)改變?yōu)椴シ艩顟B(tài)。方法play()可以具有一個用于模式的變元。方法play()允許電影播放器300將現(xiàn)有的狀態(tài)和模式改變?yōu)橛勺冊付ǖ耐V範顟B(tài)和模式。如將在后面描述的那樣,當滿足特定的條件而執(zhí)行方法play()時,對播放器狀態(tài)323B進行備份并且將其保存為恢復信息324。
下面將描述方法resume()。方法resume()是將恢復信息324恢復為播放器狀態(tài)323B和恢復電影播放器300的再現(xiàn)的方法。換句話說,方法resume()使電影播放器300從以恢復信息324表示的位置處恢復再現(xiàn)。當無恢復信息324而執(zhí)行方法resume()時,電影播放器300不改變。
方法resume()電影播放器300對恢復信息324進行恢復的條件如下所述。當執(zhí)行方法resume()時,如果存在恢復信息324且現(xiàn)有狀態(tài)不是State{Normal,Play},那么電影播放器300對恢復信息324進行恢復。換句話說,當執(zhí)行方法resume()時,如果存在恢復信息324且現(xiàn)有狀態(tài)是State{Menu,Stop}、State{Normal,Stop}和State{Menu,Stop}中的一種時,方法resume()使電影播放器300將現(xiàn)有狀態(tài)改變?yōu)镾tate{Normal,Stop}并且恢復該恢復信息324。
方法play()具有多個變元。為了簡化,假定方法play()具有三種類型的變元,它們是變元pauseMode、變元menuMode和變元playListNumber。特別地,為方法play()定義了更多的變元。
變元pauseMode指定播放狀態(tài)下的再現(xiàn)模式。變元pauseMode具有值“Normal”、值“pause”或值“-1”。值“Normal”指定標準正向再現(xiàn)。值“pause”指定暫停。值“-1”指定保持現(xiàn)有再現(xiàn)速度。因此,變元pauseMode指定執(zhí)行方法play()后的電影播放器300的播放狀態(tài)的詳細情況。當指定值“pause”時,顯示由一個變元指定的圖像,并且電影播放器300被暫停。在此情況下,如果沒有由變元指定圖像,那么顯示根據(jù)預定選擇規(guī)則指定的圖像并且電影播放器300被暫停。
變元menuMode指定電影播放器300的模式(標準模式或菜單模式)并且具有值“Normal”、值“Menu”和值“-1”之一。值“Normal”指定標準模式。值“Menu”指定菜單模式。值“-1”指定保持現(xiàn)有模式。
變元playListNumber指定要被再現(xiàn)的播放列表的號。變元playListNumber可以被忽略。在此情況下,不改變當前選定的播放列表。
下面,將參照圖33A到圖33E,描述當執(zhí)行方法play()時電影播放器300的狀態(tài)改變的例子。在圖33A到圖33E中,左側表示電影播放器300的現(xiàn)有狀態(tài)340A,而右側表示在腳本程序發(fā)出方法313使電影播放器300改變現(xiàn)有狀態(tài)340A后改變成的狀態(tài)340B。在狀態(tài)340A和340B下面所表示的是在這些狀態(tài)下已經被指定的播放列表號(PL1和PL2)。
圖33A示出了一個例子,在該情況下,將方法play(x1,Normal,PL2)發(fā)送到處于State{Normal,Stop}的電影播放器300。方法play(x1,Normal,PL2)使電影播放器300以標準模式和以標準速度再現(xiàn)播放列表號為“PL2”的播放列表。電影播放器300已經將State{Normal,Stop}改變?yōu)镾tate{Normal,Play}。
圖33B示出了一個例子,在該情況下,將方法play(x1,Normal,PL2)發(fā)送到處于State{Normal,Play}的電影播放器300,其中在再現(xiàn)播放列表號為“PL1”的播放列表期間電影播放器300處于暫停狀態(tài)。方法play(x1,Normal,PL2)使電影播放器300將現(xiàn)有狀態(tài)改變?yōu)殡娪安シ牌?00開始以標準模式和以標準速度再現(xiàn)播放列表號為“PL2”的播放列表的狀態(tài)。在此情況下,雖然電影播放器300的再現(xiàn)操作從暫停改變?yōu)闃藴实恼蛟佻F(xiàn),但是在發(fā)出方法play(x1,Normal,PL2)之前和之后,狀態(tài)仍然保持在State{Normal,Play}。因此,電影播放器300沒有將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)。
圖33C示出了一個例子,在該情況下,將方法play(-1,-1,PL2)發(fā)送到處于State{Normal,Play}的電影播放器300,其中電影播放器300正在以標準速度正向再現(xiàn)播放列表號為“PL1”的播放列表。方法play(-1,-1,PL2)使電影播放器300將現(xiàn)有狀態(tài)改變?yōu)殡娪安シ牌?00以標準速度以標準模式再現(xiàn)播放列表號為“PL2”的播放列表的狀態(tài)。在此情況下,雖然電影播放器300正在再現(xiàn)的播放列表被改變,但是狀態(tài)仍然保持為State{Normal,Play}。因此,電影播放器300沒有將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)。
圖33D示出了一個例子,在該情況下,將方法play(pause,-1,PL2)發(fā)送到處于State{Normal,Play}的電影播放器300,其中電影播放器300正在以標準速度以正向再現(xiàn)播放列表號為“PL1”的播放列表。方法play(pause,-1,PL2)使電影播放器300選擇播放列表號為“PL2”的播放列表,并且在標準模式中播放列表號為“PL2”的播放列表的開始處暫停。在此情況下,雖然電影播放器300的再現(xiàn)操作從標準正向速度再現(xiàn)改變?yōu)闀和#窃摖顟B(tài)仍然保持在State{Normal,Play}內。因此,電影播放器300沒有將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)。
圖33E示出了一個例子,在該情況下,將方法play(-1,Menu)發(fā)送到處于State{Normal,Play}的電影播放器300,其中在再現(xiàn)播放列表號為“PL1”的播放列表期間電影播放器300暫停。在方法play()中,變元playListNumber被省略。方法play(-1,Menu)使電影播放器300選擇播放列表號為“PL1”的播放列表,并且在菜單模式中在播放列表號為“PL1”的播放列表的開始處暫停。電影播放器300已經將State{Normal,Play}改變?yōu)镾tate{Menu,Stop }。
因此,電影播放器300從腳本程序接收方法play(),電影播放器300執(zhí)行各種操作。在此點上,根據(jù)一個條件,電影播放器300將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)。當內容創(chuàng)建者在腳本程序中以不同變元描述方法play()時,能使電影播放器300完成各種操作。
僅當電影播放器300執(zhí)行從腳本程序接收到的方法play()時,電影播放器300開始再現(xiàn)所選播放列表號的播放列表。當開始再現(xiàn)一個播放列表時,處于停止狀態(tài)的電影播放器300可以開始再現(xiàn)該播放列表,或正在再現(xiàn)該播放列表的電影播放器300可以停止對其的再現(xiàn),選擇一個新的播放列表,并且開始再現(xiàn)該新的播放列表。
當腳本程序將帶有一個變元的方法play()發(fā)送到電影播放器300時,該變元的值被設置為播放器狀態(tài)323B。當方法play()的一個變元被省略時,根據(jù)用于每介參數(shù)的規(guī)則的將缺省值或預定值設置為播放器狀態(tài)323B。
不希望允許按內容創(chuàng)建者不想要的順序來再現(xiàn)播放列表。因此,禁止對應于用戶操作的控制指令311以防止引起以播放列表號再現(xiàn)播放列表。這是根據(jù)本發(fā)明這個實施例的電影播放器300的操作模型的多個特征中的一個。
如果為方法play()的變元值指定一個無效的播放列表和不存在的時間,那么執(zhí)行方法play()將失敗。這意味著腳本程序含有錯誤和違反標準。對這一點上的錯誤處理取決于電影播放器300的實現(xiàn)方式。
下面將對多個播放項的再現(xiàn)進行描述。一旦電影播放器300開始再現(xiàn)一個播放列表,電影播放器300就持續(xù)對其進行再現(xiàn)直到到達了其的末尾。從頭到尾的對播放列表的再現(xiàn)不需要用戶的操作和腳本程序的控制。如在圖34中所示,電影播放器300對組成如在播放列表文件中“PLAYLIST.DAT”(參見附圖19)中指定的播放列表的播放項進行再現(xiàn)。組成播放列表的播放項在沒有事件處理程序控制的情況下被連續(xù)地再現(xiàn)。
電影播放器300在其再現(xiàn)一個播放項之后直到其再現(xiàn)下一個播放項的操作取決于其實現(xiàn)方式,而未被以一種格式來定義。例如,是繼續(xù)顯示播放項的最后一個圖像還是顯示一個黑色圖像取決于電影播放器300的實現(xiàn)方式。然而,當執(zhí)行一個在其中例如將一個播放項的IN點設置為一個隨機存取點(入口點,參見圖28)的創(chuàng)作處理時,兩個播放項的間隔時間可以被盡可能地降低。
8-3.再現(xiàn)播放列表期間電影播放器的操作下面,將描述在再現(xiàn)播放列表期間電影播放器300的操作。用于如雙倍速再現(xiàn)或三倍速再現(xiàn)的高速再現(xiàn)、如1/2倍速再現(xiàn)的低速再現(xiàn)和反向再現(xiàn)的用戶可變速再現(xiàn)指令作為用戶輸入310被輸入到本地執(zhí)行平臺301。對應于用戶輸入310,將一個取決于電影播放器300的實現(xiàn)方式的控制指令311從本地執(zhí)行平臺301提供給電影播放器300。
可變速再現(xiàn)的速度取決于電影播放器300的實現(xiàn)方式。將一個具有能指定速度的“加快”或“減慢”變元的指令從本地執(zhí)行平臺301提供給電影播放器300。電影播放器300將該指令轉換成實際速度。實現(xiàn)可變速再現(xiàn)的方法取決于電影播放器300的實現(xiàn)方式。腳本程序可以利用方法getPlayStatus()知曉電影播放器300指定的速度。
相反地,腳本程序發(fā)送到電影播放器300的方法play()不利用變元對速度進行指定。方法play()僅指定暫停(利用變元“pause”)和標準速度再現(xiàn)(利用變元“x1”)。
在電影播放器300以可變的再現(xiàn)速度以正向再現(xiàn)了一個播放列表之后,當現(xiàn)有的播放項到達末尾時,電影播放器300再現(xiàn)下一個播放項。這里,電影播放器300以同樣地方向和以同樣地再現(xiàn)速度再現(xiàn)下一個播放項以繼續(xù)進行可變速再現(xiàn)。
圖35示出了當電影播放器300正在再現(xiàn)的播放列表到了開頭或末尾時電影播放器300的操作的例子。在電影播放器300以正向再現(xiàn)一個播放列表之后,當該播放列表到了末尾時,電影播放器300顯示最后一個圖像并且暫停。為了使最后一個圖像清楚,有必要清楚地利用在事件處理程序onPlayListEnd中描述的方法stop()來停止電影播放器300。
當電影播放器300以高于標準速度的速度執(zhí)行高速再現(xiàn)時,在播放列表的末尾,即使播放列表的最后一個圖像不是跳轉點,電影播放器300也顯示播放列表的最后一個圖像。
在電影播放器300以反向再現(xiàn)播放列表之后,當現(xiàn)有的播放列表到了開頭時,電影播放器300再現(xiàn)先前的播放項,即以正向編排的先前播放項。電影播放器300以相同的再現(xiàn)速度以反向從末尾到開頭再現(xiàn)先前的播放項。當電影播放器300正在再現(xiàn)的播放列表在反向到達了開頭時,電影播放器300取消可變速再現(xiàn)并且在播放列表的開頭處暫停。
此外,電影播放器300利用使電影播放器300暫停的控制指令311來暫停。當電影播放器300的暫停狀態(tài)被取消時,對播放列表的再現(xiàn)方向和再現(xiàn)速度取決于電影播放器300的實現(xiàn)方式。
下面,將描述在再現(xiàn)播放列表期間所發(fā)生的事件。如參照圖13描述的,在再現(xiàn)播放列表期間所發(fā)生的事件是對應于用戶操作的事件angleChange、事件audioChange和事件subtitleChange和對應于嵌入在播放列表中的標志的事件chapter和事件mark。參照圖15描述了當發(fā)生事件時的操作的例子。
下面,將描述在播放列表末尾處執(zhí)行的處理。如上所述,電影播放器300通過方法play()現(xiàn)指定的播放列表號的播放列表。一旦電影播放器300開始再現(xiàn)一個播放列表,電影播放器300就在沒有腳本程序和控制指令311控制的情況下持續(xù)再現(xiàn)該播放列表直到其到達末尾。當電影播放器300所再現(xiàn)的播放列表到了末尾時,不管播放列表如何到達末尾,電影播放器300都將事件playListEnd通知給腳本程序。換句話說,當該播放列表到了末尾時,無論電影播放器300執(zhí)行的是標準再現(xiàn),是快速正向再現(xiàn)還是由另一個播放列表的跳轉再現(xiàn),電影播放器300都產生事件playListEnd。
當電影播放器300正在再現(xiàn)的播放列表到達了末尾并且事件playListEnd發(fā)生時,電影播放器300暫停,并且電影播放器300所存儲的播放列表再現(xiàn)時間與播放列表的最后時間相匹配。播放列表的最后時間是播放列表的最后一個圖像的再現(xiàn)結束時間,并且其與再現(xiàn)時間軸上的最后一個播放項的OUT點相匹配。
可以使用事件playListEnd來連續(xù)地再現(xiàn)播放列表和在一個多重故事的一個分支點處顯示一個菜單。
當腳本程序具有作為在發(fā)生事件playListEnd時執(zhí)行的程序的事件處理程序onPlayListEnd時,腳本程序執(zhí)行事件處理程序onPlayListEnd。當事件處理程序onPlayListEnd描述使電影播放器300開始再現(xiàn)另一個播放列表的方法play()時,電影播放器300開始再現(xiàn)該播放列表。以這樣的方式,電影播放器300繼續(xù)再現(xiàn)該播放列表。
下面,將參照圖36更具體地描述此操作。當電影播放器300已經再現(xiàn)播放列表號為“PL1”的播放列表時,事件playListEnd發(fā)生。當事件playListEnd發(fā)生時,執(zhí)行腳本程序所具有的事件處理程序onPlayListEnd。事件處理程序onPlayListEnd指定對播放列表號為“PL2”的播放列表進行再現(xiàn)。電影播放器300接收事件處理程序onPlayListEnd并且對已經指定的播放列表號為“PL2”的播放列表進行再現(xiàn)。
因此,再現(xiàn)路徑臨時從播放列表號為“PL1”的播放列表的末尾改變到事件處理程序onPlayListEnd,并且然后改變到播放列表號為“PL2”的播放列表的開頭。
當在一個多重故事的一個分支點處顯示一個菜單時,可以在相應于事件playListEnd的事件處理程序onPlayListEnd中描述再現(xiàn)一個播放列表的指令,該播放列表利用其末尾處的一個分支點顯示一個菜單屏。
圖37示出了腳本層302在播放列表的末尾處的處理的流程圖,并且顯示了電影播放器300的具體操作的一個實例。在圖37中,步驟S30到步驟S33表示在腳本層302方的處理過程,而步驟S40到步驟S44表示在電影播放器300方的處理過程。
在電影播放器300正在再現(xiàn)的播放列表到達了末尾之后,為了再現(xiàn)下一個播放列表,腳本程序需要明確地發(fā)出一個相應的指令。由于播放列表的再現(xiàn)順序由腳本程序來決定,因此電影播放器300方不能自動決定接下來要再現(xiàn)的播放列表。
當電影播放器300正在再現(xiàn)的播放列表到達了末尾(在步驟S40)時,電影播放器300將事件playListEnd通知給腳本層302(在步驟S41)。電影播放器300繼續(xù)再現(xiàn)到達了末尾的播放列表的最后一個圖像并且將現(xiàn)有狀態(tài)改變?yōu)闀和顟B(tài)(在步驟S42)。
當腳本層302接收到事件playListEnd時,腳本層302執(zhí)行事件處理程序onPlayListEnd(在步驟S30)。電影播放器300接下來執(zhí)行的操作取決于事件處理程序onPlayListEnd中的腳本程序的描述。
在步驟S40之后,即使暫停的電影播放器300接收到一個取消暫停狀態(tài)或使電影播放器300開始以正向進行再現(xiàn)的方法或者控制指令311,電影播放器300也忽略該方法或該控制指令311。使電影播放器300開始以正向進行再現(xiàn)的方法是具有一個指定正向再現(xiàn)的變元的方法play()和方法playStep()。使電影播放器300開始以正向進行再現(xiàn)的控制指令311包括指令uo_play()、指令uo_playNextChapter()、指令uo_forwardScan()、指令uo_playStep()、指令uo_pauseOn()、和uo_pauseOff()。當電影播放器300在播放列表的末尾暫停時,其忽略這些指令。
當電影播放器300在播放列表的末尾暫停時,方法stop()和方法resume()是有效的。當電影播放器300在播放列表的末尾暫停時,模式change是有效的。
在事件playListEnd發(fā)生了之后,以標準模式操作的電影播放器300能接收不同于使電影播放器300開始以正向進行再現(xiàn)的控制指令311的控制指令。在此情況下,當腳本程序執(zhí)行用于電影播放器300的方法313時,電影播放器300根據(jù)方法313而運行。
在圖37中所示的實例中,事件處理程序onPlayListEnd使腳本層302執(zhí)行方法stop()(在步驟S31)。當腳本層302執(zhí)行法stop()時,電影播放器300取消由方法311引起的操作并且將現(xiàn)有狀態(tài)改變?yōu)橥V範顟B(tài)(在步驟S43)。在停止狀態(tài),電影播放器300清除電影播放器300已經再現(xiàn)過的播放列表的最后一個圖像,并且示黑屏。
事件處理程序onPlayListEnd使腳本層302執(zhí)行使電影播放器300再現(xiàn)下一個播放列表的方法313(在步驟S32)。例如,在方法play()中,分別將值“x1”指定給變元pauseMode,將值“Menu”指定給變元menuMode和將接下來要再現(xiàn)的播放列表號指定給變元playListNumber。這些值使電影播放器300將現(xiàn)有模式改變?yōu)椴藛文J讲⑶以跇藴誓J较略佻F(xiàn)由變元playListNumber指定播放列表號的播放列表。此后,腳本層302完成事件處理程序onPlayListEnd(在步驟S33)。電影播放器300方根據(jù)在步驟S32指定的方法play()將現(xiàn)有模式改變?yōu)榱硪环N模式。另外,電影播放器300以指定的速度再現(xiàn)所指定的播放列表(在步驟S44)。
為了改善用戶的可操作性,內容創(chuàng)建者需要利用事件處理程序onPlayListEnd來創(chuàng)作(描述)已經再現(xiàn)了一個播放列表的電影播放器300所執(zhí)行的下一個操作,使得在電影播放器300已經再現(xiàn)該列表之后,電影播放器300將現(xiàn)有狀態(tài)改變?yōu)橥V範顟B(tài),以方法play()再現(xiàn)下一個播放列表,或顯示菜單屏。
8-4.電影播放器的再現(xiàn)恢復功能下面將描述電影播放器300的狀態(tài)改變和再現(xiàn)恢復功能。首先,參照圖38,將描述UMD視頻播放器所具有的三種類型的存儲器區(qū)。在UMD視頻播放器模型中,將播放器狀態(tài)區(qū)501、恢復信息區(qū)502和用戶數(shù)據(jù)區(qū)503定義為三種類型的基本存儲區(qū)。這三種類型的存儲區(qū)501、502和503形成在例如存儲器113中。代替性地,這些存儲區(qū)501、502和503可以形成在作為CPU 112的工作存儲器的RAM中。
播放器狀態(tài)區(qū)501是存儲表示電影播放器300的再現(xiàn)狀態(tài)的信息的存儲器區(qū)。換句話說,播放器狀態(tài)區(qū)501存儲如圖3所示的播放器狀態(tài)323B??梢岳梅椒╣etPlayStatus()從腳本程序500中讀出播放器狀態(tài)區(qū)501的內容。
恢復信息區(qū)502是臨時備份保持在播放器狀態(tài)區(qū)501中的部分信息的存儲器區(qū)。換句話說,將播放器狀態(tài)區(qū)501的部分信息存儲在恢復信息區(qū)502中作為如圖3所示的恢復信息324。當有必要時,備份在恢復信息區(qū)502中的播放器狀態(tài)區(qū)501的部分信息被恢復到播放器狀態(tài)區(qū)501中。通過本地執(zhí)行平臺301執(zhí)行信息的備份和存儲。存儲在恢復信息區(qū)502中的信息用于恢復再現(xiàn)功能,該恢復再現(xiàn)功能從先前的再現(xiàn)停止位置起動再現(xiàn)。
腳本程序500能利用方法getResumeInfo()讀取恢復信息區(qū)502的內容。腳本程序500能利用方法changeResumeInfo()來對存儲在恢復信息區(qū)502中的恢復信息324中的一個流改變參數(shù)。
當有必要時,存儲在恢復信息區(qū)502中的信息被本地執(zhí)行平臺301存儲到非易失性存儲器510中。同樣地,當有必要時,從恢復信息區(qū)502存儲到非易失性存儲器510中的信息被本地執(zhí)行平臺301從非易失性存儲器510裝入,并且存儲在恢復信息區(qū)502中。
當電影播放器300利用預定的方法將現(xiàn)有狀態(tài)改變?yōu)轭A定狀態(tài)時,將信息從播放器狀態(tài)區(qū)501備份到恢復信息區(qū)502和將信息從恢復信息區(qū)502恢復到播放器狀態(tài)區(qū)501是電影播放器300自動執(zhí)行的處理過程。
用戶數(shù)據(jù)區(qū)503是存儲取決于內容的信息的區(qū)域。內容創(chuàng)建者能自由地使用用戶數(shù)據(jù)區(qū)503。用戶數(shù)據(jù)區(qū)503可自由地用于諸如電影播放器300的播放列表的再現(xiàn)路徑的歷史和對應于內容的正確與不正確的應答。
腳本程序500能利用方法setUserData()將數(shù)據(jù)存儲到用戶數(shù)據(jù)區(qū)503。腳本程序500利用方法getUserData()讀用戶數(shù)據(jù)區(qū)503的內容。當有必要時,本地執(zhí)行平臺301將存儲在用戶數(shù)據(jù)區(qū)503中的信息存儲到非易失性存儲器510中。同樣地,當有必要時,本地執(zhí)行平臺301從非易失性存儲器510裝載信息,并且將該信息存儲在用戶數(shù)據(jù)區(qū)503中。
下面將描述實現(xiàn)根據(jù)本發(fā)明的一個實施例的再現(xiàn)恢復功能的UMD播放器模型。
首先,簡要描述該恢復操作。利用備份在恢復信息區(qū)502中的信息恢復再現(xiàn)狀態(tài)的操作被稱為恢復操作。利用方法resume()來執(zhí)行該恢復操作。
更具體而言,將播放器狀態(tài)323B從播放器狀態(tài)區(qū)501備份在恢復信息區(qū)502中,并且根據(jù)方法resume()利用備份在恢復信息區(qū)502中的恢復信息324來恢復再現(xiàn)狀態(tài)。播放器狀態(tài)323B由電影播放器300的狀態(tài)構成,即播放列表號和電影播放器300目前正在再現(xiàn)的章節(jié)號,所選定的流號等。
將方法resume()發(fā)送到電影播放器300的操作取決于恢復信息324是否被存儲在恢復信息區(qū)502中。當恢復信息324存儲在恢復信息區(qū)502中時,恢復信息324被恢復到播放器狀態(tài)區(qū)501作為播放器狀態(tài)323B。這里,存儲在恢復信息區(qū)502中的恢復信息324被丟棄。
當在一個在再現(xiàn)內容期間所調用的菜單上改變再現(xiàn)流時,使用方法changeResumeInfo()。在利用方法changeResumeInfo()將存儲在恢復信息區(qū)502中的恢復信息324改變?yōu)樗付ǖ男畔⒅螅斠苑椒╮esume()執(zhí)行恢復操作時,現(xiàn)有的再現(xiàn)流可以被改變?yōu)樗付ǖ脑佻F(xiàn)流,并且能開始再現(xiàn)所指定的再現(xiàn)流。
當執(zhí)行方法resume()時,電影播放器300能執(zhí)行恢復操作。替代地,當利用方法getResumelnfo()獲得恢復信息324并且執(zhí)行具有所指定的變元的方法play()時,可以實現(xiàn)該恢復操作。
下面將參照圖39和圖40來描述將播放器狀態(tài)323B備份到恢復信息區(qū)502的過程。圖39示出了定義在電影播放器300中的四種狀態(tài)改變中的一種狀態(tài)改變,該狀態(tài)改變時被存儲在播放器狀態(tài)區(qū)501中的播放器狀態(tài)323B被備份在恢復信息區(qū)502中。圖40示出了播放器狀態(tài)323B被備份到恢復信息區(qū)502的條件。
當電影播放器300正在以標準模式再現(xiàn)播放列表并且播放狀態(tài)(State{Normal,play})從有狀態(tài)改變?yōu)橥V範顟B(tài)時,將存儲在播放器狀態(tài)區(qū)501中的播放器狀態(tài)323B備份到恢復信息區(qū)502并且存儲為恢復信息324。在停止狀態(tài)下,播放器狀態(tài)323B的一些值變得不確定。
另外,當電影播放器300將現(xiàn)有狀態(tài)State{Normal,play}改變?yōu)闋顟B(tài)State{Menu,play}時,也將存儲在播放器狀態(tài)區(qū)501中的播放器狀態(tài)323B備份到恢復信息區(qū)502。
相反,當在菜單模式下再現(xiàn)播放列表的電影播放器300從現(xiàn)有狀態(tài)改變?yōu)榱硪粋€狀態(tài)時,不把存儲在播放器狀態(tài)區(qū)域501中的播放器狀態(tài)323B備份到恢復信息區(qū)502中。
換句話說,播放器狀態(tài)323B被備份到恢復信息區(qū)502作為恢復信息324,(1)當電影播放器300的現(xiàn)有狀態(tài)是State{Normal,play}并且電影播放器300利用執(zhí)行方法stop()直接將現(xiàn)有狀態(tài)State{Normal,play}改變?yōu)闋顟B(tài)State{Normal,play}時,或者(2)當電影播放器300的現(xiàn)有狀態(tài)是State{Normal,play}并且電影播放器300利用執(zhí)行方法stop()將現(xiàn)有狀態(tài)State{Normal,play}改變?yōu)闋顟B(tài)State{Normal,Stop}或State{Menu,Stop}時。在此情況下,方法stop()的變元resumInfoClearFlag的值是“false”。
希望將播放器狀態(tài)323B備份到恢復信息區(qū)502用以存儲內容的主體部的返回位置。例如,當完成再現(xiàn)內容的主體部、跳到一個移動圖像菜單、返回到內容的主體部并且從所再現(xiàn)停止位置再現(xiàn)內容的主體部的一系列操作時,希望使用恢復信息324,該恢復信息324是被備份在恢復信息區(qū)502中的播放器狀態(tài)323的數(shù)據(jù)。
因此,當正在再現(xiàn)內容的主體部時,即電影播放器300的現(xiàn)有狀態(tài)是State{Normal,play}時,存儲在恢復信息區(qū)502中的恢復信息324已經被丟棄。當電影播放器300將現(xiàn)有狀態(tài)State{Normal,play}改變?yōu)榱硪粻顟B(tài)時,將播放器狀態(tài)323B備份到恢復信息區(qū)502作為恢復信息324。
因此,為了實現(xiàn)恢復再現(xiàn),當電影播放器300將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)時,將播放器狀態(tài)323B備份到恢復信息區(qū)502并且將存儲在恢復信息區(qū)502中的恢復信息324丟棄。當腳本層302指定方法resume()時,如果恢復信息324被存儲在恢復信息區(qū)502中,那么恢復信息324被恢復到播放器狀態(tài)區(qū)501作為播放器狀態(tài)323B。
腳本層302能以方法getResumeInfo()從恢復信息區(qū)502中裝入恢復信息324。利用方法changeResumeInfo()能改變關于存儲在恢復信息區(qū)502中的恢復信息324中的一個流的一個參數(shù)。另外,利用方法stop()的一個變元,存儲在恢復信息區(qū)502中的恢復信息324能被丟棄。
下面將參照圖41到44,描述將存儲在恢復信息區(qū)502中的恢復信息324恢復到播放器狀態(tài)區(qū)501的過程和丟棄恢復信息324的過程。在電影播放器300返回到主體部的再現(xiàn)狀態(tài),即State{Normal,play}之后,被存儲為內容的主體部的返回位置的恢復信息324被丟棄。這里,有兩種情況。在第一種情況下,恢復信息324被恢復到播放器狀態(tài)區(qū)501作為播放器狀態(tài)323B,而后被丟棄。在第二中情況下,恢復信息324被丟棄,不被恢復。
換句話說,在此模型中,當電影播放器300返回到State{Normal,play}時,存儲在恢復信息區(qū)502中的恢復信息324被丟棄。這里,當電影播放器300等滿足預定條件時,存儲在恢復信息區(qū)502中的恢復信息324被恢復到播放器狀態(tài)區(qū)501而后被丟棄。當將恢復信息324恢復到播放器狀態(tài)區(qū)501時,從恢復信息324指定的位置開始再現(xiàn)。此操作是恢復再現(xiàn)。
圖41示出了定義在電影播放器300中的4種狀態(tài)改變中的一種狀態(tài)改變,該狀態(tài)改變中的恢復信息324被恢復到播放器狀態(tài)區(qū)501,而后被丟棄。
當以下的三個條件(1)到(3)被滿足時,恢復信息324被恢復,而后被丟棄(1)當電影播放器300的現(xiàn)有狀態(tài)是State{Menu,Stop}、State{Normal,Stop}或State{Menu,Play}時,(2)當恢復信息324被存儲在恢復信息區(qū)502中時,以及(3)當電影播放器300利用執(zhí)行方法resume()將現(xiàn)有狀態(tài)改變?yōu)镾tate{Normal,play}時。
圖42是這些條件的表。當電影播放器300的現(xiàn)有狀態(tài)是State{Normal,play}時,因為恢復信息324未被存儲,所以在圖42中沒有定義此狀態(tài)下的操作。
當恢復信息324被存儲在恢復信息區(qū)502中時,如果執(zhí)行方法resume(),那么電影播放器300將現(xiàn)有狀態(tài)改變?yōu)镾tate{Normal,play}。當恢復信息324未被存儲在恢復信息區(qū)502中時,如果執(zhí)行方法resume(),那么電影播放器300不將現(xiàn)有狀態(tài)改變?yōu)榱硪粻顟B(tài)。這里,電影播放器300保持處于執(zhí)行方法resume()之前即刻發(fā)生的狀態(tài)State{Mode,State},并且播放器狀態(tài)323B未被改變。
相反,當以下的三個條件(4)到(6)被滿足時,恢復信息324不被恢復,但是被丟棄(4)當電影播放器300的現(xiàn)有狀態(tài)是State{Menu,Stop}、State{Normal,Stop}或State{Menu,Play}時,(5)當恢復信息324被存儲在恢復信息區(qū)502中時,以及(6)當電影播放器300利用執(zhí)行方法resume()將現(xiàn)有狀態(tài)改變?yōu)镾tate{Normal,play}時。
圖43是這些條件的表。當電影播放器300的現(xiàn)有狀態(tài)是State{Normal,play}時,因為恢復信息324未被存儲在恢復信息區(qū)502中,所以在圖43中沒有定義此狀態(tài)下的操作。
當恢復信息324未被存儲在恢復信息區(qū)502中時,如果執(zhí)行方法play(),那么電影播放器300將現(xiàn)有狀態(tài)改變?yōu)镾tate{Normal,play}。結果,其中恢復信息324未被存儲在恢復信息區(qū)502中的狀態(tài)保持不變。
通過設置方法stop()的一個變元可以將存儲在恢復信息區(qū)502中的恢復信息324丟棄。具體而言,根據(jù)本發(fā)明的這個實施例,作為方法stop()的一個變元,定義變元resumeInfoClearFlag來指定是否丟棄被存儲在恢復信息區(qū)502中的恢復信息324。如圖44所示,當執(zhí)行方法stop()時,如果利用值“true”來指定變元resumeInfoClearFlag,那么恢復信息324被丟棄。
當電影播放器300所再現(xiàn)的電影的主體部到達了末尾并且電影播放器300的停止再現(xiàn)時,該電影的主體部的末尾位置被記錄為恢復信息324。此后,當用戶操作電影播放器300執(zhí)行再現(xiàn)操作(恢復再現(xiàn)操作)時,電影播放器300跳轉到該電影的主體部的末尾并且暫停。因此,電影播放器300中的恢復再現(xiàn)操作的可操作性變壞。
為了改進電影播放器300中的恢復再現(xiàn)操作的可操作性,有必要提供一個丟棄被自動記錄為該模型特征的恢復信息324的部件。因為只有電影創(chuàng)建者知道電影的主體部的末尾,腳本程序500才能利用方法stop()的變元resumeInfoClearFlag來指定對用于電影播放器300的恢復信息324的丟棄。
圖45示出了當執(zhí)行具有變元resumeInfoClearFlag的方法stop()時UMD視頻播放器的操作的實例。在圖45中,步驟S50到步驟S54示出了在腳本層302方的處理,而步驟S60到步驟S64示出了在電影播放器300方的處理。
當電影播放器300正在再現(xiàn)的播放列表到達了末尾(在步驟S60)時,電影播放器300將事件playListEnd通知給腳本層302(在步驟S61)。電影播放器300在步驟S60繼續(xù)顯示到達了末尾的播放列表的最后一個圖像并且暫停(在步驟S62)。
當腳本層302接收到事件playListEnd時,腳本層302執(zhí)行事件處理程序onPlayListEnd(在步驟S50)。在步驟S51,腳本層302確定與事件playListEnd相對應的播放列表是否是作者電影劇本的末尾。另外,腳本層302能根據(jù)例如腳本程序500來確定一個特定的播放列表是否是電影劇本的最后一個播放列表。
當所確定的結果表示該播放列表不是最后一個播放列表時,該流程前進到步驟S53。在步驟S53,腳本層302將方法stop()的變元resumeInfoClearFlag設置成值“false”并且將不丟棄恢復信息324的方法stop()發(fā)送到電影播放器300。當電影播放器300接收到方法stop()時,電影播放器300將現(xiàn)有狀態(tài)改變?yōu)橥V範顟B(tài)。另外,電影播放器300將播放器狀態(tài)323B備份到恢復信息區(qū)502(在步驟S64)。
相反,當在步驟S51所確定的結果表示該播放列表是電影劇本中的最后一個播放列表時,該流程前進到步驟S52。在步驟S52,腳本層302將方法stop()的變元resumeInfoClearFlag設置成值“True”并且將丟棄恢復信息324的方法stop()發(fā)送到電影播放器300。當電影播放器300接收到方法stop()時,電影播放器300將現(xiàn)有狀態(tài)改變?yōu)橥V範顟B(tài)。另外,電影播放器300丟棄(清除)存儲在恢復信息區(qū)502中的恢復信息324。
在步驟S52之后,腳本層302根據(jù)腳本程序500的描述執(zhí)行方法end()。
8-5.各個數(shù)據(jù)的生存周期下面將描述播放器狀態(tài)323B、恢復信息324和用戶數(shù)據(jù)的生存期。
圖46示出了播放器狀態(tài)323B的生存期的實例。當電影播放器300被產生時,播放器狀態(tài)323B也被產生。當電影播放器300被消除時,播放器狀態(tài)323B也被消除。當電影播放器300被產生時,播放器狀態(tài)323B被初始化。當播放器狀態(tài)323B被產生時,表示電影播放器300的狀態(tài)的屬性表示停止狀態(tài)。其它的屬性不確定。播放器狀態(tài)323B的值根據(jù)電影播放器300的再現(xiàn)狀態(tài)的改變而改變。當恢復信息區(qū)502的內容被恢復時播放器狀態(tài)323B的值發(fā)生改變。能夠利用從腳本層302發(fā)出的方法getPlayerStatus()來裝入播放器狀態(tài)323B。
播放器狀態(tài)323B的存儲狀態(tài)取決于電影播放器300的實現(xiàn)方式。只要通過從腳本層發(fā)出的getPlayerStatus()方法能獲得播放器狀態(tài)323B,播放器狀態(tài)323B就能以任何格式存儲。
圖47示出了恢復信息324的生存期的實例。當電影播放器300被產生時,分配用于恢復信息324的存儲區(qū)。當電影播放器300被產生時,恢復信息324被初始化。當恢復信息324被初始化時,丟棄恢復信息324的內容。當電影播放器300被初始化時,包含非易失性存儲器的UMD視頻播放器從非易失性存儲器裝入恢復信息324。這里,用戶數(shù)據(jù)也被裝入。
當電影播放器300將現(xiàn)有狀態(tài)State{Normal,Play}改變?yōu)榱硪粋€狀態(tài)時,播放器狀態(tài)323B被備份到恢復信息區(qū)502。
利用從腳本層302發(fā)出的方法changeResumeInfo()能夠改變關于恢復信息324的流的參數(shù)videoNumber、audioNumber、audioFlag、subtitleNumber和subtitleFlag。
當電影播放器300在標準模式中開始再現(xiàn)播放列表時,恢復信息324的內容被丟棄。這里,存在兩種情況。在第一種情況下,在恢復信息324的內容被丟棄之前它被恢復到播放器狀態(tài)323B。在第二種情況下,在恢復信息324的內容被丟棄之前不將它恢復到播放器狀態(tài)323B。當執(zhí)行帶有變元resumeInfoClearFlag=“true”的方法stop()時,恢復信息324的內容被丟棄。
當恢復信息324被存儲時,利用方法resume()將其恢復到播放器狀態(tài)323B。
利用方法getResumeInfo()能夠從腳本層302讀取恢復信息324的內容。當已經丟棄的恢復信息324被讀取時,因為值“0”被返回作為返回值playStatus,因此能夠確定恢復信息324是否被存儲。
當電影播放器300被完成(被消除)時,恢復信息324也被消除。當電影播放器300被完成(被消除)時,包含非易失性存儲器的UMD視頻播放器將恢復信息324保存到非易失性存儲器。這里,UMD視頻播放器也將用戶數(shù)據(jù)保存到非易失性存儲器。
圖48示出了用戶數(shù)據(jù)的生存期的實例。當電影播放器300被產生時,分配用于用戶數(shù)據(jù)的存儲區(qū)。當電影播放器300被產生時,用戶數(shù)據(jù)被初始化。當用戶數(shù)據(jù)被初始化時,用戶數(shù)據(jù)的內容被清除(利用方法getUserData(),返回長度為“0”的數(shù)組)。當初始化電影播放器300時,包含非易失性存儲器的UMD視頻播放器從非易失性存儲器裝入用戶數(shù)據(jù)。這里,UMD視頻播放器也從非易失性存儲器裝入恢復信息。
當執(zhí)行方法setUserData()時,用戶數(shù)據(jù)被保存到用戶數(shù)據(jù)區(qū)503。利用方法setUserData(),將具有64位(最大)數(shù)據(jù)長度的整型數(shù)組保存到用戶數(shù)據(jù)區(qū)503。存儲在用戶數(shù)據(jù)區(qū)503中的數(shù)據(jù)能夠被以從腳本層302發(fā)送出的方法getUserData()讀取。當用戶數(shù)據(jù)不被存儲時,返回長度為0的數(shù)組。
腳本層302不具有清除用戶數(shù)據(jù)區(qū)503的內容的方法。當重寫用戶數(shù)據(jù)區(qū)503的內容時,該內容可以被改變。
當電影播放器300被完成(被消除)時,用戶數(shù)據(jù)區(qū)503也被消除。當電影播放器300被完成(被消除)時,包含非易失性存儲器的UMD視頻播放器將存儲在用戶數(shù)據(jù)區(qū)503中的數(shù)據(jù)保存到非易失性存儲器。這里,UMD視頻播放器也將恢復信息324保存到非易失性存儲器。
9.在內容的末尾處的處理下面將描述本發(fā)明的另一個實施例。根據(jù)本發(fā)明的這個實施例,腳本程序清楚地將內容的末尾通知給本地執(zhí)行平臺301。當本地執(zhí)行平臺301接收到信息時,在內容的末尾之后本地執(zhí)行平臺301能夠實現(xiàn)只有播放器才有的各種功能。
內容創(chuàng)建者有意地指明內容的末尾。因此,內容創(chuàng)作者想要的“內容的末尾”的位置僅僅描述在他或她創(chuàng)建的腳本程序中。換句話說,播放列表的末尾通常不是內容的末尾。因為對于一個多重故事的內容,一個內容可以包含多個末尾。
現(xiàn)在,假定內容600具有如圖49所示的故事結構。內容600在開始點610處開始。按照由至少一個播放列表構成的路徑對內容600進行再現(xiàn)。當內容到達分支點611時,在預定的分支菜單屏或類似物上選取路徑b和c中的一個。當選取路徑b時,在分支點612處選取路徑d到f中的一個。根據(jù)所選取的路徑,內容600到達末尾點613、614或者615。當在分支點611處選取路徑c時,在分支點616處選取路徑g和h中的一個。根據(jù)所選取的路徑,內容600到達末尾點617或者618。
具有這種結構的內容600可以具有末尾點613、614、615、617和618。在這種情況下,內容600具有5個“內容的末尾”。代替性地,根據(jù)分支菜單的結構,可以指明分支點612和613作為“內容的末尾”。此外,可以在路徑的中間指明“內容的末尾”。當使用父源(parental)功能等時,利用對播放器的設置可以指明“內容的末尾”。當使用父源功能等時,在不具有故事分支的單個故事內容中可以指明多個“內容的末尾”。
另一方面,腳本程序根據(jù)電影播放器300的停止位置和它的歷史確定內容的最后位置?,F(xiàn)在,在腳本程序中描述允許腳本程序將“內容的末尾”通知給控制器對象330的方法end(),使得它在程序創(chuàng)建者期望的位置處執(zhí)行該方法。因此,腳本程序能夠清楚地將“內容的末尾”通知給本地執(zhí)行平臺301。
例如,在腳本程序中,當在內容的末尾處再現(xiàn)播放列表時,方法end()可以被描述在相應于從電影播放器300接收到的事件312的事件處理程序中。
圖50示出了涉及到在如圖2所示的播放器模型中執(zhí)行方法end()的各個部分。如圖50所示,方法end()是腳本層302將其通知給含有控制器對象330的本地執(zhí)行平臺301的方法315。當控制器對象330接收到方法end()時,控制器對象330能啟動播放器獨特功能的運行。
圖51示出了方法end()的說明的一個實例。方法end()是控制器對象330的一個方法(Controller,end())并且不具有屬性。當執(zhí)行方法end()時,返回布爾型的值。方法end()的返回值表示UMD視頻播放器是否在沒有播放器獨特的操作的情況下完成了對內容的操作。當方法end()的返回值是“true”時,其表示UMD視頻播放器在執(zhí)行了事件處理程序之后沒有執(zhí)行播放器獨特的功能。相反,當方法end()的返回值是“false”時,其表示UMD視頻播放器在執(zhí)行了事件處理程序之后執(zhí)行播放器獨特的功能。
腳本程序利用方法end()將內容的末尾通知給本地執(zhí)行平臺301。另外,因為腳本程序從本地執(zhí)行平臺301獲得方法end()的返回值,所以腳本程序能知道是否執(zhí)行了播放器的獨特功能并能執(zhí)行下一個操作。
當方法end()的返回值是“false”并且腳本程序已經確定執(zhí)行了播放器的獨特功能時,腳本程序能抑制對另一種方法的執(zhí)行,使得其不阻止播放器的獨特功能的運行。相反,當方法end()的返回值是“true”并且腳本程序已經確定沒有執(zhí)行播放器的獨特功能時,腳本程序能調用一個菜單屏,使得用戶的可操作性得到改進。
下面將描述一個使用方法end()的操作的具體實例。首先,將描述一個利用方法end()實現(xiàn)盤重復功能的實例。盤重復功能是一種在內容到達了末尾后自動從開頭開始再現(xiàn)內容的功能。
圖52是一個示出了利用方法end()執(zhí)行盤重復功能的處理的實例的流程圖。在流程圖的執(zhí)行之前,內容創(chuàng)建者在腳本程序中描述方法end()以將他或她期望的位置指定為內容的末尾。當內容被再現(xiàn)并且內容到達了被指定為末尾的位置時,在腳本程序中,在內容的末尾處執(zhí)行的事件處理程序發(fā)出方法end()(在步驟S70)。
方法end()被提供給本地執(zhí)行平臺301。當本地執(zhí)行平臺301接收到方法end()時,本地執(zhí)行平臺301確定是否已經給UMD視頻播放器設置了盤重復功能(在步驟S71)。例如,給本地執(zhí)行平臺301設置盤重復功能,并且將其寫到只讀存儲器323A(末在圖7A中示出)。
當所確定的結果表示已經設置了盤重復功能時,該流程前進到步驟S72。在步驟S72,本地執(zhí)行平臺301將事件autoPlay發(fā)送到腳本層302。這里,因為方法end()沒有完成,事件autoPlay被編入隊列(在步驟S72)。因為已經設置了盤重復功能,方法end()在步驟S70處的返回值是“false”(在步驟S73)。
腳本層302在方法end()之后執(zhí)行腳本程序直到在內容的末尾處執(zhí)行的事件處理程序的末尾(在步驟S74)。執(zhí)行早于事件autoPlay被編入隊列的事件。此后,執(zhí)行相應于事件autoPlay的事件處理程序onAutoPlay(在步驟S75)。如參照圖12和圖14所描述的那樣,事件處理程序onAutoPlay是當將盤裝入播放器時與能使腳本程序自動執(zhí)行的事件autoPlay相對應的事件處理程序。當從開頭再現(xiàn)盤的數(shù)據(jù)時,執(zhí)行事件處理程序onAutoPlay。當事件處理程序onAutoPlay被調用時,從開頭開始再現(xiàn)該內容。
另一方面,當沒有在步驟S71設置盤重復功能并且UMD視頻播放器完成了該操作而沒有任何特定的操作時,該流程前進到步驟S76。在步驟S76,方法end()返回值“true”作為返回值。這里,在方法end()之后執(zhí)行該腳本程序直到該事件處理程序的末尾(在步驟S77)。UMD視頻播放器的下一個操作取決于腳本程序。當腳本程序在方法end()之后沒有描述任何代碼時,UMD視頻播放器變成等待狀態(tài),等待事件的到來(在步驟S78)。例如,UMD視頻播放器顯示黑屏并等待一個事件。替代性地,UMD視頻播放器也可以根據(jù)腳本程序的描述顯示一個菜單屏。在步驟S77和S78,本地執(zhí)行平臺301不執(zhí)行任何處理。
在以方法end()實現(xiàn)盤重復功能的實例中,如果沒有給播放器設置盤重復功能,那么方法end()的返回值為“true”。在已經執(zhí)行了含有方法end()的事件處理程序之后,UMD視頻播放器變成等待狀態(tài),等待事件的到來。
這里,如果電影播放器300已經再現(xiàn)了播放列表并且停止該操作時,電影播放器300可以不顯示數(shù)據(jù)(即,黑屏)。當腳本程序等待事件和用戶操作時,如果出現(xiàn)黑屏,那么用戶可以想到播放器停止操作了。因為沒有在顯示屏上出現(xiàn)向導指示,所以用戶會感到困惑不知道下一步做什么。換句話說,可以說此種情形是由于對用戶缺乏考慮而產生的。
當內容創(chuàng)建者沒有提供對用戶進行導航使得在完成內容的再現(xiàn)之后顯現(xiàn)菜單屏的腳本程序時,可能會出現(xiàn)此種情形。
為了防止這樣的對于用戶來說陌生或不起幫助作用的操作可以使用方法end()。
下面將參照如圖53所示的流程圖來描述一個實例,該實例為利用方法end()在內容的末尾執(zhí)行播放器獨特的功能,以防止這樣的操作的發(fā)生。在執(zhí)行該流程之前,內容創(chuàng)建者已經在腳本程序中描述了方法end()以將他或她所期望的位置指定為內容的末尾。當內容已經被再現(xiàn)并且內容到達了末尾時,腳本程序在于內容的末尾處執(zhí)行的事件處理程序中發(fā)出方法end()(在步驟S80)。
方法end()被提供給本地執(zhí)行平臺301。當本地執(zhí)行平臺301接收到方法end()時,本地執(zhí)行平臺301參照例如只讀存儲器323A并確定是否已經給UMD視頻播放器設置了盤重復功能(在步驟S81)。
當所確定的結果表示已經設置了盤重復功能時,該流程前進到步驟S82。在步驟S82,本地執(zhí)行平臺301將事件autoPlay發(fā)送到腳本層302。腳本層302將事件autoPlay編入隊列。此后,該流程前進到步驟S83。
相反,當在步驟S81所確定的結果表示設置盤重復功能時,該流程前進到步驟S86。在步驟S86,本地執(zhí)行平臺301確定是否已經將事件處理程序onMenu登記在腳本程序中。當內容創(chuàng)建者已經將事件處理程序onMenu描述在腳本程序中時,并且當在開頭已經執(zhí)行了腳本程序時,事件處理程序onMenu被登記在執(zhí)行腳本程序的解釋器中。當事件處理程序onMenu已經被登記時,其能被執(zhí)行。在此情況下,該流程前進到步驟S87。在步驟S87,將相應于事件處理程序onMenu的事件menu編入隊列中。此后,該流程返回到步驟S83。
相反,當在步驟S86所確定的結果表示沒有事件處理程序onMenu()沒有被登記時,該流程前進到步驟S88。當事件處理程序onMenu沒有被登記時,盤重復功能未被設置。另外,不存在使UMD視頻播放器顯示一個菜單的事件處理程序。在此情況下,執(zhí)行使UMD視頻播放器完成此操作并且使本地執(zhí)行平臺301顯示一個菜單的處理。換句話說,該流程前進到步驟S88。在步驟S88,本地執(zhí)行平臺301將事件exit編入隊列。如參照圖12所描述的那樣,事件exit是一個使UMD視頻播放器完成該操作的事件。此后,該流程前進到步驟S83。
如在步驟S82、步驟S87和步驟S88所描述的那樣,在此實例中,當方法end()被發(fā)送時,本地執(zhí)行平臺301將事件autoPlay(在步驟S82)、事件menu(在步驟S87)和事件exit(在步驟S88)中的一個編入隊列。利用這些事件中的一個,UMD視頻播放器在執(zhí)行該事件處理程序之后執(zhí)行播放器獨特的功能。因此,僅將值“false”返回作為方法end()的返回值(在步驟S83)。此后,恢復腳本程序的執(zhí)行。
在步驟S83,完成對方法end()的執(zhí)行。在已經獲得返回值之后,執(zhí)行腳本程序。當腳本程序到達了含有方法end()的事件處理程序的末尾(在步驟S84)時,按順序執(zhí)行編入隊列的事件(在步驟S85)。
當在步驟S82將事件autoPlay編入隊列時,在步驟S85執(zhí)行事件處理程序onAutoPlay。事件處理程序onAutoPlay使UMD視頻播放器從開頭開始再現(xiàn)內容。
當在步驟S87將事件menu編入隊列時,在步驟S85執(zhí)行事件處理程序onMenu。然而在很多種情況下,根據(jù)內容創(chuàng)建者的意圖,希望事件處理程序onMenu含有使UMD視頻播放器顯示一個菜單屏的代碼。因此,在很多種情況下,顯示菜單屏。
當在步驟S88將事件exit編入隊列時,在步驟S85執(zhí)行事件處理程序onExit。事件處理程序onExit使UMD視頻播放器完成該操作。在UMD視頻播放器完成該操作之后,將能使播放器對其硬件進行設置的控制傳送到例如播放器獨特的系統(tǒng)菜單。
如上所述,根據(jù)這個實施例,定義了方法end(),其使腳本層302將內容的末尾通知給本地執(zhí)行平臺301??梢愿鶕?jù)例如是否已經設置了盤重復功能的播放器設置和是否提供了菜單屏的內容狀態(tài)來指定播放器在內容的末尾處執(zhí)行的操作。因此,能夠防止發(fā)生由于對用戶缺乏考慮而產生的異常情況,例如出現(xiàn)黑屏。另外,能提供用戶友好型界面。
當內容創(chuàng)建者僅在他或她想將其指定為內容的末尾的部分處描述方法end()時,播放器自動地執(zhí)行適當?shù)奶幚矶鵁o須提供復雜的程序。因此,能夠節(jié)省創(chuàng)建內容所要的大量時間和工作。
本發(fā)明前述的實施例不但應用于處理音頻流也用于處理視頻流的盤再現(xiàn)裝置100。替代性地,本發(fā)明的這些實施例還可以應用于再現(xiàn)或者音頻流或者視頻流的盤再現(xiàn)裝置100。
在本發(fā)明前述的實施例中,作為內容數(shù)據(jù)的記錄介質,描述了盤形記錄介質。替代性地,作為內容數(shù)據(jù)的記錄介質,可以使用半導體存儲器。在本發(fā)明前述的實施例中,盤再現(xiàn)裝置100由專用的硬件構成。替代性地,盤再現(xiàn)裝置100的結構除了盤驅動器之外可以由運行在計算機裝置上的軟件實現(xiàn)。在此情況下,實現(xiàn)盤再現(xiàn)裝置100的軟件可以由記錄介質,如光盤只讀存儲器(CD-ROM)或數(shù)字通用盤ROM(DVD-ROM)來提供。在此情況下,用于實現(xiàn)盤再現(xiàn)裝置100的軟件的記錄介質被裝入到計算機裝置的盤驅動器中,并且將記錄在記錄介質上的軟件安裝在計算機裝置上。當根據(jù)UMD將盤驅動器裝置連接到計算機裝置上時,能實現(xiàn)與根據(jù)本發(fā)明前述實施例的盤再現(xiàn)裝置100相同的結構。該軟件可以被記錄在用于UMD視頻內容的記錄介質上。
本領域普通技術人員應該理解,只要落在所附的權利要求或其等價物的范圍內,根據(jù)設計需要和其它因素,可以對本發(fā)明進行各種修改、組合、子組合和替換。
權利要求
1.一種對記錄在記錄介質上的內容數(shù)據(jù)進行再現(xiàn)的再現(xiàn)裝置,其包括播放器裝置,其具有用于從記錄介質上讀取數(shù)據(jù)的讀取裝置,在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序,用于接受來自用戶的輸入的輸入裝置,和用于輸出所再現(xiàn)的內容數(shù)據(jù)的輸出裝置;用于根據(jù)再現(xiàn)控制程序再現(xiàn)內容數(shù)據(jù)的內容再現(xiàn)裝置,以及用于在內容再現(xiàn)裝置、再現(xiàn)控制程序和播放器裝置之間連接通信的接口裝置,其中當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給接口裝置,并且該接口裝置執(zhí)行時應于所述指令的處理。
2.如權利要求1所述的再現(xiàn)裝置,其中所述指令被描述在內容數(shù)據(jù)的多個位置,以將它們指定為內容數(shù)據(jù)的多個末尾。
3.如權利要求1所述的再現(xiàn)裝置,其中所述接口裝置根據(jù)所述指令使播放器裝置執(zhí)行播放器裝置的獨特功能。
4.如權利要求3所述的再現(xiàn)裝置,其中所述獨特功能是盤重復功能。
5.如權利要求3所述的再現(xiàn)裝置,其中所述獨特功能是播放器裝置特有的系統(tǒng)菜單功能。
6.如權利要求1所述的再現(xiàn)裝置,其中所述接口裝置根據(jù)所述指令調用在再現(xiàn)控制程序中描述的預定功能。
7.如權利要求6所述的再現(xiàn)裝置,其中所述預定功能是菜單功能。
8.一種從記錄介質中再現(xiàn)內容數(shù)據(jù)的再現(xiàn)方法,其包括以下步驟根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質中再現(xiàn)內容數(shù)據(jù),其中所述記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序;和在內容再現(xiàn)步驟、再現(xiàn)控制程序和播放器裝置之間進行連接通信,該播放器裝置具有從記錄介質讀取數(shù)據(jù)的讀取裝置,接受來自用戶的輸入的輸入裝置,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出裝置;其中當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給連接通信步驟,并且該連接通信步驟執(zhí)行對應于該指令的處理。
9.一種再現(xiàn)程序,該再現(xiàn)程序使計算機裝置執(zhí)行從記錄介質中再現(xiàn)內容數(shù)據(jù)的再現(xiàn)方法,該再現(xiàn)方法包括以下步驟根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質中再現(xiàn)內容數(shù)據(jù),其中所述記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序;和在內容再現(xiàn)步驟、再現(xiàn)控制程序和播放器裝置之間進行連接通信,該播放器裝置具有從記錄介質讀取數(shù)據(jù)的讀取裝置,接受來自用戶的輸入的輸入裝置,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出裝置;其中當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給連接通信步驟,并且該連接通信步驟執(zhí)行對應于該指令的處理。
10.一種記錄介質,可由計算機裝置從中讀取數(shù)據(jù),并且在其上記錄有再現(xiàn)程序,該再現(xiàn)程序使計算機裝置執(zhí)行從記錄介質中再現(xiàn)內容數(shù)據(jù)的再現(xiàn)方法,該再現(xiàn)方法包括以下步驟根據(jù)從記錄介質讀取的再現(xiàn)控制程序從記錄介質中再現(xiàn)內容數(shù)據(jù),其中所述記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序;和在內容再現(xiàn)步驟、再現(xiàn)控制程序和播放器裝置之間進行連接通信,該播放器裝置具有從記錄介質讀取數(shù)據(jù)的讀取裝置,接受來自用戶的輸入的輸入裝置,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出裝置;其中當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給連接通信步驟,并且該連接通信步驟執(zhí)行對應于該指令的處理。
11.一種記錄介質,可由計算機裝置從中讀取數(shù)據(jù),并且在其上記錄有包含視頻流和音頻流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序,該再現(xiàn)控制程序包括以下步驟再現(xiàn)該再現(xiàn)控制程序并且根據(jù)該再現(xiàn)控制程序再現(xiàn)內容數(shù)據(jù);與播放器裝置進行連接通信,該播放器裝置具有從記錄介質讀取數(shù)據(jù)的讀取裝置,接受來自用戶的輸入的輸入裝置,以及輸出所再現(xiàn)的內容數(shù)據(jù)的輸出裝置;以及將表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令描述到連接通信步驟。
12.如權利要求11所述的記錄介質,其中所述指令被描述在內容數(shù)據(jù)的多個位置,以將它們指定為內容數(shù)據(jù)的多個末尾。
13.如權利要求11所述的記錄介質,其中所述接口裝置根據(jù)所述指令使播放器裝置執(zhí)行播放器裝置的獨特功能。
14.如權利要求11所述的記錄介質,其中所述接口裝置根據(jù)所述指令調用在再現(xiàn)控制程序中描述的預定功能。
15.如權利要求14所述的記錄介質,其中所述預定功能是菜單功能。
16.一種具有數(shù)據(jù)結構的信號,該數(shù)據(jù)結構中的包含視頻流和音頻流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序被多路復用,該信號可通過通信線路傳送和接收,而且該信號可由計算機裝置處理,其中根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù),以及將內容數(shù)據(jù)的末尾通知給計算機裝置的指令在內容數(shù)據(jù)中被描述,當計算機裝置正在再現(xiàn)內容數(shù)據(jù)時,該指令被計算機裝置讀取。
17.一種對記錄在記錄介質上的內容數(shù)據(jù)進行再現(xiàn)的再現(xiàn)裝置,其包括播放器部,其具有被配置成從記錄介質中讀取數(shù)據(jù)的讀取部,在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序,被配置成接受來自用戶的輸入的輸入部,和被配置成輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部,被配置成根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù)的內容再現(xiàn)部,以及被配置成在內容再現(xiàn)部、再現(xiàn)控制程序和播放器部之間連接通信的接口部,其中當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給接口部,并且該接口部執(zhí)行對應于該指令的處理。
全文摘要
一種再現(xiàn)裝置具有播放器部、內容再現(xiàn)控制部和接口部。該播放器部具有被配置成從記錄介質中讀取數(shù)據(jù)的讀取部,在該記錄介質上記錄有包含視頻數(shù)據(jù)流和音頻數(shù)據(jù)流中的至少一種的內容數(shù)據(jù)以及對內容數(shù)據(jù)的再現(xiàn)進行控制的再現(xiàn)控制程序,接收來自用戶的輸入的輸入部,和輸出所再現(xiàn)的內容數(shù)據(jù)的輸出部。該內容再現(xiàn)部根據(jù)再現(xiàn)控制程序再現(xiàn)該內容數(shù)據(jù)。該接口部在內容再現(xiàn)部、再現(xiàn)控制程序和播放器部之間連接通信。當表示所再現(xiàn)的內容數(shù)據(jù)的末尾的指令在再現(xiàn)控制程序中被描述時,再現(xiàn)控制程序將該指令提供給該接口部,并且該接口部執(zhí)行相應于該指令的處理過程。
文檔編號G11B27/10GK1819045SQ20051012169
公開日2006年8月16日 申請日期2005年12月2日 優(yōu)先權日2004年12月2日
發(fā)明者浜田俊也, 藤波靖, 各務辰哉, 井原宏二, 內海秀介, 上田曉彥 申請人:索尼株式會社, 索尼計算機娛樂公司