以下、この発明の実施の形態を、図面を参照しながら説明する。先ず、理解を容易とするために、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()の部分に、例えば次のようにコマンドを記述する。
EnableButton(3);
EnableButton(4);
EnableButton(5);
SetButtonPage(1,0,3,0,0);
これらのコマンドにおいて、コマンドEnableButton()は、括弧「()」内に示される値を値button_idとして定義されたボタンをイネーブル状態(有効状態)とすることを示す。コマンド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番目のプレゼンテーショングラフィクスストリームが選択され、字幕表示が英語による字幕に切り換えられる。
次に、この発明の実施の一形態について説明する。図19を用いて既に説明したように、実行状態のボタンに対して、ボタン画像とサウンドデータとを関連付けることができる。この発明では、実行状態のボタンに対して実行状態を示す1枚のボタン画像のみが関連付けられ、他のオブジェクトが関連付けられていない場合の、当該実行状態を示すボタン画像の表示制御方法を与える。
図27は、この実施の一形態による、ボタンが実行状態になった際の表示制御の例を、ボタンの実行状態に対して関連付けられたオブジェクトにより分類して示す。ボタンは、実行状態に遷移してから、この図27に示した何れかの制御に基づき表示を行った後に、ナビゲーションコマンドの実行がなされる。
ボタンの実行状態に対して複数のボタン画像すなわちアニメーションが関連付けられ、且つ、サウンドデータが関連付けられている場合、アニメーションの再生が終了し、且つ、サウンドデータの再生が終了してから、ナビゲーションコマンドが実行される。ボタンの実行状態に対してアニメーションが関連付けられ、且つ、サウンドデータが関連付けられていない場合、アニメーションの表示が終了してからナビゲーションコマンドが実行される。
ボタンの実行状態に対してボタン画像が1枚のみ、関連付けられ、且つ、サウンドデータが関連付けられている場合、サウンドデータの再生が終了してからナビゲーションコマンドが実行される。
ボタンの実行状態に対してボタン画像が1枚のみ、関連付けられ、且つ、サウンドデータが関連付けられていない場合に、この発明の実施の一形態に特有の表示制御がなされる。この場合、当該ボタンに定義されるナビゲーションコマンドの内容と、当該ボタンに定義されるフラグauto_action_flagの値とに基づき、異なる処理とされる。
すなわち、当該ボタンに定義されるナビゲーションコマンドが、メニュー表示のページの切り換えを伴うコマンドである場合、または、当該ボタンに定義されるフラグauto_action_flagが、ボタンが選択状態になったときに、当該ボタンに割り当てられた機能が自動的に実行される、オートアクションボタンであることを示す場合に、実行状態のボタン画像が1フレーム期間だけ表示されるように制御され、その後、ナビゲーションコマンドが実行される。なお、フラグauto_action_flagによりオートアクションボタンと定義されたボタンは、選択状態になった際に、自動的に実行状態に遷移するものと考える。
一方、ボタンの実行状態に対してボタン画像が1枚のみ、関連付けられ、且つ、サウンドデータが関連付けられていない場合で、当該ボタンに定義されるナビゲーションコマンドがメニュー表示のページ切り換えを伴うコマンドではなく、且つ、当該ボタンがオートアクションボタンと定義されていない場合には、実行状態のボタン画像は、当該ボタンが実行状態であることを明示的に提示可能な所定時間の間、表示され、その後、ナビゲーションコマンドが実行される。
一例として、所定時間を500msec程度とすることで、当該ボタンが実行状態であることがユーザに対して明示的に示されると共に、ユーザによる操作の流れを妨げないと考えられる。勿論、この所定時間は500msecに限られず、当該ボタンが実行状態であることがユーザに対して明示的に示されると共に、ユーザによる操作の流れを妨げないという所期の目的を解決し得る長さであれば、他の長さでもよい。
ボタンの実行状態に対してボタン画像が関連付けられていない場合には、透明なボタン画像が表示される。当該ボタンにサウンドデータが関連付けられている場合には、サウンドデータの再生終了後にナビゲーションコマンドが実行される。実行状態のボタンに対してボタン画像およびサウンドデータの何れも関連付けられていない場合には、透明なボタン画像が1フレーム期間だけ表示され、その後、ナビゲーションコマンドが実行される。なお、透明なボタン画像は、例えばボタン画像の不透明度α=0とすることで、実現可能である。
このように、この発明の実施の一形態によれば、ボタンの実行状態に対してボタン画像が1枚のみ、関連付けられ、且つ、サウンドデータが関連付けられていない場合で、当該ボタンに定義されるナビゲーションコマンドがメニュー表示のページ切り換えを伴うコマンドではなく、且つ、当該ボタンがオートアクションボタンと定義されていない場合に、当該ボタンの実行状態に関連付けられた1のボタン画像が当該ボタンが実行状態であることを明示的に提示可能な所定時間の長さで表示されるようにしている。そのため、ユーザは、当該ボタンが実行状態であることを容易に認識できる。
すなわち、この発明の実施の一形態によれば、ボタンの実行状態に対してボタン画像が1枚のみ、関連付けられ、且つ、サウンドデータが関連付けられていない場合で、当該ボタンに定義されるナビゲーションコマンドがメニュー表示のページ切り換えを伴うコマンドではなく、且つ、当該ボタンがオートアクションボタンと定義されていない場合であっても、当該ボタンの実行状態の表示が適切になされる。
図28は、上述したような、この発明の実施の一形態によるボタンの表示制御を行う一例の方法を示すフローチャートである。この図28のフローチャートの処理は、図20を用いて説明したインタラクティブグラフィクスのデコーダモデルにおいては、CB113に溜め込まれたシンタクスに基づくグラフィクスコントローラ114の制御によりなされる。
メニュー表示において、あるボタンが実行状態に遷移すると(ステップS10)、ステップS11で、当該ボタンの実行状態に対して関連付けられているボタン画像が調べられ、当該ボタンの実行状態に対して複数のボタン画像が関連付けられているか、1のボタン画像のみが関連付けられているか、若しくは、ボタン画像が関連付けられていないかによって、処理が分岐される。
例えば、CB113に格納されたデコードされたICSにおいてブロックbutton()が参照され(図19参照)、このブロックbutton()内のブロックactivated_state_info()が検索され、フィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refの値が取得される。これらフィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refの値に基づき、当該ボタンの実行状態に対して複数のボタン画像が関連付けられているか、1のボタン画像のみが関連付けられているか、若しくは、ボタン画像が関連付けられていないかを判断することができる。
すなわち、フィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refの値が一致していれば、当該ボタンの実行状態に対して1のボタン画像のみが関連付けられていると判断される。フィールドactivated_start_object_id_refが有効なボタン画像を示しており、フィールドactivated_end_object_id_refが値〔0xFFFF〕の場合にも、当該ボタンの実行状態に対して1のボタン画像のみが関連付けられていると判断してもよい。一方、フィールドactivated_start_object_id_refが値〔0xFFFF〕であり、フィールドactivated_end_object_id_refの値が有効なボタン画像を示していれば、当該ボタンの実行状態に対してボタン画像が関連付けられていないと判断できる。さらに、フィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refの値が互いに異なる有効なボタン画像を示している場合には、当該ボタンの実行状態に対して、複数のボタン画像が関連付けられていると判断できる。
なお、詳細は後述するが、上述のステップS10の段階で、当該ボタンに関連付けられたナビゲーションコマンドが予め読み込まれる。
若し、ステップS11で、当該ボタンの実行状態に対して複数のボタン画像が関連付けられていると判断されれば、処理はステップS12に移行され、当該ボタンの実行状態に対してサウンドデータがさらに関連付けられているか否かが判断される。例えば、上述と同様にして、CB113に格納されたデコードされたICSにおいてブロックbutton()が参照され、このブロックbutton()内のブロックactivated_state_info()が検索され、フィールドactivated_state_sound_id_refの値が取得される。このフィールドactivated_state_sound_id_refの値に基づき、当該ボタンの実行状態に対してサウンドデータが関連付けられているか否かを判断することができる。
若し、当該ボタンの実行状態に対してサウンドデータがさらに関連付けられていると判断されれば、処理はステップS13に移行される。ステップS13では、当該ボタンの実行状態に対して関連付けられた複数のボタン画像によるアニメーション表示が行われると共に、サウンドデータが再生される。そして、これらアニメーション表示およびサウンドデータの再生が終了するのを待って、当該ボタンに関連付けられたナビゲーションコマンドが実行される。
一例として、グラフィクスコントローラ114は、CB113に格納されたデコードされているICSから参照される、デコードされているPDSをCB113から読み出すと共に、対応するデコードされているODSをDB112から読み出し、ボタン画像を表示するためのデータを形成する。そして、グラフィクスコントローラ114は、このボタン画像データを、ICSのブロックpage()に記述されるアニメーションの設定に基づき所定に表示制御してグラフィクスプレーン103に書き込み、アニメーション表示を行う。また、グラフィクスコントローラ114は、サウンドデータの再生を制御するサウンドコントローラ(図示しない)とやりとりを行い、サウンドデータの再生終了を検出する。グラフィクスコントローラ114およびサウンドコントローラを制御するより上位のコントローラからの制御信号などに基づき、アニメーション表示およびサウンドデータの再生終了を判断することもできる。
一方、ステップS12で、当該ボタンの実行状態に対してサウンドデータが関連付けられていないと判断されれば、処理はステップS14に移行される。ステップS14では、当該ボタンの実行状態に対して関連付けられた複数のボタン画像によるアニメーション表示が行われる。このアニメーション表示が終了するのを待って、当該ボタンに関連付けられたナビゲーションコマンドが実行される。
上述のステップS11において、当該ボタンの実行状態に対して1のボタン画像が関連付けられていると判断されれば、処理はステップS15に移行され、当該ボタンの実行状態に対してサウンドデータがさらに関連付けられているか否かが判断される。若し、サウンドデータがさらに関連付けられていると判断されれば、処理はステップS16に移行され、当該サウンドデータが再生される。そして、このサウンドデータの再生が終了するのを待って、当該ボタンに関連付けられたナビゲーションコマンドが実行される。
一方、ステップS15で、当該ボタンの実行状態に対して1のボタン画像が関連付けられ、且つ、当該ボタンの実行状態に対してサウンドデータが関連付けられていないと判断されれば、処理はステップS17に移行される。ステップS17では、当該ボタンに定義されるナビゲーションコマンドが、当該ボタンがオートアクションボタンとして定義されているか、若しくは、メニュー表示のページの切り換えを伴うコマンドであるかの何れかであるか否かが判断される。
当該ボタンがオートアクションボタンとして定義されているか否かは、図19に例示される、当該ボタンのブロックbutton()におけるフラグauto_action_flagを参照することで行う。
また、当該ボタンがメニュー表示のページの切り換えを伴うコマンドであるか否かは、当該ボタンの状態が実行状態になった時点で、図19に例示される、当該ボタンのブロックbutton()における終端側の、ボタンの実行状態を定義するブロックactivated_state_info()より後ろに記述されるナビゲーションコマンド(コマンドnavigation_command())を予め読み込むことで、可能とされる。この例では、上述したように、ステップS10の段階で、当該ナビゲーションコマンドが予め読み込まれている。ナビゲーションコマンドは、グラフィクスコントローラ114が読み込んでもよいし、グラフィクスコントローラ114の上位のコントローラが読み込み、グラフィクスコントローラ114に対して情報を渡すようにしてもよい。
若し、ステップS17で、当該ボタンがオートアクションボタンとして定義されているか、若しくは、当該ボタンに定義されるナビゲーションコマンドが、メニュー表示のページの切り換えを伴うコマンドであると判断されれば、処理はステップS18に移行される。ステップS18では、実行状態のボタン画像が1フレーム期間だけ表示されるように制御され、その後、ナビゲーションコマンドが実行される。
一方、ステップS17で、当該ボタンに定義されるナビゲーションコマンドが、メニュー表示のページの切り換えを伴うコマンドではなく、且つ、当該ボタンがオートアクションボタンとして定義されていないと判断されれば、処理はステップS19に移行される。ステップS19では、当該ボタンに関連付けられた1のボタン画像が所定時間(例えば500msec)表示され、当該ボタン画像がユーザに対して明示的に提示されてから後に、ナビゲーションコマンドが実行される。
上述のステップS11において、当該ボタンの実行状態に対してボタン画像が関連付けられていないと判断されると、処理はステップS20に移行され、当該ボタンの実行状態に対してサウンドデータがさらに関連付けられているか否かが判断される。若し、サウンドデータがさらに関連付けられていると判断されれば、処理はステップS21に移行され、透明なボタン画像が表示されると共に、当該サウンドデータが再生される。そして、このサウンドデータの再生が終了するのを待って、当該ボタンに関連付けられたナビゲーションコマンドが実行される。
一方、ステップS20で、当該ボタンの実行状態に対してサウンドデータが関連付けられていないと判断されれば、処理はステップS22に移行され、透明なボタン画像が1フレーム期間だけ、表示され、当該ボタンに関連付けられたナビゲーションコマンドが実行される。
次に、この発明の実施の一形態に適用可能な再生装置について説明する。図29は、この発明の実施の一形態に適用可能な再生装置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)と呼ばれるバッファに格納される。例えば図29におけるプリロードバッファ78が、これらCBおよびDBに相当する。
なお、PESパケットは、再生出力に関する時間管理情報であるPTS(Presentation Time Stamp)と、復号化に関する時間管理情報であるDTS(Decoding Time Stamp)とを有している。IGストリームによるメニュー表示は、対応するPESパケットに格納されるPTSにより時間管理されて表示される。例えば、上述したプリロードバッファに格納されたIGストリームを構成する各データは、PTSに基づき所定の時間に読み出すように制御される。
プリロードバッファ78から読み出されたIGストリームのデータは、インタラクティブグラフィクスプレーン生成部79に供給され、インタラクティブグラフィクスプレーンが生成される。このインタラクティブグラフィクスプレーンは、例えば上述の図9に例示したグラフィクスプレーン12に対応する。
例えば、ユーザインターフェイスに設けられた入力手段に対する所定の操作に応じて、表示するボタンの状態が例えば選択状態から実行状態へと遷移したときには、インタラクティブグラフィクスデコーダ77は、この発明の実施の一形態による、図27および図28を用いて説明した処理により、ボタンの実行状態に関連付けられたボタン画像およびサウンドデータに基づき、当該ボタンの実行状態に関連付けられたボタン画像の表示制御を行う。
例えば、ICSにおける、図19で説明したブロックbutton()中のフィールドactivated_start_object_id_refおよびフィールドactivated_end_object_id_refの値に基づき、当該ボタンの実行状態に対して複数のボタン画像が関連付けられているか、1のボタン画像が関連付けられているか、ボタン画像が関連付けられていないかが判断され、さらに、サウンドデータが関連付けられているか否かが判断される。また、当該ボタンに関連付けられたナビゲーションコマンドが予め読み込まれ、メニュー表示のページを切り換える処理を伴うコマンドであるか否かを判断する。これらの判断結果に基づき、当該ボタンの実行状態に関連付けられたボタン画像を、アニメーション表示するか、1フレーム期間だけの表示とするか、ユーザに対してボタンの実行状態を明示的に提示可能な所定時間(例えば500msec)の表示とするかを判断する。
ビデオデータ処理部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に記録することも考えられる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。