(57)【特許請求の範囲】
【請求項１】
再生装置によって再生されるコンテンツデータを含むデータ構造であって、
上記データ構造は、
１または複数のフレームを単位としてエンコードされているビデオストリームと、該エンコード単位毎に設けられた、該ビデオストリームのアングルを該エンコード単位の先頭で切り替え可能か否かを示す識別情報とを含み、
上記データ構造が上記再生装置に読み込まれたとき、
上記識別情報に基づく位置で、上記アングル毎にインタリーブされて記録された上記ビデオストリームの再生位置を変更して該アングルを構成するビデオストリームを読み出すことを可能にさせる上記データ構造が用いられた処理を、上記再生装置に行わせるデータ構造。
【請求項２】
請求項１に記載のデータ構造であって、
上記識別情報が上記アングルの終端側の所定領域に設けられている
データ構造。
【請求項３】
請求項２に記載のデータ構造であって、
上記所定領域の大きさは、第１の領域から第２の領域への最大アクセス時間と、上記ビデオストリームの読み出し速度と該ビデオストリームの再生速度との差分とに基づく
データ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ブルーレイディスク(Blu-ray Disc)といった大容量の記録媒体に記録されたプログラムに対するユーザによるインタラクティブな操作を可能とするデータ構造に関する。
【背景技術】
【０００２】
近年、記録可能で記録再生装置から取り外し可能なディスク型記録媒体の規格として、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（ブルーレイディスク）規格が提案されている。Ｂｌｕ−ｒａｙ  Ｄｉｓｃ規格では、記録媒体として直径１２ｃｍ、カバー層０．１ｍｍのディスクを用い、光学系として波長４０５ｎｍの青紫色レーザ、開口数０．８５の対物レンズを用いて、最大で２７ＧＢ（ギガバイト）の記録容量を実現している。これにより、日本のＢＳディジタルハイビジョン放送を、画質を劣化させることなく２時間以上記録することが可能である。
【０００３】
この記録可能光ディスクに記録するＡＶ(Audio/Video)信号のソース（供給源）としては、従来からの、例えばアナログテレビジョン放送によるアナログ信号によるものと、例えばＢＳディジタル放送をはじめとするディジタルテレビジョン放送によるディジタル信号によるものとが想定されている。Ｂｌｕ−ｒａｙ  Ｄｉｓｃ規格では、これらの放送によるＡＶ信号を記録する方法を定めた規格は、既に作られている。
【０００４】
一方で、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃのの派生規格として、映画や音楽などが予め記録された、再生専用の記録媒体を開発する動きが進んでいる。映画や音楽を記録するためのディスク状記録媒体としては、既にＤＶＤ(Digital Versatile Disc)が広く普及しているが、このＢｌｕ−ｒａｙ  Ｄｉｓｃの企画に基づいた再生専用光ディスクは、Ｂｌｕ−ｒａｙ  Ｄｉｓｃの大容量および高速な転送速度などを活かし、ハイビジョン映像を高画質なままで２時間以上収録できる点が、既存のＤＶＤとは大きく異なり、優位である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃの規格では、ディスクに記録されている映像コンテンツの一覧を画面表示する方法や、その一覧表上にカーソルを表示させ、再生したい映像コンテンツをユーザに選択させるなどといったユーザインターフェイスに関する機能が定められていない。これらの機能は、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに対する記録再生を行う記録再生装置本体によって実現されている。そのため、同一の記録媒体を再生した場合でも、再生に用いた記録再生装置によってコンテンツ一覧画面のレイアウトが異なってしまい、ユーザインタフェースにも差が生じ、必ずしもユーザにとって使い易いものではない。再生専用ディスクとしては、再生機器によらず、ディスク（コンテンツ）制作者が意図した通りのメニュー画面などが表示され、意図通りのユーザインターフェイスが実現される必要がある。
【０００６】
さらに、映像コンテンツの再生中に選択画面が表示され、ユーザの選択によってストーリーが分岐していくマルチストーリーの機能は、一般にインタラクティブ機能とも呼ばれる。このインタラクティブ機能を実現するためには、ディスク制作者が再生順序や分岐を定めたシナリオを作り、そのシナリオをプログラム言語、スクリプト言語等を使って記述し、ディスクに記録しておく必要がある。再生装置側では、そのプログラムを読み込み、実行することで、制作者の意図に従った映像コンテンツの再生や、分岐のための選択画面提示を実現することになる。
【０００７】
このように、現状のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格(Blu-ray Disc Rewritable Format Ver1.0)では、この制作者の意図通りのユーザインターフェイスを実現するための、メニュー画面や分岐選択画面の構成方法、ユーザ入力に対する処理を記述する方法が定められていない。そのため、現状では、Ｂｌｕ−ｒａｙ  Ｄｉｓｃを用いて、制作者が意図したシナリオ通りの再生を、再生装置の製造メーカや機種に左右されることなく互換性を持たせた形で実現することが難しいという問題点があった。
【０００８】
また、再生専用ディスクにおいては、同一の被写体を複数のカメラで撮影し、ユーザが好みのアングルでの視聴を選択できるマルチアングル機能が制作者側より求められており、これを実現できる仕組みを用意する必要がある。
【０００９】
一方、従来から、例えばＤＶＤ(Digital Versatile Disc)の規格においては、上述のようなインタラクティブな機能が既に実現されていた。例えば、ＤＶＤビデオにより動画を再生中に、リモートコントロールコマンダなどを用いてメニュー画面を呼び出し、例えばメニュー画面上に配置されたボタンを選択するなどして、再生場面を変更するなどの処理が可能であった。また、マルチアングル機能も実現されていた。
【００１０】
このように、ＤＶＤといった従来の記録媒体で実現されていたようなユーザインターフェイスやインタラクティブな機能を、Ｂｌｕ−ｒａｙ  Ｄｉｓｃといった大容量の記録媒体を再生専用ディスクとして用いた場合にも実現できることが求められている。
【００１１】
したがって、この発明の目的は、大容量の記録済み媒体において自由度の高いユーザインターフェイスを実現するための記録媒体を提供することにある。
【００１２】
また、この発明の他の目的は、大容量の記録済み媒体において、より表現豊かなユーザインターフェイスを実現する記録媒体を提供することにある。
【課題を解決するための手段】
【００１３】
この発明は、上述した課題を解決するために、再生装置によって再生されるコンテンツデータを含むデータ構造であって、データ構造は、１または複数のフレームを単位としてエンコードされているビデオストリームと、該エンコード単位毎に設けられた、該ビデオストリームのアングルを該エンコード単位の先頭で切り替え可能か否かを示す識別情報とを含み、データ構造が上記再生装置に読み込まれたとき、識別情報に基づく位置で、アングル毎にインタリーブされて記録されたビデオストリームの再生位置を変更して該アングルを構成するビデオストリームを読み出すことを可能にさせるデータ構造が用いられた処理を、再生装置に行わせるデータ構造である。
【発明の効果】
【００１４】
上述したように、この発明は、記録媒体に、ビデオストリームと、ビデオストリームの再生単位毎に設けられた、再生単位が複数のアングルで再生できるものであるか否かを示す第１のフラグと、再生単位が含むアングル数と、アングルそれぞれのビデオストリーム上での位置を示す位置情報とが記録され、位置情報に基づきアングルを構成するビデオストリームを読み出すことができるようにしているため、再生単位のビデオストリームを再生中にアングルを切り替えることができる効果がある。
【００１５】
また、この発明は、主として再生されるメインストリームと、メインストリームに対して従としてメインストリームと共に再生されるサブストリームと、サブストリームをメインストリームに対して非同期に繰り返し再生するか否かを示すフラグとが記録され、フラグに基づきサブストリームの再生を制御できるようにしているため、メインストリームを再生中に、サブストリームをメインストリームに対して非同期に繰り返し再生することができる効果がある。
【００１６】
また、この発明は、ビデオデータとビデオデータに対応して再生されるオーディオデータと、ビデオデータとオーディオデータとが多重化されているか、それぞれ独立的なファイルとされているかを少なくとも示すフラグとが記録され、ビデオデータとオーディオデータとを、フラグに基づき再生できるようにしているため、ビデオデータおよびオーディオデータの記録媒体からの読み出し方法をフラグに基づき制御することができる効果がある。
【図面の簡単な説明】
【００１７】
【図１】ＡＶストリームファイルの再生順序指定の仕組みを模式的に示す略線図である。
【図２】クリップＡＶストリーム、クリップ情報、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ図である。
【図３】複数のプレイリストから同一のクリップを参照する方法を説明するための略線図である。
【図４】記録媒体に記録されるファイルの管理構造を説明するための略線図である。
【図５】ファイル「info.bdav」の一例の構造を表すシンタクスを示す略線図である。
【図６】ブロックUIAppInfoBDAV()の一例の構造を表すシンタクスを示す略線図である。
【図７】ブロックTableOfPlayLists()の一例の構造を表すシンタクスを示す略線図である。
【図８】ファイル「#####.rpls」および「#####.vpls」の一例の構造を表すシンタクスを示す略線図である。
【図９】ブロックUIAppInfoPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図１０】ブロックPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図１１】ブロックPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図１２】ブリッジクリップを説明するための略線図である。
【図１３】ブロックPlayListMark()の一例の構造を表すシンタクスを示す略線図である。
【図１４】ファイル「%%%%%.clpi」の一例の構造を表すシンタクスを示す略線図である。
【図１５】この発明の実施の一形態で画像の表示系として用いられるプレーン構造の一例を示す略線図である。
【図１６】動画プレーン、字幕プレーンおよびグラフィクスプレーンの一例の解像度および表示可能色を示す略線図である。
【図１７】動画プレーン、字幕プレーンおよびグラフィクスプレーンを合成する一例の構成を示すブロック図である。
【図１８】パレットの入出力データの一例を示す略線図である。
【図１９】パレットに格納される一例のパレットテーブルを示す略線図である。
【図２０】グラフィクスプレーンに表示されるメニュー画面の一例を示す略線図である。
【図２１】独自に定義されたシナリオ記述言語を用いた場合のシナリオの一例の内部構造を示す略線図である。
【図２２】シナリオの構成の分類を説明するための略線図である。
【図２３】シナリオの構成の分類を説明するための略線図である。
【図２４】タイトルおよびチャプタについて説明するための略線図である。
【図２５】ＢＤ仮想プレーヤモデルについて説明するための略線図である。
【図２６】シナリオで記述されるコマンドによるＢＤ仮想プレーヤ３０の動作を概略的に示すフローチャートである。
【図２７】プレイリストの再生動作を説明するためのフローチャートである。
【図２８】シナリオで用いられるコマンドの一例を示す略線図である。
【図２９】この実施の一形態による一例のファイルの管理構造を示す略線図である。
【図３０】ファイル「scenario.hdmv」の一例の構造を表すシンタクスを示す略線図である。
【図３１】ブロックAutoplay()の一例のデータ構造を表すシンタクスを示す略線図である。
【図３２】ブロックScenario()の一例の構造を表すシンタクスを示す略線図である。
【図３３】ファイル「entrylist.data」の一例のデータ構造を表したシンタクスを示す略線図である。
【図３４】ブロックAppInfo()の一例の構造を表すシンタクスを示す略線図である。
【図３５】ブロックScenarioEntry()の一例の構造を表すシンタクスを示す略線図である。
【図３６】ファイル「xxxx.mpls」の一例の構造を表すシンタクスを示す略線図である。
【図３７】ブロックPLControlInfo()の一例の構造を表すシンタクスを示す略線図である。
【図３８】フィールドPL_playback_typeについて説明するための図である。
【図３９】フィールドPL_random_access_modeについて説明するための図である。
【図４０】ブロックPlayList()の一例の構造を表すシンタクスを示す略線図である。
【図４１】ブロックPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図４２】フィールドPI_random_access_modeについて説明するための図である。
【図４３】フィールドstill_modeについて説明するための図である。
【図４４】フィールドis_seamless_angle_changeについて説明するための図である。
【図４５】ブロックSubPlayItem()の一例の構造を表すシンタクスを示す略線図である。
【図４６】フィールドis_repeat_flagについて説明するための図である。
【図４７】サブプレイアイテムのメインのプレイアイテムに対する同期再生について説明するための図である。
【図４８】ファイル「zzzzz.clpi」の一例の構造を表すシンタクスを示す略線図である。
【図４９】ブロックClipInfo()の一例の構造を表すシンタクスを示す略線図である。
【図５０】フィールドapplication_typeについて説明するための図である。
【図５１】ブロックSequenceInfo()の一例の構造を表すシンタクスを示す略線図である。
【図５２】ブロックProgramInfo()の一例の構造を表すシンタクスを示す略線図である。
【図５３】ブロックStreamCodingInfo()一例の構造を表すシンタクスを示す略線図である。
【図５４】ブロックCPI()の一例の構造を表すシンタクスを示す略線図である。
【図５５】フィールドCPI_typeについて説明するための図である。
【図５６】ブロックEP_map_for_HDMV()の一例のデータ構造を表すシンタクスを示す略線図である。
【図５７】エクステントについて説明するための図である。
【図５８】クリップＡＶストリームがディスク上に断片化して記録されている状態の例を示す略線図である。
【図５９】マルチアングル機能について説明するための図である。
【図６０】一つのインタリーブユニット中に複数のアングル切り替え可能点を設けることを説明するための図である。
【図６１】フラグis_angle_change_pointについて説明するための図である。
【図６２】ノンシームレスのマルチアングルブロックの例を示す略線図である。
【図６３】ノンシームレスのマルチアングルブロックでアングル切り替えを行ったときに不連続点が生じてしまったことを説明するための図である。
【図６４】ノンシームレスのマルチアングルブロックの第１の再生方法について説明するための図である。
【図６５】ノンシームレスのマルチアングルブロックの第２の再生方法について説明するための図である。
【図６６】この発明の実施の一形態に適用できるプレーヤデコーダ１００の一例の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１８】
以下、この発明の実施の一形態について説明する。この発明の実施の一形態では、記録再生規格であるＢｌｕ−ｒａｙ  Ｄｉｓｃ規格(Blu-ray Disc Rewritable Format Ver1.0)を元に、再生専用ディスクで必要となるインタラクティブ機能や、マルチアングル機能などの機能を実現できるようにした。
【００１９】
先ず、理解を容易とするために、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関し、"Blu-ray Disc Rewritable Format Ver1.0 part3 Audio Visual Specifications"で規定されている、コンテンツすなわちディスクに記録されたＡＶ(Audio/Video)データの管理構造について説明する。以下では、この管理構造をＢＤＡＶフォーマットと称する。
【００２０】
例えばＭＰＥＧ(Moving Pictures Experts Group)ビデオやＭＰＥＧオーディオなどの符号化方式で符号化され、ＭＰＥＧ２システムに従い多重化されたビットストリームは、クリップＡＶストリーム（またはＡＶストリーム）と称される。クリップＡＶストリームは、Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part2"で定義されたファイルシステムにより、ファイルとしてディスクに記録される。このファイルを、クリップＡＶストリームファイル（またはＡＶストリームファイル）と称する。
【００２１】
クリップＡＶストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップＡＶストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップＡＶストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。Ｂｌｕ−ｒａｙ  Ｄｉｓｃに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part3"で、このデータベースが規定される。
【００２２】
図１は、ＡＶストリームファイルの一部または全部の範囲を指定して、必要な部分だけを並べて再生する再生順序指定の仕組みを模式的に示す。図１において、プレイリスト(PlayList)は、ＡＶストリームファイルの一部または全部の範囲を指定して、必要な部分だけを再生する指示を与える。ユーザがコンテンツの再生を行う際には、このプレイリストの単位で選択する。つまり、プレイリストは、ユーザからみてひとまとまり、すなわち、再生が連続に行われることをユーザが暗黙に期待する、映像・音声の単位である。
【００２３】
最も簡単なプレイリストの構成は、記録が開始されてから記録が終了されるまでの一繋がりのＡＶストリームファイルからなり、編集をしなければ、これが一つのプレイリストになる。
【００２４】
プレイリストは、再生するＡＶストリームファイルの指定と、指定されたＡＶストリームファイルの再生箇所を指定する再生開始点と再生終了点の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイアイテムは、一つの再生単位であると考えることができる。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるＡＶストリームファイルの一部分を再生するということになる。
【００２５】
クリップＡＶストリームは、上述したように、ビデオデータやオーディオデータがＭＰＥＧ２  ＴＳ（トランスポートストリーム）の形式などに多重化されたビットストリームである。このクリップＡＶストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
【００２６】
クリップＡＶストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップＡＶストリームとクリップ情報とから構成される、一つのオブジェクトである。
【００２７】
ファイルは、一般的に、バイト列として扱われる。クリップＡＶストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップＡＶストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
【００２８】
１のディスク中に記録された全てのプレイリストおよびクリップは、ボリュームインフォメーション(Volume Information)で管理される。
【００２９】
図２は、上述のようなクリップＡＶストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すＵＭＬ(Unified Modeling Language)図である。プレイリストは、１または複数のプレイアイテムに対応付けられ、プレイアイテムは、１のクリップに対応付けられる。１のクリップに対して、それぞれ開始点および／または終了点が異なる複数のプレイアイテムを対応付けることができる。１のクリップから１のクリップＡＶストリームファイルが参照される。同様に、１のクリップから１のクリップ情報ファイルが参照される。また、クリップＡＶストリームファイルとクリップ情報ファイルとは、１対１の対応関係を有する。このような構造を定義することにより、クリップＡＶストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
【００３０】
また、図３のように、複数のプレイリストから同一のクリップを参照することもできる。図３の例では、クリップ１が２つのプレイリスト２および３から参照されている。図３において、クリップ１は、横方向が時間軸を表す。プレイリスト２により、コマーシャル区間ｂ−ｃとシーンｅとを含むクリップ１の区間ａ〜ｆが参照される。一方、プレイリスト３により、シーンｅを含むクリップ１の区間ｄ−ｇが参照される。プレイリスト２を指定することで、クリップ１の区間ａ〜ｆを再生することができ、プレイリスト３を指定することで、クリップ１の区間ｄ−ｇを再生することができる。
【００３１】
次に、"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定された、記録媒体に記録されるファイルの管理構造について、図４を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、１つのディレクトリ（図４の例ではルートディレクトリ）が作成される。このディレクトリの下が、１つの記録再生システムで管理される範囲とする。
【００３２】
ルートディレクトリの下に、ディレクトリＢＤＡＶが置かれる。ディレクトリＢＤＡＶは、図４のように、ディレクトリＢＤＡＶ、ＢＤＡＶ１、ＢＤＡＶ２、・・・、ＢＤＡＶｎの如く、ルートディレクトリの下に複数を置くことができる。以下では、複数のディレクトリＢＤＡＶ、ＢＤＡＶ１、ＢＤＡＶ２、・・・、ＢＤＡＶｎをディレクトリＢＤＡＶで代表させて説明する。
【００３３】
ディレクトリＢＤＡＶの下には、以下の６種類のファイルが置かれる。
（１）info.bdav
（２）menu.tidx、mark.tidx
（３）menu.tdt1、menu.tdt2、mark.tdt1、mark.tdt2
（４）#####.rpls、#####.vpls
（５）%%%%%.clpi
（６）*****.m2ts
【００３４】
なお、（４）のファイル「#####.rpls」および「#####.vpls」において、「#####」は、任意の番号を示す。同様に、（５）のファイル「%%%%%.clpi」において、「%%%%%」は任意の番号を示す。また、（６）のファイル「*****.m2ts」において、「*****」は、ファイル「*****.m2ts」がファイル「%%%%%.clpi」と一対一で対応するような番号である。例えば、番号「*****」は、番号「%%%%%」と同一とすることができる。
【００３５】
（１）のファイル「info.bdav」は、ディレクトリＢＤＡＶ全体の情報が格納されるファイルである。（２）のファイル「menu.tidx」および「mark.tidx」は、サムネイル画像の情報が格納されるファイルである。（３）のファイル「menu.tdt1」、「menu.tdt2」、「mark.tdt1」および「mark.tdt2」は、サムネイル画像が格納されるファイルである。各ファイルの拡張子「tdt1」および「tdt2」は、当該ファイルに格納されているサムネイル画像データが暗号化されているか否かを示す。
【００３６】
（４）のファイル「#####.rpls」、「#####.vpls」は、プレイリストの情報が格納されるファイルである。ファイル「#####.rpls」、「#####.vpls」は、ディレクトリＢＤＡＶの下に設けられたディレクトリＰＬＡＹＬＩＳＴのさらに下に置かれている。
【００３７】
（５）のファイル「%%%%%.clpi」は、クリップ情報が格納されるファイルである。ファイル「%%%%%.clpi」は、ディレクトリＢＤＡＶの下に設けられたディレクトリＣＬＩＰＩＮＦのさらに下に置かれている。（６）のファイル「*****.m2ts」は、クリップＡＶストリームが格納される、クリップＡＶストリームファイルである。このクリップＡＶストリームファイルは、ファイル名の番号「*****」により、１つのクリップ情報ファイル「%%%%%.clpi」に対応付けられる。ファイル「*****.m2ts」は、ディレクトリＢＤＡＶの下に設けられたディレクトリＳＴＲＥＡＭのさらに下に置かれる。
【００３８】
各ファイルについて、より詳細に説明する。（１）のファイル「info.bdav」は、ディレクトリＢＤＡＶの下に唯一、設けられる。図５は、ファイル「info.bdav」の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるＣ言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
【００３９】
図５において、ファイル「info.bdav」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorは、文字列「BDAV」が格納され、このファイルがファイル「info.bdav」であることが示される。フィールドversion_numberは、このファイル「info.bdav」のバージョンが示される。ブロックUIAppInfoBDAV()は、ディレクトリＢＤＡＶの下に関する情報が格納される。ブロックTableOfPlayLists()は、プレイリストの並びに関する情報が格納される。ブロックMakersPrivateData()は、記録再生装置のメーカ固有の情報が格納される。
【００４０】
ファイル「info.bdav」の先頭には、各ブロックの先頭を表すアドレスが記述される。例えば、フィールドTableOfPlayLists_Start_addressは、ブロック「TableOfPlayLists()」の開始する位置がファイル内の相対バイト数で示される。
【００４１】
図６は、ブロックUIAppInfoBDAV()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlength直後のフィールドからこのブロックUIAppInfoBDAV()の最後までの長さがバイトで示される。フィールドBDAV_character_setは、このブロックUIAppInfoBDAV()内のフィールドBDAV_nameに記録されている文字列の文字セットが示される。文字セットとしては、ＡＳＣＩＩ、Ｕｎｉｃｏｄｅなどが選択できる。
【００４２】
フラグBDAV_protect_flagは、ディレクトリＢＤＡＶの下に置かれるコンテンツを、ユーザに制限無しに見せて良いか否かを示す。例えば、このフラグが値「１」にセットされており、且つ、ユーザが正しく暗証番号PIN(Personal Identification Number)を入力できた場合に、ディレクトリＢＤＡＶの下に置かれたコンテンツをユーザに見せることができるものとする。一方、フラグBDAV_protect_flagが値「０」にセットされている場合には、ユーザによる暗証番号PINの入力が無くても、ディレクトリＢＤＡＶの下に置かれたコンテンツをユーザに見せることができる。
【００４３】
暗証番号PINは、フィールドPINに記録される。暗証番号PINは、例えば４桁の０〜９の数字からなり、上述のように再生制御を有効にした場合に必要となる暗証番号を表す。暗証番号PINのそれぞれの数字は、例えばＩＳＯ(International Organization for Standarization)／ＩＥＣ(International Electrotechnical Commission)６４６の規定に従って符号化される。
【００４４】
このブロックUIAppInfoBDAV()に示される以上の情報により、ディレクトリＢＤＡＶに対する再生制限が規定される。なお、詳細は後述するが、個々のプレイリストに対する再生制限については、ファイル「#####.rpls」、「#####.vpls」内に示されるブロックUIAppInfoPlayList()の中で定義されるフラグplayback_control_flagによって規定される。
【００４５】
この例では、ディレクトリＢＤＡＶの下のコンテンツの再生を再開する際に、優先して再生すべきプレイリストを指定する、レジューム機能を用いることができる。このレジューム機能は、前回視聴を中断した箇所から再生を再開したい場合などに使うことを想定している。
【００４６】
図６において、フラグresume_valid_flagは、このレジューム機能の有効／無効を示す。例えば、このフラグが値「０」にセットされている場合には、レジューム機能は無効とされ、このフラグが値「１」にセットされている場合には、レジューム機能が有効とされ、その際、フィールドresume_PlayList_file_nameで指定されるプレイリストを、優先して再生すべきプレイリストとして扱う。
【００４７】
フィールドref_to_menu_thumbnail_indexは、このディレクトリＢＤＡＶを代表するサムネイル画像が存在する場合、そのサムネイル画像を特定するサムネイル番号が格納される領域である。Ｂｌｕ−ｒａｙ  Ｄｉｓｃの規格では、ディレクトリＢＤＡＶを代表する静止画を特にメニューサムネイルと呼ぶ。フィールドref_to_menu_thumbnail_indexで指定されるインデックスthumbnail_indexを持つサムネイル画像がこのディレクトリＢＤＡＶのメニューサムネイルとなる。
【００４８】
フィールドBDAV_name_lengthは、フィールドBDAV_nameに示されるディレクトリＢＤＡＶ名のバイト長を示す。このフィールドBDAV_nameにおいて、左から、フィールドBDAV_name_lengthで示されるだけのバイト数が有効な文字列であり、それがこのディレクトリＢＤＡＶの名前を示す。なお、フィールドBDAV_nameの中で、フィールドBDAV_name_lengthで示された有効な文字列の後のバイト列には、どのような値が入っていても良い。
【００４９】
図７は、ブロックTableOfPlayLists()の一例の構造を表すシンタクスを示す。フィールドnumber_of_PlayListsは、このディレクトリＢＤＡＶの下に置かれたプレイリストの数が示される。このプレイリスト数をループ変数とする、次に続く「for」文のループにおいてフィールドPlayList_file_nameにより示されるプレイリストの並びが、プレイリスト一覧表示画面などに表示される際のプレイリストの順序を示す。プレイリストは、フィールドPlayList_file_nameにより、「#####.rpls」や「#####.vpls」といったファイル名で指定される。
【００５０】
ファイル「#####.rpls」および「#####.vpls」は、上述したように、ディレクトリＰＬＡＹＬＩＳＴの下に置かれる。これらのファイルは、１つのプレイリストと一対一に対応している。
【００５１】
図８は、ファイル「#####.rpls」および「#####.vpls」の一例の構造を表すシンタクスを示す。図８において、ファイル「#####.rpls」および「#####.vpls」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
【００５２】
ブロックUIAppInfoPlayList()は、このプレイリストに関する属性情報が格納される。ブロックPlayList()は、このプレイリストを構成するプレイアイテムに関する情報が格納される。ブロックPlayListMark()は、このプレイリストに付されるマークの情報が格納される。ブロックMakersPrivateData()は、このプレイリストファイルを記録した装置の、メーカ固有の情報が格納される。ファイル「#####.rpls」および「#####.vpls」の先頭に設けられるフィールドPlayList_start_address、PlayListMark_start_addressおよびMakersPrivateData_start_addressには、それぞれ対応するブロックの先頭アドレスが例えば３２ビットのアドレス情報として示される。
【００５３】
各ブロックの先頭アドレスがファイル「#####.rpls」および「#####.vpls」の先頭に示されるために、ブロックの前および／または後ろに、任意の長さのデータpadding_wordを挿入することができる。但し、ファイル「#####.rpls」および「#####.vpls」の最初のブロックであるブロックUIAppInfoPlayList()の開始位置は、ファイルの先頭から３２０バイト目に固定される。
【００５４】
図９は、ブロックUIAppInfoPlayList()の一例の構造を表すシンタクスを示す。ブロックUIAppInfoPlayList()は、プレイリストの再生において直接的に必要とされない、プレイリストに関する各種の属性情報が格納される。フィールドPlayList_character_setは、プレイリストに関する文字列情報の文字セットが指定される。
【００５５】
フラグplayback_control_flagは、情報表示やプレイリストの再生を暗証番号PINに基づき制限するか否かが指定される。例えばフラグplayback_control_flagが値「１」であれば、ユーザにより正しい暗証番号PINが入力されなければ、プレイリストのサムネイル画像などの情報表示や、プレイリストの再生ができないとされる。フラグwrite_protect_flagは、消去禁止フラグである。例えばこのフラグwrite_protect_flagが値「１」であれば、ユーザが容易にプレイリストを消去できないようなユーザインタフェースにする必要がある。フラグis_played_flagは、このプレイリストが再生済みであることを示す。フラグis_edited_flagは、このプレイリストが編集されたことを示す。
【００５６】
フィールドtime_zoneは、このプレイリストが記録された地点のタイムゾーンを示す。フィールドrecord_time_and_dateは、プレイリストの記録日時を示す。フィールドPlayList_durationは、プレイリストの再生時間を示す。
【００５７】
フィールドmaker_IDおよびmaker_model_codeは、このプレイリストを最終更新した記録機のメーカおよび記録機をそれぞれ特定する情報が例えば番号で示される。フィールドchannel_numberは、記録したクリップＡＶストリームのチャンネル番号が示され、フィールドchannel_nameは、当該チャンネル名が示される。フィールドchannel_nameに示されるチャンネル名の長さがフィールドchannel_name_lengthに示される。フィールドchannel_name の領域のうち、フィールドchannel_name_lengthで示される長さの文字列が有効となる。フィールドPlayList_nameは、フィールドPlayList_name_lengthに示される値を有効長としてプレイリスト名が示される。フィールドPlayList_detailは、フィールドPlayList_detail_lengthに示される値を有効長としてプレイリストの詳細情報が示される。
【００５８】
図１０は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlengthの直後のフィールドからこのブロックPlayList()の終端までのバイト長を示す。フィールドPL_CPI_typeは、このプレイリストが持つＣＰＩ（Characteristic Point Information：特徴点情報）の種類を示す。フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を示す。フィールドnumber_of_SubPlayItemsは、このプレイリストに付けられているアフレコオーディオ用のプレイアイテム（サブプレイアイテム）の数を示す。詳細は省略するが、プレイリストは、所定の条件を満たす場合にだけ、サブプレイアイテムを持つことができる。
【００５９】
ブロックPlayItem()は、プレイアイテムの情報が格納される。ブロックSubPlayItem()は、サブプレイアイテムの情報が格納される。
【００６０】
図１１は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと一対一に対応するクリップ情報ファイル（拡張子がclpiであるファイル）のファイル名が文字列で示される。クリップ情報ファイルは、拡張子が「ｃｌｐｉ」とされているファイルである。
【００６１】
フィールドClip_codec_identifierは、このプレイアイテムにより参照されるクリップの符号化方式を示す。この例では、フィールドClip_codec_Identifierは、値「Ｍ２ＴＳ」に固定的とされる。フィールドconnection_conditionは、このプレイアイテムが次のプレイアイテムとの間でどのような接続がされているかを示す情報である。すなわち、フィールドconnection_conditionにより、プレイアイテムとプレイアイテムとの間が継ぎ目なくシームレスに再生できるか否かが示される。
【００６２】
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。シーケンスSTC_sequenceは、ＭＰＥＧ２  ＴＳ(Transport Stream)における時間軸の基準であるＰＣＲ(Program Clock Reference)が連続な範囲を表すＢｌｕ−ｒａｙ  Ｄｉｓｃ規格独自の構造である。シーケンスSTC_sequenceには、クリップ内で一意な番号STC_idが割り当てられる。このシーケンスSTC_sequence内では、不連続の無い一貫した時間軸を定義できるので、プレイアイテムの開始時刻および終了時刻を一意に定めることができる。つまり、各プレイアイテムの開始点と終了点は、同一のシーケンスSTC_sequenceに存在していなければならない。フィールドref_to_STC_idでは、番号STC_idによりシーケンスSTC_sequenceが指定される。
【００６３】
フィールドIN_timeおよびOUT_Timeは、このプレイアイテムにおける開始点および終了点の、シーケンスSTC_sequence 上でのタイムスタンプpts(presentation_time_stamp)をそれぞれ示す。
【００６４】
ブロックBridgeSequnceInfo()は、ブリッジクリップ(Bridge-Clip)に関する情報が格納される。ブリッジクリップは、図１２に一例が示されるように、プレイアイテム間を継ぎ目無く、シームレスに再生する機能を実現する際に作成されるビットストリームである。前のプレイアイテムと現在のプレイアイテムとの継ぎ目の部分で、本来再生すべきビットストリームとは異なるビットストリーム、すなわちブリッジクリップを代わりに再生することで、２つのプレイアイテムをシームレスに再生することができる。このブリッジクリップによる機能は、この発明と関連性が低いので、詳細は省略する。
【００６５】
図１３は、ブロックPlayListMark()の一例の構造を表すシンタクスを示す。ブロックPlayListMark()は、マークの情報が格納されるデータ構造である。マークは、プレイリスト上の時刻を保持するための構造であって、マークを用いることにより、プレイリスト中への頭出し点の設定、プレイリストを細分化するチャプタの構造を設ける、などの機能が実現される。さらに、後述するグラフィクスプレーン上に描画された画像の表示開始／停止のタイミングを、マークを用いて指定することができる。
【００６６】
フィールドlengthは、フィールドlengthの直後のフィールドからブロックPlayListMark()の終端までのバイト長を示す。フィールドnumber_of_PlayList_marksは、プレイリスト中のマークの数を表す。「for」文での１回のループが１つのマークの情報を示す。フラグmark_invalid_flagは、このマークが有効であるか否かを示す。例えば、フラグmark_invalid_flagが値「０」でそのマークが有効であることが示され、値「１」であれば、そのマークの情報がデータベース上に存在するが、当該マークがユーザには見えない無効マークとされていることを示す。
【００６７】
フィールドmark_typeは、このマークの種類を表す。マークの種類としては、プレイリストのサムネイル画像（代表画）とする映像の位置を示すマーク、どこまで再生したかを示すレジュームマーク、頭出し点を示すチャプタマーク、ある区間の再生を飛ばして先に進むことを示すスキップマーク、グラフィクス画像の読み込み開始タイミングを示すマーク、グラフィクス画像の表示開始のタイミングを示すマーク、グラフィクス画像の表示停止のタイミングを示すマークなどがある。
【００６８】
フィールドmark_name_lengthは、後述するフィールドmark_nameのデータ長を示す。フィールドmaker_IDは、このマークを作成した記録機の製造者を示す。これは、製造者独自のマークを識別する際に用いられる。フィールドref_to_PlayItem_idは、このマークにより指示される時刻がどのプレイアイテム上に存在するかが示される。フィールドmark_time_stampは、このマークにより指示される時刻が示される。
【００６９】
フィールドentry_ES_PIDは、このマークがどのエレメンタリストリームすなわち映像データおよび／または音声データが符号化されたストリームに対して付与されたものかが示される。フィールドref_to_menu_thumbnail_indexおよびフィールドref_to_mark_thumbnail_indexは、マークを視覚的に表すサムネイル画像を示す。サムネイル画像としては、例えばそのマークにより指定される時刻の映像を静止画として抜き出した画像が考えられる。
【００７０】
フィールドdurationは、マークが時間軸上で長さを持つ場合に使われる。例えばスキップマークであれば、どのくらいの時間ジャンプをするかがフィールドdurationにより指定される。
【００７１】
フィールドmakers_informationは、製造者独自の情報を記録するための領域である。フィールドmark_nameは、マークに名前をつけた際、その名前を格納するための領域であり、サイズが上述のフィールドmark_name_lengthで指定される。
【００７２】
図１４は、ファイル「%%%%%.clpi」の一例の構造を表すシンタクスを示す。上述したように、ファイル「%%%%%.clpi」は、ディレクトリＣＬＩＰＩＮＦの下に置かれ、各ＡＶストリームファイル（ファイル「*****.m2ts」）毎に作られる。ファイル「%%%%%.clpi」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
【００７３】
ブロックClipInfo()は、クリップに関する情報が格納される。ブロックSequenceInfo()は、ＭＰＥＧ２システムにおけるトランスポートストリームの時刻基準を表すＰＣＲの不連続点に関する情報が格納される。ブロックProgramInfo()は、ＭＰＥＧ２システムのプログラムに関する情報が格納される。ブロックCPI()は、ランダムアクセス開始可能点などの、ＡＶストリーム中の特徴的な箇所を表す特徴点情報ＣＰＩに関する情報が格納される。ブロックClipMark()は、クリップに付された頭出しのためのインデックス点やコマーシャルの開始および／または終了点などのマーク情報が格納される。ブロックMakersPrivateData()は、記録機の製造者独自の情報が格納される。
【００７４】
また、これら各ブロックのファイル「%%%%%.clpi」中での先頭を表すアドレス情報が、当該ファイルの先頭部分にフィールドSequenceInfo_start_address、ProgramInfo_start_address、CPI_start_address、ClipMark_start_addressおよびMakersPrivateData_start_addressとして示される。なお、このクリップファイル「%%%%%.clpi」自体は、この発明と関連性が低いので、詳細な説明を省略する。
【００７５】
ＢＤＡＶフォーマットは、以上に概略的に説明したようなデータ構造を持つことにより、クリップＡＶストリーム中の再生したい部分を開始および終了点の組で指定したプレイアイテムの並びでプレイリストを構築し、ユーザが認識するひとまとまりの再生単位を管理することが可能となる。
【００７６】
次に、この発明の実施の一形態について説明する。この発明では、上述したＢＤＡＶフォーマットを拡張し、再生専用ディスクに適したフォーマットを構築する。まずディスクの内容を提示するメニュー画面を実現するためのプレーン構成を説明する、次に、コンテンツ制作者側がプレイリストの再生順序を指定できるようにするためのシナリオ構造を追加する。さらに、そのシナリオ構造において、再生専用ディスクに特徴的なスチル（一時停止）、ランダム・シャッフル再生、マルチアングルなどの機能を実現するために必要なデータと、その格納方法について説明する。
【００７７】
この発明の実施の一形態では、画像の表示系について、図１５に一例が示されるようなプレーン構成を取る。動画プレーン１０は、最も後ろ側（ボトム）に表示され、プレイリストで指定された画像（主に動画データ）が扱われる。字幕プレーン１１は、動画プレーン１０の上に表示され、動画再生中に表示される字幕データが扱われる。グラフィクスプレーン１２は、最も前面に表示され、メニュー画面を表示するための文字データやボタンを表すビットマップデータなどのグラフィクスデータが扱われる。１つの表示画面は、これら３つのプレーンが合成されて表示される。
【００７８】
ここで、従来のＤＶＤビデオと異なる特徴的な点は、従来の技術で説明した字幕やメニュー画面、ボタンなどが表示されるサブピクチャを、字幕プレーン１１およびグラフィクスプレーン１２とに分離し、字幕とボタンとをそれぞれ独立的に制御できるようにしたことである。上述したように、従来のＤＶＤビデオでは、メニュー画面やボタンなどのグラフィクス表示と、字幕表示とを、同じ仕組みで制御しており、これらを同一プレーン上に表示していた。そして、同時に表示できるビットマップ画像は、１枚に限られていた。そのため、従来のＤＶＤビデオでは、複数のビットマップ画像を同時に表示することができなかった。この発明では、字幕を表示する字幕プレーン１１と、グラフィクス表示を行うグラフィクスプレーン１２とをそれぞれ独立的に設けることで、この従来のＤＶＤビデオの持つ問題点を解消している。
【００７９】
なお、画像の表示系に関しては、字幕プレーン１１およびグラフィクスプレーン１２が、従来の"Blu-ray Disc Rewritable Format Ver1.0 part3"に対する拡張部分であると考えることができる。
【００８０】
動画プレーン１０、字幕プレーン１１およびグラフィクスプレーン１２は、それぞれ独立して表示が可能とされ、例えば、図１６に一例が示されるような解像度および表示可能色を有する。動画プレーン１０は、解像度が１９２０画素×１０８０ラインで１画素当たりに換算したデータ長が１６ビットであって、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒが４：２：２のシステム（以下、ＹＣｂＣｒ（４：２：２））とされる。なお、ＹＣｂＣｒ（４：２：２）は、各画素当たり輝度信号Ｙが８ビット、色差信号Ｃｂ、Ｃｒがそれぞれ８ビットで、色差信号Ｃｂ、Ｃｒが水平２画素で一つの色データを構成すると見なすカラーシステムである。
【００８１】
グラフィクスプレーン１２は、解像度が１９２０画素×１０８０ラインで各画素のサンプリング深さが８ビットとされ、カラーシステムは、２５６色のパレットを用いた８ビットカラーマップアドレスとされる。字幕プレーン１１は、１９２０画素×１０８０ラインで各画素のサンプリング深さが８ビットとされ、カラーシステムは、２５６色のパレットを用いた８ビットカラーマップアドレスとされる。
【００８２】
グラフィクスプレーン１２および字幕プレーン１１は、２５６段階のアルファブレンディングが可能とされており、他のプレーンとの合成の際に、不透明度を２５６段階で設定することが可能とされている。不透明度の設定は、画素毎に行うことができる。以下では、不透明度αが（０≦α≦１）の範囲で表され、不透明度α＝０で完全に透明、不透明度α＝１で完全に不透明であるものとする。
【００８３】
字幕プレーン１１では、ＰＮＧ(Portable Network Graphics)形式の画像データが扱われる。また、グラフィクスプレーン１２でも、ＰＮＧ形式の画像データを扱うことができる。ＰＮＧ形式は、１画素のサンプリング深さが１ビット〜１６ビットとされ、サンプリング深さが８ビットまたは１６ビットの場合に、アルファチャンネル、すなわち、それぞれの画素成分の不透明度情報（アルファデータと称する）を付加することができる。サンプリング深さが８ビットの場合には、２５６段階で不透明度を指定することができる。このアルファチャンネルによる不透明度情報を用いてアルファブレンディングが行われる。また、２５６色までのパレットイメージを用いることができ、予め用意されたパレットの何番目の要素（インデックス）であるかがインデックス番号により表現される。
【００８４】
なお、字幕プレーン１１およびグラフィクスプレーン１２で扱われる画像データは、ＰＮＧ形式に限定されない。ＪＰＥＧ方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
【００８５】
図１７は、上述の図１５および図１６に従い３つのプレーンを合成する一例の構成を示す。動画プレーン１０の動画データが４２２／４４４変換回路２０に供給される。動画データは、４２２／４４４変換回路２０でカラーシステムがＹＣｂＣｒ（４：２：２）からＹＣｂＣｒ（４：４：４）に変換され、乗算器２１に入力される。
【００８６】
字幕プレーン１１の画像データがパレット２２に入力され、ＲＧＢ（４：４：４）の画像データとして出力される。アルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α１（０＜＝α１＜＝１）がパレット２２から出力される。
【００８７】
図１８は、パレット２２の入出力データの一例を示す。パレット２２は、例えばＰＮＧ形式のファイルに対応したパレット情報がテーブルとして格納される。パレット２２は、入力された８ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ８ビットのデータからなるＲＧＢ（４：４：４）のデータが出力される。それと共に、パレット２２では、不透明度を表すアルファチャンネルのデータが取り出される。
【００８８】
図１９は、パレット２２に格納される一例のパレットテーブルを示す。２５６個のカラーインデックス値〔０ｘ００〕〜〔０ｘＦＦ〕（〔０ｘ〕は１６進表記であることを示す）のそれぞれに対して、各々８ビットで表現される三原色の値Ｒ、ＧおよびＢと、不透明度αとが割り当てられる。パレット２２は、入力されたＰＮＧ形式の画像データに基づきパレットテーブルが参照され、画像データにより指定されたインデックス値に対応する、それぞれ８ビットのデータからなるＲ、ＧおよびＢ各色のデータ（ＲＧＢデータ）と、不透明度αとを画素毎に出力する。
【００８９】
パレット２２から出力されたＲＧＢデータは、ＲＧＢ／ＹＣｂＣｒ変換回路２９に供給され、各データ長が８ビットの輝度信号Ｙと色信号Ｃｂ、Ｃｒのデータに変換される（以下、まとめてＹＣｂＣｒデータと称する）。これは、以降のプレーン間合成を共通のデータ形式で行う必要があるためで、動画データのデータ形式であるＹＣｂＣｒデータに統一している。
【００９０】
ＲＧＢ／ＹＣｂＣｒ変換回路２９から出力されたＹＣｂＣｒデータおよび不透明度データα１とがそれぞれ乗算器２３に入力される。乗算器２３では、入力されたＹＣｂＣｒデータに不透明度データα１が乗ぜられる。乗算結果は、加算器２４の一方の入力端に入力される。なお、乗算器２３では、ＹＣｂＣｒデータにおける輝度信号Ｙ、色差信号Ｃｂ、Ｃｒのそれぞれについて、不透明度データα１との乗算が行われる。また、不透明度データα１の補数（１−α１）が乗算器２１に供給される。
【００９１】
乗算器２１では、４２２／４４４変換回路２０から入力された動画データに不透明度データα１の補数（１−α１）が乗ぜられる。乗算結果は、加算器２４の他方の入力端に入力される。加算器２４において、乗算器２１および２３の乗算結果が加算される。これにより、動画プレーン１０と字幕プレーン１１とが合成される。加算器２４の加算結果が乗算器２５に入力される。
【００９２】
グラフィクスプレーン１２の画像データも字幕プレーン１１と同様に、パレットテーブル２６によりＲＧＢ（４：４：４）のデータが出力され、ＲＧＢ／ＹＣｂＣｒ変換回路２６に入力される。グラフィクスプレーン１２の画像データのカラーシステムがＲＧＢ（４：４：４）である場合には、カラーシステムがＹＣｂＣｒ（４：４：４）に変換されてＲＧＢ／ＹＣｂＣｒ変換回路２７から出力される。ＲＧＢ／ＹＣｂＣｒ変換回路２７から出力されたＹＣｂＣｒデータが乗算器２８に入力される。
【００９３】
グラフィクスプレーン１２で用いられる画像データがＰＮＧ形式である場合には、画像データ中に、画素毎に不透明度データα２（０≦α２≦１）を設定することができる。不透明度データα２は、乗算器２８に供給される。乗算器２８では、ＲＧＢ／ＹＣｂＣｒ変換回路２７から入力されたＹＣｂＣｒデータに対し、輝度信号Ｙ、色差信号Ｃｂ、Ｃｒのそれぞれについて、不透明度データα２との乗算が行われる。乗算器２８による乗算結果が加算器２９の一方の入力端に入力される。また、不透明度データα２の補数（１−α２）が乗算器２５に供給される。
【００９４】
乗算器２５では、加算器２４の加算結果に対して不透明度データα２の補数（１−α２）が乗ぜられる。乗算器２５の乗算結果は、加算器２７の他方の入力端に入力され、上述した乗算器２８による乗算結果と加算される。これにより、動画プレーン１０と字幕プレーン１１との合成結果に対して、さらに、グラフィクスプレーン１２が合成される。
【００９５】
字幕プレーン１１およびグラフィクスプレーン１２において、例えば、表示すべき画像の無い領域の不透明度α＝０と設定することで、そのプレーンの下に表示されるプレーンを透過表示させることができ、例えば動画プレーン１０に表示されている動画データを、字幕プレーン１１やグラフィクスプレーン１２の背景として表示することができる。
【００９６】
なお、この図１７に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。
【００９７】
以上のようなプレーンを設定することで、再生専用規格に必要なメニュー画面とボタンの表示を可能とする。メニュー画面上のボタンが選択されると、そのボタンに対応したプレイリストが再生されることになる。このとき、プレイリスト間がどのように結び付けられているかという情報がディスク上に記録されていることが必要となる。次に、このプレイリスト間の結びつき（リンク）を定義するシナリオについて説明する。
【００９８】
グラフィクスプレーン１２には、ユーザに対して操作を促す画面、例えばメニュー画面を表示させることができる。図２０は、グラフィクスプレーン１２に表示されるメニュー画面６０の一例を示す。メニュー画面６０は、文字や画像を特定の位置に表示させ、ユーザが選択や実行を指示することで新たな動作が開始される「リンク」や「ボタン」を配置することができる。
【００９９】
「リンク」は、例えば、文字列や画像データに対して所定のファイルへのアクセス方法を示す記述を設定し、ユーザがポインティングデバイスなどを用いて画面に表示された当該文字列や画像データ上を指定することで、当該文字列や画像データに設定されたアクセス方法に従って当該ファイルにアクセスできるようにしたものである。「ボタン」は、「リンク」において、例えば通常の状態、選択された状態および押された状態の３種類の画像データを用意し、ユーザにより当該ボタン画像が指定された際に、３種類の画像データの表示を切り換えて、ユーザが行った操作をユーザ自身に認識しやすくしたものである。
【０１００】
なお、「リンク」や「ボタン」に対する指定動作は、例えば、マウスを用いて画面上のカーソル表示を移動させ、「リンク」による文字列や画像、「ボタン」による画像上で、マウスボタンを１または複数回押すクリック動作を行うことで、なされる。マウス以外のポインティングデバイスによっても、同様の動作を行うことができる。また、これに限らず、リモートコントロールコマンダやキーボードのキー操作により、「リンク」や「ボタン」の指定を行うこともできる。例えば、方向キーなど所定のキーで指定を行いたい「リンク」や「ボタン」を選択し、決定キーなどにより選択された「リンク」や「ボタン」を指定する。
【０１０１】
図２０の例では、グラフィクスプレーン１２上に表示されたメニュー画面６０の上部に、画像データとしてタイトル６１が表示される。タイトル６１に続けて、リンクとしての選択項目６２Ａ、６２Ｂ、６２Ｃおよび６２Ｄが表示される。例えばリモートコントロールコマンダのキー操作により、選択項目６２Ａ、６２Ｂ、６２Ｃおよび６２Ｄのうち１つを選択し指定することで、指定された選択項目にリンクとして設定されたファイルがアクセスされる。
【０１０２】
メニュー画面６０の下部に、字幕の表示の有無や、出力される音声を例えば英語および日本語から選択するためのボタン６４および６５が表示される。これらボタン６４や６５を上述のように操作することで、例えば、それぞれの設定を行う画面を表示するためのファイルがアクセスされ、所定の画面表示がなされる。
【０１０３】
また、メニュー画面６０の左下部分には、項目の選択方法を示す文字列６３が表示される。この文字列６３も、グラフィクスプレーン１２上の表示である。
【０１０４】
この、図２０に一例が示されるような画面を表示するためには、画面の表示方法やリンク情報などを記述可能な、何らかの記述言語が必要とされる。この発明の実施の一形態では、この記述言語として、ＤＶＤビデオのナビゲーションコマンドを基に変更を加えたものに、字幕、ボタン用の独自の表示制御コマンドを加えた命令群を使用することで、Ｂｌｕ−ｒａｙ  Ｄｉｓｃによるメニュー画面表示が可能なようにした。
【０１０５】
さて、上述したようなＢｌｕ−ｒａｙ  Ｄｉｓｃのメニュー画面６０では、例えばプレイリストの一覧が画像データや文字列、ボタンなどで表示され、あるプレイリストを指定することで、指定されたプレイリストがディスクから読み出され再生されることが期待される。
【０１０６】
上述した図２０の例では、メニュー画面６０に対してプレイリストの一覧が表示される。このメニュー画面６０およびメニュー画面６０上の選択項目を選択した際に再生される映像・音声は、実際には、複数のプレイリストが並んだ構造によって構成されている。メニューの一項目を構成する複数のプレイリスト内で、プレイリストの関連付けを行うことで、ストーリーを分岐させる仕組みを実現することができる。ストーリーを分岐できるようにすることで、ユーザの選択によってストーリーが変化していくマルチストーリー機能や、プレーヤの設定言語に従って自動的に適切な言語を再生する機能や、ユーザの年齢に応じてシーンを差し替えるパンタレル機能を実現することができる。
【０１０７】
このような機能は、記録済みのディスクにおいて特に有用であって、テレビジョン放送の記録／再生が主目的である現行のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格では想定されていない。
【０１０８】
以下では、この複数のプレイリストが並べられた構造を、シナリオと称する。図２１は、シナリオ７０の一例の内部構造を示す。このシナリオ７０は、複数のプレイリスト７３Ａ〜７３Ｍを含む。また、シナリオ７０は、グラフィクスプレーン１２を用いて分岐選択画面を表示する箇所が２箇所（画面８０Ａおよび８０Ｂ）設けられている。例えば画面８０Ａは、分岐選択画面を表示するためのグラフィクスデータ７４Ａとプレイリスト７３Ｃを有する。同様に、画面８０Ｂは、分岐選択画面を表示するためのグラフィクスデータ７４Ｂとプレイリスト７３Ｊを有する。
【０１０９】
このように、シナリオは、プレイリストの並びを決めると共に、グラフィクスプレーン１２に対する表示のタイミングを規定する。グラフィクスプレーン１２への表示のタイミングは、グラフィックスプレーンに表示する画像に対して付加された表示制御命令によって規定することができる。
【０１１０】
図２１の例では、例えば上述のメニュー画面６０はシナリオ７０における８０Ａに対応する。メニュー画面６０における選択項目（例えば選択項目６２Ａ）は、グラフィックス７２Ａによって構成されている。すなわち、メニュー画面６０において選択項目６２Ａが指定されると、選択項目に対応したプレイリスト７３Ｄが再生されることになる。
【０１１１】
図２１のシナリオ７０では、先ず、ディスクがプレーヤに挿入されると、プレイリスト７３Ａが再生される。プレイリスト７３Ａの再生が終了されると、続けてプレイリスト７３Ｂが再生され、プレイリスト７３Ｂの再生が終了されると、プレイリスト７３Ｃが再生され、グラフィクスデータ７２Ａが読み出されて、ユーザにストーリーの分岐選択を促す画面８０Ａが表示される。
【０１１２】
画面８０Ａが表示された以降は、ユーザの選択に基づきストーリーが分岐される。この図２０の例では、第１の選択により、画面８０Ａの後、プレイリスト７３Ｄ、７３Ｅ、７３Ｆの順に再生され、全体の再生が終了される。プレイリスト７３Ｆの再生が終了された後、メインのメニュー画面（例えば上述したメニュー画面６０）に戻るようにしても良い。
【０１１３】
画面８０Ａにおける第２の選択では、画面８０Ａの後、プレイリスト７３Ｇが再生される。プレイリスト７３Ｇは、例えば所定のタイミングにマークが設定されている。プレイリスト７３Ｇが再生されると、再生装置自身の設定やユーザによる他のシナリオや分岐選択画面などでの選択に基づき、プレイリスト７３Ｇのマーク位置で分岐するか、プレイリスト７３Ｇを最後まで再生するかが制御される。プレイリスト７３Ｇが最後まで再生される場合には、プレイリスト７３Ｇの再生終了後、プレイリスト７３Ｍ、７３Ｉと再生され、プレイリスト７３Ｊがさらに再生される。
【０１１４】
一方、プレイリスト７３Ｇにおいてマーク位置で分岐された場合には、次にプレイリスト７３Ｋ、７３Ｌと再生され、プレイリスト７３Ｌの再生が終了されたら、次に、プレイリスト７３Ｉに設定されたマーク位置から再生が継続される。
【０１１５】
プレイリスト７３Ｊは、グラフィクスデータ７２Ｂが読み出されて、ユーザにストーリーの分岐選択を促す画面８０Ｂが表される。画面８０Ｂにおける第１の選択では、上述したプレイリスト７３Ｆが再生される。一方、画面８０Ｂの第２の選択では、プレイリスト７３Ｋに設定されているマーク位置からの再生が行われる。
【０１１６】
シナリオの再生において、マークの検出、ユーザからの入力、プレーヤの動作変更の検出がされた時の動作は、プレイリスト毎にコマンド列（プログラム）が用意されており、そのプログラムをプレーヤが実行することにより行われる。
【０１１７】
例えば、シナリオ７０内のプレイリスト７３Ａ〜７３Ｍの何れが再生中であっても、リモートコントロールコマンダに設けられたメニューボタンが押されたら、シナリオの一覧が表示されるメニュー画面６０が表示される、すなわち、メニュー画面６０を表示するためのプレイリストに再生処理が移行される動作を実現したい場合について考える。この場合、リモートコントロールコマンダのメニューボタンが押されたときに発生するイベント（メニューボタン押下イベント）に対応するイベントハンドラとして、メニュー画面６０を表示させるプレイリストに処理が移行される命令を、シナリオデータの一つとして記述しておく。
【０１１８】
シナリオは、ディレクトリに一つ定義され、１または複数のプレイリストから構成される。ここでディレクトリとは、例えば上述した記録再生規格のＢＤＡＶディレクトリや、この発明の実施の一形態において再生専用のデータ領域として想定しているＨＤＭＶディレクトリ（詳細は後述する）である。
【０１１９】
ここで、シナリオの構成の分類について図２２および図２３を用いて説明する。シナリオの構成は、プレイリスト同士の接続を基に考えると、図２２に示されるように、（１）シングルプレイリスト、（２）シーケンシャルプレイリスト、（３）マルチプレイリスト、の３種類に大別することができる。
【０１２０】
（１）のシングルプレイリストは、図２３Ａに一例が示されるように、単一のプレイリストで構成されるシナリオである。タイムラインが定義可能で、シナリオ再生中の割り込みが無い。コンテンツが映画であれば、例えばディスクのローディング後に映画本編だけが再生されるようなシナリオである。
【０１２１】
（２）のシーケンシャルプレイリストは、図２３Ｂに一例が示されるように、複数のプレイリストが分岐無しに直列的に並べられて構成されるシナリオである。各プレイリストは、プレイリストの末尾と次のプレイリストの先頭とが接続されるように並べられる。各プレイリストを通じてのタイムラインが定義可能である。コンテンツが映画であれば、例えばメニュー画面と映画本編との組み合わせからなるシナリオである。ディスクのローディング後にメニュー画面を表示させるプレイリストが実行され、メニュー画面に対して映画本編の再生が指示されると、次のプレイリストが実行され、映画の本編が再生される。
【０１２２】
（３）のマルチプレイリストは、図２３Ｃに一例が示されるように、プレイリストの分岐や収束による接続を含むシナリオである。プレイリストを通じてのタイムラインを定義することができず、例えば各プレイリスト内にタイムラインが定義される。マルチプレイリストによれば、ユーザ入力によって再生内容が変化するようなインタラクティブ性やゲーム性を実現することができる。コンテンツが映画の場合には、例えば同一シーンを様々なアングルで収録し、再生時にユーザの指示により選択して鑑賞できるようにしたマルチアングルを実現するシナリオである。
【０１２３】
再生専用メディアの場合、シナリオは、後述するように、ＨＤＭＶディレクトリに一つ定義されるものとする。ユーザに対しては、シナリオをより細分化した単位を見せる必要がある。但し、プレイリストの単位がユーザの認識する単位と一致するとは限らない。例えば、一つのプレイリストに３本の映画が収録されているときには、各映画の頭出し点をユーザに見せる必要がある。このように、プレイリストの構造とは独立した頭出し点（エントリポイント）を、以下では、タイトルおよび／またはチャプタと呼ぶことにする。
【０１２４】
図２４を用いてタイトルおよびチャプタについて説明する。タイトルは、シナリオ中の任意の再生開始点を表す。この図２４の例では、プレイリスト４７０Ａの先頭にタイトル１に設定されている。タイトル２は、プレイリスト４７０Ｄの途中に設定されている。プレイリスト４７０Ａの先頭からタイトル２の直前までがタイトル１とされる。チャプタは、タイトルをさらに細分化した単位で、これもユーザが再生開始点として認識できる単位となる。タイトル１がチャプタによりさらに細分化される。図２４の例では、タイトル１に対してチャプタ１、２および３が設定され、タイトル１が３つに細分化されている。また、図２４に示されるように、タイトルおよびチャプタの位置は、プレイリストの途中を指定することもできる。
【０１２５】
次に、シナリオ記述に従って動作する再生装置のモデルを考える。以下では、このモデル化された再生装置をＢＤ(Blu-ray disc)仮想プレーヤと称し、このＢＤ仮想プレーヤの構成の定義をＢＤ仮想プレーヤモデルと称する。
【０１２６】
図２５を用いて、ＢＤ仮想プレーヤモデルについて説明する。ＢＤ仮想プレーヤ３０は、ディスクのローディング後、この発明で定義したシナリオ記述言語により記述されディスクに記録されたシナリオを、ＰＢＣプログラム４０として読み込み、シナリオの記述に従い動作する。
【０１２７】
ＢＤ仮想プレーヤ３０は、この発明の実施の一形態により定義されるディスク状記録媒体を再生するもので、パーソナルコンピュータなどのコンピュータ環境上のオブジェクトである。コンピュータ環境は、汎用的なパーソナルコンピュータに限られず、例えば、この発明の実施の一形態により定義されるディスク状記録媒体などを再生するように専用的に構成された再生装置および／または記録再生装置に組み込まれたソフトウェア環境も含む。なお、以下、この発明の実施の一形態により定義されるディスク状記録媒体を、ディスクと略称する。
【０１２８】
ＢＤ仮想プレーヤ３０の状態は、概略的には、プレイリストおよびグラフィクスを再生する状態Ａと、再生が停止された状態Ｂの２つの状態に分類できる。ある状態から別の状態への遷移や、ある状態の中での次の動作の指定は、ＢＤ仮想プレーヤ３０のオブジェクトに対するコマンドにより行われる。
【０１２９】
なお、状態Ａは、複数の動作を含む。状態Ａに含まれる動作としては、高速再生、逆転再生といった変速再生や、ディスク上の任意の時刻から再生する飛び込み再生といった特殊再生などが考えられる。ＢＤ仮想プレーヤ３０においてグラフィクスプレーン１２による表示がなされているときは、これら変速再生や特殊再生が制限されることがある。
【０１３０】
ＰＢＣ(Play Back Control)プログラム４０は、例えばディスクに記録されているシナリオに対応する。詳細は後述するが、シナリオは、ディスクに記録されたプレイリストの再生方法や、メニュー画面の表示を指示する。ＰＢＣプログラム４０とＢＤ仮想プレーヤ３０とは、ＡＰＩ(Application Programming Interface)４１を介してメソッドのやりとりを行い、ディスクに記録されたプレイリストを再生する。
【０１３１】
シナリオには、プレーヤの動作を指示するコマンドが並んだプログラムを含むコマンドを配置する領域として、グローバルコマンド領域と、ローカルコマンド領域の二つがある。
【０１３２】
グローバルコマンド領域は、シナリオ全体に有効なプログラムが格納されており、例えば、ディスクがプレーヤに挿入されたときに最初に自動にプレーヤによって実行されて、パラメータの初期化を行い、メニュー画面を構成するプレイリストにジャンプするようなプログラムを記述する領域である。ローカルコマンド領域は、各プレイリストに関係するプログラムを記述する領域である。ローカルコマンドは、さらにプレコマンド、プレイアイテムコマンド、ポストコマンド、ボタンコマンドの４種類に分類される。
【０１３３】
図２６は、この発明の実施の一形態におけるシナリオで記述されるコマンドによるＢＤ仮想プレーヤ３０の動作を概略的に示す。図２６Ａは、ディスクのローディング時の動作の例を示す。上述したように、シナリオは、後述するＨＤＭＶディレクトリに対して一つが作られる。ディスクがプレーヤに挿入されディスクに対するイニシャルアクセスがなされると（ステップＳ３０）、レジスタすなわち共通パラメータ３２が初期化される（ステップＳ３１）。そして、次のステップＳ３２で、プログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク挿入時のように、ディスクの再生が初めて行われることをいう。
【０１３４】
この、ディスクローディング時に最初に読み込まれ、実行されるコマンド群（プログラム）を、グローバルコマンドと称する。グローバルコマンドは、例えば宣伝用映像（トレーラー）やメニュー画面を構成するプレイリストへのジャンプ命令が記述されており、その命令通りにプレーヤがプレイリストを再生していくことになる。
【０１３５】
図２６Ｂは、プレーヤ３０が停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。これは、上述の図２５における状態Ｂから状態Ａへの状態遷移に相当する。最初の停止状態（ステップＳ４０）に対して、ユーザにより、例えばリモコンなどを用いて再生が指示される（ＵＯＰ：User Operation）。再生が指示されると、先ず、レジスタすなわち共通パラメータ３２が初期化され（ステップＳ４１）、次のステップＳ４２で、プレイリストの再生フェイズに移行する。
【０１３６】
プレイリストの再生フェイズにおけるプレイリストの再生について、図２７を用いて説明する。図２７Ａは、プレイリストが単一のプレイアイテムからなる場合の例である。プレイリストは、プレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域の３箇所にプログラムが配される。プレイリストの再生フェイズに移行すると、先ずプレコマンド領域のプレコマンドが実行され（ステップＳ１０）、プレコマンドの実行が終了されると、プレイリストを構成するプレイアイテムの再生フェイズに移行する（ステップＳ１１）。プレイアイテムの再生フェイズでは、プレイアイテムにおいて開始点および終了点で指定されたストリームが再生される（ステップＳ１１０）。終了点までの再生が終了した時点で、プレイアイテムコマンドが実行される（ステップＳ１１１）。プレイアイテムコマンドが実行されると、次にポストコマンド領域のポストコマンドが実行され（ステップＳ１２）、プレイリストの再生が終了される。
【０１３７】
なお、ポストコマンドは、一般的な使用においては、次に再生すべきプレイリストへのジャンプ命令や、メニュー画面を構成するプレイリストへのジャンプ命令が記述される。ジャンプ命令が無い場合には、そこで再生が停止し、プレーヤは、停止状態（図２５の状態Ｂ）に遷移される。
【０１３８】
図２７Ｂは、プレイリストが複数のプレイアイテムを含む場合の例である。この場合でも、プレイリスト中にプレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域が配され、それぞれプログラムが格納される。複数のプレイアイテムを含む場合、プレイアイテムコマンド領域では、プレイアイテム数分のプレイアイテムストリームおよびプレイアイテムコマンドが、時系列に従って配置される。
【０１３９】
プレイリストが複数のプレイアイテムを含む場合でも、プレイリストの再生フェイズに移行すると、先ず、プレコマンドが実行される（ステップＳ１０）。次のプレイアイテムの再生フェイズでは、プレイアイテムの開始点から終了点までのストリームの再生と、プレイアイテムコマンドの実行とが、プレイリストが含むプレイアイテムの数だけ実行される。図２７Ｂの例では、最初のプレイアイテムストリームが再生され（ステップＳ１１０−１）、対応するプレイアイテムコマンドが実行される（ステップＳ１１１−１）。次に、図示は省略するが、２番目のプレイアイテムストリームが再生され（ステップＳ１１０−２）、対応するプレイアイテムコマンドが実行される（ステップＳ１１１−２）。これをプレイアイテムの数だけ行い、最後のプレイアイテムストリームが再生され（ステップＳ１１０−ｎ）、対応するプレイアイテムコマンドが実行されると（ステップＳ１１１−ｎ）、プレイアイテムの再生フェイズが終了する。プレイアイテムの再生フェイズが終了すると、ポストコマンドが実行され（ステップＳ１２）、このプレイリストの再生フェイズが終了される。
【０１４０】
図２８は、コマンドの一部を示す。この図２８に例示されるようなコマンドを、ポストコマンド領域や後述するボタンコマンド領域に書くことにより、特定のプレイリストへのジャンプを実現することができる。なお、コマンドは、この図２８に例示されるに止まらず、さらに他のコマンドを定義することも可能である。
【０１４１】
再生開始位置指定に関するコマンドについて説明する。コマンドLinkPlayList(playListNumber)で、"playListNumber"で指定されたプレイリストの再生開始が指示される。コマンドLinkPlayItem(playListNumber,playItemNumber)で、指定のプレイリストの指定のプレイアイテムからの再生開始が指示される。"playItemNumber"は、"PlayItem_id"であり、値が「０」から始まる。"playItemNumber"に値「０」を指定することで、当該プレイアイテムが属するプレイリストの先頭から再生される。
【０１４２】
コマンドLink(position)(object)で、シナリオ内での移動が指示される。すなわち、現在移動中の箇所から前後のプレイリスト、プレイアイテムおよびチャプタに移動することがこのコマンドで指示される。なお、パラメータ"position"は、"prev"、"next"、"top"、"Parent"または"tail"の何れかの値を取り、パラメータ"object"で示される移動対象（プレイリスト、プレイアイテムまたはチャプタ）に対する移動方法が指示される。
【０１４３】
コマンドExitで、シナリオ再生の停止が指示される。この場合、標準レジスタの値は、保持されない。コマンドRSMで、プレーヤ内のメモリに保存されているレジューム情報を呼び出し、レジスタにセットして再生を開始する。
【０１４４】
プレーヤ状態の取得に関するコマンドについて説明する。コマンドgetMenuDescriptionLanguage()で、メニュー表示の際に用いられる言語が取得される。コマンドgetScenarioNumber()、コマンドgetPlayListNumber()およびコマンドgetChapterNumber()で、再生中のシナリオ番号、プレイリスト番号およびチャプタ番号がそれぞれ取得される。コマンドgetPlayerSupport()で、プレーヤのバージョン情報が取得される。
【０１４５】
ビデオストリームに関するコマンドについて説明する。コマンドgetVideoStreamAvailability()で、指定のビデオストリームが含まれているか否かが取得される。コマンドsetVideoStreamNumber()で、デコードするビデオストリームが指定される。コマンドgetVideoStreamNumber()で、選択中のビデオストリームの番号が取得される。コマンドgetVideoStreamAttr()で、選択中のビデオストリームの属性が取得される。なお、ビデオストリームの属性は、例えば、そのビデオストリームの符号化方式、解像度、アスペクト比、アスペクト比が４：３のときのディスプレイモード、クローズドキャプションの有無である。コマンドsetAngleNumber()で、アングル番号が指定される。コマンドgetAngleNumber()で、選択中のアングル番号が取得される。コマンドgetMaxVideoStreams()で、ビデオストリームの最大数が取得される。
【０１４６】
次に、この発明の実施の一形態によるシナリオを記述するコマンドやデータベースの、ディスクへの格納方法について説明する。図２９は、この実施の一形態による一例のファイルの管理構造を示す。ディスク上には、先ず、１つのルートディレクトリが作成される。このルートディレクトリの下が、１つの記録再生システムで管理される範囲とする。
【０１４７】
ルートディレクトリの下に、ディレクトリＢＤＭＶが置かれる。なお、図示はされていないが、ディレクトリＢＤＭＶは、上述の図４の如く、ルートディレクトリの下に複数を置くことができる。なお、以下では、この発明の実施の一形態で定義される方式をＢＤＭＶと総称する。
【０１４８】
ディレクトリＢＤＭＶの下には、２つのファイルすなわちファイル「scenario.hdmv」およびファイル「entrylist.data」が置かれると共に、ディレクトリ「ＰＬＡＹＬＩＳＴ」、ディレクトリ「ＣＬＩＰＩＮＦ」、ディレクトリ「ＳＴＲＥＡＭ」といった複数のディレクトリが置かれる。
【０１４９】
図３０は、ファイル「scenario.hdmv」の一例の構造を表すシンタクスを示す。このファイル「scenario.hdmv」は、ディスク挿入時などのイニシャルアクセス時に最初に読み込まれ実行されるファイルである。ファイル「scenario.hdmv」は、最初にファイル識別記号（フィールドtype_indicator）、バージョン番号（フィールドversion_number）が記述され、その後に、機能毎のデータを集めたブロックが並んでいる。
【０１５０】
フィールドtype_indicatorは、３２ビットのデータ長を有し、このファイルがファイル「scenario.hdmv」であることを表す特定の文字列が格納されている。フィールドversion_numberは、３２ビットのデータ長を有し、バージョン番号が入る。フィールドScenario_start_addressは、３２ビットのデータ長を有する符号無しの整数で、ブロックScenario()が開始される位置をファイル「scenario.hdmv」の先頭からの相対バイト数で表した値が格納される。
【０１５１】
ブロックAutoplay()は、ファイルの先頭から４１バイト目の固定位置から始まる。ブロックAutoplay()には、上述した、イニシャルアクセス時（ディスク挿入時のようにディスクの再生が始めて行われる時）に実行されるプログラムが記述される。上述したグローバルコマンドは、このブロックAutoplay()に格納される。Autoplay()の後には、任意の数のパディングワード（padding_word）が入り、ブロックの後に空きを持たせることができるようになっている。
【０１５２】
図３１は、図３０におけるブロックAutoplay()の一例のデータ構造を表すシンタクスを示す。フィールドlengthは、データ長が３２ビットの符号無しの整数で、このフィールドlengthの直後からブロックAutoplay()の終わりまでのデータ長を、バイトで表したものが記述される。フィールドnumber_of_commandsは、その後に続くフィールドcommand(i)の数を表す。フィールドcommand(i)は、データ長が３２ビットの値で、上述の図２８に一例が記されている、プレーヤのパラメータのセット、指定のプレイリストの再生開始、演算などの命令が記述されている。
【０１５３】
ブロックScenario()は、これまで説明してきた「シナリオ」が記述される。プレイリストの再生順序の情報およびプレイリスト毎に持つローカルコマンド領域などが、このブロックScenario()に記述される。
【０１５４】
図３２は、ブロックScenario()の一例の構造を表すシンタクスを示す。ブロックScenario()は、シナリオの情報、すなわちプレイリスト間のリンクを定義するブロックであって、上述したプレコマンド、ポストコマンド、プレイアイテムコマンドなどの情報およびコマンドそのものが格納される。ブロックScenario()は、ブロックScenario()内に格納されるコマンドの情報を示すフィールドが記述される領域と、実際のコマンドが列挙される領域とから構成される。
【０１５５】
フィールドlengthは、このフィールドlengthの直後からブロックScenario()の終わりまでの長さをバイトで表現した値が記述される。フィールドnumber_of_PlayListsは、シナリオを構成するプレイリストの数を表す。このフィールドnumber_of_PlayLists以降は、プレイリスト毎に持つデータである。すなわち、フィールドnumber_of_PlayListsの次行からのforループにより、フィールドnumber_of_PlayListsで示される値をループカウンタｉの最大値として、プレイリスト毎のデータが記述される。
【０１５６】
フィールドPre_Command_start_idは、プレイリストを再生する前に実行されるプログラム（プレコマンド）の、コマンドテーブル中での開始番号を表す。すなわち、フィールドPre_Command_start_idにより示される番号は、後述するフィールドPL_Command(i)が列挙されるforループ内でのループカウンタｊを表す。同様に、フィールドPost_Command_start_idは、プレイリストを再生した後に実行されるプログラム（ポストコマンド））の、コマンドテーブル中での開始番号を表す。すなわち、フィールドPost_Command_start_idにより示される番号は、後述するフィールドPL_Command(ｊ)が列挙されるforループ内でのループカウンタｊを表す。
【０１５７】
フィールドnumber_of_Pre_Commandsは、このプレイリストを再生する前に実行されるプログラム（プレコマンド）を構成するコマンドの数を表す。同様に、フィールドnumber_of_Post_Commandsは、このプレイリストを再生した後に実行されるプログラム（ポストコマンド）を構成するコマンドの数を表す。これらのプログラムは、後述するコマンドテーブル内に記述される。
【０１５８】
次のフィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を表す。フィールドPI_Command_start_idは、プレイアイテムの再生後に実行するコマンドの、コマンドテーブル中の開始番号を表す。すなわち、フィールドPI_Command_start_idにより示される番号は、後述するコマンドテーブル内でのループカウンタｊを表す。フィールドnumber_of_PI_Commandsは、プレイアイテムの再生後に実行するコマンド（プレイアイテムコマンド）の数を表す。すなわち、後述するコマンドテーブル内において、フィールドPI_Command_start_idで示される位置から始まり、フィールドnumber_of_PI_Commandsで表される数のコマンドを、プレイアイテムの再生後に実行する。
【０１５９】
フィールドnumber_of_PL_Commandsは、次行からのコマンドテーブル中のコマンドの数を表す。コマンドテーブルは、フィールドPL_Command(ｊ)が列挙されるforループにより構成される。コマンドテーブル内のコマンドには、順に番号ｊが割り当てられている。番号ｊは、コマンドテーブルを記述するためのforループのループカウンタｊに対応する。フィールドPL_Command(ｊ)は、一つのコマンドを表し、番号ｊは、上述したフィールドPre_Command_start_id、フィールドPost_Command_start_idおよびフィールドPI_Command_start_idから参照される。
【０１６０】
図３３は、ファイル「entrylist.data」の一例のデータ構造を表したシンタクスを示す。ファイル「entrylist.data」は、最初にファイル識別記号（フィールドtype_indicator）、バージョン番号（フィールドversion_number）、ブロックの開始アドレス（フィールドScenarioEntry_start_address）が記述され、その後に、機能毎のデータを集めたブロックが並んでいる。
【０１６１】
フィールドtype_indicatorは、データ長が３２ビットを有し、このファイルがタイトルやメニューのエントリポイントを記述したファイルであることを表す特定の文字列が格納されている。フィールドversion_numberは、データ長が３２ビットを有し、バージョン番号が格納される。フィールドScenarioEntry_start_addressは、データ長が３２ビットの符号無しの整数で、ブロックScenarioEntry()が開始される位置を、ファイル「entrylist.data」の先頭からの相対バイト数で表した値が格納される。
【０１６２】
図３４は、ブロックAppInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、データ長が３２ビットの符号無しの整数で、このフィールドlengthの直後からブロックAppInfo()の終わりまでの長さをバイトで表したものが記述される。フィールドHDMV_name_character_setは、後述するフィールドHDMV_nameを記述する文字セットを表す。フィールドPIN_valid_flagは、再生時に暗証番号を設定するか否かを表し、設定有効の場合は、直後のフィールドPINが暗証番号を表す。フィールドHDMV_name_lengthは、次のフィールドHDMV_nameの有効部分の長さを表す。フィールドHDMV_nameは、このファイル「entrylist.data」が置かれるディレクトリＨＤＭＶに付けられた名称がテキスト形式で格納されている領域である。フィールドHDMV_nameは、データ長が２５５バイトの固定長とされる。実際に名称が格納される部分は、フィールドHDMV_nameの先頭からフィールドHDMV_name_lengthで指定されている長さまでとされる。
【０１６３】
図３５は、ブロックScenarioEntry()の一例の構造を表すシンタクスを示す。ブロックScenarioEntry()は、シナリオ内の頭出し点が羅列される。ここで、シナリオは、上述したようにディレクトリＨＤＭＶに対して一つ作られ、ディレクトリＨＤＭＶの下に置かれる複数のプレイリストを結び付けて再生順序を定義する。一方、ユーザから見た場合、シナリオは、必ずしも一つの映像・音声単位として見える訳ではなく、複数の「タイトル」から構成されているように見える。
【０１６４】
例えば、一枚のディスクに映画が３本収録されている場合、再生順序を定義するシナリオは、ディスクに一つのみ存在するが、ユーザには当該ディスクに３つのタイトルが収録されているように見える。あるいは、その３つのタイトルのリストを表示し、ユーザに選択させるタイトルメニュー画面も含めて、４つのタイトルに分割されているように見える。なお、メニュー画面もユーザにとっては一まとまりの映像、音声単位であるので、この発明の実施の一形態では、タイトルの一種としてみなすことにする。
【０１６５】
このように、プレイリストの結びつきを定義するシナリオという単位と、ユーザが一まとまりの映像、音声として認識する単位には違いがあるため、上述のように、シナリオ内に頭出し点を定義しておく必要がある。このシナリオ内の頭出し点を、タイトルエントリと称する。このブロックScenarioEntry()に、タイトルエントリの情報が記述される。
【０１６６】
図３５の説明に戻り、フィールドlengthは、データ長が３２ビットの符号無しの整数で、このフィールドlengthの直後からブロックScenarioEntry()の終わりまでの長さをバイトで表したものが格納される。フィールドname_character_setは、後述するフィールドTopMenu_nameとフィールドTitle_nameとを表現する文字セットを表す。
【０１６７】
次のブロックTop Menu PL()は、ユーザがリモコンのタイトルメニューキーを押したときに表示されるメニューを構成しているプレイリストあるいはプレイリスト群へのエントリポイントを指定する。トップメニューは、シナリオに一つあり、例えばタイトルをユーザに提示するためのメニューとして利用される。トップメニューに対して、さらにオーディオや字幕を設定するサブメニューを下層メニューとして設けることができる。サブメニューは、ストリーム設定メニューとも称される。
【０１６８】
フィールドflagsは、詳細は省略するが、トップメニューに関する属性情報を表す領域である。フィールドTopMenu_ref_to_PlayList_file_nameは、トップメニューを構成するプレイリストあるいはプレイリスト群の入り口となるプレイリストを指定する。フィールドTopMenu_ref_to_PlayItem_idは、フィールドTopMenu_ref_to_PlayList_file_nameで指定したプレイリスト中の特定のプレイアイテムからトップメニューが開始されている場合、そのプレイアイテムの番号を指定する。プレイリストの先頭からの再生であれば、フィールドTopMenu_ref_to_PlayItem_idの値は、「０」となる。フィールドTopMenu_name_lengthは、トップメニューに付された名前の長さを表す。フィールドTopMenu_nameは、トップメニューに付された名前の文字列が格納される。
【０１６９】
ブロックTop Menu PL()の次に、タイトルに関する情報が記述される。フィールドnumber_of_Titlesは、その直後のforループ内のタイトル頭出し点（タイトルエントリ）の数を表す。フィールドflagsは、詳細は省略するが、タイトルに関する属性情報を表す領域である。フィールドTitle_ref_to_PlayList_file_nameは、タイトルエントリを含むプレイリストのファイル名を表す。フィールドTitle_ref_to_PlayItem_idは、フィールドTitle_ref_to_PlayList_file_nameで指定したプレイリストの中の特定のプレイアイテムからタイトルが始まる場合に用いる。フィールドTitle_name_lengthは、タイトルに付された名前の長さを表す。フィールドTitle_nameは、タイトルに付された名前の文字列が格納される。
【０１７０】
次に、サブメニューに関する情報が記述される。「Stream Setup Menu」以下に、プレイアイテム毎に持つことができるストリーム設定メニュー（すなわちサブメニュー）を構成するプレイリストあるいはプレイリスト群へのエントリポイントが記述されている。ストリーム設定メニューは、オーディオ、字幕、アングルなどの切り替えなど、プレイリスト毎に個別にメニューを用意したい場合に利用することができる。例えば、上述の図２０におけるボタン６４、６５を押すことで表示される画面がサブメニューである。
【０１７１】
フィールドnumber_of_PlayListsは、ストリーム設定メニューに用いられるプレイリストの数を表す。このフィールドnumber_of_PlayListsの値が直後のforループのループ回数として用いられる。フィールドSSMenu_flagsは、詳細は省略するが、ストリーム設定メニューに関連する属性情報を格納する領域である。フィールドSSMenu_ref_to_PlayList_file_nameは、ストリーム設定メニューを構成するプレイリストあるいはプレイリスト群の入り口となるプレイリストを指定する。フィールドSSMenu_ref_to_PlayItem_idは、フィールドSSMenu_ref_to_PlayList_file_nameで指定したプレイリスト中の特定のプレイアイテムからストリーム設定メニューが開始されている場合、そのプレイアイテムの番号を指定する。プレイリストの先頭からの再生であれば、フィールドSSMenu_ref_to_PlayItem_idの値は、「０」となる
【０１７２】
図３６は、ファイル「xxxxx.mpls」の一例の構造を表すシンタクスを示す。図３６において、ファイル「xxxxx.mpls」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。また、フィールドPlayList_start_addressおよびPlayListMark_start_addressには、それぞれ対応するブロックの先頭アドレスが例えばデータ長が３２ビットのアドレス情報として示される。
【０１７３】
ブロックPLControlInfo()は、このプレイリストに関する属性情報が格納される。ブロックPlayList()は、このプレイリストを構成するプレイアイテムに関する情報が格納される。ブロックPlayListMark()は、このプレイリストに付されるマークの情報が格納される。
【０１７４】
ファイル「xxxxx.mpls」において、ブロックPLControlInfo()、PlayList()およびPlayListMark()の先頭アドレスがこれらのブロックより前に示されるために、各ブロックの前および／または後ろに、任意の長さのパディングデータpadding_wordを挿入することができる。但し、ファイル「xxxxx.mpls」の最初のブロックであるブロックPLControlInfo()の開始位置は、ファイルの先頭から４１バイト目に固定される。
【０１７５】
図３７は、ブロックPLControlInfo()の一例の構造を表すシンタクスを示す。このブロックPLControlInfo()は、プレイリストの再生において直接的に必要とされない、プレイリストに関する各種の属性情報が格納される。フィールドPlayList_character_setは、プレイリストに関する文字列情報の文字セットが指定される。
【０１７６】
フィールドPL_playback_typeは、図３８に一例が示されるような値を取り、このプレイリストがシーケンシャルに再生される通常のプレイリストか、プレイアイテムをランダム再生するプレイリストか、プレイアイテムをシャッフル再生するプレイリストであるかを表す。ランダムシャッフルは、プレイリストの単位で指定する。すなわち、一つのプレイリストに通常再生のプレイアイテムとランダムシャッフルのプレイアイテムブロックを混在させない。再生専用の記録媒体の場合には、制作者の意図により、ランダム再生やシャッフル再生を指定されることがあるため、このような情報が必要とされる。
【０１７７】
フィールドplayback_countは、このプレイリストがランダム再生あるいはシャッフル再生のプレイリストであるとき、プレイアイテムの再生回数を指定する。すなわち、このフィールドplayback_countにより、ランダム再生あるいはシャッフル再生に用いるプレイアイテムの数を指定できる。
【０１７８】
フィールドPL_UOP_mask_table()は、ユーザ操作を制限する情報が格納される。再生、早送り、早戻しなどのユーザ操作を、このプレイリストの再生中に禁止したい場合、この領域で適切な指定をする。例えば、このフィールドPL_UOP_mask_table()内の値を所定に設定することで、警告表示や著作権の表示を早送りなどで飛ばして再生されないようにできる。
【０１７９】
フィールドPL_random_access_modeは、図３９に一例が示される値を取り、このプレイリスト中の任意の箇所に飛び込み再生をするランダムアクセスが可能か否かを示す。例えば、必ずユーザに見せたいプレイリストがある場合に、フィールドPL_random_access_modeの値を〔０ｘ１〕に設定する。これにより、このプレイリストを再生する際には、早送り、早戻し、任意時刻からの再生などが不可能になる。再生専用の記録媒体においては、制作会社のロゴ表示や注意事項など、ユーザに必ず見せたいシーンが収録されている場合がある。このフィールドPL_random_access_modeは、そのようなシーンを変速再生等で飛ばされないようにするために必要な情報である。
【０１８０】
フィールドPlayList_durationは、プレイリストの再生時間を示す。フィールドPlayList_nameは、フィールドPlayList_name_lengthに示される値を有効長としてプレイリスト名が示される。フィールドPlayList_detailは、フィールドPlayList_detail_lengthに示される値を有効長としてプレイリストの詳細情報が示される。
【０１８１】
図４０は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlengthの直後のフィールドからこのブロックPlayList()の終端までのバイト長を示す。フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を示す。フィールドnumber_of_SubPlayItemsは、このメインのプレイアイテムと同時に再生される補助的なプレイアイテム（サブプレイアイテム）の数を示す。
【０１８２】
ブロックPlayItem()は、プレイアイテムの情報が格納される。ブロックSubPlayItem()は、サブプレイアイテムの情報が格納される。
【０１８３】
図４１は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと１対１に対応するクリップ情報ファイル（拡張子が「clpi」であるファイル）のファイル名が文字列で示される。
【０１８４】
フィールドClip_codec_identifierは、このプレイアイテムにより参照されるクリップの符号化方式を示す。この実施の一形態では、フィールドClip_codec_Identifierは、値「Ｍ２ＴＳ」に固定的とされる。すなわち、この実施の一形態では、プレイアイテムにより参照されるクリップの符号化方式が値「Ｍ２ＴＳ」により示される方式に固定的とされる。
【０１８５】
フラグis_multi_angleは、このプレイアイテムが後述するマルチアングル構造であるかどうかを表す（第１のフラグ）。
【０１８６】
フィールドconnection_conditionは、このプレイアイテムと次のプレイアイテムとがどのように接続されているかを示す情報である。すなわち、フィールドconnection_conditionにより、プレイアイテムとプレイアイテムとの間が継ぎ目なくシームレスに再生できるか否かが示される。
【０１８７】
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。シーケンスSTC_sequenceは、ＭＰＥＧ２  ＴＳ(Transport Stream)における時間軸の基準であるＰＣＲ(Program Clock Reference)が連続な範囲を表すＢｌｕ−ｒａｙ  Ｄｉｓｃ規格独自の構造である。シーケンスSTC_sequenceには、クリップ内で一意な番号STC_idが割り当てられる。このシーケンスSTC_sequence内では、不連続の無い一貫した時間軸を定義できるので、プレイアイテムの開始時刻および終了時刻を一意に定めることができる。つまり、各プレイアイテムの開始点と終了点は、同一のシーケンスSTC_sequenceに存在していなければならない。フィールドref_to_STC_idでは、番号STC_idによりシーケンスSTC_sequenceが指定される。
【０１８８】
フィールドIN_timeおよびOUT_Timeは、このプレイアイテムにおける開始点および終了点の、シーケンスSTC_sequence 上でのタイムスタンプpts(presentation_time_stamp)をそれぞれ示す。
【０１８９】
フィールドPI_UOP_mask_table()は、ユーザ操作を制限するためのデータが格納される。ここで制限されたユーザ操作は、仮にユーザがその操作を行ったとしても、プレーヤは反応してはならない。例えばメニュー画面で早送りが実行されないようにする場合に、ここで早送りのユーザ操作を無効にするような設定をしておく。
【０１９０】
なお、このプレイアイテム毎に設けられるフィールドPI_UOP_mask_table()は、上述したプレイリストの再生に関するブロックPLControlInfo()に設けられるフィールドPL_UOP_mask_table()と同様の目的の情報が格納される。プレイリストとプレイアイテムとの何方かで禁止となっていれば、そのユーザ操作は禁止となる。すなわち、プレイリストの情報と、プレイアイテムの情報とで和演算がなされ、あるプレイアイテム再生中でのユーザ操作の制限が決まることになる。
【０１９１】
フィールドPID_filter()は、詳細は省略するが、このプレイアイテムで再生するストリームの優先順位を決めるテーブルである。
【０１９２】
フィールドPI_random_access_modeは、図４２に一例が示されるような値を取り、このプレイアイテム中の任意の箇所に飛び込み再生をするランダムアクセスが可能か否かを示す。例えば、必ずユーザに見せたいプレイリストがある場合に、フィールドPI_random_access_modeの値を〔０ｘ１〕に設定しておく。これにより、このプレイアイテムを再生する際に、早送り、早戻し、任意時刻からの再生などを不可能にできる。
【０１９３】
フィールドstill_modeは、このプレイアイテム再生後に一時停止を行うかを決めるフィールドである。フィールドstill_modeは、図４３に一例が示されるような値を取り、例えばフィールドstill_modeの値が〔０ｘ１〕のときは一時停止することを表し、次のフィールドstill_timeのフィールドで指定された時間、一時停止を行う。これにより、スライドショーなどのような、静止画像を一定間隔で次々と表示するような再生を実現することができる。この場合には、静止画１枚ずつがそれぞれプレイアイテムとなっている。なお、フィールドstill_timeは、有限の時間だけでなく、ユーザが入力するまで一時停止し続けるという設定（ポーズ設定）も可能となっている。例えばフィールドstill_modeの値を〔０ｘ２〕とすることで、ポーズ設定が可能とされる。
【０１９４】
上述したフラグis_multi_angleの値が例えば「１」とされていれば、このプレイアイテムがマルチアングルであるとされ、「Angle」以下に、マルチアングルのための情報が追加される。
【０１９５】
フィールドnumber_of_anglesは、アングル数を表す。フィールドis_seamless_angle_changeは、図４４に一例が示されるような値を取り、アングルがシームレスに切り替え可能なように、すなわち、アングル間をなめらかに切り替えることができる状態に各アングルがディスク上配置されているか否かを表す。
【０１９６】
次のforループは、アングルを構成するクリップの情報が記述される。forループ中のフィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと１対１に対応するクリップ情報ファイル（拡張子が「clpi」であるファイル）のファイル名が文字列で示される。フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。
【０１９７】
ここで、値angle_id=0に相当するアングルは、アングルを構成しない通常のプレイアイテムと同じように、このブロックPlayItem()の前半部分で既に定義されている。値angle_id=1以降のアングルがこのforループの中で定義されている。したがって、このforループの中には、値angle=0に相当するアングルは、含まれていない。
【０１９８】
図４５は、ブロックSubPlayItem()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからSubPlayItem()の終わりまでの長さをバイトで表したものである。フィールドClip_Information_file_nameは、このサブプレイアイテムが参照しているクリップと１対１に対応するクリップ情報ファイル（拡張子が「clpi」であるファイル）のファイル名が文字列で示される。
【０１９９】
フィールドClip_codec_identifierは、このサブプレイアイテムにより参照されるクリップの符号化方式を示す。この実施の一形態では、フィールドClip_codec_Identifierは、値「Ｍ２ＴＳ」に固定的とされる。
【０２００】
フィールドis_repeat_flagは、図４６に一例が示されるような値を取り、このサブプレイアイテムをメインのプレイアイテム（メインパス）と非同期に繰り返し再生するか否かを表すフラグである。例えば、このフィールドis_repeat_flagの値が「１」の場合は、メインのプレイアイテムの再生が終了するまで、メインのプレイアイテムとは非同期に、このサブプレイアイテムが繰り返し再生される。このフィールドis_repeat_flagの値が「０」の場合は、このサブプレイアイテムは、メインのプレイアイテムと同期して、一度だけ再生される。
【０２０１】
例えば、このサブプレイアイテムがオーディオのみのサブプレイアイテムである場合、フィールドis_repeat_flagの値を「１」とすることで、ＢＧＭ(Back Ground Music)再生を行うことができる。
【０２０２】
フィールドSubPlayItem_typeは、このサブプレイアイテムがどのような性質を持ったサブプレイアイテムであるかを表す。例えば、フィールドSubPlayItem_typeの値が「１」であれば、オーディオのみのサブプレイアイテムであることを表す。
【０２０３】
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。フィールドSubPlayItem_IN_timeおよびSubPlayItem_OUT_Timeは、このサブプレイアイテムにおける開始点および終了点の、シーケンスSTC_sequence 上でのタイムスタンプpts(presentation_time_stamp)をそれぞれ示す。
【０２０４】
上述のフィールドis_repeat_flagの値が例えば「０」であって、このサブプレイアイテムがメインのプレイアイテムと同期して再生されることを示す場合、フィールドsync_PlayItem_idとフィールドsync_start_PTS_of_PlayItemにより、サブプレイアイテムがメインのプレイアイテムのどの時刻から同期再生されるかが指定される。
【０２０５】
図４７に一例が示されるように、フィールドsync_PlayItem_idで、メインパスのプレイアイテムを指定し（PlayItem=1）、フィールドsync_start_PTS_of_PlayItemで、サブプレイアイテムが再生開始されるメインのプレイアイテム上の時刻を表す(ｔ1)。また、サブプレイアイテムとして、対応するクリップがフィールドSubPlayItem_IN_timeおよびフィールドSubPlayItem_OUT_timeで指定される期間、再生されることが示されている。
【０２０６】
図４８は、ファイル「zzzzz.clpi」の一例の構造を表すシンタクスを示す。図４８において、ファイル「zzzzz.clpi」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。また、フィールドSequenceInfo_start_address、フィールドProgramInfo_start_address、フィールドCPI_start_addressおよびフィールドClipMark_start_addressで、それぞれ対応するブロックの開始位置が示される。
【０２０７】
図４９は、ブロックClipInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからブロックClipInfo()の終わりまでの長さをバイトで表す。フィールドClip_stream_typeは、クリップＡＶストリームの種別を表す。再生専用の規格においては、通常のクリップであることを示す値、例えば値「１」に固定的としてよい。
【０２０８】
フィールドapplication_typeは、クリップＡＶストリーム（拡張子が「m2ts」のファイル）がどのような多重化によって作られているかを示す。フィールドapplication_typeは、図５０に一例が示されるような値を取り、このクリップＡＶストリームが通常のビデオストリームであるか、静止画の表示に適した多重化がなされているストリームであるかを表す。
【０２０９】
より具体的には、この例によれば、フィールドapplication_typeの値が「１」で、対応するクリップＡＶストリームのファイルがこの実施の一形態によるＨＤＭＶトランスポートストリームのルールに従っていることを示す。このとき、当該クリップＡＶストリームは、通常の動画が再生される。
【０２１０】
フィールドapplication_typeの値が「２」で、対応するクリップＡＶストリームのファイルがオーディオ再生に同期する静止画用の、ＨＤＭＶトランスポートストリームのルールに従っていることを示す。このとき、当該クリップＡＶストリームは、例えばＭＰＥＧ２形式のファイルであって、ビデオデータおよびオーディオデータがマルチプレクスされている。また、ビデオデータは、例えばＭＰＥＧ２におけるＩピクチャが静止画として並んでいるような構成とされる。これにより、例えばオーディオの時間軸に同期して表示されるスライドショーのような再生が可能とされる。このような再生を、タイムベーススライドショーと称する。
【０２１１】
フィールドapplication_typeの値が「３」で、対応するクリップＡＶストリームのファイルがオーディオとは非同期に再生される静止画用の、ＨＤＭＶトランスポートストリームのルールに従っていることを示す。このとき、オーディオデータとビデオデータとは、別ファイルとされ、例えば、オーディオデータが再生されている間、ビデオデータは、静止画が任意の間隔またはユーザの指定に基づき切り換えられて表示される。ビデオデータは、上述と同様に、例えばＭＰＥＧ２におけるＩピクチャが静止画として並んでいるような構成とすることができる。このような再生を、ブラウザブルスライドショーと称する。
【０２１２】
なお、フィールドapplication_typeの値が「０」のときは、対応するクリップＡＶストリームがＨＤＭＶトランスポートストリームのルールに従っていない場合である。
【０２１３】
ここで、静止画の表示に適した多重化とは、主として静止画スライドショーのようなアプリケーションの実現を容易にすることを想定している。このようなアプリケーションにおいては、静止画１枚と、その上に重ねる字幕やグラフィクスデータとをカプセル化して多重化すると、読み込みが容易となる。
【０２１４】
通常の動画像と同様の多重化をしてしまうと、ある静止画と同時に表示されるべき字幕が、前の静止画の画像データ付近に多重化されているような状況（いわゆる多重化位相差）が発生し、より広範囲のストリームデータを読みださないと字幕とグラフィックスとが重ねられた静止画像１枚を表示することができない。
【０２１５】
すなわち、この発明の実施の一形態においては、ビデオデータや字幕を表示するためのグラフィクスデータは、ＭＰＥＧにおけるＴＳ(Transport Stream)パケットに格納されて伝送される。１つのＴＳパケットは、１８８バイトからなり、上述のビデオデータやグラフィクスデータは、それぞれＴＳパケットに収まるように分割されてＴＳパケットに格納される。このとき、ある静止画像データ（画像Ｐ1とする）に対応した字幕データのパケットが、次以降の静止画像データ（画像Ｐ2とする）のパケットの後ろに配置されてしまうと、画像Ｐ1に対応した字幕を表示するために、画像Ｐ2の後ろまでデータを読み込んでおかなければならない。
【０２１６】
ある静止画一枚とそれに付随する字幕およびグラフィックスだけを対象として多重化を行えば（カプセル化）、他のデータが混入しないストリームを作ることができる。それを静止画ごとに繰り返してストリームをつなげていくと、静止画（および当該静止画に付随する字幕、グラフィクスデータ）毎のデータが直列につながった一本のストリームが出来る。このような多重化を行ったストリームを、静止画用のＨＤＭＶストリームとしている。
【０２１７】
さらに、静止画用のＨＤＭＶストリームには、上述したように、タイムベーススライドショーと、ブラウザブルスライドショーとの２種類がある。この実施の一形態では、この２種類を、フィールドapplication_typeで別の番号を割り当てて、区別している。
【０２１８】
このように、静止画とそれに付随する字幕やグラフィクスとをカプセル化して記録することで、静止画を切り替えながら再生する際のアクセス性が向上する。
【０２１９】
図４９の説明に戻り、フィールドTS_recording_rateは、クリップＡＶストリームファイルの記録レートをバイト／秒で表したものである。フィールドnum_of_source_packetsは、クリップＡＶストリームに含まれるパケット数を表す。フィールドBD_system_useおよびブロックTS_type_info_block()は、この発明と関連が低いので説明を省略する。
【０２２０】
図５１は、ブロックSequenceInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからブロックSequenceInfo()の終わりまでの長さをバイトで表したものである。フィールドnum_of_ATC_sequencesは、連続した時間に記録されたことを表すシーケンスATC_sequenceの数を示す。再生専用の媒体の場合、シーケンスATC_sequenceの数は、「１」にすることができるため、詳細は省略する。フィールドSPN_ATC_startは、シーケンスATC_sequenceの開始をパケット番号で表したものであり、シーケンスATC_sequenceが１つの場合には、クリップＡＶストリームファイルの先頭と一致し、値が「０」となる。
【０２２１】
フィールドnum_of_STC_sequencesは、シーケンスATC_sequence上のシーケンスSTC_sequenceの数を表す。再生専用の媒体の場合、シーケンスSTC_sequenceの数は、「１」にすることができるため、詳細は省略する。フィールドoffset_STC_idは、値が「０」に固定的とされる。フィールドPCR_PIDは、ＭＰＥＧ２  ＴＳにおいて、ＰＣＲ(Program Clock Reference)が含まれるＴＳパケットのＰＩＤを表す。フィールドSPN_STC_startは、シーケンスSTC_sequenceの開始をパケット番号で表したものであり、シーケンスSTC_sequenceが１つの場合には、クリップＡＶストリームファイルの先頭と一致し、値が「０」となる。フィールドpresentation_start_timeおよびフィールドpresentation_end_timeは、クリップＡＶストリーム中の有効な範囲を表す。フィールドpresentation_start_timeおよびフィールドpresentation_end_timeで示される範囲がプレイアイテムから参照できる範囲となる。
【０２２２】
図５２は、ブロックProgramInfo()の一例の構造を表すシンタクスを示す。これは、記録再生媒体用のシンタックス構造を再生専用媒体に適用することができ、新規の構造は無いので詳細な説明は省略する。ただし、フィールドnum_of_program_sequencesの値が「１」であること、フィールドnum_of_groupsの値が「１」であるなどの制限を加えることができる。
【０２２３】
図５３は、ブロックStreamCodingInfo()一例の構造を表すシンタクスを示す。これも、上述のブロックProgramInfo()と同様、記録再生媒体用のシンタックス構造と略同じ構造を有し、ビデオデータに関しては、ビデオデータのフォーマット、フレームレート、アスペクト比などの属性情報、オーディオデータに関しては、サンプリング周波数などの属性情報が記述される。ただし、再生専用媒体に適用する際には、この図５３に示されるように、字幕、オーディオストリームの言語を表すフィールドlanguage_codeを追加する必要がある。この情報は、プレーヤの言語設定に従って最適な音声・字幕の言語を選択する際に有用である。
【０２２４】
図５４は、ブロックCPI()の一例の構造を表すシンタクスを示す。一般に、ＭＰＥＧストリームのような、フレーム間圧縮を行っている符号化ストリームにおいては、デコード開始可能な箇所は、ＧＯＰ(Group Of Picture)の先頭など一部の箇所に限定されている。ＣＰＩ(Characteristic Point Information)とは、そのデコード可能な開始点の位置の情報を集めたデータベースで、再生時刻と、ファイル内アドレスとが対応付けられたテーブルになっている。すなわち、ＣＰＩは、デコード単位の先頭位置を示す情報がテーブル化されている。
【０２２５】
このようにデータベースを定めることで、例えば、任意の時刻から再生したい場合、再生時刻を元にＣＰＩを参照することによって再生位置のファイル内アドレスがわかる。このアドレスは、デコード単位の先頭となっているため、プレーヤは、そこからデータを読み出してデコードし、素早く画像を表示することができる。
【０２２６】
なお、このＣＰＩに格納される、デコード単位の先頭位置（この例ではＧＯＰの先頭位置）を、ＥＰ(Entry Point)エントリと称する。
【０２２７】
フィールドCPI_typeは、ＣＰＩの種類を表し、図５５に一例が示されるような値を取る。この発明の場合は、再生専用媒体用のＣＰＩであることを示す値となる。具体的には、値が「８」とされ、ＨＤＭＶ用のＥＰエントリのマップ(EP_map_type_for_HDMV)が格納されることが示される
【０２２８】
図５６は、再生専用媒体用のＥＰエントリのマップEP_map、すなわち、上述のフィールドCPI_type内のブロックEP_map_for_HDMV()の一例のデータ構造を表すシンタクスを示す。マップEP_mapは、ＧＯＰの先頭位置について、再生時刻とファイル内アドレスを対応付けたテーブルである。図５６の例では、ＧＯＰの先頭位置について、ＭＰＥＧのＰＴＳ(Presentation Time Stamp)とＳＰＮ(Source Packet Number)とが対応付けられたテーブルとしてデータベースが作られている。なお、ＳＰＮは、ソースパケット番号を示し、ファイルの先頭からのバイトアドレスに相当する。
【０２２９】
記録再生用のマップEP_mapの構造と、この再生専用媒体用のマップEP_mapの構造は、略同一とされている。この実施の一形態では、データ量の削減および検索の高速化のために、各値をcoarseとfineに分割し、大まかな単位での検索(coarse)と、より精密な単位での検索(fine)とを分けて行うことが可能なようにされている。そのため、内部構造がcoarseおよびfineのそれぞれに対応した二つのforループに分かれており、「GOPの最初のIピクチャのPTS  対  ファイル内アドレス」という単純なテーブルと比べて、多少複雑になっている。
【０２３０】
フィールドEP_fine_table_start_addressは、上述した、より精密な検索を行うためのテーブルの位置が示される。次のforループは、フィールドPTS_EP_coarseおよびSPN_EP_coarseにより、大まかな単位で検索を行う(coarse)ためのテーブルが格納され、フィールドref_to_EP_fine_idにより、大まかな単位から参照される精密な検索(fine)のためのテーブルの番号が記述される。フィールドPTS_EP_coarseおよびSPN_EP_coarseは、それぞれＰＴＳおよびＳＰＮの上位側のビットが示される。
【０２３１】
次に、パディングワードを挟んで、精密な検索を行うためのフィールドPTS_EP_fineおよびSPN_EP_fineが格納されるforループが配される。それと共に、フラグis_angle_change_pointおよびフィールドI_end_position_offsetが格納される。詳細は後述するが、フラグis_angle_change_pointは、クリップＡＶストリームがマルチアングルを構成している場合に、各ＥＰエントリがアングル切り替え可能点に該当しているか否かを示す（第２のフラグ）。
【０２３２】
ここで、フラグis_angle_change_pointについて説明する。先ず、理解を容易とするために、クリップＡＶストリームがディスク上にどのように配置されているかについて説明する。
【０２３３】
クリップＡＶストリームは、ディスク１０上の論理アドレスが連続したデータのかたまり（ブロック）の並びで構成されている。以下、このクリップＡＶストリームによるディスク上の論理アドレスが連続したデータのブロックを、エクステントと称する。図５７は、ディスク上にエクステントが配置された様子を模式的に示す。図５７の例では、１つのクリップＡＶストリームが３つのエクステント６０１Ａ、６０１Ｂ、６０１Ｃの並びで構成されている。エクステントの長さとその配置は、ディスク作成の際に適切に制御されている。
【０２３４】
このとき、エクステントの最小サイズの規定を守るようにエクステント６０１Ａ、６０１Ｂ、６０１Ｃが構成されて、クリップＡＶストリームがディスク６００に記録されていれば、再生時にデータの連続供給が保証される。
【０２３５】
図５７に示されるように、１つのファイルが複数のエクステント６０１Ａ、６０１Ｂおよび６０１Ｃから構成されている場合、ファイルの読み出しのために、あるエクステント６０１Ａから次のエクステント６０１Ｂへと、次々にエクステントを読む動作が繰り返される。あるエクステント６０１Ａを読んだ後に次のエクステント６０１Ｂを読む場合、ディスク６００の回転数を変化させ、プレーヤにおいてディスク６００に対する読み出し部を構成する光ピックアップを移動させる必要がある。
【０２３６】
ディスク６００上での、光ピックアップを移動させてのアクセス時間は、最大で、約０．８秒とされ、光ピックアップの移動中は、ディスク読み出し部を構成するドライブからは、データを取り出すことができない。一方、映像および音声のデコードおよび再生は、連続に行われるため、このアクセス時間の影響を吸収するような仕組みが必要となる。
【０２３７】
あるエクステント６０１Ａと次のエクステント６０１Ｂとの間では、アクセスのジャンプが発生する。前のエクステント６０１Ａのバイト長が大きい場合、ジャンプ前に十分な量のデータをエクステント６０１Ａから読み出し、バッファに格納することができる。このため、ジャンプする間も、バッファに格納されたデータをデコーダに供給することで、連続的にデコードを行うことができる。
【０２３８】
すなわち、ジャンプ前のエクステント６０１Ａのサイズが十分大きければ、次のエクステント６０１Ｂにジャンプしている間も、ストリームの連続的な供給が保証できる。したがって、バッファに十分な量のデータを蓄積できるようにするには、エクステントのサイズの下限を制限すればよい。最小エクステントサイズは、ディスク６００からの読み出しレートと、ドライブのアクセス時間から固有的な値として定められる。データ連続供給の条件は、このエクステントの最小サイズの規定を守ってデータが配置されているか否かにより判定できる。
【０２３９】
図５８は、エクステント６０１Ｄおよび６０１Ｅのように、クリップＡＶストリームがディスク上に断片化して記録されている状態の例を示す。図５８において、記録されたクリップＡＶストリームを、所定のビットレートで記録媒体から読み出せることを保証するためには、１つのエクステントの大きさ（サイズＳとする）が、次式（１）に示されるような条件を満たす必要がある。
Ｓ×８／（Ｓ×８／Ｒｕｄ＋Ｔｓ）＞＝Ｒｍａｘ・・・（１） 
【０２４０】
式（１）において、「Ｓ」は、エクステントのサイズをバイトで表わし、「Ｔｓ」は、１つのエクステント６０１Ｄから次のエクステント６０１Ｅへのフルストロークのアクセス時間すなわち最大アクセス時間を秒で表わす。「Ｒｕｄ」は、ディスクからの読み出しビットレートを表わし、「Ｒｍａｘ」は、クリップＡＶストリームのビットレートを表わす。「Ｒｕｄ」および「Ｒｍａｘ」の単位は、ビット／秒である。なお、エクステントサイズＳに乗じられている「８」は、バイト／ビットの換算のためである。
【０２４１】
すなわち、各エクステント６０１Ｄ、６０１ＥのサイズがＳバイト以上になるように、クリップＡＶストリームのデータを連続して配置すれば、エクステント６０１Ｄおよび６０１Ｅの並びをシームレスに再生することが可能となる。
【０２４２】
式（１）を変形すると、次式（２）のようになる。
Ｓ×８＞＝Ｒｍａｘ・Ｒｕｄ・Ｔｓ／（Ｒｕｄ−Ｒｍａｘ）    ・・・（２）
この式（２）に基づき具体的な数値を計算すると、例えば、クリップＡＶストリームのビットレートＲｍａｘ＝２８（ビット／秒）の場合において、Ｒｕｄ＝３５Ｍｂｐｓ(Mega Bit per second)、Ｔｓ＝０．８秒とすると、Ｓ＞＝１４ＭＢ(Mega Byte)となる。つまり、この例では、最小エクステントサイズＳは、  １４ＭＢとなる。
【０２４３】
以上のようにして、一つのファイルを連続に読み出す際のデータ連続供給の条件を決めることができる。これは、マルチアングル機能において読み出すアングルをシームレスに切り替える、シームレスアングル切り替え機能の実現にも適用できる。
【０２４４】
図５９を用いて、マルチアングル機能について説明する。マルチアングル機能は、図５９Ａに一例が示されるように、複数の再生経路が用意された区間（マルチアングルブロック）があり、ユーザは、その区間を再生している間、見たいアングルを自由に変えることができるという機能である。例えば、同一の対象物をアングルを変えて複数のカメラで並列的に撮影することによって、このようなマルチアングルブロックを構成することができる。
【０２４５】
なお、マルチアングルを構成する映像は、同一シーンを対象にしたものに限られない。再生時系列上の同一時刻に選択的に表示されるように意図された複数の映像により、マルチアングルを構成することができる。
【０２４６】
マルチアングルブロックは、１つのプレイアイテムから構成される。すなわち、１つのプレイアイテムが複数のアングルの映像を含むことになる。図５９Ａの例では、マルチアングルブロックにおいて、３つのアングル（アングル（０）、アングル（１）およびアングル（２））を選択可能とされている。
【０２４７】
マルチアングルブロックにおいては、アングル間を切り替える際のアクセス時間を短くするため、図５９Ｂに一例が示されるように、マルチアングルを構成する各ストリームがディスク上に特殊な配置で記録される。これを、インタリーブブロックと呼び、一つの連続部分をインタリーブユニットと呼ぶ。インタリーブユニットは、ディスク上の連続的なアドレスに記録されており、最小エクステントサイズの条件を満たす。インタリーブブロックは、各々のアングルの時間的に対応するインタリーブユニットをアングル順に並べて纏め、それを、さらに時系列に従って並べたものである。
【０２４８】
インタリーブユニットを単位にしてアングルを切り替えれば、常に最小エクステントサイズを読み込んでからジャンプをするため、上述したデータ連続供給の条件が満たされる。さらに、インタリーブユニットの先頭にＧＯＰの先頭を合わせ、常にインタリーブユニットの先頭からＭＰＥＧデコードが可能になるようにしておけば、シームレスなアングル切り替えを実現できる。
【０２４９】
ここで、シームレスアングル切り替えが可能な位置について考える。フレーム間圧縮を行うＭＰＥＧストリームの性質と、ディスクからのデータ連続供給の条件から、アングル切り替えは、任意のバイト位置ではできないことがわかる。最も簡単なのは、最小エクステントのサイズを満たすインタリーブユニットの単位で切り替えられるようにする方法である。さらに、インタリーブユニットの先頭とＧＯＰの先頭、すなわちＥＰエントリとを一致させれば、ＭＰＥＧストリームのデコードも連続に行える。
【０２５０】
ここで、例えばアングルの切り替え可能点を増やし、インタリーブによってインタリーブブロックの数が増えると、一つのファイルが細切れになり、ファイルシステムの管理情報が増える。例えばＢｌｕ−ｒａｙ  Ｄｉｓｃファイルシステムでは、ファイルが複数のエクステントに分割されると、ディスクリージョンの数が増えてファイルシステムのデータベースが肥大化し、記録できるファイル数の上限が小さくなるなどの問題が出てくる。
【０２５１】
そこで、この発明の実施の一形態では、図６０に一例が示されるように、一つのインタリーブユニットのサイズを大きくして、インタリーブブロック中のインタリーブユニットの数を減らし、一つのインタリーブユニット中に複数のアングル切り替え可能点を設ける。アングル切り替え可能点は、デコード可能な開始点でもあるため、何れかのＥＰエントリに一致する。
【０２５２】
上述したフラグis_angle_change_pointは、ＧＯＰの先頭を指すＥＰエントリがアングル切り替え可能点に該当するか否かを表すものである。フラグis_angle_change_pointは、図６１に一例が示されるような値を取り、フラグis_angle_change_pointが値「１」で、当該ＥＰエントリがアングル切り替え可能点であることを示し、値「０」で、当該ＥＰエントリがアングル切り替え可能点ではないことが示される。
【０２５３】
あるＥＰエントリをシームレスなアングル切り替え点にできるかどうかは、基本的には、当該ＥＰエントリと前のアングル切り替え可能点とが、最小エクステントのサイズ以上離れているか否かで決めることができる。すなわち、フラグis_angle_change_pointの値が「１」であるアングル切り替え可能なＥＰエントリの間隔は、最小エクステントサイズ以上離れている必要がある。
【０２５４】
次に、図６０を用いて、このフラグis_angle_change_pointを利用したシームレスアングル切り替えの動作について説明する。図６０において、上向きの矢印で示される点がアングル切り替え可能点である。ディスク上では、図６０Ｂに一例が示されるように、上向きの矢印で示される点がアングル切り替え可能点とされるＥＰエントリであって、フラグis_angle_change_pointが値「１」とされる。
【０２５５】
図６０Ａを参照し、例えば、アングル再生中にユーザがアングル（０）からアングル（１）に切り替えたとする。そのとき、プレーヤは、アングル（０）の最寄りのＥＰエントリのうち、フラグis_angle_change_pointのが値「１」になっている箇所までそのアングルのストリームを読み続ける。次に、そのＥＰエントリの時刻と同時刻のアングル（１）中のＥＰエントリをクリップ情報ファイルから探し、ファイル内のバイト位置を取得し、そこから読み込みを開始する。以上の動作により、シームレスなアングル切り替えを実現できる。
【０２５６】
このときのディスク上での再生経路は、図６０Ｂに一例が示されるように、フラグis_angle_change_pointが値「１」となっている位置で、アングル間でのジャンプが行われている。
【０２５７】
次に、ノンシームレスなアングル切り替えの場合を考える。ノンシームレスなアングル切り替えとは、アングルを切り替える際、映像に不連続が発生してもよいアングル切り替えのことをいう。シームレスアングル切り替えの場合、上述したように、アングルの切り替えが指定されると、アングル切り替え可能点まで再生してアングル切り替えが実行されるが、ノンシームレスアングル切り替えの場合は、データ連続供給やＧＯＰの先頭の条件を考慮せずに、アングル切り替えの指定がなされて即座にアングルを切り替えることができるので、切り替えまでの時間が短いというメリットがある。
【０２５８】
図６２は、ノンシームレスのマルチアングルブロックの例を示す。ノンシームレスのアングル切り替えの場合、画像が不連続になってもよいため、必ずしも同時刻の他アングルに移動する必要はない。例えばＧＯＰの再生途中でアングルを抜け出し、その時刻よりも前で、最も近いＧＯＰの先頭にジャンプしてもよい。図６２Ａに例示されるように、アングル（０）からアングル（１）にジャンプしたときに、アングル（１）においてＧＯＰの先頭を探し、この例では、時間的に少し戻った位置からアングル（１）が再生されている。図６２Ｂは、このときのディスク上での再生経路を示す。
【０２５９】
一方、ノンシームレスなマルチアングルブロックであっても、マルチアングルブロックの出口での接続は、シームレスであることが求められる。これは、一度もアングル切り替えを行わない場合には、通常の再生と同様にマルチアングルブロックの入口と出口で画像に不連続が発生しないようにすることが、再生品質を高める上で非常に効果的だからである。
【０２６０】
この発明の実施の一形態では、フラグis_angle_change_pointの設定により、ノンシームレスのマルチアングルブロックにおいて、マルチアングルブロックと本編との接続点がシームレスに接続されるようにしている。
【０２６１】
先ず、本編からアングルブロックへの入口におけるシームレス接続は、比較的実現が容易である。すなわち、本編の終わり（すなわち、ノンシームレスのマルチアングルブロックの入り口の直前におけるプレイアイテムの後端）を、最小エクステントサイズの条件を満たすよう配置しておけば、本編からどのアングルにもシームレスに接続することができる。
【０２６２】
一方、アングルブロックを抜けて本編に接続する出口付近においては、例えば、図６３Ａに一例が示される経路のようなアングル切り替えが行われた場合、最後のアングル切り替えにおいて、切り替えを行った点からアングルの終わりまでのデータは、最小エクステントサイズを満たさない。そのため、マルチアングルブロックの出口でのジャンプにおいて、データ連続供給の条件が満たされず、映像が一時停止する、あるいは黒画面が出るなどの不連続が発生してしまう。図６３Ｂは、このときのディスク上での再生経路を示す。
【０２６３】
図６３Ａの例では、アングル（２）からアングル（１）に移動した位置から当該マルチアングルブロックの出口までが、最小エクステントサイズを満たしていない。そのため、アングル（１）から本編に移動する際に、アングル（１）のデータ読み込み量が不足し、再生映像の不連続が発生する。
【０２６４】
この発明の実施の一形態では、このノンシームレスのアングル切り替えにおける問題を解決するために、ノンシームレスアングル切り替えのブロックにおいても、フラグis_angle_change_pointを活用する。ノンシームレスのマルチアングルブロックの再生中においては、アングル切り替え時に不連続が発生しても良いので、基本的にフラグis_angle_change_pointの値は、上述の図６３Ｂに示されるように、全て「１」である。すなわち、任意の箇所で再生中のアングルから飛び出すことが可能であると共に、任意の箇所に飛び込んで再生をすることが許される。
【０２６５】
ここで、ノンシームレスのマルチアングルブロック中のクリップにおける、フラグis_angle_change_pointの定義を定める。上述したように、フラグis_angle_change_pointの値が「０」の領域は、再生中における他のアングルへのアングル切り替え（飛び出し）や、切り替えが発生した元のアングルからの再生位置の割り込み（飛び込み）が禁止され、フラグis_angle_change_pointの値が「１」の領域は、飛び出しや飛び込みが可能であるものとする。そして、各アングルの出口付近の所定数のフラグis_angle_change_pointの値を「０」に設定し、この所定数のフラグis_angle_change_pointの値が「０」にされた領域での飛び出しや飛び込みを禁止する。このとき、この所定数のフラグis_angle_change_pointの値が「０」とされた領域のサイズは、最小エクステントサイズ以上とする。
【０２６６】
このようにフラグis_angle_change_pointを設定することで、ノンシームレスのマルチアングルブロックにおいても、マルチアングルブロックの出口の直前での飛び込み、飛び出しを禁止することができる。
【０２６７】
例として、図６４Ｂおよび図６５Ｂに示されるように、各インタリーブユニットの後端側の６個のＥＰエントリをフラグis_angle_change_pointの値が「０」である領域とし、他のＥＰエントリは、フラグis_angle_change_pointの値が「１」であるように設定する。
【０２６８】
次に、このようにフラグis_angle_change_pointが設定されたノンシームレスのマルチアングルブロックの再生方法について説明する。第１の方法は、フラグis_angle_change_pointの値が「０」の領域でのアングル切り替えを禁止する方法である。
【０２６９】
図６４を用いて説明する。上述したように、各インタリーブユニットの後端側の６個のＥＰエントリにおいて、フラグis_angle_change_pointの値を「０」とする（図６４Ｂ）。図６４Ａに一例が示されるように、再生位置がこのフラグis_angle_change_pointの値を「０」とした領域に入ったら、アングル切り替えが禁止される。例えば、ユーザによりこの領域でアングル切り替えを指示する操作が行われても、プレーヤでは、無視される。この例では、アングル切り替えが行われず、そのままマルチアングルブロックを抜けて本編のプレイアイテムに移行している。この場合のディスク上での再生経路が図６４Ｂに示される。
【０２７０】
第２の方法は、フラグis_angle_change_pointの値が「０」の領域でのアングル切り替えは許可されるが、切り替え後の飛び込み先は、フラグis_angle_change_pointの値が「１」の箇所とする方法である。
【０２７１】
図６５を用いて説明する。上述したように、各インタリーブユニットの後端側の６ＥＰエントリにおいて、フラグis_angle_change_pointの値を「０」とする（図６５Ｂ）。図６５Ａに一例が示されるように、マルチアングルブロックにおいて、ブロックの出口から最小エクステントサイズ未満の位置、すなわち、フラグis_angle_change_pointの値が「０」とされた領域内でアングル切り替えが指定された場合、切り替えられた先のアングルにおいて、再生位置がフラグis_angle_change_pointの値が「１」の領域まで戻され、その位置から再生が継続される。この場合のディスク上での再生経路が図６５Ｂに示される。
【０２７２】
これら第１および第２の方法の何れを用いても、マルチアングルブロックの出口でのジャンプの際には、最小エクステントサイズ以上のデータを読み込んだ後に次のプレイアイテムの再生が行われる。これにより、アングルブロックの出口で再生が不連続（ノンシームレス）になることを防止できる。
【０２７３】
なお、上述の図６４では、ノンシームレスのマルチアングルブロックにおいてインタリーブブロックを構成したが、ノンシームレスのマルチアングルブロックにおいては、図６５に示されるように、インタリーブ配置にしなくてもブロックを構成できる。
【０２７４】
図６６は、この発明の実施の一形態に適用できるプレーヤデコーダ１００’の一例の構成を示す機能ブロック図である。このプレーヤデコーダ１００’は、図示されないドライブ装置に装填されたディスクから再生されたデータを解釈し、ＡＶストリームを出力すると共に、出力されたＡＶストリームに対するユーザによるインタラクティブな操作を可能とする。
【０２７５】
なお、プレーヤデコーダ１００’は、図示されないＣＰＵにより全体の動作が制御される。例えば、プレーヤデコーダ１００’の各部におけるストリームやデータの流れは、ＣＰＵにより監視され、制御される。
【０２７６】
図示されないドライブ装置にディスクが装填されると、上述したように、先ずファイル「scenario.hdmv」およびファイル「entrylist.data」が再生され、このファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、必要な他のファイルが読み出され、ディスクに記録されたコンテンツが再生される。例えば、ファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、動画プレーン１０に表示するための動画データ、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データ、プレイリストファイルなどがディスクから読み出される。
【０２７７】
以下では、ディスクから読み出されるこれらのデータのうち、動画データ、サブピクチャ（字幕データ）や音声データといった、連続的に処理する必要があるストリームをリアルタイムストリームと称する。また、シナリオファイル、プレイリストファイルといった、連続的な処理を要求されない非リアルタイムなデータを、ストアオブジェクトと称する。ストアオブジェクトは、メモリ上などに蓄積、展開され、必要に応じて処理される。
【０２７８】
プレーヤデコーダ１００’は、チャンネル（１）および（２）の２系統の入力チャンネルを有し、入力チャンネル（１）の入力端１０１に、ストアオブジェクトが入力される。入力チャンネル（２）の入力端２０２に、リアルタイムストリームが入力される。入力端２０２に、ストアオブジェクトを入力することも可能である。この実施の一形態では、入力端２０２に入力されるリアルタイムストリームおよび一部のストアオブジェクトは、ＭＰＥＧ２  ＴＳである。
【０２７９】
なお、例えば、ドライブ装置においてディスクの回転速度を２倍速などの高速回転としてディスクからの読み出し転送レートを上げ、時分割で動作させることにより、ディスクからの、チャンネル（１）および（２）の２系統の読み出しが実現可能である。
【０２８０】
先ず、入力チャンネル（１）の系統について説明する。入力端１０１に入力されたストアオブジェクトは、スイッチ回路１０２に入力される。ストアオブジェクトとして、ファイル「scenario.hdmv」中のプログラムコードが入力された場合、スイッチ回路１０２において出力端１０２Ａが選択され、入力されたプログラムコードがコードバッファ１０４に蓄えられる。他にプログラムとしては、ＨＴＭＬ文書や、ＥＣＭＡスクリプトなども考えられる。
【０２８１】
一方、ストアオブジェクトとして画像データや音声データが入力された場合、スイッチ回路１０２において出力端１０２Ｂが選択され、入力された画像データがスイッチ回路１０３に入力される。入力端２０２に入力されたリアルタイムストリームに、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データが含まれていない場合には、スイッチ回路１０３で入力端１０３Ａが選択され、スイッチ回路１０２から入力された画像データや音声データがコンテンツバッファ１０５に蓄えられる。
【０２８２】
同様にして、入力端２０２に入力されたリアルタイムストリームに、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データや、効果音のための音声データが含まれている場合には、スイッチ回路１０３において入力端１０３Ｂが選択され、当該画像データ・音声データがコンテンツバッファ１０５に蓄えられる。コードバッファ１０４およびコンテンツバッファ１０５に蓄えられたストアオブジェクトは、必要に応じて読み出され、マルチメディアエンジン１０６に供給される。
【０２８３】
コンテンツバッファ１０５に蓄えられたストアオブジェクトのうち画像データは、スイッチ回路１０７および１０８をそれぞれ介して、グラフィックデコーダＡ５００およびグラフィックデコーダＢ３０１にも供給される。
【０２８４】
なお、この図６６の例では、グラフィクスデコーダＡ３００は、ＰＮＧ形式の画像データをデコードし、グラフィクスデコーダＢ３０１は、ＪＰＥＧ形式の画像データをデコードする。なお、グラフィクスデコーダＡ３００およびＢ３０１は、これに限らず、さらに他のデータ形式の画像データをデコードするものであってもよいし、複数の形式の画像データに対応するようにもできる。
【０２８５】
マルチメディアエンジン１０６は、ＸＭＬパーサ１０６Ａ、スクリプトインタプリタ１０６Ｂおよびグラフィクスレンダラ１０６Ｃ、効果音再生のためのサウンドプレーヤ１０６Ｄ、シナリオファイル解析エンジン１０６Ｅを含む。マルチメディアエンジン１０６は、独立的なハードウェアで構成してもよいし、上述した図示されないＣＰＵの、所定のプログラムに基づく処理で実現することも可能である。
【０２８６】
ＸＭＬパーサ１０６Ａは、ＸＭＬ(Extensible Markup Language)文書を解析する機能を有し、ＨＴＭＬ文書の解析も可能である。ＸＭＬパーサ１０６Ａで解釈されたＨＴＭＬ文書は、このプレーヤデコーダ１００で実行可能な形式に変換される。スクリプトインタプリタ１０６Ｂは、ＥＣＭＡスクリプトを解析し、このプレーヤデコーダ１００で実行可能な形式に変換される。また、グラフィクスレンダラ１０６Ｃは、画像データを、字幕プレーン１１およびグラフィクスプレーン１２に展開可能な形式にデコードする。サウンドプレーヤ１０６Ｄは、ボタンクリック音などに使われる音声データを再生する。
【０２８７】
マルチメディアエンジン１０６において、バッファ１０９をワークメモリとして、これらＸＭＬパーサ１０６Ａ、スクリプトインタプリタ１０６Ｂおよびグラフィクスレンダラ１０６Ｃの処理が行われる。例えば、ＸＭＬパーサ１０６Ａおよびスクリプトインタプリタ１０６Ｂにより、バッファ１０９のうちコードバッファ１０９Ａが用いられる。また、グラフィクスレンダラ１０６Ｃにより、バッファ１０９のうちグラフィクスバッファ１０９Ｄが用いられる。バッファ１０９は、上述のコードバッファ１０９Ａおよびグラフィクスバッファ１０９Ｄの他に、文字列の表示に用いるフォントデータが格納されるフォントバッファ１０９Ｂ、ＸＭＬパーサ１０６ＡでＨＴＭＬ文書を解析した結果を階層化された木構造で保持するためのツリーバッファ１０９Ｃなどが含まれる。サウンドプレーヤ１０６Ｄは、サウンドバッファ１０９Ｅに蓄積した音声データを再生する。
【０２８８】
マルチメディアエンジン１０６では、例えばコードバッファ１０４に蓄えられたシナリオファイル「scenario.hdmv」などを読み出し、読み出されたファイルの記述に基づきシナリオ解析エンジン１０６Ｅでシナリオを解析する。そして、解析されたシナリオの記述に基づき図示されないドライブ装置などを制御し、ドライブ装置に挿入されたディスクから、動画プレーン１０に表示するための動画データ、字幕プレーン１１やグラフィクスプレーン１２に表示するための画像データ、音声データなど必要なファイルを読み出し、コンテンツを再生する。
【０２８９】
なお、コードバッファ１０４およびコンテンツバッファ１０５に格納されたデータは、当該データが不要になるまで、コードバッファ１０４やコンテンツバッファ１０５に保持しておくことができる。したがって、これらコードバッファ１０４やコンテンツバッファ１０５に格納されたデータは、必要に応じて何度でも読み出して使うことができる。
【０２９０】
さらに、マルチメディアエンジン１０６では、例えば、コードバッファ１０４に蓄えられたＥＣＭＡスクリプトを読み出し、読み出されたＥＣＭＡスクリプトの記述に基づき、必要に応じて、コードバッファ１０４からの他のＥＣＭＡスクリプトやＨＴＭＬ文書の読み出し、コンテンツバッファ１０５からの画像データの読み出しなどを行う。
【０２９１】
マルチメディアエンジン１０６では、上述の他にも、入力された複数種類のデータのデマルチプレクス処理、ＪａｖａＶＭ（Ｊａｖａ（登録商標）仮想マシン）機能などが行われる。さらに、マルチメディアエンジン１０６により、ユーザからの、リモートコントロールコマンダやポインティングデバイスなどによる図示されない操作手段からの入力が受け取られ、所定に処理される。ユーザ入力は、さらに、後述するグラフィックデコーダＡ３００、グラフィックデコーダＢ３０１、オーディオデコーダ１１８、ＭＰＥＧビデオデコーダ１２０およびシステムデコーダ１２１にも供給される。
【０２９２】
グラフィクスレンダラ１０６Ｃで処理された画像データは、スイッチ回路１３０および１３１をそれぞれ介してサブピクチャプレーン３０２およびグラフィックスプレーン３０３に供給される。なお、この例では、サブピクチャプレーン５０２およびグラフィクスプレーン３０３に供給される画像データは、ＰＮＧ形式あるいはＪＰＥＧ形式等の画像データをグラフィクスレンダラ１０６Ｃでデコードした後のビットマップデータであるものとする。これらの各プレーン３０２、３０３に画像データが供給されるタイミングは、マルチメディアエンジン１０６により制御される。
【０２９３】
ここで、サブピクチャプレーン３０２およびグラフィクスプレーン３０３は、それぞれ上述した字幕プレーン１１およびグラフィクスプレーン１２に対応する。動画像プレーン１３５は、上述した動画プレーン１０に対応する。なお、サブピクチャプレーン３０２、グラフィクスプレーン３０３および動画像プレーン１３５は、例えばフレームメモリからなる。
【０２９４】
マルチメディアエンジン１０６は、さらに、後述するプレゼンテーションプロセッサ１３９に対して、動画像プレーン１３５、サブピクチャプレーン３０２、ならびに、グラフィクスプレーン３０３を切り替えあるいは合成する制御信号を供給する。同様に、マルチメディアエンジン１０６は、後述するプレゼンテーションプロセッサ１４１に対して、オーディオストリーム出力を制御するような制御信号を供給する。
【０２９５】
次に、入力チャンネル（２）の系統について説明する。入力端２０２にＭＰＥＧ２  ＴＳで入力されたリアルタイムストリームは、ＰＩＤフィルタ１１０に供給され、ＭＰＥＧ２  ＴＳのトランスポートパケットに格納されるＰＩＤ(Packet Identification)が抽出され、当該トランスポートパケットに格納されるストリームの属性が検出される。ＰＩＤフィルタ１１０では、このストリーム属性に基づき、入力されたリアルタイムストリームが、トランスポートパケット毎に対応する系統に振り分けられる。
【０２９６】
ＰＩＤに基づき、トランスポートパケットがストアオブジェクトに属する画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１Ａに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０３Ｂが選択されたスイッチ回路１０３に入力され、スイッチ回路１０３を介してコンテンツバッファ１０５に格納される。
【０２９７】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットがＰＮＧ形式のデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＢおよびバッファＢｎ１１２Ｂに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０７Ｂが選択されたスイッチ回路１０７に入力され、スイッチ回路１０７を介してグラフィックデコーダＡ５００に供給される。
【０２９８】
グラフィックデコーダＡ３００では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納されたＰＮＧデータがデコードされて字幕あるいはグラフィックスを表示するための画像データとされる。この画像データを字幕として用いる場合は、所定のタイミングでスイッチ回路１３０の入力端１３０Ｂに入力され、スイッチ回路１３０を介してサブピクチャプレーン３０２に展開される。同様に、ボタンとして用いる場合は、グラフィックスプレーン上に表示させるため、所定のタイミングでスイッチ回路１３１の入力端１３１Ｃに入力され、スイッチ回路１３１を介してグラフィックスプレーン３０３に展開される。
【０２９９】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットが、ＪＰＥＧデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＣおよびバッファＢｎ１１２Ｃに一旦溜め込まれ、所定のタイミングで読み出されて入力端１０８Ｂが選択されたスイッチ回路１０８に入力され、スイッチ回路１０８を介してグラフィックデコーダＢ５００に供給される。
【０３００】
グラフィックデコーダＢ３０１では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納されたＪＰＥＧデータがデコードされ、ビットマップの画像データとされる。この画像データを字幕として用いる場合は、所定のタイミングでスイッチ回路１３０の入力端１３０Ｃに入力され、スイッチ回路１３０を介してサブピクチャプレーン３０２に展開される。同様に、ボタンとして用いる場合は、グラフィックスプレーン上に表示させるため、所定のタイミングでスイッチ回路１３１の入力端１３１Ｂに入力され、スイッチ回路１３１を介してグラフィックスプレーン３０２に展開される。
【０３０１】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットが、オーディオデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＤおよびバッファＢｎ１１２Ｄに一旦溜め込まれ、所定のタイミングで読み出されてオーディオデコーダ１１８に供給される。このトランスポートパケットに格納されるオーディオデータは、例えばドルビーデジタルに準拠した方式で圧縮符号化されている。
【０３０２】
オーディオデコーダ１１８は、例えばリニアＰＣＭ(Pulse Code Modulation)オーディオデコーダ１１９を有し、入力されたトランスポートストリームのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された圧縮符号化されたオーディオデータをデコードし、最終的にリニアＰＣＭオーディオデータに変換する。当該トランスポートパケットに、圧縮符号化されていないリニアＰＣＭオーディオデータが格納されている場合は、当該データは、例えばそのままリニアＰＣＭオーディオデコーダ１１９に入力され、何も処理されずに出力される。
【０３０３】
オーディオデコーダ１１８から出力されたリニアＰＣＭオーディオデータは、オーディオ用のプレゼンテーションプロセッサ１４１に入力され、マルチメディアエンジン１０６の制御に基づき所定の音響効果などが付加されて、出力端１４２に導出される。
【０３０４】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットが動画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１Ｅ、バッファＭＢｎ１１３およびバッファＥＢｎ１１４に一旦溜め込まれ、所定のタイミングで読み出されてＭＰＥＧビデオデコーダ１２０に供給される。このトランスポートパケットに格納される動画像データは、ＭＰＥＧ２方式により圧縮符号化されている。
【０３０５】
ＭＰＥＧビデオデコーダ１２０では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された、ＭＰＥＧ２方式で圧縮符号化された動画像データをベースバンドの動画像データにデコードする。
【０３０６】
ＭＰＥＧデコーダ１２０から出力された動画像データは、スイッチ回路１２４の入力端１２４Ａに入力されると共に、バッファ１２３を介してスイッチ回路１２４の入力端１２４Ｂに入力される。スイッチ回路１２４において、所定のタイミングで入力端１２４Ａおよび１２４Ｂが選択され、出力された動画像データが動画像プレーン１３４に展開される。
【０３０７】
ＰＩＤフィルタ１１０において、ＰＩＤに基づき、トランスポートパケットがシステム情報が格納されているパケットであるとされれば、当該トランスポートパケットは、バッファＴＢｎ１１１ＦおよびＢｓｙｓ１１５を介してシステムデコーダ１２１に供給される。システムデコーダ１２１では、供給されたトランスポートパケットのヘッド情報が除去され、格納されているシステム情報が取り出される。システム情報は、例えば図示されないＣＰＵに渡される。
【０３０８】
サブピクチャプレーン３０２上の画像データは、上述の図１７におけるパレットテーブル２２に対応するパレット３０４に供給され、２５６色からなるパレットに対してインデックスによる参照がなされ、ＲＧＢデータが出力されると共に、不透明度データα１が抜き出される。ＲＧＢデータは、上述の図１７におけるＲＧＢ／ＹＣｂＣｒ変換回路２９に対応するＲＧＢ／ＹＣｂＣｒ変換回路３０６によりＹＣｂＣｒデータに変換される。ＹＣｂＣｒデータは、不透明度データα１と共にプレゼンテーションプロセッサ１３９に供給される。
【０３０９】
グラフィクスプレーン３０３上の画像データは、上述の図１７におけるパレットテーブル２６Ａに対応するパレット３０５に供給され、ＲＧＢデータと不透明データα２とが出力される。ＲＧＢデータは、上述の図１７におけるＲＧＢ／ＹＣｂＣｒ変換回路２６Ｂに対応するＲＧＢ／ＹＣｂＣｒ変換回路３０７に供給され、カラーシステムがＲＧＢ（４：４：４）からＹＣｂＣｒ（４：４：４）に変換される。ＲＧＢ／ＹＣｂＣｒ変換回路３０７から出力されたＹＣｂＣｒデータは、不透明データα２と共に、プレゼンテーションプロセッサ１３９に供給される。
【０３１０】
動画像プレーン１３５の出力は、アップ／ダウンコンバータ１３８を介してプレゼンテーションプロセッサ１３９に供給される。なお、アップ／ダウンコンバータ１３８は、画像の解像度を変換する回路であって、例えば高解像度のＨＤ(High Definition)画像から通常の解像度を有するＳＤ(Standard Definition)画像への変換を行う。
【０３１１】
プレゼンテーションプロセッサ１３９は、図１７を用いて説明した、字幕プレーン１１（サブピクチャプレーン３０２）の画像データによる不透明度α１と、グラフィクスプレーン１２（グラフィクスプレーン３０３）による不透明度α２とを用いたアルファブレンディング処理を行う。
【０３１２】
すなわち、プレゼンテーションプロセッサ１３９では、サブピクチャプレーン３０２の画像データに設定された不透明度α１に基づき、動画像プレーン１３５に対してサブピクチャプレーン３０２の画像データが合成される。さらに、グラフィクスプレーン３０３の画像データに設定された不透明度α２に基づき、動画像プレーン１３５およびサブピクチャプレーン３０２が合成された画像データに対してグラフィクスプレーン３０３の画像データが合成される。この、グラフィクスプレーン３０３の画像データ、サブピクチャプレーン３０２の画像データ（字幕データ）および動画像プレーン１３５の画像データが合成された画像データが出力端１４０に導出される。
【０３１３】
なお、プレゼンテーションプロセッサ１３９は、画像データに対してリアルタイムでエフェクト処理を行うこともできる。
【０３１４】
このような構成において、この発明の実施の一形態に基づき記述およびデータ構成されたコンテンツが記録されたディスクが図示されないドライブ装置に挿入されると、ファイル「scenario.hdmv」などが読み込まれ、ファイル「scenario.hdmv」の記述に従い、ディスクに記録されたコンテンツが再生される。ユーザにより、図示されない操作手段により指示がなされると、この指示に基づき、マルチメディアエンジン１０６によりドライブ装置やプレーヤデコーダ１００’の各部が制御され、指示に応じた再生がなされる。
【０３１５】
例えば、図示されない操作手段によりアングル切り替え指示がなされると、この指示に基づくマルチメディアエンジン１０６の制御により、ファイル「scenario.hdmv」、「entrylist.data」など必要なファイルが参照され、クリップ切り替え可能点の情報に基づき図示されないドライブ装置が制御され、上述したようにして、ディスク上の読み出し位置が変更されてアングル切り替えがなされる。また、操作手段により、静止画表示の際のポーズ設定の解除などの指示を出すこともできる。
【０３１６】
上述では、プレーヤデコーダ１００’の各部がハードウェアで構成されるように説明したが、これはこの例に限られない。例えば、プレーヤデコーダ１００’をソフトウェア上の処理として実現することも可能である。この場合、プレーヤデコーダ１００’をコンピュータ装置上で動作させることができる。また、プレーヤデコーダ１００’をハードウェアおよびソフトウェアが混合された構成で実現することもできる。例えば、オーディオデコーダ１１８やＭＰＥＧビデオデコーダ１２０をハードウェアで構成し、その他をソフトウェアで構成することが考えられる。
【０３１７】
プレーヤデコーダ１００’をソフトウェアのみ、または、ハードウェアおよびソフトウェアの混合により構成し、コンピュータ装置で実行させるためのプログラムは、例えばＣＤ−ＲＯＭ(Compact Disc-Read Only Memory)といった記録媒体に記録されて提供される。このＣＤ−ＲＯＭをコンピュータ装置のＣＤ−ＲＯＭドライブに装填し、ＣＤ−ＲＯＭに記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
【０３１８】
以上説明したように、この発明は、記録済みの大容量ディスクにおいて、記録再生用のＢｌｕ−ｒａｙ  Ｄｉｓｃ規格を拡張することで、ユーザの入力に応じて再生が変化するインタラクティブ機能を実現することができるようになる。
【０３１９】
また、この発明の実施の一形態によれば、タイトルとトップメニューを構成するプレイリストの情報をデータベースに記述してあるため、画面上の選択によらず、リモコンキーなどで直接指定のタイトルを再生するしたり、トップメニュー画面を呼び出すことができるようになる。
【０３２０】
また、この発明の実施の一形態によれば、デコード単位の先頭毎にアングル切り替え可能か否かを示すフラグを設けたので、アングル切り替え点で不連続が発生しないシームレスなアングル切り替え機能を実現することができる。
【０３２１】
さらに、この発明の実施の一形態によれば、サブプレイアイテムがメインのプレイアイテムと非同期で再生可能か否かを示すフラグを設けたので、メインパスに対して非同期に繰り返し再生されるＢＧＭを実現することができる。
【０３２２】
さらにまた、この発明の実施の一形態によれば、静止画とそれに付随する字幕やグラフィクスとをカプセル化して記録しているため、静止画を切り替えながら再生する、スライドショーなどを行う場合のアクセス性が向上する。
【符号の説明】
【０３２３】
１０  動画プレーン
１１  字幕プレーン
１２  グラフィクスプレーン
２２  パレット
３０  ＢＤ仮想プレーヤ
３１  プレーヤコマンド
３２  共通パラメータ
４０  プレイバックコントロールプログラム
４１  メソッド
６０  メニュー画面
７０  シナリオ
７３Ａ〜７３Ｍ  プレイリスト
１００  プレーヤデコーダ
１０４  コードバッファ
１０５  コンテンツバッファ
１０６  マルチメディアエンジン
１０９  バッファ
１１０  ＰＩＤフィルタ
１１６  サブピクチャデコーダ
１１７  静止画像デコーダ
１１８  オーディオデコーダ
１２０  ＭＰＥＧビデオデコーダ
１３２  サブピクチャプレーン
１３３  グラフィクスプレーン
１３４  静止画像プレーン
１３５  動画像プレーン
２２６  ＰＮＧデコーダバッファ
２２７  ＰＮＧデコーダ
２２８  オブジェクトバッファ
２２９  プレーンバッファ
２３１  オーディオミキサ
３００  グラフィクスデコーダＡ
３０１  グラフィクスデコーダＢ
３０２  サブピクチャプレーン
３０３  グラフィクスプレーン
６０１Ａ，６０１Ｂ，６０１Ｃ，６０１Ｄ，６０１Ｅ  エクステント
【図１】
0005494780.tif 000002
【図２】
0005494780.tif 000003
【図３】
0005494780.tif 000004
【図４】
0005494780.tif 000005
【図５】
0005494780.tif 000006
【図６】
0005494780.tif 000007
【図７】
0005494780.tif 000008
【図８】
0005494780.tif 000009
【図９】
0005494780.tif 000010
【図１０】
0005494780.tif 000011
【図１１】
0005494780.tif 000012
【図１２】
0005494780.tif 000013
【図１３】
0005494780.tif 000014
【図１４】
0005494780.tif 000015
【図１５】
0005494780.tif 000016
【図１６】
0005494780.tif 000017
【図１７】
0005494780.tif 000018
【図１８】
0005494780.tif 000019
【図１９】
0005494780.tif 000020
【図２０】
0005494780.tif 000021
【図２１】
0005494780.tif 000022
【図２２】
0005494780.tif 000023
【図２３】
0005494780.tif 000024
【図２４】
0005494780.tif 000025
【図２５】
0005494780.tif 000026
【図２６】
0005494780.tif 000027
【図２７】
0005494780.tif 000028
【図２８】
0005494780.tif 000029
【図２９】
0005494780.tif 000030
【図３０】
0005494780.tif 000031
【図３１】
0005494780.tif 000032
【図３２】
0005494780.tif 000033
【図３３】
0005494780.tif 000034
【図３４】
0005494780.tif 000035
【図３５】
0005494780.tif 000036
【図３６】
0005494780.tif 000037
【図３７】
0005494780.tif 000038
【図３８】
0005494780.tif 000039
【図３９】
0005494780.tif 000040
【図４０】
0005494780.tif 000041
【図４１】
0005494780.tif 000042
【図４２】
0005494780.tif 000043
【図４３】
0005494780.tif 000044
【図４４】
0005494780.tif 000045
【図４５】
0005494780.tif 000046
【図４６】
0005494780.tif 000047
【図４７】
0005494780.tif 000048
【図４８】
0005494780.tif 000049
【図４９】
0005494780.tif 000050
【図５０】
0005494780.tif 000051
【図５１】
0005494780.tif 000052
【図５２】
0005494780.tif 000053
【図５３】
0005494780.tif 000054
【図５４】
0005494780.tif 000055
【図５５】
0005494780.tif 000056
【図５６】
0005494780.tif 000057
【図５７】
0005494780.tif 000058
【図５８】
0005494780.tif 000059
【図５９】
0005494780.tif 000060
【図６０】
0005494780.tif 000061
【図６１】
0005494780.tif 000062
【図６２】
0005494780.tif 000063
【図６３】
0005494780.tif 000064
【図６４】
0005494780.tif 000065
【図６５】
0005494780.tif 000066
【図６６】
0005494780.tif 000067