以下、この発明の実施の一形態を、図面を参照しながら説明する。先ず、理解を容易とするために、Blu−ray Discに関し、"Blu-ray Disc Read-Only Format Ver1.0 part3 Audio Visual Specifications"で規定されている、読み出し専用タイプのBlu−ray DiscであるBD−ROMに記録されたコンテンツすなわちAV(Audio/Video)データの管理構造について説明する。以下では、このBD−ROMにおける管理構造をBDMVフォーマットと称する。
例えばMPEG(Moving Pictures Experts Group)ビデオやMPEGオーディオなどの符号化方式で符号化され、MPEG2システムに従い多重化されたビットストリームは、クリップAVストリーム(またはAVストリーム)と称される。クリップAVストリームは、Blu−ray Discに関する規格の一つである"Blu-ray Disc Read-Only Format part2"で定義されたファイルシステムにより、ファイルとしてディスクに記録される。このファイルを、クリップAVストリームファイル(またはAVストリームファイル)と称する。
クリップAVストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップAVストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップAVストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。Blu−ray Discに関する規格の一つである"Blu-ray Disc Read-Only Format part3"で、このデータベースが規定される。
図1は、BD−ROMのデータモデルを概略的に示す。BD−ROMのデータ構造は、図1に示されるように4層のレイヤよりなる。最も最下層のレイヤは、クリップAVストリームが配置されるレイヤである(便宜上、クリップレイヤと呼ぶ)。その上のレイヤは、クリップAVストリームに対する再生箇所を指定するための、ムービープレイリスト(Movie PlayList)と、プレイアイテム(PlayItem)とが配置されるレイヤである(便宜上、プレイリストレイヤと呼ぶ)。さらにその上のレイヤは、ムービープレイリストに対して再生順などを指定するコマンドからなるムービーオブジェクト(Movie Object)などが配置されるレイヤである(便宜上、オブジェクトレイヤと呼ぶ)。最上層のレイヤは、このBD−ROMに格納されるタイトルなどを管理するインデックステーブルが配置される(便宜上、インデックスレイヤと呼ぶ)。
クリップレイヤについて説明する。クリップAVストリームは、ビデオデータやオーディオデータがMPEG2 TS(トランスポートストリーム)の形式などに多重化されたビットストリームである。このクリップAVストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
また、クリップAVストリームには、ビデオデータやオーディオデータによるコンテンツデータに対して付随して表示される字幕やメニュー表示を行うためのストリームも多重化される。字幕を表示するためのグラフィクスストリームは、プレゼンテーショングラフィクス(PG)ストリームと呼ばれる。また、メニュー表示などに用いられるデータをストリームにしたものは、インタラクティブグラフィクス(IG)ストリームと呼ばれる。
クリップAVストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップAVストリームとクリップ情報とから構成される、一つのオブジェクトである。
ファイルは、一般的に、バイト列として扱われる。クリップAVストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップAVストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
プレイリストレイヤについて説明する。ムービープレイリストは、再生するAVストリームファイルの指定と、指定されたAVストリームファイルの再生箇所を指定する再生開始点(IN点)と再生終了点(OUT点)の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。ムービープレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるAVストリームファイルの一部分を再生するということになる。すなわち、プレイアイテム中のIN点およびOUT点情報に基づき、クリップ中の対応する区間が再生される。
オブジェクトレイヤについて説明する。ムービーオブジェクトは、HDMVナビゲーションコマンドプログラム(HDMVプログラム)と、ムービーオブジェクトとを連携するターミナルインフォメーションを含む。HDMVプログラムは、プレイリストの再生を制御するためのコマンドである。ターミナルインフォメーションは、ユーザのBD−ROMプレーヤに対するインタラクティブな操作を許可するための情報を含んでいる。このターミナルインフォメーションに基づき、メニュー画面の呼び出しや、タイトルサーチといったユーザオペレーションが制御される。
BD−Jオブジェクトは、Javaプログラム(Javaは登録商標)によるオブジェクトからなる。BD−Jオブジェクトは、この発明と関わりが薄いので、詳細な説明を省略する。
インデックスレイヤについて説明する。インデックスレイヤは、インデックステーブルからなる。インデックステーブルは、BD−ROMディスクのタイトルを定義する、トップレベルのテーブルである。インデックステーブルに格納されているタイトル情報に基づき、BD−ROM常駐システムソフトウェア中のモジュールマネージャによりBD−ROMディスクの再生が制御される。
すなわち、図2に概略的に示されるように、インデックステーブル中の任意のエントリは、タイトルと称され、インデックステーブルにエントリされるファーストプレイバック(First Playback)、トップメニュー(Top Menu)およびタイトル(Title)#1、#2、・・・は、全てタイトルである。各タイトルは、ムービーオブジェクトあるいはBD−Jオブジェクトに対するリンクを示し、各タイトルは、HDMVタイトルあるいはBD−Jタイトルの何れかを示す。
例えば、ファーストプレイバックは、当該BD−ROMに格納されるコンテンツが映画であれば、映画本編に先立って映出される映画会社の宣伝用映像(トレーラ)である。トップメニューは、例えばコンテンツが映画である場合、本編再生、チャプタサーチ、字幕や言語設定、特典映像再生などを選択するためのメニュー画面である。また、タイトルは、トップメニューから選択される各映像である。タイトルがさらにメニュー画面であるような構成も可能である。
図3は、上述のようなクリップAVストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すUML(Unified Modeling Language)図である。プレイリストは、1または複数のプレイアイテムに対応付けられ、プレイアイテムは、1のクリップに対応付けられる。1のクリップに対して、それぞれ開始点および/または終了点が異なる複数のプレイアイテムを対応付けることができる。1のクリップから1のクリップAVストリームファイルが参照される。同様に、1のクリップから1のクリップ情報ファイルが参照される。また、クリップAVストリームファイルとクリップ情報ファイルとは、1対1の対応関係を有する。このような構造を定義することにより、クリップAVストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
また、図4のように、複数のプレイリストから同一のクリップを参照することもできる。また、1のプレイリストから複数のクリップを指定することもできる。クリップは、プレイリスト中のプレイアイテムに示されるIN点およびOUT点により、参照される。図4の例では、クリップ500は、プレイリスト510のプレイアイテム520から参照されると共に、プレイリスト511を構成するプレイアイテム521および522のうちプレイアイテム521から、IN点およびOUT点で示される区間が参照される。また、クリップ501は、プレイリスト511のプレイアイテム522からIN点およびOUT点で示される区間が参照されると共に、プレイリスト512のプレイアイテム523および524のうち、プレイアイテム523のIN点およびOUT点で示される区間が参照される。
なお、プレイリストは、図5に一例が示されるように、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応するサブパスを持つことができる。サブプレイアイテムは、異なる複数のクリップと関連付けることができ、サブプレイアイテムは、サブプレイアイテムに関連付けられる複数のクリップのうち1を選択的に参照することができる。詳細は省略するが、プレイリストは、所定の条件を満たす場合にだけ、サブプレイアイテムを持つことができる。
次に、"Blu-ray Disc Read-Only Format part3"で規定された、BD−ROMに記録されるファイルの管理構造について、図6を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、1つのディレクトリ(図6の例ではルート(root)ディレクトリ)が作成される。このディレクトリの下が、1つの記録再生システムで管理される範囲とする。
ルートディレクトリの下に、ディレクトリ"BDMV"およびディレクトリ"CERTIFICATE"が置かれる。ディレクトリ"CERTIFICATE"は、著作権に関する情報が格納される。ディレクトリ"BDMV"に、図1を用いて説明したデータ構造が格納される。
ディレクトリ"BDMV"の直下には、ファイルは、ファイル"index.bdmv"およびファイル"MovieObject.bdmv"の2つのみを置くことができる。また、ディレクトリ"BDMV"の下に、ディレクトリ"PLAYLIST"、ディレクトリ"CLIPINF"、ディレクトリ"STREAM"、ディレクトリ"AUXDATA"、ディレクトリ"META"、ディレクトリ"BDJO"、ディレクトリ"JAR"、およびディレクトリ"BACKUP"が置かれる。
ファイル"index.bdmv"は、ディレクトリBDMVの内容について記述される。すなわち、このファイル"index.bdmv"が上述した最上層のレイヤであるインデックスレイヤにおけるインデックステーブルに対応する。また、ファイルMovieObject.bdmvは、1つ以上のムービーオブジェクトの情報が格納される。すなわち、このファイル"MovieObject.bdmv"が上述したオブジェクトレイヤに対応する。
ディレクトリ"PLAYLIST"は、プレイリストのデータベースが置かれるディレクトリである。すなわち、ディレクトリ"PLAYLIST"は、ムービープレイリストに関するファイルであるファイル"xxxxx.mpls"を含む。ファイル"xxxxx.mpls"は、ムービープレイリストのそれぞれに対して作成されるファイルである。ファイル名において、"."(ピリオド)の前の"xxxxx"は、5桁の数字とされ、ピリオドの後ろの"mpls"は、このタイプのファイルに固定的とされた拡張子である。
ディレクトリ"CLIPINF"は、クリップのデータベースが置かれるディレクトリである。すなわち、ディレクトリCLIPINF"は、クリップAVストリームファイルのそれぞれに対するクリップインフォメーションファイルであるファイル"zzzzz.clpi"を含む。ファイル名において、"."(ピリオド)の前の"zzzzz"は、5桁の数字とされ、ピリオドの後ろの"clpi"は、このタイプのファイルに固定的とされた拡張子である。
ディレクトリ"STREAM"は、実体としてのAVストリームファイルが置かれるディレクトリである。すなわち、ディレクトリ"STREAM"は、クリップインフォメーションファイルのそれぞれに対応するクリップAVストリームファイルを含む。クリップAVストリームファイルは、MPEG2(Moving Pictures Experts Group 2)のトランスポートストリーム(以下、MPEG2 TSと略称する)からなり、ファイル名が"zzzzz.m2ts"とされる。ファイル名において、ピリオドの前の"zzzzz"は、対応するクリップインフォメーションファイルと同一することで、クリップインフォメーションファイルとこのクリップAVストリームファイルとの対応関係を容易に把握することができる。
ディレクトリ"AUXDATA"は、メニュー表示などに用いられる、サウンドファイル、フォントファイル、フォントインデックスファイルおよびビットマップファイルなどが置かれる。ファイル"sound.bdmv"は、HDMVのインタラクティブなグラフィクスストリームのアプリケーションに関連したサウンドデータが格納される。ファイル名は、"sound.bdmv"に固定的とされる。ファイル"aaaaa.otf"は、字幕表示や上述したBD−Jアプリケーションなどで用いられるフォントデータが格納される。ファイル名において、ピリオドの前の"aaaaa"は、5桁の数字とされ、ピリオドの後ろの"otf"は、このタイプのファイルに固定的とされた拡張子である。ファイル"bdmv.fontindex"は、フォントのインデックスファイルである。
ディレクトリ"META"は、メタデータファイルが格納される。ディレクトリ"BDJO"およびディレクトリ"JAR"は、上述のBD−Jオブジェクトに関連するファイルが格納される。また、ディレクトリ"BACKUP"は、上述までの各ディレクトリおよびファイルのバックアップが格納される。これらディレクトリ"META"、ディレクトリ"BDJO"、ディレクトリ"JAR"およびディレクトリ"BACKUP"は、この発明の主旨と直接的な関わりがないので、詳細な説明を省略する。
上述したようなデータ構造を有するディスクがプレーヤに装填されると、プレーヤは、ディスクから読み出されたムービーオブジェクトなどに記述されたコマンドを、プレーヤ内部のハードウェアを制御するための固有のコマンドに変換する必要がある。プレーヤは、このような変換を行うためのソフトウェアを、プレーヤに内蔵されるROM(Read Only Memory)にあらかじめ記憶している。このソフトウェアは、ディスクとプレーヤを仲介してプレーヤにBD−ROMの規格に従った動作をさせることから、BD仮想プレーヤと称される。
図7は、このBD仮想プレーヤの動作を概略的に示す。図7Aは、ディスクのローディング時の動作の例を示す。ディスクがプレーヤに装填されディスクに対するイニシャルアクセスがなされると(ステップS30)、1のディスクにおいて共有的に用いられる共有パラメータが記憶されるレジスタが初期化される(ステップS31)。そして、次のステップS32で、プログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク装填時のように、ディスクの再生が初めて行われることをいう。
図7Bは、プレーヤが停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。最初の停止状態(ステップS40)に対して、ユーザにより、例えばリモートコントロールコマンダなどを用いて再生が指示される(UO:User Operation)。再生が指示されると、先ず、レジスタすなわち共通パラメータが初期化され(ステップS41)、次のステップS42で、プレイリストの再生フェイズに移行する。なお、この場合にレジスタがリセットされない実装としてもよい。
ムービーオブジェクトの実行フェイズにおけるプレイリストの再生について、図8を用いて説明する。UOなどにより、タイトル番号#1のコンテンツを再生開始する指示があった場合について考える。プレーヤは、コンテンツの再生開始指示に応じて、上述した図2に示されるインデックステーブル(Index Table)を参照し、タイトル#1のコンテンツ再生に対応するオブジェクトの番号を取得する。例えばタイトル#1のコンテンツ再生を実現するオブジェクトの番号が#1であったとすると、プレーヤは、ムービーオブジェクト#1の実行を開始する。
この図8の例では、ムービーオブジェクト#1に記述されたプログラムは2行からなり、1行目のコマンドが"Play PlayList(1)"であるとすると、プレーヤは、プレイリスト#1の再生を開始する。プレイリスト#1は、1以上のプレイアイテムから構成され、プレイアイテムが順次再生される。プレイリスト#1中のプレイアイテムの再生が終了すると、ムービーオブジェクト#1の実行に戻り、2行目のコマンドが実行される。図8の例では、2行目のコマンドが"jump TopMenu"であって、このコマンドが実行されインデックステーブルに記述されたトップメニュー(Top Menu)を実現するムービーオブジェクトの実行が開始される。
次に、この発明の実施の一形態に適用可能な画像の表示系について説明する。この発明の実施の一形態では、画像の表示系について、図9に一例が示されるようなプレーン構成を取る。動画プレーン10は、最も後ろ側(ボトム)に表示され、プレイリストで指定された画像(主に動画データ)が扱われる。字幕プレーン11は、動画プレーン10の上に表示され、動画再生中に表示される字幕データが扱われる。グラフィクスプレーン12は、最も前面に表示され、メニュー画面を表示するための文字データや、ボタン画像用のビットマップデータなどのグラフィクスデータが扱われる。1つの表示画面は、これら3つのプレーンが合成されて表示される。
なお、グラフィクスプレーン12は、このようにメニュー画面を表示するためのデータが扱われることから、以下では、グラフィクスプレーン12をインタラクティブグラフィクスプレーン12と称する。
動画プレーン10、字幕プレーン11およびインタラクティブグラフィクスプレーン12は、それぞれ独立して表示が可能とされる。動画プレーン10は、解像度が1920画素×1080ラインで1画素当たりに換算したデータ長が16ビットであって、輝度信号Y、色差信号Cb、Crが4:2:2のシステム(以下、YCbCr(4:2:2))とされる。なお、YCbCr(4:2:2)は、各画素当たり輝度信号Yが8ビット、色差信号Cb、Crがそれぞれ8ビットで、色差信号Cb、Crが水平2画素で一つの色データを構成すると見なすカラーシステムである。インタラクティブグラフィクスプレーン12および字幕プレーン11は、1920画素×1080ラインで各画素のサンプリング深さが8ビットとされ、カラーシステムは、256色のパレットを用いた8ビットカラーマップアドレスとされる。
インタラクティブグラフィクスプレーン12および字幕プレーン11は、256段階のアルファブレンディングが可能とされており、他のプレーンとの合成の際に、不透明度を256段階で設定することが可能とされている。不透明度の設定は、画素毎に行うことができる。以下では、不透明度αが(0≦α≦1)の範囲で表され、不透明度α=0で完全に透明、不透明度α=1で完全に不透明であるものとする。
字幕プレーン11では、例えばPNG(Portable Network Graphics)形式の画像データが扱われる。また、インタラクティブグラフィクスプレーン12でも、例えばPNG形式の画像データを扱うことができる。PNG形式は、1画素のサンプリング深さが1ビット〜16ビットとされ、サンプリング深さが8ビットまたは16ビットの場合に、アルファチャンネル、すなわち、それぞれの画素成分の不透明度情報(アルファデータと称する)を付加することができる。サンプリング深さが8ビットの場合には、256段階で不透明度を指定することができる。このアルファチャンネルによる不透明度情報を用いてアルファブレンディングが行われる。また、256色までのパレットイメージを用いることができ、予め用意されたパレットの何番目の要素(インデックス)であるかがインデックス番号により表現される。
なお、字幕プレーン11およびインタラクティブグラフィクスプレーン12で扱われる画像データは、PNG形式に限定されない。JPEG方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
図10は、上述の図9に示したプレーン構成に従い3つのプレーンを合成するグラフィクス処理部の一例の構成を示す。なお、この図10に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。動画プレーン10の動画データが422/444変換回路20に供給される。動画データは、422/444変換回路20でカラーシステムがYCbCr(4:2:2)からYCbCr(4:4:4)に変換され、乗算器21に入力される。
字幕プレーン11の画像データがパレット22Aに入力され、RGB(4:4:4)の画像データとして出力される。この画像データに対してアルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α1(0≦α1≦1)がパレット22Aから出力される。
パレット22Aは、例えばPNG形式のファイルに対応したパレット情報がテーブルとして格納される。パレット22Aは、入力された8ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ8ビットのデータからなるRGB(4:4:4)のデータが出力される。それと共に、パレット22Aでは、不透明度を表すアルファチャンネルのデータαが取り出される。
図11は、パレット22Aに格納される一例のパレットテーブルを示す。256個のカラーインデックス値〔0x00〕〜〔0xFF〕(〔0x〕は16進表記であることを示す)のそれぞれに対して、各々8ビットで表現される三原色の値R、GおよびBと、不透明度αとが割り当てられる。パレット22Aは、入力されたPNG形式の画像データに基づきパレットテーブルが参照され、画像データにより指定されたインデックス値に対応する、それぞれ8ビットのデータからなるR、GおよびB各色のデータ(RGBデータ)と、不透明度αとを画素毎に出力する。
パレット22Aから出力されたRGBデータは、RGB/YCbCr変換回路22Bに供給され、各データ長が8ビットの輝度信号Yと色信号Cb、Crのデータに変換される(以下、まとめてYCbCrデータと称する)。これは、以降のプレーン間合成を共通のデータ形式で行う必要があるためで、動画データのデータ形式であるYCbCrデータに統一している。
RGB/YCbCr変換回路22Bから出力されたYCbCrデータと不透明度データα1とがそれぞれ乗算器23に入力される。乗算器23では、入力されたYCbCrデータに不透明度データα1が乗ぜられる。乗算結果は、加算器24の一方の入力端に入力される。なお、乗算器23では、YCbCrデータにおける輝度信号Y、色差信号Cb、Crのそれぞれについて、不透明度データα1との乗算が行われる。また、不透明度データα1の補数(1−α1)が乗算器21に供給される。
乗算器21では、422/444変換回路20から入力された動画データに不透明度データα1の補数(1−α1)が乗ぜられる。乗算結果は、加算器24の他方の入力端に入力される。加算器24において、乗算器21および23の乗算結果が加算される。これにより、動画プレーン10と字幕プレーン11とが合成される。加算器24の加算結果が乗算器25に入力される。
インタラクティブグラフィクスプレーン12の画像データがパレット26Aに入力され、RGB(4:4:4)の画像データとして出力される。この画像データに対してアルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α2(0≦α2≦1)がパレット26Aから出力される。パレット26Aから出力されたRGBデータは、RGB/YCbCr変換回路26Bに供給されてYCbCrデータに変換され、動画データのデータ形式であるYCbCrデータに統一される。RGB/YCbCr変換回路26Bから出力されたYCbCrデータが乗算器27に入力される。
インタラクティブグラフィクスプレーン12で用いられる画像データがPNG形式である場合には、画像データ中に、画素毎に不透明度データα2(0≦α2≦1)を設定することができる。不透明度データα2は、乗算器27に供給される。乗算器27では、RGB/YCbCr変換回路26から入力されたYCbCrデータに対し、輝度信号Y、色差信号Cb、Crのそれぞれについて、不透明度データα2との乗算が行われる。乗算器27による乗算結果が加算器28の一方の入力端に入力される。また、不透明度データα2の補数(1−α2)が乗算器25に供給される。
乗算器25では、加算器24の加算結果に対して不透明度データα2の補数(1−α2)が乗ぜられる。乗算器25の乗算結果は、加算器28の他方の入力端に入力され、上述した乗算器27による乗算結果と加算される。これにより、動画プレーン10と字幕プレーン11との合成結果に対して、さらに、インタラクティブグラフィクスプレーン12が合成される。
字幕プレーン11およびインタラクティブグラフィクスプレーン12において、例えば、表示すべき画像の無い領域の不透明度α=0と設定することで、そのプレーンの下に表示されるプレーンを透過表示させることができ、例えば動画プレーン10に表示されている動画データを、字幕プレーン11やインタラクティブグラフィクスプレーン12の背景として表示することができる。
次に、インタラクティブグラフィクスストリーム(IGストリーム)について説明する。ここでは、IGストリームのうち、この発明に関わりの深い部分に注目して説明する。IGストリームは、上述したように、メニュー表示に用いられるデータをストリームにしたものである。例えば、メニュー表示に用いられるボタン画像がIGストリームに格納される。
IGストリームは、クリップAVストリームに多重化される。インタラクティブグラフィクスストリーム(図12A参照)は、図12Bに一例が示されるように、ICS(Interactive Composition Segment)、PDS(Palette Definition Segment)およびODS(Object Definition Segment)の3種類のセグメントからなる。
3種類のセグメントのうち、ICSは、詳細は後述するが、IG(インタラクティブグラフィクス)の基本構造を保持するためのセグメントである。PDSは、ボタン画像の色情報を保持するためのセグメントである。また、ODSは、ボタンの形状を保持するための情報である。より具体的には、ODSは、ボタン画像そのもの、例えばボタン画像を表示するためのビットマップデータが、ランレングス圧縮など所定の圧縮符号化方式で圧縮符号化されて格納される。
ICS、PDSおよびODSは、図12Cに一例が示されるように、それぞれ必要に応じて所定に分割され、PID(Packet Identification)により区別されてPES(Packetized Elementary Stream)パケットのペイロードに格納される。PESパケットは、サイズが64KB(キロバイト)と決められているため、比較的サイズが大きなICSおよびODSは、それぞれ所定に分割されてPESパケットのペイロードに詰め込まれる。一方、PDSは、サイズが64KBに満たないことが多いので、1つのPESパケットに1IG分のPDSが格納可能である。PESパケットのそれぞれには、ペイロードに格納されたデータがICS、PDSおよびODSのうち何れであるかの情報や、パケット毎の順番などを示す識別情報がPIDに格納される。
PESパケットのそれぞれは、さらに所定に分割され、MPEG TS(トランスポートストリーム)によるトランスポートパケットに詰め込まれる(図12D)。トランスポートパケット毎の順序や、トランスポートパケットに格納されたデータを識別する識別情報などがPIDに格納される。
次にインタラクティブグラフィクスのディスプレイセット(DisplaySet)に含まれる、ICSについて説明する。ICSの説明に先んじて、図13および図14を用いてメニュー画面およびボタンの構成を概略的に示す。なお、ディスプレイセットは、IGストリームにおいては、メニュー表示を行うためのデータのセットであって、上述したICS、PDSおよびODSによりIGストリームのディスプレイセットが構成される。
図13は、グラフィクスプレーン12上に表示されるボタン表示の一例の状態遷移図である。ボタンは、大別すると、無効状態と有効状態の2つの状態を有し、無効状態では画面にボタンが表示されず、有効状態でボタン表示がなされる。ボタン無効状態からボタン有効状態に遷移し、ボタン表示が開始される。ボタン有効状態からボタン無効状態に遷移し、ボタン表示が終了される。ボタン有効状態は、さらに、通常状態、選択状態および実行状態の3種類の状態を有する。ボタン表示は、これら3種類の状態間をそれぞれ互いに遷移することができる。遷移方向を一方向に限定することも可能である。また、3種類のボタン表示の状態のそれぞれに、アニメーションを定義することができる。
図14は、メニュー画面およびボタンの構成を概略的に示す。図14Aに一例が示されるような、複数のボタン300、300、・・・が配置されたメニュー画面11を考える。このメニュー画面301は、図14Bに一例が示されるように、複数枚のメニュー画面によって階層的に構成することができる。各階層のメニュー画面のそれぞれは、ページと呼ばれる。例えば、最前面に表示されたメニュー画面のあるボタン300を、所定の入力手段によって選択状態から実行状態に遷移させると、そのメニュー画面の1枚後ろに位置するメニュー画面が最前面のメニュー画面となるような構成が考えられる。なお、以下では、「所定の入力手段によりボタンの状態を変化させる」ことを、煩雑さを避けるために、「ボタンを操作する」などと、適宜、表記する。
メニュー画面301に表示される1つのボタン300は、複数のボタン302A、302B、・・・が階層化された構成とすることができる(図14Cおよび図14D参照)。これは、換言すれば、1つのボタン表示位置に複数のボタンを選択的に表示することができることを意味する。例えば、複数のボタンのうち所定のボタンを操作した際に、同時に表示されている他の幾つかのボタンの機能および表示が変更されるような場合に、メニュー画面自体を書き換える必要が無いので、用いて好適である。このような、1つのボタン位置に選択的に表示される複数のボタンからなる組を、BOGs(Button Overlap Group)と呼ぶ。
BOGsを構成するボタンのそれぞれは、通常状態、選択状態および実行状態の3状態を有することができる。すなわち、図14Eに一例が示されるように、BOGsを構成するボタンのそれぞれに対して、通常状態、選択状態および実行状態をそれぞれ表すボタン303A、303Bおよび303Cを用意することができる。さらに、これら3状態を表すボタン303A、303Bおよび303Cのそれぞれに対して、図14Fに一例が示されるように、アニメーション表示を設定することができる。この場合には、アニメーション表示が設定されたボタンは、アニメーション表示に用いるだけの枚数のボタン画像からなることになる。
なお、以下では、ボタンのアニメーションを構成するための複数枚のボタン画像のそれぞれを適宜、アニメーションフレームと呼ぶことにする。
図15は、ICSのヘッダ情報の一例の構造を表すシンタクスを示す。ICSのヘッダは、ブロックsegment_descriptor()、ブロックvideo_descriptor()、ブロックcomposition_descriptor()、ブロックsequence_descriptor()およびブロックinteractive_composition_data_fragemnt()からなる。ブロックsegment_descriptor()は、このセグメントがICSであることを示す。ブロックvideo_descriptor()は、このメニューと同時に表示されるビデオのフレームレートや画枠サイズを示す。ブロックcomposition_descriptor()は、フィールドcomposition_stateを含み(図示しない)、このICSのステータスを示す。ブロックsequence_descriptor()は、このICSが複数のPESパケットに跨るか否かを示す。
より具体的には、このブロックsequence_descriptor()は、現在のPESパケットに含まれるICSが1つのIGストリームの先頭または最後尾の何れのICSであるか否かを示す。
すなわち、上述したように、データサイズが64KBと固定的とされたPESパケットに対して、ICSのデータサイズが大きい場合には、ICSが所定に分割されてPESパケットにそれぞれ詰め込まれる。このとき、この図15に示されるヘッダ部分は、ICSが分割して詰め込まれたPESパケットのうち先頭および最後尾のPESパケットにだけあればよく、途中のPESパケットにおいては省略することができる。このブロックsequence_descriptor()が先頭および最後尾を示していれば、ICSが1つのPESパケットに収まっていることが分かる。
図16は、ブロックinteractive_composition_data_fragemnt()の一例の構造を表すシンタクスを示す。なお、図16では、自身のブロックがブロックinteractive_composition()として示されている。フィールドintaractive_composition_lengthは、24ビットのデータ長を有し、ブロックinteractive_composition()のこのフィールドintaractive_composition_length以降の長さを示す。フィールドstream_modelは、1ビットのデータ長を有し、このストリームが多重化されているか否かを示す。
フィールドstream_modelの値が"0"であれば、多重化されていることを示し、MPEG2トランスポートストリーム内に、インタラクティブグラフィクスストリームと共に関連する他のエレメンタリストリームが多重化されている可能性があることを示す。フィールドstream_modelの値が"1"で非多重化を示し、MPEG2トランスポートストリーム内にはインタラクティブグラフィクスストリームのみが存在することを示す。すなわち、インタラクティブグラフィクスストリームは、AVストリームに対して多重化することもできるし、単独でクリップAVストリームを構成することもできる。なお、非多重化であるインタラクティブグラフィクスストリームは、非同期のサブパスとしてのみ、定義される。
フィールドuser_interface_modelは、1ビットのデータ長を有し、このストリームが表示するメニューがポップアップメニューか、常時表示メニューの何れであるかを示す。ポップアップメニューは、例えばリモートコントロールコマンダのボタンのON/OFFといった、所定の入力手段で表示の有無を制御できるメニューである。一方、常時表示メニューは、ユーザ操作により表示の有無を制御できない。フィールドuser_interface_modelの値が"0"で、ポップアップメニューを示し、"1"で常時表示メニューを示す。なお、フィールドstream_modelの値が"1"であり、且つ、他のエレメンタリストリームと多重化されていない場合に限り、ポップアップメニューが許可される。
フィールドstream_modelの値が"0"であれば、If文If(stream_model=='0b'以下のフィールドcomposition_time_out_ptsおよびフィールドselection_time_out_ptsが有効になる。フィールドcomposition_time_out_ptsは、33ビットのデータ長を有し、このメニュー表示が消える時刻を示す。また、フィールドselection_time_out_ptsは、33ビットのデータ長を有し、このメニュー表示における選択操作が可能でなくなる時刻を示す。時刻は、それぞれMPEG2に規定されるPTS(Presentation Time Stamp)で記述される。
図17は、ブロックpage()の一例の構造を表すシンタクスを示す。フィールドpage_idは、8ビットのデータ長を有し、このページを識別するためのIDを示し、フィールドpage_version_numberは、8ビットのデータ長を有し、このページのバージョン番号を示す。次のブロックUO_mask_table()は、このページの表示中に禁止される、ユーザの入力手段に対する操作(UO:User Operation)が記述されるテーブルを示す。
ブロックin_effect()は、このページが表示される際に表示されるアニメーションブロックを示す。括弧{}内のブロックeffect_sequence()に、アニメーションのシーケンスが記述される。また、ブロックout_effect()は、このページが終了する際に表示されるアニメーションブロックを示す。括弧{}内のブロックeffect_sequence()に、アニメーションのシーケンスが記述される。これらブロックin_effect()およびブロックout_effect()は、それぞれページを移動した際にこのICSが発見された場合に実行されるアニメーションである。
次のフィールドanimation_frame_rate_codeは、8ビットのデータ長を有し、このページのボタン画像がアニメーションする場合の、アニメーションフレームレートの設定パラメータを示す。例えば、このICSが対応するクリップAVストリームファイルにおけるビデオデータのフレームレートをVfrm、当該アニメーションフレームレートをAfrmとした場合、フィールドanimation_frame_rate_codeの値を、Vfrm/Afrmのように、これらの比で表すことができる。
フィールドdefault_selected_button_id_refは、16ビットのデータ長を有し、このページが表示される際に最初に選択状態とされるボタンを指定するためのIDを示す。また、次のフィールドdefault_activated_button_id_refは、16ビットのデータ長を有し、図16を用いて説明したフィールドselection_time_out_ptsで示される時間に達した際に、自動的に実行状態となるボタンを指定するためのIDを示す。
フィールドpalette_id_refは、8ビットのデータ長を有し、このページが参照するパレットのIDを示す。すなわち、このフィールドpalette_id_refにより、IGストリームにおけるPDS中の色情報が指定される。
次のフィールドnumber_of_BOGsは、8ビットのデータ長を有し、このページで用いられるBOGsの数が示される。このフィールドnumber_of_BOGsで示される回数だけ、次のfor文からのループが繰り返され、ブロックbutton_overlap_group()により、BOGs毎の定義がなされる。
図18は、ブロックbutton_overlap_group()の一例の構造を表すシンタクスを示す。フィールドdefault_valid_button_id_refは、16ビットのデータ長を有し、このブロックbutton_overlap_group()で定義されるBOGsにおいて最初に表示されるボタンのIDを示す。次のフィールドnumber_of_buttonsは、8ビットのデータ長を有し、このBOGsで用いられるボタンの数を示す。そして、このフィールドnumber_of_buttonsで示される回数だけ、次のfor文からのループが繰り返され、ブロックbutton()によりボタンそれぞれの定義がなされる。
すなわち、既に説明したように、BOGsは、複数のボタンを持つことができ、BOGsが持つ複数のボタンのそれぞれの構造がブロックbutton()で定義される。このブロックbutton()で定義されるボタン構造が、実際に表示されるボタンである。
図19は、ブロックbutton()の一例の構造を表すシンタクスを示す。フィールドbutton_idは、16ビットのデータ長を有し、このボタンを識別するIDを示す。フィールドbutton_numeric_select_valueは、16ビットのデータ長を有し、このボタンがリモートコントロールコマンダ上の数字キーの何番に割り当てられているかを示す。フラグauto_action_flagは、1ビットのデータ長を有するフラグであって、このボタンが選択状態になったときに、当該ボタンに割り当てられた機能が自動的に実行されるか否かを示す。
なお、以下では、フラグフラグauto_action_flagにより、選択状態となったときに、割り当てられた機能が自動的に実行されるように定義されたボタンを、適宜、オートアクションボタンと呼ぶ。
次のフィールドbutton_horizontal_positionおよびフィールドbutton_vertical_positioは、それぞれ16ビットのデータ長を有し、このボタンを表示する画面上の水平方向の位置および垂直方向の位置(高さ)を示す。
ブロックneighbor_info()は、このボタンの周辺情報を示す。すなわち、このブロックneighbor_info()内の値により、このボタンが例えば選択状態となっている状態からリモートコントロールコマンダにおける上下左右の方向を指示できる方向キーが操作された際に、どのボタンが選択状態に遷移するかを示す。ブロックneighbor_info()内のフィールドにおいて、それぞれ16ビットのデータ長を有するフィールドupper_button_id_ref、フィールドlower_button_id_ref、フィールドleft_button_id_refおよびフィールドright_button_id_refは、上方向、下方向、左方向および右方向を指示する操作がなされた場合に選択状態に遷移されるボタンのIDをそれぞれ示す。
次からのブロックnormal_state_info()、ブロックselected_state_info()およびブロックactivated_state_info()は、それぞれ、通常状態、選択状態および実行状態時のボタンの情報を示す。
先ず、ブロックnormal_state_info()について説明する。それぞれ16ビットのデータ長を有するフィールドnormal_start_object_id_refおよびフィールドnormal_end_object_id_refは、この通常状態のボタンのアニメーションの先頭および末尾のオブジェクトを指定するIDがそれぞれ示される。すなわち、これらフィールドnormal_start_object_id_refおよびフィールドnormal_end_object_id_refにより、ボタンのアニメーション表示に用いられるボタン画像(すなわちアニメーションフレーム)が、対応するODSに対して指定される。
次のフラグnormal_repeat_flagは、1ビットのデータ長を有するフラグであって、このボタンのアニメーションがリピートするか否かが示される。例えば、フラグnormal_repeat_flagの値が"0"でリピートしないことを示し、値が"1"でリピートすることを示す。次のフラグnormal_complete_flagは、1ビットのデータ長を有するフラグであって、このボタンが通常状態から選択状態に遷移する際のアニメーション動作を制御する。
次に、ブロックselected_state_info()について説明する。このブロックselected_state_info()は、上述のブロックnormal_state_info()に対して、サウンドを指示するためのフィールドselected_state_sound_id_refが付加されている。フィールドselected_state_sound_id_refは、8ビットのデータ長を有し、この選択状態のボタンに対して再生されるサウンドファイルを示す。例えば、サウンドファイルは、ボタンが通常状態から選択状態に遷移した際の効果音として用いられる。
それぞれ16ビットのデータ長を有するフィールドselected_start_object_id_refおよびフィールドselected_end_object_id_refは、この選択状態のボタンのアニメーションの先頭および末尾のオブジェクトを指定するIDがそれぞれ示される。また、次の1ビットのデータ長を有するフラグであるフラグselected_repeat_flagは、このボタンのアニメーションがリピートするか否かが示される。例えば値が"0"でリピートしないことを示し、値が"1"でリピートすることを示す。
次のフラグselected_complete_flagは、1ビットのデータ長を有するフラグである。このフラグselected_complete_flagは、このボタンが選択状態から他の状態に遷移する際のアニメーション動作を制御するフラグである。すなわち、フラグselected_complete_flagは、ボタンが選択状態から実行状態に遷移する場合と、選択状態から通常状態に遷移する場合とに、用いることができる。
上述と同様、フラグselected_complete_flagの値が"1"であれば、このボタンが選択状態から他の状態へと遷移する際に、選択状態に定義されているアニメーションを、全て表示する。より具体的には、フラグselected_complete_flagの値が"1"であったなら、当該ボタンの選択状態のアニメーション表示中に当該ボタンを選択状態から他の状態に遷移させるような入力がなされた場合、その時点で表示されているアニメーションフレームから、上述したフィールドselected_end_object_id_refで示されるアニメーションフレームまで、アニメーション表示を行う。
また、フラグselected_complete_flagの値が"1"であって、且つ、フラグselected_repeat_flagがリピートすることを示している場合(例えば値"1")も、その時点で表示されているアニメーションフレームから、上述したフィールドselected_end_object_id_refで示されるアニメーションフレームまで、アニメーション表示を行う。
この場合、例えばボタンが選択できない状態にされた場合や、ボタンの表示そのものが消されてしまうような場合でも、これらの状態に遷移する時点がアニメーションの表示中であれば、フィールドselected_end_object_id_refで示されるアニメーションフレームまでアニメーション表示を行い、その後、ボタンの状態を遷移させる。
ボタンが選択できない状態は、例えば上述したフィールドselection_time_out_ptsの指定により、ボタンが選択できないような状態になった場合や、フィールドuser_time_out_durationの指定によりメニューが自動的に初期化されるような場合が考えられる。
一方、フラグselected_complete_flagの値が"0"であれば、このボタンが選択状態から他の状態へと遷移する際に、選択状態のボタンに定義されたアニメーションをフィールドselected_end_object_id_refで示されるアニメーションフレームまで表示せずに、状態の遷移が指示された時点でアニメーション表示を停止し、他の状態のボタンを表示する。
ブロックactivated_state_info()において、フィールドactivated_state_sound_id_refは、8ビットのデータ長を有し、この実行状態のボタンに対して再生されるサウンドファイルを示す。それぞれ16ビットのデータ長を有するフィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refは、この実行状態のボタンのアニメーションの先頭および末尾のアニメーションフレーム(すなわちボタン画像)を指定するIDがそれぞれ示される。フィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refが同一のボタン画像を参照していれば、当該実行状態のボタンに対して、1のボタン画像のみが関連付けられていることを示す。
なお、フィールドactivated_start_object_id_refまたはフィールドactivated_end_object_id_refは、値が〔0xFFFF〕で、ボタン画像が指定されていないことを示す。一例として、フィールドactivated_start_object_id_refの値が〔0xFFFF〕であって、且つ、フィールドactivated_end_object_id_refの値が有効なボタン画像を示していれば、当該実行状態のボタンに対してボタン画像が関連付けられていないとされる。また、フィールドactivated_start_object_id_refの値が有効なボタン画像を示し、且つ、フィールドactivated_end_object_id_refの値が〔0xFFFF〕であれば、無効なボタンとして扱うことが考えられる。
ブロックactivated_state_info()の説明を終わり、次のフィールドnumber_of_navigation_commandsは、16ビットのデータ長を有し、このボタンに埋め込まれるコマンドの数を示す。そして、このフィールドnumber_of_navigation_commandsで示される回数だけ、次のfor文からのループが繰り返され、このボタンにより実行されるコマンドnavigation_command()が定義される。これは、換言すれば、1つのボタンから複数のコマンドを実行させることができることを意味する。
次に、インタラクティブグラフィクス(以下、適宜、IGと略称する)のデコーダモデルについて、図20を用いて説明する。なお、この図20に示す構成は、インタラクティブグラフィクスのデコードを行うと共に、プレゼンテーショングラフィクスのデコードにおいても共通的に用いることができるものである。
先ず、ディスクがプレーヤに装填されると、インデックスファイル"index.bdmv"およびムービーオブジェクトファイル"MovieObject.bdmv"がディスクから読み込まれ、所定にトップメニューが表示される。トップメニューの表示に基づき、再生するタイトルを指示すると、ムービーオブジェクトファイル中の対応するナビゲーションコマンドにより、指示されたタイトルを再生するためのプレイリストファイルが呼び出される。そして、当該プレイリストファイルの記述に従い、プレイリストから再生を要求されたクリップAVストリームファイル、すなわち、MPEG2のトランスポートストリームがディスクから読み出される。
トランスポートストリームは、TSパケットとしてPIDフィルタ100に供給されてPIDが解析される。PIDフィルタ100では、供給されたTSパケットがビデオデータ、オーディオデータ、メニューデータおよびサブタイトル(字幕)データの何れを格納したパケットであるかを分類する。PIDがメニューデータすなわちインタラクティブグラフィクスを表している場合、若しくは、PIDがプレゼンテーショングラフィクスを表している場合に、図20の構成が有効とされる。なお、プレゼンテーショングラフィクスに関しては、この発明と直接的な関連性がないので、説明を省略する。
PIDフィルタ100において、トランスポートストリームからデコーダモデルが対応するデータを格納するTSパケットが選択されて、トランスポートバッファ(以下、TB:Transport Buffer)101に溜め込まれる。そして、TB101上でTSパケットのペイロードに格納されているデータが取り出される。PESパケットを構成可能なだけのデータがTB101に溜め込まれたら、PIDに基づきPESパケットが再構築される。すなわち、この段階で、TSパケットに分割されていた各セグメントがそれぞれ統合されることになる。
各セグメントによるPESパケットは、PESヘッダが取り除かれエレメンタリストリーム形式でデコーダ102にそれぞれ供給され、CDB(コーデッドデータバッファ:Coded Data Buffer)110に一旦溜め込まれる。STCに基づき、CDB110に溜め込まれたエレメンタリストリームのうち、対応するDTSに示される時刻に達したエレメンタリストリームがあれば、当該セグメントは、CDB110から読み出されてストリームグラフィックプロセッサ111に転送され、それぞれデコードされセグメントに展開される。
ストリームグラフィックプロセッサ111は、デコードが完了したセグメントを、DB(デコーデッドオブジェクトバッファ:Decoded Object Buffer)112またはCB(コンポジションバッファ:Composition Buffer)113に所定に格納する。PCS、ICS、WDSおよびODSのようにDTSを持つタイプのセグメントであれば、対応するDTSに示されるタイミングで、DB112またはCB113に格納する。また、PDSのようにDTSを持たないタイプのセグメントは、即座にCB113に格納される。
グラフィクスコントローラ114は、セグメントを制御する。グラフィクスコントローラ114は、CB113からICSを、当該ICSに対応するPTSに示されるタイミングで読み出すと共に、当該ICSにより参照されるPDSを読み出す。また、グラフィクスコントローラ114は、当該ICSから参照されるODSをDB112から読み出す。そして、読み出されたICSおよびODSをそれぞれデコードし、ボタン画像などメニュー画面を表示するためのデータを形成し、グラフィクスプレーン103に書き込む。
また、グラフィクスコントローラ114は、CB113から読み出されたPDSをデコードして、例えば図11を用いて説明したようなカラーパレットテーブルを形成し、CLUT104に書き込む。
グラフィクスプレーン103に書き込まれた画像イメージは、所定のタイミング、例えばフレームタイミングで読み出され、CLUT104のカラーパレットテーブルが参照されて色情報が付加されて出力画像データが構成され、この出力画像データが出力される。
図21〜図23を用いて、IGストリームによるメニュー表示と、メインパスのプレイリストに基づき再生されるビデオストリームとを合成して表示する例について、概略的に説明する。
図21は、IGストリームにより表示される一例のメニュー表示を示す。この例では、IGストリームにより、メニューの背景200が表示されると共に、ボタン201A、ボタン201Bおよびボタン201Cが表示される。ボタン201A、201Bおよび201Cのそれぞれには、通常状態、選択状態および実行状態を示すボタン画像を各々、用意することができる。メニューの背景200は、移動が禁止され、且つ、コマンドが設定されていないボタン(特殊ボタンと称する)により、表示される。なお、各ボタンは重なって表示できないという制約が設けられている。そのため、ボタン201A、201Bおよび201Cそれぞれに挟まれる部分、ボタン201Aの左側の部分、ならびに、ボタン201Cの右側の部分は、それぞれ独立した特殊ボタンが配置される。
これらボタン201A、201Bおよび201Cは、例えばリモートコントロールコマンダの十字キーの操作により右または左が指示されると、操作に応じて通常状態のボタン画像と選択状態のボタン画像とが順次、切り換えて表示される。さらに、この図21の例では、ボタンが選択状態になっているときに、例えば十字キーに対する下方向を指示する操作、または、決定キーの操作などにより、選択状態のボタンに対応するプルダウンメニュー202が表示される。
プルダウンメニュー202は、例えば複数のボタン203A、203Bおよび203Cから構成される。これら複数のボタン203A、203Bおよび203Cも、上述のボタン201A、201Bおよび201Cと同様に、通常状態、選択状態および実行状態を示すボタン画像を各々、用意することができる。プルダウンメニュー202が表示されている状態で例えば十字キーの操作により上または下が指示されると、プルダウンメニュー202の各ボタン203A、203Bおよび203Cが操作に応じて通常状態のボタン画像と選択状態のボタン画像とが順次、切り換えて表示される。例えば決定ボタンの操作により、選択状態のボタン画像が実行状態のボタン画像に切り換えられて表示され、実行状態のボタン画像が、後述するような、この発明の実施の一形態による表示制御に基づき表示され、当該ボタンに割り当てられた機能がプレーヤに実行される。
このようなメニュー表示と、図22に一例が示される、メインパスのプレイアイテムにより再生され動画プレーン10に表示される動画データとを合成する場合について考える。図21の画面中、プルダウンメニュー202部分を含むメニュー表示以外の部分の不透明度αが"0"に設定され、インタラクティブグラフィクスプレーン12と、動画プレーン10とが合成される。これにより、図23に一例が示されるように、図22に例示される動画データに対して図21に例示されるメニュー表示が合成された表示が得られる。
上述したメニュー表示におけるプルダウンメニュー表示を実現するための方法の例について、概略的に説明する。一例として、ボタン201Aが選択状態になっているときに、リモートコントロールコマンダの決定キーを操作してプルダウンメニュー202を表示させる例について、図24を用いて説明する。なお、図24において上述した図21と共通する部分には同一の符号を付し、詳細な説明を省略する。
この図24の例では、背景200、ボタン201A、201Bおよび201C、ならびに、プルダウンメニュー202を含むメニュー表示がページ"0"で示されるメニュー画面に表示されるものとする。ボタン201A、ボタン201Bおよびボタン201Cは、それぞれボタンを識別するためのIDである値button_idが"1"、"2"および"3"で定義されるボタンオーバーラップグループ(BOG)とされる。また、ボタン201Aに対応するプルダウンメニュー202における各ボタン203A、203Bおよび203Cは、値button_idがそれぞれ"3"、"4"および"5"で定義されるボタンオーバーラップグループとされる。
ボタン201Aを例にとると、ボタン201Aを定義するブロックbutton()において、当該ボタン201Aにより実行されるコマンドnavigation_command()の部分に、例えば次のようにコマンドを記述する。なお、以下に説明する各コマンドは、BD−ROM論理フォーマットにより定義されるコマンドである。
EnableButton(3);
EnableButton(4);
EnableButton(5);
SetButtonPage(1,0,3,0,0);
これらのコマンドにおいて、コマンドEnableButton()は、括弧「()」内に示される値を値button_idとして定義されたボタンをイネーブル状態(有効状態)とすることを示す。なお、ボタンを有効状態にするコマンドEnableButton()に対して、ボタンをディぜーブル状態すなわち無効状態にする場合は、コマンドDisableButton()が用いられる。
コマンドSetButtonPage()は、例えばコマンドEnableButton()で有効状態とされたボタンを選択可能とさせるためのコマンドである。コマンドSetButtonPage()は、5個のパラメータbutton_flag、パラメータpage_flag、パラメータbutton_id、パラメータpage_idおよびパラメータout_effect_off_flagを持つ。パラメータbutton_flagは、3番目のパラメータであるパラメータbutton_idの値をプレーヤが持つ、再生状態を管理するためのメモリ(PSR:Player Status Register)に設定することを示す。パラメータpage_flagは、PSRに保持している、ページを識別する値page_idを、4番目のパラメータであるパラメータpage_idに変更するか否かを示す。また、パラメータout_effect_off_flagは、当該ボタン201Aが非選択状態になったときに、当該ボタン201Aに定義されるエフェクトが実行されるか否かが示される。
一方、プルダウンメニュー202を構成するボタン203A、ボタン203Bおよびボタン203Cに対しても、これらのボタンが決定状態となったときに実行されるコマンドnavigation_command()が記述される。図24の例では、ボタン203Bに対して、用いるストリームを設定するコマンドSetStream()が記述される。この例では、コマンドSetStream()により2番目のPGストリームが用いられることが示される。
なお、上述したような、各ボタンに対して記述されるコマンドnavigation_command()は、一例であって、これに限られるものではない。例えば、字幕を選択するためのプルダウンメニュー202のボタン203Aおよび203Cにも、上述のボタン203Bと同様に、コマンドSetStream()が記述されることが考えられる。
図24に例示されるメニュー画面において、ボタン201Aが選択状態のときに決定キーを操作すると、値button_idが"3"、"4"および"5"で定義されるボタン、すなわち、プルダウンメニュー202におけるボタン203A、203Bおよび203Cがそれぞれ有効状態とされ、対応するボタン画像が表示される。このとき、コマンドSetButtonPage(1,0,3,0,0)の記述に基づき、値button_idが"3"で示されるボタン203Aが選択状態とされる。
さらに十字キーなどの操作により下方向が指示されると、ボタンに対するフォーカスが下に移動されてボタン203Aが選択状態から通常状態に遷移され、ボタン203Bが通常状態から選択状態へと遷移される。この状態で決定キーを操作すると、ボタン203Bにおけるコマンドnavigation_command()の記述に従い、2番目のPGストリームが選択され、字幕表示が英語による字幕に切り換えられる。
別の例として、ボタン201Aが選択状態となっているときに、リモートコントロールコマンダの十字キーなどにより下方向を指定する操作を行って、プルダウンメニュー202を表示させる例について、図25および図26を用いて説明する。これら図25および図26では、メニュー表示に対して、メインパスのプレイアイテムにより動画プレーン10に表示される動画データが合成されている。
なお、図25および図26において、上述した図21、図23および図24などと共通する部分には同一の符号を付し、詳細な説明を省略する。例えば、図26に示される、プルダウンメニュー202上のボタン203A、203Bおよび203Cは、それぞれ値button_idが"3"、"4"および"5"で定義され、ボタン203Bに対して、2番目のPGストリームを用いるとされたコマンドSetStream()が記述されるものとする。
ボタンの選択状態に対して、決定キーではなく下方向キーなどでプルダウンメニュー202を表示させる場合、例えば、図25および図26に例示されるように、ユーザに対して見せないようにされた隠しボタン204を用いる方法が考えられる。隠しボタン204は、例えば隠しボタン204に関連付けられたボタン画像データに対して、不透明度α=0を指定することで、実現することができる。図25および図26では、説明のため隠しボタン204を点線の枠で示したいるが、実際には、隠しボタン204は表示されておらず、後ろのプレーン(例えば動画プレーン10)の画像が透過されて表示されている。
図25を参照し、隠しボタン204を定義するブロックbutton()において、隠しボタン204を識別する値button_idを例えば"7"とし、この隠しボタン204を値button_idが"7"で定義されるボタンオーバーラップグループとする。さらに、当該ブロックbutton()において、フラグauto_action_flagの値を例えば"1b"(「b」は、直前の数値がバイナリ値であることを示す)とし、この隠しボタン204を、選択状態から自動的に実行状態に遷移するように定義する。そして、当該隠しボタン204より実行されるコマンドnavigation_command()の部分に、例えば次のようにコマンドを記述する。
EnableButton(3);
EnableButton(4);
EnableButton(5);
SetButtonPage(1,0,3,0,0);
一方、例えば字幕選択を行うボタン201Aに対し、フィールドlower_button_id_refの値を"7"とし、ボタン201Aが選択状態のときに十字キーなどの操作により下方向が指定されると、値button_idが"7"のボタン(この例では上述の隠しボタン204)が選択状態に遷移するように設定される。
図25に例示されるメニュー表示に対し、ボタン201Aが選択状態とされているときに十字キーの操作などにより下方向が指示されると、ボタン201Aにおけるフィールドlower_button_id_refの記述に従い、値button_idが"7"で示される隠しボタン204が選択状態とされる。ここで、この隠しボタン204には、フラグauto_action_flagにより選択状態から自動的に実行状態に遷移するように定義されている。そのため、隠しボタン204におけるコマンドnavigation_command()の部分のコマンドEnableButton()の記述に従い、値button_idが"3"、"4"および"5"で定義されるボタン、すなわちプルダウンメニュー202のボタン203A、203Bおよび203Cがそれぞれ有効状態とされ、対応するボタン画像が表示される(図26参照)。このとき、コマンドSetButtonPage(1,0,3,0,0)の記述に基づき、値button_idが"3"で示されるボタン203Aが選択状態とされる。
さらに十字キーなどの操作により下方向が指示されると、ボタンに対するフォーカスが移動されてボタン203Aが選択状態から通常状態に遷移され、ボタン203Bが通常状態から選択状態へと遷移される。この状態で決定キーを操作すると、ボタン203Bにおけるコマンドnavigation_command()の記述に従い、2番目のプレゼンテーショングラフィクスストリームが選択され、字幕表示が英語による字幕に切り換えられる。
次に、この発明の実施の一形態について説明する。この発明では、複数の隠しボタンと、BD−ROM論理フォーマットにおいて定義されるコマンドEnableButton()の性質を利用して、あるコマンド以降に記述されたコマンドが実行されない制約の下で、当該コマンドによる動作を実現可能とするようにしている。
先ず、コマンドEnableButton()の性質について、図27を用いて説明する。図27において、ページIDが"0"のページ(以下、ページ#0)は、ポップアップメニューとして定義されている。このページ#0に対して、ボタンIDがそれぞれ"#1"、"#2"および"#3"とされたボタン400、ボタン401およびボタン402が配置されているものとする。
図27の例では、ボタン401は、例えば通常状態のボタン画像が説明文などを表示するための画像となっており、選択状態や実行状態に遷移されないものとする。また、ボタン400は、ボタン401の表示および非表示を切り換えるためのボタンである。ボタン401を表示させるためには、コマンドEnableButton(#2)を用いてボタン401を有効状態とし、非表示とするためには、コマンドDisableButton(#2)を用いてボタン401を無効状態とする。
すなわち、ボタン400においてコマンドEnableButton(#2)が実行されると、ボタン401が有効状態とされ、図27Aに一例が示されるように、ボタン401が表示される。また、図27Aのボタン401が表示されている状態で、ボタン400においてコマンドDisableButton(#2)が実行されると、ボタン401が無効状態とされ、図27Bに一例が示されるように、ボタン401が非表示状態とされる。また、コマンドEnableButton()およびコマンドDisableButton()によってボタンIDが指定されていないボタン402は、ボタン400のコマンドによるボタン401の表示および非表示状態に影響されない。
ここで、(1)ボタンに関連付けられたコマンドDisableButton()により当該ボタン自身を無効状態にしたり、(2)当該ボタン自身が含まれるBOG(Button Of Group)の、別のボタンをコマンドEnableButton()で有効状態にした場合の動作について説明する。BD−ROM論理フォーマットにおいては、下記のように定義される。
(1)の、ボタンに関連付けられたコマンドDisableButton()により当該ボタン自身を無効状態にした場合、当該ボタンに関連付けられたコマンドを最後まで実行し、その間に他のボタンが選択されれば、当該他のボタンが選択状態に遷移する。若し、選択状態にあるボタンが存在しなければ、そのときに最も相応しいボタンが選択状態にされる。例えば、ページにおいて、当該ページが表示された際にデフォルトで選択状態になるように設定されたボタンが選択状態とされる。
(2)の、当該ボタン自身が含まれるBOGの、別のボタンをコマンドEnableButton()で有効状態にした場合、当該ボタンに関連付けられるコマンドを最後まで実行し、その間にコマンドによって他のボタンが選択されれば、当該他のボタンが選択状態に遷移される。若し、選択状態にあるボタンが存在しなければ、有効状態とされたボタンが選択状態とされる。
すなわち、コマンドEnableButton()およびコマンドDisableButton()は、これらのコマンドで指定されたボタンに関連付けられたコマンドを全て実行してから、当該ボタンが有効状態または無効状態とされる。また、コマンドEnableButton()およびコマンドDisableButton()は、次に選択状態となるボタンを自動的に指定できる。この発明の実施の一形態では、コマンドEnableButton()およびコマンドDisableButton()のこのような性質を利用して、所期の目的を達成する。
一例として、図28に例示されるようなメニュー画面を考える。このメニュー画面は、ポップアップメニューとして定義され、ページ#0に配置されたボタン405、406および407により、チャプタジャンプを行うようにしたものである。ここで、ボタン406を用いてチャプタジャンプを行った場合に、チャプタジャンプによりストリームの再生位置が変更された後に、このポップアップメニューをOFFとする場合について考える。
ボタン405は、このページ#0においてデフォルトで選択状態とされるボタンであって、シーン#1へのチャプタジャンプを指示する。同様に、ボタン406およびボタン407は、それぞれシーン#2およびシーン#3へのチャプタジャンプを指示する。ボタン405のボタンIDを"#1"とし、ボタン407のボタンIDを"#3"とする。これらボタン405および407は、以下の説明に直接的な関連がないので、詳細な説明を省略する。
なお、ページにおいてデフォルトのボタンは、ICSにおけるブロックpage()のフィールドdefault_selected_button_id_refによって指定される(図17参照)。
ボタン406は、互いに異なるIDを持つ2つのボタン406Aおよびボタン406Bからなる。ボタン406AのボタンIDを"#2"とし、ボタン406BのボタンIDを"#2−2"とする。ボタン406Bは、例えば初期状態で無効状態とされ表示されず、ボタン406としてはボタン406Aのみが表示される。
さらに、ページ#0に対して2つの隠しボタン408および409が配置される。隠しボタン408のボタンIDを"#4"とし、隠しボタン409のボタンIDを"#5"とする。この隠しボタン408および409と、上述のボタン406Aおよび406Bは、同じBOG(ボタンオーバーラップグループ)410に属するようにする。図28では、ボタン406Aおよび406B、ならびに、隠しボタン408および409がそれぞれ異なる位置に配置されるように示されているが、これは説明のためであって、実際には、これら4ボタンは、同一のBOGに属するため同一位置に配置される。これは、以下の説明において同様である。
ボタン406Aより実行されるコマンドnavigation_command()の部分に、例えば次のようにコマンドを記述する。
EnableButton(#2−2);
SetButtonPage(#4);
すなわち、ボタン406Aを実行状態とすると、ボタン406Bが有効状態とされ、隠しボタン408が選択状態とされる。なお、上記では、コマンドSetButtonPage()についてパラメータbutton_idのみを記述し、他のパラメータを省略している。背景技術の項で既に説明したように、このコマンドSetButtonPage()以降に記述されるコマンドは、実行されない。
隠しボタン408は、フラグauto_action_flagの値が"1b"とされ、オートアクションボタンに定義される。また、隠しボタン408により実行されるコマンドnavigation_command()の部分に、例えば次のようにコマンドを記述する。
EnableButton(#5);
LinkPI(目的のシーン);
なお、コマンドLinkPI()は、プレイアイテムIDを指定することで、そのIDを持つプレイアイテムに再生位置を変更させるコマンドである。したがって、背景技術の項で既に説明したように、このコマンドLinkPI()以降に記述されるコマンドは、実行されない。この隠しボタン408が選択状態にされると、自動的に実行状態に遷移し、隠しボタン409を有効状態として、コマンドLinkPI()で指定されたプレイアイテムに再生位置を変更する。
隠しボタン409は、フラグauto_action_flagの値が"1b"とされ、オートアクションボタンに定義される。また、隠しボタン408により実行されるコマンドnavigation_command()の部分に、例えば次のようにコマンドを記述する。
EnableButton(#2);
PopUpMenuOFF;
なお、コマンドPopUpMenuOFFは、ポップアップメニューを終了させるコマンドである。背景技術の項で既に説明したように、このコマンドPopUpMenuOFF以降に記述されるコマンドは、実行されない。この隠しボタン409が選択状態にされると、自動的に実行状態に遷移し、ボタン406Aを有効状態として、ポップアップメニューを終了させる。
この図28に例示されるように構成されたポップアップメニューの一例の動作について、図29〜図31を用いて説明する。図29は、ボタン406Aに対するチャプタジャンプを指示する操作が行われてから、ポップアップメニューがOFFとされるまでの一例の処理を示すフローチャートである。図30および図31は、図29のフローチャートに対応する、ポップアップメニューの状態の変化の例を示す。なお、図30および図31において、上述の図28と共通する部分には同一の符号を付し、詳細な説明を省略する。
図30Aに例示されるように、メニュー表示421は、ポップアップメニューとして定義され、メインパスの動画データによる映像420と合成して表示される。さらに、メニュー表示421に表示されるボタン405、406Aおよび407は、それぞれチャプタジャンプ先における代表的なシーンによるサムネイル画像がボタン画像として用いられている。また、ボタン406Bは、ボタン406Aのボタン画像が多少変更されて用いられ、ボタン406Aのボタン画像に対して恰も選択状態を示すボタン画像の如くされている。図30の例では、ボタン406Aのボタン画像に対して、ボタン406Bのボタン画像において枠が太くされている。
なお、隠しボタン408および409は、実際には表示されないが、図30および図31では、説明のため、点線で囲って示してある。また、ボタン406は、図29ではシーン#2のボタンとして記述され、隠しボタン408および409は、図29では、それぞれ隠しボタン#4および隠しボタン#5として記述されている。
図29のフローチャートにおいて、ステップS10で、シーン#2へのチャプタジャンプを行うために、例えばリモートコントロールコマンダの十字キーや決定キーが操作され、ボタン406Aが通常状態から選択状態に遷移され、さらに選択状態から実行状態に遷移される。
ボタン406Aが実行状態に遷移されると、当該ボタン406Aに関連付けられたコマンドが実行される。すなわち、ステップS11で、コマンドEnableButton(#2−2)により、ボタン406Bが有効状態とされ、ボタン406Bの選択状態のボタン画像が表示される。次に、ステップS12で、コマンドSetButtonPage(#4)により隠しボタン408が選択状態とされる。ステップS11およびステップS12が実行された際の、一例のメニュー表示421を図30Bに示す。
隠しボタン408は、フラグauto_action_flagが値"1b"とされ、オートアクションボタンとして定義されているので、選択状態になると自動的に実行状態に遷移され、隠しボタン408に関連付けられたコマンドが自動的に実行される。すなわち、ステップS13でコマンドEnableButton(#5)により隠しボタン409が有効とされ、ステップS14で、コマンドLinkPI(目的のシーン)により指定されるプレイアイテムに再生位置が変更される。
なお、隠しボタン408および409は、ユーザのリモートコントロールコマンダなどの操作により選択されないように設定される。例えば、ブロックbutton()内のブロックneighbor_info()において、これら隠しボタン408および409のIDを記述しない。
ここで、コマンドEnableButton(#5)により隠しボタン409が有効状態とされると、上述したコマンドEnableButton()の性質により、隠しボタン409が選択状態とされる。すなわち、隠しボタン408および隠しボタン409は、同じBOG410に属し、コマンドLinkPI(目的のシーン)が実行されるまでにコマンドにより他のボタンが選択されない場合、隠しボタン409が選択状態とされる。この様子を図30Cに示す。
ステップS14のコマンドLinkPI(目的のシーン)により実際に再生位置が変更されるのを待って、処理がステップS15に移行される。ステップS15では、上述のステップS13で選択状態とされた隠しボタン409が、オートアクションボタンの定義に従い自動的に実行状態に遷移され、隠しボタン409に関連付けられたコマンドEnableButton(#2)が実行される。これにより、図31Aに例示されるように、ボタン406Aが有効状態とされボタン406Aに対応するボタン画像が表示される。そして、隠しボタン409において、コマンドEnableButton(#2)の次に記述されるコマンドPopUpMenuOFFが実行され、ポップアップメニューであるメニュー表示421の表示が消去され、図31Eに例示されるように、コマンドLinkPI(目的のシーン)により指定されたプレイアイテムによるメインパスの映像420’のみが表示される。
このようにして、コマンドEnableButton()における、上述した(2)の、当該ボタン自身が含まれるBOGの、別のボタンをコマンドEnableButton()で有効状態にした場合の性質を利用して、コマンドLinkPI()の実行後にポップアップメニューをOFFとするアプリケーションが実現できる。
なお、上述の例では、ステップS12で、コマンドSetButtonPage()を用いて隠しボタン408を選択状態としている。コマンドSetButtonPage()は、無効状態のボタンであっても、選択状態に遷移させることができる。一方、プレーヤの実装によっては、前回の実行によって隠しボタン409が有効状態にあり、隠しボタン408が無効状態とされている場合も有り得る。そのため、コマンドSetButtonPage()を用いて、隠しボタン408を一意に有効状態としている。
また、上述の例では、ICSにおいて、ポップアップメニューであるメニュー表示421を表示させるページ#0に対し、ブロックpage()のフィールドdefault_selected_button_id_refにより予めデフォルトで選択状態にあるボタンを指定している。こうすることで、上述の手順でポップアップメニューをOFFとした後、再びこのポップアップメニューがONとされた際に、隠しボタン409が選択状態になっている状態を回避できる。
さらに、上述のステップS14においてコマンドLinkPI()で指定できるプレイアイテムは、現在再生中のプレイリストから参照されるプレイアイテムに限られる。これは、あるプレイリストが再生される際に、当該プレイリストに関連するIGストリームが全てディスクから読み出されてプレーヤにロードされ、再生するプレイリストが変更されると、ロードされたIGストリームをメモリ上から破棄してから、新たなIGストリームをロードするようになっているからである。
さらにまた、上述では、隠しボタン408により、コマンドEnableButton()の後に実行されるコマンドがコマンドLinkPI()として説明したが、これはこの例に限定されず、他のコマンドでもよい。また、上述では、隠しボタン408に対してコマンドEnableButton()とコマンドLinkPI()との2個のコマンドしか関連付けられていないが、これはこの例に限られない。すなわち、BD−ROM論理フォーマットにおいては、1のボタンに対して255個までコマンドを関連付けることができる。この実施の一形態においても同様に、コマンドEnableButton()を含めて最大で255個のコマンドを関連付けることができる。上述したコマンドEnableButton()の性質によれば、隠しボタン408に関連付けられた最大255個のコマンドは、全て実行され、その上で、コマンドEnableButton()により有効状態とされた隠しボタン409に関連付けられたコマンドが実行されることになる。これは、隠しボタン409についても同様である。
なお、上述では、以降に記述されるコマンドが実行されないコマンドとして、コマンドLinkPI()、コマンドPopUpMenuOFFおよびコマンドSetButtonPage()を例示したが、これはの例に限定されない。例えば、ストリームを切り換えるコマンドSetStream()も、以降に記述されるコマンドが実行されないコマンドである。
次に、この発明の実施の一形態に適用可能な再生装置について説明する。図32は、この発明の実施の一形態に適用可能な再生装置1の一例の構成を示す。再生装置1は、ストレージドライブ50、スイッチ回路51、AVデコーダ部52およびコントローラ部53を有する。ストレージドライブ50は、例えば、上述したBD−ROMを装填し再生可能とされているものとする。
コントローラ部53は、例えばCPU(Central Processing Unit)と、CPU上で動作されるプログラムが予め格納されたROM(Read Only Memory)、CPUによりプログラムの実行時にワークメモリとして用いられるRAM(Random Access Memory)などからなり、この再生装置1の全体的な動作を制御する。
また、図示は省略するが、再生装置1には、ユーザに対して所定の制御情報を提供すると共に、ユーザの操作に応じた制御信号を出力するようにされたユーザインターフェイスが設けられる。例えば、赤外線通信など所定の無線通信手段を介して再生装置1と遠隔的に通信を行うリモートコントロールコマンダがユーザインターフェイスとして用いられる。リモートコントロールコマンダ上には、上下左右方向をそれぞれ指示可能な十字キーといった方向キーや、数字キー、各種機能が予め割り当てられた機能キーなど、複数の入力手段が設けられる。なお、十字キーは、上下左右方向をそれぞれ指定可能であれば、形状は問わない。
リモートコントロールコマンダは、これらの入力手段に対してなされた操作に応じた制御信号を生成し、生成された制御信号を例えば赤外線信号に変調して送信する。再生装置1は、図示されない赤外線受信部においてこの赤外線信号を受信し、赤外線信号を電気信号に変換して復調し、元の制御信号を復元する。この制御信号がコントローラ部53に供給される。コントローラ部53は、この制御信号に応じて、プログラムに従い、再生装置1の動作を制御する。
ユーザインターフェイスは、リモートコントロールコマンダに限らず、例えば再生装置1の操作パネルに設けられたスイッチ群により構成することができる。また、再生装置1に、LAN(Local Area Network)などを介して通信を行う通信手段を設け、この通信手段を介して外部のコンピュータ装置などから供給された信号を、ユーザインターフェイスによる制御信号としてコントローラ部53に供給することも可能である。
また、当該再生装置1の言語設定の初期情報が、再生装置1が有する不揮発性メモリなどに記憶される。この言語設定の初期情報は、例えば再生装置1の電源投入時などにメモリから読み出され、コントローラ部53に供給される。
ストレージドライブ50にディスクが装填されると、コントローラ部53は、ストレージドライブ50を介してディスク上のファイルindex.bdmvやファイルMovieObject.bdmvを読み出し、読み出されたファイルの記述に基づきディレクトリ"PLAYLIST"内のプレイリストファイルを読み出す。コントローラ部53は、プレイリストファイルに含まれるプレイアイテムが参照するクリップAVストリームを、ディスクからストレージドライブ50を介して読み出す。また、コントローラ部53は、プレイリストがサブプレイアイテムを含む場合は、サブプレイアイテムにより参照されるクリップAVストリームやサブタイトルデータも、ディスクからストレージドライブ50を介して読み出す。
なお、以下では、サブプレイアイテムに対応するクリップAVストリームを、サブクリップAVストリームと呼び、サブプレイアイテムに対する主たるプレイアイテムに対応するクリップAVストリームを、メインクリップAVストリームと呼ぶ。
ストレージドライブ50から出力されたデータは、図示されない復調部およびエラー訂正部により復調処理およびエラー訂正処理を所定に施され、多重化ストリームが復元される。ここでの多重化ストリームは、PIDによりデータの種類や並び順などが識別され、所定サイズに分割され時分割多重されたトランスポートストリームである。この多重化ストリームは、スイッチ回路51に供給される。コントローラ部53は、例えばPIDに基づきスイッチ回路51を所定に制御してデータを種類毎に分類し、メインクリップAVストリームのパケットをバッファ60に供給し、サブクリップAVストリームのパケットをバッファ61に供給し、サウンドデータのパケットをサウンド出力部62に供給し、テキストデータのパケットをバッファ63に供給する。
バッファ60に溜め込まれたメインクリップAVストリームのパケットは、コントローラ部53の制御に基づきバッファ60からパケット毎に読み出され、PIDフィルタ64に供給される。PIDフィルタ64は、供給されたパケットのPIDに基づき、パケットを、ビデオストリームによるパケット、プレゼンテーショングラフィクスストリーム(以下、PGストリーム)によるパケット、インタラクティブグラフィクスストリーム(以下、IGストリーム)によるパケットおよびオーディオストリームによるパケットに振り分ける。
一方、バッファ61に溜め込まれたサブクリップAVストリームのパケットは、コントローラ部53の制御に基づきバッファ61からパケット毎に読み出され、PIDフィルタ90に供給される。PIDフィルタ90は、供給されたパケットのPIDに基づき、パケットを、ビデオストリームによるパケット、PGストリームによるパケット、IGストリームによるパケットおよびオーディオストリームによるパケットに振り分ける。
PIDフィルタ64により振り分けられたビデオストリームによるパケットと、PIDフィルタ90により振り分けられたビデオストリームによるパケットは、それぞれPIDフィルタ65に供給され、PIDに応じて振り分けられる。すなわち、PIDフィルタ65は、PIDフィルタ64から供給された、メインクリップAVストリームによるパケットを1stビデオデコーダ69に、PIDフィルタ90から供給された、サブクリップAVストリームによるパケットを2ndビデオデコーダ72に、それぞれ供給するように、パケットを振り分ける。
1stビデオデコーダ69は、供給されたパケットのペイロードからビデオストリームを所定に取り出し、取り出されたビデオストリームのMPEG2方式による圧縮符号を復号化する。1stビデオデコーダ69の出力は、1stビデオプレーン生成部70に供給され、ビデオプレーンが生成される。ビデオプレーンの生成は、例えばベースバンドのディジタルビデオデータの1フレームがフレームメモリに書き込まれることで生成される。1stビデオプレーン生成部70で生成されたビデオプレーンは、ビデオデータ処理部71に供給される。
2ndビデオデコーダ72および2ndビデオプレーン生成部73において、上述の1stビデオデコーダ69および1stビデオプレーン生成部70と略同様の処理がなされ、ビデオストリームが復号化されビデオプレーンが生成される。2ndビデオプレーン生成部73で生成されたビデオプレーンは、ビデオデータ処理部71に供給される。
ビデオデータ処理部71は、1stビデオプレーン生成部70で生成されたビデオプレーンと、2ndビデオプレーン生成部73で生成されたビデオプレーンとを、1つのフレームに例えば所定に嵌め込んで1枚のビデオプレーンを生成することができる。1stビデオプレーン生成部70で生成されたビデオプレーンと、2ndビデオプレーン生成部73で生成されたビデオプレーンとを、選択的に用いてビデオプレーンを生成してもよい。このビデオプレーンは、例えば上述の図9に例示した動画プレーン10に対応する。
PIDフィルタ64により振り分けられたPGストリームによるパケットと、PIDフィルタ90により振り分けられたPGストリームによるパケットは、それぞれスイッチ回路66に供給されて一方が所定に選択され、プレゼンテーショングラフィクスデコーダ74に供給される。プレゼンテーショングラフィクスデコーダ74は、供給されたパケットのペイロードからPGストリームを所定に取り出してデコードして字幕を表示するグラフィクスデータを生成し、スイッチ回路75に供給する。
スイッチ回路75は、このグラフィクスデータと、後述するテキストデータによる字幕データとを所定に選択し、プレゼンテーショングラフィクスプレーン生成部76に供給する。プレゼンテーショングラフィクスプレーン生成部76は、供給されたデータに基づきプレゼンテーショングラフィクスプレーンを生成し、ビデオデータ処理部71に供給する。このプレゼンテーショングラフィクスプレーンは、例えば上述の図9に例示した字幕プレーン11に対応する。
PIDフィルタ64により振り分けられたIGストリームによるパケットと、PIDフィルタ90により振り分けられたIGストリームによるパケットは、それぞれスイッチ回路67に供給されて一方が所定に選択され、インタラクティブグラフィクスデコーダ77に供給される。インタラクティブグラフィクスデコーダ77は、供給されたIGストリームによるパケットからIGストリームのICS、PDSおよびODSを所定に取り出してデコードする。例えば、インタラクティブグラフィクスデコーダ77は、供給されたパケットのペイロードからデータを取り出し、PESパケットを再構築する。そして、このPESパケットのヘッダ情報などに基づき、IGストリームのICS、PDSおよびODSをそれぞれ取り出す。デコードされたICSはおよびPDSは、CB(Composition Buffer)と呼ばれるバッファに格納される。また、ODSは、DB(Decoded Buffer)と呼ばれるバッファに格納される。例えば図32におけるプリロードバッファ78が、これらCBおよびDBに相当する。
なお、PESパケットは、再生出力に関する時間管理情報であるPTS(Presentation Time Stamp)と、復号化に関する時間管理情報であるDTS(Decoding Time Stamp)とを有している。IGストリームによるメニュー表示は、対応するPESパケットに格納されるPTSにより時間管理されて表示される。例えば、上述したプリロードバッファに格納されたIGストリームを構成する各データは、PTSに基づき所定の時間に読み出すように制御される。
プリロードバッファ78から読み出されたIGストリームのデータは、インタラクティブグラフィクスプレーン生成部79に供給され、インタラクティブグラフィクスプレーンが生成される。このインタラクティブグラフィクスプレーンは、例えば上述の図9に例示したグラフィクスプレーン12に対応する。
例えば、ユーザインターフェイスに設けられた入力手段に対する所定の操作に応じて、表示するボタンの状態が例えば選択状態から実行状態へと遷移したときには、インタラクティブグラフィクスデコーダ77は、ボタンの実行状態に関連付けられたボタン画像およびサウンドデータに基づき、当該ボタンの実行状態に関連付けられたボタン画像の表示制御を行う。
一例として、リモートコントロールコマンダに対して設けられた所定のキー操作により、ポップアップメニューの表示が指示された場合、再生中のプレイアイテムにポップアップメニューの表示が定義されていれば、関連するIGストリームのデータに基づきポップアップメニューをメインパスの動画データと合成して表示させるように制御する。例えば、インタラクティブグラフィクスデコーダ77は、CBに格納されたデコードされたICSから参照される、デコードされたPDSをCBから読み出すと共に、対応するデコードされたODSをDBから読み出し、ボタン画像を表示するためのデータを形成する。
また、インタラクティブグラフィクスデコーダ77は、CBに格納されたデコードされたICSから、各ボタンに関連付けられたナビゲーションコマンドを抽出する。抽出されたナビゲーションコマンドは、例えばコントローラ部53に渡される。コントローラ部53は、このナビゲーションコマンドに基づきこの再生装置1の各部を所定に制御する。上述した図29のフローチャートによる各処理は、例えばコントローラ部53により、ナビゲーションコマンドに基づきインタラクティブグラフィクスデコーダ77などが制御されて実現される。
ビデオデータ処理部71は、例えば図10を用いて説明したグラフィクス処理部を含み、供給されたビデオプレーン(図10における動画プレーン10)、プレゼンテーショングラフィクスプレーン(図10における字幕プレーン11)およびインタラクティブグラフィクスプレーン(図10におけるグラフィクスプレーン12)を、所定に合成して1枚の画像データとし、ビデオ信号にして出力する。
PIDフィルタ64により振り分けられたオーディオストリームと、PIDフィルタ90により振り分けられたオーディオストリームは、それぞれスイッチ回路68に供給される。スイッチ回路68は、供給された2つのオーディオストリームのうち一方を1stオーディオデコーダ80に、他方を2ndオーディオデコーダ81に供給するように、所定に選択する。1stオーディオデコーダ80および2ndオーディオデコーダ81でそれぞれデコードされたオーディオストリームは、加算器82で合成される。
サウンド出力部62は、バッファメモリを有し、スイッチ回路51から供給されたサウンドデータをバッファメモリに溜め込む。そして、例えばインタラクティブグラフィクスデコーダ77からの指示に基づき、バッファメモリに溜め込まれたサウンドデータをデコードし、出力する。出力されたサウンドデータは、加算器83に供給され、加算器82から出力されたオーディオストリームと合成される。サウンドデータの再生終了時刻は、例えば、サウンド出力部62からインタラクティブグラフィクスデコーダ77に対して通知される。なお、サウンドデータの再生と、ボタン画像の表示との協調的な制御は、より上位のコントローラ53の命令に基づき行うようにしてもよい。
バッファ63から読み出されたテキストデータは、Text−STコンポジション部で所定に処理され、スイッチ回路75に供給される。
上述では、再生装置1の各部がハードウェアで構成されるように説明したが、これはこの例に限られない。例えば、再生装置1をソフトウェア上の処理として実現することも可能である。この場合、再生装置1をコンピュータ装置上で動作させることができる。また、再生装置1をハードウェアおよびソフトウェアが混合された構成で実現することもできる。例えば、再生装置1における各デコーダ、特に、1stビデオデコーダ69、2ndビデオデコーダ72など処理の負荷が他と比べて大きな部分をハードウェアで構成し、その他をソフトウェアで構成することが考えられる。
再生装置1をソフトウェアのみ、または、ハードウェアおよびソフトウェアの混合により構成し、コンピュータ装置で実行させるためのプログラムは、例えばCD−ROM(Compact Disc-Read Only Memory)やDVD−ROM(Digital Versatile Disc Read Only Memory)といった記録媒体に記録されて提供される。この記録媒体をコンピュータ装置のドライブに装填し、記録媒体上に記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。プログラムをBD−ROMに記録することも考えられる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
次に、図33および図34を参照して、再生装置1において再生可能なディスクの一例の製造方法について説明する。図33に一例を示すように、例えばガラスなどよりなる原盤が用意され、その上に、例えばフォトレジストなどよりなる記録材料が塗布される。これにより、記録用原盤が製作される。
そして、図34に示すように、ソフト製作処理部において、符号化装置(ビデオエンコーダ)で符号化された、再生装置1において再生可能な形式のビデオデータが一時バッファに記憶され、オーディオエンコーダで符号化されたオーディオデータが一時バッファに記憶される。また、プレゼンテーショングラフィクスデータおよびインタラクティブグラフィクスデータがそれぞれ所定に符号化され、一時バッファに記憶される。さらに、データエンコーダで符号化された、ストリーム以外のデータ(例えば、インデックス、プレイリスト、プレイアイテムなど)が一時バッファに記憶される。
なお、インデックス、プレイリスト、プレイアイテムなどのストリーム以外のデータや、インタラクティブグラフィクスストリームを構成する、ICS、PDS、ODSなどのデータは、図示されないコンピュータ装置などで、例えばビデオデータやオーディオデータの情報を参照しつつ作成および編集され、データエンコーダに供給される。
それぞれのバッファに記憶されたビデオデータ、オーディオデータ、プレゼンテーショングラフィクスデータ、インタラクティブグラフィクスデータ、ならびに、ストリーム以外のデータは、多重化器(MPX)で同期信号と共に多重化され、誤り訂正符号回路(ECC)でエラー訂正用のコードが付加される。そして、変調回路(MOD)で所定の変調がかけられ、所定のフォーマットにしたがって、例えば磁気テープなどに一旦記録され、再生装置1において再生可能な記録媒体21に記録されるソフトウェアが製作される。
なお、ソフト製作処理部は、周知の構成のコンピュータ装置で構成することが可能で(図示しない)、所定のプログラムに従いCPUなどで全体の動作を制御することが可能である。プログラムは、例えばCD−ROMやDVD−ROMといった記録媒体に記録されて提供される。プログラムを記録した記録媒体をコンピュータ装置に所定に装填し、プログラムをコンピュータ装置のシステムに所定にインストールすることで、コンピュータ装置においてソフトウェア製作処理部を構成することができる。
このソフトウェアを必要に応じて編集(プリマスタリング)し、光ディスクに記録すべきフォーマットの信号が生成される。そして、この記録信号に対応して、レーザビームが変調されて、このレーザビームが原盤上のフォトレジスト上に照射される。これにより、原盤上のフォトレジストが記録信号に対応して露光される。
その後、この原盤を現像し、原盤上にピットを出現させる。このようにして用意された原盤に、例えば電鋳等の処理を施し、ガラス原盤上のピットを転写した金属原盤を製作する。この金属原盤から、さらに金属スタンパを製作し、これを成形用金型とする。
この成形用金型に、例えばインジェクションなどによりPMMA(アクリル)またはPC(ポリカーボネート)などの材料を注入し、固定化させる。あるいは、金属スタンパ上に2P(紫外線硬化樹脂)などを塗布した後、紫外線を照射して硬化させる。これにより、金属スタンパ上のピットを、樹脂よりなるレプリカ上に転写することができる。
このようにして生成されたレプリカ上に、反射膜が、蒸着あるいはスパッタリングなどにより形成される。あるいはまた、生成されたレプリカ上に、反射膜が、スピンコートにより形成される。
その後、このディスクに対して内外径の加工が施され、2枚のディスクを張り合わせるなどの必要な処置が施される。さらに、ラベルを貼り付けたり、ハブが取り付けられて、カートリッジに挿入される。このようにして再生装置1などによって再生可能なデータが記録されたディスクが完成する。