專利名稱:記錄介質,播放裝置,程序,播放方法,系統(tǒng)集成電路的制作方法
技術領域:
本發(fā)明涉及用于控制虛擬機中應用程序執(zhí)行的應用程序控制技術的領域,并且更 具體地,涉及用于將該控制技術應用于例如BD-ROM的記錄介質和BD-ROM播放裝置的應用 技術,并且其中該BD-ROM用于發(fā)行電影作品。
背景技術:
用于虛擬機的應用程序控制技術,例如Java(TM)編程,已經在個人計算機軟件行 業(yè)中得到了廣泛應用。目前,如何將從個人計算機軟件發(fā)展而來的Java(注冊商標,在下文 中用TM表示)編程用于實現(xiàn)BD-ROM(藍光光盤只讀存儲器)播放裝置中的播放控制是一 個研究的熱點。在下面專利文件1中敘述的技術是一種公知的關于一種類似的播放裝置的傳統(tǒng) 技術。*專利文件1 日本專利公開No. 2813245
發(fā)明內容
本發(fā)明要解決的問題同時,Java(TM)編程所創(chuàng)建的應用程序的運行并不穩(wěn)定,運行狀態(tài)會根據(jù)資源使 用狀態(tài)和CPU負載而改變。因此,經常會發(fā)生資源短缺,而這會導致應用程序的啟動失敗或 者導致應用程序異常終止,從導致裝置發(fā)生中斷。在個人計算機軟件行業(yè)中,人們可能并 不將這視為嚴重問題。但是,在制造例如BD-ROM播放裝置這樣的消費品的領域中,這種現(xiàn) 象將會被視作質量問題。因此,許多制造商都不愿意使用Java(TM)編程來實現(xiàn)裝置控制。 (注中斷是指這樣一種狀態(tài),其中,裝置中的軟件停止工作并且顯示屏變?yōu)楹谄?本發(fā)明的目的是提供一種記錄介質,當控制記錄介質的應用程序異常終止時,或 者當該應用程序發(fā)生啟動故障時,所述記錄介質可以實現(xiàn)失效保護。根據(jù)本發(fā)明的一個方面,提供一種記錄方法,用于在記錄介質上,其中記錄應用程 序、數(shù)字流、與所述應用程序和數(shù)字流有關的標題、以及管理信息,其中所述應用程序是使 用編程語言編寫的用于虛擬機的程序,在執(zhí)行所述記錄時指定了生存周期,該生存周期在記錄在所述記錄介質中的標題 的播放周期內,并且在所述生存周期期間可以由所述虛擬機執(zhí)行所述應用程序,以及所述管理信息包括指示了與所述標題有關的所述數(shù)字流的播放控制的信息,在所述生存周期期間,與所述應用程序的執(zhí)行同時進行所述數(shù)字流的播放控制。根據(jù)本發(fā)明的另一個方面,提供一種播放裝置,包括虛擬機單元,用于執(zhí)行已經從記錄介質讀入工作存儲器的應用程序;
播放控制引擎單元,用于播放記錄于所述記錄介質上的、并且與記錄在所述記錄介質中的標題有關的數(shù)字流;以及應用程序管理器,用于當?shù)竭_所述應用程序的生存周期時,將所述應用程序從所 述記錄介質讀入所述工作存儲器并且使所述虛擬機單元執(zhí)行所述應用程序,以及同時,使 所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標題有關的所 述數(shù)字流,其中,所述生存周期在記錄在所述記錄介質中的標題的播放周期內,并且在所述 生存周期期間,所述應用程序可以被讀入所述虛擬機單元的工作存儲器并且可以被所述虛 擬機單元執(zhí)行。根據(jù)本發(fā)明的再一個方面,提供一種用于計算機的播放方法,所述計算機包含虛 擬機單元以及播放控制引擎單元,所述虛擬機單元用于執(zhí)行已被從記錄介質讀入工作存儲 器的應用程序,所述播放控制引擎單元用于播放記錄于所述記錄介質上的、并且與記錄在 所述記錄介質中的標題有關的數(shù)字流,所述播放方法使所述計算機執(zhí)行以下所述步驟當?shù)竭_所述應用程序的生存周期時,將所述應用程序從所述記錄介質讀入所述工 作存儲器并且使所述虛擬機單元執(zhí)行所述應用程序,其中,所述生存周期在記錄在所述記 錄介質中的標題的播放周期內,并且在所述生存周期期間,所述應用程序可以被讀入所述 虛擬機單元的工作存儲器并且可以被所述虛擬機單元執(zhí)行,并且同時使所述播放控制引擎單元根據(jù)記錄于所述記錄介質上的管理信息播放與所述標 題有關的所述數(shù)字流。根據(jù)本發(fā)明的再一個方面,提供一種系統(tǒng)集成電路,其被嵌入播放數(shù)字流的播放 裝置,所述數(shù)字流記錄在所述記錄介質中并且與記錄在所述記錄介質中的標題有關,所述 系統(tǒng)集成電路包含虛擬機單元,用于執(zhí)行已被從記錄介質讀入工作存儲器的應用程序;以及應用程序管理器,用于當?shù)竭_所述應用程序的生存周期時,將所述應用程序從所 述記錄介質讀入所述工作存儲器并且使所述虛擬機單元執(zhí)行所述應用程序,并且與此同 時,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質上的管理信息播放與所述標題有關 的所述數(shù)字流,其中,所述生存周期在記錄在所述記錄介質中的標題的播放周期內,并且在 所述生存周期期間,所述應用程序可以被讀入所述虛擬機單元的工作存儲器并且可以被所 述虛擬機單元執(zhí)行。根據(jù)本發(fā)明的又一個方面,提供一種記錄介質,其中記錄應用程序、數(shù)字流、與該 應用程序和數(shù)字流有關的標題以及管理信息,其中所述應用程序是使用編程語言編寫的用于虛擬機的程序,指定了生存周期,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期 內,并且在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛 擬機執(zhí)行,所述管理信息包括指示了與所述標題有關的所述數(shù)字流的播放控制的信息,其中 所述播放控制應當在執(zhí)行所述應用程序時執(zhí)行;所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述 恢復處理,并且所述標記是(i)指示在所述應用程序異常終止時是否重新啟動所述應用程序的標記;(ii)指示當所述應用程序異常終止時所輸出的事件的標記;以及(iii)指示當所述應用程序異常終止時是否重新啟動播放裝置的標記。根據(jù)本發(fā)明的又一個方面,提供一種播放裝置,包括虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序;播放控制引 擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有關的數(shù)字流;以 及應用程序管理器,用于將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當?shù)?達生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,以及與所述虛擬機單元的執(zhí)行并行 地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標題有關 的所述數(shù)字流,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且在 所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí)行; 其中所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述恢復 處理,并且所述應用程序管理器根據(jù)所述管理信息中包含的所述標記執(zhí)行下列任意控制(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制。根據(jù)本發(fā)明的又一個方面,提供一種被讀入計算機的程序,所述計算機包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用 程序;播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題 有關的數(shù)字流;所述程序使所述計算機執(zhí)行如下步驟將所述應用程序從所述記錄介質讀 進所述工作存儲器,并且當?shù)竭_生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,該生存 周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且在所述生存周期期間所述 應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí)行;與所述虛擬機單元的執(zhí) 行并行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標 題有關的所述數(shù)字流;以及根據(jù)記錄于所述記錄介質中的所述管理信息中包含的標記執(zhí)行 下列任意控制(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制,其中所述標記定義了當所述應用程序異常終止時要執(zhí)行的恢復處理。根據(jù)本發(fā)明的又一個方面,提供一種用于計算機的播放方法,所述計算機包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用 程序;播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題 有關的數(shù)字流;所述播放方法使所述計算機執(zhí)行如下步驟將所述應用程序從所述記錄介 質讀進所述工作存儲器,并且當?shù)竭_生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,該 生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且在所述生存周期期間 所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí)行;與所述虛擬機單元 的執(zhí)行并行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所 述標題有關的所述數(shù)字流;以及根據(jù)記錄于所述記錄介質中的所述管理信息中包含的標記 執(zhí)行下列任意控制
(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制,其中所述標記定義了當所述應用程序異常終止時要執(zhí)行的恢復處理。根據(jù)本發(fā)明的又一個方面,提供一種系統(tǒng)集成電路,其被嵌入播放數(shù)字流的播放 裝置,該數(shù)字流記錄于記錄介質上且與記錄在所述記錄介質中的標題有關,所述系統(tǒng)集成 電路包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序;播放控制 引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有關的數(shù)字流; 以及應用程序管理器,用于將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當 到達生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,以及與所述虛擬機單元的執(zhí)行并 行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標題有 關的所述數(shù)字流,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且 在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí) 行;其中所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述 恢復處理,并且所述應用程序管理器根據(jù)所述管理信息中包含的所述標記執(zhí)行下列任意控 制(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制解決這些問題的方法通過一種記錄介質可以實現(xiàn)上述目的,在該介質中記錄有應用程序、數(shù)字流、與所 述應用程序和數(shù)字流有關的標題、以及管理信息,其中所述應用程序是用編程語言編寫的 用于虛擬機的程序,并且定義了一個生存周期,該生存周期在記錄在所述記錄介質中的標 題的播放周期內,并且在該生存周期內,所述應用程序可以被讀入所述虛擬機的工作存儲 器并且可以被所述虛擬機執(zhí)行,并且所述管理信息指示了與所述標題有關的所述數(shù)字流的 播放控制,在所述生存周期期間,與所述應用程序的執(zhí)行同時執(zhí)行所述數(shù)字流的播放控制。本發(fā)明的作用根據(jù)本發(fā)明的記錄介質,由于定義了在所述應用程序的生存周期期間與應用程序 的執(zhí)行同時執(zhí)行的數(shù)字流的播放控制,如果發(fā)生應用程序的啟動故障或者如果該應用程序 在執(zhí)行過程中異常終止,那么同時執(zhí)行的數(shù)字流的播放會繼續(xù)進行,其提供了一種狀態(tài),在 該狀態(tài)中“屏幕上仍然顯示某些圖像”。通過這種安排,可以避免裝置發(fā)生中斷這種最壞情 況。這至少在一定程度上可以使裝置的制造商感到放心。這種放心感可以把對質量問題放心不下的制造商推向通過Java(TM)應用程序的 播放裝置控制的開發(fā)。通過這種強有力的推動作用,播放裝置將會變得更便宜并且種類更 多,并且BD-ROM的內容也將得到豐富,而這也會引領內容相關行業(yè)的增長。附圖簡述
圖1顯示了本發(fā)明的播放裝置的一種使用形式;圖2顯示了用于BD-ROM的文件/目錄結構;圖3顯示了播放列表信息的構建;圖4顯示了 AV剪輯時間軸和PL時間軸之間的關系;
圖5顯示了通過四個Clip_information_file_name實現(xiàn)的批說明;圖6顯示了 PLMark信息的內部結構;圖7顯示了通過PLMarks定義章;圖8顯示了子路徑信息的內部結構;圖9顯示了如何在子播放項時間軸上做出同步說明和播放周期的定義;圖10顯示了電影對象的內部結構;圖11顯示了 BD-J對象的內部結構;圖12A顯示了存儲于Java(TM)存檔文件中的程序和數(shù)據(jù);圖12B顯示了類文件的內部結構;圖13顯示了盤內容中的狀態(tài)改變;圖14顯示了 HDMV模式中包含動態(tài)腳本的兩個標題;圖15顯示了 BD-J模式(BD-J對象)中包含動態(tài)腳本的標題的內部結構;圖16顯示了不包含播放列表管理表的一個標題;圖17顯示了從HDMV模式中標題到BD-J模式中標題的一個轉移;圖18顯示了從BD-J模式中標題到HDMV模式中標題的一個轉移;圖19顯示了 index, bdmv的內部結構;圖20A顯示了應用程序管理表的內部結構;圖20B顯示了應用程序管理表中包含的信息元素的含義;圖21A顯示了整個盤的時間軸;圖21B顯示了時間軸是如何構建的;圖22A和22B在整個BD-ROM的時間軸上顯示了由一個BD-J對象標識的標題播放 周期,而該BD-J對象是由標識符“bob j_id”標識的;圖23顯示了在圖22B中所示時間軸上定義的一種典型的生存周期;圖24顯示了包含三個標題的盤內容,所述三個標題為主標題、在線購物標題以 及游戲標題;圖25A和25B顯示了應用程序管理表和生存周期的實例;圖26顯示了三種運行屬性(預發(fā)送、自動運行和暫停)以及前一個標題的三種可 能的狀態(tài)(未運行、運行中和暫停);圖27A顯示了播放列表管理表的內部結構;圖27B顯示了播放列表管理表中包含的信息元素的含義;圖28顯示了轉移目的地標題的三種可能的狀態(tài)((i)不具有播放列表管理表; ii)具有播放列表管理表和自動播放以及(iii)具有播放列表管理表和預發(fā)送)與前一 個標題中PL的兩種可能的狀態(tài)(未播放以及正在播放)的六種組合;圖29A顯示了播放列表管理表和應用程序管理表的描述實例;圖29B顯示了如何基于圖29A中所示播放列表和應用程序管理表,使播放列表被 播放和執(zhí)行應用程序;圖30A顯示了播放列表管理表的描述的一個實例;圖30B顯示了是如何基于圖30A中所示腳本播放播放列表以及執(zhí)行應用程序;圖31A至31C顯示了播放列表時間軸和標題播放周期之間的關系;
圖32顯示了本發(fā)明的播放裝置的內部結構;圖33以層結構的方式顯示了 CPU24中的硬件和存儲于其中的軟件;圖34是由呈現(xiàn)引擎31對模塊管理器34所執(zhí)行的處理的說明;圖35顯示了應用程序管理器36所執(zhí)行的處理;圖36顯示了用戶事件管理器37至缺省操作管理器40 ;圖37顯示了 Java(TM)虛擬機39的內部結構;圖38顯示了應用程序終止的四種模式;圖39是一個流程圖,該圖顯示了應用程序管理器36的工作步驟;圖40顯示了播放列表管理表和應用程序管理表的具體實例;圖41A顯示了實施例2中BD-J對象的內部結構;圖41B顯示了錯誤管理表的內部結構;圖42顯示了錯誤管理表中五個標記的含義;圖43A顯示了其中寫有錯誤管理表的兩個標題(標題#1,標題#2);圖43B顯示了根據(jù)圖43A所示的應用程序和錯誤管理表進行的應用程序執(zhí)行和播 放列表播放的進行過程;圖44是一個流程圖,該圖顯示了實施例2中應用程序管理器36的工作步驟;圖45是一個流程圖,該圖顯示了實施例2中應用程序管理器36的工作步驟;圖46是一個流程圖,該圖顯示了由應用程序管理器36執(zhí)行的通知的工作步驟;圖47是一個流程圖,該圖顯示了實施例3中應用程序管理器36的工作步驟;圖48A顯示了基于母級別的選擇算法的內容;圖48B顯示了基于音頻語言的選擇算法的內容;圖48C顯示了基于對于視頻的播放器配置的選擇算法的內容;圖49是過程的說明,在該過程中,標題無界應用程序選擇PL ;圖50是一個流程圖,該圖顯示了由播放控制引擎32執(zhí)行的PL播放工作步驟;圖51是一個流程圖,該圖顯示了角改變步驟和向回跳讀/向下跳讀的工作步驟;圖52是一個流程圖,該圖顯示了當判斷出調用了向回跳讀/向下跳讀API時執(zhí)行的處理步驟;圖53是一個流程圖,該圖詳細顯示了呈現(xiàn)引擎31的處理步驟;圖54是一個流程圖,該圖顯示了子播放項的處理步驟。符號描述1 BD-ROM 驅動器2讀取緩沖器3解復用器4視頻解碼器5視頻平面6 P圖像解碼器7呈現(xiàn)圖像平面8合并單元9字體生成器
10I圖像解碼器11開關12互動圖像平面13合并單元14CLUT 單元15CLUT 單元16音頻解碼器22用戶事件處理單元23PSR 集合24CPU25腳本存儲器26本地存儲器33HDMV 模塊34模塊管理器35BD-J 模塊36用程序管理器37UO 控制器38Java(TM)虛擬機41PLMT 處理器42許可控制器52用戶類加載器53方法區(qū)域54工作存儲器55a, 55b, ... 55η 線程56a, 56b, ...56n Java (TM)堆棧
具體實施例方式實施例1接下來的內容描述了本發(fā)明的記錄介質的實施例。首先,將會描述本發(fā)明的記錄介質的使用形式。在圖1中,本發(fā)明的記錄介質是BD-R0M100。BD-R0M100用于向一個家庭 影院系統(tǒng)提供內容,其中該家庭影院系統(tǒng)包含播放裝置200、遙控器300和電視400。其中,遙控器300配有一些鍵,例如播放(Play)、停止(Stop)、暫停開始(Pause On)、暫停結束(Pause Off)、靜止結束(Still Off)向前播放(Forward Play,帶有速度的 說明)、向后播放(Backward Play,帶有速度的說明)、音頻變換(Audio Change)、字幕變換 (SubTitleChange)以及角度變換(Angle Change),并且這些鍵用于接收這些功能的指令, 還有一些鍵,例如向上移動(Move Up)、向下移動(MoveDown)向右移動(Move Right)以及 向左移動(Move Left),這些鍵用于接收在菜單操作期間使焦點發(fā)生移動的指令,另外還有 彈出鍵(Pop Up),用于接收顯示菜單的指令,以及用于接收數(shù)字輸入的數(shù)字鍵。到現(xiàn)在為止,已經對本發(fā)明的記錄介質的使用形式進行了描述。
接下來將描述本發(fā)明的記錄介質的制造??梢酝ㄟ^BD-ROM上文件系統(tǒng)的改進 實現(xiàn)本發(fā)明的記錄介質。圖2顯示了用于BD-ROM的文件/目錄結構。如圖中所示,對于 BD-R0M,在根目錄下提供BDMV目錄。BDMV 目錄具有擴展名為 “bdmv” 的文件(“index. bdmv”、“MovieObject. bdmv,,、 “BD-JObject. bdmv”)。在BDMV目錄下,有四個子目錄播放列表(PLAYLIST)目錄、CLIPNF 目錄、流(STREAM)目錄以及BDJA目錄。該播放列表目錄具有擴展名為“mpls”的文件 (“00001. mpls”、“00002. mpls”、“00003. mpls”)。CLIPNF 目錄具有擴展名為“clpi”的文件(“ 00001. clpi”、“00002. clpi”、“00003. clpi”)。流目錄具有擴展名為“m2ts” 的文件(“00001. m2ts”、“00002.m2ts”、“00003. m2ts”)。BDJA 目錄具有擴展名為 “jar” 的文件(“00001. jar”、“00002. jar”、“00003. jar”)。通過上面的描述可以知道,該目錄結構可以使得在BD-ROM上記錄不同類型的文件。在圖2 中,擴展名為“m2ts” 的文件(“00001. m2ts”、“00002. m2ts”、“00003. m2ts”,…)包含可以分為例如主剪輯和子剪輯的AV剪輯。主剪輯是通過將多個基本流復 用到一起而獲得的,這些基本流是例如視頻流、音頻流、構成字幕的呈現(xiàn)圖像流(PG流),以 及構成菜單的互動圖像流(IG流)。子剪輯是對應于一種基本流的數(shù)字流,其中這些基本流是例如音頻流、圖像流以 及文本字幕流(TextStream)。擴展名為 “clpi” 的文件(“00001. clpi、“00002. clpi”、 "00003. clpi",…)是與AV剪輯有一一對應關系的管理信息。作為管理信息,剪輯信息具 有關于如下方面的信息AV剪輯中流的編碼格式、幀速率、比特率、分辨率等等,以及指示 GOP的起始位置的“EP_map”。擴展名為“mpls”的文件(“00001. mpls”、“00002.mpls”、“00003.mpls”,…)是
包含播放列表信息的文件。播放列表信息是通過指出AV剪輯而定義播放列表的信息。圖3 顯示了播放列表信息的構造。如圖3的左手側所示,播放列表信息包含主路徑信息、PL Mark 信息以及子路徑信息。主路徑信息(MainPathO)包含多條如虛線箭頭“mpl”所指示的播放項信息 (PlayItemO)。播放項(Play Item)是通過在一個或多個AV剪輯時間軸上指定“In_time” 和“0ut_time”從而定義的播放周期。將多個播放項信息合并在一起就定義了一個包含多個 播放周期的播放列表(PL)。圖3中的虛線箭頭“mp2”指示了播放項信息的內部結構的局部 放大圖。如圖3中所示,播放項信息包含指示相應的AV剪輯的“Clip_inf0rmati0n_file_ name”、“In_time”以及“0ut_time”。圖4顯示了 AV剪輯和PL之間的關系。該圖的第一行 指示了 AV剪輯的時間軸,并且第二行指示了 PL的時間軸。PL信息包含三條播放項信息 “PlayItem#l”、“PlayItem#2”以及“Playltem#3”。PlayItem#UPlayItem#2 和 Playltem#3 的In_time和0ut_time定義了三個播放周期。通過安排這三個播放周期,就定義了一個不 同于AV剪輯時間軸的時間軸。這個時間軸就是第二行所示的PL時間軸。從中可以明顯地 看出,可以通過定義播放項信息從而定義一個不同于AV剪輯時間軸的時間軸。基本地,只指定了一個AV剪輯。但是,可以由一個批說明來指定多個AV剪輯。通 過播放項信息中的多個Clip_ijf0rmati0n_file_name獲得該批說明。圖5顯示了通過四 個Clipjnformatiorufilejame獲得的批說明。在圖5中,第一行到第四行指示了四個AV 剪輯時間軸(AV剪輯#1、#2、#3和#4的時間軸),并且第五行指示了一個PL時間軸。由包含在播放項信息中的四個Clipjnformatiorufilejame指定這四個時間軸。通過這樣一種構造,由包含在播放項中的In_time和Out_time定義了這四個播放周期,并且可以有選 擇性地播放這四個周期。這使得可以通過PL時間軸定義這樣一個周期(所謂的多角度周 期),其中可以提供多個可變換角度的圖像。PLMark信息(PLMarkO)是將PL時間軸上一段給定周期指定為一個章節(jié)的信息。 圖6顯示了 PLMark信息的內部結構。如圖中虛線“pml”所指示的,PLMark信息包含“ref_ to_PlayItem_Id” 和 “Mark_time_stamp”。圖 7 顯示了通過 PLMark 定義章節(jié)。在圖 7 中, 第一行指示一個AV剪輯時間軸,并且第二行指示一個PL時間軸。在圖7中,箭頭“pkl”和 “pk2”分別指示PLMark中一個播放項的說明(ref_t0_PlayItem_Id)和一個時間點的說明 (Mark_time_stamp) 0通過這些說明,在PL時間軸上定義了三個章節(jié)。到目前為止,已經解 釋了 PLMark。接下來將解釋子路徑信息。子路徑信息(SubPath())是通過指定子剪輯時間軸上的In_Time和0ut_Time從 而定義一個或多個播放周期的信息。圖8顯示了內部結構。如圖8中的虛線“shl”所指示 的,子路徑信息包含多個子播放項信息(SubPlayItemO)。如虛線“sh2”所指示的,子播放 項信息包含 “Clip_information_file_name”、“ In_time”、“Out_time”、“Sync_PlayItem_ Id” 以及"Sync_start_Pts_of_PlayItem”。 由 Clip_information_file_name”、‘‘In_ time”禾口 0ut_time,,指定子剪輯時間軸上的 In_time 和 0ut_time?!癝ync_PlayItem_Id,,和 “Sync_Start_PtS_0f_PlayItem”用于同步說明以將子剪輯時間軸上的播放周期與PL時間 軸同步。通過該同步說明,子剪輯時間軸和PL時間軸同步進行。圖9顯示了如何做出同步說明和在子播放項(Sub Play Item)時間軸上定義一 個播放周期。在圖9中,第一行指示了 PL時間軸,并且第二行指示了子播放項時間軸。在 圖9中,SubPlayItem. In_time和SubPlayItem. 0ut_time分別指示了播放周期的開始點 和結束點。由此可以理解,播放周期也是被定義在子剪輯時間軸上。對應于箭頭Snl的 Sync_PlayItem_Id指示播放項的同步說明,并且對應于箭頭sn2的Sync_start_Pts_of_ PlayItem指示PL時間軸上播放項中一個時間點的說明。BD-ROM上的播放列表信息的特征在于它可以定義一個多角度周期和一個同步周 期,其中在該多角度周期內可以在多個AV剪輯之間切換,并且在該同步周期內AV剪輯可以 與子剪輯之間同步。上述的剪輯信息和播放列表信息可以歸類為“靜態(tài)腳本”。這是因為剪 輯信息和播放列表信息定義了一個PL,而該PL是一個靜態(tài)播放單元。上述是對靜態(tài)腳本的 描述。接下來描述“動態(tài)腳本”。動態(tài)腳本是一種動態(tài)地定義AV剪輯的播放控制的腳本 數(shù)據(jù)。這里,“動態(tài)地”意味著播放控制可以根據(jù)播放裝置的狀態(tài)變換或用戶通過鍵盤輸入 的事件進行變換。BD-ROM假定了兩種模式作為播放控制的操作環(huán)境。第一種模式是一種類 似于DVD播放裝置的操作環(huán)境的操作環(huán)境,并且是一種基于命令的執(zhí)行環(huán)境。第二種模式 是一種Java(TM)虛擬機的操作環(huán)境。在這兩種操作環(huán)境中,第一種操作環(huán)境稱作HDMV模 式,第二種操作環(huán)境稱作BD-J模式。由于這兩種工作環(huán)境的存在,所以通過假定兩種操作 環(huán)境中的任意一種寫動態(tài)腳本。假設HDMV模式的動態(tài)腳本稱作電影對象,并且由管理信息 對其進行定義。另一方面,假定BD-J模式的動態(tài)腳本稱作BD-J對象。首先將解釋電影對象。
〈電影對象〉電影對象存儲在文件“Movie Object. bdmv”中。圖 10 顯示了 Movie Object, bdmv 的內部結構。如圖10的最左側部分所示,MovieObject. bdmv包含指示編碼序列“M0BJ”的 “type_indicator”、“version_number” 以及一個或多個電影對象“Movie ObjectsO ”。圖 10中的虛線vhl指示了電影對象的內部結構的局部放大圖?!癕ovieObjectsO ”包含指示 其自身數(shù)據(jù)長度的“l(fā)ength”、指示其中所含電影對象的數(shù)量的“nUmber_0f_m0bjs”,以及 其數(shù)量由number_0f_m0bjS指示的多個電影對象。由標識符mobj_id標識電影對象,而這 些電影對象的數(shù)量由number_0f_m0bjS指示。圖10中的虛線vh2指示了由標識符mobj_id 標識的一個給定Movie Object [mobj_id]的內部結構的局部放大圖。如虛線所指示的,電影對象包含“resume_intention_flag”,它指示在執(zhí)行一次菜單調用之后是否繼續(xù)播放;“menU_call_maSk”,它是指示是否應該屏蔽菜單調用的信 息;“Title_search_flag”,它指示是否應該屏蔽標題搜索功能;“number_of_navigation_ command",它指示導航命令的數(shù)量;以及其數(shù)量由“number_of_navigation_co_and”指示 的多個導航命令。導航命令序列包含實現(xiàn)以下功能的命令條件轉移;設置播放裝置中的狀態(tài)寄存 器;獲得該狀態(tài)寄存器中設置的值等等。以下是可以寫入電影對象的命令。PlayPL 命令格式=PlayPL (第一變量,第二變量)作為第一變量的播放列表號可以用于指示一個將被播放的PL。包含在PL中的播 放項、PL中的給定時間、一個章節(jié)或者一個掩碼,作為第二變量可以用于指示播放起始位置。使用播放項在PL時間軸上指定播放起始位置的PlayPL函數(shù)被稱作 PlayPLatPlayItemO。使用一個章節(jié)在PL時間軸上指定播放起始位置的PlayPL函數(shù)被稱作 PlayPLatChapter()。使用時間信息在PL時間軸上指定播放起始位置的PlayPL函數(shù)被稱作 PlayPLatPlayItemO。JMP 命令格式JMP變量JMP命令用于這樣一個轉移該轉移丟棄當前正在執(zhí)行的動態(tài)腳本而執(zhí)行一個由 該變量指定的轉移目的動態(tài)腳本。JMP命令有兩種類型直接地指定轉移目的動態(tài)腳本的 直接指向類型;以及間接地指向轉移目的動態(tài)腳本的間接指向類型。電影對象中導航命令的描述格式類似于DVD中的導航命令的描述格式。因此,可 以有效地實現(xiàn)將盤內容從DVD上轉移到BD-ROM上。電影對象是一種在以下的國際出版物 中公開的現(xiàn)有技術。詳細內容可以參考國際出版物。國際公開 WO 2004/074976ο到目前為止,已經對電影對象進行了描述。接下來將描述BD-J對象。<BD_J 對象〉BD-J對象是在Java(TM)編程環(huán)境中寫出的BD-J模式中的一種動態(tài)腳本。
圖11顯示了 BD-J Object, bdmv的內部結構。如圖11的最左側所示,BD-J Object, bdmv 包含指示碼序列 “B0BJ,,的 “type_indicater”,“version_number,,以及一個或多個 BD-J對象“BD-J Object (),,。圖11中的虛線“bhl”指示了 BD-J ObjectO的內部結構的局 部放大圖?!癇D-J ObjectO”包含指示其自身數(shù)據(jù)長度的” length”、指示其中所包含BD-J 對象的數(shù)量的“number_of_bobjs ”,以及數(shù)量由number_of_bobjs所指示的多個BD-J對象。 通過標識符bobj_id標識數(shù)量由number_0f_b0bjS所指示的多個BD-J對象。圖11中的虛線bh2指示了由標識符bobj_id標識的一個給定BD-J Object [bob_id]()的內部結構的局 部放大圖。如帶有虛線指示的圖中所示,BD-J對象包含“resume_intent ion_f lag [bob j_ id],,、"menu_call_mask[bobj_id],,、"Title_search_flag[bobj_id],,、"Application_ Management_Table [bob j_id],,\)JsR "P1 ay 1 ist_Management_Tab 1 e [bob j_id],,。BD-J MM 也包含“resume_intention_flag,,、“menu_call_mask,,lii,/S."Title_search_flag",在這點 上BD-J對象大致上與電影對象相同。BD-J對象與電影對象之間的區(qū)別在于,在BD-J對象中命令不被直接寫。也就是 說,在電影對象中,控制過程是直接寫入導航命令中。與此不同地是,BD-J對象通過允許 Java(TM)應用程序的說明被寫入“Application_Management_Table[bobj_id] ” 從而間接 地定義了控制過程。通過這樣一種間接定義提供了對公用控制過程的有效共享,并且使得 多個動態(tài)腳本可以共享一個公用控制過程。另外,在電影對象中,根據(jù)寫入在電影對象中的用于命令執(zhí)行PL播放的導航命令 (PlayPl命令)執(zhí)行PL播放。與此不同地是,在BD-J對象中,通過將指示PL播放過程的 “App 1 ication_Management_Tab 1 e [bob j_id] ”包含到BD-J對象中從而使得PL播放過程被 寫入。而且,還可以通過將PL過程包含到從應用程序管理表指出的一個應用程序中,從而 寫入PL播放過程。也就是說,既可以通過將播放列表播放過程寫入到播放列表管理表中, 也可以通過將其寫入到應用程序中從而將該播放列表播放過程包含進來。這里,將對Java(TM)應用程序進行描述。Java(TM)應用程序包含一個或多個加 載到虛擬機的堆區(qū)域(也稱作工作存儲器)中的xlet程序。Java(TM)應用程序包含多個 xlet程序和數(shù)據(jù)。到目前為止,已經對Java(TM)應用程序的構造進行了描述。Java(TM)應用程序的重要主體是存儲在如圖2中所示的BDMV目錄下的BDJA目 錄中的Java(TM)存檔文件(00001. jar、00002. jar)。接下來將參考圖12A和12B描述 Java(TM)存檔文件?!碕ava (TM)存檔文件〉每個Java(TM)存檔文件(圖2中所示的00001. jar,00002. jar)都是通過將一個 或多個類文件和一個或多個數(shù)據(jù)文件合并在一起而形成的。圖12A顯示了存儲在存檔文件 中的程序和數(shù)據(jù)。通過將多個文件安排到橢圓框所指示的目錄結構中,由Java(TM)存檔器 對圖12A中所示的數(shù)據(jù)進行了配置。該橢圓框所指示的目錄結構包含根、Java(TM)以及圖 像目錄。common, pkg安排在根目錄下,類文件(aaa. class,bbb. class)安排在Java (TM)目 錄下,并且menu, jpg安排在圖像目錄下。Java(TM)存檔器通過將上述這些文件合成為一個 而形成每個Java(TM)存檔文件。當從BD-ROM中讀出這樣的類文件和數(shù)據(jù)時,會對它們進 行擴充并且將它們視作安排在目錄中的文件。每個Java(TM)存檔文件名字中的五位數(shù)字“zzzzz”指示了應用程序ID。當將這樣一個Java(TM)存檔文件被讀取到高速緩存中時,可 以通過參考附帶到文件名字上的數(shù)字來提取出任意一個Java(TM)應用程序所包含的程序 和數(shù)據(jù)。這些類文件(圖12A中所示的aaa. class、bbb. class)是對應于上述xlet程序的 類文件。對應于類文件的實例的xlet程序定義了 BD-J模式中的播放過程。xlet程序是這樣一種Java(TM)程序它可以使用符合Java(TM)媒體框架(JMF) 的接口,并且可以根據(jù)例如JMF的格式,執(zhí)行響應于鍵盤事件的處理。因為xlet程序可以執(zhí) 行JMF格式的處理,所以它可以通過生成對應于一個MPLS文件的實例(JMF播放器實例), 從而命令播放裝置播放一個播放列表。另外,xlet程序可以通過寫入對功能API的調用從 而命令BD-ROM播放裝置執(zhí)行 對于BD-ROM播放裝置來說是唯一的處理。此外,xlet程序可以執(zhí)行用于訪問一個WWW網站并且從該網站上下載內容的步 驟。這使得可以播放一些原創(chuàng)作品,其中這些作品是通過將所下載的內容與播放列表播放 結合到一起從而生成的。接下來將描述xlet程序的類文件。圖12B顯示了類文件的內部結構。如圖12B 中所示,類文件包含“常數(shù)池”、“接口”以及“方法1、2、3…η”。類文件中的方法可以分為以 下幾種一種方法(事件聽者方法),通過該方法可以預先記錄觸發(fā)一種操作的鍵盤事件; 用于命令JMF播放步驟的方法(JMF播放器實例的方法);以及調用BD-ROM播放裝置的功 能API的方法。在這些方法中,使用分配給他們自己的局部變量或者用于調用他們自己的 參數(shù),寫入這些用于計算等的步驟。到目前為止,已經對Java(TM)存檔文件進行了描述。 應該注意到,盡管在本實施例中,應用程序所包含的程序和數(shù)據(jù)存儲于Java(TM)存檔文件 中,但是這些程序和數(shù)據(jù)也可以存儲于LZH文件或zip文件中。到目前為止,已經對BD-J模式中的動態(tài)腳本進行了描述。
〈BD-R0M中的狀態(tài)改變>只讀盤中提供的盤內容,例如DVD視頻,具有一種以頂級菜單為中心的結構。這樣 一種盤內容中的狀態(tài)改變是唯一的,這是因為播放從頂級菜單標題轉移到每個標題并且隨 后返回到頂級菜單標題。圖13顯示了盤內容的狀態(tài)改變。圖13中的方框代表了標題。這 里,每個標題是對應于狀態(tài)改變中一個“狀態(tài)”的播放單元,并且該“狀態(tài)”對于盤內容來說 是唯一的。標題可以分為以下幾類加載BD-ROM后首先播放的“FirStPlayTitle”(首先播 放標題)、組成頂級菜單的“TopjiienuTitle”(頂級菜單標題)以及通用標題“Title”。圖 13中的箭頭jhl、jh2、jh3、jh4、jh5、jh6、jh7以及jh8象征性地指示了標題之間的轉移。 根據(jù)圖13中所示的狀態(tài)改變,在加載BD-ROM后馬山播放“FirstPlayTitle”,然后出現(xiàn)跳轉 至IJ “TopjiienuTitle”的轉移,并且然后等待頂級菜單上的選擇。在用于發(fā)行電影的記錄介 質(例如BD-R0M)的行業(yè)中,經常一加載這樣一種記錄介質就播放動態(tài)商標。該動態(tài)商標 象征著電影的制片商或發(fā)行人。“FirstPlayTitle”的作用就在于在加載BD-ROM之后立即 播放動態(tài)商標。然后,如果用戶選擇了菜單上的一個標題,那么就播放所選擇的標題。然后播放返 回到頂級菜單標題。反復執(zhí)行這樣一種播放步驟,直到彈出該BD-R0M。這是只有該盤內容 才有的狀態(tài)改變。具有這種狀態(tài)改變的標題包含HDMV模式中的動態(tài)腳本或BD-J模式中的動態(tài)腳 本。圖14顯示了包含HDMV模式中的動態(tài)腳本的兩個標題。圖14的第一行指示了一個由標識符“Title_id”標識的標題(Title_id)。第二行指示了一個電影對象(Movie Object)序列,其包含一個或多個構成標題的電影對象。第三行指示了電影對象所包含的導航命令 序列。圖13中所示的從一個標題到另一個標題的轉移是通過預先在一個電影對象中寫 入一個導航命令(JumpTitle命令)而實現(xiàn)的,該導航命令指示播放裝置跳轉到另一個標 題。另外,圖14的第四行指示了屬于該標題的播放列表。該播放列表與該標題之間的這種 從屬關系是通過預先在一個電影對象中寫入一個導航命令(PlayPL命令)而實現(xiàn)的,該導 航命令指示播放該播放列表。通過使一個播放列表屬于一個標題,對于HDMV模式中的標題,可以定義一個伴隨 有一個視頻播放的電影。這就是由HDMV模式中動態(tài)腳本所定義的標題的結構。接下來將描述包含BD-J模式中動態(tài)腳本的標題的內部構造。圖15顯示了包含 BD-J模式中動態(tài)腳本(BD-J對象)的標題的內部構造。第一行指示了一個由標識符“Title_id”標識的標題。第二行指示了組成該標題 的唯一 BD-J對象。第三行指示了 BD-J對象中提供的應用程序管理表和播放列表管理表。 第四行指示了一個由第三行中應用程序管理表操作的應用程序。該應用程序包含一種命令 播放裝置跳轉到另一個標題的方法(一種調用JumpTitle API的方法),如第五行所指示的 那樣。因此,如圖13中所示的跳轉到另一個標題的轉移是通過JumpTitleAPI調用方法而 實現(xiàn)的。另一方面,因為在第三行中寫入播放列表管理表,所以在執(zhí)行該應用程序的同時播 放一個播放列表,如第四行中所指示的那樣。該BD-J對象包含應用程序管理表和播放列表管理表。這使得可以在執(zhí)行應用程 序的同時執(zhí)行PL播放,如第四行中所指示的那樣。這種應用程序和PL播放的同時執(zhí)行是 BD-J模式中標題的一個特點。并不是所有的BD-J對象都包含播放列表管理表。播放列表管理表是一種任意的 成分。一些BD-J對象包含播放列表管理表,而其它BD-J對象不包含。圖16顯示了并不包 含播放列表管理表的標題。在這樣一個僅包含應用程序管理表但不包含播放列表管理表的 BD-J對象中,僅定義了應用程序操作,如第四行中所指示的那樣。通過這樣一種應用程序操 作的定義,就定義了一種標題,其中這種標題僅有控制步驟而并不伴隨有PL播放。圖14顯示了從HDMV模式中一個標題轉移到HDMV模式中一個標題。但是應該注意 至IJ,如圖17中所示,也可以實現(xiàn)從HDMV模式中一個標題轉移到BD-J模式中一個標題。類 似地,盡管圖15顯示了從BD-J模式中一個標題轉移到BD-J模式中一個標題,也可以實現(xiàn) 從BD-J模式中一個標題轉移到HDMV模式中一個標題,如圖18中所示。在上述的標題的內部結構中,由圖2中所示的index, bdmv定義標題所包含的電影 對象或BD-J對象。接下來將描述index, bdmv。index, bdmv是指示標題所包含的電影對象或BD-J對象的一個表。圖19顯示了 index, bdmv的內部結構。如圖19中所示,index, bdmv包含具有 值“INDX”的“type_indicat0r”、“verSi0n_number”、指示從文件起始位置到索引的相對 地址的 “Indexes_start_address” 以及 “Indexes () ”?!癐ndexes ()” 分別對應于不同的 標題。如圖 19 中虛線箭頭“ixl” 所示,“IndexesO” 包含“l(fā)ength”、“FirstPlayback() {FirstPlayback_mob j_id_ref},,、"TopMenuO {TopMenu_mob j_id_ref},,、“number_of_Titles” 以及 “Title
()... Title [number_of_Titles_l]() ”。"FirstPlaybackO {FirstPlayback_mob j_id_ref} " ^ FirstPlayTitle 的索弓丨,并且存儲該FirstPlayTitle所包含的電影對象的電影對象標識符參照值 (FirstPlayback_mobj_id_ref) ο "TopMenu () {TopMenu_mobj_id_ref},,是 TopMenuTitle 的索引,并且存儲該TopMenuTitle所包含的電影對象的電影對象標識符參照值(TopMenu_ mobj_id_ref)?!癟itle
()... Title [number_ of_Titles-l]() ” 是除 FirstPlayTitle 和 TopMenuTitle之外的標題的索引,并且它們的數(shù)量為number_of_Titie。"Title
()... Title [number_of_Titles-l]() ” 由標識符 Title_id 標識。由標識符Title_id標識的索引表示為Title[Title_id]()。圖19中的虛線ix2 指示了 Title[Title_id]()的局部放大圖。如圖19 中所示,"Title [Title_id] O ” 包含:"Title_Playback_Type [Title_ id] ”,它指示了標題播放類型,它是通過例如該“Title [Title_id]() ”是否包含一個轉移來 示出的;“Title_accesS_Flag[Title_id]”,它指示了是否允許執(zhí)行標題的服務函數(shù);以及 唯一地指示了該標題所包含的電影對象的“Title_mobj_id ref[Title_id]”。這里,如果標 題所包含的動態(tài)腳本是BD-J對象,那么由“Title_bob j_id_ref [Title_id] ”代替“Title_ mobj_id_ref[Title_id] ”。"Title_bobj_id_ref [Title_id] ” 唯一地指示了該標題所包含 的BD-J對象。下面的國際公開對Index, bdmv進行了詳細公開。詳細內容請參考國際公開。國際公開 WO 2004/025651 Al。〈應用程序管理表〉包含在BD-J對象表中的應用程序管理表和播放列表管理表是本實施例的主要元 素。接下來將對這些表進行詳細描述。首先,將要描述應用程序管理表(AMT)。圖20A顯示了應用程序管理表的內部結構。如圖20A中所示,應用程序管理表包 含“l(fā)ife_cycle”、"apli_id_ref”、“run_attribute,,以及"run_priority”。圖20B顯示了應用程序管理表所包含的信息元素的含義?!發(fā)ife_CyCle”指示了應用程序的“生存周期”?!癮pli_id_ref”通過與“應用程序標識符”一致寫入到其中的參照值指示了具有上 述生存周期的應用程序。該應用程序標識符由Java(TM)存檔文件中提供的作為文件名的 五位數(shù)字值“zzzzz”表示,。該五位數(shù)字值被寫入“apli_id_ref ”中?!皉ur^attribute”指示了應用程序在生存周期內的運行屬性。這些運行屬性可以 分為以下幾類自動運行、預發(fā)送以及暫停。"run_priority"指示應用程序在生存周期內的“運行優(yōu)先級”。BD-J對象使用這 些信息控制應用程序的運行。<生存周期>接下來將描述應用程序管理中所定義的生存周期。生存周期意味著這樣一個周期在該周期內,應用程序存活于虛擬機的工作存儲 器上,并且用BD-ROM的全部內容的時間軸代表該周期。這里,名詞“存活”指這樣一種狀 態(tài)其中已經將應用層程序所包含的xlet程序加載到工作存儲器中,從而可以由虛擬機執(zhí)行該應用程序。當在Java(TM)虛擬機上運行應用程序時,有一點很重要,那就是在時間軸上清楚地定義由應用程序提供的服務的起點和終點。應用程序管理表的“l(fā)ife_CyCle”中定義了 服務的這些起點和終點。下面的內容顯示了是如何對如圖13所示改變狀態(tài)的盤內容定義標題的生存周 期。假設在加載BD-ROM之后,以圖13中箭頭jhl、jh2、jh3、jh4…所指示的數(shù)字的上升的 順序進行轉移,并且彈出了 BD-R0M。可以將以加載為開始到以BD-ROM彈出為結束的連續(xù) 時間段視作一個時間軸。將該時間軸定義為整個盤的時間軸。圖21A顯示了整個盤的時間 軸。圖21B顯示了該時間軸是如何構建的。如圖21B中所示,整個盤的時間軸包含播放 FirstPlayTitle的周期;播放TopMenuTitle的周期;播放Title#l的周期……一個標題包 含一個或多個電影對象或一個BD-J對象。因此,可以將每個標題的播放周期定義為這樣一 個周期,期間激活了電影對象或BD-J對象中的任意一個對象的周期。也就是說,F(xiàn)irstPlayTitle, TopMenuTitle以及其它標題中的每一個都包含動態(tài) 腳本。因此,可以將每個標題的播放周期定義為這樣一個周期,期間可以將標題所包含的 電影對象或BD-J對象中的任意一個對象激活為當前電影對象或當前BD-J對象,并且可以 在播放裝置中對該對象進行解碼并執(zhí)行。圖22A在整個BD-ROM的時間軸上顯示了由BD-J 對象標識的標題播放周期,該BD-J對象由標識符“bob j_id”標識。這里,如果一個標題包 含由標識符“bob j_id”標識的BD-J對象,那么可以將BD-ROM時間軸上的激活了由標識符 “bobj_id”標識的BD-J對象的周期視作標題的播放周期。類似地,如果一個標題包含由標識符“mobj_id”標識的電影對象,那么可以將 BD-ROM時間軸上的激活了由標識符“mob j_id”標識的電影對象的周期視作標題的播放周期。激活了電影對象或BD-J對象的周期一直持續(xù)到執(zhí)行標題轉移(JumpTitle)。也 就是說,一直將動態(tài)腳本視作當前電影對象或當前BD-J對象,直到執(zhí)行了一個標題轉移 (JumpTitle),其中該動態(tài)腳本是執(zhí)行的目標。因此,將一直持續(xù)到電影對象或BD-J對象中 發(fā)生JumpTitle的周期視作標題播放周期。接下來將描述標題播放周期和PL時間軸之間的關系。如前面所述,在電影對象或 BD-J對象中,可以將PL播放步驟寫為處理步驟。如果已經寫入了 PL播放步驟,那么上述 PL時間軸的全部或部分屬于標題播放周期。假設在圖22A所示的例子中的BD-J對象中寫 入了一個播放列表管理表。那么,如圖22B中所示,PL時間軸屬于對應于BD-J對象的標題 播放周期。因為可以進一步在PL時間軸上定義多個章(章#1、#2、#3),所以BD-ROM時間 軸上存在有域(全部BD-ROM-Title-PL-Chapter)??梢允褂眠@些域從而寫入應用程序的生 存周期。這里應該注意到,因為播放列表播放與應用程序的執(zhí)行同時開始,所以標題轉移可 能發(fā)生在播放列表的播放過程中。在這種情況下,僅部分播放列表時間軸而不是整個播放 列表時間軸屬于一個標題播放周期。也就是說,究竟是僅部分播放列表時間軸還是整個播 放列表時間軸屬于一個標題播放周期取決于標題轉移發(fā)生的時間。圖23顯示了在圖22B中所示時間軸上定義的一種典型的生存周期。如圖23中 所示,有三種典型應用程序標題邊界應用程序,它的生存周期是一個標題;章節(jié)邊界應 用程序,它的生存周期是標題內的一個章節(jié);以及無邊界應用程序,它的生存周期是整個BD-ROM的時間軸。在這三種應用程序中,可以使用標題的標識符定義標題邊界應用程序的生存周 期。另外,可以使用下述兩種標識符的組合定義章節(jié)邊界應用程序的生存周期該章節(jié)所屬 于的標題的標識符和該章節(jié)的標識符。即使平臺正在運行,還是可以在被定義為標題或章節(jié)的生存周期結束之后從應用 程序重新獲得資源。這樣一種構建確保了可以重新獲得資源,并且由此穩(wěn)定了平臺的運行。接下來將通過一個具體的例子描述如何將生存周期寫入到應用程序管理表中,其 中該例子包含將在以后實現(xiàn)的用作材料的盤內容作為材料。用作材料的盤內容包含三種不 同類型的標題主圖像作品所包含的主標題(標題#1);在線購物所包含的在線購物標題 (標題#2);以及游戲應用程序所包含的游戲標題(標題#3)。圖24顯示了包含三種標題 的盤內容主標題、在線購物標題以及游戲標題。圖24的左手側顯示了 Index, bdmv,并且 圖24的右手側顯示了這三個標題。圖24的右手側的虛線框顯示了指示每個應用程序所述標題的從屬關系。在這三 個標題中,標題#1包含應用程序#1、應用程序#2以及應用程序#3。另外,標題#2包含應 用程序#3和應用程序#4,并且標題#3包含應用程序#5。在圖24所示的例子中,由標題#1 和標題#2都運行應用程序#3。圖25A顯示了每個應用程序的生存周期,而這些生存周期都是基于圖24的虛線框 所示的從屬關系而得到的。在圖25A中,水平軸指示標題播放周期,而垂直軸方向安排應用 程序的生存周期。這里,應用程序#1和應用程序#2僅屬于標題#1,并且因此這些應用程 序的生存周期限制在標題#1內。應用程序#4僅屬于標題#2,并且因此該應用程序的生存 周期限制在標題#2內。應用程序#5僅屬于標題#3,并且因此該應用程序的生存周期限制 在標題#3內。應用程序#3屬于標題#1和標題#2,因此該應用程序的生存周期延伸在標 題#1和標題#2上。圖25B顯示了標題#1、標題#2和標題3的應用程序管理表,其中這些 表是根據(jù)圖25A中所示生存周期而寫入的。按照這種方式寫入應用程序管理表之后,當啟 動標題#1的播放時將應用程序#1、應用程序#2以及應用程序#3加載到工作存儲器中。然 后,當啟動標題#2的播放時,將應用程序#1和應用程序#2從工作寄存器中刪除,這會導致 僅有應用程序#3保留在工作寄存器中。類似地,可以進行控制從而當啟動標題#2的播放 時將應用程序#4加載到工作寄存器中,并且當啟動標題#3的播放時,將應用程序#3和應 用程序#4從工作寄存器中刪除。進一步,可以進行控制從而當播放標題#3時將應用程序#5加載到工作寄存器中, 并且當標題#3的播放終止時,將應用程序#5從工作寄存器中刪除。通過這種構造,可以使得將應用程序加載到工作存儲器中的次數(shù)最小化。這是因 為如果在標題之間發(fā)生一個轉移,那么同時位于轉移源和轉移目的地中的應用程序會存儲 于工作存儲器中,而且不位于轉移源而僅位于轉移目的地中的應用程序也會加載到工作存 儲器中。這樣一種降低加載數(shù)據(jù)次數(shù)的構造使得可以實現(xiàn)無邊界應用程序,這種應用程序 使得人們并不會意識到標題之間的邊界。接下來將描述應用程序的運行屬性。這些運行屬性包含自動運行,它指示具有這 種屬性的應用程序會自動地開始運行;預發(fā)送,它指示具有這種屬性的應用程序不是自動 運行的目標但是可以存儲于虛擬機的工作存儲器中;以及暫停,它指示具有這種屬性的應用程序存儲于虛擬機的工作存儲器中但是并未分配給該應用程序CPU功率。當一個對應的標題發(fā)生轉移時,具有“自動運行”屬性的應用程序被加載到工作存儲器中并且被執(zhí)行。當一個標題轉移到另一個標題時,管理應用程序的管理體(應用程序 管理器)將一個應用程序加載到虛擬機的工作存儲器中并且執(zhí)行該應用程序,其中該應用 程序存活于轉移目的地標題中并且已經將它的運行屬性設置為自動運行。這意味著當標題 發(fā)生轉移時該應用程序自動地啟動運行。運行屬性“預發(fā)送”是一種連續(xù)屬性,并且指示轉移源標題中應用程序的狀態(tài)被保 持。這還是一種指示了可以執(zhí)行一個對應的應用程序的屬性。可以從另一個應用程序調用 運行屬性被設置為“預發(fā)送”的應用程序。當從另一個正在運行的應用程序中調用一個程 序時,管理體(應用程序管理器)判斷該應用程序的應用程序ID是否已經寫入到應用程序 管理表并且是否該應用程序的運行屬性被設置為“預發(fā)送”。如果該應用程序的運行屬性被 設置為”預發(fā)送”,那么管理體將該應用程序加載到工作存儲器中。如果調用目的地應用程 序的應用程序ID未寫入到應用程序管理表中,那么管理體并不將該應用程序加載到工作 存儲器中。只有那些屬性設置為“預發(fā)送”的應用程序才可以被從另一個程序中調用?!邦A 發(fā)送”是一種缺省的運行屬性,當沒有明確指明運行屬性時就指派給應用程序這種屬性。因 此,當應用程序的運行屬性為指示沒有說明的“一”時,這就意味著應用程序的運行屬性為 “預發(fā)送”?!皶和!敝甘玖私o具有這種屬性的應用程序分配了資源但是未給它分配CPU功率。 屬性“暫?!笔怯行У模缭谝韵路矫娈攬?zhí)行一個游戲標題時,實現(xiàn)通過一條便道的處理。圖26顯示了這三種運行屬性(預發(fā)送、自動運行和暫停)和前一個標題的三種可 能的狀態(tài)(未運行、運行中以及暫停)之間的組合。如果前一個狀態(tài)是“未運行”并且運行 屬性是“自動運行”,那么應用程序在轉移目的地標題中啟動。 如果前一個狀態(tài)是“未運行,,并且運行屬性是“預發(fā)送,,或“暫停”,那么不進行操 作并且保持該狀態(tài)。如果前一個狀態(tài)是“運行中”并且運行屬性是“預發(fā)送”或“自動運行”,那么不進 行操作并且保持該狀態(tài)。如果將運行屬性設置為“暫?!?,那么該應用程序的狀態(tài)是暫停。如果前一個狀態(tài) 是“暫?!辈⑶肄D移目的地標題的運行屬性是“暫?!?,那么就保持“暫?!薄H绻耙粋€狀態(tài) 是“暫?!辈⑶肄D移目的地標題的運行屬性是“預發(fā)送”或“自動運行”,那么在轉移目的地 標題中再繼續(xù)該應用程序。在應用程序管理表中定義生存周期和運行屬性使得可以執(zhí)行同 步控制以在標題播放周期期間運行Java(TM)應用程序。這使得可以實現(xiàn)和提供各種用于 播放圖像和執(zhí)行程序的應用程序。應該注意到,如果前一個狀態(tài)是“暫?!辈⑶肄D移目的地標題的運行屬性是“預發(fā) 送”,那么前一個狀態(tài)“暫停”可以被保持。最后,將描述每個應用程序的“運行優(yōu)先級”。運行優(yōu)先級的值為0到255。當存儲器資源變得短缺或當CPU負載較高時,應用程 序管理器可以使用運行優(yōu)先級來決定強制終止哪個應用程序,或者決定哪個應用程序重新 獲得資源。應用程序管理器終止具有低級別運行優(yōu)先級的應用程序,而保持具有高級別運行優(yōu)先級的應用程序的運行。還可以將運行優(yōu)先級用于對由于請求正在播放的一個PL從而彼此發(fā)生沖突的應用程序進行仲裁。這里假設一個應用程序正在對一個播放列表進行快進操作,而另一個應 用程序向該播放列表發(fā)出了暫停請求。那么,對分配給這兩個應用程序的運行優(yōu)先級的級 別進行比較。如果快進應用程序具有較高運行優(yōu)先級級別,那么就繼續(xù)進行該快進操作。如 果暫停請求應用程序具有較高運行優(yōu)先級級別,那么正在快進的PL就會被暫停。使用上述的生存周期、運行屬性以及運行優(yōu)先級,可以在編寫程序時將可以在虛 擬機上運行的應用程序的數(shù)量限制為預定的數(shù)量或更少。這使得應用程序可以穩(wěn)定地工 作。<播放列表管理表>到目前為止,已經描述了應用程序管理表。接下來將描述播放列表管理表。播放 列表管理表顯示了應該在應用程序的生存周期期間與每個應用程序的執(zhí)行同時進行的播 放控制。應用程序的運行是不穩(wěn)定的??赡軙l(fā)生啟動故障或異常終止。在本實施例中, 為每個應用程序生存周期都提供了一個播放列表管理表并將其作為發(fā)生啟動故障或異常 終止時發(fā)揮作用的失效保護機制。播放列表管理表是一種信息,它定義了當一個應用程序 生存周期開始時應該執(zhí)行的播放控制。這里所描述的播放控制是一種基于播放列表信息的 AV剪輯的播放。也就是說,通過執(zhí)行基于播放列表信息的播放控制,可以同時進行應用程序 的執(zhí)行和播放列表的播放。在前面我們曾經說過,為每個應用程序的生存周期都提供了一 個播放列表管理表。但是,這里應該注意到,播放列表管理表僅與標題邊界應用程序一致地 被提供。這是因為標題無邊界應用程序的生存周期延伸到所有標題,所以在標題無邊界應 用程序中無法控制同時進行應用程序的執(zhí)行和播放列表的播放。對于章節(jié)邊界應用程序來說,并不需要定義播放列表的播放。這是因為定義章節(jié) 邊界應用程序的生存周期是以該應用程序的執(zhí)行是從播放列表內一個章節(jié)開始為前提的。 通過上述內容我們可以理解,與包含一個或多個標題的生存周期一致地定義播放列表管理表。圖27A顯示了播放列表管理表的內部結構。如圖27A中所示,播放列表管理表包 含 “PL_id_ref ” 和 “Playback_Attribute,,。圖27B顯示了播放列表管理表所包含的信息元素的含義?!癙L_id_ref”通過與PL標識符一致地寫入到其中的參照值指示了在應用程序生 存周期期間可以被播放的PL。該PL標識符由一個在文件YYYYY. MPLS中提供的作為文件名 的五位數(shù)字值“YYYYY”所表示。其中寫入了 YYYYY的“PL_id_ref”指示了可以在一個對應 的標題中播放的PL。"Playback_Attribute"是類似于應用程序管理表中運行屬性的一種屬性,并且它 定義了當標題啟動時如何播放“PL_id_ref”中寫入的PL。PL的播放屬性可以分為以下幾 類“自動播放”、“預發(fā)送”等等?!白詣硬シ拧笔沁@樣一種屬性它指示當對應的標題發(fā)生轉移時,播放具有“自動播 放”屬性的播放列表。當一個標題轉移到另一個標題時,管理應用程序的管理體(應用程序 管理器)開始播放這樣一種播放列表可以在轉移目的地標題中播放該播放列表并且該播 放列表的播放屬性已經設置為自動播放。這意味著當標題發(fā)生轉移時其播放屬性被設置為自動播放的播放列表會自動地被激活。與運行屬性“預發(fā)送”的情況一樣,“預發(fā)送”也是一種連續(xù)屬性,并且指示轉移源標題中PL的狀態(tài)被保持?!邦A發(fā)送”還是一種指示可以播放一個對應的播放列表的屬性。 例如,假設將要連續(xù)播放兩個標題,并且轉移源標題的播放列表管理表中一個播放列表的 播放屬性設置為自動播放,并且在轉移目的地標題的播放列表管理表中,該播放列表的播 放屬性被設置為預發(fā)送。這里,假設可以播放該播放列表兩個小時,并且該播放列表播放一 小時之后發(fā)生轉移。在這種情況下,其中播放列表的播放屬性在轉移目的地標題中被設置 為預發(fā)送,轉移目的地標題對該播放列表的播放是從緊接著已經播放一小時部分之后的位 置開始的。由此我們可以理解,即使在標題之間發(fā)生轉移,通過將轉移目的地標題中一個播 放列表的播放屬性設置為預發(fā)送,就可以在轉移目的地標題中繼續(xù)播放該播放列表。這使 得多個轉移標題可以連續(xù)地播放一個公用的播放列表,從而使得可以容易地實現(xiàn)“在多個 標題中播放的公用播放列表”。當存在多個轉移目的地標題時,通過將這些轉移目的地標題 中播放列表的播放屬性設置為預發(fā)送,就可以在這些轉移目的地標題中繼續(xù)播放一個公用 的播放列表。這里應該注意到,因為不需要確保在標題的邊界處實現(xiàn)無縫播放,所以對于上述 在多個標題中播放一個公用播放列表這種情況,允許在轉移附近打斷播放列表的播放。另外,當另一個應用程序發(fā)出請求時,其播放屬性設置為“預發(fā)送”的一個播放列 表可以被馬上播放。當播放請求是從另一個正在運行的應用程序發(fā)出時,管理體(應用程 序管理器)判斷目標播放列表的PL_id_ref是否已經寫入到播放列表管理表并且是否該播 放列表的播放屬性被設置為“自動播放”或“預發(fā)送”。如果被設置為“自動播放”或“預發(fā) 送”,那么管理體將播放該播放列表。如果播放列表的PL_id_ref未寫入到播放列表管理表, 那么管理體就不播放該播放列表。當另一個應用程序發(fā)出請求時,只有那些其播放屬性設 置為“自動播放”或“預發(fā)送”的播放列表才可以播放?!邦A發(fā)送”是一種缺省播放屬性,當 沒有明確指明播放屬性時就給播放列表賦予這種屬性。因此,當應用程序的播放屬性為指 明沒有說明的“一”時,這就意味著該播放列表的播放屬性為“預發(fā)送”。圖28顯示了轉移目的地標題的三種可能存在的狀態(tài)((i)不具有播放列表管理 表(ii)具有播放列表管理表和自動播放;以及(iii)具有播放列表管理列表和預發(fā)送) 和前一個標題中PL的兩種可能存在的狀態(tài)(未播放以及正在播放)之間的六種組合形式。在圖28所示的這六種組合形式中,在“前一種狀態(tài)=未播放”和“轉移目的地標題 具有播放列表管理表,并且播放屬性為自動播放”的這種組合中,播放列表的播放在轉移目 的地標題中自動地啟動。另外,在“前一種狀態(tài)=正在播放”和“轉移目的地標題不具有播放列表管理表”這 種組合中,播放列表的播放在轉移目的地標題中停止。在除上述兩種之外的其它組合形式 中,轉移源標題中的狀態(tài)可以被保持。基于播放列表管理表,僅當在轉移源標題中未播放該 播放列表并且播放列表的播放屬性在轉移目的地標題中設置為自動播放時,才會啟動播放 列表的播放。因此,并不需要每次在標題之間發(fā)生轉移時都啟動播放列表的播放。因此,即 使在標題之間發(fā)生多次轉移,也可以使得啟動播放列表播放的次數(shù)最小化。接下來將參考圖29A中所示具體的例子,描述如何寫播放列表和應用程序管理 表。在該具體例子中,使用了兩個連續(xù)標題(標題#1和標題#2)。在標題#1的表中,將應用程序#1和應用程序#2寫為自動運行程序。在標題#2的表中,將應用程序#2和應用程序#3寫為自動運行程序。假設在標題#1的播放列表管理表中,將播放列表#1寫為自動播 放的播放列表,并且在標題#2的播放列表管理表中,將播放列表#2寫為自動播放的播放列 表。圖29B顯示了如何根據(jù)圖29A中所示的播放列表和應用程序管理表播放這些播放列表 以及執(zhí)行應用程序。根據(jù)按照上述方式設置的播放列表和應用程序管理表,當標題#1啟動時,應用程 序#1和#2自動地啟動,并且自動地啟動播放列表#1的播放。根據(jù)按照上述方式設置的播放列表和應用程序管理表,就應用程序#1而言,在表 中對標題#1進行了描述,但是在表中沒有對標題#2進行描述。因此,應用程序#1的執(zhí)行 就會停止。類似地,就播放列表#1而言,在表中對標題#1進行了描述,但是在表中沒有對 標題#2進行描述。因此,播放列表#1的播放就會停止。就播放列表#2和應用程序#3而言,在表中沒有對標題#1進行描述,但是在表中 對標題#2進行了描述。因此,播放列表#2的播放和應用程序#3的執(zhí)行會自動地啟動???以將一個轉移用于使將要播放的一個播放列表變?yōu)榱硪粋€播放列表。按照這種方式,通過 使用播放列表和應用程序管理表使得提前在編寫程序階段就可以在轉移定義改變將要播 放的播放列表的處理。另外在圖29A所示的例子中,應用程序#1、應用程序#2以及應用程序#3的運行優(yōu) 先級分別為200、128和200。這樣一種運行優(yōu)先級的分配使得可以裁決要被執(zhí)行的不同應 用程序之間的沖突,其中這些應用程序由于發(fā)出控制播放列表#1或播放列表#2的請求從 而彼此發(fā)生沖突。這里假設應用程序#1是對播放列表#1進行快進,而應用程序#2發(fā)出使 播放列表#1暫停的請求。那么,通過對應用程序管理表中分配給這些應用程序的運行優(yōu)先 級進行比較從而進行裁決。因此,應用程序#1對播放列表#1的控制得以繼續(xù),而拒絕了應 用程序#2提出的請求??梢栽诰帉懗绦螂A段定義這樣一個處理。在播放列表管理表中使 用運行優(yōu)先級使得播放裝置可以在出現(xiàn)播放列表所引發(fā)的沖突時進行裁決。接下來描述了播放列表管理表的描述的一個具體例子。圖30A顯示了播放列表管 理表的描述的一個例子。按照如下所述為兩個連續(xù)標題(標題#1、標題#2)寫出了表。在 標題#1的播放列表管理表中,將播放列表#1寫為自動運行播放列表,并且將播放列表#2 寫為可播放的播放列表。在標題#1的應用程序管理表中,將應用程序#1寫為自動運行應 用程序,并且將應用程序#2寫為可執(zhí)行的應用程序。在標題#2的播放列表管理表中,將播 放列表#2和播放列表#3寫為可播放的播放列表。在標題#2的應用程序管理表中,將應用 程序#3寫為自動播放應用程序。圖30B顯示了如何基于圖30A中所示的播放列表和應用 程序管理表而播放這些播放列表以及執(zhí)行這些應用程序。根據(jù)如上述方式設置的播放列表 和應用程序管理表,當標題#1啟動時,寫為自動運行應用程序的應用程序#1自動地啟動。 另外,因為在標題#1的應用程序管理表中將應用程序#2寫為可執(zhí)行應用程序,所以通過從 應用程序#1發(fā)出的調用ydl來啟動應用程序#2。在標題#2的應用程序管理表中,并沒有描述應用程序#1和#2,但是將應用程序 #3寫為了自動運行應用程序。因此,在標題#1和標題#2之間的邊界處,應用程序#1和#2 的執(zhí)行會停止,并且應用程序#3會自動地啟動。在標題#1的播放列表管理表中,將播放列 表#1和#2寫為可播放的播放列表。在這些可播放的播放列表中,給播放列表#1賦予了自動播放屬性。因此,播放列表#1在標題#1啟動時會自動地播放。在標題#1的播放列表管理表中,將播放列表#1和#2寫為可播放的播放列表。因 此,應用程序#1可以通過請求播放列表#2的播放從而停止播放列表#1的播放并且啟動播 放列表#2的播放,從而實現(xiàn)了播放列表改變。在標題#2的播放列表管理表中,將播放列表 #2和#3寫為可播放的播放列表,并且不存在附帶有自動播放屬性的播放列表。因此,在標 題#1啟動時自動地啟動的播放列表#1的播放在標題#1期間會持續(xù),但是在標題#2開始 時會自動地停止。但是,如果播放列表#2的播放在標題#1期間一直持續(xù),那么它在標題#2中也會 持續(xù)。在標題#2的播放列表管理表中,將播放列表#2和#3寫為可播放的播放列表。因此, 在標題#2中運行的應用程序#3可以通過請求播放列表#3的播放從而停止播放列表#2的 播放并且啟動播放列表#3的播放,從而實現(xiàn)了播放列表改變。接下來,將參考圖31A到31C描述如何通過播放列表管理表定義標題播放周期。圖31A顯示了一個標題的標題播放周期,其中該標題的播放屬性設置為自動播 放。如果播放屬性設置為自動播放,那么當標題的播放啟動時自動播放PL的播放也會啟 動。這里,即使應用程序正常運行并且正常終止,也會根據(jù)PL時間軸確定標題播放周期。圖31B顯示了這樣一種情況在播放列表管理表中播放屬性設置為自動播放,并 且應用程序異常終止。在該異常終止后,并不運行任何應用程序,但是會繼續(xù)自動播放Pi 的播放。在這種情況下也是根據(jù)PL時間軸確定標題播放周期。圖31C顯示了這樣一種情況,在播放列表管理表中播放屬性設置為自動播放,并 且主應用程序未能啟動。在這種情況下也是基于PL時間軸確定標題播放周期,這是因為自 動播放Pl會被播放而無論應用程序是否出現(xiàn)啟動故障。通過上述這種在播放列表管理表中將播放屬性設置為自動播放的安排,可以使得 即使啟動一個Java(TM)應用程序需要5到10秒,但是在啟動期間屏幕上會有顯示。也就 是說,即使啟動一個應用程序需要時間,但是在啟動期間屏幕上會有顯示。這就緩解了由應 用程序啟動的耗費時間的處理所導致的啟動延遲。通過定義應用程序和播放列表管理表使得可以進行同步控制以在標題播放期間 運行Java(TM)應用程序。這使得可以實現(xiàn)和提供多種用于播放圖像和執(zhí)行程序的應用程 序。到目前為止,已經對記錄介質進行了描述。接下來將描述本發(fā)明的播放裝置。圖32顯示了本發(fā)明的播放裝置的內部結構。本發(fā)明的播放裝置是基于圖32中所 示內部結構進行工業(yè)制造的。本發(fā)明的播放裝置主要包含兩個部分系統(tǒng)LSI和驅動裝置。 工業(yè)制造是通過將這兩部分裝入裝置的機柜和板中實現(xiàn)的。系統(tǒng)LSI是一種集成電路,它 包含用于執(zhí)行播放裝置的函數(shù)的多種處理單元。按照這樣一種方式制造出的播放裝置包含 BD-ROM驅動器1、讀取緩沖器2、解復用器3、視頻解碼器4、視頻平面5、P圖像解碼器6、呈 現(xiàn)圖像平面7、合并單元8、字體生成器9、1圖像解碼器10、開關11、互動圖像平面12、合并 單元13、CLUT單元14、CLUT單元15、音頻解碼器16、網絡設備17、本地存儲器18、讀取緩沖 區(qū)19、解復用器20、指令R0M21、用戶事件處理單元22、PSR裝置23、CPU24、腳本存儲器25、 本地存儲器26以及開關27。首先,將描述用于播放記錄于BD-ROM上的AV剪輯的器件(BD-R0M驅動器1至音 頻解碼器16)。
BD-ROM驅動器1執(zhí)行BD-R0M的加載/彈出以及對BD-R0M進行訪問。讀取緩沖器2是一種FIFO存儲器,其中從BD-ROM讀取的TS包按照先進先出的方 式存儲。
解復用器(De-mux) 3從讀取存儲器2中提取TS包,并且將TS包轉換為PES包。對 于通過這種轉換從而獲得的PES包。解復用器3將其中那些由CPU24對PID進行了設置的 PES包從通過轉換獲得的PES包中輸出到視頻解碼器4、P圖像解碼器6、I圖像解碼器10 以及音頻解碼器16中的任意一個。視頻解碼器4對從解復用器3輸出的多個PES包進行解碼,將其解碼成一種非壓 縮格式的圖像,并且將這些圖像寫到視頻平面5上。視頻平面5是一種用于存儲非壓縮格式圖像的平面。該平面是播放裝置中一種用 于存儲屏幕畫面的象素數(shù)據(jù)的存儲區(qū)域。視頻平面5的分辨率是1920x1080。存儲于視頻 平面5中的圖像數(shù)據(jù)包含由音頻解碼器16比特YUV值表示的象素數(shù)據(jù)。在視頻平面5中, 可以對視頻流中每幀播放圖像進行縮放。這里,“縮放”是指將每幀播放圖像的尺寸變?yōu)橐?頻平面5的1/4 (四分之一)和1/1 (全屏)??梢栽贐D-J模式中根據(jù)CPU24的指令執(zhí)行這 樣一種縮放。這使得可以通過在一個角落或以全屏方式等等顯示視頻流的播放圖像從而實 現(xiàn)對屏幕的不同安排。P圖像解碼器6將從BD-ROM讀出的呈現(xiàn)圖像流解碼為非壓縮圖像,并且將這些非 壓縮圖像寫入到呈現(xiàn)圖像平面7上。對圖像流的解碼產生出現(xiàn)在屏幕上的字幕。呈現(xiàn)圖像平面7是一種具有一個屏幕大小的存儲器區(qū)域,并且可以存儲一個屏幕 的非壓縮圖像。視頻平面5的分辨率是1920x1080。存儲于呈現(xiàn)圖像平面7中的非壓縮圖 像的每個象素都是由一個8比特索引顏色(inde color)表示。在使用CLUT (顏色查詢表) 對索引顏色進行轉換之后就可以顯示存儲于呈現(xiàn)圖像平面7中的非壓縮圖像。合并單元8將存儲于視頻平面5中的非壓縮圖像數(shù)據(jù)(i)與存儲于呈現(xiàn)圖像平面 7中的數(shù)據(jù)合并到一起。字體生成器9使用字符字體將包含在文本ST流中的文本代碼擴展為位圖,并且將 這些位圖寫到呈現(xiàn)圖像平面7上。I圖像解碼器10將在HDMV模式中從BD-ROM或本地存儲器18讀出的IG流解碼為 非壓縮圖像,并且將這些非壓縮圖像寫到互動圖像平面12上。開關11有選擇地將字體生成器9生成的字體序列或通過P圖像解碼器6進行解 碼從而得到的圖像寫到呈現(xiàn)圖像平面7上。互動圖像平面12存儲那些由I圖像解碼器10進行解碼從而得到的非壓縮圖像。 互動圖像平面12還存儲那些應用程序在BD-J模式中繪制的字符和圖像。合并單元13將存儲于互動圖像平面12中的數(shù)據(jù)與從合并單元8中輸出的合成圖 像(非壓縮圖像數(shù)據(jù)和存儲于呈現(xiàn)圖像平面7中數(shù)據(jù)的結合)合并在一起。這種合并使得 由應用程序寫到I圖像解碼器10上的字符和/或圖像可以疊加到非壓縮圖像數(shù)據(jù)上。CLUT單元14將存儲于視頻平面5中的非壓縮圖像的索引顏色轉換為Y、Cr和Cb 值。CLUT單元15將存儲于互動圖像平面12中的非壓縮圖像的索引顏色轉換為Y、Cr 和Cb值。
音頻解碼器16對從解復用器3輸出的PES包進行解碼,并且按照非壓縮格式輸出 音頻數(shù)據(jù)。到目前為止,已經對用于播放AV剪輯的器件進行了描述。接下來將描述與BD-J模式中操作相關的器件(網絡設備17至解復用器20)。網絡設備17用于實現(xiàn)播放裝置中的通信功能。當BD-J模式中的Java(TM)應用 程序指定一個URL時,網絡設備17就會與具有該URL的網站建立TCP連接、FTP連接等等。 建立這樣一種連接使得該Java(TM)應用程序可以從該網站下載數(shù)據(jù)。本地存儲器18是一種用于存儲元數(shù)據(jù)以及由除BD-ROM之外的其它記錄介質或通 信介質提供的內容的硬盤,這些內容例如通過網絡設備17建立的連接從網站上下載的內 容。該元數(shù)據(jù)用于通過將下載內容限制在本地存儲器18中從而對這些下載內容進行管理。 BD-J模式中的一個應用程序可以通過訪問本地存儲器18從而使用下載內容的一段執(zhí)行多 種過程。讀取緩沖器19是一種FIFO存儲器。如果存儲于本地存儲器18中的下載內容包 含一個子剪輯,那么讀取緩沖器19就將按照先進先出的方式存儲該子剪輯所包含的TS包。解復用器(De-mux) 20從讀取緩沖器19中提取TS包,并且將這些TS包轉換為PES 包。對于通過這種轉換從而獲得的PES包,解復用器3將其中那些具有期望的PID的PES包 從通過轉換獲得的PES包中輸出到字體生成器9、I圖像解碼器10以及音頻解碼器16中。通過網絡設備17到解復用器20的上述操作,可以按照與記錄于BD-ROM上內容相 同的方式對Java(TM)應用程序從網絡下載的內容進行播放。接下來將描述用于實現(xiàn)播放 裝置中集成控制的器件(指令R0M21至開關27)。指令R0M21存儲有定義了播放裝置的控制的軟件。用戶事件處理單元22將用戶事件輸出到CPU24,所述用戶事件是通過遙控器上或 播放裝置的前面板上的鍵盤操作指示的。PSR集合23是一種嵌入到播放裝置中的寄存器,并且包含64個播放器狀態(tài)寄存器 (PSR)和4096個通用寄存器(GPR)。在播放器狀態(tài)寄存器中所設置的值中(所設置的值稱 作PSR),PSR4和PSR8用于表示當前播放位置。PSR4被設置為從1到100的值,以指示當前播放位置所屬的標題,而設置為0時,
用于指示當前播放位置屬于頂級菜單。當PSR5被設置為從1到999的值,以指示當前播放位置所屬章節(jié)的章節(jié)號,而設 置為OxFFFF時,用于指示播放裝置中的章節(jié)號是無效的。PSR6被設置為從1到999的值,以指示當前播放位置所屬的PL(當前PL)的PL號。PSR7被設置為從1到255,以指示當前播放位置所屬的播放項(當前播放項)的 播放項號。PSR8被設置為從1到OxFFFFFFFF,以使用45KHZ的時間精度指示當前播放位置 (當前PTM(呈現(xiàn)時間))。使用上述的PSR4至PSR8,可以在圖21A中所示的整個BD-ROM的 時間軸上標識當前播放位置。CPU24運行存儲于指令R0M21中的軟件并且控制整個播放裝置?;谟脩羰录?理單元22輸出的用戶事件和PSR集合23中不同PSR中設置的值,控制的內容動態(tài)地進行改變。腳本存儲器25存儲當前PL信息和當前剪輯信息。當前PL信息是記錄在BD-ROM上的多條PL信息中作為當前處理目標的那條PL信息。當前剪輯信息是記錄在BD-ROM上 的多條剪輯信息中作為當前處理目標的那條剪輯信息。本地存儲器26是一種高速緩沖存儲器,用于暫時存儲記錄在BD-ROM上的數(shù)據(jù)從 而彌補從BD-ROM讀取數(shù)據(jù)時的緩慢性。由于有本地存儲器26的存在,可以在BD-J模式中 高效地執(zhí)行應用程序。開關27用于有選擇地將從BD-ROM或本地存儲器中讀取的數(shù)據(jù)輸入到讀取緩沖器 2、讀取緩沖器19、腳本存儲器25和本地存儲器26中的任意一個。到目前為止,已經描述了本實施例的播放裝置的硬件結構。接下來將描述本實施 例的播放裝置的軟件結構。圖33按照層結構的形式顯示了硬件和存儲于CPU24中的軟件。如圖33中所示,播放裝置的層結構包含a)作為BD播放器設備的第一層;b)作為BD播放器模型的第二層;以及c)作為應用程序運行時間環(huán)境的第三層。圖32中所示播放裝置的硬件結構屬于第一層。作為BD播放器設備的第一層包含 一個“解碼器”,它包含視頻解碼器4、P圖像解碼器6、I圖像解碼器10以及音頻解碼器16 ; 一個“平面”,它包含視頻平面5、呈現(xiàn)圖像平面7以及互動圖像平面12 ;BD-ROM, BD-ROM的 文件系統(tǒng);本地存儲器18以及本地存儲器18的文件系統(tǒng)。作為BD播放器模型的第二層包含b2)包含播放控制引擎32的層;以及b 1)包含虛擬文件系統(tǒng)30和呈現(xiàn)引擎31的層,并且該層向高于其自身的層提供功 能的API。作為應用程序運行時間環(huán)境的第三層包含Cl)其中具有模塊管理器34的層;c2)其中具有HDMV模塊33和BD-J模塊35的層。在圖33中所示的層模型中,模塊管理器34位于最上層。模塊管理器34具有一個 直接通向播放控制引擎32的旁路url,該旁路越過了 HDMV模塊33和BD-J模塊35。在如 圖33中所示的層模型中,由于該旁路的存在,模塊管理器34的形狀為一個倒寫的字符“L”, 并且使用戶事件管理器37嵌入到其中。BD-J模塊35是一種Java(TM)平臺,具有以Java(TM)虛擬機38為中心的構造。 多種系統(tǒng)程序和應用程序都在該Java(TM)虛擬機38所包含的工作存儲器中工作。位于 Java (TM)虛擬機38之上的應用程序管理器36和時間聽者管理器39 (缺省操作管理器40) 都是這種系統(tǒng)程序。應用程序管理器36包含一個PLMT處理器41。另外,在BD-J模塊35 和播放控制引擎32之間有一個許可控制器42。首先將描述屬于第二層的虛擬文件系統(tǒng)30至模塊管理器34。圖34顯示了虛擬文 件系統(tǒng)30到模塊管理器34所執(zhí)行的處理。虛擬文件系統(tǒng)30是一種用于對存儲于本地存儲器18中的下載內容按照BD-ROM的盤內容的處理方式進行處理的一種虛擬文件系統(tǒng)。存儲于本地存儲器18中的下載內容 包含子剪輯、剪輯信息以及播放列表信息。下載內容中的播放列表信息與記錄在BD-ROM 上的播放列表信息的區(qū)別在于,它可以指定剪輯信息而無論這些剪輯信息是存儲于BD-ROM 上還是存儲于本地存儲器18上。并且對于這種指定,虛擬文件系統(tǒng)30上的播放列表信息 不需要通過全路徑指定BD-ROM或本地存儲器18上的一個文件。這是因為BD-ROM或本 地存儲器18上的文件系統(tǒng)被視作一種虛擬文件系統(tǒng)(虛擬文件系統(tǒng)30)。因此,通過這 里所指定的作為存儲剪輯信息的文件的文件體的五位數(shù)值,可以將播放項信息中的Clip_ Information_file_name 禾口子播方文項信息中的 Clip_Information_file_name 用于指定虛 擬文件系統(tǒng)30或BD-上的一個AV剪輯。對于通過虛擬文件系統(tǒng)30從本地存儲器18中讀 取的數(shù)據(jù),當將這些數(shù)據(jù)動態(tài)地與存儲于BD-ROM中的數(shù)據(jù)合并到一起時,可以生成多種形 式的播放。在本實施例中,因為將本地存儲器18和BD-ROM合并的盤內容與BD-ROM的盤內 容同等對待,所以可以認為“BD-R0M”也指一種虛擬記錄介質,并且這種虛擬記錄介質是本 地存儲器18和BD-ROM的合并。呈現(xiàn)引擎31執(zhí)行AV播放功能。播放裝置中的AV播放功能是一組從⑶和DVD播放器繼承而來的傳統(tǒng)功能。這些AV播放功能包含播放、停止、暫停開始、暫停結束、靜止結 束、向前播放(具有速度說明)、向后播放(具有速度說明)、視頻變換、字幕變換以及角度 變換。為了實現(xiàn)這些AV播放功能,呈現(xiàn)引擎31控制視頻解碼器4、P圖像解碼器6、1圖像 解碼器10以及音頻解碼器16從而對對應于一段期望時間的一部分AV剪輯進行解碼,并且 這部分AV剪輯已經被讀取到讀取緩沖器2中。這里,期望時間可以是由PSR8(當前PTM) 指定的時間。通過這種構造,可以播放對應于任意一段時間的一部分AV剪輯。播放控制引擎(PCE)32所執(zhí)行的功能包含(i)播放列表播放控制功能;以及 ( )通過PSR集合23從而獲得和設置狀態(tài)的狀態(tài)獲得/設置功能。在呈現(xiàn)引擎31所執(zhí)行 的AV播放功能中,播放列表播放控制功能是根據(jù)當前PL信息和剪輯信息而執(zhí)行的播放啟 動和播放停止等等。該功能(i)和(ii)響應于由HDMV模塊33、模塊管理器34和BD-J模 塊35發(fā)出的功能調用而執(zhí)行。也就是說,如果播放控制引擎32接收到命令它播放一個PL的功能調用,那么它就 通過虛擬文件系統(tǒng)30,從BD-ROM或本地存儲器18中讀取對應于該功能調用中所指定的PL 的播放列表信息。然后,播放控制引擎32參考該段播放列表信息中包含的播放項信息,通 過虛擬文件系統(tǒng)30從BD-ROM或本地存儲器18中讀取該播放項信息的Clip_Inf0rmati0n_ filename中敘述的剪輯信息。圖34中的符號 1、 2、 3以及◎ 4分別指示了以下內 容通過虛擬文件系統(tǒng)30讀取播放列表信息(◎ 1);對播放列表信息所包含的播放項信息 進行解碼(◎ 2);通過虛擬文件系統(tǒng)30讀取剪輯信息(◎ 3);對剪輯信息進行解碼(◎ 4)。 在按照上述方式對剪輯信息和播放列表信息進行解碼之后,通過虛擬文件系統(tǒng)30將AV剪 輯所包含的TS包轉移到呈現(xiàn)引擎31。在將TS包轉移到呈現(xiàn)引擎31之后,呈現(xiàn)引擎31將 AV剪輯所包含的TS包輸出到解碼器從而可以在平面上顯示它們。圖34中的符號☆ 1、☆ 2、 ☆ 3、^ 4以及☆ 5分別指示以下內容讀取AV剪輯所包含的TS包(☆ 1、^ 2);從虛擬文 件系統(tǒng)30將這些TS包轉移到呈現(xiàn)引擎31(^3);將這些TS包輸出到解碼器(☆ 4);以及 將通過解碼器得到的解碼結果輸出到平面(☆ 5)。HDMV模塊33是用于執(zhí)行HDMV模式的主體。如果HDMV模塊33從模塊管理器34接收到一個激活請求(activate (mobj_id),其中mobj_id指定了一個轉移目的地 MovieObject (電影對象)),那么它就將該MovieObject (mobj_id)存儲到本地存儲器26 中,對該MovieObject中寫入的導航命令進行解碼,并且根據(jù)解碼結果向播放控制引擎32 發(fā)出一個功能調用。在圖34中,帶有符號V2、V3以及V4的箭頭分別指示以下內容 從模塊管理器34接收“activate (mobj_id)”(V2);對MovieObject中寫入的導航命令 進行解碼(V3);以及向播放控制引擎32發(fā)出一個功能調用(V4)。模塊管理器34持有 從BD-ROM讀取的Index, bdmv并且執(zhí)行轉移控制。該轉移控制包括向當前標題所包含 的動態(tài)腳本發(fā)出一個終止事件,以及向轉移目的地標題所包含的動態(tài)腳本發(fā)出一個激活 事件。如果一個MovieObject執(zhí)行一個指定title_id的JumpTitle (跳轉標題)命令 (JumpTitle (title_id)),那么模塊管理器34向當前標題所包含的MovieObject發(fā)出一個 終止事件,并且發(fā)出一個activate (mob j_id)事件從而激活對應于title_id的標題所包含 的MovieObject。在圖34中,帶有符號▽()、▽ 1以及V2的箭頭分別指示以下內容執(zhí)行 一個JumpTitle命令(▽());模塊管理器34參考Index, bdmv ( V 1);以及發(fā)送一個通知從 而激活轉移目的地標題所包含的MovieObject ( V2)。這些工作步驟也適用于其中BD-J對 象調用JumpTitleAPI (JumpTitle (title_id))的情況。在這種情況下,向當前標題所包含 的BD-J對象發(fā)出一個終止事件,并且向BD-J模塊35發(fā)出一個activate (mobj_id)從而激 活對應于title_id的標題所包含的BD-J對象。到目前為止,已經描述了呈現(xiàn)引擎31至模塊管理器34。接下來將參考圖35描述 應用程序管理器36。圖35顯示了應用程序管理器36。每當標題之間發(fā)生轉移時,應用程序管理器36就會命令Java (TM)虛擬機38啟動 這樣一個應用程序它未在轉移源標題中運行,但是對于轉移目的地標題卻具有運行屬性 “自動運行”。同時,應用程序管理器36終止這樣一個應用程序它在轉移源標題中運行,但 是在轉移目的地標題中卻沒有生存周期。通過參考當前BD-J對象的應用程序管理表從而 進行這樣的啟動控制和終止控制。這里如果在標題之間發(fā)生一個轉移,那么模塊管理器34 會發(fā)出activate (bobj_id)的通知。當接收到該通知時,應用程序管理器36將當前BD-J 對象設置為對應于該bob j_id的BD-J對象,并且參考當前BD-J對象的應用程序管理器表。 這使得應用程序管理器36可以識別那些自動啟動和自動終止的應用程序。在圖35中,符 號女()、☆ 1、女2以及☆ 3分別指示以下內容發(fā)生一次TitleJump (標題跳轉)(☆ 0);通 知activate (bob j_id) (☆ 1);參考應用程序管理表(☆ 2);以及命令Java (TM)虛擬機38 啟動一個應用程序(☆ 3)。通過該啟動一個應用程序的命令,Java(TM)虛擬機38把xlet 程序從本地存儲器26讀取到工作存儲器(☆ 4、^ 5)。到目前為止,已經描述了應用程序管理器36。接下來將參考圖36描述用戶事件管 理器37至缺省操作管理器40。
用戶事件管理器37將用戶事件處理單元22接收到的用戶事件分為(i)播放控 制的用戶事件以及(ii)鍵盤事件。播放控制的用戶事件是用于發(fā)出以下命令的用戶事件 播放、停止、暫停開始、暫停結束、靜止結束、向前播放(具有速度說明)、向后播放(具有速 度說明)、視頻變換、字幕變換以及角度變換。鍵盤事件是指示按下了以下這些鍵的用戶事 件向上移動、向下移動、向右移動、向左移動以及數(shù)字鍵。用戶事件管理器37發(fā)出一個功 能調用,從而使播放控制引擎32根據(jù)播放控制的用戶事件執(zhí)行播放控制功能。該功能調用稱作UO (用戶操作),并且通過位于模塊管理器34的旁路上的UO控制器37a發(fā)送到播放控 制引擎32,而不通過HDMV模塊33和BD-J模塊35。這使得可以無延遲地執(zhí)行用于播放、停 止、暫停開始、暫停結束等等的播放控制。在圖36中,符號女1、^ 2以及☆ 3分別指示以 下內容用戶事件管理器37將用戶事件分為(i)播放控制的用戶事件以及(ii)鍵盤事件 (☆“☆2);以及根據(jù)播放控制的用戶事件被發(fā)送到播放控制引擎32的功能調用(女3)。Java(TM)虛擬機38將應用程序所包含的xlet程序加載到工作存儲器,對該xlet程序進行解碼,并且根據(jù)解碼結果控制較低的層。更具體地說,在對較低層的控制中, Java(TM)虛擬機38向BD中間件(middleware)(未示出)發(fā)出一種JMF方法,從而對應于 BD播放裝置的功能調用可以替換現(xiàn)有的功能調用,并且在該替換之后將該功能調用發(fā)送到 播放控制引擎32。事件聽者管理器39對鍵盤事件進行分析并且分發(fā)這些事件。圖36中的實線箭頭 1和 2指示了由事件聽者管理器39所進行的事件分發(fā)。如果要被分發(fā)的事件是已經 在xlet程序的事件聽者中登記了的鍵盤事件,那么事件聽者管理器39就將該事件分發(fā)到 由BD-J對象間接指向的一個xlet程序。xlet程序中的事件聽者具有對應于已經在其中登 記了的JMF的鍵盤事件。因此,可以通過這樣一種登記的鍵盤事件啟動該xlet程序。如果 要被分發(fā)的事件是未在事件聽者中登記的鍵盤事件,那么事件聽者管理器39就將該事件 分發(fā)到缺省操作管理器40。因為在BD-ROM播放裝置中可能會出現(xiàn)包含未在事件聽者中登 記的鍵盤事件的各種鍵盤事件,所以上述安排是用于對每種鍵盤事件都可以進行適當?shù)靥?理而不會出現(xiàn)故障。當事件聽者管理器39將未在xlet程序的事件聽者中登記的鍵盤事件分發(fā)到缺省 操作管理器40時,缺省操作管理器40向播放控制引擎32發(fā)出對應于該未在事件聽者中登 記的事件的一個功能調用。圖36中的箭頭 3指示了由缺省操作管理器40發(fā)出的該功能 調用。PLMT處理器41是應用程序管理器36的一個組成部分,并且如果從模塊管理器34 接收到activate (bobj_id),那么它就參考由bobj_id標識的BD-J對象的播放列表管理表。 并且如果將具有播放屬性“自動播放”的PL寫入到BD-J對象的播放列表管理表中,那么 PLMT處理器41就輸出到播放控制引擎32以播放該自動播放PL。但是,如果播放控制引擎 32發(fā)出一種指示PL播放的結束的通知事件,那么PLMT處理器41就會將發(fā)出該通知事件 的時刻認做標題結束點。圖36中的箭頭Δ1和Δ2分別指示了以下內容向播放控制引擎 32發(fā)出一個功能調用PLayPL(Al);從播放控制引擎32輸出一個通知事件(Δ 2)。以上就是對BD-J模塊35中層結構的全部描述。這里應該注意到,在本實施例中 省去了對許可控制器42的描述,我們會在實施例3中對其進行詳細描述?!碕ava (TM)虛擬機38的內部結構>接下來將描述Java (TM)虛擬機38的內部結構。圖37顯示了 Java (TM)虛擬機38 的內部結構。如圖37中所示,Java(TM)虛擬機38包含了如圖32所示的CPU24、用戶類加載 器52、方法區(qū)域53、工作存儲器54、線程55a、55b,...55η以及Java(TM)堆棧56a、56b,... 56η ο用戶類加載器52從本地存儲器26等等中讀取屬于BDJA目錄的Java(TM)存檔文 件中的類文件,并且將這些讀取的類文件存儲到方法區(qū)域53中。這種由用戶類加載器52對類文件的讀取是通過應用程序管理器36指定一個文件路徑并且命令用戶類加載器52按照該路徑讀取類文件而實現(xiàn)的。如果該文件路徑指示本地存儲器26,那么用戶類加載器52 從本地存儲器26將一個應用程序所包含的Java (TM)存檔文件中的一個類文件讀取到工作 存儲器上。如果該文件路徑指示虛擬文件系統(tǒng)30中的一個目錄,那么用戶類加載器52從 BD-ROM或本地存儲器18上將一個應用程序所包含的Java(TM)存檔文件中的一個類文件讀 取到工作存儲器上。圖35中所示的應用程序激活控制(☆ 3、☆4以及☆ 5)是通過用戶 類加載器52對類文件的讀取而實現(xiàn)的。如果所指定讀取的類文件并未存儲于本地存儲器 26,那么用戶類加載器52就通知應用程序管理器36出現(xiàn)一個讀取故障。方法區(qū)域53存儲由用戶類加載器52從本地存儲器26讀取的類文件。工作存儲器54被稱作堆區(qū)域,用于存儲各種類文件的實例。圖33中所示的應用程 序管理器36和事件聽者管理器39是位于工作存儲器54中的常駐應用程序。工作存儲器54 還存儲對應于存儲于方法區(qū)域53中的類文件的實例以及常駐類型實例。這些實例是應用 程序所包含的xlet程序。當這樣的xlet程序存儲于工作存儲器54中之后,應用程序就做 好了運行的準備。在圖33、35和36中所示的層模型中,工作存儲器54位于高于Java(TM) 虛擬機38的一個層。但是,按照這種方式描述工作存儲器54中的應用程序管理器36和事 件聽者管理器39是為了易于理解。實際上,線程55a、55b,…55η將應用程序管理器36和 事件聽者管理器39作為實例執(zhí)行。線程55a、55b,…55η是用于執(zhí)行存儲于工作存儲器54中的方法的邏輯執(zhí)行體。 線程55a、55b,…55η將存儲于本地變量或操作數(shù)堆棧中的變量作為操作數(shù)從而執(zhí)行計算, 并且將計算結果存儲到這些本地變量或操作數(shù)堆棧中。箭頭kyl、ky2以及kyn象征性地指 示了從工作存儲器54向線程55a、55b,*"55n提供的方法。盡管物理執(zhí)行體僅是一個CPU, 但是Java (TM)虛擬機中最多可以提供64個線程作為邏輯執(zhí)行體。只要邏輯執(zhí)行體的數(shù)量 不超過64,那么就可以生成新線程或刪除現(xiàn)有線程。在Java(TM)虛擬機38的工作期間可 以增加或降低工作線程的數(shù)量。因為在必要時可以增加線程的數(shù)量,所以可以允許多個線 程并行執(zhí)行一個實例,由此提高了該實例的執(zhí)行速度。在圖37中,CPU24和線程之間具有 “一對多”的關系。但是,如果有多個CPU,那么這種關系可以為“多對多”。線程δδ^δδ ^^-δδη 對這些方法的執(zhí)行是通過下述方式實現(xiàn)的 將該方法所包含的字節(jié)碼轉換為CPU24的 原生碼,并且將這些原生碼發(fā)送到CPU24。這里省略了對這種轉換為原生碼的描述,這是因 為這樣就偏離了本發(fā)明的主題?;谝粚σ坏年P系,與線程55a、55b,…55η —致地提供了 Java(TM)堆棧56a、 56b,…56η,并且每個堆棧都具有一個程序計數(shù)器(圖37中的PC)和一個或多個幀。該 “程序計數(shù)器”指示了當前執(zhí)行的實例的一個部分。該“幀”是一對一分配給對方法的調用 的堆棧系統(tǒng)區(qū)域。每幀包含用于存儲在有過一次的調用中使用的參數(shù)的“操作數(shù)堆?!保?以及該被調用的方法使用的“局部變量堆棧(圖37中的本地變量)”。因為每次執(zhí)行調用 時就會使一幀進入Java(TM)堆棧56a、56b,…56η,所以當一個方法遞歸調用其自身時也 會使一幀進入堆棧。當調用一個JMF播放器實例播放方法時,或當調用一個JumpTitle API 調用時,對應于該調用的一幀會進入Java(TM)堆棧56a、56b,…56η。作為參數(shù)存儲于這 些幀的操作數(shù)堆棧中的信息包含(i)播放方法將要播放的MPLS文件的文件名;(ii)指示 JumpTitle API調用的跳轉目的地的title_id等等。
接下來將詳細描述應用程序管理器36和它的組成部分PLMT處理器41如何在上 述的Java(TM)虛擬機38的內部結構中進行工作。在模塊管理器34輸出一個請求激活一個由bobj_id標識的BD-J對象的事件(activatred[bobj_id])之后,應用程序管理器36就將具有該bobj_id的BD-J對象設置 為當前BD-J對象,其中該應用程序管理器36是工作存儲器54中的一個實例。然后,應用 程序管理器36對轉移源標題中的執(zhí)行狀態(tài)和當前BD-J對象中應用程序的運行屬性進行檢 查,并且確定(i)要自動啟動的應用程序以及(ii)要自動終止的應用程序。確定⑴要自動啟動的應用程序是通過以下方式實現(xiàn)的在當前BD-J對象的應用 程序管理表中搜索在轉移源標題中未運行但是在當前BD-J對象中具有自動運行屬性的應 用程序的apli_id_ref。如果找到這樣的apli_id_ref,應用程序管理器36就命令用戶類 加載器52讀取屬于由該apli_id_ref標識的應用程序的Java(TM)存檔文件的類文件,這 使得可以在工作存儲器54中生成對應于該類文件的實例。這使得其生存周期位于當前標 題中的應用程序做好了啟動的準備。然后,當線程55a、55b,…55η被引發(fā)執(zhí)行該應用程序 的方法時,該應用程序就會啟動。確定(ii)要自動終止的應用程序是通過以下方式實現(xiàn)的在當前BD-J對象的 應用程序管理表中搜索在轉移源標題中運行但是在當前BD-J對象中并不具有生存周期的 應用程序的apli_id_ref。如果找到這樣的apli_id_ref,應用程序管理器36就終止具有 apli_id_ref的應用程序所包含的xlet程序。這使得可以重新獲得以下這些資源(i)工 作存儲器54中原來被該應用程序占據(jù)的一個區(qū)域,或者(ii) Java(TM)堆棧56a、56b,…, 56η中那些原來被用于執(zhí)行該應用程序的方法的幀。應用程序管理器36的一個組成部分PLMT處理器41對轉移源標題中的播放狀態(tài) 和當前標題中播放列表的播放屬性進行檢查,并且確定(i)要被自動播放的播放列表以及 (ii)要被自動終止的播放列表。確定(i)要自動播放的播放列表是通過以下方式實現(xiàn)的在播放列表管理表中搜 索在轉移源標題中未播放但是在當前標題中具有自動播放屬性的播放列表。如果找到這樣 的播放列表,PLMT處理器41就將要被播放的播放列表的Pl_id_ref作為參數(shù)從而執(zhí)行用于 播放列表播放的功能調用。通過執(zhí)行該調用,可以在Java(TM)堆棧56a、56b,"ien中生 成具有存儲在操作數(shù)堆棧中的Pl」d_ref的幀。并且線程55a、55b,"iSn執(zhí)行用于播放 列表的播放的功能調用。通過執(zhí)行該功能調用,呈現(xiàn)引擎31開始對該播放列表進行播放。確定(ii)要自動終止的播放列表是通過以下方式實現(xiàn)的在播放列表管理表中 搜索在轉移源標題中播放但是并未寫入到當前標題的播放列表管理表中的播放列表。如果 找到這樣的播放列表,PLMT處理器41就執(zhí)行一種用于停止播放該播放列表的功能調用,并 且從Java(TM)堆棧56a、56b,…56η中刪除對應于用于播放該播放列表的功能調用的幀。應用程序可以按照四種模式在工作存儲器54中終止。圖38顯示了應用程序終止 的這四種模式。在第一種模式中,當發(fā)生資源短缺并且應用程序管理器36發(fā)出一個終止事 件時應用程序終止(☆ 1)。在第二種模式中,當應用程序通過應用程序管理器36從另一 個應用程序接收到一個終止事件時該應用程序終止(☆ 2)。在第三種模式中,當應用程序 管理表中寫入的生存周期結束并且應用程序管理器36發(fā)出一個終止事件時應用程序終止 (☆3)。在第四種模式中,當應用程序自身激活終止處理時該應用程序終止(☆ 4)。在這四種模式中的三種中,由應用程序管理器36終止該應用程序。由此我們可以理解,應用程 序管理器36在控制應用程序的工作方面發(fā)揮了中心作用。如果發(fā)出一個終止事件不會使 應用程序終止,那么應用程序管理器36可以強制性地終止該應用程序從而重新獲得資源。 這種可以強制性重新獲得資源的權力是應用程序管理器36的一個特性。到目前為止,我們已經對BD-J模塊35的組成部分進行了描述。(流程圖的描述)上述內容只是對應用程序管理器36進行了概況性描述。圖39和40中詳細顯示 了應用程序管理器36的處理。接下來將參考流程圖更加詳細地描述應用程序管理器36的 處理步驟。圖39是顯示應用程序管理器36的步驟的流程圖。圖39所示的步驟包含一個主 環(huán)路,而該主環(huán)路包含步驟Si、S2、S3和S4。在步驟Sl中,對是否發(fā)生了一個標題跳轉進 行判斷。如果判斷出發(fā)生了一個標題跳轉,那么應用程序管理器36改變標題(步驟S7),參 考轉移目的地標題的應用程序管理表,并且終止在轉移源標題中運行但并不存在于轉移目 的地標題中的應用程序(步驟S8)。然后,應用程序管理器36參考轉移目的地標題的播放 列表管理表,并且終止正在轉移源標題中播放而并不存活于轉移目的地標題中的播放列表 (步驟S9)。然后,應用程序管理器36命令PLMT處理器41判斷是否有一個在轉移源標題中未 播放而在轉移目的地標題中具有自動播放屬性的PL(步驟S10)。如果判斷出有這樣一個 PL,那么PLMT處理器41就命令播放控制引擎32播放該自動播放PL (步驟Sll)。如果沒有 這樣的PL,那么就不播放自動播放PL。隨后的步驟包含步驟S12至S18,用于激活在轉移目的地標題中具有生存周期的 應用程序。在該工作步驟中,應用程序管理器36命令啟動一個自動運行應用程序(步驟 S14),并且如果該自動運行應用程序成功地啟動(步驟S15中為“YES”),那么就將自動播 放PL的播放圖像轉換為四分之一(1/4)(步驟S18)。如果步驟S15中判斷為“N0”,那么就執(zhí)行包含S14至S17的環(huán)路。該環(huán)路中的控 制變量具有一個重新啟動計數(shù)器。該重新啟動計數(shù)器定義了一個應用程序重新啟動的次 數(shù)。在步驟S12中對該重新啟動計數(shù)器進行重新設置,并且在步驟S16中判斷重新啟動計 數(shù)器是否為0。如果在步驟S16中判斷出重新啟動計數(shù)器不是0,那么在步驟S17中就對該 重新啟動計數(shù)器進行減法操作。只要重新啟動計數(shù)器不是0,該自動運行應用程序就在包含 步驟S14到S17的環(huán)路處理中反復啟動。這樣一種重復就確保了可以激活應用程序。在步驟S2,判斷是否終止了一個主應用程序。如果判斷出終止了主應用程序,那么 控制就轉移到步驟S5并且判斷該主應用程序是否正常終止。如果判斷出主應用程序異常 終止,那么就執(zhí)行步驟S19和S20。如果判斷出主應用程序正常終止,那么控制就返回到包 含步驟Sl到S4的主環(huán)路,而不執(zhí)行步驟S19和S20。在步驟S19,判斷是否正在播放一個自動播放PL。如果判斷出正在播放一個自動播放PL,那么應用程序管理器36就命令播放控制引擎32將該自動播放PL的播放圖像轉換 為全屏(步驟S20)。然后,控制轉移到步驟S16。通過控制轉移到步驟S16,即使應用程序 異常中斷,也可以執(zhí)行包含步驟S14至S17的環(huán)路處理。這使得應用程序可以反復啟動直 到在步驟S12中設置的重新啟動計數(shù)器變?yōu)?。在步驟S4中,判斷在BD驅動器1中是否存在BD-R0M。如果不存在BD-R0M,那么應用程序管理器36就命令終止所有應用程序(步驟S6)。圖40顯示了播放列表管理表和應用程序管理表的具體例子。在圖40中,第一行 顯示了一個標題的播放圖像,第二行顯示了該標題的時間軸,第三行顯示了一個PL的播放 的過程,并且第四行顯示了一個應用程序的執(zhí)行。第四行指示了當標題開始時應用程序#1 啟動,并隨后在時刻tl進入到操作狀態(tài)。另一方面,當標題開始時播放列表#1啟動播放。 因此,如第一行左手側所示,在應用程序啟動延遲期間,即在標題啟動之后和應用程序進入 操作狀態(tài)之前的期間,以全屏圖像顯示播放列表#1的播放圖像gjl。當應用程序#1在時 刻tl進入操作狀態(tài)時,顯示一個合成圖像gj2,它包含作為子屏的PL的播放圖像;以及作 為母屏的應用程序的執(zhí)行圖像。該例子中應用程序的執(zhí)行圖像是用于一種游戲的屏幕,其 中安排有啟動按鈕、繼續(xù)按鈕以及電源指示器。另外,將該應用程序的執(zhí)行圖像顯示為一個 Java(Tm)應用程序,執(zhí)行在互動圖像平面12上畫出一個圖像的處理。為了執(zhí)行該畫圖處 理,Java(TM)應用程序需要畫圖庫和字符庫。此后,只要同時進行該應用程序的執(zhí)行和該 PL的播放,就顯示該母-子屏。
在該例子中,應用程序#1隨后異常終止,并且應用程序管理器36在時刻t2探測 到該異常終止。箭頭brl象征性地指示了該探測。當它發(fā)生時,應用程序管理器36在步驟 S20將PL的播放圖像轉換為全屏。在圖40中,在時刻t3轉換為全屏。如第一行的右手側 所示,按照全屏圖像的方式顯示播放圖像gj3。如上所述,根據(jù)本實施例,通過將播放列表管理表中的播放屬性設置為自動播放 的這種安排,即使一個啟動了的Java(TM)應用程序需要花費5到10秒才能進入到操作狀 態(tài),在啟動期間在屏幕上也有顯示?!捌聊簧嫌酗@示”的這種狀態(tài)緩解了開始執(zhí)行一個標題 時發(fā)生的啟動延遲。另外,如果發(fā)生應用程序啟動故障,或者如果應用程序異常終止,那么還會繼續(xù)播 放在播放列表管理表中定義的播放列表,這也提供了其中“屏幕上有顯示”的狀態(tài)。通過這 種安排,可以避免裝置出現(xiàn)黑屏這種最壞情況。這至少在一定程度上可以使裝置的制造商 感到放心。實施例2實施例2涉及一項改進,其中在編寫程序期間就定義了錯誤終止的恢復處理。為 了定義這樣一種恢復處理,在本實施例的記錄介質中,在一個BD-J對象中提供了一個錯誤 管理表。圖41A顯示了該BD-J對象的內部結構。如圖41A中所示,該BD-J對象除了包含 應用程序和播放列表管理表之外,還包含一個錯誤管理表(Error ManagementTable [bobj_ id])。圖41B顯示了該錯誤管理表的內部結構。如圖41B中所示,該錯誤管理表包含數(shù) 量由Number_of_recovery指示的多條恢復信息(recovery ())。圖4IB中的虛線“eml” 指示了由標識符“recovery,!d,,標識的一條給定的恢復信息的內部結構的局部放大 圖。由虛線“eml”指示的該條給定恢復信息包含參照值“Apli_id_ref”,它唯一地標 識了對應于該條恢復信息的應用程序的標識符;以及五個標記“ReStart_Applicati0n_ flag”、“Continuous_Playback_flag”、“Select_Title_flag”、“Notify_Event_flag” 以及 “Reb00t_flag”。圖42顯示了這五個標記的含義。接下來將描述錯誤管理表中這五個標記 的含義。當將“ReStart_AppliCati0n_flag”設置為0時,它指示了當一個應用程序異常終止時,該應用程序并不重新啟動,并且當將它設置為除“O”之外的整數(shù)“η”時,它指示了重復η次進行重新啟動。該標記的缺省值為“O”。當將“C0ntinu0uS_PlaybaCk_flag”設置為“0”時,它指示了當應用程序異常終止 時并不繼續(xù)播放列表的播放,并且當將它設置為“1”時,它指示了當應用程序異常終止時繼 續(xù)播放列表的播放,而當將它設置為“2”時,它指示了當應用程序異常終止時繼續(xù)播放列表 的播放并且這種播放是按照全屏圖像和正常速度進行的。該標記的缺省值為“0”。當將“SeleCt_Title_flag”設置為“0”時,它指示了當應用程序異常終止時在標 題之間不發(fā)生轉移,并且當將它設置為除“0”之外的整數(shù)“η”時,它指示了當前標題跳轉到 以“η”作為其標題號的標題。該標記的缺省值為“0”。當將“Notify_EVent_f lag”設置為“0”時,它指示了當應用程序異常終止時不輸 出事件,并且當將它設置為除“0”之外的整數(shù)“η”時,它指示了輸出事件序號為“η”的事件。 該標記的缺省值為“1”。當將“Reboot_f lag”設置為“0”時,它指示了當應用程序異常終止時并不執(zhí)行播 放裝置的引導程序,并且當將它設置為“1”時,它指示了執(zhí)行播放裝置的引導程序??梢栽诰帉懗绦蚱陂g通過上述標記提前定義當應用程序異常終止時需要執(zhí)行的 恢復處理。現(xiàn)在,給出了錯誤管理表的說明的一個具體例子。圖43A顯示了兩個標題(標 題#1、標題#2),并且其中寫入了錯誤管理表。在標題#1的應用程序管理表中,將應用程序 #1寫為一種Aut0Rim(自動運行)應用程序。并且在標題#1的錯誤管理表中,寫入了當應 用程序#1異常終止時需要用到的一條恢復信息。在標題#1的播放列表管理表中,將播放 列表#1寫為一種AutoPlay (自動播放)播放列表。在標題#2的應用程序管理表中,將應用程序#2寫為一種AutoRun應用程序。并 且在標題#2的錯誤管理表中,寫入了應用程序#2的一條恢復信息。圖43B顯示了根據(jù)圖43A中所示應用程序和錯誤管理表從而執(zhí)行的一個應用程序 的執(zhí)行進度和一個播放列表的播放進度。因為應用程序#1的恢復信息指示了 Continuom Playback_flag = 2,所以當應用程序#1異常終止時播放列表繼續(xù)播放,并且該播放是按照 全屏圖像和正常速度進行的。另一方面,應用程序#2的恢復信息指示Notify_EVent_flag = 2,所以當應用程序 #2異常終止時輸出序號為“2”的事件。使用這樣的恢復信息描述,可以為每個標題和每個應用程序定義應用程序異常終 止時需要執(zhí)行的處理。通過向BD-J對象中加入錯誤管理表,本實施例的應用程序管理器36根據(jù)圖44和 45中所示的流程圖執(zhí)行處理。圖44是顯示了實施例2中應用程序管理器36的工作步驟的 流程圖。與圖39中的情況相同,該流程圖包含了一個主環(huán)路,而該主環(huán)路包含步驟S1、S2、 S3以及S4。當在主環(huán)路中選擇了一個標題時,就執(zhí)行步驟S21至S27的過程。在步驟S21,應用程序管理器36使PLMT處理器41判斷在轉移目的地標題中是否 有播放列表管理表。如果在轉移目的地標題中存在播放列表管理表,那么應用程序管理器 36就使播放控制引擎32啟動在轉移源標題中并未播放但是在轉移目的地中具有AutoPlay 屬性的一個PL的播放(步驟S22),并且然后判斷該播放是否成功(步驟S23)。如果在步 驟S23中判斷出該播放是成功的,那么執(zhí)行步驟S25到S28的過程。如果在步驟S23中判斷出該播放并不成功,那么控制就轉移到圖45中所示的流程圖。如果在轉移目的地標題中沒有播放列表管理表,那么應用程序管理器36就使播放控制引擎32停止在轉移源標題中正在播放的一個PL的播放(步驟S24),并且執(zhí)行步驟 S25到S28的處理。在步驟S25,判斷在轉移目的地標題中是否有應用程序管理表。如果在轉移目的地 標題中有應用程序管理表,那么應用程序管理器36就啟動轉移目的地標題中的AutoRim應 用程序(步驟S26),并且在步驟S27,判斷該應用程序是否成功地啟動,如果在步驟S27中 判斷出應用程序成功地啟動,那么控制就返回到包含步驟Sl到S4的環(huán)路。如果判斷在步 驟S27中應用程序未成功啟動,那么控制就轉移到圖45中所示的流程圖。圖45的流程圖顯示了當一個應用程序異常終止時執(zhí)行的工作步驟。在步驟S30 中,判斷發(fā)生異常終止的該應用程序所屬的標題中是否有錯誤管理表。如果在步驟S30中 判斷出該標題中沒有錯誤管理表,那么控制就返回到包含步驟Sl到S4的環(huán)路。如果在步驟S30中判斷出該標題中有錯誤管理表,那么控制就轉移到步驟S44 然后返回到包含步驟Sl到S4的環(huán)路。在步驟S31,判斷錯誤管理表中的Restart Application_flag是否為“O”。如果判斷出錯誤管理表中的Restart_Application_flag不 為“0”,那么執(zhí)行包含步驟S40到S44的環(huán)路處理。在該環(huán)路處理中,將重新啟動計數(shù)器設 置為寫入到ReStart_Applicati0n_flag的值“η” (步驟S40),并且然后執(zhí)行包含步驟S41 到S44的環(huán)路。該環(huán)路處理中的控制變量是該重新啟動計數(shù)器。當應用程序成功啟動(步 驟S44中為“Yes”)并且重新啟動計數(shù)器變?yōu)椤癘”時(步驟S41中為“Yes”),該環(huán)路處理 結束。在該環(huán)路處理中,只要在步驟S41或S44中判斷出為“No”,那么就重復對該重新啟動 計數(shù)器進行減法操作(步驟S42)并且重復啟動該AutoRim應用程序。通過這種重復,可以 重新啟動異常終止的應用程序。如果判斷出ReStart_Applicati0n_flag是“0”,那么就執(zhí) 行步驟S32。在步驟S32,判斷 Continuous_Playback_flag 是“0”、“1” 還是 “2”。如果判斷出 C0ntinu0uS_Playback_flag是“2”,那么就按照全屏方式顯示AutoPlay PL的播放圖像(步 驟S33),并且控制返回到包含步驟Sl到S4的主環(huán)路。如果判斷出C0ntinu0uS_PlaybaCk_flag是“1”,那么就按照四分之一屏幕的方式 繼續(xù)AutoPlay PL的播放圖像(步驟S34),并且控制返回到包含步驟Sl到S4的主環(huán)路。如果判斷出Continuous_Playback_flag是“0”,那么控制就轉移到步驟S35。在步驟S35,判斷錯誤管理表中SeleCt_title_flag是否不為“O”。如果判斷出 select_title_flag為“0”,那么控制轉移到步驟S37。如果判斷出select_title_flag不 為“0”,那么就將轉移目的地標題設置為寫在SeleCt_title_flag中的值“η” (步驟S36), 并且控制轉移到如圖44中所示的步驟S37,在步驟S37,判斷錯誤管理表中Notify_EVent_flag是否不為“O”。如果判斷出 Notify_Event_flag為“0”,那么控制轉移到步驟S39。如果判斷出Notify_Event_flag不 為“0”,那么就生成由Notify_Event_flag的值“η”標識的事件“η”(步驟S38),并且控制 轉移到包含步驟Sl到S4的主環(huán)路,如圖44中所示。在步驟S39,判斷判斷錯誤管理表中 B00t_flag是否不為“O”。如果判斷出B00t_flag為“0”,那么控制轉移到包含步驟Sl到 S4的主環(huán)路。如果判斷出B00t_flag不為“0”,那么控制就轉移到圖44的開始處,并且執(zhí)行播放裝置的引導程序。如上所述,根據(jù)本實施例,可以由程序編寫者而不是裝置制造者定義當應用程序 異常終止時播放裝置應該如何執(zhí)行操作。這里應該注意到,可以將這樣一個程序嵌入到播放裝置中在播放一個不具有錯 誤管理表的標題期間,當一個應用程序異常終止時,該程序就執(zhí)行一種恢復處理。另外,在標題跳轉API中可以提供指定Restart_Application_Flag至Reboot_ Flag中任何一個的參數(shù),從而應用程序管理器36可以執(zhí)行對應于在標題跳轉API中提供的 參數(shù)的恢復處理。
實施例3在實施例1中我們描述過了,可以將BD-J對象中的播放列表管理表用于定義 Java(TM)虛擬機中PL的播放。本實施例則將重點放在通過應用程序的JMF方法的PL的播 放。這樣做所帶來的一個問題是播放列表管理表。也就是說,因為在播放列表管理表中已 經描述了是否可以播放一個PL,所以在某些標題中可以播放該PL,而在另外一些標題中則 不能播放該PL。另外,還有這樣一種情況,其中從版權保護的角度出發(fā),我們希望禁止某種 特定的應用程序對一個PL進行播放,盡管我們已經將該PL定義為可以播放。為了實現(xiàn)這 種對PL的播放的限制,在實施例3中,許可控制器42和應用程序管理器36執(zhí)行以下處理。如果一個應用程序請求播放一個PL,那么許可控制器42就執(zhí)行與該應用程序的 互相認證,并且判斷請求播放該PL的應用程序是否被授權播放該PL。如果該應用程序被授 權播放該PL,那么許可控制器42就請求控制機32播放該PL。如果未授權該應用程序播放 該PL,那么許可控制器42就向請求PL播放的應用程序輸出一個響應事件,該事件指示了請 求未被許可。通過這種由許可控制器42判斷是否許可應用程序發(fā)出的播放PL的請求,如 果發(fā)行人所發(fā)行的PL被請求用另一個發(fā)行人所發(fā)行的應用程序播放,那么該請求就可能 會被拒絕。這使得不能使用非授權的應用程序播放一個PL。許可控制器42所做出的判斷 是基于允許播放的PL和應用程序的組合以及不允許播放的PL和應用程序的組合,并且在 記錄于BD-ROM中的許可文件中定義了這些組合。這里省略了對這樣一種文件的詳細描述, 因為它偏離了本申請的主題。在實施例3中,應用程序管理器36響應于一個應用程序發(fā)出的請求,通知可以在 當前播放時間點播放的一個PL。圖46是一個流程圖,它顯示了應用程序管理器36所做出 的這種通知的步驟。在該流程圖中,在一個應用程序啟動期間,對該應用程序是否發(fā)出了通 知一個可播放PL的請求(GetPL)進行監(jiān)視(步驟S45)。如果判斷出該應用程序發(fā)出了這 樣一種請求,那么繼續(xù)判斷在當前播放點所屬的標題所包含的BD-J對象中是否存在播放 列表管理表(步驟S46)。如果在該播放列表管理表中寫入了一個PL,那么就將寫入到播放 列表管理表中的該PL作為可播放PL通知給請求播放的該應用程序(步驟S47)。如果在播放列表管理表中未寫入一個PL,那么就向請求播放的該應用程序發(fā)送一 條PL的播放不可用的通知(步驟S48)。到目前為止,已經描述了實施例3中應用程序管理 器36所執(zhí)行的步驟。接下來將描述當請求一個PL的播放時應用程序管理器36所執(zhí)行的步驟。在實施 例3中,應用程序管理器36根據(jù)圖47所示流程圖執(zhí)行處理。在圖47中,應用程序管理器36判斷是否有一個應用程序請求對一個PL的播放(步驟S51)。如果有請求一個PL的播放的應用程序,那么應用程序管理器36就使得許可控制器42執(zhí)行一種認證,從而判斷請求該播放的應用程序是否被授權播放該PL (步驟S52)。 如果該應用程序被授權播放該PL,那么應用程序管理器36就命令播放控制引擎32啟動該 播放(步驟S53),并且等待由播放控制引擎32發(fā)出的指示成功的響應(步驟S54)。當接收到這樣一種播放請求時,播放控制引擎32檢查播放列表信息的真實性。該檢查包含檢查其中存儲有播放列表信息、剪輯信息以及AV剪輯的BD-ROM和本地存儲 器18是否構成一個適當?shù)牟シ帕斜恚灰约坝刹シ帕斜硇畔⒅蠧lip_Inf0rmati0n_file_ name指定的該剪輯信息和AV剪輯是否存儲于BD-ROM和本地存儲器18上。在其中clip_ Information_file_name并未指向一個適當文件的情況下,或者在其中包含BD-ROM和本地 存儲器18的虛擬包中存在矛盾并且無法構建一個適當?shù)牟シ帕斜淼那闆r下,播放控制引 擎32會返回一個指示“錯誤”的響應。如果在上述工作步驟之后返回一個“成功”響應,那么就向請求播放的應用程序發(fā) 出一個指示播放PL成功的事件(步驟S55)。如果并未返回一個“成功”響應,那么就向請 求播放的應用程序發(fā)出一個指示播放PL失敗的事件(步驟S56)。另一方面,如果在步驟 S52判斷出請求播放的應用程序未被授權播放該PL,那么就向請求播放的應用程序發(fā)出一 個指示無法播放PL的事件(步驟S57)。如上所述,本實施例使得如果對每個標題都定義了是否可以播放一個播放列表, 并且如果某些應用程序被授權可以播放一個播放列表,而其它應用程序不具有這種授權, 那么就可以響應于一個應用程序發(fā)出的請求從而適當?shù)貓?zhí)行一個播放列表的播放。這使得 可以通過組合應用程序的執(zhí)行和播放列表的播放來提供多種內容表示。實施例4在實施例1中我們描述過,通過使我們期望播放的播放列表附加有播放屬性 “AutoPlay”,可以命令播放裝置在啟動標題時播放該AutoPlay PL。但是,本實施例涉及一 種改進,其中在BD-ROM中記錄了一種無邊界應用程序,并且當標題啟動時,使得該無邊界 應用程序選擇要自動啟動的標題。無邊界應用程序是這樣一種應用程序它與播放裝置中的常駐應用程序(例如播 放控制引擎32)相同,并且響應于該播放控制引擎32發(fā)出的請求從而執(zhí)行一個處理,該處 理是從寫在播放列表管理表中的多條播放列表信息中選擇一條與播放裝置側的PSR設置 值相匹配的播放列表信息,并且通知該條被選中的播放列表信息。為了使無邊界應用程序選擇一個PL,將播放列表管理表中的關于請求這樣一個選 擇的標題的所有播放屬性都設置為“未指定”。這是因為將“所有屬性未指定”用作一種觸 發(fā)事件,使得播放控制引擎32請求該無邊界應用程序選擇一個PL。無邊界應用程序所進行的選擇是基于在編寫程序期間所定義的選擇算法。圖48A 到48C通過表的形式顯示了嵌入到無邊界應用程序中的選擇算法的內容。該表指示了對應 于PL的PSR值的范圍,當PSR具有該值時,該PL將被播放。在這些圖中,圖48A顯示了基 于母級別的選擇算法的內容。在該播放裝置中母級別被設置為PSR(13)。更具體地說,將指 示用戶年齡的一個整數(shù)設置在PSR(13)中,并且播放裝置將該整數(shù)視為母級別。在圖48A 中,PSR(13)的值可以分為三個范圍小于14 ;大于等于14并且小于18 ;以及大于等于18。 另外,為這些范圍中的每種都指示了一個要被播放的播放列表。因此,基于這樣一種選擇算法,如果PSR設置值小于14,那么無邊界應用程序就選擇播放列表#1 ;如果PSR設置值大于 等于14并且小于18,那么無邊界應用程序就選擇播放列表#2 ;并且如果PSR設置值大于等 于18,那么無邊界應用程序就選擇播放列表#3。圖48B顯示了基于音頻語言的選擇算法的內容。在播放裝置中將音頻語言設置到PSR(16)。更具體地說,將一個整數(shù)設置在PSR(16)中,并且播放裝置認為該整數(shù)指定了用 于音頻播放的語言。在圖48B中,PSR(16)的值可以分為三種范圍英語;日語;以及其它。 另外,為這些范圍中的每種都指示了一個要被播放的播放列表。因此,基于這樣一種選擇算 法,如果PSR(16)設置值指示英語,那么無邊界應用程序就選擇播放列表#1 ;如果PSR(16) 設置值指示日語,那么無邊界應用程序就選擇播放列表#2 ;并且如果PSR(16)設置值指示 除英語和日語之外的其它語言,那么無邊界應用程序就選擇播放列表#3。圖48C顯示了基于用于視頻的播放器配置的選擇算法的內容。在播放裝置中將用于視頻的播放器配置設置到PSR(14)。更具體地說,將一個整數(shù)設置在PSR(14)中,并且播 放裝置認為該整數(shù)指定了用于視頻播放的環(huán)境。在圖48C中,PSR(14)的值可以分為三種范 圍分辨率525x600的電視系統(tǒng)信箱;分辨率525x600的電視系統(tǒng);以及分辨率1920x1080 的電視系統(tǒng)。另外,為這些范圍中的每種都指示了一個要被播放的播放列表。因此,基于這 樣一種選擇算法,如果PSR(14)設置值指示分辨率525x600的電視系統(tǒng)信箱,那么無邊界 應用程序就選擇播放列表#1 ;如果PSR(14)設置值指示分辨率525x600的電視系統(tǒng),那么 無邊界應用程序就選擇播放列表#2 ;并且如果PSR(14)設置值指示分辨率1920x1080的電 視系統(tǒng),那么無邊界應用程序就選擇播放列表#3。通過使用一種計算機描述語言描述如圖 48A到48C所示的條件轉移就可以生成如圖48A到48C所示的選擇算法。到目前為止,已經描述了本實施例中記錄介質的一種改進。接下來將描述本實施 例中播放裝置的一種改進。該改進主要包含對應用程序管理器36和播放控制引擎32的改 進。當標題之間發(fā)生轉移時,應用程序管理器36參考播放列表管理表并且判斷在該 播放列表管理表中是否存在AutoRun PL。如果沒有AutoRun PL,那么應用程序管理器36 就將該播放列表管理表轉移到播放控制引擎32中,并且請求播放控制引擎32自動播放寫 在該播放列表管理表中的一個PL。當播放控制引擎32接收到播放列表管理表時,它會請求無邊界應用程序選擇PL。 當播放控制引擎32從無邊界應用程序接收到該無邊界應用程序響應于該請求從而發(fā)送的 可播放PL的列表時,它判斷在該表中所列出的PL中是否有一個寫在從播放項轉移而來的 播放列表管理表中的PL。并且如果在這些由無邊界應用程序選擇的PL中有一個寫在播放 列表管理表中的PL,那么播放控制引擎32就自動播放該PL。圖49顯示了標題無邊界應用程序選擇PL的過程。在圖49的左手側,顯示了播 放裝置中軟件的層結構。在圖49的右手側,顯示了 BD-ROM的內容。在圖49中,符號 1、 ◎ 2、 3、 4分別代表以下內容應用程序管理器36發(fā)出的在播放列表管理表中沒有自 動播放的通知( 1);播放控制引擎32發(fā)出的指示可播放PL的請求( 2);標題無邊界 應用程序對PSR設置值的獲取( 3);以及標題無邊界應用程序向播放控制引擎32發(fā)出 的關于可播放PL的通知(◎ 4)。這里在圖49中應該注意到,出于方便的考慮將標題無邊界應用程序寫到BD-ROM上。因為標題無邊界應用程序是一種Java(TM)應用程序,所以更接近于實際情況的描述是標題無邊界應用程序是一種由Java(TM)虛擬機38的工作存儲器54中線程55執(zhí)行的 一種實例。根據(jù)上述的本實施例,使得位于標題邊界處的一個應用程序做出上述判斷。這使 得播放裝置中的播放控制引擎32在啟動一個標題后的較早階段就可以從記錄于BD-ROM上 的眾多PL中識別這樣一個PL 它滿足播放裝置中設置的條件。這使得即使不預先確定具 有“AutoPlay”播放屬性的應用程序,也可以在該標題的起始處確定一個要被播放的PL。艮P 使在BD-J模式中也可以實現(xiàn)例如語言信用和母鎖定的播放控制。這里應該注意到,盡管在本實施例中選擇算法將PSR值和播放列表聯(lián)系在一起, 但是還可以預先定義當播放裝置中的PSR設置值超出假定范圍時要被播放的播放列表。實施例5在實施例4中,標題無邊界應用程序具有一種用于根據(jù)PSR設置值選擇要被播放 的PL的選擇算法。本實施例涉及一種改進,其中當一個PL具有多角度周期時,使得標題無 邊界應用程序可以從該多角度周期包含的多個角度中選擇一個角度。本實施例中的標題無 邊界應用程序將多個PSR值范圍與要被播放的角度聯(lián)系到了一起。在本實施例中,如果當 前播放時間點位于一個多角度周期中,那么播放控制引擎32就請求標題無邊界應用程序 選擇一個要被播放的角度。當標題無邊界應用程序接收到這樣一個請求時,它就獲得當前 所設置的PSR值,執(zhí)行一種選擇算法,并且選擇對應于所獲得的設置值的一個角度。標題無 邊界應用程序向播放控制引擎32通知選擇的結果,從而播放控制引擎32播放該選擇的角 度。如上所述,根據(jù)本實施例,負責編寫程序的人可以定義一種用于根據(jù)PSR值選擇 角度的算法。這使得負責編寫程序的人可以使用多種角度寫出多種應用程序。實施例6實施例6涉及實現(xiàn)BD-J模式中PL的播放的同步的一種改進。當調用PlayPLAPI 函數(shù)時,播放控制引擎32根據(jù)PL信息執(zhí)行工作步驟。如果PL具有兩個小時的播放周期,那 么上述的工作步驟在這兩個小時內就會一直持續(xù)。這樣所引發(fā)的一個問題是,在Java(TM) 虛擬機38返回一個響應“成功”的時刻和播放控制引擎32實際上結束該過程的時刻之間 存在一段間隙。在一個調用之后,主要用于執(zhí)行事件驅動過程的Java(TM)虛擬機38立即 就返回一個指示成功或失敗的響應。但是,因為播放控制引擎32實際上在兩個小時之后才 結束處理,所以并不能通過一個調用之后立即就被返回的響應“成功”確認該處理的結束。 如果在PL播放期間執(zhí)行了快進、后退或跳讀,那么該周期就會從兩個小時變?yōu)樾∮诨蚨嘤?兩個小時。當出現(xiàn)上述情況時,就更加難以識別處理的結束。播放控制引擎32獨立于應用程序進行工作。因此,應用程序管理器36不能準確 地確定PL播放結束的時刻。所以,在本實施例中,無論應用程序是否終止,只要在工作存儲 器中有一個JMF播放器實例,也就是說只要BD-J模塊35被授權對呈現(xiàn)引擎31進行控制, 那么就會一直等待由播放控制引擎32發(fā)出的通知事件。如果從播放控制引擎32接收到了 一個通知事件,那么就可以確定標題已經終止,并且命令模塊管理器34轉移跳轉到下一個 標題。通過這樣一種安排,可以將播放控制引擎32結束一個PL播放的時刻視為標題終止 的時刻。
接下來將參考圖50到54中所示流程圖,具體描述播放控制引擎32所執(zhí)行的控制
工作步驟。圖50是一個流程圖,顯示了播放控制引擎32所執(zhí)行的PL播放的步驟。該播放步 驟主要包含對呈現(xiàn)引擎31的控制(步驟S106)和對BD-ROM驅動器1或本地存儲器18的 控制(步驟S108)。在該流程圖中,將處理目標播放項指示為播放項#x。在該流程圖中,首 先讀取當前PL信息(.mpls)(步驟S101),并且執(zhí)行步驟S102到SllO的過程。步驟S102 到SllO組成了一種環(huán)路處理,其中對于當前PL信息所包含的每條PI信息都重復執(zhí)行步驟 S103到S110,直到在步驟S109中判斷為“YES”。在該環(huán)路處理中,將處理目標播放項指示 為播放項#x(PI#x)。如果當前PL的起始處的播放項設置為播放項#x,那么就對該播放項 #x進行初始化(步驟S102)。對于上述環(huán)路處理來說,結束的條件是判斷出播放項#x是當 前PL中的最后播放項(步驟S109)。如果播放項#x不是當前PL中的最后播放項,那么就 將當前PL中的下一個播放項設置為播放項#x(步驟Sl 10)。步驟S103到SllO按照如下方式在環(huán)路處理中重復執(zhí)行。將播放項#x的Clip_ information_file_name指定的剪輯信息讀入到腳本存儲器25中(步驟S103)。使用當前 剪輯信息的EPmap將播放項#x的In_time轉換為一個I圖像地址“U” (步驟S104)。使用 當前剪輯信息的EPmap將播放項#x的0ut_time轉換為一個I圖像地址“V” (步驟S105)。 將I圖像地址“V”的下一個I圖像地址減1,并將得到的結果地址設置為地址“W” (步驟 S107)。命令BD-ROM驅動器1或本地存儲器從I圖像地址“U”到地址“W”的位置處讀取TS 包(步驟S108)。另一方面,命令呈現(xiàn)引擎3 1輸出數(shù)據(jù),并且這些數(shù)據(jù)的范圍是從當前PLMark的 mark_time_stamp到播放項#x的0ut_time (步驟S106)。通過執(zhí)行步驟S105到S108,可以 播放由播放項#x指定的一部分AV剪輯。在此之后,判斷該播放項#x是否為當前PL中的最后播放項(步驟S109)。如果判斷出播放項#x不是當前PL中的最后播放項,那么就將當前PL中的下一個 播放項設置為播放項#x(步驟S110),并且控制返回到步驟S103。重復上述步驟S103到 SllO從而按順序播放該PL包含的播放項。圖51是一個流程圖,顯示了角度改變步驟和用于向回跳讀/向下跳讀的步驟。該 流程圖與圖50中所示的步驟并行執(zhí)行,并且重復執(zhí)行包含步驟Slll到S112的環(huán)路處理。 在該環(huán)路的步驟Slll中,判斷從Java(TM)虛擬機38中是否發(fā)出了一個請求角度改變的 API。并且如果判斷出發(fā)出了請求角度改變的API,那么就將當前剪輯信息變?yōu)榱硗庖粋€。在圖51的步驟S115中,判斷播放項#x的is_multi_angles是否為“ON”。該is_multi_angles是一種指示播放項#x是否對多角度做好了準備的標記。如果在步驟S115中 判斷為“N0”,那么控制就轉移到步驟S113。如果在步驟S115中判斷為“YES”,那么就執(zhí)行 步驟S116到S119。步驟S116到S119是按照以下方式執(zhí)行的。用變量” y”代替角度改變 之后的角度號(步驟S116)。將播放項#x中第“y”個Clipjnformatiorufilejame指定 的一條剪輯信息讀取到腳本存儲器21 (步驟S117)。使用當前剪輯信息的EP_map將當前 PTM轉換為一個I圖像地址“u”(步驟S118)。使用當前剪輯信息的EP_map將播放項#x的 0ut_time轉換為I圖像地址“V” (步驟Sl 19)。在如上面所述改變I圖像地址“U”和“V” 之后,就停止與本處理同時執(zhí)行的圖50中所示處理,然后控制轉移到步驟S106。通過轉移到步驟S106,從另一個AV剪輯讀取TS包,并且改變了視頻內容。另一方面,在圖51的環(huán)路中的步驟S112中,判斷從Java(TM)虛擬機38中是否調 用了一個向回跳讀/向下跳讀API。并且如果判斷出調用了向回跳讀/向下跳讀API,那么 就執(zhí)行圖52的流程圖中所示的步驟。圖52是一個流程圖,顯示了當判斷出發(fā)出了向回跳 讀/向下跳讀API時執(zhí)行的步驟??梢园凑斩喾N方式實現(xiàn)用于執(zhí)行向回跳讀或向下跳讀的 步驟。因此,應該注意到這里僅描述了一個這樣的例子。在步驟S121,通過對PSR指示的當前PI號和當前PTM進行轉換從而獲得當前標 記信息。在步驟S122,判斷按下的鍵是否為向下跳讀或是向回跳讀。如果按下的是向下跳 讀,那么在步驟S123中將方向標記設置為“+1”。如果按下的是向回跳讀,那么在步驟S124 中將方向標記設置為“-1”。在步驟S125中,將當前PLMark編號設置為通過將當前PLMark號與方向標記的值相加而得到的數(shù)量。這里,如果按下的是向下跳讀鍵,那么就將方向標記設置為“+1”,并且 因此當前PLMark增加。如果按下的是向回跳讀鍵,那么就將方向標記設置為“_1”,并且因 此當前PLMark減小。在步驟S126中,將當前PLMark的ref_to_PlayItem_Id中描述的PI設置到播放 項#x。在步驟S127,讀取播放項#x的Clip_information_file_name指定的剪輯信息。在 步驟S128,使用當前剪輯信息的EPjnap將當前PLMark的mark_time_stamp轉換為一個I 圖像地址“U”。另一反面,使用當前剪輯信息的EP_map將播放項#x的0ut_time轉換為一 個I圖像地址“V”。在步驟S130,命令呈現(xiàn)引擎31輸出數(shù)據(jù),并且這些數(shù)據(jù)的范圍是從當 前PLMark的mark_time_stamp到播放項#x的0ut_time。停止與本處理并行執(zhí)行的圖50 中所示的處理,并且然后控制轉移到圖50的步驟S107。通過這種方式,在改變I圖像地址 “U”和“V”并且命令播放另一部分之后,控制轉移到步驟S107。通過轉移到步驟S107,從另 一個AV剪輯讀取TS包,并且改變了視頻的內容。圖53是一個流程圖,詳細顯示了呈現(xiàn)引擎31的工作步驟。在該流程圖中,將I圖 像的PTS設置到當前PTM之后(步驟S131),執(zhí)行包含步驟S132到步驟S137的環(huán)路處理。接下來將描述包含步驟S132到S137的環(huán)路處理。在該環(huán)路處理中,反復輸出對應 于當前PTM的圖像和音頻并且反復更新當前PTM。在該環(huán)路處理中,步驟S136定義了該環(huán) 路處理結束所必需的條件。也就是說,步驟S136定義了必須要由該環(huán)路處理結束當前PTM 就是 PI#x 的 0ut_time。在步驟S133,判斷Java(TM)虛擬機38是否調用了快退API或快進API。如果判 斷出調用了快退API或快進API,那么就在步驟S138中判斷所調用的API是快進還是快退。 如果是快進,那么將下一個I圖像的PTS設置到當前PTM(步驟S139)。通過將當前PTM設 置到下一個I圖像的PTS,可以實現(xiàn)每秒以向前跳讀的方式播放AV剪輯。通過這種安排,可 以按照兩倍速度或其它速度向前播放AV剪輯。如果是快退,那么就判斷當前PTM是否已經 到達了播放項#x的0ut_time (步驟S140)。如果判斷出當前PTM未到達播放項#x的0ut_ time,那么就將前一個I圖像的PTS設置到當前PTM(步驟S141)。以這種方式,通過將讀取 目的地地址A設置到前一個I圖像,可以實現(xiàn)每秒以向后跳讀的方式播放AV剪輯。通過這 種安排,可以按照兩倍速度或其它速度向后播放AV剪輯??梢酝ㄟ^多種方式實現(xiàn)快進或快 退的步驟。因此,應該注意到這里僅描述了一個這樣的例子。
在步驟S134,判斷是否調用了菜單調用API。如果判斷出調用了菜單調用API,那么就暫停當前播放過程(步驟S142),并且執(zhí)行用于菜單過程的菜單程序(步驟S143)。通 過該過程,如果執(zhí)行了菜單調用,那么就可以暫停播放過程,并且執(zhí)行用于菜單過程的菜單 程序。在步驟S135,判斷是否有一個在SynC_PlayItem_id中已經為其指定了了播放項 #x (Playltem#x)的子播放項#y (SubPlayItem#y)。如果判斷出存在這樣一個子播放項#y, 那么控制就轉移到圖54中所示的流程圖。圖54是一個流程圖,它顯示了子播放項的工作 步驟。在該流程圖中,首先在步驟S146中判斷當前PTM是否是子PI#y的Sync_Start_PTS_ of_PlayItem。如果判斷出當前 PTM 是子 PI#y 的 Sync_start_PTS_of_PlayItem,那么控制 就轉移到步驟S153,并且在該步驟中命令播放控制引擎32執(zhí)行子播放項#y的播放過程。如果在步驟S136中判斷為“YES”,那么就執(zhí)行步驟S144和S145。在步驟S144 中,判斷是否滿足下述兩個條件(i)虛擬機文件系統(tǒng)30輸出了文件事件的通知結束;以及 ( )解碼器輸出了解碼事件的通知結束。如果上述兩個條件都得到滿足,那么就將流事件 的通知結束輸出到播放控制引擎32。圖54中包含步驟S147到S152的流程圖顯示了基于子播放項#y的工作步驟。在步驟S147中,讀取由子播放項#y的Clip_information_file_name指定的剪輯 信息。在步驟S148,使用當前剪輯信息的將子EP_ map將子播放項#y&ln_time轉換為地 址α。在步驟S149,使用當前剪輯信息的EP_map將子播放項#y的0ut_time轉換為地址 β。在步驟S150中,命令解碼器輸出子播放項的In_time到0ut_time。將I圖像地址β 的下一個I圖像地址減1,并且將得到的結果設置到地址Y (步驟S151)。命令BD-ROM驅 動器1或本地存儲器18從子剪輯#ζ中地址α到地址Υ的位置讀取TS包(步驟S152)?,F(xiàn)在,回到圖50,我們將繼續(xù)描述播放控制引擎32的過程。在步驟S19中,判斷呈 現(xiàn)引擎31是否已經完成了播放控制。步驟S131中將一直判斷為“Ν0”,直到圖53的流程圖 中所示過程執(zhí)行到最后一個播放項#x。當完成了圖53的流程圖中所示過程時,在步驟S131 中判斷為“YES”,并且控制轉移到步驟S114。在步驟Sl 14,通知事件將被輸出到Java(TM) 虛擬機38中。通過該輸出,Java(TM)虛擬機38可以識別出播放已經進行了兩個小時。根據(jù)上述的本實施例,應用程序管理器36可以識別出播放已經連續(xù)進行了兩個 小時的時刻。這使得應用程序管理器36可以命令Java (TM)虛擬機38執(zhí)行一個與播放列 表的播放的結束同步的處理。注意事項上述內容并未對本發(fā)明的所有實施例都進行了描述。還可以通過例如實施例㈧、 (B)、(C)、(D)等等實現(xiàn)本發(fā)明。在本申請的權利要求中定義的本發(fā)明是上述實施例的擴展 或總結,或者是對上述實施例的修改。這些擴展或總結的程度是基于提交本申請時本發(fā)明 的技術領域中的技術水平。在上述所有實施例中,用BD-ROM代表了用于實現(xiàn)本發(fā)明的光盤。但是,用于實現(xiàn) 本發(fā)明的光盤的特征在于記錄在光盤上的動態(tài)腳本和索引表,并且這些特性并不依賴于 BD-ROM的物理特性。因此,任何可以用于記錄動態(tài)腳本和索引表的記錄介質都可應用于本 發(fā)明。例如,可以使用例如 DVD-ROM、DVD-RAM、DVD-RW、DVD-R、DVD+RW、DVD+R、CD-R 以及 CD-RW的光盤,或者例如PD或MO的磁光盤。另外,本發(fā)明還可以使用半導體存儲卡,例如閃存(TM)卡(compact flash card)、智能介質(smart media)、記憶棒(memory stick)、多媒體卡(multimedia card)或者PCM-CIA卡。而且,本發(fā)明還可以使用(i)磁記錄盤,例如 軟磁盤(flexible disk)、超磁盤(SuperDisk)、Zip或Clik !,或者(ii)可移動硬盤驅動 器,例如ORB、Jaz、SparQ、SyJet,EZFley或者微驅動器。進一步,本發(fā)明可以使用嵌入到裝 置中的硬盤。在所有上述實施例中,播放裝置在將記錄于BD-ROM上的AV剪輯輸出到TV之前先 要對這些AV剪輯進行解碼。但是,播放裝置可能僅包含一個BD-ROM驅動器,而除BD-ROM 之外的器件則位于TV中。在這種情況下,可以將播放裝置和TV包含到一個家庭網絡中,并 且通過IEEE 1394將該播放裝置和TV連接到該家庭網絡中。另外,在上述實施例中,該播 放裝置是一種由于使用的原因從而要求將其連接到一個TV的類型的播放裝置。但是,該播 放裝置還可以是這樣一種類型其中該播放裝置中內置一個顯示器。進一步,可以將每個實 施例中實現(xiàn)了一種實質性過程的播放裝置的一部分視作本發(fā)明的播放裝置。每個這樣的播 放裝置都是本申請中描述的一種發(fā)明。并且因此,基于每個實施例中所示播放裝置的內部 結構對播放裝置所進行的制造,都應該被視作是對本申請中所描述發(fā)明的實施。另外,無論 是出于營利目的還是免費對每個實施例中所示播放裝置進行轉移、出租或是引入,都應該 被視作是對本發(fā)明的實施。進一步,通過直接的顯示、產品目錄或發(fā)行手冊等等方式將該播 放裝置提供、轉移或出租給普通用戶,也都應該被視作是對本發(fā)明的實施。對于其工作步驟在每個流程圖中得到了顯示的程序來說,應該將該程序視作一個 獨立的發(fā)明,這是因為如每個流程圖中所示,該程序為了對信息進行處理使用了具體的硬 件資源。在每個實施例中,為了實現(xiàn)本發(fā)明的程序,已經將該程序嵌入到播放裝置中。但是, 該程序與播放裝置之間是可以分離的,并且可以將該程序用作分立實體從而實現(xiàn)每個實施 例中所示的獨立程序。可以將這種將每個實施例中所示程序分立實體從而實施本發(fā)明的方 法分為以下幾類,例如(1)制造該程序(2)出于營利目的或免費對該程序進行轉移;(3) 出租該程序;(4)引入該程序;(5)通過雙向電子通信線路向公眾提供該程序;以及(6)通 過直接的顯示、產品目錄或發(fā)行手冊等等方式將該程序提供、轉移或出租給普通用戶。我們認為在每個流程圖的步驟中按照時間順序執(zhí)行的相關于時間的元素在識別 本發(fā)明方面起到了實質性的作用。因此,我們還認為流程圖中所示工作步驟起到了公開播 放方法的使用形式的作用。因此,我們認為按照時間順序實施流程圖的步驟從而實現(xiàn)本發(fā) 明的目的,實施本發(fā)明以及獲得本發(fā)明的效果,也都是對本發(fā)明的實施。當AV剪輯記錄于BD-ROM上時,我們希望給該AV剪輯所包含的每個TS包都附上一 個擴展報頭。該擴展報頭稱作TP_extra_header,它包含“Arribval_Time_Stampm“copy_ permission_indicator”,并且具有四字節(jié)的數(shù)據(jù)長度。將具有TP_extra_header的TS包 (此后稱作具有EX的TS包)按照32個一組進行分組,并且將其寫入到三個段中。這32個 具有EX的TS包的一組有6144個字節(jié)(=32x192)。每組的這種尺寸大小正好與這三個段 中每個段的尺寸大小相同,其中每個段的尺寸大小也是6144個字節(jié)(=2048x3)。存儲于 這三個段中這32個具有EX的TS包的一組稱作“對準單元”。當將播放裝置200用于一個家庭網絡時(其中該裝置通過IEEE1394連接到該 網絡),該播放裝置按照下述傳輸過程傳輸該對準單元。也就是說,發(fā)射機側的一臺設備 將TP_extra_header從對準單元中所含每個具有EX的播放控制引擎32TS包中除去,根據(jù)DTCP標準對TS包的每個部分都進行編碼,并且輸出編碼后的TS包。當輸出編碼后的TS包時,該設備將同步包插入到編碼后的TS包。基于TP_extra_header的Arribval_Time_Stamp 所指示的時間確定將同步包插入到編碼后的TS包中的位置。當輸出這些TS包時,播放裝 置 200 輸出 DTCP_Descriptor。該 DTCP_Descriptor 指示了 TP_extra_header 中的復制許 可/禁止設置。這里,通過描述DTCP_DesCriptor從而指示“復制禁止”使得在將播放裝置 通過IEEE 1394連接到一個家庭網絡從而對其進行使用時,其它設備不能記錄這些TS包。在所有上述實施例中,記錄于記錄介質上的數(shù)字流是AV剪輯。但是,該數(shù)字流可 以是符合DVD視頻標準或DVD視頻記錄標準的VOB (視頻對象)。該VOB是通過將視頻流以 及音頻流復用到一起從而獲得的程序流,并且該程序流符合IS0/IEC13818-1標準。另外, AV剪輯中的視頻流可以符合MPEG4或WMV系統(tǒng)。進一步,音頻流可以符合線性PCM系統(tǒng)、杜 比AC3系統(tǒng)、MP3系統(tǒng)、MPEG-AAC系統(tǒng)、Dts或WMA (視窗(TM)媒體音頻)。在所有上述實施例中,可以通過對模擬廣播所發(fā)出的模擬視頻信號進行編碼從而 獲得視頻作品。另外,視頻作品還可以是包含通過數(shù)字廣播方式發(fā)出的傳輸流的流數(shù)據(jù)。另外,還可以通過對存儲在視頻帶上的模擬/數(shù)字視頻信號進行編碼從而獲得內 容。進一步,還可以通過對直接從攝像機獲得的模擬/數(shù)字視頻信號進行編碼從而獲得內 容。進一步,可以通過發(fā)行服務器所進行的發(fā)行從而獲得數(shù)字作品。BD-J模塊35可以是一種嵌入到用于接收衛(wèi)星廣播的設備中的Java(TM)平臺。當 BD-J模塊35是Java (TM)平臺時,本發(fā)明的播放裝置也執(zhí)行用于MHP的STB所執(zhí)行的過程。此外,BD-J模塊35可以是一種嵌入到用于執(zhí)行移動電話的過程控制的設備中的 Java(TM)平臺。當BD-J模塊35是Java(TM)平臺時,本發(fā)明的播放裝置也執(zhí)行移動電話所 執(zhí)行的過程。在層模型中,HDMV模式可以位于BD-J模式上。這尤其是因為對HDMV模式中動態(tài) 腳本進行分析和基于該動態(tài)腳本執(zhí)行控制工作步驟僅使播放裝置承擔了輕的負載,并且在 BD-J模式上執(zhí)行HDMV模式并不存在任何問題。另外,在播放裝置或電影作品的開發(fā)過程 中,僅通過一種模式就可以保證操作。此外,可以僅在BD-J模式上執(zhí)行播放過程。這是因為如實施例5中所示,可以同 步于BD-J模式中PL的播放執(zhí)行播放控制,并且因此不一定要提供HDMV模式。通過在一種互動圖像流中提供導航命令可以實現(xiàn)PL之間的轉移,并且其中該互 動圖像流會被復用到一個AV剪輯中。在實施例1中,將標題無邊界應用程序定義為這樣一種標題它的生存周期延伸 到屬于一個BD-ROM的所有標題。但是,也可以將標題無邊界應用程序定義為這樣一種標 題它的生存周期延伸到屬于多個BD-ROM的所有標題。在實施例1中,在生成應用程序管理表時,我們希望將可以同時執(zhí)行的應用程序 數(shù)量限制到,例如4或更少。應該將可以同時執(zhí)行的應用程序數(shù)量限制到例如4或更少的原因如下。有多個配 有數(shù)字廣播調頻器功能的BD-ROM播放裝置,并且用于實現(xiàn)這種調頻器功能的應用程序通 常位于存儲器中。為了給常駐應用程序提供操作的空間,所以就應該將可以同時執(zhí)行的應 用程序數(shù)量限制到,例如4或更少。我們希望在這四個應用程序中,第一個是標題無邊界應 用程序,第二個是標題無邊界程序,并且第三個是章節(jié)邊界應用程序。
在實施例2中,這樣定義錯誤管理表,從而當一個應用程序異常終止時,會執(zhí)行一 個恢復過程。但是,當一個應用程序異常終止時,可能會執(zhí)行多個恢復過程。也就是說,當 一個應用程序異常終止時,播放裝置可以連續(xù)執(zhí)行播放列表的播放、應用程序的重新啟動 以及事件的輸出。另外,可以這樣構建錯誤管理表從而為每個標題而并不為每個應用程序都定義一個恢復過程。AV剪輯可以具有一種復用到其中的互動圖像流,用于顯示菜單和通過該菜單接收 互動操作。因此,僅通過描述一個導航命令就可以生成頂級菜單標題,其中該導航命令為了 實現(xiàn)顯示該頂級菜單和接收互動操作僅需要命令播放電影對象中的一個AV剪輯。在上述每個實施例中,只是舉例說明了目錄/文件結構和文件中的數(shù)據(jù)結構。作 為本發(fā)明的特征之一的管理信息并不依賴于目錄/文件結構和文件中的數(shù)據(jù)結構。因此, 例如,對于作為BD-J模式中一種操作腳本的BD-J對象來說,可以將其作為一個具有標識 符“bobj_id”和“BD-J”的文件(zzzzz.BD-J)包含到BDJA目錄中,并且可以僅將標識符 “bobj_id” 存儲到 BD-J Object, bdmv 的 BD-JObject [η]()。工業(yè)應用性個人可以將本發(fā)明的記錄介質和播放裝置可以用于家庭影院系統(tǒng)中。但是,還可 以將本發(fā)明的記錄介質和播放裝置應用于工業(yè)領域,這是因為它具有在上述實施例中公開 的內部結構,并且很明顯的是,可以對本發(fā)明的記錄介質和播放裝置進行批量生產。因此, 本發(fā)明的記錄介質和播放裝置具有工業(yè)應用性。
權利要求
一種記錄介質,其中記錄應用程序、數(shù)字流、與該應用程序和數(shù)字流有關的標題以及管理信息,其中所述應用程序是使用編程語言編寫的用于虛擬機的程序,指定了生存周期,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí)行,所述管理信息包括指示了與所述標題有關的所述數(shù)字流的播放控制的信息,其中所述播放控制應當在執(zhí)行所述應用程序時執(zhí)行;所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述恢復處理,并且所述標記是(i)指示在所述應用程序異常終止時是否重新啟動所述應用程序的標記;(ii)指示當所述應用程序異常終止時所輸出的事件的標記;以及(iii)指示當所述應用程序異常終止時是否重新啟動播放裝置的標記。
2.一種播放裝置,包括虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序; 播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有 關的數(shù)字流;以及應用程序管理器,用于將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當 到達生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,以及與所述虛擬機單元的執(zhí)行并 行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標題有 關的所述數(shù)字流,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且 在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí) 行;其中所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述恢復 處理,并且所述應用程序管理器根據(jù)所述管理信息中包含的所述標記執(zhí)行下列任意控制 (i)重新啟動異常終止的所述應用程序的控制; ( )輸出預先指定的事件的控制;以及 (iii)重新啟動播放裝置的控制。
3.一種被讀入計算機的程序, 所述計算機包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序; 播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有 關的數(shù)字流;所述程序使所述計算機執(zhí)行如下步驟將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當?shù)竭_生存周期時,使所 述虛擬機單元執(zhí)行所述應用程序,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由 所述虛擬機執(zhí)行;與所述虛擬機單元的執(zhí)行并行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質 中的管理信息播放與所述標題有關的所述數(shù)字流;以及根據(jù)記錄于所述記錄介質中的所述管理信息中包含的標記執(zhí)行下列任意控制(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制,其中所述標記定義了當所述應用程序異常終止時要執(zhí)行的恢復處理。
4.一種用于計算機的播放方法, 所述計算機包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序; 播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有 關的數(shù)字流;所述播放方法使所述計算機執(zhí)行如下步驟將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當?shù)竭_生存周期時,使所 述虛擬機單元執(zhí)行所述應用程序,該生存周期處于記錄在所述記錄介質中的所述標題的播 放周期內,并且在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由 所述虛擬機執(zhí)行;與所述虛擬機單元的執(zhí)行并行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質 中的管理信息播放與所述標題有關的所述數(shù)字流;以及根據(jù)記錄于所述記錄介質中的所述管理信息中包含的標記執(zhí)行下列任意控制 (i)重新啟動異常終止的所述應用程序的控制; ( )輸出預先指定的事件的控制;以及 (iii)重新啟動播放裝置的控制,其中所述標記定義了當所述應用程序異常終止時要執(zhí)行的恢復處理。
5.一種系統(tǒng)集成電路,其被嵌入播放數(shù)字流的播放裝置,該數(shù)字流記錄于記錄介質上 且與記錄在所述記錄介質中的標題有關,所述系統(tǒng)集成電路包含虛擬機單元,用于執(zhí)行已經從記錄介質讀進工作存儲器的應用程序; 播放控制引擎單元,用于播放記錄于記錄介質上且與記錄在所述記錄介質中的標題有 關的數(shù)字流;以及應用程序管理器,用于將所述應用程序從所述記錄介質讀進所述工作存儲器,并且當 到達生存周期時,使所述虛擬機單元執(zhí)行所述應用程序,以及與所述虛擬機單元的執(zhí)行并 行地,使所述播放控制引擎單元根據(jù)記錄于所述記錄介質中的管理信息播放與所述標題有 關的所述數(shù)字流,該生存周期處于記錄在所述記錄介質中的所述標題的播放周期內,并且 在所述生存周期期間所述應用程序被讀進所述虛擬機的工作存儲器并可由所述虛擬機執(zhí) 行;其中所述管理信息還包含定義恢復處理的標記,當所述應用程序異常終止時執(zhí)行所述恢復處理,并且所述應用程序管理器根據(jù)所述管理信息中包含的所述標記執(zhí)行下列任意控制(i)重新啟動異常終止的所述應用程序的控制;(ii)輸出預先指定的事件的控制;以及(iii)重新啟動播放裝置的控制.
全文摘要
BD-ROM包含記錄于其中的播放列表、應用程序和BD-J對象,所述播放列表包含AV剪輯和播放列表信息。該應用程序是一種以用于虛擬機的編程語言寫成的程序,并且指定了生存周期,在該生存周期期間可以由所述虛擬機執(zhí)行該應用程序。該BD-J對象包含播放列表管理表。該播放列表管理表指示了在該生存周期期間與該應用程序的執(zhí)行同時進行的播放列表的播放控制。
文檔編號H04N5/92GK101814305SQ20101017953
公開日2010年8月25日 申請日期2004年11月9日 優(yōu)先權日2003年11月10日
發(fā)明者岡田智之, 大久保雅文, 巖本啟明, 池田航 申請人:松下電器產業(yè)株式會社