(57)【要約】  【課題】  コンテンツ記録済み大容量ディスク状記録媒体において、自由度の高いユーザインターフェイスを実現する。  【解決手段】  ボタン画像データおよび対応する効果音の音声データと、音声データや画像データの制御命令とをストリームに多重化してディスクに記録する。ディスクから再生したシナリオをバッファ１０４に格納し、画像データおよび音声データをバッファ１０５に夫々溜め込む。シナリオに従いバッファ１０５から画像データを読み出してグラフィクスプレーン５０３に展開する。それと共に、対応する音声データがバッファ１０５から読み出されサウンドプレーヤ１０６Ｄにより再生される。ボタン状態の変化に応じたボタン画像の変更に伴い効果音が再生され、より効果的なユーザインターフェイスが実現される。【選択図】  図６９
2011097614.tif 000002
【特許請求の範囲】
【請求項１】
動画データを再生する手段と、
上記動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示する手段と、
上記画像データに対応する効果音データを再生する手段と
を有し、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、入力されたプログラムコードに基づいて、上記画像データの表示と同時に再生する再生装置。
【請求項２】
請求項１に記載の再生装置において、
上記効果音データは、ファイルに格納されて非リアルタイムストリームとして入力される再生装置。
【請求項３】
請求項２に記載の再生装置において、
上記ファイルは、複数の上記効果音データがまとめて格納される再生装置。
【請求項４】
請求項３に記載の再生装置において、
上記ファイルは、さらに、該ファイルに格納される上記複数の効果音データそれぞれの該ファイル中での位置情報が、該効果音データの識別情報に対応付けられて格納される再生装置。
【請求項５】
請求項４に記載の再生装置において、
上記効果音データが上記識別情報により上記画像データと関連付けられ、上記画像データの表示に伴い、該画像データに関連付けられた上記効果音データが上記識別情報に基づき上記ファイルから読み出されるようにした再生装置。
【請求項６】
請求項２に記載の再生装置において、
上記ファイルは、上記プログラムコードの実行に先立ち予め入力される再生装置。
【請求項７】
請求項２に記載の再生装置において、
複数の上記ファイルが入力される再生装置。
【請求項８】
請求項７に記載の再生装置において、
上記複数のファイルのそれぞれは、上記プログラムコードの再生単位で該プログラムコ
ードから参照され、該参照毎に入力される再生装置。
【請求項９】
請求項１に記載の再生装置において、
上記画像データは、グラフィクスオブジェクトに含まれるボタン画像データである再生装置。
【請求項１０】
請求項９に記載の再生装置において、
上記ボタン画像データは、ボタンの複数種類の状態毎にボタン画像が異なる再生装置。
【請求項１１】
請求項９に記載の再生装置において、
上記ボタン画像データは、ボタンの複数種類の状態毎に異なる効果音と対応付けられている再生装置。
【請求項１２】
動画データを再生するステップと、
上記動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示するステップと、
上記画像データに対応する効果音データを再生するステップと
を有し、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、入力されたプログラムコードに基づいて、上記画像データの表示と同時に再生する再生方法。
【請求項１３】
動画データと、
上記動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、
上記画像データに対応する効果音データと、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、上記画像データの表示と同時に再生するのに用いられるプログラムコードと
を記録媒体に記録する記録装置。
【請求項１４】
請求項１３に記載の記録装置において、
上記効果音データは、ファイルに格納されて記録される記録装置。
【請求項１５】
請求項１４に記載の記録装置において、
上記ファイルは、複数の上記効果音データがまとめて格納される記録装置。
【請求項１６】
請求項１５に記載の記録装置において、
上記ファイルは、さらに、該ファイルに格納される上記複数の効果音それぞれの該ファイル中での位置情報が、該効果音データの識別情報に対応付けられて格納される記録装置。
【請求項１７】
請求項１６に記載の記録装置において、
上記効果音データが上記識別情報により上記画像データと関連付けられ、上記画像データの表示に伴い、該画像データに関連付けられた上記効果音データが上記識別情報に基づき上記ファイルから読み出されるようにした記録装置。
【請求項１８】
請求項１４に記載の記録装置において、
上記ファイルは、上記プログラムコードの実行に先立ち予め読み出されるようにした記録装置。
【請求項１９】
請求項１４に記載の記録装置において、
複数の上記ファイルが記録される記録装置。
【請求項２０】
請求項１９に記載の記録装置において、
上記複数のファイルのそれぞれは、上記プログラムコードの再生単位で該プログラムコードから参照され、該参照毎に読み出されるようにした記録装置。
【請求項２１】
請求項１３に記載の記録装置において、
上記画像データは、グラフィクスオブジェクトに含まれるボタン画像データである記録装置。
【請求項２２】
請求項２１に記載の記録装置において、
上記ボタン画像データは、ボタンの複数種類の状態毎にボタン画像が異なる記録装置。
【請求項２３】
請求項２１に記載の記録装置において、
上記ボタン画像データは、ボタンの複数種類毎の状態毎に異なる効果音と対応付けられている記録装置。
【請求項２４】
動画データと、
上記動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、
上記画像データに対応する効果音データと、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、上記画像データの表示と同時に再生するのに用いられるプログラムコードと
を記録媒体に記録する記録方法。
【請求項２５】
動画データを再生するステップと、
上記動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示するステップと、
上記画像データに対応する効果音データを再生するステップと
を有し、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、入力されたプログラムコードに基づいて、上記画像データの表示と同時に再生する再生方法をコンピュータ装置に実行させる再生プログラムが記録された記録媒体。
【請求項２６】
動画データと、
上記動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、
上記画像データに対応する効果音データと、
上記画像データが表示される際に、上記画像データごとに割り当てられた上記効果音データを、上記画像データの表示と同時に再生するのに用いられるプログラムコードと
が記録された記録媒体。
【請求項２７】
請求項２６に記載の記録媒体において、
上記効果音データは、ファイルに格納されて記録される記録媒体。
【請求項２８】
請求項２７に記載の記録媒体において、
上記ファイルは、複数の上記効果音データがまとめて格納される記録媒体。
【請求項２９】
請求項２８に記載の記録媒体において、
上記ファイルは、さらに、該ファイルに格納される上記複数の効果音それぞれの該ファイル中での位置情報が、該効果音データの識別情報に対応付けられて格納される記録媒体。
【請求項３０】
請求項２９に記載の記録媒体において、
上記効果音データが上記識別情報により上記画像データと関連付けられ、上記画像データの表示に伴い、該画像データに関連付けられた上記効果音データが上記識別情報に基づき上記ファイルから読み出されるようにした記録媒体。
【請求項３１】
請求項２７に記載の記録媒体において、
上記ファイルは、上記プログラムコードの実行に先立ち予め読み出されるようにした記録媒体。
【請求項３２】
請求項２７に記載の記録媒体において、
複数の上記ファイルが記録される記録媒体。
【請求項３３】
請求項３２に記載の記録媒体において、
上記複数のファイルのそれぞれは、上記プログラムコードの再生単位で該プログラムコードから参照され、該参照毎に読み出されるようにした記録媒体。
【請求項３４】
請求項２６に記載の記録媒体において、
上記画像データは、グラフィクスオブジェクトに含まれるボタン画像データである記録媒体。
【請求項３５】
請求項３４に記載の記録媒体において、
上記ボタン画像データは、ボタンの複数種類の状態毎にボタン画像が異なる記録媒体。
【請求項３６】
請求項３４に記載の記録媒体において、
上記ボタン画像データは、ボタンの複数種類毎の状態毎に異なる効果音と対応付けられている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ブルーレイディスク(Blu-ray Disc)といった大容量の記録媒体に記録されたプログラムに対するユーザによるインタラクティブな操作を可能とする再生装置、再生方法、記録装置、記録方法および記録媒体に関する。
【背景技術】
【０００２】
近年、記録可能で記録再生装置から取り外し可能なディスク型記録媒体の規格として、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（ブルーレイディスク）規格が提案されている。Ｂｌｕ−ｒａｙ  Ｄｉｓｃ規格では、記録媒体として直径１２ｃｍ、カバー層０．１ｍｍのディスクを用い、光学系として波長４０５ｎｍの青紫色レーザ、開口数０．８５の対物レンズを用いて、最大で２７ＧＢ（ギガバイト）の記録容量を実現している。これにより、日本のＢＳディジタルハイビジョン放送を、画質を劣化させることなく２時間以上記録することが可能である。
【０００３】
この記録可能光ディスクに記録するＡＶ(Audio/Video)信号のソース（供給源）としては、従来からの、例えばアナログテレビジョン放送によるアナログ信号によるものと、例えばＢＳディジタル放送をはじめとするディジタルテレビジョン放送によるディジタル信号によるものとが想定されている。Ｂｌｕ−ｒａｙ  Ｄｉｓｃ規格では、これらの放送によるＡＶ信号を記録する方法を定めた規格は、既に作られている。
【０００４】
一方で、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃのの派生規格として、映画や音楽などが予め記録された、再生専用の記録媒体を開発する動きが進んでいる。映画や音楽を記録するためのディスク状記録媒体としては、既にＤＶＤ(Digital Versatile Disc)が広く普及しているが、このＢｌｕ−ｒａｙ  Ｄｉｓｃの企画に基づいた再生専用光ディスクは、Ｂｌｕ−ｒａｙ  Ｄｉｓｃの大容量および高速な転送速度などを活かし、ハイビジョン映像を高画質なままで２時間以上収録できる点が、既存のＤＶＤとは大きく異なり、優位である。
【０００５】
一方で、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃの規格では、ディスクに記録されている映像コンテンツの一覧を画面表示する方法や、その一覧表上にカーソルを表示させ、再生したい映像コンテンツをユーザに選択させるなどといったユーザインターフェイスに関する機能が定められていない。これらの機能は、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに対する記録再生を行う記録再生装置本体によって実現されている。そのため、同一の記録媒体を再生した場合でも、再生に用いた記録再生装置によってコンテンツ一覧画面のレイアウトが異なってしまい、ユーザインタフェースにも差が生じ、必ずしもユーザにとって使い易いものではない。再生専用ディスクとしては、再生機器によらず、ディスク（コンテンツ）制作者が意図した通りのメニュー画面などが表示され、意図通りのユーザインターフェイスが実現される必要がある。
【０００６】
また、映像コンテンツの再生中に選択画面が表示され、ユーザの選択によってストーリーが分岐していくマルチストーリーの機能は、一般にインタラクティブ機能とも呼ばれる。このインタラクティブ機能を実現するためには、ディスク制作者が再生順序や分岐を定めたシナリオを作り、そのシナリオをプログラム言語、スクリプト言語等を使って記述し、ディスクに記録しておく必要がある。再生装置側では、そのプログラムを読み込み、実行することで、制作者の意図に従った映像コンテンツの再生や、分岐のための選択画面提示を実現することになる。
【０００７】
このように、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格(Blu-ray Disc Rewritable Format Ver1.0)では、この制作者の意図通りのユーザインターフェイスを実現するための、メニュー画面や分岐選択画面の構成方法、ユーザ入力に対する処理を記述する方法が定められていない。そのため、現状では、Ｂｌｕ−ｒａｙ  Ｄｉｓｃを用いて、制作者が意図したシナリオ通りの再生を、再生装置の製造メーカや機種に左右されることなく互換性を持たせた形で実現することが難しい。
【０００８】
また、映画を収録した再生専用ディスクにおいては、字幕を表示する仕組みが不可欠である。しかしながら、この字幕表示についても、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格では、定められていない。
【０００９】
一方、従来から、例えばＤＶＤ(Digital Versatile Disc)の規格においては、上述のようなインタラクティブな機能が既に実現されていた。例えば、ＤＶＤビデオにより動画を再生中に、リモートコントロールコマンダなどを用いてメニュー画面を呼び出し、例えばメニュー画面上に配置されたボタンを選択するなどして、再生場面を変更するなどの処理が可能であった。また、字幕を表示する仕組みも規定されていた。字幕表示については、例えば、予め用意されている日本語字幕と英語字幕とを切り換えて表示させることができた。
【００１０】
ＤＶＤの場合、メニュー画面を固定的なサブピクチャデータにより構成し、メニュー画面が呼び出された際に、動画データにこのサブピクチャデータを合成して表示する。特許文献１に、このように動画データにサブピクチャデータを合成して記録可能なＤＶＤに記録する構成が記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平１０−３０８９２４号公報
【００１２】
ここで、従来技術によるメニュー画面の一例の表示について、概略的に説明する。例えば、映画が収録されたＤＶＤを再生装置で再生する際に、映画本編が再生されるのに先立って、メニュー画面が表示される。一般に、メニュー画面には、複数のボタンが配置される。各ボタンには、それぞれ特定の動作が割り当てられており、ボタンを選択し実行を指示すると、選択されたボタンに割り当てられた動作が実行される。例えば、「映画本編」と表示されたボタンを選択し実行を指示することで、当該ボタンに割り当てられた動作が実行され、当該ＤＶＤに収録された映画の本編が再生されることになる。
【００１３】
ユーザは、例えば、リモートコントロールコマンダ（以下、リモコンと略称する）に設けられた、上下左右の方向をそれぞれ指示するようにされたキー（キー（方向キー）などを操作して、メニュー画面に表示されたボタンの一つを選択状態とし、そこで決定キーを操作することで、選択されたボタンに割り当てられた動作を実行状態とする。また、ボタンには、通常（非選択）状態、選択状態及び実行状態という３種類の状態が存在し、ユーザが区別し易いように、それぞれ画像や色などが異ならされている。一般に、選択状態および実行状態のボタンは、同時には一つしか存在しない。
【００１４】
例えばＤＶＤビデオの場合、ボタンの表示は、それぞれサブピクチャ、ハイライトと呼ばれる２種類のデータにより実現される。図８６は、従来技術による一例のＤＶＤメニュー画面３００を示す。メニュー画面３００は、「タイトルメニュー」と名付けられ、それぞれ「本編再生」、「映像特典」および「音声設定」と表示された３個のボタン３０１Ａ、３０１Ｂおよび３０１Ｃが配置される。この図８６の例では、「本編再生」ボタン３０１Ａの外枠の色がボタン３０１Ａの元の外枠の色と異なった色にされており、「本編再生」ボタン３０１Ａが選択状態となっていることが示される。
【００１５】
この状態で、ユーザがリモコンの方向キーを所定に操作することにより、図８７Ａ、図８７Ｂおよび図８７Ｃにそれぞれ例示されるように、選択状態のボタンを変更することができる。選択されたボタンは、上述の図８６と同様に、外枠の色が非選択状態の場合に対して異ならされる。さらに、例えば図８６の状態で、ユーザがリモコンに設けられた決定ボタンを操作すると、その時点で選択状態にある「本編再生」ボタン３０１Ａが図８８に一例が示されるように、実行状態を表す色に変化される。その後、メニュー画面３００が消え、本編が再生されることになる。以上が、例えばＤＶＤビデオによるボタンの基本動作である。
【００１６】
ところで、図８６に例示されるメニュー画面３００は、図８９Ａ、図８９Ｂおよび図８９Ｃにそれぞれ一例が示されるように、背景画像３１０、サブピクチャ３１１およびハイライト３１２の３種類のデータから構成される。背景画像３１０は、静止画や、当該ＤＶＤに収録されるコンテンツ本体の動画などが表示される。
【００１７】
サブピクチャ３１１は、図９０に例示されるように、１ピクセル当たり２ビットの情報で表現された１枚のビットマップ画像と、４色の色情報（Ａ０，Ｂ０，Ｃ０，Ｄ０）と、当該サブピクチャ３１１の表示開始位置を示す座標（Ｘ，Ｙ）とを有する。色情報Ａ０、Ｂ０、Ｃ０およびＤ０は、それぞれ１組のＲ（赤）Ｇ（緑）Ｂ（青）データからなる１色の色情報データであって、Ｒ、Ｇ、Ｂ各色について各々８ビットの情報を有する。ビットマップ画像は、１ピクセルにつき２ビットの情報を有し、２ビットを用いて上述の４色の色情報（Ａ０，Ｂ０，Ｃ０，Ｄ０）の中から１色をピクセル毎に選択する。色情報は、透明度情報も含まれており、サブピクチャ３１１に対して背景画像３１０が透けて見える領域を設けることができる。サブピクチャ３１１の表示位置は、例えばサブピクチャ３１１の左上隅の位置が背景画像３１０に対する相対的な座標（Ｘ，Ｙ）で示される。
【００１８】
サブピクチャ３１１は、さらに、表示開始および停止時刻を示す情報、当該サブピクチャ３１１に対してフェードイン、フェードアウトといった視覚効果を施すコマンドを有することができる。
【００１９】
ＤＶＤビデオにおいては、同時に複数のビットマップ画像を表示することができない。そのため、上述した図８６に例示されるような、複数のボタンが配置されたようなメニュー画面３００の表示は、図８９Ｂに例示されるような、３個のボタン画像を含む１枚の大きなビットマップ画像によりなされる。図８９のサブピクチャ３１１のビットマップ画像において、ボタン３０１Ａ、３０１Ｂおよび３０１Ｃの外側の領域を透明領域として設定することで、このサブピクチャ３１１と背景画像３１０とを合成した際に、ボタン３０１Ａ、３０１Ｂおよび３０１Ｃの表示領域以外に背景画像３１０を透過させて表示させることができる。
【００２０】
ハイライト３１２は、サブピクチャ３１１に用いられている４色を、他の４色に置き換えるための情報である。図９０に例示されるように、ハイライト３１２は、色情報として、選択状態の色情報（Ａ１，Ｂ１，Ｃ１，Ｄ１）および実行状態の色情報（Ａ２，Ｂ２，Ｃ２，Ｄ２）を有する。これらの色情報も、上述のサブピクチャ３１１と同様、ＲＧＢそれぞれ８ビットで表現される４色の色情報である。
【００２１】
また、ハイライト３１２は、位置情報として、色を置き換える領域の座標の組を有する。色を置き換える範囲は、サブピクチャ３１１の画像全体に限らず、サブピクチャ３１１内の一部の矩形領域とすることができる。このハイライト３１２により色を変化させるサブピクチャ３１１内の矩形領域の数がユーザが選択可能なボタンの数に相当する。それぞれの矩形領域の表示位置は、左上隅および右下隅の位置が座標（Ｘ，Ｙ）で示される。例えば、ボタン３０１Ａに対応するハイライト３１２Ａの位置は、座標（Ｘ１，Ｙ１）および（Ｘ１’，Ｙ１’）で示される。ボタン３０１Ｂおよび３０１Ｃにそれぞれ対応するハイライト３１２Ｂおよび３１２Ｃも、同様である。
【００２２】
一例として、ハイライト３１２Ａは、背景画像３１０の座標（Ｘ１，Ｙ１）および（Ｘ１’，Ｙ１’）で示される領域の色情報（Ａ０，Ｂ０，Ｃ０，Ｄ０）を、例えば選択状態の色として指定される色情報（Ａ１，Ｂ１，Ｃ１，Ｄ１）に置き換える。このとき、背景画像３１０の色情報Ａ０がハイライト３１２Ａの色情報Ａ１に置き換えられる。同様に、背景画像３１０の色情報Ｂ０が色情報Ｂ１に、色情報Ｃ０が色情報Ｃ１に、色情報Ｄ０が色情報Ｄ１に、それぞれ置き換えられる。
【００２３】
このハイライト３１２による色の置き換えの例を、図８６、図８７および図８８を用いて上述した、メニュー画面３００におけるボタン３０１Ａの状態に応じた表示変化に対応させて説明する。例えばボタン３０１Ａが非選択状態のときには、ボタン３０１Ａの枠、表面および文字がそれぞれ色情報Ｂ０、色情報Ｃ０および色情報Ｄ０を用いて表示されているものとする。ボタン３０１Ａを選択状態とすると、ボタン３０１Ａの枠色Ｂ０がハイライト３１２Ａの選択状態の対応する色情報Ｂ１で置き換えられる。表面色Ｃ０および文字色Ｄ０は、変化しない。次いで、ボタン３０１Ａが実行状態とされると、選択状態の色に対して、さらに、ボタン３０１Ａの表面色Ｃ０が色情報Ｃ１に置き換えられる。枠色Ｂ１および文字色Ｄ０は、選択状態に対して変化しない。
【００２４】
ＤＶＤビデオにおいて、通常の映像再生時は、背景画像３１０に相当する画像だけが表示されている。また、字幕付きの映画などの場合は、映画本編が再生されている背景画像３１０と、字幕が表示されているサブピクチャ３１１とが合成された状態で表示がなされている。
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、このＤＶＤビデオの場合、サブピクチャ３１１、選択状態を表すハイライト３１２、実行状態を表すハイライト３１２は、それぞれ最大４色しか用いることができず、色数の多いサブピクチャを表示することができなかったという問題点があった。
【００２６】
また、ハイライト３１２は、サブピクチャ３１１の色を置き換え変更するだけであったため、例えば選択状態や実行状態においてボタン中に表示されている文字を変えることや、ボタンの形状が変化するような効果を実現することができず、表現力に乏しかったという問題点があった。
【００２７】
さらに、従来では、字幕表示とボタン表示とを、サブピクチャ３１１を用いた同一の仕組みで実現していたため、字幕とボタンとをそれぞれ独立して表示制御することや、字幕あるいはボタン表示に透明度を設定してこれらを重ね合わせて表示させるといった、合成処理もできなかったという問題点があった。
【００２８】
さらにまた、このＤＶＤビデオの場合、例えばメニュー画面を呼び出した際に、背景に表示される動画データの再生が中断されていた。このように、従来では、例えインタラクティブな機能が実現されていても、その機能を実現するためのユーザインターフェイスの自由度が低いという問題点があった。
【００２９】
また、ＤＶＤビデオでは、字幕の表示や変化に同期させて効果音を発生させる仕組みが規格で定められていないため、例えば字幕に同期させて効果音を発生させるようなことができなかったという問題点があった。
【００３０】
さらにボタンについても、ユーザがボタンを選択状態にした際に発せられる効果音や、ボタンの選択状態時に決定キーを操作するなどして、当該ボタンを実行状態にした際に発せられるクリック音のような効果音を発生させる仕組みが規格で定められていなかったため、表現豊かなユーザインターフェイスを実現することが困難であるという問題点があった。
【００３１】
なお、ここでいう効果音とは、動画プレーン上に表示される動画や静止画に同期して再生される音声（例えば、映画などにおいて、映画映像と対になって収録されている音声）とは別途に用意された音声データが、字幕やボタンの表示制御に同期または誘引されて再生される音声のことをいう。
【００３２】
したがって、この発明の目的は、大容量の再生専用光ディスクにおいて自由度の高いユーザインターフェイスを実現するための再生装置、再生方法、記録装置、記録方法および記録媒体を提供することにある。
【００３３】
また、この発明の他の目的は、大容量の再生専用光ディスクにおいて、より表現豊かなユーザインターフェイスを実現する再生装置、再生方法、記録装置、記録方法および記録媒体を提供することにある。
【課題を解決するための手段】
【００３４】
第１の発明は、上述した課題を解決するために、動画データを再生する手段と、動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示する手段と、画像データに対応する効果音データを再生する手段とを有し、画像データが表示される際に、画像データごとに割り当てられた効果音データを、入力されたプログラムコードに基づいて、画像データの表示と同時に再生する再生装置である。
【００３５】
また、第２の発明は、動画データを再生するステップと、動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示するステップと、画像データに対応する効果音データを再生するステップとを有し、画像データが表示される際に、画像データごとに割り当てられた効果音データを、入力されたプログラムコードに基づいて、画像データの表示と同時に再生する再生方法である。
【００３６】
また、第３の発明は、動画データと、動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、画像データに対応する効果音データと、画像データが表示される際に、画像データごとに割り当てられた効果音データを、画像データの表示と同時に再生するのに用いられるプログラムコードとを記録媒体に記録する記録装置である。
【００３７】
また、第４の発明は、動画データと、動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、画像データに対応する効果音データと、画像データが表示される際に、画像データごとに割り当てられた効果音データを、画像データの表示と同時に再生するのに用いられるプログラムコードとを記録媒体に記録する記録方法である。
【００３８】
また、第５の発明は、動画データを再生するステップと、動画データの再生の際に、ユーザに対して操作を促す操作画面を構成する画像データを表示するステップと、画像データに対応する効果音データを再生するステップとを有し、画像データが表示される際に、画像データごとに割り当てられた効果音データを、入力されたプログラムコードに基づいて、画像データの表示と同時に再生する再生方法をコンピュータ装置に実行させる再生プログラムが記録された記録媒体である。
【００３９】
また、第６の発明は、動画データと、動画データの再生の際に表示される、ユーザに対して操作を促す操作画面を構成する画像データと、画像データに対応する効果音データと、画像データが表示される際に、画像データごとに割り当てられた効果音データを、画像データの表示と同時に再生するのに用いられるプログラムコードとが記録された記録媒体である。
【発明の効果】
【００４０】
この発明によれば、記録済み大容量ディスクにおいて、動画を表示する動画プレーンと、字幕を表示する字幕プレーンと、メニュー画面などインタラクティブな機能を有する画面を表示するグラフィクスプレーンとがそれぞれ独立して設けられ、これらのプレーンが合成されて表示されるようにしているため、動画プレーンに動画を表示させ、その動画を背景としてグラフィクスプレーンにメニュー画面などを表示させることができるという効果がある。
【００４１】
また、この発明によれば、グラフィクスプレーンに表示するための画像データを格納するためのバッファが設けられているため、グラフィクスプレーンの表示を同一の画像データを繰り返し用いて表示することができる。これにより、メニュー画面などをより高い自由度で構成することができるという効果がある。
【００４２】
さらに、この発明では、グラフィクスプレーンに表示されるグラフィクスの表示制御を、表示制御命令を用いて記述しているため、インタラクティブな機能をグラフィクスプレーンに表示される画面を用いて実現することができるという効果がある。
【００４３】
さらにまた、この発明によれば、記録済み大容量ディスクにおいて、動画を表示する動画プレーンと、字幕を表示する字幕プレーンと、メニュー画面などインタラクティブな機能を有する画面を表示するグラフィクスプレーンとがそれぞれ独立して設けられ、これらのプレーンが合成されて表示されるようにしている。そして、字幕プレーンとグラフィクスプレーンに表示するオブジェクトの形式として共通のグラフィクスオブジェクトを定義し、デコーダモデル、表示制御命令と動作モデルを定義した。これにより、動画に同期して字幕やボタンを表示することが可能となる効果がある。
【００４４】
また、字幕やボタンのスクロール表示、移動表示といった簡単なアニメーションや、ユーザ入力に応じて画像の内容が変化する表現力のあるボタンを実現することができるという効果がある。
【００４５】
さらに、この発明では、グラフィクスオブジェクトに音声データを含め、グラフィクスオブジェクトに含まれるボタン画像の表示と同時に音声データを再生するデコーダモデルを定義した。そのため、グラフィクスオブジェクトの表示に同期した音声データの再生を容易に行うことができるという効果がある。
【００４６】
さらにまた、この発明では、グラフィクスオブジェクトの表示制御命令に対して、音声データの再生を指示する命令を定義した。また、グラフィクスオブジェクトの表示制御命令に対して、グラフィクスオブジェクトに含まれる画像データに対して音声データを割り当てることができるようにしたため、任意の時刻での効果音などの音声データの再生や、効果音を伴う字幕やボタンの実現などが可能となる効果がある。
【００４７】
また、この発明では、ＧＵＩ(Graphical User Interface)により表現されるメニュー画面上に表示されるボタンについて、ユーザがボタンを選択状態にした際や、ボタンの選択状態時に決定キーを操作するなどしてボタンを実行状態とした際に発せられる、クリック音のような効果音を発生させる仕組みを提供している。そのため、ブルーレイ（Ｂｌｕ−ｒａｙ）ディスクといった、大容量の記録媒体に予め記録されたプログラムに対する、ユーザによるインタラクティブな操作を可能とする再生装置、再生方法、再生プログラムおよび記録媒体において、表現豊かなユーザインターフェイスを実現することができる効果がある。
【図面の簡単な説明】
【００４８】
【図１】ＡＶストリームファイルの再生順序指定の仕組みを模式的に示す略線図である。
【図２】クリップＡＶストリーム、クリップ情報、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ図である。
【図３】複数のプレイリストから同一のクリップを参照する方法を説明するための略線図である。
【図４】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図５】ファイル「info.bdav」の一例の構造を表すシンタクスを示す略線図である。
【図６】ブロックUIAppInfoBDAV()の一例の構造を表すシンタクスを示す略線図である。
【図７】ブロックTableOfPlayLists()の一例の構造を表すシンタクスを示す略線図である。
【図８】ファイル「#####.rpls」および「#####.vpls」の一例の構造を表すシンタクスを示す略線図である。
【図９】ブロックUIAppInfoPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図１０】ブロックPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図１１】ブロックPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図１２】ブリッジクリップを説明するための略線図である。
【図１３】ブロックPlayListMark()の一例の構造を表すシンタクスを示す略線図である。
【図１４】ファイル「%%%%%.clpi」の一例の構造を表すシンタクスを示す略線図である。
【図１５】この発明の実施の一形態で画像の表示系として用いられるプレーン構造の一例を示す略線図である。
【図１６】動画プレーン、字幕プレーンおよびグラフィクスプレーンの一例の解像度および表示可能色を示す略線図である。
【図１７】動画プレーン、字幕プレーンおよびグラフィクスプレーンを合成する一例の構成を示すブロック図である。
【図１８】パレットの入出力データの一例を示す略線図である。
【図１９】パレットに格納される一例のパレットテーブルを示す略線図である。
【図２０】グラフィクスプレーンに表示されるメニュー画面の一例を示す略線図である。
【図２１】シナリオの一例の内部構造を示す略線図である。
【図２２】ＢＤ仮想プレーヤモデルについて説明するための略線図である。
【図２３】ＢＤ仮想プレーヤにおいて独自に定義される一例のイベントを示す略線図である。
【図２４】この発明の実施の一形態で定義される、ＢＤ仮想プレーヤが有するメソッドの一例を示す。
【図２５】この発明の実施の一形態で定義される、ＢＤ仮想プレーヤが有するメソッドの一例を示す。
【図２６】この発明の実施の一形態で定義される、ＢＤ仮想プレーヤが有するメソッドの一例を示す。
【図２７】ディスクに記録されるシナリオ構成の一例を示す略線図である。
【図２８】シナリオを構成する際に必要とされる一例のファイルを一覧して示す略線図である。
【図２９】シナリオがディスクに記録される際の一例のディレクトリ構造を示す略線図である。
【図３０】スクリプトファイルのより具体的な記述の例を示す略線図である。
【図３１】スクリプトファイルのより具体的な記述の例を示す略線図である。
【図３２】ＨＴＭＬファイルのより具体的な記述の例を示す略線図である。
【図３３】スクリプトファイルのより具体的な記述の例を示す略線図である。
【図３４】プレーヤデコーダの一例の構成を示す機能ブロック図である。
【図３５】ボタン表示の一例の状態遷移図である。
【図３６】オブジェクトの種類の分類を説明するための図である。
【図３７】この発明の実施の一形態によるグラフィクスオブジェクトのデータ構造の例を示す。
【図３８】グラフィクスオブジェクトが分割されてＰＥＳパケットに格納される様子を示す略線図である。
【図３９】グラフィクスオブジェクトのデコードを行うグラフィクスオブジェクトデコーダモデルの一例の構成を示す機能ブロック図である。
【図４０】グラフィクスオブジェクト入力バッファ、ＰＮＧデコーダ、オブジェクトバッファおよびプレーンバッファにおける蓄積データ量の遷移の例を概略的に示す略線図である。
【図４１】プレーンの更新速度について説明するための図である。
【図４２】グラフィクスオブジェクトの一例の構造を表すシンタクスを示す略線図である。
【図４３】ブロックGlobalPaletteTable()の一例の構造を表すシンタクスを示す略線図である。
【図４４】命令グループDispCmds(i)に置かれる表示制御命令の例を一覧して示す略線図である。
【図４５】命令set_display_box(x1,y1,x2,y2)および命令set_clipping_box(a1,b1,a2,b2)を説明するための略線図である。
【図４６】座標軸の定義を説明するための略線図である。
【図４７】命令グループDispCmds(i)の記述とグラフィクスオブジェクトの表示変化の一例を示す。
【図４８】字幕表示が徐々に現れるフェードインの例を示す略線図である。
【図４９】字幕のＰＮＧ画像がプレーン内を移動する例を示す略線図である。
【図５０】字幕表示をスクロールさせる例を示す略線図である。
【図５１】ＰＮＧ画像の一部を表示する枠を設定し、ＰＮＧ画像上でこの枠を移動させつつ、プレーン上での表示位置も移動させる例を示す略線図である。
【図５２】命令play_sound(sound_id)が追加された命令グループDispCmds(i)の記述とグラフィクスオブジェクトの表示変化の一例を示す略線図である。
【図５３】ボタン画像に音声データを割り当てたグラフィクスオブジェクトの一例のデータ構造を示す略線図である。
【図５４】グラフィクスオブジェクトに音声データを格納する一例の方法を示す略線図である。
【図５５】音声データの処理系を追加したグラフィクスオブジェクトデコーダモデルの一例の構成を示す機能ブロック図である。
【図５６】音声データを加えた場合のグラフィクスオブジェクトの一例の構造を示すシンタクスを示す略線図である。
【図５７】グラフィクスオブジェクトに音声データを格納しない場合の一例のデータの管理構造を示す略線図である。
【図５８】グラフィクスオブジェクトに音声データを格納しない場合の音声データの再生についてより具体的に説明するための略線図である。
【図５９】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図６０】ファイル「HdmvSound.bdmv」の一例のシンタクスを示す略線図である。
【図６１】ファイル「HdmvSound.bdmv」の構成を示す略線図である。
【図６２】第３の格納方法による効果音再生の一例のアプリケーションイメージを示す略線図である。
【図６３】インタラクティブグラフィクスストリームの一例の構成を概略的に示す略線図である。
【図６４】インタラクティブコンポジションセグメントの一例の構成を示す略線図である。
【図６５】インタラクティブコンポジションセグメントにおけるフィールドneibour_infoを説明するための図である。
【図６６】この発明の実施の一形態で画像の表示系として用いられるプレーン構造の他の例を示す略線図である。
【図６７】動画プレーン、字幕プレーンおよびグラフィクスプレーンの他の例の解像度および表示可能色を示す略線図である。
【図６８】他の例により動画プレーン、字幕プレーンおよびグラフィクスプレーンを合成する一例の構成を示すブロック図である。
【図６９】プレーヤデコーダの一例の構成を示す機能ブロック図である。
【図７０】プレーヤデコーダの一例の構成を示す機能ブロック図である。
【図７１】サブプレイアイテムを用いて音声データファイルを参照することを説明するための図である。
【図７２】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図７３】この発明の実施の第２の形態による独自に定義されたシナリオ記述言語を用いた場合のシナリオの一例の内部構造を示す略線図である。
【図７４】シナリオの構成の分類を説明するための略線図である。
【図７５】シナリオの構成の分類を説明するための略線図である。
【図７６】タイトルおよびチャプタについて説明するための略線図である。
【図７７】この発明の実施の第２の形態におけるシナリオで記述されるコマンドによるＢＤ仮想プレーヤ３０の動作を概略的に示すフローチャートである。
【図７８】プレイリストの再生動作を説明するためのフローチャートである。
【図７９】シナリオの一例の階層構造を示す略線図である。
【図８０】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図８１】シナリオを記述するためのシナリオファイル(scenario.pbc)の一例の構造を表すシンタクスを示す略線図である。
【図８２】ブロックGlobalCommand()の一例の構造を表すシンタクスを示す略線図である。
【図８３】ブロックTitleEntry()の一例のデータ構造を表すシンタクスを示す略線図である。
【図８４】ブロックscenario()の一例の構造を表すシンタクスを示す略線図である。
【図８５】この発明の実施の第２の形態によるシナリオで用いられるコマンドの一例を示す略線図である。
【図８６】従来技術による一例のＤＶＤメニュー画面を示す略線図である。
【図８７】リモコン操作により選択状態のボタンを変更する様子を示す略線図である。
【図８８】決定ボタンの操作によりボタンが実行状態を表す色に変更される様子を示す略線図である。
【図８９】従来技術によるメニュー画面の構成の例を示す略線図である。
【図９０】従来技術によるサブピクチャの一例のデータ構成を示す略線図である。
【発明を実施するための形態】
【００４９】
以下、この発明について、下記の構成に従い説明する。
１．ＢＤＡＶフォーマットの概要
２．発明の実施の第１の形態
２−１．プレーンについて
２−２．メニュー画面
２−３．シナリオについて
２−４．仮想プレーヤモデルについて
２−５．メソッドについて
２−６．シナリオの実行について
２−７．デコーダモデル
２−８．ユーザインターフェイス
２−９．データ構造について
２−１０．グラフィクスオブジェクトのデコーダモデルについて
２−１１．グラフィクスの転送速度について
２−１２．グラフィクスオブジェクトの構造の詳細
２−１３．効果音について
２−１４．音声データのディスクへの格納方法について
２−１４ａ．第１の格納方法
２−１４ｂ．第２の格納方法
２−１４ｃ．第３の格納方法
２−１５．プレーンの別の例について
２−１６．デコーダモデルの別の例について
２−１７．デコーダモデルのさらに別の例について
３．発明の実施の第２の形態
３−１．シナリオについて
３−２．シナリオの分類
３−３．仮想プレーヤモデルについて
３−４．シンタクスについて
３−５．コマンドについて
４．その他
【００５０】
１．ＢＤＡＶフォーマットの概要
先ず、理解を容易とするために、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関し、"Blu-ray Disc Rewritable Format Ver1.0 part3 Audio Visual Specifications"で規定されている、コンテンツすなわちディスクに記録されたＡＶ(Audio/Video)データの管理構造について説明する。以下では、この管理構造をＢＤＡＶフォーマットと称する。
【００５１】
例えばＭＰＥＧ(Moving Pictures Experts Group)ビデオやＭＰＥＧオーディオなどの符号化方式で符号化され、ＭＰＥＧ２システムに従い多重化されたビットストリームは、クリップＡＶストリーム（またはＡＶストリーム）と称される。クリップＡＶストリームは、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part2"で定義されたファイルシステムにより、ファイルとしてディスクに記録される。このファイルを、クリップＡＶストリームファイル（またはＡＶストリームファイル）と称する。
【００５２】
クリップＡＶストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップＡＶストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップＡＶストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part3"で、このデータベースが規定される。
【００５３】
図１は、ＡＶストリームファイルの一部または全部の範囲を指定して、必要な部分だけを並べて再生する再生順序指定の仕組みを模式的に示す。図１において、プレイリスト(PlayList)は、ＡＶストリームファイルの一部または全部の範囲を指定して、必要な部分だけを再生する指示を与える。ユーザがコンテンツの再生を行う際には、このプレイリストの単位で選択する。つまり、プレイリストは、ユーザからみてひとまとまり、すなわち、再生が連続に行われることをユーザが暗黙に期待する、映像・音声の単位である。
【００５４】
最も簡単なプレイリストの構成は、記録が開始されてから記録が終了されるまでの一繋がりのＡＶストリームファイルからなり、編集をしなければ、これが一つのプレイリストになる。
【００５５】
プレイリストは、再生するＡＶストリームファイルの指定と、指定されたＡＶストリームファイルの再生箇所を指定する再生開始点と再生終了点の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるＡＶストリームファイルの一部分を再生するということになる。
【００５６】
クリップＡＶストリームは、上述したように、ビデオデータやオーディオデータがＭＰＥＧ２  ＴＳ（トランスポートストリーム）の形式などに多重化されたビットストリームである。このクリップＡＶストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
【００５７】
クリップＡＶストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップＡＶストリームとクリップ情報とから構成される、一つのオブジェクトである。
【００５８】
ファイルは、一般的に、バイト列として扱われる。クリップＡＶストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップＡＶストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
【００５９】
１のディスク中に記録された全てのプレイリストおよびクリップは、ボリュームインフォメーション(Volume Information)で管理される。
【００６０】
図２は、上述のようなクリップＡＶストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ(Unified Modeling Language)図である。プレイリストは、１または複数のプレイアイテムに対応付けられ、プレイアイテムは、１のクリップに対応付けられる。１のクリップに対して、それぞれ開始点および／または終了点が異なる複数のプレイアイテムを対応付けることができる。１のクリップから１のクリップＡＶストリームファイルが参照される。同様に、１のクリップから１のクリップ情報ファイルが参照される。また、クリップＡＶストリームファイルとクリップ情報ファイルとは、１対１の対応関係を有する。このような構造を定義することにより、クリップＡＶストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
【００６１】
また、図３のように、複数のプレイリストから同一のクリップを参照することもできる。図３の例では、クリップ１が２つのプレイリスト２および３から参照されている。図３において、クリップ１は、横方向が時間軸を表す。プレイリスト２により、コマーシャル区間ｂ−ｃとシーンｅとを含むクリップ１の区間ａ〜ｆが参照される。一方、プレイリスト３により、シーンｅを含むクリップ１の区間ｄ−ｇが参照される。プレイリスト２を指定することで、クリップ１の区間ａ〜ｆを再生することができ、プレイリスト３を指定することで、クリップ１の区間ｄ−ｇを再生することができる。
【００６２】
次に、"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定された、記録媒体に記録されるファイルの管理構造について、図４を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、１つのディレクトリ（図４の例ではルートディレクトリ）が作成される。このディレクトリの下が、１つの記録再生システムで管理される範囲とする。
【００６３】
ルートディレクトリの配下に、ディレクトリＢＤＡＶが置かれる。ディレクトリＢＤＡＶは、図４のように、ディレクトリＢＤＡＶ、ＢＤＡＶ１、ＢＤＡＶ２、・・・、ＢＤＡＶｎの如く、ルートディレクトリの配下に複数を置くことができる。以下では、複数のディレクトリＢＤＡＶ、ＢＤＡＶ１、ＢＤＡＶ２、・・・、ＢＤＡＶｎをディレクトリＢＤＡＶで代表させて説明する。
【００６４】
ディレクトリＢＤＡＶの配下には、以下の６種類のファイルが置かれる。
（１）info.bdav
（２）menu.tidx、mark.tidx
（３）menu.tdt1、menu.tdt2、mark.tdt1、mark.tdt2
（４）#####.rpls、#####.vpls
（５）%%%%%.clpi
（６）*****.m2ts
【００６５】
なお、（４）のファイル「#####.rpls」および「#####.vpls」において、「#####」は、任意の番号を示す。同様に、（５）のファイル「%%%%%.clpi」において、「%%%%%」は任意の番号を示す。また、（６）のファイル「*****.m2ts」において、「*****」は、ファイル「*****.m2ts」がファイル「%%%%%.clpi」と一対一で対応するような番号である。例えば、番号「*****」は、番号「%%%%%」と同一とすることができる。
【００６６】
（１）のファイル「info.bdav」は、ディレクトリＢＤＡＶ全体の情報が格納されるファイルである。（２）のファイル「menu.tidx」および「mark.tidx」は、サムネイル画像の情報が格納されるファイルである。（３）のファイル「menu.tdt1」、「menu.tdt2」、「mark.tdt1」および「mark.tdt2」は、サムネイル画像が格納されるファイルである。各ファイルの拡張子「tdt1」および「tdt2」は、当該ファイルに格納されているサムネイル画像データが暗号化されているか否かを示す。
【００６７】
（４）のファイル「#####.rpls」、「#####.vpls」は、プレイリストの情報が格納されるファイルである。ファイル「#####.rpls」、「#####.vpls」は、ディレクトリＢＤＡＶの配下に設けられたディレクトリＰＬＡＹＬＩＳＴのさらに配下に置かれている。
【００６８】
（５）のファイル「%%%%%.clpi」は、クリップ情報が格納されるファイルである。ファイル「%%%%%.clpi」は、ディレクトリＢＤＡＶの配下に設けられたディレクトリＣＬＩＰＩＮＦのさらに配下に置かれている。（６）のファイル「*****.m2ts」は、クリップＡＶストリームが格納される、クリップＡＶストリームファイルである。このクリップＡＶストリームファイルは、ファイル名の番号「*****」により、１つのクリップ情報ファイル「%%%%%.clpi」に対応付けられる。ファイル「*****.m2ts」は、ディレクトリＢＤＡＶの配下に設けられたディレクトリＳＴＲＥＡＭのさらに配下に置かれる。
【００６９】
各ファイルについて、より詳細に説明する。（１）のファイル「info.bdav」は、ディレクトリＢＤＡＶの配下に唯一、設けられる。図５は、ファイル「info.bdav」の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるＣ言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
【００７０】
図５において、ファイル「info.bdav」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorは、文字列「BDAV」が格納され、このファイルがファイル「info.bdav」であることが示される。フィールドversion_numberは、このファイル「info.bdav」のバージョンが示される。ブロックUIAppInfoBDAV()は、ディレクトリＢＤＡＶの配下に関する情報が格納される。ブロックTableOfPlayLists()は、プレイリストの並びに関する情報が格納される。ブロックMakersPrivateData()は、記録再生装置のメーカ固有の情報が格納される。
【００７１】
ファイル「info.bdav」の先頭には、各ブロックの先頭を表すアドレスが記述される。例えば、フィールドTableOfPlayLists_Start_addressは、ブロック「TableOfPlayLists()」の開始する位置がファイル内の相対バイト数で示される。
【００７２】
図６は、ブロックUIAppInfoBDAV()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlength直後のフィールドからこのブロックUIAppInfoBDAV()の最後までの長さがバイトで示される。フィールドBDAV_character_setは、このブロックUIAppInfoBDAV()内のフィールドBDAV_nameに記録されている文字列の文字セットが示される。文字セットとしては、ＡＳＣＩＩ、Ｕｎｉｃｏｄｅなどが選択できる。
【００７３】
フラグBDAV_protect_flagは、ディレクトリＢＤＡＶの配下に置かれるコンテンツを、ユーザに制限無しに見せて良いか否かを示す。例えば、このフラグが値「１」にセットされており、且つ、ユーザが正しく暗証番号PIN(Personal Identification Number)を入力できた場合に、ディレクトリＢＤＡＶの配下に置かれたコンテンツをユーザに見せることができるものとする。一方、フラグBDAV_protect_flagが値「０」にセットされている場合には、ユーザによる暗証番号PINの入力が無くても、ディレクトリＢＤＡＶの配下に置かれたコンテンツをユーザに見せることができる。
【００７４】
暗証番号PINは、フィールドPINに記録される。暗証番号PINは、例えば４桁の０〜９の数字からなり、上述のように再生制御を有効にした場合に必要となる暗証番号を表す。暗証番号PINのそれぞれの数字は、例えばＩＳＯ(International Organization for Standarization)／ＩＥＣ(International Electrotechnical Commission)６４６の規定に従って符号化される。
【００７５】
このブロックUIAppInfoBDAV()に示される以上の情報により、ディレクトリＢＤＡＶに対する再生制限が規定される。なお、詳細は後述するが、個々のプレイリストに対する再生制限については、ファイル「#####.rpls」、「#####.vpls」内に示されるブロックUIAppInfoPlayList()の中で定義されるフラグplayback_control_flagによって規定される。
【００７６】
この例では、ディレクトリＢＤＡＶの配下のコンテンツの再生を再開する際に、優先して再生すべきプレイリストを指定する、レジューム機能を用いることができる。このレジューム機能は、前回視聴を中断した箇所から再生を再開したい場合などに使うことを想定している。
【００７７】
図６において、フラグresume_valid_flagは、このレジューム機能の有効／無効を示す。例えば、このフラグが値「０」にセットされている場合には、レジューム機能は無効とされ、このフラグが値「１」にセットされている場合には、レジューム機能が有効とされ、その際、フィールドresume_PlayList_file_nameで指定されるプレイリストを、優先して再生すべきプレイリストとして扱う。
【００７８】
フィールドref_to_menu_thumbnail_indexは、このディレクトリＢＤＡＶを代表するサムネイル画像が存在する場合、そのサムネイル画像を特定するサムネイル番号が格納される領域である。Ｂｌｕ−ｒａｙ  Ｄｉｓｃの規格では、ディレクトリＢＤＡＶを代表する静止画を特にメニューサムネイルと呼ぶ。フィールドref_to_menu_thumbnail_indexで指定されるインデックスthumbnail_indexを持つサムネイル画像がこのディレクトリＢＤＡＶのメニューサムネイルとなる。
【００７９】
フィールドBDAV_name_lengthは、フィールドBDAV_nameに示されるディレクトリＢＤＡＶ名のバイト長を示す。このフィールドBDAV_nameにおいて、左から、フィールドBDAV_name_lengthで示されるだけのバイト数が有効な文字列であり、それがこのディレクトリＢＤＡＶの名前を示す。なお、フィールドBDAV_nameの中で、フィールドBDAV_name_lengthで示された有効な文字列の後のバイト列には、どのような値が入っていても良い。
【００８０】
図７は、ブロックTableOfPlayLists()の一例の構造を表すシンタクスを示す。フィールドnumber_of_PlayListsは、このディレクトリＢＤＡＶの配下に置かれたプレイリストの数が示される。このプレイリスト数をループ変数とする、次に続く「for」文のループにおいてフィールドPlayList_file_nameにより示されるプレイリストの並びが、プレイリスト一覧表示画面などに表示される際のプレイリストの順序を示す。プレイリストは、フィールドPlayList_file_nameにより、「#####.rpls」や「#####.vpls」といったファイル名で指定される。
【００８１】
ファイル「#####.rpls」および「#####.vpls」は、上述したように、ディレクトリＰＬＡＹＬＩＳＴの配下に置かれる。これらのファイルは、１つのプレイリストと一対一に対応している。
【００８２】
図８は、ファイル「#####.rpls」および「#####.vpls」の一例の構造を表すシンタクスを示す。図８において、ファイル「#####.rpls」および「#####.vpls」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
【００８３】
ブロックUIAppInfoPlayList()は、このプレイリストに関する属性情報が格納される。ブロックPlayList()は、このプレイリストを構成するプレイアイテムに関する情報が格納される。ブロックPlayListMark()は、このプレイリストに付されるマークの情報が格納される。ブロックMakersPrivateData()は、このプレイリストファイルを記録した装置の、メーカ固有の情報が格納される。ファイル「#####.rpls」および「#####.vpls」の先頭に設けられるフィールドPlayList_start_address、PlayListMark_start_addressおよびMakersPrivateData_start_addressには、それぞれ対応するブロックの先頭アドレスが例えば３２ビットのアドレス情報として示される。
【００８４】
各ブロックの先頭アドレスがファイル「#####.rpls」および「#####.vpls」の先頭に示されるために、ブロックの前および／または後ろに、任意の長さのデータpadding_wordを挿入することができる。但し、ファイル「#####.rpls」および「#####.vpls」の最初のブロックであるブロックUIAppInfoPlayList()の開始位置は、ファイルの先頭から３２０バイト目に固定される。
【００８５】
図９は、ブロックUIAppInfoPlayList()の一例の構造を表すシンタクスを示す。ブロックUIAppInfoPlayList()は、プレイリストの再生において直接的に必要とされない、プレイリストに関する各種の属性情報が格納される。フィールドPlayList_character_setは、プレイリストに関する文字列情報の文字セットが指定される。
【００８６】
フラグplayback_control_flagは、情報表示やプレイリストの再生を暗証番号PINに基づき制限するか否かが指定される。例えばフラグplayback_control_flagが値「１」であれば、ユーザにより正しい暗証番号PINが入力されなければ、プレイリストのサムネイル画像などの情報表示や、プレイリストの再生ができないとされる。フラグwrite_protect_flagは、消去禁止フラグである。例えばこのフラグwrite_protect_flagが値「１」であれば、ユーザが容易にプレイリストを消去できないようなユーザインタフェースにする必要がある。フラグis_played_flagは、このプレイリストが再生済みであることを示す。フラグis_edited_flagは、このプレイリストが編集されたことを示す。
【００８７】
フィールドtime_zoneは、このプレイリストが記録された地点のタイムゾーンを示す。フィールドrecord_time_and_dateは、プレイリストの記録日時を示す。フィールドPlayList_durationは、プレイリストの再生時間を示す。
【００８８】
フィールドmaker_IDおよびmaker_model_codeは、このプレイリストを最終更新した記録機のメーカおよび記録機をそれぞれ特定する情報が例えば番号で示される。フィールドchannel_numberは、記録したクリップＡＶストリームのチャンネル番号が示され、フィールドchannel_nameは、当該チャンネル名が示される。フィールドchannel_nameに示されるチャンネル名の長さがフィールドchannel_name_lengthに示される。フィールドchannel_name の領域のうち、フィールドchannel_name_lengthで示される長さの文字列が有効となる。フィールドPlayList_nameは、フィールドPlayList_name_lengthに示される値を有効長としてプレイリスト名が示される。フィールドPlayList_detailは、フィールドPlayList_detail_lengthに示される値を有効長としてプレイリストの詳細情報が示される。
【００８９】
図１０は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlengthの直後のフィールドからこのブロックPlayList()の終端までのバイト長を示す。フィールドPL_CPI_typeは、このプレイリストが持つＣＰＩ（Characteristic Point Information：特徴点情報）の種類を示す。フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を示す。フィールドnumber_of_SubPlayItemsは、このプレイリストに付けられているアフレコオーディオ用のプレイアイテム（サブプレイアイテム）の数を示す。詳細は省略するが、プレイリストは、所定の条件を満たす場合にだけ、サブプレイアイテムを持つことができる。
【００９０】
ブロックPlayItem()は、プレイアイテムの情報が格納される。ブロックSubPlayItem()は、サブプレイアイテムの情報が格納される。
【００９１】
図１１は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと一対一に対応するクリップ情報ファイル（拡張子がclpiであるファイル）のファイル名が文字列で示される。クリップ情報ファイルは、拡張子が「ｃｌｐｉ」とされているファイルである。
【００９２】
フィールドClip_codec_identifierは、このプレイアイテムにより参照されるクリップの符号化方式を示す。この例では、フィールドClip_codec_Identifierは、値「Ｍ２ＴＳ」に固定的とされる。フィールドconnection_conditionは、このプレイアイテムが次のプレイアイテムとの間でどのような接続がされているかを示す情報である。すなわち、フィールドconnection_conditionにより、プレイアイテムとプレイアイテムとの間が継ぎ目なくシームレスに再生できるか否かが示される。
【００９３】
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。シーケンスSTC_sequenceは、ＭＰＥＧ２  ＴＳ(Transport Stream)における時間軸の基準であるＰＣＲ(Program Clock Reference)が連続な範囲を表すＢｌｕ−ｒａｙ  Ｄｉｓｃ規格独自の構造である。シーケンスSTC_sequenceには、クリップ内で一意な番号STC_idが割り当てられる。このシーケンスSTC_sequence内では、不連続の無い一貫した時間軸を定義できるので、プレイアイテムの開始時刻および終了時刻を一意に定めることができる。つまり、各プレイアイテムの開始点と終了点は、同一のシーケンスSTC_sequenceに存在していなければならない。フィールドref_to_STC_idでは、番号STC_idによりシーケンスSTC_sequenceが指定される。
【００９４】
フィールドIN_timeおよびOUT_Timeは、このプレイアイテムにおける開始点および終了点の、シーケンスSTC_sequence 上でのタイムスタンプpts(presentation_time_stamp)をそれぞれ示す。
【００９５】
ブロックBridgeSequnceInfo()は、ブリッジクリップ(Bridge-Clip)に関する情報が格納される。ブリッジクリップは、図１２に一例が示されるように、プレイアイテム間を継ぎ目無く、シームレスに再生する機能を実現する際に作成されるビットストリームである。前のプレイアイテムと現在のプレイアイテムとの継ぎ目の部分で、本来再生すべきビットストリームとは異なるビットストリーム、すなわちブリッジクリップを代わりに再生することで、２つのプレイアイテムをシームレスに再生することができる。このブリッジクリップによる機能は、この発明と関連性が低いので、詳細は省略する。
【００９６】
図１３は、ブロックPlayListMark()の一例の構造を表すシンタクスを示す。ブロックPlayListMark()は、マークの情報が格納されるデータ構造である。マークは、プレイリスト上の時刻を保持するための構造であって、マークを用いることにより、プレイリスト中への頭出し点の設定、プレイリストを細分化するチャプタの構造を設ける、などの機能が実現される。さらに、後述するグラフィクスプレーン上に描画された画像の表示開始／停止のタイミングを、マークを用いて指定することができる。
【００９７】
フィールドlengthは、フィールドlengthの直後のフィールドからブロックPlayListMark()の終端までのバイト長を示す。フィールドnumber_of_PlayList_marksは、プレイリスト中のマークの数を表す。「for」文での１回のループが１つのマークの情報を示す。フラグmark_invalid_flagは、このマークが有効であるか否かを示す。例えば、フラグmark_invalid_flagが値「０」でそのマークが有効であることが示され、値「１」であれば、そのマークの情報がデータベース上に存在するが、当該マークがユーザには見えない無効マークとされていることを示す。
【００９８】
フィールドmark_typeは、このマークの種類を表す。マークの種類としては、プレイリストのサムネイル画像（代表画）とする映像の位置を示すマーク、どこまで再生したかを示すレジュームマーク、頭出し点を示すチャプタマーク、ある区間の再生を飛ばして先に進むことを示すスキップマーク、グラフィクス画像の読み込み開始タイミングを示すマーク、グラフィクス画像の表示開始のタイミングを示すマーク、グラフィクス画像の表示停止のタイミングを示すマークなどがある。
【００９９】
フィールドmark_name_lengthは、後述するフィールドmark_nameのデータ長を示す。フィールドmaker_IDは、このマークを作成した記録機の製造者を示す。これは、製造者独自のマークを識別する際に用いられる。フィールドref_to_PlayItem_idは、このマークにより指示される時刻がどのプレイアイテム上に存在するかが示される。フィールドmark_time_stampは、このマークにより指示される時刻が示される。
【０１００】
フィールドentry_ES_PIDは、このマークがどのエレメンタリストリームすなわち映像データおよび／または音声データが符号化されたストリームに対して付与されたものかが示される。フィールドref_to_menu_thumbnail_indexおよびフィールドref_to_mark_thumbnail_indexは、マークを視覚的に表すサムネイル画像を示す。サムネイル画像としては、例えばそのマークにより指定される時刻の映像を静止画として抜き出した画像が考えられる。
【０１０１】
フィールドdurationは、マークが時間軸上で長さを持つ場合に使われる。例えばスキップマークであれば、どのくらいの時間ジャンプをするかがフィールドdurationにより指定される。
【０１０２】
フィールドmakers_informationは、製造者独自の情報を記録するための領域である。フィールドmark_nameは、マークに名前をつけた際、その名前を格納するための領域であり、サイズが上述のフィールドmark_name_lengthで指定される。
【０１０３】
図１４は、ファイル「%%%%%.clpi」の一例の構造を表すシンタクスを示す。上述したように、ファイル「%%%%%.clpi」は、ディレクトリＣＬＩＰＩＮＦの配下に置かれ、各ＡＶストリームファイル（ファイル「*****.m2ts」）毎に作られる。ファイル「%%%%%.clpi」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
【０１０４】
ブロックClipInfo()は、クリップに関する情報が格納される。ブロックSequenceInfo()は、ＭＰＥＧ２システムにおけるトランスポートストリームの時刻基準を表すＰＣＲの不連続点に関する情報が格納される。ブロックProgramInfo()は、ＭＰＥＧ２システムのプログラムに関する情報が格納される。ブロックCPI()は、ランダムアクセス開始可能点などの、ＡＶストリーム中の特徴的な箇所を表す特徴点情報ＣＰＩに関する情報が格納される。ブロックClipMark()は、クリップに付された頭出しのためのインデックス点やコマーシャルの開始および／または終了点などのマーク情報が格納される。ブロックMakersPrivateData()は、記録機の製造者独自の情報が格納される。
【０１０５】
また、これら各ブロックのファイル「%%%%%.clpi」中での先頭を表すアドレス情報が、当該ファイルの先頭部分にフィールドSequenceInfo_start_address、ProgramInfo_start_address、CPI_start_address、ClipMark_start_addressおよびMakersPrivateData_start_addressとして示される。なお、このクリップファイル「%%%%%.clpi」自体は、この発明と関連性が低いので、詳細な説明を省略する。
【０１０６】
ＢＤＡＶフォーマットは、以上に概略的に説明したようなデータ構造を持つことにより、クリップＡＶストリーム中の再生したい部分を開始および終了点の組で指定したプレイアイテムの並びでプレイリストを構築し、ユーザが認識するひとまとまりの再生単位を管理することが可能となる。
【０１０７】
２．発明の実施の第１の形態
次に、この発明の実施の第１の形態について説明する。この発明では、上述したＢＤＡＶフォーマットを拡張し、リアルタイムデコード方式を用いる動画データおよび字幕データと、蓄積型のデコード方式を用いる画像データとをそれぞれ独立的に用意し、これらのデータを合成して表示することにより、より自由度の高いユーザインターフェイスの実現を可能としている。
【０１０８】
また、ＢＤＡＶフォーマットの拡張は、"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定されたプレイリストと互換性が保たれるようになされ、インタラクティブ機能の拡張を実現する。以下、拡張されたＢＤＡＶフォーマットを、ＢＤＭＶフォーマットと称する。このＢＤＭＶフォーマットは、再生専用ディスク（ＢＤ−ＲＯＭ：Blu-ray Disc-Read Only Memory）に用いて好適なものである。
【０１０９】
２−１．プレーンについて
この発明の実施の第１の形態では、画像の表示系について、図１５に一例が示されるようなプレーン構成を取る。動画プレーン１０は、最も後ろ側（ボトム）に表示され、プレイリストで指定された画像（主に動画データ）が扱われる。字幕プレーン１１は、動画プレーン１０の上に表示され、動画再生中に表示される字幕データが扱われる。グラフィクスプレーン１２は、最も前面に表示され、メニュー画面を表示するための文字データやビットマップデータなどのグラフィクスデータが扱われる。１つの表示画面は、これら３つのプレーンが合成されて表示される。
【０１１０】
ここで、従来のＤＶＤビデオと異なる特徴的な点は、従来の技術で説明した字幕やメニュー画面、ボタンなどが表示されるサブピクチャを、字幕プレーン１１およびグラフィクスプレーン１２とに分離し、字幕とボタンとをそれぞれ独立的に制御できるようにしたことである。上述したように、従来のＤＶＤビデオでは、メニュー画面やボタンなどのグラフィクス表示と、字幕表示とを、同じ仕組みで制御しており、これらを同一プレーン上に表示していた。そして、同時に表示できるビットマップ画像は、１枚に限られていた。そのため、従来のＤＶＤビデオでは、複数のビットマップ画像を同時に表示することができなかった。この発明では、字幕を表示する字幕プレーン１１と、グラフィクス表示を行うグラフィクスプレーン１２とをそれぞれ独立的に設けることで、この従来のＤＶＤビデオの持つ問題点を解消している。
【０１１１】
なお、字幕プレーン１１およびグラフィクスプレーン１２が、従来の"Blu-ray Disc Rewritable Format Ver1.0 part3"に対する拡張部分であると考えることができる。
【０１１２】
動画プレーン１０、字幕プレーン１１およびグラフィクスプレーン１２は、それぞれ独立して表示が可能とされ、例えば、図１６に一例が示されるような解像度および表示可能色を有する。動画プレーン１０は、解像度が１９２０画素×１０８０ラインで１画素当たりに換算したデータ長が１６ビットであって、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒが４：２：２のシステム（以下、ＹＣｂＣｒ（４：２：２））とされる。なお、ＹＣｂＣｒ（４：２：２）は、各画素当たり輝度信号Ｙが８ビット、色差信号Ｃｂ、Ｃｒがそれぞれ８ビットで、色差信号Ｃｂ、Ｃｒが水平２画素で一つの色データを構成すると見なすカラーシステムである。
【０１１３】
グラフィクスプレーン１２は、解像度が１９２０画素×１０８０ラインで各画素のサンプリング深さが２４ビットとされ、カラーシステムは、ＹＣｂＣｒ（４：４：４）、または、Ｒ（赤色）Ｇ（緑色）Ｂ（青色）が４：４：４のシステム（以下、ＲＧＢ（４：４：４：））を選択可能とされる。字幕プレーン１１は、１９２０画素×１０８０ラインで各画素のサンプリング深さが８ビットとされ、カラーシステムは、２５６色のパレットを用いた８ビットカラーマップアドレスとされる。
【０１１４】
グラフィクスプレーン１２および字幕プレーン１１は、２５６段階のアルファブレンディングが可能とされており、他のプレーンとの合成の際に、不透明度を２５６段階で設定することが可能とされている。不透明度の設定は、画素毎に行うことができる。以下では、不透明度αが（０≦α≦１）の範囲で表され、不透明度α＝０で完全に透明、不透明度α＝１で完全に不透明であるものとする。
【０１１５】
字幕プレーン１１では、例えばＰＮＧ(Portable Network Graphics)形式の画像データが扱われる。また、グラフィクスプレーン１２でも、例えばＰＮＧ形式の画像データを扱うことができる。ＰＮＧ形式は、１画素のサンプリング深さが１ビット〜１６ビットとされ、サンプリング深さが８ビットまたは１６ビットの場合に、アルファチャンネル、すなわち、それぞれの画素成分の不透明度情報（アルファデータと称する）を付加することができる。サンプリング深さが８ビットの場合には、２５６段階で不透明度を指定することができる。このアルファチャンネルによる不透明度情報を用いてアルファブレンディングが行われる。また、２５６色までのパレットイメージを用いることができ、予め用意されたパレットの何番目の要素（インデックス）であるかがインデックス番号により表現される。
【０１１６】
なお、字幕プレーン１１およびグラフィクスプレーン１２で扱われる画像データは、ＰＮＧ形式に限定されない。ＪＰＥＧ方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
【０１１７】
図１７は、上述の図１５および図１６に従い３つのプレーンを合成する一例の構成を示す。動画プレーン１０の動画データが４２２／４４４変換回路２０に供給される。動画データは、４２２／４４４変換回路２０でカラーシステムがＹＣｂＣｒ（４：２：２）からＹＣｂＣｒ（４：４：４）に変換され、乗算器２１に入力される。
【０１１８】
字幕プレーン１１の画像データがパレット２２に入力され、ＲＧＢ（４：４：４）の画像データとして出力される。この画像データに対してアルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α１（０≦α１≦１）がパレット２２から出力される。
【０１１９】
図１８は、パレット２２の入出力データの一例を示す。パレット２２は、例えばＰＮＧ形式のファイルに対応したパレット情報がテーブルとして格納される。パレット２２は、入力された８ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ８ビットのデータからなるＲＧＢ（４：４：４）のデータが出力される。それと共に、パレット２２では、不透明度を表すアルファチャンネルのデータαが取り出される。
【０１２０】
図１９は、パレット２２に格納される一例のパレットテーブルを示す。２５６個のカラーインデックス値〔０ｘ００〕〜〔０ｘＦＦ〕（〔０ｘ〕は１６進表記であることを示す）のそれぞれに対して、各々８ビットで表現される三原色の値Ｒ、ＧおよびＢと、不透明度αとが割り当てられる。パレット２２は、入力されたＰＮＧ形式の画像データに基づきパレットテーブルが参照され、画像データにより指定されたインデックス値に対応する、それぞれ８ビットのデータからなるＲ、ＧおよびＢ各色のデータ（ＲＧＢデータ）と、不透明度αとを画素毎に出力する。
【０１２１】
パレット２２から出力されたＲＧＢデータは、ＲＧＢ／ＹＣｂＣｒ変換回路２９に供給され、各データ長が８ビットの輝度信号Ｙと色信号Ｃｂ、Ｃｒのデータに変換される（以下、まとめてＹＣｂＣｒデータと称する）。これは、以降のプレーン間合成を共通のデータ形式で行う必要があるためで、動画データのデータ形式であるＹＣｂＣｒデータに統一している。
【０１２２】
ＲＧＢ／ＹＣｂＣｒ変換回路２９から出力されたＹＣｂＣｒデータおよび不透明度データａ１とがそれぞれ乗算器２３に入力される。乗算器２３では、入力されたＹＣｂＣｒデータに不透明度データα１が乗ぜられる。乗算結果は、加算器２４の一方の入力端に入力される。なお、乗算器２３では、ＹＣｂＣｒデータにおける輝度信号Ｙ、色差信号Ｃｂ、Ｃｒのそれぞれについて、不透明度データα１との乗算が行われる。また、不透明度データα１の補数（１−α１）が乗算器２１に供給される。
【０１２３】
乗算器２１では、４２２／４４４変換回路２０から入力された動画データに不透明度データα１の補数（１−α１）が乗ぜられる。乗算結果は、加算器２４の他方の入力端に入力される。加算器２４において、乗算器２１および２３の乗算結果が加算される。これにより、動画プレーン１０と字幕プレーン１１とが合成される。加算器２４の加算結果が乗算器２５に入力される。
【０１２４】
グラフィクスプレーン１２の画像データがＲＧＢ／ＹＣｂＣｒ変換回路２６に入力される。グラフィクスプレーン１２の画像データのカラーシステムがＲＧＢ（４：４：４）である場合には、カラーシステムがＹＣｂＣｒ（４：４：４）に変換されてＲＧＢ／ＹＣｂＣｒ変換回路２６から出力される。ＲＧＢ／ＹＣｂＣｒ変換回路２６から出力されたＹＣｂＣｒデータが乗算器２７に入力される。
【０１２５】
グラフィクスプレーン１２で用いられる画像データがＰＮＧ形式である場合には、画像データ中に、画素毎に不透明度データα２（０≦α２≦１）を設定することができる。不透明度データα２は、乗算器２７に供給される。乗算器２７では、ＲＧＢ／ＹＣｂＣｒ変換回路２６から入力されたＹＣｂＣｒデータに対し、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒのそれぞれについて、不透明度データα２との乗算が行われる。乗算器２７による乗算結果が加算器２８の一方の入力端に入力される。また、不透明度データα２の補数（１−α２）が乗算器２５に供給される。
【０１２６】
乗算器２５では、加算器２４の加算結果に対して不透明度データα２の補数（１−α２）が乗ぜられる。乗算器２５の乗算結果は、加算器２８の他方の入力端に入力され、上述した乗算器２７による乗算結果と加算される。これにより、動画プレーン１０と字幕プレーン１１との合成結果に対して、さらに、グラフィクスプレーン１２が合成される。
【０１２７】
字幕プレーン１１およびグラフィクスプレーン１２において、例えば、表示すべき画像の無い領域の不透明度α＝０と設定することで、そのプレーンの下に表示されるプレーンを透過表示させることができ、例えば動画プレーン１０に表示されている動画データを、字幕プレーン１１やグラフィクスプレーン１２の背景として表示することができる。
【０１２８】
なお、この図１７に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。
【０１２９】
２−２．メニュー画面
グラフィクスプレーン１２には、ユーザに対して操作を促す画面、例えばメニュー画面を表示させることができる。図２０は、グラフィクスプレーン１２に表示されるメニュー画面６０の一例を示す。メニュー画面６０は、文字や画像を特定の位置に表示させ、ユーザが選択や実行を指示することで新たな動作が開始される「リンク」や「ボタン」を配置することができ、ユーザに対してＧＵＩ(Graphical User Interface)を提供する。
【０１３０】
「リンク」は、例えば、文字列や画像データに対して所定のファイルへのアクセス方法を示す記述を設定し、ユーザがポインティングデバイスなどを用いて画面に表示された当該文字列や画像データ上を指定することで、当該文字列や画像データに設定されたアクセス方法に従って当該ファイルにアクセスできるようにしたものである。「ボタン」は、「リンク」において、例えば通常の状態、選択された状態および押された状態の３種類の画像データを用意し、ユーザにより当該ボタン画像が指定された際に、３種類の画像データの表示を切り換えて、ユーザが行った操作をユーザ自身に認識しやすくしたものである。
【０１３１】
なお、「リンク」や「ボタン」に対する指定動作は、例えば、マウスを用いて画面上のカーソル表示を移動させ、「リンク」による文字列や画像、「ボタン」による画像上で、マウスボタンを１または複数回押すクリック動作を行うことで、なされる。マウス以外のポインティングデバイスによっても、同様の動作を行うことができる。また、これに限らず、リモートコントロールコマンダやキーボードのキー操作により、「リンク」や「ボタン」の指定を行うこともできる。例えば、方向キーなど所定のキーで指定を行いたい「リンク」や「ボタン」を選択し、決定キーなどにより選択された「リンク」や「ボタン」を指定する。
【０１３２】
図２０の例では、グラフィクスプレーン１２上に表示されたメニュー画面６０の上部に、画像データとしてタイトル６１が表示される。タイトル６１に続けて、リンクとしての選択項目６２Ａ、６２Ｂ、６２Ｃおよび６２Ｄが表示される。例えばリモートコントロールコマンダのキー操作により、選択項目６２Ａ、６２Ｂ、６２Ｃおよび６２Ｄのうち１つを選択し指定することで、指定された選択項目にリンクとして設定されたファイルがアクセスされる。
【０１３３】
メニュー画面６０の下部に、字幕の表示の有無や、出力される音声を例えば英語および日本語から選択するためのボタン６４および６５が表示される。これらボタン６４や６５を上述のように操作することで、例えば、それぞれの設定を行う画面を表示するためのファイルがアクセスされ、所定の画面表示がなされる。
【０１３４】
また、メニュー画面６０の左下部分には、項目の選択方法を示す文字列６３が表示される。この文字列６３も、グラフィクスプレーン１２上の表示である。
【０１３５】
この、図２０に一例が示されるような画面を表示するためには、画面の表示方法やリンク情報などを記述可能な、何らかの記述言語が必要とされる。この発明の実施の第１の形態では、この記述言語として、インターネット上のＷＷＷ(World Wide Web)などで広く普及している、ＨＴＭＬ(Hyper Text Markup Language)を用いる。
【０１３６】
周知のように、ＨＴＭＬ文書では、タグを用いて文書構造が示される。タグは、範囲の開始および終了をそれぞれ示す一対の記号からなり、テキスト中に埋め込んで任意の範囲を指定することができる。例えば、範囲の開始を示す開始タグは、文字列として予め定義された要素を記号「<」と「>」とで囲んで表現され、終了を示す終了タグは、開始を示すタグ中に記される文字列と同一の文字列が記号「</」と「>」とで囲んで表現される。タグ中に、当該タグにより示される要素の属性の記述を含ませることができる。なお、終了タグの記述を省略可能、または、記述しない要素も存在する。
【０１３７】
ＨＴＭＬで記述された文書は、一般的には、インターネットに接続されたＷｅｂサーバ上に置かれ、Ｗｅｂサーバによりインターネットに対して公開され、インターネットに接続されたパーソナルコンピュータなどのコンピュータ装置に搭載されたブラウザソフトウェアにより閲覧される。この発明の実施の第１の形態では、ＨＴＭＬの規格に対して独自の拡張を定義して、Ｂｌｕ−ｒａｙ  Ｄｉｓｃによるメニュー画面表示が可能なようにした。
【０１３８】
一例として、ＷＷＷにおいて、ＨＴＭＬ文書中に記述されたリンク情報は、ブラウザソフトウェア上でそのリンクを指定することで、他のＨＴＭＬファイルなどにアクセスし読み込むことができる。一方、上述したようなＢｌｕ−ｒａｙ  Ｄｉｓｃのメニュー画面６０では、例えばプレイリストの一覧が画像データや文字列、ボタンなどで表示され、あるプレイリストを指定することで、指定されたプレイリストがディスクから読み出され再生されることが期待される。
【０１３９】
ＨＴＭＬに対するこれらの拡張は、例えばプログラミング言語において新たな関数を定義することや、新たなＡＰＩ(Application Programming Interface)を定義することに相当する。
【０１４０】
２−３．シナリオについて
上述した図２０の例では、メニュー画面６０に対してプレイリストの一覧が表示される。このメニュー画面６０およびメニュー画面６０上の選択項目を選択した際に再生される映像・音声は、実際には、複数のプレイリストが並んだ構造によって構成されている。メニューの一項目を構成する複数のプレイリスト内で、プレイリストの関連付けを行うことで、ストーリーを分岐させる仕組みを実現することができる。ストーリーを分岐できるようにすることで、ユーザの選択によってストーリーが変化していくマルチストーリーや、ユーザの年齢に応じてシーンを差し替えるパレンタル機能を実現することができる。
【０１４１】
このような機能は、記録済みのディスクにおいて特に有用であって、テレビジョン放送の記録／再生が主目的である現行のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格では想定されていない。
【０１４２】
なお、画面表示の記述は、ＨＴＭＬに限らず、例えばＨＴＭＬ４．０の後継バージョンであるＸＨＴＭＬ(extensible HTML)を用いることもできる。これらに限らず、さらに他のマークアップ言語を用いて画面表示の記述を行うこともできる。
【０１４３】
以下では、この複数のプレイリストが並べられた構造を、シナリオと称する。図２１は、シナリオ７０の一例の内部構造を示す。このシナリオ７０は、複数のプレイリスト７３Ａ〜７３Ｍを含む。また、シナリオ７０は、グラフィクスプレーン１２を用いて分岐選択画面を表示する箇所が２箇所（画面８０Ａおよび８０Ｂ）設けられている。例えば画面８０Ａは、分岐選択画面を表示するためのグラフィクスデータ７４Ａとプレイリスト７３Ｃを有する。同様に、画面８０Ｂは、分岐選択画面を表示するためのグラフィクスデータ７４Ｂとプレイリスト７３Ｊを有する。
【０１４４】
このように、シナリオは、プレイリストの並びを決めると共に、グラフィクスプレーン１２に対する表示のタイミングを規定する。グラフィクスプレーン１２への表示のタイミングは、プレイリスト中のマークを用いて規定することができる。なお、シナリオ７０中のイベントハンドラ定義７１および７２については、後述する。
【０１４５】
図２１の例では、例えば上述のメニュー画面６０における選択項目（例えば選択項目６２Ａ）は、シナリオ７０に一例として「エントリ」と記されたプレイリスト７３Ａに対応する。すなわち、メニュー画面６０において選択項目６２Ａが指定されると、先ず、シナリオ７０のプレイリスト７３Ａが再生される。プレイリスト７３Ａの再生が終了されると、続けてプレイリスト７３Ｂが再生され、プレイリスト７３Ｂの再生が終了されると、プレイリスト７３Ｃが再生され、グラフィクスデータ７４Ａが読み出されて、ユーザにストーリーの分岐選択を促す画面８０Ａが表示される。
【０１４６】
画面８０Ａが表示された以降は、ユーザの選択に基づきストーリーが分岐される。この図２１の例では、第１の選択により、画面８０Ａの後、プレイリスト７３Ｄ、７３Ｅ、７３Ｆの順に再生され、全体の再生が終了される。プレイリスト７３Ｆの再生が終了された後、メインのメニュー画面（例えば上述したメニュー画面６０）に戻るようにしても良い。
【０１４７】
画面８０Ａにおける第２の選択では、画面８０Ａの後、プレイリスト７３Ｇが再生される。プレイリスト７３Ｇは、例えば所定のタイミングにマークが設定されている。プレイリスト７３Ｇが再生されると、再生装置自身の設定やユーザによる他のシナリオや分岐選択画面などでの選択に基づき、プレイリスト７３Ｇのマーク位置で分岐するか、プレイリスト７３Ｇを最後まで再生するかが制御される。プレイリスト７３Ｇが最後まで再生される場合には、プレイリスト７３Ｇの再生終了後、プレイリスト７３Ｍ、７３Ｉと再生され、プレイリスト７３Ｊがさらに再生される。
【０１４８】
一方、プレイリスト７３Ｇにおいてマーク位置で分岐された場合には、次にプレイリスト７３Ｋ、７３Ｌと再生され、プレイリスト７３Ｌの再生が終了されたら、次に、プレイリスト７３Ｉに設定されたマーク位置から再生が継続される。
【０１４９】
プレイリスト７３Ｊは、グラフィクスデータ７４Ｂが読み出されて、ユーザにストーリーの分岐選択を促す画面８０Ｂが表される。画面８０Ｂにおける第１の選択では、上述したプレイリスト７３Ｆが再生される。一方、画面８０Ｂの第２の選択では、プレイリスト７３Ｋに設定されているマーク位置からの再生が行われる。
【０１５０】
マークの検出、ユーザからの入力、プレーヤの動作変更の検出は、イベントドリブンモデルに基づきなされる。すなわち、プレイリストの再生が開始された、プレイリストの再生が終了された、プレイリストの再生中にマークが検出された、リモートコントロールコマンダのキー操作などによりユーザからの入力があった、などによりイベントが発生される。そして、特定のイベントがきっかけになって実行されるイベントハンドラをプログラム中に用意しておくことで、プレーヤにおいて、当該イベントにより期待される動作が実行される。
【０１５１】
図２１に一例が示されるシナリオ７０には、２つのイベントハンドラ７１および７２が設定されている。これらのうち、イベントハンドラ７１は、シナリオ７０の全体にわたって有効なイベントハンドラが記述される、グローバルなイベントハンドラ定義である。
【０１５２】
例えば、シナリオ７０内のプレイリスト７３Ａ〜７３Ｍの何れが再生中であっても、リモートコントロールコマンダに設けられたメニューボタンが押されたら、シナリオの一覧が表示されるメニュー画面６０が表示される、すなわち、メニュー画面６０を表示するためのプレイリストに再生処理が移行される動作を実現したい場合について考える。この場合、リモートコントロールコマンダのメニューボタンが押されたときに発生するイベント（メニューボタン押下イベント）に対応するイベントハンドラとして、メニュー画面６０を表示させるプレイリストに処理が移行される命令を、グローバルなイベントハンドラ７１として記述する。
【０１５３】
一方、イベントハンドラ７２は、特定のプレイリストの再生中にのみ、あるいは、特定のユーザ入力画面が表示されている間のみに実行され得るイベントハンドラが記述される、ローカルなイベントハンドラ定義である。例えば、分岐選択画面である画面８０Ａに表示されているリンクがユーザにより指定されたときに、別のプレイリストを再生するという動作は、リンクが指定されたというイベントに対して、プレイリストの再生を開始する命令をローカルなイベントハンドラ７２として記述するすることで、実現することができる。
【０１５４】
この発明の実施の第１の形態では、上述のようなイベントハンドラ定義を記述するスクリプト言語として、ＥＣＭＡスクリプトを用いる。ＥＣＭＡスクリプトは、ＥＣＭＡ(European Computer Manufacturers Association)により定められた、ＪａｖａＳｃｒｉｐｔ（登録商標）に基づいたクロスプラットフォーム用のスクリプト言語である。ＥＣＭＡスクリプトは、ＨＴＭＬ文書との親和性が高いことと、独自のオブジェクトの定義が可能であるため、この発明の実施の第１の形態に用いて好適である。
【０１５５】
２−４．仮想プレーヤモデルについて
次に、グラフィクスプレーン１２が追加され、ＨＴＭＬとＥＣＭＡスクリプトとを用いて拡張されたＢＤＡＶフォーマットに基づき動作する再生装置のモデルを考える。以下では、このモデル化された再生装置をＢＤ(Blu-ray disc)仮想プレーヤと称し、このＢＤ仮想プレーヤの構成の定義をＢＤ仮想プレーヤモデルと称する。
【０１５６】
図２２を用いて、ＢＤ仮想プレーヤモデルについて説明する。ＢＤ仮想プレーヤ３０は、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（以下、ディスクと略称する）を再生するもので、パーソナルコンピュータなどのコンピュータ環境上のオブジェクトである。コンピュータ環境は、汎用的なパーソナルコンピュータに限られず、例えば、Ｂｌｕ−ｒａｙ  Ｄｉｓｃなどの記録媒体を再生するように専用的に構成された再生装置および／または記録再生装置に組み込まれたソフトウェア環境も含む。
【０１５７】
ＢＤ仮想プレーヤ３０の状態は、概略的には、プレイリストおよびグラフィクスを再生する状態Ａと、再生が停止された状態Ｂの２つの状態に分類できる。ある状態から別の状態への遷移や、ある状態の中での次の動作の指定は、ＢＤ仮想プレーヤ３０のオブジェクトに対するコマンドにより行われる。
【０１５８】
なお、状態Ａは、複数の動作を含む。状態Ａに含まれる動作としては、高速再生、逆転再生といった変速再生や、ディスク上の任意の時刻から再生する飛び込み再生といった特殊再生などが考えられる。ＢＤ仮想プレーヤ３０においてグラフィクスプレーン１２による表示がなされているときは、これら変速再生や特殊再生が制限されることがある。
【０１５９】
ＰＢＣ(Play Back Control)プログラム４０は、例えばディスクに記録されているシナリオに対応する。詳細は後述するが、シナリオは、ディスクに記録されたプレイリストの再生方法や、メニュー画面の表示を指示する。ＰＢＣプログラム４０とＢＤ仮想プレーヤ３０とは、ＡＰＩ(Application Programming Interface)４１を介してメソッドのやりとりを行い、ディスクに記録されたプレイリストを再生する。
【０１６０】
より具体的には、ＢＤ仮想プレーヤ３０の状態遷移の際には、ＰＢＣプログラム４０により、ＡＰＩ４１を介して、ＢＤ仮想プレーヤ３０において使用目的が定められたメモリとして定義された共通パラメータ３２に対して、必要な情報が伝達される。この共通パラメータ３２に対する値のセットは、ＰＢＣプログラム４０とＢＤ仮想プレーヤ３０との間でＡＰＩ４１を介してやりとりされるメソッドである、プレーヤコマンド３１により行うことができる。
【０１６１】
この発明の実施の第１の形態では、上述したように、ＢＤ仮想プレーヤ３０は、イベントドリブンモデルに基づき制御される。ＢＤ仮想プレーヤ３０の動作中には、様々なイベントが発生する。イベントは、例えば、ユーザによるキー入力やリモートコントロールコマンダによる操作、タイマによる割り込みなどにより、ハードウェア／ＯＳ(Operating System)５０において発生され、ＢＤ仮想プレーヤ３０に渡される。これに限らず、再生されたプレイリスト中のマークの検出や、プレーヤの動作変更の検出など、ＢＤ仮想プレーヤ３０自身によりイベントが発生される場合もある。イベント処理としては、イベントバブルの考え方を用いる。
【０１６２】
発生されるイベントの種類は、ＢＤ仮想プレーヤモデルで定義されている。イベントが発生すると、スクリプトプログラムとしてイベントハンドラが記述されていれば、発生されたイベントに対応するイベントハンドラが実行される。プログラムとしてイベントハンドラが記述されていない場合には、デフォルトのイベントハンドラが実行され、規格で規定されているプレーヤ動作が実行される。
【０１６３】
プレーヤ動作に関するメソッドが実行された場合、プレーヤ動作が正常に開始されたか否かは、メソッドに対する戻り値で知ることができる。一方、指示された命令が何時終了されたかは、イベント発生により知るしかない。そのため、例えばシナリオ終了の再生を開始するメソッドをスクリプトプログラムに記述した場合には、シナリオ終了のイベントを受け取って実行されるイベントハンドラを共に記述することがより望ましい。
【０１６４】
なお、同一のイベントであっても、シナリオ毎に異なるイベントハンドラを記述することができる。
【０１６５】
ＢＤ仮想プレーヤ３０における割り込みイベントは、（１）再生中のコンテンツから発せられるイベント、（２）ユーザからの割り込みにより発生されるイベント、（３）プレーヤの状態の変化により発生されるイベント、の３種類に大別される。
【０１６６】
（１）の、再生中のコンテンツから発せられるイベントは、予め設定された割り込みであって、当該コンテンツの再生の度に、同一のタイミングで発生される。例えば、ＢＤ仮想プレーヤ３０においてプレイリストを再生中に、プレイリスト中に記述されたマークで指し示したディスク上の時刻に到達すると、ＢＤ仮想プレーヤ３０においてマーク検出の割り込みが発生される。また、スクリプトにおいてタイマが設定された場合に、設定された時刻、例えば当該スクリプトによりタイマ設定がなされた１０秒後にタイマ割り込みのイベントが発生される。
【０１６７】
（２）の、ユーザからの割り込みによるイベントは、発生および発生タイミングの予測ができないイベントである。例えば、ユーザによるリモートコントロールコマンダのキー操作により、この割り込みイベントが発生される。この場合、ユーザが何時キー操作を行うかが分からないため、事前にそのタイミングを知ることができない。
【０１６８】
（３）の、ＢＤ仮想プレーヤ３０の状態変化によるイベントは、例えば、音声や字幕のストリーム変更を通知するためのイベントである。コンテンツの再生状態から停止状態へ、停止状態から再生状態への状態遷移でも、このイベントが発生される。このプレーヤの状態変化によるイベントは、上述した（１）の再生中のコンテンツから発せられるイベントや、（２）のユーザによる割り込みイベントに伴い引き起こされる場合も多い。上述の音声や字幕のストリーム変更の通知のイベントの例では、ユーザによるリモートコントロールコマンダなどのキー操作による割り込みイベントで、音声や字幕のストリームが変更され、この変更に伴うＢＤ仮想プレーヤ３０の状態遷移に基づき、変更通知のイベントが発生される。
【０１６９】
この発明の実施の第１の形態では、グラフィクスプレーン１２を用いた表示制御がＨＴＭＬ(Hyper Text Markup Language)４．０１またはＸＨＴＭＬ(eXtensible HTML)文書として記述され、グラフィクスプレーン１２による表示画面に対するイベントは、ＨＴＭＬ４．０の組み込みイベントが用いられる。また、ＨＴＭＬ４．０の組み込みイベントでは不十分なイベントは、ＥＣＭＡスクリプトを用いて記述される。
【０１７０】
ＨＴＭＬ形式とＥＣＭＡスクリプトを組み合わせて用いる場合、イベントが発生すると、先ず、そのイベントが発生した要素に属性で指定されているイベントハンドラが文書中に存在するか否かで、処理が異なる。イベントハンドラが存在する場合は、そのイベントハンドラが実行される。イベントハンドラが存在しない場合は、文書中にグローバルなイベントハンドラが用意されているか否かが探される。その結果、若し、グローバルなイベントハンドラが当該文書中に存在すれば、そのイベントハンドラが実行される。一方、文書中にスクリプト言語によるイベントハンドラの記述が無い場合には、ＢＤ仮想プレーヤ３０において当該イベントに対して用意されたデフォルトのイベント処理が行われる。
【０１７１】
イベントハンドラの記述方法としては、ＨＴＭＬ文書における要素の属性として記述する方法と、ＥＣＭＡスクリプトにおいてメソッドcaptureEventsを使って記述する方法とを用いることができる。
【０１７２】
ＨＴＭＬ文書を用いてイベントハンドラを記述する方法について説明する。この発明の実施の第１の形態によるＢＤ仮想プレーヤ３０では、ＨＴＭＬ４．０に規定される組み込みイベントのうち、例えばイベントonload、イベントonunload、イベントonclickおよびイベントonkeypressを用いることができる。これらのイベントは、タグの要素中に属性として記述される。
【０１７３】
イベントonloadは、利用者エージェントが１つのウィンドウまたは１対のタグ<FRAMESET></FRAMESET>で定義される全てのフレームを終了する際に発生される。例えば、メニュー画面の表示の際にイベントonloadが発生される。
【０１７４】
なお、ウィンドウは、ＨＴＭＬの規定に基づきＨＴＭＬファイルを表示するブラウザアプリケーションにおける表示単位であり、フレームは、１つのウィンドウを分割して複数のＨＴＭＬファイルを表示させる際に用いられる枠組みである。ここでは、フレーム内に表示されるＨＴＭＬファイルも含めてフレームと称する。このイベントonload属性は、要素BODYおよび要素FRAMESETと共に使用することができる。
【０１７５】
イベントonunloadは、利用者エージェントが１つのウィンドウまたは１つのフレームから１つのＨＴＭＬ文書を除去する際に発生される。このイベントonunload属性は、要素BODYおよび要素FRAMESETと共に使用することができる。
【０１７６】
イベントonclickは、ポインティングデバイスなどにより要素が指定された場合に発生される。例えば、マウスボタンのクリック操作を行った場合に、イベントonclickが発生される。このイベントonclick属性は、ＨＴＭＬ４．０における殆どの要素と共に用いることができる。
【０１７７】
イベントonkeypressは、キーが要素上で押されたり解放されたりする際に発生される。例えば、ある要素により定義される画面上の領域が選択状態のときに、キーボード上の所定のキーやリモートコントロールコマンダのキーが押された際に、イベントonkeypressが発生される。このイベントonkeypress属性は、ＨＴＭＬ４．０における殆どの要素と共に用いることができる。
【０１７８】
ＢＤ仮想プレーヤ３０の動作を制御するためには、上述のＨＴＭＬによるイベントでは不十分であるため、この発明の実施の第１の形態では、独自のイベントが定義される。図２３は、ＢＤ仮想プレーヤ３０において独自に定義される一例のイベントを示す。このイベントは、ＥＣＭＡスクリプトにより、ＨＴＭＬ文書に埋め込まれて記述される。また、イベントハンドラを指定する属性名は、イベント名の先頭に「ｏｎ」を付して示す。
【０１７９】
イベントTimerFiredは、カウントダウンタイマの値が「０」になるか、カウントアップタイマの値が指定された値になったときに発生される。イベントPlayStoppedおよびイベントPlayStilledは、それぞれ再生の停止および一時停止により発生される。イベントStillReleasedは、一時停止が解除された際に発生される。イベントPlayPausedおよびイベントPauseReleasedは、それぞれユーザによる再生の一時停止および一時停止の解除の際に発生される。イベントPlayRepeatedは、繰り返し再生時の先頭が検出された際に発生される。
【０１８０】
イベントSPDisplayStatusChangedは、サブピクチャ（字幕）ストリームの表示／非表示状態が変化した際に発生される。イベントSelectedAudioChangedおよびイベントVideoStoppedは、それぞれ再生するオーディオストリームおよびビデオストリームが変わった際に発生される。
【０１８１】
イベントScenarioStartedおよびイベントScenarioEndedは、それぞれシナリオの先頭および終端が検出された際に発生される。イベントPlayListStartedおよびイベントPlayListEndedは、それぞれプレイリストの先頭および終端が検出された際に発生される。イベントPlayItemStartedおよびイベントPlayItemEndedは、それぞれプレイアイテムの先頭および終端が検出された際に発生される。
【０１８２】
イベントMarkEncounteredは、プレイリストの再生中にマークが検出された際に発生される。このイベントは、例えばグラフィクスプレーン１２に画像データを表示する際に用いられる。共通パラメータ３２に、検出されたマークの種類と番号とが格納される。
【０１８３】
イベントButtonPressedは、画面上に配置されたボタンが押された際に発生される。例えば、グラフィクスプレーン１２上に表示されたボタンを、キー操作やマウスのクリック操作などにより仮想的に押した場合に、イベントButtonPressedが発生される。
【０１８４】
イベントValidPeriodStartedは、有効期間が開始された際に発生される。これは、リンクの選択有効期間を設定する際に用いることができる。また、イベントValidPeriodEndedは、有効期間が終了した際に発生される。これは、リンクの強制実行のときに用いることができる。
【０１８５】
イベントKeyPressedは、リモートコントロールコマンダのキーが押されたときに発生される。押されたキーの種類は、イベントハンドラ内の「switch」文などで識別される。
【０１８６】
２−５．メソッドについて
図２４、図２５および図２６は、この発明の実施の第１の形態で定義される、ＢＤ仮想プレーヤ３０が有するメソッドの一例を示す。これらのメソッドにより、ＢＤ仮想プレーヤ３０における動作および状態、ＢＤ仮想プレーヤ３０で扱うビデオストリーム、オーディオストリームおよびサブピクチャ（字幕プレーン１１の画像データ）に関する情報取得や制御、共通パラメータ３２に対する操作、タイマやキー入力の割り込みに応じた処理、グラフィクスプレーン１２で扱う画像データの制御がそれぞれ定義される。
【０１８７】
これらのメソッドをＰＢＣプログラム中で適宜用いることにより、ＢＤ仮想プレーヤ３０の動作を制御することが可能とされる。これらのメソッドは、図２２におけるＡＰＩ４１に実装される。ＰＢＣプログラムの記述に基づきこれらのメソッドがＡＰＩ４１から呼び出され、ＢＤ仮想プレーヤ３０におけるディスク再生が制御される。ＰＢＣプログラムの具体的な例については、後述する。
【０１８８】
プレーヤ動作に関するメソッドについて説明する。メソッドplayScenario(scenarioNumber,[scenarioTime])で、"scenarioNumber"で指定されるシナリオの再生が指示される。"scenarioNumber"は、実際には、シナリオ構成を記述したファイルなどの場所を示すＵＲＩ(Universal Resource Identifier)になる。メソッドplayPlayList(playListNumber)で、"playListNumber"で指定されたプレイリストの再生が指示される。メソッドplayChapterMark(playListNumber,chapterNumber)で、"playListNumber"で示されるプレイリスト中の、"chapterNumber"指定されるチャプタからの再生が指示される。メソッドplayPlayItem(playListNumber,playItemNumber)で、"playListNumber"および"playItemNumber"で示されるプレイアイテムからの再生が指示される。"playItemNumber"は、"playItem_id"であり、値「０」を指定することで、当該プレイアイテムが属するプレイリストの先頭から再生される。
【０１８９】
メソッドplay(position)(object)で、シナリオ内での移動が指示される。すなわち、現在移動中の箇所から前後のプレイリストやプレイアイテムに移動することがこのメソッドで指示される。なお、パラメータ"position"は、"prev"、"next"、"top"、"goUp"または"tail"の何れかの値を取り、パラメータ"object"で示される移動対象（プレイリスト、プレイアイテムまたはチャプタ）に対する移動方法が指示される。
【０１９０】
メソッドstop()で、シナリオ再生の停止が指示される。この場合、標準レジスタの値は、保持されない。メソッドresume()で、前回再生を停止した箇所からの再生の再開が指示される。メソッドplaySoundEffect()で、選択された効果音の再生が指示される。
【０１９１】
プレーヤ状態に関するメソッドについて説明する。図２５において、メソッドgetMenuDescriptionLanguage()で、メニュー表示の際に用いられる言語が取得される。メソッドgetScenarioNumber()、メソッドgetPlayListNumber()およびメソッドgetChapterNumber()で、再生中のシナリオ番号、プレイリスト番号およびチャプタ番号がそれぞれ取得される。メソッドgetPlayerSupport()で、プレーヤのバージョン情報が取得される。
【０１９２】
ビデオストリームに関するメソッドについて説明する。メソッドsetVideoStreamNumber()で、デコードするビデオストリームが指定される。メソッドgetVideoStreamNumber()、メソッドgetVideoStreamStatus()およびメソッドgetVideoStreamAttr()で、再生中のビデオストリームの番号、状態および属性がそれぞれ取得される。なお、ビデオストリームの属性は、例えば、そのビデオストリームの符号化方式、解像度、アスペクト比、アスペクト比が４：３のときのディスプレイモード、クローズドキャプションの有無である。メソッドsetAngleNumber()で、アングル番号が指定される。メソッドgetAngleNumber()で、選択中のアングル番号が取得される。メソッドgetMaxVideoStream()で、ビデオストリームの最大数が取得される。
【０１９３】
オーディオストリームに関するメソッドについて説明する。メソッドgetAudioStreamAvailability()で、指定のオーディオストリームが含まれているか否かが取得される。メソッドgetAudioStreamLanguage()で、指定のオーディオストリームの言語に関する情報が取得される。メソッドgetAudioStreamStatus()で、指定のオーディオストリームの状態が取得され、メソッドsetAudioStreamStatus()で、指定のオーディオストリームに対する状態のセットが指示される。なお、オーディオストリームの状態は、例えば再生または非再生である。メソッドgetAudioStreamAttribute()で、指定のオーディオストリームの属性が取得される。
【０１９４】
サブピクチャストリーム（字幕データ）ストリームに関するメソッドについて説明する。メソッドgetSPStreamAvailability()で、指定のサブピクチャストリームが含まれているか否かが取得される。メソッドgetSPStreamLanguage()で、指定のサブピクチャストリームで用いられている言語が取得される。メソッドgetSPDisplayStatus()で、サブピクチャストリームの表示状態が取得され、メソッドsetSPDisplayStatus()で、サブピクチャストリームの表示状態がセットされる。サブピクチャストリームの表示状態は、例えばサブピクチャストリームの表示のオン／オフである。メソッドgetSpStreamAttribute()で、指定のサブピクチャストリームの属性が取得される。サブピクチャストリームの属性は、例えばサブピクチャストリームの表示がアスペクト比４：３またはワイド画面の何れでなされるかである。
【０１９５】
共通パラメータ３２に関するメソッドについて説明する。図２６では、レジスタリード／ライトとして記されている。メソッドclearReg()で、ＢＤ仮想プレーヤ３０が内蔵しているメモリ領域すなわちレジスタについて、全レジスタの初期化が指示される。メソッドsetReg()で、指定のレジスタへの値のセットが指示される。メソッドgetReg()で、指定のレジスタからの値の読み出しが指示される。
【０１９６】
タイマに関するメソッドについて説明する。メソッドsleep()で、指定された時間の処理の停止が指示される。メソッドsetTimeout()で、指定された時間後に関数や処理を実行することが指示される。メソッドsetInterval()で、指定された時間毎に処理を実行することが指示される。なお、タイマに関するメソッドにおいて、時間はミリ秒単位で指定することができる。メソッドclearTimer()で、指定された登録タイマＩＤの処理の中止が指示される。メソッドpauseTimer()で、指定された登録タイマＩＤのタイマの一時停止が指示される。メソッドresumeTimer()で、指定された登録タイマＩＤのタイマを一時停止から再開することが指示される。
【０１９７】
キー入力に関するメソッドでは、メソッドgetPressedKey()で、入力された（押された）キーの種類が取得される。
【０１９８】
グラフィクスに関するメソッドについて説明する。メソッドloadGraphics(htmlfile,ID)で、"htmlfile"で示されるファイルを読み込み、グラフィクスプレーン１２に非表示で展開することが指示される。展開されたグラフィクス画像には"ID"が割り当てられ、後述のメソッドで参照される。メソッドshowGraphics(ID)は、上述のメソッドloadGraphics(htmlfile,ID)により既にグラフィクスプレーン１２上に展開されている画像に対して、表示が指示される。メソッドhideGraphics(ID)で、"ID"で示される画像の表示を消去することが指示される。
【０１９９】
その他のメソッドについて説明する。メソッドrandom(input Number num)で、１から"num"までの乱数の発生が指示される。乱数の発生は、独自の定義で行われる。メソッドcatchEvent(eventname,eventhandler)で、"eventname"で示されたイベントが発生した際、"eventhandler"で示された関数を実行することが指示される。
【０２００】
２−６．シナリオの実行について
次に、ＰＢＣプログラム４０について、より具体的に説明する。この発明の実施の第１の形態では、一つのシナリオに対して、一つのスクリプトファイルが作成される。また、グラフィクスプレーン１２を用いてメニュー画面６０などを表示する場合には、１画面に対して一つのＨＴＭＬファイルが作成される。スクリプトファイルおよびＨＴＭＬファイルは、ファイル名の拡張子がそれぞれ「js」および「html」とされ、拡張子で以てこれら２種類のファイルを識別可能とする。なお、ディスクがドライブ装置に挿入されて最初に実行されるスクリプトプログラムが格納されるファイルは、ファイル名を例えば「startup.js」に固定的とする。
【０２０１】
一例として、図２７に示されるようなシナリオ構成のディスクを考える。このディスクは、シナリオＳｃｅｎａｒｉｏ０００およびＳｃｅｎａｒｉｏ００１の２つのシナリオを有し、シナリオＳｃｅｎａｒｉｏ０００は、シナリオＳｃｅｎａｒｉｏ００１へのリンクボタン９２を表示するメニュー画面９１を表示させる。ディスクが再生装置に装填されると、メニュー画面９１が表示され、メニュー画面９１に表示されるボタン９２が例えばクリック操作により押されると、シナリオＳｃｅｎａｒｉｏ００１が再生される。シナリオＳｃｅｎａｒｉｏ００１の再生が終了されると、再びメニュー画面９１が表示される。
【０２０２】
図２８は、図２７の構成に対して必要とされる一例のファイルを一覧して示す。この例では、ファイル「startup.js」、ファイル「scenario000.js」、ファイル「000.html」、ファイル「00000.rpls」、ファイル「scenario001.js」およびファイル「00001.rpls」の６ファイルが必要とされる。
【０２０３】
これらのうち、ファイル「scenario000.js」は、シナリオＳｃｅｎａｒｉｏ０００の構成情報が記述されるスクリプトファイルであって、メニュー画面９１すなわちシナリオ一覧画面の構成情報が記述される。ファイル「000.html」は、メニュー画面９１のレイアウト情報が記述されるＨＴＭＬファイルである。ファイル「00000.rpls」は、メニュー画面９１において背景として表示されるプレイリストファイルである。ファイル「scenario001.js」は、シナリオＳｃｅｎａｒｉｏ００１の構成情報が記述されるスクリプトファイルである。ファイル「00001.rpls」は、シナリオＳｃｅｎａｒｉｏ００１で再生されるプレイリストの情報が記述されたプレイリストファイルである。
【０２０４】
なお、図２８では、プレイリストファイル「00000.rpls」および「000001.rpls」で実際に再生されるコンテンツファイルなど（クリップ情報ファイル「%%%%%.clip」、ＡＶストリームファイル「*****.m2ts」）については省略されている。
【０２０５】
図２８に示される各ファイルは、図２９に一例が示されるディレクトリ構造に従い、ディスクに記録される。
【０２０６】
図３０〜図３３は、スクリプトファイルおよびＨＴＭＬファイルのより具体的な記述の例を示す。図３０は、ファイル「startup.js」の記述例である。ファイル「startup.js」では、当該ディスクに格納されているシナリオの数と名前とが定義される。そして、メソッドplayScenario("scenario000")の記述により、ファイル「scenario000.js」が呼び出され、シナリオＳｃｅｎａｒｉｏ０００の再生が指示される。シナリオＳｃｅｎａｒｉｏ０００が再生されることにより、メニュー画面９１が表示される。
【０２０７】
図３１は、ファイル「scenario000.js」の記述例である。関数functionが定義され、メソッドcatchEvent()に「on」が付されて記述されたイベント（図２３参照）が発生すると、対応する関数functionで定義された内容が実行される。図３１の例では、メニュー画面９１のレイアウト情報が記述されたＨＴＭＬファイル「000.html」が指定され、グラフィクスプレーン１２へのメニュー画面９１の読み込みおよび表示のタイミングが制御される。それと共に、メソッドplayPlayList("00000.rpls")が記述され、プレイリスト「00000.rpls」の再生が指示される。
【０２０８】
すなわち、このファイル「scenario000.js」により、プレイリスト「00000.rpls」による動画の動画プレーン１０に対する表示が指示されると共に、プレイリスト「00000.rpls」の再生中に検出されたマークのタイミングで、メニュー画面９１をグラフィクスプレーン１２に表示する旨が指示される。
【０２０９】
図３２は、ファイル「000.html」の記述例である。タグ<style type="text/css">および</style>で囲まれた部分に、「ｍｅｎｕ」および「ｓｃｅｎａｒｉｏ００１」で参照される画像の、メニュー画面９１におけるレイアウト情報が記述される。この図３２の例では、レイアウト情報が画面上の絶対座標で記述され、画像名「ｍｅｎｕ」で参照される画像データが画面の上端から２００ピクセル、左端から８００ピクセルの位置に、幅２００ピクセル、高さ５０ピクセルの画像として表示されることが示される。同様に、画像名「ｓｃｅｎａｒｉｏ」で参照される画像データが画面の上端から７００ピクセル、左端から７００ピクセルの位置に、幅４００ピクセル、高さ１００ピクセルの画像として表示されることが示される。
【０２１０】
タグ<script type="text/javascript">および</script>で囲まれた部分に、関数functionで、マウス操作に対するイベントハンドラonMoverhandler(f)、onMouthandler(f)およびonMclickhandler(f)がそれぞれ定義される。この図３２の例では、イベントハンドラonMoverhandler(f)、onMouthandler(f)およびonMclickhandler(f)に対してボタン画像を表示する画像データである画像データ「201.png」、「200.png」および「202.png」がそれぞれ対応付けられると共に、イベントハンドラonMclickhandler(f)においては、シナリオファイル「scenario001.js」の再生が指示される。
【０２１１】
タグ<body>および</body>で囲まれた部分に、メニュー画面９１においてグラフィクスプレーン１２に表示される画像データが指定される。上述のタグ<style type="text/css">および</style>で囲まれた部分に記述される画像名に対応する画像データのファイル名（「100.png」、「200.png」）がそれぞれ記述される。さらに、画像名「ｓｃｅｎａｒｉｏ００１」で参照される画像データに対しては、マウスなどポインティングデバイスに対する操作に応じて発生するイベントonMouseover、onMouseoutおよびonclickに対して、上述の関数functionで定義されたイベントハンドラonMoverhandler(f)、onMouthandler(f)およびonMclickhandler(f)がそれぞれ実行されることが指示される。
【０２１２】
なお、イベントonMouseoverは、指定された領域などにカーソル表示が重なった際に、イベントonMouseoutは、指定された領域などからカーソル表示が離れた際に、また、イベントonclickは、指定された領域にカーソル表示があるときにポインティングデバイスに対する所定の操作、例えばマウスボタンのクリックが行われた際に、それぞれ発生されるイベントである。
【０２１３】
図３３は、ファイル「scenario001.js」の記述例である。関数function UOPControl()において、このシナリオファイル「scenario001.js」の再生中に、例えばリモートコントロールコマンダに設けられたメニューキーが押されたときに、上述した、メニュー画面９１を表示するためのシナリオＳｃｅｎａｒｉｏ０００を再生することが定義される。また、関数function playListEnded()により、このシナリオファイル「scenario001.js」によるプレイリストの再生が終了したら、メニュー画面９１を表示するためのシナリオＳｃｅｎａｒｉｏ０００を再生することが定義される。また、このシナリオファイル「scenario001.js」でプレイリスト「00001.rpls」が再生されることが指示される。
【０２１４】
上述した図３０〜図３３の記述に基づく動作について、概略的に説明する。ディスクが再生装置に装填されると、先ず、ファイル「startup.js」が読み込まれ、このファイル中の記述によりファイル「scenario000.js」が呼び出される。このファイルに記述されたシナリオ「ｓｃｅｎａｒｉｏ０００」が実行されると、図３１の記述に基づき、プレイリスト「00000.rpls」による動画が動画プレーン１０に表示される。
【０２１５】
さらに、プレイリスト「00000.rpls」中に指定されたマークに対応するタイミングで、ファイル「000.html」が呼び出され、ファイル「000.html」の記述に基づきシナリオ一覧を表示するメニュー画面９１がグラフィクスプレーン１２上に展開され、表示される。このメニュー画面９１自体も、シナリオ「ｓｃｅｎａｒｉｏ０００」という一つのシナリオで構成されたものである。
【０２１６】
メニュー画面９１には、例えば「Ｍｅｎｕ」という文字列が描画された画像ファイル「100.png」と、「Ｓｃｅｎａｒｉｏ００１」という文字列が描画された画像ファイル「200.png」とが配置されている。これらの画像ファイルは、グラフィクスプレーン１２上に配置され表示される。グラフィクスプレーン１２の背景に表示される動画プレーン１０上では、プレイリスト「00000.rpls」による動画が表示される。動画プレーン１０上のプレイリスト「00000.rpls」による動画と、グラフィクスプレーン１２上のファイル「000.html」によるメニュー画面９１とが重ね合わされて同一画面上に表示される。すなわち、動画を背景にメニュー画面９１が表示される。
【０２１７】
このとき、グラフィクスプレーン１２上に表示されている画面（メニュー画面９１）に所定に不透明度を設定し、メニュー画面９１を動画プレーン１０上の動画に対して透過させて表示させることができる。なお、この例では、例えばプレイリスト「00000.rpls」の先頭および末尾にマークが設定され、メニュー画面９１は、プレイリスト「00000.rpls」の再生と共に表示が開始され、プレイリスト「00000.rpls」の再生終了と共に表示が消去されるようになっている。
【０２１８】
メニュー画面９１上には、ユーザの例えばリモートコントロールコマンダのキー操作に応じて移動可能なカーソルが表示される。上述の画像ファイル「200.png」の表示にカーソル表示が重なると、ファイル「000.html」において定義されるイベントMouseoverが発生される。このイベントMouseoverが発生されると、当該画像ファイル「200.png」にフォーカスが当たっていることを表現するために、イベントonMouseoverに対応するイベントハンドラonMoverhandler()が実行される。この、イベントハンドラonMoverhandler()の実行により、画像ファイル「200.png」が画像ファイル「201.png」に置き換えられる。画像ファイル「201.png」は、例えば画像ファイル「200.png」に対して配色が変えられたボタン画像である。
【０２１９】
カーソル表示が画像ファイル「201.png」上にあるときに、ユーザにより、リモートコントロールコマンダの所定のキー操作によりクリック操作が行われると、イベントonclickに対応するイベントハンドラonMclickhandler()が実行され、画像ファイル「201.png」が、選択されたことを表現する画像ファイル「202.png」に置き換えられる。画像ファイル「202.png」は、例えばボタンが押されたことを仮想的に表現するようなボタン画像である。
【０２２０】
このように、「フォーカスされた」、「クリックされた」というイベント発生に対応するイベントハンドラをファイル「000.html」中に記述することで、ユーザの入力に反応するインタラクティブな機能を有するメニュー画面が実現される。
【０２２１】
上述のようにして、メニュー画面９１において、「Ｓｃｅｎａｒｉｏ００１」と描画されたボタン画像がクリックされると、シナリオ「Ｓｃｅｎａｒｉｏ００１」の再生処理に移行される。ファイル「scenario001.js」が実行されることで、シナリオ「Ｓｃｅｎａｒｉｏ００１」が再生される。図３３に示したように、ファイル「scenario001.js」中に記述されたメソッドplayPlayList("00001.rpls")が呼び出され、プレイリスト「00001.rpls」が再生される。
【０２２２】
プレイリスト「00001.rpls」の再生が終了されると、プレイリスト再生終了のイベントPlayListEnded()が発生され、このイベントに対応したイベントハンドラplayScenario("scenario000.js")により、シナリオ「Scenario000.js」を再生するように指示される。すなわち、この例では、シナリオ「Ｓｃｅｎａｒｉｏ００１」の再生が終了されると、再びメニュー画面９１が表示される。
【０２２３】
なお、シナリオ「Ｓｃｅｎａｒｉｏ００１」の再生中に、「keyID」で指定されるキーが操作されても、シナリオ「Scenario000.js」の再生が指示され、再びメニュー画面９１が表示される。
【０２２４】
なお、図３０〜図３３で示したＨＴＭＬおよびＥＣＭＡスクリプトの記述は、一例であって、これはこの例に限定されるものではない。すなわち、ＨＴＭＬやＥＣＭＡスクリプトの記述には自由度があり、一部を異なる記述にしても同等の動作を実現するようにできる。
【０２２５】
２−７．デコーダモデル
図３４は、この発明の実施の第１の形態に適用できるプレーヤデコーダ１００の一例の構成を示す機能ブロック図である。このプレーヤデコーダ１００は、図示されないドライブ装置に装填されたディスクから再生されたデータを解釈し、ＡＶストリームを出力すると共に、出力されたＡＶストリームに対するユーザによるインタラクティブな操作を可能とする。
【０２２６】
なお、プレーヤデコーダ１００は、図示されないＣＰＵにより全体の動作が制御される。例えば、プレーヤデコーダ１００の各部におけるストリームやデータの流れは、ＣＰＵにより監視され、制御される。
【０２２７】
図示されないドライブ装置にディスクが装填されると、上述したように、先ずファイル「startup.js」が再生され、このファイル「startup.js」の記述に基づき、シナリオファイルが読み出され、さらに、シナリオファイルの記述に従い、ＨＴＭＬファイル、動画プレーン１０に表示するための動画データ、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データ、プレイリストファイル、シナリオファイルから呼び出される別のシナリオファイル、音声データなどがディスクから読み出される。
【０２２８】
以下では、ディスクから読み出されるこれらのデータのうち、動画データ、サブピクチャ（字幕データ）や音声データといった、連続的に処理する必要があるストリームをリアルタイムストリームと称する。また、シナリオファイル、ＨＴＭＬファイル、画像データファイル、プレイリストファイルといった、連続的な処理を要求されな非リアルタイムなデータを、ストアオブジェクトと称する。ストアオブジェクトは、メモリ上などに蓄積、展開され、必要に応じて処理される。
【０２２９】
プレーヤデコーダ１００は、チャンネル（１）および（２）の２系統の入力チャンネルを有し、入力チャンネル（１）の入力端１０１に、ストアオブジェクトが入力される。入力チャンネル（２）の入力端２０２に、リアルタイムストリームが入力される。入力端２０２に、ストアオブジェクトを入力することも可能である。この実施の第１の形態では、入力端２０２に入力されるリアルタイムストリームおよび一部のストアオブジェクトは、例えばＭＰＥＧ２  ＴＳである。
【０２３０】
なお、入力端２０２に入力されるリアルタイムストリームは、ＭＰＥＧ２  ＴＳに限られない。パケット単位で伝送され、ビデオデータ、オーディオデータ、静止画像データなどを多重化可能であれば、他の形式のストリームを入力するようにしてもよい。このときには、後述するＰＩＤフィルタ１１０は、そのストリーム形式に適合したデマルチプレクサとして用いられ、ビデオデータ、オーディオデータ、静止画像データなどを分離する。
【０２３１】
また、例えば、ドライブ装置においてディスクの回転速度を２倍速などの高速回転としてディスクからの読み出し転送レートを上げ、時分割で動作させることにより、ディスクからの、チャンネル（１）および（２）の２系統の読み出しが実現可能である。
【０２３２】
先ず、入力チャンネル（１）の系統について説明する。入力端１０１に入力されたストアオブジェクトは、スイッチ回路１０２に入力される。ストアオブジェクトとしてＥＣＭＡスクリプトやＨＴＭＬファイルなどによるプログラムコードが入力された場合、スイッチ回路１０２において出力端１０２Ａが選択され、入力されたプログラムコードがコードバッファ１０４に蓄えられる。
【０２３３】
一方、ストアオブジェクトとして画像データが入力された場合、スイッチ回路１０２において出力端１０２Ｂが選択され、入力された画像データがスイッチ回路１０３に入力される。入力端２０２に入力されたリアルタイムストリームに、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データが含まれていない場合には、スイッチ回路１０３で入力端１０３Ａが選択され、スイッチ回路１０２から入力された画像データがコンテンツバッファ１０５に蓄えられる。
【０２３４】
同様にして、入力端２０２に入力されたリアルタイムストリームに、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データが含まれている場合には、スイッチ回路１０３において入力端１０３Ｂが選択され、当該画像データがコンテンツバッファ１０５に蓄えられる。コードバッファ１０４およびコンテンツバッファ１０５に蓄えられたストアオブジェクトは、必要に応じて読み出され、マルチメディアエンジン１０６に供給される。
【０２３５】
コンテンツバッファ１０５に蓄えられたストアオブジェクトのうち画像データは、スイッチ回路１０７および１０８をそれぞれ介して、サブピクチャデコーダ１１６および静止画像デコーダ１１７にも供給される。
【０２３６】
マルチメディアエンジン１０６は、ＸＭＬパーサ１０６Ａ、スクリプトインタプリタ１０６Ｂおよびグラフィクスレンダラ１０６Ｃを含む。マルチメディアエンジン１０６は、独立的なハードウェアで構成してもよいし、上述した図示されないＣＰＵの、所定のプログラムに基づく処理で実現することも可能である。
【０２３７】
ＸＭＬパーサ１０６Ａは、ＸＭＬ(Extensible Markup Language)文書を解析する機能を有し、ＨＴＭＬ文書の解析も可能である。ＸＭＬパーサ１０６Ａで解釈されたＨＴＭＬ文書は、このプレーヤデコーダ１００で実行可能な形式に変換される。スクリプトインタプリタ１０６Ｂは、ＥＣＭＡスクリプトを解析し、このプレーヤデコーダ１００で実行可能な形式に変換される。また、グラフィクスレンダラ１０６Ｃは、画像データを、字幕プレーン１１およびグラフィクスプレーン１２に展開可能な形式にデコードする。
【０２３８】
マルチメディアエンジン１０６において、バッファ１０９をワークメモリとして、これらＸＭＬパーサ１０６Ａ、スクリプトインタプリタ１０６Ｂおよびグラフィクスレンダラ１０６Ｃの処理が行われる。例えば、ＸＭＬパーサ１０６Ａおよびスクリプトインタプリタ１０６Ｂにより、バッファ１０９のうちコードバッファ１０９Ａが用いられる。また、グラフィクスレンダラ１０６Ｃにより、バッファ１０９のうちグラフィクスバッファ１０９Ｄが用いられる。バッファ１０９は、上述のコードバッファ１０９Ａおよびグラフィクスバッファ１０９Ｄの他に、文字列の表示に用いるフォントデータが格納されるフォントバッファ１０９Ｂ、ＸＭＬパーサ１０６ＡでＨＴＭＬ文書を解析した結果を階層化された木構造で保持するためのツリーバッファ１０９Ｃなどが含まれる。
【０２３９】
マルチメディアエンジン１０６では、例えば、コードバッファ１０４に蓄えられたＥＣＭＡスクリプトを読み出し、読み出されたＥＣＭＡスクリプトの記述に基づき、必要に応じて、コードバッファ１０４からの他のＥＣＭＡスクリプトやＨＴＭＬ文書の読み出し、コンテンツバッファ１０５からの画像データの読み出しなどを行う。コードバッファ１０４およびコンテンツバッファ１０５に格納されたデータは、当該データが不要になるまで、コードバッファ１０４やコンテンツバッファ１０５に保持しておくことができる。したがって、これらコードバッファ１０４やコンテンツバッファ１０５に格納されたデータは、必要に応じて何度でも読み出して使うことができる。
【０２４０】
マルチメディアエンジン１０６では、上述の他にも、入力された複数種類のデータのデマルチプレクス処理、ＪａｖａＶＭ（Ｊａｖａ（登録商標）仮想マシン）機能などが行われる。さらに、マルチメディアエンジン１０６により、ユーザからの、リモートコントロールコマンダやポインティングデバイスなどによる入力が受け取られ、所定に処理される。ユーザ入力は、さらに、後述するサブピクチャデコーダ１１６、静止画像デコーダ１１７、オーディオデコーダ１１８、ＭＰＥＧビデオデコーダ１２０およびシステムデコーダ１２１にも供給される。
【０２４１】
グラフィクスレンダラ１０６Ｃで処理された画像データは、スイッチ回路１３０および１３１をそれぞれ介してサブピクチャプレーン１３２および静止画像プレーン１３４に供給されると共に、グラフィクスプレーン１３３およびＭ／Ｓスイッチプレーン１３６に供給される。なお、この例では、サブピクチャプレーン１３２およびグラフィクスプレーン１３３に供給される画像データは、ＰＮＧ形式であるものとする。これらの各プレーン１３２、１３３、１３４および１３６に画像データが供給されるタイミングは、マルチメディアエンジン１０６により制御される。なお、Ｍ／Ｓスイッチプレーン１３６は、スイッチ回路１３７を制御し、後述する静止画像プレーン１３４から出力される静止画像データと、動画像プレーン１３５から出力される動画像データとを切り換えて後段に供給する。
【０２４２】
ここで、サブピクチャプレーン１３２およびグラフィクスプレーン１３３は、それぞれ上述した字幕プレーン１１およびグラフィクスプレーン１２に対応する。静止画像プレーン１３４および／または動画プレーン１３５は、上述した動画プレーン１０に対応する。なお、サブピクチャプレーン１３２、グラフィクスプレーン１３３、静止画像プレーン１３４および動画像プレーン１３５は、例えばフレームメモリからなる。
【０２４３】
マルチメディアエンジン１０６は、さらに、後述するプレゼンテーションプロセッサ１３９に対して、静止画像プレーン１３４または動画像プレーン１３５、サブピクチャプレーン１３２、ならびに、グラフィクスプレーン１３３を切り換える制御信号を供給する。同様に、マルチメディアエンジン１０６は、後述するプレゼンテーションプロセッサ１４１に対して、オーディオストリーム出力を制御するような制御信号を供給する。
【０２４４】
次に、入力チャンネル（２）の系統について説明する。入力端２０２にＭＰＥＧ２  ＴＳで入力されたリアルタイムストリームは、ＰＩＤフィルタ１１０に供給され、ＭＰＥＧ２  ＴＳのトランスポートパケットに格納されるＰＩＤ(Packet Identification)が抽出され、当該トランスポートパケットに格納されるストリームの属性が検出される。ＰＩＤフィルタ１１０では、このストリーム属性に基づき、入力されたリアルタイムストリームが、トランスポートパケット毎に対応する系統に振り分けられる。
【０２４５】
ＰＩＤに基づき、トランスポートパケットがストアオブジェクトに属する画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１Ａに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０３Ｂが選択されたスイッチ回路１０３に入力され、スイッチ回路１０３を介してコンテンツバッファ１０５に格納される。
【０２４６】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットがサブピクチャデータすなわち字幕データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＢおよびバッファＢｎ１１２Ｂに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０７Ｂが選択されたスイッチ回路１０７に入力され、スイッチ回路１０７を介してサブピクチャデコーダ１１６に供給される。
【０２４７】
サブピクチャデコーダ１１６では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された字幕データがデコードされて字幕を表示するための画像データとされる。この画像データは、所定のタイミングでスイッチ回路１３０の入力端１３０Ｂに入力され、スイッチ回路１３０を介してサブピクチャプレーン１３２に展開される。
【０２４８】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットが静止画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＣおよびバッファＢｎ１１２Ｃに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０８Ｂが選択されたスイッチ回路１０８に入力され、スイッチ回路１０８を介して静止画像デコーダ１１７に供給される。
【０２４９】
静止画像デコーダ１１７では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された静止画像データがデコードされ、静止画像データとされる。この静止画像データは、所定のタイミングでスイッチ回路１３１の入力端１３１Ｂに入力され、スイッチ回路１３１を介して静止画像プレーン１３４に展開される。
【０２５０】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットがオーディオデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＤおよびバッファＢｎ１１２Ｄに一旦溜め込まれ、所定のタイミングで読み出されてオーディオデコーダ１１８に供給される。このトランスポートパケットに格納されるオーディオデータは、例えばＭＰＥＧに準拠した方式で圧縮符号化されている。
【０２５１】
オーディオデコーダ１１８は、例えばリニアＰＣＭ(Pulse Code Modulation)オーディオデコーダ１１９を有し、入力されたトランスポートストリームのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された圧縮符号化されたオーディオデータをリニアＰＣＭオーディオデータにデコードする。
【０２５２】
オーディオデコーダ１１８から出力されたリニアＰＣＭオーディオデータは、オーディオ用のプレゼンテーションプロセッサ１４１に入力され、マルチメディアエンジン１０６の制御に基づき所定の音響効果などが付加されて、出力端１４２に導出される。
【０２５３】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットが動画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１Ｅ、バッファＭＢｎ１１３およびバッファＥＢｎ１１４に一旦溜め込まれ、所定のタイミングで読み出されてＭＰＥＧビデオデコーダ１２０に供給される。このトランスポートパケットに格納される動画像データは、ＭＰＥＧ２方式により圧縮符号化されている。
【０２５４】
ＭＰＥＧビデオデコーダ１２０では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された、ＭＰＥＧ２方式で圧縮符号化された動画像データをベースバンドの動画像データにデコードする。
【０２５５】
ＭＰＥＧデコーダ１２０から出力された動画像データは、スイッチ回路１２４の入力端１２４Ａに入力されると共に、バッファ１２３を介してスイッチ回路１２４の入力端１２４Ｂに入力される。スイッチ回路１２４において、所定のタイミングで入力端１２４Ａおよび１２４Ｂが選択され、出力された動画像データが動画像プレーン１３５に展開される。
【０２５６】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットがシステム情報が格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＦおよびＢｓｙｓ１１５を介してシステムデコーダ１２１に供給される。システムデコーダ１２１では、供給されたトランスポートパケットのヘッド情報が除去され、格納されているシステム情報が取り出される。システム情報は、例えば図示されないＣＰＵに渡される。
【０２５７】
サブピクチャプレーン１３２上の画像データは、上述のパレット２２に対応するパレット１５０に供給され、２５６色からなるパレットに対してインデックスによる参照がなされ、ＹＣｂＣｒデータが出力されると共に、不透明度データα１が抜き出される。これらＹＣｂＣｒデータおよび不透明度データα１は、プレゼンテーションプロセッサ１３９に供給される。
【０２５８】
グラフィクスプレーン１３３上の画像データは、上述のＲＧＢ／ＹＣｂＣｒ変換回路２６に対応するＲＧＢ／ＹＣｂＣｒ変換回路１５１に供給され、カラーシステムがＲＧＢ（４：４：４）からＹＣｂＣｒ（４：４：４）に変換される。ＲＧＢ／ＹＣｂＣｒ変換回路１５１から出力されたＹＣｂＣｒデータは、プレゼンテーションプロセッサ１３９に供給される。それと共に、グラフィクスプレーン１３３上の画像データから不透明度データα２が抜き出され、プレゼンテーションプロセッサ１３９に供給される。
【０２５９】
静止画像プレーン１３４上の画像データがスイッチ回路１３７の入力端１３７Ａに入力される。また、動画像プレーン１３５上の動画像データがスイッチ回路１３７の入力端１３７Ｂに入力される。静止画像プレーン１３４上の画像データおよび動画像プレーン１３５上の動画像データは、Ｍ／Ｓスイッチプレーン１３６の制御により、スイッチ回路１３７で選択される。すなわち、静止画像プレーン１３４は、動画像プレーン１３５と同等に扱われる。スイッチ回路１３７の出力は、アップ／ダウンコンバータ１３８を介してプレゼンテーションプロセッサ１３９に供給される。
【０２６０】
なお、アップ／ダウンコンバータ１３８は、画像の解像度を変換する回路であって、例えば高解像度のＨＤ(High Definition)画像から通常の解像度を有するＳＤ(Standard Definition)画像への変換を行う。
【０２６１】
プレゼンテーションプロセッサ１３９は、図１７を用いて説明した、字幕プレーン１１（サブピクチャプレーン１３２）の画像データによる不透明度α１と、グラフィクスプレーン１２（グラフィクスプレーン１３３）による不透明度α２とを用いたアルファブレンディング処理を行う。
【０２６２】
すなわち、プレゼンテーションプロセッサ１３９では、静止画像プレーン１３４または動画像プレーン１３５のうちスイッチ回路１３７で選択された側の画像データに対して、サブピクチャプレーン１３２の画像データに設定された不透明度α１に基づき、サブピクチャプレーン１３２の画像データが合成される。さらに、静止画像プレーン１３４または動画像プレーン１３５およびサブピクチャプレーン１３２が合成された画像データに対して、グラフィクスプレーン１３３の画像データに設定された不透明度α２に基づき、グラフィクスプレーン１３３の画像データが合成される。この、グラフィクスプレーン１３３の画像データ、サブピクチャプレーン１３２の画像データ（字幕データ）、ならびに、静止画像プレーン１３４または動画像プレーン１３５の画像データが合成された画像データが出力端１４０に導出される。
【０２６３】
なお、プレゼンテーションプロセッサ１３９は、画像データに対してリアルタイムでエフェクト処理を行うこともできる。
【０２６４】
上述では、プレーヤデコーダ１００の各部がハードウェアで構成されるように説明したが、これはこの例に限られない。例えば、プレーヤデコーダ１００をソフトウェア上の処理として実現することも可能である。この場合、プレーヤデコーダ１００をコンピュータ装置上で動作させることができる。また、プレーヤデコーダ１００をハードウェアおよびソフトウェアが混合された構成で実現することもできる。例えば、オーディオデコーダ１１８やＭＰＥＧビデオデコーダ１２０をハードウェアで構成し、その他をソフトウェアで構成することが考えられる。
【０２６５】
プレーヤデコーダ１００をソフトウェアのみ、または、ハードウェアおよびソフトウェアの混合により構成し、コンピュータ装置で実行させるためのプログラムは、例えばＣＤ−ＲＯＭ(Compact Disc-Read Only Memory)といった記録媒体に記録されて提供される。このＣＤ−ＲＯＭをコンピュータ装置のＣＤ−ＲＯＭドライブに装填し、ＣＤ−ＲＯＭに記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
【０２６６】
２−８．ユーザインターフェイス
次に、この発明の実施の第１の形態によるユーザインターフェイスについて、より詳細に説明する。図３５は、グラフィクスプレーン１２上に表示されるボタン表示の一例の状態遷移図である。ボタン表示の状態は、画面にボタンが表示されるボタン表示状態と、画面にボタンが表示されていないボタン非表示状態とに大別される。ボタン非表示状態からボタン表示が開始されボタン表示状態に遷移する。ボタン表示状態からボタン表示が終了され、ボタン非表示状態に遷移する。ボタン表示状態は、さらに、通常状態、選択状態および実行状態の３種類の状態を有する。ボタン表示は、これら３種類の状態間をそれぞれ互いに遷移することができる。遷移方向を一方向に限定することも可能である。
【０２６７】
上述の図２０を用いて、より具体的に説明する。先ず、ディスク挿入時や、ユーザがリモコンのメニューキーを押したときに、メニュー画面６０が表示される。メニュー画面６０の表示に伴い、ボタン６２Ａ、６２Ｂ、６２Ｃ、６３Ｄ、６４および６５が非表示状態から表示状態へと遷移する。ボタン表示開始時は、ボタン６２Ａ、６２Ｂ、６２Ｃ、６３Ｄ、６４および６５のうち一つが予め選択状態にされていることが多い。例えばボタン６２Ａが予め選択状態とされ、他のボタンが通常状態とされているものとする。
【０２６８】
この状態で、ユーザがリモコンの例えば矢印キーを操作すると、通常状態のボタンの一つ（例えばボタン６２Ｂ）が選択状態に遷移すると共に、選択状態だったボタン６２Ａが通常状態へと遷移する。このようにして、ユーザ操作によってカーソルが移動していく。ユーザがリモコンの決定キーを操作すると、そのときに選択状態にあったボタン６２Ｂが選択状態から実行状態へと遷移し、当該ボタン６２Ｂに予め割り当てられているプレーヤ動作が実行される。
【０２６９】
上述したように、プレーヤ動作は、プログラミング言語やＥＣＭＡスクリプトなどのスクリプト言語により記述され、ディスク上に記録され用意されている。このプレーヤ動作に関する記述は、独立したファイルとしてディスク上に記録してもよいし、後述するグラフィックオブジェクトのように、クリップＡＶストリームファイルに多重化することも可能である。
【０２７０】
２−９．データ構造について
次に、このようなメニュー画面を構成するボタンなどの画像データおよび当該画像データに付随する制御情報のデータ構造について説明する。ここでは、ディスクに収録されるコンテンツ本体をなす動画以外に表示される映像要素として、字幕およびグラフィクス（静止画）を考える。以下では、画面に表示される字幕やグラフィクスといった要素をオブジェクトとして考え、オブジェクトの種類を、図３６に示されるように、字幕、同期型グラフィクスおよび非同期型グラフィクスの３種類に分類する。
【０２７１】
字幕とは、例えば映画の字幕のように、動画と同期して表示／非表示の切り換えが行われ、リモコンなどによるユーザ入力とは無関係な映像要素を指す。グラフィクスとは、メニュー画面上のボタンなどのように、ユーザ入力を受け付けることができる映像要素とする。さらに、グラフィクスは、同期型グラフィクスおよび非同期型グラフィクスの２種類に分類される。同期型グラフィクスとは、例えば本編再生中のあるタイミングに表示される分岐選択画面のように、動画と同期して表示される映像要素とする。また、非同期型グラフィクスとは、ディスク挿入時に最初に表示されるメニュー画面や、ユーザ入力に応じて表示される画面など、本編の再生とは非同期に表示される映像要素を指す。ＪａｖａＶＭ上で動作するＪａｖａアプリケーションにより表示される映像要素や、ブラウザソフトウェア上でＨＴＭＬファイルの記述に基づき表示される映像要素は、非同期グラフィクスである。
【０２７２】
各映像要素と動画プレーン１０に表示される本編映像との関係からいえば、字幕および同期型グラフィクスは、本編映像に同期して表示されるため、共に同期型である。一方、非同期型グラフィクスは、上述のように本編映像と非同期で表示されるので、その名の示す通り、非同期型である。
【０２７３】
また、字幕とグラフィクスとは、表示先のプレーンの違いから分類することができる。字幕は、字幕プレーン１１に表示される。同期型および非同期型グラフィクスは、グラフィクスプレーン１２に表示される。
【０２７４】
ここで、字幕および同期型グラフィクスは、本編の動画再生中に表示するという共通の性質を持つことから、共通のデータ構造とすることが好ましい。以下では、これら共通のデータ構造とされる字幕および同期型グラフィクスを、グラフィクスオブジェクトと称する。グラフィクスオブジェクトは、常に動画再生と同期して表示されるため、動画と同一のストリームに多重化しておくと、扱いが容易になる。
【０２７５】
図３７は、この発明の実施の第１の形態によるグラフィクスオブジェクト２００のデータ構造の例を示す。グラフィクスオブジェクト２００は、図３７Ａに一例が示されるように、グラフィクスオブジェクトヘッダ２０１、表示制御命令テーブル２０２およびＰＮＧデータ領域２０３の３つの領域からなる。
【０２７６】
なお、以下の例では、グラフィクスオブジェクト２００で扱われる画像データの形式をＰＮＧ形式とし、画像データをＰＮＧ画像データとしているが、ＪＰＥＧ形式やビットマップデータ、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなど、他の形式の画像データをグラフィクスオブジェクト２００で扱うことも可能である。ここでは、便宜上、画像データをＰＮＧ画像、ＰＮＧ画像データなどと表現する。
【０２７７】
図３７において、グラフィクスオブジェクトヘッダ２０１は、当該グラフィクスオブジェクト２００の属性を表す情報が格納される。グラフィクスオブジェクト２００の属性は、例えば、当該グラフィクスオブジェクト２００のデータサイズ、当該グラフィクスオブジェクト２００が有するＰＮＧ画像数、当該グラフィクスオブジェクト２００が有するＰＮＧ画像データが共通に使用するパレットデータ、ならびに、当該グラフィクスオブジェクト２００を識別する識別情報からなる。識別情報は、例えばグラフィクスオブジェクト２００毎に一意に割り当てられた番号である。グラフィクスオブジェクトヘッダ２０１に、さらに他の情報を格納してもよい。
【０２７８】
表示制御命令テーブル２０２は、当該グラフィクスオブジェクト２００が有するＰＮＧ画像の表示位置、表示開始時刻および表示終了時刻といった、ＰＮＧ画像の表示を制御するための情報が格納されるテーブルである。
【０２７９】
ＰＮＧデータ領域２０３は、ＰＮＧ形式で圧縮符号化された画像データ（以下、ＰＮＧデータと称する）が格納される。ＰＮＧデータ領域２０３には、複数のＰＮＧデータ２０３Ａ、２０３Ｂ、・・・、２０３ｎを格納することができる。ＰＮＧデータ領域２０３に格納されるＰＮＧデータ２０３の数は、上述したグラフィクスオブジェクトヘッダ２０１に記述されている。
【０２８０】
なお、ＰＮＧデータ領域２０３に格納される複数のＰＮＧデータ２０３Ａ、２０３Ｂ、・・・、２０３ｎは、アニメーションを構成する複数枚の静止画の組や、上述したボタン表示の３状態を表す画像といった、相互に関連の強い画像であることを想定している。これらを、一つのグラフィクスオブジェクト２００に纏めることで、ＰＮＧ画像の扱いを容易にすることができる。
【０２８１】
グラフィクスオブジェクト２００は、表示が可能になる時刻を示す時刻情報を有する。リアルタイムストリームがＭＰＥＧ２  ＴＳで伝送されるこの例では、この時刻情報として、ＭＰＥＧ２(Moving Pictures Experts Group 2)により定義された、ｐｔｓ(Presentation Time Stamp)を用いる。ｐｔｓは、再生出力の時刻管理情報で、９０ｋＨｚのクロックで計測した値を３３ビット長で表す。ＭＰＥＧシステムの基準復号器内部のＳＴＣ(System Time Clock)がｐｔｓに一致したときに、対象となるアクセスユニットを再生出力する。一つのグラフィクスオブジェクト２００は、ｐｔｓで表される時刻から表示が可能になり、その時刻以降に、表示制御命令により実際に表示のＯＮ／ＯＦＦが行われる。表示制御命令により表示の管理を行うため、表示を停止した後に再度、同じグラフィクスオブジェクト２００を表示させるような制御が可能である。
【０２８２】
図３７Ｂは、字幕を格納するグラフィクスオブジェクト２００の例を示す。ＰＮＧデータ領域２０３に、字幕として表示する画像がＰＮＧデータ（１）２０３Ａ−１として格納される。通常、字幕であれば、一つのグラフィクスオブジェクト２００に含まれるデータは、ＰＮＧデータ（１）２０３Ａ−１一つで十分である。字幕に対して、フェードイン／フェードアウトのような、画像の内容が変化しない特殊効果を施すときは、表示制御命令テーブル２０２に対してＰＮＧデータ（１）Ａ−１の不透明度を変化させる表示制御命令を加えることで、実現できる。
【０２８３】
一方、字幕に対して、アニメーションなどのような、画像そのものが変化するような効果を施す場合には、図３７Ｂに点線で示されるように、アニメーションの各動作に対応する複数のＰＮＧデータ（２）Ｂ−１、ＰＮＧデータ（３）Ｃ−１、ＰＮＧデータ（４）Ｄ−１、・・・を、一つのグラフィクスオブジェクト２００に格納すればよい。これに限らず、日本語字幕、英語字幕など、言語が異なる字幕を表示するＰＮＧデータをＰＮＧデータ（１）Ａ−１、ＰＮＧデータ（２）Ｂ−１、・・・として、一つのグラフィクスオブジェクト２００に格納することもできる。
【０２８４】
図３７Ｃは、ボタンを構成するグラフィクスオブジェクト２００の例を示す。ボタンは、上述したように、通常状態、選択状態および実行状態の３種類の状態を有し、これら３種類の状態のそれぞれでボタン表示を異ならせることができる。３種類の状態でボタン表示を異ならせる場合、３枚のボタン画像データを用意しておく必要がある。これら３枚のボタン画像データを、ひとまとまりのグラフィクスオブジェクト２００として扱う。すなわち、グラフィクスオブジェクト２００のＰＮＧデータ領域２０３に、通常状態、選択状態および実行状態それぞれのボタン表示に用いるＰＮＧデータ２０３Ａ−２、２０３Ｂ−２および２０３Ｃ−２を格納する。
【０２８５】
図３７Ｂに実線で示される通常の字幕のように、グラフィクスオブジェクト２００内に一つだけ字幕表示のＰＮＧデータ２０３Ａ−１が存在する場合には、当該グラフィクスオブジェクト２００内の表示制御命令テーブル２０２に格納される表示制御命令は、そのＰＮＧデータ２０３Ａ−１に対するものとなる。一方、図３７Ｃに一例が示されるような、グラフィクスオブジェクト２００内に、複数のＰＮＧデータ２０３Ａ−２、２０３Ｂ−２および２０３Ｃ−２が存在する場合、表示制御命令テーブル２０２に格納される表示制御命令が、複数のＰＮＧデータ２０３Ａ−２、２０３Ｂ−２および２０３Ｃ−２のうちどのデータに対する表示制御命令であるかを特定する必要がある。
【０２８６】
例えば、図３７Ｃに例示される、ボタンのグラフィクスオブジェクト２００においては、このボタンの表示開始時の初期状態が選択状態と定められている場合は、最初に表示するボタン画像は、ＰＮＧデータ領域２０３の先頭に配置される、通常状態時のＰＮＧデータ２０３Ａ−２ではなく、選択状態時のＰＮＧデータ２０３Ｂ−２としなければならない。この発明の実施の第１の形態では、このような表示制御は、グラフィクスオブジェクト２００の外で行うようにしている。
【０２８７】
例えば、各ボタンの初期状態や、表示開始および表示停止、ボタンが実行状態に遷移された際に実行されるプログラムなどは、グラフィクスオブジェクト２００外部のスクリプトプログラム、例えば上述のＥＣＭＡスクリプトやＪａｖａＳｃｒｉｐｔによって指定する方法が考えられる。また、ボタンの表示中における、ボタン表示を行うＰＮＧデータの変更は、例えばユーザがリモコンの矢印キーを操作し、カーソルを移動させた際に発生する。この場合には、プレーヤがユーザ入力に応じて各ボタンのＰＮＧデータを入れ替えることになる。
【０２８８】
この発明の実施の第１の形態では、グラフィクスオブジェクト２００は、ＭＰＥＧ２に規定されるパケットに分割され、クリップＡＶストリームに多重化され、クリップＡＶストリームファイルとしてディスクに記録される。図３８に一例が示されるように、グラフィクスオブジェクト２００は、分割され、ＭＰＥＧ２に規定されるＰＥＳ(Packetized Elementary Stream)パケット２１０、２１０、・・・に格納される。このとき、グラフィクスオブジェクトヘッダ２０１および表示制御命令テーブル２０２、ならびに、各ＰＮＧデータ２０３Ａ、２０３Ｂ、・・・、２０３ｎそれぞれの先頭が、ＰＥＳパケット２１０、２１０、・・・のペイロードの先頭に合致するように、データが配置される。こうすることで、再生時に、グラフィクスオブジェクト２００内の各データの検索が容易となる。
【０２８９】
こうして分割されてＰＥＳパケット２１０、２１０、・・・に格納されたグラフィクスオブジェクト２００は、さらに、データサイズが１８８バイトに固定されたＴＳパケットに分割され（図示しない）、クリップＡＶストリームなどの動画データや音声データによるストリームに多重化される。
【０２９０】
２−１０．グラフィクスオブジェクトのデコーダモデルについて
図３９は、グラフィクスオブジェクト２００のデコードを行うグラフィクスオブジェクトデコーダモデル２４０の一例の構成を示す機能ブロック図である。このグラフィクスオブジェクトデコーダモデル２４０は、図３４を用いて説明したプレーヤデコーダ１００におけるマルチメディアエンジン１０６およびサブピクチャデコーダ１１６を中心に構成される。図３９において、図３４と共通する部分には同一の符号を付して詳細な説明を省略する。また、この図３９は、より機能面に注目して表現されており、上述の図３４とは異なる表現がなされている場合があるので、必要に応じて図３４の構成と対応付けながら説明する。
【０２９１】
端子２０２からＭＰＥＧ  ＴＳとして入力されたクリップＡＶストリームがＰＩＤフィルタ１１０に供給される。ＰＩＤフィルタ１１０は、ＭＰＥＧ２  ＴＳ（トランスポートストリーム）に対するデマルチプレクサとして機能し、供給されたＭＰＥＧ  ＴＳのＰＩＤに基づき、動画像データ、オーディオデータおよびグラフィクスオブジェクト２００をそれぞれ抜き出す。動画像データは、ビデオバッファとしてのバッファＴＢｎ１１１Ｅに供給される。オーディオデータは、オーディオバッファとしてのバッファ１１１Ｄに供給される。グラフィクスオブジェクト２００は、グラフィクスオブジェクト（図３９では「ＧＯＢＪ」と表記）の入力バッファであるバッファＴＢｎ１１１Ｂに供給される。
【０２９２】
グラフィクスオブジェクト２００は、バッファＴＢｎ１１１Ｂから読み出され、ＧＯＢＪパーサ２２４に供給される。ＧＯＢＪパーサ２２４は、例えば図３４におけるサブピクチャデコーダ１１６の機能の一つである。ＧＯＢＪパーサ２２４では、供給されたグラフィクスオブジェクト２００のグラフィクスオブジェクトヘッダ２０１を読み取り、パレットデータを抽出すると共に、表示制御命令テーブル２０２およびＰＮＧデータ領域２０３を分離する。パレットデータおよび表示制御命令テーブル２０２は、コマンドプロセッサ／グラフィックレンダラ２２５に供給される。また、ＰＮＧデータ領域２０３のＰＮＧデータ２０３Ａ、２０３Ｂ、・・・は、ＰＮＧデコーダバッファ２２６に一時的に格納される。ＰＮＧデコーダバッファ２２６は、例えば図３４におけるバッファＢｎ１１２Ｂに対応する。
【０２９３】
ＰＮＧデコーダバッファ２２６に格納されたＰＮＧデータ２０３は、サブピクチャデコーダ１１６の機能の一つであるＰＮＧデコーダ２２７によりデコードされ、ビットマップデータとされる。このビットマップデータは、オブジェクトバッファ２２８に蓄積される。オブジェクトバッファ２２８は、図３４におけるグラフィクスバッファ１０９Ｄに対応する。
【０２９４】
コマンドプロセッサ／グラフィックレンダラ２２５は、ＧＯＢＪパーサ２２４から供給された表示制御命令テーブル２０２に記述される表示制御命令に従い、オブジェクトバッファ２２８に蓄積されているビットマップデータを読み出して指定された時刻にプレーンバッファ２２９に転送する。プレーンバッファ２２９は、例えば図３４におけるサブピクチャプレーン１３２およびグラフィクスプレーン１３３に対応させることができる。例えば、字幕と、字幕以外のグラフィクスオブジェクトとに対してそれぞれプレーンバッファ２２９Ａ、２２９Ｂ（図示しない）を設けることができる。これに限らず、サブピクチャプレーン１３２およびグラフィクスプレーン１３３を、プレーンバッファ２２９上の異なる領域とすることもできる。
【０２９５】
また、コマンドプロセッサ／グラフィックレンダラ２２５は、ＧＯＢＪパーサ２２４から供給されたパレットデータを、図３４のパレット１５０に対応する共通パレットテーブル２３０に供給する。コマンドプロセッサ／グラフィックレンダラ２２５は、図３４のマルチメディアエンジン１０６の一部の機能およびサブピクチャデコーダ１１６の一部の機能を併せ持つ。
【０２９６】
グラフィクスオブジェクト２００がボタンを構成するものである場合、上述したように、ボタンの３種類の状態にそれぞれ対応したＰＮＧデータ２０３Ａ、２０３Ｂおよび２０３Ｃがグラフィクスオブジェクト２００に格納される。ＰＮＧデータ２０３Ａ、２０３Ｂおよび２０３Ｃは、ＰＮＧデコーダ２２７でデコードされ、オブジェクトバッファ２２８にそれぞれ蓄積される。
【０２９７】
一方、ユーザのリモコンなどによる入力が、コマンドプロセッサ／グラフィックレンダラ２２５により受け取られる。コマンドプロセッサ／グラフィックレンダラ２２５は、このユーザ入力に応じて、オブジェクトバッファ２２８から該当するビットマップを読み出して、プレーンバッファ２２９に転送する。例えば、ユーザ入力があるボタンに対して選択状態から実行状態に状態遷移させるものであれば、オブジェクトバッファ２２８から、実行状態のボタン画像に対応するビットマップデータが選択的に読み出されて、プレーンバッファ２２９に転送される。
【０２９８】
なお、コマンドプロセッサ／グラフィックレンダラ２２５は、オブジェクトバッファ２２８から読み出したビットマップデータに対して、表示制御命令に従い部分切り出しなどの特殊効果処理を施すこともできる。
【０２９９】
この実施の第１の形態では、ＰＮＧデータは、１画素のサンプリング深さが８ビットとされているため、プレーンバッファ２２９は、１画素当たり８ビットのデータが並んでいることになる。プレーンバッファ２２９は、ディスプレイ装置などに実際に画像を表示させる処理を行う表示系の走査周期毎に読み出される。プレーンバッファ２２９から読み出されたビットマップデータは、例えば図３４のパレット１５０に対応できる共通パレットテーブル２３０に供給され、パレットインデックス値から実際のＲＧＢ（４：４：４）の色情報に変換されると共に、不透明データα１、α２が抜き出される。ＲＧＢ（４：４：４）の色情報は、図示されない変換回路でＹＣｂＣｒ（４：４：４）の色情報に変換され、不透明データα１、α２と共に、図３４のプレゼンテーションプロセッサ１３９に供給される。
【０３００】
なお、例えばフェードイン／フェードアウトなどの、パレットや不透明度を変える処理が必要な特殊効果は、コマンドプロセッサ／グラフィックレンダラ２２５が表示制御命令に従い共通パレットテーブル２３０のデータを変化させることで実現される。また、字幕と、字幕以外のグラフィクスオブジェクト２００に対して、それぞれ共通パレットテーブル２３０Ａ、２３０Ｂ（図示しない）を設けてもよい。
【０３０１】
図４０は、グラフィクスオブジェクト入力バッファ（バッファＴＢｎ１１１Ｂ、以下ＧＯＢＪバッファ）、ＰＮＧデコーダ２２７、オブジェクトバッファ２２８およびプレーンバッファ２２９における蓄積データ量の遷移の例を概略的に示す。なお、ＰＮＧデコーダ２２７は、ＰＮＧデコーダ２２７がＰＮＧデータのデコード時に用いるバッファにおける蓄積データ量が示されている。
【０３０２】
図４０の例では、３つのグラフィクスオブジェクトＧＯＢＪ＃１、ＧＯＢＪ＃２およびＧＯＢＪ＃３によるデータ量の遷移が時間の経過に従い示される。グラフィクスオブジェクトのデコード開始時刻は、ＭＰＥＧ２システムにおけるｄｔｓ(Decoding Time Stamp)で表される。また、オブジェクトの有効期間は、開始時刻がｐｔｓで表され、グラフィクスオブジェクトヘッダ２０１内に記述される時刻presentation_endで終了される。この有効期間内に、表示制御命令によって画像の表示開始および終了が指示される。
【０３０３】
図４０Ｄを参照し、ＧＯＢＪバッファにグラフィクスオブジェクトＧＯＢＪ＃１のＰＮＧデータが入力され、時刻dts of GOBJ#1に、このＰＮＧデータのデコードが開始される。図４０Ｃを参照し、ＰＮＧデータがＧＯＢＪ入力バッファからＰＮＧデコーダ２２７に転送され、ＰＮＧデータがビットマップデータにデコードされる。実際には、ＰＮＧデータは、ＧＯＢＪ入力バッファから一旦ＰＮＧデコーダバッファ２２６に溜め込まれ、ＰＮＧデコーダ２２７は、ＰＮＧデコーダバッファ２２６に溜め込まれたデータを用いてデコード処理を行う。
【０３０４】
ＰＮＧデコーダ２２７は、デコード速度に上限があるため、ＧＯＢＪ入力バッファからＰＮＧデコーダバッファ２２６に対して、ＰＮＧデコーダ２２７のデコード速度を超えないような転送速度でデータが供給される。そのため、ＰＮＧデコーダバッファ２２６に対して、ＰＮＧデコーダ２２７での処理時間を０としたときの垂直線に対し、ある傾きＡに対応するデータ転送レートで以てＰＮＧデータが入力される。
【０３０５】
ＰＮＧデータのＰＮＧデコーダ２２７への入力が完全に終了していなくても、ＰＮＧデータのデコードを開始することが可能である。また、この図４０の例では、ＧＯＢＪ入力バッファに格納されたオブジェクトＧＯＢＪ＃１が全てＰＮＧデコーダ２２７に転送された後、次のオブジェクトＧＯＢＪ＃２のＰＮＧデータの、ＧＯＢＪバッファへの入力が開始されている。
【０３０６】
なお、オブジェクトＧＯＢＪ＃２およびオブジェクトＧＯＢＪ＃３についても、ある傾きＢおよびＣにそれぞれ対応する転送レートで以て、ＰＮＧデコーダバッファ２２６に対してＰＮＧデータが入力される。傾きＢは、実際には、複数の区間でそれぞれ異なる傾きとなっている。
【０３０７】
時刻pts of GOBJ#1によりオブジェクトＧＯＢＪ＃１の有効期間が開始されると、デコードされＰＮＧデコーダバッファに蓄積された、オブジェクトＧＯＢＪ＃１のビットマップデータがオブジェクトバッファ２２８に転送される（図４０Ｂ）。オブジェクトバッファ２２８に転送されたオブジェクトＧＯＢＪ＃１は、このオブジェクトＧＯＢＪ＃１に対して時刻presentation end of GOBJ#1で示される時刻まで、有効期間が持続される。
【０３０８】
オブジェクトＧＯＢＪ＃１の有効期間内に、命令Display ON cmd.of GOBJ#1によりオブジェクトＧＯＢＪ＃１の表示命令が出されたら、オブジェクトバッファ２２８に蓄積されたオブジェクトＧＯＢＪ＃１のビットマップデータがプレーンバッファ２２９に転送され、表示される（図４０Ａ）。詳細は後述するが、ビットマップデータをプレーンバッファ２２９へ転送する際の転送レートは、バス幅などの影響により上限を有する。そのため、プレーンバッファ２２９に対するビットマップデータの書き込みは、例えばある傾きＤに対応する転送レートで以て行われる。
【０３０９】
これは、他のオブジェクトＧＯＢＪ＃２やオブジェクトＧＯＢＪ＃３についても同様に、ある傾きＥ、Ｆ、Ｇに対応する転送レートで以てビットマップデータが転送され、プレーンバッファ２２９に書き込まれる。
【０３１０】
表示は、オブジェクトＧＯＢＪ＃１に対して表示停止を命令するコマンドDisplay OFF cmd.of GOBJ#1が出されるまで、持続される。コマンドDisplay OFF cmd.of GOBJ#1が出されると、プレーンバッファ２２９に格納された当該オブジェクトＧＯＢＪ＃１のビットマップデータが破棄され、表示が停止される。
【０３１１】
ＧＯＢＪバッファには、オブジェクトＧＯＢＪ＃２およびＧＯＢＪ＃３のＰＮＧデータも、順次、入力される。そして、オブジェクトＧＯＢＪ＃１の場合と同様に、時刻dts of GOBJ#2、時刻dts of GOBJ#3からそれぞれデコード開始が指示され、ＰＮＧデータがＰＮＧデコーダ２２７に供給され、ＰＮＧデコーダバッファを用いてビットマップデータへのデコードが行われる。そして、オブジェクトＧＯＢＪ＃２に対して時刻pts of GOBJ#2により有効期間開始が指示され、図４０では省略されているが、コマンドDisplay ON cmd.of GOBJ#2によりオブジェクトＧＯＢＪ＃２の表示命令が出され、オブジェクトバッファ２２８からプレーンバッファ２２９にビットマップデータが転送され、コマンドDisplay OFF cmd.of GOBJ#2が出されるまで、オブジェクトＧＯＢＪ＃２が表示される。
【０３１２】
この図４０の例では、オブジェクトＧＯＢＪ＃２は、一旦、図示されないコマンドDisplay OFF cmd.of GOBJ#2により表示が停止された後、再びコマンドDisplay ON cmd.of GOBJ#2による表示が再開されている。オブジェクトバッファ２２８に格納されたオブジェクトＧＯＢＪ＃２のビットマップデータは、オブジェクトＧＯＢＪ＃２に対して有効期間終了時刻presentasion end of GOBJ#1を指定するまで保持されるため、コマンドDisplay ON cmd.of GOBJ#2を与えることにより、繰り返しオブジェクトＧＯＢＪ＃２を表示させることができる。
【０３１３】
一方、オブジェクトＧＯＢＪ＃３は、オブジェクトＧＯＢＪ＃２の有効期間中に重複して、有効期間が指定されている。この場合、オブジェクトバッファ２２８は、空き容量に応じて、複数のビットマップデータを互いに異なる領域に格納する。例えば、オブジェクトバッファ２２８からオブジェクトＧＯＢＪ＃２のビットマップデータをプレーンバッファ２２９に転送して表示中に、オブジェクトバッファ２２８の異なる領域からオブジェクトＧＯＢＪ＃３のビットマップデータをプレーンバッファ２２９に転送することで、２枚のビットマップデータを同時に表示させることができる。
【０３１４】
２−１１．グラフィクスの転送速度について
ここで、このグラフィクスオブジェクトデコーダモデル２４０（以下、デコーダモデル２４０と略称する）をプレーヤに実装する場合について考える。同一ディスクを異なるプレーヤで再生した際の、プレーヤ同士の再生互換性を保つためには、デコーダモデル２４０に対して所定の制限を設けることが必要となる場合がある。例えば、デコーダモデル２４０のグラフィクス処理能力には上限があり、その能力を超えるグラフィクスデータが入力された場合には、グラフィクスデータのデコードを完全に行うことができなくなり、正常な表示を行うことができなくなる。
【０３１５】
すなわち、プレーヤ側では、プレーヤが最小限備える必要のあるグラフィクス処理能力を規格により定める。一方、ディスク側では、ディスクに記録するコンテンツを制作する側において、規格により定められたプレーヤの能力の範囲内で処理可能なグラフィクスを用意する。このようにしてプレーヤ側とディスク制作側とでグラフィクス処理能力の整合性を図ることで、再生互換性を保つことができる。
【０３１６】
この発明の実施の第１の形態では、上述の図３９における、ＧＯＢＪパーサ２２４からＰＮＧデコーダバッファ２２６へのデータ転送速度Ｒ（１）と、コマンドプロセッサ２２５からプレーンバッファ２２９へのデータ転送速度Ｒ（２）とを規定する。
【０３１７】
データ転送速度Ｒ（１）は、ＰＮＧデコーダバッファ２２６に入力されるデータの、単位時間当たりのデータ転送量を規定する。すなわち、上述の図４０Ｃに示される傾きＡ、ＢおよびＣがデータ転送速度Ｒ（１）に対応する。これは、ＰＮＧデコーダバッファ２２６の後に接続されるＰＮＧデコーダ２２７の、圧縮符号化されたグラフィクスデータを単位時間当たりにデコードできる量を示すデコード能力を規定する。したがって、データ転送速度Ｒ（１）を制限することで、入力された圧縮符号化グラフィクスデータに対してデコードが間に合わなくなり、表示などが破綻状態になる状況が防止される。
【０３１８】
データ転送速度Ｒ（２）は、画像の更新速度を規定する。プレーンバッファ２２９は、実際に表示装置に表示される画面に対応している。そのため、プレーンバッファ２２９へのデータの書き込み速度によって、ユーザが見るグラフィクスの更新速度が決まる。データ転送速度Ｒ（２）の単位は、［バイト／秒］であって、プレーン全体すなわち全画面を更新する際の最小更新時間間隔を規定する。すなわち、上述の図４０Ａに示される傾きＤ、Ｅ、ＦおよびＧがデータ転送速度Ｒ（２）に対応する。
【０３１９】
プレーンの一部だけを更新する場合には、更新される画像データが少ないためデータ転送速度Ｒ（２）で規定される最小更新時間間隔よりも短い周期で更新される。但し、更新間隔は、更新される画像データのデータ量に反比例するとは限らず、当該画像データのプレーン上の配置により大きく影響される。
【０３２０】
プレーンの更新速度について、図４１を用いてより具体的に説明する。オブジェクトバッファ２２８には、２個のグラフィクスオブジェクト４６０および４６１が格納されているものとする。ここで、これら２個のグラフィクスオブジェクト４６０および４６１を、同時にプレーンバッファ２２９に書き込み表示させることを考える。
【０３２１】
グラフィクスオブジェクト４６０および４６１は、オブジェクトバッファ２２８から読み出され、コマンドプロセッサ／グラフィックレンダラ２２５に供給される。このコマンドプロセッサ／グラフィックレンダラ２２５からの出力が上述のデータ転送速度Ｒ（２）により制限され、画面上の更新速度（更新間隔）が制限されることになる。
【０３２２】
このとき、更新速度は、グラフィクスオブジェクト４６０および４６１の合計のデータ量ではなく、グラフィクスオブジェクト４６０および４６１を、プレーン上にどのように配置するかによって決まる。これは、グラフィクス処理を行う一般的なグラフィクスプロセッサでは、プレーンの更新を矩形領域で行うためである。
【０３２３】
例えば、プレーン上に配置されるグラフィクスオブジェクト４６０および４６１を全て含む矩形領域２６２で以て、プレーンの更新がなされる。すなわち、コマンドプロセッサ／グラフィックレンダラ２２５において、グラフィクスオブジェクト４６０および４６１の配置情報に基づき矩形領域２６２の画像データが形成される。この矩形領域２６２の画像データが例えばバスを介してプレーンバッファ２２９に供給される。プレーンバッファ２２９では、例えば表示位置の指定に基づき、矩形領域２６２に対応する領域のデータが矩形領域２６２のデータと置き換えられる。
【０３２４】
コマンドプロセッサ／グラフィックレンダラ２２５から出力される画像データは、ビットマップデータであるので、画像の内容によらず、画像の面積に応じたデータ量を有することになる。図４１の例の場合、２個のグラフィクスオブジェクト４６０および４６１を含む矩形領域２６２の画像データ量は、例えば〔幅(Width)×高さ(Height)〕バイトで表すことができる。
【０３２５】
ここで、プレーンバッファ２２９へのデータ転送速度が速度Ｒ（２）〔バイト／秒〕とされていることから、これら２個のグラフィクスオブジェクト４６０および４６１は、｛速度Ｒ（２）／（幅×高さ）｝秒の時間で更新できることが分かる。すなわち、｛速度Ｒ（２）／（幅×高さ）｝秒後には、次のグラフィクスオブジェクトの描画が可能となる。したがって、ディスク制作側では、次のグラフィクスオブジェクトの描画を、少なくともこの時間以上の間隔を空けて行うようにプログラムすることで、どのプレーヤでも同一のグラフィクス表示がなされ、再生互換性を保つことができる。
【０３２６】
後述する動きのある字幕表示についても、上述のようにしてデータ転送速度Ｒ（２）を見積もることで、再生互換性を保つようにアニメーション速度を決めることができる。
【０３２７】
２−１２．グラフィクスオブジェクトの構造の詳細
次に、グラフィクスオブジェクト２００の構造について、より詳細に説明する。図４２は、グラフィクスオブジェクト２００の一例の構造を表すシンタクスを示す。図３７Ａなどにおけるグラフィクスオブジェクトヘッダ２０１がブロックGraphicsObjectHeader()、表示命令制御テーブル２０２がブロックGOBJCommandTable()、ＰＮＧデータ領域２０３がブロックPNGImageRegion()にそれぞれ相当する。
【０３２８】
ブロックGraphicsObjectHeader()の先頭にフィールドlengthが配置される。フィールドlengthは、データ長が８ビットの０以上の整数で、フィールドlengthの直後からブロックGraphicsObjectHeader()の終わりまでの長さをバイトで示す。フィールドpresentation_end_time_stampは、データ長が３３ビットの０以上の整数で、このグラフィクスオブジェクト２００の有効期間終了時刻を表す。グラフィクスオブジェクトの有効期間は、ＰＥＳパケットヘッダのptsからこのフィールドpresentation_end_time_stampで示される有効期間終了時刻までである。フィールドNumber_of_PNG_imagesは、データ長が８ビットの０以上の整数で、ブロックPNGImageRegion()に格納されているＰＮＧ画像の数を表す。フィールドNumber_of_DispCmdsは、データ長が８ビットの０以上の整数で、ブロックGOBJCommandTable()に格納されている表示制御命令の数を表す。
【０３２９】
ブロックGraphicsObjectHeader()内のブロックGlobalPaletteTable()は、このグラフィクスオブジェクト２００で共通に使用されるパレットテーブルの情報が格納される。例えばこのブロックGlobalPaletteTable()に記述されるパレットテーブルの情報が、例えば共通パレットテーブル２３０の内容としてセットされる。フィールドstart_address_of_PNG_image(i)は、データ長が３２ビットの０以上の整数で、ｉ番目のＰＮＧ画像のデータPNG_image(i)が開始される位置を、このGraphicsObject()の先頭からの相対バイト数で表現する。
【０３３０】
フィールドPNG_file_name(i)は、フィールドstart_address_of_PNG_image(i)から始まるＰＮＧデータのファイル名を表す。ブロックPNGImageRegion()内のフィールドであるフィールドPNG_image(i)の内容は、単体のＰＮＧファイルと同一であり、ブロックPNGImageRegion()は、一つ以上のＰＮＧファイルを連結して作られる。例えば、上述の図３７Ａでは、ＰＮＧデータ２０３Ａ、２０３Ｂ、・・・、２０３ｎが連結されてブロックPNGImageRegion()が作られる。その際にファイル名が失われないよう、フィールドPNG_file_name(i)にファイル名を保持しておくことができる。逆に、ブロックPNGImageRegion()を分解して個別のＰＮＧファイルを復元する際には、各フィールドPNG_image(i)を、ｉが対応するフィールドPNG_file_name(i)で示されるファイル名の、独立したファイルとすればよい。
【０３３１】
ブロックGOBJCommandTable()は、実行時刻が同じ表示制御命令を集めた命令グループDispCmds(i)から構成される。命令グループDispCmds(i)は、必ず実行時刻を指定する命令execution_time(time)から開始して、表示制御命令が並べられる。換言すると、命令execution_time(time)から次の命令execution_time(time)の前までが一つの命令グループDispCmds(i)を構成している。
【０３３２】
ブロックPNGImageRegion()は、上述したように、ＰＮＧ方式で圧縮符号化された画像一枚分のデータであるフィールドPNG_image(i)の並びで構成される。
【０３３３】
なお、ブロックGraphicsObjectHeader()とブロックGOBJCommandTable()との間には、任意の数のpadding_wordを挿入することができる。同様に、ブロックGOBJCommandTable()とブロックPNGImageRegion()の間には任意の数のpadding_wordを挿入することができる。
【０３３４】
図４３は、上述したブロックGlobalPaletteTable()の一例の構造を表すシンタクスを示す。フィールドnumber_of_palette_entriesは、次に羅列されているパレットデータの数を表す。データ長が８ビットのインデックス番号で画像を表現する場合、このフィールドnumber_of_palette_entriesの値は、最大で２５６となり、２５６色を用いることができる。この２５６色のうち一部の色だけを使用する場合、必要なパレットデータだけが存在すればよい。このフィールドnumber_of_palette_entriesにより、用いるインデックスの数が示される。
【０３３５】
フィールドpalette_index_numberは、次のフィールドred_value、フィールドgreen_valueフィールドblue_valueフィールドalphaでそれぞれ定義される色や不透明度に割り当てられたインデックス番号を表す。画像データからは、このインデックス番号によって色や不透明度αが参照される。
【０３３６】
このブロックGlobalPaletteTable()においてfor文で示されるループの中では、同じ値を持つフィールドpalette_index_numberが二度以上現れてはならない。フィールドred_value、フィールドgreen_valueおよびフィールドblue_valueは、それぞれデータ長が８ビットの０以上の整数であって、それぞれ赤、緑、青の色を指定する。８ビットのデータ長を有するフィールドalphaは、不透明度αを表し、値０が完全に透明、値２５５が完全に不透明な状態を表す。
【０３３７】
なお、各ＰＮＧ画像は、パレット情報ＰＬＴＥを格納するチャンクを持つことができるが、この実施の第１の形態では、そのパレット情報ＰＬＴＥを使用せず、ブロックGlobalPaletteTable()で定義されたパレット情報を使うものとする。これは、同時に複数のＰＮＧ画像を表示する場合、各ＰＮＧ画像が異なるパレットテーブルに基づく色を使っていると、それぞれ正しい色で表示することが困難になるためである。すなわち、GraphicsObject()に属する、フィールドPNG_image(i)でそれぞれ表される複数のＰＮＧ画像は、全て共通のブロックGlobalPaletteTable()を参照、ブロックGlobalPaletteTable()に示される共通のパレットテーブルを用いるものとする。
【０３３８】
次に、命令グループDispCmds(i)について説明する。命令グループDispCmds(i)は、グラフィクスオブジェクト２００による表示を制御する表示制御命令が羅列される。命令グループDispCmds(i)において、命令execution_time(start_time)は、次の命令execution_time(start_time)の前までの命令を、指定の時刻start_timeに実行することを指示する。時刻start_timeの原点は、当該グラフィクスオブジェクト２００のｐｔｓとする。また時刻start_timeの単位は、ｐｔｓと同じものが用いられる。
【０３３９】
一つの命令グループDispCmds(i)は、命令execution_time(start_time)により時刻start_timeから始まり、その他の複数の命令を置くことができる。命令グループDispCmds(i)に置かれたこれらの命令は、命令execution_time(start_time)で指定される時刻start_timeに同時に、実行されるものとする。また、命令グループDispCmds(i)による命令の実行完了時刻前に、次の命令グループDispCmds(i+1)の命令exectution_time(start_time)で示される時刻start_timeになった場合は、命令グループDispCmds(i)の実行は中断され、次の命令グループDispCmds(i+1)が実行される。
【０３４０】
命令グループDispCmds(i)に置かれる、命令exectution_time(start_time)以外の表示制御命令としては、図４４に一覧が例示されるように、以下のものが考えられる。なお、各行頭の番号は、図４４の各番号にそれぞれ対応している。（すなわち、番号（１）を、命令exectution_time(start_time)とする）
（２）グラフィクスオブジェクトの表示を開始する命令
（３）グラフィクスオブジェクトの表示を停止する命令
（４）使用中のパレットテーブルの色や不透明度を変更する命令
（５）グラフィクスオブジェクトのプレーン上での表示位置やサイズを設定する命令
（６）グラフィクスオブジェクトの中の表示範囲を設定する命令
（７）効果音の再生を行う命令
（８）画像データ（ＰＮＧデータ）に効果音を割り当てる命令
【０３４１】
なお、これら７種類の命令は、一例であって、命令グループDispCmds(i)に置かれる命令は、この７種類に限定されるものではない。表示制御命令をさらに追加してもよい。
【０３４２】
（２）および（３）の、グラフィクスオブジェクト２００の表示の開始および終了命令は、所謂フェードイン／フェードアウトを行うための命令であって、それぞれ命令fade_in(fade_in_time)、命令fade_out(fade_out_time)の形で用いられる。
【０３４３】
フェードインは、命令fade_in(fade_in_time)で指示され、グラフィクスオブジェクト２００が非表示の状態から徐々に表示の状態に変化していく。アルファブレンディングの不透明度αの値を、時刻fade_in_timeに基づき徐々に増加させていくことで、フェードインが実現できる。命令execution_time(start_time)の後に命令fade_in(fade_in_time)が置かれていると、命令execution_time(start_time)で指定される時刻start_timeの直後から当該グラフィクスオブジェクト２００が徐々に透明から不透明になっていき、引数の時刻fade_in_timeで指定された時間が経過すると、全てのパレットインデックスの不透明度αの値が共通パレットテーブルで指定した値に設定される。
【０３４４】
なお、命令fade_in(fade_in_time)において、時刻fade_in_timeが０に設定されていると、当該グラフィクスオブジェクト２００がパレットテーブルに指定される色および不透明度αで即座に表示される。
【０３４５】
フェードアウトは、フェードインの逆の処理であって、命令fade_out(fade_out_time)で指示され、グラフィクスオブジェクト２００が表示の状態から徐々に非表示の状態に変化していく。アルファブレンディングの不透明度αの値を、時刻fade_out_timeに基づき徐々に減少させていくことで、フェードアウトが実現できる。命令execution_time(start_time)の後に命令fade_out(fade_out_time)が置かれていると、命令execution_time(start_time)で指定される時刻start_timeの直後から当該グラフィクスオブジェクト２００が徐々に不透明から透明になっていき、引数の時刻fade_out_timeで指定された時間が経過すると、全てのパレットインデックスの不透明度αの値が０とされ、当該グラフィクスオブジェクト２００が完全に透明になり、見えなくなる。
【０３４６】
なお、命令fade_out(fade_out_time)において、時刻fade_out_timeが０に設定されていると、当該グラフィクスオブジェクト２００の表示が即座に停止される。
【０３４７】
フェードインおよびフェードアウトにおいて、不透明度αの値は、時間の経過と共にできるだけ滑らかに変化させると、より自然なフェードインおよびフェードアウトの効果が得られ、好ましい。これは、この例に限られず、例えば、フェードインにおいて、不透明度αの値は、時刻fade_in_timeで示される時間が経過した後に、パレットテーブルで指定した値になっていればよく、どの程度の分解能や階調で不透明度αを変化させるかについては、命令によって指定していない。実際には、不透明度αの変化の分解能や階調は、実装に依存する。
【０３４８】
なお、ここでは可読性を上げるために、命令を「fade_in()」、「fade_out()」のようにテキストで表記して説明したが、実際には、これらの命令fade_in()、fade_out()は、その引数と共に所定のバイナリ値に変換されてDispCmds(i)に記述される。これは、以降に説明される他の命令についても同様である。
【０３４９】
（４）の、使用中のパレットテーブルの色や不透明度αを変更する命令は、パレット情報を変更する。この命令は、命令change_palette(index, newR, newG, newB, newAlpha)の形で用いられる。字幕プレーン１１やグラフィクスプレーン１２に同時に表示されるＰＮＧ画像は、図４３に示したシンタクスで定義される、上述の図１９のような共通のパレットテーブルを参照している。通常は、GlobalPaletteTable()で定義されたパレット情報がそのまま共通パレットテーブルとして使用される。この命令change_palette(index, newR, newG, newB, newAlpha)を用いることで、この共通のパレット情報を変更することができる。
【０３５０】
すなわち、命令change_palette(index, newR, newG, newB, newAlpha)に引数として記述される値index、newR、newG、newBおよびnewAlphaにより、パレット２２において、パレット番号indexで示されるカラーインデックス値の三原色の値Ｒ、ＧおよびＢが値newR、newGおよびnewBにそれぞれ変更され、不透明度αの値が値newAlphaに変更される。
【０３５１】
（５）の、グラフィクスオブジェクトのプレーン上での表示位置やサイズを設定する命令は、命令set_display_box(x1,y1,x2,y2)の形で用いられ、プレーン上の座標(x1,y1)および(x2,y2)で定められる矩形領域(x1,y1)(x2,y2)に、当該グラフィクスオブジェクト２００を配置する。また、（６）の、グラフィクスオブジェクトの中の表示範囲を設定する命令は、命令set_clipping_box(a1,b1,a2,b2)の形で用いられ、グラフィクスオブジェクト２００によるＰＮＧ画像上の座標(a1,b1)および(a2,b2)で定められる矩形領域(a1,b1)(a2,b2)を、実際にプレーン上に表示する。
【０３５２】
図４５を用いて、命令set_display_box(x1,y1,x2,y2)および命令set_clipping_box(a1,b1,a2,b2)について、より具体的に説明する。なお、図４５における座標は、図４６に一例が示されるように、表示画面の左上隅を原点とし、水平右方向をｘ、垂直下方向をｙとして、座標（ｘ，ｙ）と表す。
【０３５３】
命令set_clipping_box(a1,b1,a2,b2)により、図４５Ａに示されるように、グラフィクスオブジェクト２００によるＰＮＧ画像２５０内の、実際に表示される矩形領域(a1,b1)(a2,b2)が設定される。この図４５Ａの例では、設定される矩形領域(a1,b1)(a2,b2)がＰＮＧ画像２５０に対して小さいものとされている。命令set_display_box(x1,y1,x2,y2)により、この矩形領域(a1,b1)(a2,b2)のプレーン上における実際の表示位置が矩形領域(x1,y1)(x2,y2)に設定される（図４５Ｂ参照）。すなわち、画面上の矩形領域(x1,y1)(x2,y2)に対して、ＰＮＧ画像２５０のうち矩形領域(a1,b1)(a2,b2)の部分が表示される。
【０３５４】
ここで、矩形領域(a1,b1)(a2,b2)が実際に表示される矩形領域(x1,y1)(x2,y2)よりも大きい場合は、矩形領域(a1,b1)(a2,b2)のうち矩形領域(x1,y1)(x2,y2)の範囲のＰＮＧ画像だけが表示される。一方、矩形領域(a1,b1)(a2,b2)の大きさが実際に表示される矩形領域(x1,y1)(x2,y2)よりも小さい場合は、矩形領域(x1,y1)(x2,y2)内の矩形領域(a1,b1)(a2,b2)の外側は、透明色として扱うとよい。
【０３５５】
上述した表示制御命令を、命令execution_time(start_time)を複数用いて並べることにより、時間経過に従って変化する字幕や同期型グラフィクスを表示することができる。例えば、図４２を用いて説明したグラフィクスオブジェクト２００において、ブロックGOBJCommandTable()内に、複数の命令グループDispCmds(i)を記述する。そして、命令グループDispCmds(i)のそれぞれは、命令execution_time(start_time)における時刻start_timeを所望に異ならせて記述し、時刻start_timeで示される時刻に開始する表示制御命令を記述する。
【０３５６】
図４７は、命令グループDispCmds(i)の記述とグラフィクスオブジェクト２００の表示変化の一例を示す。図４７において、横軸は時間の経過を表し、縦軸はグラフィクスオブジェクト２００の不透明度を表す。不透明度は、図４７で上に向かうほど大きくなる。ｐｔｓで示される時刻が原点とされる。
【０３５７】
最初の命令グループDispCmds(0)により、プレーン上の表示領域が命令set_display_box(800,800,1300,900)として、グラフィクスオブジェクト２００のＰＮＧ画像における表示領域が命令set_clipping_box(0,0,500,100)として設定し、命令fade_in(2 sec)により、２秒かけてフェードインする処理を、時刻〔０〕から開始することが指示される。次の命令グループDispCmds(1)は、命令change_palette(index, newR, newG, newB, Alpha)がカラーインデックス値〔１〕、〔２〕〔３〕および〔４〕についてそれぞれ記述され、時刻〔８００〕から、パレットテーブル２２においてカラーインデックス値〔１〕、〔２〕、〔３〕および〔４〕で参照される色および不透明度αを変更する旨が指示される。そして、次の命令グループDispCmds(2)により、表示されているグラフィクスオブジェクト２００を、時刻〔２０００〕から２秒かけてフェードアウトすることが指示される。
【０３５８】
この図４７に示されるように、命令グループDispCmds(0)、DispCmds(1)およびDispCmds(2)を並べることで、時間経過に従って表示が変化する例えば字幕を実現することができる。すなわち、命令グループDispCmds(0)、DispCmds(1)およびDispCmds(2)を適当に用いることで、字幕やボタン画像のアニメーション表示が可能とされる。
【０３５９】
図４８は、字幕表示が徐々に現れるフェードインの例を示す。図４８Ａ〜図４８Ｄと、徐々に字幕表示が現れるように表示制御される。このような単純なフェードインは、上述した図４７の命令グループDispCmds(0)と同様の命令で実現することができる。
【０３６０】
図４９は、字幕のＰＮＧ画像２６０がプレーン内を移動する例を示す。これは、命令set_display_box(x1,y1,x2,y2)を複数、用いることで実現できる。例えば、最初の命令グループDispCmds(0)において、命令execution_time(start_time)により開始時刻が設定され、命令set_clipping_box(a1,b1,a2,b2)により図４９Ａに一例が示されるようにＰＮＧ画像２６０の表示領域を設定すると共に、命令set_display_box(x1,y1,x2,y2)により、ＰＮＧ画像２６０のプレーン内での初期の表示領域を設定する。
【０３６１】
そして、次の命令グループDispCmds(1)において、命令execution_time(start_time)により命令グループDispCmds(0)から所定時間経過した時刻が開始時刻として指定されると共に、命令set_display_box(x1',y1',x2',y2')により、プレーン内の移動先の表示領域が設定される。同様にして、次の命令グループDispCmds(2)において、命令execution_time(start_time)により命令グループDispCmds(1)から所定時間経過した時刻が開始時刻として指定されると共に、命令set_display_box(x1",y1",x2",y2")により、プレーン内の移動先の表示領域が設定される。
【０３６２】
このようにすることで、図４９Ｂに一例が示されるように、字幕のＰＮＧ画像２６０がプレーン上の矩形領域(x1,y1)(x2,y2)、矩形領域(x1',y1')(x2',y2')、矩形領域(x1",y1")(x2",y2")と移動するようにできる。
【０３６３】
図５０は、字幕のＰＮＧ画像２６１内の表示領域２６２が移動し、字幕表示をスクロールさせる例を示す。これは、命令set_clipping_box(a1,b1,a2,b2)を複数、用いることで実現できる。例えば、最初の命令グループDispCmds(0)において、命令execution_time(start_time)により開始時刻が設定され、命令set_clipping_box(a1,b1,a2,b2)により、図５０Ａに一例が示されるように、ＰＮＧ画像２６０において初期に表示される矩形領域２６２を設定すると共に、命令set_display_box(x1,y1,x2,y2)により、ＰＮＧ画像２６０がプレーン内で表示される矩形領域を設定する。
【０３６４】
そして、次の命令グループDispCmds(1)において、命令execution_time(start_time)により命令グループDispCmds(0)から所定時間経過した時刻が開始時刻として指定されると共に、命令set_clipping_box(a1',b1',a2',b2')により、ＰＮＧ画像２６０内の移動先の表示領域が設定される。同様にして、次の命令グループDispCmds(2)において、命令execution_time(start_time)により命令グループDispCmds(1)から所定時間経過した時刻が開始時刻として指定されると共に、命令set_clipping_box(a1",b1",a2",b2")により、ＰＮＧ画像２６０内の移動先の矩形領域が設定される。
【０３６５】
このようにすることで、図５０Ｂに一例が示されるように、プレーン上の矩形領域(x1,y1)(x2,y2)内を、字幕のＰＮＧ画像２６１内の一部の矩形領域が矩形領域(a1,b1)(a2,b2)、矩形領域(a1',b1')(a2',b2')、矩形領域(a1",b1")(a2",b2")と移動するようにされ、字幕表示のスクロールを実現できる。
【０３６６】
図５１は、ＰＮＧ画像２６５の一部を表示する枠を設定し、ＰＮＧ画像２６５上でこの枠を移動させつつ、プレーン上での表示位置も移動させる例を示す。これは、命令set_display_box(x1,y1,x2,y2)と、命令set_clipping_box(a1,b1,a2,b2)とを複数、同時に用いることで実現できる。例えば、最初の命令グループDispCmds(0)において、命令execution_time(start_time)により開始時刻が設定され、命令set_display_box(x1,y1,x2,y2)と命令set_clipping_box(a1,b1,a2,b2)とにより、枠２６６Ａが設定される（図５１Ａ参照）。
【０３６７】
例えば、命令set_display_box(x1,y1,x2,y2)によりプレーン上で表示される矩形領域(x1,y1)(x2,y2)が設定されると共に、命令set_clipping_box(a1,b1,a2,b2)によりＰＮＧ画像２６５において表示される矩形領域(a1,b1)(a2,b2)が設定される。これら矩形領域(x1,y1)(x2,y2)および矩形領域(a1,b1)(a2,b2)により、枠２６６Ａが設定される。
【０３６８】
そして、次の命令グループDispCmds(1)において、命令execution_time(start_time)により命令グループDispCmds(0)から所定時間経過した時刻が開始時刻として指定され、命令set_display_box(x1',y1',x2',y2')によるプレーン内の矩形領域(x1',y1')(x2',y2')と、命令set_clipping_box(a1',b1',a2',b2')によるＰＮＧ画像２６５上の矩形領域(a1',b1')(a2',b2')により、枠２６６Ａに対する移動先の枠２６６Ｂが設定される。同様に、次の命令グループDispCmds(2)において、命令execution_time(start_time)により命令グループDispCmds(1)から所定時間経過した時刻が開始時刻として指定され、命令set_display_box(x1",y1",x2",y2")によるプレーン内の矩形領域(x1",y1")(x2",y2")と、命令set_clipping_box(a1",b1",a2",b2")によるＰＮＧ画像２６５上の矩形領域(a1",b1")(a2",b2")により、枠２６６Ｂに対する移動先の枠２６６Ｃが設定される。
【０３６９】
こうすることで、図５１Ｂに一例が示されるように、字幕のＰＮＧ画像２６５内の一部の矩形領域が移動しつつ、当該矩形領域がプレーン内を領域２６５Ａ、２６５Ｂ、２６５Ｃと移動するような表示が可能となる。
【０３７０】
このように、この発明の実施の第１の形態では、グラフィクスオブジェクト２００の表示制御を、命令execution_time(start_time)により各表示制御命令をグループ化した命令グループDispCmds(i)を用いて行っているため、字幕プレーン１１およびグラフィクスプレーン１２における多彩な表示を、容易に実現することができる。
【０３７１】
２−１３．効果音について
この発明の実施の第１の形態では、さらに、グラフィクスオブジェクト２００の表示制御に同期して音声を出力することができる。上述した、命令グループDispCmds(i)に置かれる、命令exectution_time(start_time)以外の表示制御命令（２）〜（８）のうち、（７）の効果音の再生を行う命令と、（８）の画像データに効果音を割り当てる命令により、音声出力が定義される。また、音声データには、それぞれ識別子sound_idが付与され、互いが識別される。
【０３７２】
なお、ここでいう効果音とは、動画プレーン上に表示される動画や静止画に同期して再生される音声（例えば、映画などにおいて、映画映像と対になって収録されている音声）とは別途に用意された音声データが、字幕やボタンの表示制御に同期または誘引されて再生される音声のことをいう。
【０３７３】
背景技術でも説明したが、ユーザは、例えば、リモートコントロールコマンダ（リモコン）に設けられた、上下左右の方向をそれぞれ指示するようにされたキー（キー（方向キー）などを操作して、メニュー画面に表示されたボタンの一つを選択状態とし、そこで決定キーを操作することで、選択されたボタンに割り当てられた動作を実行状態とする。また、一つのボタンには、「通常（非選択）状態」、「選択状態」および「実行状態」という３種類の状態が存在する。一つのボタンの３種類の状態に対してそれぞれ異なるグラフィクスオブジェクトを対応させることができる。これにより、ボタンの３種類の状態毎に、ボタン画像（形状や色など）を変更することが可能である。こうすることで、ユーザがボタンの状態を区別し易くなり、好ましい。
【０３７４】
さらに、ボタンの３種類の状態毎に、異なる効果音を対応付けることができる。例えば、ユーザが、ある一つのボタンを選択状態にした際に発せられる効果音を「選択状態」のボタン画像に関連付け、また、当該ボタンを実行状態にした際に発せられるクリック音のような効果音を「実行状態」のボタン画像に関連付ける。
【０３７５】
「選択状態」のボタン画像に関連付けられた効果音は、当該効果音を再生する音声データの識別子sound_idで参照され、ユーザが当該ボタンを選択状態にした際に、その識別子sound_idで参照される音声データがプレーヤのメモリから読み出されて、効果音として再生される。同様に、「実行状態」のボタン画像に関連付けられた効果音は、当該効果音を再生する音声データの識別子sound_idで参照され、ユーザがボタンの選択状態時に決定キーを操作するなどして、当該ボタンを実行状態にした際に、「実行状態」のボタン画像に関連付けられた効果音の識別子sound_idにより参照される音声データが、プレーヤのメモリから読み出されて再生される。
【０３７６】
上述した、命令グループDispCmds(i)に置かれる表示制御命令のうち（７）の、効果音の再生を行う命令は、命令play_sound(sound_id)の形で用いられ、識別子sound_idで指定された音声データの再生を指示する。この命令を命令グループDispCmds(i)に含めることにより、命令execution_time(start_time)で指定された時刻start_timeに、識別子sound_idで指定された音声データが再生される。
【０３７７】
一例として、命令play_sound(sound_id)を命令fade_in(fade_in_time)および命令fade_out(fade_in_time)と同時に使用することで、字幕の表示および／または消去に連動して音声データを再生し、効果音を発生させることが可能となる。図５２は、上述した図４７に対して命令play_sound(sound_id)を追加した例を示す。図５２の例では、最初の命令グループDispCmds(0)において、開始時刻〔０〕で２秒かけて表示がフェードインすると共に、命令play_sound(1)により識別子sound_idが〔１〕で特定される音声データが再生される。次いで、命令グループDispCmds(1)において、時刻〔８００〕で表示色が変更されると共に、命令play_sound(2)により識別子sound_idが〔２〕で特定される音声データが再生される。そして、命令グループDispCmds(2)において、時刻〔２０００〕から１秒かけて表示がフェードアウトすると共に、命令play_sound(1)により識別子sound_idが〔１〕で特定される音声データが再び再生される。
【０３７８】
（８）の、ＰＮＧデータに効果音を割り当てる命令は、命令set_sound(PNG_image_id, sound_id)の形で用いられ、識別子PNG_image_idで指定されるＰＮＧデータに対して、識別子sound_idで指定される音声データを割り当てる。この命令set_sound(PNG_image_id, sound_id)により、識別子PNG_image_idで指定されるＰＮＧデータが表示される際に、識別子sound_idで指定される音声データが再生される。ＰＮＧデータの識別子PNG_image_idは、例えば、上述した図４２における、ブロックPNGImageRegion()中のPNG_image(i)に対して指定されるループカウンタｉと同じ値を用いることができる。
【０３７９】
この命令set_sound(PNG_image_id, sound_id)は、主に、選択状態および実行状態のボタンのＰＮＧデータに用いることが想定されている。こうすることで、ボタンが通常状態から選択状態へ遷移する際や、選択状態から実行状態に遷移する際に、それぞれの状態を表すＰＮＧデータに割り当てられた音声データを効果音として発生させることが可能となる。勿論、この例に限らず、ボタン以外のＰＮＧデータに対してこの命令set_sound(PNG_image_id, sound_id)を用いてもよい。
【０３８０】
図５３は、ボタン画像に音声データを割り当てたグラフィクスオブジェクト２００の一例のデータ構造を示す。ＰＮＧデータ領域２０３に、通常状態、選択状態および実行状態それぞれにおけるボタンのＰＮＧデータ２０３Ａ、２０３Ｂおよび２０３Ｃが格納される。この図５３の例では、表示制御命令ではＰＮＧデータに対する座標指定と、音声データの割り当てのみを行い、ＰＮＧデータの表示開始時刻や、表示開始時のボタンの初期状態は、外部のスクリプトプログラムにより制御するようにしている。そのため、表示制御命令は、便宜上、実行時刻〔０〕の命令として記述する。
【０３８１】
図５３に例示されるグラフィクスオブジェクト２００では、表示制御命令テーブル２０２において、命令execution_time(0)に基づき時刻〔０〕で実行される、命令グループDispCmds(0)だけが存在している。識別子PNG_image_idは、〔０〕から始まるので、識別子PNG_image_idが〔０〕で通常状態時のＰＮＧデータ２０３Ａを、識別子PNG_image_idが〔１〕で選択状態時のＰＮＧデータ２０３Ｂを、識別子PNG_image_idが〔２〕で実行状態時のＰＮＧデータ２０３Ｃをそれぞれ表している。
【０３８２】
命令set_sound(1,10)に基づき、識別子PNG_image_idが〔１〕である選択状態のボタンを表示するＰＮＧデータ２０３Ｂが表示されたときには、識別子sound_idが〔１０〕で指定される音声データが効果音として再生される。同様に、命令set_sound(2,11)に基づき、識別子PNG_image_idが〔２〕である実行状態のボタンを表示するＰＮＧデータ２０３Ｃが表示されたときには、識別子sound_idが〔１１〕で指定される音声データが効果音として再生されることになる。
【０３８３】
上述の図３４では省略されているが、プレーヤは、予め１または複数種類の音声データを、プレーヤ内部のメモリなどに保持することができる。例えば、プレーヤは、プレーヤ内部に設けられた不揮発性メモリなどに、出荷時に予め所定の音声データを記憶しておくようにできる。
【０３８４】
また、これに限らず、グラフィックオブジェクト２００や動画データによるコンテンツが記録されたディスクに、効果音として用いるための音声データを記録しておき、当該ディスクの再生時にこの音声データを読み込んでおくようにしてもよい。ディスクへの音声データの格納方法としては、音声データが格納されたファイルを別に用意し、ディスク再生開始時にこのファイルを先に読み込んでおき、プレーヤ内のメモリに置いておく方法がある。
【０３８５】
あるいは、グラフィクスオブジェクト２００と同様に音声データを格納したＰＥＳパケットを作り、それをＴＳパケットに分割してクリップＡＶストリームに多重化する方法も考えられる。
【０３８６】
さらには、図３７には示していないが、図３７のグラフィクスオブジェクト２００中のグラフィクスオブジェクトヘッダ２０１内、あるいは、ＰＮＧ画像データ領域２０３の直後に、グラフィクスオブジェクト２００に含まれるＰＮＧ画像に対応する音声データを格納する方法も考えられる。
【０３８７】
何れの方法であっても、音声データを予めディスクからプレーヤのメモリに読み込んで蓄積しておくことができるので、ＰＮＧ画像で作られたボタンが選択状態や実行状態になると同時に効果音を発生させることが可能となる。音声データには、それぞれユニークな識別子sound_idが割り当てられており、音声データを一意に特定することができるようにされている。
【０３８８】
２−１４．音声データのディスクへの格納方法について
この、音声データのディスクへの格納方法について、より詳細に説明する。以下では、音声データのディスクへの格納方法として、次の３つの方法について説明する。
（１）音声データをグラフィクスオブジェクト２００に多重化する方法
（２）音声データをクリップＡＶストリームに多重化せず、且つ、識別子sound_id毎の音声データファイルとする方法
（３）音声データをクリップＡＶストリームに多重化せず、且つ、複数の音声データをまとめて一つのデータファイルとする方法
【０３８９】
２−１４ａ．第１の格納方法
先ず、（１）の、音声データをグラフィクスオブジェクト２００に多重化する方法（以下、第１の格納方法と呼ぶ）について、図５４を用いて説明する。図５４Ａおよび図５４Ｂは、音声データをグラフィクスオブジェクト２００に付加してクリップＡＶストリームに多重化する例を示す。
【０３９０】
図５４Ａは、グラフィクスオブジェクト２００中のＰＮＧデータ領域２０３の後ろに音声データ領域２０４を設けた例である。音声データ領域２０４には、複数の音声データ２０４Ａ、２０４Ｂ、・・・、２０４ｎを格納することができる。これら音声データ２０４Ａ、２０４Ｂ、・・・、２０４ｎを、同一のグラフィクスオブジェクト２００に格納されるＰＮＧデータ２０３Ａ、２０３Ｂ、・・・、２０３ｎとそれぞれ関連性のあるものとすると、ＰＮＧ画像および音声データを対応付けての扱いが容易になる。
【０３９１】
音声データ２０４Ａ、２０４Ｂ、・・・、２０４ｎは、例えばＡＩＦＦ(Audio Interchange File Format)形式やＷＡＶＥファイルといった、圧縮符号化されていないデータでもよいし、ＭＰ３(Moving Pictures Experts Group 1 Audio Layer 3)やＡＡＣ(Advanced Audio Coding)、ＡＴＲＡＣ(Adaptive Transform Acoustic Coding)といった、圧縮符号化されたデータでもよい。圧縮符号化された音声データを格納する場合には、プレーヤ側が音声データの圧縮符号化方式に対応したオーディオデコーダを持っている必要がある。
【０３９２】
図５４Ｂは、ボタンを構成するグラフィクスオブジェクト２００に対して、ボタンのそれぞれの状態に対応した音声データを格納した例である。この例では、例えばボタンの選択状態時に再生する音声データ２０４Ａ−２と、実行状態時に再生する音声データ２０４Ｂ−２とが、音声データ領域２０３に格納される。一方、ＰＮＧデータ領域２０３には、通常状態、選択状態および実行状態それぞれのボタン表示に用いるＰＮＧデータ２０３Ａ−２、２０３Ｂ−２および２０３Ｃ−２が格納される。
【０３９３】
この場合、例えば、ボタン画像が格納されるＰＮＧデータ領域２０３に続く音声データ領域２０４には、ボタンが選択状態時に遷移したときに再生する音声データ２０４Ａ−２と、実行状態時に遷移したときに再生する音声データ２０４Ｂ−２とが格納されるように、予め決めておく。そして、ボタン画像のＰＮＧデータが表示されると同時に、当該ボタンの状態に対応した音声データが再生されるようにする。このプレーヤで再生される効果音は、主にボタンクリック音として使われることを想定しているため、このようなルールでも、十分に、主要な目的を達成することができる。
【０３９４】
図５５は、図３９を用いて説明したグラフィクスオブジェクトデコーダモデル２４０に対して音声データの処理系を追加した、グラフィクスオブジェクトデコーダモデル２４０’の一例の構成を示す機能ブロック図である。なお、図５５において、図３９と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０３９５】
端子２０２からＭＰＥＧ  ＴＳとして入力された、グラフィクスオブジェクト２００に音声データが格納されたクリップＡＶストリームがＰＩＤフィルタ１１０に供給され、ＰＩＤに基づき動画像データ、音声データおよびグラフィクスオブジェクト２００をそれぞれ抜き出す。抜き出されたデータのうち、グラフィクスオブジェクト２００は、バッファＴＢｎ１１１Ｂを介してＧＯＢＪパーサ２２４に供給される。ＧＯＢＪパーサ２２４では、供給されたグラフィクスオブジェクト２００のグラフィクスオブジェクトヘッダ２０１を読み取り、パレットデータを抽出すると共に、表示制御命令テーブル２０２、ＰＮＧデータ領域２０３および音声データ領域２０４を分離する。
【０３９６】
パレットデータおよび表示制御命令テーブル２０２は、コマンドプロセッサ／グラフィックレンダラ２２５に供給される。さらに、音声データ領域２０４の音声データ２０４Ａ、２０４Ｂ、・・・、２０４ｎがコマンドプロセッサ／グラフィックレンダラ２２５に供給され、図示されないバッファにそれぞれ溜め込まれる。
【０３９７】
コマンドプロセッサ／グラフィックレンダラ２２５は、ＧＯＢＪパーサ２２４から供給された表示制御命令テーブル２０２に記述される表示制御命令に従い、バッファから音声データを読み出し、出力する。グラフィクスオブジェクト２００に格納された音声データ２０４Ａ、２０４Ｂ、・・・、２０４ｎが圧縮符号化されている場合には、コマンドプロセッサ／グラフィックレンダラ２２５において復号化されて出力される。
【０３９８】
コマンドプロセッサ／グラフィックレンダラ２２５から出力された音声データは、オーディオミキサ２３１に供給され、プレゼンテーションプロセッサ１４１に対して出力される。オーディオミキサ２３１に他の音声データも入力されている場合には、これらの音声データが所定の割合で混合されて出力される。
【０３９９】
図５６は、上述の図５４Ａおよび図５４Ｂのようにして音声データを加えた場合の、グラフィクスオブジェクト２００の一例の構造を示すシンタクスを示す。このように、上述した図４２の構造に対し、ブロックGraphicsObjectHeader()のフィールドnumber_of_PNG_imagesの次に、フィールドnumber_of_sound_dataが配置され、ブロックSoundDataRegion()に格納されている音声データの数がデータ長が８ビットの０以上の整数で示される。フィールドstart_address_of_sound_data(i)は、データ長が３２ビットの０以上の整数で、ｉ番目の音声データsound_data(i)が開始される位置を、このブロックGraphicsObject()の先頭からの相対バイト数で表現する。また、ブロックPNGImageRegion()の後にpadding_wordが挿入され、続けてブロックSoundDataRegion()が配置される。このブロックSoundDataRegion()に、音声データsound_data(i)として実際の音声データが格納される。
【０４００】
２−１４ｂ．第２の格納方法
次に、（２）の、音声データをクリップＡＶストリームに多重化せず、且つ、識別子sound_id毎の音声データファイルとする方法（以下、第２の格納方法と呼ぶ）について説明する。例えば、図５７に一例が示されるように、ディレクトリＢＤＡＶの下に音声データを格納するディレクトリＳＯＵＮＤを設ける。このディレクトリＳＯＵＮＤには、音声データであるＰＣＭ波形データを格納する、例えばＡＩＦＦ形式の音声データファイル「sound1.aiff」を置く。ディレクトリＳＯＵＮＤに格納された音声データファイルは、例えば当該ディスクのプレーヤへの最初のローディング時にまとめて読み込まれ、プレーヤの内部メモリに格納される。
【０４０１】
各音声データには、音声データそれぞれを識別可能な識別子sound_idが予め割り当てられ、スクリプトなどから識別子sound_idにより、所望の音声データがメモリから呼び出されるモデルが構成される。
【０４０２】
この場合、例えば、グラフィクスオブジェクト２００に対して図５４Ｃに一例が示されるように、サウンドｉｄ領域２０５を設け、このサウンドｉｄ領域２０５に対してサウンドｉｄデータ２０５Ａ、２０５Ｂを格納する。この図５４Ｃの例では、ＰＮＧデータ領域２０３にボタンの通常状態時、選択状態時および実行状態時にそれぞれ対応したＰＮＧデータ２０３Ａ、２０３Ｂおよび２０３Ｃが格納され、サウンドｉｄデータ２０５Ａおよび２０５Ｂは、ＰＮＧデータ２０３Ｂおよび２０３Ｃにそれぞれ対応する識別子sound_idである。ＰＮＧデータ２０３Ｂの表示の際に、プレーヤ内部のメモリに予め格納された、サウンドｉｄデータ２０５Ａが示す識別子sound_idが対応する音声データを再生するように指示される。
【０４０３】
また例えば、図５３を用いて既に説明したように、表示制御命令テーブル２０２の記述によって、ＰＮＧデータと音声データとを関連付けるようにしてもよい。
【０４０４】
識別子sound_idにより音声データを指定するため、図４４を用いて既に説明した表示制御コマンドなどにより、グラフィクス表示とは関係の無い任意の時刻に、音声データによる効果音などを発生させることができる。
【０４０５】
一方、この方法では、識別子sound_idで音声データをメモリから呼び出すため、効果音の種類は、第１に、識別子sound_idの数で制限される。また、第２に、使える効果音の種類が、上述したように、プレーヤの内部メモリの容量により制限される。
【０４０６】
図５８を用いて、より具体的に説明する。ディスク４００のローディング時に、プレーヤによりディスクに対してイニシャルアクセスがなされ、ディレクトリＢＤＡＶの下に配置されるディレクトリＳＯＵＮＤから、音声データがまとめて読み込まれる。読み込まれた音声データ（ＰＣＭデータ）は、プレーヤの内部メモリ４１０に格納される。このとき、音声データのそれぞれに対して固有の識別子sound_idが割り当てられる。ディスク４００に記録されている音声データに対して予め識別子sound_idを付加しておいてもよい。
【０４０７】
この例では、１６個の音声データがディスク４００から読み込まれ、識別子sound_id=1〜16がそれぞれの音声データに割り当てられる。また、音声データそれぞれのデータサイズが取得される。この図５８の例では、識別子sound_id=1〜16の音声データがそれぞれｄ１バイト、ｄ２バイト、・・・、ｄ１６バイトのデータサイズを有しているものとする。
【０４０８】
例えば、ボタン４２０Ａ、４２０Ｂおよび４２０Ｃが表示されるメニュー画面４２０における、ボタン４２０Ｃに対する操作に基づき、ボタン４２０Ｃに対して指定された識別子sound_idにより対応する音声データがメモリ４１０から読み出される。この図５８の例では、ボタン４２０Ｃの実行状態に対して識別子sound_id=1で示される音声データが指定されている。メモリ４１０から読み出されたこの音声データは、所定に処理されてバッファ４５０Ｂに一旦溜め込まれる。そして、オーディオミキサ２３１に供給され、例えば本編の動画像データに付随する音声データと混合されて、音声として出力される。
【０４０９】
なお、バッファ４５０Ａには、例えば本編の動画像データに付随する音声データが一旦、溜め込まれる。例えば、バッファ４５０Ａおよび４５０Ｂの間で、溜め込まれた音声データを読み出すタイミングを調整することで、バッファ４５０Ｂに溜め込まれたボタン４２０Ｃの操作に対応した効果音がバッファ４５０Ａに溜め込まれた音声データの適当なタイミングで出力される。また、この例では、識別子sound_id=0で、音声データの再生無しが指定される。
【０４１０】
このようなモデルにおいて、ディスク４００から読み込み可能な音声データの合計容量がメモリ４１０の容量に基づき制限される。また、それぞれの音声データの容量がバッファ４５０Ｂの容量に基づき制限される。すなわち、メモリ４１０の容量を容量Ｍ（バイト）、バッファ４５０Ｂの容量を容量Ｄｍａｘ（バイト）とした場合、次の２つの条件を満たす必要がある。
【０４１１】
（１）メモリ４１０に格納された音声データのそれぞれの容量ｄｉがバッファ４５０Ｂの容量Ｄｍａｘより小さい。
（２）メモリ４１０に格納された音声データの総容量（ｄ１＋ｄ２＋・・・＋ｄｎ）がメモリ４１０の容量Ｍより小さい。
【０４１２】
換言すれば、この（１）および（２）の条件をプレーヤ側とディスク制作側とに対してルール化し、規格として定めておくことで、効果音などの音声データの再生に関して再生互換性を確保することができる。
【０４１３】
なお、ここでは、音声データをクリップＡＶストリームに多重化しない場合（第２の格納方法）に、音声データをディスクのプレーヤへの最初のローディング時にまとめて読み込むように説明したが、これはこの例に限定されない。一例として、音声データを複数回に分けて読み出すようにできる。例えば、シナリオの進行に応じてある区切となる箇所で、次の区切りまでに用いるだけの音声データをまとめて読み出し、メモリに記憶させる。このとき、それまでメモリに記憶されていた音声データを消去する。こうすることで、１つのシナリオの再生において、メモリの容量以上の音声データを扱うことが可能とされる。
【０４１４】
音声データは、ディスクの所定領域にまとめて記録しておいてもよいし、ディスクの複数領域に分けて記録しておいてもよい。ディスクの複数領域に分けて記録する場合には、例えば、シナリオの進行に応じて、シナリオの区切りに対応したディスク上の位置に、次の区切りまでに用いられる音声データをまとめて記録することが考えられる。
【０４１５】
なお、図５４Ａおよび図５４Ｂを用いて説明した、音声データをクリップＡＶストリームに多重化する方法（第１の格納方法）では、音声データの種類に制約が無く、１画像毎に異なる音声データを指定できる利点がある。すなわち、音声データは、必要に応じてクリップＡＶストリームにより供給されるため、その都度異なる音声データを用いることができる。また、第１の格納方法では、音声データが画像データと同時にクリップＡＶストリームから読み込まれるため、読み込みモデルが簡単になる、音声データのファイル数の制限やファイルサイズの制限は、ディスク容量以外の制約を受けない、などの利点がある。
【０４１６】
一方、第１の格納方法では、異なるグラフィクスオブジェクトで同一の音声データを扱うような場合、それぞれのグラフィックオブジェクトが同一の音声データをそれぞれ持たなければいけないので、データが冗長になってしまう。また、グラフィクスオブジェクトから音声データを抽出する必要があるため、クリップＡＶストリームのデマルチプレクス処理の後に、音声データを分離する処理が必要となる。
【０４１７】
２−１４ｃ．第３の格納方法
次に、（３）の、音声データをクリップＡＶストリームに多重化せず、且つ、複数の音声データをまとめて一つのデータファイルとする方法（以下、第３の格納方法とする）について説明する。複数の音声データは、例えばファイル「HdmvSound.bdmv」にまとめて格納される。ファイル「HdmvSound.bdmv」は、図５９に一例が示されるように、上述の図４に示した"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定された、記録媒体に記録されるファイルの管理構造に対し、ディレクトリＢＤＡＶの直下に置かれる。ディスクがプレーヤに装填されると、このファイル「HdmvSound.bdmv」がイニシャルアクセス時に読み出され、例えばそのディスクに主コンテンツとして収録されているクリップＡＶストリーム（例えば映画など）に先立って、プレーヤが有するメモリに記憶されプリロードされる。
【０４１８】
なお、図５９において、ディレクトリＳＴＲＥＡＭは、例えば映画など、当該ディスクの主コンテンツのクリップＡＶストリームが格納される。
【０４１９】
図６０は、ファイル「HdmvSound.bdmv」の一例のシンタクスを示す。フィールドlengthは、３２ビットのデータ長を有し、フィールドlenghの直後のフィールドからこのファイル「HdmvSound.bdmv」の最後までの長さがバイトで示される。フィールドdata_block_start_addressは、３２ビットのデータ長を有し、ファイル「HdmvSound.bdmv」の中において音声データがまとめて配置されるブロックdata_blockの、先頭バイトの開始アドレスを示す。フィールドnumber_of_sound_entriesは、８ビットのデータ長を有し、ファイル「HdmvSound.bdmv」の中に格納されている音声データ（すなわち、効果音データ）の数を示す。
【０４２０】
forループの引数によって、一つの音声データを参照する識別子sound_idが自動的に与えられる。このforループ中に、引数に対応する識別子sound_idで参照される音声データの情報が記述される。
【０４２１】
ブロックattributes()は、当該音声データの属性を示す。フィールドchannel_assignmentは、当該音声データのチャンネルアサインメントであり、例えば、モノラルや２チャンネルステレオという属性である。フィールドsampling_frequencyは、当該音声データのサンプリング周波数であり、例えば４８ｋＨｚである。フィールドbits_per_sampleは、当該音声データの量子化ビット数であり、例えば１６ビットである。
【０４２２】
フィールドsound_data_start_addressは、３２ビットのデータ長を有し、当該forループのフィールドsound_idで参照される音声データの先頭バイトがブロックdata_blockの中で開始するアドレスを示す。フィールドsound_data_lengthは、３２ビットのデータ長を有し、当該音声データのバイト長である。このforループの終了後、パディングワードを挟んで、ブロックdata_blockが配置される。ブロックdata_blockは、音声データが実際に格納される領域である。
【０４２３】
図６１は、上述のシンタクスによるファイル「HdmvSound.bdmv」の構成を示す。ファイルの先頭からフィールドnumber_of_sound_entriesまでをヘッダ部６００とする。ヘッダ部６００に続けて、forループ部６０１が配置され、次に音声データ部６０２が配置される。
【０４２４】
音声データ部６０２には、識別子sound_id=1〜識別子sound_id=nで参照される音声データが連続的に配置される。例えば、ある音声データの末尾と次の音声データの先頭とがバイト境界で接続されて、識別子sound_id=1〜識別子sound_id=nで参照される音声データが次々に配置される。音声データ部６０２では、forループ部６０１中の、引数が識別子sound_idに対応するループにおけるフィールドsound_data_start_addressにより先頭アドレスが指定され、その指定アドレスから当該ループのフィールドsound_data_lengthで指定される長さまでが、当該ループの引数に対応する識別子sound_idの音声データとして参照される。
【０４２５】
図６２は、この第３の格納方法による効果音再生の一例のアプリケーションイメージを示す。なお、図６２において、上述した図５８と共通する部分には同一の符号を付し、詳細な説明を省略する。ディスク４００のローディング時のプレーヤによるディスク４００に対するイニシャルアクセスにより、ディレクトリＢＤＡＶの下に配置されるファイル「HdmvSound.bdmv」が予め読み込まれる（プリロード）。読み込まれたファイル「HdmvSound.bdmv」は、プレーヤの内部メモリ４１０に格納される。
【０４２６】
図６１を用いて既に説明したように、音声データのそれぞれは、ファイル「HdmvSound.bdmv」のループ部６０１でアドレス情報およびデータ長情報とに基づき指定され、対応する識別子sdound_idにより識別される。この図６２の例では、ファイル「HdmvSound.bdmv」は、ｍ個の音声データを含み、識別子sound_id=１、２、・・・、ｍがｍ個の音声データに対してそれぞれ割り当てられる。それぞれの音声データの容量は、例えば識別子sound_idに対応するデータ長情報および量子化ビット数bits_per_sampleから知ることができる。
【０４２７】
なお、ここでは、音声データがＰＣＭにより符号化されているとして説明したが、これはこの例に限定されない。音声データは、ＭＰＥＧ１レイヤ３（ｍｐ３）方式やＡＡＣ(Advanced Audio Coding)方式、ＡＴＲＡＣ(Adaptive Transform Acoustic Coding)方式など所定の方式で圧縮符号化されて音声データ部６０２に格納されてもよい。この場合でも、各音声データは、ある音声データの末尾と次の音声データの先頭が連続するようにして、音声データ部６０２に格納される。
【０４２８】
例えば、ボタン４２０Ａ、４２０Ｂおよび４２０Ｃが表示されるメニュー画面４２０を考える。メニュー画面４２０において、ボタン４２０Ｃは、通常状態、選択状態および実行状態でそれぞれ異なるボタン画像４２０Ｃ−１、４２０Ｃ−２および４２０Ｃ−３を有するボタン画像セット４３０からなる。このように、ボタンの３種類の状態に応じてボタン画像を変更すると、ユーザがボタン状態を区別し易く、好ましい。また、この図６２の例では、選択状態のボタン画像４２０Ｃ−２に対して識別子sound_id=2の音声データが対応付けられ、実行状態のボタン画像４２０Ｃ−３に対して識別子sound_id=1の音声データが対応付けられている。なお、識別子sound_idの値が「０」のときは、ボタン画像は表示されるが、音声は出力されないものとする。
【０４２９】
例えばユーザのリモコン操作によりボタン４２０Ｃが選択状態から実行状態に遷移すると、ボタンの表示画像がボタン画像４２０Ｃ−２からボタン画像４２０Ｃ−３に変更されると共に、ボタン画像４２０Ｃ−３に対応付けられた識別子sound_id=1の音声データがメモリ４１０から読み出され、再生される。
【０４３０】
すなわち、ボタン画像４２０Ｃ−３が表示されると共に、ボタン画像４２０Ｃ−３に対応付けられた識別子sound_id=1に対応するアドレス情報およびデータ長情報に基づきメモリ４１０がアクセスされ、識別子sound_id=1で示される音声データがメモリ４１０から読み出される。メモリ４１０から読み出された音声データは、バッファ４５０Ｂに一旦溜め込まれる。そして、オーディオミキサ２３１に供給されて、例えばバッファ４５０Ａから出力された、本編の動画像データに付随する音声データと混合されて、音声として出力される。
【０４３１】
なお、この第３の格納方法においても、図５８を用いて説明した上述の（２）の方法の場合と同様に、ディスク４００から読み込み可能な音声データの合計容量や、それぞれの音声データの容量は、メモリ４１０の容量や、バッファ４５０Ｂの容量に基づき制限される。
【０４３２】
この第３の格納方法に適用できるグラフィクスオブジェクトの一例の構成について説明する。この第３の格納方法では、グラフィクスプレーン１２を用いたＧＵＩ(Graphical User Interface)によるメニュー画面を構成するボタン画像を、１つのストリーム構造にまとめて符号化する。以下、このボタン画像データがまとめられたストリームを、インタラクティブグラフィクスストリームと呼ぶ。
【０４３３】
一例として、上述した図６２のメニュー画面４２０でいうと、ボタン４２０Ａ、４２０Ｂおよび４２０Ｃを表示するためのボタン画像データがまとめてインタラクティブグラフィクスストリーム７００（図６３参照）として符号化される。ボタン４２０Ｃの例のように、１つのボタンが状態に応じた複数のボタン画像データ４２０Ｃ−１４２０Ｃ−２および４２０Ｃ−３を有するボタン画像セット４３０からなる場合、ボタン画像セット４３０が含む複数のボタン画像データデータ４２０Ｃ−１、４２０Ｃ−２および４２０Ｃ−３が、ボタン４２０Ａおよび４２０Ｂのボタン画像データと共に、まとめてインタラクティブグラフィクスストリーム７００として符号化される。このインタラクティブグラフィクスストリーム７００は、トランスポートストリームに多重化されて、ディスクに記録される。
【０４３４】
図６３は、インタラクティブグラフィクスストリーム７００の一例の構成を概略的に示す。１つのインタラクティブグラフィクスストリーム７００は、図６３Ａに一例が示されるように、１つのインタラクティブコンポジションセグメント７０１と、１または複数のボタン画像データ７０２、７０２、・・・を持つ。ここで、それぞれのボタン画像データ７０２、７０２、・・・は、異なる値の識別子object_idを有し、この識別子object_idにより参照される。ボタン画像データ７０２、７０２、・・・は、例えばビットマップ画像データを符号化したものであり、例えば、ビットマップ画像データをランレングス符号化して作成する。
【０４３５】
図６３Ｂに一例が示されるように、インタラクティブグラフィクスストリーム７００は、同一のＰＩＤを有する複数のトランスポートパケットのペイロードに格納され、このトランスポートパケットによりトランスポートストリームに多重化される。
【０４３６】
図６４は、インタラクティブコンポジションセグメント７０１の一例の構成を示す。インタラクティブコンポジションセグメント７０１は、セグメントディスクリプションアトリビュート、ディスプレイタイミングアトリビュートと、ボタンレイアウトおよびコマンドとからなる。セグメントディスクリプションアトリビュートおよびディスプレイタイミングアトリビュートは、このインタラクティブポジションセグメント７０１で定義されるボタンの表示属性や表示タイミングに関する属性情報が格納される。
【０４３７】
ボタンレイアウトおよびコマンドは、ＧＵＩによるメニュー画面を構成する１以上のボタンの情報７０３、７０３、・・・を有する。ボタン情報７０３において、フィールドbutton_numberは、各ボタンを識別するための識別子button_numberが格納される。各ボタンは、この識別子button_numberにより識別および参照される。フィールドselected_state_sound_idは、「選択状態」のボタン画像に関連付けられた音声データを参照する識別子sound_idが格納される。フィールドactivated_state_sound_idは、「実行状態」のボタン画像に関連付けられた音声データを参照する識別子sound_idが格納される。フィールドneibour_infoは、図６５に一例が示されるように、このボタンに対して画面上で上下左右に隣接して配置されるボタンの番号Upper_button_number、Lower_button_number、Left_button_numberおよびRight_button_numberが格納される。
【０４３８】
フィールドNormal_state_object_idは、このボタンが「通常状態（非選択状態）」のときに参照されるボタン画像の識別子object_idが格納される。フィールドSelected_state_object_idは、このボタンが「選択状態」のときに参照されるボタン画像の識別子object_idが格納される。フィールドActivates_state_object_idは、このボタンが「実行状態」のときに参照されるボタン画像の識別子object_idが格納される。フィールドcommandは、このボタンが実行状態になったときに実行される、当該ボタンに割り当てられた動作情報が格納される。
【０４３９】
２−１５．プレーンの別の例について
なお、上述では、図１５、図１６および図１７を用いて説明したように、グラフィクスプレーン１２がカラーシステムとしてＹＣｂＣｒ（４：４：４）およびＲＧＢ（４：４：４）を選択可能として説明したが、これはこの例に限定されない。例えば、図６６に一例が示されるように、グラフィクスプレーン１２’をボタン用のビットマップ画像を主たる表示とするように定義し、図６７に一例が示されるように、字幕プレーン１１と同様に、１９２０画素×１０８０ラインで各画素のサンプリング深さが８ビットとされ、カラーシステムを２５６色のパレットを用いた８ビットカラーマップアドレスとしてもよい。
【０４４０】
この場合、動画像プレーン１０、字幕プレーン１１およびグラフィクスプレーン１２’を合成する構成は、図６８に一例が示されるようになる。なお、図６８において、上述の図１７と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０４４１】
グラフィクスプレーン１２’の画像データがパレット２６Ａに入力され、ＲＧＢ（４：４：４）の画像データとして出力される。この画像データに対してアルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α２（０≦α２≦１）がパレット２６Ａから出力される。パレット２６Ａの入出力データおよびパレット２６Ａに格納されるパレットデータは、上述した図１８および図１９と同様であるので、詳細な説明を省略する。
【０４４２】
パレット２６Ａから出力されたＲＧＢデータは、ＲＧＢ／ＹＣｂＣｒ変換回路２６Ｂに供給されてＹＣｂＣｒデータに変換され、、動画データのデータ形式であるＹＣｂＣｒデータに統一される。ＲＧＢ／ＹＣｂＣｒ変換回路２６Ｂから出力されたＹＣｂＣｒデータが乗算器２７に入力される。
【０４４３】
グラフィクスプレーン１２’で用いられる画像データがＰＮＧ形式である場合には、画像データ中に、画素毎に不透明度データα２（０≦α２≦１）を設定することができる。不透明度データα２は、乗算器２７に供給される。乗算器２７では、ＲＧＢ／ＹＣｂＣｒ変換回路２６から入力されたＹＣｂＣｒデータに対し、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒのそれぞれについて、不透明度データα２との乗算が行われる。乗算器２７による乗算結果が加算器２８の一方の入力端に入力される。また、不透明度データα２の補数（１−α２）が乗算器２５に供給される。
【０４４４】
２−１６．デコーダモデルの別の例について
図６９は、図３４を用いて説明したプレーヤデコーダ１００に対して、上述したグラフィクスオブジェクト２００に連動可能な音声データ処理と、グラフィクスプレーン１２’のカラーシステムを２５６色のパレットを用いた８ビットカラーマップアドレスとを適用した場合のプレーヤデコーダ１００’の一例の構成を示す機能ブロック図である。なお、図６９において、上述の図３４と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０４４５】
上述の、クリップＡＶストリームに多重化されない音声データは、例えば入力チャンネル（１）のデータとして入力端１０１に入力され、スイッチ回路１０２および１０３を介してコンテンツバッファ１０５に供給される。一方、音声データが格納されたグラフィクスオブジェクト２００が多重化されたクリップＡＶストリームは、入力端２０２に入力される。そして、ＰＩＤフィルタ１１０でグラフィクスオブジェクト２００が振り分けられバッファＴＢｎ１１１Ａに一旦溜め込まれ、スイッチ回路１０３を介してコンテンツバッファ１０５に供給される。
【０４４６】
音声データの格納されていないグラフィクスオブジェクト２００がクリップＡＶストリームに多重化されて入力端２０２から入力される。ＰＩＤフィルタ１１０でグラフィクスオブジェクト２００を構成するトランスポートパケットが振り分けられ、バッファＴＢｎ１１１ＢまたはバッファＴＢｎ１１１Ｃに一旦溜め込まれる。バッファＴＢｎ１１１Ｂに溜め込まれたトランスポートパケットは、バッファＢｎ１１２Ｂに供給され、ＰＩＤヘッダに基づきグラフィクスオブジェクト２００がまとめられる。グラフィクスオブジェクト２００は、スイッチ回路１０７を介してグラフィクスデコーダＡ５００に供給される。バッファＴＢｎ１１１Ｃに溜め込まれたトランスポートパケットも、同様にしてバッファＢｎ１１２Ｃを用いてグラフィクスオブジェクト２００がまとめられ、スイッチ回路１０８を介してグラフィクスデコーダＢ５０１に供給される。
【０４４７】
グラフィクスデコーダＡ５００およびＢ５０１では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された画像データをデコードして字幕またはグラフィクスを表示するための画像データ、例えばビットマップデータとする。
【０４４８】
一方、コンテンツバッファ１０５に供給された、音声データが格納されたグラフィクスオブジェクト２００に格納される画像データは、コンテンツバッファ１０５から取り出され、スイッチ回路１０７および１０８を介してグラフィクスデコーダＡ５００およびＢ５０１にもそれぞれ供給される。
【０４４９】
この図６９の例では、グラフィクスデコーダＡ５００は、ＰＮＧ形式の画像データをデコードし、グラフィクスデコーダＢ５００は、ＪＰＥＧ形式の画像データをデコードする。なお、グラフィクスデコーダＡ５００およびＢ５０１は、これに限らず、さらに他のデータ形式の画像データをデコードするものであってもよいし、複数の形式の画像データに対応するようにもできる。
【０４５０】
グラフィクスデコーダＡ５００の出力は、スイッチ回路１３０の入力端１３０Ｂおよびスイッチ回路１３１の入力端１３１Ｂに供給され、スイッチ回路１３０および１３１を介してそれぞれサブピクチャプレーン５０２およびグラフィクスプレーン５０３に供給される。
【０４５１】
マルチメディアエンジン１０６は、上述の図３４の構成に加えてサウンドプレーヤ１０６Ｄを有する。バッファ１０９は、上述の図３４の構成に加えてサウンドバッファ１０９Ｅを有する。サウンドプレーヤ１０６Ｄは、サウンドバッファ１０９Ｅを用いて、コンテンツバッファ１０５から読み出した音声データを復号化して、例えばリニアＰＣＭオーディオデータにして出力する。サウンドプレーヤ１０６Ｄから出力された音声データは、プレゼンテーションプロセッサ１４１に供給され、オーディオデコーダ１１８から出力された音声データと混合されて、出力端１４２に導出される。
【０４５２】
例えばボタン画像をクリックした際に発生されるクリック音など、効果音となる音声データは、サウンドプレーヤ１０６Ｄによって再生される。音声データは、サウンドバッファ１０９Ｅに蓄積され、サウンドプレーヤ１０６Ｄにより再生される。サウンドプレーヤ１０６Ｄは、例えば音声データのソフトウェア的な再生処理を行う。
【０４５３】
マルチメディアエンジン１０６では、例えばコードバッファ１０４に蓄えられたＥＣＭＡスクリプトを読み出して解析し、コードバッファ１０４からの他のＥＣＭＡスクリプトやＨＴＭＬ文書の読み出し、コンテンツバッファ１０５からの画像データや音声データの読み出しなどを行う。コンテンツバッファ１０５に格納された音声データは、コンテンツバッファ１０５に格納された他のデータと同様、上述したように、コンテンツバッファ１０５に保持しておくことができる。
【０４５４】
さらに、マルチメディアエンジン１０６により、ユーザからの、リモートコントロールコマンダやポインティングデバイスなどによる入力が受け取られ、所定に処理される。マルチメディアエンジン１０６では、このユーザ入力に基づく処理結果や各スクリプトに応じてコントロール信号を生成する。このコントロール信号は、さらに、グラフィクスデコーダＡ５００およびＢ５０１、オーディオデコーダ１１８、ＭＰＥＧビデオデコーダ１２０およびシステムデコーダ１２１にも供給される。
【０４５５】
グラフィクスレンダラ１０６Ｃで処理された画像データは、スイッチ回路１３０および１３１をそれぞれ介してサブピクチャプレーン５０２およびグラフィクスプレーン５０３に供給される。サブピクチャプレーン５０２およびグラフィクスプレーン５０３は、例えばフレームメモリからなり、図６６を用いて説明した字幕プレーン１１およびグラフィクスプレーン１２’にそれぞれ対応する。
【０４５６】
なお、ここでは、グラフィクスレンダラ１０６Ｃからサブピクチャプレーン５０２およびグラフィクスプレーン５０３に供給される画像データは、例えばＰＮＧ形式またはＪＰＥＧ形式の画像データをグラフィクスレンダラ１０６Ｃでデコードした後のビットマップデータであるものとする。
【０４５７】
マルチメディアエンジン１０６は、さらに、プレゼンテーションプロセッサ１３９に対して、サブピクチャプレーン５０２、グラフィクスプレーン５０３および動画像プレーン１３５を切り換える制御信号を供給し、プレゼンテーションプロセッサ１４１に対して、オーディオストリーム出力を制御するような制御信号を供給する。
【０４５８】
サブピクチャプレーン５０２上の画像データは、上述の図６８におけるパレットテーブル２２に対応するパレット５０４に供給され、２５６色からなるパレットに対してインデックスによる参照がなされ、ＲＧＢデータが出力されると共に、不透明データａ１が出力される。ＲＧＢデータは、上述の図６８におけるＲＧＢ／ＹＣｂＣｒ変換回路２９に対応するＲＧＢ／ＹＣｂＣｒ変換回路５０６に供給され、カラーシステムがＲＧＢ（４：４：４）からＹＣｂＣｒ（４：４：４）に変換される。ＲＧＢ／ＹＣｂＣｒ変換回路５０６から出力されたＹＣｂＣｒデータは、プレゼンテーションプロセッサ１３９に供給される。
【０４５９】
グラフィクスプレーン５０３上の画像データは、上述の図６８におけるパレットテーブル２６Ａに対応するパレット５０５に供給され、２５６色からなるパレットに対してインデックスによる参照がなされ、ＲＧＢデータが出力されると共に、不透明データａ２が出力される。ＲＧＢデータは、上述の図６８におけるＲＧＢ／ＹＣｂＣｒ変換回路２６Ｂに対応するＲＧＢ／ＹＣｂＣｒ変換回路５０７に供給され、カラーシステムがＲＧＢ（４：４：４）からＹＣｂＣｒ（４：４：４）に変換される。ＲＧＢ／ＹＣｂＣｒ変換回路５０７から出力されたＹＣｂＣｒデータは、プレゼンテーションプロセッサ１３９に供給される。
【０４６０】
プレゼンテーションプロセッサ１３９には、さらに、動画像プレーン１３５上の動画像データがアップ／ダウンコンバータ１３８を介して供給される。
【０４６１】
プレゼンテーションプロセッサ１３９は、上述したように、字幕プレーン１１（サブピクチャプレーン５０２の画像データによる不透明度α１と、グラフィクスプレーン１２’（グラフィクスプレーン５０３）による不透明度α２とを用いたアルファブレンディング処理を行う。この処理により、動画プレーン１０、字幕プレーン１１およびグラフィクスプレーン１２’の画像データが合成される。また、プレゼンテーションプロセッサ１３９は、画像データに対してリアルタイムでエフェクト処理を行うこともできる。このように、プレーン間の合成処理やエフェクト処理がなされた画像データが出力端１４０に導出される。
【０４６２】
２−１７．デコーダモデルのさらに別の例について
図７０は、上述した音声データの第３の格納方法を適用した場合のプレーヤデコーダ１００”の一例の構成を示す。なお、図７０において、上述した図３４または図６９と共通する部分には同一の符号を付し、詳細な説明を省略する。上述したように、音声データの第３の格納方法では、ボタン状態に対応する効果音を再生する複数の音声データを、まとめて１つのファイル「HdmvSound.bdmv」とし、ディレクトリＢＤＡＶの配下に格納している。このファイル「HdmvSound.bdmv」は、ディスクのイニシャルアクセス時に予め読み込まれ、プレーヤ内部のメモリに格納される。
【０４６３】
プレーヤ内部のメモリは、バッファ１０９内のサウンドバッファ１０９Ｅを用いることができる。例えば、ディスクのイニシャルアクセス時に読み出された音声データファイルが端子１０１から入力され、スイッチ回路１０２およびコンテンツバッファ１０５を介してサウンドバッファ１０９Ｅに供給される。コードバッファ１０４に溜め込まれたプログラムコードの実行に伴い、サウンドバッファ１０９Ｅから必要な音声データが読み出され、端子７１０から入力される。
【０４６４】
また、端子２０２にＭＰＥＧ  ＥＳで入力されたリアルタイムストリームは、ＰＩＤフィルタ１１０に供給される。ＰＩＤに基づき、トランスポートパケットがインタラクティブグラフィクスストリーム７００が格納されているパケットであるとされれば、当該トランスポートストリームは、バッファ１１１Ａに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０３Ｂが選択されたスイッチ回路１０３に入力され、スイッチ回路１０３を介してコンテンツバッファ１０５に格納される。
【０４６５】
コンテンツバッファ１０５から、インタラクティブグラフィクスストリーム７００内のインタラクティブコンポジションセグメント７０１が読み出され、マルチメディアエンジン１０６に供給される。また、コンテンツバッファ１０５から、ボタン画像データ７０２、７０２、・・・が読み出され、スイッチ回路１０８を介してグラフィクスデコーダＢ５０１に供給される。
【０４６６】
端子７１０から入力された音声データは、バッファ７１１に一旦溜め込まれ、ミキサ７１２においてオーディオデコーダ１１８から出力された音声データと所定の比率で混合されて、プレゼンテーションプロセッサ１４１に供給される。ミキサ７１２における混合比は、例えばユーザ入力に応じたサウンドプレーヤ１０６Ｄの制御に基づき、プレーヤデコーダ１００”側で設定可能である。
【０４６７】
なお、図７０では、便宜上、バッファ７１１およびミキサ７１２を独立した構成のように表現しているが、バッファ７１１およびミキサ７１２は、実際には、プレゼンテーションプロセッサ１４１に内蔵されるものである。したがって、上述した図６２との対応を考えると、バッファ７１１がバッファ４５０Ｂに対応し、ミキサ７１２がオーディオミキサ２３１に対応する。また、図６２におけるバッファ４５０Ａは、プレゼンテーションプロセッサ１４１に内蔵される。
【０４６８】
また、音声データが圧縮符号化されてディスクに記録されている場合、ディスクから読み出された音声データは、圧縮符号が復号化され、リニアＰＣＭオーディオデータとされてから、バッファ７１１に溜め込まれる。例えば、サウンドプレーヤ１０６Ｄは、ディスクから読み出された、圧縮符号化された音声データをデコードしてサウンドバッファ１０９Ｅに格納する。音声データのデコードには、オーディオデコーダ１１８を用いることができる。ソフトウェア的にデコード処理を行ってもよい。
【０４６９】
上述では、図７０のプレーヤデコーダモデルにおいて、効果音を再生する音声データは、ディスクに格納された映画などの主コンテンツの再生に先立って、ディスクからプリロードされて、プレーヤデコーダの内部メモリに格納されると説明した。ここで、上述した図６２のようなディレクトリおよびファイル構造の場合、効果音を再生する音声データが格納されているファイル「HdmvSound.bdmv」は、ディレクトリＢＤＭＶに対して１個しか存在できない。プレーヤは、ディスクへのイニシャルアクセス時に、効果音の音声データファイルをプレーヤの内部メモリにプリロードする。
【０４７０】
これはこの例に限らず、別の例として、図７１に一例が示されるように、プレイリストに対して効果音再生のためのデータを付随させる方法が考えられる。この場合は、既に説明した、図１０に一例が示されるサブプレイアイテムを利用して、ボタンに対する効果音を再生する音声データを参照する方法を用いることができる。例えば、サブプレイアイテムに対して、当該サブプレイアイテムで参照される音声データが格納されるファイル名（ファイル「HdmvSoundxx.bdmv」）を記述する。
【０４７１】
あるいは、効果音のための音声データが格納されているファイルへの参照情報を、プレイリストの属性情報として付加する方法として、図９中のブロックUIAppInfoPlayList()を利用してもよい。この場合は、ブロックUIAppInfoPlayList()のシンタクスに対して、効果音のための音声データが格納されているファイル名「HdmvSoundxx.bdmv」を記述するフィールドを設ければよい。
【０４７２】
プレーヤデコーダは、プレイリストの再生に先立って、効果音のための音声データが格納されているファイルへの参照情報（例えばサブプレイアイテム）により参照される音声データを、プレーヤの内部メモリにプリロードする。
【０４７３】
図７２は、この別の例における一例のファイルの管理構造を示す。この図７２の例では、ディレクトリＳＴＲＥＡＭの下に、効果音を再生する音声データが格納されるファイル「HdmvSound01.bdmv」、ファイル「HdmvSound02.bdmv」、・・・が置かれる。ファイル「HdmvSound01.bdmv」、ファイル「HdmvSound02.bdmv」、・・・のそれぞれは、図６０および図６１を用いて説明したファイル「HdmvSound.bdmv」と同一の構成を有し、例えばデータ部６０２に格納される音声データがそれぞれ異なる。このように、効果音を再生する音声データが格納されるファイルを、ディスク上に複数存在させることも可能である。上述のように、効果音のための音声データが格納されるファイルへの参照情報（例えばサブプレイアイテム、あるいは、プレイリストの属性情報であるブロックUIAppInfoPlayList()）によって、音声データが格納されるファイルが参照される。この別の例の場合、効果音を再生する音声データの種類を、プレイリスト単位で変更することが可能である。
【０４７４】
３．発明の実施の第２の形態
次に、この発明の実施の第２の形態について説明する。上述の実施の第１の形態では、ディスクに対する再生制御を指示する再生プログラムをＥＣＭＡスクリプトおよびＨＴＭＬを用いて記述した。これに対して、この実施の第２の形態では、再生プログラムを、ＥＣＭＡスクリプトおよびＨＴＭＬとは異なる、独自のデータ構造、記述言語を用いて表現する。この発明の実施の第２の形態で用いられるシナリオ記述言語は、ＤＶＤビデオのナビゲーションコマンドを基に変更を加えたものに、字幕画像、ボタン画像用の独自の表示制御コマンドをさらに加えた命令群を定義する。これにより、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに用いて好適な、より柔軟なメニュー画面表示を行うことを可能としている。
【０４７５】
３−１．シナリオについて
この実施の第２の形態では、独自に定義したシナリオ記述言語を用いるため、例えば上述の実施の第１の形態のＥＣＭＡスクリプトを用いた場合に比べ、イベントハンドラの定義が不要となる。例えば、この独自に定義したシナリオ記述言語は、シナリオを実行するに当たって必要なイベントを予め言語として定義することができるため、汎用なＥＣＭＡスクリプトを用いる場合のように、シナリオの実行に特に適合したイベントをプログラム内で定義する必要が無い。
【０４７６】
この独自に定義したシナリオ記述言語を用いることで、例えば上述した図２１で一例を示したシナリオの内部構造は、グローバルなイベントハンドラ定義７１とローカルなイベントハンドラ定義７２とが不要とされ図７３に示されるシナリオ７０’のようになる。シナリオ７０’の先頭の、エントリプレイリストと記述されるプレイリスト７３Ａは、例えばディスクがプレーヤにローディングされてシナリオが再生された際に最初に実行されるプレイリストである。このメニュー画面に対して所定の指示がなされると、続けてプレイリスト７３Ｂが再生され、再生が終了されるとプレイリスト７３Ｃが再生される。この図７３の例では、プレイリスト７３Ｃの再生によりグラフィクスデータ７４Ａが読み出されて、ユーザにストーリーの分岐選択を促す画面８０Ａが表示される。
【０４７７】
以降、この発明の実施の第１の形態での説明において図２１を用いて上述したようにして、シナリオ７０’が再生される。プレイリスト中にマークが設定されている場合には、このマークの位置に応じたプレイリストの分岐や合流などが可能とされる。
【０４７８】
シナリオの再生において、マークの検出、ユーザからの入力、プレーヤの動作変更の検出がされた時の動作は、プレイリスト毎にコマンド列（プログラム）が用意されており、そのプログラムをプレーヤが実行することにより行われる。
【０４７９】
例えば、上述のシナリオ７０’内のプレイリスト７３Ａ〜７３Ｍの何れが再生中であっても、リモートコントロールコマンダに設けられたメニューボタンが押されたら、シナリオの一覧が表示されるメニュー画面６０（図２０参照）が表示される、すなわち、メニュー画面６０を表示するためのプレイリストに再生処理が移行される動作を実現したい場合について考える。この場合、リモートコントロールコマンダのメニューボタンが押されたときに発生するイベント（メニューボタン押下イベント）に対応するイベントハンドラとして、メニュー画面６０を表示させるプレイリストに処理が移行される命令を、シナリオデータの一つとして記述しておく。
【０４８０】
３−２．シナリオの分類
シナリオはＢＤＡＶディレクトリに一つ定義され、一つまたは二つ以上のプレイリストから構成される。ここで、シナリオの構成の分類について図７４および図７５を用いて説明する。シナリオの構成は、プレイリスト同士の接続を基に考えると、図７４に示されるように、（１）シングルプレイリスト、（２）シーケンシャルプレイリスト、（３）マルチプレイリスト、の３種類に大別することができる。
【０４８１】
（１）のシングルプレイリストは、図７５Ａに一例が示されるように、単一のプレイリストで構成されるシナリオである。タイムラインが定義可能で、シナリオ再生中の割り込みが無い。コンテンツが映画であれば、例えばディスクのローディング後に映画本編だけが再生されるようなシナリオである。
【０４８２】
（２）のシーケンシャルプレイリストは、図７５Ｂに一例が示されるように、複数のプレイリストが分岐無しに直列的に並べられて構成されるシナリオである。各プレイリストは、プレイリストの末尾と次のプレイリストの先頭とが接続されるように並べられる。各プレイリストを通じてのタイムラインが定義可能である。コンテンツが映画であれば、例えばメニュー画面と映画本編との組み合わせからなるシナリオである。ディスクのローディング後にメニュー画面を表示させるプレイリストが実行され、メニュー画面に対して映画本編の再生が指示されると、次のプレイリストが実行され、映画の本編が再生される。
【０４８３】
（３）のマルチプレイリストは、図７５Ｃに一例が示されるように、プレイリストの分岐や収束による接続を含むシナリオである。プレイリストを通じてのタイムラインを定義することができず、例えば各プレイリスト内にタイムラインが定義される。マルチプレイリストによれば、ユーザ入力によって再生内容が変化するようなインタラクティブ性やゲーム性を実現することができる。コンテンツが映画の場合には、例えば同一シーンを様々なアングルで収録し、再生時にユーザの指示により選択して鑑賞できるようにしたマルチアングルを実現するシナリオである。
【０４８４】
シナリオは、後述するように、ＢＤＡＶディレクトリに一つ定義される。ユーザに対しては、シナリオをより細分化した単位を見せる必要がある。但し、プレイリストの単位がユーザが認識する単位と一致するとは限らない。例えば、一つのプレイリストに３本の映画が収録されているときには、各映画の頭出し点をユーザに見せる必要がある。このように、プレイリストの構造とは独立した頭出し点（エントリポイント）を、以下では、タイトルおよび／またはチャプタと呼ぶことにする。
【０４８５】
図７６を用いてタイトルおよびチャプタについて説明する。タイトルは、シナリオ中の任意の再生開始点を表す。この図７６の例では、プレイリスト４７０Ａの先頭にタイトル１に設定されている。タイトル２は、プレイリスト４７０Ｄの途中に設定されている。プレイリスト４７０Ａの先頭からタイトル２の直前までがタイトル１とされる。チャプタは、タイトルをさらに細分化した単位で、これもユーザが再生開始点として認識できる単位となる。タイトル１がチャプタによりさらに細分化される。図７６の例では、タイトル１に対してチャプタ１、２および３が設定され、タイトル１が３つに細分化されている。また、図７６に示されるように、タイトルおよびチャプタの位置は、プレイリストの途中を指定することもできる。
【０４８６】
３−３．仮想プレーヤモデルについて
この発明の実施の第２の形態によるシナリオ記述言語は、この発明の実施の第１の形態において図２２を用いて既に説明した、ＢＤ仮想プレーヤモデルにより同様に再生することができる。ＢＤ仮想プレーヤ３０は、ディスクのローディング後、ディスクに記録された、この実施の第２の形態による独自に定義したシナリオ記述言語により記述されたシナリオを、ＰＢＣプログラム４０として読み込み、シナリオの記述に従い動作する。このとき、ＢＤ仮想プレーヤ３０の動作中に発生されたイベントに応じて、ＢＤ仮想プレーヤ３０の動作が制御される。
【０４８７】
シナリオは、プレーヤの動作を指示するコマンドが並んだプログラムを含むコマンドを配置する領域として、グローバルコマンド領域とローカルコマンド領域とを有する。
【０４８８】
グローバルコマンド領域は、シナリオ全体に有効なプログラムであるグローバルコマンドが格納されている。グローバルコマンド領域には、例えば、ディスクがプレーヤに挿入されたときに、プレーヤによって最初に自動的にプレーヤに実行されて、パラメータの初期化を行い、メニュー画面を構成するプレイリストにジャンプするようなプログラムが記述される。ローカルコマンド領域は、各プレイリストに関係するプログラムが格納される。この発明の実施の第２の形態では、ローカルコマンドは、さらにプレコマンド、プレイアイテムコマンド、ポストコマンドおよびボタンコマンドの４種類に分類される。
【０４８９】
図７７は、この発明の実施の第２の形態におけるシナリオで記述されるコマンドによるＢＤ仮想プレーヤ３０の動作を概略的に示す。図７７Ａは、ディスクのローディング時の動作の例を示す。上述したように、シナリオは、ＢＤＡＶディレクトリに対して一つが作られる。ディスクがプレーヤに挿入されディスクに対するイニシャルアクセスがなされると（ステップＳ３０）、レジスタすなわち共通パラメータ３２が初期化される（ステップＳ３１）。そして、次のステップＳ３２で、プログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク挿入時のように、ディスクの再生が初めて行われることをいう。
【０４９０】
この、ディスクローディング時に最初に読み込まれ、実行されるコマンド群（プログラム）を、グローバルコマンドと称する。グローバルコマンドは、例えば宣伝用映像（トレーラー）やメニュー画面を構成するプレイリストへのジャンプ命令が記述されており、その命令通りにプレーヤがプレイリストを再生していくことになる。
【０４９１】
図７７Ｂは、プレーヤ３０が停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。これは、上述の図２３における状態Ｂから状態Ａへの状態遷移に相当する。最初の停止状態（ステップＳ４０）に対して、ユーザにより、例えばリモコンなどを用いて再生が指示される（ＵＯＰ：User Operation）。再生が指示されると、先ず、レジスタすなわち共通パラメータ３２が初期化され（ステップＳ４１）、次のステップＳ４２で、プレイリストの再生フェイズに移行する。
【０４９２】
プレイリストの再生フェイズにおけるプレイリストの再生について、図７８を用いて説明する。図７８Ａは、プレイリストが単一のプレイアイテムからなる場合の例である。プレイリストは、プレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域の３箇所にプログラムが配される。プレイリストの再生フェイズに移行すると、先ずプレコマンド領域のプレコマンドが実行され（ステップＳ１０）、プレコマンドの実行が終了されると、プレイリストを構成するプレイアイテムの再生フェイズに移行する（ステップＳ１１）。プレイアイテムの再生フェイズでは、プレイアイテムにおいて開始点および終了点で指定されたストリームが再生される（ステップＳ１１０）。終了点までの再生が終了した時点で、プレイアイテムコマンドが実行される（ステップＳ１１１）。プレイアイテムコマンドが実行されると、次にポストコマンド領域のポストコマンドが実行され（ステップＳ１２）、プレイリストの再生が終了される。
【０４９３】
なお、ポストコマンドは、一般的な使用においては、次に再生すべきプレイリストへのジャンプ命令や、メニュー画面を構成するプレイリストへのジャンプ命令が記述される。ジャンプ命令が無い場合には、そこで再生が停止し、プレーヤは、停止状態（図２３の状態Ｂ）に遷移される。
【０４９４】
図７８Ｂは、プレイリストが複数のプレイアイテムを含む場合の例である。この場合でも、プレイリスト中にプレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域が配され、それぞれプログラムが格納される。複数のプレイアイテムを含む場合、プレイアイテムコマンド領域では、プレイアイテム数分のプレイアイテムストリームおよびプレイアイテムコマンドが、時系列に従って配置される。
【０４９５】
プレイリストが複数のプレイアイテムを含む場合でも、プレイリストの再生フェーズに移行すると、先ず、プレコマンドが実行される（ステップＳ１０）。次のプレイアイテムの再生フェイズでは、プレイアイテムの開始点から終了点までのストリームの再生と、プレイアイテムコマンドの実行とが、プレイリストが含むプレイアイテムの数だけ実行される。図７８Ｂの例では、最初のプレイアイテムストリームが再生され（ステップＳ１１０−１）、対応するプレイアイテムコマンドが実行される（ステップＳ１１１−１）。次に、図示は省略するが、２番目のプレイアイテムストリームが再生され（ステップＳ１１０−２）、対応するプレイアイテムコマンドが実行される（ステップＳ１１１−２）。これをプレイアイテムの数だけ行い、最後のプレイアイテムストリームが再生され（ステップＳ１１０−ｎ）、対応するプレイアイテムコマンドが実行されると（ステップＳ１１１−ｎ）、プレイアイテムの再生フェイズが終了する。プレイアイテムの再生フェイズが終了すると、ポストコマンドが実行され（ステップＳ１２）、このプレイリストの再生フェーズが終了される。
【０４９６】
この発明の実施の第２の形態では、ＢＤ仮想プレーヤ３０、ならびに、ＢＤ仮想プレーヤ３０上で実行されるシナリオ、プレイリストおよびプレイアイテムを、階層的に考えることができる。すなわち、図７９Ａに一例が示されるように、ＢＤ仮想プレーヤ層６００の上に１つのシナリオ層６０１があり、シナリオ層６０１の上に、１または複数のプレイリストを含むプレイリスト層６０２がある。プレイリスト層６０２の上には、プレイアイテム（ＰＩ）層６０３があり、プレイリスト毎に１または複数のプレイアイテムを持つことができる。
【０４９７】
このような階層的な構造とすることで、プレイリストおよびプレイアイテムは、シナリオ層６０１を介してＢＤ仮想プレーヤにより実行されることになる。したがって、シナリオにプレイリストに対する制御コマンドを記述することで、プレイリストの分岐などの制御が容易に実現される。これは、プレイアイテムに関しても同様である。この様子を図７９Ｂに示す。
【０４９８】
３−４．シンタクスについて
次に、この発明の実施の第２の形態によるシナリオを記述するコマンドやデータベースのディスクへの格納方法について説明する。この発明の実施の第２の形態においてＢＤＡＶフォーマットに対して拡張した機能の実現に必要なデータは、シナリオファイル「scenario.pbc」に記述されるものとする。シナリオファイル「scenario.pbc」は、上述の図４に示した"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定された、記録媒体に記録されるファイルの管理構造に対し、ディレクトリＢＤＡＶの配下に置かれる。この様子を図８０に示す。
【０４９９】
図８１は、シナリオを記述するためのシナリオファイル(scenario.pbc)の一例の構造を表すシンタクスを示す。ファイル「scenario.pbc」は、先頭から、ファイル識別記号、バージョン番号、ブロックの開始アドレスが記述され、その後に、機能別の情報毎にブロックが構成される。フィールドtype_indicatorは、３２ビットのデータ長を有し、このファイルがシナリオを記述したファイルであることを表す特定の文字列が記述される。フィールドversion_numberは、３２ビットのデータ長を有し、バージョン番号が記述される。フィールドTitleEntry_start_addressは、データ長が３２ビットの符号無しの整数で、ブロックTitleEntry()が開始される位置をファイル「scenario.pbc」の先頭からの相対バイト数で表した値が記述される。同様に、フィールドSceanrio_start_addressは、データ長が２３ビットの符号無しの整数で、ブロックScenario()が開始される位置を、ファイル「scenario.pbc」の先頭からの相対バイト数で表した値が記述される。
【０５００】
ブロックGlobalCommand()は、ファイルの先頭から４１バイト目の固定位置から始まる。ブロックGlobalCommand()には、上述した、イニシャルアクセス時（ディスク挿入時のようにディスクの再生が始めて行われる時）に実行されるプログラムが記述される。上述のグローバルコマンドは、このブロックGlobalCommand()に格納される。GlobalCommand()の後には任意の数のpadding_wordが入り、ブロック間に空きを持たせることができるようになっている。
【０５０１】
ブロックTitleEntry()は、シナリオ内の頭出し点が羅列される。シナリオは、ＢＤＡＶディレクトリに対して一つ作られ、ＢＤＡＶディレクトリの配下にある複数のプレイリストを結び付けて再生順序を定義する。一方、ユーザから見た場合、シナリオは、必ずしも一つの映像・音声単位として見える訳ではなく、複数の「タイトル」から構成されているように見える。
【０５０２】
例えば、一枚のディスクに映画が３本収録されている場合、再生順序を定義するシナリオは、ディスクに一つのみ、存在するが、ユーザには、当該ディスクに３つのタイトルが収録されているように見える。あるいは、その３つのタイトルのリストを表示し、ユーザに選択させるタイトルメニュー画面も含めて、４つのタイトルに分割されているように見える。なお、メニュー画面もユーザにとっては一まとまりの映像・音声単位であるので、この発明の実施の第２の形態では、タイトルの一種としてみなすことにする。
【０５０３】
このように、プレイリストの結びつきを定義するシナリオという単位と、ユーザが一まとまりの映像・音声として認識する単位には違いがあるため、上述のように、シナリオ内に頭出し点を定義しておく必要がある。このシナリオ内の頭出し点を、タイトルエントリと称する。
【０５０４】
ブロックScenario()は、これまで説明してきた「シナリオ」が記述される。プレイリストの再生順序の情報や、プレイリスト毎に持つローカルコマンド領域などがブロックScenario()に格納される。
【０５０５】
図８２は、上述のブロックGlobalCommand()の一例の構造を表すシンタクスを示す。フィールドlengthは、データ長が３２ビットの符号無し整数で、このフィールドlengthの直後からブロックGlobalCommand()の終わりまでの長さがバイト表記で記述される。フィールドnumber_of_commandsは、その後に続くフィールドcommandの数を表す。フィールドcommandは、データ長が３２ビットで表される値であり、後述するプレーヤのパラメータのセット、指定のプレイリストの再生開始、演算などの命令が記述される。
【０５０６】
図８３は、ブロックTitleEntry()の一例のデータ構造を表すシンタクスを示す。フィールドlengthは、データ長が３２ビットの符号無し整数で、このフィールドlengthの直後からブロックTitleEntry()の終わりまでの長さがバイト表記で記述される。フィールドnumber_of_Titlesは、その直後のforループ中に記述されるタイトル頭出し点の数を表す。フィールドEntry_PlayList_file_nameは、タイトルの頭出し点が含まれるプレイリストのプレイリストファイル名が記述される。フィールドTitle_name_character_setは、次のフィールドTitle_nameを表現するキャラクターセットを表す。次のフィールドTitle_nameは、頭出し点に付けられた名前の文字列が記述される。
【０５０７】
フィールドnumber_of_Chaptersは、その直後のforループ内に記述されるチャプタの数が記述される。チャプタは、上述したように、タイトルを細分化するもので、チャプタ点もタイトルと同様にユーザから見えており、シナリオ内の頭出し点として用いられる。フィールドTitle_numberは、データ長が１６ビットの符号無し整数で、forループ中の現在のループカウンタに対応するチャプタ（以下、このチャプタ）が属するタイトルの番号を表す。フィールドchapter_entry_PlayList_file_nameは、このチャプタが指しているプレイリストのプレイリストファイルのファイル名を表す。フィールドchapter_ref_to_PlayItem_idは、このチャプタが指しているプレイアイテムの番号を表す。フィールドchapter_time_stampは、このチャプタが指しているプレイアイテム上の時刻を表す。
【０５０８】
ブロックTitle_Menu_Call_PL()は、ユーザがタイトル表示を指示したときに表示されるメニューを構成するプレイリストを指定する。ユーザによるタイトル指定は、例えばプレーヤを遠隔操作するリモコンに設けられた、タイトルメニューキーを操作することでなされる。タイトルメニューは、シナリオに一つ存在し、タイトル頭出し点をユーザに提示するためのメニューである。ユーザが例えばリモコンを操作してタイトルメニュー上で所望のタイトルを選択すると、プレーヤは、上述したフィールドnumber_of_Titlesの直後のforループ内に記述された情報に基づくタイトルエントリのリストから再生すべきプレイリストを知り、そのプレイリストの再生を開始する。
【０５０９】
ブロックTitle_Menu_Call_PL()において、フィールドflagsは、タイトルメニューに関する属性情報が記述される。フィールドTitleMenu_entry_PlayList_file_nameは、タイトルメニューを構成するプレイリストあるいはプレイリスト群の入り口となるプレイリストを指定する。フィールドTitleMenu_ref_to_PlayItem_idは、プレイリスト中の特定のプレイアイテムからタイトルメニューが開始されている場合、そのプレイアイテムの番号を指定する。プレイリストの先頭からの再生であれば、フィールドTitleMenu_ref_to_PlayItem_idの値は、〔０〕となる。
【０５１０】
フィールドTitleMenu_chapter_time_stampは、プレイアイテム中の時刻を表す。プレイアイテムの先頭からの再生であれば、プレイアイテムの先頭の時刻となる。フィールドUOP_mask_table()は、ユーザ操作を制限するためのデータが格納される。ここで制限されたユーザ操作は、仮にユーザがその操作を行ったとしても、プレーヤは反応してはならないものとされる。例えば、メニュー画面で早送りが実行されないようにする場合に、このフィールドUOP_mask_table()で、早送りのユーザ操作を無効にするような設定をしておく。
【０５１１】
図８４は、ブロックscenario()の一例の構造を表すシンタクスを示す。ブロックscenario()は、シナリオの情報、すなわちプレイリスト間のリンクを定義する。フィールドlengthは、このフィールドの直後からブロックScenario()の終わりまでの長さがバイト表記で記述される。フィールドnumber_of_PlayListsは、シナリオを構成するプレイリストの数を表す。フィールドnumber_of_PlayLists直後のforループ内に、このforループのループカウンタに対応するプレイリスト（以下、このプレイリスト）の情報が、フィールドnumber_of_PlayListsに記述されるプレイリスト数だけ、記述される、
【０５１２】
以降は、このプレイリスト毎に持つデータである。フィールドflagsは、プレイリストに関する属性情報が記述される。フィールドflagsに記述される内容は、この発明の実施の第２の形態に直接的な関連が無いので、詳細は省略する。ブロックPL_UOP_mask_table()は、ユーザ操作を制限する情報が格納される。このブロックPL_UOP_mask_table()では、ユーザ操作の制限をプレイリスト毎に設定することができる。後述するコマンドUOP_mask_table()およびこのフィールドPL_UOP_mask_table()の両方で許可されているユーザ操作だけが、このプレイリスト再生中に実行できるユーザ操作となる。但し、最終的には、後述するブロックPI_UOP_mask_table()内に記述されるデータも含めて、ユーザ操作が可能か否かが判定される。
【０５１３】
フィールドParental_levelは、このプレイリストに視聴者制限を加える場合に必要となる情報であり、このプレイリストが視聴可能な年齢や、視聴可能な年齢層を定めたレベルが記述される。
【０５１４】
フィールドnumber_of_Pre_Commandsは、このプレイリストを再生する前に実行されるプログラムを構成するコマンド（プレコマンド）の数を表す。プログラムは、後のフィールドPL_Command(i)で表される領域に記述される。フィールドnumber_of_Post_Commandsは、このプレイリストを再生した後に実行されるプログラム（ポストコマンド）を構成するコマンドの数を表す。プログラムは、後のフィールドPL_Command(i)で表される領域に記述される。フィールドPre_Commands_start_idは、プレイリストを再生する前に実行されるプログラムのコマンドテーブル中の開始番号を表す。番号は、フィールドPL_Command(i)におけるパラメータｉに対応する。フィールドPost_Commands_start_idは、プレイリストを再生した後に実行されるプログラムのコマンドテーブル中の開始番号を表す。番号は、フィールドPL_Command(i)におけるパラメータｉに対応する。
【０５１５】
フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を表す。フィールドPI_UOP_mask_table()は、ユーザ操作を制限する情報が格納される。フィールドPI_UOP_mask_table()により、ユーザ操作の制限をプレイアイテムごとに設定できる。後述するコマンドUOP_mask_table()およびコマンドPL_UOP_mask_table()と、このフィールドPI_UOP_mask_tableの３種類のテーブルにおいて許可されているユーザ操作だけが、このプレイアイテム再生中に実行できるユーザ操作となる。
【０５１６】
フィールドPI_Commands_start_idは、プレイアイテムの再生後に実行するコマンドの、コマンドテーブル中の開始番号を表す。番号は、フィールドPL_Command(i)におけるパラメータｉを表す。フィールドnumber_of_PL_Commandsは、直後のforループにより表されるコマンドテーブルに格納されるコマンドの数を表す。フィールドPL_Command(i)に格納されるコマンドには、順に番号ｉが割り当てられている。フィールドPL_Command(i)は、一つのコマンドを表し、番号ｉは、上述したフィールドPre_Commands_start_id、フィールドPost_Commands_start_idおよびフィールドPI_Commands_start_idなどから参照される。
【０５１７】
３−５．コマンドについて
図８５は、この発明の実施の第２の形態によるシナリオで用いられるコマンドの一例を示す。これらのコマンドは、上述のＢＤ仮想プレーヤ３０が有するメソッドである。なお、図８５に例示されるコマンドは、この発明の実施の第２の形態によるシナリオで用いられるコマンドの一部であって、実際には、さらに多数のコマンドが定義され、上述の実施の第１の形態で説明したような、ユーザインターフェイスの多彩な機能を実現可能なようにされている。例えば、音声データの再生に関するコマンドや、ボタン画像表示に関するコマンドがさらに定義される。
【０５１８】
再生開始位置指定に関するメソッドについて説明する。メソッドLinkPlayList(playListNumber)で、"playListNumber"で指定されたプレイリストの再生開始が指示される。メソッドLinkPlayItem(playListNumber,playItemNumber)で、指定のプレイリストの指定のプレイアイテムからの再生開始が指示される。"playItemNumber"は、"PlayItem_id"であり、値が「０」から始まる。"playItemNumber"に値「０」を指定することで、当該プレイアイテムが属するプレイリストの先頭から再生される。
【０５１９】
メソッドLink(position)(object)で、シナリオ内での移動が指示される。すなわち、現在移動中の箇所から前後のプレイリスト、プレイアイテムおよびチャプタに移動することがこのメソッドで指示される。なお、パラメータ"position"は、"prev"、"next"、"top"、"Parent"または"tail"の何れかの値を取り、パラメータ"object"で示される移動対象（プレイリスト、プレイアイテムまたはチャプタ）に対する移動方法が指示される。
【０５２０】
メソッドExitで、シナリオ再生の停止が指示される。この場合、標準レジスタの値は、保持されない。メソッドRSMで、プレーヤ内のメモリに保存されているレジューム情報を呼び出し、レジスタにセットして再生を開始する。
【０５２１】
プレーヤ状態の取得に関するメソッドについて説明する。メソッドgetMenuDescriptionLanguage()で、メニュー表示の際に用いられる言語が取得される。メソッドgetScenarioNumber()、メソッドgetPlayListNumber()およびメソッドgetChapterNumber()で、再生中のシナリオ番号、プレイリスト番号およびチャプタ番号がそれぞれ取得される。メソッドgetPlayerSupport()で、プレーヤのバージョン情報が取得される。
【０５２２】
ビデオストリームに関するメソッドについて説明する。メソッドgetVideoStreamAvailability()で、指定のビデオストリームが含まれているか否かが取得される。メソッドsetVideoStreamNumber()で、デコードするビデオストリームが指定される。メソッドgetVideoStreamNumber()で、選択中のビデオストリームの番号が取得される。メソッドgetVideoStreamAttr()で、選択中のビデオストリームの属性が取得される。なお、ビデオストリームの属性は、例えば、そのビデオストリームの符号化方式、解像度、アスペクト比、アスペクト比が４：３のときのディスプレイモード、クローズドキャプションの有無である。メソッドsetAngleNumber()で、アングル番号が指定される。メソッドgetAngleNumber()で、選択中のアングル番号が取得される。メソッドgetMaxVideoStream()で、ビデオストリームの最大数が取得される。
【０５２３】
このように定義されるシナリオファイル「scenario.pbc」に基づきディスクの再生を行うためには、例えば、上述の実施の第１の形態で図３４、図６９または図７０を用いて説明した、プレーヤデコーダ１００、１００’または１００”において、マルチメディアエンジン１０６に対して、これまでに説明した、実施の第２の形態によるシナリオ記述言語を解析するためのエンジンを追加すればよい。
【０５２４】
例えば図６９に示されるプレーヤデコーダ１００’において、図示されないドライブ装置にディスクが装填されると、先ず、シナリオファイル「scenario.pbc」が再生される。再生されたシナリオファイル「scenario.pbc」は、プレーヤでコーダ１００’に対してストアオブジェクトとして入力端１０１から入力され、スイッチ回路１０２を介してコードバッファ１０４に供給される。シナリオファイル「scenario.pbc」は、マルチメディアエンジン１０６内の上述のシナリオファイル解析エンジンにより解析され、解析結果に基づきシナリオデータが読み出され、動画プレーン１０に表示するための動画データ、字幕プレーン１１やグラフィクスプレーン１２（またはグラフィクスプレーン１２’）に表示するための画像データ、プレイリストファイル、シナリオファイルから呼び出される別のシナリオファイル、音声データなどがディスクから読み出される。
【０５２５】
４．その他
また、上述では、音声データの第１、第２および第３の格納方法がこの発明の実施の第１の形態に適用されるように説明したが、これはこの例に限定されず、音声データの第１、第２および第３の格納方法をこの発明の実施の第２の形態に適用させてもよい。
【０５２６】
さらに、上述では、この発明がＢｌｕ−ｒａｙ  Ｄｉｓｃに適用されるように説明したが、これは一例であって、この発明は、他の方式の大容量ディスク状記録媒体に対しても適用可能なものである。
【符号の説明】
【０５２７】
１０  動画プレーン
１１  字幕プレーン
１２  グラフィクスプレーン
２２  パレット
３０  ＢＤ仮想プレーヤ
３１  プレーヤコマンド
３２  共通パラメータ
４０  プレイバックコントロールプログラム
４１  メソッド
６０  メニュー画面
７０  シナリオ
７３Ａ〜７３Ｍ  プレイリスト
１００，１００’，１００”  プレーヤデコーダ
１０４  コードバッファ
１０５  コンテンツバッファ
１０６  マルチメディアエンジン
１０９  バッファ
１１０  ＰＩＤフィルタ
１１６  サブピクチャデコーダ
１１７  静止画像デコーダ
１１８  オーディオデコーダ
１２０  ＭＰＥＧビデオデコーダ
１３２  サブピクチャプレーン
１３３  グラフィクスプレーン
１３４  静止画像プレーン
１３５  動画像プレーン
２２６  ＰＮＧデコーダバッファ
２２７  ＰＮＧデコーダ
２２８  オブジェクトバッファ
２２９  プレーンバッファ
２３１  オーディオミキサ
５００  グラフィクスデコーダＡ
５０１  グラフィクスデコーダＢ
５０２  サブピクチャプレーン
５０３  グラフィクスプレーン
６０１  ループ部
６０２  音声データ部
７００  インタラクティブグラフィクスストリーム
７０１  インタラクティブコンポジションセグメント
７１１  バッファ
７１２  ミキサ
【図１】
2011097614.tif 000003
【図２】
2011097614.tif 000004
【図３】
2011097614.tif 000005
【図４】
2011097614.tif 000006
【図５】
2011097614.tif 000007
【図６】
2011097614.tif 000008
【図７】
2011097614.tif 000009
【図８】
2011097614.tif 000010
【図９】
2011097614.tif 000011
【図１０】
2011097614.tif 000012
【図１１】
2011097614.tif 000013
【図１２】
2011097614.tif 000014
【図１３】
2011097614.tif 000015
【図１４】
2011097614.tif 000016
【図１５】
2011097614.tif 000017
【図１６】
2011097614.tif 000018
【図１７】
2011097614.tif 000019
【図１８】
2011097614.tif 000020
【図１９】
2011097614.tif 000021
【図２０】
2011097614.tif 000022
【図２１】
2011097614.tif 000023
【図２２】
2011097614.tif 000024
【図２３】
2011097614.tif 000025
【図２４】
2011097614.tif 000026
【図２５】
2011097614.tif 000027
【図２６】
2011097614.tif 000028
【図２７】
2011097614.tif 000029
【図２８】
2011097614.tif 000030
【図２９】
2011097614.tif 000031
【図３０】
2011097614.tif 000032
【図３１】
2011097614.tif 000033
【図３２】
2011097614.tif 000034
【図３３】
2011097614.tif 000035
【図３４】
2011097614.tif 000036
【図３５】
2011097614.tif 000037
【図３６】
2011097614.tif 000038
【図３７】
2011097614.tif 000039
【図３８】
2011097614.tif 000040
【図３９】
2011097614.tif 000041
【図４０】
2011097614.tif 000042
【図４１】
2011097614.tif 000043
【図４２】
2011097614.tif 000044
【図４３】
2011097614.tif 000045
【図４４】
2011097614.tif 000046
【図４５】
2011097614.tif 000047
【図４６】
2011097614.tif 000048
【図４７】
2011097614.tif 000049
【図４８】
2011097614.tif 000050
【図４９】
2011097614.tif 000051
【図５０】
2011097614.tif 000052
【図５１】
2011097614.tif 000053
【図５２】
2011097614.tif 000054
【図５３】
2011097614.tif 000055
【図５４】
2011097614.tif 000056
【図５５】
2011097614.tif 000057
【図５６】
2011097614.tif 000058
【図５７】
2011097614.tif 000059
【図５８】
2011097614.tif 000060
【図５９】
2011097614.tif 000061
【図６０】
2011097614.tif 000062
【図６１】
2011097614.tif 000063
【図６２】
2011097614.tif 000064
【図６３】
2011097614.tif 000065
【図６４】
2011097614.tif 000066
【図６５】
2011097614.tif 000067
【図６６】
2011097614.tif 000068
【図６７】
2011097614.tif 000069
【図６８】
2011097614.tif 000070
【図６９】
2011097614.tif 000071
【図７０】
2011097614.tif 000072
【図７１】
2011097614.tif 000073
【図７２】
2011097614.tif 000074
【図７３】
2011097614.tif 000075
【図７４】
2011097614.tif 000076
【図７５】
2011097614.tif 000077
【図７６】
2011097614.tif 000078
【図７７】
2011097614.tif 000079
【図７８】
2011097614.tif 000080
【図７９】
2011097614.tif 000081
【図８０】
2011097614.tif 000082
【図８１】
2011097614.tif 000083
【図８２】
2011097614.tif 000084
【図８３】
2011097614.tif 000085
【図８４】
2011097614.tif 000086
【図８５】
2011097614.tif 000087
【図８６】
2011097614.tif 000088
【図８７】
2011097614.tif 000089
【図８８】
2011097614.tif 000090
【図８９】
2011097614.tif 000091
【図９０】
2011097614.tif 000092