以下、この発明の実施の形態を、図面を参照しながら説明する。先ず、理解を容易とするために、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に一例が示されるように、主として再生されるプレイアイテムに対応するメインパスに対して、サブプレイアイテムに対応するサブパスを持つことができる。サブプレイアイテムは、異なる複数のクリップと関連付けることができ、サブプレイアイテムは、サブプレイアイテムに関連付けられる複数のクリップのうち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"は、この発明の主旨と直接的な関わりがないので、詳細な説明を省略する。
次に、上述した各ファイルのうち、この発明に関連性の深いファイルについて、より詳細に説明する。図7は、ムービーオブジェクトから呼び出されるムービープレイリストファイル"xxxxx.mpls"の一例の構造を表すシンタクスを示す。フィールドtype_indicatorは、32ビット(4バイト)のデータ長を有し、このファイルがムービープレイリストファイルであることを示す。フィールドversion_numberは、32ビット(4バイト)のデータ長を有し、このムービープレイリストファイルのバージョンを示す。フィールドPlayList_start_addressは、32ビットのデータ長を有し、このシンタクス中のブロックPlayList()の開始アドレスを示す。フィールドPlayListMark_start_addressは、32ビットのデータ長を有し、このシンタクス中のブロックPlayListMark()の開始アドレスを示す。
フィールドExtensionData_start_addressは、32ビットのデータ長を有し、このシンタクス中のブロックExtensionData()の開始アドレスを示す。フィールドExtensionData_start_addressは、ブロックExtensionData()の開始アドレスを、ファイル"xxxxx.mpls"の最初のバイトからの相対バイト数を表した値である。相対バイト数は、"0"から開始される。若し、このフィールドExtensionData_start_addressの値が"0"であれば、このファイル"xxxxx.mpls"内に、ブロックExtensionData()が存在しないことを示す。
ブロックAppInfoPlayList()は、次のブロックPlayList()に記述されるプレイリストのタイプ、再生制限などの情報が記述される。ブロックPlayList()は、プレイリストが記述される。ブロックPlayListMark()は、チャプタジャンプなどでジャンプされるポイントが記述される。ブロックExtensionData()は、この発明の実施の一形態に係るデータが記述される。
図8は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、32ビットのデータ長を有し、このフィールドlengthの直後からブロックPlayList()の最後までのデータ長を示す。フィールドlengthに続くデータ長が16ビットの領域は、将来の使用のために予約されている領域である。フィールドnumber_of_PlayItemsは、16ビットのデータ長を有し、このブロックPlayList()に含まれるプレイアイテムの数を示す。フィールドnumber_of_SubPathは、このブロックPlayList()に含まれるサブパスの数を示す。
次のfor文に従い、フィールドnumber_of_PlayItemsで示される数だけ、プレイアイテムが記述されるブロックPlayItem()が記述される。for文に基づくカウント数がブロックPlayItem()の識別子PlayItem_idとなる。さらに次のfor文に従い、フィールドnumber_of_SubPathで示される数だけ、ブロックSubPath()が記述される。for文に基づくカウント数がブロックSubPath()の識別子SubPath_idとなる。
なお、サブパスは、上述のアフレコ用のオーディオデータの例以外にも、例えば2枚の映像を合成する際に、プレイアイテムで指定されるクリップと同期して再生する副映像を指定するといった目的で用いられる。
図9は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドlengthは、16ビットのデータ長を有し、このフィールドlengthの直後からブロックPlayItem()の最後までのデータ長を示す。
フィールドClip_Information_file_name[0]は、40ビット(5バイト)のデータ長を有し、このブロックPlayItem()が参照するクリップインフォメーションファイルのファイル名が示される。このプレイアイテムにおいて、フィールドClip_Information_file_name[0]で示されるファイル名のクリップインフォメーションファイルが読み出される。フィールドClip_codec_identifier[0]は、32ビット(4バイト)のデータ長を有し、このブロックPlayItem()によるプレイアイテムにおいて用いられるクリップAVストリームのコーデック方式を示す。
続く11ビットの領域は、将来の使用のために予約されている領域である。1ビットのデータ長を有するフラグis_multi_angleは、マルチアングルに対応しているか否かを示す。フィールドconnection_conditionは、4ビットのデータ長を有し、接続状態に関する情報を示す。フィールドref_to_STC_id[0]は、8ビットのデータ長を有し、システムタイムベース(STC)の不連続点に関する情報を示す。
フィールドIN_timeおよびフィールドOUT_timeは、それぞれ32ビットのデータ長を有し、メインクリップAVストリームの再生範囲を示す。フィールドIN_timeが開始点を示し、フィールドOUT_timeが終了点を示す。
フィールドUO_mask_table()は、ユーザ入力の受付制限が設定されるテーブルである。1ビットのデータ長を有するフラグPlayItem_random_access_flagは、このブロックPlayItem()によるプレイアイテムに対してランダムアクセスを許可するか否かを規定する。続く7ビットのデータ長を有する領域は、将来の使用のために予約された領域である。
フィールドstill_modeは、8ビットのデータ長を有し、ブロックPlayItem()によるプレイアイテムにおいて、最後に表示した映像を静止画として表示させるか否かを示す。フィールドstill_modeの値が"0x01"(バイナリ)であれば、if文に基づき、16ビットのデータ長を有するフィールドstill_timeにより静止時間が示される。フィールドstill_modeの値が"0x01"以外であれば、当該16ビットのデータ長を有する領域が将来の使用のために予約された領域とされる。
上述したフラグis_multi_angleの値がマルチアングルに対応していることを示す値("1")であれば、if文において示されるマルチアングルを管理するための構造が記述される。このマルチアングルに関しては、この発明と直接的な関わりがないので、説明を省略する。
図10および図11は、ブロックSTN_table()の一例の構造を表すシンタクスを示す。このブロックSTN_table()は、メインパスを構成するプレイアイテムが参照するクリップに含まれるビデオストリーム(以下、プライマリビデオストリーム:Primary Video Streamと呼ぶ)と組み合わせて同時に再生される可能性のある、他のストリームの組み合わせを定義する。
ここで、プライマリビデオストリームと組み合わされる他のストリームは、例えば、メインパスを構成するプレイアイテムが参照するクリップに含まれるオーディオストリーム(以下、プライマリオーディオストリーム:Primary Audio Streamと呼ぶ)、メインパスに対応するサブパスを構成するクリップに含まれるビデオストリームおよびオーディオストリーム(以下、それぞれセカンダリビデオストリーム:Secondary Video Stream、セカンダリオーディオストリーム:Secondary Video Streamと呼ぶ)、ならびに、サブタイトルストリームの組み合わせを定義する。
より詳細には、ブロックSTN_table()は、特に、セカンダリオーディオストリームとプライマリオーディオストリームとの組み合わせ、セカンダリビデオストリームとセカンダリオーディオストリームとの組み合わせ、セカンダリビデオストリームとピクチャインピクチャ(PiP)アプリケーション用のプレゼンテーショングラフィックス(PG)またはテキスト字幕との組み合わせを定義する。
フィールドlengthは、16ビットのデータ長を有する符号なし整数であって、このフィールドlengthフィールドの直後からブロックSTN_table()の終わりまでのデータ長をバイトで示す。フィールドlengthの次に、16ビットのデータ長を有する予約領域reserved_for_future_useを介して、8ビットのデータ長を有するフィールドnumber_of_primary_video_stream_entriesが配される。フィールドnumber_of_primary_video_stream_entriesは、このブロックSTN_table()においてエントリされる、値primary_video_stream_idが与えられるストリーム数を示す。値primary_video_stream_idは、ビデオストリームを識別するための情報であり、値primary_video_stream_numberは、ビデオ切り替えに使われる、ユーザから見えるビデオストリーム番号である。
フィールドnumber_of_primary_audio_stream_entriesは、8ビットのデータ長を有し、このブロックSTN_table()においてエントリされる、値primary_audio_stream_idが与えられるストリーム数を示す。値primary_audio_stream_idは、オーディオストリームを識別するための情報であり、値primary_audio_stream_numberは、音声切り替えに使われる、ユーザから見えるオーディオストリーム番号である。
フィールドnumber_of_PG_txtST_stream_entriesは、8ビットのデータ長を有し、このブロックSTN_table()の中でエントリされる、値PG_txtST_stream_idが与えられるストリーム数を示す。この中では、DVDのサブピクチャのような、ビットマップ字幕をランレングス符号化した、プレゼンテーショングラフィクスストリーム(PG)と、とテキスト字幕ファイル(txtST)とがエントリされる。値PG_txtST_stream_idは、字幕ストリームを識別するための情報であり、値PG_txtST_stream_numberは、字幕切り替えに使われる、ユーザから見える字幕ストリーム番号である。
フィールドnumber_of_IG_stream_entriesは、8ビットのデータ長を有し、このブロックSTN_table()の中でエントリされる、値IG_stream_idが与えられるストリーム数を示す。この中では、インタラクティブグラフィックスストリーム(IG)がエントリされる。値IG_stream_idは、インタラクティブグラフィックスストリームを識別するための情報であり、値IG_stream_numberは、グラフィックス切り替えに使われる、ユーザから見えるグラフィックスストリーム番号である。
なお、インタラクティブグラフィックスストリームにより再生されるインタラクティブグラフィックメニューは、例えば、ユーザの操作入力を受けることが可能なボタンやアイコン、または、サムネイルなどのアイテムを含ませることができる。インタラクティブグラフィックメニューには、ユーザのリモートコントロールコマンダなどによるON/OFFの操作入力に応じてインタラクティブグラフィックを表示させたり、表示を取り消したりすることが可能なポップアップメニュー(Pop-up menu)と、インタラクティブグラフィックが常時表示されるオールウェイズオン(Always-on)の2種類の表示方法が用意されている。
フィールドnumber_of_secondary_audio_stream_entriesは、8ビットのデータ長を有し、このブロックSTN_table()の中でエントリされる、値secondary_audio_stream_idが与えられるストリーム数を示す。値secondary_audio_stream_idは、オーディオストリームを識別するための情報であり、値secondary_audio_stream_numberは、オーディオ切り替えに使われる、ユーザから見えるオーディオストリーム番号である。
フィールドnumber_of_secondary_video_stream_entriesは、8ビットのデータ長を有し、このブロックSTN_table()の中でエントリされる、値secondary_video_stream_idが与えられるストリーム数を示す。値secondary_video_stream_idは、ビデオストリームを識別するための情報であり、値secondary_video_stream_numberは、ビデオ切り替えに使われる、ユーザから見えるビデオストリーム番号である。
フィールドnumber_of_PiP_PG_textST_stream_entries_plusは、8ビットのデータ長を有し、このブロックSTN_table()の中でエントリされる、ピクチャインピクチャ用の字幕ストリーム(PiP_PG_textST_stream)のストリーム数を示す。
40ビットのデータ長を有する予約領域reserved_for_feature_useを介して、6個のforループ文が配される。第1のforループ文は、値が"0"から始まる値primary_video_stream_idをループ変数とし、上述のフィールドnumber_of_primary_video_stream_entriesに示される回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第1のforループ文により、ブロックstream_entry()毎に特定される1のビデオストリームに対して、値"0"から1ずつインクリメントされる値primary_video_stream_idが、順番に与えられる。なお、ループ変数として、値primary_video_stream_idの代わりに、値primary_video_stream_numberを用いることができる。この場合には、値primary_video_stream_numberは、値"1"から1ずつインクリメントされる。
第2のforループ文は、値primary_audio_stream_idをループ変数とし、上述のフィールドnumber_of_primary_audio_stream_entriesに示される回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第2のforループ文により、ブロックstream_entry()毎に特定される1のオーディオストリームに対して、値"0"から1ずつインクリメントされる値primary_audio_stream_idが、順番に与えられる。なお、ループ変数として、値primary_audio_stream_idの代わりに、値primary_audio_stream_numberを用いることができる。この場合には、値primary_audio_stream_numberは、値"1"から1ずつインクリメントされる。
第3のforループ文は、値PG_textST_stream_idをループ変数とし、上述のフィールドnumber_of_PG_txtST_stream_entriesとフィールドnumber_of_PiP_PG_textST_stream_entries_plusとの合計の回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第3のforループ文により、ブロックstream_entry()毎に特定される1のPGストリームに対して、値"0"から1ずつインクリメントされる値PG_textST_stream_idが、順番に与えられる。なお、ループ変数として、値PG_textST_stream_idの代わりに、値PG_textST_stream_numberを用いることができる。この場合には、値pPG_textST_stream_numberは、値"1"から1ずつインクリメントされる。
第4のforループ文は、値IG_stream_idをループ変数とし、上述のフィールドnumber_of_IG_stream_entriesに示される回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第4のforループ文により、ブロックstream_entry()毎に特定される1のIGストリームに対して、値"0"から1ずつインクリメントされる値IG_stream_idが、順番に与えられる。なお、ループ変数として、値IG_stream_idの代わりに、値IG_stream_numberを用いることができる。この場合には、値IG_stream_numberは、値"1"から1ずつインクリメントされる。
第5のforループ文は、値secondary_audio_stream_idをループ変数とし、上述のフィールドnumber_of_secondary_audio_stream_entriesに示される回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第5のforループ文により、ブロックstream_entry()毎に特定される1のオーディオストリームに対して、値"0"から1ずつインクリメントされる値secondary_audio_stream_idが、順番に与えられる。なお、ループ変数として、値secondary_audio_stream_idの代わりに、値secondary_audio_stream_numberを用いることができる。この場合には、値secondary_audio_stream_numberは、値"1"から1ずつインクリメントされる。
第5のループにおいて、値secondary_audio_stream_idをループ変数とし、上述のフィールドnumber_of_secondary_audio_stream_entriesに示される回数だけ、さらにブロックcomb_info_Secondary_audio_Primary_audio()が繰り返される。ブロックcomb_info_Secondary_audio_Primary_audio()は、セカンダリオーディオとプライマリオーディオとの組み合わせを示す。
ブロックcomb_info_Secondary_audio_Primary_audio()において、フィールドnumber_of_primary_audio_ref_entriesは、8ビットのデータ長を有し、このブロックcomb_info_Secondary_audio_Primary_audio()から参照されるプライマリオーディオストリームの数を示す。8ビットのデータ長を有する予約領域reserved_for_word_alignを介してforループ文が配され、フィールドnumber_of_primary_audio_ref_entriesに示される回数だけ、8ビットのデータ長を有するフィールドprimary_audio_stream_id_refが繰り返される。なお、次のif文に示されるように、フィールドnumber_of_primary_audio_ref_entriesに示される値が奇数のときは、8ビットのデータ長を有する予約領域reserved_for_word_alignがさらに配される。
第6のforループ文は、値secondary_video_stream_idをループ変数とし、上述のフィールドnumber_of_secondary_video_stream_entriesに示される回数だけ、ブロックstream_entries()およびブロックstream_attribute()が繰り返される。この第6のforループ文により、ブロックstream_entry()毎に特定される1のビデオストリームに対して、値"0"から1ずつインクリメントされる値secondary_avideo_stream_idが、順番に与えられる。なお、ループ変数として、値secondary_video_stream_idの代わりに、値secondary_video_stream_numberを用いることができる。この場合には、値secondary_video_stream_numberは、値"1"から1ずつインクリメントされる。
第6のループにおいて、値secondary_video_stream_idをループ変数とし、上述のフィールドnumber_of_secondary_video_stream_entriesに示される回数だけ、さらにブロックcomb_info_Secondary_video_Primary_audio()と、ブロックcomb_info_Secondary_video_PiP_PG_textST()とが繰り返される。
ブロックcomb_info_Secondary_video_Secondary_audio()は、セカンダリビデオとセカンダリオーディオとの組み合わせを示す。ブロックcomb_info_Secondary_video_Secondary_audio()において、フィールドnumber_of_secondary_audio_ref_entriesは、8ビットのデータ長を有し、このブロックcomb_info_Secondary_video_Secondary_audio()から参照されるセカンダリオーディオストリームの数を示す。8ビットのデータ長を有する予約領域reserved_for_word_alignを介してforループ文が配され、フィールドnumber_of_secondary_audio_ref_entriesに示される回数だけ、8ビットのデータ長を有するフィールドsecondary_audio_stream_id_refが繰り返される。なお、次のif文に示されるように、フィールドnumber_of_secondary_audio_ref_entriesに示される値が奇数のときは、8ビットのデータ長を有する予約領域reserved_for_word_alignがさらに配される。
ブロックcomb_info_Secondary_video_PiP_PG_textST()は、セカンダリビデオとピクチャインピクチャアプリケーション用のPGおよび/またはテキスト字幕の組み合わせを示す。ブロックcomb_info_Secondary_video_PiP_PG_textST()において、フィールドnumber_of_PiP_PG_testST_ref_entriesは、8ビットのデータ長を有し、このブロックブロックcomb_info_Secondary_video_PiP_PG_textST()から参照されるPGストリームおよび/またはテキスト字幕ストリームの数を示す。8ビットのデータ長を有する予約領域reserved_for_word_alignを介してforループ文が配され、フィールドnumber_of_PiP_PG_testST_ref_entriesに示される回数だけ、8ビットのデータ長を有するフィールドPiP_PG_testST_stream_id_refが繰り返される。なお、次のif文に示されるように、フィールドnumber_of_PiP_PG_testST_ref_entriesに示される値が奇数のときは、8ビットのデータ長を有する予約領域reserved_for_word_alignがさらに配される。
このようなテーブルSTN_tableを用いることにより、プライマリビデオストリームと同時に再生される可能性を有するセカンダリビデオストリーム、プライマリオーディオストリーム、セカンダリオーディオストリームおよびサブタイトルストリームの組み合わせに加えて、ピクチャインピクチャアプリケーション用のPG・テキスト字幕ストリームの組み合わせとして矛盾するような組み合わせを選択することを防ぐようにすることができる。
なお、第1〜第6のforループ文におけるブロックstream_attribute()は、stream_entry()毎に特定される1つのエレメンタリストリームのストリーム属性情報を与える。このブロックstream_attribute()は、この発明と関わりが薄いので、詳細な説明を省略する。
図12は、ブロックstream_entry()の一例の構造を表すシンタクスを示す。フィールドlengthは、8ビットのデータ長を有し、このフィールドlengthの直後からこのブロックstream_entryの最後までのデータ長を示す。次のフィールドtypeは、8ビットのデータ長を有し、このブロックstream_entry()ににより特定されるストリームのタイプを示す。この例では、フィールドtypeに対して、値"1"、値"2"および値"3"が定義される。次のif文の記述に従い、フィールドtypeの値に応じて記述される内容が変化される。
フィールドtypeの値が"1"であれば、16ビットのデータ長を有するフィールドref_to_stream_PID_of_mainClipが記述される。フィールドref_to_stream_PID_of_mainClipは、このブロックstream_entry()が含まれるプレイアイテムにより参照されるメインクリップにおいて多重化される複数のエレメンタリストリームの中から1のエレメンタリストリームを特定するためのパケットID(PID)を示す。すなわち、フィールドtypeの値が"1"のときは、メインパスに対応するクリップAVストリームファイルにおけるPIDを指定するだけで、ストリームが決定される。
フィールドtypeの値が"2"であれば、8ビットのデータ長を有するフィールドref_to_SubPath_id、8ビットのデータ長を有するフィールドref_to_subClip_entry_id、16ビットのデータ長を有するフィールドref_to_stream_PID_of_subClipがそれぞれ配される。フィールドref_to_SubPath_idは、サブパスを識別するための識別情報が記述される。フィールドref_to_subClip_entry_idは、参照されるクリップを示す。また、フィールドref_to_stream_PID_of_subClipは、フィールドref_to_subClip_entry_idで示されるクリップのPIDを示す。すなわち、フィールドtypeの値が"2"のときは、サブパスが、それぞれ複数のエレメンタリストリームが多重化された複数のクリップを一度に参照する際に、これら複数のクリップの中から1のエレメンタリストリームを特定する。
フィールドtypeの値が"2"で定義されるブロックstream_entry()は、サブプレイアイテムの中で複数のクリップが参照され、さらにこれら複数のクリップに複数のエレメンタリストリームが参照されている場合に、用いられる。
フィールドtypeの値が"3"であれば、8ビットのデータ長を有するフィールドref_to_SubPath_idおよび16ビットのデータ長を有するフィールドref_to_stream_PID_of_mainClipが記述される。フィールドref_to_SubPath_idは、サブパスを識別するための識別情報が記述される。フィールドref_to_stream_PID_of_mainClipは、フィールドref_to_SubPath_idで示されるサブパスによって参照される、メインクリップに含まれるエレメンタリストリームのPIDを示す。すなわち、フィールドtypeの値が"3"のときは、メインクリップに複数のエレメンタリストリームが多重化され、メインパスとサブパスの何れもメインクリップに多重化されている複数のエレメンタリストリームのうちの何れかを参照している場合に、メインクリップに多重化されるこれら複数のエレメンタリストリームの中からサブパスによって参照される1のエレメンタリストリームを再生時に特定する。
フィールドtypeの値が"3"で定義されるブロックstream_entry()において、フィールドref_to_SubPath_idにより値SubPath_idが示され、この値SubPath_idにより、図8を用いて説明したブロックPlayList()で定義されたサブパス(ブロックSubPath())が特定される。そして、このサブパスから、対応するサブプレイアイテム(後述する)が呼び出されることにより、エレメンタリストリームの再生時間(IN_timeおよびOUT_time)などを把握することができる。
なお、フィールドtypeの値が"3"をとり、メインクリップに複数のエレメンタリストリームが多重化され、メインパスおよびサブパスの何れも、メインクリップに多重化されている複数のエレメンタリストリームのうち1のエレメンタリストリームを参照するのは、後述するサブパスタイプ(フィールドSubPath_type)が値"7"の場合である。
上述のように、ブロックSTN_table()中のブロックstream_entry()において、フィールドtypeの値"1"および値"2"の定義を用いることで、プレイアイテムと、当該プレイアイテムに関連付けられて再生される1以上のサブパスとが用意されている場合に、当該プレイアイテムが参照するクリップと、1以上のサブパスが参照するクリップとから1のエレメンタリストリームを特定することができる。すなわち、フィールドtypeの値が"1"で、メインパスが参照するクリップ(メインクリップ)を示し、フィールドtypeの値が2で、サブパスが参照するクリップ(サブクリップ)を示す。
また、上述のように、ブロックSTN_table()中のブロックstream_entry()においてフィールドtypeの値"1"、値"2"および値"3"の定義を用いることで、プレイアイテムと、当該プレイアイテムに関連付けられて再生される1以上のサブパスとが用意されている場合に、当該プレイアイテムが参照するクリップが、さらにサブパスから参照されている場合であっても、クリップの中から1のエレメンタリストリームを特定することができる。
次に、図8を用いて説明したブロックPlayList()におけるブロックSubPath()について、より詳細に説明する。図13は、ブロックSubPath()の一例の構造を表すシンタクスを示す。フィールドlengthは、32ビットのデータ長を有し、このフィールドlength直後からブロックSubPath()の終わりまでのデータ長を示す。8ビットのデータ長を有する予約領域reserved_for_feature_useを介して、8ビットのデータ長を有するフィールドSubPath_typeが配される。フィールドSubPath_typeは、このブロックSubPath()で定義されるサブパスのアプリケーション種類を示す。例えば、フィールドSubPath_typeの値に応じて、当該ブロックSubPath()で定義されるサブパスがオーディオであるか、ビットマップ字幕であるか、テキスト字幕であるかなどが示される。フィールドSubPath_typeの値で定義される各アプリケーション種類の詳細については、後述する。
15ビットのデータ長を有する予約領域reserved_for_feature_useを介して、1ビットのデータ長でフラグis_repeat_SubPathが記述される。フラグis_repeat_SubPathは、メインパスの再生の間に当該ブロックSubPath()で定義されるサブパスの再生を繰り返し行うか、あるいは、当該サブパスの再生を1回のみ行うかを示す。このフラグis_repeat_SubPathは、例えばメインパスによるクリップAVストリームとサブパスが指定するクリップに含まれるストリームとの再生タイミングが異なる場合に用いられる。一例として、メインパスを、複数の静止画を自動的に切り換えながら連続的に再生するスライドショートし、サブパスのオーディオをメインパスのバックグラウンドミュージックとして用いるような場合が考えられる。
フラグis_repeat_SubPathの次に、8ビットのデータ長を有する予約領域reserved_for_feature_useを介して、フィールドnumber_of_SubPlayItemsが配される。フィールドnumber_of_SubPlayItemsは、当該ブロックSubPath()で定義されるサブパスが有するサブプレイアイテムの数を示す。次のforループ文に従い、フィールドnumber_of_SubPlayItemsで示される回数だけ、ブロックSubPlayItem(i)が記述される。
図14は、ブロックSubPlayItem(i)の一例の構造を表すシンタクスを示す。フィールドlengthは、16ビットのデータ長を有し、このフィールドlengthの直後からブロックSubPlayItem(i)の終わりまでのデータ長を示す。次のフィールドClip_Information_file_name[0]は、5バイト(40ビット)のデータ長を有し、クリップを指定するためのクリップインフォメーションファイルのファイル名が記述される。末尾の括弧([ ])内の値は、値subclip_entry_idの値を示す。これは、以下の同様の記述について、共通である。フィールドClip_codec_identifier[0]は、4バイト(32ビット)のデータ長を有し、クリップのコーデック方式が指定される。
31ビットのデータ長を有する予約領域reserved_for_feature_useを介して、1ビットのデータ長のフラグis_multi_Clip_entriesが配される。このフラグis_multi_Clip_entriesは、このブロックSubPlayItem(i)において、複数のクリップに対する参照がなされているか否かが示される。フラグis_multi_Clip_entriesの値がバイナリ値で"1"(「1b」と記す)のときに、複数のクリップに対する参照がなされていることを示す。
次のフィールドref_to_STC_id[0]は、8ビットのデータ長を有し、システムタイムクロック(STC:System Time Clock)の不連続点に関する情報を示す。フィールドSubPlayIten_IN_timeおよびフィールドSubPlayItem_OUT_timeは、それぞれ32ビットのデータ長を有し、サブプレイアイテムの再生開始時刻および再生終了時刻を示す。すなわち、これらフィールドSubPlayIten_IN_timeおよびフィールドSubPlayItem_OUT_timeにより、クリップ中のサブパスに対する再生区間が指定される。
次のフィールドsync_PlayItem_idは、16ビットのデータ長を有し、このブロックSubPlayItem(i)で定義されるサブプレイアイテムによるサブパスが同期するプレイアイテムが示され、32ビットのデータ長を有するフィールドsync_start_PTS_of_PlayItemは、当該サブパスの再生開始時刻をメインパスの時間軸上で指定する。これらフィールドsync_PlayItem_idおよびフィールドsync_start_PTS_of_PlayItemは、メインパスに含まれるクリップAVストリームと、サブパスにより示されるストリームとで再生時刻が異なる場合には、使用されない。
上述したフラグis_multi_Clip_entriesが値"1"であれば、さらに以下の記述が追加される。8ビットのデータ長を有する予約領域reserved_for_feature_useを介してフィールドnum_of_Clip_entriesが配される。このフィールドnum_of_Clip_entriesは、8ビットのデータ長を有し、このブロックSunPlayItem(i)にエントリされるクリップの数が示される。
次のforループ文に従い、値subClip_entry_idの値をループ変数として、フィールドnum_of_Clip_entriesで示される回数だけ、このブロックSunPlayItem(i)にエントリされるクリップの情報が記述される。フィールドフィールドClip_Information_file_name[subClip_entry_id]は、5バイト(40ビット)のデータ長を有し、クリップを指定するためのクリップインフォメーションファイルのファイル名が記述される。フィールドClip_codec_identifier[subClip_entry_id]は、4バイト(32ビット)のデータ長を有し、クリップのコーデック方式が指定される。フィールドref_to_STC_id[subClip_entry_id]は、8ビットのデータ長を有し、システムタイムクロック(STC:System Time Clock)の不連続点に関する情報を示す。
なお、このforループ文は、値subClip_entry_idの値が"1"から開始される。一方、このforループ文内の記述に対応する、上述のif文以前の記述(フィールドClip_Information_file_name[0]、フィールドClip_codec_identifier[0]およびフィールドref_to_STC_id[0])は、値subClip_entry_idの値が"0"として記述されている。また、上述したフィールドSubPlayIten_IN_timeおよびフィールドSubPlayItem_OUT_time、ならびに、フィールドsync_PlayItem_idおよびフィールドsync_start_PTS_of_PlayItemは、forループ文の記述により参照される複数のクリップに対して、共通して用いられる。
図15は、上述したブロックSubPath()におけるフィールドSubPath_typeの値(以下、値SubPath_typeと称する)によって定義される一例のサブパスタイプを示す。この図15の例では、フィールドSubPath_typeの値"2"〜値"7"に対してサブパスタイプが定義され、値"0"および値"1"、ならびに、値"8"〜値"255"は、予約とされている。
なお、図15の表記において、「Out-of-mux」という記述は、そのサブパスのタイプが、サブパスで参照されるエレメンタリストリームが含まれるトランスポートストリームと、メインパスで参照されるエレメンタリストリームが含まれるトランスポートストリームとが異なっている場合のサブパスのタイプであることを示している。換言すれば、「Out-of-mux」という記述は、サブパスで参照されるエレメンタリストリームが、メインパスで参照されるプレイアイテムが含まれるトランスポートストリームに多重化されていないサブパスのタイプであることを示している。以下、「Out-of-mux」という記述で示されるサブパスのタイプを、メインパスTS非多重型のパスと称する。
一方、図15の表記において、「In-mux」という記述は、そのサブパスのタイプが、サブパスで参照されるエレメンタリストリームが含まれるトランスポートストリームと、メインパスで参照される1以上のエレメンタリストリームが含まれるトランスポートストリームとが同一の場合のサブパスのタイプであることを示している。換言すれば、「In-mux」という記述は、サブパスで参照されるエレメンタリストリームが、メインパスで参照されるエレメンタリストリームを含むトランスポートストリームに多重化されているサブパスのタイプであることを示している。さらに換言すれば、「In-mux」という記述は、メインクリップに含まれるトランスポートストリームに、メインのクリップAVストリームと、サブのクリップAVストリームとが含まれている状態である。以下、「In-mux」という記述で示されるサブパスのタイプを、メインパスTS多重型のパスと称する。
また、メインパスで参照されるエレメンタリストリームとサブパスで参照されるエレメンタリストリームとが非同期である場合、そのサブパスのタイプを、以下、非同期型のパスと称する。一方、メインパスで参照されるエレメンタリストリームとサブパスで参照されるエレメンタリストリームとが同期する場合、そのサブパスのタイプを、以下、同期型のパスと称する。
値SubPath_type="2"は、そのサブパスがプラウザブルスライドショーのオーディオプレゼンテーションパスであることを示す。例えば、値SubPath_type="2"は、メインパスTS非多重型のパスであり、非同期型パス、すなわち、プレイリストの中において、サブパスで参照されるオーディオプレゼンテーションパスとプレイアイテムで参照されるメインパスとが非同期であることを示している。
値SubPath_type="3"は、この発明に関わるサブパスタイプであって、そのサブパスがインタラクティブグラフィックスのプレゼンテーションメニューを表示させるためのサブパスであることを示す。例えば、値SubPath_type="3"は、メインパスTS非多重型のパスであり、非同期型パス、すなわちプレイリストの中において、サブパスで参照されるインタラクティブグラフィックスのメニューとプレイアイテムで参照されるメインパスとが非同期であることを示している。
値SubPath_type="4"は、テキスト字幕のプレゼンテーションパスであることを示す。例えば、値SubPath_type=4は、メインパスTS非多重型のパスであり、同期型パス、すなわちプレイリストの中において、サブパスで参照されるテキスト字幕のプレゼンテーションパスとプレイアイテムで参照されるメインパスとが同期していることを示している。
値SubPath_type="5"は、メインパスTS非多重型、且つ、同期型のパスであって、1本以上のエレメンタリストリーム(プライマリオーディオストリーム、PGストリーム、IGストリームまたはセカンダリオーディオストリーム)のパスや、ピクチャインピクチャプレゼンテーションパスであることを示す。
ここで、ピクチャインピクチャプレゼンテーションパスとは、ピクチャインピクチャ手法において、メインパスで参照されるビデオストリームである所定のプライマリビデオストリームに対応して再生される、プライマリオーディオストリームストリーム、セカンダリビデオストリーム、セカンダリオーディオストリームおよびサブタイトルストリームのうちの1以上のパスによるサブパスのタイプであることをいう。
値SubPath_type="6"は、メインパスTS非多重型、且つ、非同期型のパスであって、ピクチャインピクチャプレゼンテーションパスであって、1以上のエレメンタリストリームを含むパスであることを示す。また、値SubPath_type="7"は、メインパスTS多重型、かつ、同期型のパスであって、ピクチャインピクチャプレゼンテーションパスであって、1以上のエレメンタリストリームを含むパスであることを示す。
次に、インタラクティブグラフィクスストリーム(IGストリーム)について説明する。ここでは、IGストリームのうち、この発明に関わりの深い部分に注目して説明する。IGストリームは、上述したように、メニュー表示に用いられるデータストリームにしたものである。例えば、メニュー表示に用いられるボタン画像がIGストリームに格納される。また、IGストリームには、メインパスTS非多重型およびメインパスTS多重型が定義され、メインパスTS非多重型は、プライマリビデオが格納されるメインパスとは非同期のサブパスである、非同期型パスとして定義される。
IGストリームは、クリップAVストリームに多重化される。インタラクティブグラフィクスストリーム(図16A参照)は、図16Bに一例が示されるように、ICS(Interactive Composition Segment)、PDS(Palette Definition Segment)およびODS(Object Definition Segment)の3種類のセグメントからなる。
3種類のセグメントのうち、ICSは、詳細は後述するが、IGの基本構造を保持するためのセグメントである。PDSは、ボタン画像の色情報を保持するためのセグメントである。また、ODSは、ボタンの形状を保持するための情報である。より具体的には、ODSは、ボタン画像そのもの、例えばボタン画像を表示するためのビットマップデータが、ランレングス圧縮など所定の圧縮符号化方式で圧縮符号化されて格納される。
ICS、PDSおよびODSは、図16Cに一例が示されるように、それぞれ必要に応じて所定に分割され、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(トランスポートストリーム)によるトランスポートパケットに詰め込まれる(図16D)。トランスポートパケット毎の順序や、トランスポートパケットに格納されたデータを識別する識別情報などがPIDに格納される。
図17は、ICSのヘッダ情報の一例の構造を表すシンタクスを示す。ICSのヘッダは、ブロックsegment_descriptor()、ブロックvideo_descriptor()、ブロックcomposition_descriptor()、ブロックsequence_descriptor()およびブロックinteractive_composition_data_fragemnt()からなる。ブロックsegment_descriptor()は、このセグメントがICSであることを示す。ブロックvideo_descriptor()は、このメニューと同時に表示されるビデオのフレームレートや画枠サイズを示す。ブロックcomposition_descriptor()は、このICSのステータスを示す。ブロックsequence_descriptor()は、このICSが複数のPESパケットに跨るか否かを示す。
より具体的には、このブロックsequence_descriptor()は、現在のPESパケットに含まれるICSが1つのIGストリームの先頭または最後尾の何れのICSであるか否かを示す。
すなわち、上述したように、データサイズが64KBと固定的とされたPESパケットに対して、ICSのデータサイズが大きい場合には、ICSが所定に分割されてPESパケットにそれぞれ詰め込まれる。このとき、この図7に示されるヘッダ部分は、ICSが分割して詰め込まれたPESパケットのうち先頭および最後尾のPESパケットにだけあればよく、途中のPESパケットにおいては省略することができる。このブロックsequence_descriptor()が先頭および最後尾を示していれば、ICSが1つのPESパケットに収まっていることが分かる。
図18は、ブロックinteractive_composition_data_fragemnt()の一例の構造を表すシンタクスを示す。なお、図18では、自身のブロックがブロックinteractive_composition()として示されている。フィールドintaractive_composition_lengthは、24ビットのデータ長を有し、ブロックinteractive_composition()のこのフィールドintaractive_composition_length以降の長さを示す。フィールドstream_modelは、1ビットのデータ長を有し、このストリームが多重化されているか否かを示す。
フィールドstream_modelの値が"0"であれば、多重化されていることを示し、MPEG2トランスポートストリーム内に、インタラクティブグラフィクスストリームと共に関連する他のエレメンタリストリームが多重化されている可能性があることを示す。フィールドstream_modelの値が"1"で非多重化を示し、MPEG2トランスポートストリーム内にはインタラクティブグラフィクスストリームのみが存在することを示す。すなわち、インタラクティブグラフィクスストリームは、AVストリームに対して多重化することもできるし、単独でクリップAVストリームを構成することもできる。なお、非多重化であるインタラクティブグラフィクスストリームは、非同期のサブパス(上述した値SubPath_type="3")としてのみ、定義される。
フィールド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)で記述される。
フィールドuser_time_out_durationは、24ビットのデータ長を有し、このメニュー表示の自動初期化時間を示す。次のフィールドnumber_of_pageは、8ビットのデータ長を有し、このメニューが有するページ数を、初期値を"0"として示す。すなわち、このメニュー表示が階層構造を有し、複数のページを有するときは、フィールドnumber_of_pageの値は、"1"以上を示す。このフィールドnumber_of_pageで示された回数だけ、次のfor文からのループが繰り返され、メニュー表示における各ページがそれぞれ定義される。
上述したようなデータ構造を有するディスクがプレーヤに装填されると、プレーヤは、ディスクから読み出されたムービーオブジェクトなどに記述されたコマンドを、プレーヤ内部のハードウェアを制御するための固有のコマンドに変換する必要がある。プレーヤは、このような変換を行うためのソフトウェアを、プレーヤに内蔵されるROM(Read Only Memory)にあらかじめ記憶している。このソフトウェアは、ディスクとプレーヤを仲介してプレーヤにBD−ROMの規格に従った動作をさせることから、BD仮想プレーヤと称される。
図19は、このBD仮想プレーヤの動作を概略的に示す。図19Aは、ディスクのローディング時の動作の例を示す。ディスクがプレーヤに装填されディスクに対するイニシャルアクセスがなされると(ステップS30)、1のディスクにおいて共有的に用いられる共有パラメータが記憶されるレジスタが初期化される(ステップS31)。そして、次のステップS32で、プログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク装填時のように、ディスクの再生が初めて行われることをいう。
図19Bは、プレーヤが停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。最初の停止状態(ステップS40)に対して、ユーザにより、例えばリモートコントロールコマンダなどを用いて再生が指示される(UO:User Operation)。再生が指示されると、先ず、レジスタすなわち共通パラメータが初期化され(ステップS41)、次のステップS42で、プレイリストの再生フェイズに移行する。なお、この場合にレジスタがリセットされない実装としてもよい。
ムービーオブジェクトの実行フェイズにおけるプレイリストの再生について、図20を用いて説明する。UOなどにより、タイトル番号#1のコンテンツを再生開始する指示があった場合について考える。プレーヤは、コンテンツの再生開始指示に応じて、上述した図2に示されるインデックステーブル(Index Table)を参照し、タイトル#1のコンテンツ再生に対応するオブジェクトの番号を取得する。例えばタイトル#1のコンテンツ再生を実現するオブジェクトの番号が#1であったとすると、プレーヤは、ムービーオブジェクト#1の実行を開始する。
この図20の例では、ムービーオブジェクト#1に記述されたプログラムは2行からなり、1行目のコマンドが"Play PlayList(1)"であるとすると、プレーヤは、プレイリスト#1の再生を開始する。プレイリスト#1は、1以上のプレイアイテムから構成され、プレイアイテムが順次再生される。プレイリスト#1中のプレイアイテムの再生が終了すると、ムービーオブジェクト#1の実行に戻り、2行目のコマンドが実行される。図20の例では、2行目のコマンドが"jump TopMenu"であって、このコマンドが実行されインデックステーブルに記述されたトップメニュー(Top Menu)を実現するムービーオブジェクトの実行が開始される。
次に、この発明の実施の形態に適用可能な画像の表示系について説明する。この発明の実施の形態では、画像の表示系について、図21に一例が示されるようなプレーン構成を取る。動画プレーン10は、最も後ろ側(ボトム)に表示され、プレイリストで指定された画像(主に動画データ)が扱われる。字幕プレーン11は、動画プレーン10の上に表示され、動画再生中に表示される字幕データが扱われる。インタラクティブグラフィクスプレーン12は、最も前面に表示され、メニュー画面を表示するための文字データや、ボタン画像用のビットマップデータなどのグラフィクスデータが扱われる。1つの表示画面は、これら3つのプレーンが合成されて表示される。
なお、以下では、グラフィクスプレーン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方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
図22は、上述の図21のプレーン構成に従い3つのプレーンを合成するグラフィクス処理部の一例の構成を示す。この図22に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。動画プレーン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形式のファイルに対応したパレット情報がテーブルとして格納され、入力された8ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ8ビットのデータからなるRGB(4:4:4)のデータが出力される。それと共に、パレット22Aでは、不透明度を表すアルファチャンネルのデータαが取り出される。
図23は、パレット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ストリームによるメニュー表示に対する操作を可能とする。
図24〜図26を用いて、IGストリームによるメニュー表示と、メインパスのプレイリストに基づき再生されるビデオストリームとを合成して表示する例について、概略的に説明する。
図24は、IGストリームにより表示される一例のメニュー表示を示す。この例では、IGストリームにより、メニューの背景200が表示されると共に、ボタン201A、ボタン201Bおよびボタン201Cが表示される。これらボタン201A、201Bおよび201Cは、例えばリモートコントロールコマンダの十字キーの操作により右または左が指示されると、操作に応じて順次、選択状態とされる。さらに、ボタンが選択状態になっているときに、例えば十字キーの操作により下が指示されると、プルダウンメニュー202が表示される。プルダウンメニュー202が表示されている状態で例えば十字キーの操作により上または下が指示されると、プルダウンメニュー202の各ボタン203A、203Bおよび203Cが操作に応じて順次、選択状態とされる。決定ボタンの操作により、選択されたボタンに割り当てられた機能がプレーヤに実行される。
このようなメニュー表示と、図25に一例が示される、メインパスのプレイアイテムにより再生され動画プレーン10に表示される動画データとを合成する場合について考える。図24の画面中、プルダウンメニュー202部分を含むメニュー表示以外の部分の不透明度αが"0"に設定され、インタラクティブグラフィクスプレーン12と、動画プレーン10とが合成される。これにより、図26に一例が示されるように、図25に例示される動画データに対して図24に例示されるメニュー表示が合成された表示が得られる。
この発明の実施の一形態では、メインパスのプレイアイテムにより再生され動画プレーン10に表示される動画データは、STCに基づき処理を行う。一方、非同期型パスのサブパスによりグラフィクスプレーン12に表示されるメニュー表示は、メインパスのプレイアイテムにより再生される動画データとは異なる系統のクロック、例えばフリーランのクロックに基づき処理を行うようにする。これにより、例えば図26のように、メインパスによる動画データと、サブパスによるメニュー表示とが1画面に同時に表示されている場合に、動画データをポーズ状態としても、メニュー表示に対する選択や決定の操作や、操作に応じたメニュー表示のボタン画像の表示などを行うことができる。
図27は、この発明の実施の一形態による表示制御を行うための一例の構成を概略的に示す。STC部400は、STCを発生する。STC部400で発生されたSTCは、第1のスイッチであるスイッチ部410の選択入力端410Bに供給され、スイッチ部410の選択に応じてIGデコーダ402に供給されると共に、第2のスイッチ部であるスイッチ部411を介してビデオデコーダ403に供給される。フリーランクロック部401は、任意の周波数のクロックCLKを発生する。クロックCLKは、スイッチ部410の選択入力端410Aに供給され、スイッチ部410の選択に応じてIGデコーダ402に供給される。
IGデコーダ402は、供給されるクロックCLKまたはSTCに基づきIGストリームをデコードし、インタラクティブグラフィクスプレーン12に供給可能な状態とする。同様に、ビデオデコーダ403は、供給されるSTCに基づきメインパスのビデオストリームをデコードし、動画プレーン10に供給可能な状態とする。
コントローラ420は、例えばリモートコントロールコマンダといった操作部(図示しない)に対する操作に応じた処理を行う。例えば、コントローラ420は、操作部に対する操作に応じて、スイッチ部410、スイッチ部411およびスイッチ部412を制御する。また、コントローラ420は、IGデコーダ402を制御するための制御信号を、第3のスイッチ部であるスイッチ部412を介してIGデコーダ402に対して供給する。スイッチ部412をON/OFFすることで、IGデコーダ402による出力のON/OFFを制御することができる。
図28および図29のフローチャートを用いて、この発明の実施の一形態による表示制御方法について説明する。図28において、メインパスによるプレイリストに基づくビデオストリームの再生が開始されると、先ず、ステップS10で、当該プレイリストから参照されているサブパスのタイプが調べられる。すなわち、ステップS10では、当該プレイリストのブロックPlayList()内のブロックSubPath()が参照され、このブロックSubPath()内のフィールドSubPath_typeの値が"3"であるか否かが判断される。図15を用いて既に説明したように、フィールドSubPath_typeの値が"3"で、当該サブパスがインタラクティブグラフィクスのプレゼンテーションメニューを表示するためのサブパスであることが示される。
より具体的には、ステップS10において、先ず、図8に示すプレイリストのブロックPlayList()内のブロックPlayItem()が参照され、当該ブロックPlayItem()内のブロックSTN_table()が参照される(図9参照)。さらに、ブロックSTN_table()において、選択するIGストリームのブロックstream_entry()が検索され、このブロックstream_entry()により特定されるストリームのタイプを示すフィールドtypeの値が取得される。ここで、このフィールドtypeの値が"1"または"3"であれば、メインパスのクリップが参照されるので、フィールドSubPath_typeの値が"3"とはならないことが分かる。
なお、IGストリームの選択は、例えばリモートコントロールコマンダによるユーザ操作に応じて、操作入力を制御するためのコントローラなどによりなされる。例えば、操作入力制御コントローラは、ユーザ操作に応じて、選択するIGストリームを特定するための値IG_stream_idを生成し、プレイリストのシンタクスを解釈するためのコントローラに渡す。このコントローラは、渡された値IG_stream_idに基づきブロックSTN_table()を参照し、対応するブロックstream_entry()を検索する。また、値IG_stream_idは、デフォルト値として値"0"が設定される。
フィールドtypeの値が"2"であれば、このブロックstream_entry()内のフィールドref_to_SubPath_idの値が取得され、プレイリストのブロックPlayList()から、取得されたフィールドref_to_SubPath_idの値に対応するブロックSubPath()が参照され、このブロックSubPath()内のフィールドSubPath_typの値が取得される。
若し、ステップS10で、サブパスタイプを示す値SubPath_typeが"3"であると判断されれば、処理はステップS11に移行される。ステップS11では、第1のスイッチであるスイッチ部410において選択入力端410Aが選択され、フリーランのクロックCLKがIGデコーダ402に供給されると共に、第3のスイッチであるスイッチ部412がON状態とされる。また、第2のスイッチであるスイッチ部411がON状態とされ、ビデオデコーダ403に対してSTCが供給される。これにより、IGデコーダ402の出力と、ビデオデコーダ403の出力とが非同期的に制御される。
一方、ステップS10で、サブパスタイプを示す値Subpath_typeが"3"以外であると判断されれば、処理はステップS12に移行される。ステップS12では、スイッチ部410において選択入力端410Bが選択されると共にスイッチ部411がON状態とされ、STCがIGデコーダ402およびビデオデコーダ403にそれぞれ供給される。また、スイッチ部412がONとされる。これにより、IGデコーダ402の出力とビデオデコーダ403の出力とがSTCに対して同期的に制御される。
図29は、メインパスのプレイリストに基づくビデオストリームの再生中に、ユーザ操作によりポーズが指定された場合の一例の処理を示す。例えばリモートコントロールコマンダなどの操作部によるユーザ操作で、再生中のビデオストリームに対してポーズ(一時停止)が指示される。この指示は、コントローラ420に渡される。この指示に応じて、コントローラ420により、当該プレイリストから参照されているサブパスのタイプが調べられ、サブパスのタイプを示す値SubPath_typeの値が"3"であるか否かが判断される(ステップS20)。このステップS20の処理は、上述した図28におけるステップS10と同一なので、詳細な説明を省略する。
若し、サブパスタイプを示す値SubPath_typeが"3"であると判断されれば、処理はステップS21に移行される。ステップS21では、第1のスイッチであるスイッチ部410において選択入力端410Aが選択され、フリーランのクロックCLKがIGデコーダ402に供給されると共に、第3のスイッチであるスイッチ部412がON状態とされる。また、第2のスイッチであるスイッチ部411がOFF状態とされる。
これにより、メインパスのプレイアイテムに基づくビデオストリームの再生が一時停止状態とされると共に、IGデコーダ402においてIGストリームのデコードおよび出力が可能な状態とされる。したがって、ポーズ状態において、ユーザ操作に応じたIGストリームによる表示制御が可能とされる。
次のステップS22で、ユーザ操作によりポーズ解除の指示がなされたか否かが判断される。若し、ポーズ解除の指示がなされたと判断されれば、処理はステップS23に移行され、上述したステップS11の状態に戻される。すなわち、スイッチ部410において選択入力端410Aが選択され、フリーランのクロックCLKがIGデコーダ402に供給されると共に、スイッチ部412がON状態とされる。また、スイッチ部411がON状態とされ、ビデオデコーダ403に対してSTCが供給される。
一方、ステップS22で、ポーズ解除の指示がなされていないと判断されれば、処理はステップS24に移行され、インタラクティブUO(User Operation)またはナビゲーションコマンドが受信されたか否かが判断される。インタラクティブUOおよびナビゲーションコマンドの何れも受信されていないと判断されれば、処理はステップS22に戻される。
ステップS24で、インタラクティブUOまたはナビゲーションコマンドが受信されたと判断されれば、処理はステップS25に移行され、受信されたインタラクティブUOまたはナビゲーションコマンドが実行される。
インタラクティブUOは、IGストリームにより表示されるメニュー表示などに基づき、リモートコントロールコマンダなどの操作部に対するユーザ操作によりなされる指示である。例えば、操作部に対する操作に応じた、メニューに表示される選択ボタンの移動や決定の指示、ポップアップメニューのON/OFFの指示などが、インタラクティブUOによる指示として、操作部から送信される。
また、ナビゲーションコマンドは、オブジェクトレイヤにおいてプレイリストの再生制御を行うためのコマンドである。例えば、ストリーム選択、音声や字幕の切り換え、アングル切り換え、ピクチャインピクチャの切り換えなどを制御するためのコマンドが、ナビゲーションコマンドとして用意される。ナビゲーションコマンドは、例えばインタラクティブUOに連動して、送信される。
上述した図26の例では、メニュー表示を表示させる操作、メニュー表示においてボタン201A、201Bおよび201Cを選択する操作や、選択されたボタンに対応したプルダウンメニュー202を表示させる操作、プルダウンメニュー202上のボタン203A、203Bおよび203Cを選択、決定する操作がインタラクティブUOである。また、インタラクティブUOにより、ボタン203Bが決定されると、当該ボタン203Bに割り当てられたナビゲーションコマンドが送信される。このような、インタラクティブUOやナビゲーションコマンドを受信したか否かの判断、受信された場合の処理が、ステップS24およびステップS25においてなされる。
なお、ステップS24において受信されたナビゲーションコマンドが、チャプタジャンプや、再生タイトルの切り換えといった、ストリームの再生位置を変更するようなコマンドである場合には、ポーズ状態の解除が、ポーズ解除の指示を待たずに行われる。一方、音声や字幕の切り換え、アングルの切り換え、ピクチャインピクチャ表示への切り替えといったコマンドは、ストリームの再生位置を変更しないので、ポーズ状態が維持される。
上述したステップS20で、サブパスタイプを示す値Subpath_typeが"3"以外であると判断されれば、処理はステップS26に移行される。ステップS12では、スイッチ部410、スイッチ部411およびスイッチ部412が何れもOFF状態とされる。これにより、メインパスのプレイアイテムに基づくビデオストリームの再生が一時停止状態にされると共に、IGストリームのデコードが停止され、メニュー表示がOFFとされる。
そして、ポーズ解除の指示がなされると(ステップS27)、処理はステップS28に移行され、上述したステップS12の状態に戻される。すなわち、スイッチ部410において選択入力端410Bが選択されると共にスイッチ部411がON状態とされ、STCがIGデコーダ402およびビデオデコーダ403にそれぞれ供給される。また、スイッチ部412がONとされる。これにより、IGデコーダ402の出力とビデオデコーダ403の出力とがSTCに対して同期的に制御される。
このように、この発明の実施の一形態では、STCに対して独立的なフリーランクロックCLKを設け、IGストリームを再生するためのサブパスが、メインパスと非同期、且つ、メインパスで参照されるプレイアイテムが含まれるトランスポートストリームに多重化されていないタイプのサブパスである場合に、IGストリームをデコードするIGデコーダ402を、フリーランクロックCLKで動作させるようにしている。そのため、STCに基づき再生される、メインパスのビデオストリームをポーズ状態としてもIGストリームのデコードが可能とされ、メインパスのビデオストリームの再生一時停止中でも、IGストリームによるメニュー表示に対する操作を行うことができる。
なお、上述では、IGストリームをメインパスに対して非同期で制御するか否かを、メインパスのプレイリストを解析し、プレイリストの解析によって取得されたサブパスタイプ情報に基づき判断するように説明したが、これはこの例に限定されない。すなわち、メインパスおよびサブパスのストリームそのものに基づき、この判断を行うようにできる。例えば、メインパスに対応したサブパスのストリームが1つしかなく、且つ、当該サブパスのストリームがIGストリームであれば、当該サブパスのストリームをメインパスに対して非同期で制御することができると判断可能である。
次に、上述した実施の一形態に適用可能な再生装置について説明する。図30は、この発明の実施の一形態に適用可能な再生装置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の全体的な動作を制御する。図27を用いて説明したコントローラ420は、このコントローラ部53に対応する。
また、図示は省略するが、再生装置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"内のプレイリストファイルを読み出し、メインパス、サブパスに関する情報や、プレイアイテム内のブロックSTN_table()の情報などがコントローラ部53に読み込まれる。コントローラ部53は、プレイリストファイルに含まれるプレイアイテムが参照するクリップAVストリームを、ディスクからストレージドライブ50を介して読み出す。また、コントローラ部53は、プレイリストがサブプレイアイテムを含む場合は、サブプレイアイテムにより参照されるクリップAVストリームやサブタイトルデータも、ディスクからストレージドライブ50を介して読み出す。
コントローラ部53は、読み込まれたプレイリストファイルの情報を解析して、メインパスに対応するサブパスのタイプを値SubPath_typeに基づき判断する。そして、判断結果に基づき後述するインタラクティブグラフィクスデコーダ77をSTCで動作させるか、フリーランクロックCLKで動作させるかを選択する。
なお、以下では、サブプレイアイテムに対応するクリップ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に供給される。
図27を用いて説明したビデオデコーダ403は、例えば、1stビデオデコーダ69に対応する。ビデオデコーダ403が1stビデデコーダ69および2ndビデオデコーダ72にそれぞれ対応していてもよい。なお、この図30において、図27に示したSTC部400およびスイッチ部411は、省略されている。
ビデオデータ処理部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に供給される。図27を用いて説明したIGデコーダ402は、このインタラクティブグラフィクスデコーダ77に対応する。なお、この図30において、フリーランクロック部400、スイッチ部410およびスイッチ部412は、省略されている。
インタラクティブグラフィクスデコーダ77は、供給されたIGストリームによるパケットからIGストリームのICS、PDSおよびODSを所定に取り出してデコードする。例えば、インタラクティブグラフィクスデコーダ77は、供給されたパケットのペイロードからデータを取り出し、PESパケットを再構築する。そして、このPESパケットのヘッダ情報などに基づき、IGストリームのICS、PDSおよびODSをそれぞれ取り出す。デコードされたICSはおよびPDSは、CB(Composition Buffer)と呼ばれるバッファに格納される。また、ODSは、DB(Decoded Buffer)と呼ばれるバッファに格納される。例えば図30におけるプリロードバッファ78が、これらCBおよびDBに相当する。
なお、PESパケットは、再生出力に関する時間管理情報であるPTS(Presentation Time Stamp)と、復号化に関する時間管理情報であるDTS(Decoding Time Stamp)とを有している。IGストリームによるメニュー表示は、対応するPESパケットに格納されるPTSにより時間管理されて表示される。例えば、上述したプリロードバッファに格納されたIGストリームを構成する各データは、PTSに基づき所定の時間に読み出すように制御される。このとき、PTSの基準となる時間情報は、IGストリームのサブパスタイプに応じて、STCまたはフリーランクロックCLKのうち何れかが用いられる。PTSの基準としてフリーランクロックCLKを用いている場合には、IGストリームによるメニュー表示は、上述した1stビデオデコーダ69や2ndビデオデコーダ72の主つつ力とは非同期となる。
プリロードバッファ78から読み出されたIGストリームのデータは、インタラクティブグラフィクスプレーン生成部79に供給され、インタラクティブグラフィクスプレーンが生成される。このインタラクティブグラフィクスプレーンは、例えば上述の図21に例示したグラフィクスプレーン12に対応する。
ビデオデータ処理部71は、例えば図22を用いて説明したグラフィクス処理部を含み、供給されたビデオプレーン(図22における動画プレーン10)、プレゼンテーショングラフィクスプレーン(図22における字幕プレーン11)およびインタラクティブグラフィクスプレーン(図22におけるグラフィクスプレーン12)を、所定に合成して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に記録することも考えられる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。