以下、図を参照して、本発明の実施の形態について説明する。
図1は、再生装置1の構成例を示すブロック図である。
コントローラ21は、予め用意されている制御プログラムを実行するか、または、光ディスクドライブ22を制御して光ディスク11に記録されているナビゲーションプログラム(後述)を読み出し、メモリ23に展開して実行することで、再生装置1の全体の動作を制御する。例えば、コントローラ21は、光ディスク11が装着されたとき、所定のメニュー画面を外部の表示装置に表示させることができる。
光ディスクドライブ22は、コントローラ21による制御にしたがって、光ディスク11からデータを読み出し、読み出したデータを、コントローラ21、メモリ23、または、デコーダ26に出力する。光ディスク11から読み出された情報が、ナビゲーションプログラムや、コンテンツの再生を制御するために用いられる情報(例えば、図2を用いて後述するPlayList)などであった場合、光ディスクドライブ22により読み出された情報は、コントローラ21、または、メモリ23に出力される。光ディスク11から読み出された情報が、AVストリームやテキストデータであった場合、光ディスクドライブ22により読み出された情報は、デコーダ26に出力される。
また、光ディスクドライブ22は、ナビゲーションプログラムを実行するコントローラ21による制御にしたがって、光ディスク11に記録されている情報の一部を読み出し、ローカルストレージ24に供給してコピーさせることができる。
図2は、本発明を適用した再生装置1に装着される光ディスク11のアプリケーションフォーマットの例を示す図である。なお、再生装置1に装着される記録媒体は、光ディスク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に実行させるためのプログラムである。また、ナビゲーションプログラムは、各種の再生の実行をユーザが指示するためのメニュー画面を表示する機能や、光ディスク11に記録されているデータのうちの少なくとも一部をローカルストレージ24にコピーさせ、更に、ローカルストレージ24にコピーされたデータを光ディスク11に記録されているデータと同様にして再生させるために必要なファイル管理情報(後述するmanifestファイル)を生成または更新する機能なども有する。このナビゲーションプログラムは、例えば、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)などより構成される。なお、ローカルストレージ24は、HDD以外にも、例えば、半導体メモリなどにより構成するようにしてもよく、半導体メモリなどにより構成されたローカルストレージ24を再生装置1から着脱可能なようにしても良い。
インターネットインタフェース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のいずれかを映画の字幕として再生表示することが可能となる。すなわち、ユーザは、表示装置に表示されるメニュー画面に記載される表示可能な字幕の言語から所望の言語を選択することで、英語とアラビア語のうちの所望する言語の字幕によって映画を視聴することができる。
また、再生装置1においては、光ディスク11に記録されているデータのうちの少なくとも一部をローカルストレージ24にコピーすることができる。図5は、光ディスク11からローカルストレージ24へのファイルコピーが行われた状態について説明するための図である。
図5に示されるように、例えば、光ディスク11には、メインパスを表すPlayItemにより参照されるAV Streamを含むClip1と、サブパスを表すSubPlayItemにより参照されるSubAV Streamを含むClip2とが予め記録されており、PlayItemおよびSubPlayItemによりAV StreamとSubAV Streamとは同期して再生されるようになされていた。ここで、光ディスクドライブ22の読み出しレートと、AV StreamおよびSubAV Streamの再生レートとによっては、再生に読み出しが追いつかない場合が生じてしまう。
そこで、再生装置1においては、光ディスク11に記録されているClip2を予めローカルストレージ24にコピーしておき、SubPlayItemが光ディスク11のClip2ではなく、ローカルストレージ24のClip2を参照して読み出すことができるようになされている。具体的には、SubPlayItemが光ディスク11のClip2ではなく、ローカルストレージ24のClip2を参照して読み出すためには、光ディスク11のファイルシステムとローカルストレージ24のファイルシステムに基づいて、後述する仮想ファイルシステムが構築される必要があり、そのためには、後述するmanifestファイルが生成または更新されて、ローカルストレージ24に記憶される。仮想ファイルシステムおよびmanifestファイルについては後述する。
なお、光ディスク11に記録されるAVストリームは、図6に示すような、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パケットは、トランスポートパケットにパケット化される。
図7は、図1のコントローラ21の機能構成例を示すブロック図である。
図7の各構成は、予め用意されている制御プログラムがコントローラ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、および、ファイルコピー制御部38に出力される。また、光ディスクディレクトリ管理部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ストリームの音声データ、映像データ、および、必要に応じてテキスト字幕ファイルのテキストデータのデコード(再生)を行わせる。
ファイルコピー制御部38は、光ディスク11からローカルストレージ24へのファイルのコピー処理を制御する。また、ファイルコピー制御部38は、インターネットインタフェース25またはドライブ27により取得される、manifestファイルを伴わないデータファイルのローカルストレージ24への記憶処理も制御することができる。
マニフェストファイル生成・更新処理部39は、光ディスク11からローカルストレージへのファイルのコピー処理が実行される場合、ナビゲーションプログラムが認識可能なようになされている登録情報、または、光ディスクディレクトリ管理部35により検出される、光ディスク11のディレクトリ構造を基に、manifestファイルを生成するか、または、生成された、もしくは、すでに存在するmanifestファイルを更新する処理を制御する。更に、マニフェストファイル生成・更新処理部39は、インターネットインタフェース25またはドライブ27により取得される、manifestファイルを伴わないデータファイルのローカルストレージ24への記憶処理が実行される場合にも、manifestファイルを生成するか、または、生成された、もしくは、すでに存在するmanifestファイルを更新する処理を制御することができる。manifestファイルの詳細については、後述する。
ここで、ファイルシステムマージ処理部36により行われる、光ディスク11のファイルシステムと、サーバ3からダウンロードされたり、リムーバブルメディア28からコピーされたり、または、光ディスク11からコピーされるなどによりローカルストレージ24に記録されたデータ群を管理するファイルシステムのマージについて説明する。
このマージは、例えば、光ディスク11が再生装置に装着されたとき、光ディスク11に記録されているコンテンツの再生が指示されたとき、光ディスク11またはローカルストレージ24に記録されているいずれかのデータの入出力が指令されたとき、または、ユーザによりマージが指令されたときなどに行われる。
再生装置1のシステムが持つネイティブなファイルシステム(光ディスク11またはローカルストレージ24に実際に記録されているデータのファイルシステム)の上位レイヤとして、仮想ファイルシステムが定義される。すなわち、図8に示されるように、サーバ3から新たなデータをダウンロードして、ローカルディスク24に記録させたり、光ディスク11またはローカルストレージ24に実際に記録されているデータを再生する処理を実行するアプリケーションプログラム、または、そのアプリケーションプログラムを扱うユーザが認識可能なのは、上位レイヤである仮想ファイルシステムのみである。換言すれば、仮想ファイルシステムは、ネイティブなファイルシステムを抽象化し、再生装置1内の物理デバイスやオペレーティングシステムなどのネイティブな構造を隠蔽するために構築される。
仮想ファイルシステムの役割は、主に、物理デバイス(光ディスク11またはローカルストレージ24)におけるファイル/ディレクトリをマウントして、ユーザから認識される仮想ディスク(Virtual Disc)のファイルシステムを構成することと、アプリケーションプログラムに対して、構築された仮想ディスクへのファイルアクセスAPIを提供することである。
例えば、ユーザが、光ディスク11またはローカルストレージ24に記録されているいずれかのファイルへのアクセスを要求する操作入力を行った場合、図9に示されるように、アプリケーションプログラムには、仮想ファイルシステムのみしか認識できない。そして、実際の物理デバイスである光ディスク11またはローカルストレージ24に記録されているローカルファイルシステム#1、ローカルファイルシステム#2、または、光ディスク11内のファイルシステムの構造は、アプリケーションプログラムと、アプリケーションプリグラムを取り扱うユーザから隠蔽されるとともに、仮想ファイルシステムを介して、アクセス可能なようになされている。
図9に示されるファイルアクセス要求を実行するために、再生装置1のアプリケーションプログラムは、仮想ファイルシステムが提供するファイル入出力のAPI(Application Programming Interface)を呼び出すことにより、ディスクドライブの物理的な構成やファイルシステムのソフトウェア構成などを意識することなく、光ディスク11またはローカルストレージ24に実際に記録されているデータにアクセスすることができる。すなわち、仮想ファイルシステムのAPIは、実際には、再生装置1の内部でネイティブなファイルシステムのAPIを呼び出している。
仮想ファイルシステムは各種のAPIを提供しており、例えば、指定したファイルを開くopen()、指定したファイルを閉じるclose()、指定したファイルの読み出し位置または書き込み位置を設定するseek()、指定したファイルの状態を取得するstat()、指定したファイルを読み出すread()、指定したファイルを書き込むwrite()などのAPIが提供される。再生制御部39などにより実行されるアプリケーションプログラムは、これらのAPIを利用して、光ディスク11またはローカルストレージ24に記録されているファイルを操作する。
また、仮想ファイルシステムは、ローカルストレージ24のディスク領域を分割管理する機能を持つ。ローカルストレージ24のディスク領域は、例えば、図10に示されるように、author_idごとに分割されたディレクトリ構造を有し、author_id直下のディレクトリであるdisc_id以下は、コンテンツオーサにより、フレキシブルなファイル/ディレクトリ構造を構成することができる。ローカルストレージ24に記憶されるデータが、ローカルストレージ24のディスク領域のどこに配置されるか、すなわち、ダウンロードされるファイルのファイル/ディレクトリ構造は、ダウンロードされるデータに含まれるファイル管理情報(後述するManifestファイル)の記述により指定される。
ローカルストレージ24のファイル/ディレクトリ構造において、ディレクトリを分割するauthor_idは、対応する光ディスクにおける仮想ファイルシステムの構築に用いるための識別子であり、disc_idは、同一のauthor_idに対応付けられるそれぞれのコンテンツを識別するための識別子であり、author_idと同様に、対応する光ディスクにおける仮想ファイルシステムの構築に用いられる。author_idおよびdisc_idは、それぞれ、ダウンロードされるデータのファイル管理情報(後述するManifestデータ)に含まれるか、または、マニフェストファイル生成・更新処理部39および光ディスクディレクトリ管理部35により、光ディスク11から検出される情報である。
author_idは、例えば、コンテンツの配給元(コンテンツオーサ)や、コンテンツの製作元などの組織や団体ごとに与えられるようにしても良いし、複数のこれらの組織や団体で、1つのauthor_idを利用するようにしても良いし、1つのこれらの組織や団体が、複数のauthor_idを利用するようにしても良い。また、disc_idは、1つの光ディスク11に1つのコンテンツが記録されていることを想定した場合、1つの光ディスク11に1つ対応付けられるものであるが、例えば、1つの光ディスク11に複数のコンテンツが記録され、それらのコンテンツにそれぞれdisc_idが対応付けられるようにしても良い。このように、author_idおよびdisc_idがどのように用いられるものであっても、仮想ファイルシステムは、それぞれのidを基に構築される。ファイル管理情報(Manifestファイル)並びに、author_idおよびdisc_idについては後述する。
これに対して、アプリケーションからアクセス可能な仮想ディスクのディレクトリ/ファイル構造は、光ディスク11のディレクトリ/ファイル構造に従うようになされている。すなわち、再生装置1に装着された光ディスク11に対して、対応するauthor_idおよびdisc_id以下のデータのファイル構造が、光ディスク11に記録されているデータのファイル構造とマージされ、光ディスク11のディレクトリ/ファイル構造に基づいたディレクトリ/ファイル構造を有する仮想ディスクの仮想ファイルシステムが構成される。
また、仮想ファイルシステムは、ディレクトリおよびファイルの管理機構のほかに、disc単位でファイル管理情報、すなわち、後述するManifestファイルを管理する機能を持つ。仮想ファイルシステムが、ネイティブなファイルシステムのファイルモデルに対して、メタデータとしてファイル管理情報であるManifestファイルのフィールドを定義する目的は、ユーザに対して、実際にローカルディスク24に記録されているファイルのパスまたはファイル名を提示するのではなく、コンテンツ内容を表現した名称を提供することと、ダウンロード処理において同一ファイルの二重更新を防止することと、仮想ファイルシステム内でのパス名称、すなわち、光ディスク11再生時におけるパス名称を定義することとの3つである。
そして、仮想ファイルシステムは、メタデータ管理のために、Manifestファイルとメタデータ操作手続きの、二つの機能を提供する。Manifestファイルとは、ダウンロードされたファイルの各種属性を示すメタデータであり、Manifest()は、対応するファイル単位で保存しても、1つのファイルにマージして、Manifest()セクションの識別子であるmanifest_id(図11において後述)をキーに識別可能なようにしてもよい。いずれの形態であっても、ここでは、Manifestファイルと総称する。ローカルストレージ24にダウンロードされたファイルを保持している再生装置1は、Manifestファイルを保持していなければならない。また、Manifestファイルは、XMLに代表されるタグ付言語によるテキスト表現をとることも可能である。
図11は、Manifestファイルのシンタックスを示す図である。
manifest_idは、このManifest()セクションの識別子である。
author_idは、対応する光ディスクにおける仮想ファイルシステムの構築に用いる識別子を指定するためのフィールドである。この識別子は、図17を用いて後述する、コンテンツ配布用ファイルのauthor_idフィールドを参照することで決定され、アプリケーションプログラムまたはユーザは、このフィールドに自由に値を設定することはできない。
disc_idは、同一のauthor_idに対応付けられるそれぞれのコンテンツを一意に識別するための識別子を指定するためのフィールドである。disc_idも、author_idと同様に、対応する光ディスクにおける仮想ファイルシステムの構築に用いられる。この識別子は、図17を用いて後述する、コンテンツ配布用ファイルのdisc_idフィールドを参照することで決定され、アプリケーションプログラムまたはユーザは、本フィールドに自由に値を設定することはできない。
次に、permissionは、ユーザに対して可視属性にしてよいか、不可視属性にしておくか、または、ファイルの上書きを禁止するか否かなどの許認可情報をコンテンツオーサが指定するためのフィールドである。なお、permissionの情報は、Manifestファイル以外のいずれかのファイルに記載されたり、または、独立したファイルとして構成されるものとしてもよい。
図12に、図11のManifest()に含まれるpermissionに指定可能な値の一覧を示す。
図12に示されるように、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には、同一名称を指定することもできる。
そして、credentialには、src_file_nameにおいて指定されているファイルが、異なるauther_idのディレクトリ下にある場合に、ファイルアクセス権限をチェックするための情報が記載されている。このことにより、ローカルストレージ24においては、複数のauther_id以下のディレクトリでコンテンツファイルを共有することが可能となる。
次に、メタデータ操作手続きについて説明する。
仮想ファイルシステムは、アプリケーションプログラムまたはユーザに対して、Manifest()のファイル名称、ファイル位置、または、物理構造などを公開せずに、Manifest()の内容を読み出すためのAPIを定義している。
すなわち、アプリケーションプログラム、または、再生装置1で実行されるレジデント(常駐)プログラムは、以下のAPIを呼び出すことにより間接的にManifest()にアクセスすることができる。
getProperty
引数1:
文字列型データ
メタデータ操作の対象となるファイルの絶対パス名称
引数2:
文字列型データ
読み出したいメタデータの要素名
戻り値:
文字列型データ
引数で指定した要素に対応するメタデータ
機能:
Manifest()からメタデータを読み出す。
なお、実際には、型情報などの詳細なAPIの定義は、再生装置1のソフトウェア実行環境のプログラミング言語仕様に依存して変更されなければならない。
図13は、光ディスク11のファイルシステムの例を示す図である。図13に示されるように、光ディスク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に記録されているコンテンツを再生させることができる。
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ストリームファイルやサブストリームファイルとは独立して利用されるデータなどのファイルが格納される。図13の例においては、AUXDATAディレクトリには、「11111.otf」の名前がつけられている字幕のフォントのファイル、「sound.bdmv」の名前が設定された効果音が格納されている。
また、光ディスク11には、識別子であるauthor_id、および、disc_idが、ユーザなどにより書き換えることができないセキュアな電子データとして、または、物理的にピットによって記録されている。
図14は、ローカルストレージ24のファイルシステムの例を示す図である。図14に示されるように、ローカルストレージ24のファイルシステムもディレクトリ構造を有している。
ローカルストレージ24の「root」の下には、少なくとも1つの「author_id」の名前が設定されたディレクトリが用意され、「author_id」ディレクトリの下には、少なくとも1つの「disc_id」の名前が設定されたディレクトリが用意されている。「author_id」および「disc_id」は、仮想ファイルシステムの構築に用いられるものであり、ローカルストレージ24の「root」の下のそれぞれの、「author_id」に含まれる全ての「disc_id」は、それぞれが区別可能なように、異なるものとされる。そして、「disc_id」のディレクトリには、Manifest()セクションの集合、または、1つのManifest()セクションからなるManifestファイルが含まれている。そして、それ以外のディレクトリやファイルの構造は、コンテンツオーサにより自由に設定可能であり、例えば、図13を用いて説明した光ディスク11のディレクトリ/ファイル構造と同様のものであっても良いし、図14に示されるように、図13を用いて説明した光ディスク11のディレクトリ/ファイル構造とまったく異なるものであっても良い。
例えば、図14においては、「disc_id」のディレクトリには、Manifestファイル以外に、「MainMovie」ディレクトリ、「SubTitle」ディレクトリ、「AUXDATA」ディレクトリなどの複数のフォルダが設定され、これらのディレクトリは、更に、フォルダ、または、ファイルを含むことができる。
図14に示されるローカルストレージ24のディレクトリ/ファイル構造は、再生装置1において実行されるアプリケーションプログラム、または、ユーザから隠蔽されている。
例えば、図11を用いて説明したManifest()セクションにおいて、src_file_nameのフィールドに「/MainMovie/movie01/main.r1.jp.mp2」とパス名称が指定され、dst_file_nameのフィールドに「/STREAM/01002.m2ts」とパス名称が指定されている場合、ダウンロードされたデータは、図15に示されるように、ローカルストレージ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()セクションのみを、所定の時期ごとにダウンロードさせて、上書きさせることにより、大容量のデータをたびたびダウンロードさせることなく、時期ごとに異なるボーナストラックが追加されるようなサービスをユーザに提供することが可能である。
また、光ディスク11およびローカルストレージ24における実際のファイルシステムと、仮想ディスクのファイルシステムとの同期(バインド)方式は、いわゆるスタティックバインディング方式であっても、ダイナミックバインディング方式であっても、仮想ファイルシステムを更新するために新たなAPI(例えば、update())を定義し、ユーザ操作、または、アプリケーションプログラムにより明示的にそのAPIが呼び出されたときに、仮想ファイルシステムが更新されるようにしてもよい。
なお、スタティックバインディングとは、光ディスク11が再生装置1に装着された時点、または、再生タイトルが切り替わったタイミングで、光ディスク11およびローカルストレージ24における実際のファイルシステムを参照し、仮想ファイルシステムのディレクトリ/ファイル構造をマッピングするものであり、ダイナミックバインディングとは、ファイル入出力要求が発行された時点で、必要なファイルを探索するものである。
仮想ディスクのディレクトリ/ファイル構造は、上述したように、光ディスク11のディレクトリ/ファイル構造に合致するようになされると好適である。光ディスク11のディレクトリ/ファイル構造は、規格などにより予め定められ、変更することができない場合が多く、ローカルストレージ24における実際のファイルシステムのディレクトリやファイルの構造は、コンテンツオーサにより自由に設定可能であるほうが好適である。このため、仮想ディスクのディレクトリ/ファイル構造を、変更することができない光ディスク11のディレクトリ/ファイル構造に基づいて設定することができるようにすると、コンテンツオーサにより配布されるデータの自由度を維持しつつ、光ディスク11のアプリケーションフォーマット等の規格に合致した再生処理を実行させることができるので好適である。
仮想ディスクにおけるディレクトリ/ファイル構造の例を図16に示す。
図16に示される仮想ディスクのディレクトリ/ファイル構造において、「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ストリームファイルやサブストリームファイルとは独立して利用されるデータなどのファイルが格納される。
なお、ユーザに提供されるメニュー画面において、ファイルを示す情報は、通常、display_nameのフィールドにおいて指定された名称となるが、例えば、図16を用いて説明した、仮想ディスクにおけるディレクトリ/ファイル構造は、アプリケーションまたはユーザから隠蔽されないものであるので、再生装置1において実行されるアプリケーションによっては、仮想ディスクにおけるディレクトリ/ファイル構造を、ユーザに提示するようにしてもかまわない。
次に、図17を用いて、コンテンツオーサがコンテンツを配布する際のコンテンツ配布用ファイル形式の定義について説明する。コンテンツの配布の際のファイル形式は、コンテンツファイル単位での個別配布であっても良いが、図17に示されるように、メタデータ(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は、同一のauthor_idに対応付けられるそれぞれのコンテンツを識別するための識別子を指定するためのフィールドである。すなわち、このアーカイブは、disc_idで指定される光ディスク11のコンテンツに対するアップデートデータである。
permissionは、ユーザに対して可視属性にしてよいか、不可視属性にしておくか、または、ファイルの上書きを許可するか否かなどの許認可情報をコンテンツオーサが指定するためのフィールドである。Permissionにおいて指定可能な値については、図12を用いて説明した場合と同一である。なお、permissionの情報は、Manifestファイル以外のいずれかのファイルに記載されたり、または、独立したファイルとして構成されるものとしてもよい。
src_file_nameは、図15を用いて説明した様に、ローカルストレージ24にて記録されるべきファイルのパス名称を指定するためのフィールドである。ファイル/ディレクトリ名称は、ISO/IEC 646規格に従い符号化されているものとする。
dst_file_nameは、図15を用いて説明した様に、仮想ディスク(仮想ファイルシステム)におけるバインド先のファイルのパス名称を指定するためのフィールドである。ファイル/ディレクトリ名称は、ISO/IEC 646規格に従い符号化されているものとする。
なお、src_file_nameとdst_file_nameには、同一名称を指定することもできる。
そして、credentialには、src_file_nameにおいて指定されているファイルが、異なるauther_idのディレクトリ下にある場合に、ファイルアクセス権限をチェックするための情報が記載されている。このことにより、ローカルストレージ24においては、複数のauther_id以下のディレクトリでコンテンツファイルを共有することが可能となる。
file_sizeは、圧縮前のファイルサイズをバイト単位で指定するためのフィールドである。
file_dataは、ファイルデータをバイトシーケンスとして指定するためのフィールドである。
図17を用いて説明した様なコンテンツ配布用ファイル形式のデータがダウンロードされ、再生装置1において、装着された光ディスク11に記録されているデータとマージされて仮想ディスクにおける仮想ファイルシステムが構築される。これにより、再生装置1を用いて光ディスク11に記録されているコンテンツを再生させるユーザからは、光ディスク11に記録されているコンテンツに、例えば、ボーナストラックや、異なる言語での音声または表示字幕が追加されてアップデートされたように感じられる。
上述したファイル形式にしたがって構成されるコンテンツが更新される場合は、例えば、図16を用いて説明した仮想ファイルシステムにおいて、インデックスファイル(Index.bdmv)、ムービーオブジェクトファイル(Movieobjects.bdmv)、プレイリストファイル(*****.mpls)、クリップインフォメーションファイル(*****.clpi)、ストリームファイルまたはAUXデータファイル(*****.m2ts, *****bdmv,*****.otf)などが追加あるいは更新されるように、新たなデータファイルがダウンロードされて、バインディングされる。これらのファイルがダウンロードされて、装着されている装着された光ディスク11に記録されているコンテンツに関連付けられて再生されるためには、MainPathの追加やSubPathの追加などが実行される。
なお、ファイルの追加更新時、ローカルストレージ24に予め保存されていたファイルと、新たに取得されたファイルとのファイル名が同一であった場合、permissionに記載されている属性においてファイルの上書きが許可されていれば上書きコピーが実行され、permissionに記載されている属性においてファイルの上書きが許可されていなければ、上書きコピー処理は実行されない。また、新たに取得されたファイルのファイル名が、ローカルストレージ24に予め保存されていたファイルのいずれとも同一のファイル名ではない場合、ファイルはローカルストレージ24に新規追加されて記憶される。
なお、光ディスク11には、上述したファイル構成以外のAVストリームデータを記録させ、デコーダ26によりデコードして再生させることが可能であるが、上述したファイル構成以外のAVストリームデータにおいては、ローカルストレージ24にダウンロードされたファイルを用いて、仮想ファイルシステムを構築することはできない。したがって、光ディスク11に上述したファイル構成以外のAVストリームデータが記録されている場合、再生装置1を利用するユーザにとって、光ディスク11に記録されているファイルが追加されたり、その一部分だけが更新されるように、データを扱うことはできない。
また、再生装置1においてPlayListファイルの編集を実行しなくても良いように、データの配布元(コンテンツオーサ)で、追加・更新に必要なファイルのパッケージングが予め行われ、ディスクベース(すなわち、Disc_idで示されるディレクトリのデータごと)で、ファイルのダウンロードが行われるようにしても良い。
このようにして、再生装置1においては、ネットワーク2を介して、サーバ3から、例えば、図17に示されるような構成を有する新たなデータをダウンロードして、メタデータであるManifest()に記載されているsrc_file_nameに示されるパス名称を基に、ローカルストレージ24に記憶され、Manifest()に記載されているdst_file_nameに示されるパス名称を基に、仮想ファイルシステム内のパスが設定され、再生装置1のアプリケーション(例えば、再生処理を行うアプリケーション)は、仮想ファイルシステムを基に、すなわち、dst_file_nameに示されるパスに基づいて、光ディスク11に記録されているデータと、ローカルストレージ24に記録されているデータを区別せずに処理することができるようになされている。
すなわち、再生装置1において実行されているアプリケーションプログラムが実行する処理として説明すると、データの追加処理を実行可能なアプリケーションプログラムは、データの追加指示(ダウンロード指示)を受けると、該当するManifestファイル(全てのManifestファイルであっても、一部のManifestファイルであっても良い)を、ネットワーク2を介してサーバ3に送信し、サーバ3から、現在追加可能なコンテンツ一覧を取得する。アプリケーションプログラムは、追加可能なコンテンツ一覧をユーザに提示し、ユーザは、提示された一覧の中からダウンロードするコンテンツを選択する。
ユーザにより、ダウンロードするコンテンツが選択された場合、データをサーバ3からダウンロードする処理を実行可能なアプリケーション(例えば、データの追加処理や再生処理を実行可能なアプリケーションプログラムと同一であっても、それぞれ個別のものであっても良い)により、データのダウンロードが開始される。
ダウンロードアプリケーションによるダウンロードが完了すると、ダウンロードされたファイルパッケージ群は、ファイルシステムをマネジメントするアプリケーションにより、仮想ファイルシステム上にマウントされ、スタティックバインディングまたはダイナミックバインディングなどにより、ネイティブなファイルシステムと仮想ファイルシステムとが同期される。
次に、ユーザの操作入力に基づいて、ファイルを削除する場合の処理について説明する。再生装置1は、Manifestファイルを利用して、ローカルストレージ24の中のファイル一覧を表示するようなメニュー画面を表示することができ、ユーザは、これを基に、ファイル(コンテンツ)ベースで仮想ファイルシステムからファイルを削除したり、ディスクベースで仮想ファイルシステムからファイルを削除することができる。
まず、ファイル(コンテンツ)ベースでの、仮想ファイルシステムからのファイルの削除について説明する。
仮想ディスクから、コンテンツベースでファイルを削除するということは、ユーザから見れば、例えば、光ディスク11には予め記録されておらず、ダウンロードによって仮想ディスク上に記録された英語字幕や日本語吹き替え音声などを、コンテンツ別に選択して、対応するファイル群を削除することである。
例えば、再生装置1に装着されている光ディスク11に対して、ファイルの追加更新が実行され、ボーナストラックに対応するClipAVストリーム、選択可能な新しい字幕に対応するSubPathと対応するテキスト字幕ストリーム、SubPlayItemが追加されてSubPath内のSubPlayItemが延長されて追加字幕に対応するテキスト字幕ストリームが追加された。このとき、仮想ディスクに記録されているコンテンツの状態は、例えば、図18に示されるように、SubPath#1およびSubPlayItem#1、並びに、SubPath#2およびSubPlayItem#2を有するPlayList#1と、ClipAVストリーム#1、ClipAVストリーム#2、および、テキスト字幕ストリーム#1乃至#3を含むものとなる。そして、図19に示されるように、PlayItemにより指定されるMain Pathによって、ClipAVストリーム#1およびClipAVストリーム#2が連続して再生され、SubPlayItem#1を用いて指定されるSubpath#1により、テキスト字幕ストリーム#1とテキスト字幕ストリーム#3とが再生されて、SubPlayItem#2を用いて指定されるSubPath#2により、テキスト字幕ストリーム#2が再生されるものとなった。この状態において、ユーザがいずれかのファイルを削除する処理を開始することを指令した場合について説明する。
このとき、コントローラ21のローカルストレージディレクトリ管理部34は、データ取得部33を制御し、インターネットインタフェース25およびネットワーク2を介してサーバ3にアクセスし、例えば、このPlayList#1により再生されるコンテンツに関連するmanifest_idなど、現在の仮想ファイルシステムの状態を示す情報をサーバ3に送信し、サーバ3より、可能な更新、すなわち、削除可能な項目の一覧に対応する情報を受信する。そして、メニュー画面表示制御部31の処理により、例えば、図20に示されるように、削除可能なファイルの一覧が、ユーザに提示される。ここでは、フランス語字幕、ボーナストラック、および、日本語追加字幕が、削除可能なファイルの一覧に含まれている。
そして、ユーザにより、ボーナストラックの削除が選択された場合、ローカルストレージディレクトリ管理部34は、ユーザにより選択されたボーナストラックに対応するファイルを削除する。このとき、ローカルストレージディレクトリ管理部34は、このボーナストラックに対応するファイルパッケージ内のManifestファイルに関連付けられたファイルを消去し、Manifestファイル中の該当するManifest()セクション自体を消去することができる。
ところで、ローカルストレージ24に記録されているファイルは、1つのPlayItemにより参照されるのみであるとは限らない。すなわち、上述した削除処理により、他の部分の再生処理に支障が生じる場合が想定できる。
具体的には、削除されるボーナストラックにおいて参照されたテキスト字幕ファイル#n(nは、ある整数)が、削除されないAVストリームファイルとも同期して再生されるようになされているのにもかかわらず、ボーナストラックの消去に伴って、テキスト字幕ファイル#nも消去された場合、削除されないAVストリームファイルと同期してテキスト字幕ファイル#nを再生することができなくなってしまうような場合などである。
そこで、ファイルシステムマージ処理部36は、仮想ファイルシステムにおける上述した削除処理により、他の部分の再生処理に支障が生じるか否かを判断し、例えば、データ間のリンク構造が壊れることなどにより支障が生じる場合、他の部分の再生処理に必要なデータファイルを検出し、データ取得部33に指令して、データファイルのダウンロードを要求する信号をサーバ3に送信させ、サーバ3より、必要なデータファイルのダウンロードを受けて、上述した場合と同様にして、ローカルストレージディレクトリ管理部34の処理により、ローカルストレージ24に展開する。
そして、ファイルシステムマージ処理部36は、新たなファイルがダウンロードされた場合であっても、ダウンロードされていない場合であっても、上述したような所定のタイミングで、仮想ファイルシステムのバインディング処理を行う。このような処理により、ユーザによって選択されたファイルが削除された状態の仮想ファイルシステムを基に、コンテンツが再生される。
次に、ディスクベースでの仮想ファイルシステムからのファイルの削除について説明する。
仮想ディスクから、ディスクベースでファイルを削除するということは、ローカルストレージ24において、対応するdisc_idに対応するディレクトリに含まれているファイル群を全て削除することである。例えば、あるdisc_id以下に存在するManifestファイルと関連付けられたすべてのファイルが消去され、その後、すべてのManifest()セクションも削除される。
ユーザから見れば、具体的には、光ディスク11に記録されているコンテンツに対して、ダウンロードされて仮想ファイルシステムにバインディングされた(すなわち、仮想ディスクに新たに記録された)追加または更新ファイルが削除されることにより、光ディスク11が初期化される(光ディスク11に記録されているコンテンツのみの状態となる)のと同等である。
次に、図21乃至図26のフローチャートを参照して、再生装置1が、外部からファイルを新たに取得してローカルストレージ24に記憶するとともに仮想ファイルシステムを構築することにより、光ディスク11に記録されている情報とローカルストレージ24に記憶されている情報とを再生させるために必要な処理について説明する。
まず、図21のフローチャートを参照して、ファイルベースの追加および更新処理について説明する。
ステップ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において、図22を用いて後述するバインディング処理1が実行され、処理が終了される。
このような処理により、サーバ3からアップデートファイルがダウンロードされて、ローカルストレージ24に記録させ、光ディスク11に記録されているコンテンツのアップデートファイルとして扱われるようにすることができる。
すなわち、このような処理により、例えば、映画などのコンテンツが記録された光ディスク11を購入したユーザが、光ディスク11に予め記録されていない言語の字幕を表示させるために必要なファイルや、ボーナストラックを視聴するために必要なファイルなどを取得して、ローカルストレージ24に記憶させるとともに、光ディスク11に記録されているデータとローカルストレージ24に記憶されているデータとを、再生処理などを実行するアプリケーションプログラムが区別しないで取り扱うことができ、物理的なデータの記憶をユーザまたはアプリケーションプログラムから隠蔽することができるような仮想ファイルシステムを構築させることができる。
また、以上のようなアップデートファイルのダウンロードは、有料で行うことができるものであってもよいし、無料で行うことができるものであってもよい。
次に、図22のフローチャートを参照して、図21のステップS10において実行される、バインディング処理1について説明する。
ステップ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に記憶されるファイルの仮想ディスクにおけるバインド先において、このファイルがディレクトリ構造のどこに記録されるかを一義に指定できる情報、いわゆるパスを表す「パス名称」が指定される。
例えば、図11を用いて説明したManifest()セクションにおいて、src_file_nameのフィールドに「/MainMovie/movie01/main.r1.jp.mp2」とパス名称が指定され、dst_file_nameのフィールドに「/STREAM/01002.m2ts」とパス名称が指定されている場合、ファイルシステムマージ処理部36は、図15を用いて説明したように、ダウンロードされたデータが、ローカルストレージ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以下の領域にディレクトリやファイルを新しく追加することが可能となる。
次に、図23のフローチャートを参照して、ディスクベースの追加および更新処理について説明する。
ステップS41において、コントローラ21の操作入力取得部32は、操作入力部29から供給される信号を基に、ユーザから、ディスクベース、すなわち、ローカルストレージ24に実際に記録されるデータのdisc_id以下のファイルの追加処理を開始する指令を受けたか否かを判断する。ステップS41において、ファイルの追加処理を開始する指令を受けていないと判断された場合、ファイルの追加処理を開始する指令を受けたと判断されるまで、ステップS41の処理が繰り返される。
ステップS41において、ファイルの追加処理を開始する指令を受けたと判断された場合、ステップS42において、コントローラ21のローカルストレージディレクトリ管理部34は、データ取得部33を制御し、インターネットインタフェース25およびネットワーク2を介してサーバ3にアクセスし、現在の仮想ファイルシステムの状態を示す情報、例えば、対応するdisc_id以下のManifest ファイルに含まれる全てのManifest()セクションのManifest_idを送信する。
ステップS43において、データ取得部33は、インターネットインタフェース25を制御し、ネットワーク2を介して、サーバ3から、ダウンロード可能なディスクベースのファイルの一覧に対応する情報を受信したか否かを判断する。
ステップS43において、ダウンロード可能なディスクベースのファイルの一覧に対応する情報を受信できなかったと判断された場合、ステップS44において、メニュー画面表示制御部31は、ファイルの追加処理が不可能であることをユーザに通知するためのエラーメッセージの表示を制御し、処理が終了される。
ステップS43において、ダウンロード可能なファイルの一覧に対応する情報を受信したと判断された場合、ステップS45において、データ取得部33は、サーバ3から送信され、インターネットインタフェース25により受信されたダウンロード可能なディスクベースのファイルの一覧に対応する情報を、メニュー画面表示制御部31に供給する。メニュー画面表示制御部31は、ダウンロード可能なファイルの一覧から、ユーザが所望のものを選択することができるようになされているメニュー画面を表示装置に表示させる。
ステップS46において、操作入力取得部32は、メニュー画面表示制御部31の処理により表示が制御されているメニュー画面のボタンまたはアイコンなどがユーザにより操作され、追加したい項目が選択されたか否かを判定する。ステップS46において、追加したい項目が選択されていないと判断された場合、選択されたと判断されるまで、ステップS46の処理が繰り返される。
ステップS46において、追加したい項目が選択されたと判断された場合、ステップS47において、操作入力取得部32は、ユーザにより選択されたアップデートの内容を表す情報を、データ取得部33に供給する。データ取得部33は、インターネットインタフェース25を制御し、要求するファイルを示す情報をサーバ3に送信させ、ユーザが選択したディスクベースのファイルのダウンロードを要求する。
ステップS48において、データ取得部33は、インターネットインタフェース25を制御し、サーバ3によりダウンロードファイルとして用意されるディスクベースのファイル群をダウンロードさせ、ディスクベースのファイル群がダウンロードされたことを、ローカルストレージディレクトリ管理部34に通知する。
ステップS49において、ローカルストレージディレクトリ管理部34は、ダウンロードされたファイルのManifest()に含まれるauthor_idとdisc_idとに基づいて、それらのIDで識別されるディレクトリをローカルストレージ24に作成し、ダウンロードされたディスクベースのデータを展開する。
ステップS50において、図22を用いて説明したバインディング処理1が実行され、処理が終了される。
このような処理により、サーバ3からアップデートファイルがディスクベースでダウンロードされて、ローカルストレージ24に記録させ、光ディスク11に記録されているコンテンツのアップデートファイルとして扱われるようにすることができる。
すなわち、このような処理により、例えば、映画などのコンテンツが記録された光ディスク11を購入したユーザが、光ディスク11に予め記録されていない言語の字幕を表示させるために必要なファイルや、ボーナストラックを視聴するために必要なファイルなどをディスクベースで取得して、ローカルストレージ24に記憶させるとともに、光ディスク11に記録されているデータとローカルストレージ24に記憶されているデータとを、再生処理などを実行するアプリケーションプログラムが区別しないで取り扱うことができ、物理的なデータの記憶をユーザまたはアプリケーションプログラムから隠蔽することができるような仮想ファイルシステムを構築させることができる。
また、このようなディスクベースのアップデートファイルのダウンロードも、ファイルベースでダウンロードが行われる場合と同様に、有料で行うことができるものであってもよいし、無料で行うことができるものであってもよい。
また、図21においては、ユーザによってファイルベースのダウンロードが指令された場合の処理を説明し、図23においては、ユーザによってディスクベースのダウンロードが指令された場合の処理を説明したが、例えば、ユーザは、ファイルベースとディスクベースとを区別せずにファイルのダウンロード開始の指示を行うことができるようにしても良いことは言うまでもない。すなわち、サーバ3からダウンロードされるデータの形式がファイルベースであるかディスクベースであるかによって、ローカルストレージディレクトリ管理部34によるローカルディスク24へのダウンロードされたデータの展開方法を変更することができるようにしても良い。
次に、図24のフローチャートを参照して、ファイルベースの削除処理について説明する。
ステップS71において、コントローラ21の操作入力取得部32は、操作入力部29から供給される信号を基に、ユーザから、ファイルベース、すなわち、disc_idで示されるディレクトリに含まれるファイル単位の削除処理を開始する指令を受けたか否かを判断する。ステップS71において、ファイルベースの削除処理を開始する指令を受けていないと判断された場合、ファイルの削除処理を開始する指令を受けたと判断されるまで、ステップS71の処理が繰り返される。
ステップS71において、ファイルベースの削除処理を開始する指令を受けたと判断された場合、ステップS72において、コントローラ21のローカルストレージディレクトリ管理部34は、データ取得部33を制御し、インターネットインタフェース25およびネットワーク2を介してサーバ3にアクセスし、現在の仮想ファイルシステムの状態を示す情報、すなわち、対応するManifest()セクションのManifest_idを送信する。
ステップS73において、データ取得部33は、インターネットインタフェース25を制御し、ネットワーク2を介してサーバ3から、可能な更新、すなわち、削除可能な項目の一覧に対応する情報を受信したか否かを判断する。
ステップS73において、可能な更新の一覧に対応する情報を受信できなかったと判断された場合、ステップS74において、メニュー画面表示制御部31は、ファイルの削除処理が不可能であることをユーザに通知するためのエラーメッセージの表示を制御し、処理が終了される。
ステップS73において、可能な更新の一覧に対応する情報を受信したと判断された場合、ステップS75において、データ取得部33は、サーバ3から送信され、インターネットインタフェース25により受信された可能な更新の一覧に対応する情報を、メニュー画面表示制御部31に供給する。メニュー画面表示制御部31は、可能な更新の一覧から、ユーザが所望のものを選択することができるようになされているメニュー画面を表示装置に表示させる。
ステップS76において、操作入力取得部32は、メニュー画面表示制御部31の処理により表示が制御されているメニュー画面のボタンまたはアイコンなどがユーザにより操作され、削除したい項目(内容)が選択されたか否かを判定する。ステップS76において、削除したい項目が選択されていないと判断された場合、選択されたと判断されるまで、ステップS76の処理が繰り返される。
ステップS76において、削除したい項目が選択されたと判断された場合、ステップS77において、操作入力取得部32は、ユーザにより選択された削除したい項目を表す情報を、ローカルディレクトリ管理部34に供給する。ローカルディレクトリ管理部34は、指定されたファイルを、ローカルストレージ24から削除する。
ステップS78において、ファイルシステムマージ処理部36は、ステップS77において実行されたファイルの削除処理により、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生するか否かを判断する。ステップS78において、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生しないと判断された場合、処理は、後述するステップS81に進む。
ステップS78において、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生すると判断された場合、ステップS79において、ファイルシステムマージ処理部36は、不具合を解消するために必要なデータファイル(場合によっては、フォルダまたはディレクトリ)を抽出し、データ取得部33に供給する。データ取得部33は、インターネットインタフェース25を制御し、要求するファイルを示す情報をサーバ3に送信させ、ユーザが選択したファイルのダウンロードを要求する。そして、データ取得部33は、インターネットインタフェース25を制御し、サーバ3によりダウンロードファイルとして用意される、服愛の解消のために必要なファイルをダウンロードし、これらのファイルがダウンロードされたことを、ローカルストレージディレクトリ管理部34に通知する。
ステップS80において、ローカルストレージディレクトリ管理部34は、ダウンロードされたファイルのManifest()に含まれるauthor_idとdisc_idとに基づいて、それらのIDで識別されるディレクトリがローカルストレージ24に既に存在するか否かを判断して、対応するディレクトリが既に存在する場合は、そのディレクトリにダウンロードされたデータファイルを展開し、対応するディレクトリが存在しない場合、author_idとdisc_idで指定される新たなディレクトリをローカルストレージ24に作成し、ダウンロードされたデータファイルを展開する。
ステップS78において、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生しないと判断された場合、または、ステップS80の処理の終了後、ステップS81において、ファイルシステムマージ処理部36は、ステップS77において実行されたファイルの削除処理により不必要となったファイル、例えば、仮想ファイルシステムにおいて、いずれのPlayListによっても再生されない(全てのPlayListによって指定されない)ファイルなどが削除される設定であるか否かを判断する。ステップS81において、不必要となったファイルは削除されずに残される設定であると判断された場合、処理は、後述するステップS83に進む。
ステップS81において、不必要となったファイルは削除される設定であると判断された場合、ステップS82において、ファイルシステムマージ処理部36は、不必要となったファイルを抽出し、このような不必要なファイルを削除することをローカルストレージディレクトリ管理部34に指令する。ローカルストレージディレクトリ管理部34は、ファイルシステムマージ処理部36の指令に基づいて、ローカルストレージ24に記録されている不必要なファイルを削除する。
ステップS81において、不必要となったファイルは削除されずに残される設定であると判断された場合、または、ステップS82の処理の終了後、ステップS83において、図22を用いて説明したバインディング処理1が実行され、処理が終了される。
このような処理により、サーバ3からダウンロードされて、ローカルストレージ24に記録されたアップデートファイルを、ユーザの操作入力に基づいて、ファイルベース、すなわち、disc_idで示されるディレクトリに含まれるファイル単位で削除することができる。
次に、図25のフローチャートを参照して、ディスクベースの削除処理について説明する。
ステップS111において、コントローラ21の操作入力取得部32は、操作入力部29から供給される信号を基に、ユーザから、ディスクベース、すなわち、disc_idで示されるディレクトリに含まれる全てのファイルの削除処理を開始する指令を受けたか否かを判断する。ステップS111において、ディスクベースの削除処理を開始する指令を受けていないと判断された場合、ディスクベースの削除処理を開始する指令を受けたと判断されるまで、ステップS111の処理が繰り返される。
ステップS111において、ディスクベースの削除処理を開始する指令を受けたと判断された場合、ステップS112において、ファイルシステムマージ処理部36は、削除される部分に対応するManifestファイル、例えば、現在再生装置1に装着されている光ディスク11のauthor_idおよびdisc_idに対応するManifestファイルを抽出し、ローカルストレージディレクトリ管理部34に、対応するManifestファイルを読み出させる。
ステップS113において、ローカルストレージディレクトリ管理部34は、読み出されたManifestファイルを基に、このManifestファイルに関連付けられたファイルを、ローカルストレージ24から削除する。
ステップS114において、ローカルストレージディレクトリ管理部34は、削除された部分に対応するManifestファイルを、ローカルストレージ24から削除する。
そして、ステップS115において、図22を用いて説明したバインディング処理1が実行され、処理が終了される。
すなわち、disc_idで示されるディレクトリに含まれるファイル全体が削除され、削除された部分に対応するManifestファイルも削除されるので、バインディング処理において、ファイルシステムマージ処理部36は、Manifestファイルが見つからないため、0個のディレクトリおよび0個のファイルをバインドして(すなわち、何もバインドせずに)、バインド処理を終了し、結果的には、光ディスク11上のディレクトリ/ファイル構造が、そのまま、仮想ファイルシステムとして管理されるものとなる。
このような処理により、サーバ3からダウンロードされて、ローカルストレージ24に記録されたアップデートファイルを、disc_idで示されるディレクトリに含まれるファイル全体として削除することができる。
なお、ディスクベースでファイルを削除する場合においても、ファイルの追加、または、ファイルベースの削除における場合と同様にして、サーバ3に現在の仮想ディスク(仮想ファイルシステム)の状況を示す情報を送信し、サーバ3から、可能な変更を示す情報を得て、これを基に削除処理を行うようにしても良い。
次に、図26のフローチャートを参照して、再生処理およびファイルシステム構成処理について説明する。
ステップS141において、光ディスクディレクトリ管理部35は、光ディスク11が装着されたか否かを判断する。ステップS141において、光ディスク11が装着されていないと判断された場合、光ディスク11が装着されたと判断されるまで、ステップS141の処理が繰り返される。
ステップS141において、光ディスク11が装着されていると判断された場合、ステップS142において、光ディスクディレクトリ管理部35は、光ディスク11からauthor_idとdisc_idを読み出し、読み出したauthor_idとdisc_idをローカルストレージディレクトリ管理部34およびファイルシステムマージ処理部36に供給する。
ステップS143において、図22を用いて説明したバインディング処理1が実行される。
ステップS144において、コントローラ21は、ナビゲーションプログラムを実行する。
ステップS145において、再生制御部37は、操作入力取得部32から供給されるユーザの操作入力を基に、ユーザから、コンテンツの再生を指令する操作入力を受けたか否かを判断する。ステップS145において、コンテンツの再生を指令する操作入力を受けなかったと判断された場合、処理は、後述するステップS150に進む。
ステップS145において、コンテンツの再生を指令する操作入力を受けたと判断された場合、操作入力取得部32は、ユーザの操作入力に対応する信号を、光ディスクディレクトリ管理部35に供給し、光ディスクディレクトリ管理部35は、光ディスク11から読み出したauthor_idとdisc_idをローカルストレージディレクトリ管理部34に出力するので、ステップS146において、図22を用いて説明したバインディング処理1が実行される。
ステップS147において、再生制御部37は、ローカルストレージディレクトリ管理部34および光ディスクディレクトリ管理部35を制御して、ナビゲーションプログラムが再生区間として指定するPlayListとSubPlayItemを取得し、取得したPlayListとSubPlayItemが参照するストリームファイル(AVファイル、オーディオファイル、テキスト字幕ファイルなど)を読み出させて、デコーダ26に供給させる。ここでは、PlayListやSubPlayItemにより表されるタイムスタンプがClip informationによりアドレスに変換され、AVストリームなどに対するアクセスが行われる。
ステップS148において、再生制御部37は、デコーダ26を制御して、PlayItemにより指定されるコンテンツを再生させる。
ステップS149において、操作入力取得部32は、再生タイトル(再生されるコンテンツ)の切り替えを指令する操作入力を受けたか否かを判断する。ステップS149において、再生タイトルの変更を指令する操作入力を受けていないと判断された場合、処理は、後述するステップS150に進む。
ステップS149において、再生タイトルの変更を指令する操作入力を受けたと判断された場合、操作入力取得部32は、ユーザの操作入力に対応する信号を、光ディスクディレクトリ管理部35に供給し、光ディスクディレクトリ管理部35は、光ディスク11から読み出したauthor_idとdisc_idをローカルストレージディレクトリ管理部34に出力するので、処理は、ステップS146に戻り、それ以降の処理が繰り返される。
ステップS145において、コンテンツの再生を指令する操作入力を受けなかったと判断された場合、または、ステップS149において、再生タイトルの変更を指令する操作入力を受けていないと判断された場合、ステップS150において、操作入力取得部32は、ユーザから、ファイルの追加または削除が指令されたか否かを判断する。
ステップS150において、ファイルの追加または削除が指令されたと判断された場合、ステップS151において、データ取得部33、または、ローカルストレージディレクトリ管理部34などは、例えば、図21、および、図23乃至図25を用いて説明した様にして、ファイルを追加または削除する処理を実行する。
ステップS152において、図22を用いて説明したバインディング処理1が実行される。
ステップS150において、ファイルの追加または削除が指令されていないと判断された場合、または、ステップS152の処理の終了後、ステップS153において、操作入力取得部32は、仮想ファイルシステムの更新が指令されたか否かを判断する。
ステップS153において、仮想ファイルシステムの更新が指令されたと判断された場合、例えば、仮想ファイルシステムを更新するために定義されたAPI(例えば、update())が呼び出され、ステップS154において、図22を用いて説明したバインディング処理1が実行される。
ステップS153において、仮想ファイルシステムの更新が指令されていないと判断された場合、または、ステップS154の処理の終了後、ステップS155において、操作入力取得部32は、再生装置1の処理の終了(例えば、アプリケーションの終了や、再生装置1の電源のオフ)が指令されたか否かを判断する。
ステップS155において、再生装置1の処理の終了が指令されていないと判断された場合、処理は、ステップS144に戻り、それ以降の処理が繰り返される。ステップS155において、再生装置1の処理の終了が指令されたと判断された場合、処理が終了される。
このような処理により、予め光ディスク11に記録されているデータ、および、サーバ3からダウンロードされ、ローカルストレージ24に記憶されているデータが、所定のタイミングでバインディングされて仮想ファイルシステムが構築され、仮想ファイルシステムを基に、コンテンツが再生される。
以上説明した処理により、光ディスク11に記録されているコンテンツのアップデートファイルをダウンロードして、再生装置1のローカルストレージ24に記憶しておき、光ディスク11に記録されているコンテンツファイルとローカルストレージ24に記憶されているアップデートのファイルを、容易に扱うことができる。
具体的には、再生装置1のシステムが持つネイティブなファイルシステム(光ディスク11またはローカルストレージ24に実際に記録されているデータのファイルシステム)の上位レイヤとして、仮想ファイルシステムが定義される。そして、光ディスク11とローカルストレージ24に実際に記録されているデータのファイルシステムがマージされて、仮想ファイルシステムが生成される。そのとき、ダウンロードされるデータのメタデータであるManifestファイルには、author_idとdisc_idとが識別子として記述される。
ローカルストレージ24のディスク領域は、author_idごとに分割されたディレクトリ構造を有し、author_id直下のディレクトリであるdisc_id以下は、コンテンツオーサにより、フレキシブルなファイル/ディレクトリ構造を構成することができる。ローカルストレージ24に記憶されるデータが、ローカルストレージ24のディスク領域のどこに配置されるか、すなわち、ダウンロードされるファイルのファイル/ディレクトリ構造は、ダウンロードされるデータに含まれるManifestデータのsrc_file_nameフィールドに、パス名称として記述される。
これに対して、アプリケーションからアクセス可能な仮想ディスクのディレクトリ/ファイル構造は、光ディスク11のディレクトリ/ファイル構造に従うようになされている。すなわち、ダウンロードされるデータに含まれるManifestデータのdst_file_nameフィールドには、実際にはローカルストレージ24に記憶されるファイルの仮想ディスクにおけるバインド先を一義に指定できるパス名称が指定される。
このようにすることにより、ローカルストレージ24のディレクトリ/ファイル構造は、再生装置1において実行されるアプリケーションプログラム、または、ユーザから隠蔽される。
また、ローカルストレージ24に記録されているファイルの一部を削除することも可能である。ファイルの一部が削除された後、所定のタイミングで、再度バインディング処理が実行されて、新たな仮想ファイルシステムが生成される。また、ファイルが削除されたことにより、仮想ファイルシステムにおけるファイルのリンク構造に不具合が発生する場合、不具合の解消に必要なファイルを抽出し、必要なファイルを、サーバ3からダウンロードさせるようにすることができる。
次に、再生装置1が、光ディスク11に記録されているファイルの一部をローカルストレージ24にコピーした後、バインディング処理を実行して仮想ファイルシステムを構築する場合の処理について説明する。
上述したように、再生装置1においては、光ディスク11に記録されているデータの一部を、ローカルストレージ24に移動させることができる。これにより、光ディスク11の転送レート以上のレートでの再生が可能となる。
例えば、メインパスの映像および音声の再生と同期して、簡単なアニメーションを再生表示する場合について考える。例えば、光ディスク11に、audio, video, image(JPEGなど)のデータが配置されており、再生装置1において、メインパスの映像および音声を読み出すとともに、アニメーションを構成する複数の静止画を所定のフレームレートで読み出し、メインパスの映像および音声に対して、所定のフレームレートのアニメーションを同期して再生させることが可能なようになされている場合、再生装置1のデータの読み出し可能レートによっては、メインパスの映像および音声とアニメーションを構成する複数静止画とを、再生レートに間に合うように読み出すことができない可能性がある。このような場合に、例えば、アニメーションよりもメインパスの映像および音声の再生が優先され、光ディスク11からの静止画像データファイルの読み出しの優先度が下げられてしまう。このため、メインパスの映像および音声のレート設定によっては、静止画像データファイルがまったく読み出されないことがあり得る。
このことにより、再生装置1においては、結果的に、アニメーションの再生のためのフレームレートの制約を守ることができなくなり、アニメーションの表示がギクシャクしたり、最悪の場合、前の画像が3/4程度残っている状態において、今の画像が、1/4程度表示されてしまう(この現象は、tearingとも称される)場合がある。
そこで、光ディスク11に記録されているデータのうち、同期して再生される複数のデータのうちの少なくとも一部を、ローカルストレージ24に予めコピーしておき、その状態において仮想ファイルシステムを構築しておくことにより、光ディスク11の転送レートとローカルストレージ24の転送レートとの和を仮想的な最大転送レートとすることができるので、再生装置1においては、光ディスク11からのみ再生されるコンテンツデータが読み出されて供給される場合の転送レートを超えた能力が必要とされる再生処理が可能となる。
従って、上記の例では、アニメーションを構成する複数の静止画ファイルを、光ディスク11からローカルストレージ24に予めコピーして保存することにより、アニメーションフレームレートの制約を守ったアプリケーションの作成も可能となる。また、例えば、ハイフレームレートの映像同士を合成させて表示する場合、第1のハイフレームレートの映像を光ディスク11からローカルストレージ24に予めコピーして保存し、第2のハイフレームレートの映像を光ディスク11から読み出して再生する場合に、ローカルストレージ24にコピーされた第1のハイフレームレートの映像を合成して再生させるということも可能となる。
具体的には、光ディスクドライブ22は、光ディスク11からナビゲーションプログラムを読み出してメモリ23に供給する。コントローラ21は、ナビゲーションプログラムを実行して、再生処理を含む各種処理を行う。コンテンツの提供者(コンテンツオーサ)は、光ディスク11に記録されているコンテンツの内容、および、追加されるファイルを特定することができるため、光ディスク11に記録されているコンテンツの再生において、光ディスク11からのデータの読み出しだけでは再生が間に合わない部分のデータの一部、すなわち、例えば、上述した場合におけるアニメーション用の静止画像データや一方のハイフレームレートの映像データを指定して、予めローカルストレージ24にコピーするようなナビゲーションプログラムを用意し、光ディスク11に記録して、ユーザに提供する。
光ディスク11からローカルストレージ24に所定のデータをコピーした場合、当然、同一のデータが光ディスク11とローカルストレージ24に存在することとなる。したがって、対応するデータは、光ディスク11からではなく、ローカルストレージ24から読み出されるようにしなければいけない。
上述したように、新たなデータファイルがダウンロードされてローカルストレージ24に記録される場合、データファイルとともに、Manifestファイルも必要に応じてダウンロードされて、Manifestファイルに記載されているsrc_file_nameおよびdst_file_nameに応じて、仮想ファイルシステムが構築された。これに対して、光ディスク11からローカルストレージ24に所定のデータをコピーする場合、光ディスク11にManifestファイルを予め記録しておき、ファイルコピーとともに、ローカルストレージ24にコピーするようにしてもよいが、光ディスク11にManifestファイルを予め記録しておくことなく、適宜、Manifestファイルを生成または更新することができるようにしてもよい。
すなわち、コンテンツオーサは、Manifestファイルに記載されるsrc_file_nameおよびdst_file_name等のデータをナビゲーションプログラムが取得可能なように光ディスク11のいずれかの記録領域に記録しておき、その光ディスク11が再生装置1に装着されて、光ディスク11に記録されているデータのうちの一部がローカルストレージ24にコピーされる場合、光ディスク11のいずれかの記録領域に記録されているanifest_fileに記載されるsrc_file_nameおよびdst_file_name等のデータに基づいて、Manifestファイルを作成または更新し、ローカルストレージ24の特定のフォルダに記録すればよい。
また、光ディスク11のいずれかの記録領域にManifestファイルに記載されるsrc_file_nameおよびdst_file_name等のデータが記録されていない場合、再生装置1は、装着されている光ディスク11のファイルシステム、すなわち、ディレクトリ構造などに基づいて、Manifestファイルを作成または更新し、ローカルストレージ24の特定のフォルダに記録することができる。
データの一部のコピーは、ナビゲーションプログラムにより自動的に実行されるようにしても良いし、または、ナビゲーションプログラム実行中に、ユーザから、ローカルストレージ11にコピーするデータやタイミングなどを選択する操作入力を受け、これに基づいて実行されるような構成としても良い。
すなわち、再生装置11においてナビゲーションプログラムが実行されることにより、光ディスク11からローカルストレージ24にコピーされたデータが、光ディスク11からではなく、ローカルストレージ24から読み出されるように、Manifestファイルが生成または更新され、このManifestファイルにしたがって、バインディング処理が実行され、仮想ファイルシステムが生成されて、再生処理が実行されるようになされなければならない。
生成または更新されるManifestファイルにおいて、dst_file_nameは、コピーされるファイルの光ディスク11のファイルシステムにおけるパスをそのまま利用することができる。しかしながら、src_file_nameは、コピーされるデータに基づいて、そのつど、設定されなければならない。
具体的には、src_file_nameは、ナビゲーションプログラムにより予め定められていてもよいし、光ディスク11に記録されているauthor_idおよびdisc_id、並びに、コピーされるファイルの光ディスクにおけるパスおよびファイル名を基に、新たに生成されるものとしてもよい。
図27乃至図36を参照して、ファイルのコピーとManifestファイルの生成または更新について説明する。
まず、図27および図28を参照して、ファイルのコピー処理の前に、ローカルストレージ24にコピーされるファイルに対応する(換言すれば、装着された光ディスク11と同一のauthor_idおよびdisc_idのディレクトリに記載されている)Manifestファイルが、ローカルストレージ24に存在しない場合について説明する。
すなわち、図27に示されるように、ローカルストレージ24にコピーされるファイルに対応するManifestファイルが、ローカルストレージ24に存在しない状態において、例えば、保存ファイル名および実ファイルともに「コンテンツA」であるファイルが光ディスク11からローカルストレージ24にコピーされる場合、ローカルストレージ24に、すでに、保存ファイル名および実ファイルともに「コンテンツA」であるファイルが存在するか否かにかかわらず、図28に示されるように、保存ファイル名および実ファイルともに「コンテンツA」であるファイルがコピーされ、src_file_nameおよびdst_file_nameの情報を含むManifestファイルが、ローカルストレージ24に生成される。すなわち、ローカルストレージ24に、すでに、保存ファイル名および実ファイルともに「コンテンツA」であるファイルが存在する場合は、実質的に、上書きコピーが実行される。
また、このとき、例えば、Permissionなどの、src_file_nameおよびdst_file_name以外のManifestファイルに含まれる情報については、例えば、ナビゲーションプログラムにより、それぞれの情報の内容が予め定められていてもよいし、例えば、Permissionにおいて上書きは許可するなど、予め定められた情報にするものとしてもよい。
また、Permissionなどの、src_file_nameおよびdst_file_name以外の情報は、Manifestファイルに含まれずに、異なるファイルに記録されるものとしてもよいことは言うまでもない。
そして、図28に示されるように、ローカルストレージ24に、保存ファイル名および実ファイルともに「コンテンツA」であるファイルがコピーされ、src_file_nameおよびdst_file_name、並びに、必要に応じてPermissionなどの情報を含むManifestファイルが記憶された状態において、光ディスク11とローカルストレージ24のそれぞれのファイルシステムがバインディングされて、仮想ファイルシステムが生成されて、それを基に、コンテンツの再生処理が実行されるようになる。
次に、図29および図30を参照して、ファイルのコピー処理の前に、コピーするファイルはローカルストレージ24に存在しないが、コピーするファイルに対応するManifestファイルが、ローカルストレージ24に存在している場合について説明する。
すなわち、図29に示されるように、コピーするファイルに対応するManifestファイル、換言すれば、再生装置1に装着されている光ディスク11に対応するauther_idおよびdisc_idを有するManifestファイルが、ローカルストレージ24に存在し、保存ファイル名および実ファイルともに「コンテンツA」であるファイルがローカルストレージ24に存在している状態において、例えば、保存ファイル名および実ファイルともに「コンテンツB」であるファイルが光ディスク11からローカルストレージ24にコピーされる場合、図30に示されるように、保存ファイル名および実ファイルともに「コンテンツB」であるファイルがローカルストレージ24にコピーされ、「コンテンツB」に対応するsrc_file_nameおよびdst_file_nameの情報がさらに含まれるようにManifestファイルが更新される。
なお、Manifestファイルが更新される場合、credentialの情報は変更されない。なぜならば、Manifestファイルの内容が更新されても、author_idおよびdisc_idは変更されないため、credentialの情報は書き換え不要である。
なお、ローカルストレージ24に予め存在していた、保存ファイル名および実ファイルともに「コンテンツA」であるファイルは、ネットワーク2を介してサーバ3からダウンロードされたものであっても、光ディスク11からコピーされたものであっても、その取り扱いは同一である。更に、ローカルストレージ24に予め存在していたManifestファイルも、ネットワーク2を介してダウンロードされたものであっても、光ディスク11からのファイルのコピーに伴って生成または更新されたものであっても、その取り扱いは同一である。
そして、図30に示されるように、ローカルストレージ24に、保存ファイル名および実ファイルともに「コンテンツA」であるファイルに加えて、更に、保存ファイル名および実ファイルともに「コンテンツB」であるファイルがコピーされ、src_file_nameおよびdst_file_name、並びに、必要に応じてPermissionなどの情報を含むManifestファイルが更新された状態において、光ディスク11とローカルストレージ24のそれぞれのファイルシステムがバインディングされて、仮想ファイルシステムが生成されて、それを基に、コンテンツの再生処理が実行されるようになる。
そして、図31乃至図36を参照して、ファイルのコピー処理の前に、すでに、コピーするファイルと同一のファイル名を有するファイル、コピーするファイルに対応するManifestファイルが、ローカルストレージ24に存在している場合の処理について説明する。
図31に示される状態においては、コピーするファイルに対応するManifestファイル、すなわち、光ディスク11に対応するauther_idおよびdisc_idを有するManifestファイルが、ローカルストレージ24に存在し、保存ファイル名および実ファイルともに「コンテンツA」で、上書き禁止の属性を有するファイルがローカルストレージ24に存在している。そして、保存ファイル名はローカルストレージ24に保存されているものと同一の「コンテンツA」であるが、実ファイルは、例えば、「コンテンツA」に対するアップデートファイルであるなど、「コンテンツA」とは異なる内容である「コンテンツA´」であるファイルが光ディスク11に記録されている。
ここで、ナビゲーションプログラム、または、ユーザの操作入力に基づいて、ファイル名が「コンテンツA」である実ファイル「コンテンツA´」が光ディスク11からローカルストレージ24にコピーされる場合、実ファイル「コンテンツA´」を実ファイル「コンテンツA」に上書きしても良いか否かが判断される。ここで、実ファイル「コンテンツA」の上書きが禁止されている場合、「コンテンツA´」は、光ディスク11からローカルストレージ24にコピーされない。
また、実ファイル「コンテンツA´」を実ファイル「コンテンツA」に上書きしても良いか否かを判断した後、ファイルのコピーを開始するようにしてしまっては、処理に時間がかかってしまうので、処理時間を短縮することができるように、ナビゲーションプログラム、または、ユーザの操作入力に基づいて、光ディスク11からローカルストレージ24へのファイルのコピーの指令が取得された場合、テンポラリー(temporary)のファイル名で、ファイルのコピー処理を開始させておき、上書きの可否の判断結果によって、そのファイルのコピー処理を継続するかまたは中断するかを決定するようにしても良い。
すなわち、図32に示されるように、光ディスク11に記録されている実ファイル「コンテンツA´」を、ローカルストレージ24に記録されているいずれのデータとも異なるテンポラリファイル名(ここでは、Temp_コンテンツA)で、ローカルストレージ24へ保存する処理を開始するとともに、ローカルストレージ24に記録されている、ファイル名が「コンテンツA」である実ファイル「コンテンツA´」の上書きが許可されているか否かを判断する。ここでは、ファイル名が「コンテンツA」である実ファイル「コンテンツA´」の上書きは許可されていない。
したがって、図33に示されるように、テンポラリファイル名(ここでは、Temp_コンテンツA)で、ローカルストレージ24へ保存された実ファイル「コンテンツA´」は削除され、ローカルストレージ24には、ファイル名が「コンテンツA」である実ファイル「コンテンツA」が残る。光ディスク11には、実ファイル「コンテンツA´」がファイル名「コンテンツA」で記録されているが、バインディング処理においては、ローカルストレージ24に保存されているファイル名が「コンテンツA」である実ファイル「コンテンツA」が優先される。
なお、ローカルストレージ24に予め存在していた、保存ファイル名および実ファイルともに「コンテンツA」であるファイルは、ネットワーク2を介してダウンロードされたものであっても、光ディスク11からコピーされたものであっても、その取り扱いは同一である。更に、ローカルストレージ24に予め存在していたManifestファイルも、ネットワーク2を介してダウンロードされたものであっても、光ディスク11からのファイルのコピーに伴って生成または更新されたものであっても、その取り扱いは同一である。
一方、図34に示される状態においては、コピーするファイルに対応するManifestファイル、すなわち、光ディスク11に対応するauther_idおよびdisc_idを有するManifestファイルが、ローカルストレージ24に存在し、保存ファイル名および実ファイルともに「コンテンツA」で、上書き可能の属性を有するファイルがローカルストレージ24に存在している。そして、保存ファイル名はローカルストレージ24に保存されているものと同一の「コンテンツA」であるが、実ファイルは、例えば、「コンテンツA」に対するアップデートファイルであるなど、「コンテンツA」とは異なる内容である「コンテンツA´」であるファイルが光ディスク11に記録されている。
そして、ナビゲーションプログラム、または、ユーザの操作入力に基づいて、ファイル名が「コンテンツA」である実ファイル「コンテンツA´」が光ディスク11からローカルストレージ24にコピーされる場合、ローカルストレージ24に存在する「コンテンツA」は上書きが許可されているので、「コンテンツA´」は、光ディスク11からローカルストレージ24に上書きコピーされる。
この場合においても、図35に示されるように、光ディスク11に記録されている実ファイル「コンテンツA´」は、ローカルストレージ24に記録されているいずれのデータとも異なるテンポラリファイル名(ここでは、Temp_コンテンツA)で、ローカルストレージ24への保存が開始される。そして、ローカルストレージ24に存在する「コンテンツA」は上書きが許可されていることが確認されるので、その後に、図36に示されるように、ローカルストレージ24に存在する「コンテンツA」が削除されて、実ファイル「コンテンツA´」のファイル名が、テンポラリファイル名から「コンテンツA」に書き換えられる。すなわち、結果的には、ローカルストレージ24に存在する実ファイル「コンテンツA」に対して、光ディスク11に記録されていた実ファイル「コンテンツA´」が上書きコピーされる。
なお、図27乃至図36における「ファイル名」とは、そのファイルを特定することができるもの、すなわち、ファイルのパスに対応するsrc_file_nameの情報と同一のものを指している。
なお、例えば、汎用ファイルアクセスAPIを利用して、HDD上のファイルとその属性を列挙して、ファイルの名前、サイズ、ハッシュ値などを比較したり、ナビゲーションプログラムによって、光ディスク11からローカルストレージ24へのファイルコピー処理の実行の履歴を、メモリ23またはローカルストレージ24などに保存することができるようにすることなどにより、同一のファイル名を有するファイルが全く同一のファイルであるか否かを検証することができるので、光ディスク11から読み出してコピーするファイルと、すでにローカルストレージ24に存在するファイルとが同一のファイルである場合には、ファイルのコピー処理を省略することができるようにしても良い。
次に、図37および図38のフローチャートを参照して、ファイルコピーおよびファイルシステム構成処理1について説明する。
ステップS201において、光ディスクドライブ22は、光ディスク11が装着されたか否かを判断する。ステップS201において、光ディスク11が装着されていないと判断された場合、光ディスク11が装着されたと判断されるまで、ステップS201の処理が繰り返される。
ステップS201において、光ディスク11が装着されていると判断された場合、ステップS202において、光ディスクドライブ22は、光ディスク11からauthor_idとdisc_idを読み出し、読み出したauthor_idとdisc_idをメモリ23に供給する。
ステップS203において、図22を用いて説明したバインディング処理1が実行される。
ステップS204において、光ディスクドライブ22は、光ディスク11からナビゲーションプログラムを読み出して、メモリ23に供給する。コントローラ21は、ナビゲーションプログラムを実行する。すなわち、コントローラ31は、図7を用いて説明した各機能を実現する。ナビゲーションプログラムが実行されることにより、ナビゲーションプログラムに基づいて、コンテンツの再生処理も実行される。
ステップS205において、ファイルコピー制御部38は、ナビゲーションプログラムに基づいて、または、操作入力部29から入力されるユーザの操作入力に基づいて、光ディスク11からローカルストレージ24に、所定のファイルのコピーを実行するか否かを判断する。ステップS205において、所定のファイルのコピーが実行されないと判断された場合、処理は、後述するステップS222に進む。
ステップS205において、所定のファイルのコピーが実行されると判断された場合、ステップS206において、ファイルコピー制御部38は、temporaryの保存ファイル名を用いて、光ディスク11に記録されている所定のファイルをローカルストレージ24にコピーする。
ステップS207において、図39のフローチャートを参照して後述するsrc_file_name設定処理1が実行される。
ステップS208において、マニフェストファイル生成・更新処理部39は、ローカルストレージディレクトリ管理部34によりローカルストレージ24に保存されているファイルを検索させることにより、ローカルストレージ24に、対応するManifestファイルが存在するか否かを判断する。ステップS208において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、処理は、後述するステップS210に進む。
ステップS208において、ローカルストレージ24に、対応するManifestファイルが存在すると判断された場合、ステップS209において、マニフェストファイル生成・更新処理部39は、ローカルストレージディレクトリ管理部34によりローカルストレージ24に保存されているファイルを検索させることにより、コピーされるファイルのsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在しているか否かを判断する。
ステップS208において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、または、ステップS209において、コピーされるファイルのsrc_file_nameと同一のsrc_file_nameを有するファイルがローカルストレージ24内に存在していないと判断された場合、ステップS210において、図40のフローチャートを参照して後述するファイルコピー処理が実行される。ステップS210の処理の終了後、処理は、後述するステップS214に進む。
ステップS209において、コピーされるファイルのsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在していると判断された場合、ステップS211において、マニフェストファイル生成・更新処理部39は、コピーされるファイルのsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在していることを、ファイルコピー制御部38に通知する。ファイルコピー制御部38は、同一のsrc_file_nameを有するローカルストレージ24に記録されているファイルのpermission属性として、上書き禁止が指定されているか否かを判断する。
ステップS211において、上書き禁止が指定されていると判断された場合、処理は、後述するステップS221に進む。
ステップS211において、上書き禁止が指定されていない、すなわち、上書きが許可されていると判断された場合、ステップS212において、ファイルコピー制御部38は、例えば、汎用ファイルアクセスAPIを利用して、HDD上のファイルとその属性を列挙し、ファイルの名前、サイズ、ハッシュ値などを比較したり、ローカルストレージ24に保存されたファイルコピー処理の履歴を参照することなどにより、光ディスク11からコピーされるファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであるか否かを判断する。ステップS212において、コピーされるファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであると判断された場合、ステップS213の処理はスキップされて、処理は、後述するステップS214に進む。
ステップS212において、コピーされるファイルと、ローカルストレージ24の対応するファイルは、同一のファイルではない、すなわち、例えば、アップデート用ファイルなどであって、ファイル名称(ファイルパスも含む)は同一であるが、その実ファイルの内容が異なると判断された場合、ステップS213において、図41のフローチャートを参照して後述するファイル上書きコピー処理が実行され、ステップS213の処理の終了後、処理は、後述するステップS214に進む。
ステップS212において、コピーされるファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであると判断された場合、ステップS213の処理はスキップされて、処理は、後述するステップS214に進む。
ステップS210の処理の終了後、ステップS212において、コピーされるファイルとローカルストレージ24の対応するファイルは同一のファイルであると判断された場合、または、ステップS213の処理の終了後、ステップS214において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24に、対応するManifestファイルが存在するか否かを判断する。
ステップS214において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、ステップS215において、図42のフローチャートを参照して後述するManifestファイル作成処理1が実行されて、処理は、ステップS219に進む。
ステップS214において、ローカルストレージ24に、対応するManifestファイルが存在する判断された場合、ステップS216において、図43のフローチャートを参照して後述するManifestファイル更新処理1が実行される。
ステップS217において、マニフェストファイル生成・更新処理部39は、Manifestファイルは、正しく更新されたか否かを判断する。
ステップS217において、Manifestファイルは正しく更新されなかったと判断された場合、ステップS218において、マニフェストファイル生成・更新処理部39は、Manifestファイルが正しく更新されなかったことを、ファイルコピー制御部38に通知する。ファイルコピー制御部38は、ローカルストレージ24における、temporaryの保存ファイル名でのコピー処理を中止し、コピーされたファイルを削除して、処理は、後述するステップS222に進む。
ステップS215の処理の終了後、または、ステップS217において、Manifestファイルは正しく更新されたと判断された場合、ステップS219において、図44のフローチャートを参照して後述するバインディング処理2が実行される。
ステップS219の処理の終了後、ローカルストレージディレクトリ管理部34およびファイルシステムマージ処理部36は、該当するファイルがローカルストレージ24から再生可能な状態であることを認識する。
ステップS211において、上書き禁止が指定されていると判断された場合、ステップS221において、マニフェストファイル生成・更新処理部39は、上書き禁止が指定されていると判断されたことを、ファイルコピー制御部38に通知する。ファイルコピー制御部38は、ローカルストレージ24における、temporaryの保存ファイル名でのコピー処理を中止し、コピーされたtemporaryの保存ファイル名のファイルを削除する。
ステップS205において、所定のファイルのコピーが実行されないと判断された場合、ステップS218、ステップS220、または、ステップS221の処理の終了後、ステップS222において、コントローラ21は、ナビゲーションプログラムの実行が終了されるか否かを判断する。
ステップS222において、ナビゲーションプログラムの実行が終了されていないと判断された場合、処理は、ステップS204に戻り、それ以降の処理が繰り返される。ステップS222において、ナビゲーションプログラムの実行が終了されると判断された場合、処理は終了される。
このような処理により、光ディスク11からローカルストレージ24にファイルデータの少なくとも一部がコピーされて、manifestファイルが生成または更新されて、バインディング処理が実行される。
したがって、光ディスクドライブ22が光ディスク11からファイルデータを読み出すための読み出しレートが、一度に再生出力するべきファイルの再生レートの合計よりも遅く、読み出しが再生に追いつかないような状態を防ぐことができ、高速な読み出し能力を有さない光ディスクドライブ22しか備えられていない再生装置1においても、光ディスク11からのデータ読み出し能力を超えた再生処理を実現することが可能となる。
次に、図39のフローチャートを参照して、図37のステップS207において実行される、src_file_name設定処理1について説明する。
ステップS251において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、ナビゲーションプログラムでローカルストレージ24内のファイルのコピー先のパスが指定されているか否かを判断する。
ステップS251において、ナビゲーションプログラムでローカルストレージ内のファイルのコピー先のパスが指定されていると判断された場合、ステップS252において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、ファイルのコピー先を示すパスを取得して、処理は、後述するステップS254に進む。
ステップS251において、ナビゲーションプログラムでローカルストレージ内のファイルのコピー先のパスが指定されていないと判断された場合、ステップS253において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、author_idおよびdisc_id、並びに、光ディスク11内のパスにおけるファイル属性項目以下のパスを取得する。
ステップS252またはステップS253の処理の終了後、ステップS254において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、ナビゲーションプログラムで指定されたファイルコピー先のパス/ファイル名、または、author_id/disc_id/ファイル属性項目/ファイル名から、src_file_nameを設定して、処理は、図37のステップS207に戻り、ステップS208に進む。
このような処理により、生成または更新されるmanifestファイルのsrc_file_nameが設定される。
次に、図40のフローチャートを参照して、図37のステップS210において実行される、ファイルコピー処理について説明する。
ステップS281において、ファイルコピー制御部38は、図39を用いて説明した処理により設定されたsrc_file_nameを取得する。
ステップS282において、ファイルコピー制御部38は、ローカルストレージ24のファイルシステムに、src_file_nameに対応するディレクトリは存在するか否かを判断する。
ステップS282において、src_file_nameに対応するディレクトリは存在しないと判断された場合、ステップS283において、ファイルコピー制御部38は、src_file_nameに基づいて、ローカルストレージ24のファイルシステムに、ファイルコピー先のディレクトリを作成する。
ステップS282において、src_file_nameに対応するディレクトリは存在すると判断された場合、または、ステップS283の処理の終了後、ステップS284において、ファイルコピー制御部38は、src_file_nameを基に、コピーされたファイルのtemporaryの保存ファイル名を、光ディスク11に記載されていたファイル名に変更するとともに、該当するファイルにパスを設定して、処理は、図37のステップS210に戻り、図38のステップS214に進む。
このような処理により、temporaryのファイル名で光ディスク11からローカルストレージ24にコピーされていたファイルのファイル名が変更されて、ローカルストレージ24のファイルシステムにおけるパスが設定される。
次に、図41のフローチャートを参照して、図37のステップS213において実行される、ファイル上書きコピー処理について説明する。
ステップS311において、ファイルコピー制御部38は、図39を用いて説明した処理により設定されたsrc_file_nameを取得する。
ステップS312において、ファイルコピー制御部38は、ローカルストレージ24にはじめに記録されていた、該当するsrc_file_nameを有するファイルを削除する。
ステップS313において、ファイルコピー制御部38は、src_file_nameを基に、コピーされたファイルのtemporaryの保存ファイル名を、光ディスク11に記載されていたファイル名に変更するとともに、該当するファイルにパスを設定して、処理は、図37のステップS213に戻り、図38のステップS214に進む。
このような処理により、ローカルストレージ24にはじめに記録されていた、該当するsrc_file_nameを有するファイルが削除されるとともに、temporaryのファイル名で光ディスク11からローカルストレージ24にコピーされていたファイルのファイル名が変更されて、実質的に上書きコピーが実行され、ローカルストレージ24のファイルシステムにおけるパスが設定される。すなわち、時間がかかるコピー処理を、まず一時的なファイル名をつけて開始しておくと共に、ローカルストレージに既にファイルが存在する場合の上書き属性等を確認するということにより、迅速にコピー処理を終了させ、ディスク挿入から、コンテンツ再生までの時間を短くすることができる。
次に、図42のフローチャートを参照して、図38のステップS215において実行される、Manifestファイル作成処理1について説明する。
ステップS341において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24内でユニークなManifest_idを定める。
ステップS342において、マニフェストファイル生成・更新処理部39は、コピーされたファイルに設定されたsrc_file_nameを取得する。
ステップS343において、マニフェストファイル生成・更新処理部39は、ファイルのコピー元となる光ディスク11内のパスを取得する。
ステップS344において、マニフェストファイル生成・更新処理部39は、例えば、credentialの設定など、必要に応じて、Manifestファイル作成のために必要な情報が他にあれば、取得する。
ステップS345において、マニフェストファイル生成・更新処理部39は、コピー元となる光ディスク11内のパスをdst_file_nameとし、設定されたsrc_file_nameと、取得したauthor_idおよびdisc_idを基に、Manifestファイルを作成する。
ステップS346において、マニフェストファイル生成・更新処理部39は、作成されたManifestファイルの情報をローカルストレージディレクトリ管理部34に供給する。ローカルストレージディレクトリ管理部34は、作成されたManifestファイルの情報をローカルストレージ24に保存し、図14を用いて説明したような所定のパスを設定し、処理は、図38のステップS215に戻り、ステップS219に進む。
このような処理により、ローカルストレージ24に、コピーされるファイルに対応するManifestファイルが存在しない場合、Manifestファイルが新たに生成され、ローカルストレージ24に保存されて、図14を用いて説明したような所定のパスが設定されるので、生成されたManifestファイルをバインディング処理に利用することができ、光ディスク11に記録されたデータと、光ディスク11からローカルストレージ24にコピーされたデータとを、PlayListに基づいて、同期して再生させることができる。
次に、図43のフローチャートを参照して、図38のステップS216において実行される、Manifestファイル更新処理1について説明する。
ステップS371において、マニフェストファイル生成・更新処理部39は、装着されている光ディスク11から取得したauthor_idおよびdisc_idを基に、更新するManifestファイルを検出する。
ステップS372において、マニフェストファイル生成・更新処理部39は、コピーされたファイルに対して設定されたsrc_file_nameを取得する。
ステップS373において、マニフェストファイル生成・更新処理部39は、ファイルのコピー元となる光ディスク11内のパスを取得する。
ステップS374において、マニフェストファイル生成・更新処理部39は、このManifestファイルに記載されているいずれかのdst_file_nameと、コピー元の光ディスク11のパスとが一致しているか否かを判断する。
ステップS374において、コピー元の光ディスクのパスと一致していると判断された場合、ステップS375において、マニフェストファイル生成・更新処理部39は、dst_file_nameを有するファイルのpermission属性として、上書き禁止が指定されているか否かを判断する。ステップS375において、上書き禁止が指定されていると判断された場合、処理は、後述するステップS380に進む。
ステップS374において、コピー元の光ディスクのパスと一致していないと判断された場合、または、ステップS375において、上書き禁止が指定されていないと判断された場合、ステップS376において、マニフェストファイル生成・更新処理部39は、必要に応じて、Manifestファイル更新のために必要な情報が他にあれば、取得する。
ステップS377において、マニフェストファイル生成・更新処理部39は、コピー元となる光ディスク11内のパスをdst_file_nameとして、設定されたsrc_file_nameとdst_file_name、必要に応じて、Manifestファイル更新のために必要な情報が取得されていれば、その情報とともに、ローカルストレージ24に記録されている対応するManifestファイルに追加する。
ステップS378において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24内のauthor_idおよびdisc_idで管理される領域においてManifestファイルを識別可能なようにするために、必要に応じて、Manifest_idを更新する。
ステップS379において、マニフェストファイル生成・更新処理部39は、更新されたManifestファイルを、ローカルストレージ24に保存して、処理は、図38のステップS216に戻り、ステップS217に進む。
ステップS375において、上書き禁止が指定されていると判断された場合、ステップS380において、マニフェストファイル生成・更新処理部39は、光ディスク11からローカルストレージ24へ、該当するファイルをコピーすることを禁止することを、ファイルコピー制御部35に通知し、処理は、図38のステップS216に戻り、ステップS217に進む。
このような処理により、ローカルストレージ24に、コピーされるファイルに対応するManifestファイルが存在した場合、Manifestファイルが更新されるので、更新されたManifestファイルをバインディング処理に利用することができ、光ディスク11に記録されたデータ、ローカルストレージ24に保存されていたデータ、および、光ディスク11からローカルストレージ24にコピーされたデータを、PlayListに基づいて、同期して再生させることができる。
次に、図44のフローチャートを参照して、図38のステップS219において実行される、バインディング処理2について説明する。
ステップS411において、ローカルストレージディレクトリ管理部34は、ローカルストレージ24に記録されているダウンロードされたデータ群から、対応するdisc_idのディレクトリを抽出し、ファイルシステムマージ処理部36に供給する。
ステップS412において、ファイルシステムマージ処理部36は、Manifestファイルのsrc_file_nameおよびdst_file_nameを参照する。
ステップS413において、光ディスクディレクトリ管理部35は、装着されている光ディスク11のファイルシステムを示す情報をファイルシステムマージ処理部36に供給する。ファイルシステムマージ処理部36は、光ディスク11のファイルシステムを示す情報を参照する。
ステップS414において、ファイルシステムマージ処理部36は、光ディスク11のファイルシステムのパスと、Manifestファイルのdst_file_nameとが一致しているものがあるか否かを判断する。
ステップS414において、光ディスク11のファイルシステムのパスと、Manifestファイルのdst_file_nameとが一致しているものがあると判断された場合、ステップS415において、ファイルシステムマージ処理部36は、対応するファイルは、Manifestファイルのsrc_file_nameの指定にしたがって、光ディスク11ではなく、ローカルストレージ24から読み出すものとする。
ステップS414において、光ディスク11のファイルシステムのパスと、Manifestファイルのdst_file_nameとが一致しているものがないと判断された場合、または、ステップS415の処理の終了後、ステップS416において、ファイルシステムマージ処理部36は、ステップS22において参照されたsrc_file_nameおよびdst_file_nameを基に、ネイティブなファイルシステムと、仮想ファイルシステムとをバインディングし、仮想ファイルシステムを生成して、処理は、図38のステップS219に戻り、ステップS220に進む。
このような処理により、光ディスク11のファイルシステムと、光ディスク11からコピーされたファイルを含むローカルストレージ24のファイルシステムとがバインディングされて、仮想ファイルシステムが構築される。
図27乃至図44を用いて、再生装置1に装着された光ディスク11に記録されたデータの一部を、仮想ファイルシステムの生成前に、予め、ローカルストレージ24にコピーする処理が実行される場合について説明したが、例えば、仮想ファイルシステムの生成前に、ネットワーク2を介して所定のファイルを取得してローカルストレージ24にコピーした後、光ディスク11に記録されたデータと、ローカルストレージ24に保存されているデータとのバインディング処理を実行するようにしても良い。
すなわち、図45に示されるように、ネットワーク2を介して、保存ファイル名はローカルストレージ24に保存されているものと同一の「コンテンツA」であるが、実ファイルは、例えば、「コンテンツA」に対するアップデートファイルであるなど、「コンテンツA」とは異なる内容である「コンテンツA´」であるファイルが供給された場合、ローカルストレージ24に存在している、保存ファイル名および実ファイルともに「コンテンツA」であるファイルの属性が上書き可能であれば、上書きコピー処理が実行され、manifestファイルが更新される。
具体的には、供給された実ファイル「コンテンツA´」は、ローカルストレージ24に記録されているいずれのデータとも異なるテンポラリファイル名で、ローカルストレージ24へ保存され、ローカルストレージ24に存在していた実ファイル「コンテンツA」が削除され、供給されたファイルのファイル名がテンポラリファイル名から「コンテンツA」に書き換えられる。
この場合においても、ネットワーク2を介して、アップデートデータが取得されるのであるが、図21乃至図26のフローチャートを用いて説明した場合と異なり、取得されるのはアップデートデータファイルのみであり、対応する新たなManifestファイルは取得されない。すなわち、この場合、アップデートデータファイル(図45における実ファイル「コンテンツA´」)を取得したことによってManifestファイルは、図27乃至図44を用いて説明した場合と同様にして、新たに生成されるか、または、更新される。
ただし、生成されるか、または、更新されるManifestファイルのsrc_file_nameは、ナビゲーションプログラムにより指定されていなくても生成することが可能であるが、この処理における場合のdst_file_nameは、ナビゲーションプログラムにより指定されるか、または、アップデートされるデータファイルと一緒に供給される必要がある。
このとき、ナビゲーションプログラムにより指定されるか、または、アップデートされるデータファイルと一緒に供給されたdst_file_nameが、光ディスク11のいずれかのデータファイルのパスと一致する場合、このアップデートデータファイルは、光ディスク11に記録されているデータを実質的に更新するものとして用いられるものである。
なお、図45においては、ネットワーク2を介して、アップデートされるデータファイルが取得されるものとして図示しているが、アップデートされるデータファイルは、ドライブ27に装着されたリムーバブルメディア28よりコピーされるようにすることも可能であることは、いうまでもない。
次に、図46および図47のフローチャートを参照して、ネットワーク2を介して、アップデートされるデータファイルが取得される場合におけるファイルコピーおよびファイルシステム構成処理2について説明する。
ステップS441乃至ステップS444において、図37を用いて説明したステップS201乃至ステップS204と基本的に同様の処理が実行される。
すなわち、光ディスク11が装着されていると判断された場合、光ディスク11からauthor_idとdisc_idが読み出され、図22を用いて説明したバインディング処理1が実行され、光ディスク11からナビゲーションプログラムが読み出されて実行される。
ステップS445において、ファイルコピー制御部38は、ナビゲーションプログラムに基づいて、または、操作入力部29から入力されるユーザの操作入力に基づいて、ネットワーク2を介して、外部から、ローカルストレージ24に、所定のファイルの取得を実行するか否かを判断する。ステップS445において、所定のファイルが取得されないと判断された場合、処理は、後述するステップS462に進む。
ステップS445において、所定のファイルが取得されると判断された場合、ステップS2446において、ファイルコピー制御部38は、temporaryの保存ファイル名を用いて、取得された所定のファイルをローカルストレージ24に記憶する。
S447において、図48のフローチャートを参照して後述するsrc_file_name設定処理2が実行される。
ステップS448において、マニフェストファイル生成・更新処理部39は、ローカルストレージディレクトリ管理部34によりローカルストレージ24に保存されているファイルを検索させることにより、ローカルストレージ24に、対応するManifestファイルが存在するか否かを判断する。ステップS448において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、処理は、後述するステップS450に進む。
ステップS448において、ローカルストレージ24に、対応するManifestファイルが存在すると判断された場合、ステップS449において、マニフェストファイル生成・更新処理部39は、ローカルストレージディレクトリ管理部34によりローカルストレージ24に保存されているファイルを検索させることにより、ネットワーク2を介して取得されたファイルに設定されたsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在しているか否かを判断する。
ステップS448において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、または、ステップS449において、ネットワーク2を介して取得されたファイルに設定されたsrc_file_nameと同一のsrc_file_nameを有するファイルがローカルストレージ24内に存在していないと判断された場合、ステップS450において、図40のフローチャートを参照して説明したファイルコピー処理が実行される。ステップS450の処理の終了後、処理は、後述するステップS454に進む。
ステップS449において、ネットワーク2を介して取得されたファイルに設定されたsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在していると判断された場合、ステップS451において、マニフェストファイル生成・更新処理部39は、ネットワーク2を介して取得されたファイルに設定されたsrc_file_nameと同一のsrc_file_nameを有するファイルがすでにローカルストレージ24内に存在していることを、ファイルコピー制御部38に通知する。ファイルコピー制御部38は、同一のsrc_file_nameを有するローカルストレージ24に記録されているファイルのpermission属性として、上書き禁止が指定されているか否かを判断する。
ステップS451において、上書き禁止が指定されていると判断された場合、処理は、後述するステップS461に進む。
ステップS451において、上書き禁止が指定されていない、すなわち、上書きが許可されていると判断された場合、ステップS452において、ファイルコピー制御部38は、例えば、汎用ファイルアクセスAPIを利用して、HDD上のファイルとその属性を列挙し、ファイルの名前、サイズ、ハッシュ値などを比較したり、ローカルストレージ24に保存されたファイルコピー処理の履歴を参照することなどにより、ネットワーク2を介して取得されたファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであるか否かを判断する。ステップS452において、ネットワーク2を介して取得されたファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであると判断された場合、ステップS453の処理はスキップされて、処理は、後述するステップS454に進む。
ステップS452において、ネットワーク2を介して取得されたファイルと、ローカルストレージ24の対応するファイルは、同一のファイルではない、すなわち、例えば、アップデート用ファイルなどであって、ファイル名称(ファイルパスも含む)は同一であるが、その実ファイルの内容が異なると判断された場合、ステップS453において、図41のフローチャートを参照して説明したファイル上書きコピー処理が実行され、ステップS453の処理の終了後、処理は、後述するステップS454に進む。
ステップS452において、ネットワーク2を介して取得されたファイルと、ローカルストレージ24の対応するファイルは、同一のファイルであると判断された場合、ステップS245の処理はスキップされて、処理は、後述するステップS454に進む。
ステップS450の処理の終了後、ステップS452において、ネットワーク2を介して取得されたファイルとローカルストレージ24の対応するファイルは同一のファイルであると判断された場合、または、ステップS453の処理の終了後、ステップS454において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24に、対応するManifestファイルが存在するか否かを判断する。
ステップS454において、ローカルストレージ24に、対応するManifestファイルが存在しないと判断された場合、ステップS455において、図49のフローチャートを参照して後述するManifestファイル作成処理2が実行されて、処理は、ステップS459に進む。
ステップS454において、ローカルストレージ24に、対応するManifestファイルが存在する判断された場合、ステップS456において、図50のフローチャートを参照して後述するManifestファイル更新処理2が実行される。
そして、ステップS457およびステップS458において、図38を用いて説明したステップS217およびステップS21462と同様の処理が実行される。
すなわち、Manifestファイルは、正しく更新されたか否かが判断され、Manifestファイルは正しく更新されなかったと判断された場合、ローカルストレージ24における、temporaryの保存ファイル名でのファイルの記憶処理が中止され、記憶されたファイルが削除される。
ステップS455の処理の終了後、または、ステップS457において、Manifestファイルは正しく更新されたと判断された場合、ステップS459において、図44のフローチャートを参照して説明したバインディング処理2が実行されて、該当するファイルがローカルストレージ24から再生可能な状態となる。
ステップS451において、上書き禁止が指定されていると判断された場合、ステップS461において、ローカルストレージ24における、temporaryの保存ファイル名でのファイル記憶処理が中止され、記憶されたtemporaryの保存ファイル名のファイルが削除される。
そして、ステップS445において、所定のファイルのコピーが実行されないと判断された場合、ステップS458、ステップS460、または、ステップS461の処理の終了後、ナビゲーションプログラムの実行が終了されるか否かが判断され、ナビゲーションプログラムの実行が終了されていないと判断された場合、処理は、ステップS444に戻り、それ以降の処理が繰り返される。ナビゲーションプログラムの実行が終了されると判断された場合、処理は終了される。
このような処理により、光ディスク11からローカルストレージ24にファイルデータの少なくとも一部がコピーされて、manifestファイルが生成または更新されて、バインディング処理が実行された場合と基本的に同様にして、ネットワーク2を介してファイルデータが取得されて、ローカルストレージに記憶され、manifestファイルが生成または更新されて、バインディング処理が実行される。
次に、図48のフローチャートを参照して、図46のステップS447において実行される、src_file_name設定処理2について説明する。
ステップS491において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、ナビゲーションプログラムで、記憶されるファイルのローカルストレージ24内のパスが指定されているか否かを判断する。
ステップS491において、ナビゲーションプログラムでローカルストレージ内のファイルのコピー先のパスが指定されていると判断された場合、ステップS492において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、記憶されるファイルのパスを取得して、処理は、後述するステップS494に進む。
ステップS491において、ナビゲーションプログラムでローカルストレージ内のパスが指定されていないと判断された場合、ステップS493において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、装着されている光ディスク11のauthor_idおよびdisc_id、並びに、取得されたファイルのファイル名またはファイル属性項目以下のパスを取得する。
ステップS492またはステップS493の処理の終了後、ステップS494において、ファイルコピー制御部38およびマニフェストファイル生成・更新処理部39は、ナビゲーションプログラムで指定されたファイルコピー先のパス/ファイル名、または、author_id/disc_id/(ファイル属性項目/)ファイル名から、src_file_nameを設定して、処理は、図46のステップS447に戻り、ステップS448に進む。
このような処理により、生成または更新されるmanifestファイルのsrc_file_nameが設定される。
次に、図49のフローチャートを参照して、図47のステップS455において実行される、Manifestファイル作成処理2について説明する。
ステップS521において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24内でユニークなManifest_idを定める。
ステップS522において、マニフェストファイル生成・更新処理部39は、取得されたファイルに設定されたsrc_file_nameを取得する。
ステップS523において、マニフェストファイル生成・更新処理部39は、ファイルとともに取得された、または、ナビゲーションプログラムにより指定されるdst_file_nameの情報を取得する。
ステップS524において、マニフェストファイル生成・更新処理部39は、例えば、credentialなど、必要に応じて、Manifestファイル作成のために必要な情報が他にあれば、取得する。
ステップS525において、マニフェストファイル生成・更新処理部39は、設定されたsrc_file_name、装着された光ディスク11から取得されたauthor_idおよびdisc_id、並びに、ステップS523の処理により取得されたdst_file_nameを基に、Manifestファイルを作成する。
ステップS526において、マニフェストファイル生成・更新処理部39は、作成されたManifestファイルの情報をローカルストレージディレクトリ管理部34に供給する。ローカルストレージディレクトリ管理部34は、作成されたManifestファイルの情報をローカルストレージ24に保存し、図14を用いて説明したような所定のパスを設定し、処理は、図47のステップS455に戻り、ステップS459に進む。
このような処理により、ローカルストレージ24に、取得されたファイルに対応するManifestファイルが存在しない場合、Manifestファイルが新たに生成され、ローカルストレージ24に保存されて、図14を用いて説明したような所定のパスが設定されるので、生成されたManifestファイルをバインディング処理に利用することができ、光ディスク11に記録されたデータと、ネットワーク2を介して取得されてローカルストレージ24に記憶されたデータとを、PlayListに基づいて、同期して再生させることができる。
次に、図50のフローチャートを参照して、図47のステップS456において実行される、Manifestファイル更新処理2について説明する。
ステップS551において、マニフェストファイル生成・更新処理部39は、装着されている光ディスク11から取得したauthor_idおよびdisc_idを基に、更新するManifestファイルを検出する。
ステップS552において、マニフェストファイル生成・更新処理部39は、取得されたファイルに対して設定されたsrc_file_nameを取得する。
ステップS553において、マニフェストファイル生成・更新処理部39は、ファイルとともに取得された、または、ナビゲーションプログラムにより指定されるdst_file_nameの情報を取得する。
ステップS554において、マニフェストファイル生成・更新処理部39は、このManifestファイルに記載されているいずれかのdst_file_nameと、取得されたdst_file_nameとが一致しているか否かを判断する。
ステップS554において、Manifestファイルに記載されているいずれかのdst_file_nameと取得されたdst_file_nameとが一致していると判断された場合、ステップS555において、マニフェストファイル生成・更新処理部39は、dst_file_nameを有するファイルのpermission属性として、上書き禁止が指定されているか否かを判断する。ステップS555において、上書き禁止が指定されていると判断された場合、処理は、後述するステップS560に進む。
ステップS554において、anifest_fileに記載されているいずれかのdst_file_nameと取得されたdst_file_nameとが一致していないと判断された場合、または、ステップS555において、上書き禁止が指定されていないと判断された場合、ステップS556において、マニフェストファイル生成・更新処理部39は、必要に応じて、Manifestファイル更新のために必要な情報が他にあれば、取得する。
ステップS557において、マニフェストファイル生成・更新処理部39は、取得されたdst_file_nameと設定されたsrc_file_nameを、必要に応じて、Manifestファイル更新のために必要な情報が取得されていれば、その情報とともに、ローカルストレージ24に記録されている対応するManifestファイルに追加する。
ステップS558において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24内のauthor_idおよびdisc_idで管理される領域においてManifestファイルを識別可能なようにするために、必要に応じて、Manifest_idを更新する。
ステップS559において、マニフェストファイル生成・更新処理部39は、更新されたManifestファイルを、ローカルストレージ24に保存して、処理は、図47のステップS476に戻り、ステップS477に進む。
ステップS555において、上書き禁止が指定されていると判断された場合、ステップS560において、マニフェストファイル生成・更新処理部39は、ローカルストレージ24に該当するファイルを記憶することを禁止することを、ファイルコピー制御部35に通知し、処理は、図47のステップS476に戻り、ステップS477に進む。
このような処理により、ローカルストレージ24に、取得されたファイルに対応するManifestファイルが存在した場合、Manifestファイルが更新されるので、更新されたManifestファイルをバインディング処理に利用することができ、光ディスク11に記録されたデータ、ローカルストレージ24に保存されていたデータ、および、光ディスク11からローカルストレージ24に記憶されたデータを、PlayListに基づいて、同期して再生させることができる。
このようにして、再生装置1に装着された記録媒体である光ディスク11のデータの一部を再生装置1内部の記録部であるローカルストレージ24にコピーし、それぞれのデータを同期して再生することができるような仕組みを提供することが可能となる。
また、manifestファイルを伴わないデータが取得され、再生装置1内部の記録部であるローカルストレージ24に記録される場合、ローカルストレージ24に記録されたデータが、光ディスク11のデータの一部のコピーであるか、外部から取得されたものであるかにかかわらず、manifestファイルを適宜生成または更新して仮想ファイルシステムを構築することにより、再生装置1に装着された記録媒体である光ディスク11に記録されたデータと再生装置1内部の記録部であるローカルストレージ24に記録されたデータとを同期して再生することができるような仕組みを提供することが可能となる。
更に、ここでは、光ディスク11からローカルストレージ24へファイルをコピーしたり、外部から取得されたファイルをローカルストレージ24に記憶する処理について説明したが、例えば、複数のファイルを含むデータ群として、指定されたフォルダまたはディレクトリごと、光ディスク11からローカルストレージ24へコピーしたり、複数のファイルを含むデータ群としてのフォルダまたはディレクトリ構成のデータ群を外部から取得して、ローカルストレージ24に記憶する場合においても、上述した処理を適用することが可能である。すなわち、再生装置1においては、複数のファイルを含むデータ群としてのフォルダまたはディレクトリ構成のデータ群を取得した場合、manifestファイルを適宜生成または更新して仮想ファイルシステムを構築することにより、ローカルストレージ24に記憶されたデータと光ディスク11に記録されているデータと同期して再生することが可能であり、これらの処理により、上述した場合と同様の効果を奏するものである。
また、再生装置1においては、上述したように、ローカルストレージ24を半導体メモリなどにより構成し、半導体メモリなどにより構成されたローカルストレージを再生装置1から着脱可能なようにしても良いが、更に、それ以外にも、図17を用いて説明したようなコンテンツオーサがコンテンツを配布する際のコンテンツ配布用ファイル形式における場合と同様のデータを、ドライブ27に装着可能なリムーバブルメディア28に、図14を用いて説明したディレクトリ構成で記録させるようにすることにより、ローカルストレージ24にデータを記憶しなくても、リムーバブルメディア28に記録されているデータのファイルシステムと、光ディスク11に記録されているデータのファイルシステムとを上述したようにバインディングさせることができるようにしても良い。
更に、ローカルストレージ24にもリムーバブルメディア28にも、図14を用いて説明したディレクトリ構成で、コンテンツデータおよびその再生に必要なデータ(例えば、PlayListやSubPlayItem、または、Manifestファイルなど)を記録させるようにすることにより、ローカルストレージ24に記録されているデータのファイルシステムと、リムーバブルメディア28に記録されているデータのファイルシステムと、光ディスク11に記録されているデータのファイルシステムとを、上述したようにバインディングさせることができるようにしても良い。このような場合、上述した処理を適用して、例えば、ローカルストレージ24に記録されているデータのファイルシステムと光ディスク11に記録されているデータのファイルシステムとがバインディングされて、第1の仮想ファイルシステムが生成され、リムーバブルメディア28に記録されているデータのファイルシステムと第1の仮想ファイルシステムとがバインディングされて、第2の仮想ファイルシステムが生成されるようにすることができる。
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
このプログラム格納媒体は、図1に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが格納されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア28により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが格納されているROMまたはRAMなどのメモリ23や、ハードディスクなどのローカルストレージ24などにより構成される。
また、本明細書において、プログラム格納媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的または個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。