以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が、本明細書に記載されていることを確認するためのものである。したがって、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
更に、この記載は、本明細書に記載されている発明の全てを意味するものでもない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
請求項1に記載の再生装置(例えば、図28の再生装置20)は、
1以上のオーディオストリーム(例えば図3のオーディオ1等)を少なくとも含むAVストリームファイル(例えば図3のMPEG2プログラムストリーム)の再生を管理するための再生管理情報(例えばPlaylist)であって、1以上の前記オーディオストリームのそれぞれのタイプを示すタイプ情報(例えば図18のaudio_presentation_typeに記述される図23に示される0乃至15)を少なくとも含む前記再生管理情報に基づいて、所定の記録媒体に記録されている前記AVストリームファイルの再生を行う再生装置であって、
各オーディオストリームに対して1つの識別子が付与され、さらに、dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対しても異なる識別子が1つずつ個別に付与されており(例えば、図3のオーディオ1のchannel1およびchannel2、オーディオ1、オーディオ2、および、オーディオ3のそれぞれに対しては、図16のaudio_stream_idがそれぞれ1つずつ付与されており)、
前記再生管理情報は、さらに、各オーディオストリームに付与された前記識別子、および、前記dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対して付与された前記識別子を含んでおり、
前記再生管理情報を取得する取得手段(例えば図29のステップS11の処理を実行する図28のコントローラ34)と、
ユーザにより再生が指定されたオーディオストリームを、取得された前記再生管理情報に含まれる前記識別子のうちの対応する識別子により受け付ける受付手段(例えば図32のステップS52の処理を実行する図28のコントローラ34)と、
受け付けられた前記識別子が、前記dual_monoタイプのオーディオストリームの識別子、前記dual_monoタイプのオーディオストリームのchannel1の識別子、または前記dual_monoタイプのオーディオストリームのchannel2の識別子のいずれかであった場合、前記dual_monoタイプのオーディオストリームを読み出す読み出し手段(例えば図29のステップS12や図32のステップS58の処理を実行する図28のコントローラ34)と、
読み出された前記dual_monoタイプのオーディオストリームと、前記dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのうち、受け付けられた前記識別子で特定されるものを再生する再生手段(例えば図30のステップS27や図32のステップS60の処理を実行する図28のオーディオデコーダ75を含むAVデコーダ部33)と
を備える。
請求項2に記載の再生方法は、
1以上のオーディオストリーム(例えば図3のオーディオ1等)を少なくとも含むAVストリームファイル(例えば図3のMPEG2プログラムストリーム)の再生を管理するための再生管理情報(例えばPlaylist)であって、1以上の前記オーディオストリームのそれぞれのタイプを示すタイプ情報(例えば図18のaudio_presentation_typeに記述される図23に示される0乃至15)を少なくとも含む前記再生管理情報に基づいて、所定の記録媒体に記録されている前記AVストリームファイルの再生を行う再生装置(例えば、図28の再生装置20)の再生方法であって、
各オーディオストリームに対して1つの識別子が付与され、さらに、dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対しても異なる識別子が1つずつ個別に付与されており(例えば、図3のオーディオ1のchannel1およびchannel2、オーディオ1、オーディオ2、および、オーディオ3のそれぞれに対しては、図16のaudio_stream_idがそれぞれ1つずつ付与されており)、
前記再生管理情報は、さらに、各オーディオストリームに付与された前記識別子、および、前記dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対して付与された前記識別子を含んでおり、
前記再生管理情報を取得する取得ステップ(例えば図29のステップS11)と、
ユーザにより再生が指定されたオーディオストリームを、取得された前記再生管理情報に含まれる前記識別子のうちの対応する識別子により受け付ける受付ステップ(例えば図32のステップS52)と、
受け付けられた前記識別子が、前記dual_monoタイプのオーディオストリームの識別子、前記dual_monoタイプのオーディオストリームのchannel1の識別子、または前記dual_monoタイプのオーディオストリームのchannel2の識別子のいずれかであった場合、前記dual_monoタイプのオーディオストリームを読み出す読み出しステップ(例えば図29のステップS12や図32のステップS58)と、
読み出された前記dual_monoタイプのオーディオストリームと、前記dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのうち、受け付けられた前記識別子で特定されるものを再生する再生ステップ(例えば図30のステップS27や図32のステップS60)と
を含む。
請求項3に記載のプログラムは、上述した請求項2に記載の再生方法に対応するプログラムであって、例えば図33のパーソナルコンピュータ500により実行されるプログラムである。
請求項4に記載のデータ構造は、
dual_monoを少なくとも含む複数のタイプのうちの所定の1つに分類されるオーディオストリーム(例えば図3のオーディオ1等)を少なくとも1以上含むAVストリームファイル(例えば図3のMPEG2プログラムストリーム)の再生を管理するための再生管理情報(例えばPlaylist)を含むデータ構造であって、
1以上の前記オーディオストリームのそれぞれの前記タイプを示すタイプ情報(例えば図18のaudio_presentation_typeに記述される図23に示される0乃至15)が少なくとも含まれている前記再生管理情報を含み、
各オーディオストリームに対して1つの識別子が付与され、さらに、dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対しても異なる識別子が1つずつ個別に付与されており(例えば、図3のオーディオ1のchannel1およびchannel2、オーディオ1、オーディオ2、および、オーディオ3のそれぞれに対しては、図16のaudio_stream_idがそれぞれ1つずつ付与されており)、
前記再生管理情報は、さらに、各オーディオストリームに付与された前記識別子、および、前記dual_monoタイプのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対して付与された前記識別子を含んでいる。
以下、図を参照して、本発明の実施の形態について説明する。
図5は、本発明を適用した再生装置20(図28を参照して後述する)で利用されるストリームナンバーテーブルの一例を説明する図である。
即ち、本実施の形態では、dual_monoのオーディオストリームのchannel1とchannel2とのそれぞれを切り替え操作の対象とすることができるように、上述した図4に示されるような従来のストリームナンバーテーブルではなく、図5に示されるようなストリームナンバーテーブルが採用される。このような図5のストリームナンバーテーブルに対応する画像(またはそれに基づいて生成される所定の画像)を例えば表示装置1(図1)に表示させることで、ユーザは、dual_monoのオーディオストリームのchannel1とchannel2とのそれぞれも切り替え操作の対象、即ち、再生対象として選択可能であることを容易に認識することができる。
具体的には、図5は、上述した図3の例のMPEG2プログラムストリームについてのストリームナンバーテーブルの一例であって、オーディオ1のタイプがdual_monoとされている場合におけるストリームナンバーテーブルの一例を説明する図である。
オーディオ1のタイプがdual_monoである場合、上述したように、そのオーディオ1を構成するchannel1とchannel2とのそれぞれには相互に独立したモノラルの音声(データ)が個別に含まれている。そこで、本実施の形態では、オーディオ1のchannel1とchannel2とのそれぞれに対して、それぞれ独立したA_SNが与えられる。即ち、図5の例では、A_SN=1:オーディオ1のchannel1とされ、A_SN=2:オーディオ1のchannel2とされている。
また、図5の例では、オーディオ2とオーディオ3とのタイプは何れもdual_mono以外とされており、このため、A_SN=3:オーディオ2とされ、A_SN=4:オーディオ3とされている。
なお、図示はしないが、その他のオーディオストリーム(図3の例ではオーディオ2やオーディオ3)のタイプがdual_monoであった場合にも全く同様に、dual_monoである各オーディオストリームのchannel1とchannel2とのそれぞれは相互に独立してストリームナンバーテーブルに定義される。即ち、dual_monoである各オーディオストリームのそれぞれについて、channel1とchannel2とのそれぞれに対して相互に独立したA_SNが個別に与えられる。
このように、dual_monoのオーディオストリームを構成するchannel1とchannel2とのそれぞれに対して相互に独立したA_SNを個別に与えることで、そのchannel1とchannel2とのそれぞれを相互に独立したオーディオプログラムとして個別に取り扱うことが可能になる。
図6は、本発明を適用した再生装置20(図28を参照して後述する)に装着される記録媒体上のアプリケーションフォーマットの例を示す図である。記録媒体は、後述する光ディスクの他、磁気ディスクや半導体メモリであってもよい。
アプリケーションフォーマットは、AV(Audio Visual)ストリームの管理のために、PlayListとClipの2つのレイヤを有している。ここでは、1つのAVストリームとそれに付随する情報であるClipインフォメーションのペアを1つのオブジェクトと考え、それらをまとめてClipと称する。以下、AVストリームをAVストリームファイルとも称する。また、ClipインフォメーションをClipインフォメーションファイルとも称する。
一般的に、コンピュータ等で用いられるファイルはバイト列として扱われるが、AVストリームファイルのコンテンツは時間軸上に展開され、Clipのアクセスポイントは、主に、タイムスタンプでPlayListにより指定される。すなわち、PlayListとClipは、AVストリームの管理のためのレイヤである。
Clip中のアクセスポイントがタイムスタンプでPlayListにより示されている場合、Clip Informationファイルは、タイムスタンプから、AVストリームファイル中のデコードを開始すべきアドレス情報を見つけるために役立つ。
PlayListは、AVストリームの再生区間の集まりである。あるAVストリーム中の1つの再生区間はPlayItemと呼ばれ、それは、時間軸上の再生区間のIN点(再生開始点)とOUT点(再生終了点)のペアで表される。従って、PlayListは、図6に示されるように1つ、または複数のPlayItemにより構成される。
図6において、左から1番目のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側のClipに含まれるAVストリームの前半部分と後半部分がそれぞれ参照されている。また、左から2番目のPlayListは1つのPlayItemから構成され、それにより、右側のClipに含まれるAVストリーム全体が参照されている。さらに、左から3番目のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側のClipに含まれるAVストリームのある部分と、右側のClipに含まれるAVストリームのある部分がそれぞれ参照されている。
例えば、図6のディスクナビゲーションプログラムにより、そのときの再生位置を表す情報として、左から1番目のPlayListに含まれる左側のPlayItemが指定された場合、そのPlayItemが参照する、左側のClipに含まれるAVストリームの前半部分の再生が行われる。
ディスクナビゲーションプログラムは、PlayListの再生の順序や、PlayListのインタラクティブな再生をコントロールする機能を有する。また、ディスクナビゲーションプログラムは、各種の再生の実行をユーザが指示するためのメニュー画面を表示する機能なども有する。このディスクナビゲーションプログラムは、例えば、Java(登録商標)などのプログラミング言語で記述され、記録媒体上に用意される。
本実施の形態では、PlayListの中で、1つ以上のPlayItemの並びによって(連続するPlayItemにより)作られる再生パスをメインパス(Main Path)と称し、PlayListの中で、Main Pathに平行(並列)して、1つ以上のSub Pathの並びによって(非連続でもよいし、連続してもよいSubPlayItemにより)作られる再生パスをサブパス(Sub Path)と称する。すなわち、再生装置20(図28を参照して後述する)に装着される記録媒体上のアプリケーションフォーマットは、メインパスに関連付けられて(合わせて)再生されるサブパス(Sub Path)をPlayListの中に持つ。
図7は、メインパスとサブパスの構造を説明する図である。PlayListは、1つのメインパスと1つ以上のサブパスを持つことができる。1つのサブパスは、1つ以上のSubPlayItemの並びによって作られる。
図7の例の場合、PlayListは、3つのPlayItemの並びにより作られる1つのメインパスと、3つのサブパスを有している。メインパスを構成するPlayItemには、先頭から順番にそれぞれID(Identification)が付されている。具体的には、メインパスは、PlayItem_id=0、PlayItem_id=1、およびPlayItem_id=2のPlayItemからなる。また、サブパスにも先頭から順番にSubpath_id=0、Subpath_id=1、およびSubpath_id=2、とそれぞれIDが付されている。Subpath_id=0のサブパスには、1つのSubPlayItemが含まれ、Subpath_id=1のサブパスには、2つのSubPlayItemが含まれ、Subpath_id=2のサブパスには、1つのSubPlayItemが含まれる。
例えば、Subpath_id=1のサブパスは、映画のディレクターズカットなどに適用され、所定のAVストリームの部分にのみ、映画監督などのコメントが入っている場合が考えられる。
1つのPlayItemが参照するClip AVストリームファイルには、少なくともビデオストリームデータ(メイン画像データ)が含まれる。また、Clip AVストリームファイルに含まれるビデオストリーム(メイン画像データ)と同じタイミングで(同期して)再生されるオーディオストリームが1つ以上含まれてもよいし、含まれなくてもよい。さらに、Clip AVストリームファイルに含まれるビデオストリームと同じタイミングで再生されるビットマップ字幕ストリームが1つ以上含まれてもよいし、含まれなくてもよい。また、Clip AVストリームファイルに含まれるビデオストリームと同じタイミングで再生されるインタラクティブグラフィックスストリームが1つ以上含まれてもよいし、含まれなくてもよい。そして、Clip AVストリームファイルに含まれるビデオストリームと、ビデオストリームと同じタイミングで再生されるオーディオストリーム、ビットマップ字幕ストリームファイル、またはインタラクティブグラフィックスストリームが多重化されている。すなわち、1つのPlayItemが参照するClip AVストリームファイルには、ビデオストリームデータと、そのビデオストリームに合わせて再生される0個以上のオーディオストリーム、0個以上のビットマップ字幕ストリームデータ、および0個以上のインタラクティブグラフィックスストリームデータが多重化されている。
また、1つのSubPlayItemは、PlayItemが参照するClip AVストリームファイルとは異なるストリーム(別ストリーム)のオーディオストリームデータや字幕データを参照する。
メインパスのみを有するPlayListを再生する場合、ユーザによる音声切り替えや字幕切り替えという操作は、そのメインパスが参照するClipに多重化されているオーディオストリームとサブピクチャストリームの中からしか音声や字幕を選択することができない。これに対し、メインパスとサブパスを持つPlayListを再生する場合、そのメインパスが参照するClip AVストリームファイルに多重化されているオーディオストリームとサブピクチャストリームに加えて、SubPlayItemが参照するClipのオーディオストリームやサブピクチャストリームを参照することができる。
このように、1つのPlayListの中にSubPathを複数使用し、それぞれのSubPathがそれぞれSubPlayItemを参照する構成としたので、拡張性の高い、また、自由度の高いAVストリームを実現することができる。すなわち、後で、SubPlayItemを追加できる構成とすることができる。
さらに、本実施の形態では、上述した図5に示されるように、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれは相互に独立してストリームナンバーテーブルに個別にエントリーする(対応するA_SNが1つずつ与えられる)ことが可能である。換言すると、そのようなストリームナンバーテーブルを構築するために必要なSTN_table(図16を参照して後述する)に、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれを個別にエントリーすることが可能である。これにより、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれをあたかも1つのオーディオスオストリームとして取り扱うことが可能になり、その結果、PlayItemまたはSubPlayItemが、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれを個別に参照することが可能になる。即ち、ユーザの操作の観点に立つと、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれの音声についても、切り替え操作の対象とすることが可能になる。
図8は、メインパスとサブパスの例を説明する図である。図8においては、メインパスと同じタイミングで(AV同期して)再生されるオーディオの再生パスを、サブパスを使用して表している。
図8のPlayListには、メインパスとして、PlayItem_id=0である1つのPlayItemと、サブパスとして1つのSubPlayItemが含まれている。SubPlayItem()は、次に示すデータが含まれている。まず、PlayListの中のSub Path(サブパス)が参照するClipを指定するためのClip_Information_file_nameを含む。図8の例の場合、SubPlayItemによって、SubClip_entry_id=0のAuxiliary audio stream(オーディオストリーム)が参照されている。また、Clip(ここでは、Auxiliary audio stream)の中のSub Pathの再生区間を指定するためのSubPlayItem_IN_timeとSubPlayItem_OUT_timeを含む。さらに、Main pathの時間軸上でSub Pathが再生開始する時刻を指定するためのsync_PlayItem_idとsync_start_PTS_of_PlayItemを含む。図8の例の場合、sync_PlayItem_id=0とされ、sync_start_PTS_of_PlayItem=t1とされている。これにより、メインパスのPlayItem_id=0の時間軸上でSub Pathが再生を開始する時刻t1を指定することができる。すなわち、図8の例の場合では、メインパスの再生開始時刻t1とサブパスの開始時刻t1が同時刻であることを示している。
ここで、Sub Pathに参照されるオーディオのClip AVストリームは、STC不連続点(システムタイムベースの不連続点)を含んではならない。サブパスに使われるClipのオーディオサンプルのクロックは、メインパスのオーディオサンプルのクロックにロックされている。
換言すると、SubPlayItem()には、Sub Pathが参照するClipを指定する情報、Sub Pathの再生区間を指定する情報、およびMain pathの時間軸上でSub Pathが再生を開始する時刻を指定する情報が含まれている。Sub Pathに使われるClip AVストリームがSTCを含まないため、SubPlayItem()に含まれる情報(Sub Pathが参照するClipを指定する情報、Sub Pathの再生区間を指定する情報、およびMain pathの時間軸上でSub Pathが再生を開始する時刻を指定する情報)に基づいて、メインパスが参照するClip AVストリームとは異なるClip AVストリームのオーディオストリームを参照して、再生することができる。
なお、本実施の形態では、上述しように、オーディオストリームのタイプがdual_monoである場合、そのオーディオストリームのchannel1とchannel2とのそれぞれを相互に独立したオーディオストリームとして個別に取り扱うことが可能である。従って、オーディオストリームのタイプがdual_monoである場合には、ここで言う「Clip AVストリームのオーディオストリーム」とは、そのオーディオストリームのchannel1とchannel2とのうちの少なくとも一方を指す。少なくとも一方と記述したのは、後述するように、オーディオストリームのchannel1とchannel2との両者とも参照されて、同時に再生される(例えばchannel1は左側のスピーカから再生され、channel2は右側のスピーカから再生される)場合もあるからである。この段落に記載されている内容は、後述する図9乃至図11についても全く同様であるとする。
このように、PlayItemとSubPlayItemは、Clip AVストリームファイルをそれぞれ管理するものであり、ここでは、PlayItemが管理するClip AVストリームファイルとSubPlayItemが管理するClip AVストリームファイルは異なるファイルとなる。
なお、図8の例と同様にして、メインパスと同じタイミングで再生される字幕ストリーム再生パスを、サブパスを使用して表すこともできる。
図9は、メインパスとサブパスの別の例を説明する図である。図9においては、メインパスが、異なるタイミングで再生されるオーディオの再生パスを、サブパスを使用して表している。ここで、メインパスのPlayItemが参照するメインAVストリームファイルは、図8と同様であるので省略している。
例えば、メインパスを静止画のスライドショーとし、サブパスのオーディオパスをメインパスのBGM(バックグラウンドミュージック)として使う場合に、このような構成が利用される。すなわち、ユーザが、スライドショーの画像更新を再生装置(プレーヤ)へ指令したときに、BGMを途切れさせないで再生させる場合に利用される。
図9においては、メインパスにPlayItem_id=0,1,2が配置され、サブパスに1つのSubPlayItemが配置されている。そして、Sub Pathが、Clip(Auxiliary audio stream)の中のSub Pathの再生区間を指定するためのSubPlayItem_IN_timeとSubPlayItem_OUT_timeを含む。図9の例の場合、SubPlayItemによって、Clip(Auxiliary audio stream)が参照されている。図9と図8を比較するに、図9では、SubPlayItemにsync_PlayItem_idとsync_start_PTS_of_PlayItemを含まない。このことは、メインパスが参照するAVストリームの(ビデオデータの)タイミングとオーディオの再生タイミングは関係ないため、Main pathの時間軸上でSub Pathが再生を開始する時刻を指定する必要がないからである。すなわち、単にMain Pathが参照するAVストリームとSub Pathが参照するオーディオストリームを合わせて再生する、という情報だけあればよい。
なお、ここで、AVストリームに含まれるビデオストリームのデータとサブパスにより参照されるオーディオストリームのデータの再生のタイミングが異なると記載しているが、より詳細には、AVストリームに含まれるビデオストリームの再生のタイミングと、ビデオストリームの再生タイミングは合ってはいる(すなわち、ビデオストリームにオーディオストリームが関連付けられている)が、ビデオストリームの中の所定のフレームを再生中に、対応する音が再生される、という具体的な対応付けまでは行われていないことを示している。すなわち、図8の例では、ビデオストリームの再生タイミングと、オーディオストリームの再生タイミングが合っている上に、ビデオストリームの中の所定のフレームを再生中に、対応する音が再生される、という具体的な対応付けまで行われているが、図9の例では、ビデオストリームの再生タイミングと、オーディオストリームの再生タイミングが合っているが、具体的な対応付けまでは行われおらず、再生のタイミングは異なる。
図10は、メインパスとサブパスの別の例を説明する図である。図10においては、メインパスと同じタイミングで再生されるテキスト字幕(Interactive graphics stream)の再生パスを、サブパスを使用して表している。ここで、メインパスのPlayItemが参照するメインAVストリームファイルは、図8と同様であるので省略している。
この場合、テキスト字幕はMPEG−2システムの多重化ストリーム、あるいは、多重化ストリームではないデータファイルとして定義される。このデータファイルは、メインパスのビデオに同期して再生される台詞のテキストデータ(文字コードの並び)と、そのアトリビュートをまとめたファイルである。アトリビュートは、テキストデータをレンダリングするときに使うフォント種類、フォントの大きさ、文字の色などの情報である。
図10と図8を比較するに、図10においては、SubPlayItemによって、SubClip_entry_id=0,1,・・・,NのText based subtitle(テキスト字幕)を参照することができる。すなわち、1つのSubPlayItemで、同じタイミングで複数のテキスト字幕ファイルを参照する構造を有し、このSubPlayItemを再生する場合には、複数のテキスト字幕ファイルから1つのテキスト字幕ファイルが選ばれて再生される。例えば、複数の言語のテキスト字幕ファイルの中から、1つのテキスト字幕ファイルが選ばれて再生される。具体的には、SubClip_entry_id=0乃至Nの中から(ユーザの指令に基づいて)1つが選択され、そのIDが参照するText based subtitleが再生される。
なお、テキスト字幕ファイルに限らず、ビットマップ字幕ストリームファイル、トランスポートストリームファイル、各種のデータファイルなどについても同様に適用することができる。また、キャラクタのコードやそれをレンダリングする情報を含むデータファイルであっても、同様に適用することができる。
図11は、メインパスとサブパスの別の例を説明する図である。図11においては、メインパスが、異なるタイミングで再生されるインタラクティブグラフィックスストリーム(Interactive graphics stream)の再生パスを、サブパスを使用して表している。
図11と図9を比較するに、図11においては、SubPlayItemによって、SubClip_entry_id=0,1,・・・,NのInteractive graphics stream(インタラクティブグラフィックスストリーム)を参照することができる。すなわち、1つのSubPlayItemで、同じタイミングで複数のインタラクティブグラフィックスストリームファイルが参照される構造を有し、このSubPlayItemを再生する場合には、複数のインタラクティブグラフィックスストリームファイルから1つのインタラクティブグラフィックスストリームファイルが選ばれて再生される。具体的には、SubClip_entry_id=0乃至Nの中から(ユーザの指令に基づいて)1つが選択され、そのIDが参照するInteractive graphics streamが再生される。例えば、ユーザからの指令に基づいて、インタラクティブグラフィックスストリームの言語のうちの1つが選択され、選択された言語のインタラクティブグラフィックスストリームが再生される。
次に、図7乃至図11を用いて説明したメインパスとサブパスの構造を具体的に実現するためのデータ構造(シンタクス:Syntax)を説明する。
図12は、PlayList()のシンタクスを示す図である。
lengthは、このlengthフィールドの直後からPlayList()の最後までのバイト数を示す32ビットの符号なし整数である。lengthの後には、16ビットのreserved_for_future_useが用意される。number_of_PlayItemsは、PlayListの中にあるPlayItemの数を示す16ビットのフィールドである。例えば、図7の例の場合PlayItemの数は3個である。PlayItem_idの値は、PlayListの中でPlayItem()が現れる順番に0から割り振られる。例えば、図7、図9、または図11に示されるように、PlayItem_id=0,1,2が割り振られる。
number_of_SubPathsは、PlayListの中にあるSubPathの数(エントリー数)を示す16ビットのフィールドである。例えば、図7の例の場合、Sub Pathの数は3個である。SubPath_idの値は、PlayListの中でSubPath()が現れる順番に0から割り振られる。例えば、図7に示されるように、Subpath_id=0,1,2が割り振られる。その後のfor文では、PlayItemの数だけPlayItemが参照され、Sub Pathの数だけ、Sub Pathが参照される。
図12の別案として、図34に示すSyntaxも考えられる。図12では、SubPathの情報を格納したデータ構造SubPath()をPlayList()の中に設けたが、図34ではPlayList()とは独立したデータ構造としている。図34AのPlayList()には、Main pathのPlayItemだけが記述され、図34BのSubPaths()には、Sub Path,SubPlayItemが記述される。図34のようなデータ構造にしておくと、SubPaths()をPlayList()が格納されるファイルとは別のファイルに格納することができる。例えば、SubPath()が格納されたファイルとSubPathによって参照されている字幕ストリームファイルあるいはオーディオストリームファイル等をネットワークからダウンロードして、記録媒体に格納されているMain pathと同時に再生するという用途が考えられる。すなわち、SubPathの拡張がより容易に実現できる。PlayList()が格納されるファイルとSubPaths()が格納されるファイルとの関連付けは、例えばファイル名の一部を一致させることによって実現できる。
図13は、SubPath()のシンタクスを示す図である。
lengthは、このlengthフィールドの直後からSub Path ()の最後までのバイト数を示す32ビットの符号なし整数である。lengthの後には、16ビットのreserved_for_future_useが用意される。SubPath_typeは、SubPathのアプリケーション種類を示す8ビットのフィールドである。SubPath_typeは、例えば、Sub Pathがオーディオであるか、ビットマップ字幕であるか、テキスト字幕であるかなどの種類を示す場合に利用される。すなわち、図8乃至図11で上述したようなSub pathの種類を示す。SubPath_typeの後には、15ビットのreserved_for_future_useが用意される。is_repeat_SubPathは、SubPathの再生方法を指定する1ビットのフィールドであり、メインパスの再生の間にSubPathの再生を繰り返し行うか、またはSubPathの再生を1回だけ行うかを示すものである。例えば、図9や図11に示されるようなメインAVストリームとサブパスが指定するClipの再生タイミングが異なる場合などに利用される。Is_repeat_SubPathの後には、8ビットのreserved_for_future_useが用意される。number_of_SubPlayItemsは、1つのSubPathの中にあるSubPlayItemの数(エントリー数)を示す8ビットのフィールドである。例えば、number_of_SubPlayItemsは、図7のSubPath_id=0のSubPlayItemは1個であり、SubPath_id=1のSubPlayItemは2個である。その後のfor文では、SubPlayItemの数だけ、SubPlayItemが参照される。
図14は、SubPlayItem(i)のシンタクスを示す図である。
lengthは、このlengthフィールドの直後からSubPlayItem ()の最後までのバイト数を示す16ビットの符号なし整数である。
図14においては、SubPlayItemが1つのClip を参照する場合と、複数のClip を参照する場合に分けられている。
最初に、SubPlayItemが1つのClipを参照する場合について説明する。
SubPlayItemには、Clipを指定するためのClip_Information_file_ name[0]が含まれる。また、Clipのコーデック方式を指定するClip_codec_identifier[0]、reserved_for_future_use、マルチクリップの登録の有無を示すフラグであるis_multi_Clip_entries、STC不連続点(システムタイムベースの不連続点)に関する情報であるref_to_STC_id[0]を含む。is_multi_Clip_entriesのフラグが立っている場合、SubPlayItemが複数のClipを参照する場合のシンタクスが参照される。また、Clipの中にあるSub Pathの再生区間を指定するためのSubPlayItem_IN_timeとSubPlayItem_OUT_timeを含む。さらに、main pathの時間軸上でSub Pathが再生開始する時刻を指定するためsync_PlayItem_id と sync_start_PTS_of_PlayItemを含む。このsync_PlayItem_id と sync_start_PTS_of_PlayItemは、上述したように、図8と図10の場合(メインAVストリームとサブパスにより示されるファイルの再生タイミングが同じである場合)に使用され、図9と図11の場合(メインAVストリームとサブパスにより示されるファイルの再生タイミングが異なる場合)には使用されない。また、SubPlayItem_IN_time、SubPlayItem_OUT_time、sync_PlayItem_id、sync_start_PTS_of_PlayItemは、SubPlayItemが参照するClipにおいて共通に使用される。
次に、SubPlayItemが複数のClipを参照する場合(if(is_multi_Clip_entries==1b)である場合、すなわちマルチクリップの登録が行われている場合)について説明する。具体的には、図10や図11に示されるように、SubPlayItemが複数のClip を参照する場合を示す。
num_of_Clip_entriesは、Clipの数を示しており、Clip_Information_file_name[subclip_entry_id]の数が、Clip_Information_file_ name[0]を除く、Clipsを指定する。すなわち、Clip_Information_file_ name[0]を除く、Clip_Information_file_ name[1]、Clip_Information_file_ name[2]などのClipを指定する。また、SubPlayItemは、Clipのコーデック方式を指定するClip_codec_identifier[subclip_entry_id]、STC不連続点(システムタイムベースの不連続点)に関する情報であるref_to_STC_id[subclip_entry_id]、およびreserved_for_future_useを含む。
なお、複数のClipの間で、SubPlayItem_IN_time, SubPlayItem_OUT_time、sync_PlayItem_id、およびsync_start_PTS_of_PlayItemは共通して使われる。図10の例の場合、SubPlayItem_IN_time, SubPlayItem_OUT_time、sync_PlayItem_id、およびsync_start_PTS_of_PlayItemは、SubClip_entry_id=0乃至Nの間で共通して使用されるものであり、選択されたSubClip_entry_idに対するText based subtitleがこのSubPlayItem_IN_time, SubPlayItem_OUT_time、sync_PlayItem_id、およびsync_start_PTS_of_PlayItemに基づいて再生される。
ここで、subclip_entry_idの値は、SubPlayItemの中にあるClip_Information_file_name[subclip_entry_id]が現れる順番に1から割り振られる。また、Clip_Information_file_ name[0]のsubclip_entry_idは0である。
図15は、PlayItem()のシンタクスを示す図である。
lengthは、このlengthフィールドの直後からPlayItem()の最後までのバイト数を示す16ビットの符号なし整数である。Clip_Information_file_ name[0]は、PlayItemが参照するClipを指定するためのフィールドである。図8の例の場合、Clip_Information_file_ name[0]により、メインAVストリームが参照される。また、Clipのコーデック方式を指定するClip_codec_identifier[0]、reserved_for_future_use、is_multi_angle、connection_condition、STC不連続点(システムタイムベースの不連続点)に関する情報であるref_to_STC_id[0]を含む。さらに、Clipの中のPlayItemの再生区間を指定するためのIN_time と OUT_timeを含む。図8の例の場合、IN_time と OUT_timeにより、メインClipAVストリームファイルの再生範囲が表される。また、UO_mask_table()、PlayItem_random_access_mode、still_modeを含む。is_multi_angleが複数ある場合については、本発明と直接的には関係ないのでその説明を省略する。
PlayItem()の中のSTN_table()は、対象のPlayItemとそれに関連付けられて再生される1つ以上のSubPathが用意されている場合に、ユーザによる音声切り替えや字幕切り替えという操作が、そのPlayItemが参照するClipとこれらの1つ以上のSubPathが参照する参照するClipsの中から選ぶことができる仕組みを提供するものである。
図16は、STN_table()のシンタクスを示す図である。STN_table()は、PlayItemの属性として設定されている。
lengthは、このlengthフィールドの直後からSTN_table()の最後までのバイト数を示す16ビットの符号なし整数である。lengthの後には、16ビットのreserved_for_future_useが用意される。num_of_video_stream_entriesは、STN_table()の中でエントリーされる(登録される)video_stream_idが与えられるストリーム数を示す。video_stream_idは、ビデオストリームを識別するための情報であり、video_stream_numberは、ビデオ切り替えに使われる、ユーザから見えるビデオストリーム番号である。
num_of_audio_stream_entriesは、STN_table()の中でエントリーされるaudio_stream_idが与えられるストリーム数を示す。audio_stream_idは、オーディオストリームを識別するための情報であり、audio_stream_numberは、音声切り替えに使われるユーザから見えるオーディオストリーム番号である。
なお、本実施の形態では、上述したように、所定のオーディオストリームのタイプがdual_monoである場合には、そのchannel1とchannel2とのそれぞれを1つの独立したオーディオストリームとして個別に取り扱うことが可能である。ただし、このような個別の取り扱いを可能にするためには、このSTN_table()においては、そのchannel1とchannel2とのそれぞれは個別にエントリーされている必要、即ち、audio_stream_idが個別に付与されている必要がある。
即ち、詳細については後述するが、所定のオーディオストリームのchannel1については、audilio_stream_id=α(αは0乃至(number_of_audio_stream_entries 1)のうちの何れかの値)がそのchannel1のIDとして付与され、audilio_stream_id=αにおけるstream_attributes()のaudio_presentation_type(図18)として、7(=channel-1 of dual mono channel)(図23)が記述されている必要がある。また、所定のオーディオストリームのchannel2については、audilio_stream_id=β(βは、0乃至(number_of_audio_stream_entries-1)のうちの、αを除く何れかの値)がそのchannel2のIDとして付与され、audilio_stream_id=βにおけるstream_attributes()のaudio_presentation_typeとして、8(=channel-2 of dual mono channel)(図23)が記述されている必要がある。
さらに、dual_monoである所定のオーディオストリームのchannel1とchannel2とを併せて1つのオーディオストリームとして取り合う必要がある場合には、上述したchannel1とchannel2との個別のエントリーに加えてさらに、dual_monoである所定のオーディオストリームのエントリーが必要になる。dual_monoである所定のオーディオストリームのchannel1とchannel2とを併せて1つのオーディオストリームとして取り合うとは、例えば、左右のスピーカが存在する場合、channel1の音声を左側のスピーカから出力させると同時に、channel2の音声を右側のスピーカから出力させるような再生を行うことを言う。
ただし、このようなエントリーを行うためには、後述する図18のaudio_presentation_typeのreserveとして用意されている値のうちの何れか(例えば2)を、channel1とchannel2とを併せて1つのオーディオストリームとして取り合うタイプ(以下、このようなタイプをdual mono channelと称する)して割り当てる必要がある。そして、channel1とchannel2とを併せて1つのオーディオストリームとして扱う所定のオーディオストリームについては、audilio_stream_id=γ(γは0乃至(number_of_audio_stream_entries-1)のうちの、αとβとを除く何れかの値)が、その所定オーディオストリームのIDとして付与され、audilio_stream_id=γにおけるstream_attributes()のaudio_presentation_type(図18)として、dual mono channelが割り当てられている値(例えば2)が記述されている必要がある。
num_of_PG_txtST_stream_entriesは、STN_table()の中でエントリーされるPG_txtST_stream_idが与えられるストリーム数を示す。この中では、DVDのサブピクチャのようなビットマップ字幕をランレングス符号化したストリーム(PG, Presentation Graphics stream)とテキスト字幕ファイル(txtST)がエントリーされる。PG_txtST_stream_idは、字幕ストリームを識別するための情報であり、PG_txtST_stream_numberは、字幕切り替えに使われるユーザから見える字幕ストリーム番号(テキストサブタイトルストリームの番号)である。
num_of_IG_stream_entriesは、STN_table()の中でエントリーされる IG_stream_idが与えられるストリーム数を示す。この中では、インタラクティブグラフィックスストリームがエントリーされる。IG_stream_idは、インタラクティブグラフィックスストリームを識別するための情報であり、IG_stream_numberは、グラフィックス切り替えに使われるユーザから見えるグラフィックスストリーム番号である。
ここで、stream_entry()のシンタクスについて図17を参照して説明する。
typeは、上述したストリーム番号が与えられるストリームを一意に特定するために必要な情報の種類を示す8ビットのフィールドである。
type=1では、PlayItemによって参照されるClip(Main Clip)の中に多重化されている複数のエレメンタリストリームの中から1つのエレメンタリストリームを特定するために、パケットID(PID)が指定される。ref_to_stream_PID_of_mainClipが、このPIDを示している。すなわち、type=1では、メインClipAVストリームファイルの中のPIDを指定するだけでストリームが決定される。
type=2では、SubPathが一度にただ1つのエレメンタリストリームだけを多重化する1つのClipを参照する場合に、この1つのエレメンタリストリームを特定するために、そのSubPathのSubPath_idが指定される。ref_to_SubPath_idがこのSubPath_idを示している。type=2は、例えば、図9に示されるように、Sub Pathによって、1つのオーディオストリームしか参照されない場合、すなわち、SubPlayItemの中にClipが1つしかない場合に用いられる。
type=3では、SubPathが一度に複数個のClipsを参照し、それぞれのClipがただ1つのエレメンタリストリームだけを多重化する場合に、SubPathによって参照される1つのClip(Sub Clip)の1つのエレメンタリストリームを特定するために、そのSubPathのSubPath_idとClip idが指定される。ref_to_SubPath_idがこのSubPath_idを示し、ref_to_subClip_entry_idがこのClip idを示している。Type=3は、例えば、図10に示されるように、1つのSub Pathで複数のClip (Text based Subtitle)を参照しているような場合、すなわち、SubPlayItemの中にClipが複数ある場合に用いられる。
type=4では、SubPathが一度に複数個のClipsを参照し、それぞれのClipが複数のエレメンタリストリームを多重化する場合に、SubPathによって参照される1つのClip(Sub Clip)の複数のエレメンタリストリームの中から1つのエレメンタリストリームを特定するために、そのSubPathのSubPath_id、Clip id、およびパケットID(PID)が指定される。ref_to_SubPath_idがこのSubPath_idを示し、ref_to_subClip_entry_idがこのClip idを示し、ref_to_stream_PID_of_subClipがこのPIDを示している。SubPlayItemの中で複数のClipが参照され、さらにこのClipに複数のエレメンタリストリームが参照されている場合に用いられる。
このように、type(1乃至4のtype)を使うことで、PlayItemとそれに関連付けられて再生される1つ以上のSubPathが用意されている場合に、このPlayItemが参照するClipと1つ以上のSubPathが参照するClipの中から1つのエレメンタリストリームを特定することができる。なお、type=1はMain Pathが参照するClip(メインClip)を示しており、type=2乃至4はSub Pathが参照するClip(サブClip)を示している。
図16のSTN_table()の説明に戻って、ビデオストリームID (video_stream_id)のforループの中で、順番にstream_entry()ごとに特定される1つのビデオエレメンタリストリームに、0からvideo_stream_idが与えられる。なお、ビデオストリームID(video_stream_id)の代わりに、ビデオストリーム番号(video_stream_number)を用いるようにしてもよい。この場合、video_stream_numberは、0ではなく1から与えられる。すなわち、video_stream_idの値に1を加算したものがvideo_stream_numberである。ビデオストリーム番号は、ビデオ切り替えに使われる、ユーザから見えるビデオストリーム番号であるので、1から定義される。
同様に、オーディオストリームID (audio_stream_id)のforループの中で、順番にstream_entry()ごとに特定される1つのオーディオエレメンタリストリームに、0からaudio_stream_idが与えられる。なお、ビデオストリームの場合と同様に、オーディオストリームID(audio_stream_id)の代わりに、オーディオストリーム番号(audio_stream_number)を用いるようにしてもよい。この場合、audio_stream_numberは、0ではなく1から与えられる。すなわち、audio_stream_idの値に1を加算したものがaudio_stream_numberである。オーディオストリーム番号は、音声切り替えに使われる、ユーザから見えるオーディオストリーム番号であるので、1から定義される。
なお、本実施の形態では、所定のオーディオストリームのタイプがdual_monoである場合には、上述したように、そのchannel1とchannel2とのそれぞれを1つのオーディオエレメンタリストリームとして個別に取り扱うことを可能にするために、そのchannel1とchannel2とのそれぞれに対してaudio_stream_idがそれぞれ個別に与えられる。さらに、そのchannel1とchannel2とを1つに併せたオーディオストリームとして取り扱う必要がある場合には、その所定のオーディオストリームに対しても、channel1やchannel2とは別のaudio_stream_idが1つ与えられる。
同様に、字幕ストリームID (PG_txtST_stream_id)のforループの中で、順番にstream_entry()ごとに特定される1つのビットマップ字幕エレメンタリストリームまたはテキスト字幕に、0からPG_txtST_stream_idが与えられる。なお、ビデオストリームの場合と同様に、字幕ストリームID(PG_txtST_stream_id)の代わりに、字幕ストリーム番号(PG_txtST_stream_number)を用いるようにしてもよい。この場合、PG_txtST_stream_numberは、0ではなく1から与えられる。すなわち、PG_txtST_stream_idの値に1を加算したものがPG_txtST_stream_numberである。字幕ストリーム番号は、字幕切り替えに使われるユーザから見える字幕ストリーム番号(テキストサブタイトルストリームの番号)であるので、1から定義される。
同様に、グラフィックスストリームID (IG_stream_id)のforループの中で、順番にstream_entry()ごとに特定される1つのインタラクティブグラフィックスエレメンタリストリームに、0からIG_stream_idが与えられる。なお、ビデオストリームの場合と同様に、グラフィックスストリームID(IG_stream_id)の代わりに、グラフィックスストリーム番号(IG_stream_number)を用いるようにしてもよい。この場合、IG_stream_numberは、0ではなく1から与えられる。すなわち、IG_stream_idの値に1を加算したものがIG_stream_numberである。グラフィックスストリーム番号は、グラフィックス切り替えに使われるユーザから見えるグラフィックスストリーム番号であるので、1から定義される。
次に、図16のSTN_table()のstream_attribute()について説明する。
ビデオストリームID (video_stream_id)のforループの中のstream_attribute()は、stream_entry()ごとに特定される1つのビデオエレメンタリストリームのストリーム属性情報を与える。すなわち、このstream_attribute()には、stream_entry()ごとに特定される1つのビデオエレメンタリストリームのストリーム属性情報が記述されている。
同様に、オーディオストリームID(audio_stream_id)のforループの中のstream_attribute()は、stream_entry()ごとに特定される1つのオーディオエレメンタリストリームのストリーム属性情報を与える。すなわち、このstream_attribute()には、stream_entry()ごとに特定される1つのオーディオエレメンタリストリームのストリーム属性情報が記述されている。
なお、本実施の形態では、所定のオーディオストリームのタイプがdual_monoである場合には、上述したように、そのchannel1とchannel2(さらに必要に応じてchannel1とchannel2とを併せたオーディオストリーム)のそれぞれが、stream_entry()ごとに特定される1つのオーディオエレメンタリストリームとしてそれぞれ個別に取り扱われる。
同様に、字幕ストリームID(PG_txtST_stream_id)のforループの中のstream_attribute()は、stream_entry()ごとに特定される1つのビットマップ字幕エレメンタリストリームまたはテキスト字幕エレメンタリストリームのストリーム属性情報を与える。すなわち、このstream_attribute()には、stream_entry()ごとに特定される1つのビットマップ字幕エレメンタリストリームのストリーム属性情報が記述されている。
同様に、グラフィックスストリームID(IG_stream_id)のforループの中のstream_attribute()は、stream_entry()ごとに特定される1つのインタラクティブグラフィックスエレメンタリストリームのストリーム属性情報を与える。すなわち、このstream_attribute()には、stream_entry()ごとに特定される1つのインタラクティブグラフィックスエレメンタリストリームのストリーム属性情報が記述されている。
ここで、stream_attribute()のシンタクスについて図18を参照して説明する。
lengthは、このlengthフィールドの直後からstream_attribute()の最後までのバイト数を示す16ビットの符号なし整数である。
stream_coding_typeは、図19に示されるようにエレメンタリストリームの符号化タイプを示す。具体的には例えば、MPEG-2 video streamの場合には0x02が、HDMV LPCM audio streamの場合には0x80が、Dolby Digital(AC-3 )audio stream or Dolby Digital Plus audio streamの場合には0x81が、Dts audio stream or DTS-HDaudio streamの場合には0x82が、Dolby Lossless audio streamの場合には0x83が、Presentation graphics streamの場合には0x90が、Interactive graphics streamの場合には0x91が、Text subtitle streamの場合には0x92が、MPEG-4 AVC video streamの場合には0x1Bが、SMPTE VC-1 video streamの場合には0xEAが、それぞれstream_coding_typeに記述される。
video_formatは、図20に示されるようにビデオエレメンタリストリームのビデオフォーマットを示す。ビデオエレメンタリストリームのビデオフォーマットとしては、480i、576i、480p、1080i、720p、および1080pが記述される。
frame_rateは、図21に示されるように、ビデオエレメンタリストリームのフレームレートを示す。ビデオエレメンタリストリームのフレームレートとしては、24000/1001、24、25、30000/1001、50、および60000/1001が記述される。
aspect_ratioは、図22に示されるようにビデオエレメンタリストリームのアスペクト比情報を示す。ビデオエレメンタリストリームのアスペクト比情報としては、4:3 display aspect ratio、および16:9 display aspect ratioが記述される。
audio_presentation_typeは、オーディオエレメンタリストリームのプレゼンテーションタイプを示す。オーディオエレメンタリストリームのプレゼンテーションタイプとは、再生(提示)対象のオーディオエレメンタリストリームのタイプを示す情報(以下、タイプ情報と称する)であって、本実施の形態では、図23に示される0乃至15のうちの何れかの値がタイプ情報としてaudio_presentation_typeに記述される。
即ち、audio_presentation_typeに1が記述されている場合には、オーディオエレメンタリストリームのプレゼンテーションタイプはsingle mono channelであることを示す。
audio_presentation_typeに3が記述されている場合には、オーディオエレメンタリストリームのプレゼンテーションタイプはstereo(2-channel)であることを示す。
audio_presentation_typeに6が記述されている場合には、オーディオエレメンタリストリームのプレゼンテーションタイプはmulti-channel (例えば5.1ch等)であることを示す。
audio_presentation_typeに7が記述されている場合には、オーディオエレメンタリストリームのプレゼンテーションタイプはchannel-1 of dual mono channelであること、即ち、即そのオーディオエレメンタリストリームを構成するchannel1とchannel2とのうちのchannel1のみを再生するタイプであることを示す。
audio_presentation_typeに8が記述されている場合には、オーディオエレメンタリストリームのプレゼンテーションタイプはchannel-2 of dual mono channelであること、即ち、そのオーディオエレメンタリストリームを構成するchannel1とchannel2とのうちのchannel2のみを再生するタイプであることを示す。
なお、audio_presentation_typeのそれ以外の値は予備(reserved)として設けられている。従って、例えば上述したように、オーディオエレメンタリストリームのプレゼンテーションタイプとしてdual mono channel(channel1とchannel2とを同時に再生するタイプ)を定義したい場合には、この予備(reserved)として設けられている値のうちの所定の1つ(例えば2)を、dual mono channelに割り当てればよい。
sampling_frequencyは、図24に示されるようにオーディオエレメンタリストリームのサンプリング周波数を示す。オーディオエレメンタリストリームのサンプリング周波数としては、48kHz、および96kHzが記述される。
audio_language_codeは、オーディオエレメンタリストリームの言語コード(日本語、韓国語、中国語など)を示す。
PG_language_codeは、ビットマップ字幕エレメンタリストリームの言語コード(日本語、韓国語、中国語など)を示す。
IG_language_code、インタラクティブグラフィックスエレメンタリストリームの言語コード(日本語、韓国語、中国語など)を示す。
textST_language_codeは、テキスト字幕エレメンタリストリームの言語コード(日本語、韓国語、中国語など)を示す。
character_codeは、図25に示されるようにテキスト字幕エレメンタリストリームのキャラクタコードを示す。テキスト字幕エレメンタリストリームのキャラクタコードとしては、Unicode V1.1(ISO 10646-1)、Shift JIS(Japanese)、KSC 5601-1987 including KSC 5653 for Roman character(Korean)、GB 18030-2000(Chinese)、GB2312(Chinese)、およびBIG5(Chinese)が記述される。
以下に、図18のstream_attribute()のシンタクスについて、図18と、図19乃至図25を用いて具体的に説明する。
エレメンタリストリームの符号化タイプ(図18のstream_coding_type)がMPEG-2 video stream(図19)である場合、stream_attribute()には、そのエレメンタリストリームのビデオフォーマット(図20)、フレームレート(図21)、およびアスペクト比情報(図22)が含まれる。
エレメンタリストリームの符号化タイプ(図18のstream_coding_type)がHDMV LPCM audio、Dolby AC-3 audio、またはdts audio(図19)である場合、stream_attribute()には、そのオーディオエレメンタリストリームのプレゼンテーションタイプ情報(図23)、サンプリング周波数(図24)、および言語コードが含まれる。
エレメンタリストリームの符号化タイプ(図18のstream_coding_type)がPresentation graphics stream(図19)である場合、stream_attribute()には、そのビットマップ字幕エレメンタリストリームの言語コードが含まれる。
エレメンタリストリームの符号化タイプ(図18のstream_coding_type)がInteractive graphics stream(図19)である場合、stream_attribute()には、そのインタラクティブグラフィックスエレメンタリストリームの言語コードが含まれる。
エレメンタリストリームの符号化タイプ(図18のstream_coding_type)がText subtitle stream(図19)である場合、stream_attribute()には、そのテキスト字幕エレメンタリストリームのキャラクタコード(図25)、言語コードが含まれる。
なお、これらの属性情報はこれに限定されない。
このように、PlayItemとそれに関連付けられて再生される1つ以上のSubPathが用意されている場合に、このPlayItemが参照するClipと1つ以上のSubPathが参照するClipの中から、stream_entry()によって特定された1つのエレメンタリストリームの属性情報をstream_attribute()によって知ることができる。
再生装置は、この属性情報(stream_attribute())を調べることによって、そのエレメンタリストリームを自分自身が再生する機能を持っているか否かを調べることができる。また、再生装置は、この属性情報を調べることによって、再生装置の言語設定の初期情報に対応したエレメンタリストリームの選択することができる。
例えば、再生装置が、ビットマップ字幕エレメンタリストリームの再生機能だけを有し、テキスト字幕エレメンタリストリームの再生機能を有していない場合を想定する。この再生装置に対して、ユーザが言語切り替えを指示した場合、再生装置は、字幕ストリームID (PG_txtST_stream_id)のforループの中から、ビットマップ字幕エレメンタリストリームだけを順次選択して、再生する。
また、例えば、再生装置の言語設定の初期情報が日本語である場合を想定する。この再生装置に対して、ユーザが音声切り替えを指示した場合、再生装置は、オーディオストリームID (Audio stream id)のforループの中から、言語コードが日本語であるオーディオエレメンタリストリームだけを順次選択して、再生する。
このようにして、PlayItem()の中のSTN_table()は、このPlayItemとそれに関連付けられて再生される1つ以上のSubPathが用意されている場合に、ユーザによる音声切り替えや字幕切り替えという操作が、このPlayItemが参照するClipと1つ以上のSubPathが参照するClipの中から選ぶことができる仕組みを提供するようにしたので、メインAVストリームが記録されている、再生するAVストリームとは異なるストリームやデータファイルに対しても、インタラクティブな操作を行うことができる。
また、1つのPlayListの中にSubPathを複数使用し、それぞれのSubPathがそれぞれSubPlayItemを参照する構成としたので、拡張性の高い、また、自由度の高いAVストリームを実現することができる。すなわち、後で、SubPlayItemを追加できる構成とすることができる。例えば、Main Pathが参照するClipAVストリームファイルとこれに対応付けられるPlayListがあり、このPlayListが新たなSub Pathを追加したPlayListに書き換えられた場合、新たなPlayListに基づいて、Main Pathが参照するClipAVストリームファイルとともに、Main Pathが参照するClipAVストリームファイルとは異なるClipAVストリームファイルを参照して、再生を行うことができる。このように、拡張性を有する構成とすることができる。
さらに、本実施の形態では、上述したように、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれをSTN_table()に個別にエントリーすることが可能である。従って、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれも、ユーザによる音声切り替え操作の対象とすることができる。
ただし、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれを、ユーザによる音声切り替え操作の対象とするためには、Clipインフォメーションファイル(図6)に含まれるProgramInfo()として、例えば図26に示されるシンタックスを採用する必要がある。即ち、図26は、ProgramInfo()のシンタックスを説明する図である。
なお、ProgramInfo()とは、それが含まれているClipインフォメーションファイルに対応するAVストリームの内容を説明するための情報である。このAVストリームには、プログラムシーケンス(例えば図3の例ではMPEG2プログラムストリーム)が1以上含まれている。即ち、ProgramInfo()とは、1以上のプログラムシーケンスのそれぞれの内容を説明するための情報である。
lengthは、このlengthフィールドの直後からProgramInfo ()の最後までのバイト数を示す32ビットの符号なし整数である。lengthの後には、8ビットのreserved_for_word_alignが用意される。
number_of_program_sequencesは、ProgramInfo()内に定義されているプログラムシーケンスの数を示す8ビットの符号なし整数である。
その後のfor文では、number_of_program_sequences の数だけ、各プログラムシーケンスのそれぞれについての次のような情報が参照される。
即ち、SPN_program_sequence_start[i]は、i番目のプログラムシーケンスが開始するソースパケットナンバーを示す32ビット符号なし整数である。
program_map_PID[i]は、i番目のプログラムシーケンスに適応できるprogram_map_sectionを含んだトランスポートパケットのPIDの値を示す8ビット符号なし整数である。
number_of_streams_in_ps[i]は、i番目のプログラムシーケンスで定義されているエレメンタリストリームの数を示す8ビットの符号なし整数である。
なお、i番目のプログラムシーケンス内に、dual_monoのオーディオストリームが含まれているときには、number_of_streams_in_ps[i]では、そのdual_monoのオーディオストリームを構成するchannel1とchannel2とのそれぞれは1本のエレメンタリストリームとして個別に取り扱われる。従って、number_of_streams_in_ps[i]では、channel1とchannel2とのそれぞれは1本であるとしてカウントされる。さらに、channel1とchannel2とを併せたオーディオストリーム(dual mono channel)の取り扱いが必要な場合、そのchannel1とchannel2とを併せたオーディオストリーム(dual mono channel)も、channel1とchannel2とは別の1本のエレメンタリストリームとして取り扱われる。従って、number_of_streams_in_ps[i]では、そのchannel1とchannel2とを併せたオーディオストリーム(dual mono channel)も、channel1とchannel2とは別の1本としてカウントされる。
number_of_streams_in_ps[i]の後には、8ビットのreserved_for_future_useが用意される。そして、その後のfor文では、number_of_streams_in_ps[i]の数だけ、各エレメンタリストリームのそれぞれについての次の情報が参照される。この場合、参照されるべきエレメンタリストリームはstream_indexの値によって特定される。従って、上述したように、dual_monoのオーディオストリームについては、channel1、channel2、および、dual mono channelのそれぞれは、個別のstream_indexの値が付与されているので、1本のエレメンタリストリームとしてそれぞれ個別に取り扱われることなる。
stream_PID[i][stream_index]は、i番目のプログラムによって参照されるPMTに記述されている、stream_indexの値によって特定されるエレメンタリストリームのPID値を示す16ビット符号なし整数である。
StreamCodingInfo(i,stream_index)は、stream_PID[i][stream_index]に関連付けられているエレメンタリストリーム、即ち、stream_indexの値によって特定されるエレメンタリストリームの符号化情報である。
ここで、StreamCodingInfo(i,stream_index)のシンタックスについて図27を参照して説明する。即ち、図27は、StreamCodingInfo(i,stream_index)のシンタックスを説明する図である。
lengthは、このlengthフィールドの直後からStreamCodingInfo(i,stream_index)の最後までのバイト数を示す8ビットの符号なし整数である。
stream_coding_typeは、対象のストリーム番号(stream_index)で特定されるエレメンタリストリームの符号化タイプを示す。即ち、上述した図19に示される値のうちの所定の1つがstream_coding_typeに記述される。
このstream_coding_typeの後には、そのstream_coding_typeの値に応じて参照される各種情報が配置される。ただし、ここでは、本発明の目的のひとつである、dual_monoであるオーディオストリームのchannel1とchannel2とのそれぞれを音声切り替え操作の対象にするという目的を達成するために必要な情報についてのみ説明し、その他の情報の説明は省略する。即ち、この目的を達成するために必要な情報とは、対象のストリーム番号(stream_index)で特定されるエレメンタリストリームがオーディオストリームである場合に参照される情報、具体的には、stream_coding_typeが0x80,0x81,0x82,0x83のうちの何れかの場合に参照される情報である。そこで、以下、これらの情報についてのみ説明する。
audio_presentation_typeは、対象のストリーム番号(stream_index)で特定されるオーディオエレメンタリストリームのプレゼンテーションタイプを示す。即ち、本実施の形態では、上述した図23に示される0乃至15のうちの何れかの値がタイプ情報としてaudio_presentation_typeに記述される。
具体的には例えば、対象のストリーム番号(stream_index)で特定されるオーディオエレメンタリストリームが、dual_monoのオーディオエレメンタリストリームのchannel1である場合には、channel-1 of dual mono channelを示す7がaudio_presentation_typeに記述される。
また例えば、対象のストリーム番号(stream_index)で特定されるオーディオエレメンタリストリームが、dual_monoのオーディオエレメンタリストリームのchannel2である場合には、channel-2 of dual mono channelを示す8がaudio_presentation_typeに記述される。
さらに例えば、対象のストリーム番号(stream_index)で特定されるオーディオエレメンタリストリームが、dual mono channel(channel1とchannel2とを併せて取り扱うストリーム)である場合には、dual mono channnelを示す値(例えば2)がaudio_presentation_typeに記述される。
sampling_frequencyは、上述した図24に示されるオーディオエレメンタリストリームのサンプリング周波数を示す。また、audio_language_codeは、オーディオエレメンタリストリームの言語コード(日本語、韓国語、中国語など)を示す。
ISRC()は、ISO3901によって定義されているISRC-International Standard Recording Codeを示す12文字の情報である。
ISRC()の後には、32ビットのreserved_for_future_useが用意される。
次に、本発明を適用した再生装置について説明する。図28は、本発明を適用した再生装置20の構成例を示すブロック図である。この再生装置20は、上述したメインパスとサブパスを有するPlayListを再生する再生装置20である。
再生装置20には、ストレージドライブ31、スイッチ32、AVデコーダ部33、およびコントローラ34が設けられている。
図28の例の場合、最初に、コントローラ34がストレージドライブ31を介してPlayListファイルを読み出し、PlayListファイルの情報に基づいて、ストレージドライブ31を介してHDD、ブルーレイディスク、またはDVDなどの記録媒体からAVストリームやAVデータを読み出す。ユーザは、ユーザインターフェースを用いて、コントローラ34に対し、音声や字幕などの切り替えの指令を行うことができる。また、コントローラ34には、再生装置20の言語設定の初期情報が図示せぬ記憶部などから供給される。
PlayListファイルには、Main Path、Sub Pathの情報の他、STN_table()が含まれている。コントローラ34は、PlayListファイルに含まれるPlayItemが参照するメインClip AVストリームファイル(以下、メインClipと称する)、SubPlayItemが参照するサブClip AVストリームファイル(以下、サブClipと称する)、およびSubPlayItemが参照するテキストサブタイトルデータを、ストレージドライブ31を介して記録媒体などから読み出す。
また、コントローラ34は、自分自身(再生装置20)の再生機能に対応するエレメンタリストリームを選択し、再生するよう制御したり、再生装置20の言語設定の初期情報に対応するエレメンタリストリームだけを選択し、再生するよう制御する。
この場合、再生対象のオーディオストリームのタイプがdual_monoであるときには、コントローラ34は、そのオーディオストリームを構成するchannel1とchannel2とのうちの何れか一方のみを再生させたり(例えば左側のスピーカと右側のスピーカともに、channel1とchannel2とのうちの何れか一方のみを再生させたり)、両者を同時に再生させる(例えば左側のスピーカからchannel1を再生させるとともに、右側のスピーカからchannel2を再生させる)ように制御することができる。
AVデコーダ部33には、バッファ51乃至54、PIDフィルタ55、PIDフィルタ56、スイッチ57乃至59、バックグラウンドデコーダ71、MPEG(Moving Picture Experts Group)2ビデオデコーダ72、プレゼンテーショングラフィックスデコーダ73、インタラクティブグラフィックスデコーダ74、オーディオデコーダ75、Text-STコンポジション76、スイッチ77、バックグラウンドプレーン生成部91、ビデオプレーン生成部92、プレゼンテーショングラフィックスプレーン生成部93、インタラクティブグラフィックスプレーン生成部94、バッファ95、ビデオデータ処理部96、およびオーディオデータ処理部97が設けられている。
コントローラ34により読み出されたファイルデータは、図示せぬ復調、ECC復号部により、復調され、復調された多重化ストリームに誤り訂正が施される。スイッチ32は、復調され、誤り訂正が施されたデータを、コントローラ34からの制御に基づいて、ストリームの種類ごとに選択し、対応するバッファ51乃至54に供給する。具体的には、スイッチ32は、コントローラ34からの制御に基づいて、バックグラウンドイメージデータをバッファ51に供給し、メインClipのデータをバッファ52に供給し、サブClipのデータをバッファ53に供給し、Text-STのデータをバッファ54に供給するようスイッチ32を切り替える。バッファ51は、バックグラウンドイメージデータをバッファリングし、バッファ52は、メインClipのデータをバッファリングし、バッファ53は、サブClipのデータをバッファリングし、バッファ54は、Text-STデータをバッファリングする。
メインClipは、ビデオとオーディオとビットマップ字幕(Presentation Graphics stream)とインタラクティブグラフィックスのうち、ビデオに加えて1つ以上のストリームを多重化したストリーム(例えばトランスポートストリーム)である。サブClipは、オーディオとビットマップ字幕(Presentation Graphics stream)とインタラクティブグラフィックスとオーディオのうち、1つ以上のストリームを多重化したストリームである。なお、テキストサブタイトルデータファイル(Text-ST)のデータは、トランスポートストリームのような多重化ストリームの形式であっても、そうでなくてもよい。
また、メインClipとサブClipおよびテキストサブタイトルデータを、ストレージドライブ31(記録媒体)から読み出すときに、それぞれのファイルを時分割に交互に読み出しても良いし、または、サブClipやテキストサブタイトルデータをメインClipから読み出す前に、すべてバッファ(バッファ53またはバッファ54)へプリロードしてもよい。
再生装置20は、これらのファイルのデータを、ストレージドライブ31を介して記録媒体から読み出し、ビデオ、ビットマップ字幕、インタラクティブグラフィックス、およびオーディオを再生する。
具体的には、メインClip用リードバッファであるバッファ52から読み出されたストリームデータは、所定のタイミングで、後段のPID(パケットID)フィルタ55へ出力される。このPIDフィルタ55は、入力されたメインClipをPID(パケットID)に応じて、後段の各エレメンタリストリームのデコーダへ振り分けて出力する。すなわち、PIDフィルタ55は、ビデオストリームをビデオデコーダ72に供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームをオーディオデコーダ75への供給元となるスイッチ59に供給する。
プレゼンテーショングラフィックスストリームは、例えば、ビットマップの字幕データであり、テキストサブタイトルデータは、例えば、テキスト字幕データである。
サブClip用リードバッファであるバッファ53から読み出されたストリームデータは、所定のタイミングで、後段のPID(パケットID)フィルタ56へ出力される。このPIDフィルタ56は、入力されたサブClipをPID(パケットID)に応じて、後段の各エレメンタリストリームのデコーダへ振り分けて出力する。すなわち、PIDフィルタ56は、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームをオーディオデコーダ75への供給元となるスイッチ59に供給する。
バックグラウンドイメージデータをバッファリングするバッファ51から読み出されたデータは、所定のタイミングでバックグラウンドデコーダ71に供給される。バックグラウンドデコーダ71は、バックグラウンドイメージデータをデコードし、デコードしたバックグラウンドイメージデータをバックグラウンドプレーン生成部91に供給する。
PIDフィルタ55により振り分けられたビデオストリームは、後段のビデオデコーダ72に供給される。ビデオデコーダ72は、ビデオストリームをデコードし、デコードしたビデオデータをビデオプレーン生成部92へ出力する。
スイッチ57は、PIDフィルタ55から供給されたメインClipに含まれるプレゼンテーショングラフィックスストリームと、サブClip に含まれるプレゼンテーショングラフィックスストリームのうちのいずれか1つを選択し、選択したプレゼンテーショングラフィックスストリームを、後段のプレゼンテーショングラフィックスデコーダ73に供給する。プレゼンテーショングラフィックスデコーダ73は、プレゼンテーショングラフィックスストリームをデコードし、デコードしたプレゼンテーショングラフィックスストリームのデータをプレゼンテーショングラフィックスプレーン生成部93への供給元となるスイッチ77に供給する。
また、スイッチ58は、PIDフィルタ55から供給されたメインClipに含まれるインタラクティブグラフィックスストリームと、サブClip に含まれるインタラクティブグラフィックスストリームのうちのいずれか1つを選択し、選択したインタラクティブグラフィックスストリームを、後段のインタラクティブグラフィックスストリームデコーダ74に供給する。すなわち、インタラクティブグラフィックスデコーダ74へ同時に入力されるインタラクティブグラフィックスストリームは、メインClipまたはサブClipのどちらかから分離されたストリームである。インタラクティブグラフィックスデコーダ74は、インタラクティブグラフィックスストリームをデコードし、デコードしたインタラクティブグラフィックスストリームのデータを、インタラクティブグラフィックスプレーン生成部94に供給する。
さらに、スイッチ59は、PIDフィルタ55から供給されたメインClipに含まれるオーディオストリームと、サブClip に含まれるオーディオストリームのうちのいずれか1つを選択し、選択したオーディオストリームを、後段のオーディオデコーダ75に供給する。すなわち、オーディオデコーダ75へ同時に入力されるオーディオストリームは、メインClipまたはサブClipのどちらかから分離されたストリームである。オーディオデコーダ75は、オーディオストリームをデコードし、デコードしたオーディオストリームのデータをオーディオデータ処理部97に供給する。
この場合、オーディオデコーダ75は、デコードしたオーディオストリームのタイプがdual_monoであったときには、コントローラ34の制御に基づいて、そのオーディオストリームを構成するchannel1とchannel2とのうちの少なくとも一方を抽出して、オーディオデータ処理部97に供給する。
換言すると、コントローラ34は、PlayListファイルのSTN_table()のうちの、再生対象のオーディオストリームのaudio_stream_idにおけるaudio_presentation_type(図18)の記述値に基づいて、そのオーディオストリームを構成するchannel1とchannel2とのうちの何れのオーディオデータを抽出するのかを認識し、認識した方(ただし両方となる場合もある)のオーディオデータをオーディオデコーダ75が抽出するように制御する。
具体的には例えば、上述した図23に示されるように、例えばaudio_presentation_typeに7(=channel-1 of dual mono channel)が記述されていた場合、再生対象のオーディオストリームを構成するchannel1とchannel2とのうちのchannel1のみが抽出される。例えばaudio_presentation_typeに8(=channel-2 of dual mono channel)が記述されていた場合、再生対象のオーディオストリームを構成するchannel1とchannel2とのうちのchannel2のみが抽出される。
また例えば、audio_presentation_typeにdual mono channelを示す値(例えば2)が記述されていた場合、再生対象のオーディオストリームを構成するchannel1とchannel2との両者が抽出される。
また、スイッチ32により選択されたサウンドデータは、バッファ95に供給され、バッファリングされる。バッファ95は、所定のタイミングでサウンドデータをオーディオデータ処理部97に供給する。サウンドデータは、この場合、メニュー選択などによる効果音のデータである。
テキストサブタイトル用リードバッファであるバッファ54から読み出されたデータは、所定のタイミングで、後段のテキストサブタイトルコンポジション(デコーダ)76へ出力される。テキストサブタイトルコンポジション76は、Text-STデータをデコードし、スイッチ77に供給する。
スイッチ77は、プレゼンテーショングラフィックスデコーダ73によりデコードされたプレゼンテーショングラフィックスストリームと、Text-ST(テキストサブタイトルデータ)のうち、いずれかを選択し、選択したデータをプレゼンテーショングラフィックスプレーン生成部93に供給する。すなわち、プレゼンテーショングラフィックスプレーン93へ同時に供給される字幕画像は、プレゼンテーショングラフィックスデコーダ73またはテキストサブタイトル(Text-ST)コンポジション76のうちのいずれかの出力である。また、プレゼンテーショングラフィックスデコーダ73へ同時に入力されるプレゼンテーショングラフィックスストリームは、メインClipまたはサブClipのいずれかから分離されたストリームである(スイッチ57により選択される)。したがって、プレゼンテーショングラフィックスプレーン93へ同時に出力される字幕画像は、メインClipからのプレゼンテーショングラフィックスストリーム、またはサブClipからのからのプレゼンテーショングラフィックスストリーム、またはテキストサブタイトルデータのデコード出力である。
バックグラウンドプレーン生成部91は、バックグラウンドデコーダ71から供給されたバックグラウンドイメージデータに基づいて、例えば、ビデオ画像を縮小表示した場合に壁紙画像となるバックグラウンドプレーンを生成し、これを、ビデオデータ処理部96に供給する。ビデオプレーン生成部92は、ビデオデコーダ72から供給されたビデオデータに基づいて、ビデオプレーンを生成し、これをビデオデータ処理部96に供給する。プレゼンテーショングラフィックスプレーン生成部93は、スイッチ77により選択され、供給されたデータ(プレゼンテーショングラフィックスストリームまたはテキストサブタイトルデータ)に基づいて、例えば、レンダリング画像であるプレゼンテーショングラフィックスプレーンを生成し、これをビデオデータ処理部96に供給する。インタラクティブグラフィックスプレーン生成部94は、インタラクティブグラフィックスデコーダ74から供給されたインタラクティブグラフィックスストリームのデータに基づいて、インタラクティブグラフィックスプレーンを生成し、これをビデオデータ処理部96に供給する。
ビデオデータ処理部96は、バックグラウンドプレーン生成部91からのバックグラウンドプレーン、ビデオプレーン生成部92からのビデオプレーン、プレゼンテーショングラフィックスプレーン生成部93からのプレゼンテーショングラフィックスプレーン、およびインタラクティブグラフィックスプレーン生成部94からのインタラクティブグラフィックスプレーンを合成し、ビデオ信号として出力する。また、オーディオデータ処理部97は、オーディオデコーダ75からのオーディオデータと、バッファ95からのサウンドデータを合成し、音声信号として出力する。
これらのスイッチ57乃至59、並びにスイッチ77は、ユーザインターフェースを介するユーザからの選択、または、対象となるデータが含まれるファイル側に基づいて、スイッチを切り替える。具体的には、サブClip AVストリームファイルのみにしか、オーディオストリームが含まれていない場合、スイッチ59はサブ側にスイッチを切り替える。
以上、本発明を適用した再生装置の一実施の形態として図28の再生装置20について説明した。ただし、本発明は、図28の再生装置20以外の再生装置にも当然ながら適用可能である。即ち、本発明を適用した再生装置は、図28の実施の形態に限定されず、様々な実施の形態を取ることが可能である。
例えば、図28の例では、オーディオデコーダ75から出力されたオーディオデータと、バッファ95から出力されたサウンドデータとのミキシング(Audio Mixing)が前提とされていたため、バッファ95とオーディオデータ処理部97とが設けられている。従って、このミキシングが不要である場合には、バッファ95とオーディオデータ処理部97とは省略可能である。
この場合、dual_monoのオーディオストリームを構成するchannel1とchannel2との抽出については、図28の例と同様にAVデコーダ部33の内部のオーディオデコーダ75で行ってもよいし、AVデコーダ部33の外部で行ってもよい。後者のときには、オーディオデコーダ75は、dual_monoのオーディオストリームをそのまま(channel1とchannel2との両者をそのまま)、AVデコーダ部33の外部の所定の出力先に出力することができる。ただしこのとき、その所定の出力先が、channel1とchannel2とのうちの何れを再生するのかを制御する必要がある。また、この制御の実現のためには、コントローラ34が所定の制御情報を出力先に供給する必要がある。
また、ミキシング(Audio Mixing)の対象(組み合わせ方)は、オーディオデータとサウンドデータとに限定されず、例えば第1のオーディオデータと第2のオーディオデータとであってもよい。この場合、図示はしないが、再生装置には、例えばオーディオデコーダ75と基本的に同様の機能と構成を有する2つのオーディオデコーダと、それらの2つのオーディオデコーダのそれぞれによりデコードされた結果得られる第1のオーディオデータと第2のオーディオデータとをミキシングするオーディオデータ処理部とが設けられる。
この場合、2つのオーディオデコーダは何れも、自身がデコードしたオーディオストリームのタイプがdual_monoであったときには、そのオーディオストリームを構成するchannel1とchannel2とのうちの少なくとも一方を抽出して、オーディオデータ処理部に提供する。即ち、オーディオストリームを構成するchannel1若しくはchannel2、または、channel1とchannel2との両者を、ミキシング対象の第1のオーディオデータとすることができる。同様に、オーディオストリームを構成するchannel1若しくはchannel2、または、channel1とchannel2との両者を、ミキシング対象の第2のオーディオデータとすることができる。
次に、図28の例の再生装置20における再生処理を、図29乃至図31のフローチャートを参照して説明する。なお、この処理は、ユーザによりユーザインターフェースを介して、所定のAVストリームの再生が指令されたとき開始される。
ステップS11において、コントローラ34は、ストレージドライブ31を介して、記録媒体や図示せぬHDD(Hard Disk Drive)に記録されているPlayListファイルを読み出す。例えば、図12を用いて説明したPlayListのファイルが読み出される。
ステップS12において、コントローラ34は、メインClip、サブClip、およびテキストサブタイトルデータ(Text-STデータ)を読み出す。具体的には、コントローラ34は、図12を用いて説明したPlayListに含まれるPlayItemに基づいて、メインClipを読み出す。また、コントローラ34は、PlayListに含まれるSubPathで参照される、図13および図14を用いて説明したSubPlayItemに基づいて、サブClipと、テキストサブタイトルデータを読み出す。
ステップS13において、コントローラ34は、読み出したデータ(メインClip、サブClip、およびテキストサブタイトルデータ)を対応するバッファ51乃至54に供給するようスイッチ32を制御する。具体的には、コントローラ34は、バックグラウンドイメージデータをバッファ51に供給し、メインClipのデータをバッファ52に供給し、サブClipのデータをバッファ53に供給し、Text-STのデータをバッファ54に供給するようスイッチ32を切り替える。
ステップS14において、スイッチ32はコントローラ34からの制御に基づいて、スイッチ32を切り替える。これにより、バックグラウンドイメージデータはバッファ51に供給され、メインClipのデータはバッファ52に供給され、サブClipのデータはバッファ53に供給され、テキストサブタイトルデータはバッファ54に供給される。
ステップS15において、各バッファ51乃至54は、供給されたデータをそれぞれバッファリングする。具体的には、バッファ51は、バックグラウンドイメージデータをバッファリングし、バッファ52は、メインClipのデータをバッファリングし、バッファ53は、サブClipのデータをバッファリングし、バッファ54は、Text-STデータをバッファリングする。
ステップS16において、バッファ51は、バックグラウンドイメージデータをバックグラウンドデコーダ71に出力する。
ステップS17において、バッファ52はメインClipのストリームデータをPIDフィルタ55に出力する。
ステップS18において、PIDフィルタ55は、メインClip AVストリームファイルを構成するTSパケットに付されているPIDに基づいて、各エレメンタリストリームのデコーダへ振り分ける。具体的には、PIDフィルタ55は、ビデオストリームをビデオデコーダ72に供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームをオーディオデコーダ75への供給元となるスイッチ59に供給する。すなわち、ビデオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム、およびオーディオストリームには、それぞれ異なるPIDが付されている。
ステップS19において、バッファ53は、サブClipのストリームデータをPIDフィルタ56に出力する。
ステップS20において、PIDフィルタ56は、PIDに基づいて、各エレメンタリストリームのデコーダへ振り分ける。具体的には、PIDフィルタ56は、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームをオーディオデコーダ75への供給元となるスイッチ59に供給する。
ステップS21において、PIDフィルタ55およびPIDフィルタ56の後段のスイッチ57乃至59は、ユーザインターフェースを介するコントローラ34からの制御に基づいて、メインClip とサブClipのいずれかを選択する。具体的には、スイッチ57は、PIDフィルタ55から供給されたメインClipまたはサブClipのプレゼンテーショングラフィックスストリームを選択し、後段のプレゼンテーショングラフィックスデコーダ73に供給する。また、スイッチ58は、PIDフィルタ55から供給されたメインClipまたはサブClipのインタラクティブグラフィックスストリームを選択し、後段のインタラクティブグラフィックスストリームデコーダ74に供給する。さらに、スイッチ59は、PIDフィルタ55から供給されたメインClipまたはサブClipのオーディオストリームを選択し、後段のオーディオデコーダ75に供給する。
ステップS22において、バッファ54は、テキストサブタイトルデータをテキストサブタイトルコンポジション76に出力する。
ステップS23において、バックグラウンドデコーダ71は、バックグラウンドイメージデータをデコードし、これをバックグラウンドプレーン生成部91に出力する。
ステップS24において、ビデオデコーダ72は、ビデオストリームをデコードし、これをビデオプレーン生成部92に出力する。
ステップS25において、プレゼンテーショングラフィックスデコーダ73は、スイッチ57により選択され、供給されたプレゼンテーショングラフィックスストリームをデコードし、これを後段のスイッチ77に出力する。
ステップS26において、インタラクティブグラフィックスデコーダ74は、スイッチ58により選択され、供給されたインタラクティブグラフィックスストリームをデコードし、これを後段のインタラクティブグラフィックスプレーン生成部94に出力する。
ステップS27において、オーディオデコーダ75は、スイッチ59により選択され、供給されたオーティオデータをデコードし、これを後段のオーディオデータ処理部97に出力する。
なお、上述したように、オーディオデコーダ75は、このステップS27の処理でデコードしたオーディオストリームのタイプがdual_monoであったときには、コントローラ34の制御に基づいて、そのオーディオストリームを構成するchannel1とchannel2とのうちの少なくとも一方を抽出して、オーディオデータ処理部97に出力する。
ステップS28において、Text-STコンポジション76は、テキストサブタイトルデータをデコードし、これを後段のスイッチ77に出力する。
ステップS29において、スイッチ77は、プレゼンテーショングラフィックスデコーダ73またはText-STコンポジション76からのデータのいずれかを選択する。具体的には、スイッチ77は、プレゼンテーショングラフィックスデコーダ73によりデコードされたプレゼンテーショングラフィックスストリームと、Text-ST(テキストサブタイトルデータ)のうち、いずれか1つを選択し、選択したデータをプレゼンテーショングラフィックスプレーン生成部93に供給する。
ステップS30において、バックグラウンドプレーン生成部91は、バックグラウンドデコーダ71から供給されたバックグラウンドイメージデータに基づいて、バックグラウンドプレーンを生成する。
ステップS31において、ビデオプレーン生成部92は、ビデオデコーダ72から供給されたビデオデータに基づいて、ビデオプレーンを生成する。
ステップS32において、プレゼンテーショングラフィックスプレーン生成部93は、ステップS29の処理でスイッチ77により選択され、供給されたプレゼンテーショングラフィックスデコーダ73からのデータまたはText-STコンポジション76からのデータに基づいて、プレゼンテーショングラフィックスプレーンを生成する。
ステップS33において、インタラクティブグラフィックスプレーン生成部94は、インタラクティブグラフィックスデコーダ74から供給されたインタラクティブグラフィックスストリームのデータに基づいて、インタラクティブグラフィックスプレーンを生成する。
ステップS34において、バッファ95は、ステップS14の処理で選択され、供給されたサウンドデータをバッファリングし、所定のタイミングでオーディオデータ処理部97に供給する。
ステップS35において、ビデオデータ処理部97は、各プレーンのデータを合成し、出力する。具体的には、バックグラウンドプレーン生成部91、ビデオプレーン生成部92、プレゼンテーショングラフィックスプレーン生成部93、およびインタラクティブグラフィックスプレーン生成部94からのデータを合成し、ビデオデータとして出力する。
ステップS36において、オーディオデータ処理部97は、オーディオデータとサウンドデータを合成し、出力する。
図29乃至図31の処理により、PlayListに含まれるメインパスとサブパスによりメインClip、サブClip、およびテキストサブタイトルデータが参照され、再生される。メインパスとサブパスを設けるようにし、サブパスで、メインパスで指定するClip AVストリームファイルとは異なるClipを指定可能な構成としたので、メインパスのPlayItemが指すメインClipとは異なるClipであるサブClipのデータとメインClipのデータを一緒に(同じタイミングで)再生することができる。
その際、メインClipまたはサブClipから読み出されたオーディオストリームのタイプがdual_monoであった場合には、そのオーディオストリームのchannel1とchannel2とのうちの少なくとも一方を再生することができる。
なお、図29乃至図31において、ステップS16,ステップS17の処理は、その順番が逆で合ってもよいし、平行して実行されてもよい。また、ステップS18、ステップS20の処理も、その順番が逆で合ってもよいし、平行して実行されてもよい。さらに、ステップS23乃至ステップS28の処理も、その順番が逆で合ってもよいし、平行して実行されてもよい。また、ステップS30乃至ステップS33の処理も、その順番が逆で合ってもよいし、平行して実行されてもよい。さらに、ステップS35,ステップS36の処理も、その順番が逆で合ってもよいし、平行して実行されてもよい。すなわち、図28において、縦に同じ階層のバッファ51乃至54の処理、スイッチ57乃至59の処理、デコーダ71乃至76の処理、プレーン生成部91乃至94の処理、ビデオデータ処理部96およびオーディオデータ処理部97の処理は、それぞれ、平行して実行されてもよいし、その順番は問わない。
次に、音声(オーディオ)の切り替えが指示された場合の再生装置20における処理(以下、オーディオ切替処理とも称する)を、図32を参照して説明する。なお、この処理は、例えば、図29乃至図31の再生処理の実行中に実行される処理である。
ステップS51において、コントローラ34は、オーディオストリーム番号(IDでもよい)の順番リストを取得する。具体的には、コントローラ34は、図15を用いて説明したPlayItemのSTN_table()を参照し、さらに図16を用いて説明したSTN_table()にエントリーされているオーディオストリーム番号(ID)の順番のリストを取得する。この処理は、図29乃至図31の再生処理が開始されたときに実行される処理である。
ユーザによりユーザインターフェースを介して、音声切り替えの指令が行われた場合、ステップS52において、コントローラ34は、ユーザからの音声切り替えの指令を受け付ける。すなわち、図32において、ステップS51はあらかじめ実行されている処理であり、ユーザにより音声切り替えの指令が行われた場合に、ステップS52以降の処理が行われる。
ステップS53において、コントローラ34は、再生しているオーディオストリーム番号の次のオーディオストリーム番号を取得する。例えば、図10のSubClip_entry_id=0のオーディオストリーム(図10においては、Text based subtitleであるが、ここでは、オーディオストリームファイルに読み替える)が再生されていた場合、次のSubClip_entry_id=1に対応するオーディオストリームファイルの番号が取得される。
ステップS54において、コントローラ34は、取得した番号に対応するオーディオストリームを再生する機能を有するか否かを判定する。具体的には、コントローラ34は、stream_attribute()(図18)に記述されている内容に基づいて、取得した番号に対応するオーディオストリームを自分自身(再生装置20)が再生する機能を有するか否かを判定する。
ステップS54において、取得した番号に対応するオーディオストリームを再生する機能を有しないと判定された場合、処理はステップS55に進み、コントローラ34は、現在のストリーム番号の次のストリーム番号を取得する。すなわち、現在のストリーム番号のオーディオストリームを再生する機能を有さない場合には、そのストリーム番号は飛ばされ(再生対象とならず)、次のストリーム番号が取得される。そして、ステップS55の処理の後、処理はステップS54に戻り、それ以降の処理が繰り返される。すなわち、自分自身が再生する機能を有するオーディオストリームの番号が取得されるまで、処理が繰り返される。
ステップS54において、取得した番号に対応するオーディオストリームを再生する機能を有すると判定された場合、処理はステップS56において、コントローラ34は、取得した番号に対応するオーディオストリームがメインClipとサブClipのうちのどちらにあるかを調べる。例えば、図10の例の場合、取得されたSubClip_entry_id=1はSub Pathにより参照されるので、サブClipにあると判断される。
ステップS57において、コントローラ34は、所望のオーディオストリームを特定する。具体的には、取得した番号に対応するストリームの属するメインClipまたはサブClipの中の所望のオーディオストリームを特定する。
ステップS58において、コントローラ34は、所望のオーディオストリームが多重化されているClip(メインClipまたはサブClip)を読み出すようストレージドライブ31に指示する。ストレージドライブ31は、この指示に基づいて、対象となるClipを読み出す。
ステップS59において、コントローラ34は、読み出されたClipからオーディオストリームを再生するようAVデコーダ部33に指示する。
ステップS60において、AVデコーダ部33は、オーディオストリームをデコードし、オーディオ出力する。より詳細には、オーディオデコーダ75によりデコードされたオーディオデータと、バッファ95から出力されるサウンドデータが、オーディオデータ処理部97により処理され、オーディオ信号として出力される。
なお、上述したように、オーディオデコーダ75は、このステップS60の処理でデコードしたオーディオストリームのタイプがdual_monoであったときには、コントローラ34の制御に基づいて、そのオーディオストリームを構成するchannel1とchannel2とのうちの少なくとも一方を抽出して、オーディオデータ処理部97に出力する。
具体的には例えば、ステップS54の処理で再生機能を有すると判定されたオーディオストリームに対応する番号(その番号に対応するaudio_stream_id)におけるaudio_presentation_type(図23)に7(=channel-1 of dual mono channel)が記述されていたときには、デコードされたオーディオストリームを構成するchannel1とchannel2とのうちのchannel1のみが抽出されて、オーディオデータ処理部97に出力される。
例えば、ステップS54の処理で再生機能を有すると判定されたオーディオストリームに対応する番号(その番号に対応するaudio_stream_id)におけるaudio_presentation_typeに8(=channel-2 of dual mono channel)が記述されていたときには、デコードされたオーディオストリームを構成するchannel1とchannel2とのうちのchannel2のみが抽出されて、オーディオデータ処理部97に出力される。
また例えば、ステップS54の処理で再生機能を有すると判定されたオーディオストリームに対応する番号(その番号に対応するaudio_stream_id)におけるaudio_presentation_typeにdual mono channelを示す値(例えば2)が記述されていたときには、デコードされたオーディオストリームを構成するchannel1とchannel2との両者が抽出されて、オーディオデータ処理部97に出力される。
そして、channel1とchannel2とのうちのオーディオデコーダ75から出力されたオーディオデータと、バッファ95から出力されるサウンドデータとが、オーディオデータ処理部97により処理され、オーディオ信号として出力される。
この処理により、図30のステップS21における図28のスイッチ59の選択が決定される。すなわち、図32において対象となるClipがメインClipである場合、スイッチ59は、メイン側、すなわちPIDフィルタ55から供給されたオーディオストリームをオーディオデコーダ75に供給し、対象となるClipがサブClipである場合、スイッチ59は、サブ側、すなわち、PIDフィルタ56から供給されたオーディオストリームをオーディオデコーダ75に供給する。
このように、コントローラ34は、PlayItemのSTN_table()に基づいて、音声(オーディオ)の切り替えを制御することができる。
さらに、その音声の切り替えの対象として、dual_monoのオーディオストリームを加えること、具体的にはそれを構成するchannel1とchannel2とのそれぞれ、および、channel1とchannel2との両者を加えることが可能になる。
なお、図32の処理では、オーディオストリーム番号に基づいて、オーディオを切り替えるようにしたが、オーディオストリームID(audio_stream_id)に基づいて、オーディオを切り替えるようにしてもよい。この場合、オーディオストリーム番号から1を減算したものが、オーディオストリームIDとなる。
以上により、メインのAVストリームとは別のストリームやデータファイルでオーディオや字幕などを用意する場合に、PlayListの中にメインパスとサブパスを有する構成としたので、ユーザによる音声切り替えや字幕切り替えという操作が、メインAVストリームとは異なる別ストリームや別データファイルの中から選ぶことができる。
また、メインパスのPlayItemの中に、AVストリームファイルに多重化されているデータと、Sub Pathにより参照されるデータのtypeを定義するStream Number Definition Tableを設けるようにしたので、より、拡張性の高いストリームを実現することができる。
さらに、再生装置20は、STN_table()のstream_attributeを参照することで、自分自身が有する機能に対応するストリームだけを順次選択して再生することができる。
さらにまた、AVコンテンツの再生における音声の切り替え操作の対象として、dual_monoのオーディオストリームも加ええることができる。
なお、図28のストレージドライブ31が読み出すデータは、DVD(Digital Versatile Disc)などの記録媒体に記録されているデータであってもよいし、ハードディスクに記録されているデータであってもよいし、図示せぬネットワークを介してダウンロードしたデータであってもよいし、これらが組み合わされたデータでもよい。例えば、ダウンロードされ、ハードディスクに記録されたPlayListおよびサブClipと、DVDに記録されたメインClipAVストリームファイルに基づいて、再生されてもよい。また、例えば、DVDに記録されたClipAVストリームファイルをサブClipとするようなPlayListとメインClipがハードディスクに記録されている場合に、ハードディスクに記録されているPlayListに基づいて、メインClipとサブClipがそれぞれ、ハードディスクとDVDから読み出され再生されてもよい。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、上述した処理は、図33に示されるようなパーソナルコンピュータ500により実行される。
図33において、CPU(Central Processing Unit)501は、ROM(Read Only Memory)502に記憶されているプログラム、または、記憶部508からRAM(Random Access Memory)503にロードされたプログラムに従って各種の処理を実行する。RAM503にはまた、CPU501が各種の処理を実行する上において必要なデータなどが適宜記憶される。
CPU501、ROM502、およびRAM503は、内部バス504を介して相互に接続されている。この内部バス504にはまた、入出力インターフェース505も接続されている。
入出力インターフェース505には、キーボード、マウスなどよりなる入力部506、CRT,LCDなどよりなるディスプレイ、スピーカなどよりなる出力部507、ハードディスクなどより構成される記憶部508、並びに、モデム、ターミナルアダプタなどより構成される通信部509が接続されている。通信部509は、電話回線やCATVを含む各種のネットワークを介しての通信処理を行う。
入出力インターフェース505にはまた、必要に応じてドライブ510が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどによりなるリムーバブルメディア521が適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部508にインストールされる。
一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、図33に示されるように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されているリムーバブルメディア521よりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM502や記憶部508が含まれるハードディスクなどで構成される。
なお、本明細書において、コンピュータプログラムを記述するステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
20 再生装置, 31 ストレージドライブ, 32 スイッチ, 33 AVデコーダ部, 34 コントローラ, 51乃至54 バッファ, 55,56 PIDフィルタ, 57乃至59 スイッチ, 71 バックグラウンドデコーダ, 72 ビデオデコーダ, 73 プレゼンテーショングラフィックスデコーダ, 74 インタラクティブグラフィックスデコーダ, 75 オーディオデコーダ, 76 Text-STコンポジション, 77 スイッチ, 91 バックグラウンドプレーン生成部, 92 ビデオプレーン生成部, 93 プレゼンテーショングラフィックスプレーン生成部, 94 インタラクティブグラフィックスプレーン生成部, 95 バッファ 96 ビデオデータ処理部, 97 オーディオデータ処理部