以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の再生装置(例えば、図1の再生装置1)は、少なくとも1つのストリームを含むメインストリーム(例えば、プライマリストリーム)の時間軸上の位置を示す主の再生パス(例えば、メインパス)を含む第1の情報を含んで構成される再生管理情報(例えば、プレイリスト)を取得する取得手段(例えば、図1または図16のコントローラ21)と、前記取得手段により取得された前記再生管理情報を基に、再生される前記メインストリーム、および、前記メインストリームと同期して再生される、前記メインストリームとは異なるコーディング形式の画像データ(例えば、アニメーションデータ)を読み出す読み出し手段(例えば、スイッチ41)と、前記読み出し手段により読み出された前記画像データを保存する第1の保存手段(例えば、図16のプリロードバッファ61)と、前記第1の保存手段により保存されている前記画像データをデコードするデコード手段(例えば、図16のアニメーションデコーダ62)と、前記デコード手段によりデコードされた前記画像データを保存する第2の保存手段(例えば、図16のデコード済みオブジェクトバッファ63)と、前記第2の保存手段により、デコード済みの前記画像データの保存が終了した後、前記取得手段により取得された前記再生管理情報を基に、所定のカウンタ(例えば、STCカウンタ)を参照して、前記読み出し手段により読み出された前記メインストリームを再生する再生手段(例えば、図16の1stビデオデコーダ72−1、および、ビデオプレーン生成部92)と、前記メインストリームのフレーム単位で、前記再生手段による前記メインストリームの再生に同期させて、前記第2の保存手段により保存されているデコード済みの前記画像データとして、JPEG形式のデータであり、Java(登録商標)アプリケーションで再生可能なアニメーションデータであって、複数フレームにより構成されるアニメーションデータを出力する画像データ出力手段(例えば、図16のコンポジションバッファ64)と、前記再生手段が参照する前記カウンタを参照するとともに、前記再生管理情報に含まれる前記メインストリームの前記第1の情報に基づいて、前記第1の保存手段、前記デコード手段、前記第2の保存手段、および、前記画像データ出力手段の処理を制御する制御手段(例えば、図16のアニメーションスケジューラ65)とを備える。
前記取得手段は、前記制御手段が実行する処理に対応するAPIを呼び出すコマンドを含む制御情報(例えば、MovieObjectファイル)を更に取得し、前記コマンドが実行されて、前記APIが呼び出された場合、前記制御手段は、前記再生手段が参照する前記カウンタを参照するとともに前記第1の情報に基づいて、前記第1の保存手段、前記デコード手段、前記第2の保存手段、および、前記画像データ出力手段の処理を制御することができる。
前記再生手段により再生された前記メインストリームと合成する合成用画像データを生成する合成用画像データ生成手段(例えば、図16のインタラクティブグラフィックスプレーン生成部94)と、前記再生手段により再生された前記メインストリームと前記合成用画像データ生成手段により合成されて生成された前記合成用画像データの供給を受けて、再生出力する映像データを生成する再生出力手段(例えば、ビデオデータ処理部96)とを更に備えることができ、前記画像データ出力手段は、前記合成用画像データ生成手段にデコード済みの前記画像データを出力することができる。
前記合成用画像データ生成手段は、少なくとも2つ備えられ(例えば、図22のバックグラフィックスプレーン151およびフロントグラフィックスプレーン152)、第1の前記合成用画像データ生成手段が、前記合成用画像データを生成しているとき、第2の前記合成用画像データ生成手段は、生成された前記合成用画像データを前記再生出力手段に供給することができ、第2の前記合成用画像データ生成手段が、前記合成用画像データを生成しているとき、第1の前記合成用画像データ生成手段は、生成された前記合成用画像データを前記再生出力手段に供給することができる。
着脱可能な記録媒体から情報を再生して読み出す記録媒体再生手段(例えば、図1または図16の光ディスクドライブ22)を更に備えることができ、前記取得手段は、前記記録媒体再生手段により前記記録媒体から読み出された前記再生管理情報を取得することができる。
各種データ記憶する記憶手段(例えば、図1または図16のローカルストレージ24)を更に備えることができ、前記取得手段は、前記記憶手段に記憶されている前記再生管理情報を取得することができる。
着脱可能な記録媒体から情報を再生して読み出す記録媒体再生手段(例えば、図1または図16の光ディスクドライブ22)を更に備えることができ、前記読み出し手段は、前記記録媒体再生手段により前記記録媒体から読み出された前記メインストリーム、および、前記画像データを読み出すことができる。
各種データ記憶する記憶手段(例えば、図1または図16のローカルストレージ24)を更に備えることができ、前記読み出し手段は、前記記憶手段に記憶されている前記メインストリーム、および、前記画像データを読み出すことができる。
本発明の一側面の再生方法またはプログラムは、少なくとも1つのストリームを含むメインストリーム(例えば、プライマリストリーム)の時間軸上の位置を示す再生パス(例えば、メインパス)を含む第1の情報を含んで構成される再生管理情報(例えば、プレイリスト)を基に、再生される前記メインストリームを読み出し(例えば、図25のステップS103の処理)、前記再生管理情報を基に、前記メインストリームと同期して再生される、前記メインストリームとは異なるコーディング形式の画像データ(例えば、アニメーションデータ)を読み出して保存し(例えば、図28のステップS161の処理)、保存されている前記画像データをデコードし(例えば、図28のステップS162の処理)と、デコードされた前記画像データを保存し(例えば、図28のステップS163の処理)と、デコード済みの前記画像データの保存が終了した後、前記再生管理情報を基に、所定のカウンタ(例えば、STCカウンタ)を参照して、読み出された前記メインストリームを再生し(例えば、図25乃至図27のプライマリビデオストリームの再生に関する処理)、前記メインストリームのフレーム単位で、前記メインストリームの再生に同期させて、保存されているデコード済みの前記画像データとして、JPEG形式のデータであり、Java(登録商標)アプリケーションで再生可能なアニメーションデータであって、複数フレームにより構成されるアニメーションデータを出力し(例えば、図29のステップS207の処理)、前記カウンタを参照するとともに、前記再生管理情報に含まれる前記メインストリームの前記第1の情報に基づいて、前記画像データの保存、前記画像データのデコード、デコードされた前記画像データの保存、および、デコード済みの前記画像データの出力を制御するステップを含む。
以下、図を参照して、本発明の実施の形態について説明する。
図1は、本発明を適用した再生装置1の構成例を示すブロック図である。
コントローラ21は、予め用意されている制御プログラムを実行するか、または、光ディスクドライブ22を制御して光ディスク11に記録されている、または、ローカルストレージ24に記録されているナビゲーションプログラム(後述)を読み出し、メモリ23に展開して実行することで、再生装置1の全体の動作を制御する。例えば、コントローラ21は、光ディスク11が装着されたとき、所定のメニュー画面を外部の表示装置に表示させることができる。
光ディスクドライブ22は、コントローラ21による制御に従って光ディスク11からデータを読み出し、読み出したデータを、コントローラ21、メモリ23、または、デコーダ26に出力する。光ディスク11から読み出された情報が、ナビゲーションプログラムやPlayListなどであった場合、光ディスクドライブ22により読み出された情報は、コントローラ21、または、メモリ23に出力される。光ディスク11から読み出された情報が、AVストリームやテキストデータであった場合、光ディスクドライブ22により読み出された情報は、デコーダ26に出力される。
図2は、本発明を適用した再生装置1に装着される光ディスク11のアプリケーションフォーマットの例を示す図である。記録媒体は、光ディスク11の他、例えば、磁気ディスクや半導体メモリであってもよい。
アプリケーションフォーマットは、AV(Audio Visual)ストリームの管理のためにPlayListとClipの2つのレイヤをもつ。ここでは、1つのAVストリームまたはテキストデータとそれに付随する情報であるClip Informationのペアを1つのオブジェクトと考え、それらをまとめてClipと称する。以下、AVストリームのデータファイルをAVストリームファイルと称する。また、Clip InformationのデータファイルをClip Informationファイルと称する。
一般的に、コンピュータ等で用いられるファイルはバイト列として扱われるが、AVストリームファイルのコンテンツは時間軸上に展開され、Clipのアクセスポイントは、主に、タイムスタンプでPlayListにより指定される。
Clip中のアクセスポイントがタイムスタンプでPlayListにより示されている場合、Clip Informationファイルは、タイムスタンプから、AVストリームファイル中のデコードを開始すべきアドレス情報を見つけるために用いられる。
PlayListはAVストリームの再生区間を示す情報の集合である。あるAVストリーム中の1つの再生区間を示す情報はPlayItemと呼ばれ、PlayItemは、時間軸上の再生区間のIN点(再生開始点)とOUT点(再生終了点)のペアで表される。したがって、PlayListは、図2に示されるように1つ、または複数のPlayItemにより構成される。
図2において、左から1番目に図示されている第1のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側に図示される第1のClipに含まれるAVストリームの前半部分と後半部分がそれぞれ参照されている。また、左から2番目に図示されている第2のPlayListは1つのPlayItemから構成され、それにより、右側に図示されている第2のClipに含まれるAVストリーム全体が参照されている。更に、左から3番目に図示されている第3のPlayListは2つのPlayItemから構成され、その2つのPlayItemにより、左側に図示されている第1のClipに含まれるAVストリームの所定の部分と、右側に図示されている第2のClipに含まれるAVストリームの所定の部分とがそれぞれ参照されている。
ナビゲーションプログラム(Navigation program)は、PlayListの再生の順序や、PlayListのインタラクティブな再生をコントロールする機能を、コントローラ21に実行させるためのプログラムである。また、ナビゲーションプログラムは、各種の再生の実行をユーザが指示するためのメニュー画面を表示する機能なども有する。このナビゲーションプログラムは、例えば、Java(登録商標)などのプログラミング言語で記述され、光ディスク11などの記録媒体に記録される。例えば、ナビゲーションプログラムがコントローラ21により実行されて、そのときの再生位置を表す情報として、図2において左から1番目に図示される第1のPlayListに含まれる第1のPlayItemが指定された場合、そのPlayItemが参照する、左側に図示される第1のClipに含まれるAVストリームの前半部分の再生が行われる。
また、図2を用いて説明したPlayListには、PlayItemにより指定されるメインパス(Main Path)に加えて、図3に示されるようなサブプレイアイテム(Sub Play Item)を用いて指定されるサブパス(Sub path)の情報を含ませるようにすることもできる。SubPlayItemを定義すると、例えば、PlayItemにより指定されるClip(例えば、MPEG2トランスポートストリーム)に多重化されていない、独立したデータストリームをAVストリーム再生に同期して再生させることができる。
例えば、PlayItemにより指定されるメインパス(Main Path)のClip AVストリームに対応させて、テキスト字幕ファイル、および、レンダリングに必要となるフォントファイルから構成される字幕関連情報と、字幕関連情報の再生区間を指定したSubPlayItemを用意することで、Clip AVストリームの再生と同時に、テキスト字幕ファイルに記載されているデータに対応する字幕を、フォントファイルに記載されているフォントデータに基づいた表示フォントで、表示装置に表示させるようにすることができる。また、例えば、PlayItemにより指定されるメインパス(Main Path)のClip AVストリームに対応させて、他言語の吹き替え音声データと、吹き替え音声データに対応したSubPlayItemを用意することで、Clip AVストリームの再生と同時に、他言語の吹き替え音声データを再生出力することができる。
このように、SubPlayItemと、対応するデータ(clip)は、予め光ディスク11に記録されていても良いし、追加データ(アップロードデータ)として、ネットワーク2を介して、サーバ3からダウンロードされるものであっても良いし、または、リムーバブルメディア(例えば、後述するリムーバブルメディア28)を用いて取得することができるようにしても良い。このような追加データをサーバ3からダウンロードする場合の詳細については、図4を用いて後述する。
再び、図1の説明に戻る。
メモリ23は、コントローラ21が各種の処理を実行する上において必要なデータなどを適宜記憶する。ローカルストレージ24は、例えば、HDD(Hard Disk Drive)などより構成される。
インターネットインタフェース25は、有線または無線によりネットワーク2に接続されており、コントローラ21からの制御に従って、ネットワーク2を介して、サーバ3との間で通信を行い、サーバ3からダウンロードされたデータをローカルストレージ24に供給する。サーバ3からは、例えば、そのとき再生装置1に装着されている光ディスク11に記録されている、図2を用いて説明したデータをアップデートさせるデータがコンテンツとしてダウンロードされる。ローカルストレージ24は、サーバ3からネットワーク2経由でダウンロードしたコンテンツを記録することができる。
デコーダ26は、光ディスクドライブ22、または、ローカルストレージ24から供給されるAVストリーム、または、テキストデータをデコードし、得られたビデオ信号とオーディオ信号を外部の表示装置に出力する。表示装置においては、デコーダ26によりデコードされた信号に基づいて、例えば、光ディスク11に記録されているコンテンツの出力(映像の表示、音声の出力)が行われる。
操作入力部29は、例えば、ボタン、キー、タッチパネル、ジョグダイヤル、マウスなどの入力デバイスや、所定のリモートコマンダから送信される赤外線などの信号を受信する受信部により構成され、ユーザの操作入力を取得し、コントローラ21に供給する。
また、コントローラ21には、必要に応じてドライブ27も接続されており、ドライブ27には、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVDを含む)、光磁気ディスク(MD(登録商標)(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア28が装着される。
次に、再生装置1に装着された光ディスク11に記録されたデータ、および、ローカルストレージ24に記憶されたデータを再生する方法について説明する。
再生装置1はHDD(Hard Disk Drive)などよりなるローカルストレージ24を内部に備える。再生装置1は、有線または無線によりネットワーク2に接続されており、サーバ3からネットワーク2経由でダウンロードしたコンテンツを、このローカルストレージ24に記録することができる。サーバ3からは、例えば、そのとき再生装置1に装着されている光ディスク11に記録されている映画などのコンテンツをアップデートさせるデータをダウンロードすることができる。
ダウンロードされたコンテンツがローカルストレージ24に記録されている状態で、操作入力部29から、光ディスク11に記録されているコンテンツの再生が指示されたとき、コントローラ21は、光ディスク11に記録されているコンテンツと、ローカルストレージ24に記録されているコンテンツを関連付けて、コンテンツの再生処理を実行する。
ここで、光ディスク11に記録されているコンテンツと、ローカルストレージ24に記録されているコンテンツを関連付けて再生する方法について、図4を用いて説明する。
例えば、図2の光ディスク11がパッケージ販売されているメディアであり、ある映画コンテンツが記録されているものとする。また、その映画コンテンツの映像に重畳して表示させることが可能な字幕データファイルとして、英語のテキスト字幕ファイルのみが光ディスク11に記録されているものとする。
例えば、図4において、光ディスク11に記録されている、PlayListのPlayItemが参照するClip1のAVストリームは、映画コンテンツの映像を表示させ、対応する音声を再生させるためのストリームであり、PlayListのSubPlayItemが参照するClip2の字幕関連情報1は、映像の表示に併せて英語の字幕を表示させるためのテキスト字幕ファイルである。
この状態で、英語とは異なる言語の字幕を表示させて、光ディスク11に記録されている映画コンテンツを視聴したい場合、光ディスク11には英語とは異なる言語の字幕データが記録されていないことから、ユーザは、このままでは英語とは異なる言語の字幕データを表示させて、映画を視聴することができない。
そこで、ユーザは、再生装置1に、光ディスク11に記録されている映画の所望の言語のテキスト字幕ファイルをサーバ3からネットワーク2経由でダウンロードさせる(または、リムーバブルメディア28を用いて取得させる)。光ディスク11に予め記録されていない、例えば、アラビア語によるテキスト字幕ファイルのダウンロードが行われた(または、リムーバブルメディア28からローカルストレージ24にコピーされた)状態について説明する。
すなわち、ユーザが、光ディスク11に予め記録されているPlayListに対応する、アラビア語によるテキスト字幕ファイルのダウンロードを指示した場合、再生装置1においては、サーバ3に対するアクセスが行われ、光ディスク11に記録されているコンテンツをアップデートするものとして、そのサーバ3に用意されているファイルのダウンロードが行われる。
図4の例においては、アラビア語のテキスト字幕ファイル(字幕関連情報2)およびそれに付随するClip Informationファイルで構成されるClip3、光ディスク11に予め記録されている、例えば、映画コンテンツの映像Clipおよび音声Clip(AVストリームデータ)と英語のテキスト字幕ファイルに加えて、対応するClip3の字幕データの再生表示を制御することができるPlayListファイル(Updated PlayListファイル)、光ディスク11に記録されているものと比較してアップデートされた新規ナビゲーションプログラムファイルのダウンロードが行われ、それらがローカルストレージ24に記録される。
なお、Updated PlayListには、メインパスを表すPlayItem以外に、サブパスを表すSubPlayItem1およびSubPlayItem2が付加されている。Updated PlayListのPlayItemは、光ディスク11に記録されているAV Streamを含むClip1を参照するものであり、SubPlayItem1は、光ディスク11に記録されている字幕関連情報1を含むClip2を参照するものであり、SubPlayItem2は、Updated PlayListとともにサーバ3からダウンロードされた、アラビア語のテキスト字幕ファイルである字幕関連情報2を含むClip3を参照するものである。
図4の新規ナビゲーションプログラムは、再生区間としてUpdated PlayListのPlayItemとともに、SubPlayItem1またはSubPlayItem2を指定することができるものであり、これにより、例えば、所望の映像および音声データに対応付けて、光ディスク11に予め記録されている英語によるテキスト字幕ファイルにより定義される英語字幕、または、光ディスク11に予め記録されていない、アラビア語によるテキスト字幕ファイルにより定義されるアラビア語字幕のうち、ユーザの所望の言語の字幕を表示させることができる。
このように、サーバ3からのダウンロード(または、リムーバブルメディア28からのコピー)が行われることにより、再生装置1は、英語のテキスト字幕ファイルであるClip2と、光ディスク11に予め用意されていない、アラビア語のテキスト字幕ファイルであるClip3のいずれかを映画の字幕として再生表示することが可能となる。すなわち、ユーザは、表示装置に表示されるメニュー画面に記載される表示可能な字幕の言語から所望の言語を選択することで、英語とアラビア語のうちの所望する言語の字幕によって映画を視聴することができる。
なお、光ディスク11に記録されるAVストリームは、図5に示すような、MPEG2(Moving Picture Experts Group 2)トランスポートストリームの構造を有する。MPEG2トランスポートストリームは、整数個のAligned unitから構成される。Aligned unitの大きさは、6144バイト(2048×3バイト)であり、ソースパケットの第1バイト目から始まる。ソースパケットは、192バイト長である。1つのソースパケットは、TP_extra_headerとトランスポートパケットから構成される。TP_extra_headerは、4バイト長であり、またトランスポートパケットは、188バイト長である。1つのAligned unitは、32個のソースパケットから構成される。ビデオストリームやオーディオストリームのデータは、MPEG2 PES(Packetized Elementary Stream)パケットにパケット化されており、PESパケットは、トランスポートパケットにパケット化される。
図6は、図1のコントローラ21の機能構成例を示すブロック図である。
図6の各構成は、予め用意されている制御プログラムがコントローラ21により実行されることにより、または、光ディスク11に記録されているナビゲーションプログラムがコントローラ21により実行されることにより実現される。
メニュー画面表示制御部31は、光ディスク11に記録されているコンテンツの音声、または字幕の言語や、映像のアングルを選択するときにユーザにより操作されるボタンや、ダウンロードするアップデートファイルや、削除されるファイルを選択するときにユーザにより操作されるボタンなどを含むメニュー画面を外部の表示装置に表示させる。
操作入力取得部32は、操作入力部29から入力された、ユーザからの操作入力を示す信号を取得し、ユーザからの操作入力を示す信号を、メニュー画面表示制御部31、データ取得部33、ローカルストレージディレクトリ管理部34、または、再生制御部37のうちの対応する箇所に出力する。
データ取得部33は、図1のインターネットインタフェース25において行われる通信、または、ドライブ27によるリムーバブルメディア28との情報の授受を制御する。例えば、データ取得部33は、ユーザが指示したアップデートファイルをサーバ3からダウンロードして取得し、取得したファイルをローカルストレージディレクトリ管理部34に出力する。また、データ取得部33は、後述するファイルシステムマージ処理部36により、必要なファイルを示す情報の供給を受け、必要なファイルを、サーバ3からダウンロードして取得し、取得したファイルをローカルストレージディレクトリ管理部34に出力する。
ローカルストレージディレクトリ管理部34は、ローカルストレージ24のディレクトリを管理し、ローカルストレージ24に対するデータの書き込み、および、ローカルストレージ24からのデータの読み出し、および、ローカルストレージ24からのデータの削除を制御する。例えば、ローカルストレージディレクトリ管理部34の制御によりローカルストレージ24から読み出されたPlayListは、メモリ23に出力され、ローカルストレージ24から読み出されたAVストリームの音声データおよび映像データやテキスト字幕ファイルのテキストデータは、デコーダ26に出力される。また、ローカルストレージディレクトリ管理部34は、ファイルシステムマージ処理部36により、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムとのマージが行われる場合、ローカルストレージ24のファイルシステムに関する情報をファイルシステムマージ処理部36に出力する。
光ディスクディレクトリ管理部35は、光ディスク11のディレクトリを管理し、光ディスク11からの各データの読み出しを制御する。光ディスク11には識別情報であるauthor_idとdisc_idが設定されており、光ディスクディレクトリ管理部35の制御により、光ディスク11から読み出されたauthor_idとdisc_idは、データ取得部33とローカルストレージディレクトリ管理部34に出力される。また、光ディスクディレクトリ管理部35の制御により、光ディスク11から読み出されたPlayListは、メモリ23に出力され、光ディスク11から読み出されたAVストリームの音声データおよび映像データやテキスト字幕ファイルのテキストデータは、デコーダ26に出力される。また、光ディスクディレクトリ管理部35は、ファイルシステムマージ処理部36により、光ディスク11のファイルシステムと、ローカルストレージ24のファイルシステムとのマージが行われる場合、光ディスク11のファイルシステムに関する情報をファイルシステムマージ処理部36に出力する。author_idとdisc_idについては、後述する。
ファイルシステムマージ処理部36は、光ディスクディレクトリ管理部35から供給される光ディスク11のファイルシステムと、ローカルストレージディレクトリ管理部34から供給されるローカルストレージ24のファイルシステムをマージし、1つの仮想的なファイルシステムを生成する。ファイルシステムマージ処理部36は、マージすることで生成した仮想的なファイルシステムを再生制御部37に出力する。
また、ファイルシステムマージ処理部36は、ローカルストレージ24に記録されているいくつかのファイルが削除(消去、すなわち、データのdelete)された場合、そのいくつかのファイルの削除により、仮想ファイルシステムにおけるファイルのリンク構造(すなわち、図2乃至図4を用いて説明した様な、光ディスク11のアプリケーションフォーマットに基づいた、PlayListによるClipの再生のためのデータの連携)に不具合が発生するか否かを判断し、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生すると判断された場合、不具合の解消に必要なファイルを抽出し、データ取得部33に必要なファイルを示す情報を供給して、必要なファイルをダウンロードさせることができる。
更に、ファイルシステムマージ処理部36は、ローカルストレージ24に記録されているいくつかのファイルが削除されたことにより、例えば、仮想ファイルシステムにおいて、いずれのPlayListによっても再生されない(全てのPlayListによって指定されない)ファイルが発生した場合、このような不必要なファイルを削除することをローカルストレージディレクトリ管理部34に指令することができる。
なお、いくつかのファイルが削除されたことにより発生する不必要なファイルを削除するか否かをユーザにより設定可能なようにしても良い。
再生制御部37は、ファイルシステムマージ処理部36から供給される仮想ファイルシステムで指定されるナビゲーションプログラムを実行し、コンテンツの再生を制御する。具体的には、再生制御部37はメモリ23に供給され、記憶されたPlayListを参照し、ローカルストレージディレクトリ管理部34または光ディスクディレクトリ管理部35を制御して、光ディスク11またはローカルストレージ24に記録されているAVストリームの音声データ、映像データ、並びに、必要に応じて、テキスト字幕ファイルのテキストデータ、効果音の音声データ、または、アニメーションを表示させるための画像データ(アニメーションフレームのデータ)などを、仮想ファイルシステムに基づいて読み出させ、図1のデコーダ26を制御して、光ディスク11またはローカルストレージ24に記録されているAVストリームの音声データ、映像データ、並びに、必要に応じて、テキスト字幕ファイルのテキストデータ、効果音の音声データ、または、アニメーションを表示させるための画像データなどのデコード(再生)を行わせる。
ここで、ファイルシステムマージ処理部36により行われる、光ディスク11のファイルシステムと、サーバ3からダウンロードするなどによりローカルストレージ24に記録されたデータ群を管理するファイルシステムのマージについて説明する。このマージは、例えば、光ディスク11が再生装置に装着されたとき、光ディスク11に記録されているコンテンツの再生が指示されたとき、光ディスク11またはローカルストレージ24に記録されているいずれかのデータの入出力が指令されたとき、または、ユーザによりマージが指令されたときなどに行われる。
再生装置1のシステムが持つネイティブなファイルシステム(光ディスク11またはローカルストレージ24に実際に記録されているデータのファイルシステム)の上位レイヤとして、仮想ファイルシステムが定義される。すなわち、図7に示されるように、サーバ3から新たなデータをダウンロードして、ローカルディスク24に記録させたり、光ディスク11またはローカルストレージ24に実際に記録されているデータを再生する処理を実行するアプリケーションプログラム、または、そのアプリケーションプログラムを扱うユーザが認識可能なのは、上位レイヤである仮想ファイルシステムのみである。換言すれば、仮想ファイルシステムは、ネイティブなファイルシステムを抽象化し、再生装置1内の物理デバイスやオペレーティングシステムなどのネイティブな構造を隠蔽するために構築される。
仮想ファイルシステムの役割は、主に、物理デバイス(光ディスク11またはローカルストレージ24)におけるファイル/ディレクトリをマウントして、ユーザから認識される仮想ディスク(Virtual Disc)のファイルシステムを構成することと、アプリケーションプログラムに対して、構築された仮想ディスクへのファイルアクセスAPIを提供することである。
例えば、ユーザが、光ディスク11またはローカルストレージ24に記録されているいずれかのファイルへのアクセスを要求する操作入力を行った場合、図8に示されるように、アプリケーションプログラムには、仮想ファイルシステムのみしか認識できず、実際の物理デバイスである光ディスク11またはローカルストレージ24に記録されているローカルファイルシステム#1、ローカルファイルシステム#2、または、光ディスク11内のファイルシステムの構造は、アプリケーションプログラムと、アプリケーションプリグラムを取り扱うユーザから隠蔽され、仮想ファイルシステムを介して、アクセス可能なようになされている。
図8に示されるファイルアクセス要求を実行するために、再生装置1のアプリケーションプログラムは、仮想ファイルシステムが提供するファイル入出力のAPI(Application Programming Interface)を呼び出すことにより、ディスクドライブの物理的な構成やファイルシステムのソフトウェア構成などを意識することなく、光ディスク11またはローカルストレージ24に実際に記録されているデータにアクセスすることができる。すなわち、仮想ファイルシステムのAPIは、実際には、再生装置1の内部でネイティブなファイルシステムのAPIを呼び出している。
仮想ファイルシステムは各種のAPIを提供しており、例えば、指定したファイルを開くopen()、指定したファイルを閉じるclose()、指定したファイルの読み出し位置または書き込み位置を設定するseek()、指定したファイルの状態を取得するstat()、指定したファイルを読み出すread()、指定したファイルを書き込むwrite()などのAPIが提供される。再生制御部39などにより実行されるアプリケーションプログラムは、これらのAPIを利用して、光ディスク11またはローカルストレージ24に記録されているファイルを操作する。
また、仮想ファイルシステムは、ローカルストレージ24のディスク領域を分割管理する機能を持つ。ローカルストレージ24のディスク領域は、例えば、図9に示されるように、コンテンツの配給元(コンテンツオーサ)ごとに分割されたディレクトリ構造を有し、author_id直下のディレクトリであるdisc_id以下は、コンテンツオーサにより、フレキシブルなファイル/ディレクトリ構造を構成することができる。ローカルストレージ24に記憶されるデータが、ローカルストレージ24のディスク領域のどこに配置されるか、すなわち、ダウンロードされるファイルのファイル/ディレクトリ構造は、ダウンロードされるデータに含まれるメタデータ(後述するManifestデータ)の記述により指定される。
ローカルストレージ24のファイル/ディレクトリ構造において、ディレクトリを分割するauthor_idは、コンテンツ作成元を一意に識別するための識別子であり、disc_idは、author_idにより特定されたコンテンツ作成元に対して、光ディスク11を一意に識別するための識別子であり、それぞれ、ダウンロードされるデータのメタデータ(後述するManifestデータ)に含まれる情報である。メタデータ(Manifestデータ)並びに、author_idおよびdisc_idについては後述する。
これに対して、アプリケーションからアクセス可能な仮想ディスクのディレクトリ/ファイル構造は、光ディスク11のディレクトリ/ファイル構造に従うようになされている。すなわち、再生装置1に装着された光ディスク11に対して、対応するauthor_idおよびdisc_id以下のデータのファイル構造が、光ディスク11に記録されているデータのファイル構造とマージされ、光ディスク11のディレクトリ/ファイル構造に基づいたディレクトリ/ファイル構造を有する仮想ディスクの仮想ファイルシステムが構成される。
また、仮想ファイルシステムは、ディレクトリおよびファイルの管理機構のほかに、disc単位でメタデータ、すなわち、後述するManifestファイルを管理する機能を持つ。仮想ファイルシステムが、ネイティブなファイルシステムのファイルモデルに対して、メタデータのフィールドを定義する目的は、ユーザに対して、実際にローカルディスク24に記録されているファイルのパスまたはファイル名を提示するのではなく、コンテンツ内容を表現した名称を提供することと、ダウンロード処理において同一ファイルの二重更新を防止することと、仮想ファイルシステム内でのパス名称、すなわち、光ディスク11再生時におけるパス名称を定義することとの3つである。
そして、仮想ファイルシステムは、メタデータ管理のために、Manifestファイルとメタデータ操作手続きの、二つの機能を提供する。Manifestファイルとは、ダウンロードされたファイルの各種属性を示すメタデータであり、Manifest()は、対応するファイル単位で保存しても、1つのファイルにマージして、Manifest()セクションの識別子であるmanifest_id(図10において後述)をキーに識別可能なようにしてもよい。いずれの形態であっても、ここでは、Manifestファイルと総称する。ローカルストレージ24にダウンロードされたファイルを保持している再生装置1は、Manifestファイルを保持していなければならない。また、Manifestファイルは、XMLに代表されるタグ付言語によるテキスト表現をとることも可能である。
図10は、Manifestファイルのシンタックスを示す図である。
manifest_idは、このManifest()セクションの識別子である。
author_idは、コンテンツ作成元を一意に識別するための識別子を指定するためのフィールドである。この識別子は、図15を用いて後述する、コンテンツ配布用ファイルのauthor_idフィールドを参照することで決定され、アプリケーションプログラムまたはユーザは、このフィールドに自由に値を設定することはできない。
disc_idは、author_idにより特定されたコンテンツ作成元に対して、光ディスク11を一意に識別するための識別子を指定するためのフィールドである。この識別子は、図15を用いて後述する、コンテンツ配布用ファイルのauthor_idフィールドを参照することで決定され、アプリケーションプログラムまたはユーザは、本フィールドに自由に値を設定することはできない。
versionは、コンテンツオーサが履歴管理のために使用するフィールドである。履歴番号は、1から255までの数値によって表現され、数値が大きいほど新しいコンテンツであるものとする。この識別子は、図15を用いて後述する、コンテンツ配布用ファイルのauthor_idフィールドを参照することで決定され、アプリケーションプログラムまたはユーザは、このフィールドに自由に値を設定することはできない。
display_nameには、ユーザに分かり易い名前が定義される。具体的には、display_nameには、例えば、「タイトルxxxの日本語字幕」などのように、ファイル名称からは連想しづらい内容を表現する文字列が設定される。文字列は、ISO/IEC 10646-1規格に従い符号化されているものとする。
sourceには、ファイルの配信元を示す情報が記述される。本フィールド値は、ISO/IEC 646規格に従い符号化するものとする。ネットワークダウンロードの場合、ダウンロード元のURLが記述される。
次に、permissionは、ユーザに対して可視属性にしてよいか、不可視属性にしておくかなどの許認可情報をコンテンツオーサが指定するためのフィールドである。permissionの8ビットのフィールドに、0x00が記載されている場合、このメタデータを付随しているファイルの属性は、ユーザに対して不可視属性であり、permissionの8ビットのフィールドに、0x01が記載されている場合、このメタデータを付随しているファイルの属性は、ユーザに対して可視属性であり、permissionの8ビットのフィールドに、0x02が記載されている場合、このメタデータを付随しているファイルの属性は、上書き禁止属性である。
そして、src_file_nameは、ローカルストレージ24のファイルシステムにおいて、このファイルがディレクトリ構造のどこに記録されるかを一義に指定できる情報、すなわち、ローカルストレージ24のファイルシステムの階層構造におけるファイル位置を使ってファイルを特定する、いわゆるパスを表す「パス名称」を指定するためのフィールドである。パス名称を表現するためのファイルやディレクトリの名称は、ISO/IEC 646規格に従い符号化されているものとする。
dst_file_nameは、実際にはローカルストレージ24に記憶されるファイルの仮想ディスクにおけるバインド先において、このファイルがディレクトリ構造のどこに記録されるかを一義に指定できる情報、すなわち、仮想ファイルシステムの階層構造におけるファイル位置を使ってファイルを特定する、いわゆるパスを表す「パス名称」を指定するためのフィールドである。パス名称を表現するためのファイルやディレクトリの名称は、ISO/IEC 646規格に従い符号化されているものとする。
なお、src_file_nameとdst_file_nameには、同一名称を指定することもできる。
次に、メタデータ操作手続きについて説明する。
仮想ファイルシステムは、アプリケーションプログラムまたはユーザに対して、Manifest()のファイル名称、ファイル位置、または、物理構造などを公開せずに、Manifest()の内容を読み出すためのAPIを定義している。
すなわち、アプリケーションプログラム、または、再生装置1で実行されるレジデント(常駐)プログラムは、以下のAPIを呼び出すことにより間接的にManifest()にアクセスすることができる。
getProperty
引数1:
文字列型データ
メタデータ操作の対象となるファイルの絶対パス名称
引数2:
文字列型データ
読み出したいメタデータの要素名
戻り値: 文字列型データ
引数で指定した要素に対応するメタデータ
機能:
Manifest()からメタデータを読み出す。
なお、実際には、型情報などの詳細なAPIの定義は、再生装置1のソフトウェア実行環境のプログラミング言語仕様に依存して変更されなければならない。
図11は、光ディスク11のファイルシステムの例を示す図である。図11に示されるように、光ディスク11のファイルシステムはディレクトリ構造を有している。
光ディスク11の「root」の下には「BDMV」の名前が設定されたディレクトリが用意され、そのディレクトリに、「Index.bdmv」の名前が設定されたファイルと、「MovieObjects.bdmv」の名前が設定されたファイルが格納されている。以下、適宜、これらのファイルをそれぞれIndexファイル、MovieObjectファイルと称する。また、適宜、各ファイルについては、「ファイル名」に「ファイル」を付加した形で、または、各ディレクトリについては、「ディレクトリ名」に「ディレクトリ」を付加した形で称する。
Indexファイルは、光ディスク11を再生するメニューに関する情報を含む。再生装置1は、例えば、光ディスク11のコンテンツを全て再生する、特定のチャプタのみ再生する、繰り返し再生する、初期メニューを表示するなどの内容の項目を含む再生メニュー画面をIndexファイルに基づいて、表示装置に表示させる。Indexファイルには各項目が選択されたときに実行するMovieObjectを設定することができ、ユーザにより再生メニュー画面から1つの項目が選択された場合、再生装置1はIndexファイルに設定されているMovieObjectのコマンドを実行する。
MovieObjectファイルは、MovieObjectを含むファイルである。MovieObjectは、光ディスク11に記録されているPlayListの再生を制御するコマンドを含み、例えば、再生装置1は、光ディスク11に記録されているMovieObjectの中から1つを選択して、実行することにより、光ディスク11に記録されているコンテンツを再生させることができる。
また、後述するアニメーションデータを再生させるためのAPI(Application Program Interface)が定義されており、MovieObjectには、アニメーションデータを再生させるためのAPIを呼び出すためのコマンドも含まれている。例えば、あるプレイリストにより再生されるAVデータと同期してアニメーションが表示されるようになされている場合、そのプレイリストの再生時には、アニメーションデータを再生させるためのAPI(提供されているAPIに基づくアプリケーション)を呼び出すためのコマンドを含むMovieObjectが実行される。これにより、APIが呼び出されて実行され(提供されているAPIに基づくアプリケーションが実行され)、アニメーションがAVデータと同期して再生表示される。
BDMVディレクトリにはまた、「BACKUP」の名前が設定されたディレクトリ(BACKUPディレクトリ)、「PLAYLIST」の名前が設定されたディレクトリ(PLAYLISTディレクトリ)、「CLIPINF」の名前が設定されたディレクトリ(CLIPINFディレクトリ)、「STREAM」の名前が設定されたディレクトリ(STREAMディレクトリ)、「AUXDATA」の名前が設定されたディレクトリ(AUXDATAディレクトリ)が設けられている。
BACKUPディレクトリには、光ディスク11に記録されているファイルやデータをバックアップするためのファイルやデータが記録される。
PLAYLISTディレクトリには、PlayListファイルが格納される。各PlayListファイルには、図内に示されるように5桁の数字からなるファイル名に拡張子「.mpls」を付加した名称が命名される。
CLIPINFディレクトリには、Clip Informationファイルが格納される。各Clip Informationファイルには、図内に示されるように5桁の数字からなるファイル名に拡張子「.clpi」を付加した名称が命名される。
STREAMディレクトリには、Clip AVストリームファイルやサブストリームファイルが格納される。各ストリームファイルには、図内に示されるように5桁の数字からなるファイル名に拡張子「.m2ts」を付加した名称が命名される。
AUXDATAディレクトリには、Clip AVストリームファイルやサブストリームファイルに含まれずに、Clip AVストリームファイルやサブストリームファイルから参照されるデータや、Clip AVストリームファイルやサブストリームファイルとは独立して利用されるデータなどのファイルが格納される。図11の例においては、AUXDATAディレクトリには、「11111.otf」の名前がつけられている字幕のフォントのファイル、「sound.bdmv」の名前が設定された効果音が格納されている。
AUXDATAディレクトリには、例えば、JPEG形式のグラフィカルアニメーションデータファイルなども格納される。この、グラフィカルアニメーションデータは、アニメーションデータを再生させるためのAPIに基づいた、例えば、Java(登録商標)アプリケーションが起動されることにより、再生可能なようになされている。
再生装置1においては、アニメーションデータを再生させるためのAPIを定義することにより、アニメーションを表示させるためのアニメーションフレームを、ビデオストリームなどのストリームファイルとは異なる形式でもよいことにし、例えば、Java(登録商標)アプリケーションなどを用いたグラフィカルアニメーションをAVコンテンツデータと同期して表示することができるようになされている。
また、このようにして、AVコンテンツと異なるコーディング形式のデータをAVコンテンツと合成可能な映像データとして扱うことができるようになされているので、オーサリングの自由度が向上する。
また、アニメーションを、例えば、Java(登録商標)で記述するなど、ビデオストリームなどのストリームファイルとは異なる形式であってもよいものとすることにより、例えば、ビデオデータと同様のデータファイル構造でアニメーションフレームを用意する場合と比較して、再生装置1に必要とされるバッファ容量が少なくてすむので、装置のコストダウンや小型化が容易となる。
また、光ディスク11には、製作会社や映画の配給会社などの光ディスク11のコンテンツ製作元であるタイトルオーサを識別するために各タイトルオーサに割り当てられた識別子であるauthor_id、および、author_idに示されるタイトルオーサにおいて製作された光ディスク11の種類を識別するために割り当てられた識別子であるdisc_idが、ユーザなどにより書き換えることができないセキュアな電子データとして、または、物理的にピットによって記録されている。
図12は、ローカルストレージ24のファイルシステムの例を示す図である。図12に示されるように、ローカルストレージ24のファイルシステムもディレクトリ構造を有している。
ローカルストレージ24の「root」の下には、少なくとも1つの「author_id」の名前が設定されたディレクトリが用意され、「author_id」ディレクトリの下には、少なくとも1つの「disc_id」の名前が設定されたディレクトリが用意されている。そして、「disc_id」のディレクトリには、Manifest()セクションの集合、または、1つのManifest()セクションからなるManifestファイルが含まれており、それ以外のディレクトリやファイルの構造は、コンテンツオーサにより自由に設定可能であり、例えば、図11を用いて説明した光ディスク11のディレクトリ/ファイル構造と同様のものであっても良いし、図12に示されるように、図11を用いて説明した光ディスク11のディレクトリ/ファイル構造とまったく異なるものであっても良い。
例えば、図12においては、「disc_id」のディレクトリには、Manifestファイル以外に、「MainMovie」ディレクトリ、「SubTitle」ディレクトリ、「AUXDATA」ディレクトリなどの複数のフォルダが設定され、これらのディレクトリは、更に、フォルダ、または、ファイルを含むことができる。
図12に示されるローカルストレージ24のディレクトリ/ファイル構造は、再生装置1において実行されるアプリケーションプログラム、または、ユーザから隠蔽されている。
例えば、図10を用いて説明したManifest()セクションにおいて、src_file_nameのフィールドに「/MainMovie/movie01/main.r1.jp.mp2」とパス名称が指定され、dst_file_nameのフィールドに「/STREAM/01002.m2ts」とパス名称が指定されている場合、ダウンロードされたデータは、図13に示されるように、ローカルストレージ24において、対応するauthor_idおよびdisc_idの下の、MainMovieディレクトリ内のmovie01ディレクトリに、main.r1.jp.mp2というファイル名で記録されるが、仮想ディスクにおける仮想ファイルシステムにおいては、STREAMディレクトリの01002.m2tsというファイル名のファイルとして取り扱われる。
このように、コンテンツオーサは、ダウンロードされるファイルパッケージのManifest()セクションのsrc_file_nameのフィールドに、ローカルストレージ24におけるパス名称を指定し、dst_file_nameのフィールドに、仮想ディスクにおける仮想ファイルシステムにおけるパス名称を指定することができる。したがって、dst_file_nameのフィールドに、仮想ディスクにおける仮想ファイルシステムに適応したパス名称を設定すれば、コンテンツオーサは、再生装置1の、ローカルストレージ24に実際に記録されるデータのdisc_id以下のファイル/ディレクトリ構造を自由に設定し、disc_id以下の領域にディレクトリやファイルを新しく追加することが可能となる。
また、実ファイルをダウンロードするときに、Manifest()セクションのdst_file_nameのフィールドを空欄とした場合、そのファイルは、再生装置1において実行されるアプリケーションプログラムから参照することができない(すなわち、再生装置1において実行されるアプリケーションプログラムやユーザから、そのファイルの存在を認識することができない)。すなわち、実ファイルはローカルストレージ24に記憶され、ローカルストレージのファイルシステムにおいては、そのファイルは正しく認識されているが、dst_file_nameのフィールドを空欄とすることにより、仮想ファイルシステムには存在しないこととすることができ、再生装置1において実行されるアプリケーションプログラムやユーザからは隠蔽することが可能である。
これを利用して、例えば、Manifest()セクションのdst_file_nameのフィールドを空欄として実ファイルをダウンロードさせ、後日、同一のManifest_idを有し、dst_file_nameフィールドに所定のパス名称が記載されたManifest()セクションを改めてダウンロードさせてManifest()セクションを上書きさせることにより、再生装置1において実行されるアプリケーションプログラムからは、新たなManifest()セクションがダウンロードされたタイミングで、実ファイルがダウンロードされたのと同様に取り扱わせるようにすることができる。
このようにすることにより、例えば、複数のアニメーションデータを一度にダウンロード、または、所定の記録媒体などにより配布させておいて、その後、異なるアニメーションデータをアプリケーションにより認識させることができるようにdst_file_nameフィールドが記載されたManifest()セクションのみを、所定の時期ごとにダウンロードさせて、上書きさせることにより、大容量のデータをたびたびダウンロードさせることなく、時期ごとに異なるアニメーションデータが追加されてAVデータと同期して再生表示されるようなサービスをユーザに提供することが可能である。
また、光ディスク11およびローカルストレージ24における実際のファイルシステムと、仮想ディスクのファイルシステムとの同期(バインド)方式は、いわゆるスタティックバインディング方式であっても、ダイナミックバインディング方式であっても、仮想ファイルシステムを更新するために新たなAPI(例えば、update())を定義し、ユーザ操作、または、アプリケーションプログラムにより明示的にそのAPIが呼び出されたときに、仮想ファイルシステムが更新されるようにしてもよい。
なお、スタティックバインディングとは、光ディスク11が再生装置1に装着された時点、または、再生タイトルが切り替わったタイミングで、光ディスク11およびローカルストレージ24における実際のファイルシステムを参照し、仮想ファイルシステムのディレクトリ/ファイル構造をマッピングするものであり、ダイナミックバインディングとは、ファイル入出力要求が発行された時点で、必要なファイルを探索するものである。
仮想ディスクのディレクトリ/ファイル構造は、上述したように、光ディスク11のディレクトリ/ファイル構造に合致するようになされると好適である。光ディスク11のディレクトリ/ファイル構造は、規格などにより予め定められ、変更することができない場合が多く、ローカルストレージ24における実際のファイルシステムのディレクトリやファイルの構造は、コンテンツオーサにより自由に設定可能であるほうが好適である。このため、仮想ディスクのディレクトリ/ファイル構造を、変更することができない光ディスク11のディレクトリ/ファイル構造に基づいて設定することができるようにすると、コンテンツオーサにより配布されるデータの自由度を維持しつつ、光ディスク11のアプリケーションフォーマット等の規格に合致した再生処理を実行させることができるので好適である。
仮想ディスクにおけるディレクトリ/ファイル構造の例を図14に示す。
図14に示される仮想ディスクのディレクトリ/ファイル構造において、「root」の下には「BDMV」の名前が設定されたディレクトリが用意され、そのディレクトリに、「Index.bdmv」の名前が設定されたファイルと、「MovieObjects.bdmv」の名前が設定されたファイルが格納されている。
Indexファイルは、光ディスク11およびローカルストレージ24に記録され、アプリケーションプログラムから仮想ディスクに記録されているものとして取り扱われるコンテンツを再生するメニューに関する情報を含む。再生装置1は、例えば、仮想ディスクに記録されているものとして取り扱われるコンテンツを全て再生する、特定のチャプタのみ再生する、繰り返し再生する、初期メニューを表示するなどの内容の項目を含む再生メニュー画面をIndexファイルに基づいて、表示装置に表示させる。Indexファイルには各項目が選択されたときに実行するMovieObjectを設定することができ、ユーザにより再生メニュー画面から1つの項目が選択された場合、再生装置1はIndexファイルに設定されているMovieObjectのコマンドを実行する。
MovieObjectファイルは、MovieObjectを含むファイルである。MovieObjectは、仮想ディスクに記録されているものとして取り扱われるPlayListの再生を制御するコマンドを含み、例えば、再生装置1は、仮想ディスクに記録されているものとして取り扱われるMovieObjectの中から1つを選択して、実行することにより、仮想ディスクに記録されているものとして取り扱われるコンテンツを再生させることができる。
BDMVディレクトリにはまた、「BACKUP」の名前が設定されたディレクトリ(BACKUPディレクトリ)、「PLAYLIST」の名前が設定されたディレクトリ(PLAYLISTディレクトリ)、「CLIPINF」の名前が設定されたディレクトリ(CLIPINFディレクトリ)、「STREAM」の名前が設定されたディレクトリ(STREAMディレクトリ)、「AUXDATA」の名前が設定されたディレクトリ(AUXDATAディレクトリ)が設けられている。
BACKUPディレクトリには、仮想ディスクに記録されているものとして取り扱われるファイルやデータをバックアップするためのファイルやデータが記録される。
PLAYLISTディレクトリには、PlayListファイルが格納される。各PlayListファイルには、光ディスク11における場合と同様に、5桁の数字からなるファイル名に拡張子「.mpls」を付加した名称が命名される。
CLIPINFディレクトリには、Clip Informationファイルが格納される。各Clip Informationファイルには、光ディスク11における場合と同様に、5桁の数字からなるファイル名に拡張子「.clpi」を付加した名称が命名される。
STREAMディレクトリには、Clip AVストリームファイルやサブストリームファイルが格納される。各ストリームファイルには、光ディスク11における場合と同様に、5桁の数字からなるファイル名に拡張子「.m2ts」を付加した名称が命名される。
AUXDATAディレクトリには、仮想ディスクに記録されているものとして取り扱われるClip AVストリームファイルやサブストリームファイルに含まれずに、Clip AVストリームファイルやサブストリームファイルから参照されるデータや、Clip AVストリームファイルやサブストリームファイルとは独立して利用されるデータなどのファイルが格納される。すなわち、AUXDATAディレクトリには、上述した光ディスク11における場合と同様にして、例えば、字幕のフォントのファイル、効果音のファイル、または、グラフィカルアニメーションデータ(アニメーションフレーム)などが記録される。
再生装置1においては、上述したように、アニメーションを表示させるためのアニメーションフレームを、ビデオストリームなどのストリームファイルとは異なる形式でもよいことにし、例えば、Java(登録商標)アプリケーションなどを用いたグラフィカルアニメーションをAVコンテンツデータと同期して表示することができるようになされている。
また、このようにして、AVコンテンツと異なるコーディング形式のデータをAVコンテンツと合成可能な映像データとして扱うことができるようになされているので、オーサリングの自由度が向上する。
また、アニメーションを、例えば、Java(登録商標)で記述するなど、ビデオストリームなどのストリームファイルとは異なる形式であってもよいものとすることにより、例えば、ビデオデータと同様のデータファイル構造でアニメーションフレームを用意する場合と比較して、再生装置1に必要とされるバッファ容量が少なくてすむので、装置のコストダウンや小型化が容易となる。
なお、ユーザに提供されるメニュー画面において、ファイルを示す情報は、通常、display_nameのフィールドにおいて指定された名称となるが、例えば、図14を用いて説明した、仮想ディスクにおけるディレクトリ/ファイル構造は、アプリケーションまたはユーザから隠蔽されないものであるので、再生装置1において実行されるアプリケーションによっては、仮想ディスクにおけるディレクトリ/ファイル構造を、ユーザに提示するようにしてもかまわない。
次に、図15を用いて、コンテンツオーサがコンテンツを配布する際のコンテンツ配布用ファイル形式の定義について説明する。コンテンツの配布の際のファイル形式は、コンテンツファイル単位での個別配布であっても良いが、図15に示されるように、メタデータ(Manifest())を含むアーカイブ形式であっても良い。
ただし、アーカイブ中のPackage_header()セクションおよびPackage_Body()セクションに関しては、XMLに代表されるタグ付言語によるテキスト表現もとることができる。
なお、コンテンツオーサがコンテンツをファイル単位で個別配布するとき、メタデータ(Manifest())は単独のバイナリーファイルまたはテキストファイルとして扱われる。すなわち、ファイル単位で配布されたコンテンツに関連付けられるManifest()には、追加後のディレクトリ構造を見越して、ふさわしい状態が記述されていなければならない。
compression_typeは、Package_Body()内データの圧縮方式を指定するためのフィールドである。本フィールドに0が指定されている場合は、Package_Body()内データは、非圧縮形式であるものとする。
encryption_typeは、Package_Body()内データのスクランブル方式(暗号化方式)を指定するためのフィールドである。本フィールドに0が指定されている場合は、Package_Body()内データは、ノンスクランブル(平文)形式であるものとする。
なお、Package_Body()内データのスクランブルと圧縮の順序は、1.圧縮処理、2.スクランブル処理の順番で行われるものとする。
file_countは、アーカイブするファイルの総数を指定するためのフィールドである。
manifest_idは、このManifest()セクションの識別子を指定するためのフィールドである。
アーカイブデータがダウンロードされた後、Manifest()セクションは、ローカルストレージ24において、対応するダウンロードファイル単位(アーカイブデータ単位)で保存されるようにしても、1つのファイルにマージされるようにして、Manifest()セクションの識別子であるmanifest_idをキーに識別可能なようにしてもよい。
author_idは、コンテンツ作成元を一意に識別するための識別子をコンテンツオーサが指定するためのフィールドである。
disc_idは、特定のコンテンツ作成元において、光ディスク11を一意に識別するための識別子をコンテンツオーサが指定するためのフィールドである。すなわち、このアーカイブは、disc_idで指定される光ディスク11に対するアップデートデータである。
versionは、コンテンツオーサが履歴管理のために使用するためのフィールドである。履歴番号は、1から255までの数値によって表現され、数値が大きいほど新しいコンテンツであるものとする。
sourceは、このManifest()に関連付けられたファイルのソースURLを記述するためのフィールドである。文字列は、ISO/IEC 10646-1規格に従い符号化されているものとする。
display_nameは、ユーザ分かり易い名前をコンテンツオーサが指定するためのフィールドである。例えば、「タイトルxxxの日本語字幕」などのようにファイル名称からは連想しづらい内容を表現する文字列を設定するためのフィールドである。文字列は、ISO/IEC 10646-1規格に従い符号化されているものとする。
permissionは、ユーザに対して可視属性にしてよいか、不可視属性にしておくかなどの許認可情報をコンテンツオーサが指定するためのフィールドである。Permissionにおいて指定可能な値については、図10を用いて説明した場合と同一である。
src_file_nameは、図13を用いて説明した様に、ローカルストレージ24にて記録されるべきファイルのパス名称を指定するためのフィールドである。ファイル/ディレクトリ名称は、ISO/IEC 646規格に従い符号化されているものとする。
dst_file_nameは、図13を用いて説明した様に、仮想ディスク(仮想ファイルシステム)におけるバインド先のファイルのパス名称を指定するためのフィールドである。ファイル/ディレクトリ名称は、ISO/IEC 646規格に従い符号化されているものとする。
なお、src_file_nameとdst_file_nameには、同一名称を指定することもできる。
file_sizeは、圧縮前のファイルサイズをバイト単位で指定するためのフィールドである。
file_dataは、ファイルデータをバイトシーケンスとして指定するためのフィールドである。
図15を用いて説明した様なコンテンツ配布用ファイル形式のデータがダウンロードされ、再生装置1において、装着された光ディスク11に記録されているデータとマージされて仮想ディスクにおける仮想ファイルシステムが構築される。これにより、再生装置1を用いて光ディスク11に記録されているコンテンツを再生させるユーザからは、光ディスク11に記録されているコンテンツに、例えば、ボーナストラックや、異なる言語での音声または表示字幕が追加されてアップロードされたように感じられる。
上述したファイル形式に従って構成されるコンテンツが更新される場合は、例えば、図14を用いて説明した仮想ファイルシステムにおいて、インデックスファイル(Index.bdmv)、ムービーオブジェクトファイル(Movieobjects.bdmv)、プレイリストファイル(*****.mpls)、クリップインフォメーションファイル(*****.clpi)、ストリームファイルまたはAUXデータファイル(*****.m2ts, *****bdmv,*****.otf)などが追加あるいは更新されるように、新たなデータファイルがダウンロードされて、バインディングされる。これらのファイルがダウンロードされて、装着されている装着された光ディスク11に記録されているコンテンツに関連付けられて再生されるためには、MainPathの追加やSubPathの追加など、さまざまなタイプの追加が実行される。
次に、図16は、本発明を適用した再生装置1のデコーダ26の構成を示すブロック図である。
デコーダ26には、スイッチ41、および、AVデコーダ部33が設けられ、コントローラ21の制御に基づいて動作している。
図16の例の場合、最初に、コントローラ21が光ディスクドライブ22を介して光ディスク11(ブルーレイディスクもしくはDVDなどの記録媒体)から、または、ローカルストレージ24から、PlayListファイルを読み出し、PlayListファイルの情報に基づいて、光ディスクドライブ22を介して光ディスク11から、または、ローカルストレージ24から、AVストリームやAVデータを読み出す。ユーザは、操作入力部29を用いて、コントローラ21に対し、音声や字幕などの切り替えの指令を行うことができる。また、コントローラ21には、再生装置1の言語設定の初期情報が図示せぬ記憶部などから供給される。
PlayListファイルには、Main Path、Sub Pathの情報の他、各種の再生情報が含まれている。コントローラ21は、PlayListファイルに含まれるPlayItemが参照するメインClip AVストリームファイル(以下、メインClipと称する)、SubPlayItemが参照するサブClip AVストリームファイル(以下、サブClipと称する)、およびSubPlayItemが参照するテキストサブタイトルデータやアニメーションデータなどを、光ディスクドライブ22を介して光ディスク11から、または、ローカルストレージ24から読み出す。ここで、PlayItemが参照するメインClipとSubPlayItemが参照するサブClipとが、異なる記録媒体に記録されていてもよい。例えば、メインClipが記録媒体に記録されており、対応するサブClipは図示せぬネットワークを介して供給され、ローカルストレージ24に記憶されたものであってもよい。また、コントローラ21は、自分自身(再生装置1)の再生機能に対応するエレメンタリストリームを選択し、再生するよう制御したり、再生装置1の言語設定の初期情報に対応するエレメンタリストリームだけを選択し、再生するよう制御する。
AVデコーダ部33には、バッファ51乃至54、PIDフィルタ55、PIDフィルタ56、スイッチ57乃至59、PIDフィルタ60、プリロードバッファ61、アニメーションデコーダ62、デコード済みオブジェクトバッファ63、コンポジションバッファ64、アニメーションスケジューラ65、バックグラウンドデコーダ71、1stビデオデコーダ72−1、2ndビデオデコーダ72−2、プレゼンテーショングラフィックスデコーダ73、インタラクティブグラフィックスデコーダ74、1stオーディオデコーダ75−1、2ndオーディオデコーダ75−2、Text-STコンポジション76、スイッチ77、スイッチ78、バックグラウンドプレーン生成部91、ビデオプレーン生成部92、プレゼンテーショングラフィックスプレーン生成部93、インタラクティブグラフィックスプレーン生成部94、バッファ95、ビデオデータ処理部96、ミキシング処理部97、およびミキシング処理部98が設けられている。
1stビデオデコーダ72−1は、プライマリビデオストリームをデコードするためのものであり、2ndビデオデコーダ72−2は、セカンダリビデオストリームをデコードするためのものである。また、1stオーディオデコーダ75−1は、オーディオストリーム#1(プライマリオーディオストリーム)をデコードするためのものであり、2ndオーディオデコーダ75−2は、オーディオストリーム#2(セカンダリオーディオストリーム)をデコードするためのものである。
このように、再生装置1は、2つのビデオストリームをデコードするために2つのビデオデコーダ(1stビデオデコーダ72−1、2ndビデオデコーダ72−2)を有し、2つのオーディオストリームをデコードするために、2つのオーディオデコーダ(1stオーディオデコーダ75−1、2ndオーディオデコーダ75−2)を有している。なお、以下において、1stビデオデコーダ72−1と2ndビデオデコーダ72−2とを個々に区別しない場合、ビデオデコーダ72と称し、1stオーディオデコーダ75−1と2ndオーディオデコーダ75−2とを個々に区別しない場合、オーディオデコーダ75と称する。
コントローラ21により読み出されたファイルデータは、図示せぬ復調、ECC復号部により、復調され、復調された多重化ストリームに誤り訂正が施される。スイッチ41は、復調され、誤り訂正が施されたデータを、コントローラ21からの制御に基づいて、ストリームの種類ごとに選択し、対応するバッファ51乃至54に供給する。
メインClipは、ビデオとオーディオとビットマップ字幕(Presentation Graphics stream)とインタラクティブグラフィックスのうち、ビデオに加えて1つ以上のストリームを多重化したストリーム(例えばトランスポートストリーム)である。サブClipは、ビデオとビットマップ字幕とインタラクティブグラフィックスとオーディオのうち、1つ以上のストリームを多重化したストリームである。そして、アニメーションデータは、例えば、Java(登録商標)などで記述されたデータなど、トランスポートストリームのような多重化ストリームの形式とは異なるデータ形式であってもよい。換言すれば、再生装置1においてメインのビデオデータと同期して再生されるアニメーションデータを生成するためには、MPEG2 Transport Stream の知識や開発スキルを必要としない。また、テキストサブタイトルデータファイル(Text-ST)のデータは、トランスポートストリームのような多重化ストリームの形式であっても、そうでなくてもよい。
再生装置1は、これらのファイルのデータを、光ディスクドライブ22を介して光ディスク11(または、その他の記録媒体)から読み出すか、または、ローカルストレージ24から読み出し、ビデオ、ビットマップ字幕、インタラクティブグラフィックス、アニメーション、およびオーディオを再生する。
これらのデータの中で、まず、アニメーションデータが、光ディスクドライブ22(記録媒体)から、または、ローカルストレージ24から読み出されて、デコード処理が施される。また、メインClipとサブClipおよびテキストサブタイトルデータを、光ディスクドライブ22(記録媒体)から、または、ローカルストレージ24から読み出すときに、それぞれのファイルを時分割に交互に読み出しても良いし、または、サブClipやテキストサブタイトルデータをメインClipから読み出す前に、すべてバッファ(バッファ53またはバッファ54)へプリロードしてもよい。
具体的には、スイッチ41は、コントローラ21からの制御に基づいて、ユーザから再生の指令があった場合に最初に読み出されるアニメーションデータをプリロードバッファ61に供給するようスイッチ41を切り替える。
まず、プリロードバッファ61は、アニメーションスケジューラ65の制御に基づいて、スイッチ41から供給されるアニメーションデータをバッファリングし、アニメーションデコーダ62に供給する。アニメーションデコーダ62は、アニメーションスケジューラ65の制御に基づいて、供給されたアニメーションデータをデコードして、デコード済みオブジェクトバッファ63に供給する。
アニメーションスケジューラ65は、メインクリップのビデオデータ(プライマリビデオストリーム)の再生とアニメーションの再生を同期させるために、ビデオデコーダ72が参照する図示しないSTCカウンタを参照し、プリロードバッファ61、アニメーションデコーダ62、デコード済みオブジェクトバッファ63、およびコンポジションバッファ64の動作を制御するものである。
供給されるアニメーションフレームは、図17に示されるように、1枚以上の画像フレームで構成されており、ビデオフレームに対して、全時間領域に用意されているとは限らず、例えば、図17に示されるように、所定のアニメーション再生時間において再生表示され、図中アニメーション間隔と示される時間は表示されず、再び、次のアニメーション再生時間に再生表示されるようになされていてもよい。
メインクリップのビデオデータ(プライマリビデオストリーム)の再生のためのデコード処理のタイミングは、それぞれのフレームの画像に依存するので、その予測は困難である。したがって、アニメーションフレームは、予めバッファリングしてデコードしておき、デコード済みオブジェクトバッファ63に蓄積される。そしてアニメーションスケジューラ65は、メインクリップのビデオデータ(プライマリビデオストリーム)の(インタイム)と(アウトタイム)に基づいて、デコード済みオブジェクトバッファ63に蓄積されたデコード済みのアニメーションデータをコンポジションバッファ64に転送させるように制御するものとする。
コンポジションバッファ64は、アニメーションスケジューラ65の制御に基づいて、アニメーションフレームの再生出力が開始されるとき、その直前に、インタラクティブグラフィックスプレーン生成部94において生成されたグラフィックスプレーンを取得して合成用のデータとしてバックアップし、デコード済みオブジェクトバッファ63から供給されるアニメーションフレームの対象部分の画像を切り出して、切り出された画像とバックアップしたグラフィックスオブジェクトとをアルファ合成し、インタラクティブグラフィックスプレーン生成部94に転送する。
したがって、アニメーションデータには、バッファ容量などに基づいて、フォーマットとしての制約が発生する。
図18を参照して、アニメーションデータの制約について説明する。
図18において、T1は、プリロードバッファ61に一度にプリロードされる全てのアニメーションフレームのプリロード時間である。また、T2は、アニメーションデコーダ62の処理によってデコードされる全てのアニメーションフレームのデコード時間である。そして、T3は、インタラクティブグラフィックスプレーン生成部94からコンポジションバッファ64への、アニメーション開始直前のグラフィックスプレーンの内容の転送時間である。また、T4は、コンポジションバッファ64における、1アニメーションフレーム分の、アルファ合成処理と、インタラクティブグラフィックスプレーン生成部94への転送時間との和である。そして、T5は、インタラクティブグラフィックスプレーン生成部94における、1アニメーションフレームの生存期間である。
ここで、T1乃至T4は、再生装置1のハードウェア構成により異なるパラメータをとるものである。また、T4およびT5は、アプリケーションによって指定可能なパラメータである。
なお、アニメーションフレームはプリロードバッファ61にプリロードされて、アニメーションデコーダ62へ転送されるのではなくコピーされる(プリロードバッファ61にデータが残る)ものとし、プリロードバッファ61には、次のアニメーションフレームが供給されるまで、プリロードされたアニメーションフレームは保持されているものとしてもよく、また、デコード済みオブジェクトバッファ63からコンポジションバッファ64へのデコード済みのアニメーションフレームの供給も、転送ではなく、コピーである(デコード済みオブジェクトバッファ63にデータが残る)ものとし、デコード済みオブジェクトバッファ63には、次のデコード済みフレームが供給されるまで、デコード済みのアニメーションフレームは保持されているものとしてもよい。また、コンポジションバッファ64からインタラクティブグラフィックスプレーン生成部94への、アルファ合成されて生成されたフレームデータの供給も、転送ではなく、コピーである(コンポジションバッファ64にデータが残る)ものとしてもよい。
そして、アプリケーションは、アニメーションフレームとして表示されるべき画像、ビデオストリームのPTSで指定されるアニメーション開始時刻、ビデオストリームのPTSで指定されるアニメーション終了時刻、および、アニメーションのフレームレートの各パラメータを指定することができる。
そして、アニメーションフレームのデコードの速度によって、図17に示されるアニメーション間隔の最小値が決定される。
また、コンポジションバッファ64からインタラクティブグラフィックスプレーン生成部94へのデータ転送レート(データのコピー速度)と、コンポジションバッファ64におけるピクセル単位でのアルファ合成処理の処理速度によって、アニメーションフレームレートに対する処理可能なアニメーションフレームの画枠が決定される。
そして、デコード済みオブジェクトバッファ63のバッファ容量から、アニメーションフレームレートと、それに対応する対応するアニメーションフレームの画枠に対する使用可能フレームの総数が決定される。
具体的には、以下に示される式が満たされていなければならない。
N(n)=f(n)×△T(n)・・・(1)
ここで、△T(n)は、次の式(2)で示され、式(3)を満たす値である。そして、N(n)は、n番目のアニメーションで使用するグラフィックスオブジェクトの総数であり、f(n)は、n番目のアニメーションのフレームレート(/sec)である。
△T(n)=animation_end_time(n)−animation_start_time(n)・・・(2)
△T(n)>0・・・(3)
なお、animation_start_time(n)は、n番目のアニメーションの開始時刻であり、animation_end_time(n)は、n番目のアニメーションの終了時刻である。
また、アニメーション間隔に関して、次の式(4)も満たされていなければならない。
animation_end_time(n)+T1+T2+T3+T4≦animation_start_time(n+1)
・・・(4)
そして、次の式(5)、すなわち、式(6)も満たされていなければならない。
(2×Rd+BPP×Rp)×△T(n)≧8×S(n)
かつ
2×Rd+BPP×Rp≧8×Smax(n)×f(n)・・・(5)
2×Rd+BPP×Rp≧8×Smax(n)×f(n)・・・(6)
なお、Rdは、再生装置1における、データの転送レート(データのコピー速度)(bits/sec)であり、Rpは、再生装置1におけるピクセル単位でのアルファ合成処理のレート(pixels/sec)であり、BPPは、グラフィックスオブジェクトの色深度(bits/pixel)である。また、S(n)は、すべてのアニメーションのグラフィックオブジェクトのサイズの合計値、すなわち、SIZE(gfx)をグラフィックスオブジェクトgfxのサイズをバイト単位で返す関数としたとき、SIZE(object(1))+SIZE(object(2))+・・・+SIZE(object(N(n)))で示される値である。また、Smax(n)は、MAX()を()内のオブジェクト列の最大値をバイト単位で返す関数としたとき、MAX{SIZE(object(1)),SIZE(object(2)),・・・,SIZE(object(N(n))))で示される値である。
また、DEC_TIME(gfx)を、アニメーショングラフィックスオブジェクトgfxのデコード時間を秒単位で返す関数としたとき、次の式(7)も満たされていなければならない。
DEC_TIME(object(1))+DEC_TIME(object(2))+…+DEC_TIME(object(N(n)))≦T2
・・・(7)
更に、次の式(8)も満たされていなければならない。
S(n)≦SIZE(Decoded Object Buffer)・・・(8)
ここで、SIZE(Decoded Object Buffer)は、デコード済みオブジェクトバッファ63のバッファ容量である。
次に、図19および図20を参照して、プリロードバッファ61へアニメーションフレームをプリロードするのが可能なタイミングについて説明する。
例えば、図19に示されるようなシーケンシャルムービーの再生において、PlayItem#1およびPlayItem#2のプライマリビデオストリームと同期して再生されるアニメーションフレームのイメージデータがPlayItem#1の再生開始に先立ってプリロードされる。そして、PlayItem#1およびPlayItem#2のプライマリビデオストリームと同期して所定の再生位置でアニメーションが再生される。そして、その後、異なるPlayItem#3がPlayItem#1およびPlayItem#2とノンシームレス接続されている場合、PlayItem#3のプライマリビデオストリームの再生の前に、PlayItem#3のプライマリビデオストリームと同期して再生されるアニメーションフレームのイメージデータをプリロードすることが可能である(PlayItemごとに再生前にプリロードすることが可能である)。
しかしながら、PlayItem#3が、PlayItem#1およびPlayItem#2とシームレス接続されている場合、PlayItem#3のプライマリビデオストリームと同期して再生されるアニメーションフレームも、最初のPlayItem再生前に、あらかじめプリロードしておかなければならない。
そして、図20に示されるような、インタラクティブムービー(分岐型)の再生においても、プレイアイテム間がノンシームレス接続されている場合、アニメーションフレームのイメージデータは、PlayItemごとに再生前にプリロードすることが可能である。しかしながら、プレイアイテム間がシームレス接続されている場合、最初のPlayItem再生前にしか、アニメーションフレームのイメージデータはプリロードできない。
次に、図21を参照して、再描画について説明する。
図21Aに示されるように、アニメーションフレームが左上原点を固定したまま、サイズのみが拡大していく場合は、再描画は発生しない。コンポジションバッファ64は、下絵とのアルファ合成のために、アニメーションフレームの拡大時における領域(重ね合わせの最大領域)のアニメーション表示開始直前のグラフィックスプレーンを、インタラクティブグラフィックスプレーン生成部94からバックアップしておく必要がある。
また、図21Bに示されるように、アニメーションフレームが左上原点を固定したまま、サイズのみが縮小していく場合にも、再描画は発生しない。コンポジションバッファ64は、下絵とのアルファ合成のために、アニメーションフレームの最大の大きさの領域(重ね合わせの最大領域)のアニメーション表示開始直前のグラフィックスプレーンを、インタラクティブグラフィックスプレーン生成部94からバックアップしておく必要がある。
そして、図21Cに示されるように、アニメーションフレームが移動する場合は、重ね合わせの領域の再描画が発生する。コンポジションバッファ64は、下絵とのアルファ合成のために、通過範囲の矩形領域(重ね合わせのすべての領域)のアニメーション表示開始直前のグラフィックスプレーンを、インタラクティブグラフィックスプレーン生成部94からバックアップしておく必要がある。
再び、図16の説明に戻る。
スイッチ41は、コントローラ21からの制御に基づいて、バックグラウンドイメージデータをバッファ51に供給し、メインClipのデータをバッファ52に供給し、サブClipのデータをバッファ53に供給し、Text-STのデータをバッファ54に供給するようスイッチ41を切り替える。バッファ51は、バックグラウンドイメージデータをバッファリングし、バッファ52は、メインClipのデータをバッファリングし、バッファ53は、サブClipのデータをバッファリングし、バッファ54は、Text-STデータをバッファリングする。
バックグラウンドイメージデータをバッファリングするバッファ51から読み出されたデータは、所定のタイミングでバックグラウンドデコーダ71に供給される。バックグラウンドデコーダ71は、バックグラウンドイメージデータをデコードし、デコードしたバックグラウンドイメージデータをバックグラウンドプレーン生成部91に供給する。
メインClip用リードバッファであるバッファ52から読み出されたストリームデータは、所定のタイミングで、後段のPID(パケットID)フィルタ55へ出力される。このPIDフィルタ55は、入力されたメインClipをPID(パケットID)に応じて、後段の各エレメンタリストリームのデコーダへ振り分けて出力する。すなわち、PIDフィルタ55は、ビデオストリームを1stビデオデコーダ72−1または2ndビデオデコーダ72−2のいずれかに供給するためのPIDフィルタ60に供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームを1stオーディオデコーダ75−1と2ndオーディオデコーダ75−2への供給元となるスイッチ59に供給する。
サブClip用リードバッファであるバッファ53から読み出されたストリームデータは、所定のタイミングで、後段のPID(パケットID)フィルタ56へ出力される。このPIDフィルタ56は、入力されたサブClipをPID(パケットID)に応じて、後段の各エレメンタリストリームのデコーダへ振り分けて出力する。すなわち、PIDフィルタ56は、供給されたビデオストリームを1stビデオデコーダ72−1または2ndビデオデコーダ72−2のいずれかに供給するためのPIDフィルタ60へ供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームを1stオーディオデコーダ75−1と2ndオーディオデコーダ75−2への供給元となるスイッチ59に供給する。
PIDフィルタ60は、PIDフィルタ55から供給されたメインClipに含まれていたビデオストリーム、または、PIDフィルタ56から供給されたサブClipに含まれていたビデオストリームの入力を受け、コントローラ21の制御に基づいて、プライマリビデオストリームであるか、セカンダリビデオストリームであるかを判別し、プライマリビデオストリームを1stビデオデコーダ72−1に供給し、セカンダリビデオストリームを2ndビデオデコーダ72−2に供給する。
PIDフィルタ60により振り分けられたビデオストリームは、後段の1stビデオデコーダ72−1または2ndビデオデコーダ72−2に供給される。1stビデオデコーダ72−1または2ndビデオデコーダ72−2は、供給されたビデオストリームをデコードし、デコードしたビデオデータをビデオプレーン生成部92へ出力する。
1stビデオデコーダ72−1は、プライマリビデオストリームをデコードするためのものであり、2ndビデオデコーダ72−2は、セカンダリビデオストリームをデコードするためのものである。また、1stオーディオデコーダ75−1は、オーディオストリーム#1(プライマリオーディオストリーム)をデコードするためのものであり、2ndオーディオデコーダ75−2は、オーディオストリーム#2(セカンダリオーディオストリーム)をデコードするためのものである。
このように、再生装置1は、2つのビデオストリームをデコードするために2つのビデオデコーダ(1stビデオデコーダ72−1、2ndビデオデコーダ72−2)を有し、2つのオーディオストリームをデコードするために、2つのオーディオデコーダ(1stオーディオデコーダ75−1、2ndオーディオデコーダ75−2)を有している。なお、以下において、1stビデオデコーダ72−1と2ndビデオデコーダ72−2とを個々に区別しない場合、ビデオデコーダ72と称し、1stオーディオデコーダ75−1と2ndオーディオデコーダ75−2とを個々に区別しない場合、オーディオデコーダ75と称する。
スイッチ57は、PIDフィルタ55から供給されたメインClipに含まれるプレゼンテーショングラフィックスストリームと、サブClip に含まれるプレゼンテーショングラフィックスストリームのうちのいずれか1つを選択し、選択したプレゼンテーショングラフィックスストリームを、後段のプレゼンテーショングラフィックスデコーダ73に供給する。プレゼンテーショングラフィックスデコーダ73は、プレゼンテーショングラフィックスストリームをデコードし、デコードしたプレゼンテーショングラフィックスストリームのデータをプレゼンテーショングラフィックスプレーン生成部93への供給元となるスイッチ77に供給する。
また、スイッチ58は、PIDフィルタ55から供給されたメインClipに含まれるインタラクティブグラフィックスストリームと、サブClip に含まれるインタラクティブグラフィックスストリームのうちのいずれか1つを選択し、選択したインタラクティブグラフィックスストリームを、後段のインタラクティブグラフィックスストリームデコーダ74に供給する。すなわち、インタラクティブグラフィックスデコーダ74へ同時に入力されるインタラクティブグラフィックスストリームは、メインClipまたはサブClipのどちらかから分離されたストリームである。
インタラクティブグラフィックスデコーダ74は、インタラクティブグラフィックスストリームをデコードし、デコードしたインタラクティブグラフィックスストリームのデータを、インタラクティブグラフィックスプレーン生成部94へのデータ供給元となるスイッチ78に供給する。
さらに、スイッチ59は、PIDフィルタ55から供給されたメインClipに含まれるオーディオストリームと、サブClip に含まれるオーディオストリームのうちのいずれか1つを選択し、選択したオーディオストリームを、後段の1stオーディオデコーダ75−1または、2ndオーディオデコーダ75−2に供給する。ここで、1stオーディオデコーダ75−1へ同時に入力されるオーディオストリームは、メインClipまたはサブClipのどちらかから分離されたストリームである。また、同様に、2ndオーディオデコーダ75−2へ同時に入力されるオーディオストリームも、メインClipまたはサブClipのどちらかから分離されたストリームである。例えば、メインClipにオーディオストリーム#1とオーディオストリーム#2とが含まれていた場合、PIDフィルタ55は、オーディオストリームのPIDに基づいて、オーディオストリーム#1とオーディオストリーム#2とをフィルタリングし、スイッチ59に供給する。
スイッチ59は、例えば、PIDフィルタ55から供給されたオーディオストリーム#1を、1stオーディオデコーダ75−1に供給するようスイッチを選択し、PIDフィルタ55から供給されたオーディオストリーム#2を、2ndオーディオデコーダ75−2に供給するようスイッチを選択する。
1stオーディオデコーダ75−1は、オーディオストリームをデコードし、デコードしたオーディオストリームのデータをミキシング処理部101に供給する。また、2ndオーディオデコーダ75−2は、オーディオストリームをデコードし、デコードしたオーディオストリームのデータをミキシング処理部101に供給する。
ここで、オーディオストリーム#1とオーディオストリーム#2とを重畳して再生するような場合(ユーザにより再生するオーディオストリームとして、2つのオーディオストリームが選択された場合)、1stオーディオデコーダ75−1によりデコードされたオーディオストリーム#1と、2ndオーディオデコーダ75−2によりデコードされたオーディオストリーム#2とが、ミキシング処理部101に供給される。
ミキシング処理部101は、1stオーディオデコーダ75−1からのオーディオデータと、2ndオーディオデコーダ75−2からのオーディオデータとをミキシング(重畳)し、後段のミキシング処理部97に出力する。なお、本実施の形態においては、1stオーディオデコーダ75−1から出力されるオーディオデータと2ndオーディオデコーダ75−2から出力されるオーディオデータとをミキシング(重畳)することを、合成するとも称する。すなわち、合成とは、2つのオーディオデータを、ミキシングすることも示すものとする。
また、スイッチ41により選択されたサウンドデータは、バッファ95に供給され、バッファリングされる。バッファ95は、所定のタイミングでサウンドデータをミキシング処理部97に供給する。サウンドデータは、この場合、メニュー選択などによる効果音のデータである。ミキシング処理部97は、ミキシング処理部101によりミキシングされたオーディオデータ(1stオーディオデコーダ75−1から出力されたオーディオデータと2ndオーディオデコーダ75−2から出力されたオーディオデータとがミキシングされたオーディオデータ)と、バッファ95から供給されてきたサウンドデータをミキシング(重畳、または合成)し、音声信号として出力する。
テキストサブタイトル用リードバッファであるバッファ54から読み出されたデータは、所定のタイミングで、後段のテキストサブタイトルコンポジション(デコーダ)76へ出力される。テキストサブタイトルコンポジション76は、Text-STデータをデコードし、スイッチ77に供給する。
スイッチ77は、プレゼンテーショングラフィックスデコーダ73によりデコードされたプレゼンテーショングラフィックスストリーム、または、テキストサブタイトル(Text-ST)コンポジション76によりデコードされたText-ST(テキストサブタイトルデータ)のうち、いずれかを選択し、選択したデータをプレゼンテーショングラフィックスプレーン生成部93に供給する。すなわち、プレゼンテーショングラフィックスプレーン生成部93へ同時に供給される字幕画像は、プレゼンテーショングラフィックスデコーダ73またはテキストサブタイトル(Text-ST)コンポジション76のうちのいずれかの出力である。
スイッチ78は、インタラクティブグラフィックスデコーダ74によりデコードされたインタラクティブグラフィックスストリームのデータ、および、コンポジションバッファ64から供給されるアニメーションデータのうち、いずれかを選択し、選択したデータをインタラクティブグラフィックスプレーン生成部94に供給する。なお、アニメーションデータは、再生タイミングにあわせてコンポジションバッファ64によって合成されるものであるので、スイッチ78は、コンポジションバッファ64からアニメーションデータの供給を受けたとき、アニメーションデータを、インタラクティブグラフィックスプレーン生成部94に供給する。
また、プレゼンテーショングラフィックスデコーダ73へ同時に入力されるプレゼンテーショングラフィックスストリームは、メインClipまたはサブClipのいずれかから分離されたストリームである(スイッチ57により選択される)。
バックグラウンドプレーン生成部91は、バックグラウンドデコーダ71から供給されたバックグラウンドイメージデータに基づいて、例えば、ビデオ画像を縮小表示した場合に壁紙画像となるバックグラウンドプレーンを生成し、これを、ビデオデータ処理部96に供給する。
ビデオプレーン生成部92は、1stビデオデコーダ72−1および2ndビデオデコーダ72−2からビデオデータが供給された場合、コントローラ21の制御に基づいて、供給されたビデオデータを合成して、ビデオプレーンを生成し、これをビデオデータ処理部96に供給する。また、ビデオプレーン生成部92は、1stビデオデコーダ72−1のみからビデオデータが供給された場合、供給されたビデオデータを用いてビデオプレーンを生成し、これをビデオデータ処理部96に供給する。なお、2つのビデオデータを合成することは、例えば、ミキシングする、重畳するとも称される。
プレゼンテーショングラフィックスプレーン生成部93は、スイッチ77により選択され、供給されたデータ(プレゼンテーショングラフィックスストリームまたはテキストサブタイトルデータ)に基づいて、例えば、レンダリング画像であるプレゼンテーショングラフィックスプレーンを生成し、これをビデオデータ処理部96に供給する。
インタラクティブグラフィックスプレーン生成部94は、スイッチ78により選択されて供給されたデータ(インタラクティブグラフィックスデコーダ74から供給されたインタラクティブグラフィックスストリームのデータ、または、コンポジションバッファ64から供給されたアニメーションフレーム)に基づいて、インタラクティブグラフィックスプレーンを生成し、これをビデオデータ処理部96に供給する。
ビデオデータ処理部96は、バックグラウンドプレーン生成部91からのバックグラウンドプレーン、ビデオプレーン生成部92からのビデオプレーン、プレゼンテーショングラフィックスプレーン生成部93からのプレゼンテーショングラフィックスプレーン、およびインタラクティブグラフィックスプレーン生成部94からのインタラクティブグラフィックスプレーンを合成し、ビデオ信号として出力する。また、ミキシング処理部97は、ミキシング処理部101からのオーディオデータ(1stオーディオデコーダ75−1によりデコードされたオーディオデータと2ndオーディオデコーダ75−2によりデコードされたオーディオデータとがミキシングされたオーディオデータ)と、バッファ95からのサウンドデータをミキシング(合成または重畳)し、音声信号として出力する。
これらのスイッチ57乃至59、並びにスイッチ77およびスイッチ78は、操作入力部29を介するユーザからの選択、または、対象となるデータが含まれるファイル側に基づいて、スイッチを切り替える。例えば、サブClip AVストリームファイルのみにしか、オーディオストリームが含まれていない場合、スイッチ59はサブ側にスイッチを切り替える
このようにして、図16を用いて説明したデコーダ26は、コントローラ21の制御に基づいて、再生処理を行うことができる。
上述したように、再生装置1のデコーダ26は、プリロードバッファ61、アニメーションデコーダ62、デコード済みオブジェクトバッファ63、コンポジションバッファ64、および、アニメーションスケジューラ65を備えることにより、ビデオフレームと同期させてグラフィックアニメーションを再生させることができる。
このことにより、例えば、代表的なものとして、メインパスの映画などのAVコンテンツに同期して、ディレクターなどのコメンタリを付属させたり、画面上で、ディレクターが個々のシーンをポイントしながら、その箇所についての解説を行うようなアプリケーションを提供したり、メインのAV再生をバックグランドとしたリアルタイムゲームなどのアプリケーションを提供することが可能となる。
また、アニメーションの再生に必要なデータ(アニメーションフレーム)は、あらかじめバッファリングされて、デコードされて保持されているので、デコード済みオブジェクトバッファ63にバッファリングされている部分のアニメーションフレームは、アニメーションスケジューラ65がビデオデコーダが参照するSTCカウンタの値を参照することにより、ランダムアクセス可能になる。しかしながら、異なるPlayListまたはPlayItemへのジャンプ再生には対応することができない。
再生装置1は、上述したように、予め、アニメーション再生に必要なアニメーションフレームをプリロードバッファ61にプリロードしてデコードしておき、アニメーションスケジューラ65が図示しないSTCカウンタを参照することにより、指定されたビデオフレームに同期させて表示されるアニメーションフレームを、インタラクティブグラフィックスプレーン94に転送するようになされている。
ただし、実装においては、インタラクティブグラフィックスプレーン94に対して、ダブルバッファリングやトリプルバッファリングなどの手法を用いて、アニメーション表示のちらつき、いわゆる、フリッカが発生しないような施策が必要である場合もある。
図22に、ダブルバッファリングの例を示す。
図22に示されるように、インタラクティブグラフィックスプレーン生成部94に、バックグラフィックスプレーン151とフロントグラフィックスプレーン152とを設け、バッファリング制御部153により、バックグラフィックスプレーン151とフロントグラフィックスプレーン152へのデータの入出力を制御するものとする。具体的には、フロントグラフィックスプレーン152において合成処理が終了した後に、フロントグラフィックスプレーン152から合成されたデータの出力が開始され、フロントグラフィックスプレーン152から合成されたデータが出力されている間、バックグラフィックスプレーン151にデータが供給されて、合成処理が実行される。そして、フロントグラフィックスプレーン152からの合成データの出力と、バックグラフィックスプレーン151における合成処理が終了した後に、データの入出力が逆転される。
インタラクティブグラフィックスプレーン生成部94をこのような構成にすることにより、アニメーション表示のちらつき、いわゆる、フリッカの発生を防止することができる。
上述したアニメーションの表示のための処理、すなわち、コントローラ21によるプリロードバッファ61、アニメーションデコーダ62、デコード済みオブジェクトバッファ63、コンポジションバッファ64、および、アニメーションスケジューラ65への処理は、ビデオ同期型アニメーションを起動するためのAPIであるAnimation()により起動される。
APIの具体的なシンタックスは、再生装置1のプラットフォームの言語仕様によって異なるが、このようなAPIを提供することにより、アプリケーションプログラム、または、再生装置1で実行されるレジデント(常駐)プログラムは、以下のAPIを呼び出すことによりアニメーションの表示を制御することができる。
このAPIの引数には、例えば、以下のようなものが用意される。
filecount
ファイル名称の総数を指定するための引数である。
Mode
ノーマルモードまたはスプライトモードのいずれかを指定するための引数である。なお、この引数によりノーマルモードが指定されている場合、1画像ファイルが1アニメーションフレームに対応し、この引数によりスプライトモードが指定されている場合、1画像ファイルから複数のアニメーションフレームを切り出すことが可能なようになされている。
filenames
文字列型の配列の引数である。Filenamesにより指定される、アニメーションに必要とされる画像ファイルがプリロードされて、展開される。また、Filenamesにより、複数のファイル名称を指定することが可能である。
PlayList_id []
PlayList idの列を指定するための引数である。複数のPlayListを指定する場合は、再生順にしたがって指定しなければならない。
PlayItem_id []
PlayItem idの列を指定するための引数である。複数のPlayItemを指定する場合は、再生順にしたがって指定しなければならない。ただし、PlayList_idに複数のPlayList idが指定された場合、本引数には、値を指定することができない。
start_PTS
アニメーションの開始時刻をビデオフレームのPTSで指定するための引数である。start_PTSの値は、上述したように、ビデオのpresentation time 内に収まっていなければならない。
end_PTS
アニメーションの終了時刻をビデオフレームのPTSで指定するための引数である。end_PTSの値も、start_PTSの値の場合と同様に、ビデオの presentation time 内に収まっていなければならない。
frame_rate
アニメーションのフレームレートを指定するための引数である。この引数は、同期するビデオのビデオフレームレートの整数倍でなければならない。
width
アニメーションフレームの幅(表示幅ではなく、元のデータの画枠の幅)を示す引数である。
height
アニメーションフレームの高さ(表示高さではなく、元のデータの画枠の高さ)を示す引数である。
X []
生成されるプレゼンテーショングラフィックプレーン上(または、表示画面上)における、アニメーションの表示位置の、例えば、左上隅のX座標(または座標列)を示す引数である。
Y []
生成されるプレゼンテーショングラフィックプレーン上(または、表示画面上)における、アニメーションの表示位置の、例えば、左上隅のY座標(または座標列)を示す引数である。
scaling_factor []
アニメーションフレームの大きさに対して、生成されるプレゼンテーショングラフィックプレーン上(または、表示画面上)に表示されるアニメーションデータの大きさの日膣(スケーリングファクタ)の列を示す引数である。
また、この場合においては、戻り値は、特に用意されない。
このようなAPIが提供されることにより、オーサリングは、アプリケーションプログラム中でAPIを呼び出すだけのシンプルなものになる。
また、上述した構成により、例えば、Java(登録商標)などを用いて記述されたアニメーションフレームが、ストリームデータとして再生装置1で再生されるビデオデータと同期して再生可能なようになされる。
このような構成を用いることにより、従来、MPEG2 Transport Streamの形式のビデオフレームと同期するグラフィックスを表示させるために用いられていたHDMV graphics streamと比較して、画像フォーマットおよび圧縮形式が制限されないため、同期再生される画像のフォーマットをフレキシブルに導入することができる。また、オーサリングは、アプリケーションプログラム中でAPIを呼び出すだけのシンプルなものになる。
したがって、例えば、JPEG画像などの汎用グラフィックスオブジェクトと制御APIの定義により、フレーム同期型アニメーションを低開発コストで提供することができる。また、アニメーションのAPI駆動を可能としたことにより、コンテンツの提供者や作成者は、MPEG2 Transport Streamなどの専門知識なしに、ビデオ同期型アニメーションを作成し、配布できることができる。
また、すでに配布済みのコンテンツに対して、アニメーションデータを、例えば、インターネットなどのネットワーク2を介して後日配布し、同期して再生させるようにすることなども容易であり、後日配布されるデータの生成には、MPEG2 Transport Stream などの専門知識は、まったく必要とされない。
また、本発明を適用した再生装置1において、ビデオストリームと同時再生される画像データのフォーマットとして、HDMV graphics streamが用いられた場合では、一気に全データを読み出すことも、ソース・パケット単位でデータを読み出すことも可能になり、フレキシブルな読み出しが実現できる。
つづいて、図23乃至図30のフローチャートを参照して、再生装置1が実行する処理について説明する。
まず、図23のフローチャートを参照して、ファイルの追加および更新処理について説明する。
ステップS1において、コントローラ21の操作入力取得部32は、操作入力部29から供給される信号を基に、ユーザから、ファイルベース、すなわち、所定のdisc_idで示されるディレクトリに含まれるファイルの追加処理を開始する指令を受けたか否かを判断する。ステップS1において、ファイルの追加処理を開始する指令を受けていないと判断された場合、ファイルの追加処理を開始する指令を受けたと判断されるまで、ステップS1の処理が繰り返される。
ステップS1において、ファイルの追加処理を開始する指令を受けたと判断された場合、ステップS2において、コントローラ21のローカルストレージディレクトリ管理部34は、データ取得部33を制御し、インターネットインタフェース25およびネットワーク2を介してサーバ3にアクセスし、現在の仮想ファイルシステムの状態を示す情報、例えば、対応するManifest()セクションのManifest_idを送信する。
ステップS3において、データ取得部33は、インターネットインタフェース25を制御し、ネットワーク2を介して、サーバ3から、ダウンロード可能なファイルの一覧に対応する情報を受信したか否かを判断する。
ステップS3において、ダウンロード可能なファイルの一覧に対応する情報を受信できなかったと判断された場合、ステップS4において、メニュー画面表示制御部31は、ファイルの追加処理が不可能であることをユーザに通知するためのエラーメッセージの表示を制御し、処理が終了される。
ステップS3において、ダウンロード可能なファイルの一覧に対応する情報を受信したと判断された場合、ステップS5において、データ取得部33は、サーバ3から送信され、インターネットインタフェース25により受信されたダウンロード可能なファイルの一覧に対応する情報を、メニュー画面表示制御部31に供給する。メニュー画面表示制御部31は、ダウンロード可能なファイルの一覧から、ユーザが所望のものを選択することができるようになされているメニュー画面を表示装置に表示させる。
ステップS6において、操作入力取得部32は、メニュー画面表示制御部31の処理により表示が制御されているメニュー画面のボタンまたはアイコンなどがユーザにより操作され、追加したい項目が選択されたか否かを判定する。ステップS6において、追加したい項目が選択されていないと判断された場合、選択されたと判断されるまで、ステップS6の処理が繰り返される。
ステップS6において、追加したい項目が選択されたと判断された場合、ステップS7において、操作入力取得部32は、ユーザにより選択されたアップデートの内容を表す情報を、データ取得部33に供給する。データ取得部33は、インターネットインタフェース25を制御し、要求するファイルを示す情報をサーバ3に送信させ、ユーザが選択したファイルのダウンロードを要求する。
ステップS8において、データ取得部33は、インターネットインタフェース25を制御し、サーバ3によりダウンロードファイルとして用意される、PlayListファイル、ClipInformationファイル、ClipAVストリームファイル、オーディオファイル、テキスト字幕ストリームファイル、アニメーションデータファイル、または、フォントファイルなどをダウンロードさせ、これらのファイルがダウンロードされたことを、ローカルストレージディレクトリ管理部34に通知する。
ステップS9において、ローカルストレージディレクトリ管理部34は、ダウンロードされたファイルのManifest()に含まれるauthor_idとdisc_idとに基づいて、それらのIDで識別されるディレクトリがローカルストレージ24に既に存在するか否かを判断して、対応するディレクトリが既に存在する場合は、そのディレクトリにダウンロードされたデータファイルを展開し、対応するディレクトリが存在しない場合、author_idとdisc_idで指定される新たなディレクトリをローカルストレージ24に作成し、ダウンロードされたデータファイルを展開する。
ステップS10において、図24を用いて後述するバインディング処理が実行され、処理が終了される。
このような処理により、サーバ3からアップデートファイルがダウンロードされて、ローカルストレージ24に記録させ、光ディスク11に記録されているコンテンツのアップロードファイルとして扱われるようにすることができる。
すなわち、このような処理により、例えば、映画などのコンテンツが記録された光ディスク11を購入したユーザが、光ディスク11に予め記録されていない言語の字幕を表示させるために必要なファイルや、ビデオデータと同期して新たなアニメーションを表示させるために必要なファイルなどを取得して、ローカルストレージ24に記憶させるとともに、光ディスク11に記録されているデータとローカルストレージ24に記憶されているデータとを、再生処理などを実行するアプリケーションプログラムが区別しないで取り扱うことができ、物理的なデータの記憶をユーザまたはアプリケーションプログラムから隠蔽することができるような仮想ファイルシステムを構築させることができる。
また、以上のようなアップデートファイルのダウンロードは、有料で行うことができるものであってもよいし、無料で行うことができるものであってもよい。
次に、図24のフローチャートを参照して、図23のステップS10において実行される、バインディング処理について説明する。
ステップS21において、ローカルストレージディレクトリ管理部34は、ローカルストレージ24に記録されているダウンロードされたデータ群から、対応するdisc_idのディレクトリを抽出し、ファイルシステムマージ処理部36に供給する。
ステップS22においてファイルシステムマージ処理部36は、Manifestファイルのsrc_file_nameおよびdst_file_nameを参照する。
ステップS23において、ファイルシステムマージ処理部36は、ステップS22において参照されたsrc_file_nameおよびdst_file_nameを基に、ネイティブなファイルシステムと、仮想ファイルシステムとをバインディングする。
具体的には、src_file_nameには、ローカルストレージ24のファイルシステムにおいて、このファイルがディレクトリ構造のどこに記録されるかを一義に指定できる情報、いわゆるパスを表す「パス名称」が指定され、dst_file_nameには、実際にはローカルストレージ24に記憶されるファイルの仮想ディスクにおけるバインド先において、このファイルがディレクトリ構造のどこに記録されるかを一義に指定できる情報、いわゆるパスを表す「パス名称」が指定される。
例えば、図10を用いて説明したManifest()セクションにおいて、src_file_nameのフィールドに「/MainMovie/movie01/main.r1.jp.mp2」とパス名称が指定され、dst_file_nameのフィールドに「/STREAM/01002.m2ts」とパス名称が指定されている場合、ファイルシステムマージ処理部36は、図13を用いて説明したように、ダウンロードされたデータが、ローカルストレージ24において、対応するauthor_idおよびdisc_idの下の、MainMovieフォルダ内のmovie01フォルダに、main.r1.jp.mp2というファイル名で記録されるが、仮想ディスクにおける仮想ファイルシステムにおいては、STREAMディレクトリの01002.m2tsというファイル名のファイルとして取り扱われるようにバインディングする。
コンテンツオーサは、ダウンロードされるファイルパッケージのManifest()セクションのsrc_file_nameのフィールドに、ローカルストレージ24におけるパス名称を指定し、dst_file_nameのフィールドに、仮想ディスクにおける仮想ファイルシステムにおけるパス名称を指定することができる。したがって、dst_file_nameのフィールドに、仮想ディスクにおける仮想ファイルシステムに適応した(光ディスク11のファイルシステムに適応した)パス名称を設定すれば、コンテンツオーサは、再生装置1の、ローカルストレージ24に実際に記録されるデータのdisc_id以下のファイル/ディレクトリ構造を自由に設定し、disc_id以下の領域にディレクトリやファイルを新しく追加することが可能となる。
次に、図25乃至図27のフローチャートを参照して、再生装置1が実行する再生処理について説明する。
コントローラ21は、ユーザから、所望のコンテンツの再生が指令されたとき、光ディスクドライブ22を介して光ディスク11から、または、ローカルストレージ24から、再生が指令されたコンテンツに対応するPlayListファイルを読み出して、それを基にして処理を開始する。ステップS101において、コントローラ21は、アニメーションを表示させるためのAPIが起動されたか否かを判断する。ステップS101において、APIが起動されていないと判断された場合、処理は、ステップS103に進む。
ステップS101において、APIが起動されたと判断された場合、ステップS102において、図28を用いて後述するアニメーション表示準備処理が実行される。ステップS102において、アニメーション表示準備処理が実行されることにより、デコード済みオブジェクトバッファ63に、デコード済みのアニメーションデータが蓄積される。
ステップS101において、APIが起動されていないと判断された場合、または、ステップS102の処理の終了後、ステップS103において、コントローラ21は、メインClip、サブClip、およびテキストサブタイトルデータ(Text-STデータ)を読み出す。具体的には、コントローラ21は、PlayListに含まれるPlayItemに基づいて、メインClipを読み出す。また、コントローラ21は、PlayListに含まれるSubPathで参照される、SubPlayItemに基づいて、サブClipと、テキストサブタイトルデータを読み出す。
ステップS104において、コントローラ21は、読み出したデータ(メインClip、サブClip、およびテキストサブタイトルデータ)を対応するバッファ51乃至54に供給するようスイッチ41を制御する。具体的には、コントローラ21は、バックグラウンドイメージデータをバッファ51に供給し、メインClipのデータをバッファ52に供給し、サブClipのデータをバッファ53に供給し、Text-STのデータをバッファ54に供給するようスイッチ41を切り替える。
ステップS105において、スイッチ41はコントローラ21からの制御に基づいて、スイッチ41を切り替える。これにより、バックグラウンドイメージデータはバッファ51に供給され、メインClipのデータはバッファ52に供給され、サブClipのデータはバッファ53に供給され、テキストサブタイトルデータはバッファ54に供給される。
ステップS106において、各バッファ51乃至54は、供給されたデータをそれぞれバッファリングする。具体的には、バッファ51は、バックグラウンドイメージデータをバッファリングし、バッファ52は、メインClipのデータをバッファリングし、バッファ53は、サブClipのデータをバッファリングし、バッファ54は、Text-STデータをバッファリングする。
ステップS107において、バッファ51は、バックグラウンドイメージデータをバックグラウンドデコーダ71に出力する。
ステップS108において、バッファ52はメインClipのストリームデータをPIDフィルタ55に出力する。
ステップS109において、PIDフィルタ55は、メインClip AVストリームファイルを構成するTSパケットに付されているPIDに基づいて、各エレメンタリストリームのデコーダへ振り分ける。具体的には、PIDフィルタ55は、ビデオストリームをPIDフィルタ60に供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームを1stオーディオデコーダ75−1への供給元となるスイッチ59に供給する。すなわち、ビデオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム、およびオーディオストリームには、それぞれ異なるPIDが付されている。PIDフィルタ60は、コントローラ21の制御に基づいて、プライマリビデオストリームを1stビデオデコーダ72−1に供給し、セカンダリビデオストリームを2ndビデオデコーダ72−2に供給する。
ステップS110において、バッファ53は、サブClipのストリームデータをPIDフィルタ56に出力する。
ステップS111において、PIDフィルタ56は、PIDに基づいて、各エレメンタリストリームのデコーダへ振り分ける。具体的には、PIDフィルタ56は、供給されたビデオストリームをPIDフィルタ60へ供給し、プレゼンテーショングラフィックスストリームをプレゼンテーショングラフィックスデコーダ73への供給元となるスイッチ57に供給し、インタラクティブグラフィックスストリームをインタラクティブグラフィックスデコーダ74への供給元となるスイッチ58に供給し、オーディオストリームを1stオーディオデコーダ75−1と2ndオーディオデコーダ75−2への供給元となるスイッチ59に供給する。PIDフィルタ60は、コントローラ21の制御に基づいて、プライマリビデオストリームを1stビデオデコーダ72−1に供給し、セカンダリビデオストリームを2ndビデオデコーダ72−2に供給する。
ステップS112において、PIDフィルタ55およびPIDフィルタ56の後段のスイッチ57乃至59およびPIDフィルタ60は、ユーザインターフェースを介するコントローラ21からの制御に基づいて、メインClip とサブClipのいずれかを選択する。具体的には、スイッチ57は、PIDフィルタ55から供給されたメインClipまたはサブClipのプレゼンテーショングラフィックスストリームを選択し、後段のプレゼンテーショングラフィックスデコーダ73に供給する。また、スイッチ58は、PIDフィルタ55から供給されたメインClipまたはサブClipのインタラクティブグラフィックスストリームを選択し、後段のインタラクティブグラフィックスストリームデコーダ74に供給する。さらに、スイッチ59は、PIDフィルタ55から供給されたメインClip、または、PIDフィルタ56から供給されたサブClipのオーディオストリームを選択し、後段の1stオーディオデコーダ75−1に供給する。なお、音声を切り替えるような指令がユーザにより行われた場合には、スイッチ59は、メインClipのオーディオストリームを2ndオーディオデコーダ75−2に供給したり、サブClipのオーディオストリームを1stオーディオデコーダ75−1や2ndオーディオデコーダ75−2に供給する場合もあるが、ここでは、音声が切り替えられる前の再生処理について説明しているので、その説明は省略している。
ステップS113において、バッファ54は、テキストサブタイトルデータをテキストサブタイトルコンポジション76に出力する。
ステップS114において、バックグラウンドデコーダ71は、バックグラウンドイメージデータをデコードし、これをバックグラウンドプレーン生成部91に出力する。
そして、ステップS115において、1stビデオデコーダ72−1は、供給されたプライマリビデオストリームをデコードし、これをビデオプレーン生成部92に出力する。
ステップS116において、2ndビデオデコーダ72−2は、供給されたセカンダリビデオストリームをデコードし、これをビデオプレーン生成部92に出力する。
ステップS117において、プレゼンテーショングラフィックスデコーダ73は、スイッチ57により選択され、供給されたプレゼンテーショングラフィックスストリームをデコードし、これを後段のスイッチ77に出力する。
ステップS118において、インタラクティブグラフィックスデコーダ74は、スイッチ58により選択され、供給されたインタラクティブグラフィックスストリームをデコードし、これを後段のスイッチ78に出力する。
ステップS119において、1stオーディオデコーダ75−1は、スイッチ59により選択され、供給されたプライマリオーティオストリームをデコードし、これを後段のミキシング処理部101に出力する。
ステップS120において、2ndオーディオデコーダ75−2は、スイッチ59により選択され、供給されたセカンダリオーティオストリームをデコードし、これを後段のミキシング処理部101に出力する。
ステップS121において、Text-STコンポジション76は、プライマリまたはセカンダリのうち、表示されるテキストサブタイトルデータをデコードし、これを後段のスイッチ77に出力する。
ステップS122において、コンポジションバッファ64は、アニメーションスケジューラ65の制御に基づいて、アニメーションが表示されるか否かを判断する。
ステップS122において、アニメーションが表示されると判断された場合、ステップS123において、図29のフローチャートを用いて後述するアニメーション生成処理が実行される。
ステップS122において、アニメーションが表示されないと判断された場合、または、ステップS123の処理の終了後、ステップS124において、スイッチ77は、プレゼンテーショングラフィックスデコーダ73、または、Text-STコンポジション76のいずれかから出力されるデータを選択する。具体的には、スイッチ77は、プレゼンテーショングラフィックスデコーダ73によりデコードされたプレゼンテーショングラフィックスストリーム、Text-ST(テキストサブタイトルデータ)のうち、表示出力されるものを選択し、選択したデータをプレゼンテーショングラフィックスプレーン生成部93に供給する。
ステップS125において、スイッチ78は、インタラクティブグラフィックスデコーダ74、または、コンポジションバッファ64からのデータのいずれかを選択する。具体的には、スイッチ78は、インタラクティブグラフィックスデコーダ74によりデコードされたプインタラクティブグラフィックスストリーム、および、コンポジションバッファ64で生成されるアニメーションデータのうち、表示出力されるものを選択し、選択したデータをインタラクティブグラフィックスプレーン生成部94に供給する。なお、コンポジションバッファ64にアニメーションデータが供給されている場合、アニメーションの表示タイミングであるので、スイッチ78は、コンポジションバッファ64から供給されるアニメーションデータをインタラクティブグラフィックスプレーン生成部94に供給する。
ステップS126において、バックグラウンドプレーン生成部91は、バックグラウンドデコーダ71から供給されたバックグラウンドイメージデータに基づいて、バックグラウンドプレーンを生成する。
ステップS127において、ビデオプレーン生成部92は、1stビデオデコーダ72−1および2ndビデオデコーダ72−2から供給されたビデオデータを合成して、ビデオプレーンを生成し、これをビデオデータ処理部96に供給する。
ステップS128において、プレゼンテーショングラフィックスプレーン生成部93は、ステップS124の処理でスイッチ77により選択され、供給された、プレゼンテーショングラフィックスデコーダ73からのデータ、または、Text-STコンポジション76からのデータに基づいて、プレゼンテーショングラフィックスプレーンを生成する。
ステップS129において、インタラクティブグラフィックスプレーン生成部94は、ステップS125の処理においてスイッチ78により選択されて供給された、インタラクティブグラフィックスデコーダ74から供給されたインタラクティブグラフィックスストリームのデータ、または、コンポジションバッファ64から供給されたアニメーションデータに基づいて、インタラクティブグラフィックスプレーンを生成する。
ステップS130において、バッファ95は、ステップS105の処理で選択され、供給されたサウンドデータをバッファリングし、所定のタイミングでミキシング処理部97に供給する。
ステップS131において、ビデオデータ処理部96は、各プレーンのデータを合成し、出力する。具体的には、バックグラウンドプレーン生成部91、ビデオプレーン生成部92、プレゼンテーショングラフィックスプレーン生成部93、およびインタラクティブグラフィックスプレーン生成部94からのデータを合成し、ビデオデータとして出力する。
ステップS132において、ミキシング処理部101は、1stオーディオデコーダ75−1から出力されたプライマリオーディオデータ、および、2ndオーディオデコーダ75−2から出力されたセカンダリオーディオデータを合成し、ミキシング処理部97に供給する。
ステップS133において、ミキシング処理部97は、ミキシング処理部101から出力された、合成されたオーディオデータとサウンドデータをミキシング(合成)し、出力する。
ステップS134において、コントローラ21は、読み込んだPlayListを参照して、再生終了か否かを判断する。ステップS134において、再生終了ではないと判断された場合、処理は、ステップS104に戻り、それ以降の処理が繰り返される。ステップS134において、再生終了であると判断された場合、処理は終了される。
このような処理により、光ディスク11またはローカルストレージ24に記録されているAVストリームの音声データ、映像データ、並びに、必要に応じて、テキスト字幕ファイルのテキストデータ、効果音の音声データ、または、アニメーションを表示させるための画像データ(アニメーションフレームのデータ)などを、デコードして再生出力することが可能となる。
次に、図28のフローチャートを参照して、図25のステップS102において実行される、アニメーション表示準備処理について説明する。
ステップS161において、プリロードバッファ61は、スイッチ41から供給されたアニメーションフレームをすべて読み込んでバッファリングする。
ステップS162において、アニメーションデコーダ62は、プリロードバッファ61に読み込まれてバッファリングされているアニメーションフレームをデコードし、デコード済みオブジェクトバッファ63に供給する。
ステップS163において、デコード済みオブジェクトバッファ63は、デコードされたアニメーションフレームを保持し、処理は、図25のステップS102に戻り、ステップS103に進む。
このような処理により、再生のためのデコード処理のタイミングの予測が困難なメインクリップのビデオデータに同期してアニメーションを再生させるために、アニメーションフレームを、予めバッファリングしてデコードしておき、デコード済みオブジェクトバッファ63に蓄積することができる。
次に、図29のフローチャートを参照して、図27のステップS123において実行される、アニメーション生成処理について説明する。
ステップS201において、アニメーションスケジューラ65は、図示しないSTCカウンタを参照して、ビデオ同期信号をチェックする。
ステップS202において、アニメーションスケジューラ65は、現在の時刻がアニメーション開始時刻よりも“T3+T4”早い時刻であるか否か、すなわち、図18を用いて説明した、デコード済みオブジェクトバッファ63からコンポジションバッファ64へデコード済みのアニメーションフレームの転送が開始されるよりもアニメーション表示開始直前の画像データのバックアップにかかる時間だけ早い時刻であるか否かを判断する。
ステップS202において、現在の時刻がアニメーション開始時刻よりも“T3+T4”早い時刻であると判断された場合、ステップS203において、コンポジションバッファ64は、インタラクティブグラフィックスプレーン生成部94から、アニメーション表示開始直前の画像データを、アニメーション表示の下絵としてバックアップする。
ステップS202において、現在の時刻がアニメーション開始時刻よりも“T3+T4”早い時刻ではないと判断された場合、または、ステップS203の処理の終了後、ステップS204において、アニメーションスケジューラ65は、アニメーション開始時刻よりも”T4”早い時刻と終了時刻との間の時刻であるか、すなわち、アニメーションフレームをビデオフレームと同期して出力する必要がある時刻であるか否かを判断する。
ステップS204において、アニメーション開始時刻よりも”T4”早い時刻と終了時刻との間の時刻であると判断された場合、ステップS205において、アニメーションスケジューラ65は、デコード済みオブジェクトバッファ63に、表示させるアニメーションフレームが存在するか否かを判断する。
ステップS205において、アニメーションフレームが存在すると判断された場合、ステップS206において、デコード済みオブジェクトバッファ63は、アニメーションスケジューラ65の制御に基づいて、アニメーションフレームの対象画像を切り出す。
ステップS207において、デコード済みオブジェクトバッファ63は、ビデオバッファと同一のSTCカウンタを参照しているアニメーションスケジューラ65の制御に基づいて、アニメーションフレームの対象画像をコンポジションバッファ64へ転送(またはコピー)する。
ステップS208において、コンポジションバッファ64は、ステップS203の処理によりバックアップされている下絵と、ステップS207の処理により転送(またはコピー)されたアニメーションフレームの対象画像とをアルファ合成する。
ステップS209において、コンポジションバッファ64は、合成された画像をインタラクティブグラフィックスプレーン生成部94に出力するために、スイッチ78に供給し、処理は、図27のステップS123に戻り、ステップS124に進む。
ステップS204において、アニメーション開始時刻よりも”T4”早い時刻と終了時刻との間の時刻ではないと判断された場合、または、ステップS205において、アニメーションフレームが存在しないと判断された場合、処理は、図27のステップS123に戻り、ステップS124に進む。
このような処理により、予めバッファリングされてデコードされたアニメーションフレームが、ビデオデータと同期して表示出力される。
次に、図30のフローチャートを参照して、繰り返し再生、または、再生開始位置指定再生処理について説明する。
ステップS251において、コントローラ21は、操作入力部29から供給される信号を基に、ユーザから、繰り返し再生、または、再生開始位置指定再生処理の開始の指令を受けたか否かを判断する。ステップS251において、繰り返し再生、または、再生開始位置指定再生処理の開始の指令を受けていないと判断された場合、繰り返し再生、または、再生開始位置指定再生処理の開始の指令を受けたと判断されるまで、ステップS251の処理が繰り返される。
ステップS251において、繰り返し再生、または、再生開始位置指定再生処理の開始の指令を受けたと判断された場合、ステップS252において、コントローラ21は、対応する再生部分のプレイリストを参照することにより、アニメーション表示が行われるか否かを判断する。
ステップS252において、アニメーション表示が行われないと判断された場合、ステップS253において、コントローラ21は、デコーダ26の各部を制御して、アニメーションの表示なしに再生処理、すなわち、図25乃至図27を用いて説明した再生処理のうち、アニメーション部分に関係しない処理と同様の処理を実行し、処理が終了される。
ステップS252において、アニメーション表示が行われると判断された場合、ステップS254において、コントローラ21は、対応する部分のアニメーション表示準備処理(図28)は終了されているか否かを判断する。
ステップS254において、アニメーション表示準備処理が終了されていないと判断された場合、ステップS255において、図28を用いて説明したアニメーション表示準備処理が実行される。
ステップS254において、アニメーション表示準備処理が終了されていると判断された場合、または、ステップS255の処理の終了後、ステップS256において、コントローラ21は、操作入力部29から供給される信号を基に、再生開始点を取得する。
ステップS257において、コントローラ21は、デコード済みのアニメーションデータを用いて再生処理、すなわち、図25乃至図27を用いて説明した再生処理のうち、ステップS103以降の処理と同様の処理を実行して、処理が終了される。
このような処理により、一度アニメーション準備処理が実行された部分の再生が行われるときには、対応する部分のデコード済みのバッファリングされたアニメーションデータを用いることができるので、迅速に、簡単に、繰り返し再生や再生開始位置指定再生処理を行うことができる。
なお、図30のフローチャートを参照して説明した、繰り返し再生、または、再生開始位置指定再生処理においては、一度アニメーション準備処理が実行された部分の再生が行われるときには、対応する部分のデコード済みのバッファリングされたアニメーションデータを用いるものとして説明したが、例えば、コンポジションバッファ64においてアルファ合成されたフレームデータがコンポジションバッファ64に蓄積されていた場合(コンポジションバッファ64からスイッチ78にデータが転送されずに、コピーされていた場合)、コンポジションバッファ64に蓄積されているアルファ合成されたフレームデータを再利用して繰り返し再生や再生開始位置指定再生処理を行うようにすることも可能である。
このようにして、例えば、Java(登録商標)などを用いて記述されたアニメーションフレームを、ストリームデータとして再生装置1で再生されるビデオデータと同期して再生させることができる。
また、本発明を適用した場合、従来、MPEG2 Transport Streamの形式のビデオフレームと同期するグラフィックスを表示させるために用いられていたHDMV graphics streamを採用した場合と比較して、アニメーションデータの画像フォーマットおよび圧縮形式が制限されないため、同期再生される画像のフォーマットをフレキシブルに導入することができる。また、オーサリングは、アプリケーションプログラム中でAPIを呼び出すだけのシンプルなものになる。
このように、本発明を適用した再生装置1においては、例えば、JPEG画像などの汎用グラフィックスオブジェクトと制御APIの定義により、フレーム同期型アニメーションを低開発コストで提供できるシステムを提案することができる。API駆動であるため、コンテンツの提供者や作成者は、MPEG2 Transport Stream などの専門知識なしに、ビデオ同期型アニメーションを作成し、配布できることができる。
また、すでに配布済みのコンテンツに対して、アニメーションデータを、例えば、インターネットなどのネットワーク2を介して後日配布し、同期して再生させるようにすることなども容易であり、後日配布されるデータの生成には、MPEG2 Transport Stream などの専門知識をまったく必要とされない。
次に、図31および図32を参照して、再生装置20において再生可能なデータが記録された記録媒体21の製造方法について、記録媒体21がディスク状の記録媒体だった場合を例として説明する。
即ち、図31に示すように、例えばガラスなどよりなる原盤が用意され、その上に、例えばフォトレジストなどよりなる記録材料が塗布される。これにより、記録用原盤が製作される。
そして、図32に示すように、ソフト製作処理部において、符号化装置(ビデオエンコーダ)で符号化された、再生装置20において再生可能な形式のビデオデータが、一時バッファに記憶され、オーディオエンコーダで符号化されたオーディオデータが、一時バッファに記憶されるとともに、更に、データエンコーダで符号化された、ストリーム以外のデータ(例えば、Indexes、PlayList、PlayItemなど)が一時バッファに記憶される。それぞれのバッファに記憶されたビデオデータ、オーディオデータ、および、ストリーム以外のデータは、多重化器(MPX)で同期信号と共に多重化され、誤り訂正符号回路(ECC)でエラー訂正用のコードが付加される。そして、変調回路(MOD)で所定の変調がかけられ、所定のフォーマットにしたがって、例えば磁気テープなどに一旦記録され、再生装置20において再生可能な記録媒体21に記録されるソフトウェアが製作される。
このソフトウェアを必要に応じて編集(プリマスタリング)し、光ディスクに記録すべきフォーマットの信号が生成される。そして、図31に示すように、この記録信号に対応して、レーザビームが変調されて、このレーザビームが原盤上のフォトレジスト上に照射される。これにより、原盤上のフォトレジストが記録信号に対応して露光される。
その後、この原盤を現像し、原盤上にピットを出現させる。このようにして用意された原盤に、例えば電鋳等の処理を施し、ガラス原盤上のピットを転写した金属原盤を製作する。この金属原盤から、さらに金属スタンパを製作し、これを成形用金型とする。
この成形用金型に、例えばインジェクションなどによりPMMA(アクリル)またはPC(ポリカーボネート)などの材料を注入し、固定化させる。あるいは、金属スタンパ上に2P(紫外線硬化樹脂)などを塗布した後、紫外線を照射して硬化させる。これにより、金属スタンパ上のピットを、樹脂よりなるレプリカ上に転写することができる。
このようにして生成されたレプリカ上に、反射膜が、蒸着あるいはスパッタリングなどにより形成される。あるいはまた、生成されたレプリカ上に、反射膜が、スピンコートにより形成される。
その後、このディスクに対して内外径の加工が施され、2枚のディスクを張り合わせるなどの必要な処置が施される。さらに、ラベルを貼り付けたり、ハブが取り付けられて、カートリッジに挿入される。このようにして再生装置20によって再生可能なデータが記録された記録媒体21が完成する。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
このプログラム格納媒体は、図1に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア28などにより構成される。
また、本明細書において、プログラム格納媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 再生装置, 11 光ディスク, 21 コントローラ, 22 光ディスクドライブ, 23 メモリ, 24 ローカルストレージ, 26 デコーダ, 31 メニュー画面表示制御部, 32 操作入力取得部, 33 データ取得部, 34 ローカルストレージディレクトリ管理部, 35 光ディスクディレクトリ管理部, 66 ファイルシステムマージ処理部, 37 再生制御部, 33 AVデコーダ部, 34 コントローラ, 41 スイッチ, 51乃至54 バッファ, 55,56 PIDフィルタ, 57乃至59 スイッチ, 61 プリロードバッファ, 62 アニメーションデコーダ, 63 デコード済みオブジェクトバッファ, 64 コンポジションバッファ, 65 アニメーションスケジューラ, 71 バックグラウンドデコーダ, 72−1 1stビデオデコーダ, 72−2 2ndビデオデコーダ, 73 プレゼンテーショングラフィックスデコーダ, 74 インタラクティブグラフィックスデコーダ, 75 オーディオデコーダ, 76 Text-STコンポジション, 77,78 スイッチ, 91 バックグラウンドプレーン生成部, 92 ビデオプレーン生成部, 93 プレゼンテーショングラフィックスプレーン生成部, 94 インタラクティブグラフィックスプレーン生成部, 95 バッファ, 96 ビデオデータ処理部, 97 ミキシング処理部, 101 ミキシング処理部, 151 バックグラフィックスプレーン, 152 フロントグラフィックスプレーン, 153 バッファリング制御部