以下、この発明の実施の形態を、図面を参照しながら説明する。先ず、理解を容易とするために、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の例では、クリップ300は、プレイリスト310のプレイアイテム320から参照されると共に、プレイリスト311を構成するプレイアイテム321および322のうちプレイアイテム321から、IN点およびOUT点で示される区間が参照される。また、クリップ301は、プレイリスト311のプレイアイテム322からIN点およびOUT点で示される区間が参照されると共に、プレイリスト312のプレイアイテム323および324のうち、プレイアイテム323のIN点およびOUT点で示される区間が参照される。
なお、プレイリストは、図5に一例が示されるように、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応するサブパスを持つことができる。サブプレイアイテムは、例えば、このプレイリストに付けられているアフレコオーディオ用のプレイアイテムである。詳細は省略するが、プレイリストは、所定の条件を満たす場合にだけ、サブプレイアイテムを持つことができる。
次に、"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と称する。
動画プレーン10、字幕プレーン11およびインタラクティブグラフィクスプレーン12は、それぞれ独立して表示が可能とされ、例えば、図10に一例が示されるような解像度および表示可能色を有する。動画プレーン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方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
図11は、上述の図9および図10に従い3つのプレーンを合成するグラフィクス処理部の一例の構成を示す。動画プレーン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から出力される。
図12は、パレット22Aの入出力データの一例を示す。パレット22Aは、例えばPNG形式のファイルに対応したパレット情報がテーブルとして格納される。パレット22Aは、入力された8ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ8ビットのデータからなるRGB(4:4:4)のデータが出力される。それと共に、パレット22Aでは、不透明度を表すアルファチャンネルのデータαが取り出される。
図13は、パレット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の背景として表示することができる。
なお、この図11に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。
次に、図14を用いて、プレゼンテーショングラフィクス(PG)ストリームについて説明する。上述したように、PGストリームは、字幕を表示させるための字幕画像データによるストリームである。PGストリームは、クリップAVストリームに含まれ、1または複数のディスプレイセット(DisplaySet)からなるエポック(epoch)を単位として構成される。ディスプレイセットおよびエポックは、MPEG2(Moving Pictures Experts Group 2)で定義されるピクチャおよびGOP(Group Of Picture)にそれぞれ例えることができる。
すなわち、ディスプレイセットは、字幕表示上の最小単位であって、1枚の字幕画像に対応する。1または複数のディスプレイセットによりエポックが構成される。エポックは、一般的には、プレイアイテムに対応した単位で構成される。すなわち、あるプレイアイテムの再生中に表示される字幕を表示するためのディスプレイセットによりエポックが構成される。PGストリームをデコードするPGデコーダは、字幕プレーン11および各種のバッファをエポックの単位でクリアする。
実際には、エポックは、プレイアイテム単位に限らず、オーサリング側で任意に構成することができる。例えば、映画などにおいて一連の台詞に対応する複数の字幕のそれぞれを表示する複数のディスプレイセットによりエポックが構成される。また例えば、1つの台詞を文字毎に分解し、分解された文字それぞれを字幕として表示する複数のディスプレイセットによりエポックを構成することもできる。換言すれば、エポックは、オーサリング側の都合により定義される単位であって、技術的な根拠に基づき定義された単位ではないといえる。
図15は、ディスプレイセットの構成を概略的に示す。ディスプレイセットは、図15に示されるように、PCS(Presentation Composition Segment)、WDS(Window Definision Segment)、PDS(Palette Definition Segment)およびODS(Object Definition Segment)の4種類のセグメントから構成される。すなわち、1枚の字幕を表示するためには、これら4種類のセグメントが必要とされる。詳細は後述するが、PCSは、字幕の基本情報が格納される。WDSは、ウィンドウと呼ばれる字幕を表示する表示枠を定義する。WDSは、エポック内で変化しない。PDSは、字幕の色情報を定義するもので、例えばインデックス化された色情報テーブルを内包する。また、ODSは、字幕の形状情報を保持するもので、例えば字幕を表示するためのビットマップデータが、ランレングス圧縮など所定の圧縮符号化方式で圧縮符号化されて格納される。
図16は、ディスプレイセットに関する論理的な構造を概略的に示す。図16Aおよび図16Bに例示されるように、PCS、WDS、PDSおよびODSの4種類のセグメントが集まって、1つのディスプレイセットを構成する。1つのディスプレイセットは、PCS、WDS、PDSおよびODSから構成される。PCSは、ディスプレイセット中に必ず1だけ存在する。WDSは、殆どの場合、ディスプレイセット中に1つだけ存在する。但し、後述するPCS中に定義されるフラグpalette_up_date_flagの値が"1"の場合は、WDSは、オプションである。PDSおよびODSは、オプションであって、ディスプレイセット中に存在しない場合もあり得る。
図16Cに例示されるように、1または複数のディスプレイセットから、エポックが構成される。ここで、詳細は後述するが、PCSのフィールドcomposition_stateには、エポックスタートディスプレイセット(Epoch Start DisplaySet)を定義することができる。エポックは、エポックスタートディスプレイセットがPCSに定義されるディスプレイセットから、次のエポックスタートディスプレイセットがPCSに定義されるディスプレイセットの1つ前のディスプレイセットまでのディスプレイセットが集まったものである。図16Dに例示されるように、プレゼンテーショングラフィクスストリーム(PGストリーム)は、1または複数のエポックが含まれる。
図17は、上述したようなディスプレイセットの一例の格納形式を示す。既に説明したように、字幕を表示するためのディスプレイセットは、プレゼンテーショングラフィクスストリームとして、クリップAVストリームに多重化される。ディスプレイセットは、PCS、WDS、PDSおよびODSである4種類のセグメントから構成される(図17A)。
ディスプレイセットを構成する4種類のセグメントは、図17Bに一例が示されるように、それぞれヘッダ情報により区別されてPES(Packetized Elementary Stream)パケットのペイロードに格納される。4種類の各セグメントは、基本的に、それぞれ1個のPESパケットに格納される。PESパケットのそれぞれには、ペイロードに格納されたデータがPCS、WDS、PDSおよびODSのうち何れであるかの情報や、パケット毎の順番などを示す識別情報がPESヘッダに格納される。
また、PESヘッダには、このPESパケットのデコード時刻を指定するDTS(Decoding Time Stamp)と、デコードされたデータが出力される時刻を指定するPTS(Presantation Time Stamp)とが格納される。すなわち、PESパケットのペイロードに格納されたデータは、MPEGシステムズにより規定される基準復号器内部のSTC(System Time Clock)がDTSに一致したときに、デコードが開始され、STCがPTSに一致したときに、デコードされたデータが出力される。PTSおよびDTSは、そのPESパケットのペイロードに所定のアクセスユニットの先頭が含まれている場合に、PESヘッダに付加される。
PESパケットのそれぞれは、さらに所定に分割され、MPEG TS(トランスポートストリーム)によるトランスポートパケットに詰め込まれる(図17C)。トランスポートパケット毎の順序や、トランスポートパケットに格納されたデータを識別する識別情報などがPID(Packet Identification)に格納される。
図18は、PCSの一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるC言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
ブロックsegment_descriptor()は、フィールドsegment_typeおよびフィールドsegment_lengthからなる(図示しない)。フィールドsegment_typeは、このセグメントの種類を示す。フィールドsegment_typeの値が「0x16」で、このセグメントがPCSであることが示される。なお、値の記述において「0x」は、16進表記であることを示す。フィールドsegment_lengthは、このフィールドsegment_length以降のこのセグメントの長さを示す。
ブロックvideo_descriptor()は、フィールドvideo_width、フィールドvideo_heightおよびフィールドframe_rateからなる(図示しない)。フィールドvideo_widthおよびフィールドvideo_heightは、このPCSが含まれるディスプレイセットにより表示される字幕と同時に再生される動画像の画枠を示す。また、フィールドframe_rateは、当該動画像のフレームレートを示す。
ブロックcomposition_descriptor()は、フィールドcomposition_numberおよびフィールドcomposition_stateからなる(図示しない)。フィールドcomposition_numberは、このPCSのエポック内での順番を示す。フィールドcomposition_stateは、このPCSが含まれるディスプレイセットの種類を示す。
ディスプレイセットの種類について、概略的に説明する。ディスプレイセットは、エポックスタートディスプレイセット(Epoch Start DisplaySet)、エポックコンティニューディスプレイセット(Epoch Continue DisplaySet)、アキュジションポイントディスプレイセット(Acquisition Point DisplaySet)およびノーマルケースディスプレイセット(Normal Case DisplaySet)の4種類が定義される。
エポックスタートディスプレイセットは、エポックの先頭のディスプレイセットである。エポックコンティニューディスプレイセットは、エポックがプレイアイテムを跨ぐ場合に用いられるもので、例えばエポックがプレイアイテム#1と次のプレイアイテム#2とに跨っている場合に、プレイアイテム#2の先頭にエポックコンティニューディスプレイセットが設けられる。
アキュジションポイントディスプレイセットは、字幕のデコードに関し、安全なデコード開始点を意味する。すなわち、プレーヤにおいて、ランダムアクセスが行われた場合、アクセス先がエポックの途中になる可能性が高い。そこで、プレーヤは、ランダムアクセス後、ストリームをデコードし再生していく中で、アキュジションポイントディスプレイセットを発見すると、そこから字幕のデコードを開始し字幕表示を行う。
ノーマルケースディスプレイセットは、字幕のデコードに関し、安全なデコード開始点ではないディプレイセットを意味する。例えば、他のディスプレイセットにより表示中の字幕の色や形状を変更したい場合に、変更の内容を記述したディスプレイセットをノーマルケースディスプレイセットに設定する。プレーヤは、字幕のデコードおよび再生中にこのノーマルケースディスプレイセットを発見すると、その内容に従い、現在表示中の字幕の色や形状などを変更する。
PCSのシンタクスの説明に戻り、フィールドpalette_update_flagは、パレットの更新が行われるか否かを示すフラグである。フィールドpalette_id_refは、このディスプレイセットにより表示される字幕1画面が参照するパレットのIDを示す。すなわち、このフィールドpalette_id_refにより、PGストリームにおけるPDS中の色情報が参照される。
フィールドnumber_of_composition_objectsは、このディスプレイセットにより表示される字幕1画面上に存在するオブジェクトの数を示す。このフィールドnumber_of_composition_objectsで示される回数だけ、次のfor文によるループが繰り返され、ブロックcomposition_object()により、このディスプレイセットにより表示されるオブジェクト毎の定義がなされる。
図19は、ブロックcomposition_object()の一例の構造を表すシンタクスを示す。フィールドobject_id_refは、このブロックcomposition_object()による字幕表示に用いるODSに対する参照を示す。フィールドwindow_id_refは、このブロックcomposition_object()による字幕表示に用いるオブジェクトが表示されるウィンドウのIDを示す。
フィールドobject_cropped_flagは、このブロックcomposition_object()による字幕表示に用いるオブジェクトがクロップされるか否かを示すフラグである。すなわち、字幕表示は、ODSに保持されるサイズから所定サイズを切り出して表示することができる。フラグobject_cropped_flagがクロップすることを示していれば、後述するクロップサイズを示す情報に基づき切り取られた字幕が表示される。
フィールドforced_on_flagは、このブロックcomposition_object()による字幕表示が、ユーザオペレーションによる字幕表示ON/OFFの指示に関わらず強制的に表示されるか否かを示す。
フィールドcomposition_object_horizontal_positionおよびフィールドcomposition_object_vertical_positionは、それぞれこのブロックcomposition_object()による字幕表示の画面上の水平位置および垂直位置を示す。この水平位置および垂直位置は、例えば後述するWDSに示されるウィンドウの位置情報に対する相対位置で示される。
上述のフィールドobject_cropped_flagに示されるフラグの値がオブジェクトがクロップされることを示す値であれば、次のif(object_cropped_flag==1b)以下の記述がなされ、字幕を切り出す位置やサイズが指定される。すなわち、ブロックcropping_rectangle()内のフィールドobject_cropping_horizontal_positionおよびフィールドobject_cropping_vertical_positionにより、切り出す原点の水平位置および垂直位置が示され、フィールドobject_cropping_widthおよびフィールドobject_cropping_heightにより切り出す幅および高さが示される。
図20は、WDSの一例の構造を表すシンタクスを示す。ブロックsegment_descriptor()は、フィールドsegment_typeとフィールドsegment_lenghtとからなる(図示しない)。フィールドsegment_typeは、このセグメントの種類を示す。フィールドsegment_typeの値が「0x17」で、このセグメントがWDSであることが示される。フィールドsegment_lengthは、このフィールドsegment_length以降のこのセグメントの長さを示す。
フィールドnumber_of_windowsは、このWDSが含まれるディスプレイセットにより表示される字幕1画面に存在するウィンドウの数を示す。このフィールドnumber_of_windowsで示される数だけ、次のfor文によるループが繰り返され、ブロックwindow()によりウィンドウ毎の定義がなされる。
図21は、ブロックwindow()の一例の構造を表すシンタクスを示す。フィールドwindow_idは、このウィンドウのIDを示す。フィールドwindow_horizontal_positionおよびフィールドwindow_vertical_positionは、このウィンドウの画面の原点に対する水平位置および垂直位置を示す。フィールドwindow_widthおよびフィールドwindow_heigthは、このウィンドウの幅および高さを示す。
次に、図22を用いて、現時点のBD−ROM規格に定義されるプレゼンテーショングラフィクスデータのデコーダモデルについて説明する。このデコーダモデルにおいて、プレゼンテーショングラフィクスストリームは、TSパケットの形態で供給される。TSパケットは、PIDフィルタ100に供給されてPIDが解析され、プレゼンテーショングラフィクスデータを格納するTSパケットが選択されて、トランスポートバッファ(TB)101に溜め込まれる。そして、TB101上でTSパケットのペイロードに格納されているデータが取り出され、PIDに基づきPESパケットが再構築される。すなわち、この段階で、TSパケットに分割されていた各セグメントPCS、WDS、PDSおよびODSがそれぞれ統合されることになる。
各セグメントによるPESパケットは、プレゼンテーショングラフィクスデコーダ(以下、PGデコーダ)102に供給され、CDB(Coded Data Buffer)110に一旦格納される。そして、STCに基づきPESパケット内で定義されるDTSに達したら、CDB110から読み出されてストリームグラフィックプロセッサ111に転送され、それぞれデコードされる。このストリームグラフィックプロセッサ111におけるデコードは、PESパケットに格納されたセグメントのそれぞれが利用可能な状態になることを意味する。例えば、ストリームグラフィックプロセッサ111は、PESパケットを展開し、ペイロードに格納されている各セグメントPCS、WDS、PDSおよびODSをそれぞれ取り出す。
ストリームグラフィックプロセッサ111は、デコードが完了したセグメントを、DB(Decoded Object Buffer)112またはCB(Composition Buffer)113に所定に格納する。すなわち、ストリームグラフィックプロセッサ111は、1エポック中のODSからデコードされる字幕の形状情報(オブジェクトと称する)を、DTSのタイミングでDB112に格納する。また、ストリームグラフィックプロセッサ111は、デコードが完了したPCSおよびWDSを、DTSのタイミングでCB113に格納する。また、PDSは、PTSのみが定義されるため、デコードが完了したPDSをPTSのタイミングでCB113に格納する。
ここで、CB113には、有効(valid)な状態のPCSおよびPDSをそれぞれ所定数、例えば8個まで、保持することができる。PCSおよびPDSは、それぞれに定義されたDTSからPTSまでが有効な状態とされる。有効な状態ではなくなったPCSは、例えば次に供給されるPCSに備えて、CB113から破棄される。破棄は、例えば当該PCSをCB113から消去してなされる。これに限らず、当該PCSを読み出し不可な状態にして次のデータを上書きするようにしてもよい。
CB113に格納されたPCSは、当該PCSに定義されたPTSのタイミングで、1つずつCB113から排出される。なお、有効状態にあるPCSが参照するPDSおよびODSは、他のPDSやODSと交換できない。ここで、CB113から排出されたセグメントの供給先は、BD−ROM規格では規定されていない。
グラフィクスコントローラ114は、プレゼンテーショングラフィクスデータのセグメントを制御する。例えば、グラフィクスコントローラ114は、CB113からPCSを、当該PCSに定義されるPTSのタイミングで読み出すと共に、当該PCSにより参照されるWDSおよびPDSを読み出す。また、グラフィクスコントローラ114は、当該PCSから参照されるODSをDB112から読み出す。そして、読み出されたPCSおよびWDS、ならびに、ODSをそれぞれデコードし、字幕を表示するためのデータを形成し、グラフィクスプレーン103に書き込む。CB113から読み出されたPCSは、CB113上から破棄される。
なお、上述の、PCSおよびWDS、ならびに、ODSをそれぞれデコードして形成される、字幕を表示するためのデータは、例えば座標情報を持つビットマップデータである。以下では、この字幕を表示するためのデータを、字幕画像イメージと呼ぶ。字幕画像イメージは、形状情報および位置情報を持ち、色情報を持たないデータである。
また、グラフィクスコントローラ114は、CB113から読み出されたPDSをデコードして、例えば図13を用いて説明したようなカラーパレットテーブルを形成し、CLUT104に書き込む。
グラフィクスプレーン103に書き込まれた字幕画像イメージは、所定のタイミング、例えばフレームタイミングで読み出され、CLUT104のカラーパレットテーブルが参照されて色情報が付加されて出力字幕画像データが構成され、この出力字幕画像データが出力される。プレーヤの仕様によっては、グラフィクスプレーン103から読み出されたデータに対してCLUT104のカラーパレットテーブルに基づく色情報を付加した字幕画像データを、さらにフレームメモリに書き込む場合も考えられる。
なお、エポックの更新に伴い各種バッファやプレーンがクリアされる。CDB110から読み出されてデコードされたPCSにおけるブロックcomposition_descriptor()中のフィールドcomposition_stateの記述が、このディスプレイセットがエポックスタートディスプレイセットであることを示していれば、例えば、グラフィクスコントローラ114によりDB112、CB113、グラフィクスプレーン103およびCLUT104がクリアされる。
図23は、プレゼンテーショングラフィクスデコーダ102におけるディスプレイセット単位での一例の処理を示すフローチャートである。ステップS10で、PIDフィルタ100によりTSパケットからPIDに基づきプレゼンテーショングラフィクスデータが格納されたパケットが取得され、TB101に溜め込まれる。次のステップS11で、TB101からCDB110にTSパケットが転送され、PIDに基づきTSパケットのペイロードからデータが取り出され、PESパケットが再構築される。
PESパケットは、ストリームグラフィックプロセッサ111においてセグメントに展開される。そして、次のステップS13〜ステップS17までで、展開されたセグメントがPCS、WDS、PDSおよびODSの何れであるか、若しくは、ENDセグメントであるか否かが判別され、判別結果に応じた処理が行われる。セグメントの種類は、上述の図18や図20などを用いて説明したように、シンタクスの先頭のブロックsegment_description()における最初のフィールドsegment_typeに基づき判別できる。なお、図示しないが、WDSおよびODSも、同様の方法でセグメントの種類を判別可能である。
ステップS13で、セグメントがPCSであるか否かが判別される。若し、セグメントがPCSであると判別されれば、処理はステップS19に移行され、図18を用いて説明したPCSのシンタクスにおけるブロックcomposition_descriptor()内のフィールドcomposition_stateに基づき、このPCSが含まれるディスプレイセットがエポックスタートディスプレイセットであるか否かが判断される。
若し、当該ディスプレイセットがエポックスタートディスプレイセットであると判断されれば、処理はステップS20に移行され、字幕表示に関わるバッファのクリアがなされる。例えば、DB112およびCB113がステップS20でクリアされる。そして、次のステップS21で、クリアされ空になったCB113に、DTSのタイミングでPCSが書き込まれる。CB113へのPCSの書き込みが終了すると、処理はステップS10に戻され、パケットの取得が継続される。
一方、ステップS19で、PCSがエポックスタートディスプレイセットではないと判断されれば、処理はステップS22に移行され、PCSがCB113にDTSのタイミングで書き込まれる。このとき、PCSは、CB113の空き領域に所定に書き込まれる。
上述のステップS13で、セグメントがPCSではないと判別されれば、処理はステップS14に移行され、セグメントがWDSであるか否かが判別される。若し、セグメントがWDSであると判別されれば、処理はステップS23に移行され、WDSがCB113にDTSのタイミングで書き込まれる。CB113へのWDSの書き込みが終了すると、処理はステップS10に戻され、パケットの取得が継続される。ステップS14でセグメントがWDSではないと判別されれば、処理はステップS15に移行される。
ステップS15では、セグメントがPDSであるか否かが判別される。若し、セグメントがPDSであると判別されれば、処理はステップS24に移行され、PDSが即座にCB113に書き込まれる。これは、PDSは、PTSしか定義されず、DTSを持たないので、PDSであると判別された時点で、即座にCB113に書き込まれる。CB113へのWDSの書き込みが終了すると、処理はステップS10に戻され、パケットの取得が継続される。ステップS15でセグメントがPDSではないと判別されれば、処理はステップS16に移行される。
ステップS16では、セグメントがODSであるか否かが判別される。若し、セグメントがODSであると判別されれば、処理はステップS25に移行され、ODSに格納された、ランレングス処理されたビットマップデータがDTSのタイミングでデコードされ、DB112に書き込まれる。DB112へのODSの書き込みが終了すると、処理はステップS10に戻され、パケットの取得が継続される。ステップS16でセグメントがODSではないと判別されれば、処理はステップS17に移行される。
ステップS17では、セグメントがディスプレイセットの最後尾を示すENDセグメントであるか否かが判断される。若し、セグメントがENDセグメントであると判別されれば、このディスプレイセットに関する一連の処理が終了される。
一方、ステップS17で、セグメントがENDセグメントではないと判別されれば、処理はステップS18に移行される。すなわち、この場合には、何らかのエラーが発生したものと判断でき、所定にエラー処理がなされる。
上述したような構成の場合、PCSに定義されるPTSのタイミングで、字幕を表示するために用いるPCSがCB113から排出され字幕が表示されると共に、当該PCSがCB113上から破棄されてしまう。そのため、ユーザオペレーションにより字幕表示OFFが指示され字幕が消去されてしまうと、次に字幕表示ONを指示して字幕を再び表示させようとしても、字幕表示ONの指示後の、PCSに定義されたPTSに到達するまで字幕表示を行うことができない。
次に、この発明の実施の第1の形態について説明する。この実施の第1の形態では、DB112とは別に設けられたバッファに対して、現在アクティブなODSを保持すると共に、CB113とは別に設けられたバッファに対して、現在アクティブなPCSおよびPDSを保持する。字幕表示ONが指示されると、これらDB112やCB113とは別に設けられたバッファに保持されたODS、PCSおよびPDSを用いて、字幕画像イメージおよびカラーパレットテーブルを形成し、グラフィクスプレーン103およびCLUT104に対してそれぞれ書き込む。
なお、アクティブとは、PTSにより表示が指示された状態を指し、より具体的には、あるPCSにおいて、自身に定義されたPTSから次の字幕表示に用いられるPCSに定義されたPTSまでの期間がアクティブとされる。
すなわち、グラフィクスコントローラ114は、PCS毎に定義されたPTSのタイミングでCB113から排出されるPCSを、上述のようにしてグラフィクスプレーン103およびCLUT104にそれぞれ供給すると共に、CB113とは別に設けられたバッファに対し、次のPCSに定義されたPTSのタイミングまで保持するようにしている。ODSについても同様に、DB112からPTSのタイミングで排出されるODSをグラフィクスプレーン103に供給すると共に、DB112とは別に設けられたバッファに対し、次のPCSに定義されたPTSのタイミングまで保持する。
このように構成することで、ユーザオペレーションによる字幕表示OFFの指示に応じて字幕が消去された後に、字幕表示ONを指示した場合に、字幕表示ONのタイミングに応じて即座に、字幕の表示を再開できるようになる。
すなわち、字幕表示OFFが指示された後に字幕表示ONが指示されると、CB113とは別に設けられたバッファからPCSを読み出すと共に、DB112とは別に設けられたバッファからODSを読み出し、これら読み出されたPCSおよびODSを用いて字幕画像イメージを形成する。形成されたこの字幕画像イメージは、グラフィクスプレーン103に書き込まれる。PDSについても同様に、字幕表示ONの指示のタイミングでCB113とは別に設けられたバッファからPDSを読み出し、読み出されたPDSを用いてカラーパレットテーブルを形成する。形成されたカラーパレットテーブルは、CLUT104に書き込まれる。
図24は、この発明の実施の第1の形態による一例のプレゼンテーショングラフィクスデータのデコーダモデルを示す。この実施の第1の形態によるデコーダモデルは、上述した図22の構成に対し、アクティブDB(Decoded Buffer)120とアクティブCB(Composition Buffer)121とが追加された構成となっている。なお、図24において、上述の図22と共通する部分には同一の符号を付し、詳細な説明を省略する。また、PGデコーダ102’におけるディスプレイセット毎の処理は、上述した実施の第1の形態で図23のフローチャートを用いて説明したのと同様にして行われる。
この実施の第1の形態によるPGデコーダ102’においても、上述したように、グラフィクスコントローラ114は、CB113からPCSを、当該PCSに定義されているPTSのタイミングで読み出すと共に、当該PCSから参照されているWDSおよびPDSをCB113から読み出す。CB113から読み出されたPCSは、CB113上から破棄される。それと共に、当該PCSから参照されているODSを、DB112から読み出す。グラフィクスコントローラ114は、PCSに定義されるPTSのタイミングで読み出されたこれらのセグメントに基づき、グラフィクスプレーン103に対して字幕の画像イメージを形成すると共に、CLUT104に対してカラーパレットテーブルを供給する。
ここで、グラフィクスコントローラ114は、CB113からPCSを読み出した際に、読み出したPCSをアクティブCB121に格納すると共に、当該PCSに参照されるPDSもアクティブCB121に格納する。同様に、グラフィクスコントローラ114は、BD112からODSを読み出すと、読み出したODSをアクティブDB120に格納する。
アクティブCB121およびアクティブDB120に格納されたPCSおよびPDS、ならびに、ODSは、アクティブCB121に格納されたPCSの次に用いられるPCSに定義されるPTSのタイミングまで、あるいは、エポックが更新されるまで保持される。
グラフィクスコントローラ114は、ユーザオペレーションにより字幕表示ONの指示がなされると、アクティブCB121に格納されたPCSとアクティブDB120に格納されたODSとを用いて字幕画像を形成し、グラフィクスプレーン103に書き込むと共に、アクティブCB121に格納されたPDSを読み出してCLUT104に供給する。
これにより、画面には、アクティブCB121に格納されたPCSおよびPDS、ならびに、アクティブDB120に格納されたODSに基づく字幕表示がなされる。したがって、あるPCSによる字幕を表示中に、ユーザオペレーションにより当該字幕に対して字幕表示OFFが指示された後に字幕表示ONが指示された場合に、字幕表示ONのタイミングに応じて即座に、字幕表示を再開することができる。
なお、図24では、アクティブDB120およびアクティブCB121が互いに独立したバッファとして表示されているが、これはこの例に限らず、アクティブDB120およびアクティブCB121を1つのバッファの異なる領域としてもよい。
図25〜図27を用いて、この発明の実施の第1の形態による字幕画像の表示処理について、より詳細に説明する。図25は、この発明の実施の第1の形態によるグラフィクスコントローラ114における一例の処理を示す。グラフィクスコントローラ114は、時刻情報(STC)に基づき、CB113に格納されているPCSのうち、時刻が定義されたPTSに達したPCSがあるか否か判断する(ステップS30)。時刻がPTSに達したPCSがあると判断されれば、処理はステップS31に移行される。
ステップS31では、これから表示する字幕に用いられるPCS、すなわち、ステップS30で時刻がPTSに達したPCSと、当該PCSから参照されるPDSとがアクティブCB121に格納される。さらに次のステップS32で、これから表示する字幕画像に用いられるODS、すなわち、ステップS31でアクティブCB121に格納されたPCSから参照されるODSがアクティブDB120に格納される。
PCS、PDSおよびODSのアクティブCB121およびアクティブDB120への格納がなされたら、処理は次のステップS33に移行され、字幕画像の表示処理が行われる。このステップS33では、CB113に格納されているPCSおよびPDS、ならびに、DB112に格納されているODSにより字幕画像イメージが形成され、表示される。字幕画像の表示処理後、処理がステップS30に戻され、次のPCSに定義されるPTSにおいて、ステップS30〜ステップS33の処理が行われる。
図26を用いて、より具体的に説明する。図26は、字幕画像表示に伴うセグメントの推移を概略的に示す。なお、図26においては、ディスプレイセットを構成するセグメントとして、PCSが代表して表示されている。図26Aは、STCを示し、図26Bは、CB113に格納されているPCSを示す。図26Cは、アクティブCB121に格納されるPCSを示す。アクティブDB120には、アクティブCB121に格納されるPCSに参照されるODSが格納されることになる。図26Dは、グラフィクスプレーン103に書き込まれる字幕画像イメージおよびCLUT104に供給されるPDSに対応するPCSを示し、図26Eは、実際の字幕表示に対応するPCSを示す。
図26Aおよび図26Bに示されるように、PCS#1、PCS#2、PCS#3およびPCS#4は、PTSとしてPTS#1、PTS#2、PTS#3およびPTS#4がそれぞれ定義されているものとする。CB113に格納されたPCS#1、PCS#2、PCS#3およびPCS#4は、それぞれに定義されたPTSに従いグラフィクスコントローラ114に読み出される。
例えば、STCに基づき時刻がPTS#2に達したら(ステップS30)、PTS#2がPTSとして定義されているPCS#2と、当該PCS#2に参照されるPDSとがグラフィクスコントローラ114によりCB113から読み出され(図26B)、ステップS31に従いアクティブCB121に格納される(図26C)。また、ステップS32に従い、PCS#2に参照されるODSがDB112から読み出され、アクティブDB120に格納される。
次のステップS33の字幕表示処理において、グラフィクスコントローラ114によりCB113から読み出されたPCS#2およびDB112から読み出されたODSに基づき字幕画像イメージが形成され、グラフィクスプレーン103に書き込まれる。CB113から読み出されたPCS#2は、CB113から破棄される。また、CB113から読み出されたPDSがCLUT104に供給され、カラーパレットテーブルが形成される(図26D)。グラフィクスプレーン103に書き込まれた字幕画像イメージと、CLUT104に供給されたPDSとに基づき、PCS#2に基づく字幕画像が表示される(図26E)。
なお、アクティブDB120およびアクティブCB121の内容は、次の字幕画像表示に用いられるPCS、PDSおよびODSで順次、書き換えられる。
次に、ユーザオペレーションにより字幕表示ONが指示された場合の処理について説明する。図27に一例が示されるように、ユーザオペレーションにより字幕表示ONが指示されると(ステップS40)、ステップS41で、アクティブCB121に格納されているPCSおよびアクティブDB120に格納されているODSがグラフィクスコントローラ114により読み出される。読み出されたPCSおよびODSは、所定にデコードされて字幕画像イメージとされ、グラフィクスプレーン103に書き込まれる。それと共に、アクティブCB121からPDSが読み出され、カラーパレットテーブルが形成され、CLUT104に供給される。
上述した図26を用いてより具体的に説明する。例えばPTS#3のタイミングで、PTSにPTS#3が定義されているPCS#3がアクティブCB121に格納される(図26C)と共に、PCS#3に基づく字幕画像が表示される(図26Dおよび図26E)。それと共に、PCS#3がCB113から破棄される。
この状態で、ユーザオペレーションにより字幕表示OFFが指示されると(図26の「表示OFF」)、PCS#3に基づく字幕が消去される。例えば、WDSに基づき字幕画像が表示されている領域が透明属性を持つデータで書き換えられることで、字幕が消去される。このとき、消去された字幕に対応するPCS#3は、既にCB113上から破棄されている。
次にユーザオペレーションにより字幕表示ONが指示されると(図26の「表示ON」)、グラフィクスコントローラ114は、アクティブCB121に格納されているPCS(この図26の例ではPCS#3)および当該PCSに参照されるPDSを読み出し、読み出されたPCSに基づき字幕画像イメージを再形成してグラフィクスプレーン103に書き込むと共に、PDSをCLUT104に供給する。これにより、ユーザオペレーションに従い字幕表示を再開することが可能になる。
なお、図26の例では、ユーザオペレーションにより字幕表示OFFが指示されてから、次のPCSによる字幕表示が開始される前に、字幕表示ONが指示されているが、勿論、字幕表示OFFが指示されてから複数のPCSによるPTSを経てから字幕表示ONが指示された場合についても、同様にして字幕表示を再開させることができる。
すなわち、字幕表示OFFが指示された後も、PTSのタイミングでのCB113からのPCSおよびPDSの読み出し、ならびに、DB112からのODSの読み出しや、CB113から読み出されたPCSおよびPDSのアクティブCB121に対する格納、ならびに、DB112から読み出されたODSのアクティブDB120に対する格納は、継続的に行われる。したがって、ユーザオペレーションによる字幕表示ONの指示があったときに、アクティブCB121に格納されたPCSおよびPDS、ならびに、アクティブDB120に格納されたODSを用いて、字幕表示ONのタイミングで表示されるべき字幕を表示させることができる。
また、上述では、ユーザオペレーションによる字幕表示OFFの指示の後に字幕表示ONの指示があった場合に、アクティブCB121に格納されたPCSおよびPDS、ならびに、アクティブDB120に格納されたODSを用いた字幕画像表示処理を行っているが、これはこの例に限られない。すなわち、実際の処理としては、字幕表示ONの指示に対してのみ、処理が定義されていればよい。
さらに、上述では、アクティブDB120およびアクティブCB121には、DB112から読み出されたODS、ならびに、CB113から読み出されたPCSおよびPDSが、ユーザオペレーションによる字幕表示ON/OFF指示の有無に関わらず、常に書き込まれ保持されているように説明したが、これはこの例に限定されない。例えば、ユーザオペレーションにより字幕表示OFFが指示されたときにのみ、アクティブDB120およびアクティブCB121に対するデータの書き込みおよび保持を行うようにしてもよい。但しこの場合、字幕表示OFFが指示された後、次のPCSに定義されたPTS以前に字幕表示ONが指示された場合には、当該次のPCSに定義されたPTSに達するまで字幕が表示されないことになる。
次に、この発明の実施の第2の形態について説明する。上述の実施の第1の形態では、字幕画像を形成する前段階のPCS、PDSおよびODSをバッファに保持したが、この実施の第2の形態では、グラフィクスプレーン103およびCLUT104の内容をそれぞれバッファに保持するようにしている。ユーザオペレーションにより字幕表示ONが指示された際に、バッファに保持されたデータをグラフィクスプレーン103およびCLUT104にそれぞれ書き込むようにする。これにより、ユーザオペレーションによる字幕表示OFFの指示の後に字幕表示ONが指示された場合に、字幕表示ONのタイミングで表示されるべき字幕を即座に、表示させることができる。
図28は、この発明の実施の第2の形態による一例のプレゼンテーショングラフィクスデータのデコーダモデルを示す。この実施の第2の形態によるデコーダモデルは、上述した図22の構成に対し、アクティブグラフィクスプレーン(GP)バッファ123とアクティブCLUTバッファ124とが追加された構成となっている。なお、図28において、上述の図22と共通する部分には同一の符号を付し、詳細な説明を省略する。また、PGデコーダ102”におけるディスプレイセット毎の処理は、上述した実施の第1の形態で図23のフローチャートを用いて説明したのと同様にして行われる。
この図28に示される構成の場合、グラフィクスプレーン103に書き込まれるデータは、PGデコーダ102”におけるグラフィクスコントローラ114の制御に基づき、アクティブGPバッファ123にも書き込まれる。同様に、CLUT104のカラーパレットテーブルは、グラフィクスコントローラ114の制御に基づきアクティブCLUTバッファ124にも書き込まれる。そして、グラフィクスコントローラ114は、ユーザオペレーションにより字幕表示ONが指示されると、アクティブGPバッファ123に書き込まれたデータをグラフィクスプレーン103に対して書き込むと共に、アクティブCLUTバッファ124に書き込まれたデータをCLUT104に書き込む。
なお、図28では、アクティブGPバッファ123およびアクティブCLUTバッファ124がそれぞれ独立的なバッファとして表示されているが、これはこの例に限られず、アクティブGPバッファ123およびアクティブCLUTバッファ124を1つのバッファの異なる領域としてもよい。
アクティブGPバッファ123に格納されたデータおよびアクティブCLUTバッファ124に格納されたカラーパレットテーブルは、現在表示されるPCS(すなわち、当該データおよびカラーパレットテーブルに対応するPCS)の次に用いられるPCSに定義されるPTSのタイミングまで、あるいは、エポックが更新されるまで保持される。
図29は、この発明の実施の第2の形態によるグラフィクスコントローラ114の一例の処理を示す。グラフィクスコントローラ114は、時刻情報(STC)に基づき、CB113に格納されているPCSのうち、時刻が定義されたPTSに達したPCSがあるか否か判断する(ステップS50)。時刻がPTSに達したPCSがあると判断されれば、処理はステップS51に移行される。
ステップS51では、字幕画像の表示処理が行われる。すなわち、CB113およびDB112からPCSおよびODSが読み出されてそれぞれデコードされ、字幕画像イメージが形成され、グラフィクスプレーン103に書き込まれる。また、CB113に格納されているPDSがデコードされてカラーパレットテーブルが形成され、CLUT104に書き込まれる。
次のステップS52では、アクティブGPバッファ123に対して、グラフィクスプレーン103上のこれから表示されるデータが書き込まれる。すなわち、ステップS51でグラフィクスプレーン103に書き込まれた字幕画像イメージがアクティブGPバッファ123に書き込まれる。
また、ステップS53で、アクティブCLUTバッファ124に対して、CLUT104におけるこれから表示に用いるカラーパレットテーブルが書き込まれる。すなわち、ステップS51でCLUT104に書き込まれたカラーパレットテーブルがアクティブCLUTバッファ124に書き込まれる。
グラフィクスプレーン103のデータのアクティブGPバッファ123への書き込み、ならびに、CLUT104のデータのアクティブCLUTバッファ124への書き込みがなされたら、処理はステップS50に戻され、次のPCSに定義されるPTSにおいて、ステップS50〜ステップS53の処理が行われる。
次に、ユーザオペレーションにより字幕表示ONが指示された場合の処理について説明する。図30に一例が示されるように、ユーザオペレーションにより字幕表示ONが指示されると(ステップS60)、ステップS61で、アクティブGPバッファ123およびアクティブCLUTバッファ124に格納されるデータに基づく表示がなされる。例えば、ステップS61では、アクティブGPバッファ123に格納された字幕画像イメージがグラフィクスプレーン103に対して書き込まれると共に、アクティブCLUTバッファ124に格納されたカラーパレットテーブルがCLUT104に書き込まれる。
この実施の第2の形態によれば、デコード後のデータをバッファに保持するようにしているため、上述の実施の第1形態のデコード前のデータを保持する方法に比べ、処理が容易であるという利点がある。
一方、この実施の第2の形態では、デコード後のデータをバッファに保持するために、上述の実施の第1の形態に比べ、バッファの容量が多く必要になる。例えば、上述の実施の第1の形態では、アクティブDB120およびアクティブCB121は、少なくとも、それぞれ最大64kB(キロバイト)のデータ量であるセグメントが4個分格納されるだけの、256kBの容量があれば足りる。これに対して、実施の第2の形態によるアクティブGPバッファ123は、字幕画像のイメージが格納されるため、2MB(メガバイト)程度の容量が必要となる。
次に、上述した実施の第1の形態および実施の第2の形態に共通して適用可能な再生装置について説明する。図31は、この発明の実施の第1の形態および第2の形態に共通して適用可能な再生装置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は、上述した実施の第1の形態におけるPGデコーダ102’(図24参照)、あるいは、上述した実施の第2の形態におけるPGデコーダ102”(図28参照)に対応する。このとき、図24または図28に示されるPIDフィルタ100およびTB101は、例えばスイッチ回路64および図示されないバッファに対応する。これに限らず、PGデコーダ102’またはPGデコーダ102”にPIDフィルタ100およびTB101を含んでもよい。
プレゼンテーショングラフィクスデコーダ74は、供給されたパケットのペイロードからPGストリームを所定に取り出してデコードして字幕を表示するグラフィクスデータを生成し、スイッチ回路75に供給する。すなわち、プレゼンテーショングラフィクスデコーダ74は、供給されたパケットのペイロードからデータを取り出して、PIDの情報に基づきPESパケットを再構築する。そして、再構築されたPESパケットをデコードして、PCS、WDS、PDSおよびODSを形成する。これらPCS、WDS、PDSおよびODSは、PCSに定義されたPTSのタイミングでプレゼンテーショングラフィクスデコーダ74から出力され、スイッチ回路75に供給される。
スイッチ回路75は、このグラフィクスデータと、後述するテキストデータによる字幕データとを所定に選択し、プレゼンテーショングラフィクスプレーン生成部76に供給する。プレゼンテーショングラフィクスプレーン生成部76は、供給されたデータに基づきプレゼンテーショングラフィクスプレーンを生成し、ビデオデータ処理部71に供給する。このプレゼンテーショングラフィクスプレーンは、例えば上述の図9に例示した字幕プレーン11に対応し、図24および図28で説明したグラフィクスプレーン103に格納される字幕画像イメージに対応する。
PIDフィルタ64により振り分けられたIGストリームによるパケットと、PIDフィルタ90により振り分けられたIGストリームによるパケットは、それぞれスイッチ回路67に供給されて一方が所定に選択され、インタラクティブグラフィクスデコーダ77に供給される。インタラクティブグラフィクスデコーダ77は、供給されたIGストリームによるパケットからIGストリームを構成する各セグメントを所定に取り出してデコードする。デコードされたセグメントは、プリロードバッファ78に一旦格納される。
プリロードバッファ78から読み出されたIGストリームのデータは、インタラクティブグラフィクスプレーン生成部79に供給され、インタラクティブグラフィクスプレーンが生成される。このインタラクティブグラフィクスプレーンは、例えば上述の図9に例示したインタラクティブグラフィクスプレーン12に対応する。
ビデオデータ処理部71は、例えば図11を用いて説明したグラフィクス処理部を含み、供給されたビデオプレーン(図11における動画プレーン10)、プレゼンテーショングラフィクスプレーン(図11における字幕プレーン11)およびインタラクティブグラフィクスプレーン(図11におけるインタラクティブグラフィクスプレーン12)を、所定に合成して1枚の画像データとし、ビデオ信号にして出力する。
例えば、図11を参照し、プレゼンテーショングラフィクスプレーン(すなわち字幕画像イメージ)に関して、パレットテーブル22A、RGB/YCbCr変換部22Bおよび乗算器23は、図24および図29で説明したCLUT104に対応し、パレットテーブル22AおよびRGB/YCbCr変換部22Bで色情報が付加されると共に、乗算器23で透明属性を付加され、さらに、加算器24および加算器29で、ビデオプレーンおよびインタラクティブグラフィクスプレーンと合成され、1枚の画像データとされて出力される。
PIDフィルタ64により振り分けられたオーディオストリームと、PIDフィルタ90により振り分けられたオーディオストリームは、それぞれスイッチ回路68に供給される。スイッチ回路68は、供給された2つのオーディオストリームのうち一方を1stオーディオデコーダ80に、他方を2ndオーディオデコーダ81に供給するように、所定に選択する。1stオーディオデコーダ80および2ndオーディオデコーダ81でそれぞれデコードされたオーディオストリームは、加算器82で合成され、さらに加算器83で、バッファ62から読み出されたサウンドデータと合成され、出力される。
バッファ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に記録することも考えられる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。