説明

記録媒体、再生装置、プログラム、再生方法、システム集積回路

BD−ROMには、AVClip及びプレイリスト情報からなるプレイリストと、アプリケーションと、BD−J Objectとが記録されている。アプリケーションは、仮想マシン向けプログラミング言語で記述されたプログラムであり、仮想マシンによる実行が可能となる生存区間が、予め規定されている。前記BD−J Objectには、プレイリスト管理テーブルが含まれている。プレイリスト管理テーブルは、アプリケーションの生存区間において、各アプリケーションの実行と同時に行うべきプレイリストの再生制御を示す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンを対象にしたアプリケーションの実行を制御する、アプリケーション制御の技術分野に属する発明であり、本制御技術をBD−ROM等の映画作品頒布のための記録媒体、BD−ROMを対象とした再生装置等に応用する場合の応用技術に深く係る。
【背景技術】
【0002】
Java(登録商標)プログラミング等、仮想マシンを対象にしたアプリケーション制御技術は、パソコンソフトの業界において深く浸透している。パソコンソフトから更に発展して、現在、Blu−ray Disc Read Only Memory(BD−ROM)用再生装置における再生制御をJava(登録商標)プログラミングで実現するための様々な工夫が検討されている。
同様の再生装置についての先行技術としては、以下の特許文献1に記載されたものが知られている。
【特許文献1】特許2813245号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、Java(登録商標)プログラミングで作成されたアプリケーションの動作というのは、リソースの使用状況やCPUの負荷により変動を受ける不安定なものである。リソースが枯渇していたため、アプリケーションの起動に失敗したり、アプリケーションが異常終了したりして装置がブラックアウトするのは、パソコンソフトの業界では”よくあること”で済まされるかもしれないが、BD−ROM再生装置の製造に携わる民生機器の分野では品質問題になりかねない。品質問題への波及がありうるので、メーカ各社は、Java(登録商標)プログラミングによる装置制御の実現に二の足を踏むことが多かった(注;ブラックアウトとは、装置のソフトウェアがフリーズして表示画面が真っ暗になる状態をいう)。
【0004】
本発明の目的は、記録媒体に対する制御を実現するようなアプリケーションが異常終了した場合、又は、起動に失敗した場合の、Fail Safeを実現することができる記録媒体を提供する。
【課題を解決するための手段】
【0005】
上記目的を達成するため、本発明に係る記録媒体はアプリケーションと、デジタルストリームと、管理情報とが記録されていて、前記アプリケーションは、仮想マシン向けプログラミング言語で記述されたプログラムであり、仮想マシンによる実行が可能となる生存区間が、予め規定されており、前記管理情報は、生存区間において、アプリケーションの実行と同時に行うべきデジタルストリームの再生制御を示すことを特徴としている。
【発明の効果】
【0006】
本発明に係る記録媒体によれば、アプリケーション実行と同時に行うべきデジタルストリームの再生制御が生存区間毎に規定されている。そのため、アプリケーションの起動に失敗したり、アプリケーションの実行の途中でたとえアプリケーションが異常終了したとしても、同時になされているデジタルストリーム再生を継続することにより、”何かが写っている状態”をもたらすことができる。これにより、装置がブラックアウトしてしまうという最悪ケースを回避することができるので、装置を製造するメーカに、最低限度の安心感を与えることができる。
【0007】
こうした安心感が与えられるので、品質問題への波及に神経を尖らせているメーカ各社に対しても、Java(登録商標)アプリケーションによる再生装置制御の開発を強く後押しすることができる。こうした強い後押しにより、再生装置の低価格化、多様化が進めば、BD−ROMコンテンツの充実化を図ることができるので、コンテンツ関連産業の発達を強く牽引することができる。
【図面の簡単な説明】
【0008】
[図1]本発明に係る再生装置の使用行為についての形態を示す図である。
[図2]BD−ROMにおけるファイル・ディレクトリ構成を示す図である。
[図3]PL情報の構成を示す図である。
[図4]AVClip時間軸と、PL時間軸との関係を示す図である。
[図5]4つのClip_Information_file_nameによりなされた一括指定を示す図である。
[図6]PLmark情報の内部構成を示す図である。
[図7]PLmarkによるチャプター定義を示す図である。
[図8]SubPath情報の内部構成を示す図である。
[図9]SubPlayItem時間軸上の再生区間定義と、同期指定とを示す図である。
[図10]Movie Objectの内部構成を示す図である。
[図11]BD−J Objectの内部構成を示す図である。
[図12](a)Java(登録商標)アーカイブファイルに収められているプログラム、データを示す図である。
【0009】
(b)クラスファイルの内部構成を示す図である。
[図13]ディスクコンテンツにおける状態遷移を示す図である。
[図14]HDMVモードの動的シナリオから構成されるTitleを示す図である。
[図15]BD−Jモードの動的シナリオ(BD−J Object)により構成されるTitleの内部構成を示す図である。
[図16]プレイリスト管理テーブルをもたないTitleを示す図である。
[図17]HDMVモードのTitleから、BD−JモードのTitleへの分岐を示す図である。
[図18]BD−JモードのTitleから、HDMVモードのTitleへの分岐を示す図である。
[図19]index.bdmvの内部構成を示す図である。
[図20](a)アプリケーション管理テーブルの内部構成を示す図である。
【0010】
(b)アプリケーション管理テーブルを構成する情報要素の意味内容を示す図である。
[図21](a)BD−ROM全体の時間軸を示す図である。(b)BD−ROM全体の時間軸における構成を示す図である。
[図22](a)(b)BD−ROM全体の時間軸において、識別子bobj_idにより特定されるBD−J Objectから特定されるタイトル再生区間を示す図である。
[図23]図22(b)の時間軸上に規定される、生存区間の典型を示す図である。
[図24]本編タイトル、オンラインショッピングタイトル、ゲームタイトルという3つのタイトルを含むディスクコンテンツを示す図である。
[図25](a)(b)アプリケーション管理テーブル、生存区間の一例を示す図である。
[図26]起動属性がとり得る三態様(Present、AutoRun、Suspend)と、直前タイトルにおけるアプリケーション状態の三態様(非起動、起動中、Suspend)とがとりうる組合せを示す図である。
[図27](a)プレイリスト管理テーブルの内部構成を示す図である。
【0011】
(b)プレイリスト管理テーブルを構成する情報要素の意味内容を示す図である。
[図28]分岐先Titleがとり得る三態様(プレイリスト管理テーブル無し、プレイリスト管理テーブル有りで尚且つPresent、プレイリスト管理テーブル有りで尚且つAutoPlay)と、直前タイトルにおけるPLの状態(非再生状態、再生中状態)とがとりうる6通りの組合せを示す図である。
[図29](a)プレイリスト管理テーブル及びアプリケーション管理テーブルの記述例を示す図である。
【0012】
(b)図29(a)のように記述されたアプリケーション管理テーブル、プレイリスト管理テーブルによりプレイリスト再生、アプリケーション実行がどのように進行するかを示す図である。
[図31](a)プレイリスト管理テーブルの他の記述例を示す図である。
【0013】
(b)図30(a)のケースに基づくアプリケーション実行及びプレイリスト再生の進行を示す図である。
[図31](a)〜(c)プレイリスト時間軸と、タイトルの再生区間との関係を示す図である。
[図32]本発明に係る再生装置の内部構成を示す図である。
[図33]ROM24に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。
[図34]Presentation Engine31〜モジュールマネージャ34による処理を模式化した図である。
[図35]アプリケーションマネージャ36による処理を模式化した図である。
[図36]User Event Manager37〜Default Operation Manager40を示す図である。
[図37]Java(登録商標)仮想マシン38の内部構成を示す図である。
[図38]アプリケーション終了の4態様を示す図である。
[図39]アプリケーションマネージャ36による処理手順を示す図である。
[図40]プレイリスト管理テーブル、アプリケーション管理テーブルの具体例を示す図である。
[図41](a)第2実施形態に係るBD−J Objectの内部構成を示す図である。
【0014】
(b)エラー管理テーブルの内部構成を示す図である。
[図42]エラー管理テーブルにおける5つのフラグの意味内容を示す。
[図43](a)エラー管理テーブルが記述された2つのTitle(title#1、title#2)を示す図である。
【0015】
(b)図43(a)のように記載されたアプリケーション管理テーブル、エラー管理テーブルに基づくアプリケーション実行及びプレイリスト再生の進行を示す図である。
[図44]第2実施形態に係るアプリケーションマネージャ36の処理手順を示すフローチャートである。
[図45]第2実施形態に係るアプリケーションマネージャ36の処理手順を示すフローチャートである。
[図46]アプリケーションマネージャ36による通知処理の処理手順を示すフローチャートである。
[図47]第3実施形態に係るアプリケーションマネージャ36の処理手順を示す図である。
[図48](a)パレンタルレベルに基づく選択アルゴリズムの内容を示す。
【0016】
(b)Languege for Audioに基づく選択アルゴリズムの内容を示す。
(c)Player Configuration for Videoに基づく選択アルゴリズムの内容を示す。
[図49]タイトルアンバウンダリーアプリケーションにPL選択を行わせる過程を模式的に描いた図である。
[図50]Playback Control Engine32によるPL再生手順を示すフローチャートである。
[図51]アングル切換、SkipBack,SkipNextの受付手順を示すフローチャートである。
[図52]SkipBack,SkipNextAPIがコールされた際の処理手順を示すフローチャートである。
[図53]Presentation Engine31による処理手順の詳細を示すフローチャートである。
[図54]SubPlayItemの再生手順を示すフローチャートである。
【符号の説明】
【0017】
1 BD−ROMドライブ
2 リードバッファ
3 デマルチプレクサ
4 ビデオデコーダ
5 ビデオプレーン
6 P−Graphicsデコーダ
7 Presentation Graphicsプレーン
8 合成部
9 フォントゼネレータ
10 I−Graphicsデコーダ
11 スイッチ
12 Interctive Graphicsプレーン
13 合成部
14 CLUT部
15 CLUT部
16 オーディオデコーダ
22 ユーザイベント処理部
23 PSRセット
24 CPU
25 シナリオメモリ
26 ローカルメモリ
33 HDMVモジュール
34 モジュールマネージャ
35 BD−Jモジュール
36 アプリケーションマネージャ
37 UOコントローラ
38 Java(登録商標)仮想マシン
41 PLMTプロセッサ
42 パーミッションコントローラ
52 ユーザクラスローダ
53 メソッドエリア
54 ワークメモリ
55a,b・・・n スレッド
56a,b・・・d Java(登録商標)スタック
【発明を実施するための最良の形態】
【0018】
(第1実施形態)
以降、本発明に係る記録媒体の実施形態について説明する。先ず始めに、本発明に係る記録媒体の実施行為のうち、使用行為についての形態を説明する。図1は、本発明に係る記録媒体の、使用行為についての形態を示す図である。図1において、本発明に係る記録媒体はBD−ROM100であり、BD−ROM100は、再生装置200、リモコン300、テレビ400により形成されるホームシアターシステムに、著作物を供給するという用途に供される。
【0019】
このうちリモコン400には、再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(Pause Off)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(Backward Play(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle Change)、アングル切り換え(Angle Change)を受け付けるキーや、メニュー操作時にあたってのフォーカス移動操作を受け付けるMoveUpキー、MoveDownキー、MoveRightキー、MoveLeftキー、メニュー表示操作を受け付けるPop−upキー、数値入力を受け付けるNumericキーが存在する。
【0020】
以上が本発明に係る記録媒体の使用形態についての説明である。
続いて本発明に係る記録媒体の生産行為について説明する。本発明に係る記録媒体は、BD−ROMのファイルシステム上における改良で実現することができる。図2は、BD−ROMにおけるファイル・ディレクトリ構成を示す図である。本図においてBD−ROMには、Rootディレクトリの下に、BDMVディレクトリがある。
【0021】
BDMVディレクトリには、拡張子bdmvが付与されたファイル
(index.bdmv,MovieObject.bdmv,BD−J Object.bdmv)がある。そしてこのBDMVディレクトリの配下には、更にPLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJAディレクトリと呼ばれる4つのサブディレクトリが存在する。
PLAYLISTディレクトリには、拡張子mplsが付与されたファイル
(00001.mpls,00002.mpls,00003mpls)がある。
【0022】
CLIPINFディレクトリには、拡張子clpiが付与されたファイル
(00001.clpi,00002.clpi,00003.clpi)がある。
STREAMディレクトリには、拡張子m2tsが付与されたファイル
(00001.m2ts,00002.m2ts,00003.m2ts)がある。
BDJAディレクトリには、拡張子jarが付与されたファイル
(00001.jar,00002.jar,00003jar)がある。以上のディレクトリ構造により、互いに異なる種別の複数ファイルが、BD−ROM上に配置されていることがわかる。
【0023】
本図において拡張子.m2tsが付与されたファイル
(00001.m2ts,00002.m2ts,00003.m2ts・・・・・)は、AVClipを格納している。AVClipには、MainCLip、SubClipといった種別がある。MainCLipは、ビデオストリーム、オーディオストリーム、字幕を構成するプレゼンテーショングラフィクスストリーム(PGストリーム)、メニューを構成するインタラクティブグラフィクスストリーム(IGストリーム)というような複数エレメンタリストリームを多重化することで得られたデジタルストリームである。
【0024】
SubClipは、オーディオストリーム、グラフィクスストリーム、テキスト字幕ストリーム(TextSTStream)等、1つのエレメンタリストリームのみにあたるデジタルストリームである。
拡張子”clpi”が付与されたファイル(00001.clpi,00002.clpi,00003.clpi・・・・・)は、AVClipのそれぞれに1対1に対応する管理情報である。管理情報故に、Clip情報は、AVClipにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。
【0025】
拡張子”mpls”が付与されたファイル(00001.mpls,00002.mpls,00003.mpls・・・・・)は、プレイリスト情報を格納したファイルである。プレイリスト情報は、AVClipを参照してプレイリストを定義する情報である。図3は、PL情報の構成を示す図であり、本図の左側に示すように、プレイリスト情報は、『MainPath情報』、『PLMark情報』、『SubPath情報』から構成される。
【0026】
MainPath情報(MainPath())は、破線の矢印mp1に示すように複数のPlayItem情報(PlayItem())からなる。PlayItemとは、1つ以上のAVClip時間軸上において、In_Time,Out_Timeを指定することで定義される再生区間である。PlayItem情報を複数配置させることで、複数再生区間からなるプレイリスト(PL)が定義される。図中の破線mp2は、PlayItem情報の内部構成をクローズアップしている。本図に示すようにPlayItem情報は、対応するAVClipを示す『Clip_information_file_name』と、『In_time』と、『Out_time』とからなる。図4は、AVClipと、PLとの関係を示す図である。第1段目はAVClipiがもつ時間軸を示し、第2段目は、PLがもつ時間軸を示す。PL情報は、PlayItem#1,#2,#3という3つのPlayItem情報を含んでおり、これらPlayItem#1,#2,#3のIn_time,Out_timeにより、3つの再生区間が定義されることになる。これらの再生区間を配列させると、AVClip時間軸とは異なる時間軸が定義されることになる。これが第2段目に示すPL時間軸である。このように、PlayItem情報の定義により、AVClipとは異なる時間軸の定義が可能になる。
【0027】
AVClipに対する指定は、原則1つであるが、複数AVClipに対する一括指定もあり得る。この一括指定は、PlayItem情報における複数のClip_Information_file_nameによりなされる。図5は、4つのClip_Information_file_nameによりなされた一括指定を示す図である。本図において第1段目〜第4段目は、4つのAVClip時間軸(AVClip#1,#2,#3,#4の時間軸)を示し、第5段目は、PL時間軸を示す。PlayItem情報が有する、4つのClip_Information_file_nameにて、これら4つの時間軸が指定されている。こうすることで、PlayItemが有するIn_time,Out_timeにより、択一的に再生可能な4つの再生区間が定義されることになる。これにより、PL時間軸には、切り換え可能な複数アングル映像からなる区間(いわゆるマルチアングル区間)が定義されることになる。
【0028】
PLmark情報(PLmark())は、PL時間軸のうち、任意の区間を、チャプターとして指定する情報である。図6は、PLmark情報の内部構成を示す図であり、本図の引き出し線pm1に示すようにPLmark情報は、『ref_to_PlayItem_Id』と、『Mark_time_stamp』とを含む。図7は、PLmarkによるチャプター定義を示す図である。本図において第1段目は、AVClip時間軸を示し、第2段目はPL時間軸を示す。図中の矢印pk1,2は、PLmarkにおけるPlayItem指定(ref_to_PlayItem_Id)と、一時点の指定(mark_time_stamp)とを示す。これらの指定によりPL時間軸には、3つのチャプター(Chapter#1,#2,#3)が定義されることになる。以上がPLmarkについての説明である。続いてSubPath情報について説明する。
【0029】
SubPath情報(SubPath())は、SubClipの時間軸上にIn_Time,Out_Timeを指定することで1つ以上の再生区間を定義する情報であり、図8に示す内部構成を有している。本図に示すようにSubPath情報は、破線の引き出し線sh1に示すように複数のSubPlayItem情報(SubPlayItem())からなる。破線sh2を用いてクローズアップしているように、SubPlayItem情報は、『Clip_information_file_name』と、『In_time』と、『Out_time』と、『Sync_PlayItem_Id』と、『Sync_start_Pts_of_PlayItem』とからなる。SubClipの時間軸上に対する、In_Time,Out_Timeの指定は、『Clip_information_file_name』、『In_time』、『Out_time』によりなされる。『Sync_PlayItem_Id』及び『Sync_start_Pts_of_PlayItem』は、SubClip時間軸上の再生区間と、PL時間軸とを同期させるという同期指定をなす。この同期指定により、PL時間軸と、SubPlayItem時間軸とは同期して進行することになる。
【0030】
図9は、SubPlayItem時間軸上の再生区間定義と、同期指定を示す図である。本図において第1段目は、PL時間軸を示し、第2段目はSubPlayItem時間軸を示す。図中のSubPlayItem.IN_timeは再生区間の始点を、SubPlayItem.Out_timeは再生区間の終点をそれぞれ示す。これによりSubClip時間軸上にも再生区間が定義されていることがわかる。矢印Sn1においてSync_PlayItem_Idは、PlayItemに対する同期指定を示し、矢印Sn2においてsync_start_PTS_of_PlayItemは、PL時間軸におけるPlayItem上の一時点の指定を示す。
【0031】
複数AVClipの切り換えを可能とするマルチアングル区間や、AVClip−SubClipを同期させ得る同期区間の定義を可能とするのが、BD−ROMにおけるプレイリスト情報の特徴である。以上のClip情報及びプレイリスト情報は、”静的シナリオ”に分類される。何故なら、以上のClip情報及びプレイリスト情報により、静的な再生単位であるPLが定義されるからである。以上で静的シナリオについての説明を終わる。
【0032】
続いて”動的なシナリオ”について説明する。動的シナリオとは、AVClipの再生制御を動的に規定するシナリオデータである。”動的に”というのは、再生装置における状態変化やユーザからのキーイベントにより再生制御の中身がかわることをいう。BD−ROMでは、この再生制御の動作環境として2つのモードを想定している。1つ目は、DVD再生装置の動作環境と良く似た動作環境であり、コマンドベースの実行環境である。2つ目は、Java(登録商標)仮想マシンの動作環境である。これら2つの動作環境のうち1つ目は、HDMVモードと呼ばれる。2つ目は、BD−Jモードと呼ばれる。これら2つの動作環境があるため、動的シナリオはこのどちらかの動作環境を想定して記述される。HDMVモードを想定した動的シナリオはMovie Objectと呼ばれ、管理情報により定義される。一方BD−Jモードを想定した動的シナリオはBD−J Objectと呼ばれる。
【0033】
先ず初めにMovie Objectについて説明する。
<Movie Object>
Movie Objectは、MovieObject.bdmvというファイルに格納される。図10は、MovieObject.bdmvの内部構成を示す図である。本図の左端に示すようにMovieObject.bdmvは、コード列”MOBJ”を示す『type_indicater』と、『version_number』と、1つ以上のMovieObjectである『MovieObjects()』とからなる。図中の図中の引き出し線vh1はMovieObjectsの内部構成をクローズアップしている。MovieObjects()は、自身のデータ長である『length』と、自身に含まれるMovieObjectの個数である『number_of_mobjs』と、number_of_mobjs個のMovieObjectである『MovieObjects』とからなる。これらnumber_of_mobjs個のMovieObjectは、識別子mobj_idをもって識別される。図中の引き出し線vh2は、識別子mobj_idにより特定される任意のMovieObject[mobj_id]()の内部構成をクローズアップしている。
【0034】
この引き出し線に示すように、MovieObjectは、MenuCallがなされた際、MenuCall後の再生再開を意図しているか否かを示す『resume_intention_flag』、MenuCallをマスクするか否かを示す情報『menu_call_mask』、タイトルサーチ機能をマスクするかを示す『title_search_flag』、ナビゲーションコマンドの個数である『number_of_navigation_command』、number_of_navigation_command個の『ナビゲーションコマンド』からなる。
【0035】
ナビゲーションコマンド列は、条件分岐、再生装置における状態レジスタの設定、状態レジスタの設定値取得等を実現するコマンド列からなる。MovieObjectにおいて記述可能なコマンドを以下に示す。
PlayPLコマンド
書式:PlayPL(第1引数,第2引数)
第1引数は、プレイリストの番号で、再生すべきPLを指定することができる。第2引数は、そのPLに含まれるPlayItemや、そのPLにおける任意の時刻、Chapter、Markを用いて再生開始位置を指定することができる。
【0036】
PlayItemによりPL時間軸上の再生開始位置を指定したPlayPL関数を
PlayPLatPlayItem()、
ChapterによりPL時間軸上の再生開始位置を指定したPlayPL関数を
PlayPLatChapter()、
時刻情報によりPL時間軸上の再生開始位置を指定したPlayPL関数を
PlayPLatSpecified Time()という。
JMPコマンド
書式:JMP引数
JMPコマンドは、現在の動的シナリオを途中で廃棄し(discard)、引数たる分岐先動的シナリオを実行するという分岐である。JMP命令の形式には、分岐先動的シナリオを直接指定している直接参照のものと、分岐先動的シナリオを間接参照している間接参照のものがある。
Movie Objectにおけるナビゲーションコマンドの記述は、DVDにおけるナビゲーションコマンドの記述方式と良く似ているので、DVD上のディスクコンテンツを、BD−ROMに移植するという作業を効率的に行うことができる。Movie Objectについては、以下の国際公開公報に記載された先行技術が存在する。詳細については、本国際公開公報を参照されたい。
国際公開公報WO 2004/074976
以上でMovie Objectについての説明を終える。続いてBD−J Objectについて説明する。
<BD−J Object>
BD−J Objectは、Java(登録商標)プログラミング環境で記述された、BD−Jモードの動的シナリオである。
【0037】
図11は、BD−J Object.bdmvの内部構成を示す図である。本図の左端に示すようにBD−J Object.bdmvは、コード列”BOBJ”を示す『type_indicater』と、『version_number』と、1つ以上のBD−J Objectである『BD−J Objects()』とからなる。図中の図中の引き出し線bh1はBD−J Objectsの内部構成をクローズアップしている。BD−J Objects()は、自身のデータ長である『length』と、自身に含まれるBD−J Objectの個数である『number_of_bobjs』と、number_of_bobjs個のBD−J Objectである『BD−J Objects』とからなる。これらnumber_of_bobjs個のBD−J Objectは、識別子bobj_idをもって識別される。図中の引き出し線bh2は、識別子bobj_idにより特定される任意のBD−J Object[bobj_id]()の内部構成をクローズアップしている。
【0038】
この引き出し線に示すように、本図に示すようにBD−J Objectは、『resume_intention_flag[bobj_id]』と、『menu_call_mask[bobj_id]』と、『title_search_flag[bobj_id]』と、『Application_Management_Table[bobj_id]』と、『Playlist_Management_Table[bobj_id]』とからなる。『resume_intention_flag』、『menu_call_mask』、『title_search_flag』を含んでいる点においてBD−J ObjectはMovie Objectとほぼ同じである。
【0039】
Movie Objectとの違いは、BD−J Objectにコマンドが直接記述されていない点である。つまりMovie Objectにおいて制御手順は、ナビゲーションコマンドにより直接記述されていた。これに対しBD−J Objectでは、Java(登録商標)アプリケーションに対する指定を『Application_Management_Table[bobj_id]』上に記載することにより、間接的に制御手順を規定している。このような間接的な規定により、複数動的シナリオにおいて制御手順を共通化するという、制御手順の共通化を効率的に行うことができる。
【0040】
またMovieObjectにおけるPL再生は、PL再生を命じるナビゲーションコマンド(PlayPlコマンド)の記述によりなされていたが、BD−J ObjectにおけるPL再生は、PL再生手順を示す『Playlist_Management_Table[bobj_id]』をBD−J Objectに組み込むことで記述が可能になる。それだけではなくアプリケーション管理テーブルから参照されるアプリケーションに、PL再生手順を組み込むことでも記述が可能になる。つまりプレイリスト管理テーブルの記述、アプリケーションにおけるPL再生手順の記述のどちらであっても、プレイリスト再生の手順を組み込んでおくことができる。
【0041】
ここでJava(登録商標)アプリケーションについて説明する。Java(登録商標)アプリケーションは、仮想マシンのヒープ領域(ワークメモリとも呼ばれる)にロードされた1つ以上のxletプログラムからなる。このワークメモリにロードされたxletプログラム、及び、データから、アプリケーションは構成されることになる。以上がJava(登録商標)アプリケーションの構成である。
このJava(登録商標)アプリケーションの実体にあたるのが、図2におけるBDMVディレクトリ配下のBDJAディレクトリに格納されたJava(登録商標)アーカイブファイル(00001.jar,00002.jar)である。以降、Java(登録商標)アーカイブファイルについて、図12を参照しながら説明する。
【0042】
<Java(登録商標)アーカイブファイル>
Java(登録商標)アーカイブファイル(図2の00001.jar,00002.jar)は、1つ以上のクラスファイル、1つ以上のデータファイル等を1つにまとめることで得られるファイルである。図12(a)は、アーカイブファイルにより収められているプログラム、データを示す図である。本図におけるデータは、枠内に示すディレクトリ構造が配置された複数ファイルを、Java(登録商標)アーカイバでまとめたものである。枠内に示すディレクトリ構造は、Rootディレクトリ、Java(登録商標)ディレクトリ、imageディレクトリとからなり、Rootディレクトリにcommon.pkgが、Java(登録商標)ディレクトリにクラスファイル(aaa.class,bbb.class)が、imageディレクトリに、menu.jpgが配置されている。Java(登録商標)アーカイブファイルは、これらをJava(登録商標)アーカイバでまとめることで得られる。かかるクラスファイル及びデータは、BD−ROMからキャッシュに読み出されるにあたって展開され、キャッシュ上で、ディレクトリに配置された複数ファイルとして取り扱われる。Java(登録商標)アーカイブファイルのファイル名における″zzzzz″という5桁の数値は、アプリケーションのID(applicationID)を示す。本Java(登録商標)アーカイブファイルがキャッシュに読み出された際、このファイル名における数値を参照することにより、任意のJava(登録商標)アプリケーションを構成するプログラム,データを取り出すことができる。
本図におけるクラスファイル(図中のaaa.class,bbb.class)は、上述したxletプログラムに対応するクラスファイルである。BD−Jモードにおける再生手順は、このクラスファイルのインスタンスにあたるxletプログラムにより規定される。
【0043】
xletプログラムとは、JMF(Java(登録商標)Media FrameWork)方式のインターフェイスを利用することができるJava(登録商標)プログラムであり、JMF等の方式に従って、キーイベントに基づく処理を行う。xletプログラムは、JMF方式の処理が可能であるので、MPLSファイルに対するインスタンス(JMFプレーヤインスタンス)を生成することにより、プレイリスト再生を再生装置に命じることができる。他にもxletプログラムでは、ファンクションAPIのコールを記述することにより、BD−ROM再生装置特有の処理を実行させることができる。
【0044】
更にxletプログラムは、WWWサイトをアクセスしてコンテンツをダウンロードするという手順を実行することもできる。これによりダウンロードコンテンツと、プレイリスト再生とを交えた斬新な作品を再生させることができる。
xletプログラムのクラスファイルについて説明する。図12(b)は、クラスファイルの内部構成を示す図である。本図に示すようにクラスファイルは、通常のクラスファイル同様、『コンスタントプール』、『インターフェイス』、『メソッド1,2,3・・・・n』からなる。クラスファイルにおけるメソッドには、挙動のトリガになるキーイベントが予め登録されているメソッド(EventListner)と、JMFの再生手順を命じるメソッド(JMFプレーヤインスタンスのメソッド)、BD−ROM再生装置側のファンクションAPIをコールするメソッドがある。これらのメソッドは、自身に割り当てられたローカル変数や、自身をコールする際の引数を用いることにより、演算等の手順が記述されている。以上がJava(登録商標)アーカイブファイルについての説明である。尚、本実施形態においてアプリケーションを構成するプログラム、データは、Java(登録商標)アーカイブファイルにまとめられたが、LZHファイル、zipファイルであってもよい。
【0045】
以上が、BD−Jモードにおける動的シナリオについての説明である。
<BD−ROMにおける状態遷移>
DVD−Videoのような読出専用ディスクで供給されるディスクコンテンツは、トップメニューを中核とした構造になっている。そのトップメニューから、個々の著作物へと分岐して再生を行い、その後再び、TopMenu Titleに戻るという独特の状態遷移をなす。図13は、ディスクコンテンツにおける状態遷移を示す図である。本図における四角枠は、Titleである。Titleとは、ディスクコンテンツ特有の状態遷移において、1つの”状態”にあたる再生単位である。Titleには、BD−ROMのローディング時に最初に再生される『FirstPlayTitle』、Top_Menuを構成する『Top_menuTitle』、これら以外の一般的な『Title』がある。また、図中の矢印jh1,2,3,4,5,6,7,8は、Title間の分岐を象徴的に示す。本図に示される状態遷移とは、BD−ROMローディング時に、『FirstPlayTitle』が再生され、『Top_menuTitle』への分岐が発生して、トップメニューに対する選択待ちになるというものである。BD−ROMのような映画作品頒布用の記録媒体の業界では、動的商標を、ローディング時に再生するという慣習が定着している。この動的商標は、映画作品の制作者や頒布者を表徴するものであり、FirstPlayTitleは、BD−ROMのローディングされた際、なによりも先に、この動的商標を再生させるという役割分担を担う。
【0046】
そしてユーザによるメニューに対する選択操作があれば、選択に従って該当Titleの再生を行い、再びTopMenu Titleに戻るとの処理を、BD−ROMのイジェクトがなされるまで延々と繰り返すというのが、ディスクコンテンツ特有の状態遷移である。
かかる状態遷移をなすTitleは、HDMVモードの動的シナリオ、BD−Jモードの動的シナリオから構成される。図14は、HDMVモードの動的シナリオから構成される2つのTitleを示す図である。本図の第1段目は、識別子title_idにより識別される任意のTitle(title_id)を示す。第2段目は、そのTitleを構成している1つ以上のMovieObjectからなるMovieObject列を示す。第3段目は、MovieObjectを構成するナビゲーションコマンドを示す。
【0047】
他のTitleへのJumpを再生装置に命じるナビゲーションコマンド(JumpTitleコマンド)をMovieObjectに記述しておくことにより、図13に示したような、あるTitleから別のTitleへの分岐が実現されることになる。またPL再生を命じるナビゲーションコマンド(PlayPLコマンド)をMovieObjectに記述しておくことにより、本図第4段目に示すPLが、Titleに帰属することになる。
【0048】
PLを帰属させることにより、HDMVモードにおけるTitleでは、動画再生を伴う映画作品を定義することができる。これがHDMVモードの動的シナリオにより定義されるTitleの構成である。
続いてBD−Jモードの動的シナリオにより構成されるTitleの内部構成について説明する。図15は、BD−Jモードの動的シナリオ(BD−J Object)により構成されるTitleの内部構成を示す図である。
【0049】
第1段目は、識別子title_idにより識別される任意のTitleを示し、第2段目は、そのTitleを構成する唯一のBD−J Objectを示す。第3段目は、そのBD−J Objectの内部にあるアプリケーション管理テーブル、プレイリスト管理テーブルを示す。第4段目は、第3段目のアプリケーション管理テーブルにより動作することになるアプリケーションを示す。このアプリケーションは、第5段目に示すように、他のTitleへのJumpを再生装置に命じるメソッド(JumpTitleAPIをコールするメソッド)を含んでいるので、JumpTitleAPIのコールメソッドにより、図13に示した他ののTitleへの分岐が実現することになる。一方、第3段目にはプレイリスト管理テーブルが記述されているので、第4段目にあたっては、アプリケーションの実行と共にPLが再生されることになる。
【0050】
BD−J Objectには、アプリケーション管理テーブル,プレイリスト管理テーブルが含まれているので、第4段目に示すように、アプリケーション実行と、PL再生とが同時になされることになる。このようなアプリケーション実行と、PL再生との同時実行がBD−JモードにおけるTitleの特徴である。
プレイリスト管理テーブルは、全てのBD−J Objectに存在する訳ではない。プレイリスト管理テーブルは任意的な構成要素であり、プレイリスト管理テーブルをもつBD−J Objectもあるし、プレイリスト管理テーブルをもたないBD−J Objectもある。図16は、プレイリスト管理テーブルをもたないTitleを示す図である。アプリケーション管理テーブルしか存在しないため、プレイリスト管理テーブルをもたないようなBD−J Objectでは、第4段目に示すように、アプリケーション動作のみが規定される。以上によるアプリケーション動作の規定により、PL再生を伴わない、制御手順のみのTitleが規定されることになる。
【0051】
また図14ではHDMVモードのTitleから、HDMVモードのTitleへの分岐が記述されていたが、図17に示すようにHDMVモードのTitleから、BD−JモードのTitleへの分岐もありえる。同様に図15ではBD−JモードのTitleから、BD−JモードのTitleへの分岐が記述されていたが、図18に示すようにBD−JモードのTitleから、HDMVモードのTitleへの分岐もありえる。
【0052】
上述したTitleの内部構成において、あるTitleの構成要素となるMovieObjectはどれであるか、又は、あるTitleの構成要素となるBD−J Objectはどれであるのかを定義するのが、図2に示したindex.bdmvである。以降index.bdmvについて説明する。
Index.bdmvは、タイトルを構成する、Movie Object又はBD−J Objectを示すテーブルである。
【0053】
図19は、index.bdmvの内部構成を示す図である。本図に示すようにindex.bdmvは、値”INDX”を示す値をもつ『type_indicator』と、『version_number』と、本ファイルの先頭からIndexesまでの相対アドレスを示す『Indexes_start_address』と、『Indexes()』とからなる。『Indexes』は、各Titleに対するインデックスであり、破線の引き出し線ix1でクローズアップしているように、『Indexes』は、『length』,『FirstPlayback(){FirstPlayback_mobj_id_ref}』,『TopMenu(){TopMenu_mobj_id_ref}』,『number_of_Titles』,『Title[0]()〜Title[number_of_Titles−1]()』からなる。
【0054】
『FirstPlayback(){FirstPlayback_mobj_id_ref}』は、FirstPlayTitleに対するIndexであり、FirstPlayTitleを構成するMovieObject識別子の参照値(FirstPlayback_mobj_id_ref)が格納される。
『TopMenu(){TopMenu_mobj_id_ref}』は、Top−MenuTitleに対するIndexであり、Top_menuTitleを構成するMovieObject識別子の参照値(TopMenu_mobj_id_ref)が格納される。
【0055】
『Title[0]()〜Title[number_of_Titles−1]()』は、FirstPlayTitle、Top−MenuTitle以外のTitleに対するIndexであり、number_of_Title個存在している。これらは識別子title_idをもって識別される。
ここで識別子title_idにより特定されるインデックスをTitle[title_id]()とする。図中の引き出し線ix2は、Title[title_id]()に対する内部構成をクローズアップしている。
【0056】
本図に示すように”Title[title_id]()”は、”Title[title_id]が、分岐をもっているか否か等、Titleの再生の類型を示す『Title_Playback_Type[title_id]』と、このTitleに対するサーチ機能の実行が許可されているか否かを示す『Title_access_Flag[title_id]』と、Titleを構成するMovieObjectを一意に示す『title_mobj_id_ref]title_id]』とからなる。ここでTitleを構成する動的シナリオがBD−J Objectであれば、『title_bobj_id_ref[title_id]』が『title_mobj_id_ref[title_id]』の代わりになる。『title_bobj_id_ref[title_id]』は、Titleを構成するBD−J Objectを一意に示す。
Index.bdmvについては、以下の国際公開公報に詳細が記載されている。詳細については、本公報を参照されたい。
国際公開公報WO 2004/025651 A1公報
<アプリケーション管理テーブル>
BD−J Objectに含まれるアプリケーション管理テーブル及びプレイリスト管理テーブルは、本実施形態の主眼となる構成要素であり、その詳細について説明する。先ずアプリケーション管理テーブル(AMT)について説明する。
【0057】
図20(a)は、アプリケーション管理テーブルの内部構成を示す図である。本図に示すようにアプリケーション管理テーブルは、『life_cycle』と、『apli_id_ref』と、『run_attribute』と、『run_priority』からなる。
図20(b)は、アプリケーション管理テーブルを構成する情報要素の意味内容を示す。
【0058】
『life_cycle』は、アプリケーションの”生存区間”を示す。
『apli_id_ref』は、”アプリケーション識別子”に対する参照値が記述されることにより、左記の生存区間をもつアプリケーションがどれであるかを示す。アプリケーション識別子は、Java(登録商標)アーカイブファイルにおいて、ファイル名として付与された5桁の数値zzzzzで表現される。『apli_id_ref』には、この5桁の数値が記述される。
【0059】
『run_attribute』は、当該生存区間におけるアプリケーションの”起動属性”が記述される。起動属性には、AutoRun、Present、Suspedといった種別がある。
『run_priority』は、当該生存区間におけるアプリケーションの”起動優先度”が記述される。BD−J Objectでは、これらの情報を用いてアプリケーションの挙動を制御する。
<生存区間>
アプリケーション管理テーブルに規定される情報のうち、生存区間について説明する。
【0060】
生存区間とは、BD−ROMに記録されたコンテンツ全体の時間軸において、仮想マシンのワークメモリ上でアプリケーションが生存し得る区間を示す。ワークメモリにおける”生存”とは、そのアプリケーションを構成するxletプログラムが、ワークメモリに読み出され、仮想マシンによる実行が可能になっている状態をいう。
Java(登録商標)仮想マシンにおいてアプリケーションを動作させる場合、時間軸の何処からアプリケーションによるサービスを開始し、時間軸の何処でアプリケーションによるサービスを終えるかという”サービスの開始点・終了点”を明確に規定することが重要になる。このサービスの開始点・終了点を規定するのが、アプリケーション管理テーブルにおける生存区間である。
【0061】
それでは、図13のような状態遷移をなすディスクコンテンツにおいて、Titleの生存区間はどのように規定されるのであろうか。BD−ROMのローディングがなされた後、図13において矢印jh1,2,3,4・・・・・に示された参照符号の数値順に分岐がなされ、BD−ROMがイジェクトされたものとする。そうすると、BD−ROMがローディングされてから、イジェクトされるまでの連続時間帯を一本の時間軸と同視することができる。この時間軸を、ディスク全体の時間軸とする。図21(a)は、ディスク全体の時間軸を示す図であり、図21(b)は、この時間軸における構成を示す。図21(b)に示すように、ディスク全体の時間軸は、FirstPlay Titleが再生されている区間、TopMenu Titleが再生されている区間、title#1が再生されている区間等からなる。これらTitleの再生区間はどのように規定されているかというと、Titleは、1つ以上のMovieObject、又は、唯一のBD−J Objectから構成されるから、どれかのMovieObject又はBD−J Objectが、有効になっている期間をTitleの再生区間と考えることができる。
【0062】
つまりFirstPlay Title、TopMenu Title、その他のTitleは、何れも動的シナリオから構成されるから、Titleを構成するMovieObject又はBD−J Objectのうち、どれかがカレントMovieObject、又は、カレントBD−J ObjectとしてActivatedされ、再生装置内において解読・実行に供されている期間を、Titleの再生区間と定義することができる。図22(a)は、BD−ROM全体の時間軸において、識別子bobj_idにより特定されるBD−J Objectから特定されるタイトル再生区間を示す図である。ここで識別子bobj_idにより特定されるBD−J Objectが、1つのTitleを構成しているなら、その識別子bobj_idにより特定されるBD−J Objectが有効になっているBD−ROM時間軸上の一区間を、Titleの再生区間と考えることができる。
【0063】
同様に、識別子mobj_idにより特定されるMovieObjectが、1つのTitleを構成しているなら、その識別子mobj_idにより特定されるMovieObjectが有効になっている、BD−ROM時間軸上の一区間を、Titleの再生区間と考えることができる。
ここでMovieObject、BD−J ObjectがActivateされている期間の終期は、Title分岐(JumpTitle)がなされるまでである。つまり、Title分岐(JumpTitle)がなされるまで、実行の対象になっている動的シナリオは、カレントMovieObject及びカレントBD−J Objectとして扱われるから、そのMovieObject又はBD−J ObjectにおいてJumpTitleが発生するまでの1つの区間を、Title再生区間として扱う。
【0064】
続いてTitle区間と、PL時間軸との関係について説明する。上述したようにMovieObject、BD−J Objectでは、1つの処理手順としてPL再生手順を記述することができる。PL再生手順の記述があれば、上述したPL時間軸の全部又は一部がTitle区間に帰属することになる。図22(a)の一例においてBD−J Objectに、プレイリスト管理テーブルが記述されているとする。この場合、BD−J Objectに対応するTitle区間には、図22(b)に示すように、PL時間軸が帰属する。このPL時間軸には更に、複数チャプター(Chapter#1,#2,#3)が定義され得るため、BD−ROM上の時間軸には、BD−ROM全体−Title−PL−チャプターというドメインが存在することになる。これらのドメインを用いて、アプリケーションの生存区間を記述することができる。尚、プレイリスト再生は、アプリケーション実行と同時になされため、プレイリスト再生の途中で、Title分岐が発生することがある。この場合、1つのTitle再生区間内にはプレイリスト時間軸全体ではなく、プレイリスト時間軸の一部分のみが帰属することになる。つまり1つのTitleの再生区間において、プレイリスト時間軸の全体が帰属するか、その一部分が帰属するかは、Title分岐が何時発生するかによって変わる。
【0065】
図23は、図22(b)の時間軸上に規定される、生存区間の典型を示す図である。本図に示すようにアプリケーションには、Titleを生存区間にした”タイトルバウンダリアプリケーション”、Title内におけるチャプターを生存区間にした”チャプターバウンダリアプリケーション”、BD−ROM全体の時間軸を生存区間にした”タイトルアンバウンダリーアプリケーション”という3つの典型がある。
【0066】
このうちタイトルバウンダリアプリケーションの生存区間は、そのタイトルの識別子を用いて定義することができる。またチャプターバウンダリアプリケーションの生存区間は、チャプターが属するタイトルの識別子と、そのチャプターの識別子との組みを用いて定義することができる。
プラットフォームが動作していたとしても、Titleやチャプターという生存区間が終われば、リソースをアプリケーションから回収することができる。リソース回収の機会を保証するので、プラットフォームの動作を安定化させることができる。
【0067】
近い将来、実施されるであろうディスクコンテンツを題材に選んで、アプリケーション管理テーブルにおける生存区間記述について、具体例を交えて説明する。ここで題材にするディスクコンテンツは、映像本編を構成する本編タイトル(title#1)、オンラインショッピングを構成するオンラインショッピングタイトル(title#2)、ゲームアプリケーションを構成するゲームタイトル(title#3)という、性格が異なる3つのタイトルを含むものである。図24は、本編タイトル、オンラインショッピングタイトル、ゲームタイトルという3つのタイトルを含むディスクコンテンツを示す図である。本図における右側にはIndex.bdmvを記述しており、左側には3つのタイトルを記述している。
【0068】
右側における破線枠は、各アプリケーションがどのタイトルに属しているかという帰属関係を示す。3つのタイトルのうちtitle#1は、application#1、application#2、application#3という3つのアプリケーションからなる。title#2は、application#3、application#4という2つのアプリケーション、title#3は、application#5を含む。図24の一例においてapplication#3は、title#1、title#2の双方で起動される。
【0069】
図24の破線に示される帰属関係から各アプリケーションの生存区間をグラフ化すると、図25(a)のようになる。本図において横軸は、タイトル再生区間であり、縦軸方向に各アプリケーションの生存区間を配置している。ここでapplication#1、application#2は、title#1のみに帰属しているので、これらの生存区間は、title#1内に留まっている。application#4は、title#2のみに帰属しているので、これらの生存区間は、title#2内に留まっている。application#5は、title#3のみに帰属しているので、これらの生存区間は、title#3内に留まっている。application#3は、title#1及びtitle#2に帰属しているので、これらの生存区間は、title#1−title#2にわたる。この生存区間に基づき、アプリケーション管理テーブルを記述すると、title#1,#2,#3のアプリケーション管理テーブルは図25(b)のようになる。このようにアプリケーション管理テーブルが記述されれば、title#1の再生開始時においてapplication#1、application#2、application#3をワークメモリにロードしておく。そしてtitle#2の開始時にapplication#1、application#2をワークメモリから削除してapplication#3のみにするという制御を行う。これと同様にtitle#2の再生開始時においてapplication#4をワークメモリにロードしておき、title#3の開始時にapplication#3,#4をワークメモリから削除するという制御を行いうる。
【0070】
更に、title#3の再生中においてapplication#5をワークメモリにロードしておき、title#3の再生終了時にapplication#5をワークメモリから削除するという制御を行いうる。
タイトル間分岐があった場合でも、分岐元−分岐先において生存しているアプリケーションはワークメモリ上に格納しておき、分岐元にはなく、分岐先にのみ存在するアプリケーションをワークメモリに読み込めば良いから、アプリケーションをワークメモリに読み込む回数は必要最低数になる。このように、読込回数を少なくすることにより、タイトルの境界を意識させないアプリケーション、つまりアンバウンダリなアプリケーションを実現することができる。
【0071】
続いてアプリケーションの起動属性についてより詳しく説明する。起動属性には、自動的な起動を示す「AutoRun」、自動起動の対象ではないが、仮想マシンのワークメモリに置いて良いことを示す「Present」、仮想マシンのワークメモリにはおかれるが、CPUパワーの割り当ては不可となる「Suspend」がある。
「AutoRun」は、対応するタイトルの分岐と同時に、そのアプリケーションをワークメモリに読み込み、且つ実行する旨を示す属性である。あるタイトルから、別のタイトルへの分岐があると、アプリケーション管理を行う管理主体(アプリケーションマネージャ)は、その分岐先タイトルにおいて生存しており、かつ起動属性がAutoRunに設定されたアプリケーションを仮想マシンのワークメモリに読み込み実行する。これによりそのアプリケーションは、タイトル分岐と共に自動的に起動されることになる。
【0072】
起動属性「Present」は、継続属性であり、分岐元titleにおけるアプリケーションの状態を継続することを示す。また対応するアプリケーションを実行してよいことを示す属性である。起動属性が「Present」である場合、この起動属性が付与されたアプリケーションは、他のアプリケーションからの呼び出しが許可されることになる。アプリケーション管理を行う管理主体(アプリケーションマネージャ)は、起動中のアプリケーションから呼出があると、そのアプリケーションのapplicationIDが、アプリケーション管理テーブルに記述されていて、起動属性が「Present」であるか否かを判定する。「Present」であれば、そのアプリケーションをワークメモリにロードする。一方、その呼出先アプリケーションのapplicationIDがアプリケーション管理テーブルに記述されていない場合、そのアプリケーションはワークメモリにロードされない。アプリケーションによる呼出は、この「Present」が付与されたアプリケーションに限られることになる。「Present」は、起動属性を明示的に指定しない場合に付与されるデフォルトの起動属性であるから、あるアプリケーションの起動属性が無指定「−」である場合、そのアプリケーションの起動属性の起動属性はこのPresentであることを意味する。
【0073】
「Suspend」とは、リソースは割り付けられているが、CPUパワーは割り当てられない状態にアプリケーションが置かれることをいう。かかるSuspendは、例えばゲームタイトルの実行中に、サイドパスを経由するという処理の実現に有意義である。
図26は、起動属性がとり得る三態様(Present、AutoRun、Suspend)と、直前タイトルにおけるアプリケーション状態の三態様(非起動、起動中、Suspend)とがとりうる組合せを示す図である。直前状態が”非起動”である場合、起動属性が”AutoRun”であるなら、分岐先タイトルにおいてそのアプリケーションは、起動されることになる。
【0074】
直前状態が”非起動”であり、起動属性が”Present”、”Suspend”であるなら、分岐先タイトルにおいてそのアプリケーションは、何もせず、状態を継続することになる。
直前状態が”起動中”である場合、起動属性が”Present”、”AutoRun”であるなら、分岐先タイトルにおいてそのアプリケーションは、何もせず、状態を継続することになる。
【0075】
起動属性が”Suspend”であるなら、アプリケーションの状態はSuspendされることになる。直前状態が”Suspend”である場合、分岐先タイトルの起動属性が”Suspend”ならSuspendを維持することになる。”Present”又は”AutoRun”であるなら、分岐先タイトルにおいてそのアプリケーションは、レジュームすることになる。アプリケーション管理テーブルにおいて生存区間及び起動属性を定義することにより、タイトル再生区間の進行に沿って、Java(登録商標)アプリケーションを動作させるという同期制御が可能になり、映像再生と、プログラム実行とを伴った、様々なアプリケーションを世に送り出すことができる。
【0076】
尚、直前状態が”Suspend”であり、分岐先タイトルの起動属性が”Present”の場合は、直前状態、すなわちサスペンド状態を維持しても良い。
最後に、各アプリケーションに対する”起動優先度”について説明する。
この起動優先度は、0〜255の値をとり、メモリリソース枯渇時や、CPU負荷が高まった時に、どのアプリケーションを強制的に終了させるか、また、どちらのアプリケーションからリソースを奪うかという処理をアプリケーションマネージャが行うにあたっての判断材料になる。この場合、アプリケーションマネージャは、起動優先度が低いアプリケーションの動作を終了し、起動優先度が高いアプリケーションの動作を継続させるとの処理を行う。
【0077】
また起動優先度は、再生中PLに対する要求が競合した場合のアプリケーション間の調停でも利用される。ここであるアプリケーションが、あるプレイリストの早送りしているものとする。ここで別のアプリケーションが同じプレイリストに対するポーズ要求を行ったとすると、これらのアプリケーションに付与された起動優先度を比較する。そして早送りを命じたアプリケーションの起動優先度が高いなら、かかるアプリケーションによる早送りを継続して行う。逆にポーズを命じたアプリケーションの起動優先度が高いなら、早送り中PLをポーズを行う。
【0078】
以上の生存区間・起動属性・起動優先度により、仮想マシン上で動作し得るアプリケーションの数を所定数以下に制限するよう規定しておくことがオーサリング時に可能なる。そのため、アプリケーションの安定動作を保証することができる。
<プレイリスト管理テーブル>
以上がアプリケーション管理テーブルについての説明である。続いてプレイリスト管理テーブルについて説明する。プレイリスト管理テーブルとは、アプリケーションの生存区間において、各アプリケーション実行と同時に行うべき再生制御を示すテーブルである。アプリケーションの動作というのは不安定であり、起動の失敗や異常終了がありうる。そこで起動失敗、異常終了があった場合のFail Safe機構として、本実施形態ではアプリケーションの生存区間毎に、プレイリスト管理テーブルを設けている。プレイリスト管理テーブルは、あるアプリケーションの生存区間が開始した際、これと同時に行うべき再生制御を規定する情報である。この再生制御とは、プレイリスト情報に基づくAVClip再生であり、プレイリスト情報による再生制御を同時に行うことで、アプリケーション実行と、プレイリスト再生とが同時になされることになる。プレイリスト管理テーブルは、アプリケーションの生存区間毎に設けられるとしたが、プレイリスト管理テーブルが設けられるアプリケーションは、タイトルバウンダリのアプリケーションに限られる。何故ならタイトルアンバウンダリーアプリケーションは、全タイトルを生存区間にしているため、アプリケーション実行と同時にプレイリスト再生を行うという制御は、適合しないからである。
【0079】
チャプターバウンダリアプリケーションは、1つのプレイリスト内のチャプターからアプリケーション実行を開始するという前提の下で生存区間が規定されているため、プレイリスト再生を規定する必要はないからである。以上のことからプレイリスト管理テーブルは、1つ以上のTitleからなる生存区間に定義されることになる。
図27(a)は、プレイリスト管理テーブルの内部構成を示す図である。本図に示すようにプレイリスト管理テーブルは、『PL_id_ref』と、『Playback_Attribute』とからなる。
【0080】
図27(b)は、プレイリスト管理テーブルを構成する情報要素の意味内容を示す。
『PL_id_ref』は、PL識別子に対する”参照値”が記述されることにより、アプリケーションの生存区間において再生可能となるPLがどれであるかを示す。PL識別子は、ファイルYYYYY.MPLSにおいて、ファイル名として付与された5桁の数値YYYYYで表現される。このYYYYYが記述されることにより、『PL_id_ref』は、対応するTitleにおいて再生可能となるPLがどれであるかを示す。
【0081】
『Playback_Attribute』は、アプリケーション管理テーブルにおける起動属性に倣った属性であり、『PL_id_ref』に記述されたPLを、タイトル開始時において、どのように再生するかを規定する再生属性である。PLに対する再生属性には、『AutoPlay』、『Present』といった種別がある。
『AutoPlay』とは、対応するタイトルの分岐と同時に、そのプレイリストを再生させる旨を示す属性である。あるタイトルから、別のタイトルへの分岐があると、アプリケーション管理を行う管理主体(アプリケーションマネージャ)は、その分岐先タイトルにおいて再生可能であり、かつ再生属性がAutoPlayに設定されたプレイリストの再生を開始する。これにより起動属性がAutoPlayに設定されたプレイリストは、タイトル分岐と共に自動的に起動されることになる。
【0082】
『Present』とは、起動属性におけるPresent同様、継続属性であり、分岐元titleにおけるPLの状態を継続することを示す。また対応するプレイリストを再生してよいことを示す属性である。例えば連続して再生される2つのTitleがあり、分岐元Title側のプレイリスト管理テーブルでは、あるプレイリストの再生属性がAutoPlayに設定され、分岐先Title側のプレイリスト管理テーブルでは、そのプレイリストの再生属性がPresentに設定されているものとする。ここでプレイリストの再生時間が2時間長であり、このうち1時間が経過した時点で分岐が発生したとする。この場合分岐先Titleでは、再生属性がPresentに設定されているので、分岐先Titleにおいて、そのプレイリストは、1時間という再生済み区間の直後から、再生されることになる。このように再生属性をPresentに設定しておけば、Title間の分岐があった場合でも、プレイリスト再生をその残りの部分から開始することができる。これにより分岐し合う一連のTitleにおいて、共通のプレイリストを再生するという”タイトル間におけるプレイリスト再生の共通化”を容易に実現することができる。また分岐先タイトルが複数ある場合、これら複数タイトルの再生属性を何れもPresentにしておけば、複数のうちどれに分岐したとしても、1つの共通のプレイリスト再生を継続させることができる。
【0083】
尚Titleの境界は、シームレス再生を保証しなくてもよいので、上述したように複数Title間で1つのプレイリストを再生しようとする場合、分岐前後でプレイリスト再生を中断させることは許容される。
また、再生属性が「Present」である場合、この再生属性が付与されたプレイリストは、他のアプリケーションからの再生要求により再生されることになる。アプリケーション管理を行う管理主体(アプリケーションマネージャ)は、起動中のアプリケーションから、プレイリストの再生要求があると、要求を受けたプレイリストのPL_id_refが、プレイリスト管理テーブルに記述されていて、再生属性が「AutoPlay」か「Present」のいずれかか否かを判定する。「AutoPlay」か「Present」のいずれかであれば、そのプレイリストを再生する。一方、要求を受けたプレイリストのPL_id_refがプレイリスト管理テーブルに記述されていない場合、そのプレイリストを再生しない。アプリケーションの要求によるプレイリスト再生は、この「AutoPlay」か「Present」のいずれかが付与されたプレイリストに限られることになる。「Present」は、再生属性を明示的に指定しない場合に付与されるデフォルトの再生属性であるから、あるプレイリストの再生属性が無指定「−」であるとそのプレイリストの再生属性はこのPresentであることを意味する。
【0084】
図28は、分岐先Titleがとり得る三態様(プレイリスト管理テーブル無し(i)、プレイリスト管理テーブル有りで尚且つAutoPlay(ii)、プレイリスト管理テーブル有りで尚且つPresent(iii))と、直前タイトルにおけるPLの状態(非再生状態、再生中状態)とがとりうる6通りの組合せを示す図である。
本図における6通りの組合せのうち、”直前状態=非再生状態”と、”分岐先Title=プレイリスト管理テーブル有り、尚且つ、分岐先Titleの再生属性=AutoPlay”との組合せにおいて、分岐先タイトルにおけるPLの再生は、自動的に開始することになる。
【0085】
また”直前状態=再生中状態”と、”分岐先Title=プレイリスト管理テーブル無し”との組合せにおいて、分岐先タイトルでのPLの再生は、自動的に停止することになる。
そしてこれら2つの組合せ以外は全て、分岐元Titleの状態を継続することになる。プレイリスト管理テーブルに基づくプレイリスト再生の開始は、分岐元タイトルにおいて非再生状態であり、分岐先タイトルにおいてAutoPlay属性が付与されている場合に限られるので、タイトルの分岐発生する毎に、プレイリスト再生を開始させる必要はない。タイトル間の分岐が多数発生したとしても、プレイリスト再生を開始させる回数を必要最低数にすることができる。
プレイリスト管理テーブル及びアプリケーション管理テーブルの記述例について図29(a)を参照しながら説明する。ここで想定する具体例は、2つの連続するTitle(title#1、title#2)であり、そのうちtitle#1では、AutoRunアプリケーションとしてapplication#1、application#2が記述されている。title#2ではAutoRunアプリケーションとしてapplication#2、application#3が記述されている。一方、title#1のプレイリスト管理テーブルには、AutoPlayプレイリストとしてPlayList#1が、title#2のプレイリスト管理テーブルには、AutoPlayプレイリストとしてPlayList#2が記述されているものとする。図29(b)は、図29(a)のように記述されたアプリケーション管理テーブル、プレイリスト管理テーブルによりプレイリスト再生、アプリケーション実行がどのように進行するかを示す図である。
【0086】
title#1においてアプリケーション管理テーブル、プレイリスト管理テーブルは上述したように設定されているので、title#1の開始時にはapplication#1、application#2が自動的に起動され、PlayList#1の再生が自動的に開始される。
title#2においてアプリケーション管理テーブル、プレイリスト管理テーブルは上述したように設定されているので、title#1側に記載はあるが、title#2側には記載がないapplication#1の実行は停止させられる。同じくtitle#1側に記載があるが、title#2側に記載がないPlayList#1の再生も停止させられる。
【0087】
title#1側に記載はないが、title#2側に記載があるPlayList#2、application#3は再生及び実行が自動的に開始することになる。タイトル分岐があれば、その分岐を契機に、再生すべきプレイリストを他のプレイリストに切り換えることができる。このようにアプリケーション管理テーブル、プレイリスト管理テーブルを用いることで分岐を契機にして、プレイリスト再生を切り換えるという処理をオーサリング段階において規定しておくことができる。
【0088】
また図29では、application#1、application#2、application#3にはそれぞれ200,128,200の起動優先度が与えられている。これらの起動優先度を付与することにより、PlayList#1、PlayList#2に対する制御要求が競合した場合の調停を行わせることができる。ここでapplication#1がPlayList#1に対し早送りを命じているものとする。一方、application#2がポーズ要求を行ったとする。この場合、アプリケーション管理テーブルに各アプリケーションに対する起動優先度が規定されているため、この起動優先度に従って、両アプリケーションに対する調停がなされることになる。その結果、application#2による要求を退け、application#1による制御を継続するという処理をオーサリング時に規定しておくことができる。起動優先度をプレイリスト管理テーブルと併せて利用することにより、プレイリストに対する制御が競合した場合の調停さえも再生装置に行わせることができる。
【0089】
プレイリスト管理テーブル記述の他の具体例について説明する。図30(a)は、プレイリスト管理テーブルの他の記述例を示す図である。本図で想定しているのは、2つの連続するタイトル(title#1、title#2)において、title#1側のプレイリスト管理テーブルには、AutoPlayプレイリストとしてPlayList#1が、再生可能なプレイリストとしてPlayList#2が記述され、title#1側のアプリケーション管理テーブルには、AutoPlayアプリケーションであるapplication#1と、実行可能なアプリケーションとしてapplication#2が記述されている。一方title#2側のプレイリスト管理テーブルには再生可能なプレイリストとしてPlayList#2、PlayList#3が記述され、アプリケーション管理テーブルには、AutoRunアプリケーションとしてapplication#3が記述されている。図30(b)は、図30(a)のケースに基づくアプリケーション実行及びプレイリスト再生の進行を示す図である。title#1のアプリケーション管理テーブルには、AutoRunアプリケーションとしてapplication#1が記述されているので、title#1の開始時にはapplication#1が自動起動される。一方、title#1のアプリケーション管理テーブルには、実行可能アプリケーションとしてapplication#2が記述されているので、application#1からの呼出yd1によりapplication#2が起動される。
【0090】
title#2側のアプリケーション管理テーブルにおいてapplication#1、application#2が非生存になっており、代わりにAutoRunアプリケーションとしてapplication#3が記述されている。そのためtitle#1−title#2の境界部では、application#1、application#2を停止し、application#3を自動的に起動するとの処理がなされる。プレイリスト管理テーブルを参照すると、title#1側のプレイリスト管理テーブルは、PlayList#1、PlayList#2が再生可能と記述されており、そのうちPlayList#1はAutoPlay属性になっている。そのためPlayList#1は、title#1の開始時において自動的に再生される。
【0091】
title#1側のプレイリスト管理テーブルには、PlayList#1の他、PlayList#2が再生可能であると記述されているので、application#1はPlayList#1の再生を停止させ、代わりにPlayList#2の再生を要求することにより、プレイリスト交代を実行することができる。
title#2側のプレイリスト管理テーブルには、再生可能なプレイリストとしてPlayList#2、PlayList#3が記述されている。そしてAutoPlay属性が付与されたプレイリストはない。そのため、仮にtitle#1開始時において自動再生されたPlayList#1の再生がtitle#2まで継続したとしても、PlayList#1の再生は自動的に終了することになる。
【0092】
しかしPlayList#2再生が継続したままtitle#2に至れば、PlayList#2再生はtitle#2開始以降も継続する。title#2のプレイリスト管理テーブルには、再生可能なプレイリストとしてPlayList#2、PlayList#3が記述されている。そのため、title#2で実行中となるapplication#3は、PlayList#2の再生を停止し、代わりにPlayList#3の再生を要求することにより、再生中のプレイリストを交代させることができる。
【0093】
次にプレイリスト管理テーブルによりタイトル再生区間がどのように規定されるかを、図31を参照しながら説明する。
図31(a)は、再生属性がAutoPlayに設定されたタイトルのタイトル再生区間を示す図である。再生属性がAutoPlayを示すよう設定されれば、タイトルの再生開始と同時に、AutoPlayPLの再生を開始する。ここでアプリケーションが正常に動作し、正常終了したとしても、このタイトル再生区間は、PL時間軸を基準にして定められる。
【0094】
図31(b)は、プレイリスト管理テーブルにおいて再生属性が”AutoPlay”を示すよう設定され、アプリケーションが異常終了した場合を示す。かかる異常終了により、どのアプリケーションも動作してない状態になるが、AutoPlayPLの再生は継続する。この場合も、AutoPlayPLのPL時間軸がタイトル再生区間になる。
図31(c)は、プレイリスト管理テーブルにおいて再生属性が”AutoPlay”を示すよう設定され、メインアプリの起動に失敗したケースを示す。この場合も、AutoPlayPL再生は、アプリケーションの起動失敗とは関係なしに行われるので、AutoPlayPLの時間軸がタイトル再生区間になる。
【0095】
以上のようにプレイリスト管理テーブルの再生属性を、”AutoPlay”に設定しておけば、Java(登録商標)アプリケーションの起動に、5〜10秒という時間がかかったとしても、その起動がなされている間、”とりあえず何かが写っている状態”になる。タイトル実行開始時において、アプリケーション起動に時間がかかったとしても、画面は、”とりあえず何かが写っている状態”になる。これにより、アプリケーション起動に時間がかかることによるスタートアップディレイの長期化を補うことができる。
【0096】
アプリケーション管理テーブル及びプレイリスト管理テーブルを定義することにより、タイトル再生区間の進行に沿って、Java(登録商標)アプリケーションを動作させるという同期制御が可能になり、映像再生と、プログラム実行とを伴った、様々なアプリケーションを世に送り出すことができる。以上が記録媒体についての説明である。続いて本発明に係る再生装置について説明する。
【0097】
図32は、本発明に係る再生装置の内部構成を示す図である。本発明に係る再生装置は、本図に示す内部に基づき、工業的に生産される。本発明に係る再生装置は、主としてシステムLSIと、ドライブ装置という2つのパーツからなり、これらのパーツを装置のキャビネット及び基板に実装することで工業的に生産することができる。システムLSIは、再生装置の機能を果たす様々な処理部を集積した集積回路である。こうして生産される再生装置は、BD−ROMドライブ1、リードバッファ2、デマルチプレクサ3、ビデオデコーダ4、ビデオプレーン5、P−Graphicsデコーダ6、Presentation Graphicsプレーン7、合成部8、フォントゼネレータ9、I−Graphicsデコーダ10、スイッチ11、Interactive Graphicsプレーン12、合成部13、CLUT部14、CLUT部15、オーディオデコーダ16、Network Device17、Local Storage18、リードバッファ19、デマルチプレクサ20、命令ROM21、ユーザイベント処理部22、PSRセット23、CPU24、シナリオメモリ25、ローカルメモリ26、スイッチ27から構成される。
【0098】
先ず初めに、BD−ROMに記録されたAVClip再生に係る構成要素(BDドライブ1〜オーディオデコーダ16)について説明する。
BD−ROMドライブ1は、BD−ROMのローディング/イジェクトを行い、BD−ROMに対するアクセスを実行する。
リードバッファ2は、FIFOメモリであり、BD−ROMから読み出されたTSパケットが先入れ先出し式に格納される。
【0099】
デマルチプレクサ(De−MUX)3は、リードバッファ2からTSパケットを取り出して、このTSパケットを構成するTSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、CPU24から設定されたPIDをもつものをビデオデコーダ4、P−Graphicsデコーダ6、I−Graphicsデコーダ10、オーディオデコーダ16のどれかに出力する。
ビデオデコーダ4は、デマルチプレクサ3から出力された複数PESパケットを復号して非圧縮形式のピクチャを得てビデオプレーン5に書き込む。
【0100】
ビデオプレーン5は、非圧縮形式のピクチャを格納しておくためのプレーンである。プレーンとは、再生装置において一画面分の画素データを格納しておくためのメモリ領域である。ビデオプレーン5における解像度は1920×1080であり、このビデオプレーン5に格納されたピクチャデータは、16ビットのYUV値で表現された画素データにより構成される。ビデオプレーン5では、ビデオストリームにおける一フレーム毎の再生映像を、スケーリングすることができる。スケーリングとは、一フレーム毎の再生画像をビデオプレーン5全体の1/4(クオータという)、1/1(フルスケールという)のどちらかに変化させることである。かかるスケーリングを、BD−JモードにおいてCPU24からの指示に従い実行するので、ビデオストリームの再生画像を、画面の隅に追いやったり、全面的に出すという画面演出が可能になる。
【0101】
P−Graphicsデコーダ6は、BD−ROMから読み出されたプレゼンテーショングラフィクスストリームをデコードして、非圧縮グラフィクスをPresentation Graphicsプレーン7に書き込む。グラフィクスストリームのデコードにより、字幕が画面上に現れることになる。
Presentation Graphicsプレーン7は、一画面分の領域をもったメモリであり、一画面分の非圧縮グラフィクスを格納することができる。本プレーンにおける解像度は1920×1080であり、Presentation Graphicsプレーン7中の非圧縮グラフィクスの各画素は8ビットのインデックスカラーで表現される。CLUT(Color Lookup Table)を用いてかかるインデックスカラーを変換することにより、Presentation Graphicsプレーン7に格納された非圧縮グラフィクスは、表示に供される。
【0102】
合成部8は、ビデオプレーン5に格納された非圧縮状態のピクチャデータ(i)を、Presentation Graphicsプレーン7の格納内容と合成する。
フォントゼネレータ9は、文字フォントを用いてtextSTストリームに含まれるテキストコードをビットマップに展開してPresentation Graphicsプレーン7に書き込む。
I−Graphicsデコーダ10は、HDMVモードにおいてBD−ROM又はLocal Storage18から読み出されたIGストリームをデコードして、非圧縮グラフィクスをInteractive Graphicsプレーン12に書き込む。
【0103】
スイッチ11は、フォントゼネレータ9が生成したフォント列、P−Graphicsデコーダ6のデコードにより得られたグラフィクスの何れかを選択的にPresentation Graphicsプレーン7に書き込むスイッチである。
Interactive Graphicsプレーン12は、I−Graphicsデコーダ10によるデコードで得られた非圧縮グラフィクスが書き込まれる。またInteractive Graphicsプレーン12には、BD−Jモードにおいて、アプリケーションにより描画された文字やグラフィクスが書き込まれる。
【0104】
合成部13は、Interactive Graphicsプレーン12の格納内容と、合成部8の出力である合成画像(非圧縮状態のピクチャデータと、Presentation Graphicsプレーン7の格納内容とを合成したもの)とを合成する。かかる合成により、アプリケーションがI−Graphicsデコーダ10に書き込んだ文字・グラフィクスを、非圧縮状態のピクチャデータ上にオーバレイして、表示することができる。
【0105】
CLUT部14は、ビデオプレーン5に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。
CLUT部15は、Interactive Graphicsプレーン12に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。
オーディオデコーダ16は、デマルチプレクサ3から出力されたPESパケットを復号して、非圧縮形式のオーディオデータを出力する。
【0106】
以上がAVClip再生に係る構成要素である。続いてBD−Jモードでの動作に係る構成要素(Network Device17〜De−mux20)について説明する。
Network Device17は、再生装置における通信機能を実現するものであり、BD−JモードにおいてURL指定がJava(登録商標)アプリケーションから与えられれば、そのURLにあたるwebサイトとのTCPコネクション、FTPコネクション等を確立する。かかるコネクション確立によりwebサイトからのダウンロードをJava(登録商標)アプリケーションに行わせる。
【0107】
Local Storage18は、Network Device17により確立されたコネクションを通じてwebサイトからダウンロードされたコンテンツ等、BD−ROM以外の記録媒体、通信媒体から供給されたコンテンツを、メタデータと共に格納しておくためのハードディスクである。このメタデータは、ダウンロードコンテンツをLocal Storage18にバインドして管理するための情報であり、このLocal Storage18をアクセスすることで、BD−Jモードにおけるアプリケーションは、ダウンロードコンテンツ長さを利用した様々な処理を行うことができる。
【0108】
リードバッファ19は、FIFOメモリであり、Local Storage18に格納されたダウンロードコンテンツに、SubClipが含まれている場合、このSubClipを構成するTSパケットを、先入れ先出し式に格納する。
デマルチプレクサ(De−MUX)20は、リードバッファ19からTSパケットを取り出して、TSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、所望のPIDをもつものをフォントゼネレータ9、I−Graphicsデコーダ10、オーディオデコーダ16に出力する。
【0109】
以上のNetwork Device17〜De−mux20により、Java(登録商標)アプリケーションがネットワークを通じてダウンロードしたコンテンツを、BD−ROMに記録されたコンテンツ同様再生させることができる。続いて、再生装置における統合制御を実現する構成要素(命令ROM21〜スイッチ27)について説明する。
命令ROM21は、再生装置の制御を規定するソフトウェアを記憶している。
【0110】
ユーザイベント処理部22は、リモコンや再生装置のフロントパネルに対するキー操作に応じて、その操作を行うユーザイベントをCPU24に出力する。
PSRセット23は、再生装置に内蔵されるレジスタであり、64個のPlayer Status Register(PSR)と、4096個のGeneral Purpose Register(GPR)とからなる。Player Status Registerの設定値(PSR)のうち、PSR4〜PSR8は、現在の再生時点を表現するのに用いられる。
【0111】
PSR4は、1〜100の値に設定されることで、現在の再生時点が属するタイトルを示し、0に設定されることで、現在の再生時点がトップメニューであることを示す。
PSR5は、1〜999の値に設定されることで、現在の再生時点が属するチャプター番号を示し、0xFFFFに設定されることで、再生装置においてチャプター番号が無効であることを示す。
【0112】
PSR6は、0〜999の値に設定されることで、現在の再生時点が属するPL(カレントPL)の番号を示す。
PSR7は、0〜255の値に設定されることで、現在の再生時点が属するPlayItem(カレントPlay Item)の番号を示す。
PSR8は、0〜OxFFFFFFFFの値に設定されることで、45KHzの時間精度を用いて現在の再生時点(カレントPTM(Presentation TiMe))を示す。以上のPSR4〜PSR8により、図21(a)におけるBD−ROM全体の時間軸において、現在の再生時点はどこであるかを特定することができる。
【0113】
CPU24は、命令ROM21に格納されているソフトウェアを実行して、再生装置全体の制御を実行する。この制御の内容は、ユーザイベント処理部22から出力されたユーザイベント、及び、PSRセット23における各PSRの設定値に応じて動的に変化する。
シナリオメモリ25は、カレントのPL情報やカレントのClip情報を格納しておくためのメモリである。カレントPL情報とは、BD−ROMに記録されている複数PL情報のうち、現在処理対象になっているものをいう。カレントClip情報とは、BD−ROMに記録されてい複数Clip情報のうち、現在処理対象になっているものをいう。
【0114】
ローカルメモリ26は、BD−ROMからの読み出しは低速である故、BD−ROMの記録内容を一時的に格納しておくためのキャッシュメモリである。かかるローカルメモリ26が存在することにより、BD−Jモードにおけるアプリケーション実行は、効率化されることになる。
スイッチ27は、BD−ROM及びLocal Storage18から読み出された各種データを、リードバッファ2、リードバッファ19、シナリオメモリ25、ローカルメモリ26のどれかに選択的に投入するスイッチである。
【0115】
以上が、本実施形態に係る再生装置のハードウェア構成である。続いて本実施形態に係る再生装置のソフトウェア構成について説明する。
図33は、ROM24に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。本図に示すように、再生装置のレイア構成は、以下のa),b),c)からなる。つまり、
a)BD Player Deviceの第1階層、
b)BD Player Modelの第2階層、
c)Application Runtime Enviromentの第3階層からなる。
これらの階層のうち図32に示した再生装置のハードウェア構成は、第1階層に属することになる。本図の第1階層”BD Player Device”には、図32に示したハードウェア構成のうちビデオデコーダ4、P−Graphicsデコーダ6、I−Graphicsデコーダ10、オーディオデコーダ16からなる”デコーダ”と、ビデオプレーン5、Presentation Graphicsプレーン7、Interactive Graphicsプレーン12からなる”プレーン”、BD−ROM及びそのファイルシステム、Local Storage18及びそのファイルシステムを含む。
【0116】
第2階層”BD Player Model”は、以下のb1),b2)の層からなる。つまり、
b2)Playback Control Engine32の層
b1)Virtual File System30及びPresentation Engine31の層
からなり、自身より上位の階層に対し、ファンクションAPIを提供する。
第3階層”Application Runtime Enviroment”は、以下のc1),c2)の階層からなる。つまり、
c1)モジュールマネージャ34が存在する層、
c2)HDMVモジュール33、BD−Jモジュール35が存在する層
からなる。図33のレイアモデルにおいてこのモジュールマネージャ34が最上位の階層に位置するが、モジュールマネージャ34は、HDMVモジュール33及びBD−Jモジュール35をバイパスしてPlayback Control Engine32に至る迂回路ur1を有している。この迂回路によりモジュールマネージャ34は、図33のレイアモデルにおいて”L”字形を逆さまにした形状をなし、User Event Manager37を内蔵した構成になっている。
【0117】
BD−Jモジュール35は、いわゆるJava(登録商標)プラットフォームであり、Java(登録商標)仮想マシン38を中核にした構成になっている。Java(登録商標)仮想マシン38内のワークメモリは、様々なシステムプログラムやアプリケーションが動作している。Java(登録商標)仮想マシン38の上位に描いた、アプリケーションマネージャ36、Event Listner Manager39(Default Operation Manager40)は、そうしたシステムプログラムの1つである。このうちアプリケーションマネージャ36の中にはPLMT Prcessor41が存在している。またBD−Jモジュール35と、Playback Control Engine32との間には、Permission Controller42が介在している。
【0118】
先ず初めに、第2層に属するVirtual File System30〜モジュールマネージャ34について説明する。図34は、Virtual File System30〜モジュールマネージャ34による処理を模式化した図である。
Virtual File System30は、Local Storage18に格納されたダウンロードコンテンツを、BD−ROMにおけるディスクコンテンツと一体的に取り扱うための仮想的なファイルシステムである。ここでLocal Storage18に格納されたダウンロードコンテンツは、SubClip、Clip情報、プレイリスト情報を含む。このダウンロードコンテンツにおけるプレイリスト情報はBD−ROM及びLocal Storage18のどちらに存在するClip情報であっても、指定できる点で、BD−ROM上のプレイリスト情報と異なる。この指定にあたって、Virtual File System30上のプレイリスト情報は、BD−ROMやLocal Storage18におけるファイルをフルパスで指定する必要はない。BD−ROM上のファイルシステムやLocal Storage18上のファイルシステムは、仮想的な1つのファイルシステム(Virtual File System30)として、認識されるからである。故に、PlayItem情報におけるClip_Information_file_name及びSubPlayItem情報のClip_Information_file_nameは、Clip情報の格納したファイルのファイルボデイにあたる5桁の数値を指定することにより、Virtual File System30、BD−ROM上のAVClipを指定することができる。Virtual File System30を介してLocal Storage18の記録内容を読み出し、BD−ROMの記録内容と動的に組み合わせることにより、様々な再生のバリエーションを産み出すことができる。Local Storage18と、BD−ROMとを組合せてなるディスクコンテンツは、BD−ROMにおけるディスクコンテンツと対等に扱われるので、本願における”BD−ROM”は、Local Storage18+BD−ROMの組合せからなる仮想的な記録媒体をも含むことにする。
【0119】
Presentation Engine31は、AV再生ファンクションを実行する。再生装置のAV再生ファンクションとは、DVDプレーヤ、CDプレーヤから踏襲した伝統的な機能群であり、再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(Pause Off)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(Backward Play(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle Change)、アングル切り換え(Angle Change)といった機能である。AV再生ファンクションを実現するべく、Presentation Engine31は、リードバッファ2上に読み出されたAVClipのうち、所望に時刻にあたる部分のデコードを行うよう、ビデオデコーダ4、P−Graphicsデコーダ6、I−Graphicsデコーダ10、オーディオデコーダ16を制御する。所望の時刻としてPSR8(カレントPTM)に示される箇所のデコードを行わせることにより、AVClipにおいて、任意の時点を再生を可能することができる。
【0120】
再生制御エンジン(Playback Control Engine(PCE))32は、プレイリストに対する再生制御ファンクション(i)、PSRセット23における状態取得/設定ファンクション(ii)といった諸機能を実行する。PLに対する再生制御ファンクションとは、Presentation Engine31が行うAV再生ファンクションのうち、再生開始や再生停止を、カレントPL情報及びClip情報に従って行わせることをいう。これら機能(i)〜(ii)は、HDMVモジュール33〜BD−Jモジュール35からのファンクションコールに応じて実行する。
【0121】
つまり、PL再生を命じるファンクションコールがあれば、Playback Control Engine32は、再生が命じられたプレイリスト情報を、Virtual File System30経由でBD−ROM又はLocal Storage18から読み出す。そのように読み出されたプレイリスト情報内のPlayItem情報を参照し、そのPlayItem情報においてClip_Information_file_nameに記載されているClip情報を、Virtual File System30経由でBD−ROM又はLocal Storage18から読み出す。図34における◎1,2,3,4は、Virtual File System30経由のプレイリスト情報読み出し(◎1)、プレイリスト情報を構成するPlayItem情報の解読(◎2)、Virtual File System30経由のClip情報読み出し(◎3)、Clip情報の解読(◎4)を模式化したものである。以上の過程を経てClip情報、プレイリスト情報が解読されれば、AVClipを構成するTSパケットを、Virtual File System30を通じてPresentation Engine31に引き渡す。このようにしてPresentation Engine31にTSパケットが順次渡れば、Presentation Engine31はAVClipを構成するTSパケットをデコーダに出力して、プレーンに表示させる。図中の☆1,2,3,4は、AVClipを構成するTSパケットの読み出し(☆1,2)、Virtual File System30からPresentation Engine31へのTSパケット引き渡し(☆3)、デコーダへのTSパケット投入(☆4)、デコーダから各種プレーンへのデコード結果出力(☆5)を模式的に示している。
【0122】
HDMVモジュール33は、HDMVモードの実行主体であり、mobj_idにより分岐先MovieObjectを指定したactivate要求(activate(mobj_id))がモジュールマネージャ34からなされれば、MovieObject(mobj_id)をローカルメモリ26に読み出して、このMovie Objectに記述されたナビゲーションコマンドを解読し、解読結果に基づきPlayback Control Engine32に対するファンクションコールを実行する。図28において▽2,▽3,▽4が付された矢印は、モジュールマネージャ34によるactivate(mobj_id)(2)、MovieObjectに記述されたナビゲーションコマンドの解読(3)、Playback Control Engine32に対するファンクションコール(4)を、模式的に示している。
【0123】
モジュールマネージャ34は、BD−ROMから読み出されたIndeX.bdmvを保持して、分岐制御を行う。この分岐制御は、カレントタイトルを構成する動的シナリオにTerminateイベントを発行し、分岐先タイトルを構成する動的シナリオにActivateイベントを発行することでなされる。title_idを指定したJumpTitleコマンド(JumpTitle(title_id))をMovieObjectが実行した場合、カレントタイトルを構成するMovieObjectにTerminateイベントを発行し、title_idに対応するタイトルを構成するMovie Objectをactivateするよう、activate(mobj_id)イベントが発行する。図中の▽0,▽1,▽2が付された矢印は、JumpTitleコマンドの実行(▽0)、モジュールマネージャ34によるIndex.bdmv参照(▽1)、分岐先Titleを構成するMovie Objectのactivate(▽2)の通知を模式的に示している。JumpTitleAPI(JumpTitle(title_id))をBD−J Objectがコールした場合も同様であり、カレントタイトルを構成するBD−J ObjectにTerminateイベントを発行し、そのtitle_idに対応するタイトルを構成するBD−J Objectをactivateするよう、activate(bobj_id)をBD−Jモジュール35に発行する。
【0124】
以上がPresentation Engine31〜モジュールマネージャ34についての説明である。続いてアプリケーションマネージャ36について、図35を参照しながら説明する。図35は、アプリケーションマネージャ36を示す図である。
アプリケーションマネージャ36は、タイトル分岐が発生する度に、分岐前タイトルでは実行されていないが、新たなタイトルではAutoRunの起動属性を有するアプリケーションを起動するようJava(登録商標)仮想マシン38に指示する。それと共に、分岐前タイトルでは実行されていたが、新たなタイトルを生存区間としないアプリケーションを終了させる。これら起動制御及び終了制御は、カレントBD−J Objectにおけるアプリケーション管理テーブルを参照した上でなされる。ここでタイトル分岐があった場合、モジュールマネージャ34からactivate(bobj_id)が通知される。かかる通知があれば、bobj_idに対応するBD−J ObjectをカレントBD−J Objectにして、そのカレントBD−J Objectにおけるアプリケーション管理テーブルを参照することで、上述した自動起動すべきアプリケーション及び自動終了すべきアプリケーションを特定する。図35における☆0,☆1,☆2,☆3は、TitleJumpの発生(☆0)、activate(bobj_id)の通知(☆1)、アプリケーション管理テーブル参照(☆2)、Java(登録商標)仮想マシン38に対するアプリケーション起動指示(☆3)という一連の過程を模式化して示す。この起動指示によりJava(登録商標)仮想マシン38は、ローカルメモリ26からワークメモリにxletプログラムを読み出す(☆4,5)。
【0125】
以上がアプリケーションマネージャ36についての説明である。続いてUser Event Manager37〜Default Operation Manager40について、図36を参照しながら説明する。
User Event Manager37は、ユーザイベント処理部22が受け付けたユーザイベントを、再生制御のためのユーザイベントと、キーイベントとに分離する。再生制御のためのユーザイベントとは、再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(Pause Off)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(Backward Play(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle Change)、アングル切り換え(Angle Change)のどれかを命じるユーザイベントである。一方キーイベントとは、Pop−upキー,MoveUpキー,MoveDownキー,MoveRightキー,MoveLeftキー,Numericキーのどれかの押下を示すユーザイベントである。そして再生制御のためのユーザイベントに基づき、再生制御ファンクションをPlayback Control Engine32に実行させるためのファンクションコールを行う。このファンクションコールは、U0(User Operation)と呼ばれ、HDMVモジュール33、BD−Jモジュール35を介することなく、モジュールマネージャ34における迂回路にあるUOコントローラ37aを用いてなされる。これにより再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(Pause Off)というような再生制御は、遅延なくなされることになる。図中の☆1,2,3は、User Event Manager37による再生制御ユーザイベントと、キーイベントとの分離(☆1,2)、再生制御ユーザイベントに基づくPlayback Control Engine32に対するファンクションコール(☆3)を模式的に示している。
【0126】
Java(登録商標)仮想マシン38は、アプリケーションを構成するxletプログラムをワークメモリにロードして、xletプログラムを解読し、解読結果に従って、下位層に対する制御を行う。下位層への制御は、JMFメソッドを図示しないBDミドルウェアに発行して、BD再生装置が対応しているファンクションコールに置き換させ、置換後のファンクションコールをPlayback Control Engine32に発行することでなされる。
【0127】
Event Listner Manager39は、キーイベントを解析し、イベントの振り分けを行う。図中の実線矢印◇1,◇2は、このEvent Listner Manager39による振り分けを模式的に示す。xletプログラム内のEvent Listnerに登録されたキーイベントなら、BD−J Objectにより間接参照されているxletプログラムにかかるイベントを振り分ける。xletプログラムのEvent Listnerには、JMFに対応したキーイベントが登録されているので、本キーイベントによりxletプログラムの起動が可能になる。キーイベントがEvent Listner非登録のキーイベントである場合、本キーイベントをDefault Operation Manager40に振り分ける。BD−ROM再生装置において生じるキーイベントには、Event Listnerに登録されていない多様なものがあり、これらのキーイベントが生じたとしても、漏れの無い処理を実行するためである。
【0128】
Default Operation Manager40は、xletプログラム内のEvent Listnerに登録されてないキーイベントがEvent Listner Manager39から振り分けられると、そのEvent Listner非登録イベントに対応するファンクションコールをPlayback Control Engine32に対して実行する。このDefault Operation Manager40によるファンクションコールを模式的に示したのが、図中の矢印◇3である。
【0129】
PLMTプロセッサ41は、アプリケーションマネージャ36の一構成要素であり、モジュールマネージャ34からactivate(bobj_id)がなされれば、そのbobj_idにより特定されるBD−J Objectのプレイリスト管理テーブルを参照する。そして再生属性=AutoPlayのPLが、そのBD−J Objectのプレイリスト管理テーブル内に存在すれば、そのAutoPlayPLを再生するようPlayback Control Engine32に出力する。一方、PLによる再生終了を示すNotifyイベントをPlayback Control Engine32が発行すれば、その発行された時点をTitle終了時点として解釈する。図中の△1,2は、Playback Control Engine32に対するPlayPLファンクションのコール(△1)、Playback Control Engine32からのNotifyイベント出力(△2)を模式化している。
【0130】
以上でBD−Jモジュール35内のレイヤ構成についての説明を終える。尚、Permission Controller42については、本実施形態における説明を割愛する。Permission Controller42の処理内容は、本実施形態よりも第3実施形態で詳述するのが望ましいからである。
<Java(登録商標)仮想マシン38の内部構成>
Java(登録商標)仮想マシン38の内部構成について説明する。図37は、Java(登録商標)仮想マシン38の内部構成を示す図である。本図に示すようにJava(登録商標)仮想マシン38は、図32に示したCPU24と、ユーザクラスローダ52、メソッドエリア53、ワークメモリ54、スレッド55a,b・・・n、Java(登録商標)スタック56a,b・・・nとから構成される。
【0131】
ユーザクラスローダ52は、BDJAディレクトリのJava(登録商標)アーカイブファイルにおけるクラスファイルをローカルメモリ26等から読み出してメソッドエリア53に格納する。このユーザクラスローダ52によるクラスファイル読み出しは、ファイルパスを指定した読み出しをアプリケーションマネージャ36がユーザクラスローダ52に指示することでなされる。ファイルパスがローカルメモリ26を示しているなら、ユーザクラスローダ52は、アプリケーションを構成するJava(登録商標)アーカイブファイルにおけるクラスファイルを、ローカルメモリ26からワークメモリ54に読み出す。ファイルパスがVirtual File System30上のディレクトリを示しているなら、ユーザクラスローダ52は、アプリケーションを構成するJava(登録商標)アーカイブファイルにおけるクラスファイルを、BD−ROM又はLocal Storage18からワークメモリ54に読み出す。図35に示したアプリケーション起動制御(☆3,4,5)は、このユーザクラスローダ52によるクラスファイル読み出しにより実現される。読み出しが指示されたクラスファイルがローカルメモリ26にない場合、ユーザクラスローダ52は読み出し失敗をアプリケーションマネージャ36に通知することになる。
【0132】
メソッドエリア53は、ユーザクラスローダ52によりローカルメモリ26から読み出されたクラスファイルが格納される。
ワークメモリ54は、いわゆるヒープエリアであり、様々なクラスファイルのインスタンスが格納される。図33に示したアプリケーションマネージャ36、Event Listner Manager39は、このワークメモリ54に常駐するレジデントアプリケーションである。ワークメモリ54には、これらレジデント型のインスタンスの他に、メソッドエリア53に読み出されたクラスファイルに対応するインスタンスが格納される。このインスタンスが、アプリケーションを構成するxletプログラムである。かかるxletプログラムをワークメモリ54に配置することによりアプリケーションは実行可能な状態になる。図33、図35、図36のレイアモデルでは、このワークメモリ54をJava(登録商標)仮想マシン38上位層に記述していた。これはワークメモリ54上のアプリケーションマネージャ36及びEvent Listner Manager39を、わかり易く記述するための配慮に過ぎない。アプリケーションマネージャ36及びEvent Listner Manager39はインスタンスとしてスレッド55a,b・・・nにより実行されるというのが、現実的な記述になる。
【0133】
スレッド55a,b・・・nは、ワークメモリ54に格納されたメソッドを実行する論理的な実行主体であり、ローカル変数や、オペランドスタックに格納された引数をオペランドにして演算を行い、演算結果を、ローカル変数又はオペランドスタックに格納する。図中の矢印ky1,ky2,kynは、ワークメモリ54からスレッド55a,b・・・nへのメソッド供給を象徴的に示している。物理的な実行主体がCPU唯1つであるのに対し、論理的な実行主体たるスレッドは、最大64個Java(登録商標)仮想マシン38内に存在し得る。この64個という数値内において、スレッドを新規に作成することも、既存のスレッドを削除することも可能であり、スレッドの動作数は、Java(登録商標)仮想マシン38の動作中において増減し得る。スレッドの数は適宜増やすことができるので、複数スレッドにより1つのインスタンスの並列実行を行い、インスタンスの高速化を図ることもできる。本図ではCPU24と、スレッドとの対応関係は、1対多の関係にしているが、CPUが複数ある場合、CPUとスレッドとの対応関係は多対多の関係になりうる。スレッド55a,b・・・nによるメソッド実行は、メソッドをなすバイトコードを、CPU24のネイティブコードに変換した上、CPU24に発行することでなされる。このネイティブコード変換については、本願の主眼から外れるため、説明を省く。
【0134】
Java(登録商標)スタック56a,b・・・nは、スレッド55a,b・・・nと1対1の比率で存在しており、プログラムカウンタ(図中のPC)と、1つ以上のフレームとを内部に持つ。”プログラムカウンタ”は、インスタンスにおいて、現在どの部分が実行されているかを示す。”フレーム”はメソッドに対する1回のコールに対して割り当てられたスタック式の領域であり、その1回のコール時の引数が格納される”オペランドスタック”と、コールされたメソッドが用いる”ローカル変数スタック(図中のローカル変数)”からなる。フレームは、コールが1回なされる度にJava(登録商標)スタック56a,b・・・n上に積み上げられるのだから、あるメソッドが自身を再帰的に呼び出す場合も、このフレームは、1つ積み上げられることになる。JMFプレーヤインスタンスの再生メソッドをコールする場合、又は、JumpTitleAPIのコールをコールする場合にも、これらのコールに対応するフレームがJava(登録商標)スタック56a,b・・・n上に積み上げられる。そしてこれらのフレームのオペランドスタックには、再生メソッドによる再生の対象となるMPLSファイルのファイル名、又は、JumpTitleAPIのコールのジャンプ先を示すtitle_id等が引数として格納される。
【0135】
以上のように構成されたJava(登録商標)仮想マシン38の内部構成において、アプリケーションマネージャ36及びその構成要素たるPLMT Prcessor41がどのような処理を行うかを、詳細に説明する。
bobj_idのBD−J Objectのactivateを要求するイベント(activatred[bobj_id])をモジュールマネージャ34が出力すれば、ワークメモリ54上の一インスタンスであるアプリケーションマネージャ36は、そのbobj_idを有するBD−J Objectを新たにカレントBD−J Objectにする。そしてアプリケーションマネージャ36は、分岐元タイトルにおける実行状態と、カレントBD−J Objectにおけるアプリケーションの起動属性とを照合して、自動起動すべきアプリケーション(i)、自動終了すべきアプリケーション(ii)を判定する。
【0136】
(i)自動起動すべきアプリケーションの判定は、分岐前タイトルにおいて非実行状態であるが、カレントBD−J ObjectにおいてAutoPlay属性を有するアプリケーションのapli_id_refをカレントBD−J Objectのアプリケーション管理テーブルから検索することでなされる。かかるapli_id_refがあれば、アプリケーション[apli_id_ref]についてのJava(登録商標)アーカイブファイルに属するクラスファイルを、メソッドエリア53に読み出ようユーザクラスローダ52に指示し、そのクラスファイルに対するインスタンスをワークメモリ54上に生成させる。こうしてカレントタイトルを生存区間としているアプリケーションが実行可能な状態になる。その後、アプリケーションにおけるメソッドをスレッド55a,b・・・nに実行させることで、アプリケーションを実行させる。
【0137】
(ii)自動終了すべきアプリケーションの判定は、分岐元タイトルにおいて実行状態であるが、カレントタイトルにおいて生存区間を有しないアプリケーションのapli_id_refをカレントBD−J Objectのアプリケーション管理テーブルから検索することでなされる。かかるapli_id_refがあれば、かかるアプリケーションを構成するxletプログラムを終了させる。これにより当該アプリケーションがワークメモリ54上で占めていた領域や、そのアプリケーションのメソッド実行のためのJava(登録商標)スタック56a,b・・・nにおけるフレーム等のリソースが回収されることになる。
【0138】
アプリケーションマネージャ36の構成要素たるPLMT Prcessor41は、分岐元タイトルにおける再生状態と、カレントタイトルにおけるプレイリストの再生属性とを照合して、自動再生すべきプレイリスト(i)、自動終了すべきプレイリスト(ii)を判定する。
(i)自動再生すべきプレイリストの判定は、分岐元タイトルにおいて非再生状態であり、カレントタイトルにおいてAutoPlay属性に設定されているプレイリストがプレイリスト管理テーブル内に存在するか否かの検索をプレイリスト管理テーブルに対して行うことでなされる。もしあれば、再生すべきプレイリストのPL_id_refを引数としたプレイリスト再生のファンクションコールを実行する。このコールにより、引数たるPL_id_refをオペランドスタックに格納したフレームがJava(登録商標)スタック56a,b・・・nに生成される。そしてプレイリスト再生のファンクションコールをスレッド55a,b・・・nが実行する。このファンクションコール実行によりPresentation Engine31はプレイリスト再生を開始する。
【0139】
(ii)自動終了すべきプレイリストの判定は、分岐元タイトルにおいて再生中状態であり、カレントタイトルのプレイリスト管理テーブルに記述されてないプレイリストが存在するか否かの検索をプレイリスト管理テーブルに対して行うことでなされる。もしあれば、そのプレイリストの再生停止を命じるファンクションコールを実行して、そのプレイリストの再生のためのファンクションコールに対応するフレームをJava(登録商標)スタック56a,b・・・nから削除する。
【0140】
ワークメモリ54上でのアプリケーション終了には、4つの態様がある。図38は、アプリケーション終了の4態様を示す図である。1つ目は、リソースが枯渇したためアプリケーションマネージャ36によるTerminateイベント発行によりアプリケーションが終了するとの態様(☆1)、2つ目は、他のアプリケーションが発行したTerminateイベントを、アプリケーションマネージャ36を介して受け付けて、終了するとの態様(☆2)、3つ目は、アプリケーション管理テーブルに記述された生存区間が終了したため、アプリケーションマネージャ36が発行したTerminateイベントにより終了するとの態様(☆3)、4つ目は、アプリケーションが自身の終了プロセスを起動することにより終了するとの態様である(☆4)。これらの4つの態様のうち3つものが、アプリケーションマネージャ36によりなされているため、アプリケーションマネージャ36は、アプリケーション動作制御の中枢を掌握することがわかる。仮に、Terminateイベントの発行でもアプリケーションが終了しない場合、アプリケーションマネージャ36は、そのアプリケーションを強制終了させて、使用しているリソースを明け渡させることができる。強権的なリソース解放を担うのも、アプリケーションマネージャ36の1つの特徴である。
【0141】
以上がBD−Jモジュール35の構成要素である。
(フローチャートの説明)
以上のアプリケーションマネージャ36についての説明は、その概要に触れたに過ぎない。アプリケーションマネージャ36の処理を更に詳しく示したのが図39、図40のフローチャートである。以降、これらのフローチャートを参照してアプリケーションマネージャ36の処理手順についてより詳しく説明する。
【0142】
図39は、アプリケーションマネージャ36による処理手順を示す図である。本図における処理手順は、ステップS1−ステップS2−ステップS3−ステップS4からなるメインループを有している。ステップS1は、TitleJumpがなされたか否かの判定であり、もしなされればTitle切り換えを行い(ステップS7)、分岐先Titleのアプリケーション管理テーブルを参照することにより、分岐元Titleで起動中で、分岐先Titleで非生存のアプリケーションを終了させる(ステップS8)。一方、分岐先Titleのプレイリスト管理テーブルを参照することにより、分岐元Titleで再生中で、分岐先Titleで非生存となるPLの再生を停止させる(ステップS9)。
【0143】
そして、分岐元Titleでは非再生状態、分岐先TitleにおいてAutoPlay属性になっているPLをPLMT Prcessor41に判定させる(ステップS10)。もし存在すればPLMT Prcessor41はAutoPlayPLを再生するようPlayback Control Engine32に指示する(ステップS11)。もし存在しないなら、AutoPlayPLは再生しない。
続くステップS12〜ステップS18からなる一連の手順は、分岐先Titleを生存区間とするアプリケーションの起動を実現する。この手順は、AutoRunアプリケーションに対して起動指示を行い(ステップS14)、起動に成功すれば(ステップS15でYes)、AutoPlayPLの再生画像をクオータ(1/4)に変換する(ステップS18)という手順を実現するものである。
【0144】
一方このステップS15がNoであればステップS14〜ステップS17からなるループ処理を実行することになる。本ループ処理における制御変数は、再起動カウンタである。再起動カウンタは、アプリケーションの再起動回数を規定するカウンタである。本再起動カウンタは、ステップS12においてリセットされ、ステップS16において、0か否かの判定がなされる。0でない場合、ステップS17において再起動カウンタはデクリメントされる。以上のステップS14、ステップS15、ステップS16、ステップS17からなるループ処理により、再起動カウンタが0でない限り、AutoRunアプリケーションの起動は繰り返されることになる。かかる繰り返しにより、アプリケーションの起動が保証されることになる。
【0145】
ステップS2は、メインとなるアプリケーションが実行されてない状態かどうかの判定であり、もしそうであれば、ステップS5の判定を行う。ステップS5は、アプリケーションが正常終了したかの判定である。もし異常終了していればステップS19、ステップS20の処理を実行する。正常終了していればステップS19〜ステップS20を実行せず、ステップS1〜ステップS4からなるメインループに戻る。
【0146】
ステップS19は、AutoPlayPLの再生中であるか否かの判定であり、もし再生中なら、AutoPlayPLの再生画像をフルスクリーン化するようPlayback Control Engine32に指示する(ステップS20)。その後、ステップS16に移行する。ステップS16への移行により、異常終了時においてもステップS14〜ステップS17からなるループ処理が実行されることになる。これによりステップS12において設定された再起動カウンタの回数が0になるまで、アプリケーションの再起動は繰り返されることになる。
【0147】
ステップS4は、BDドライブ1にBD−ROMが存在しているか否かの判定であり、もしBD−ROMが存在しなければ、全てのアプリケーションに対し、終了指示を発する(ステップS6)。
図40は、プレイリスト管理テーブル、アプリケーション管理テーブルの具体例を示す。図40の第1段目は、Titleの再生映像を示し、第2段目は、Titleの時間軸を示す。第3段目はPL再生の進行、第4段目は、アプリケーション実行を示す。第4段目においてapplication#1は、Titleの開始と共に起動されており、その後、時点t1において動作状態になる。一方PlayList#1は、Titleの開始と共に再生が開始されている。Playlist#1の再生は、Titleの開始と同じ時点に開始されているので、第1段目の左側に示すように、Titleの再生開始直後から、アプリケーションが動作状態になるまでのスタートアップディレイにおいて、プレイリストの再生画像gj1がフルスクリーン表示される。一方、application#1は、時点t1で動作状態になるので、PL再生画像を子画面、アプリケーションの実行画像を親画面にした合成画像gj2が時点t1において表示されることになる。アプリケーションの実行画像は、Startボタン,continueボタン,POWERインディケータを配置したゲーム用の画面であり、Interactive Graphicsプレーン12に対する描画処理をJava(登録商標)アプリケーションが実行することでなされる。Java(登録商標)アプリケーションがかかる描画処理を行うには、グラフィクス描画や文字描画のためのライブラリが必要になる。以降アプリケーション実行とPL再生とが同時になされる限り、親子画面の表示は継続する。
【0148】
その後application#1が異常終了してしまい、時点t2においてアプリケーションマネージャ36がこの異常終了を検知したとする。矢印br1は、この検知を象徴的に示す。そうするとステップS20においてアプリケーションマネージャ36は、PLの再生画像をフルスクリーンにする。図中の時点t3は、このフルスクリーン化のタイミングを示す。図中の第1段目の右側に、フルスクリーン化で得られた画像gj3を示す。
【0149】
以上のように本実施形態によれば、プレイリスト管理テーブルの再生属性を、”AutoPlay”に設定しておくことにより、Java(登録商標)アプリケーションが動作状態になるまで5〜10秒という時間がかかったとしても、その間、”とりあえず何かが写っている状態”になる。この”とりあえず何かが写っている状態”によりタイトル実行開始時のスタートアップディレイを補うことができる。
【0150】
また、アプリケーションの起動に失敗したり、アプリケーションが異常したとしても、プレイリスト管理テーブルで規定されたプレイリストの再生を継続することにより、”とりあえず何かが写っている状態”になる。これにより、装置がブラックアウトしてしまうという最悪ケースを回避することができるので、装置を製造するメーカに、最低限度の安心感を与えることができる。
【0151】
(第2実施形態)
第2実施形態は、エラー終了時におけるリカバリー処理を、オーサリング時に規定しておくための改良に関する。かかるリカバリー処理を規定するため、本実施形態に係る記録媒体では、1つのBD−J Object内にエラー管理テーブルを設けている。図41(a)は、第2実施形態に係るBD−J Objectの内部構成を示す図である。本図に示すように、BD−J Objectにはアプリケーション管理テーブル、プレイリスト管理テーブルの他に、エラー管理テーブル(Error Maangement Table[bobj_id])が追加されている。図41(b)は、エラー管理テーブルの内部構成を示す図である。本図に示すように、エラー管理テーブルは、Number_of_recovery個のリカバリー情報(recovery())からなる。識別子recovery_idで特定される、任意のリカバリー情報の内部構成を、引き出し線em1にてクローズアップしている。この引き出し線によるとリカバリー情報は、リカバリー情報に対応するアプリケーションの識別子を、一意に特定する参照値『Apli_id_ref』、『Restart_Application_flag』、『Continuous_Playback_flag』、『Select_Title_flag』、『Notify_Event_flag』、『Reboot_flag』という5つのflagからなる。図42は、これら5つのフラグの意味内容を示す。以降エラー管理テーブルにおける各フラグの意味内容について説明する。
【0152】
『Restart_Application_flag』は、0に設定されることにより異常終了時に再起動しないことを示す。0以外の整数値nに設定されることにより、再起動をn回繰り返すことを示す。デフォルト値として本flagは、0に設定されている。
『Continuous_Playback_flag』は、0に設定されることにより異常終了時にPL再生を継続しないことを示す。整数値1に設定されることにより、異常終了時にPL再生を継続することを示し、2に設定されることにより、異常終了時に、フルスクリーン・一倍速でPL再生を継続することを示す。デフォルト値として本flagは、0に設定されている。
【0153】
『Select_Title_flag』は、0に設定されることにより異常終了時にTitle分岐を行わないことを示す。0以外の整数値nに設定された場合、Title番号nにより特定されるTitleにJumpすることを示す。デフォルト値として本flagは、0に設定されている。
『Notify_Event_flag』は、0に設定されることにより異常終了時に、イベントを出力しないことを示す。0以外の整数値nに設定された場合、イベント番号nのイベントを出力することを示す。デフォルト値として本flagは、1に設定されている。
【0154】
『Reboot_flag』は、0に設定されることにより異常終了時に、再生装置のブートストラップを行わないことを示す。整数値1に設定された場合、ブートストラップを行うことを示す。
以上のflagが存在するので、アプリケーションが異常終了した際、どのようなリカバリ処理を実行するかをオーサリング時に予め規定しておくことができる。エラー管理テーブル記述の具体例について説明する。図43(a)は、エラー管理テーブルが記述された2つのTitle(title#1、title#2)を示す図である。title#1のアプリケーション管理テーブルには、AutoRunアプリケーションとしてapplication#1が記述されており、title#1のエラー管理テーブルにはこのapplication#1が異常終了した際に用いられるべきRecovery情報が記述されている。title#1のプレイリスト管理テーブルには、AutoPlayプレイリストとしてPlayList#1が記述されている。
【0155】
title#2側のアプリケーション管理テーブルにはAutoRunアプリケーションとしてapplication#2が記述されており、title#2側のエラー管理テーブルには、このapplication#2に対するRecovery情報が記述されている。
図43(b)は、図43(a)のように記載されたアプリケーション管理テーブル、エラー管理テーブルに基づくアプリケーション実行及びプレイリスト再生の進行を示す。application#1についてのRecovery情報は、Continuous_Playback_Flag=2と記述されているため、application#1の異常終了時にはプレイリスト再生が一倍速、フルスクリーンにより継続することになる。
【0156】
一方application#2についてのRecovery情報は、Notify_Event_Flag=2と記述されているので、application#2の異常終了には、番号=2のイベントを出力することになる。
以上のようなRecovery情報の記述により、アプリケーションが異常終了した際の処理を、Title毎、アプリケーション毎に変化させることができる。
BD−J Objectにおいて上述したエラー管理テーブルが追加されたため、本実施形態に係るアプリケーションマネージャ36は図44、図45のフローチャートに従って処理を行う。図44は、第2実施形態に係るアプリケーションマネージャ36の処理手順を示すフローチャートである。本フローは、図39同様、ステップS1〜ステップS4をメインループにしている。このメインアプリにおいてタイトルが選択された際の処理は、ステップS21〜ステップS27に示されるものとなる。
【0157】
ステップS21では、分岐先Titleにプレイリスト管理テーブルが存在するか否かの判定をPLMT Prcessor41に行わせる。もし存在すれば、分岐元Titleにおいて非再生状態だが、分岐先TitleにおいてAutoPlay属性になっているPLの再生をPlayback Control Engine32に開始させて(ステップS22)、その再生が成功したかどうかを判定する(ステップS23)。もし成功すればステップS25〜ステップS28の処理を行う。成功しなければ図45のフローチャートに移行する。
【0158】
分岐先Titleにプレイリスト管理テーブルがない場合は、分岐元Titleにおいて再生状態であったPLの再生をPlayback Control Engine32に停止させて(ステップS24)、ステップS25〜ステップS28の処理を行う。
ステップS25は、分岐先Titleにアプリケーション管理テーブルが存在するか否かの判定である。もし存在すれば、分岐先アプリケーションにおけるAutoRunアプリケーションを起動して(ステップS26)、ステップS27において起動に成功したか否かを判定する。成功すればステップS1〜ステップS4のループ処理に戻る。成功しなければ図45のフローチャートに移行する。
【0159】
図45のフローチャートは、アプリケーションが異常終了した場合の処理手順を示すフローチャートである。ステップS30は、異常終了したアプリケーションが属するTitleに、エラー管理テーブルが存在するか否かの判定であり、もし存在しなければステップS1〜ステップS4からなるループ処理に戻る。
存在すれば、ステップS31〜ステップS44の処理を経た上でステップS1〜ステップS4からなるループ処理に戻る。ステップS31は、エラー管理テーブルにおけるRestart_Application_flagが0でないかの判定である。0でなければ、ステップS40〜ステップS44からなるループ処理を実行する。このループ処理は、 Restart_Application_flagの値nを再起動カウンタに設定して(ステップS40)、ステップS41〜ステップS44のループ処理を実行するというものである。このループ処理の制御変数は再起動カウンタであり、この再起動カウンタが0になること(ステップS41でYes)、及び、アプリケーションの起動に成功したこと(ステップS44でYes)が本ループ処理の終了条件である。本ループ処理では、これらのステップS41、ステップS44がNoである限り、再起動カウンタをデクリメントして(ステップS42)、AutoRunアプリケーションを起動するという(ステップS43)を繰り返す。こうした繰り返しにより異常終了において、アプリケーションの再起動がなされるのである。Restart_Application_flagが0であれば、ステップS32を実行する。
【0160】
ステップS32は、Continuous_Playback_flagが0であるか、1であるか、2であるかを判定するステップである。もし2であれば、AutoPlayPLの再生画像をフルスクリーン表示にして(ステップS33)、ステップS1〜ステップS4からなるメインループに戻る。
もし1であれば、AutoPlayPLの再生画像をクオータ表示にしたまま(ステップS34)、ステップS1〜ステップS4からなるメインループに戻る。
【0161】
もし0であれば、ステップS35に移行する。
ステップS35は、エラー管理テーブルのselevt_title_flagが0でないか否かの判定であり、もし0であるならステップS37に移行する。0でないなら、selevt_title_flagの値nを分岐先Titleにして(ステップS36)、図44のステップS7に移行する。
ステップS37は、エラー管理テーブルのNotify_Event_flagが0でないか否かの判定であり、もし0であるならステップS39に移行する。0でないなら、Notify_Event_flagの値nから特定されるイベントnを発生して(ステップS38)、図44のステップS1〜ステップS4のメインループに移行する。ステップS39は、エラー管理テーブルのBoot_flagが0でないか否かの判定であり、もし0であるならステップS1〜ステップS4からなるメインループに移行する。0でないなら、図44の先頭に移行して、再生装置のブートストラップを実行する。
【0162】
以上のように本実施形態によれば、アプリケーションがエラー終了した際、再生装置はどのような処置をとるべきかを、装置側の製造者ではなく、オーサリング担当者が規定しておくことができる。
尚、エラー管理テーブルをもたないタイトルの再生時においてアプリケーションの異常終了が発生した場合に、リカバリー処理を行うようなプログラムを再生装置に組み込んでいてもよい。
【0163】
またRestart_Application_Flag〜Rboot_Flagのどれかを指定するような引数をTitleJumpAPIに設けておき、この引数に応じたリカバリー処理をアプリケーションマネージャ36に実行させてもよい。
(第3実施形態)
第1実施形態においてJava(登録商標)仮想マシンにおけるPL再生は、BD−J Object内のプレイリスト管理テーブルを用いて規定することができた。これに対し本実施形態では、アプリケーションのJMFメソッドによるPL再生を主眼としている。ここで問題になるのがプレイリスト管理テーブルである。つまりPLを再生してよいか否かは、BD−J Object毎のプレイリスト管理テーブルに記述されているから、あるTitleでは再生可能であるが、別のTitleでは再生不可能になることがある。またPL再生は可能であったとしても、著作権保護の観点から、ある種のアプリケーションからの再生を禁じたい場合がある。かかるPL再生の制限を実現するため、第3実施形態では、Permission Controller42、アプリケーションマネージャ36が以下の処理を行う。
【0164】
パーミッションコントローラ42は、どれかのアプリケーションがPL再生を要求した場合、そのアプリケーションと相互認証を行い、要求元アプリケーションにPLの再生権限があるかどうかを判定する。もしあれば、当該再生をPlayback Control Engine32に要求し、なければ不許可を示す応答イベントを要求元アプリケーションに出力する。このPermission Controller42による許否判定により、ある配給会社の配給にかかるPLを、別の配給会社の配給にかかるアプリケーションが要求したとしても、かかる要求を不許可にすることができる。そのため、正当権限なきアプリケーションによるPLの無断引用を避けることができる。許可とすべきPLとアプリケーションとの組合せ、不許可とすべきPLとアプリケーションとの組合せは、別途BD−ROMに記録されたPermissionファイルに規定されており、Permission Controller42による判定はこれに基づく。かかるファイルの詳細は本願の主眼ではないので説明を省略する。
【0165】
第3実施形態においてアプリケーションマネージャ36は、現在の再生時点において再生可能なPLを、アプリケーションからの要求に応じて通知する。図46は、このアプリケーションマネージャ36による通知処理の処理手順を示すフローチャートである。本フローチャートでは、アプリケーションの起動中において、再生可能なPLの通知を求める要求(GetPL)をアプリケーションが発行したか否かの監視を行っている(ステップS45)。もし発行されれば、現在の再生時点が属しているTitleを構成するBD−J Objectに、プレイリスト管理テーブルが存在するか否かを判定する(ステップS46)。PLの記述があれば、プレイリスト管理テーブルに記述されたPLを再生可能なPLとして要求元のアプリケーションに通知する(ステップS47)。
【0166】
PLの記述がなければ、PL再生が不可能な旨を発行元アプリケーションに通知する(ステップS48)。以上が第3実施形態に係るアプリケーションマネージャ36の処理手順である。
続いてPL再生が要求された場合のアプリケーションマネージャ36の処理について説明する。第3実施形態に係るアプリケーションマネージャ36は、図47のフローチャートに従って処理を行う。
【0167】
図47においてアプリケーションマネージャ36は、PL再生を要求したアプリケーションが存在するか否かの判定を行っている(ステップS51)。どれかのアプリケーションがPL再生を要求すれば、要求元アプリケーションにPL再生の権利が存在するか否かの認証をPermission Controller42に行わさせる(ステップS52)。もし再生する権利があれば、Playback Control Engine32に再生開始を指示して(ステップS53)、Playback Control Engine32からのサクセス応答を待つ(ステップS54)。
【0168】
かかる再生要求があるとPlayback Control Engine32は、プレイリスト情報の正当性をチェックする。かかる正当性チェックには、プレイリスト情報、Clip情報、AVClipが存在するBD−ROM及びLocal Storage18において、正当なプレイリストを構成しているかというチェックやプレイリスト情報におけるclip_Information_file_nameにより指定されるClip情報及びAVClipがBD−ROM及びLocal Storage18に現存するか否かというチェックがある。clip_Information_file_nameにより正しいファイルが参照されていない場合、又は、BD−ROM及びLocal Storage18から構成される仮想的なパッケージに矛盾があり、正しプレイリストを構成することができない場合、Playback Control Engine32はfalseを示す応答を返すことになる。また要求元アプリケーションより、高い起動優先度をもつアプリケーションがそのPLを再生しており、PL再生を実現するリソースにおいて競合が生じている場合最もPlayback Control Engine32は、falseを示す応答を返す。
【0169】
以上の過程を経てサクセス応答があれば、PL再生成功を示すイベントを要求元アプリケーションに出力する(ステップS55)。
サクセス応答がなければ、PL再生失敗を示すイベントを要求元アプリケーションに出力する(ステップS56)。一方、ステップS52において要求元アプリケーションを再生する権利が要求元アプリケーションになければ、PL再生不可を示すイベントを要求元アプリケーションに出力する(ステップS57)。
【0170】
以上のように本実施形態によれば、プレイリスト再生可否が各Title毎でバラバラであり、プレイリスト再生の権限をもったアプリケーションやそうでないアプリケーション等様々なアプリケーションがあったとしても、適切なプレイリスト再生を、アプリケーションからの要求に応じて実行することができる。そのため、アプリケーション実行と、プレイリスト再生とを組み合わせた、多彩なコンテンツ表現が可能になる。
【0171】
(第4実施形態)
第1実施形態では、Title開始時において、再生を開始したいプレイリストにAutoPlayを示す再生属性を付与して、AutoPlayPLの再生を再生装置に命じていた。これに対し本実施形態では、アンバウンダリーアプリケーションをBD−ROMに記録しておき、Title開始時にあたって、自動的に再生を開始すべきTitleをアンバウンダリーアプリケーションに選択させる改良に関する。
【0172】
アンバウンダリーアプリケーションは、Playback Control Engine32のような、再生装置におけるレジデントアプリケーションと対等な立場にあるアプリケーションであり、プレイリスト管理テーブルに記述されている複数プレイリスト情報の中から再生装置側のPSR設定値に合致するものを選び、通知するとの処理をPlayback Control Engine32からの要求に応じて実行する。
【0173】
PL選択をアンバウンダリーアプリケーションに行わせる場合、かかる選択が必要なTitleにあたっては、プレイリスト管理テーブルにおける再生属性を、全て無指定に設定しておく。これは、”全てが無指定”であることを合図に、Playback Control Engine32にPL選択をタイトルアンバウンダリーアプリケーションに要求させるためである。
このアンバウンダリーアプリケーションによる選択は、オーサリング時に規定された選択アルゴリズムに基づく。図48(a)〜(c)は、アンバウンダリーアプリケーションに組み込まれた選択アルゴリズムの内容を表形式に示す図である。この表は、PSRの値が取り得る値の範囲と、PSRがそれらの値になった際、再生すべきPLとを対応付けて示している。このうち図48(a)は、パレンタルレベルに基づく選択アルゴリズムの内容を示す。ここでパレンタルレベルは、再生装置においてPSR(14)に示されている。具体的にいうと、PSR(14)には、ユーザの年齢を示す整数値が設定されており、これを再生装置はパレンタルレベルとして解釈する。図48(a)において、PSR(14)がとりうる値は、14歳未満、14歳以上18歳未満、18歳以上という3つの範囲に分けられている。そしてこれらの範囲毎に、再生すべきPLが対応づけられている。アンバウンダリーアプリケーションがかかる選択アルゴリズムによる選択を行えば、PSRの設定値が14歳未満ならPlayList#1が、14以上18歳未満ならPlayList#2が、18歳以上ならPlayList#3がそれぞれ選択されることになる。
【0174】
図48(b)は、Languege for Audioに基づく選択アルゴリズムの内容を示す。ここでLanguege for Audioは、再生装置においてPSR(16)に示されている。具体的にいうと、PSR(16)には、整数値が設定されており、これを再生装置は音声再生用の言語設定として解釈する。図48(b)において、PSR(16)がとりうる値は、英語を示す値、日本語を示す値、その他の値という3つの範囲に分けられている。そしてこれらの範囲毎に、再生すべきPLが対応づけられている。アンバウンダリーアプリケーションがかかる選択アルゴリズムによる選択を行えば、PSR(16)の設定値が英語を示すならPlayList#1が、日本語を示すならPlayList#2が、英語、日本語以外の値ならPlayList#3がそれぞれ選択されることになる。
【0175】
図48(c)は、Player Configuration for Videoに基づく選択アルゴリズムの内容を示す。ここでPlayer Configuration for Videoは、再生装置においてPSR(14)に示されている。具体的にいうと、PSR(14)には、整数値が設定されており、これを再生装置は映像再生用の環境設定として解釈する。図48(c)において、PSR(14)がとりうる値は、解像度525×600 TVsystem LetterBox解像度525×600 TVsystem、1920×1080 TVsystemという3つの範囲に分けられている。そしてこれらの範囲毎に、再生すべきPLが対応づけられている。アンバウンダリーアプリケーションがかかる選択アルゴリズムに従って選択を行えば、PSR(14)の設定値が解像度525×600 TVsystem LetterBoxを示すものならPlayList#1が、解像度525×600を示すものならPlayList#2が、TVsystem、1920×1080 TVsystemを示すものならPlayList#3がそれぞれ選択されることになる。図48(a)〜(c)に示したような選択アルゴリズムは、これらの図に示される条件分岐を、コンピュータ記述言語で記述することにより作成することができる。
【0176】
以上が本実施形態に係る記録媒体の改良である。続いて本実施形態に係る再生装置の改良について説明する。本実施形態での改良点は。主としてアプリケーションマネージャ36、Playback Control Engine32にある。
アプリケーションマネージャ36は、Titleの分岐が生じ、プレイリスト管理テーブルを参照した際、そのプレイリスト管理テーブルにAutoPlayPLが存在するか否かを判定する。AutoPlayPLが無ければ、プレイリスト管理テーブルをPlayback Control Engine32に引き渡して、このプレイリスト管理テーブルに記載されているPLのうち、どれかを自動的に再生するようPlayback Control Engine32に要求する。
【0177】
Playback Control Engine32は、プレイリスト管理テーブルの引き渡しを受ければ、アンバウンダリーアプリケーションに対し、PL選択を行うよう要求する。この要求に応じてアンバウンダリーアプリケーションから再生可能なPLのリストが通知されれば、そのPLリストに記載されたPLのうち、PlayItemから引き渡されたプレイリスト管理テーブルに存在するものを判定する。アンバウンダリーアプリケーションにより選択されたPLの中に、プレイリスト管理テーブルに記載されたものがあれば、それの再生を自動的に開始する。
【0178】
図49は、タイトルアンバウンダリーアプリケーションにPL選択を行わせる過程を模式的に描いた図である。本図の左側は再生装置におけるソフトウェアのレイヤ構成を示し、本図の右側に、BD−ROMの記録内容を示す。図中の◎1,2,3,4は、AutoPlayがないプレイリスト管理テーブルを発見した場合の、アプリケーションマネージャ36からの通知(◎1)、Playback Control Engine32による再生可能PLの問合せ(◎2)、タイトルアンバウンダリーアプリケーションによるPSR設定値取得(◎3)、タイトルアンバウンダリーアプリケーションからPlayback Control Engine32への再生可能なPLの通知(◎4)を模式的に描いている。
【0179】
尚、図49においてタイトルアンバウンダリーアプリケーションは、BD−ROM上に記述していたが、これはタイトルアンバウンダリーアプリケーションを、わかり易く記述するための配慮に過ぎない。タイトルアンバウンダリーアプリケーションは、Java(登録商標)アプリケーションであるので、Java(登録商標)仮想マシン38内のワークメモリ54においてインスタンスとしてスレッド55により実行されるというのが、現実的な記述になる。
【0180】
以上のように本実施形態によれば、Titleのバウンダリで生存しているようなアプリケーションに、上述したような判定を行わせるので、再生装置側のPlaybackControl Engine32は、BD−ROMにおける複数PLのうち、再生装置側の状態設定に応じたものはどれであるかを、Title開始時の早い段階で知得することができる。再生属性=AutoPlayのアプリケーションを決めておかなくても、Title開始時に再生を開始すべきPLを決定することができるので、ラングエージクレジットやパレンタルロックといった再生制御をBD−Jモードにおいても実現することができる。
【0181】
尚、本実施形態における選択アルゴリズムは、PSRがとり得る値をプレイリストに対応づけたが、再生装置におけるPSRの設定値が、想定外の値であった場合に、再生装置に再生させるプレイリストを予め規定しておいてもよい。
(第5実施形態)
第4実施形態においてタイトルアンバウンダリーアプリケーションは、PSRの設定値に応じて再生すべきPLを選択するという選択アルゴリズムを有していたが、本実施形態に係るタイトルアンバウンダリーアプリケーションは、1つのPL内にマルチアングル区間がある場合、当該マルチアングル区間における複数アングルのどれかを選ぶとの処理を、タイトルアンバウンダリーアプリケーションに行わせる改良に関する。本実施形態に係るタイトルアンバウンダリーアプリケーションは、PSRがとりうる値の複数の範囲と、それら範囲毎に再生すべきアングルとを対応づけたものである。本実施形態において現在の再生時点がマルチアングル区間であるとPlayback Control Engine32はタイトルアンバウンダリーアプリケーションに対し、何れのアングルを再生するかの問い合わせを行う。かかる問い合わせがあれば、タイトルアンバウンダリーアプリケーションは現在におけるPSR設定値を取得し、選択アルゴリズムを実行して、取得した設定値に応じたアングルを選択する。その選択結果をPlayback Control Engine32に通知してそのアングルの再生をPlayback Control Engine32に行わせる。
【0182】
以上のように本実施形態によれば、PSRがどの値であるとき、どのアングルを選択するというアルゴリズムを、オーサリング担当者が規定しておくことができるので、アングルを応用した様々なアプリケーションをオーサリング担当者は作り出すことができる。
(第6実施形態)
BD−Jモードにおいて、PL再生との同期をどのように実現するかという改良に関する。Playback Control Engine32は、PlayPLAPIファンクションがコールされれば、PL情報に基づく処理手順を実行する。PLが2時間という再生時間を有するなら、この2時間の間、上述した処理は継続することになる。ここで問題になるのは、Java(登録商標)仮想マシン38がサクセス応答を返す時間と、Playback Control Engine32が実際に処理を終える時間とのギャップである。Java(登録商標)仮想マシン38は、イベントドリブンの処理主体であるためコール直後に再生成功か、再生失敗かを示す応答を返すが、Playback Control Engine32による実際の処理終了は2時間経過後であるので、サクセス応答をアプリケーションに返す時間を基準にしたのでは、2時間経過後にあたる処理終結を感知しえない。PL再生において早送り、巻戻し、Skipが行われると、この2時間という再生期間は2時間前後に変動することになり、処理終結の感知は更に困難になる。
【0183】
Playback Control Engine32は、アプリケーションとスタンドアローンで動作するため、アプリケーションマネージャ36は、PL再生の終了時点を正確に解釈することができない。そこで本実施形態では、アプリケーションが終了してようがいまいが、ワークメモリにJMFプレーヤインスタンスがある限り、つまり、Presentation Engine31の制御権をBD−Jモジュール35が掌握している間、Playback Control Engine32からNotifyイベントを待つ。そしてNotifyイベントがあれば、タイトルが終了したと解釈して、次のタイトルへの分岐を行うようモジュールマネージャ34に通知する。こうすることにより、Playback Control Engine32がPL再生を終結した時点を、タイトルの終端とすることができる。
【0184】
以降図50〜図54のフローチャートを参照して、Playback Control Engine32による具体的な制御手順を説明する。
図50は、Playback Control Engine32によるPL再生手順を示すフローチャートである。この再生手順は、Presentation Engine31に対する制御(ステップS106)と、BD−ROMドライブ1又はLocal Storage18に対する制御(ステップS108)とを主に含む。本フローチャートにおいて処理対象たるPlayItemをPlayItem#xとする。本フローチャートは、カレントPL情報(.mpls)の読み込みを行い(ステップS101)、その後、ステップS102〜ステップS110の処理を実行するというものである。ここでステップS102〜ステップS110は、ステップS109がYesになるまで、カレントPL情報を構成するそれぞれのPI情報について、ステップS103〜ステップS110の処理を繰り返すというループ処理を構成している。このループ処理において処理対象となるPlayItemを、PlayItem#x(PI#x)とよぶ。このPlayItem#xは、カレントPLの先頭のPlayItemに設定されることにより、初期化される(ステップS102)。上述したループ処理の終了要件は、このPlayItem#xがカレントPLの最後のPlayItemになることであり(ステップS109)、もし最後のPlayItemでなければ、カレントPLにおける次のPlayItemがPlayItem#xに設定される(ステップS110)。
【0185】
ループ処理において繰り返し実行されるステップS103〜ステップS110は、PlayItem#xのClip_information_file_nameで指定されるClip情報をシナリオメモリ25に読み込み(ステップS103)、PlayItem#xのIn_timeを、カレントClip情報のEPmapを用いて、Iピクチャアドレスuに変換し(ステップS104)、PlayItem#xのOut_timeを、カレントClip情報のEP_mapを用いて、Iピクチャアドレスvに変換して(ステップS105)、これらの変換で得られたアドレスvの次のIピクチャを求めて、そのアドレスの1つ手前をアドレスwに設定し(ステップS107)、そうして算出されたアドレスwを用いて、IピクチャアドレスuからアドレスwまでのTSパケットの読み出しをBD−ROMドライブ1又はLocal Storage18に命じるというものである(ステップS108)。
【0186】
一方、Presentation Engine31に対しては、カレントPLMarkのmark_time_stampからPlayItem#xのOut_timeまでの出力を命じる(ステップS106)。以上のステップS105〜ステップS108により、AVClipにおいて、PlayItem#xにより指示されている部分の再生がなされることになる
その後、PlayItem#xがカレントPLの最後のPIであるかの判定がなされる(ステップS109)。
【0187】
PlayItem#xがカレントPLの最後のPIでなければ、カレントPLにおける次のPlayItemを、PlayItem#xに設定して(ステップS110)、ステップS103に戻る。以上のステップS103〜ステップS110を繰り返することにより、PLを構成するPIは順次再生されることになる。
図51は、アングル切り換え手順及びSkipBack,SkipNextの手順を示すフローチャートである。本フローチャートは、図50の処理手順と並行してなされるものであり、ステップS111〜S112からなるループ処理を繰り返すというものである。本ループにおけるステップS111は、アングル切り換えを要求するAPIが、Java(登録商標)仮想マシン38からコールされたか否かの判定であり、アングル切り換えAPIのコールがあれば、カレントClip情報を切り換えるという操作を実行する。
【0188】
図51のステップS115は、判定ステップであり、PlayItem#xのis_multi_anglesがオンであるか否かの判定を行う。is_multi_anglesとは、PlayItem#xがマルチアングルに対応しているか否かを示すフラグであり、もしステップS115がNoであるならステップS113に移行する。ステップS115がYesであるなら、ステップS116〜ステップS119を実行する。ステップS116〜ステップS119は、切り換え後のアングル番号を変数yに代入して(ステップS116)、PlayItem#xにおけるy番目のClip_information_file_nameで指定されているClip情報をシナリオメモリ21に読み出し(ステップS117)、カレントPTMを、カレントClip情報のEP_mapを用いてIピクチャアドレスuに変換し(ステップS118)、PlayItem#xのOut_timeを、カレントClip情報のEP_mapを用いてIピクチャアドレスvに変換する(ステップS119)というものである。こうしてIピクチャアドレスu,vを変化した後、同時実行されている図50側の処理を停止させた上でステップS106に移行する。ステップS106への移行により、別のAVClipからTSパケットが読み出されるので、映像内容が切り換わることになる。
【0189】
一方、図51のループにおけるステップS112は、SkipBack/SkipNextを意味するAPIがJava(登録商標)仮想マシン38からコールされたか否かの判定であり、もしコールされれば、図52のフローチャートの処理手順を実行する。図52は、SkipBack,SkipNextAPIがコールされた際の処理手順を示すフローチャートである。SkipBack,SkipNextを実行するにあたっての処理手順は多種多様なものである。ここで説明するのはあくまでも一例に過ぎないことに留意されたい。
【0190】
ステップS121は、PSRで示されるカレントPI番号、及び、カレントPTMを変換することにより、カレントMark情報を得る。ステップS122は、押下されたのがSkipNextキーであるか、SkipBackキーであるかの判定であり、SkipNextキーであるならステップS123において方向フラグを+1に設定し、SkipBackキーであるならステップS124において方向フラグを−1に設定する。
【0191】
ステップS125は、カレントPLMarkの番号に方向フラグの値を足した番号を、カレントPLMarkの番号として設定する。ここでSkipNextキーであるなら方向フラグは+1に設定されているのでカレントPLMarkはインクリメントされることになる。SkipBackキーであるなら方向フラグは−1に設定されているので、カレントPLMarkはデクリメントされることになる。
【0192】
ステップS126では、カレントPLMarkのref_to_PlayItem_Idに記述されているPIを、PlayItem#xに設定し、ステップS127では、PlayItem#xのClip_information_file_nameで指定されるClip情報を読み込む。ステップS128では、カレントClip情報のEP_mapを用いて、カレントPLMarkのmark_time_stampを、Iピクチャアドレスuに変換する。一方ステップS129では、PlayItem#xのOut_timeを,カレントClip情報のEP_mapを用いて,Iピクチャアドレスvに変換する。ステップS130は、カレントPLMarkのmark_time_stampからPlayItem#xのOut_timeまでの出力をPresentation Engine31に命じて、同時実行されている図50側の処理を停止させた上で、図50のステップS107に移行する。こうしてIピクチャアドレスu,vを変化して、別の部分の再生を命じた上でステップS107への移行するので、別のAVClipからTSパケットが読み出されることになり、映像内容が切り換えが実現する。
【0193】
図53は、Presentation Engine31による処理手順の詳細を示すフローチャートである。本フローチャートは、IピクチャのPTSをカレントPTMに設定した後で(ステップS131)、ステップS132〜ステップS137からなるループ処理を実行するものである。
続いてステップS132〜ステップS137におけるループ処理について説明する。このループ処理は、カレントPTMにあたるピクチャ、オーディオの再生出力と、カレントPTMの更新とを繰り返すものである。本ループ処理におけるステップS136は、ループ処理の終了要件を規定している。つまりステップS136は、カレントPTMがPI#xのOut_timeであることをループ処理の終了要件にしている。
【0194】
ステップS133は、早送りAPI、又は、早戻しAPIがJava(登録商標)仮想マシン38からコールされたか否かの判定である。もしコールされれば、ステップS138において早送りか早戻しかの判定を行い、早送りであるなら、次のIピクチャのPTSをカレントPTMに設定する(ステップS139)。このようにカレントPTMを、次のIピクチャのPTSに設定することで、1秒飛びにAVClipを再生してゆくことができる。これにより、2倍速等でAVClipは順方向に早く再生されることになる。早戻しであるなら、カレントPTMがPlayItem#xのOut_timeに到達したかを判定する(ステップS140)。もし到達してないのなら、1つ前のIピクチャのPTSをカレントPTMに設定する(ステップS141)。このように読出先アドレスAを、1つ前のIピクチャに設定することで、AVClipを後方向に1秒飛びに再生してゆくことができる。これにより、2倍速等でAVClipは、逆方向に再生されることになる。尚、早送り、巻戻しを実行するにあたっての処理手順は多種多様なものである。ここで説明するのはあくまでも一例に過ぎないことに留意されたい。
【0195】
ステップS134は、メニューコールAPIがコールされたか否かの判定であり、もしコールされれば、現在の再生処理をサスペンドして(ステップS142)、メニュー処理用のメニュープログラムを実行する(ステップS143)。以上の処理により、メニューメニューコールがなされた場合は、再生処理を中断した上で、メニュー表示のための処理が実行されることになる。
【0196】
ステップS135は、sync_PlayItem_idにより、PlayItem#xを指定したSubPlayItem#yが存在するか否かの判定であり、もし存在すれば、図54のフローチャートに移行する。図54は、SubPlayItemの再生手順を示すフローチャートである。本フローチャートでは、先ずステップS146において、カレントPTMはSubPlayItem#yのsync_start_PTS_of_playItemであるか否かを判定する。もしそうであれば、ステップS153においてSubPlayItem#yに基づく再生処理を行うようPlayback Control Engine32に通知する。
【0197】
ステップS136がYesと判定された場合、ステップS144、ステップS145を実行する。ステップS144は、Virtual File System30からNotify End Of Fileイベントが出力され、尚且つ、デコーダからNotify End Of Decodingイベントが出力されたかを判定する。もし出力されれば、Notify End Of StreamイベントをPlayback Control Engine32に出力する。
【0198】
図54のステップS147〜ステップS152は、SubPlayItem#yに基づく再生処理を示すフローチャートである。
ステップS147では、SubPlayItem#yのClip_information_file_nameで指定されるClip情報を読み込む。ステップS148では、カレントClip情報のEP_mapを用いて、SubPlayItem#yのIn_timeを、アドレスαに変換する。一方ステップS149では、SubPlayItem#yのOut_timeを,カレントClip情報のEP_mapを用いて、アドレスβに変換する。ステップS150は、SubPlayItem#yのIn_timeからSubPlayItem#yのOut_timeまでの出力をデコーダに命じる。これらの変換で得られたアドレスβの次のIピクチャを求めて、そのアドレスの1つ手前をアドレスγに設定し(ステップS151)、そうして算出されたアドレスγを用いて、SubClip#zにおけるアドレスαからアドレスγまでのTSパケットの読み出しをBD−ROMドライブ1又はLocal Storage18に命じるというものである(ステップS152)。
【0199】
また図50に戻ってPlayback Control Engine32の処理の説明の続きを行う。ステップS113はPresentation Engine31による再生制御が完了したかの判定であり、最後のPlayItem#xに対して、図53のフローチャートの処理が行われている限り、ステップS113がNoになる。図53のフローチャートの処理が終了して初めて、ステップS113はYesになりステップS114に移行する。ステップS114は、Java(登録商標)仮想マシン38へのNotifyイベントの出力であり、この出力により、2時間という再生時間の経過をJava(登録商標)仮想マシン38は知ることができる。
【0200】
以上のように本実施形態によれば、2時間という再生時間の経過時点をアプリケーションマネージャ36は把握することができるので、プレイリストの再生終了と同期した処理をJava(登録商標)仮想マシン38に実行させることができる。
(備考)
以上の説明は、本発明の全ての実施行為の形態を示している訳ではない。下記(A)(B)(C)(D)・・・・・の変更を施した実施行為の形態によっても、本発明の実施は可能となる。本願の請求項に係る各発明は、以上に記載した複数の実施形態及びそれらの変形形態を拡張した記載、ないし、一般化した記載としている。拡張ないし一般化の程度は、本発明の技術分野の、出願当時の技術水準の特性に基づく。
【0201】
(A)全ての実施形態では、本発明に係る光ディスクをBD−ROMとして実施したが、本発明の光ディスクは、記録される動的シナリオ、Index Tableに特徴があり、この特徴は、BD−ROMの物理的性質に依存するものではない。動的シナリオ、Index Tableを記録しうる記録媒体なら、どのような記録媒体であってもよい。例えば、DVD−ROM,DVD−RAM,DVD−RW,DVD−R,DVD+RW,DVD+R,CD−R,CD−RW等の光ディスク、PD,MO等の光磁気ディスクであってもよい。また、コンパクトフラッシュ(登録商標)カード、スマートメディア、メモリスティック、マルチメディアカード、PCM−CIAカード等の半導体メモリカードであってもよい。フレシキブルディスク、SuperDisk,Zip,Clik!等の磁気記録ディスク(i)、ORB,Jaz,SparQ,SyJet,EZFley,マイクロドライブ等のリムーバルハードディスクドライブ(ii)であってもよい。更に、機器内蔵型のハードディスクであってもよい。
(B)全ての実施形態における再生装置は、BD−ROMに記録されたAVClipをデコードした上でTVに出力していたが、再生装置をBD−ROMドライブのみとし、これ以外の構成要素をTVに具備させてもい、この場合、再生装置と、TVとをIEEE1394で接続されたホームネットワークに組み入れることができる。また、実施形態における再生装置は、テレビと接続して利用されるタイプであったが、ディスプレイと一体型となった再生装置であってもよい。更に、各実施形態の再生装置において、処理の本質的部分をなす部分のみを、再生装置としてもよい。これらの再生装置は、何れも本願明細書に記載された発明であるから、これらの何れの態様であろうとも、各実施形態に示した再生装置の内部構成を元に、再生装置を製造する行為は、本願の明細書に記載された発明の実施行為になる。各実施形態に示した再生装置の有償・無償による譲渡(有償の場合は販売、無償の場合は贈与になる)、貸与、輸入する行為も、本発明の実施行為である。店頭展示、カタログ勧誘、パンフレット配布により、これらの譲渡や貸渡を、一般ユーザに申し出る行為も本再生装置の実施行為である。
【0202】
(C)各フローチャートに示したプログラムによる情報処理は、ハードウェア資源を用いて具体的に実現されていることから、上記フローチャートに処理手順を示したプログラムは、単体で発明として成立する。全ての実施形態は、再生装置に組み込まれた態様で、本発明に係るプログラムの実施行為についての実施形態を示したが、再生装置から分離して、各実施形態に示したプログラム単体を実施してもよい。プログラム単体の実施行為には、これらのプログラムを生産する行為(1)や、有償・無償によりプログラムを譲渡する行為(2)、貸与する行為(3)、輸入する行為(4)、双方向の電子通信回線を介して公衆に提供する行為(5)、店頭展示、カタログ勧誘、パンフレット配布により、プログラムの譲渡や貸渡を、一般ユーザに申し出る行為(6)がある。
【0203】
(D)各フロ−チャ−トにおいて時系列に実行される各ステップの「時」の要素を、発明を特定するための必須の事項と考える。そうすると、これらのフロ−チャ−トによる処理手順は、再生方法の使用形態を開示していることがわかる。各ステップの処理を、時系列に行うことで、本発明の本来の目的を達成し、作用及び効果を奏するよう、これらのフロ−チャ−トの処理を行うのであれば、本発明に係る記録方法の実施行為に該当することはいうまでもない。
【0204】
(E)BD−ROMに記録するにあたって、AVClipを構成する各TSパケットには、拡張ヘッダを付与しておくことが望ましい。拡張ヘッダは、TP_extra_headerと呼ばれ、『Arribval_Time_Stamp』と、『copy_permission_indicator』とを含み4バイトのデータ長を有する。TP_extra_header付きTSパケット(以下EX付きTSパケットと略す)は、32個毎にグループ化されて、3つのセクタに書き込まれる。32個のEX付きTSパケットからなるグループは、6144バイト(=32×192)であり、これは3個のセクタサイズ6144バイト(=2048×3)と一致する。3個のセクタに収められた32個のEX付きTSパケットを”Aligned Unit”という。
【0205】
IEEE1394を介して接続されたホームネットワークでの利用時において、再生装置200は、以下のような送信処理にてAligned Unitの送信を行う。つまり送り手側の機器は、Aligned Unitに含まれる32個のEX付きTSパケットのそれぞれからTP_extra_headerを取り外し、TSパケット本体をDTCP規格に基づき暗号化して出力する。TSパケットの出力にあたっては、TSパケット間の随所に、isochronousパケットを挿入する。この挿入箇所は、TP_extra_headerのArribval_Time_Stampに示される時刻に基づいた位置である。TSパケットの出力に伴い、再生装置200はDTCP_Descriptorを出力する。DTCP_Descriptorは、TP_extra_headerにおけるコピー許否設定を示す。ここで「コピー禁止」を示すようDTCP_Descriptorを記述しておけば、IEEE1394を介して接続されたホームネットワークでの利用時においてTSパケットは、他の機器に記録されることはない。
【0206】
(F)各実施形態において、記録媒体に記録されるデジタルストリームはAVClipであったが、DVD−Video規格、DVD−Video Recording規格のVOB(Video Object)であってもよい。VOBは、ビデオストリーム、オーディオストリームを多重化することにより得られたISO/IEC13818−1規格準拠のプログラムストリームである。またAVClipにおけるビデオストリームは、MPEG4やWMV方式であってもよい。更にオーディオストリームは、Linear−PCM方式、Dolby−AC3方式、MP3方式、MPEG−AAC方式、Dts、WMA(Windows(登録商標)media audio)であってもよい。
【0207】
(G)各実施形態における映像作品は、アナログ放送で放送されたアナログ映像信号をエンコードすることにより得られたものでもよい。デジタル放送で放送されたトランスポートストリームから構成されるストリームデータであってもよい。
またビデオテープに記録されているアナログ/デジタルの映像信号をエンコードしてコンテンツを得ても良い。更にビデオカメラから直接取り込んだアナログ/デジタルの映像信号をエンコードしてコンテンツを得ても良い。他にも、配信サーバにより配信されるデジタル著作物でもよい。
【0208】
(H)BD−Jモジュール35は、衛星放送受信のために機器に組み込まれたJava(登録商標)プラットフォームであってもよい。BD−Jモジュール35がかかるJava(登録商標)プラットフォームであれば、本発明に係る再生装置は、MHP用STBとしての処理を兼用することになる。
更に携帯電話の処理制御のために機器に組み込まれたJava(登録商標)プラットフォームであってもよい。かかるBD−Jモジュール35がかかるJava(登録商標)プラットフォームであれば、本発明に係る再生装置は、携帯電話としての処理を兼用することになる。
【0209】
(I)レイアモデルにおいて、BD−Jモードの上にHDMVモードを配置してもよい。特にHDMVモードでの動的シナリオの解釈や、動的シナリオに基づく制御手順の実行は、再生装置に対する負担が軽いので、HDMVモードをBD−Jモード上で実行させても何等問題は生じないからである。また再生装置や映画作品の開発にあたって、動作保証が1つのモードで済むからである。
【0210】
更にBD−Jモードだけで再生処理を実行してもよい。第5実施形態に示したように、BD−JモードでもPLの再生と同期した再生制御が可能になるから、強いてHDMVモードを設けなくてもよいという理由による。
(J)AVClipに多重化されるべきインタラクティブグラフィクスストリームにナビゲーションコマンドを設けて、あるPLから別のPLへの分岐を実現しても良い。(K)第1実施形態では、1つのBD−ROMに属する複数タイトルの全てを生存区間とするタイトルとしてタイトルアンバウンダリーアプリケーションを規定した。この他にも、複数のBD−ROMに属するタイトルの全てを生存区間とするタイトルアンバウンダリーアプリケーションを規定してもよい。
【0211】
(L)第1実施形態でアプリケーション管理テーブルを作成するにあたって、同時実行し得るアプリケーションの数は、例えば4個以下に制限することが望ましい。
アプリケーションの同時実行数を4個以下に制限する理由は以下の通りである。BD−ROMの再生装置は、デジタル放送のチューナ機能を具備しているものが多く、そのチューナ機能を実現するアプリケーションがメモリに常駐(レジデント)していることも多い。かかるレジデントアプリケーションが動作する余地を生むため、アプリケーションの数は4つ以下に制限されている。4つのアプリケーションの内訳として、1つ目をタイトルアンバウンダリーアプリケーション、2つ目をタイトルバウンダリアプリケーション、3つ目をチャプターバウンダリーアプリケーションとしておくことが望ましい。
【0212】
(M)第2実施形態においてエラー管理テーブルは、1つのアプリケーションが異常終了した際、1つのリカバリー処理を実行するよう規定されていた。しかし1つのアプリケーションが異常終了した際、複数のリカバリー処理を実行するようにしてもよい。つまりあるアプリケーションが異常終了した際、プレイリスト再生を継続と、アプリケーションと再起動と、イベント出力とを再生装置に実行させてもよい。
【0213】
またアプリケーション毎ではなく、1つのタイトルにつき1つのリカバリー処理を規定するようエラー管理テーブルを構成してもよい。
(N)AVClipには、メニューを表示して対話的な操作を受け付けるためのインタラクティブグラフィクスストリームを多重化しておくことができるため、トップメニューを表示して対話的な操作を受け付けるようなAVClipを、単に再生させるようなナビゲーションコマンドをMovieObjectに記述しておくだけで、トップメニュータイトルを製作してもよい。
【0214】
(O)各実施形態におけるディレクトリ・ファイル構成及びファイル内のデータ構造は一例であり、本発明の特徴である管理情報は、ディレクトリ・ファイル構成及びファイル内のデータ構造に依存しない。例えばBD−Jモードの動作シナリオであるBD−J Objectは、識別子bobj_idと、識別子BD−Jが付与されたファイル(ZZZZZ.BD−J)として、BDJAディレクトリに配置し、BD−J Object.bdmvのBD−J Object[n]()には、識別子bobj_idのみを格納してよい。
【産業上の利用可能性】
【0215】
本発明に係る記録媒体及び再生装置は、ホームシアターシステムでの利用のように、個人的な用途で利用されることがありうる。しかし本発明は上記実施形態に内部構成が開示されており、この内部構成に基づき量産することが明らかなので、資質において工業上利用することができる。このことから本発明に係る記録媒体及び再生装置は、産業上の利用可能性を有する。
【図1】

【図2】

【図3】

【図4】

【図5】

【図6】

【図7】

【図8】

【図9】

【図10】

【図11】

【図12】

【図13】

【図14】

【図15】

【図16】

【図17】

【図18】

【図19】

【図20】

【図21】

【図22】

【図23】

【図24】

【図25】

【図26】

【図27】

【図28】

【図29】

【図30】

【図31】

【図32】

【図33】

【図34】

【図35】

【図36】

【図37】

【図38】

【図39】

【図40】

【図41】

【図42】

【図43】

【図44】

【図45】

【図46】

【図47】

【図48】

【図49】

【図50】

【図51】

【図52】

【図53】

【図54】


【特許請求の範囲】
【請求項1】
アプリケーションと、デジタルストリームと、管理情報とが記録された記録媒体であって、
前記アプリケーションは、
仮想マシン向けプログラミング言語で記述されたプログラムであり、
仮想マシンによる実行が可能となる生存区間が、予め規定されており、
前記管理情報は、
生存区間において、アプリケーションの実行と同時に行うべきデジタルストリームの再生制御を示す
ことを特徴とする記録媒体。
【請求項2】
前記記録媒体には更に、デジタルストリームの再生経路を規定するプレイリスト情報が複数記録されており、
前記管理情報により示される再生制御は、所定の再生属性が付加されたプレイリスト情報に示される再生経路に従って、デジタルストリームを再生することである、請求項1記載の記録媒体。
【請求項3】
所定の再生属性とは、プレイリスト情報に示される再生経路の再生を自動的に開始する旨を示す属性であり、
前記デジタルストリーム再生の同時実行は、
プレイリスト情報に自動再生を示す再生属性が付加されている場合になされる、ことを特徴とする請求項2記載の記録媒体。
【請求項4】
前記記録媒体には更に、生存区間がないタイトルアンバウンダリーアプリケーションが記録されており、
タイトルアンバウンダリーアプリケーションは、記録媒体に記録されている複数プレイリスト情報のうち、何れか1つを、再生装置における状態レジスタの格納値に応じて選択する処理を行い、
前記所定の再生属性とは、タイトルアンバウンダリーアプリケーションの選択を待って再生される旨を示す再生属性である
ことを特徴とする請求項2記載の記録媒体。
【請求項5】
管理情報は更に、アプリケーションの異常終了時に行うべきリカバリー処理を規定する再生継続フラグを含み、
前記再生継続フラグは所定の値に設定されることにより
アプリケーションと同時になされた再生制御を、アプリケーションの異常終了後も再生装置に継続させる旨を示す
ことを特徴とする請求項1記載の記録媒体。
【請求項6】
管理情報は更に、アプリケーションの異常終了時に行うべきリカバリー処理を規定するフラグを含み、
フラグには、
異常終了したアプリケーションを再起動するか否かを示すフラグ(i)、
アプリケーションの異常終了時に、出力すべきイベントを示すフラグ(ii)、
再生装置をリブートするか否かを示すフラグ(iii)がある
ことを特徴とする請求項1記載の記録媒体。
【請求項7】
前記アプリケーションは、記録媒体において複数記録されており、
各アプリケーションのそれぞれは、複数タイトルのどれかに帰属しており、
前記アプリケーションの生存区間は、タイトルを用いて表現されている
ことを特徴とする請求項1記載の記録媒体。
【請求項8】
記録媒体に記録されたアプリケーションを実行する仮想マシン部と、
同記録媒体に記録されたデジタルストリームを再生する再生制御エンジン部と、
各アプリケーションの生存区間が到来すれば、アプリケーションを仮想マシンに実行させ、それと同時に、記録媒体に記録された管理情報に基づくデジタルストリームの再生を、再生制御エンジン部に実行させるアプリケーションマネージャと
を備えることを特徴とする再生装置。
【請求項9】
前記アプリケーションマネージャによる再生制御は、
アプリケーションの実行画像を親画面に配置し、デジタルストリームの再生画像を子画面に配置した合成画像を再生制御エンジン部に出力させる制御を含む
ことを特徴とする請求項8記載の再生装置。
【請求項10】
前記アプリケーションマネージャは更に、
アプリケーションが起動されるまでのスタートアップディレイにおいて、デジタルストリームの再生画像を主画像として再生させるよう、再生制御エンジン部に対する制御を行い、
前記合成画像を、アプリケーションが正常に起動した後に再生制御エンジン部に表示させる
ことを特徴とする請求項9記載の再生装置。
【請求項11】
前記アプリケーションマネージャは更に、
デジタルストリームの再生画像を主画像として再生させる制御を、アプリケーションの起動に失敗した際、及び、アプリケーションが異常終了した際にも実行する
ことを特徴とする請求項10記載の再生装置。
【請求項12】
前記記録媒体には、プレイリスト情報が複数記録されており、
前記アプリケーションマネージャによる再生制御とは、所定の再生属性が付加されたプレイリスト情報に示される再生経路に従って、デジタルストリームを再生させることである、請求項8記載の再生装置。
【請求項13】
前記所定の再生属性とは、プレイリスト情報に示される再生経路の再生を自動的に開始する旨を示す再生属性である、ことを特徴とする請求項12記載の再生装置。
【請求項14】
前記記録媒体には更に、生存区間がないタイトルアンバウンダリーアプリケーションが記録されており、
タイトルアンバウンダリーアプリケーションは、記録媒体に記録されている複数プレイリスト情報のうち、何れか1つを、再生装置における状態レジスタの格納値に応じて選択する処理を行い、
前記所定の再生属性とは、タイトルアンバウンダリーアプリケーションの選択を待って再生される旨を示す再生属性であり、
前記再生制御エンジン部によるデジタルストリーム再生は、
所定の再生属性が付加されたプレイリスト情報のうちタイトルアンバウンダリーアプリケーションにより選択されたものに基づきなされる
ことを特徴とする請求項12記載の再生装置。
【請求項15】
前記管理情報は更に、アプリケーションの異常終了時に行うべきリカバリー処理を規定する再生継続フラグを含み、
前記アプリケーションマネージャは更に、前記再生継続フラグが所定の値に設定されているか否かの判定を行い、前記再生継続フラグが所定の値に設定されていれば、アプリケーションと同時になされた再生制御を、アプリケーションの異常終了後も再生制御エンジン部に継続させる
ことを特徴とする請求項8記載の再生装置。
【請求項16】
前記アプリケーション毎の生存区間は、記録媒体に記録された管理情報に示されており、
管理情報は更に、アプリケーションの異常終了時に行うべきリカバリー処理を規定するフラグを含み、
アプリケーションマネージャは更に、管理情報内のフラグに基づき
異常終了したアプリケーションを再起動する制御(1)、
予め規定されたイベントを出力する制御(2)、
再生装置をリブートする制御(3)のどれかを実行する
ことを特徴とする請求項8記載の再生装置。
【請求項17】
前記再生装置は、
何れかのプレイリスト情報を指定した再生がアプリケーションから命じられた場合、当該アプリケーションの正当性を認証するパーミッションコントローラを備え、
前記再生制御エンジン部がプレイリスト情報に基づく再生を行うのは、パーミッションコントローラが正当性ありと認証した場合である
ことを特徴とする請求項8記載の再生装置。
【請求項18】
アプリケーションマネージャは、プレイリスト情報に基づく再生を行うアプリケーションが存在する場合、当該アプリケーションが再生可能なプレイリスト情報を判定して、当該アプリケーションに通知し、
前記再生制御エンジン部による再生は、通知されたプレイリスト情報に基づく
ことを特徴とする請求項8記載の再生装置。
【請求項19】
記録媒体に記録されたアプリケーションを実行する仮想マシン部と、同記録媒体に記録されたデジタルストリームを再生する再生制御エンジン部とを有したコンピュータが読み込むことができるプログラムであって、
各アプリケーションの生存区間が到来すれば、アプリケーションを仮想マシンに実行させるステップと、
仮想マシンによる実行と同時に、記録媒体に記録された管理情報に基づくデジタルストリームの再生を、再生制御エンジン部に実行させるステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項20】
記録媒体に記録されたアプリケーションを実行する仮想マシン部と、同記録媒体に記録されたデジタルストリームを再生する再生制御エンジン部とを有したコンピュータに対する再生方法であって、
各アプリケーションの生存区間が到来すれば、アプリケーションを仮想マシンに実行させるステップと、
仮想マシンによる実行と同時に、記録媒体に記録された管理情報に基づくデジタルストリームの再生を、再生制御エンジン部に実行させるステップと
をコンピュータに実行させることを特徴とする再生方法。
【請求項21】
デジタルストリームを再生する再生装置に組み込むことができるシステム集積回路であって、
記録媒体に記録されたアプリケーションを実行する仮想マシン部と、
各アプリケーションの生存区間が到来すれば、アプリケーションを仮想マシンに実行させ、それと同時に、記録媒体に記録された管理情報に基づくデジタルストリームの再生を、実行させるアプリケーションマネージャと
を備えることを特徴とするシステム集積回路。

【国際公開番号】WO2005/045840
【国際公開日】平成17年5月19日(2005.5.19)
【発行日】平成19年5月24日(2007.5.24)
【国際特許分類】
【出願番号】特願2005−515351(P2005−515351)
【国際出願番号】PCT/JP2004/016598
【国際出願日】平成16年11月9日(2004.11.9)
【特許番号】特許第3851341号(P3851341)
【特許公報発行日】平成18年11月29日(2006.11.29)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】