以下、この発明の実施の一形態について説明する。この発明の実施の一形態では、記録再生規格であるBlu−ray Disc規格(Blu-ray Disc Rewritable Format Ver1.0)を元に、再生専用ディスクで必要となるインタラクティブ機能や、マルチアングル機能などの機能を実現できるようにした。
先ず、理解を容易とするために、Blu−ray Discに関し、"Blu-ray Disc Rewritable Format Ver1.0 part3 Audio Visual Specifications"で規定されている、コンテンツすなわちディスクに記録されたAV(Audio/Video)データの管理構造について説明する。以下では、この管理構造をBDAVフォーマットと称する。
例えばMPEG(Moving Pictures Experts Group)ビデオやMPEGオーディオなどの符号化方式で符号化され、MPEG2システムに従い多重化されたビットストリームは、クリップAVストリーム(またはAVストリーム)と称される。クリップAVストリームは、Blu−ray Discに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part2"で定義されたファイルシステムにより、ファイルとしてディスクに記録される。このファイルを、クリップAVストリームファイル(またはAVストリームファイル)と称する。
クリップAVストリームファイルは、ファイルシステム上での管理単位であり、ユーザにとって必ずしも分かりやすい管理単位であるとは限らない。ユーザの利便性を考えた場合、複数のクリップAVストリームファイルに分割された映像コンテンツを一つにまとめて再生する仕組みや、クリップAVストリームファイルの一部だけを再生する仕組み、さらには、特殊再生や頭出し再生を滑らかに行うための情報などをデータベースとしてディスクに記録しておく必要がある。Blu−ray Discに関する規格の一つである"Blu-ray Disc Rewritable Format Ver1.0 part3"で、このデータベースが規定される。
図1は、AVストリームファイルの一部または全部の範囲を指定して、必要な部分だけを並べて再生する再生順序指定の仕組みを模式的に示す。図1において、プレイリスト(PlayList)は、AVストリームファイルの一部または全部の範囲を指定して、必要な部分だけを再生する指示を与える。ユーザがコンテンツの再生を行う際には、このプレイリストの単位で選択する。つまり、プレイリストは、ユーザからみてひとまとまり、すなわち、再生が連続に行われることをユーザが暗黙に期待する、映像・音声の単位である。
最も簡単なプレイリストの構成は、記録が開始されてから記録が終了されるまでの一繋がりのAVストリームファイルからなり、編集をしなければ、これが一つのプレイリストになる。
プレイリストは、再生するAVストリームファイルの指定と、指定されたAVストリームファイルの再生箇所を指定する再生開始点と再生終了点の集まりとから構成される。この再生開始点と再生終了点の情報を一組としたものは、プレイアイテム(PlayItem)と称される。プレイアイテムは、一つの再生単位であると考えることができる。プレイリストは、プレイアイテムの集合で構成される。プレイアイテムを再生するということは、そのプレイアイテムに参照されるAVストリームファイルの一部分を再生するということになる。
クリップAVストリームは、上述したように、ビデオデータやオーディオデータがMPEG2 TS(トランスポートストリーム)の形式などに多重化されたビットストリームである。このクリップAVストリームに関する情報がクリップ情報(Clip Information)としてファイルに記録される。
クリップAVストリームファイルと、対応するクリップ情報が記録されたクリップ情報ファイルとをひとまとまりのオブジェクトと見なし、クリップ(Clip)と称する。すなわち、クリップは、クリップAVストリームとクリップ情報とから構成される、一つのオブジェクトである。
ファイルは、一般的に、バイト列として扱われる。クリップAVストリームファイルのコンテンツは、時間軸上に展開され、クリップ中のエントリーポイントは、主に時間ベースで指定される。所定のクリップへのアクセスポイントのタイムスタンプが与えられた場合、クリップAVストリームファイルの中でデータの読み出しを開始すべきアドレス情報を見つけるために、クリップ情報ファイルを用いることができる。
1のディスク中に記録された全てのプレイリストおよびクリップは、ボリュームインフォメーション(Volume Information)で管理される。
図2は、上述のようなクリップAVストリーム、クリップ情報(Stream Attributes)、クリップ、プレイアイテムおよびプレイリストの関係を示すUML(Unified Modeling Language)図である。プレイリストは、1または複数のプレイアイテムに対応付けられ、プレイアイテムは、1のクリップに対応付けられる。1のクリップに対して、それぞれ開始点および/または終了点が異なる複数のプレイアイテムを対応付けることができる。1のクリップから1のクリップAVストリームファイルが参照される。同様に、1のクリップから1のクリップ情報ファイルが参照される。また、クリップAVストリームファイルとクリップ情報ファイルとは、1対1の対応関係を有する。このような構造を定義することにより、クリップAVストリームファイルを変更することなく、任意の部分だけを再生する、非破壊の再生順序指定を行うことが可能となる。
また、図3のように、複数のプレイリストから同一のクリップを参照することもできる。図3の例では、クリップ1が2つのプレイリスト2および3から参照されている。図3において、クリップ1は、横方向が時間軸を表す。プレイリスト2により、コマーシャル区間b−cとシーンeとを含むクリップ1の区間a〜fが参照される。一方、プレイリスト3により、シーンeを含むクリップ1の区間d−gが参照される。プレイリスト2を指定することで、クリップ1の区間a〜fを再生することができ、プレイリスト3を指定することで、クリップ1の区間d−gを再生することができる。
次に、"Blu-ray Disc Rewritable Format Ver1.0 part3"で規定された、記録媒体に記録されるファイルの管理構造について、図4を用いて説明する。ファイルは、ディレクトリ構造により階層的に管理される。記録媒体上には、先ず、1つのディレクトリ(図4の例ではルートディレクトリ)が作成される。このディレクトリの下が、1つの記録再生システムで管理される範囲とする。
ルートディレクトリの下に、ディレクトリBDAVが置かれる。ディレクトリBDAVは、図4のように、ディレクトリBDAV、BDAV1、BDAV2、・・・、BDAVnの如く、ルートディレクトリの下に複数を置くことができる。以下では、複数のディレクトリBDAV、BDAV1、BDAV2、・・・、BDAVnをディレクトリBDAVで代表させて説明する。
ディレクトリBDAVの下には、以下の6種類のファイルが置かれる。
(1)info.bdav
(2)menu.tidx、mark.tidx
(3)menu.tdt1、menu.tdt2、mark.tdt1、mark.tdt2
(4)#####.rpls、#####.vpls
(5)%%%%%.clpi
(6)*****.m2ts
なお、(4)のファイル「#####.rpls」および「#####.vpls」において、「#####」は、任意の番号を示す。同様に、(5)のファイル「%%%%%.clpi」において、「%%%%%」は任意の番号を示す。また、(6)のファイル「*****.m2ts」において、「*****」は、ファイル「*****.m2ts」がファイル「%%%%%.clpi」と一対一で対応するような番号である。例えば、番号「*****」は、番号「%%%%%」と同一とすることができる。
(1)のファイル「info.bdav」は、ディレクトリBDAV全体の情報が格納されるファイルである。(2)のファイル「menu.tidx」および「mark.tidx」は、サムネイル画像の情報が格納されるファイルである。(3)のファイル「menu.tdt1」、「menu.tdt2」、「mark.tdt1」および「mark.tdt2」は、サムネイル画像が格納されるファイルである。各ファイルの拡張子「tdt1」および「tdt2」は、当該ファイルに格納されているサムネイル画像データが暗号化されているか否かを示す。
(4)のファイル「#####.rpls」、「#####.vpls」は、プレイリストの情報が格納されるファイルである。ファイル「#####.rpls」、「#####.vpls」は、ディレクトリBDAVの下に設けられたディレクトリPLAYLISTのさらに下に置かれている。
(5)のファイル「%%%%%.clpi」は、クリップ情報が格納されるファイルである。ファイル「%%%%%.clpi」は、ディレクトリBDAVの下に設けられたディレクトリCLIPINFのさらに下に置かれている。(6)のファイル「*****.m2ts」は、クリップAVストリームが格納される、クリップAVストリームファイルである。このクリップAVストリームファイルは、ファイル名の番号「*****」により、1つのクリップ情報ファイル「%%%%%.clpi」に対応付けられる。ファイル「*****.m2ts」は、ディレクトリBDAVの下に設けられたディレクトリSTREAMのさらに下に置かれる。
各ファイルについて、より詳細に説明する。(1)のファイル「info.bdav」は、ディレクトリBDAVの下に唯一、設けられる。図5は、ファイル「info.bdav」の一例の構造を表すシンタクスを示す。ここでは、シンタクスをコンピュータ装置などのプログラムの記述言語として用いられるC言語の記述法に基づき示す。これは、他のシンタクスを表す図において、同様である。
図5において、ファイル「info.bdav」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorは、文字列「BDAV」が格納され、このファイルがファイル「info.bdav」であることが示される。フィールドversion_numberは、このファイル「info.bdav」のバージョンが示される。ブロックUIAppInfoBDAV()は、ディレクトリBDAVの下に関する情報が格納される。ブロックTableOfPlayLists()は、プレイリストの並びに関する情報が格納される。ブロックMakersPrivateData()は、記録再生装置のメーカ固有の情報が格納される。
ファイル「info.bdav」の先頭には、各ブロックの先頭を表すアドレスが記述される。例えば、フィールドTableOfPlayLists_Start_addressは、ブロック「TableOfPlayLists()」の開始する位置がファイル内の相対バイト数で示される。
図6は、ブロックUIAppInfoBDAV()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlength直後のフィールドからこのブロックUIAppInfoBDAV()の最後までの長さがバイトで示される。フィールドBDAV_character_setは、このブロックUIAppInfoBDAV()内のフィールドBDAV_nameに記録されている文字列の文字セットが示される。文字セットとしては、ASCII、Unicodeなどが選択できる。
フラグBDAV_protect_flagは、ディレクトリBDAVの下に置かれるコンテンツを、ユーザに制限無しに見せて良いか否かを示す。例えば、このフラグが値「1」にセットされており、且つ、ユーザが正しく暗証番号PIN(Personal Identification Number)を入力できた場合に、ディレクトリBDAVの下に置かれたコンテンツをユーザに見せることができるものとする。一方、フラグBDAV_protect_flagが値「0」にセットされている場合には、ユーザによる暗証番号PINの入力が無くても、ディレクトリBDAVの下に置かれたコンテンツをユーザに見せることができる。
暗証番号PINは、フィールドPINに記録される。暗証番号PINは、例えば4桁の0〜9の数字からなり、上述のように再生制御を有効にした場合に必要となる暗証番号を表す。暗証番号PINのそれぞれの数字は、例えばISO(International Organization for Standarization)/IEC(International Electrotechnical Commission)646の規定に従って符号化される。
このブロックUIAppInfoBDAV()に示される以上の情報により、ディレクトリBDAVに対する再生制限が規定される。なお、詳細は後述するが、個々のプレイリストに対する再生制限については、ファイル「#####.rpls」、「#####.vpls」内に示されるブロックUIAppInfoPlayList()の中で定義されるフラグplayback_control_flagによって規定される。
この例では、ディレクトリBDAVの下のコンテンツの再生を再開する際に、優先して再生すべきプレイリストを指定する、レジューム機能を用いることができる。このレジューム機能は、前回視聴を中断した箇所から再生を再開したい場合などに使うことを想定している。
図6において、フラグresume_valid_flagは、このレジューム機能の有効/無効を示す。例えば、このフラグが値「0」にセットされている場合には、レジューム機能は無効とされ、このフラグが値「1」にセットされている場合には、レジューム機能が有効とされ、その際、フィールドresume_PlayList_file_nameで指定されるプレイリストを、優先して再生すべきプレイリストとして扱う。
フィールドref_to_menu_thumbnail_indexは、このディレクトリBDAVを代表するサムネイル画像が存在する場合、そのサムネイル画像を特定するサムネイル番号が格納される領域である。Blu−ray Discの規格では、ディレクトリBDAVを代表する静止画を特にメニューサムネイルと呼ぶ。フィールドref_to_menu_thumbnail_indexで指定されるインデックスthumbnail_indexを持つサムネイル画像がこのディレクトリBDAVのメニューサムネイルとなる。
フィールドBDAV_name_lengthは、フィールドBDAV_nameに示されるディレクトリBDAV名のバイト長を示す。このフィールドBDAV_nameにおいて、左から、フィールドBDAV_name_lengthで示されるだけのバイト数が有効な文字列であり、それがこのディレクトリBDAVの名前を示す。なお、フィールドBDAV_nameの中で、フィールドBDAV_name_lengthで示された有効な文字列の後のバイト列には、どのような値が入っていても良い。
図7は、ブロックTableOfPlayLists()の一例の構造を表すシンタクスを示す。フィールドnumber_of_PlayListsは、このディレクトリBDAVの下に置かれたプレイリストの数が示される。このプレイリスト数をループ変数とする、次に続く「for」文のループにおいてフィールドPlayList_file_nameにより示されるプレイリストの並びが、プレイリスト一覧表示画面などに表示される際のプレイリストの順序を示す。プレイリストは、フィールドPlayList_file_nameにより、「#####.rpls」や「#####.vpls」といったファイル名で指定される。
ファイル「#####.rpls」および「#####.vpls」は、上述したように、ディレクトリPLAYLISTの下に置かれる。これらのファイルは、1つのプレイリストと一対一に対応している。
図8は、ファイル「#####.rpls」および「#####.vpls」の一例の構造を表すシンタクスを示す。図8において、ファイル「#####.rpls」および「#####.vpls」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
ブロックUIAppInfoPlayList()は、このプレイリストに関する属性情報が格納される。ブロックPlayList()は、このプレイリストを構成するプレイアイテムに関する情報が格納される。ブロックPlayListMark()は、このプレイリストに付されるマークの情報が格納される。ブロックMakersPrivateData()は、このプレイリストファイルを記録した装置の、メーカ固有の情報が格納される。ファイル「#####.rpls」および「#####.vpls」の先頭に設けられるフィールドPlayList_start_address、PlayListMark_start_addressおよびMakersPrivateData_start_addressには、それぞれ対応するブロックの先頭アドレスが例えば32ビットのアドレス情報として示される。
各ブロックの先頭アドレスがファイル「#####.rpls」および「#####.vpls」の先頭に示されるために、ブロックの前および/または後ろに、任意の長さのデータpadding_wordを挿入することができる。但し、ファイル「#####.rpls」および「#####.vpls」の最初のブロックであるブロックUIAppInfoPlayList()の開始位置は、ファイルの先頭から320バイト目に固定される。
図9は、ブロックUIAppInfoPlayList()の一例の構造を表すシンタクスを示す。ブロックUIAppInfoPlayList()は、プレイリストの再生において直接的に必要とされない、プレイリストに関する各種の属性情報が格納される。フィールドPlayList_character_setは、プレイリストに関する文字列情報の文字セットが指定される。
フラグplayback_control_flagは、情報表示やプレイリストの再生を暗証番号PINに基づき制限するか否かが指定される。例えばフラグplayback_control_flagが値「1」であれば、ユーザにより正しい暗証番号PINが入力されなければ、プレイリストのサムネイル画像などの情報表示や、プレイリストの再生ができないとされる。フラグwrite_protect_flagは、消去禁止フラグである。例えばこのフラグwrite_protect_flagが値「1」であれば、ユーザが容易にプレイリストを消去できないようなユーザインタフェースにする必要がある。フラグis_played_flagは、このプレイリストが再生済みであることを示す。フラグis_edited_flagは、このプレイリストが編集されたことを示す。
フィールドtime_zoneは、このプレイリストが記録された地点のタイムゾーンを示す。フィールドrecord_time_and_dateは、プレイリストの記録日時を示す。フィールドPlayList_durationは、プレイリストの再生時間を示す。
フィールドmaker_IDおよびmaker_model_codeは、このプレイリストを最終更新した記録機のメーカおよび記録機をそれぞれ特定する情報が例えば番号で示される。フィールドchannel_numberは、記録したクリップAVストリームのチャンネル番号が示され、フィールドchannel_nameは、当該チャンネル名が示される。フィールドchannel_nameに示されるチャンネル名の長さがフィールドchannel_name_lengthに示される。フィールドchannel_name の領域のうち、フィールドchannel_name_lengthで示される長さの文字列が有効となる。フィールドPlayList_nameは、フィールドPlayList_name_lengthに示される値を有効長としてプレイリスト名が示される。フィールドPlayList_detailは、フィールドPlayList_detail_lengthに示される値を有効長としてプレイリストの詳細情報が示される。
図10は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlengthの直後のフィールドからこのブロックPlayList()の終端までのバイト長を示す。フィールドPL_CPI_typeは、このプレイリストが持つCPI(Characteristic Point Information:特徴点情報)の種類を示す。フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を示す。フィールドnumber_of_SubPlayItemsは、このプレイリストに付けられているアフレコオーディオ用のプレイアイテム(サブプレイアイテム)の数を示す。詳細は省略するが、プレイリストは、所定の条件を満たす場合にだけ、サブプレイアイテムを持つことができる。
ブロックPlayItem()は、プレイアイテムの情報が格納される。ブロックSubPlayItem()は、サブプレイアイテムの情報が格納される。
図11は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと一対一に対応するクリップ情報ファイル(拡張子がclpiであるファイル)のファイル名が文字列で示される。クリップ情報ファイルは、拡張子が「clpi」とされているファイルである。
フィールドClip_codec_identifierは、このプレイアイテムにより参照されるクリップの符号化方式を示す。この例では、フィールドClip_codec_Identifierは、値「M2TS」に固定的とされる。フィールドconnection_conditionは、このプレイアイテムが次のプレイアイテムとの間でどのような接続がされているかを示す情報である。すなわち、フィールドconnection_conditionにより、プレイアイテムとプレイアイテムとの間が継ぎ目なくシームレスに再生できるか否かが示される。
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。シーケンスSTC_sequenceは、MPEG2 TS(Transport Stream)における時間軸の基準であるPCR(Program Clock Reference)が連続な範囲を表すBlu−ray Disc規格独自の構造である。シーケンス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)に関する情報が格納される。ブリッジクリップは、図12に一例が示されるように、プレイアイテム間を継ぎ目無く、シームレスに再生する機能を実現する際に作成されるビットストリームである。前のプレイアイテムと現在のプレイアイテムとの継ぎ目の部分で、本来再生すべきビットストリームとは異なるビットストリーム、すなわちブリッジクリップを代わりに再生することで、2つのプレイアイテムをシームレスに再生することができる。このブリッジクリップによる機能は、この発明と関連性が低いので、詳細は省略する。
図13は、ブロックPlayListMark()の一例の構造を表すシンタクスを示す。ブロックPlayListMark()は、マークの情報が格納されるデータ構造である。マークは、プレイリスト上の時刻を保持するための構造であって、マークを用いることにより、プレイリスト中への頭出し点の設定、プレイリストを細分化するチャプタの構造を設ける、などの機能が実現される。さらに、後述するグラフィクスプレーン上に描画された画像の表示開始/停止のタイミングを、マークを用いて指定することができる。
フィールドlengthは、フィールドlengthの直後のフィールドからブロックPlayListMark()の終端までのバイト長を示す。フィールドnumber_of_PlayList_marksは、プレイリスト中のマークの数を表す。「for」文での1回のループが1つのマークの情報を示す。フラグmark_invalid_flagは、このマークが有効であるか否かを示す。例えば、フラグmark_invalid_flagが値「0」でそのマークが有効であることが示され、値「1」であれば、そのマークの情報がデータベース上に存在するが、当該マークがユーザには見えない無効マークとされていることを示す。
フィールド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で指定される。
図14は、ファイル「%%%%%.clpi」の一例の構造を表すシンタクスを示す。上述したように、ファイル「%%%%%.clpi」は、ディレクトリCLIPINFの下に置かれ、各AVストリームファイル(ファイル「*****.m2ts」)毎に作られる。ファイル「%%%%%.clpi」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。
ブロックClipInfo()は、クリップに関する情報が格納される。ブロックSequenceInfo()は、MPEG2システムにおけるトランスポートストリームの時刻基準を表すPCRの不連続点に関する情報が格納される。ブロックProgramInfo()は、MPEG2システムのプログラムに関する情報が格納される。ブロックCPI()は、ランダムアクセス開始可能点などの、AVストリーム中の特徴的な箇所を表す特徴点情報CPIに関する情報が格納される。ブロックClipMark()は、クリップに付された頭出しのためのインデックス点やコマーシャルの開始および/または終了点などのマーク情報が格納される。ブロックMakersPrivateData()は、記録機の製造者独自の情報が格納される。
また、これら各ブロックのファイル「%%%%%.clpi」中での先頭を表すアドレス情報が、当該ファイルの先頭部分にフィールドSequenceInfo_start_address、ProgramInfo_start_address、CPI_start_address、ClipMark_start_addressおよびMakersPrivateData_start_addressとして示される。なお、このクリップファイル「%%%%%.clpi」自体は、この発明と関連性が低いので、詳細な説明を省略する。
BDAVフォーマットは、以上に概略的に説明したようなデータ構造を持つことにより、クリップAVストリーム中の再生したい部分を開始および終了点の組で指定したプレイアイテムの並びでプレイリストを構築し、ユーザが認識するひとまとまりの再生単位を管理することが可能となる。
次に、この発明の実施の一形態について説明する。この発明では、上述したBDAVフォーマットを拡張し、再生専用ディスクに適したフォーマットを構築する。まずディスクの内容を提示するメニュー画面を実現するためのプレーン構成を説明する、次に、コンテンツ制作者側がプレイリストの再生順序を指定できるようにするためのシナリオ構造を追加する。さらに、そのシナリオ構造において、再生専用ディスクに特徴的なスチル(一時停止)、ランダム・シャッフル再生、マルチアングルなどの機能を実現するために必要なデータと、その格納方法について説明する。
この発明の実施の一形態では、画像の表示系について、図15に一例が示されるようなプレーン構成を取る。動画プレーン10は、最も後ろ側(ボトム)に表示され、プレイリストで指定された画像(主に動画データ)が扱われる。字幕プレーン11は、動画プレーン10の上に表示され、動画再生中に表示される字幕データが扱われる。グラフィクスプレーン12は、最も前面に表示され、メニュー画面を表示するための文字データやボタンを表すビットマップデータなどのグラフィクスデータが扱われる。1つの表示画面は、これら3つのプレーンが合成されて表示される。
ここで、従来のDVDビデオと異なる特徴的な点は、従来の技術で説明した字幕やメニュー画面、ボタンなどが表示されるサブピクチャを、字幕プレーン11およびグラフィクスプレーン12とに分離し、字幕とボタンとをそれぞれ独立的に制御できるようにしたことである。上述したように、従来のDVDビデオでは、メニュー画面やボタンなどのグラフィクス表示と、字幕表示とを、同じ仕組みで制御しており、これらを同一プレーン上に表示していた。そして、同時に表示できるビットマップ画像は、1枚に限られていた。そのため、従来のDVDビデオでは、複数のビットマップ画像を同時に表示することができなかった。この発明では、字幕を表示する字幕プレーン11と、グラフィクス表示を行うグラフィクスプレーン12とをそれぞれ独立的に設けることで、この従来のDVDビデオの持つ問題点を解消している。
なお、画像の表示系に関しては、字幕プレーン11およびグラフィクスプレーン12が、従来の"Blu-ray Disc Rewritable Format Ver1.0 part3"に対する拡張部分であると考えることができる。
動画プレーン10、字幕プレーン11およびグラフィクスプレーン12は、それぞれ独立して表示が可能とされ、例えば、図16に一例が示されるような解像度および表示可能色を有する。動画プレーン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は、解像度が1920画素×1080ラインで各画素のサンプリング深さが8ビットとされ、カラーシステムは、256色のパレットを用いた8ビットカラーマップアドレスとされる。字幕プレーン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方式など他の圧縮符号化方式で圧縮符号化された画像データや、ランレングス圧縮された画像データ、圧縮符号化がなされていないビットマップデータなどを扱うようにしてもよい。
図17は、上述の図15および図16に従い3つのプレーンを合成する一例の構成を示す。動画プレーン10の動画データが422/444変換回路20に供給される。動画データは、422/444変換回路20でカラーシステムがYCbCr(4:2:2)からYCbCr(4:4:4)に変換され、乗算器21に入力される。
字幕プレーン11の画像データがパレット22に入力され、RGB(4:4:4)の画像データとして出力される。アルファブレンディングによる不透明度が指定されている場合には、指定された不透明度α1(0<=α1<=1)がパレット22から出力される。
図18は、パレット22の入出力データの一例を示す。パレット22は、例えばPNG形式のファイルに対応したパレット情報がテーブルとして格納される。パレット22は、入力された8ビットの画素データをアドレスとして、インデックス番号が参照される。このインデックス番号に基づき、それぞれ8ビットのデータからなるRGB(4:4:4)のデータが出力される。それと共に、パレット22では、不透明度を表すアルファチャンネルのデータが取り出される。
図19は、パレット22に格納される一例のパレットテーブルを示す。256個のカラーインデックス値〔0x00〕〜〔0xFF〕(〔0x〕は16進表記であることを示す)のそれぞれに対して、各々8ビットで表現される三原色の値R、GおよびBと、不透明度αとが割り当てられる。パレット22は、入力されたPNG形式の画像データに基づきパレットテーブルが参照され、画像データにより指定されたインデックス値に対応する、それぞれ8ビットのデータからなるR、GおよびB各色のデータ(RGBデータ)と、不透明度αとを画素毎に出力する。
パレット22から出力されたRGBデータは、RGB/YCbCr変換回路29に供給され、各データ長が8ビットの輝度信号Yと色信号Cb、Crのデータに変換される(以下、まとめてYCbCrデータと称する)。これは、以降のプレーン間合成を共通のデータ形式で行う必要があるためで、動画データのデータ形式であるYCbCrデータに統一している。
RGB/YCbCr変換回路29から出力された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の画像データも字幕プレーン11と同様に、パレットテーブル26によりRGB(4:4:4)のデータが出力され、RGB/YCbCr変換回路26に入力される。グラフィクスプレーン12の画像データのカラーシステムがRGB(4:4:4)である場合には、カラーシステムがYCbCr(4:4:4)に変換されてRGB/YCbCr変換回路27から出力される。RGB/YCbCr変換回路27から出力されたYCbCrデータが乗算器28に入力される。
グラフィクスプレーン12で用いられる画像データがPNG形式である場合には、画像データ中に、画素毎に不透明度データα2(0≦α2≦1)を設定することができる。不透明度データα2は、乗算器28に供給される。乗算器28では、RGB/YCbCr変換回路27から入力されたYCbCrデータに対し、輝度信号Y、色差信号Cb、Crのそれぞれについて、不透明度データα2との乗算が行われる。乗算器28による乗算結果が加算器29の一方の入力端に入力される。また、不透明度データα2の補数(1−α2)が乗算器25に供給される。
乗算器25では、加算器24の加算結果に対して不透明度データα2の補数(1−α2)が乗ぜられる。乗算器25の乗算結果は、加算器27の他方の入力端に入力され、上述した乗算器28による乗算結果と加算される。これにより、動画プレーン10と字幕プレーン11との合成結果に対して、さらに、グラフィクスプレーン12が合成される。
字幕プレーン11およびグラフィクスプレーン12において、例えば、表示すべき画像の無い領域の不透明度α=0と設定することで、そのプレーンの下に表示されるプレーンを透過表示させることができ、例えば動画プレーン10に表示されている動画データを、字幕プレーン11やグラフィクスプレーン12の背景として表示することができる。
なお、この図17に示される構成は、ハードウェアおよびソフトウェアの何れでも実現可能なものである。
以上のようなプレーンを設定することで、再生専用規格に必要なメニュー画面とボタンの表示を可能とする。メニュー画面上のボタンが選択されると、そのボタンに対応したプレイリストが再生されることになる。このとき、プレイリスト間がどのように結び付けられているかという情報がディスク上に記録されていることが必要となる。次に、このプレイリスト間の結びつき(リンク)を定義するシナリオについて説明する。
グラフィクスプレーン12には、ユーザに対して操作を促す画面、例えばメニュー画面を表示させることができる。図20は、グラフィクスプレーン12に表示されるメニュー画面60の一例を示す。メニュー画面60は、文字や画像を特定の位置に表示させ、ユーザが選択や実行を指示することで新たな動作が開始される「リンク」や「ボタン」を配置することができる。
「リンク」は、例えば、文字列や画像データに対して所定のファイルへのアクセス方法を示す記述を設定し、ユーザがポインティングデバイスなどを用いて画面に表示された当該文字列や画像データ上を指定することで、当該文字列や画像データに設定されたアクセス方法に従って当該ファイルにアクセスできるようにしたものである。「ボタン」は、「リンク」において、例えば通常の状態、選択された状態および押された状態の3種類の画像データを用意し、ユーザにより当該ボタン画像が指定された際に、3種類の画像データの表示を切り換えて、ユーザが行った操作をユーザ自身に認識しやすくしたものである。
なお、「リンク」や「ボタン」に対する指定動作は、例えば、マウスを用いて画面上のカーソル表示を移動させ、「リンク」による文字列や画像、「ボタン」による画像上で、マウスボタンを1または複数回押すクリック動作を行うことで、なされる。マウス以外のポインティングデバイスによっても、同様の動作を行うことができる。また、これに限らず、リモートコントロールコマンダやキーボードのキー操作により、「リンク」や「ボタン」の指定を行うこともできる。例えば、方向キーなど所定のキーで指定を行いたい「リンク」や「ボタン」を選択し、決定キーなどにより選択された「リンク」や「ボタン」を指定する。
図20の例では、グラフィクスプレーン12上に表示されたメニュー画面60の上部に、画像データとしてタイトル61が表示される。タイトル61に続けて、リンクとしての選択項目62A、62B、62Cおよび62Dが表示される。例えばリモートコントロールコマンダのキー操作により、選択項目62A、62B、62Cおよび62Dのうち1つを選択し指定することで、指定された選択項目にリンクとして設定されたファイルがアクセスされる。
メニュー画面60の下部に、字幕の表示の有無や、出力される音声を例えば英語および日本語から選択するためのボタン64および65が表示される。これらボタン64や65を上述のように操作することで、例えば、それぞれの設定を行う画面を表示するためのファイルがアクセスされ、所定の画面表示がなされる。
また、メニュー画面60の左下部分には、項目の選択方法を示す文字列63が表示される。この文字列63も、グラフィクスプレーン12上の表示である。
この、図20に一例が示されるような画面を表示するためには、画面の表示方法やリンク情報などを記述可能な、何らかの記述言語が必要とされる。この発明の実施の一形態では、この記述言語として、DVDビデオのナビゲーションコマンドを基に変更を加えたものに、字幕、ボタン用の独自の表示制御コマンドを加えた命令群を使用することで、Blu−ray Discによるメニュー画面表示が可能なようにした。
さて、上述したようなBlu−ray Discのメニュー画面60では、例えばプレイリストの一覧が画像データや文字列、ボタンなどで表示され、あるプレイリストを指定することで、指定されたプレイリストがディスクから読み出され再生されることが期待される。
上述した図20の例では、メニュー画面60に対してプレイリストの一覧が表示される。このメニュー画面60およびメニュー画面60上の選択項目を選択した際に再生される映像・音声は、実際には、複数のプレイリストが並んだ構造によって構成されている。メニューの一項目を構成する複数のプレイリスト内で、プレイリストの関連付けを行うことで、ストーリーを分岐させる仕組みを実現することができる。ストーリーを分岐できるようにすることで、ユーザの選択によってストーリーが変化していくマルチストーリー機能や、プレーヤの設定言語に従って自動的に適切な言語を再生する機能や、ユーザの年齢に応じてシーンを差し替えるパンタレル機能を実現することができる。
このような機能は、記録済みのディスクにおいて特に有用であって、テレビジョン放送の記録/再生が主目的である現行のBlu−ray Disc規格では想定されていない。
以下では、この複数のプレイリストが並べられた構造を、シナリオと称する。図21は、シナリオ70の一例の内部構造を示す。このシナリオ70は、複数のプレイリスト73A〜73Mを含む。また、シナリオ70は、グラフィクスプレーン12を用いて分岐選択画面を表示する箇所が2箇所(画面80Aおよび80B)設けられている。例えば画面80Aは、分岐選択画面を表示するためのグラフィクスデータ74Aとプレイリスト73Cを有する。同様に、画面80Bは、分岐選択画面を表示するためのグラフィクスデータ74Bとプレイリスト73Jを有する。
このように、シナリオは、プレイリストの並びを決めると共に、グラフィクスプレーン12に対する表示のタイミングを規定する。グラフィクスプレーン12への表示のタイミングは、グラフィックスプレーンに表示する画像に対して付加された表示制御命令によって規定することができる。
図21の例では、例えば上述のメニュー画面60はシナリオ70における80Aに対応する。メニュー画面60における選択項目(例えば選択項目62A)は、グラフィックス72Aによって構成されている。すなわち、メニュー画面60において選択項目62Aが指定されると、選択項目に対応したプレイリスト73Dが再生されることになる。
図21のシナリオ70では、先ず、ディスクがプレーヤに挿入されると、プレイリスト73Aが再生される。プレイリスト73Aの再生が終了されると、続けてプレイリスト73Bが再生され、プレイリスト73Bの再生が終了されると、プレイリスト73Cが再生され、グラフィクスデータ72Aが読み出されて、ユーザにストーリーの分岐選択を促す画面80Aが表示される。
画面80Aが表示された以降は、ユーザの選択に基づきストーリーが分岐される。この図20の例では、第1の選択により、画面80Aの後、プレイリスト73D、73E、73Fの順に再生され、全体の再生が終了される。プレイリスト73Fの再生が終了された後、メインのメニュー画面(例えば上述したメニュー画面60)に戻るようにしても良い。
画面80Aにおける第2の選択では、画面80Aの後、プレイリスト73Gが再生される。プレイリスト73Gは、例えば所定のタイミングにマークが設定されている。プレイリスト73Gが再生されると、再生装置自身の設定やユーザによる他のシナリオや分岐選択画面などでの選択に基づき、プレイリスト73Gのマーク位置で分岐するか、プレイリスト73Gを最後まで再生するかが制御される。プレイリスト73Gが最後まで再生される場合には、プレイリスト73Gの再生終了後、プレイリスト73M、73Iと再生され、プレイリスト73Jがさらに再生される。
一方、プレイリスト73Gにおいてマーク位置で分岐された場合には、次にプレイリスト73K、73Lと再生され、プレイリスト73Lの再生が終了されたら、次に、プレイリスト73Iに設定されたマーク位置から再生が継続される。
プレイリスト73Jは、グラフィクスデータ72Bが読み出されて、ユーザにストーリーの分岐選択を促す画面80Bが表される。画面80Bにおける第1の選択では、上述したプレイリスト73Fが再生される。一方、画面80Bの第2の選択では、プレイリスト73Kに設定されているマーク位置からの再生が行われる。
シナリオの再生において、マークの検出、ユーザからの入力、プレーヤの動作変更の検出がされた時の動作は、プレイリスト毎にコマンド列(プログラム)が用意されており、そのプログラムをプレーヤが実行することにより行われる。
例えば、シナリオ70内のプレイリスト73A〜73Mの何れが再生中であっても、リモートコントロールコマンダに設けられたメニューボタンが押されたら、シナリオの一覧が表示されるメニュー画面60が表示される、すなわち、メニュー画面60を表示するためのプレイリストに再生処理が移行される動作を実現したい場合について考える。この場合、リモートコントロールコマンダのメニューボタンが押されたときに発生するイベント(メニューボタン押下イベント)に対応するイベントハンドラとして、メニュー画面60を表示させるプレイリストに処理が移行される命令を、シナリオデータの一つとして記述しておく。
シナリオは、ディレクトリに一つ定義され、1または複数のプレイリストから構成される。ここでディレクトリとは、例えば上述した記録再生規格のBDAVディレクトリや、この発明の実施の一形態において再生専用のデータ領域として想定しているHDMVディレクトリ(詳細は後述する)である。
ここで、シナリオの構成の分類について図22および図23を用いて説明する。シナリオの構成は、プレイリスト同士の接続を基に考えると、図22に示されるように、(1)シングルプレイリスト、(2)シーケンシャルプレイリスト、(3)マルチプレイリスト、の3種類に大別することができる。
(1)のシングルプレイリストは、図23Aに一例が示されるように、単一のプレイリストで構成されるシナリオである。タイムラインが定義可能で、シナリオ再生中の割り込みが無い。コンテンツが映画であれば、例えばディスクのローディング後に映画本編だけが再生されるようなシナリオである。
(2)のシーケンシャルプレイリストは、図23Bに一例が示されるように、複数のプレイリストが分岐無しに直列的に並べられて構成されるシナリオである。各プレイリストは、プレイリストの末尾と次のプレイリストの先頭とが接続されるように並べられる。各プレイリストを通じてのタイムラインが定義可能である。コンテンツが映画であれば、例えばメニュー画面と映画本編との組み合わせからなるシナリオである。ディスクのローディング後にメニュー画面を表示させるプレイリストが実行され、メニュー画面に対して映画本編の再生が指示されると、次のプレイリストが実行され、映画の本編が再生される。
(3)のマルチプレイリストは、図23Cに一例が示されるように、プレイリストの分岐や収束による接続を含むシナリオである。プレイリストを通じてのタイムラインを定義することができず、例えば各プレイリスト内にタイムラインが定義される。マルチプレイリストによれば、ユーザ入力によって再生内容が変化するようなインタラクティブ性やゲーム性を実現することができる。コンテンツが映画の場合には、例えば同一シーンを様々なアングルで収録し、再生時にユーザの指示により選択して鑑賞できるようにしたマルチアングルを実現するシナリオである。
再生専用メディアの場合、シナリオは、後述するように、HDMVディレクトリに一つ定義されるものとする。ユーザに対しては、シナリオをより細分化した単位を見せる必要がある。但し、プレイリストの単位がユーザの認識する単位と一致するとは限らない。例えば、一つのプレイリストに3本の映画が収録されているときには、各映画の頭出し点をユーザに見せる必要がある。このように、プレイリストの構造とは独立した頭出し点(エントリポイント)を、以下では、タイトルおよび/またはチャプタと呼ぶことにする。
図24を用いてタイトルおよびチャプタについて説明する。タイトルは、シナリオ中の任意の再生開始点を表す。この図24の例では、プレイリスト470Aの先頭にタイトル1に設定されている。タイトル2は、プレイリスト470Dの途中に設定されている。プレイリスト470Aの先頭からタイトル2の直前までがタイトル1とされる。チャプタは、タイトルをさらに細分化した単位で、これもユーザが再生開始点として認識できる単位となる。タイトル1がチャプタによりさらに細分化される。図24の例では、タイトル1に対してチャプタ1、2および3が設定され、タイトル1が3つに細分化されている。また、図24に示されるように、タイトルおよびチャプタの位置は、プレイリストの途中を指定することもできる。
次に、シナリオ記述に従って動作する再生装置のモデルを考える。以下では、このモデル化された再生装置をBD(Blu-ray disc)仮想プレーヤと称し、このBD仮想プレーヤの構成の定義をBD仮想プレーヤモデルと称する。
図25を用いて、BD仮想プレーヤモデルについて説明する。BD仮想プレーヤ30は、ディスクのローディング後、この発明で定義したシナリオ記述言語により記述されディスクに記録されたシナリオを、PBCプログラム40として読み込み、シナリオの記述に従い動作する。
BD仮想プレーヤ30は、この発明の実施の一形態により定義されるディスク状記録媒体を再生するもので、パーソナルコンピュータなどのコンピュータ環境上のオブジェクトである。コンピュータ環境は、汎用的なパーソナルコンピュータに限られず、例えば、この発明の実施の一形態により定義されるディスク状記録媒体などを再生するように専用的に構成された再生装置および/または記録再生装置に組み込まれたソフトウェア環境も含む。なお、以下、この発明の実施の一形態により定義されるディスク状記録媒体を、ディスクと略称する。
BD仮想プレーヤ30の状態は、概略的には、プレイリストおよびグラフィクスを再生する状態Aと、再生が停止された状態Bの2つの状態に分類できる。ある状態から別の状態への遷移や、ある状態の中での次の動作の指定は、BD仮想プレーヤ30のオブジェクトに対するコマンドにより行われる。
なお、状態Aは、複数の動作を含む。状態Aに含まれる動作としては、高速再生、逆転再生といった変速再生や、ディスク上の任意の時刻から再生する飛び込み再生といった特殊再生などが考えられる。BD仮想プレーヤ30においてグラフィクスプレーン12による表示がなされているときは、これら変速再生や特殊再生が制限されることがある。
PBC(Play Back Control)プログラム40は、例えばディスクに記録されているシナリオに対応する。詳細は後述するが、シナリオは、ディスクに記録されたプレイリストの再生方法や、メニュー画面の表示を指示する。PBCプログラム40とBD仮想プレーヤ30とは、API(Application Programming Interface)41を介してメソッドのやりとりを行い、ディスクに記録されたプレイリストを再生する。
シナリオには、プレーヤの動作を指示するコマンドが並んだプログラムを含むコマンドを配置する領域として、グローバルコマンド領域と、ローカルコマンド領域の二つがある。
グローバルコマンド領域は、シナリオ全体に有効なプログラムが格納されており、例えば、ディスクがプレーヤに挿入されたときに最初に自動にプレーヤによって実行されて、パラメータの初期化を行い、メニュー画面を構成するプレイリストにジャンプするようなプログラムを記述する領域である。ローカルコマンド領域は、各プレイリストに関係するプログラムを記述する領域である。ローカルコマンドは、さらにプレコマンド、プレイアイテムコマンド、ポストコマンド、ボタンコマンドの4種類に分類される。
図26は、この発明の実施の一形態におけるシナリオで記述されるコマンドによるBD仮想プレーヤ30の動作を概略的に示す。図26Aは、ディスクのローディング時の動作の例を示す。上述したように、シナリオは、後述するHDMVディレクトリに対して一つが作られる。ディスクがプレーヤに挿入されディスクに対するイニシャルアクセスがなされると(ステップS30)、レジスタすなわち共通パラメータ32が初期化される(ステップS31)。そして、次のステップS32で、プログラムがディスクから読み込まれて実行される。なお、イニシャルアクセスは、ディスク挿入時のように、ディスクの再生が初めて行われることをいう。
この、ディスクローディング時に最初に読み込まれ、実行されるコマンド群(プログラム)を、グローバルコマンドと称する。グローバルコマンドは、例えば宣伝用映像(トレーラー)やメニュー画面を構成するプレイリストへのジャンプ命令が記述されており、その命令通りにプレーヤがプレイリストを再生していくことになる。
図26Bは、プレーヤ30が停止状態からユーザにより例えばプレイキーが押下され再生が指示された場合の動作の例を示す。これは、上述の図25における状態Bから状態Aへの状態遷移に相当する。最初の停止状態(ステップS40)に対して、ユーザにより、例えばリモコンなどを用いて再生が指示される(UOP:User Operation)。再生が指示されると、先ず、レジスタすなわち共通パラメータ32が初期化され(ステップS41)、次のステップS42で、プレイリストの再生フェイズに移行する。
プレイリストの再生フェイズにおけるプレイリストの再生について、図27を用いて説明する。図27Aは、プレイリストが単一のプレイアイテムからなる場合の例である。プレイリストは、プレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域の3箇所にプログラムが配される。プレイリストの再生フェイズに移行すると、先ずプレコマンド領域のプレコマンドが実行され(ステップS10)、プレコマンドの実行が終了されると、プレイリストを構成するプレイアイテムの再生フェイズに移行する(ステップS11)。プレイアイテムの再生フェイズでは、プレイアイテムにおいて開始点および終了点で指定されたストリームが再生される(ステップS110)。終了点までの再生が終了した時点で、プレイアイテムコマンドが実行される(ステップS111)。プレイアイテムコマンドが実行されると、次にポストコマンド領域のポストコマンドが実行され(ステップS12)、プレイリストの再生が終了される。
なお、ポストコマンドは、一般的な使用においては、次に再生すべきプレイリストへのジャンプ命令や、メニュー画面を構成するプレイリストへのジャンプ命令が記述される。ジャンプ命令が無い場合には、そこで再生が停止し、プレーヤは、停止状態(図25の状態B)に遷移される。
図27Bは、プレイリストが複数のプレイアイテムを含む場合の例である。この場合でも、プレイリスト中にプレコマンド領域、プレイアイテムコマンド領域およびポストコマンド領域が配され、それぞれプログラムが格納される。複数のプレイアイテムを含む場合、プレイアイテムコマンド領域では、プレイアイテム数分のプレイアイテムストリームおよびプレイアイテムコマンドが、時系列に従って配置される。
プレイリストが複数のプレイアイテムを含む場合でも、プレイリストの再生フェイズに移行すると、先ず、プレコマンドが実行される(ステップS10)。次のプレイアイテムの再生フェイズでは、プレイアイテムの開始点から終了点までのストリームの再生と、プレイアイテムコマンドの実行とが、プレイリストが含むプレイアイテムの数だけ実行される。図27Bの例では、最初のプレイアイテムストリームが再生され(ステップS110−1)、対応するプレイアイテムコマンドが実行される(ステップS111−1)。次に、図示は省略するが、2番目のプレイアイテムストリームが再生され(ステップS110−2)、対応するプレイアイテムコマンドが実行される(ステップS111−2)。これをプレイアイテムの数だけ行い、最後のプレイアイテムストリームが再生され(ステップS110−n)、対応するプレイアイテムコマンドが実行されると(ステップS111−n)、プレイアイテムの再生フェイズが終了する。プレイアイテムの再生フェイズが終了すると、ポストコマンドが実行され(ステップS12)、このプレイリストの再生フェイズが終了される。
図28は、コマンドの一部を示す。この図28に例示されるようなコマンドを、ポストコマンド領域や後述するボタンコマンド領域に書くことにより、特定のプレイリストへのジャンプを実現することができる。なお、コマンドは、この図28に例示されるに止まらず、さらに他のコマンドを定義することも可能である。
再生開始位置指定に関するコマンドについて説明する。コマンドLinkPlayList(playListNumber)で、"playListNumber"で指定されたプレイリストの再生開始が指示される。コマンドLinkPlayItem(playListNumber,playItemNumber)で、指定のプレイリストの指定のプレイアイテムからの再生開始が指示される。"playItemNumber"は、"PlayItem_id"であり、値が「0」から始まる。"playItemNumber"に値「0」を指定することで、当該プレイアイテムが属するプレイリストの先頭から再生される。
コマンドLink(position)(object)で、シナリオ内での移動が指示される。すなわち、現在移動中の箇所から前後のプレイリスト、プレイアイテムおよびチャプタに移動することがこのコマンドで指示される。なお、パラメータ"position"は、"prev"、"next"、"top"、"Parent"または"tail"の何れかの値を取り、パラメータ"object"で示される移動対象(プレイリスト、プレイアイテムまたはチャプタ)に対する移動方法が指示される。
コマンドExitで、シナリオ再生の停止が指示される。この場合、標準レジスタの値は、保持されない。コマンドRSMで、プレーヤ内のメモリに保存されているレジューム情報を呼び出し、レジスタにセットして再生を開始する。
プレーヤ状態の取得に関するコマンドについて説明する。コマンドgetMenuDescriptionLanguage()で、メニュー表示の際に用いられる言語が取得される。コマンドgetScenarioNumber()、コマンドgetPlayListNumber()およびコマンドgetChapterNumber()で、再生中のシナリオ番号、プレイリスト番号およびチャプタ番号がそれぞれ取得される。コマンドgetPlayerSupport()で、プレーヤのバージョン情報が取得される。
ビデオストリームに関するコマンドについて説明する。コマンドgetVideoStreamAvailability()で、指定のビデオストリームが含まれているか否かが取得される。コマンドsetVideoStreamNumber()で、デコードするビデオストリームが指定される。コマンドgetVideoStreamNumber()で、選択中のビデオストリームの番号が取得される。コマンドgetVideoStreamAttr()で、選択中のビデオストリームの属性が取得される。なお、ビデオストリームの属性は、例えば、そのビデオストリームの符号化方式、解像度、アスペクト比、アスペクト比が4:3のときのディスプレイモード、クローズドキャプションの有無である。コマンドsetAngleNumber()で、アングル番号が指定される。コマンドgetAngleNumber()で、選択中のアングル番号が取得される。コマンドgetMaxVideoStreams()で、ビデオストリームの最大数が取得される。
次に、この発明の実施の一形態によるシナリオを記述するコマンドやデータベースの、ディスクへの格納方法について説明する。図29は、この実施の一形態による一例のファイルの管理構造を示す。ディスク上には、先ず、1つのルートディレクトリが作成される。このルートディレクトリの下が、1つの記録再生システムで管理される範囲とする。
ルートディレクトリの下に、ディレクトリBDMVが置かれる。なお、図示はされていないが、ディレクトリBDMVは、上述の図4の如く、ルートディレクトリの下に複数を置くことができる。なお、以下では、この発明の実施の一形態で定義される方式をBDMVと総称する。
ディレクトリBDMVの下には、2つのファイルすなわちファイル「scenario.hdmv」およびファイル「entrylist.data」が置かれると共に、ディレクトリ「PLAYLIST」、ディレクトリ「CLIPINF」、ディレクトリ「STREAM」といった複数のディレクトリが置かれる。
図30は、ファイル「scenario.hdmv」の一例の構造を表すシンタクスを示す。このファイル「scenario.hdmv」は、ディスク挿入時などのイニシャルアクセス時に最初に読み込まれ実行されるファイルである。ファイル「scenario.hdmv」は、最初にファイル識別記号(フィールドtype_indicator)、バージョン番号(フィールドversion_number)が記述され、その後に、機能毎のデータを集めたブロックが並んでいる。
フィールドtype_indicatorは、32ビットのデータ長を有し、このファイルがファイル「scenario.hdmv」であることを表す特定の文字列が格納されている。フィールドversion_numberは、32ビットのデータ長を有し、バージョン番号が入る。フィールドScenario_start_addressは、32ビットのデータ長を有する符号無しの整数で、ブロックScenario()が開始される位置をファイル「scenario.hdmv」の先頭からの相対バイト数で表した値が格納される。
ブロックAutoplay()は、ファイルの先頭から41バイト目の固定位置から始まる。ブロックAutoplay()には、上述した、イニシャルアクセス時(ディスク挿入時のようにディスクの再生が始めて行われる時)に実行されるプログラムが記述される。上述したグローバルコマンドは、このブロックAutoplay()に格納される。Autoplay()の後には、任意の数のパディングワード(padding_word)が入り、ブロックの後に空きを持たせることができるようになっている。
図31は、図30におけるブロックAutoplay()の一例のデータ構造を表すシンタクスを示す。フィールドlengthは、データ長が32ビットの符号無しの整数で、このフィールドlengthの直後からブロックAutoplay()の終わりまでのデータ長を、バイトで表したものが記述される。フィールドnumber_of_commandsは、その後に続くフィールドcommand(i)の数を表す。フィールドcommand(i)は、データ長が32ビットの値で、上述の図28に一例が記されている、プレーヤのパラメータのセット、指定のプレイリストの再生開始、演算などの命令が記述されている。
ブロックScenario()は、これまで説明してきた「シナリオ」が記述される。プレイリストの再生順序の情報およびプレイリスト毎に持つローカルコマンド領域などが、このブロックScenario()に記述される。
図32は、ブロックScenario()の一例の構造を表すシンタクスを示す。ブロックScenario()は、シナリオの情報、すなわちプレイリスト間のリンクを定義するブロックであって、上述したプレコマンド、ポストコマンド、プレイアイテムコマンドなどの情報およびコマンドそのものが格納される。ブロックScenario()は、ブロックScenario()内に格納されるコマンドの情報を示すフィールドが記述される領域と、実際のコマンドが列挙される領域とから構成される。
フィールドlengthは、このフィールドlengthの直後からブロックScenario()の終わりまでの長さをバイトで表現した値が記述される。フィールドnumber_of_PlayListsは、シナリオを構成するプレイリストの数を表す。このフィールドnumber_of_PlayLists以降は、プレイリスト毎に持つデータである。すなわち、フィールドnumber_of_PlayListsの次行からのforループにより、フィールドnumber_of_PlayListsで示される値をループカウンタiの最大値として、プレイリスト毎のデータが記述される。
フィールドPre_Command_start_idは、プレイリストを再生する前に実行されるプログラム(プレコマンド)の、コマンドテーブル中での開始番号を表す。すなわち、フィールドPre_Command_start_idにより示される番号は、後述するフィールドPL_Command(i)が列挙されるforループ内でのループカウンタjを表す。同様に、フィールドPost_Command_start_idは、プレイリストを再生した後に実行されるプログラム(ポストコマンド))の、コマンドテーブル中での開始番号を表す。すなわち、フィールドPost_Command_start_idにより示される番号は、後述するフィールドPL_Command(j)が列挙されるforループ内でのループカウンタjを表す。
フィールドnumber_of_Pre_Commandsは、このプレイリストを再生する前に実行されるプログラム(プレコマンド)を構成するコマンドの数を表す。同様に、フィールドnumber_of_Post_Commandsは、このプレイリストを再生した後に実行されるプログラム(ポストコマンド)を構成するコマンドの数を表す。これらのプログラムは、後述するコマンドテーブル内に記述される。
次のフィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を表す。フィールドPI_Command_start_idは、プレイアイテムの再生後に実行するコマンドの、コマンドテーブル中の開始番号を表す。すなわち、フィールドPI_Command_start_idにより示される番号は、後述するコマンドテーブル内でのループカウンタjを表す。フィールドnumber_of_PI_Commandsは、プレイアイテムの再生後に実行するコマンド(プレイアイテムコマンド)の数を表す。すなわち、後述するコマンドテーブル内において、フィールドPI_Command_start_idで示される位置から始まり、フィールドnumber_of_PI_Commandsで表される数のコマンドを、プレイアイテムの再生後に実行する。
フィールドnumber_of_PL_Commandsは、次行からのコマンドテーブル中のコマンドの数を表す。コマンドテーブルは、フィールドPL_Command(j)が列挙されるforループにより構成される。コマンドテーブル内のコマンドには、順に番号jが割り当てられている。番号jは、コマンドテーブルを記述するためのforループのループカウンタjに対応する。フィールドPL_Command(j)は、一つのコマンドを表し、番号jは、上述したフィールドPre_Command_start_id、フィールドPost_Command_start_idおよびフィールドPI_Command_start_idから参照される。
図33は、ファイル「entrylist.data」の一例のデータ構造を表したシンタクスを示す。ファイル「entrylist.data」は、最初にファイル識別記号(フィールドtype_indicator)、バージョン番号(フィールドversion_number)、ブロックの開始アドレス(フィールドScenarioEntry_start_address)が記述され、その後に、機能毎のデータを集めたブロックが並んでいる。
フィールドtype_indicatorは、データ長が32ビットを有し、このファイルがタイトルやメニューのエントリポイントを記述したファイルであることを表す特定の文字列が格納されている。フィールドversion_numberは、データ長が32ビットを有し、バージョン番号が格納される。フィールドScenarioEntry_start_addressは、データ長が32ビットの符号無しの整数で、ブロックScenarioEntry()が開始される位置を、ファイル「entrylist.data」の先頭からの相対バイト数で表した値が格納される。
図34は、ブロックAppInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、データ長が32ビットの符号無しの整数で、このフィールドlengthの直後からブロックAppInfo()の終わりまでの長さをバイトで表したものが記述される。フィールドHDMV_name_character_setは、後述するフィールドHDMV_nameを記述する文字セットを表す。フィールドPIN_valid_flagは、再生時に暗証番号を設定するか否かを表し、設定有効の場合は、直後のフィールドPINが暗証番号を表す。フィールドHDMV_name_lengthは、次のフィールドHDMV_nameの有効部分の長さを表す。フィールドHDMV_nameは、このファイル「entrylist.data」が置かれるディレクトリHDMVに付けられた名称がテキスト形式で格納されている領域である。フィールドHDMV_nameは、データ長が255バイトの固定長とされる。実際に名称が格納される部分は、フィールドHDMV_nameの先頭からフィールドHDMV_name_lengthで指定されている長さまでとされる。
図35は、ブロックScenarioEntry()の一例の構造を表すシンタクスを示す。ブロックScenarioEntry()は、シナリオ内の頭出し点が羅列される。ここで、シナリオは、上述したようにディレクトリHDMVに対して一つ作られ、ディレクトリHDMVの下に置かれる複数のプレイリストを結び付けて再生順序を定義する。一方、ユーザから見た場合、シナリオは、必ずしも一つの映像・音声単位として見える訳ではなく、複数の「タイトル」から構成されているように見える。
例えば、一枚のディスクに映画が3本収録されている場合、再生順序を定義するシナリオは、ディスクに一つのみ存在するが、ユーザには当該ディスクに3つのタイトルが収録されているように見える。あるいは、その3つのタイトルのリストを表示し、ユーザに選択させるタイトルメニュー画面も含めて、4つのタイトルに分割されているように見える。なお、メニュー画面もユーザにとっては一まとまりの映像、音声単位であるので、この発明の実施の一形態では、タイトルの一種としてみなすことにする。
このように、プレイリストの結びつきを定義するシナリオという単位と、ユーザが一まとまりの映像、音声として認識する単位には違いがあるため、上述のように、シナリオ内に頭出し点を定義しておく必要がある。このシナリオ内の頭出し点を、タイトルエントリと称する。このブロックScenarioEntry()に、タイトルエントリの情報が記述される。
図35の説明に戻り、フィールドlengthは、データ長が32ビットの符号無しの整数で、このフィールド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の値は、「0」となる。フィールド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」以下に、プレイアイテム毎に持つことができるストリーム設定メニュー(すなわちサブメニュー)を構成するプレイリストあるいはプレイリスト群へのエントリポイントが記述されている。ストリーム設定メニューは、オーディオ、字幕、アングルなどの切り替えなど、プレイリスト毎に個別にメニューを用意したい場合に利用することができる。例えば、上述の図20におけるボタン64、65を押すことで表示される画面がサブメニューである。
フィールド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の値は、「0」となる
図36は、ファイル「xxxxx.mpls」の一例の構造を表すシンタクスを示す。図36において、ファイル「xxxxx.mpls」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。また、フィールドPlayList_start_addressおよびPlayListMark_start_addressには、それぞれ対応するブロックの先頭アドレスが例えばデータ長が32ビットのアドレス情報として示される。
ブロックPLControlInfo()は、このプレイリストに関する属性情報が格納される。ブロックPlayList()は、このプレイリストを構成するプレイアイテムに関する情報が格納される。ブロックPlayListMark()は、このプレイリストに付されるマークの情報が格納される。
ファイル「xxxxx.mpls」において、ブロックPLControlInfo()、PlayList()およびPlayListMark()の先頭アドレスがこれらのブロックより前に示されるために、各ブロックの前および/または後ろに、任意の長さのパディングデータpadding_wordを挿入することができる。但し、ファイル「xxxxx.mpls」の最初のブロックであるブロックPLControlInfo()の開始位置は、ファイルの先頭から41バイト目に固定される。
図37は、ブロックPLControlInfo()の一例の構造を表すシンタクスを示す。このブロックPLControlInfo()は、プレイリストの再生において直接的に必要とされない、プレイリストに関する各種の属性情報が格納される。フィールドPlayList_character_setは、プレイリストに関する文字列情報の文字セットが指定される。
フィールドPL_playback_typeは、図38に一例が示されるような値を取り、このプレイリストがシーケンシャルに再生される通常のプレイリストか、プレイアイテムをランダム再生するプレイリストか、プレイアイテムをシャッフル再生するプレイリストであるかを表す。ランダムシャッフルは、プレイリストの単位で指定する。すなわち、一つのプレイリストに通常再生のプレイアイテムとランダムシャッフルのプレイアイテムブロックを混在させない。再生専用の記録媒体の場合には、制作者の意図により、ランダム再生やシャッフル再生を指定されることがあるため、このような情報が必要とされる。
フィールドplayback_countは、このプレイリストがランダム再生あるいはシャッフル再生のプレイリストであるとき、プレイアイテムの再生回数を指定する。すなわち、このフィールドplayback_countにより、ランダム再生あるいはシャッフル再生に用いるプレイアイテムの数を指定できる。
フィールドPL_UOP_mask_table()は、ユーザ操作を制限する情報が格納される。再生、早送り、早戻しなどのユーザ操作を、このプレイリストの再生中に禁止したい場合、この領域で適切な指定をする。例えば、このフィールドPL_UOP_mask_table()内の値を所定に設定することで、警告表示や著作権の表示を早送りなどで飛ばして再生されないようにできる。
フィールドPL_random_access_modeは、図39に一例が示される値を取り、このプレイリスト中の任意の箇所に飛び込み再生をするランダムアクセスが可能か否かを示す。例えば、必ずユーザに見せたいプレイリストがある場合に、フィールドPL_random_access_modeの値を〔0x1〕に設定する。これにより、このプレイリストを再生する際には、早送り、早戻し、任意時刻からの再生などが不可能になる。再生専用の記録媒体においては、制作会社のロゴ表示や注意事項など、ユーザに必ず見せたいシーンが収録されている場合がある。このフィールドPL_random_access_modeは、そのようなシーンを変速再生等で飛ばされないようにするために必要な情報である。
フィールドPlayList_durationは、プレイリストの再生時間を示す。フィールドPlayList_nameは、フィールドPlayList_name_lengthに示される値を有効長としてプレイリスト名が示される。フィールドPlayList_detailは、フィールドPlayList_detail_lengthに示される値を有効長としてプレイリストの詳細情報が示される。
図40は、ブロックPlayList()の一例の構造を表すシンタクスを示す。フィールドlengthは、フィールドlengthの直後のフィールドからこのブロックPlayList()の終端までのバイト長を示す。フィールドnumber_of_PlayItemsは、このプレイリストを構成するプレイアイテムの数を示す。フィールドnumber_of_SubPlayItemsは、このメインのプレイアイテムと同時に再生される補助的なプレイアイテム(サブプレイアイテム)の数を示す。
ブロックPlayItem()は、プレイアイテムの情報が格納される。ブロックSubPlayItem()は、サブプレイアイテムの情報が格納される。
図41は、ブロックPlayItem()の一例の構造を表すシンタクスを示す。フィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと1対1に対応するクリップ情報ファイル(拡張子が「clpi」であるファイル)のファイル名が文字列で示される。
フィールドClip_codec_identifierは、このプレイアイテムにより参照されるクリップの符号化方式を示す。この実施の一形態では、フィールドClip_codec_Identifierは、値「M2TS」に固定的とされる。すなわち、この実施の一形態では、プレイアイテムにより参照されるクリップの符号化方式が値「M2TS」により示される方式に固定的とされる。
フラグis_multi_angleは、このプレイアイテムが後述するマルチアングル構造であるかどうかを表す(第1のフラグ)。
フィールドconnection_conditionは、このプレイアイテムと次のプレイアイテムとがどのように接続されているかを示す情報である。すなわち、フィールドconnection_conditionにより、プレイアイテムとプレイアイテムとの間が継ぎ目なくシームレスに再生できるか否かが示される。
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。シーケンスSTC_sequenceは、MPEG2 TS(Transport Stream)における時間軸の基準であるPCR(Program Clock Reference)が連続な範囲を表すBlu−ray Disc規格独自の構造である。シーケンス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は、図42に一例が示されるような値を取り、このプレイアイテム中の任意の箇所に飛び込み再生をするランダムアクセスが可能か否かを示す。例えば、必ずユーザに見せたいプレイリストがある場合に、フィールドPI_random_access_modeの値を〔0x1〕に設定しておく。これにより、このプレイアイテムを再生する際に、早送り、早戻し、任意時刻からの再生などを不可能にできる。
フィールドstill_modeは、このプレイアイテム再生後に一時停止を行うかを決めるフィールドである。フィールドstill_modeは、図43に一例が示されるような値を取り、例えばフィールドstill_modeの値が〔0x1〕のときは一時停止することを表し、次のフィールドstill_timeのフィールドで指定された時間、一時停止を行う。これにより、スライドショーなどのような、静止画像を一定間隔で次々と表示するような再生を実現することができる。この場合には、静止画1枚ずつがそれぞれプレイアイテムとなっている。なお、フィールドstill_timeは、有限の時間だけでなく、ユーザが入力するまで一時停止し続けるという設定(ポーズ設定)も可能となっている。例えばフィールドstill_modeの値を〔0x2〕とすることで、ポーズ設定が可能とされる。
上述したフラグis_multi_angleの値が例えば「1」とされていれば、このプレイアイテムがマルチアングルであるとされ、「Angle」以下に、マルチアングルのための情報が追加される。
フィールドnumber_of_anglesは、アングル数を表す。フィールドis_seamless_angle_changeは、図44に一例が示されるような値を取り、アングルがシームレスに切り替え可能なように、すなわち、アングル間をなめらかに切り替えることができる状態に各アングルがディスク上配置されているか否かを表す。
次のforループは、アングルを構成するクリップの情報が記述される。forループ中のフィールドClip_Information_file_nameは、このプレイアイテムが参照しているクリップと1対1に対応するクリップ情報ファイル(拡張子が「clpi」であるファイル)のファイル名が文字列で示される。フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。
ここで、値angle_id=0に相当するアングルは、アングルを構成しない通常のプレイアイテムと同じように、このブロックPlayItem()の前半部分で既に定義されている。値angle_id=1以降のアングルがこのforループの中で定義されている。したがって、このforループの中には、値angle=0に相当するアングルは、含まれていない。
図45は、ブロックSubPlayItem()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからSubPlayItem()の終わりまでの長さをバイトで表したものである。フィールドClip_Information_file_nameは、このサブプレイアイテムが参照しているクリップと1対1に対応するクリップ情報ファイル(拡張子が「clpi」であるファイル)のファイル名が文字列で示される。
フィールドClip_codec_identifierは、このサブプレイアイテムにより参照されるクリップの符号化方式を示す。この実施の一形態では、フィールドClip_codec_Identifierは、値「M2TS」に固定的とされる。
フィールドis_repeat_flagは、図46に一例が示されるような値を取り、このサブプレイアイテムをメインのプレイアイテム(メインパス)と非同期に繰り返し再生するか否かを表すフラグである。例えば、このフィールドis_repeat_flagの値が「1」の場合は、メインのプレイアイテムの再生が終了するまで、メインのプレイアイテムとは非同期に、このサブプレイアイテムが繰り返し再生される。このフィールドis_repeat_flagの値が「0」の場合は、このサブプレイアイテムは、メインのプレイアイテムと同期して、一度だけ再生される。
例えば、このサブプレイアイテムがオーディオのみのサブプレイアイテムである場合、フィールドis_repeat_flagの値を「1」とすることで、BGM(Back Ground Music)再生を行うことができる。
フィールドSubPlayItem_typeは、このサブプレイアイテムがどのような性質を持ったサブプレイアイテムであるかを表す。例えば、フィールドSubPlayItem_typeの値が「1」であれば、オーディオのみのサブプレイアイテムであることを表す。
フィールドref_to_STC_idは、このプレイアイテムにより参照されるクリップ内のシーケンスSTC_sequenceを指定する。フィールドSubPlayItem_IN_timeおよびSubPlayItem_OUT_Timeは、このサブプレイアイテムにおける開始点および終了点の、シーケンスSTC_sequence 上でのタイムスタンプpts(presentation_time_stamp)をそれぞれ示す。
上述のフィールドis_repeat_flagの値が例えば「0」であって、このサブプレイアイテムがメインのプレイアイテムと同期して再生されることを示す場合、フィールドsync_PlayItem_idとフィールドsync_start_PTS_of_PlayItemにより、サブプレイアイテムがメインのプレイアイテムのどの時刻から同期再生されるかが指定される。
図47に一例が示されるように、フィールドsync_PlayItem_idで、メインパスのプレイアイテムを指定し(PlayItem=1)、フィールドsync_start_PTS_of_PlayItemで、サブプレイアイテムが再生開始されるメインのプレイアイテム上の時刻を表す(t1)。また、サブプレイアイテムとして、対応するクリップがフィールドSubPlayItem_IN_timeおよびフィールドSubPlayItem_OUT_timeで指定される期間、再生されることが示されている。
図48は、ファイル「zzzzz.clpi」の一例の構造を表すシンタクスを示す。図48において、ファイル「zzzzz.clpi」の内部は、機能別の情報毎にブロックが構成される。フィールドtype_indicatorにこのファイルを示す文字列が格納され、フィールドversion_numberにこのファイルのバージョンが示される。また、フィールドSequenceInfo_start_address、フィールドProgramInfo_start_address、フィールドCPI_start_addressおよびフィールドClipMark_start_addressで、それぞれ対応するブロックの開始位置が示される。
図49は、ブロックClipInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからブロックClipInfo()の終わりまでの長さをバイトで表す。フィールドClip_stream_typeは、クリップAVストリームの種別を表す。再生専用の規格においては、通常のクリップであることを示す値、例えば値「1」に固定的としてよい。
フィールドapplication_typeは、クリップAVストリーム(拡張子が「m2ts」のファイル)がどのような多重化によって作られているかを示す。フィールドapplication_typeは、図50に一例が示されるような値を取り、このクリップAVストリームが通常のビデオストリームであるか、静止画の表示に適した多重化がなされているストリームであるかを表す。
より具体的には、この例によれば、フィールドapplication_typeの値が「1」で、対応するクリップAVストリームのファイルがこの実施の一形態によるHDMVトランスポートストリームのルールに従っていることを示す。このとき、当該クリップAVストリームは、通常の動画が再生される。
フィールドapplication_typeの値が「2」で、対応するクリップAVストリームのファイルがオーディオ再生に同期する静止画用の、HDMVトランスポートストリームのルールに従っていることを示す。このとき、当該クリップAVストリームは、例えばMPEG2形式のファイルであって、ビデオデータおよびオーディオデータがマルチプレクスされている。また、ビデオデータは、例えばMPEG2におけるIピクチャが静止画として並んでいるような構成とされる。これにより、例えばオーディオの時間軸に同期して表示されるスライドショーのような再生が可能とされる。このような再生を、タイムベーススライドショーと称する。
フィールドapplication_typeの値が「3」で、対応するクリップAVストリームのファイルがオーディオとは非同期に再生される静止画用の、HDMVトランスポートストリームのルールに従っていることを示す。このとき、オーディオデータとビデオデータとは、別ファイルとされ、例えば、オーディオデータが再生されている間、ビデオデータは、静止画が任意の間隔またはユーザの指定に基づき切り換えられて表示される。ビデオデータは、上述と同様に、例えばMPEG2におけるIピクチャが静止画として並んでいるような構成とすることができる。このような再生を、ブラウザブルスライドショーと称する。
なお、フィールドapplication_typeの値が「0」のときは、対応するクリップAVストリームがHDMVトランスポートストリームのルールに従っていない場合である。
ここで、静止画の表示に適した多重化とは、主として静止画スライドショーのようなアプリケーションの実現を容易にすることを想定している。このようなアプリケーションにおいては、静止画1枚と、その上に重ねる字幕やグラフィクスデータとをカプセル化して多重化すると、読み込みが容易となる。
通常の動画像と同様の多重化をしてしまうと、ある静止画と同時に表示されるべき字幕が、前の静止画の画像データ付近に多重化されているような状況(いわゆる多重化位相差)が発生し、より広範囲のストリームデータを読みださないと字幕とグラフィックスとが重ねられた静止画像1枚を表示することができない。
すなわち、この発明の実施の一形態においては、ビデオデータや字幕を表示するためのグラフィクスデータは、MPEGにおけるTS(Transport Stream)パケットに格納されて伝送される。1つのTSパケットは、188バイトからなり、上述のビデオデータやグラフィクスデータは、それぞれTSパケットに収まるように分割されてTSパケットに格納される。このとき、ある静止画像データ(画像P1とする)に対応した字幕データのパケットが、次以降の静止画像データ(画像P2とする)のパケットの後ろに配置されてしまうと、画像P1に対応した字幕を表示するために、画像P2の後ろまでデータを読み込んでおかなければならない。
ある静止画一枚とそれに付随する字幕およびグラフィックスだけを対象として多重化を行えば(カプセル化)、他のデータが混入しないストリームを作ることができる。それを静止画ごとに繰り返してストリームをつなげていくと、静止画(および当該静止画に付随する字幕、グラフィクスデータ)毎のデータが直列につながった一本のストリームが出来る。このような多重化を行ったストリームを、静止画用のHDMVストリームとしている。
さらに、静止画用のHDMVストリームには、上述したように、タイムベーススライドショーと、ブラウザブルスライドショーとの2種類がある。この実施の一形態では、この2種類を、フィールドapplication_typeで別の番号を割り当てて、区別している。
このように、静止画とそれに付随する字幕やグラフィクスとをカプセル化して記録することで、静止画を切り替えながら再生する際のアクセス性が向上する。
図49の説明に戻り、フィールドTS_recording_rateは、クリップAVストリームファイルの記録レートをバイト/秒で表したものである。フィールドnum_of_source_packetsは、クリップAVストリームに含まれるパケット数を表す。フィールドBD_system_useおよびブロックTS_type_info_block()は、この発明と関連が低いので説明を省略する。
図51は、ブロックSequenceInfo()の一例の構造を表すシンタクスを示す。フィールドlengthは、この直後のフィールドからブロックSequenceInfo()の終わりまでの長さをバイトで表したものである。フィールドnum_of_ATC_sequencesは、連続した時間に記録されたことを表すシーケンスATC_sequenceの数を示す。再生専用の媒体の場合、シーケンスATC_sequenceの数は、「1」にすることができるため、詳細は省略する。フィールドSPN_ATC_startは、シーケンスATC_sequenceの開始をパケット番号で表したものであり、シーケンスATC_sequenceが1つの場合には、クリップAVストリームファイルの先頭と一致し、値が「0」となる。
フィールドnum_of_STC_sequencesは、シーケンスATC_sequence上のシーケンスSTC_sequenceの数を表す。再生専用の媒体の場合、シーケンスSTC_sequenceの数は、「1」にすることができるため、詳細は省略する。フィールドoffset_STC_idは、値が「0」に固定的とされる。フィールドPCR_PIDは、MPEG2 TSにおいて、PCR(Program Clock Reference)が含まれるTSパケットのPIDを表す。フィールドSPN_STC_startは、シーケンスSTC_sequenceの開始をパケット番号で表したものであり、シーケンスSTC_sequenceが1つの場合には、クリップAVストリームファイルの先頭と一致し、値が「0」となる。フィールドpresentation_start_timeおよびフィールドpresentation_end_timeは、クリップAVストリーム中の有効な範囲を表す。フィールドpresentation_start_timeおよびフィールドpresentation_end_timeで示される範囲がプレイアイテムから参照できる範囲となる。
図52は、ブロックProgramInfo()の一例の構造を表すシンタクスを示す。これは、記録再生媒体用のシンタックス構造を再生専用媒体に適用することができ、新規の構造は無いので詳細な説明は省略する。ただし、フィールドnum_of_program_sequencesの値が「1」であること、フィールドnum_of_groupsの値が「1」であるなどの制限を加えることができる。
図53は、ブロックStreamCodingInfo()一例の構造を表すシンタクスを示す。これも、上述のブロックProgramInfo()と同様、記録再生媒体用のシンタックス構造と略同じ構造を有し、ビデオデータに関しては、ビデオデータのフォーマット、フレームレート、アスペクト比などの属性情報、オーディオデータに関しては、サンプリング周波数などの属性情報が記述される。ただし、再生専用媒体に適用する際には、この図53に示されるように、字幕、オーディオストリームの言語を表すフィールドlanguage_codeを追加する必要がある。この情報は、プレーヤの言語設定に従って最適な音声・字幕の言語を選択する際に有用である。
図54は、ブロックCPI()の一例の構造を表すシンタクスを示す。一般に、MPEGストリームのような、フレーム間圧縮を行っている符号化ストリームにおいては、デコード開始可能な箇所は、GOP(Group Of Picture)の先頭など一部の箇所に限定されている。CPI(Characteristic Point Information)とは、そのデコード可能な開始点の位置の情報を集めたデータベースで、再生時刻と、ファイル内アドレスとが対応付けられたテーブルになっている。すなわち、CPIは、デコード単位の先頭位置を示す情報がテーブル化されている。
このようにデータベースを定めることで、例えば、任意の時刻から再生したい場合、再生時刻を元にCPIを参照することによって再生位置のファイル内アドレスがわかる。このアドレスは、デコード単位の先頭となっているため、プレーヤは、そこからデータを読み出してデコードし、素早く画像を表示することができる。
なお、このCPIに格納される、デコード単位の先頭位置(この例ではGOPの先頭位置)を、EP(Entry Point)エントリと称する。
フィールドCPI_typeは、CPIの種類を表し、図55に一例が示されるような値を取る。この発明の場合は、再生専用媒体用のCPIであることを示す値となる。具体的には、値が「8」とされ、HDMV用のEPエントリのマップ(EP_map_type_for_HDMV)が格納されることが示される
図56は、再生専用媒体用のEPエントリのマップEP_map、すなわち、上述のフィールドCPI_type内のブロックEP_map_for_HDMV()の一例のデータ構造を表すシンタクスを示す。マップEP_mapは、GOPの先頭位置について、再生時刻とファイル内アドレスを対応付けたテーブルである。図56の例では、GOPの先頭位置について、MPEGのPTS(Presentation Time Stamp)とSPN(Source Packet Number)とが対応付けられたテーブルとしてデータベースが作られている。なお、SPNは、ソースパケット番号を示し、ファイルの先頭からのバイトアドレスに相当する。
記録再生用のマップ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およびSPNの上位側のビットが示される。
次に、パディングワードを挟んで、精密な検索を行うためのフィールドPTS_EP_fineおよびSPN_EP_fineが格納されるforループが配される。それと共に、フラグis_angle_change_pointおよびフィールドI_end_position_offsetが格納される。詳細は後述するが、フラグis_angle_change_pointは、クリップAVストリームがマルチアングルを構成している場合に、各EPエントリがアングル切り替え可能点に該当しているか否かを示す(第2のフラグ)。
ここで、フラグis_angle_change_pointについて説明する。先ず、理解を容易とするために、クリップAVストリームがディスク上にどのように配置されているかについて説明する。
クリップAVストリームは、ディスク10上の論理アドレスが連続したデータのかたまり(ブロック)の並びで構成されている。以下、このクリップAVストリームによるディスク上の論理アドレスが連続したデータのブロックを、エクステントと称する。図57は、ディスク上にエクステントが配置された様子を模式的に示す。図57の例では、1つのクリップAVストリームが3つのエクステント601A、601B、601Cの並びで構成されている。エクステントの長さとその配置は、ディスク作成の際に適切に制御されている。
このとき、エクステントの最小サイズの規定を守るようにエクステント601A、601B、601Cが構成されて、クリップAVストリームがディスク600に記録されていれば、再生時にデータの連続供給が保証される。
図57に示されるように、1つのファイルが複数のエクステント601A、601Bおよび601Cから構成されている場合、ファイルの読み出しのために、あるエクステント601Aから次のエクステント601Bへと、次々にエクステントを読む動作が繰り返される。あるエクステント601Aを読んだ後に次のエクステント601Bを読む場合、ディスク600の回転数を変化させ、プレーヤにおいてディスク600に対する読み出し部を構成する光ピックアップを移動させる必要がある。
ディスク600上での、光ピックアップを移動させてのアクセス時間は、最大で、約0.8秒とされ、光ピックアップの移動中は、ディスク読み出し部を構成するドライブからは、データを取り出すことができない。一方、映像および音声のデコードおよび再生は、連続に行われるため、このアクセス時間の影響を吸収するような仕組みが必要となる。
あるエクステント601Aと次のエクステント601Bとの間では、アクセスのジャンプが発生する。前のエクステント601Aのバイト長が大きい場合、ジャンプ前に十分な量のデータをエクステント601Aから読み出し、バッファに格納することができる。このため、ジャンプする間も、バッファに格納されたデータをデコーダに供給することで、連続的にデコードを行うことができる。
すなわち、ジャンプ前のエクステント601Aのサイズが十分大きければ、次のエクステント601Bにジャンプしている間も、ストリームの連続的な供給が保証できる。したがって、バッファに十分な量のデータを蓄積できるようにするには、エクステントのサイズの下限を制限すればよい。最小エクステントサイズは、ディスク600からの読み出しレートと、ドライブのアクセス時間から固有的な値として定められる。データ連続供給の条件は、このエクステントの最小サイズの規定を守ってデータが配置されているか否かにより判定できる。
図58は、エクステント601Dおよび601Eのように、クリップAVストリームがディスク上に断片化して記録されている状態の例を示す。図58において、記録されたクリップAVストリームを、所定のビットレートで記録媒体から読み出せることを保証するためには、1つのエクステントの大きさ(サイズSとする)が、次式(1)に示されるような条件を満たす必要がある。
S×8/(S×8/Rud+Ts)>=Rmax・・・(1)
式(1)において、「S」は、エクステントのサイズをバイトで表わし、「Ts」は、1つのエクステント601Dから次のエクステント601Eへのフルストロークのアクセス時間すなわち最大アクセス時間を秒で表わす。「Rud」は、ディスクからの読み出しビットレートを表わし、「Rmax」は、クリップAVストリームのビットレートを表わす。「Rud」および「Rmax」の単位は、ビット/秒である。なお、エクステントサイズSに乗じられている「8」は、バイト/ビットの換算のためである。
すなわち、各エクステント601D、601EのサイズがSバイト以上になるように、クリップAVストリームのデータを連続して配置すれば、エクステント601Dおよび601Eの並びをシームレスに再生することが可能となる。
式(1)を変形すると、次式(2)のようになる。
S×8>=Rmax・Rud・Ts/(Rud−Rmax) ・・・(2)
この式(2)に基づき具体的な数値を計算すると、例えば、クリップAVストリームのビットレートRmax=28(ビット/秒)の場合において、Rud=35Mbps(Mega Bit per second)、Ts=0.8秒とすると、S>=14MB(Mega Byte)となる。つまり、この例では、最小エクステントサイズSは、 14MBとなる。
以上のようにして、一つのファイルを連続に読み出す際のデータ連続供給の条件を決めることができる。これは、マルチアングル機能において読み出すアングルをシームレスに切り替える、シームレスアングル切り替え機能の実現にも適用できる。
図59を用いて、マルチアングル機能について説明する。マルチアングル機能は、図59Aに一例が示されるように、複数の再生経路が用意された区間(マルチアングルブロック)があり、ユーザは、その区間を再生している間、見たいアングルを自由に変えることができるという機能である。例えば、同一の対象物をアングルを変えて複数のカメラで並列的に撮影することによって、このようなマルチアングルブロックを構成することができる。
なお、マルチアングルを構成する映像は、同一シーンを対象にしたものに限られない。再生時系列上の同一時刻に選択的に表示されるように意図された複数の映像により、マルチアングルを構成することができる。
マルチアングルブロックは、1つのプレイアイテムから構成される。すなわち、1つのプレイアイテムが複数のアングルの映像を含むことになる。図59Aの例では、マルチアングルブロックにおいて、3つのアングル(アングル(0)、アングル(1)およびアングル(2))を選択可能とされている。
マルチアングルブロックにおいては、アングル間を切り替える際のアクセス時間を短くするため、図59Bに一例が示されるように、マルチアングルを構成する各ストリームがディスク上に特殊な配置で記録される。これを、インタリーブブロックと呼び、一つの連続部分をインタリーブユニットと呼ぶ。インタリーブユニットは、ディスク上の連続的なアドレスに記録されており、最小エクステントサイズの条件を満たす。インタリーブブロックは、各々のアングルの時間的に対応するインタリーブユニットをアングル順に並べて纏め、それを、さらに時系列に従って並べたものである。
インタリーブユニットを単位にしてアングルを切り替えれば、常に最小エクステントサイズを読み込んでからジャンプをするため、上述したデータ連続供給の条件が満たされる。さらに、インタリーブユニットの先頭にGOPの先頭を合わせ、常にインタリーブユニットの先頭からMPEGデコードが可能になるようにしておけば、シームレスなアングル切り替えを実現できる。
ここで、シームレスアングル切り替えが可能な位置について考える。フレーム間圧縮を行うMPEGストリームの性質と、ディスクからのデータ連続供給の条件から、アングル切り替えは、任意のバイト位置ではできないことがわかる。最も簡単なのは、最小エクステントのサイズを満たすインタリーブユニットの単位で切り替えられるようにする方法である。さらに、インタリーブユニットの先頭とGOPの先頭、すなわちEPエントリとを一致させれば、MPEGストリームのデコードも連続に行える。
ここで、例えばアングルの切り替え可能点を増やし、インタリーブによってインタリーブブロックの数が増えると、一つのファイルが細切れになり、ファイルシステムの管理情報が増える。例えばBlu−ray Discファイルシステムでは、ファイルが複数のエクステントに分割されると、ディスクリージョンの数が増えてファイルシステムのデータベースが肥大化し、記録できるファイル数の上限が小さくなるなどの問題が出てくる。
そこで、この発明の実施の一形態では、図60に一例が示されるように、一つのインタリーブユニットのサイズを大きくして、インタリーブブロック中のインタリーブユニットの数を減らし、一つのインタリーブユニット中に複数のアングル切り替え可能点を設ける。アングル切り替え可能点は、デコード可能な開始点でもあるため、何れかのEPエントリに一致する。
上述したフラグis_angle_change_pointは、GOPの先頭を指すEPエントリがアングル切り替え可能点に該当するか否かを表すものである。フラグis_angle_change_pointは、図61に一例が示されるような値を取り、フラグis_angle_change_pointが値「1」で、当該EPエントリがアングル切り替え可能点であることを示し、値「0」で、当該EPエントリがアングル切り替え可能点ではないことが示される。
あるEPエントリをシームレスなアングル切り替え点にできるかどうかは、基本的には、当該EPエントリと前のアングル切り替え可能点とが、最小エクステントのサイズ以上離れているか否かで決めることができる。すなわち、フラグis_angle_change_pointの値が「1」であるアングル切り替え可能なEPエントリの間隔は、最小エクステントサイズ以上離れている必要がある。
次に、図60を用いて、このフラグis_angle_change_pointを利用したシームレスアングル切り替えの動作について説明する。図60において、上向きの矢印で示される点がアングル切り替え可能点である。ディスク上では、図60Bに一例が示されるように、上向きの矢印で示される点がアングル切り替え可能点とされるEPエントリであって、フラグis_angle_change_pointが値「1」とされる。
図60Aを参照し、例えば、アングル再生中にユーザがアングル(0)からアングル(1)に切り替えたとする。そのとき、プレーヤは、アングル(0)の最寄りのEPエントリのうち、フラグis_angle_change_pointのが値「1」になっている箇所までそのアングルのストリームを読み続ける。次に、そのEPエントリの時刻と同時刻のアングル(1)中のEPエントリをクリップ情報ファイルから探し、ファイル内のバイト位置を取得し、そこから読み込みを開始する。以上の動作により、シームレスなアングル切り替えを実現できる。
このときのディスク上での再生経路は、図60Bに一例が示されるように、フラグis_angle_change_pointが値「1」となっている位置で、アングル間でのジャンプが行われている。
次に、ノンシームレスなアングル切り替えの場合を考える。ノンシームレスなアングル切り替えとは、アングルを切り替える際、映像に不連続が発生してもよいアングル切り替えのことをいう。シームレスアングル切り替えの場合、上述したように、アングルの切り替えが指定されると、アングル切り替え可能点まで再生してアングル切り替えが実行されるが、ノンシームレスアングル切り替えの場合は、データ連続供給やGOPの先頭の条件を考慮せずに、アングル切り替えの指定がなされて即座にアングルを切り替えることができるので、切り替えまでの時間が短いというメリットがある。
図62は、ノンシームレスのマルチアングルブロックの例を示す。ノンシームレスのアングル切り替えの場合、画像が不連続になってもよいため、必ずしも同時刻の他アングルに移動する必要はない。例えばGOPの再生途中でアングルを抜け出し、その時刻よりも前で、最も近いGOPの先頭にジャンプしてもよい。図62Aに例示されるように、アングル(0)からアングル(1)にジャンプしたときに、アングル(1)においてGOPの先頭を探し、この例では、時間的に少し戻った位置からアングル(1)が再生されている。図62Bは、このときのディスク上での再生経路を示す。
一方、ノンシームレスなマルチアングルブロックであっても、マルチアングルブロックの出口での接続は、シームレスであることが求められる。これは、一度もアングル切り替えを行わない場合には、通常の再生と同様にマルチアングルブロックの入口と出口で画像に不連続が発生しないようにすることが、再生品質を高める上で非常に効果的だからである。
この発明の実施の一形態では、フラグis_angle_change_pointの設定により、ノンシームレスのマルチアングルブロックにおいて、マルチアングルブロックと本編との接続点がシームレスに接続されるようにしている。
先ず、本編からアングルブロックへの入口におけるシームレス接続は、比較的実現が容易である。すなわち、本編の終わり(すなわち、ノンシームレスのマルチアングルブロックの入り口の直前におけるプレイアイテムの後端)を、最小エクステントサイズの条件を満たすよう配置しておけば、本編からどのアングルにもシームレスに接続することができる。
一方、アングルブロックを抜けて本編に接続する出口付近においては、例えば、図63Aに一例が示される経路のようなアングル切り替えが行われた場合、最後のアングル切り替えにおいて、切り替えを行った点からアングルの終わりまでのデータは、最小エクステントサイズを満たさない。そのため、マルチアングルブロックの出口でのジャンプにおいて、データ連続供給の条件が満たされず、映像が一時停止する、あるいは黒画面が出るなどの不連続が発生してしまう。図63Bは、このときのディスク上での再生経路を示す。
図63Aの例では、アングル(2)からアングル(1)に移動した位置から当該マルチアングルブロックの出口までが、最小エクステントサイズを満たしていない。そのため、アングル(1)から本編に移動する際に、アングル(1)のデータ読み込み量が不足し、再生映像の不連続が発生する。
この発明の実施の一形態では、このノンシームレスのアングル切り替えにおける問題を解決するために、ノンシームレスアングル切り替えのブロックにおいても、フラグis_angle_change_pointを活用する。ノンシームレスのマルチアングルブロックの再生中においては、アングル切り替え時に不連続が発生しても良いので、基本的にフラグis_angle_change_pointの値は、上述の図63Bに示されるように、全て「1」である。すなわち、任意の箇所で再生中のアングルから飛び出すことが可能であると共に、任意の箇所に飛び込んで再生をすることが許される。
ここで、ノンシームレスのマルチアングルブロック中のクリップにおける、フラグis_angle_change_pointの定義を定める。上述したように、フラグis_angle_change_pointの値が「0」の領域は、再生中における他のアングルへのアングル切り替え(飛び出し)や、切り替えが発生した元のアングルからの再生位置の割り込み(飛び込み)が禁止され、フラグis_angle_change_pointの値が「1」の領域は、飛び出しや飛び込みが可能であるものとする。そして、各アングルの出口付近の所定数のフラグis_angle_change_pointの値を「0」に設定し、この所定数のフラグis_angle_change_pointの値が「0」にされた領域での飛び出しや飛び込みを禁止する。このとき、この所定数のフラグis_angle_change_pointの値が「0」とされた領域のサイズは、最小エクステントサイズ以上とする。
このようにフラグis_angle_change_pointを設定することで、ノンシームレスのマルチアングルブロックにおいても、マルチアングルブロックの出口の直前での飛び込み、飛び出しを禁止することができる。
例として、図64Bおよび図65Bに示されるように、各インタリーブユニットの後端側の6個のEPエントリをフラグis_angle_change_pointの値が「0」である領域とし、他のEPエントリは、フラグis_angle_change_pointの値が「1」であるように設定する。
次に、このようにフラグis_angle_change_pointが設定されたノンシームレスのマルチアングルブロックの再生方法について説明する。第1の方法は、フラグis_angle_change_pointの値が「0」の領域でのアングル切り替えを禁止する方法である。
図64を用いて説明する。上述したように、各インタリーブユニットの後端側の6個のEPエントリにおいて、フラグis_angle_change_pointの値を「0」とする(図64B)。図64Aに一例が示されるように、再生位置がこのフラグis_angle_change_pointの値を「0」とした領域に入ったら、アングル切り替えが禁止される。例えば、ユーザによりこの領域でアングル切り替えを指示する操作が行われても、プレーヤでは、無視される。この例では、アングル切り替えが行われず、そのままマルチアングルブロックを抜けて本編のプレイアイテムに移行している。この場合のディスク上での再生経路が図64Bに示される。
第2の方法は、フラグis_angle_change_pointの値が「0」の領域でのアングル切り替えは許可されるが、切り替え後の飛び込み先は、フラグis_angle_change_pointの値が「1」の箇所とする方法である。
図65を用いて説明する。上述したように、各インタリーブユニットの後端側の6EPエントリにおいて、フラグis_angle_change_pointの値を「0」とする(図65B)。図65Aに一例が示されるように、マルチアングルブロックにおいて、ブロックの出口から最小エクステントサイズ未満の位置、すなわち、フラグis_angle_change_pointの値が「0」とされた領域内でアングル切り替えが指定された場合、切り替えられた先のアングルにおいて、再生位置がフラグis_angle_change_pointの値が「1」の領域まで戻され、その位置から再生が継続される。この場合のディスク上での再生経路が図65Bに示される。
これら第1および第2の方法の何れを用いても、マルチアングルブロックの出口でのジャンプの際には、最小エクステントサイズ以上のデータを読み込んだ後に次のプレイアイテムの再生が行われる。これにより、アングルブロックの出口で再生が不連続(ノンシームレス)になることを防止できる。
なお、上述の図64では、ノンシームレスのマルチアングルブロックにおいてインタリーブブロックを構成したが、ノンシームレスのマルチアングルブロックにおいては、図65に示されるように、インタリーブ配置にしなくてもブロックを構成できる。
図66は、この発明の実施の一形態に適用できるプレーヤデコーダ100’の一例の構成を示す機能ブロック図である。このプレーヤデコーダ100’は、図示されないドライブ装置に装填されたディスクから再生されたデータを解釈し、AVストリームを出力すると共に、出力されたAVストリームに対するユーザによるインタラクティブな操作を可能とする。
なお、プレーヤデコーダ100’は、図示されないCPUにより全体の動作が制御される。例えば、プレーヤデコーダ100’の各部におけるストリームやデータの流れは、CPUにより監視され、制御される。
図示されないドライブ装置にディスクが装填されると、上述したように、先ずファイル「scenario.hdmv」およびファイル「entrylist.data」が再生され、このファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、必要な他のファイルが読み出され、ディスクに記録されたコンテンツが再生される。例えば、ファイル「scenario.hdmv」およびファイル「entrylist.data」の記述に基づき、動画プレーン10に表示するための動画データ、字幕プレーン11やグラフィクスプレーン12に表示するための画像データ、プレイリストファイルなどがディスクから読み出される。
以下では、ディスクから読み出されるこれらのデータのうち、動画データ、サブピクチャ(字幕データ)や音声データといった、連続的に処理する必要があるストリームをリアルタイムストリームと称する。また、シナリオファイル、プレイリストファイルといった、連続的な処理を要求されない非リアルタイムなデータを、ストアオブジェクトと称する。ストアオブジェクトは、メモリ上などに蓄積、展開され、必要に応じて処理される。
プレーヤデコーダ100’は、チャンネル(1)および(2)の2系統の入力チャンネルを有し、入力チャンネル(1)の入力端101に、ストアオブジェクトが入力される。入力チャンネル(2)の入力端202に、リアルタイムストリームが入力される。入力端202に、ストアオブジェクトを入力することも可能である。この実施の一形態では、入力端202に入力されるリアルタイムストリームおよび一部のストアオブジェクトは、MPEG2 TSである。
なお、例えば、ドライブ装置においてディスクの回転速度を2倍速などの高速回転としてディスクからの読み出し転送レートを上げ、時分割で動作させることにより、ディスクからの、チャンネル(1)および(2)の2系統の読み出しが実現可能である。
先ず、入力チャンネル(1)の系統について説明する。入力端101に入力されたストアオブジェクトは、スイッチ回路102に入力される。ストアオブジェクトとして、ファイル「scenario.hdmv」中のプログラムコードが入力された場合、スイッチ回路102において出力端102Aが選択され、入力されたプログラムコードがコードバッファ104に蓄えられる。他にプログラムとしては、HTML文書や、ECMAスクリプトなども考えられる。
一方、ストアオブジェクトとして画像データや音声データが入力された場合、スイッチ回路102において出力端102Bが選択され、入力された画像データがスイッチ回路103に入力される。入力端202に入力されたリアルタイムストリームに、字幕プレーン11やグラフィクスプレーン12に表示するための画像データが含まれていない場合には、スイッチ回路103で入力端103Aが選択され、スイッチ回路102から入力された画像データや音声データがコンテンツバッファ105に蓄えられる。
同様にして、入力端202に入力されたリアルタイムストリームに、字幕プレーン11やグラフィクスプレーン12に表示するための画像データや、効果音のための音声データが含まれている場合には、スイッチ回路103において入力端103Bが選択され、当該画像データ・音声データがコンテンツバッファ105に蓄えられる。コードバッファ104およびコンテンツバッファ105に蓄えられたストアオブジェクトは、必要に応じて読み出され、マルチメディアエンジン106に供給される。
コンテンツバッファ105に蓄えられたストアオブジェクトのうち画像データは、スイッチ回路107および108をそれぞれ介して、グラフィックデコーダA500およびグラフィックデコーダB301にも供給される。
なお、この図66の例では、グラフィクスデコーダA300は、PNG形式の画像データをデコードし、グラフィクスデコーダB301は、JPEG形式の画像データをデコードする。なお、グラフィクスデコーダA300およびB301は、これに限らず、さらに他のデータ形式の画像データをデコードするものであってもよいし、複数の形式の画像データに対応するようにもできる。
マルチメディアエンジン106は、XMLパーサ106A、スクリプトインタプリタ106Bおよびグラフィクスレンダラ106C、効果音再生のためのサウンドプレーヤ106D、シナリオファイル解析エンジン106Eを含む。マルチメディアエンジン106は、独立的なハードウェアで構成してもよいし、上述した図示されないCPUの、所定のプログラムに基づく処理で実現することも可能である。
XMLパーサ106Aは、XML(Extensible Markup Language)文書を解析する機能を有し、HTML文書の解析も可能である。XMLパーサ106Aで解釈されたHTML文書は、このプレーヤデコーダ100で実行可能な形式に変換される。スクリプトインタプリタ106Bは、ECMAスクリプトを解析し、このプレーヤデコーダ100で実行可能な形式に変換される。また、グラフィクスレンダラ106Cは、画像データを、字幕プレーン11およびグラフィクスプレーン12に展開可能な形式にデコードする。サウンドプレーヤ106Dは、ボタンクリック音などに使われる音声データを再生する。
マルチメディアエンジン106において、バッファ109をワークメモリとして、これらXMLパーサ106A、スクリプトインタプリタ106Bおよびグラフィクスレンダラ106Cの処理が行われる。例えば、XMLパーサ106Aおよびスクリプトインタプリタ106Bにより、バッファ109のうちコードバッファ109Aが用いられる。また、グラフィクスレンダラ106Cにより、バッファ109のうちグラフィクスバッファ109Dが用いられる。バッファ109は、上述のコードバッファ109Aおよびグラフィクスバッファ109Dの他に、文字列の表示に用いるフォントデータが格納されるフォントバッファ109B、XMLパーサ106AでHTML文書を解析した結果を階層化された木構造で保持するためのツリーバッファ109Cなどが含まれる。サウンドプレーヤ106Dは、サウンドバッファ109Eに蓄積した音声データを再生する。
マルチメディアエンジン106では、例えばコードバッファ104に蓄えられたシナリオファイル「scenario.hdmv」などを読み出し、読み出されたファイルの記述に基づきシナリオ解析エンジン106Eでシナリオを解析する。そして、解析されたシナリオの記述に基づき図示されないドライブ装置などを制御し、ドライブ装置に挿入されたディスクから、動画プレーン10に表示するための動画データ、字幕プレーン11やグラフィクスプレーン12に表示するための画像データ、音声データなど必要なファイルを読み出し、コンテンツを再生する。
なお、コードバッファ104およびコンテンツバッファ105に格納されたデータは、当該データが不要になるまで、コードバッファ104やコンテンツバッファ105に保持しておくことができる。したがって、これらコードバッファ104やコンテンツバッファ105に格納されたデータは、必要に応じて何度でも読み出して使うことができる。
さらに、マルチメディアエンジン106では、例えば、コードバッファ104に蓄えられたECMAスクリプトを読み出し、読み出されたECMAスクリプトの記述に基づき、必要に応じて、コードバッファ104からの他のECMAスクリプトやHTML文書の読み出し、コンテンツバッファ105からの画像データの読み出しなどを行う。
マルチメディアエンジン106では、上述の他にも、入力された複数種類のデータのデマルチプレクス処理、JavaVM(Java(登録商標)仮想マシン)機能などが行われる。さらに、マルチメディアエンジン106により、ユーザからの、リモートコントロールコマンダやポインティングデバイスなどによる図示されない操作手段からの入力が受け取られ、所定に処理される。ユーザ入力は、さらに、後述するグラフィックデコーダA300、グラフィックデコーダB301、オーディオデコーダ118、MPEGビデオデコーダ120およびシステムデコーダ121にも供給される。
グラフィクスレンダラ106Cで処理された画像データは、スイッチ回路130および131をそれぞれ介してサブピクチャプレーン302およびグラフィックスプレーン303に供給される。なお、この例では、サブピクチャプレーン502およびグラフィクスプレーン303に供給される画像データは、PNG形式あるいはJPEG形式等の画像データをグラフィクスレンダラ106Cでデコードした後のビットマップデータであるものとする。これらの各プレーン302、303に画像データが供給されるタイミングは、マルチメディアエンジン106により制御される。
ここで、サブピクチャプレーン302およびグラフィクスプレーン303は、それぞれ上述した字幕プレーン11およびグラフィクスプレーン12に対応する。動画像プレーン135は、上述した動画プレーン10に対応する。なお、サブピクチャプレーン302、グラフィクスプレーン303および動画像プレーン135は、例えばフレームメモリからなる。
マルチメディアエンジン106は、さらに、後述するプレゼンテーションプロセッサ139に対して、動画像プレーン135、サブピクチャプレーン302、ならびに、グラフィクスプレーン303を切り替えあるいは合成する制御信号を供給する。同様に、マルチメディアエンジン106は、後述するプレゼンテーションプロセッサ141に対して、オーディオストリーム出力を制御するような制御信号を供給する。
次に、入力チャンネル(2)の系統について説明する。入力端202にMPEG2 TSで入力されたリアルタイムストリームは、PIDフィルタ110に供給され、MPEG2 TSのトランスポートパケットに格納されるPID(Packet Identification)が抽出され、当該トランスポートパケットに格納されるストリームの属性が検出される。PIDフィルタ110では、このストリーム属性に基づき、入力されたリアルタイムストリームが、トランスポートパケット毎に対応する系統に振り分けられる。
PIDに基づき、トランスポートパケットがストアオブジェクトに属する画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111Aに一旦溜め込まれ、所定のタイミングで読み出されて入力端103Bが選択されたスイッチ回路103に入力され、スイッチ回路103を介してコンテンツバッファ105に格納される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットがPNG形式のデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111BおよびバッファBn112Bに一旦溜め込まれ、所定のタイミングで読み出されて入力端107Bが選択されたスイッチ回路107に入力され、スイッチ回路107を介してグラフィックデコーダA500に供給される。
グラフィックデコーダA300では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納されたPNGデータがデコードされて字幕あるいはグラフィックスを表示するための画像データとされる。この画像データを字幕として用いる場合は、所定のタイミングでスイッチ回路130の入力端130Bに入力され、スイッチ回路130を介してサブピクチャプレーン302に展開される。同様に、ボタンとして用いる場合は、グラフィックスプレーン上に表示させるため、所定のタイミングでスイッチ回路131の入力端131Cに入力され、スイッチ回路131を介してグラフィックスプレーン303に展開される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットが、JPEGデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111CおよびバッファBn112Cに一旦溜め込まれ、所定のタイミングで読み出されて入力端108Bが選択されたスイッチ回路108に入力され、スイッチ回路108を介してグラフィックデコーダB500に供給される。
グラフィックデコーダB301では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納されたJPEGデータがデコードされ、ビットマップの画像データとされる。この画像データを字幕として用いる場合は、所定のタイミングでスイッチ回路130の入力端130Cに入力され、スイッチ回路130を介してサブピクチャプレーン302に展開される。同様に、ボタンとして用いる場合は、グラフィックスプレーン上に表示させるため、所定のタイミングでスイッチ回路131の入力端131Bに入力され、スイッチ回路131を介してグラフィックスプレーン302に展開される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットが、オーディオデータが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111DおよびバッファBn112Dに一旦溜め込まれ、所定のタイミングで読み出されてオーディオデコーダ118に供給される。このトランスポートパケットに格納されるオーディオデータは、例えばドルビーデジタルに準拠した方式で圧縮符号化されている。
オーディオデコーダ118は、例えばリニアPCM(Pulse Code Modulation)オーディオデコーダ119を有し、入力されたトランスポートストリームのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された圧縮符号化されたオーディオデータをデコードし、最終的にリニアPCMオーディオデータに変換する。当該トランスポートパケットに、圧縮符号化されていないリニアPCMオーディオデータが格納されている場合は、当該データは、例えばそのままリニアPCMオーディオデコーダ119に入力され、何も処理されずに出力される。
オーディオデコーダ118から出力されたリニアPCMオーディオデータは、オーディオ用のプレゼンテーションプロセッサ141に入力され、マルチメディアエンジン106の制御に基づき所定の音響効果などが付加されて、出力端142に導出される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットが動画像データが格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111E、バッファMBn113およびバッファEBn114に一旦溜め込まれ、所定のタイミングで読み出されてMPEGビデオデコーダ120に供給される。このトランスポートパケットに格納される動画像データは、MPEG2方式により圧縮符号化されている。
MPEGビデオデコーダ120では、供給されたトランスポートパケットのヘッダ情報を除去すると共に、当該トランスポートパケットに格納された、MPEG2方式で圧縮符号化された動画像データをベースバンドの動画像データにデコードする。
MPEGデコーダ120から出力された動画像データは、スイッチ回路124の入力端124Aに入力されると共に、バッファ123を介してスイッチ回路124の入力端124Bに入力される。スイッチ回路124において、所定のタイミングで入力端124Aおよび124Bが選択され、出力された動画像データが動画像プレーン134に展開される。
PIDフィルタ110において、PIDに基づき、トランスポートパケットがシステム情報が格納されているパケットであるとされれば、当該トランスポートパケットは、バッファTBn111FおよびBsys115を介してシステムデコーダ121に供給される。システムデコーダ121では、供給されたトランスポートパケットのヘッド情報が除去され、格納されているシステム情報が取り出される。システム情報は、例えば図示されないCPUに渡される。
サブピクチャプレーン302上の画像データは、上述の図17におけるパレットテーブル22に対応するパレット304に供給され、256色からなるパレットに対してインデックスによる参照がなされ、RGBデータが出力されると共に、不透明度データα1が抜き出される。RGBデータは、上述の図17におけるRGB/YCbCr変換回路29に対応するRGB/YCbCr変換回路306によりYCbCrデータに変換される。YCbCrデータは、不透明度データα1と共にプレゼンテーションプロセッサ139に供給される。
グラフィクスプレーン303上の画像データは、上述の図17におけるパレットテーブル26Aに対応するパレット305に供給され、RGBデータと不透明データα2とが出力される。RGBデータは、上述の図17におけるRGB/YCbCr変換回路26Bに対応するRGB/YCbCr変換回路307に供給され、カラーシステムがRGB(4:4:4)からYCbCr(4:4:4)に変換される。RGB/YCbCr変換回路307から出力されたYCbCrデータは、不透明データα2と共に、プレゼンテーションプロセッサ139に供給される。
動画像プレーン135の出力は、アップ/ダウンコンバータ138を介してプレゼンテーションプロセッサ139に供給される。なお、アップ/ダウンコンバータ138は、画像の解像度を変換する回路であって、例えば高解像度のHD(High Definition)画像から通常の解像度を有するSD(Standard Definition)画像への変換を行う。
プレゼンテーションプロセッサ139は、図17を用いて説明した、字幕プレーン11(サブピクチャプレーン302)の画像データによる不透明度α1と、グラフィクスプレーン12(グラフィクスプレーン303)による不透明度α2とを用いたアルファブレンディング処理を行う。
すなわち、プレゼンテーションプロセッサ139では、サブピクチャプレーン302の画像データに設定された不透明度α1に基づき、動画像プレーン135に対してサブピクチャプレーン302の画像データが合成される。さらに、グラフィクスプレーン303の画像データに設定された不透明度α2に基づき、動画像プレーン135およびサブピクチャプレーン302が合成された画像データに対してグラフィクスプレーン303の画像データが合成される。この、グラフィクスプレーン303の画像データ、サブピクチャプレーン302の画像データ(字幕データ)および動画像プレーン135の画像データが合成された画像データが出力端140に導出される。
なお、プレゼンテーションプロセッサ139は、画像データに対してリアルタイムでエフェクト処理を行うこともできる。
このような構成において、この発明の実施の一形態に基づき記述およびデータ構成されたコンテンツが記録されたディスクが図示されないドライブ装置に挿入されると、ファイル「scenario.hdmv」などが読み込まれ、ファイル「scenario.hdmv」の記述に従い、ディスクに記録されたコンテンツが再生される。ユーザにより、図示されない操作手段により指示がなされると、この指示に基づき、マルチメディアエンジン106によりドライブ装置やプレーヤデコーダ100’の各部が制御され、指示に応じた再生がなされる。
例えば、図示されない操作手段によりアングル切り替え指示がなされると、この指示に基づくマルチメディアエンジン106の制御により、ファイル「scenario.hdmv」、「entrylist.data」など必要なファイルが参照され、クリップ切り替え可能点の情報に基づき図示されないドライブ装置が制御され、上述したようにして、ディスク上の読み出し位置が変更されてアングル切り替えがなされる。また、操作手段により、静止画表示の際のポーズ設定の解除などの指示を出すこともできる。
上述では、プレーヤデコーダ100’の各部がハードウェアで構成されるように説明したが、これはこの例に限られない。例えば、プレーヤデコーダ100’をソフトウェア上の処理として実現することも可能である。この場合、プレーヤデコーダ100’をコンピュータ装置上で動作させることができる。また、プレーヤデコーダ100’をハードウェアおよびソフトウェアが混合された構成で実現することもできる。例えば、オーディオデコーダ118やMPEGビデオデコーダ120をハードウェアで構成し、その他をソフトウェアで構成することが考えられる。
プレーヤデコーダ100’をソフトウェアのみ、または、ハードウェアおよびソフトウェアの混合により構成し、コンピュータ装置で実行させるためのプログラムは、例えばCD−ROM(Compact Disc-Read Only Memory)といった記録媒体に記録されて提供される。このCD−ROMをコンピュータ装置のCD−ROMドライブに装填し、CD−ROMに記録されたプログラムを所定にコンピュータ装置にインストールすることで、上述の処理をコンピュータ装置上で実行可能な状態とすることができる。なお、コンピュータ装置の構成は、極めて周知であるため、説明は省略する。
以上説明したように、この発明は、記録済みの大容量ディスクにおいて、記録再生用のBlu−ray Disc規格を拡張することで、ユーザの入力に応じて再生が変化するインタラクティブ機能を実現することができるようになる。
また、この発明の実施の一形態によれば、タイトルとトップメニューを構成するプレイリストの情報をデータベースに記述してあるため、画面上の選択によらず、リモコンキーなどで直接指定のタイトルを再生するしたり、トップメニュー画面を呼び出すことができるようになる。
また、この発明の実施の一形態によれば、デコード単位の先頭毎にアングル切り替え可能か否かを示すフラグを設けたので、アングル切り替え点で不連続が発生しないシームレスなアングル切り替え機能を実現することができる。
さらに、この発明の実施の一形態によれば、サブプレイアイテムがメインのプレイアイテムと非同期で再生可能か否かを示すフラグを設けたので、メインパスに対して非同期に繰り返し再生されるBGMを実現することができる。
さらにまた、この発明の実施の一形態によれば、静止画とそれに付随する字幕やグラフィクスとをカプセル化して記録しているため、静止画を切り替えながら再生する、スライドショーなどを行う場合のアクセス性が向上する。