(57)【要約】【課題】多様なインタラクティブシナリオの実現が可能なパッケージメディアを提供する。【解決手段】パッケージメディアは、複数のビデオオブジェクトＶＯＢと、これらのビデオオブジェクトＶＯＢに関する管理情報であるＮＡＶＦＩＬＥＳとを格納する。管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動されるイベントハンドラとを含み、イベントハンドラには識別子が割り当てられている。【選択図】　図２３
2004007518.tif 000002
【特許請求の範囲】
【請求項１】
再生装置によって再生されるパッケージメディアであって、ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納し、前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動される複数のイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、
前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含むセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有する、
パッケージメディア。
【請求項２】
前記セル情報は、前記ビデオオブジェクトの一部又は全てを指定することが可能である、請求項１に記載のパッケージメディア。
【請求項３】
前記セル情報が複数あり、
前記複数のセル情報のうち異なる二つが、同一の前記ビデオオブジェクトの一部又は全てを重複して指定することが可能である、請求項１に記載のパッケージメディア。
【請求項４】
前記管理情報は、前記パッケージメディアが前記再生装置によって再生されている間に有効となるイベントハンドラを含む、請求項１に記載のパッケージメディア。
【請求項５】
ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納したパッケージメディアを再生するための再生装置であって、
前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動されるイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、
前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含むセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有し、
前記管理情報から再生リスト情報に含まれるセル情報と再生順序情報とを引き出すと共に、イベントを受けつけて対応する識別子が割り当てられたイベントハンドラを起動する管理情報処理部と、
前記管理情報処理部により引き出された前記セル情報と前記再生順序情報とに基づいて、前記ビデオオブジェクトを再生するビデオオブジェクト処理部と
を備える、再生装置。
【請求項６】
前記セル情報は、前記ビデオオブジェクトの一部又は全てを指定することが可能である、請求項５に記載の再生装置。
【請求項７】
前記セル情報が複数あり、
前記複数のセル情報のうち異なる二つが、同一の前記ビデオオブジェクトの一部又は全てを重複して指定することが可能である、請求項５に記載の再生装置。
【請求項８】
前記管理情報は、前記パッケージメディアを再生している間は有効となるイベントハンドラを含む、請求項５に記載の再生装置。
【請求項９】
ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納したパッケージメディアを再生するための再生方法であって、
前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動されるイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、
前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含む複数のセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有し、
前記管理情報から再生リスト情報に含まれるセル情報と再生順序情報とを引き出し、
前記セル情報と前記再生順序情報とに基づいて、前記ビデオオブジェクトを再生し、
前記イベントが発生すると対応する識別子が割り当てられたイベントを起動する、
再生方法。
【請求項１０】
前記セル情報は、前記ビデオオブジェクトの一部又は全てを指定することが可能である、請求項９に記載の再生方法。
【請求項１１】
前記セル情報が複数あり、
前記複数のセル情報のうち異なる二つが、同一の前記ビデオオブジェクトの一部又は全てを重複して指定することが可能である、請求項９に記載の再生方法。
【請求項１２】
前記管理情報は、前記パッケージメディアを再生している間は有効となるイベントハンドラを含む、請求項９に記載の再生方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、映画などのディジタル映像コンテンツを記録したパッケージの記録方式と、その再生方法および再生装置に関する。特に、既にビジネスとしての市場が確立されているＤＶＤ（ディジタル・ビデオ・ディスク）の次世代技術であるＨＤ−ＤＶＤ（高品位または高密度ディジタル・ビデオ・ディスク）に関する。
【０００２】
【従来の技術】
従来の技術である、既存のＤＶＤ（以下、ＳＤ−ＤＶＤまたは単にＤＶＤと称する）について説明する。
【０００３】
図４５は、ＳＤ−ＤＶＤの構造を示した図である。図４５の下段に示すように、ＤＶＤディスク上にはリードインからリードアウトまでの間に論理アドレス空間が設けられている。この論理アドレス空間の先頭にはファイルシステム情報が置かれている。
【０００４】
ファイルシステムとは、ＩＳＯ９６６０やＵＤＦ（Ｕｎｉｖｅｒｓａｌ　Ｄｉｓｃ　Ｆｏｒｍａｔ）に代表されるように、ディスク上のデータをディレクトリまたはファイルという単位で表現し、ユーザビリティを高めるものである。日常的に使用されているＰＣ（パーソナルコンピュータ）の場合でも、ＦＡＴまたはＮＴＦＳと呼ばれるファイルシステムにより、ディレクトリやファイルがコンピュータ上に表現され、それによって容易なデータの読み書きが実現されている。
【０００５】
ＳＤ−ＤＶＤの場合、ＵＤＦおよびＩＳＯ９６６０両方を使用している（両方を合わせてＵＤＦブリッジと呼ぶ）。具体的には、ＵＤＦまたはＩＳＯ９６６０どちらのファイルシステムドライバによってもデータの読み出しができる。（ここで取り扱うＤＶＤはパッケージメディア用のＲＯＭディスクであり、物理的に書き込みが不可能である。）
【０００６】
ＤＶＤ上に記録されたデータは、ＵＤＦブリッジを通して、図４５の左上の様にコンピュータ上でディレクトリまたはファイルとして見ることができる。ルートディレクトリ（図中「ＲＯＯＴ」）の直下に「ＶＩＤＥＯ＿ＴＳ」と呼ばれるディレクトリが置かれ、ここにＤＶＤのアプリケーションデータが記録されている。アプリケーションデータは複数のファイルとして記録され、これらのファイルは主として以下を含む。
【０００７】
ＶＩＤＥＯ＿ＴＳ．ＩＦＯ：ディスク再生制御情報ファイル
ＶＴＳ＿０１＿０．ＩＦＯ：ビデオタイトルセット＃１再生制御情報ファイル
ＶＴＳ＿０１＿０．ＶＯＢ：ビデオタイトルセット＃１ストリームファイル
．．．．．
【０００８】
拡張子として２つの種類が存在する。「ＩＦＯ」は再生制御情報が記録されたファイルであって、「ＶＯＢ」はＡＶデータであるＭＰＥＧストリームが記録されたファイルである。再生制御情報は、ＤＶＤで採用されたインタラクティビティ（ユーザの操作によって異なった再生が楽しめるなどの技術）を実現するための情報やメタデータのようなタイトルやＡＶストリームに付属する情報のような情報を含む。また、再生制御情報は、ナビゲーション情報とも呼ばれている。
【０００９】
再生制御情報ファイルには、ディスク全体の管理に関する「ＶＩＤＥＯ＿ＴＳ．ＩＦＯ」と、個々のビデオタイトルセット毎の再生制御情報である「ＶＴＳ＿０１＿０．ＩＦＯ」とがある（ＤＶＤでは、複数のタイトル、言い換えれば異なる映画や異なるバージョンの映画を１枚のディスクに記録することが可能である。）。ファイル名ボディにある「０１」は、ビデオタイトルセットの番号を示している。例えば、ビデオタイトルセット＃２の再生制御情報ファイルは、「ＶＴＳ＿０２＿０．ＩＦＯ」と表される。
【００１０】
図４５の右上部は、ＤＶＤのアプリケーション層でのＤＶＤナビゲーション空間であり、前述した再生制御情報が展開された論理構造空間である。「ＶＩＤＥＯ＿ＴＳ．ＩＦＯ」内の情報は、ＶＭＧＩ（ＶＩＤＥＯ　Ｍａｎａｇｅｒ　Ｉｎｆｏｒｍａｔｉｏｎ）として、このＤＶＤナビゲーション空間に展開される。また、「ＶＴＳ＿０１＿０．ＩＦＯ」内の情報、すなわちビデオタイトルセット毎に存在する再生制御情報は、ＶＴＳＩ（Ｖｉｄｅｏ　Ｔｉｔｌｅ　Ｓｅｔ　Ｉｎｆｏｒｍａｔｉｏｎ）として、このＤＶＤナビゲーション空間に展開される。
【００１１】
ＶＴＳＩの中にはＰＧＣ（Ｐｒｏｇｒａｍ　Ｃｈａｉｎ）と呼ばれる再生シーケンスの情報であるＰＧＣＩ（Ｐｒｏｇｒａｍ　Ｃｈａｉｎ　Ｉｎｆｏｒｍａｔｉｏｎ）が記述されている。ＰＧＣＩは、Ｃｅｌｌと呼ばれるＶＯＢ（Ｖｉｄｅｏ　Ｏｂｊｅｃｔの略であり、ＭＰＥＧストリームを指す）の一部区間または全部区間の集合と、コマンドと呼ばれる一種のプログラミング情報から構成されている。
【００１２】
コマンドは、ＤＶＤが規定する仮想マシーンによって処理されるものであり、ブラウザ上で実行されるＪａｖａ（登録商標）スクリプトなどに類似する。しかし、Ｊａｖａ（登録商標）スクリプトが論理演算の他にウィンドウやブラウザの制御（例えば、新しいブラウザのウィンドを開くなどの制御）を行うのに対して、ＤＶＤのコマンドは、論理演算の他にＡＶタイトルの再生制御、例えば、再生するチャプタの指定などの制御を実行するものである。
【００１３】
Ｃｅｌｌはディスク上に記録されているＶＯＢの開始および終了アドレス（論理アドレス）をその内部情報として有している。プレーヤは、Ｃｅｌｌに記述されたＶＯＢの開始および終了アドレス情報を使ってデータの読み出し、再生を実行する。
【００１４】
図４６はＡＶストリーム中に埋め込まれているナビゲーション情報を説明する概略図である。ＳＤ−ＤＶＤの特長であるインタラクティビティは、前述した「ＶＩＤＥＯ＿ＴＳ．ＩＦＯ」や「ＶＴＳ＿０１＿０．ＩＦＯ」などに記録されているナビゲーション情報だけによって実現されているのではない。インタラクティビティを実現するための幾つかの重要な情報は、ナビゲーション・パック（ナビパックまたは、ＮＶ＿ＰＣＫとも称する）と呼ばれる専用キャリアを使い、ＡＶストリーム内に映像および音声データなどと一緒に多重化されている。
【００１５】
簡単なインタラクティビティの例として、ここでメニューを説明する。メニュー画面上には、幾つかのボタンが現れ、夫々のボタンには当該ボタンが選択実行された時の処理が定義されている。また、メニュー上では一つのボタンが選択されている（ハイライトによって選択されたボタン上に半透明色がオーバーレイされている）。ユーザは、リモートコントローラの上下左右キーを使って、選択状態のボタンを上下左右の何れかのボタンに移動させることができる。また、リモートコントローラの上下左右キーを使って選択実行したいボタンにハイライトを移動させた後、ユーザが選択実行を指定（実行キーを押す）すると、対応する処理、一般的には対応するタイトルやチャプタの再生が実行される。
【００１６】
図４６の左上部はＮＶ＿ＰＣＫ内の概要を示している。ＮＶ＿ＰＣＫ内には、ハイライトカラー情報、個々のボタンに対応するボタン情報などの情報が含まれている。ハイライトカラー情報には、カラーパレット情報が記述され、オーバーレイ表示されるハイライトの半透明色が指定される。ボタン情報には、個々のボタンの位置情報である矩形領域情報と、当該ボタンから他のボタンへの移動情報（ユーザによる上下左右キーの操作に対応する移動先ボタンの指定）と、ボタンコマンド情報（当該ボタンが選択実行された時に実行されるコマンド）が記述されている。
【００１７】
図４６の中央右上部に示すように、メニュー上のハイライトはオーバーレイ画像として作られる。オーバーレイ画像は、ボタン情報中の矩形領域情報で指定された領域にカラーパレット情報で指定された色をつけた画像である。このオーバーレイ画像は、図４６の右部に示す背景画像と合成されて画面上に表示される。
【００１８】
このようにして、ＤＶＤではメニューを実現している。ナビゲーショデータの一部をＮＶ＿ＰＣＫを使用してストリーム中に埋め込んである理由は、ストリームと同期した動的なメニュー情報を更新のようなアプリケーション、例えば映画再生途中の５分〜１０分間だけ特別なメニューを表示する、を実現できるようにするためである。
【００１９】
【発明が解決しようとする課題】
従来、映画を見るのは、テレビにＤＶＤを接続して見るだけというスタイルであった。しかし、近年のＩＴ技術の進歩によって、ＰＣ上で映画を見たり、ＤＶＤプレーヤでＰＣのようにインターネットに接続することが可能となり、ＤＶＤはＡＶ機器、ＰＣは非ＡＶ機器という従来の固定観念が既に崩れている。今後は、ＤＶＤに記録されたＡＶコンテンツとインターネットとが連携をしたような新しい楽しみ方が増えてくることが予想される。
【００２０】
ここで問題になってくるのは、図４６で説明したように、ＳＤ−ＤＶＤでは、インタラクティビティ、特にメニューを実現するための情報がＮＶ＿ＰＣＫを使ってストリーム中に埋め込まれている点である。
【００２１】
ストリーム中に埋め込まれているナビゲーションデータは、ストリームを解析することによって初めて取り出すことができる。「ＶＩＤＥＯ＿ＴＳ．ＩＦＯ」のような専用ファイルに記録されている限り、ナビゲーションデータは簡単に読み出して解析することができるが、ストリームに埋め込まれたナビゲーションデータを読み出すのは困難である。実際に、ＳＤ−ＤＶＤの容量４．７ＧＢに対して、ナビゲーションデータの情報量は僅かに数１００ｋＢから数ＭＢでしかないのに対して、ストリームデータの情報量は４ＧＢを超える。４ＧＢの中から必要なデータを探し出すには当然のことながら先頭からデータを読み出して、解析するために数分から数十分の時間がかかる。このようなレスポンス性能では到底実使用には耐えられない。
【００２２】
通常の再生時には、必要なタイミングで必要なナビゲーション情報を得ることができるため、何ら問題は無い。しかし、例えば、最近のＤＶＤディスクでよく見られるＨＴＭＬ（Ｈｙｐｅｒ　Ｔｅｘｔ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ：インターネットで使われている記述言語）コンテンツとの接続などを考えた場合に問題が生じてくる。
【００２３】
図４７および図４８はこの問題の例を示している。図４７は、ＤＶＤでよく使われているマルチページメニューの例である。マルチページメニューは、例えば、チャプタ選択を行うチャプタメニューで、選択肢となるチャプタが複数存在し、一つの画面上に全てのチャプタ（ボタン）を表示しきれない場合に使われる手法である。実際、映画タイトルの場合、１つのタイトルの中に２０〜３０のチャプターが設定されていることは珍しくなく、マルチページによるチャプタメニューが多く見受けられる。
【００２４】
マルチページメニューの場合、選択肢となるチャプタの他に、メニューのページを切り替えるボタンが設けられている。図４７は、３つページから構成される、チャプタメニューを示す。ページ左端のＰＧＣ＃１には「チャプタ１」、「チャプタ２」と「次ページ」が表示されている。ユーザが「チャプタ１」または「チャプタ２」を選択実行した場合には、ボタンに対応したコマンドが起動され、夫々のチャプタに対応するＰＧＣ（Ｐｒｏｇｒａｍ　Ｃｈａｉｎ）またはＣｅｌｌの再生が開始される。一方、ユーザが「次ページ」を選択実行した場合は、次のページに対応するＰＧＣ、本例では、ＰＧＣ＃２の再生に移る。
【００２５】
ページ中央のＰＧＣ＃２では、「チャプタ３」、「チャプタ４」、「次ページ」と「前ページ」がメニュー上に置かれ、「チャプタ３」または「チャプタ４」の選択実行時には、夫々に対応する、ＰＧＣまたはＣｅｌｌの再生が行われる。「次ページ」が選択実行された場合は、次のページに対応するＰＧＣ＃３の再生が実行され、「前ページ」が選択実行された場合は、前のページに対応するＰＧＣ＃１の再生が実行される。ページ右端のＰＧＣ＃２、即ち３ページ目のメニューも同様の機能を有する。
【００２６】
上述したように、マルチページメニューの場合、夫々のページが個々のＰＧＣとして存在し、ＰＧＣ間の遷移をボタンにつけられたコマンドによって実施している。即ち、プレーヤはボタンコマンドを実行する度に次のメニューを読み込み、表示を行う。言い方を変えれば、プレーヤは、ボタンの選択実行の次に何が起きるかを知る由も無く、コマンドに従って順次実行をしていくだけであり、マルチページメニューの内部の構造を知っているわけでは無い。
【００２７】
図４８は、ＨＴＭＬコンテンツとＤＶＤを融合したアプリケーションの例である。ＰＣは、ＴＶに比べて特にテキスト情報などの情報の表示に優れており、ブラウザなどを使って映像以外にも様々なコンテンツを同時に表示することが可能である。こういったＰＣの特性を生かした例として、ＤＶＤ上では複数のページに分けられていたメニューを、ＰＣのブラウザ上で一つのメニューとして表示することも可能である。図４８は、図４７の３つページからなるマルチページメニューを一つの画面上に表示する例である。
【００２８】
しかしながら、前述したようにプレーヤは、幾つのページからメニューが構成されているのか、および各ボタンが選択実行された時の処理がどうなるのかを、全てストリームから読み出さなければならない。本例では、マルチページメニューはたかだか３ページから構成されているが、マルチページメニューのページ数が多い場合や、極端な例ではあるが各ストリームデータの記録位置がディスク上の内周と外周に離れて記録されている場合などは、シーク処理が発生して、ブラウザの表示に多大な時間がかかってしまう問題を有している。
【００２９】
また、メニュー画面自身も、背景画像にボタンを描画し、選択されているボタンに半透明色を被せたハイライトで行っているため、メニューとしての表現力（洗礼度）に乏しく、ＰＣをベースとしたインタラクティブメディアに比べて遥かに見劣りするものとなってきてしまっている。
【００３０】
更に、ＨＴＭＬのようなコンテンツと連携をする場合であっても、画面中に埋め込まれているボタン情報を取り除くことはできない為、ＨＴＭＬ画面上にリッチなメニュー画面が表示され、ＤＶＤ画面上に見劣りするメニュー画面が夫々表示されることになってしまい、アプリケーション製作、デザインの面から好ましいものでは無い。
【００３１】
更にまた、ＡＶストリーム中にナビゲーションデータを埋め込むことで、ＡＶストリーム中に含まれる映像データや音声データのデータ量に制約が生じる。
【００３２】
本発明は、上述した課題を解決してＡＶとコンピュータを融合した新しいパッケージメディアＨＤ−ＤＶＤを実現する技術を提供する事を目的としている。
【００３３】
具体的には、本発明は、以下の課題を解決することを目的とする。
（１）ストリームに埋め込まれたインタラクティブ情報によって、例えばＨＴＭＬを使った再生のような、通常のＡＶ再生とは異なるビューを実装しようとした場合に、インタラクティブシナリオを予め読み出す事ができない。
（２）メニュー表示で半透明色からなるハイライトをボタン上に合成表示するメニュー表示機能がＰＣなどのコンテンツに比べて見劣りする。
【００３４】
【課題を解決するための手段】
本発明の第１の態様は、再生装置によって再生されるパッケージメディアであって、ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納し、前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動される複数のイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含むセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有する、パッケージメディアを提供する。
【００３５】
本発明の第１の態様によれば、パッケージメディア中のビデオオブジェクトと別個にビデオオブジェクトの再生の際に起動されるイベントを管理する管理情報が格納されるので、多様なインタラクティブシナリオの実現が可能となる。また、管理情報がビデオオブジェクトに埋め込まれていないため、ビデオオブジェクトを解析することなくビデオオブジェクトに関する管理情報を再生装置が把握できる。また、ビデオオブジェクト中に含まれる映像データや音声データのデータ量が制約されない。
【００３６】
前記セル情報は、前記ビデオオブジェクトの一部又は全てを重複して指定することが可能である。
【００３７】
複数のセル情報のうち異なる二つが、同一の前記ビデオオブジェクトの一部又は全てを重複して指定することが可能であることが好ましい。
【００３８】
また、前記管理情報は、前記パッケージメディアが前記再生装置によって再生されている間に有効となるイベントハンドラを含むことが好ましい。
【００３９】
本発明の第２の態様は、ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納したパッケージメディアを再生するための再生装置であって、前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動されるイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含むセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有し、前記管理情報から再生リスト情報に含まれるセル情報と再生順序情報とを引き出すと共に、イベントを受けつけて対応する識別子が割り当てられたイベントハンドラを起動する管理情報処理部と、前記管理情報処理部により引き出された前記セル情報と前記再生順序情報とに基づいて、前記ビデオオブジェクトを再生するビデオオブジェクト処理部とを備える、再生装置を提供する。
【００４０】
本発明の第３の態様は、ビデオオブジェクトと、このビデオオブジェクトに関する管理情報とを格納したパッケージメディアを再生するための再生方法であって、前記管理情報は、再生リスト情報と、少なくともユーザオペレーションを含むイベントにより起動されるイベントハンドラとを含み、このイベントハンドラには識別子が割り当てられ、前記再生リスト情報は、ビデオオブジェクトの再生区間を指定する情報と、この再生区間が再生されている間に有効となる前記イベントハンドラの識別子とを含む複数のセル情報、および前記セル情報により指定された再生区間の再生順序を示す再生順序情報を有し、前記管理情報から再生リスト情報に含まれるセル情報と再生順序情報とを引き出し、前記セル情報と前記再生順序情報とに基づいて、前記ビデオオブジェクトを再生し、前記イベントが発生すると対応する識別子が割り当てられたイベントを起動する、再生方法を提供する。
【００４１】
【発明の実施の形態】
次に、図面に示す本発明の実施形態について詳細に説明する。
【００４２】
（プレーヤ構成）
図１は、ＨＤ−ＤＶＤの概要を示す図である。ＨＤ−ＤＶＤは、ＨＤ−ＤＶＤディスク（１０１）とＨＤ−ＤＶＤプレーヤ（１０２）から構成される。ＨＤ−ＤＶＤディスク（１０１）には、ナビゲーションファイルとＭＰＥＧストリームが夫々記録されている。プレーヤ（１０２）内部は、管理情報ないしはナビゲーション情報を解析実行する管理情報処理部としてのナビゲーションマネージャ（１０３）、ＭＰＥＧストリームをデコードするプレゼンテーションエンジン（１０４）、デコードされたビデオデータ（主映像）を一時格納するフレームメモリであるビデオプレーン（１０６）、デコードされたイメージデータ（字幕またはハイライトイメージ）を一時格納するフレームメモリであるイメージブレーン（１０５）、ビデオプレーン（１０６）のビデオデータ上にイメージプレーン（１０５）のイメージデータをオーバーレイ合成する合成器（１０７）から構成される。プレゼンテーションエンジン（１０４）、イメージプレーン（１０５）、ビデオプレーン（１０６）、および合成器（１０７）が本発明のビデオオブジェクト処理部を構成する。
【００４３】
図２は、ＨＤ−ＤＶＤプレーヤ（１０２）の内部構成の詳細を示すブロック図である。ナビゲーションマネージャ（１０３）は、ＸＭＬパーサ（２０１）、スクリプトプロセッサ（２０２）、ＵＯＰ（Ｕｓｅｒ　Ｏｐｅｒａｔｉｏｎ）マネージャ（２０３）、シナリオプロセッサ（２０４）、プレゼンテーションコントローラ（２０５）から構成される。
【００４４】
プレゼンテーションエンジン（１０４）はＭＰＥＧのシステムターゲットデコーダであり、ＡＶ同期処理の基準となるクロック（２０６）、デマルチプレクサ（２０７）、イメージプロセッサ（２０８）、ビデオプロセッサ（２０９）、サウンドプロセッサ（２１０）から構成される。
【００４５】
ＸＭＬパーサ（２０１）は、ナビゲーションファイルを読み込み、解析し、シナリオ情報をシナリオプロセッサ（２０４）へ、イベントハンドラ／スクリプトをスクリプトプロセッサ（２０２）へ、ストリーム情報をプレゼンテーションコントローラ（２０５）へ夫々渡す。
【００４６】
シナリオプロセッサ（２０４）は、シナリオ情報から、再生するストリームのストリーム番号をプレゼンテーションコントローラ（２０５）に伝へ、クロック（２０６）からの時刻情報をシナリオ情報と比較し、タイムイベントをスクリプトプロセッサ（２０２）に発行する。また、シナリオプロセッサ（２０４）はスクリプトプロセッサ（２０２）から割り込みでタイトル番号、または、チャプタ番号を受け、再生中のタイトル、チャプタを中断または停止し、指定タイトル、または、指定チャプタの再生を実行する。
【００４７】
スクリプトプロセッサ（２０２）は、シナリオプロセッサ（２０４）からのタイムイベント、または、ＵＯＰマネージャ（２０３）からのユーザイベントを受け、対応するイベントハンドラを実行する。
【００４８】
ＵＯＰマネージャ（２０３）は、ユーザオペレーション、即ちユーザによるリモートコントローラ１１０の操作を受け、必要なイベントをスクリプトプロセッサ（２０２）に発行する。図１に示すように、リモートコントローラ１１０は、メニュー選択を含む各種の処理を選択するための５個のボタンないしはキー１１１ａ，１１１ｂ，１１１ｃ，１１１ｄ，１１１ｅ、選択実行を指定するためのボタンないしはキー１１２、ディスプレイ上下左右移動の４個のボタンないしはキー１１３ａ，１１３ｂ，１１３ｃ，１１３ｄを備えている。
【００４９】
プレゼンテーションコントローラ（２０５）は、シナリオプロセッサ（２０４）から受けたストリーム番号とＸＭＬパーサ（２０１）から受け取ったストリーム情報に基づき再生するストリームの呼びだしをアドレス情報として、ドライブに伝え、また、再生ストリームの属性情報など必要な情報をプレゼンテーションエンジン（１０４）に伝える。
【００５０】
デマルチプレクサ（２０７）は、ＭＰＥＧストリームからエレメンタリストリームを抜き出し、夫々のエレメンタリデコーダ（２０８、２０９、２１０）に渡す。イメージプロセッサは（２０８）は、字幕およびハイライト映像をデコードするデコーダ、ビデオプロセッサは（２０９）は、ＭＰＥＧビデオストリームをデコードするビデオでコーダ、サウンドプロセッサ（２１０）は、ＭＰＥＧオーディオストリームやドルビーＡＣ３などの音声データをデコードするオーディオでコーダである。また、イメージメモリ（２１２）は、字幕およびハイライトに使う映像が複数のイメージから構成される場合に、一時的に格納するためのメモリである。
【００５１】
クロック（２０６）は、ＭＰＥＧシステムターゲットデコーダで定義されているシステムクロックカウンタであり、ＡＶデータの同期制御の基準になるクロックを生成する。また、クロック（２０６）の出力は、シナリオプロセッサ（２０４）にも送られ、ＡＶストリームだけでなく、シナリオの同期処理にも使われる。
【００５２】
また、プレーヤはトラックバッファ（２１１）を有し、ＭＰＥＧストリームはトラックバッファ（２１１）を介してデマルチプレクサ（２０７）へ入力される。トラックバッファ（２１１）は、ディスク上でのシーク処理などが発生した場合などに、デマルチプレクサ（２０７）へのデータ供給がストップしないように、予めデータを蓄えておくバッファである。
【００５３】
（シナリオおよびシナリオ再生モデル）
図３は、シナリオ構造を示す図である。
【００５４】
シナリオとは、ＨＤ−ＤＶＤの再生制御を行う論理基本単位のことであって、主にプログラムとセルから構成されている。セルは一つの連続再生単位であり、具体的には、１つのＶＯＢ（ＭＰＥＧストリーム）の全部または一部を論理的に指し示している。セルは論理的な単位であって、ＶＯＢ、即ちストリームそのものでは無い。
【００５５】
セルとＶＯＢとの関係について図４９を参照して説明する。前述のようにＶＯＢ２０１はＨＤ−ＤＶＤディスクに格納されたＭＰＥＧストリームである。一つのセル２０２は再生開始時間（ｉｎ）と再生終了時間（ｏｕｔ）を有し、これによって対応する一つのＶＯＢの全部又は一部を再生区間して指定する。セル２０２が有する再生開始時間と再生終了時間とはＶＯＢ管理部２０３によりＶＯＢ２０１におけるアドレスに対応付けられている。後述するようにセル２０２は１個又は複数個のメニューを有することができ、メニューの開始時間から終了時間までの間はそのメニューに対応するイベントハンドラを起動することができる。このＶＯＢとは別個のセルに含まれるメニューから起動可能なイベントハンドラによりインタラクティブシナリオを実現することができる。従って、インタラクティブシナリオを読み出すためのシーク処理が発生せず、多様なインタラクティブシナリオの実現が可能となる。また、ビデオオブジェクト中に含まれる映像データや音声データのデータ量が制約されない。
【００５６】
セル２０１はＶＯＢそのものではないので、異なる複数のセル２０２が同一のビデオオブジェクト２０１の一部を重複して指定していてもよい。同様に、異なる複数のセル２０２が同一のビデオオブジェクト２０１の全部を重複して指定してもよい。従って、同一のＶＯＢであっても再生経路等によりメニューを異ならせることができ、多様なインタラクティブシナリオの実現が可能となる。
【００５７】
再度図３を参照すると、プログラムは、セルを時系列（再生順）に並べた集合体であり、言い換えれば静的なシナリオである。プログラムは内部にブロックと呼ばれる並列再生区間を持つことがあり、これは、マルチアングルのように、ユーザの意図によって再生するＶＯＢが選択される区間や、乱数を使って再生するセルが選択されるランダム／シャッフル再生に用いられる。
【００５８】
ランダム再生とは、例えば３つのセルがブロック内にあった場合、３つの内、何れかのセルが選択されて再生される。この選択と再生はシナリオによって指定される回数だけ行われる。例えば、３回のランダム再生が指定されたブロックでは、３つのセルから１つのセルが選択され再生される処理が３回行われる。
【００５９】
シャッフル再生とは、ランダム再生と同様に指定された回数だけ、ブロックの中から１つのセルが選択され再生されるが、一度選択されたセルは次からの選択対象には入らない点でランダム再生と異なっている。例えば、３回のシャッフル再生が指定されたブロックでは、最初の選択時には、３つのセルから１つのセルが選択され再生される。二度目の選択時には、残りの２つのセルから１つのセルが選択され再生されることになる。
【００６０】
セルは内部にスクリプト（プログラミング言語）を持つことができ、スクリプトによってシナリオの分岐など動的分岐が可能になる。
【００６１】
図４は、プレーヤでの状態遷移図である。
【００６２】
プレーヤは「セル再生状態」と「停止状態」の２つの状態を有する状態遷移モデルからなる。「停止状態」にあるプレーヤは、ユーザからの再生要求や、メニューコールなどによって「セル再生状態」に遷移する。「セル再生状態」からはユーザの再生停止要求によって「停止状態」へ遷移する他に、プログラム間でセルの再生が移る時、スクリプトのコマンド「Ｊｕｍｐ」、「Ｌｉｎｋ」、「ＧｏＵｐ」（スクリプトについては後に詳細を記す）などによって他のセルへ再生が移るときに他の「セル再生状態」に遷移する。「ＧｏＵｐ」によって他の「セル再生状態」へ遷移した場合は、「Ｒｅｓｕｍｅ」によって元の「セル再生状態」に戻ることが可能である。
【００６３】
図４では３つのセル再生状態を記述しているが、これは説明上便宜的に３つに分けたものであって、異なる状態では無い。
【００６４】
図５は、ユーザの認識単位であるタイトルおよびチャプタとプログラムおよびセルの関係を示す図である。
【００６５】
前述した、プログラムおよびセルは、シナリオを記述するための論理単位であって、必ずしもユーザが認識する単位とは一致しない。例えば、１つのタイトルの中で、動的な分岐が幾つもある場合は、複数のプログラムから構成される事になる。この場合、ユーザが時系列に並ばないプログラムを個々に意識するよりも、プログラムを一まとめにした単位として認識するほうが理想的である。また、セルもＶＯＢという物理的な単位を超えられなくしているため、プログラム−タイトルのように、セルを複数束ねた単位としてチャプタがあると便利である。
【００６６】
図５に示すように、タイトルは複数のプログラムから構成され、チャプタは複数のセルから構成されている。チャプタは複数のプログラムに跨ってセルを持つことができるが、タイトルを超えることは許されない。即ち、チャプタはタイトル内に閉じた単位である。また、１つのプログラムを複数のタイトルで共有したり、１つのセルを複数のチャプタで共有したりすることはできない。一方で、どのタイトルやセルにも属さないプログラムまたはセルが存在することは許される。
【００６７】
（メニューおよびイベントハンドラ）
図６はメニュー構成を示す図である。
【００６８】
本実施例の中でメニュー構造とは、従来例で説明したようなチャプタメニューを実現するための構造であり、動的、即ちユーザからのイベントに応じて動作処理を実現するための枠組みのことである。
【００６９】
メニュー上のボタン画像は、イメージデータによって作られる。ボタン画像は背景であるビデオ映像にオーバーレイされ、合成画面がＴＶ画面上に表示される。イメージとビデオの合成はプレーヤ構成において説明した通りである。メニューを構成するイメージデータの制御、および、ユーザがボタンを選択実行した場合の制御は、メニュー情報によって記述され、スクリプトプロセッサ２０２によって処理が行われる。
【００７０】
図６右上部がメニュー情報であり、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）を用いて記述が行われている。
【００７１】
各メニュー情報は＜ｍｅｎｕ＞タグによって宣言され、終了タグ＜／ｍｅｎｕ＞までが一連のメニュー情報となる。＜ｍｅｎｕ＞タグは内部に属性として、メニュー開始時刻「ｉｎ」とメニュー終了時刻「ｏｕｔ」を有している。これら時刻情報はメニューの存在するセル内での相対時刻である。また＜ｍｅｎｕ＞タグはメニュー開始時に実行される処理「ｐｒｅｐｒｏｃｅｓｓ」を属性として持つことができる。本例では空になっている。
【００７２】
「ｍｅｎｕ」要素は内部に子要素「ｂｕｔｔｏｎ」を複数持つことができる。「ｂｕｔｔｏｎ」はメニュー上のボタンに相当し、メニュー上に置かれるボタンの数だけ「ｂｕｔｔｏｎ」要素が宣言される。各＜ｂｕｔｔｏｎ＞タグは、その属性として「ｉｄ」を持ち、これがこのメニュー内での各ボタンのユニーク番号となる。例えば、図６で最初の「ｂｕｔｔｏｎ」要素は属性「ｉｄ」の値（属性値）が”１”であり、画面上のボタン１に対応している。
【００７３】
「ｂｕｔｔｏｎ」は内部に子要素「ｅｖｅｎｔ＿ｃａｌｌ」を１つ持つ。これはユーザオペレーションに対応するイベントハンドラへのリンクを記述するための要素である。＜ｅｖｅｎｔ＿ｃａｌｌ＞タグは属性として、「ｌｅｆｔ」「ｒｉｇｈｔ」「ｕｐ」「ｄｏｗｎ」「ａｃｔｉｏｎ」を持ち、夫々ユーザのリモートコントローラ操作「上」「下」「左」「右」「（選択）実行」に対応している。例えば、図６でボタン１に対応している最初の「ｂｕｔｔｏｎ」要素の「ｅｖｅｎｔ」要素は、属性「ａｃｔｉｏｎ」の値（属性値）が”ｅ２”であり、ユーザが「ボタン１」を選択実行した場合、”ｅ２”に対応するイベントハンドラが実行されるスクリプトプロセッサ２０２によって実行処理されることになる。
【００７４】
図６右下部はイベントハンドラの例である。
【００７５】
各イベントハンドラは、＜ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＞タグによって宣言され、属性「ｉｄ」を持っている。「ｉｄ」の属性値は前述した「ｅｖｅｎｔ＿ｃａｌｌ」の属性「ｉｄ」と対応しており、夫々の属性値が一致した場合、リンクが張られていることを意味する。即ち、前述した「ボタン１」の選択実行時には、図６中にある、「ｉｄ」の属性値が”ｅ２”のイベントハンドラがスクリプトプロセッサ２０２によって実行処理される。
【００７６】
「ｅｖｅｎｔ＿ｈａｎｄｌｅｒ」は子要素として「ｓｃｒｉｐｔ」を持ち、開始タグ＜ｓｃｒｉｐｔ＞と終了タグ＜／ｓｃｒｉｐｔ＞に囲まれる中にスクリプトプログラムが記述される。スクリプトプログラムについては後述する。
【００７７】
イベントハンドラはメニュー内のボタンの他に以下の場所に記述することができ、夫々のタイミングで実行処理される。
【００７８】
メニューのプリプロセス（メニュー開始時に実行される）
メニューのポストプロセス（メニュー終了時に実行される）
セルのプリプロセス（セル再生開始時に実行される）
セルのポストプロセス（セル再生終了時に実行される）
【００７９】
図７（Ａ）はセルのポストプロセスの例である。ポストプロセスはセル再生の後に置かれ実行される。例えば、セル再生を繰り返したい場合、ポストプロセスに当該セルの再生を指定することで、セル先頭からの再生を繰り返すことができる。
【００８０】
図７（Ｂ）はメニューのプリプロセスおよびポストプロセスの例である。プリプロセスはメニューの開始時刻である「ｉｎ」と同時に起動され、ポストプロセスはメニューの終了時刻である「ｏｕｔ」と同時に起動される。プリプロセスは主に、変数（詳細は後述する）のイニシャライズ（初期化）などに持ちられ、ポストプロセスはメニューで一時使用した編集のクリーンナップ（後処理）などに用いられる。
【００８１】
図８に示すように、プリプロセス、ポストプロセスは夫々「ＩＤ」を持ち、ＩＤに対応するイベントハンドラが呼ばれ、その内部のスクリプトが実行処理される。
【００８２】
図９は、セル間、およびセル再生状態と停止状態間でのプリプロセス、ポストプロセスの有効、無効を示した表である。
【００８３】
セル再生状態、停止状態間での状態遷移では、セルを抜け出る時、セルに入る時、当該セルのポストプロセス、プリプロセスが夫々で有効、即ち実行処理される。
【００８４】
異なるセルへ再生が遷移する場合で、同一プログラム内でセル再生が終了し、次のセルへ再生が遷移する場合は、ポストプロセス、プリプロセスが夫々で有効である。ＧｏＵｐを使って他のセルへ一時的に移動、また、Ｒｅｓｕｍｅを使って元のセルへ戻る場合、元のセルではプリプロセス、ポストプロセス共に無効であり、遷移先のセルではプリプロセス、ポストプロセスが有効になる。また、ＪｕｍｐまたはＬｉｎｋによってセル再生途中で再生が遷移する場合、移動元のセルではポストプロセスは無効、移動先のセルではプリプロセスが有効である。
【００８５】
図１０は、イメージデータの遷移を説明する図である。
【００８６】
前述した通り、イメージデータは主映像上に合成表示される。メニューボタン映像は、主映像ではなく、イメージデータ上に描画され、イメージデータとして選択ボタンや非選択ボタンが描かれる。複数のイメージデータをセットとして持ち、複数のイメージデータから１つのイメージデータを選択描画する。
【００８７】
例えば、４つのボタンから構成されるメニューの場合は、夫々のボタンが選択状態となっているイメージデータを夫々持ち、即ち４つ持ち、また、選択実行を描いたイメージを４つのボタン夫々毎に持つ、即ち４つ持つ。合計８つのイメージデータが１つのメニューに対応する構成で、ボタンの選択状態に合わせて適切なイメージを選択表示する。
【００８８】
本例では、下記に記す８つのイメージデータ（画像）を有し、図１０に示すようにボタンの選択状態の移動、または、選択実行に応じて適切なイメージデータを選択して表示する。
【００８９】
ボタン１の選択画面
ボタン１の選択実行画面
ボタン２の選択画面
ボタン２の選択実行画面
ボタン３の選択画面
ボタン３の選択実行画面
ボタン４の選択画面
ボタン４の選択実行画面
【００９０】
メニューが表示開始された時、ボタン１がハイライト、即ち選択されていたとする、この場合、図１０の「イメージ１」が表示されていることになる。ユーザはリモートコントローラの上下左右キーまたは実行キーを使ってボタンの選択または実行を行うことができる。この場合では、右キーで「ボタン２」へ移動、下キーで「ボタン３」へ移動、実行キーで「ボタン１」の選択実行が選択できる。
【００９１】
ユーザがリモートコントローラの右キーを押した場合、「ボタン２」が選択されているイメージ２へ遷移し、リモートコントローラの下キーを押した場合は、「ボタン３」が選択されているイメージ５へ遷移する。また、実行キーを押した場合は、「ボタン１」が選択実行されているイメージ０へ遷移する。
【００９２】
個々のイメージデータは、夫々１枚のフレームとして、１つのメニューで使用する全てのイメージが順に並んだイメージユニットとしてまとめられ、ＶＯＢ内に多重化記録される。イメージユニット内でのフレームの順番がイメージ毎に与えられる番号になる。
【００９３】
図１１は、メニュー上に２つのボタンがある場合の例を示している。このメニューの場合は、４つのイメージが存在し、
ボタン１の選択画面
ボタン１の選択実行画面
ボタン２の選択画面
ボタン２の選択実行画面
夫々が、イメージ０、イメージ１、イメージ２、イメージ３に対応し、イメージユニット内でのフレーム０、フレーム１、フレーム２、フレーム３に夫々対応する。各ボタンのイベントハンドラに夫々の遷移先イメージを表示するようにスクリプトをプログラミングしておくことで、対応するイメージへの遷移が行われる。これら４つのイメージは、イメージメモリ２１２に格納され、その中から１つのイメージが選択されイメージプレーン上に描画表示される。
【００９４】
図１２は、ナビゲーションデータとイメージの関係を説明した図である。
【００９５】
まず、イメージ１が表示されている状態（ボタン２選択状態）だとする。ナビゲーションデータの中では、メニュー情報が２つのボタンを持っていて（宣言してあり）、夫々のボタンが自身のＩＤとイベントハンドラへのリンク情報を持っている。ボタン２の場合は、左キー操作と実行キー操作に対応するイベントコール（ｅｖｅｎｔ＿ｃａｌｌ）として、夫々「ｌｅｆｔ＝”ｅ３”」と「ａｃｔｉｏｎ＝”ｅ４”」を有している。
【００９６】
ユーザがリモートコントローラ上で左キーを押した場合、ｉｄ＝”ｅ３”を有するイベントハンドラが呼ばれ、内部のスクリプトが実行処理される。図１２の例では、「イメージ０」の表示を指示する「Ｈｉｇｈｌｉｇｈｔ（０）」がプログラミングされており、メニュー画面は、イメージ１からイメージ０へ表示が遷移する。
【００９７】
また、イメージ１が表示（ボタン２が選択状態）されている時に、ユーザがリモートコントローラ上で実行キーを押した場合、ｉｄ＝”ｅ４”を有するイベントハンドラが呼ばれ、内部のスクリプトが時刻処理される。図１２の例では、「イメージ３」の表示を指示する「Ｈｉｇｈｌｉｇｈｔ（３）」がプログラミングされており、メニュー画面は、イメージ１からイメージ３へ表示が遷移する。また、次行の「Ｌｉｎｋ（３）」が続けて実行され、Ｃｅｌｌ＃３の再生へ遷移する。
【００９８】
このようにメニュー構造とイベントハンドラを使って、イメージデータの表示を制御し、適切なメニュー画像を表示することが可能である。本例では、ボタンに濃淡を付けて、そのボタンの状態を識別させるに留めているが、例えば、選択状態のボタンだけ他よりも大きくしたり、特別な色を付けたり、絵柄そのものを変える、単なる矩形でなく、楕円状にするや、星状（縁取りをぎざぎざに）するなど様々なボタン画像が可能である。
【００９９】
スクリプトの詳細については後述する。
【０１００】
イベントハンドラは、前述したメニューのボタン、メニューおよびセルのプリプロセスおよびポストプロセス以外にユーザオペレーションに対応するものがある。これはタイトル再生中（正しくはセル再生中）にユーザがメニューコール（ＤＶＤで良く使われているタイトルメニューやチャプタ−メニューなどを呼び出すユーザオペレーション）を実行した時に呼び出されるイベントハンドラであり、グローバルイベントハンドラと呼ぶ。
【０１０１】
図１３は、グローバルイベントハンドラを説明する図である。
【０１０２】
リモートコントローラ上には５つの専用キー（ボタンであるが、メニュー画面上に表示される画像としてのボタンと区別するためにここではキーと呼ぶ）が儲けられている。夫々「赤」「青」「緑」「黄」「橙」と固有の色が儲けられており、赤キー、青キー、緑キー、黄キー、橙キーと夫々呼ぶ。従来のＤＶＤプレーヤの場合、タイトルメニューを呼ぶ「タイトル」キーなど個々の機能毎に専用キーが儲けられていたが、本発明では、物理的なキーと、各機能との関係は、タイトル製作者によって決定される。例えば、キー自身使わなくても（無効状態のままでも）良い。
【０１０３】
５つの専用キーは、グローバルイベントハンドラに連動しており、ユーザが何れかのキーを押すことで、対応するグローバルイベントハンドラが呼び出される。図１３の例では、「青」キーには、ｉｄ＝”ｍｅｎｕ”が設定されており、ユーザが「青」キーを選択する事で、ｉｄ＝”ｍｅｎｕ”のイベントハンドラが呼ばる。イベントハンドラでは、ＧｏＵｐ（２）がスクリプトプログラミングされおり、即ち、現時点の再生を一時中断し、プログラム＃２の再生が実行される。この時、再生を中断した場所をレジューム用の情報としてプレーヤが持つ変数に書き込まれ保持される。
【０１０４】
プログラム＃２のセル再生が実行されると、最後にセルのポストプロセスが呼び出される。図１３では、ｉｄ＝”ｐｏｓｔ”を持つイベントハンドラが呼ばれ、スクリプトプログラミングされているＲｅｓｕｍｅ（）、即ち、ＧｏＵｐによって再生が中断した場所へ戻って、ここからの再生が続行される。
【０１０５】
プログラム＃２では、メニュー構造を持ち、例えば、音声選択メニュー画面が現れ、ユーザが音声切り替え、例えば、英語から日本語に切り替え、最後にポストプロセスを介して再生の中断した元の位置に戻ることができる。
【０１０６】
（パレンタル制御）
次に、ＤＶＤで使われている一つの機能として、パレンタル制御を説明する。パレンタル制御とは、ＰＧ１８（１８禁）などと呼ばれる映画のガイドラインをＤＶＤプレーヤで実施するための機能である。映画には、暴力的なシーンや性的なシーンを含むタイトルも多くあり、これらは一般にＰＧ１８などと呼ばれているガイドラインに従って、映画館で子供の入場制限を行うものである。一方、セルスルーのＤＶＤタイトルの場合、大人が購入したＤＶＤタイトルであっても、昼間の両親の留守中にＤＶＤタイトルを見ることが容易に可能である。これらを防ぐため、予めプレーヤは設定を持っており、プレーヤの設定値とタイトルが持つガイドラインとを比較して、再生可能かを判断し、再生不可の場合は、プレーヤは再生を行わない。
【０１０７】
ＤＶＤの場合、再生を禁止する他に、再生シナリオを切り替える事も可能としている。例えば、性的または暴力的なシーンを含む映画であっても、映画の中全てがそれらのシーンで無い場合が多い、そのため、そのようなシーンを外したり、差し替えたりして再生する機能をサポートしている。
【０１０８】
また、映画の視聴制限を国や地域によって基準が異なるため、国または地域ごとに異なった設定がＤＶＤではできるようになっている。
【０１０９】
図１４はパレンタルロックの概要を説明した図である。
【０１１０】
プレーヤは、「Ｐａｒｅｎｔａｌ　Ｌｅｖｅｌ」と呼ばれる変数にプレーヤでの視聴制限情報を持つ。ナビゲーション情報は、２種類のテーブル「Ｐａｒｅｎｔａｌ　Ｌｅｖｅｌ−Ｐａｒｅｎｔａｌ　ＩＤ　Ｂｉｔｓ」、「Ｐｌａｙｂａｃｋ　Ｐｅｒｍｉｓｓｉｏｎ　Ｂｉｔｓ−Ｐｌａｙｂａｃｋ　Ｓｅｑｕｅｎｃｅ」を持っている。
【０１１１】
プレーヤが持つＰａｒｅｎｔａｌ　Ｌｅｖｅｌは、第１のテーブルによって、Ｐａｒｅｎｔａｌ　ＩＤ　Ｂｉｔｓに変換される。本例の場合は、プレーヤのＰａｒｅｎｔａｌ　Ｌｅｖｅｌが”８”であるので、図１４の第１のテーブルからＰａｒｅｎｔａｌ　ＩＤ　Ｂｉｔｓ＝”１０００　００００　００００　００００”を得ることになる。
【０１１２】
次に、第２のテーブルによって、先に得たＰａｒｅｎｔａｌ　ＩＤ　ＢｉｔｓはＰｌａｙｂａｃｋ　Ｓｅｑｕｅｎｃｅへと変換される。ここでは、Ｐａｒｅｎｔａｌ　ＩＤ　ＢｉｔｓとＰｌａｙｂａｃｋ　Ｐｅｒｍｉｓｓｉｏｎ　Ｂｉｔｓの間でＡＮＤ演算が行われ演算結果が正となるＰｌａｙｂａｃｋ　Ｓｅｑｕｅｎｃｅが１つ選択される。本例の場合は、Ｐｌａｙｂａｃｋ　Ｓｅｑｕｅｎｃｅ＝”１”が得られることになる。この値が再生するシナリオを指し示している。
【０１１３】
第１のテーブルを複数もち、プレーヤが持つ地域情報によってテーブルを選択することで、国または地域毎に異なる視聴制限に対応することが可能になる。
【０１１４】
（タイムマップ）
次に図１５を用いてタイムマップを説明する。タイムマップは、ＶＯＢ（ＭＰＥＧストリーム）にアクセスするために必要なテーブルである。ＭＰＥＧストリームは広く知られている様に、ＶＢＲ（Ｖａｒｉａｂｌｅ　Ｂｉｔ　Ｒａｔｅ）による高圧縮によって、時事刻々と単位時間辺りのデータ量が変化している。即ち、ＭＰＥＧストリームの圧縮開始から１０分間でのデータ量は５分間までのデータ量の単純に２倍とはなっていない。このため、例えば、先頭から１０分の地点へ飛び込んで再生を行おうとしても、１０分に対応するデータが何処に記録されているのかは先頭からデータを読んでいかなければならなく、つまり１０分かけてやっと目的の場所に到達できることを意味している。
【０１１５】
タイムマップはそれを解消するための手段である。図１５に示すように、ＶＯＢＵ（Ｖｉｄｅｏ　Ｏｂｊｅｃｔ　Ｕｎｉｔの略であり、ＧＯＰに相当する）と呼ばれる単位ごとに、ＶＯＢＵ内のビデオフレーム数（またはフィールド数など、時間情報であれば何でも良い）と、パック数（などのデータサイズ情報）を持つテーブルである。
【０１１６】
例えば、先頭から１０分の点へ飛び込む場合には、タイムマップで先頭のＶＯＢＵから順にビデオフレーム数を加算していき、先頭から１０分の点を含むＶＯＢＵを求める。次に当該ＶＯＢＵへアクセスするためのアドレスをタイムマップから算出する。これは、タイムマップで先頭のＶＯＢＵから順にパック数を加算していき、１０分の点を含むＶＯＢＵの直前のＶＯＢＵまで加算することで求めることができる。
【０１１７】
後述するが、各ＶＯＢは個々のファイルに記録されているため、当該ＶＯＢを含むファイルで、先頭から先に求めたアドレスまでシーク操作し、読み出しを開始することで実施される。
【０１１８】
図１６に示すように、各セル情報は、対応するＶＯＢとＶＯＢ内での開始、終了時刻情報を有し、前述したようにタイムマップを使うことで、開始、終了時刻情報から開始、終了アドレスを得ることができ、当該セルの再生をプレーヤは行うことが可能になる。
【０１１９】
また、セルの再生処理だけでなく、ユーザがタイムサーチ（時間を指定して飛び込み再生）を実施した場合などにも、タイムマップから適切なアドレス情報を計算することが可能である。
【０１２０】
（インターリーブブロック）
ＤＶＤ（ＳＤ−ＤＶＤおよびＨＤ−ＤＶＤ）では、インターリーブブロックと呼ぶ、ディスク上で複数のＶＯＢを折込記録する場合がある。一般的には、ＶＯＢデータはディスク上に、その読み出し順に連続的に記録し、ディスク上で不必要なシークが発生しないようにしている。しかしながら、ＤＶＤの場合は、図１７に示す幾つかのアプリケーションにおいて、このＶＯＢ連続記録が行えないケースが発生する。
【０１２１】
図１７に示すように、ディレクターズカットおよびマルチアングルと呼ばれている、ＤＶＤ固有のアプリケーションでは、ディスク上に全てのＶＯＢを連続的に配置することは不可能になる。図１７で、ＶＯＢ＃１が最初に再生されるＶＯＢである。ＶＯＢ＃１に続いてＶＯＢ＃２または、ＶＯＢ＃３が再生される。どちらのＶＯＢが再生されるかは、ユーザが選択したシナリオ次第である。
【０１２２】
例えば、ＶＯＢ＃２には劇場公開そのままのシーンが含まれていて、ＶＯＢ＃３には非公開のプレミアシーンが含まれているなどがある。これらは、ユーザが事前に（またはＶＯＢ＃１の再生中に）選ぶ事ができるものである。ここでは、ＶＯＢ＃２が選択されて再生されるとする。この場合、ＶＯＢ＃１とＶＯＢ＃２をディスク上に連続配置をすることで、ＶＯＢ＃１からＶＯＢ＃２へ再生が移る場合に、ディスク上でのシークは発生しない。つまり、プレーヤは連続してＶＯＢ＃１とＶＯＢ＃２のデータを読み出すことができる。即ち、ＶＯＢ＃１−ＶＯＢ＃２−ＶＯＢ＃３の順にディスク上に記録すればよいことになる。
【０１２３】
しかしながら、ユーザがＶＯＢ＃３を選択した場合に、ＶＯＢ＃１とＶＯＢ＃３の間ではディスク上でシーク処理が発生し、この結果、ディスクからのデータ供給がストップして、再生が途中でストップする可能性がある。もちろん、これを回避するために、プレーヤはトラックバッファを有しているが、トラックバッファがシーク中のデータ供給を補間できる時間は限られており、ＶＯＢ＃２全てを飛ばしてＶＯＢ＃３へたどり着くには不十分である。
【０１２４】
逆に、シークによってジャンプする距離（時間）が十分に短い場合は、トラックバッファによって十分に補間が効く。そこで、ＤＶＤの場合、図１８に示すように、二つ（またはそれ以上）のＶＯＢを幾つかのブロックに分割して、互いに織り込ませてディスク上に記録するインターリーブ記録を行い、この問題を解決している。
【０１２５】
図１９は、上述したインターリーブブロックとトラックバッファ２１１の関係を説明する図である。図上段に示すように、トラックバッファ２１１は、ディスク（ドライブ）とデコーダの間に位置し、ディスク（ドライブ）から入力レートＶｒでデータを受け取り、出力レートＶｏでデコーダへデータを送り出す。この時、ＶｒとＶｏに若干の差を設けることで、ディスクからデータを読み出している際、トラックバッファへは常にデータが蓄積され続けていく。図１９下段は、時間軸上でのトラックバッファのデータ蓄積量の遷移を示した図である。ＶＯＢ＃２先頭のＩＬＶＵ＃１を読み出している間、トラックバッファ２１１内は、ビットレートＶｒ−Ｖｏでデータが蓄積されていく。ＩＬＶＵ＃１を読み終えた後、ディスク上でのシークが発生し、次のデータ、ＶＯＢ＃２のＩＬＶＵ＃２へシークしている間は、トラックバッファ２１１へのデータ入力が止まるため、ビットレート−Ｖｏでトラックバッファ２１１内のデータは消費されていく。
【０１２６】
シークに要する時間が、蓄積されていたデータ全ての消費に要する時間よりも短ければ、インターリーブブロック上でのＶＯＢ＃２の再生は停止することなく連続再生が可能になる。また、同様にＶＯＢ＃３も可能になる。
【０１２７】
トラックバッファを無限に大きく取れるのであれば、インターリーブブロックを限りなく大きく、即ち、ＶＯＢを分割することなく、１つのＶＯＢをそのまま記録することが可能であるが、非現実的な話であり、ＶＯＢはトラックバッファによるデータ供給が保証される範囲まで細かく分割される必要がある。
【０１２８】
（変数＆スクリプト）
図２で説明をした通り、本実施例のプレーヤはスクリプトプロセッサを有している。スクリプトとは一つのプログラミング言語であって、インターネット上で使われているＪａｖａ（登録商標）　Ｓｃｒｉｐｔなどがその一つである。ＨＤ−ＤＶＤでは、タイトルの再生制御、特にメニューのようなユーザからのリクエストを受けた際の処理を記述するためにスクリプトを使用している。また、スクリプトと同様に幾つかの変数も用意してあり、スクリプトプログラムが自由に使えたり、また、プレーヤの設定値、例えば、再生中のタイトル番号などをスクリプトから参照、または、条件判断処理などに使うことが可能である。
【０１２９】
本実施例では、一般変数とシステム変数の２種類の変数を用意している。
【０１３０】
一般変数は、１６個用意されており、これはスクリプトが自由に使う事ができる。これらの値には、接頭辞「ＧＶ」と、各変数の番号「０」から「１５」を付けることで使用することができる。例えば、一般変数０は「ＧＶ０」のようになる。
【０１３１】
システム変数は、３２個用意されており、これもスクリプトから参照することが可能であるが、プレーヤの設定値を得るためのものであり、スクリプトから値を代入することはできない。これらの値には、接頭辞「ＳＶ」と、各変数の番号「０」から「３１」を付けることで使用することができる。例えば、システム変数０は「ＳＶ０」のようになる。
【０１３２】
図２０はシステム変数の一覧をまとめたものである。順に説明をする。
【０１３３】
ＳＶ０　　　：言語コード
ＳＶ１　　　：音声ストリーム番号
ＳＶ２　　　：字幕ストリーム番号
ＳＶ３　　　：アングル番号
ＳＶ４　　　：タイトル番号
ＳＶ５　　　：チャプタ番号
ＳＶ６　　　：プログラム番号
ＳＶ７　　　：セル番号
ＳＶ８　　　：選択状態のハイライトボタン番号
ＳＶ９　　　：ナビゲーションタイマー
ＳＶ１０　　：予備
ＳＶ１１　　：カラオケ用ミキシングモード
ＳＶ１２　　：パレンタル用国情報
ＳＶ１３　　：パレンタルレベル
ＳＶ１４　　：プレーヤ設定値（ビデオ）
ＳＶ１５　　：プレーヤ設定値（オーディオ）
ＳＶ１６　　：音声ストリーム用言語コード
ＳＶ１７　　：音声ストリーム用言語コード（拡張）
ＳＶ１８　　：字幕ストリーム用言語コード
ＳＶ１９　　：字幕ストリーム用言語コード（拡張）
ＳＶ２０　　：プレーヤリージョンコード
ＳＶ２１　　：予備
ＳＶ２２　　：予備
ＳＶ２３　　：再生状態
ＳＶ２４　　：レジューム情報１（プログラム番号）
ＳＶ２５　　：レジューム情報１（セル番号）
ＳＶ２６　　：レジューム情報１（時刻（上位ビット））
ＳＶ２７　　：レジューム情報１（時刻（下位ビット））
ＳＶ２８　　：レジューム情報２（プログラム番号）
ＳＶ２９　　：レジューム情報２（セル番号）
ＳＶ３０　　：レジューム情報２（時刻（上位ビット））
ＳＶ３１　　：レジューム情報２（時刻（下位ビット））
【０１３４】
次にスクリプトについて説明をする。
【０１３５】
スクリプトは、＜ｓｃｒｉｐｔ＞タグと＜／ｓｃｒｉｐｔ＞タグに囲まれた中に記述する。記述方法はＪａｖａ（登録商標）　Ｓｃｒｉｐｔなどと同じである。以下に詳細を記す。
【０１３６】
最初に四則演算から説明をする。他のスクリプト言語と同様に、代入「＝」、加算「＋」、減算「−」、乗算「＊」、除算「／」、剰余計算「％」が可能である。例えば、
【０１３７】
ＧＶ３　＝　ＧＶ３　＋　１００；
ＧＶ３に１００を加算し、ＧＶ３に代入する。
【０１３８】
ＧＶ２　＝　ＧＶ２　％　５；
ＧＶ２を５で除算し、その余りをＧＶ２へ代入する。
【０１３９】
ＧＶ１　＝　ＧＶ１　／　ＧＶ２；
ＧＶ１をＧＶ２で除算し、ＧＶ１へその商を代入する。
【０１４０】
スクリプトは、Ｂｏｏｌｅａｎ演算のＡＮＤ「＆」、ＯＲ「｜」、Ｅｘｃｌｕｓｉｖｅ　ＯＲ「＾」の計算が可能である。例えば、
ＧＶ１０　＝　ＧＶ９　＆　ＧＶ３；
ＧＶ９とＧＶ３のＡＮＤを求め、ＧＶ１０に代入する。
【０１４１】
また、スクリプトは、次の例のようにして乱数「ｒａｎｄｏｍ」を発生させることができる。
ＧＶ１　＝　ｒａｎｄｏｍ（）；
【０１４２】
スクリプトプログラミングの中の処理を条件によって変えることも可能である。一般的に良く使用される、条件式「ｉｆ〜ｔｈｅｎ〜ｅｌｓｅ」、処理を停止する「ｂｒｅａｋ」、プログラム中をジャンプする「ｇｏｔｏ」などが使用できる。例えば、
2004007518.tif 000003
【０１４３】
また、
2004007518.tif 000004
などがスクリプトによってプログラミング可能である。
【０１４４】
また、本実施例のスクリプトでは、上述した従来からある処理演算の他に、ＤＶＤ再生を制御する機能をサポートしている。例えば、他のプログラムやセルの再生を開始するＪｕｍｐやＬｉｎｋがある。
【０１４５】
Ｊｕｍｐは、プログラムを超えて他のプログラムやセルの再生に移動することができる。スクリプト中では、「Ｊｕｍｐ」の後に飛び先のプログラム番号とセル番号を以下のように記述する。
Ｊｕｍｐ（プログラム番号、セル番号）；
【０１４６】
Ｌｉｎｋは、現在再生中のプログラム内で他のセルの再生に移動することができる。スクリプト中では、「Ｌｉｎｋ」の後に飛び先のセル番号を以下のように記述する。
Ｌｉｎｋ（セル番号）；
【０１４７】
Ｊｕｍｐ、Ｌｉｎｋの他に、ＧｏＵｐによって他のプログラム先頭セルへ移動することも可能である。ＧｏＵｐは、その実行直前までに再生していた、プログラム、セル、時刻情報をシステム変数（ＳＶ）に保持し、Ｒｅｓｕｍｅを実行することによって、中断した時点からの再生を再開することができる。スクリプト中では夫々以下のように記述する。
ＧｏＵｐ（１５）；
Ｒｅｓｕｍｅ（）；
【０１４８】
ＧｏＵｐの直前まで再生していたプログラム、セル、時刻の夫々の情報は、前述したシステム変数のＳＶ２４からＳＶ２７に記録される。プレーヤは、スクリプトによってＲｅｓｕｍｅが実行された時に、ＳＶ２４からＳＶ２７の値を用いて中断地点まで戻って再生を再開する。この時、時刻情報は、タイムマップによって、適切なアドレス情報に変換され、ＶＯＢ内の適切な位置からの再生が可能である。
【０１４９】
ＧｏＵｐが二度行われた場合、即ち、最初のＧｏＵｐの後に、Ｒｅｓｕｍｅが実行されないまま次のＧｏＵｐが実行された場合は、ＳＶ２４からＳＶ２７に記録されているレジューム情報は、ＳＶ２８からＳＶ３１の第２のレジューム情報へ待避させられる。この後、Ｒｅｓｕｍｅが実行された場合は、ＳＶ２４からＳＶ２７に記録されているＲｅｓｕｍｅ情報を使ってプレーヤはＲｅｓｕｍｅ処理を行い、同時にＳＶ２８からＳＶ３１へ待避させてあったＲｅｓｕｍｅ情報はＳＶ２４からＳＶ２７へ戻される。
【０１５０】
スクリプトでは、再生実行の他に、再生を一時停止させる「Ｓｔｉｌｌ」命令が使用できる。スクリプト中では、Ｓｔｉｌｌの後に停止時間を秒で指定するだけである。
Ｓｔｉｌｌ（１０）；
【０１５１】
また、スクリプトでは、ユーザ操作（ユーザオペレーション）のコントロール（制御）も可能である。例えば、早送り再生などの機能をタイトルの一定期間中禁止するなどである。映画タイトルの中では、著作権に関する警告などコンテンツプロバイダが意図的に特再、特に早送り再生を禁止したい場面などがある。
【０１５２】
図２１はユーザ操作の一覧である。
【０１５３】
Ｔｉｍｅ＿Ｐｌａｙ（）
タイトル、チャプタ−、時刻を指定して再生
【０１５４】
Ｔｉｍｅ＿Ｓｅａｒｃｈ（）
同一タイトル内で時刻を指定して再生
【０１５５】
Ｃｈａｐｔｅｒ＿Ｐｌａｙ（）
同一タイトル内でチャプタ−を指定して再生
【０１５６】
Ｔｉｔｌｅ＿Ｐｌａｙ（）
タイトルを指定して再生
【０１５７】
Ｓｔｏｐ（）
再生停止
【０１５８】
ＰｒｅｖＣｈａｐｔｅｒ＿Ｓｅａｒｃｈ（）
現在再生中のチャプターの一つ前のチャプタ−を再生
【０１５９】
ＮｅｘｔＣｈａｐｔｅｒ＿Ｓｅａｒｃｈ（）
現在再生中のチャプタ−の次のチャプタ−を再生
【０１６０】
Ｆｏｒｗａｒｄ＿Ｓｃａｎ（）
早送り再生
【０１６１】
Ｂａｃｋｗａｒｄ＿Ｓｃａｎ（）
巻き戻し再生
【０１６２】
Ｍｅｎｕ＿Ｃａｌｌ（０）
「赤」ボタンによるグローバルイベントハンドラの起動
【０１６３】
Ｍｅｎｕ＿Ｃａｌｌ（１）
「緑」ボタンによるグローバルイベントハンドラの起動
【０１６４】
Ｍｅｎｕ＿Ｃａｌｌ（２）
「青」ボタンによるグローバルイベントハンドラの起動
【０１６５】
Ｍｅｎｕ＿Ｃａｌｌ（３）
「橙」ボタンによるグローバルイベントハンドラの起動
【０１６６】
Ｍｅｎｕ＿Ｃａｌｌ（４）
「黄」ボタンによるグローバルイベントハンドラの起動
【０１６７】
Ｕｐｐｅｒ＿Ｂｕｔｔｏｎ＿Ｓｅｌｅｃｔ（）
リモートコントローラの「上」キー
【０１６８】
Ｌｏｗｅｒ＿Ｂｕｔｔｏｎ＿Ｓｅｌｅｃｔ（）
リモートコントローラの「下」キー
【０１６９】
Ｌｅｆｔ＿Ｂｕｔｔｏｎ＿Ｓｅｌｅｃｔ（）
リモートコントローラの「左」キー
【０１７０】
Ｒｉｇｈｔ＿Ｂｕｔｔｏｎ＿Ｓｅｌｅｃｔ（）
リモートコントローラの「右」キー
【０１７１】
Ｂｕｔｔｏｎ＿Ａｃｔｉｖａｔｅ（）
リモートコントローラの「実行」キー
【０１７２】
Ｂｕｔｔｏｎ＿ａｎｄ＿Ａｃｔｉｖａｔｅ（）
リモートコントローラからのボタン番号の直接入力と「実行」キー
【０１７３】
Ｓｔｉｌｌ＿Ｏｆｆ（）
スクリプトによる一時停止（Ｓｔｉｌｌ）の解除
【０１７４】
Ｐａｕｓｅ＿Ｏｎ（）
一時停止
【０１７５】
Ｐａｕｓｅ＿Ｏｆｆ（）
一時停止の解除
【０１７６】
Ｍｅｎｕ＿Ｌａｎｇｕａｇｅ＿Ｓｅｌｅｃｔ（）
メニュー言語選択
【０１７７】
Ａｕｄｉｏ＿Ｓｔｒｅａｍ＿Ｃｈａｎｇｅ（）
音声切り替え
【０１７８】
Ｓｕｂｔｉｔｌｅ＿Ｓｔｒｅａｍ＿Ｃｈａｎｇｅ（）
字幕切り替え
【０１７９】
Ａｎｇｌｅ＿Ｃｈａｎｇｅ（）
アングル切り替え
【０１８０】
Ｐａｒｅｎｔａｌ＿Ｌｅｖｅｌ＿Ｓｅｌｅｃｔ（）
パレンタルレベル選択
【０１８１】
Ｐａｒｅｎｔａｌ＿Ｃｏｕｎｔｅｒｙ＿Ｓｅｌｅｃｔ（）
パレンタル、適応国（地域）の選択
【０１８２】
Ｋａｒａｏｋｅ＿Ａｕｄｉｏ＿Ｐｒｅｓｅｎｔａｔｉｏｎ＿Ｍｏｄｅ＿Ｃｈａｎｇｅ
（）
カラオケ用音声モードの切り替え
【０１８３】
Ｖｉｄｅｏ＿Ｐｒｅｓｅｎｔａｔｉｏｎ＿Ｍｏｄｅ＿Ｃｈａｎｇｅ（）
ビデオ再生信号（ワイド、ノーマル、Ｐａｎ−ｓｃａｎ、レターボックス）の切り替え
【０１８４】
上述したユーザオペレーション（ＵＯＰ）を次の関数によって、無効化、有効化することが夫々できる。引数で与えられる「番号」は図２１に記した番号が対応している。
ＩｎｖａｌｉｄａｔｅＵＯＰ（番号）；
ＶａｌｉｄａｔｅＵＯＰ（番号）；
【０１８５】
また、引数を「０ｘｆｆ」とすることで、全てのＵＯＰを対象として、一括して無効化、有効化することも可能である。
ＩｎｖａｌｉｄａｔｅＵＯＰ（０ｘｆｆ）；
ＶａｌｉｄａｔｅＵＯＰ（０ｘｆｆ）；
【０１８６】
その他、スクリプトの機能としては、１６個ある一般変数を一括して初期化する、
Ｉｎｉｔｉａｌｉｚｅ（初期化数）；
【０１８７】
ハイライト表示するボタンに合わせたイメージを表示命令する、
Ｈｉｇｈｌｉｇｈｔ（ボタン番号）；
【０１８８】
音声ストリーム、字幕ストリームを夫々切り替える、
ＣｈａｎｇｅＡｕｄｉｏ（音声ストリーム番号）；
ＣｈａｎｇｅＳｕｂｔｉｔｌｅ（字幕ストリーム番号）；
などがある。
【０１８９】
（データ構造）
図２２および図２３を用いてファイル、データ構造を説明する。
【０１９０】
図２２は、ディスク上のディレクトリ、ファイル構造を示している。実施例でＳＤ−ＤＶＤの例を述べたように、ＨＤ−ＤＶＤでもファイルシステムを通してディスク上のデータにアクセスすることが可能である。
【０１９１】
ルートディレクトリ「ＲＯＯＴ」の直下に２つの専用ディレクトリ「ＶＯＢＦＩＬＥＳ」および「ＮＡＶＦＩＬＥＳ」が置かれている。「ＶＯＢＦＩＬＥＳ」はＶＯＢデータを記録したファイルを置く専用のディレクトリであって、この中には一つ以上のＶＯＢファイルが記録されている。ＶＯＢは夫々個々のファイルに記録されており、ナビゲーションデータでは、ファイル名を指定するだけでＶＯＢを見つけ出すことが可能である。
【０１９２】
「ＮＡＶＦＩＬＥＳ」はナビゲーションデータ専用のディレクトリであって、中には３つの専用ファイル「ＶＯＬＵＭＥ．ＩＦＯ」「ＰＲＯＧＲＡＭＳ．ＩＦＯ」「ＳＴＲＥＡＭ．ＩＦＯ」が置かれている。
【０１９３】
「ＶＯＬＵＭＥ．ＩＦＯ」ファイルはディスク全体を管理するボリューム情報が記録され、「ＰＲＯＧＲＡＭＳ．ＩＦＯ」にはディスク内のプログラムおよびセルの情報が記録され、「ＳＴＲＥＡＭ．ＩＦＯ」には個々のＶＯＢに関する属性情報が記録されている。ファイルの詳細は後述する。
【０１９４】
図２３はナビゲーションデータ構造全体を示した図である。
【０１９５】
ナビゲーションデータは前述したファイル同様に、Ｖｏｌｕｍｅ、Ｐｒｏｇｒａｍ　Ｌｉｓｔ、Ｓｔｒｅａｍ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｌｉｓｔがある。
【０１９６】
Ｖｏｌｕｍｅには、Ｃｏｎｔｅｎｔｓ、Ｅｖｅｎｔ　Ｃａｌｌ　Ｌｉｓｔ、Ｅｖｅｎｔ　Ｈａｎｄｌｅｒ　Ｌｉｓｔが夫々置かれ、Ｐｒｏｇｒａｍ　Ｌｉｓｔは、複数のＰｒｏｇｒａｍからなるリストであり、個々のＰｒｏｇｒａｍはＣｅｌｌ　Ｌｉｓｔを持つ。Ｃｅｌｌ　Ｌｉｓｔの中は、一つのＣｅｌｌまたは複数の並列関係（マルチアングルのように択一再生される関係）にあるＣｅｌｌが時系列に並べられ、また、Ｃｅｌｌ　Ｌｉｓｔは、Ｃｅｌｌ内でのＭｅｎｕと、ＣｅｌｌまたはＭｅｎｕから呼ばれるＥｖｅｎｔ　ＨａｎｄｌｅｒのリストＥｖｅｎｔ　Ｈａｎｄｌｅｒ　Ｌｉｓｔを持っている。Ｓｔｒｅａｍ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｌｉｓｔには、個々のＶＯＢに対応するＳｔｒｅａｍ　Ｉｎｆｏｒｍａｔｉｏｎが記述されている。
【０１９７】
図２４はボリューム情報（Ｖｏｌｕｍｅ）の詳細を示した図である。図に示す通り、ナビゲーションデータはＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）によって記述されている。
【０１９８】
ボリューム情報は、タグ＜ｖｏｌｕｍｅ＞で囲まれており、上述した通り、子要素として、コンテンツ情報（ｃｏｎｔｅｎｔｓ）、イベントコールリスト（ｅｖｅｎｔ＿ｃａｌｌ＿ｌｉｓｔ）、イベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）を有している。また、属性として、バージョン情報（ｖｅｒｓｉｏｎ）を有している。
【０１９９】
コンテンツ情報（ｃｏｎｔｅｎｔｓ）は、著作権情報（ｃｏｐｙｒｉｇｈｔ）、タイトル名（ｔｉｔｌｅ）、サブタイトル名（ｓｕｂ−ｔｉｔｌｅ）を子要素として持つ。
【０２００】
イベントコールリスト（ｅｖｅｎｔ＿ｃａｌｌ＿ｌｉｓｔ）は、図１３で説明したリモートコントローラ上の５つの色付きキー（ボタン）に夫々対応するイベントハンドラを起動するための宣言（ｅｖｅｎｔ＿ｃａｌｌ）を子要素として持っている。イベントハンドラへの宣言（ｅｖｅｎｔ＿ｃａｌｌ）は子要素を含まず、属性として、色付キー対応情報（ｂｕｔｔｏｎ）、イベントハンドラのＩＤ（ｉｄ）を持っている。
【０２０１】
イベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）は子要素としてイベントハンドラ（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ）を持つ。詳細は後述する。
【０２０２】
図２５はプログラムリスト情報（Ｐｒｏｇｒａｍ　Ｌｉｓｔ）の詳細を示した図である。図に示す通り、プログラムリスト情報は（ｐｒｏｇｒａｍ＿ｌｉｓｔ）は、子要素として、複数のプログラム情報（ｐｒｏｇｒａｍ）を持つが、属性は持たない。
【０２０３】
プログラム情報（ｐｒｏｇｒａｍ）は子要素として、セルリスト（ｃｅｌｌ＿ｌｉｓｔ）とオプションとしてパレンタルＩＤビットテーブル（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ＿ｔａｂｌｅ）を持ち、属性として、タイトル番号（ｔｉｔｌｅ）、エントリー情報（ｅｎｔｒｙ）、ファーストプレイ情報（ｆｉｒｓｔ＿ｐｌａｙ）を持っている。
【０２０４】
タイトル番号（ｔｉｔｌｅ）は、当該プログラムの再生中にプレーヤ表面パネルやＴＶ画面上にＯＳＤ表示するタイトル番号である。エントリー情報（ｅｎｔｒｙ）は、タイトル内に複数のプログラムが存在する（複数のプログラムが同一タイトル番号を有する）場合に、先頭となるプログラム（ｐｒｏｇｒａｍ）を識別するのに用いる。これは主に、タイトルサーチ（Ｔｉｔｌｅ＿Ｓｅａｒｃｈ（））などのＵＯＰに対して先頭となるプログラムを与える役割を果たす。ファーストプレイ情報（ｆｉｒｓｔ＿ｐｌａｙ）は、ディスクがプレーヤに挿入された場合に、自動再生開始するプログラムを識別するための情報である。
【０２０５】
パレンタルＩＤビットテーブル（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ＿ｔａｂｌｅ）は、子要素として、パレンタルレベル情報（ｐａｒｅｎｔａｌ＿ｌｅｖｅｌ）を持ち、属性は持たない。パレンタルレベル情報（ｐａｒｅｎｔａｌ＿ｌｅｖｅｌ）は２つの属性、レベル（ｌｅｖｅｌ）とパレンタルＩＤビット（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ）を持つ。これらは、図１４で説明した第１のテーブルの役割を果たす。
【０２０６】
セルリスト（ｃｅｌｌ＿ｌｉｓｔ）は、再生許可ビット（ｐｌａｙｂａｃｋ＿ｐｅｒｍｉｓｓｉｏｎ＿ｂｉｔｓ）を属性として持つことがある。これは同一プログラム情報（ｐｒｏｇｒａｍ）内にパレンタルＩＤビットテーブル（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ＿ｔａｂｌｅ）が存在する場合に必ず存在し、逆にパレンタルＩＤビットテーブル（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ＿ｔａｂｌｅ）が存在しない場合は必ず存在しない。この再生許可ビット（ｐｌａｙｂａｃｋ＿ｐｅｒｍｉｓｓｉｏｎ＿ｂｉｔｓ）は、図１４で説明した第２のテーブルの役割を果たしている。
【０２０７】
また、プログラム内のセルリストは（ｃｅｌｌ＿ｌｉｓｔ）原則一つであるが、パレンタルＩＤビットテーブル（ｐａｒｅｎｔａｌ＿ｉｄ＿ｂｉｔｓ＿ｔａｂｌｅ）が存在する場合に限り、択一的に再生されるセルリスト（ｃｅｌｌ＿ｌｉｓｔ）を複数記述することが可能である。
【０２０８】
図２６および図２７は、セルリスト（ｃｅｌｌ＿ｌｉｓｔ）の詳細を示した図である。セルリスト（ｃｅｌｌ＿ｌｉｓｔ）は子要素として、ブロック（ｂｌｏｃｋ）を一つまたは複数持つ。ブロックの順番がプログラム内での再生順序になる。ブロックは属性としてタイプを持ち、属性値として「Ｎ．Ａ．」「ｒａｎｄｏｍ」「ｓｈｕｆｆｌｅ」「ａｎｇｌｅ」の何れかを取る。夫々は以下の意味を有している。
【０２０９】
Ｎ．Ａ．
当該ブロックは１つのセルを有している。
【０２１０】
ｒａｎｄｏｍ
当該ブロックは複数のセルを有していて、複数のセルはランダムに選択され、再生される。同じくブロック要素の中にある属性、回数（ｃｏｕｎｔｓ）だけセルの選択再生が行われる。
【０２１１】
ｓｈｕｆｆｌｅ
当該ブロックは複数のセルを有していて、複数のセルはシャッフルされ、再生される。同じくブロック要素の中にある属性、回数（ｃｏｕｎｔｓ）だけセルの選択再生が行われる。
【０２１２】
ａｎｇｌｅ
当該ブロックは複数のセルを有していて、複数のセルは個々のアングルに対応し、ユーザはアングルを選択して再生ができる。また、再生中であっても他のアングルへ切り替えが可能である。
【０２１３】
個々のセルはタグ＜ｃｅｌｌ＞によって宣言される。図５０を併せて参照すると、セルは子要素として、メニューリスト（ｍｅｎｕ＿ｌｉｓｔ）を持つことができ、属性として、チャプター番号（ｃｈａｐｔｅｒ）、参照先ストリーム（ｓｔｒｅａｍ）、開始時刻（ｉｎ）、終了時刻（ｏｕｔ）、プリプロセス、ポストプロセスを持つ。
【０２１４】
チャプター番号（ｃｈａｐｔｅｒ）は、タイトル番号同様に、当該セルの再生中にプレーヤ表面パネルやＴＶ画面上にＯＳＤ表示するチャプター番号であり、参照先ストリーム（ｓｔｒｅａｍ）は、ストリーム情報（ｓｔｒｅａｍ＿ｉｎｆｏｒｍａｔｉｏｎ）へのリンク情報である。また、開始時刻（ｉｎ）、終了時刻（ｏｕｔ）はセルが参照するＶＯＢ上での開始、終了時刻（相対時刻）である。
【０２１５】
プリプロセスは、イベントハンドラへのリンク情報である。図７および図８で説明したセルのプリプロセスを呼び出す宣言である。また、ポストプロセスは、イベントハンドラへのリンク情報である。図７および図８で説明したセルのポストプロセスを呼び出す宣言である。
【０２１６】
セルは、子要素としてメニューリスト（ｍｅｎｕ＿ｌｉｓｔ）を持つ。詳細は後述する。
【０２１７】
また、セルに続いてイベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）がブロック内に記述される。詳細は後述する。
【０２１８】
図２８は、メニューリスト（ｍｅｎｕ＿ｌｉｓｔ）の詳細を説明した図である。メニューリスト（ｍｅｎｕ＿ｌｉｓｔ）は子要素として複数のメニューを持つリストである。メニューは、子要素として一つまたは複数のボタンを持ち、属性として、開始時刻（ｉｎ）、終了時刻（ｏｕｔ）とメニュー起動時のプリプロセスへのリンク情報を持つ。個々の詳細は、前述したセルと同様である。
【０２１９】
ボタンは、属性として、そのボタンのＩＤ（ｉｄ）を持ち、他のボタンとの識別を行う。また、ボタンは、子要素として、イベントコール宣言（ｅｖｅｎｔ＿ｃａｌｌ）を一つ持ち、イベントコール宣言（ｅｖｅｎｔ＿ｃａｌｌ）は、その属性として以下を持つ。
【０２２０】
ｄｏｗｎ
ユーザがリモートコントローラ上の「下」キー（ボタン）を押した時のイベントハンドラへのリンク
【０２２１】
ｕｐ
ユーザがリモートコントローラ上の「上」キー（ボタン）を押した時のイベントハンドラへのリンク
【０２２２】
ｌｅｆｔ
ユーザがリモートコントローラ上の「左」キー（ボタン）を押した時のイベントハンドラへのリンク
【０２２３】
ｒｉｇｈｔ
ユーザがリモートコントローラ上の「右」キー（ボタン）を押した時のイベントハンドラへのリンク
【０２２４】
ａｃｔｉｏｎ
ユーザがリモートコントローラ上の「実行」キー（ボタン）を押した時のイベントハンドラへのリンク
【０２２５】
図２９は、イベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）の詳細を説明する図である。イベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）は、ボリューム情報（ｖｏｌｕｍｅ）内、またはブロック内に存在し、夫々その情報ブロック内で閉じた関係となっている。
【０２２６】
つまり、ボリューム情報（ｖｏｌｕｍｅ）内のイベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）は、ボリューム情報（ｖｏｌｕｍｅ）内のイベントコールリスト（ｅｖｅｎｔ＿ｃａｌｌ＿ｌｉｓｔ）からのみ参照され、ブロック内のイベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）は、同じブロック内のセルまたはメニューからのみ参照される。
【０２２７】
イベントハンドラリスト（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ＿ｌｉｓｔ）は、その子要素として、一つまたは複数のイベントハンドラ（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ）を持つ。イベントハンドラ（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ）は、子要素として、スクリプトを持ち、この中にスクリプトプログラムが記述される。また、イベントハンドラ（ｅｖｅｎｔ＿ｈａｎｄｌｅｒ）は、ＩＤ（ｉｄ）を持ち、この値によってイベントコール宣言（ｅｖｅｎｔ＿ｃａｌｌ）との参照関係が定義される。
【０２２８】
図３０は、ストリーム情報テーブル（ｓｔｒｅａｍ＿ｉｎｆｏｒｍａｔｉｏｎ＿ｔａｂｌｅ）の子要素であるストリーム情報（ｓｔｒｅａｍ＿ｉｎｆｏｒｍａｔｉｏｎ）の説明図である。
【０２２９】
ストリーム情報（ｓｔｒｅａｍ＿ｉｎｆｏｒｍａｔｉｏｎ）は子要素として、一般情報（ｇｅｎｅｒａｌ＿ｉｎｆｏｒｍａｔｉｏｎ）、属性情報（ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）、シームレス情報（ｓｅａｍｌｅｓｓ＿ｉｎｆｏｒｍａｔｉｏｎ）、タイムマップ（ｔｉｍｅ＿ｍａｐ）を持っている。
【０２３０】
一般情報（ｇｅｎｅｒａｌ＿ｉｎｆｏｒｍａｔｉｏｎ）は、子要素をもたず、属性として、ＩＤ（ｉｄ）、ファイル名（ｆｉｌｅ）、シームレス接続情報（ｓｅａｍｌｅｓｓ＿ｆｒｏｍ）を持っている。ＩＤ（ｉｄ）はストリーム情報テーブルで固有の値を持ち、セルからのリンク利用している。ファイル名（ｆｉｌｅ）は、前述したＶＯＢＦＩＬＥＳ下に置かれているストリームのファイル名であり、ファイルとの参照に用いている。シームレス接続情報（ｓｅａｍｌｅｓｓ＿ｆｏｒｍ）は、当該ＶＯＢが他のＶＯＢとシームレス接続する場合に、どのＶＯＢから接続をするかを示す情報である。
【０２３１】
属性情報（ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）は、属性を持たず、ビデオ属性情報（ｖｉｄｅｏ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）、音声属性情報（ａｕｄｉｏ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）、字幕属性情報（ｓｕｂｔｉｔｌｅ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）を持つ。音声属性情報（ａｕｄｉｏ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）と字幕属性情報（ｓｕｂｔｉｔｌｅ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）は対象のＶＯＢが含んでいる夫々のストリーム数だけ属性情報を有している。
【０２３２】
ビデオ属性情報（ｖｉｄｅｏ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）は、コーディング、ＭＰＥＧ２の場合のプロファイルおよびレベル、フレームレート、クローズドキャプション情報１（ｌｉｎｅ＿２１＿ｓｗｉｔｃｈ＿１）、クローズドキャプション情報２（ｌｉｎｅ＿２１＿ｓｗｉｔｃｈ＿２）、解像度を子要素として有している。
【０２３３】
音声属性情報（ａｕｄｉｏ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）は、ストリームＩＤ（ｉｄ）、コーディング、サンプリング周波数（ｓａｍｐｌｉｎｇ）、音声チャンネル数（ｎｕｍｂｅｒ＿ｏｆ＿ａｕｄｉｏ＿ｃｈａｎｎｅｌｓ）、言語情報（ｌａｎｇｕａｇｅ）を子要素として有しており、字幕属性情報（ｓｕｂｔｉｔｌｅ＿ａｔｔｒｉｂｕｔｅ＿ｉｎｆｏｒｍａｔｉｏｎ）は、言語情報（ｌａｎｇｕａｇｅ）を子要素として有している。
【０２３４】
シームレス情報（ｓｅａｍｌｅｓｓ＿ｉｎｆｏｒｍａｔｉｏｎ）は、前述したシームレス接続情報（ｓｅａｍｌｅｓｓ＿ｆｒｏｍ）を有する場合にのみ存在し、ストリーム中に存在する音声の不連続点に関する情報であるオーディオギャップ情報（ａｕｄｉｏ＿ｇａｐ）を子要素として有している。オーディオギャップ情報（ａｕｄｉｏ＿ｇａｐ）は、対象となるオーディオストリームのストリームＩＤ（ｉｄ）と、当該オーディオストリームでの音声不連続点であるオーディオギャップ開始時刻（ｓｔｏｐ＿ｐｔｍ１／ｓｔｏｐ＿ｐｔｍ２）とその長さであるオーディオギャップ長（ｇａｐ＿ｌｅｎｇｔｈ１／ｇａｐ＿ｌｅｎｇｔｈ２）を属性として有している。
【０２３５】
オーディオストリーム中では最大２つのオーディオギャップを持つことができ、夫々順にオーディオギャップ１、オーディオギャップ２と呼ぶ。これにあわせて、オーディオギャップ開始時刻（ｓｔｏｐ＿ｐｔｍ１／ｓｔｏｐ＿ｐｔｍ２）および、オーディオギャップ長（ｇａｐ＿ｌｅｎｇｔｈ１／ｇａｐ＿ｌｅｎｇｔｈ２）は夫々に対応する２つの情報を属性として持つ。
【０２３６】
タイムマップ（ｔｉｍｅ＿ｍａｐ）は、属性を持たず、時刻情報（ｓｔｒｅａｍ＿ｐｔｍｓ）とＶＯＢＵエントリーリスト（ｖｏｂｕ＿ｅｎｔｒｙ＿ｌｉｓｔ）を子要素として持つ。時刻情報（ｓｔｒｅａｍ＿ｐｔｍｓ）は当該ＶＯＢの開始時刻（ｉｎ）および終了時刻（ｏｕｔ）を属性としてもつ。時刻情報は、ＭＰＥＧで規定されている２７ＭＨｚのクロックによって記される時刻であって、ストリーム中のタイムスタンプとして記される値である。
【０２３７】
ＶＯＢＵエントリーリスト（ｖｏｂｕ＿ｅｎｔｒｙ＿ｌｉｓｔ）は、当該ＶＯＢ内の個々のＶＯＢＵに対応するＶＯＢＵエントリー（ｖｏｂｕ＿ｅｎｔｒｙ）を子要素としてストリーム内での記録順と同じ順で持つ。
【０２３８】
ＶＯＢＵエントリー（ｖｏｂｕ＿ｅｎｔｒｙ）は、当該ＶＯＢＵの時間長（ｄｕｒａｔｉｏｎ）、サイズ、先頭Ｉピクチャの読み込みに必要なデータサイズ（ｆｉｒｓｔ）、二つ目のリファレンスピクチャ（ＩピクチャまたはＰピクチャ）の読み込みに必要なデータサイズ（ｓｅｃｏｎｄ）、三つ目のリファレンスピクチャ（ＩピクチャまたはＰピクチャ）の読み込みに必要なデータサイズ（ｔｈｉｒｄ）を夫々属性として持っている。
【０２３９】
（動作例）
次に図３２、図３３、図３４、図３５を用いてプレーヤの動作を説明する。
【０２４０】
図３２は、ＨＤ−ＤＶＤディスク挿入から再生開始までの処理を示したフローチャートである。
【０２４１】
新しいディスクがプレーヤに挿入された場合（Ｓ１０１）、最初にナビゲーションファイルが読み出されＸＭＬパーサ２０１へと渡される（Ｓ１０２）。ＸＭＬパーサ２０１はナビゲーションデータの構造を解析し、シナリオ情報をシナリオプロセッサ２０４に渡し、シナリオプロセッサがシナリオの内容を解析する（Ｓ１０３）。シナリオプロセッサは、プログラム情報からファーストプレイ情報（ｆｉｒｓｔ＿ｐｌａｙ）を検出処理する（Ｓ１０４）。ファーストプレイ情報（ｆｉｒｓｔ＿ｐｌａｙ）が存在する場合は、当該プログラムの再生を開始し（Ｓ１０７）、存在しない場合はＵＯＰ受け付けステップ（Ｓ１０５）へ移り、ＵＯＰを受け付けるまでＵＯＰ受付待ちが続く（Ｓ１０５）。ＵＯＰは、前述した通り、ユーザオペレーションのことであり、具体的には、ユーザがリモートコントローラのキー（ボタン）を使って、メニュー呼び出しや、ハイライト移動を行う操作を指す。ＵＯＰを受け付けた場合、ＵＯＰ処理を開始する（Ｓ１０６）。
【０２４２】
図３３は、図３２のプログラム再生ステップ（Ｓ１０７）の詳細を記すフローチャートである。また、当該処理は、スクリプト等によってプログラム再生が開始される場合に実行処理されるフローチャートである。
【０２４３】
プログラム再生を開始（Ｓ２０１）すると、まずシナリオプロセッサ２０４が、プログラム情報の詳細を解析する（Ｓ２０２）。続いてシナリオプロセッサは、プログラム最初のセル情報の解析（Ｓ２０３）、当該セルのプリプロセス処理（Ｓ２０４）を行う。続けてシナリオプロセッサ２０４は、ストリーム情報の解析（Ｓ２０５）、当該セル再生に必要なアドレス計算（Ｓ２０６）を行い、ストリームのデコードを開始する（Ｓ２０７）。
【０２４４】
セル再生が終了するまでは、ステップ２０８〜２１４（Ｓ２０８〜Ｓ２１４）が繰り返される。セル再生が終了（Ｓ２０８）した場合、シナリオプロセッサはセル再生を終了し、ポストプロセス処理（Ｓ２１５）へ移行する。他の場合は、ＵＯＰ受け付け（Ｓ２０９）へ移行する。ＵＯＰが受け付けられた場合（Ｓ２０９）、ＵＯＰ処理（Ｓ２１０）へ進み、他の場合は、Ｍｅｎｕ開始判定（Ｓ２１１）へ進む。
【０２４５】
ＵＯＰ処理（２１０）の詳細は別途説明する。
【０２４６】
Ｍｅｎｕとは、図６および図２８で説明した、動的シナリオを実現するための構造であり、構造に従って、プレーヤはボタンイメージを表示し、ユーザがボタン選択、実行を行うことができる。Ｍｅｎｕ開始判定（Ｓ２１１）でＭｅｎｕ開始が判断された場合、即ち、シナリオプロセッサが、Ｍｅｎｕ開始時刻と内部でカウントしている時刻とが一致した場合、シナリオプロセッサはプリプロセス処理（Ｓ２１２）を行う。
【０２４７】
次に、シナリオプロセッサはＭｅｎｕ終了判定（Ｓ２１３）を行い、Ｍｅｎｕ終了が判断された場合、シナリオプロセッサはポストプロセス処理（Ｓ２１４）を実行する。
【０２４８】
プリプロセス（Ｓ２１２）およびポストプロセス（Ｓ２１４）の詳細は別途説明する。
【０２４９】
再生終了判定（Ｓ２０８）で、セル再生終了が判定された場合、スクリプトプロセッサ２０２でのポストプロセス（Ｓ２１５）を経て、次のセル再生へと移行する。最初に次のセルの有無を判定（Ｓ２１６）を行い、次に再生するセルが存在しない、即ち、直前に再生を終了したセルが当該プログラムで最後のセルであった場合、再生終了（Ｓ２１７）となる。次に再生するセルが存在する場合は、セル情報解析（Ｓ２０３）へと移り、次のセル再生へと移行する。
【０２５０】
図３４は、ＵＯＰ処理の詳細を記すフローチャートである。
【０２５１】
ＵＯＰ処理開始（Ｓ３０１）を経て、シナリオプロセッサ２０４は、最初にＵＯＰのメニューコール判定（Ｓ３０２）を行う。ＵＯＰがメニューコール、即ち、ユーザが選択したリモートコントローラのキーが「赤」「緑」「青」「橙」「黄」の何れかである場合は、スクリプトプロセッサはグローバルイベントハンドラ処理を実行する。最初に、選択されたキーに対応するイベントコールが存在されているか判断（Ｓ３０９）し、イベントコールが存在されていない場合は、ＵＯＰ処理を終了（Ｓ３０８）し、イベントコールが存在する場合は、スクリプトプロセッサはイベントコールを発生（Ｓ３１０）し、スクリプトプロセッサが対応するイベントハンドラのスクリプトを処理（Ｓ３０７）して、ＵＯＰ処理を終了（Ｓ３０８）する。
【０２５２】
メニューコール判定（Ｓ３０２）で、ＵＯＰがメニューコールでない場合は、ＵＯＰが上下左右実行キーであるかを判定（Ｓ３０３）する。ＵＯＰが上下左右実行キー選択である場合、次に現在時刻がＭｅｎｕ区間内であるかを判定（Ｓ３０４）し、続いて　対応するイベントコールが存在するかを判定（Ｓ３０５）する。
【０２５３】
前述した３つのステップＳ３０３、Ｓ３０４、Ｓ３０５全てがＹＥＳで通った場合、シナリオプロセッサはイベントコールを発生（Ｓ３０６）し、スクリプトプロセッサが対応するイベントハンドラのスクリプトを処理（Ｓ３０７）して、ＵＯＰ処理を終了（Ｓ３０８）する。
【０２５４】
３つのステップＳ３０３、Ｓ３０４、Ｓ３０５何れかでＮＯとなった場合、シナリオプロセッサはＵＯＰ処理を終了（Ｓ３０８）する。
【０２５５】
図３５（Ａ）は、プリプロセス処理、図３５（Ｂ）は、ポストプロセス処理の詳細を夫々示すフローチャートである。
【０２５６】
プリプロセス処理開始（Ｓ４０１）を経て、シナリオプロセッサは、プリプロセスに対応するイベントコールが存在するかを判定する（Ｓ４０２）。イベントコールが存在しない場合は、シナリオプロセッサはプリプロセスを終了（Ｓ４０５）する。逆にイベントコールが存在する場合は、シナリオプロセッサ２０４はイベントコールを発生（Ｓ４０３）し、スクリプトプロセッサ２０２はイベントコールに対応するイベントハンドラ内のスクリプトを処理（Ｓ４０４）し、プリプロセスを終了（Ｓ４０５）する。
【０２５７】
ポストプロセス処理開始（Ｓ５０１）を経て、シナリオプロセッサは、ポストプロセスに対応するイベントコールが存在するかを判定する（Ｓ５０２）。イベントコールが存在しない場合は、シナリオプロセッサはポストプロセスを終了（Ｓ５０５）する。逆にイベントコールが存在する場合は、シナリオプロセッサはイベントコールを発生（Ｓ５０３）し、スクリプトプロセッサはイベントコールに対応するイベントハンドラ内のスクリプトを処理（Ｓ５０４）し、ポストプロセスを終了（Ｓ５０５）する。
【０２５８】
（メニューの例）
次に、図３６から図４０を使って、グローバルイベントハンドラを使ったメニューの例を説明する。
【０２５９】
図３６は、タイトル選択メニューの例である。本例では、リモートコントローラ上の「赤」キーをタイトル選択メニューに対応させている。対応は前述した通り、Ｖｏｌｕｍｅ情報のイベントコールリスト（ｅｖｅｎｔ＿ｃａｌｌ＿ｌｉｓｔ）にイベントコール（ｅｖｅｎｔ＿ｃａｌｌ）に呼び出すイベントハンドラのＩＤ（ｉｄ）を宣言し、イベントハンドラでタイトル選択メニューに対応するＰｒｏｇｕｒａｍをＧｏＵｐで再生するように設定する。
【０２６０】
2004007518.tif 000005
【０２６１】
ユーザがリモートコントローラ上の「赤」キーを押した場合、対応するグローバルイベントハンドラを介してスクリプトが実行される。本例では、スクリプトで、
ＧｏＵｐ（５）；
がプログラミングされている。プレーヤは、現在再生中のプログラム＃１、セル＃１の再生を一端停止（サスペンド）し、ＧｏＵｐ（５）に従って、プログラム＃５の再生を開始する。この時、プレーヤは、再生を停止した、プログラム＃１、セル＃１、およびセル＃１で再生中の位置（時刻）情報をＳＶ（Ｓｙｓｔｅｍ
Ｖａｒｉａｂｌｅ）２４〜ＳＶ２７に夫々記録する。
【０２６２】
2004007518.tif 000006
2004007518.tif 000007
2004007518.tif 000008
【０２６３】
プログラム＃５、セル＃１では、メニュー画面が表示され、画面上にはタイトル＃１、タイトル＃２選択用のボタンが夫々表示される。
【０２６４】
プログラム＃５、セル＃１の再生が終了、即ち、ユーザが何れかタイトル再生も選択しなかった場合、下記のセル＃１ポストプロセスが実行される。
Ｌｉｎｋ（１）；
【０２６５】
ポストプロセスによって、プログラム＃５、セル＃１の再生が再度実行され、即ち、ユーザが何れかのタイトルを選択するまで、当該セルの再生が繰り返されつづける。
【０２６６】
ここで、ユーザがタイトル＃２を選択した場合、「タイトル＃２」を表示しているボタンに対応するイベントハンドラが呼ばれ、内部のスクリプト（下記）が処理される。
Ｊｕｍｐ（３，１）；
このスクリプトによって、プレーヤは、タイトル＃２としてプログラム＃３の再生を開始する。
【０２６７】
図３７は、チャプター選択メニューの例である。本例では、リモートコントローラ上の「緑」キーをチャプター選択メニューに対応させている。
【０２６８】
ユーザがリモートコントローラ上の「緑」キーを押した場合、対応するグローバルイベントハンドラを介してスクリプトが実行される。本例では、スクリプトで、
2004007518.tif 000009
がプログラミングされている。ＳＶ４は現在再生中のタイトル番号を格納しているＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）である。即ち、再生中のタイトル毎に処理内容を変えることを行っている。本例の場合、タイトル＃１を再生中であるため、ＧｏＵｐ（６）が選択実行される。
【０２６９】
プレーヤは、現在再生中のプログラム＃１、セル＃１の再生を一端停止（サスペンド）し、ＧｏＵｐ（６）に従って、プログラム＃６の再生を開始する。この時、プレーヤは、再生を停止した、プログラム＃１、セル＃１、およびセル＃１で再生中の位置（時刻）情報をＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）２４〜ＳＶ２７に夫々記録する。
【０２７０】
プログラム＃６、セル＃１では、メニュー画面が表示され、画面上にはチャプター＃１、チャプター＃２選択用のボタンが夫々表示される。
【０２７１】
プログラム＃６、セル＃１の再生が終了、即ち、ユーザが何れかタイトル再生も選択しなかった場合、下記のセル＃１ポストプロセスが実行され、同一プログラム、セルの再生が繰り返される。
【０２７２】
Ｌｉｎｋ（１）；
ここで、ユーザがチャプター＃２を選択した場合、「チャプター＃２」を表示しているボタンに対応するイベントハンドラが呼ばれ、内部のスクリプト（下記）が処理される。
【０２７３】
Ｊｕｍｐ（１，３）；
このスクリプトによって、プレーヤは、チャプター＃２としてプログラム＃１のセル＃３の再生を開始する。
【０２７４】
図３８は、マルチ言語対応したタイトルメニューの例である。本例では、リモートコントローラ上の「赤」キーをタイトル選択メニューに対応させている。
【０２７５】
ユーザがリモートコントローラ上の「赤」キーを押した場合、対応するグローバルイベントハンドラを介してスクリプトが実行される。本例では、スクリプトで、
2004007518.tif 000010
がプログラミングされている。ＳＶ０は言語設定（Ｌａｎｇｕａｇｅ　Ｃｏｄｅ）を格納しているＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）である。即ち、現在のプレーヤ設定に合わせて処理内容を変えることを行っている。本例では、プレーヤの言語設定を英語「ｅｎ」であるとして説明を続けることにする。上述した条件判断処理では、言語設定が日本語「ｊｐ」であるかどうかで処理を分けている。本例では、言語設定が英語「ｅｎ」であるので、後述するＧｏＵｐ（９）が実行処理される。
【０２７６】
プレーヤは、現在再生中のプログラム＃１、セル＃１の再生を一端停止（サスペンド）し、ＧｏＵｐ（９）に従って、プログラム＃９の再生を開始する。この時、プレーヤは、再生を停止した、プログラム＃１、セル＃１、およびセル＃１で再生中の位置（時刻）情報をＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）２４〜ＳＶ２７に夫々記録する。
【０２７７】
プログラム＃９、セル＃１では、メニュー画面が表示され、画面上には英語でＴｉｔｌｅ＃１、Ｔｉｔｌｅ＃２選択用のボタンが夫々表示される。もし、プレーヤの言語設定が日本語であった場合、スクリプトプログラミングに従い、日本語表示メニューを持つプログラム＃８が再生される。
【０２７８】
プログラム＃９、セル＃１の再生が終了、即ち、ユーザが何れかタイトル再生も選択しなかった場合、下記のセル＃１ポストプロセスが実行され、同一プログラム、セルの再生が繰り返される。
Ｌｉｎｋ（１）；
以降は、図３６で説明したタイトル選択メニューと同様である。
【０２７９】
図３９は、マルチページを用いたチャプター選択メニューの例である。本例では、リモートコントローラ上の「緑」キーをチャプター選択メニューに対応させている。
【０２８０】
ユーザがリモートコントローラ上の「緑」キーを押した場合、対応するグローバルイベントハンドラを介してスクリプトが実行される。本例では、以下のスクリプトがプログラミングされている。
ＧｏＵｐ（６）；
【０２８１】
プレーヤは、現在再生中のプログラム＃１、セル＃１の再生を一端停止（サスペンド）し、ＧｏＵｐ（６）に従って、プログラム＃６の再生を開始する。この時、プレーヤは、再生を停止した、プログラム＃１、セル＃１、およびセル＃１で再生中の位置（時刻）情報をＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）２４〜ＳＶ２７に夫々記録する。
【０２８２】
プログラム＃６、セル＃１では、メニュー画面が表示され、画面上にはチャプター＃１、次ページ（Ｎｅｘｔ）選択用のボタンが夫々表示される。
【０２８３】
プログラム＃６、セル＃１の再生が終了、即ち、ユーザが何れかタイトル再生も選択しなかった場合、下記のセル＃１ポストプロセスが実行され、同一プログラム、セルの再生が繰り返される。
Ｌｉｎｋ（１）；
【０２８４】
ここで、ユーザが次ページを選択した場合、「Ｎｅｘｔ」を表示しているボタンに対応するイベントハンドラが呼ばれ、内部のスクリプト（下記）が処理される。
Ｌｉｎｋ（２）；
【０２８５】
このスクリプトによって、プレーヤは、同一プログラム内のセル＃２の再生を開始する。
【０２８６】
このように、各メニューページを同一プログラム内のセル一つずつとして実現し、複数のメニューから構成されるマルチページメニューを実現することが可能である。
【０２８７】
図４０は、オーディオ選択メニューの例である。本例では、リモートコントローラ上の「青」キーをオーディオ選択メニューに対応させている。
【０２８８】
ユーザがリモートコントローラ上の「青」キーを押した場合、対応するグローバルイベントハンドラを介してスクリプトが実行される。本例では、以下のスクリプトがプログラミングされている。
ＧｏＵｐ（１０）；
【０２８９】
プレーヤは、現在再生中のプログラム＃１、セル＃１の再生を一端停止（サスペンド）し、ＧｏＵｐ（１０）に従って、プログラム＃１０の再生を開始する。この時、プレーヤは、再生を停止した、プログラム＃１、セル＃１、およびセル＃１で再生中の位置（時刻）情報をＳＶ（Ｓｙｓｔｅｍ　Ｖａｒｉａｂｌｅ）２４〜ＳＶ２７に夫々記録する。
【０２９０】
プログラム＃１０、セル＃１では、音声メニュー画面が表示され、画面上には英語、日本語選択用のボタンが夫々表示される。
【０２９１】
プログラム＃１０、セル＃１の再生が終了、即ち、ユーザが何れかタイトル再生も選択しなかった場合、下記のセル＃１ポストプロセスが実行され、ユーザが何れかの音声を選択するまで、当該セルの再生が繰り返される。
Ｌｉｎｋ（１）；
【０２９２】
ここで、ユーザが日本語を選択した場合、「Ｊａｐａｎｅｓｅ」を表示しているボタンに対応するイベントハンドラが呼ばれ、内部のスクリプト（下記）が処理される。
ＣｈａｎｇｅＡｕｄｉｏ（２）；
Ｒｅｓｕｍｅ（）；
【０２９３】
このスクリプトによって、プレーヤは、再生する音声をストリーム＃２に切り替え、Ｒｅｓｕｍｅを実行する。Ｒｅｓｕｍｅの実行によって、再生が一時停止したプログラム＃１、セル＃１の停止地点からの再生が再開される。この時、プレーヤは先にＳＶ２４〜２７に保持したレジューム情報を用いてレジュームを実行している。
【０２９４】
図４１は、イメージデータを使ったマルチ言語対応メニューの例である。前述した通りに、メニュー区間に入ると、シナリオプロセッサは、メニュー情報に基づいてメニューの表示を行う。具体的には、シナリオプロセッサ２０４は、メニュー情報のプリプロセスに対応するイベントコールを発生し、スクリプトプロセッサ２０２に送る。
【０２９５】
スクリプトプロセッサ２０２は、対応するイベントハンドラのスクリプトプログラミングを実行処理する。図４１の左上にあるスクリプトプログラミングがそれである。
【０２９６】
スクリプトプログラミングでは、条件分岐処理ができるので、本例のように、言語設定（ＳＶ０）に基づいて、表示するイメージを切り替えることが可能である。例えば、本例のように、メニューを構成するためのイメージを、日本語に対応するイメージのセットと、英語に対応するイメージのセットの２セット用意してストリームに多重化しておく。
【０２９７】
スクリプトプログラミングによって、最初にどちらのセットが表示するかを指定することが可能である。本例では、
2004007518.tif 000011
｝となっており、言語設定が日本語の場合は、最初の表示命令Ｈｉｇｈｌｉｇｈ（４）が実行され、英語の場合は、次の表示命令Ｈｉｇｈｌｉｇｈ（０）が実行され、夫々に対応するイメージが画面上に表示される。
【０２９８】
夫々のボタンには、異なるｉｄを付与することで、個々の処理や表示を切り替えることが可能である。
【０２９９】
また、マルチ言語対応だけでなく、他の条件、例えば再生してきたストーリなどのヒストリーを一般変数（ＧＶ）に記録しておき、ヒストリーによって表示するボタンを切り替えるなど設定することが可能である。
【０３００】
（外部アプリケーションとの連携）
図４２、４３を用いて外部アプリケーションとの連携について説明をする。
【０３０１】
図４２は、図４８と同じく、外部アプリケーションとの連携を示した図である。ブラウザを通して、ＤＶＤのビデオ再生画面とテキストやイメージデータを合成して新たなアプリケーションを実現している例である。図に示す通り、ブラウザ上にはチャプターを選択する幾つかのボタンが表示されている。従来のＳＤ−ＤＶＤの場合であれば、ボタンに対応するナビゲーションデータが全てストリーム中に埋められていたのに対して、本発明では、ナビゲーションデータは全て、非ストリーム領域に記述されているため、必要な情報を容易に得る事が可能である。図４２に示すように、複数のメニュー情報からチャプターメニューを生成するのに必要な情報を取り出し、ブラウザ画面上に一度に表示をすることができる。
【０３０２】
夫々のボタンに対応する処理は、メニュー情報に記述されているイベントコールを起こし、プレーヤのスクリプトプロセッサに送ることでプレーヤ側で処理することが可能である。
【０３０３】
図４３がＨＤ−ＤＶＤプレーヤと外部アプリケーションとの関係を示すブロック図である。ＨＤ−ＤＶＤプレーヤ自身の構成は、図２で説明した通りである。
【０３０４】
ＸＭＬパーサ（２０１）は、解析したメニュー情報（＜ｍｅｎｕ＿ｌｉｓｔ＞）を内部のインターフェース部（４３０４）を通して外部アプリケーションのメニュー情報格納部（４３０１）に伝える。メニュー情報格納部（４３０１）はメニュー情報を保持し、必要に応じて外部アプリケーションのメニュー実行部（４３０２）に伝える。シナリオプロセッサ（２０４）は、現在の再生状況、例えば、再生中のプログラム、セル、時間情報などをインターフェース部（４３０５）を通して外部アプリケーションのメニュー実行部（４３０２）にリアルタイムで伝える。外部アプリケーションのメニュー実行部（４３０２）は、リアルタイムで受け取る再生情報と、メニュー情報を比較して、メニュー区間であれば、対応するボタンなどの表示をブラウザなど自身のアプリケーションとして実行する。
【０３０５】
ブラウザ上に表示されたボタンに対してユーザからのリクエスト（ボタンクリック）があった場合、外部アプリケーションのイベント生成部（４３０３）は、ボタンに対応するイベントコールを発生し、スクリプトプロセッサ（２０２）に送る。ボタンに対応するイベントハンドラは、ＸＭＬパーサ（２０１）からメニュー情報として受け取ってあるため、外部アプリケーションは適切なイベントコールを発生することが可能である。
【０３０６】
メニュー実行部（４３０２）は、ハイライト制御信号をスクリプトプロセッサ（２０２）のインターフェース部（４３０６）に対してハイライト制御信号を送ることができる。ハイライト制御信号は、スクリプトプロセッサ（２０２）が、スクリプトプログラミング中のＨｉｇｈｌｉｇｈｔ（）；関数によるイメージ映像表示を無効化するための信号である。スクリプトプロセッサ（２０２）はハイライト制御信号を受けた後、Ｈｉｇｈｌｉｇｈｔ（）；を受けてもイメージ映像表示は行わない。この結果、図４２に示したアプリケーション側でのみチャプター選択のボタンが表示され、ＤＶＤ再生ウィンドウ上のボタン表示を無効化することが可能である。
【０３０７】
また、メニュー情報に外部アプリケーションへのアクセス制御情報を持たせることで、外部アプリケーションに対して、メニュー毎、またはボタン毎のアクセス制御を行うことが可能になる。例えば、ボーナス画面へ分岐（ＧｏＵｐ）するような隠しボタンをＨＤ−ＤＶＤ本編でのみ可能にするなどである。逆にＤＶＤ本編では実行されないが、外部アプリからのみ実行可能な制御も同様にして可能である。
【０３０８】
外部アプリケーションからの制御は、イベント生成部（４３０３）で生成されたイベントが、スクリプトプロセッサ（２０２）のインターフェース部（４３０６）を通して実行される。イベントの処理は、ＵＯＰマネージャ（２０３）からスクリプトプロセッサ（２０２）に対して送られるイベントと同じである。この時、スクリプトプロセッサ（２０２）でイベントの出所に対する排他制御処理がされる。
【０３０９】
図４４は、メニュー情報の例である。＜ｍｅｎｕ＞、＜ｂｕｔｔｏｎ＞の属性として夫々にアクセス条件「ｃｏｎｄｉｔｉｏｎ」を設ける。ＸＭＬパーサ（２０１）内のインターフェース部（４３０４）は、アクセス条件に応じて、メニュー情報および内部のボタン情報を外部アプリケーションに対して提供するのか否かを判断して、メニュー情報および内部のボタン情報を外部アプリケーションのメニュー情報格納部（４３０１）に供給する。
【０３１０】
アクセス条件「ｃｏｎｄｉｔｉｏｎ」の値は、ＤＶＤおよび全ての外部アプリケーションからのアクセス可能「ａｌｌ」、ＤＶＤのみでアクセス可能「ＤＶＤｏｎｌｙ」、外部アプリケーションのみでアクセス可能「Ｅｘｔｅｒｎａｌ　ａｐｐｌｉｃａｔｉｏｎ　ｏｎｌｙ」に分けられられる。
【０３１１】
更に、外部アプリケーションを幾つかのレベルに分類して、夫々のレベルに対してのアクセス条件をメニュー情報またはボタン情報で持つことで、外部アプリケーション間でもアクセスの可／不可を分けることが可能になる。
【０３１２】
上述したように、本発明のデータ構造およびプレーヤ構成では、外部アプリケーションとＨＤ−ＤＶＤプレーヤアプリケーションを混ぜ合わせた新しいアプリケーションを容易に実現することが可能である。
【０３１３】
なお、リモートコントローラ上に５つの専用キー「赤」「青」「緑」「黄」「橙」があると説明をしたが、必ずしも５つである必要は無く、また、必ずしも色が塗られている必要は無い。本実施例の中では、説明上便宜的に５つのキーに色をつけただけである。
【０３１４】
また、映像データおよびナビゲーションデータを記録するディレクトリ、ファイルを固定位置、固定名称としたが必ずしも実施例で説明した場所、名称である必要は無い。
【０３１５】
また、第２のインターフェース部は、スクリプトプロセッサからのハイライト制御信号を無効化するとしたが、第２のインターフェース部は、プレゼンテーションコントローラに対して、映像データのデコードおよび表示実行を停止するように働きかける構成にして、一切の映像表示を行わなくすることもできる。
【０３１６】
また、システム変数（ＳＶ）の一つ、例えばＳＶ２２、を外部アプリケーションとの連携表示用にすることで、再生がＨＤ−ＤＶＤ単体として行われているのか、ＨＴＭＬのような外部のアプリケーションと同期して行われているのかをスクリプトプログラムで判断することができるようになる。このようにして、スクリプトプログラムによってメニューの表示自身を、切り替える、即ち、２つのプログラムをＨＤ−ＤＶＤ単体再生用と外部アプリケーションとの連携再生用とを夫々用意しておき、メニュー画面を状況に応じて切り替えることも可能である。
【０３１７】
また、外部アプリケーションには、メニュー情報格納部（４３０１）、メニュー実行部（４３０２）、イベント生成部（４３０３）があると説明をしたが、必ずしもこの限りではなく、必要な機能ブロックとして説明をしただけである。同一の機能を有するモジュール、例えばメニュー実行部（４３０２）とイベント生成部（４３０３）が同一モジュールであったりしても一向に構わない。
【０３１８】
また、ナビゲーションデータ（再生制御情報）をＸＭＬでテキスト記述すると説明をしたが、データ構造の記述方式は本質的な問題ではなく、バイナリデータであっても構わない。また、この場合、ＸＭＬパーサ（４３０４）はバイナリパーサとしてナビゲーションデータの読み出しと解析、必要モジュールへのデータの供給を行う。また、ＸＭＬパーサまたは、バイナリパーサは、必ずしも一つのブロックとして存在しなくても良く、同等の機能を個々のモジュール、例えばシナリオプロセッサやスクリプトプロセッサ毎に持つ構成であっても構わない。
【０３１９】
また、図４３で、スクリプトプロセッサ（２０２）のインターフェース部（４３０６）は、メニュー実行部（４３０２）からのハイライト制御と、イベント生成部（４３０３）からのイベントを夫々受けるとしたが、ハイライト制御とイベントと夫々事にインターフェースを分けて持っても構わない。
【０３２０】
【発明の効果】
以上の説明から明らかなように、本発明ではパッケージメディア中にビデオオブジェクトと別個に管理情報が格納されるので、インタクラクティブシナリオを読み出すためにシーク処理が発生せず、多様なインタラクティブシナリオの実現が可能となる。また、ビデオオブジェクト中に含まれる映像データや音声データのデータ量が制約されない。
【図面の簡単な説明】
【図１】ＨＤ−ＤＶＤの構成図。
【図２】プレーヤの構成図。
【図３】プログラム、セルの構造を示す図。
【図４】状態遷移モデル図。
【図５】タイトル、チャプター構造を示す図。
【図６】メニューの構造を示す図。
【図７】（Ａ）はプリプロセスの例を示す図、（Ｂ）はポストプロセスの例を説明する図。
【図８】プリプロセス、ポストプロセスとイベントハンドラの関係を説明する図。
【図９】状態遷移とプリプロセス、ポストプロセスの有効性を説明する図。
【図１０】ボタンの例を説明する図。
【図１１】イメージとストリームの関係を説明する図。
【図１２】イメージとスクリプトの関係を説明する図。
【図１３】メニュー実装の例を説明する図。
【図１４】パレンタルロックの構造を説明する図。
【図１５】タイムマップの構造を説明する図。
【図１６】タイムマップを通したセルからストリームへのアクセスを説明する図。
【図１７】シームレスブランチのアプリケーション例を説明する図。
【図１８】インターリーブブロックの構造を説明する図。
【図１９】トラックバッファを使ったジャンプモデルを説明する図。
【図２０】システム変数の説明図。
【図２１】ＵＯＰグループの説明図。
【図２２】ＨＤ−ＤＶＤディスク上のディレクトリ、ファイル構造を説明する図。
【図２３】データ構造の概要を説明する図。
【図２４】ボリューム情報の例を説明する図。
【図２５】プログラム情報の例を説明する図。
【図２６】セル情報の例を説明する図。
【図２７】セル情報の例を説明する図。
【図２８】メニュー情報の例を説明する図。
【図２９】イベントハンドラ情報の例を説明する図。
【図３０】ストリーム情報の例を説明する図。
【図３１】ストリーム情報の例を説明する図。
【図３２】ディスク挿入後のフローチャート。
【図３３】プログラム再生のフローチャート。
【図３４】ＵＯＰ処理のフローチャート。
【図３５】（Ａ）はプリプロセスのフローチャート、（Ｂ）はポストプロセスのフローチャート。
【図３６】タイトルメニューの実装例を説明する図。
【図３７】チャプターメニューの実装例を説明する図。
【図３８】マルチ言語対応したタイトルメニューの実装例を説明する図。
【図３９】マルチページ対応したチャプターメニューの実装例を説明する図。
【図４０】オーディオ選択メニューの実装例を説明する図。
【図４１】イメージを使ったマルチ言語対応メニューの実施例を説明する図。
【図４２】ＨＤ−ＤＶＤと外部アプリケーションとの連携を説明する図。
【図４３】ＨＤ−ＤＶＤプレーヤでの外部アプリケーションとの連携を説明する図。
【図４４】アクセス制御を行うメニュー情報を説明する図。
【図４５】ＳＤ−ＤＶＤの構造を説明する図。
【図４６】ＳＤ−ＤＶＤでのメニュー実装を説明する図。
【図４７】ＳＤ−ＤＶＤでのマルチページメニューの実装を説明する図。
【図４８】ＳＤ−ＤＶＤと外部アプリケーションとの連携例を説明する図。
【図４９】セルとビデオオブジェクトの関係を示す図。
【図５０】セルとメニューの関係を示す図。
【符号の説明】
１０１　ＨＤ−ＤＶＤディスク
１０２　ＨＤ−ＤＶＤプレーヤ
１０３　ナビゲーションマネージャ
１０４　プレゼンテーションエンジン
１０５　イメージプレーン
１０６　ビデオプレーン
１０７　合成器
２０１　ＸＭＬパーサ
２０２　スクリプトプロセッサ
２０３　ＵＯＰマネージャ
２０４　シナリオプロセッサ
２０５　プレゼンテーションコントローラ
２０６　クロック
２０７　デマルチプレクサ
２０８　イメージプロセッサ
２０９　ビデオプロセッサ
２１０　サウンドプロセッサ
２１１　トラックバッファ
２１２　イメージメモリ
４３０１　メニュー情報格納部
４３０２　メニュー実行部
４３０３　イベント生成部
４３０４　ＸＭＬパーサ・インターフェース部
４３０５　シナリオプロセッサ・インターフェース部
４３０６　スクリプトプロセッサ・インターフェース部
Ｓ１０１　ディスク挿入ステップ
Ｓ１０２　データ読み出しステップ
Ｓ１０３　シナリオ解析ステップ
Ｓ１０４　自動再生判定ステップ
Ｓ１０５　ＵＯＰ受け付け判定ステップ
Ｓ１０６　ＵＯＰ処理ステップ
Ｓ１０７　プログラム再生ステップ
Ｓ２０１　プログラム再生開始ステップ
Ｓ２０２　プログラム情報解析ステップ
Ｓ２０３　セル情報解析ステップ
Ｓ２０４　プリプロセス処理ステップ
Ｓ２０５　ストリーム情報解析ステップ
Ｓ２０６　アドレス計算ステップ
Ｓ２０７　デコード開始ステップ
Ｓ２０８　再生終了ステップ
Ｓ２０９　ＵＯＰ受付判定ステップ
Ｓ２１０　ＵＯＰ処理ステップ
Ｓ２１１　メニュー開始判定ステップ
Ｓ２１２　プリプロセスステップ
Ｓ２１３　メニュー終了判定ステップ
Ｓ２１４　ポストプロセスステップ
Ｓ２１５　ポストプロセスステップ
Ｓ２１６　次セル再生判定ステップ
Ｓ２１７　再生終了ステップ
Ｓ３０１　ＵＯＰ処理開始ステップ
Ｓ３０２　メニューコール判定ステップ
Ｓ３０３　上下左右実行キー判定ステップ
Ｓ３０４　メニュー区間判定ステップ
Ｓ３０５　イベントコール存在判定ステップ
Ｓ３０６　イベントコールステップ
Ｓ３０７　スクリプト処理ステップ
Ｓ３０８　ＵＯＰ処理終了ステップ
Ｓ３０９　イベントコール存在判定ステップ
Ｓ３１０　イベントコールステップ
Ｓ４０１　プリプロセス開始ステップ
Ｓ４０２　イベントコール存在判定ステップ
Ｓ４０３　イベントコールステップ
Ｓ４０４　スクリプト処理ステップ
Ｓ４０５　プリプロセス終了ステップ
Ｓ５０１　ポストプロセス開始ステップ
Ｓ５０２　イベントコール存在判定ステップ
Ｓ５０３　イベントコールステップ
Ｓ５０４　スクリプト処理ステップ
Ｓ５０５　ポストプロセス終了ステップ
【図１】
2004007518.tif 000012
【図２】
2004007518.tif 000013
【図３】
2004007518.tif 000014
【図４】
2004007518.tif 000015
【図５】
2004007518.tif 000016
【図６】
2004007518.tif 000017
【図７】
2004007518.tif 000018
【図８】
2004007518.tif 000019
【図９】
2004007518.tif 000020
【図１０】
2004007518.tif 000021
【図１１】
2004007518.tif 000022
【図１２】
2004007518.tif 000023
【図１３】
2004007518.tif 000024
【図１４】
2004007518.tif 000025
【図１５】
2004007518.tif 000026
【図１６】
2004007518.tif 000027
【図１７】
2004007518.tif 000028
【図１８】
2004007518.tif 000029
【図１９】
2004007518.tif 000030
【図２０】
2004007518.tif 000031
【図２１】
2004007518.tif 000032
【図２２】
2004007518.tif 000033
【図２３】
2004007518.tif 000034
【図２４】
2004007518.tif 000035
【図２５】
2004007518.tif 000036
【図２６】
2004007518.tif 000037
【図２７】
2004007518.tif 000038
【図２８】
2004007518.tif 000039
【図２９】
2004007518.tif 000040
【図３０】
2004007518.tif 000041
【図３１】
2004007518.tif 000042
【図３２】
2004007518.tif 000043
【図３３】
2004007518.tif 000044
【図３４】
2004007518.tif 000045
【図３５】
2004007518.tif 000046
【図３６】
2004007518.tif 000047
【図３７】
2004007518.tif 000048
【図３８】
2004007518.tif 000049
【図３９】
2004007518.tif 000050
【図４０】
2004007518.tif 000051
【図４１】
2004007518.tif 000052
【図４２】
2004007518.tif 000053
【図４３】
2004007518.tif 000054
【図４４】
2004007518.tif 000055
【図４５】
2004007518.tif 000056
【図４６】
2004007518.tif 000057
【図４７】
2004007518.tif 000058
【図４８】
2004007518.tif 000059
【図４９】
2004007518.tif 000060
【図５０】
2004007518.tif 000061