(57)【要約】【課題】書換え可能な記録媒体に記録された不正なデータが、読み出し専用記録媒体のデータと組み合せて実行、再生されることを防ぐ。【解決手段】Local Storage１８は、複数のファイルと、これらのファイルのうち読み出し専用記録媒体の記録内容に組み合せて利用するものを指定するマージ管理情報と、マージ管理情報の正当性を検証可能な署名情報とを記録しており、Virtual File System３８は、署名情報に基づいてマージ管理情報の正当性を判定し、マージ管理情報が正当であると判定された場合に、読み出し専用記録媒体のファイル構成にマージ管理情報により指定されているファイルを加えた新たなファイル構成を示すパッケージ情報を生成する。【選択図】図１７
2010257473.tif 000002
【特許請求の範囲】
【請求項１】
複数のタイトルに対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたアプリケーションプログラムに対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたデジタルストリームに対応するデータとを記録した記録媒体を再生する再生装置に用いる再生方法であって、
前記複数のタイトルのいずれかを選択する選択ステップと、
前記選択したタイトルに関連するデジタルストリームを再生する再生ステップと、
前記選択したタイトルに関連するアプリケーションプログラムを実行する実行ステップと、
前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がない第１のデータと、前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がある第２のデータと、前記第１のデータの格納場所、第２のデータの格納場所、及び前記第２のデータのハッシュ値を含むマージ管理情報と、前記マージ管理情報のハッシュ値を含む署名情報とを、前記再生装置が備えるローカルストレージへ記録する記録ステップと、
前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあるか否かを判定する第１の判定ステップと、
前記署名情報に含まれる前記マージ管理情報のハッシュ値と、前記マージ管理情報から算出されるハッシュ値とを比較し、同じであれば前記マージ管理情報が改竄されていないと判定する第２の判定ステップと、
前記第１のデータ、前記第２のデータ、及び前記マージ管理情報を読取り専用属性に変更する属性変更ステップと、
前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあると前記第１の判定ステップにおいて判定し、かつ前記マージ管理情報が改竄されていないと前記第２の判定ステップにおいて判定し、かつ前記第１のデータ、前記第２のデータ、及び前記マージ管理情報を属性変更ステップが読取り専用属性に変更した後に、前記選択ステップが、前記選択したタイトルとは異なるタイトルを選択したとき、前記記録媒体に記録されたデータと前記ローカルストレージに記録され読取り専用属性に変更された第１のデータ及び第２のデータとを組み合わせたパッケージ情報を生成する生成ステップと、
前記第２のデータから算出されるハッシュ値と、前記マージ管理情報に含まれる第２のデータのハッシュ値とを比較し同じであれば、前記生成したパッケージ情報に含まれる第２のデータを利用して処理を実行する処理ステップと
を含む再生方法。
【請求項２】
前記第１のデータは前記デジタルストリームに対応するデータであり、
前記第２のデータは前記デジタルストリームとは異なるデータである請求項１記載の再生方法。
【請求項３】
前記選択ステップは、ユーザからのタイトル選択要求を受けてタイトルを選択する請求項１記載の再生方法。
【請求項４】
複数のタイトル対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたアプリケーションプログラムに対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたデジタルストリームに対応するデータとを記録した記録媒体を再生する再生装置であって、
ローカルストレージと、
前記複数のタイトルのいずれかを選択する選択部と、
前記選択したタイトルに関連するデジタルストリームを再生する再生部と、
前記選択したタイトルに関連するアプリケーションプログラムを実行する実行部と、
前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がない第１のデータと、前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がある第２のデータと、前記第１のデータの格納場所、第２のデータの格納場所、及び前記第２のデータのハッシュ値を含むマージ管理情報と、前記マージ管理情報のハッシュ値を含む署名情報とを、前記ローカルストレージへ記録する記録部と、
前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあるか否かを判定する第１の判定部と、
前記署名情報に含まれる前記マージ管理情報のハッシュ値と、前記マージ管理情報から算出されるハッシュ値とを比較し、同じであれば前記マージ管理情報が改竄されていないと判定する第２の判定部と、
前記第１のデータ、前記第２のデータおよび前記マージ管理情報を読取り専用属性に変更する属性変更部と、
前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあると前記第１の判定部が判定し、かつ前記マージ管理情報が改竄されていないと前記第２の判定部が判定し、かつ前記第１のデータ、前記第２のデータおよび前記マージ管理情報を属性変更部が読取り専用属性に変更した後に、前記選択部が、前記選択したタイトルとは異なるタイトルを選択したとき、前記記録媒体に記録されたデータと前記ローカルストレージに記録され読取り専用属性に変更された第１のデータ及び第２のデータとを組み合わせたパッケージ情報を生成するパッケージ情報生成部とを備え、
前記第２のデータから算出されるハッシュ値と、前記マージ管理情報に含まれる第２のデータのハッシュ値とが同じであれば、前記生成したパッケージ情報に含まれる第２のデータを利用して処理を行うように構成した再生装置。
【請求項５】
前記第１のデータは前記デジタルストリームに対応するデータであり、
前記第２のデータは前記デジタルストリームとは異なるデータである請求項４記載の再生装置。
【請求項６】
前記選択部は、ユーザからのタイトル選択要求を受けてタイトルを選択する請求項４記載の再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Virtual Packageの再生技術に関する。
【背景技術】
【０００２】
Virtual Packageとは、BD-ROM等の読み出し専用記録媒体と、ハードディスク等の読み書き可能な記録媒体との記録内容を一体的に示すパッケージ情報を生成し、これらの記録媒体に記録されているデジタルストリームやアプリケーションプログラム（以下、「アプリケーション」という。）を、あたかも仮想的な一つのパッケージに記録されているかのごとく再生や実行に供する技術である。
【０００３】
このような技術では、書き換え可能なハードディスクに記録しているデータを更新することで、BD-ROMを頒布した後もVirtual Package全体としての作品内容を変更することができる。例えば、映画作品のプロバイダは、作品本編を記録したBD-ROMを頒布した後も、公開前の他の作品の予告編デジタルストリームをネットワークを介して提供することで、BD-ROMの頒布時期にかかわらず、ユーザに対して常に最新の作品を宣伝することが出来る。
【０００４】
Virtual Packageについての先行技術としては、以下の特許文献に記載されているものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開公報WO  2004/030356 A1
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし一方で、ハードディスクが書き換え可能であることは、ハードディスクに記録しているデータの改竄を可能とし、プロバイダやユーザに不利益をもたらすおそれがある。例えば、BD-ROMに記録されているデジタルストリームが、プロバイダの意図しない状態で再生され作品価値が貶められたり、ハードディスクに記録された不正なアプリケーションが実行され再生装置が誤作動する等の不利益が考えられる。
【０００７】
本発明の目的は、書き換え可能な記録媒体に記録された不正なデータが、読み出し専用記録媒体に記録されているデータと組み合せて実行、再生されることを防ぐことが出来る再生方法及び再生装置を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係る再生方法は、複数のタイトルに対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたアプリケーションプログラムに対応するデータと、前記複数のタイトルのうちのいずれかのタイトルに関連付けられたデジタルストリームに対応するデータとを記録した記録媒体を再生する再生装置に用いる再生方法であって、前記複数のタイトルのいずれかを選択する選択ステップと、前記選択したタイトルに関連するデジタルストリームを再生する再生ステップと、前記選択したタイトルに関連するアプリケーションプログラムを実行する実行ステップと、前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がない第１のデータと、前記記録媒体に記録されたデータと組み合わせて利用するデータであって、改竄チェックをする必要がある第２のデータと、前記第１のデータの格納場所、第２のデータの格納場所、及び前記第２のデータのハッシュ値を含むマージ管理情報と、前記マージ管理情報のハッシュ値を含む署名情報とを、前記再生装置が備えるローカルストレージへ記録する記録ステップと、前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあるか否かを判定する第１の判定ステップと、前記署名情報に含まれる前記マージ管理情報のハッシュ値と、前記マージ管理情報から算出されるハッシュ値とを比較し、同じであれば前記マージ管理情報が改竄されていないと判定する第２の判定ステップと、前記第１のデータ、前記第２のデータ、及び前記マージ管理情報を読取り専用属性に変更する属性変更ステップと、前記ローカルストレージへ記録した第１のデータ及び第２のデータが前記マージ管理情報に含まれる格納場所にあると前記第１の判定ステップにおいて判定し、かつ前記マージ管理情報が改竄されていないと前記第２の判定ステップにおいて判定し、かつ前記第１のデータ、前記第２のデータ、及び前記マージ管理情報を属性変更ステップが読取り専用属性に変更した後に、前記選択ステップが、前記選択したタイトルとは異なるタイトルを選択したとき、前記記録媒体に記録されたデータと前記ローカルストレージに記録され読取り専用属性に変更された第１のデータ及び第２のデータとを組み合わせたパッケージ情報を生成する生成ステップと、前記第２のデータから算出されるハッシュ値と、前記マージ管理情報に含まれる第２のデータのハッシュ値とを比較し同じであれば、前記生成したパッケージ情報に含まれる第２のデータを利用して処理を実行する処理ステップとを含むことを特徴としている。
【発明の効果】
【０００９】
これによって、本発明に係る再生方法では、署名情報に基づいてマージ管理情報の正当性を検証し、マージ管理情報の正当性が確かめられなかった場合は、記録手段に記録されているファイルをもちいてパッケージ情報を生成することを抑制する。
【００１０】
これにより、読み出し専用記録媒体に記録されているデータと、不正なデータとが組み合された状態で実行、再生されることを防ぐことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係る再生装置の使用行為についての形態を示す図である。
【図２】BD-ROMにおけるファイル・ディレクトリ構成を示す図である。
【図３】AVClipがどのように構成されているかを模式的に示す図である。
【図４】PL情報の構成を示す図である。
【図５】AVClip時間軸と、PL時間軸との関係を示す図である。
【図６】4つのClip_Information_file_nameによりなされた一括指定を示す図である。
【図７】Plmark情報の内部構成を示す図である。
【図８】Plmarkによるチャプター定義を示す図である。
【図９】SubPath情報の内部構成を示す図である。
【図１０】SubPlayItem時間軸上の再生区間定義と、同期指定とを示す図である。
【図１１】（ａ）Java(登録商標)アーカイブファイルに収められているプログラム、データを示す図である。  （ｂ）は、クラスファイルの内部構成を示す図である。
【図１２】BD-Jオブジェクトの内部構成を示す図である。
【図１３】INDEX.BDMVの内部構成を示す図である。
【図１４】Local Storageにおけるディレクトリ構造を示す図である。
【図１５】ローカルストレージに格納されたPL情報により、どのようなPlayList再生時間軸が定義されるかを示す図である。
【図１６】（ａ）BD-ROM及びLocal Storageに記録されているアプリケーションと、AVClipを示す図である。  （ｂ）BD-ROM及びLocal Storageに記録されているアプリケーションと、AVClipから構成されたタイトルを示す図である。
【図１７】マージ管理情報ファイルの内部構成を示す図であ
【図１８】本発明に係る再生装置の内部構成を示す図である。
【図１９】命令ROM２１に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。
【図２０】Java(登録商標)仮想マシン３０の内部構成を示す図である。
【図２１】再生状態の遷移を示す図である。
【図２２】Virtual FileSystem部３８によるVirtual Package情報構築の一例を示す図である。
【図２３】（ａ）ディスク全体の時間軸を示す図である。  （ｂ）ディスク全体の時間軸における構成を示す図である。
【図２４】Title Changeにおいて、Virtual Package情報アップデートがどのように行われるかを示す図である。
【図２５】Java(登録商標)アプリケーションが、Virtual Package構成ファイル群の送信をサーバへ要求する様子を示す模式図である。
【図２６】Java(登録商標)アプリケーションが、サーバから送信されたファイルをLocal Storageへ記録する様子を示す模式図である。
【図２７】Java(登録商標)アプリケーションが、Virtual File SystemへVirtual Package情報のアップデートを要求する様子を示す模式図である。
【図２８】Virtual Package情報のアップデートの様子を示す模式図である。
【図２９】モジュールマネージャ３３によるタイトル再生制御の処理を示すフローチャートである。
【図３０】Playback Control Engine３２によるPlayList再生処理の処理手順を示すフローチャートである。
【図３１】Java(登録商標)アプリケーションによるVirtual Package構成ファイル群のダウンロードの手順を示すフローチャートである。
【図３２】Virtual File System３８によるPreparing処理を示すフローチャートである。
【図３３】Virtual File System３８によるUpdating処理を示すフローチャートである。
【図３４】タイトル呼出にあたって、カレントタイトルの再生を一時的に停止(suspend)する際のPlayback Control Engineの処理手順と、呼出先のタイトルの再生終了後、元のタイトルの再生を再開(resume)する際のPlayback Control Engineの処理手順とを示すフローチャートである。
【図３５】Virtual Package管理テーブルの一例である。
【図３６】第３実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。
【図３７】ファイルへの書き込みアクセスを制御するＡＰＩの処理手順を示すフローチャートである。
【図３８】Virtual Packageを構成するファイルにエラーがある場合に、エラーを修正した修正ファイルを生成する様子を示す図である。
【図３９】第４実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。
【図４０】第４実施形態において、Virtual Packageを構築した状態でLocal Storage上のファイルに書き込みアクセスした場合の、ファイルＩ／Ｏ機能を提供するＡＰＩの処理を示すフローチャートである。
【図４１】第５実施形態に係る再生装置の内部構成を示す図である。
【図４２】第５実施形態に係るVirtual Package管理テーブルの一例である。
【図４３】ダウンロードファイルをLocal Storageへ記録する処理手順を示すフローチャートである。
【図４４】第５実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。
【図４５】第６実施形態におけるVirtual Package構築の一例を示す図である。
【図４６】第６実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。
【図４７】アクティブディレクトリにファイルを移動する処理手順を示すフローチャートである。
【図４８】第６実施形態において、ファイルへの書き込みアクセスを制御するＡＰＩの処理手順を示すフローチャートである。
【図４９】第７実施形態におけるVirtual Package構築の一例を示す図である。
【図５０】SHAREDディレクトリ以下のACTIVEディレクトリとdisc＃1ディレクトリ以下のACTIVEディレクトリでVirtual Packageを構築する様子を模式的に示す図である。
【図５１】第７実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。
【図５２】中間状態ファイル構成の構築手順についての説明である。
【図５３】図５１に示したステップＳ１８４における処理内容を、より詳しく示したフローチャートである。
【図５４】Virtual File System部３８がLocal Storage上のファイルを他のモジュールに供給するフローチャートを示す。
【図５５】実施の形態９におけるVirtual Packageの構築処理中の表示を模式的に示す図である。
【図５６】実施の形態９におけるVirtual Packageの構築失敗の表示を模式的に示す図である。
【図５７】図５７は、実施の形態９におけるVirtual Packageの構築成功の表示を模式的に示す図である。
【図５８】Virtual Packageの構築に関する表示を更新する処理手順を示すフローチャートである。
【図５９】実施の形態９におけるLocal Storage上のコンテンツ一覧の表示を示す図である。
【発明を実施するための形態】
【００１２】
(第１実施形態)
以降、本発明に係る再生装置の実施形態について説明する。先ず始めに、本発明に係る再生装置の実施行為のうち、使用行為についての形態を説明する。図１は、本発明に係る再生装置の、使用行為についての形態を示す図である。図１において、本発明に係る再生装置は、再生装置２００である。この再生装置２００は、リモコン３００、テレビ４００により形成されるホームシアターシステムに、映画作品を供給するという用途に供される。
【００１３】
以上が本発明に係る再生装置の使用形態についての説明である。続いて本発明に係る再生装置が再生の対象としている、記録媒体について説明する。本発明に係る再生装置により、再生されるのは、BD-ROMである。図２は、BD-ROMの内部構成を示す図である。
【００１４】
本図の第４段目にBD-ROMを示し、第３段目にBD-ROM上のトラックを示す。本図のトラックは、BD-ROMの内周から外周にかけて螺旋状に形成されているトラックを、横方向に引き伸ばして描画している。このトラックは、リードイン領域と、ボリューム領域と、リードアウト領域とからなる。本図のボリューム領域は、物理層、ファイルシステム層、応用層というレイヤモデルをもつ。ディレクトリ構造を用いてBD-ROMの応用層フォーマット(アプリケーションフォーマット)を表現すると、図中の第１段目のようになる。この第1段目においてBD-ROMには、Rootディレクトリの下に、BDMVディレクトリがある。
【００１５】
BDMVディレクトリの配下には、PLAYLISTディレクトリ、CLIPINFディレクトリ、STREAMディレクトリ、BDJAディレクトリ、BOBJディレクトリと呼ばれる5つのサブディレクトリが存在し、INDEX.BDMVというファイルが配置されている。
【００１６】
STREAMディレクトリには、いわばデジタルストリーム本体となるファイルを格納しているディレクトリであり、拡張子M2TSが付与されたファイル(00001.M2TS)が存在する。
PLAYLISTディレクトリには、拡張子MPLSが付与されたファイル(00001.MPLS)が存在する。
【００１７】
CLIPINFディレクトリには、拡張子CLPIが付与されたファイル(00001.CLPI)が存在する。
BDJAディレクトリには、拡張子JARが付与されたファイル(00001.JAR)が存在する。
【００１８】
BOBJディレクトリには、拡張子BOBJが付与されたファイル(00001.BOBJ)が存在する。
以下、これらのファイルについて説明する。
＜AVClip＞
先ず初めに、拡張子.M2TSが付与されたファイルについて説明する。図３は、拡張子.M2TSが付与されたファイルがどのように構成されているかを模式的に示す図である。拡張子.M2TSが付与されたファイル(00001.M2TS,00002.M2TS,00003.M2TS・・・・・)は、AVClipを格納している。AVClipは(中段)、複数のビデオフレーム(ピクチャpj1,2,3)からなるビデオストリーム、複数のオーディオフレームからなるオーディオストリームを(上１段目)、PESパケット列に変換し(上２段目)、更にTSパケットに変換し(上３段目)、同じく字幕系のプレゼンテーショングラフィクスストリーム(下1段目のPGストリーム)及び対話系のインタラクティブグラフィクスストリーム(下１段目のIGストリーム)をTSパケットに変換して(下３段目)、これらを多重化することで構成される。
【００１９】
AVClipは、図３に示したように多重化がなされているストリームの他に、多重化がなされていないものものある。かかるAVClipは、SubClipと呼ばれ、オーディオストリーム、グラフィクスストリーム、テキスト字幕ストリーム(TextSTStream)等を構成するAVClipが存在する。
【００２０】
＜Clip情報＞
拡張子“CLPI”が付与されたファイル(00001.CLPI)は、AVClipのそれぞれに1対1に対応するClip情報である。管理情報故に、Clip情報は、AVClipにおけるストリームの符号化形式、フレームレート、ビットレート、解像度等の情報や、GOPの先頭位置を示すEP_mapをもっている。
【００２１】
＜PlayList情報＞
拡張子“MPLS”が付与されたファイル(00001.MPLS)は、PlayList(PL)情報を格納したファイルである。PL情報は、AVClipを参照してプレイリストを定義する情報である。図４は、PL情報の構成を示す図であり、本図の左側に示すように、PL情報は、『MainPath情報』、『PLMark情報』、『SubPath情報』から構成される。
【００２２】
MainPath情報(MainPath())は、破線の矢印mp1に示すように複数のPlayItem情報(PlayItem())からなる。PlayItemとは、1つ以上のAVClip時間軸上において、In_Time,Out_Timeを指定することで定義される再生区間である。PlayItem情報を複数配置させることで、複数再生区間からなるプレイリスト(PL)が定義される。図中の破線mp2は、PlayItem情報の内部構成をクローズアップしている。本図に示すようにPlayItem情報は、対応するAVClipを示す『Clip_information_file_name』と、『In_time』と、『Out_time』とからなる。図５は、AVClipと、PLとの関係を示す図である。第1段目はAVClipがもつ時間軸を示し、第2段目は、PLがもつ時間軸を示す。PL情報は、PlayItem＃1,＃2,＃3という3つのPlayItem情報を含んでおり、これらPlayItem＃1,＃2,＃3のIn_time,Out_timeにより、3つの再生区間が定義されることになる。これらの再生区間を配列させると、AVClip時間軸とは異なる時間軸が定義されることになる。これが第2段目に示すPL時間軸である。このように、PlayItem情報の定義により、AVClipとは異なる時間軸の定義が可能になる。
【００２３】
AVClipに対する指定は、原則1つであるが、複数AVClipに対する一括指定もあり得る。この一括指定は、PlayItem情報における複数のClip_Information_file_nameによりなされる。図６は、4つのClip_Information_file_nameによりなされた一括指定を示す図である。本図において第1段目〜第4段目は、4つのAVClip時間軸(AVClip＃1,＃2,＃3,＃4の時間軸)を示し、第5段目は、PL時間軸を示す。PlayItem情報が有する、4つのClip_Information_file_nameにて、これら4つの時間軸が指定されている。こうすることで、PlayItemが有するIn_time,Out_timeにより、択一的に再生可能な4つの再生区間が定義されることになる。これにより、PL時間軸には、切り換え可能な複数アングル映像からなる区間(いわゆるマルチアングル区間)が定義されることになる。
【００２４】
PLmark情報(PLmark())は、PL時間軸のうち、任意の区間を、チャプターとして指定する情報である。図７は、PLmark情報の内部構成を示す図であり、本図の引き出し線pm1に示すようにPLmark情報は、『ref_to_PlayItem_Id』と、『Mark_time_stamp』とを含む。図８は、PLmarkによるチャプター定義を示す図である。本図において第1段目は、AVClip時間軸を示し、第2段目はPL時間軸を示す。図中の矢印pk1,2は、PLmarkにおけるPlayItem指定(ref_to_PlayItem_Id)と、一時点の指定(mark_time_stamp)とを示す。これらの指定によりPL時間軸には、3つのチャプター(Chapter＃1,＃2,＃3)が定義されることになる。以上がPLmarkについての説明である。続いてSubPath情報について説明する。
【００２５】
SubPath情報(SubPath())は、SubClipの時間軸上にIn_Time,Out_Timeを指定することで1つ以上の再生区間を定義する情報であり、図９に示す内部構成を有している。本図に示すようにSubPath情報は、破線の引き出し線sh1に示すように複数のSubPlayItem情報(SubPlayItem())からなる。破線sh2を用いてクローズアップしているように、SubPlayItem情報は、『Clip_information_file_name』と、『In_time』と、『Out_time』と、『Sync_PlayItem_Id』と、『Sync_start_Pts_of_PlayItem』とからなる。SubClipの時間軸上に対する、In_Time,Out_Timeの指定は、『Clip_information_file_name』、『In_time』、『Out_time』によりなされる。『Sync_PlayItem_Id』及び『Sync_start_Pts_of_PlayItem』は、SubClip時間軸上の再生区間と、PL時間軸とを同期させるという同期指定をなす。この同期指定により、PL時間軸と、SubClip時間軸とは同期して進行することになる。
【００２６】
図１０は、SubClip時間軸上の再生区間定義と、同期指定を示す図である。本図において第1段目は、PL時間軸を示し、第2段目はSubClip時間軸を示す。図中のSubPlayItem.IN_timeは再生区間の始点を、SubPlayItem.Out_timeは再生区間の終点をそれぞれ示す。これによりSubClip時間軸上にも再生区間が定義されていることがわかる。矢印Sn1においてSync_PlayItem_Idは、PlayItemに対する同期指定を示し、矢印Sn2においてsync_start_PTS_of_PlayItemは、PL時間軸におけるPlayItem上の一時点の指定を示す。
【００２７】
複数AVClipの切り換えを可能とするマルチアングル区間や、AVClip−SubClipを同期させ得る同期区間の定義を可能とするのが、BD-ROMにおけるPL情報の特徴である。以上のClip情報及びPL情報は、“静的シナリオ”に分類される。
【００２８】
続いて“動的なシナリオ”について説明する。“動的に”というのは、再生装置２００における状態変化やユーザからのキーイベントにより再生制御の中身がかわることをいう。BD-ROMでは、Java(登録商標)アプリケーションと同様の記述により、この再生制御を記述することができる。つまりBD-ROMでは、Java(登録商標)アプリケーションが、動的シナリオとしての役割を担うことになる。
【００２９】
＜Java(登録商標)アプリケーション＞
Java(登録商標)アプリケーションについて説明する。Java(登録商標)アプリケーションは、仮想マシンのヒープ領域(ワークメモリとも呼ばれる)にロードされた1つ以上のxletプログラムからなる。このワークメモリにロードされたxletプログラム、及び、データから、アプリケーションは構成されることになる。以上がJava(登録商標)アプリケーションの構成である。
【００３０】
このJava(登録商標)アプリケーションの実体にあたるのが、図２におけるBDMVディレクトリ配下のBDJAディレクトリに格納されたJava(登録商標)アーカイブファイル(00001.jar,00002.jar)である。以降、Java(登録商標)アーカイブファイルについて、図１１を参照しながら説明する。
【００３１】
＜Java(登録商標)アーカイブファイル＞
Java(登録商標)アーカイブファイル(図９の00001.JAR)は、1つ以上のクラスファイル、1つ以上のデータファイル等を1つにまとめることで得られるファイルである。図１１（ａ）は、アーカイブファイルにより収められているプログラム、データを示す図である。本図におけるデータは、枠内に示すディレクトリ構造が配置された複数ファイルを、Java(登録商標)アーカイバでまとめたものである。枠内に示すディレクトリ構造は、Rootディレクトリ、java(登録商標)ディレクトリ、imageディレクトリとからなり、Rootディレクトリにcommon.pkgが、java(登録商標)ディレクトリにクラスファイル(aaa.class,bbb.class)が、imageディレクトリに、menu.jpgが配置されている。Java(登録商標)アーカイブファイルは、これらをJava(登録商標)アーカイバでまとめることで得られる。かかるクラスファイル及びデータは、BD-ROMからキャッシュに読み出されるにあたって展開され、キャッシュ上で、ディレクトリに配置された複数ファイルとして取り扱われる。Java(登録商標)アーカイブファイルのファイル名における"zzzzz"という5桁の数値は、Java(登録商標)アーカイブファイルのＩＤを示し、BD-Jオブジェクトは、この値を用いてJava(登録商標)アーカイブファイルを参照する。本Java(登録商標)アーカイブファイルがキャッシュに読み出された際、このファイル名における数値を参照することにより、任意のJava(登録商標)アプリケーションを構成するプログラム，データを取り出すことができる。
【００３２】
本図におけるクラスファイル(図中のaaa.class,bbb.class)は、上述したxletプログラムに対応するクラスファイルである。Java(登録商標)動作環境による動作モード(BD-Jモード)における再生手順は、このクラスファイルのインスタンスにあたるxletプログラムにより規定される。xletプログラムとは、JMF(Java(登録商標) Media FrameWork)方式のインターフェイスを利用することができるJava(登録商標)プログラムであり、JMF等の方式に従って、キーイベントに基づきプレイリスト再生処理を行う。
【００３３】
更にxletプログラムは、WWWサイトをアクセスしてコンテンツをダウンロードするという手順を実行することもできる。これによりダウンロードコンテンツと、プレイリスト再生とを交えた斬新な作品を再生させることができる。
【００３４】
xletプログラムのクラスファイルについて説明する。図１１（ｂ）は、クラスファイルの内部構成を示す図である。本図に示すようにクラスファイルは、通常のクラスファイル同様、『コンスタントプール』、『インターフェイス』、『メソッド1,2,3・・・・n』からなる。クラスファイルにおけるメソッドには、挙動のトリガになるキーイベントが予め登録されているメソッド(EventListner)と、BD-ROM再生装置２００側のファンクションAPIをコールするメソッドがある。これらのメソッドは、自身に割り当てられたローカル変数や、自身をコールする際の引数を用いることにより、演算等の手順が記述されている。以上がJava(登録商標)アーカイブファイルについての説明である。
【００３５】
続いて、拡張子BOBJを付したファイルについて説明する。拡張子BOBJを付したファイルは、BD-Jオブジェクトを格納したファイルである。BD-Jオブジェクトは、PlayList情報により定義されるAVClip列と、アプリケーションとの関連付けにより、タイトルを定義する情報である。図１２は、BD-Jオブジェクトの内部構成を示す図である。本図に示すように、BD-Jオブジェクトは、“アプリケーション管理テーブル”と、“PlayList情報に対する参照値”とを示す。アプリケーション管理テーブルは、アプリケーションの識別子(アプリケーションＩＤ)とそのアプリケーションを構成するJava(登録商標)アーカイブファイルのIDを羅列することで、このタイトルを生存区間とするアプリケーションを示すテーブルである。つまり、一つのアプリケーションは一つ以上のJava(登録商標)アーカイブファイルで構成される。“PlayList情報に対する参照値”は、このタイトルの開始時に、同時に再生すべきPlayList情報を示す。
【００３６】
以上が拡張子BOBJを付したファイルについての説明である。
尚、BD-Jオブジェクト及びアプリケーション管理テーブルについては、以下の国際公開公報に詳細が記載されている。詳細については、本公報を参照されたい。
【００３７】
国際公開公報WO 2005/045840
続いてINDEX.BDMVについて説明する。
INDEX.BDMVは、BD-ROM全体に関する管理情報であり、映画作品のプロバイダを特定する識別子であるorganizationIDや、プロバイダが提供するBD-ROMのそれぞれに割り当てられた識別子であるdiscID等の情報を持ち、再生装置へのディスク挿入後に、INDEX.BDMVが最初に読み出されることで、再生装置においてディスクが一意に認識される。加えて、BD-ROMにおいて再生可能となる複数のタイトルと、個々のタイトルを規定するBD-Jオブジェクトとを対応付けて示すテーブルが含まれる。以降、BD-ROMに記録され得るタイトルの類型について説明する。BD-ROMに記録され得るタイトルには、『FirstPlayTitle』、『Top_menuTitle』、『Title＃1,＃2,＃3』といったものがある。
【００３８】
『FirstPlayTitle』は、BD-ROMのローディングされた際、なによりも先に、この動的商標を再生させるという役割分担を担う。このFirstPlayTitleにより、映画作品の制作者や頒布者を表徴する動的商標を、ローディング時に再生するという慣習が実現されることになる。
【００３９】
『Top_menuTitle』は、BD-ROMにおけるメニュー階層において、最上位に位置するメニューを再生させる、AVCLip及びアプリケーションからなるTitleである。
『Title＃1,＃2,＃3』とは、一般的な映画作品にあたるTitleである。これら『FirstPlayTitle』、『Top_menuTitle』、『Title＃1,＃2,＃3』といったタイトルと、個々のBD-Jオブジェクトとの対応付けを示すのがINDEX.BDMVである。
【００４０】
図１３は、INDEX.BDMVの内部構成を示す図である。本図に示すようにINDEX.BDMVは、『FirstPlayTitle情報』、『Top_menuTitle情報』、『Title＃1情報』、『Title＃2情報』、『Title＃3情報』といったTitle情報からなる。個々のTitle情報は、Titleの番号と、そのタイトルを規定するBD-Jオブジェクトとの対応付けを示す。以上のTitle情報により、タイトルを規定するBD-Jオブジェクトを特定することができ、このBD-Jオブジェクトから、連動すべきPlayList情報及びアプリケーションを導くことができる。以上がINDEX.BDMVについての説明である。
【００４１】
尚、INDEX.BDMVについては、以下の国際公開公報に詳細が記載されている。詳細については、本公報を参照されたい。
国際公開公報WO 2004/025651
本発明に係る再生装置が対象としている記録媒体は、BD-ROMだけではない。再生装置に内蔵されているハードディスク等の磁気記録装置(Local Storage)も再生の対象となる。このLocal Storageに記録されているデータについて説明する。
【００４２】
図１４は、Local Storageにおけるディレクトリ構造を示す図である。
本図のディレクトリ構造においてROOTディレクトリの配下には、「organization＃1」というサブディレクトリがあり、その配下に、「disc＃1」,「disc＃2」というサブディレクトリがある。ディレクトリ「organization＃1」とは、映画作品の特定のプロバイダに割り当てられたディレクトリである。「disc＃1」,「disc＃2」は、そのプロバイダが提供したBD-ROMのそれぞれに割り当てられたディレクトリである。これらのディレクトリ名には、各BD-ROMのINDEX.BDMVで示されるorganizationID、及びdiscIDの値が用いられる。
【００４３】
特定のプロバイダに対応するディレクトリに、各BD-ROMに対応するディレクトリを設けることにより、各BD-ROMについてのダウンロードデータが個別に格納される。このサブディレクトリの配下に、BD-ROMに格納されていたのと同様、PlayList情報、Clip情報、AVClipが格納されており、この他にJava(登録商標)アーカイブファイルや、マージ管理情報ファイル、署名情報ファイルが存在する。
【００４４】
ここでBD-ROM上のPlayList情報は、BD-ROM上のAVClipのみを参照しているのに対し、Local Storage上のPlayList情報（Virtual Packageとして新たに追加されたPlayList情報）は、BD-ROM上のAVClipと、Local Storage１８上のAVClipとを参照する。
【００４５】
ここでLocal Strage上のPlayList情報が、PlayItem情報＃1〜PlayItem情報＃4という4つのPlayItem情報から構成されているものとする。このうち、先頭のPlayItem情報＃1は、BD-ROM上のClip情報を参照するものであり、残りの3つ(PlayItem情報＃2〜＃4)が、Local Storage上のClip情報を参照するものである場合、このPlayList情報は、図１５に示すように、BD-ROM上のAVClipと、Local Storage上のAVClipとから1つのストリームシーケンスを定義することができる。
【００４６】
図１５は、ローカルストレージに格納されたPL情報により、どのようなPlayList再生時間軸が定義されるかを示す図である。第1段目は、BD-ROMに記録されたAVClipにおける再生時間軸を示し、第2段目は、ローカルストレージに格納されたPL情報により定義されるPlayList再生時間軸を示す。第3段目は、ローカルストレージに格納されたAVClip＃2における再生時間軸を、第4段目は、ローカルストレージに格納されたAVClip＃3における再生時間軸を、第5段目は、ローカルストレージに格納されたAVClip＃4における再生時間軸を示す。
【００４７】
PlayList情報におけるPlayItemのうち、PlayItem情報＃2、PlayItem情報＃3、PlayItem情報＃4が、AVClip＃2、AVClip＃3、AVClip＃4を再生区間として指定するなら、PlayList情報は、BD-ROM上のAVClip及びLocal Storage１８上のAVClipを1つのストリームシーケンスとして規定することができる。
【００４８】
以上のように、BD-ROM上のAVClip及びLocal Storage１８上のAVClipを1つのストリームシーケンスとして規定することができ、これをBD-ROM又はLocal Storage上のアプリケーションと組み合わせることにより、BD-ROM又はLocal Storageに記録されているアプリケーションと、AVClipとから、1つのタイトルを構成することができる。図１６（ａ）に示すように、BD-ROMにAVClip＃1が記録されており、Local StorageにAVClip＃2〜AVClip＃4、アプリケーションが記録されている場合、これらのAVClip＃1〜AVClip＃4、アプリケーションを、図１６（ｂ）に示すように、1つのタイトルとして扱うことができる。
【００４９】
続いて、マージ管理情報ファイルについて説明する。このマージ管理情報ファイルは、Local Storageのdisc＃1,＃2ディレクトリに存在するファイルのうち、Virtual Packageを構成するものを一意に示しておくファイルである。
【００５０】
図１７は、マージ管理情報ファイルの内部構成を示す図である。マージ管理情報ファイルは、Virtual Packageを構成するLocal Strage上の各ファイルの格納位置情報からなる。各格納位置情報は、Local Storage１８におけるそのファイルの格納位置を示す“ファイルパス”と、ファイルのデータから一意に値が決まる一方向の関数を用いて算出される各ファイルのハッシュ値を示す“ハッシュ値”とからなる。
【００５１】
続いて、署名情報ファイルについて説明する。この署名情報ファイルは、マージ管理情報ファイルに対するプロバイダの電子的な署名を示すファイルである。電子的な署名は、一般的に改ざん防止が必要な情報に対してハッシュ値を計算し、ハッシュ値をなんらかの秘密鍵を用いて暗号化したものを用いる。本実施形態の署名情報ファイルでは、再生装置が保持するマージ証明書中の公開鍵に対応する秘密鍵を利用して、マージ管理情報ファイルのハッシュ値が暗号化されている。
【００５２】
尚、マージ証明書は、マージ管理情報ファイルの認証に利用する証明書で、プロバイダが公開する公開鍵が含まれる。プロバイダが提供するマージ証明書は、あらかじめ再生機器に組み込まれる。マージ証明書のファイル形式の一例としてはＸ．５０９を利用することができる。Ｘ．５０９の詳細な仕様は、国際電信電話諮問委員会より発行されている、CCITT Recommendation X.509 (1988), "The Directory -  Authentication Framework"に記載されている。
【００５３】
尚、マージ証明書は、あらかじめ再生機器に組み込まれるとしたが、BD-ROM上に記録しておいてもよい。あるいは、インターネットを介してマージ証明書を提供するサーバ装置からダウンロードして取得してもよい。
【００５４】
以上が記録媒体の説明である。続いて、本発明に係る再生装置の内部構成について説明する。
＜再生装置＞
図１８は、本発明に係る再生装置の内部構成を示す図である。本発明に係る再生装置は、本図に示す内部に基づき、工業的に生産される。本発明に係る再生装置は、主としてシステムLSIと、ドライブ装置という2つのパーツからなり、これらのパーツを装置のキャビネット及び基板に実装することで工業的に生産することができる。システムLSIは、再生装置の機能を果たす様々な処理部を集積した集積回路である。こうして生産される再生装置は、BD-ROMドライブ１、Read Buffer２、デマルチプレクサ３、ビデオデコーダ４、ビデオプレーン５、P-Graphicsデコーダ６、Presentation Graphicsプレーン７、合成部８、フォントゼネレータ９、I-Graphicsデコーダ１０、スイッチ１１、Interactive Graphicsプレーン１２、合成部１３、CLUT部１４、CLUT部１５、オーディオデコーダ１６、Network Device１７、Local Storage１８、Read Buffer１９、デマルチプレクサ２０、命令ROM２１、ユーザイベント処理部２２、PSRセット２３、CPU２４、シナリオメモリ２５、Local Memory２６、スイッチ２７から構成される。
【００５５】
先ず初めに、BD-ROMに記録されたAVClip再生に係る構成要素(BDドライブ１〜オーディオデコーダ１６)について説明する。
BD-ROMドライブ１は、BD-ROMのローディング／イジェクトを行い、BD-ROMに対するアクセスを実行する。
【００５６】
Read Buffer２は、FIFOメモリであり、BD-ROM又はLocal Storage１８から読み出されたTSパケットが先入れ先出し式に格納される。
デマルチプレクサ(De-MUX)３は、Read Buffer２からTSパケットを取り出して、このTSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、CPU２４から設定されたPIDをもつものをビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６のどれかに出力する。
【００５７】
ビデオデコーダ４は、デマルチプレクサ３から出力された複数PESパケットを復号して非圧縮形式のピクチャを得てビデオプレーン５に書き込む。
ビデオプレーン５は、非圧縮形式のピクチャを格納しておくためのプレーンである。プレーンとは、再生装置において一画面分の画素データを格納しておくためのメモリ領域である。ビデオプレーン５における解像度は1920×1080であり、このビデオプレーン５に格納されたピクチャデータは、16ビットのYUV値で表現された画素データにより構成される。ビデオプレーン５では、ビデオストリームにおける一フレーム毎の再生映像を、スケーリングすることができる。スケーリングとは、一フレーム毎の再生画像をビデオプレーン５全体の1／4(クオータという)、1／1(フルスケールという)のどちらかに変化させることである。かかるスケーリングを、BD-JモードにおいてCPU２４からの指示に従い実行するので、ビデオストリームの再生画像を、画面の隅に追いやったり、全面的に出すという画面演出が可能になる。
【００５８】
P-Graphicsデコーダ６は、BD-ROMから読み出されたプレゼンテーショングラフィクスストリームをデコードして、非圧縮グラフィクスをPresentation Graphicsプレーン７に書き込む。グラフィクスストリームのデコードにより、字幕が画面上に現れることになる。
【００５９】
Presentation Graphicsプレーン７は、一画面分の領域をもったメモリであり、一画面分の非圧縮グラフィクスを格納することができる。本プレーンにおける解像度は1920×1080であり、Presentation Graphicsプレーン７中の非圧縮グラフィクスの各画素は8ビットのインデックスカラーで表現される。CLUT(Color Lookup Table)を用いてかかるインデックスカラーを変換することにより、Presentation Graphicsプレーン７に格納された非圧縮グラフィクスは、表示に供される。
【００６０】
合成部８は、ビデオプレーン５に格納された非圧縮状態のピクチャデータ(i)を、Presentation Graphicsプレーン７の格納内容と合成する。
フォントゼネレータ９は、文字フォントを用いてtextSTストリームに含まれるテキストコードをビットマップに展開してPresentation Graphicsプレーン７に書き込む。
【００６１】
I-Graphicsデコーダ１０は、DVDライクモードにおいてBD-ROM又はLocal Storage１８から読み出されたIGストリームをデコードして、非圧縮グラフィクスをInteractive Graphicsプレーン１２に書き込む。
【００６２】
スイッチ１１は、フォントゼネレータ９が生成したフォント列、P-Graphicsデコーダ６のデコードにより得られたグラフィクスの何れかを選択的にPresentation Graphicsプレーン７に書き込むスイッチである。
【００６３】
Interactive Graphicsプレーン１２は、I-Graphicsデコーダ１０によるデコードで得られた非圧縮グラフィクスが書き込まれる。またInteractive Graphicsプレーン１２には、BD-Jモードにおいて、アプリケーションにより描画された文字やグラフィクスがαＲＧＢのフルカラーで書き込まれる。
【００６４】
合成部１３は、Interactive Graphicsプレーン１２の格納内容と、合成部８の出力である合成画像(非圧縮状態のピクチャデータと、Presentation Graphicsプレーン７の格納内容とを合成したもの)とを合成する。かかる合成により、アプリケーションがI-Graphicsデコーダ１０に書き込んだ文字・グラフィクスを、非圧縮状態のピクチャデータ上にオーバレイして、表示することができる。
【００６５】
CLUT部１４は、ビデオプレーン５に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。
CLUT部１５は、DVDライクモードで動作しているときには、Interactive Graphicsプレーン１２に格納された非圧縮グラフィクスにおけるインデックスカラーを、Y,Cr,Cb値に変換する。BD-Jモードで動作しているときには、αＲＧＢのフルカラーを Y,Cr,Cbに変換する。
【００６６】
オーディオデコーダ１６は、デマルチプレクサ３から出力されたPESパケットを復号して、非圧縮形式のオーディオデータを出力する。
以上がAVClip再生に係る構成要素である。続いてBD-Jモードでの動作に係る構成要素(Network Device１７〜De-mux２０)について説明する。
【００６７】
Network Device１７は、再生装置における通信機能を実現するものであり、BD-JモードにおいてURL指定がJava(登録商標)アプリケーションから与えられれば、そのURLにあたるwebサイトとのTCPコネクション、FTPコネクション等を確立する。かかるコネクション確立によりwebサイトからのダウンロードをJava(登録商標)アプリケーションに行わせる。
【００６８】
Local Storage１８は、Network Device１７により確立されたコネクションを通じてwebサイトからダウンロードされたコンテンツ等、BD-ROM以外の記録媒体、通信媒体から供給されたコンテンツを、メタデータと共に格納しておくためのハードディスクである。このメタデータは、ダウンロードコンテンツをLocal Storage１８にバインドして管理するための情報であり、このLocal Storage１８をアクセスすることで、BD-Jモードにおけるアプリケーションは、ダウンロードコンテンツを利用した様々な処理を行うことができる。
【００６９】
Read Buffer１９は、FIFOメモリであり、BD−ROM又はLocal Storage１８に格納されたコンテンツに、SubClipが含まれている場合、このSubClipを構成するTSパケットを、先入れ先出し式に格納する。
【００７０】
デマルチプレクサ(De-MUX)２０は、Read Buffer１９からTSパケットを取り出して、TSパケットをPESパケットに変換する。そして変換により得られたPESパケットのうち、所望のPIDをもつものをフォントゼネレータ９、P-Graphicsデコーダ６、オーディオデコーダ１６に出力する。
【００７１】
以上のNetwork Device１７〜De-mux２０により、Java(登録商標)アプリケーションがネットワークを通じてダウンロードしたコンテンツを、BD-ROMに記録されたコンテンツ同様再生させることができる。続いて、再生装置における統合制御を実現する構成要素(命令ROM２１〜スイッチ２７)について説明する。
【００７２】
命令ROM２１は、再生装置の制御を規定するソフトウェアを記憶している。
ユーザイベント処理部２２は、リモコンや再生装置のフロントパネルに対するキー操作に応じて、その操作を行うユーザイベントをCPU２４に出力する。
【００７３】
PSRセット２３は、再生装置に内蔵されるレジスタであり、64個のPlayer Status Register(PSR)と、4096個のGeneral Purpose Register（GPR)とからなる。Player Status Registerの設定値(PSR)のうち、PSR4〜PSR8は、現在の再生時点を表現するのに用いられる。
【００７４】
PSR4は、1〜100の値に設定されることで、現在の再生時点が属するタイトルを示し、0に設定されることで、現在の再生時点がトップメニューであることを示す。
PSR5は、1〜999の値に設定されることで、現在の再生時点が属するチャプター番号を示し、0xFFFFに設定されることで、再生装置においてチャプター番号が無効であることを示す。
【００７５】
PSR6は、0〜999の値に設定されることで、現在の再生時点が属するPL(カレントPL)の番号を示す。
PSR7は、0〜255の値に設定されることで、現在の再生時点が属するPlayItem(カレントPlay Item)の番号を示す。
【００７６】
PSR8は、0〜OxFFFFFFFFの値に設定されることで、45KHzの時間精度を用いて現在の再生時点(カレントPTM(Presentation TiMe))を示す。以上のPSR4〜PSR8により、BD-ROM全体の時間軸において、現在の再生時点はどこであるかを特定することができる。
【００７７】
CPU２４は、命令ROM２１に格納されているソフトウェアを実行して、再生装置全体の制御を実行する。この制御の内容は、ユーザイベント処理部２２から出力されたユーザイベント、及び、PSRセット２３における各PSRの設定値に応じて動的に変化する。
【００７８】
シナリオメモリ２５は、カレントのPL情報やカレントのClip情報を格納しておくためのメモリである。カレントPL情報とは、BD-ROMに記録されている複数PL情報のうち、現在処理対象になっているものをいう。カレントClip情報とは、BD-ROMに記録されている複数Clip情報のうち、現在処理対象になっているものをいう。
【００７９】
Local Memory２６は、BD-ROMからの読み出しは低速である故、BD-ROMの記録内容を一時的に格納しておくためのキャッシュメモリである。かかるLocal Memory２６が存在することにより、BD-Jモードにおけるアプリケーション実行は、効率化されることになる。
【００８０】
スイッチ２７は、BD-ROM及びLocal Storage１８から読み出された各種データを、Read Buffer２、Read Buffer１９、シナリオメモリ２５、Local Memory２６のどれかに選択的に投入するスイッチである。
【００８１】
以上が、本実施形態に係る再生装置のハードウェア構成である。続いて本実施形態に係る再生装置におけるソフトウェア構造について説明する。
図１９は、命令ROM２１に格納されたソフトウェアと、ハードウェアとからなる部分を、レイア構成に置き換えて描いた図である。本図に示すように、再生装置のレイア構成は、以下のa),b),c)からなる。つまり、
a)BD Player Deviceの第１階層、
b)BD Player Modelの第２階層、
c)Application Runtime Enviromentの第３階層からなる。
【００８２】
これらの階層のうち図１８に示した再生装置のハードウェア構成は、第１階層に属することになる。本図の第１階層“BD Player Device”には、図１８に示したハードウェア構成のうちビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６からなる“デコーダ”と、ビデオプレーン５、Presentation Graphicsプレーン７、Interactive Graphicsプレーン１２からなる“プレーン”、BD-ROM及びそのファイルシステム、Local Storage１８及びそのファイルシステムを含む。
【００８３】
第２階層“BD Player Model”は、以下のb1),b2)の層からなる。つまり、
b2)Playback Control Engine３２の層
b1)Virtual File System３８及びPresentation Engine３１の層
からなり、自身より上位の階層に対し、ファンクションAPIを提供する。
【００８４】
このうち図１８に示したPSRセット２３やシナリオメモリ２５は、Playback Control Engine３２内に存在することになる。
【００８５】
第３階層“Application Runtime Enviroment”は、以下のc1)c2)のスタック階層からなる。つまり、
c2)モジュールマネージャ３３が存在する層
c1)DVDライクモジュール２９a、Java(登録商標)プラットフォーム２９bが存在する層
からなる。
【００８６】
以降、このソフトウェア構造における各構成要素について説明する。
＜DVDライクモジュール２９a、Java(登録商標)プラットフォーム２９b＞
DVDライクモジュール２９aは、ナビゲーションコマンドを解読し、解読結果に基づきPlayback Control Engine３２に対するファンクションコールを実行する。
【００８７】
尚、DVDライクモジュール及びこのDVDライクモジュールが実行するMovie Objectについては、以下の国際公開公報に記載された先行技術が存在する。詳細については、本国際公開公報を参照されたい。
【００８８】
国際公開公報W0 2004/074976
Java(登録商標)プラットフォーム２９bは、いわゆるJava(登録商標)プラットフォームであり、
d1-1)Java(登録商標)仮想マシン３０
d1-2)Java(登録商標)仮想マシンが動作するためのミドルウエア
を階層化した構成になっている。
【００８９】
＜Java(登録商標)仮想マシン３０＞
Java(登録商標)仮想マシン３０は、アプリケーションを構成するxletプログラムをワークメモリにロードして、xletプログラムを解読し、解読結果に従って、下位層に対する制御を行う。下位層への制御は、メソッドをミドルウェアに発行して、BD再生装置が対応しているファンクションコールに置き換えさせ、置換後のファンクションコールをPlayback Control Engine３２に発行することでなされる。
【００９０】
（Java(登録商標)仮想マシン３０の内部構成）
ここでJava(登録商標)仮想マシン３０の内部構成について説明する。図２０は、Java(登録商標)仮想マシン３０の内部構成を示す図である。本図に示すようにJava(登録商標)仮想マシン３０は、CPU２４と、ユーザクラスローダ５２、メソッドエリア５３、ワークメモリ５４、スレッド５５a,b・・・n、Java(登録商標)スタック５６a,b・・・nとから構成される。
【００９１】
ユーザクラスローダ５２は、BDJAディレクトリのJava(登録商標)アーカイブファイルにおけるクラスファイルをLocal Memory２６等から読み出してメソッドエリア５３に格納する。このユーザクラスローダ５２によるクラスファイル読み出しは、ファイルパスを指定した読み出しをアプリケーションマネージャ３６がユーザクラスローダ５２に指示することでなされる。ファイルパスがLocal Memory２６を示しているなら、ユーザクラスローダ５２は、アプリケーションを構成するJava(登録商標)アーカイブファイルにおけるクラスファイルを、Local Memory２６からワークメモリ５４に読み出す。ファイルパスがFile System上のディレクトリを示しているなら、ユーザクラスローダ５２は、アプリケーションを構成するJava(登録商標)アーカイブファイルにおけるクラスファイルを、BD-ROM又はLocal Storage１８からワークメモリ５４に読み出す。
【００９２】
メソッドエリア５３は、ユーザクラスローダ５２によりLocal Memory２６から読み出されたクラスファイルが格納される。
ワークメモリ５４は、いわゆるヒープエリアであり、様々なクラスファイルのインスタンスが格納される。ワークメモリ５４には、常駐型のレジデントアプリケーションやメソッドエリア５３に読み出されたクラスファイルに対応するインスタンスが格納される。このインスタンスが、アプリケーションを構成するxletプログラムである。かかるxletプログラムをワークメモリ５４に配置することによりアプリケーションは実行可能な状態になる。
【００９３】
スレッド５５a,b・・・nは、ワークメモリ５４に格納されたメソッドを実行する論理的な実行主体であり、ローカル変数や、オペランドスタックに格納された引数をオペランドにして演算を行い、演算結果を、ローカル変数又はオペランドスタックに格納する。図中の矢印ky1,ky2,kynは、ワークメモリ５４からスレッド５５a,b・・・nへのメソッド供給を象徴的に示している。物理的な実行主体がCPU唯1つであるのに対し、論理的な実行主体たるスレッドは、最大64個Java(登録商標)仮想マシン３０内に存在し得る。この64個という数値内において、スレッドを新規に作成することも、既存のスレッドを削除することも可能であり、スレッドの動作数は、Java(登録商標)仮想マシン３０の動作中において増減し得る。スレッドの数は適宜増やすことができるので、複数スレッドにより1つのインスタンスの並列実行を行い、インスタンスの高速化を図ることもできる。
【００９４】
Java(登録商標)スタック５６a,b・・・nは、スレッド５５a,b・・・nと1対1の比率で存在しており、プログラムカウンタ(図中のPC)と、1つ以上のフレームとを内部に持つ。“プログラムカウンタ”は、インスタンスにおいて、現在どの部分が実行されているかを示す。“フレーム”はメソッドに対する1回のコールに対して割り当てられたスタック式の領域であり、その1回のコール時の引数が格納される“オペランドスタック”と、コールされたメソッドが用いる“ローカル変数スタック(図中のローカル変数)”とからなる。フレームは、コールが1回なされる度にJava(登録商標)スタック５６a,b・・・n上に積み上げられるのだから、あるメソッドが自身を再帰的に呼び出す場合も、このフレームは、1つ積み上げられることになる。
【００９５】
以上がJava(登録商標)仮想マシンの内部構成である。このように構成されたJava(登録商標)仮想マシンは、イベントにより駆動される実行主体(イベントドリブンの実行主体)となる。以上がJava(登録商標)仮想マシンについての説明である。
【００９６】
＜Presentation Engine３１＞
Presentation Engine３１は、AV再生ファンクションを実行する。再生装置のAV再生ファンクションとは、DVDプレーヤ、CDプレーヤから踏襲した伝統的な機能群であり、再生開始(Play)、再生停止(Stop)、一時停止(Pause On)、一時停止の解除(Pause Off)、Still機能の解除(still off)、速度指定付きの早送り(Forward Play(speed))、速度指定付きの巻戻し(Backward Play(speed))、音声切り換え(Audio Change)、副映像切り換え(Subtitle Change)、アングル切り換え(Angle Change)といった機能である。AV再生ファンクションを実現するべく、Presentation Engine３１は、Read Buffer２上に読み出されたAVClipのうち、所望に時刻にあたる部分のデコードを行うよう、ビデオデコーダ４、P-Graphicsデコーダ６、I-Graphicsデコーダ１０、オーディオデコーダ１６を制御する。所望の時刻としてPSR8(カレントPTM)に示される箇所のデコードを行わせることにより、AVClipにおいて、任意の時点を再生を可能することができる。
【００９７】
＜Playback Control Engine３２＞
再生制御エンジン(Playback Control Engine３２(PCE))３２は、プレイリストに対する再生制御ファンクション(i)、PSRセット２３における状態取得／設定ファンクション(ii)といった諸機能を実行する。PLに対する再生制御ファンクションとは、Presentation Engine３１が行うAV再生ファンクションのうち、再生開始や再生停止を、カレントPL情報及びClip情報に従って行わせることをいう。これら機能(i)〜(ii)は、DVDライクモジュール２９a〜Java(登録商標)プラットフォーム２９bからのファンクションコールに応じて実行する。
【００９８】
ここでPlayback Control Engine３２による処理と、Java(登録商標)仮想マシンによる処理との同期について説明する。Playback Control Engine３２は、ファンクションがコールされれば、PL情報に基づく処理手順を実行する。再生しようとするAVClipが15分、30分という再生時間を有するなら、これらの時間、上述した処理は継続することになる。ここで問題になるのは、Java(登録商標)仮想マシン３０がサクセス応答を返す時間と、Playback Control Engine３２が実際に処理を終える時間とのギャップである。Java(登録商標)仮想マシン３０は、イベントドリブンの処理主体であるためコール直後に再生成功か、再生失敗かを示す応答を返すが、Playback Control Engine３２がAVClip及びPlayItemの再生を終了するのは、15分、30分経過後であるので、サクセス応答をアプリケーションに返す時間を基準にしたのでは、15分、30分経過後にあたる処理終結を感知しえない。PL再生において早送り、巻戻しが行われると、この15分、30分という再生期間は前後に変動することになり、処理終結の感知は更に困難になる。そこでPlayback Control Engine３２は、PlayItemの再生終了時、AVClipの再生終了時に、PlayItemやAVClipの再生が終了したことを示すイベントをアプリケーションに出力する。かかる出力により、Playback Control Engine３２がPlayItemやAVClipの再生を終結した時点を、アプリケーションは知得することができる。
【００９９】
＜モジュールマネージャ３３＞
モジュールマネージャ３３は、INDEX.BDMVを読み出して、このINDEX.BDMVにおける複数のタイトル情報のうち、1つをカレントタイトル情報として選ぶ。そしてそのカレントタイトル情報に示されるBD-Jオブジェクトを読み出す。そしてこのBD-Jオブジェクトに記述されているPlayList情報に基づき、再生制御を行うよう、再生制御エンジンを制御する。またBD-Jオブジェクトに記述されるJava(登録商標)アーカイブファイルを読み出して、実行するようJava(登録商標)仮想マシンを制御する。
【０１００】
ここでPlayList情報に基づくデジタルストリーム再生が終了した場合、又は、ユーザがメニュー呼出を行った場合、モジュールマネージャは、別のタイトルを定義するタイトル情報を読み出し、別のタイトル情報をカレントタイトル情報として選ぶ。デジタルストリームの再生や、ユーザによるメニュー呼出に応じて、別のタイトル情報をカレントのタイトル情報として選ぶ処理を、“タイトル切り換え”と呼ぶ。
【０１０１】
かかる“タイトル切り換え”を繰り返すことにより、図２１に示すような状態遷移を実現することができる。本図における楕円枠は、Titleである。
Titleには、BD-ROMのローディング時に最初に再生される『FirstPlayTitle』、Top-Menuを構成する『Top_menuTitle』、これら以外の一般的な『Title』がある。また、図中の矢印jh1,2,3,4,5,6,7,8は、Title間の分岐を象徴的に示す。本図に示される状態遷移とは、BD-ROMローディング時に、『FirstPlayTitle』が再生され、『Top_menuTitle』への分岐が発生して、トップメニューに対する選択待ちになるというものである。
【０１０２】
そしてユーザによるメニューに対する選択操作があれば、選択に従って該当Titleの再生を行い、再びTopMenu Titleに戻るとの処理を、BD-ROMのイジェクトがなされるまで延々と繰り返すというのが、ディスクコンテンツ特有の状態遷移である。上述したモジュールマネージャ３３の制御により、かかる状態遷移は実現される。
【０１０３】
尚、タイトル及びカレントタイトルの選択については、以下の国際公開公報に詳細が記載されている。詳細については、本公報を参照されたい。
国際公開公報WO 2005/036555
国際公開公報WO 2005/036540
国際公開公報WO 2005/036547
以上が、Java(登録商標)仮想マシン３０、Presentation Engine３１、Playback Control Engine３２、モジュールマネージャ３３の説明である。
【０１０４】
Playback Control Engine３２に対する、Java(登録商標)仮想マシンによる制御は、Virtual Packageを通じてなされる。Virtual Packageを通じた、Playback Control Engine３２に対する制御を実現するため、再生装置には、以下に示す構成要素(ネットワーク管理モジュール３７、Virtual FileSystem部３８、管理情報変換モジュール３９、メソッド実行モジュール４０)が存在する。以降これらの構成要素について説明する。
【０１０５】
＜ネットワーク管理モジュール３７＞
ネットワーク管理モジュール３７は、アプリケーションからのメソッド呼出に従って、Virtual Package構築に必要なデータを、映画作品のプロバイダが運営しているWWWサイトからダウンロードする。Virtual Package構築に必要なデータには、マージ管理情報ファイル、署名情報ファイル、及びBD−ROM上のファイルを置き換え、もしくは追加するファイル（PlayList情報、Clip情報、AVClip、Java(登録商標)アーカイブファイルなど）がある。Work Memory５４上のアプリケーションによるダウンロード要求がなされると、ネットワーク管理モジュール３７は、ネットワークを通じて、Virtual Package構築に必要なデータをダウンロードし、Local Storage１８に書き込んでゆく。
【０１０６】
＜Virtual FileSystem部３８＞
Virtual FileSystem部３８は、第２階層に属する構成要素の1つであり、アプリケーションからのメソッド呼出に従い、Virtual Packageを構築する。Virtual Packageの構築処理には、Virtual Packageを構成する各AVClipの状態管理と、Virtual Package情報の生成処理とが含まれる。
【０１０７】
１.Virtual Package情報
Virtual Package情報は、BD-ROMにおけるボリューム管理情報を拡張した情報である。ここでボリューム管理情報は、ある記録媒体上に存在するディレクトリ−ファイル構造を規定する情報であり、ディレクトリについてのディレクトリ管理情報、ファイルについてのファイル管理情報とからなる。
【０１０８】
Virtual Package情報とは、BD-ROMのディレクトリ−ファイル構造を示すボリューム管理情報に、新たなファイル管理情報を追加することにより、BD-ROMにおけるディレクトリ−ファイル構造の拡張を図ったものである。ここでBDボリューム管理情報に追加されるファイル管理情報とは、Local Storage１８に存在するPlayLIst情報、Clip情報、AVClip、及びJava(登録商標)アーカイブファイルについてのファイル管理情報であり、かかるファイル管理情報を追加したVirtual Package情報を作成し、Playback Control Engine３２に引き渡すことにより、Playback Control Engine３２は、Local Storage１８上にあるPlayLIst情報、Clip情報、AVClip、及びJava(登録商標)アーカイブファイルがBD-ROMに存在するものとして認識することができる。図２２は、Virtual FileSystem部３８によるVirtual Package情報構築の一例を示す図である。本図の左上は、BD-ROMにおけるディレクトリ−ファイル構造であり、図２に示したものと同じである。本図の左下は、Local Storage１８におけるディレクトリ−ファイル構造であり、図１４に示したものと同じである。このLocal Storage１８上のPlayList情報、Clip情報、AVClip、及びJava(登録商標)アーカイブファイルについてのファイル管理情報を、マージ管理情報に従って、BD-ROMのボリューム管理情報に追加する。
【０１０９】
具体的には、
i)Local Storage１８上のPlayList(00002.MPLS)についてのファイル管理情報を、BDボリューム管理情報におけるMPLSディレクトリのディレクトリ管理情報に追加し、
ii)Local Storage１８上のClip情報＃2、Clip情報＃3、＃4(00002.CLPI,00003.CLPI,00004.CLPI)についてのファイル管理情報を、BDボリューム管理情報におけるCLPIディレクトリのディレクトリ管理情報に追加し、
iii)Local Storage１８上のAVClip＃2、AVClip＃3、＃4(00002.M2TS,00003.M2TS,00004.M2TS)についてのファイル管理情報を、BDボリューム管理情報におけるSTREAMディレクトリのディレクトリ管理情報に追加する。
【０１１０】
尚、マージ管理情報ファイルにより指定されたVirtual Packageでのファイルパスと同じファイルパスのファイルが、BD-ROM上にある場合には、ボリューム管理情報においてLocal Storageのファイル管理情報を上書きする。これにより、Virtual Packageでは、マージ管理情報ファイルから参照されるLocal Storage上のファイルが優先して利用される。
【０１１１】
こうすることにより、Virtual Package情報が得られる。この追加により得られたボリューム管理情報が、Virtual Package情報である。
こうして作成されたVirtual Package情報を、Playback Control Engine３２に引き渡す。これにより、Playback Control Engine３２は、Virtual Packageを示すロケータをファイルアクセス時に指定することで、Local Storage１８上のPlayLIst情報、Clip情報、AVClipを、BD-ROM上のPlayList情報、Clip情報、AVClipと対等に扱うことができる。
【０１１２】
具体的には、Playback Control Engine３２は、Virtual Package情報により示されるVirtual Packageのロケータを用いてファイルアクセスを要求する。これに応じてVirtual File System３８は、アクセス要求先のファイルの実体が、BD-ROM及びLocal Storage１８の何れに記録されているかを、マージ管理情報ファイルに基づいて判断する。ファイルの実体がLocal Storage１８に記録されていると判断した場合には、Virtual File System３８は、アクセス要求先を、マージ管理情報ファイルで指定されたLocal Storage１８上のファイルへのファイルパスに変換する。以上がVirtual Package情報生成についての説明である。
【０１１３】
このVirtual Package情報のアップデートのタイミングについて説明する。
図２１において矢印jh1,2,3,4・・・・・に示された参照符号の数値順に分岐がなされ、BD-ROMがイジェクトされたものとする。そうすると、BD-ROMがローディングされてから、イジェクトされるまでの連続時間帯を一本の時間軸と同視することができる。この時間軸を、ディスク全体の時間軸とする。図２３（ａ）は、ディスク全体の時間軸を示す図であり、図２３（ｂ）は、この時間軸における構成を示す。図２３（ｂ）に示すように、ディスク全体の時間軸は、FirstPlay Titleが再生されている区間、TopMenu Titleが再生されている区間、title＃1が再生されている区間等からなる。これらTitleの再生区間はどのように規定されているかというと、Titleは、唯一のBD-J Objectから構成されるから、どれかのBD-J Objectが、有効になっている期間をTitleの再生区間と考えることができる。このTitleの再生区間の狭間、つまりあるTitleから、別のTitleへの切り換わる区間(Title Change)が、Virtual Package情報のアップデート時期になる。
【０１１４】
図２４は、Title Changeにおいて、Virtual Package情報アップデートがどのように行われるかを示す図である。図の第１段目は時間軸におけるタイトルの再生区間を示し、第２段目はタイトルを構成するJava(登録商標)アプリケーションの実行状態を示し、第３段目は、デジタルストリームの再生状態を示す。第４段目は、Virtual File System３８の状態を示す。
【０１１５】
第１段目に示すTitle＃1の再生区間中は、第２段目、第３段目に示すようにBD-J Objectで指定されたJava(登録商標)アプリケーションや、AVClipが実行、再生されている。このようなTitleの再生区間中にVirtual Package情報をアップデートした場合、タイトルの構成要素が、実行処理や再生処理の途中で入れ代わってしまうことがありうる。かかる入れ代わりが生じた結果、再生装置が異常動作を行い、再生映像のブラックアウト等、復旧困難な状態を招くことが多いに考えられる。
【０１１６】
そこでVirtual File System３８は、Title＃1再生中にVirtual Package情報のアップデートを要求された場合、Virtual Package構築に要する処理手順のうち、Virtual Packageの構成要素を変更することなく、タイトル再生区間中に並行して実行可能な処理のみを実行するPreparing状態となる。Preparing状態での処理完了後はPrepared状態に遷移し、Title Changeが発生するまで待機する。Title Changeが発生すると、Virtual File System３８はUpdating状態となり、次のタイトルの再生区間に入る前に、マージ管理情報ファイルから参照されるファイルのファイル管理情報をBDボリューム管理情報に追加することで、Virtual Package情報をアップデートする処理を実行する。アップデートの完了後はStable状態となり、次のタイトルの再生が開始される。この状態で、Title ChangeしたTop Menu Titleから再度Title＃1へジャンプが選択された場合、Title＃1は更新された内容で再生されることになる。
【０１１７】
以上のように、Title Changeにおいて、Virtual Package情報がアップデートされることで、Title＃1の再生中にVirtual Package情報のアップデートを要求されても、Title＃1の再生中はタイトルの構成要素が変更されることがなく、再生処理に異常が発生するおそれがない。
【０１１８】
以下、Virtual Packageの構築の詳細を、図２５乃至図２８を参照しながら説明する。
Virtual Packageを構成するファイル群は、プロバイダ等が設置したサーバにより提供されており、これらのファイルは、インターネット等のネットワークを介して、Java(登録商標)アプリケーションの制御によりダウンロードされる。尚、ダウンロードには、インターネットで通常使われているＨＴＴＰやＨＴＴＰＳ等の通信プロトコルを用いる。
【０１１９】
図２５は、Java(登録商標)アプリケーションがVirtual Package構成ファイル群の送信をサーバへ要求する様子を示す図である。図中央に示すROOTディレクトリ以下のディレクトリツリーは、Local Storageにおけるディレクトリ構造を示す。Java(登録商標)アプリケーションは、Local Storageに記録されているマージ管理情報ファイルを送信することで、Virtual Packageを構成するファイル群のダウンロードをサーバへ要求する。
【０１２０】
ただし、BD-ROMが再生装置へ初めて挿入された場合には、Local Storageにマージ管理情報ファイルが記録されておらず、Virtual Packageが構築されていない。このようなVirtual Packageを始めて構築する場合には、Java(登録商標)アプリケーションは、サーバへdiscIDを通知することで、Virtual Package構成ファイル群のダウンロードをサーバへ要求する。
【０１２１】
続いて図２６は、Java(登録商標)アプリケーションが、サーバから送信されたファイルをLocal Storageへ記録する様子を示す図である。
Java(登録商標)アプリケーションは、図２６に示すように、discIDに対応したdisc＃1ディレクトリの下に新たなディレクトリ（newMFディレクトリ）を生成し、要求に応じてサーバから送信されたファイルのうち、新たなマージ管理情報ファイルとそのマージ管理情報ファイルに対応した署名情報ファイルを、作成した新たなディレクトリへ記録する。また、それ以外のファイルは、disc＃1ディレクトリ直下へ記録する。尚、ここでのファイル記録は、ファイルＩ／Ｏ機能を提供するＡＰＩを用いて、Local Storageへのロケータを指定することにより実行される。尚、disc＃1ディレクトリ直下にある既存のマージ管理情報ファイル及び署名情報ファイルと、新たにダウンロードするマージ管理情報ファイル及び署名情報ファイルとのファイル名が重ならなければ、新規ディレクトリを作成せずに、disc＃1ディレクトリ直下にダウンロードしたファイルを記録してもよい。
【０１２２】
続いて図２７は、Java(登録商標)アプリケーションが、Virtual File SystemへVirtual Package情報のアップデートを要求する様子を示す図である。図に示すように、Virtual Package構成ファイル群を取得したJava(登録商標)アプリケーションは、newMFディレクトリへ記録した新たなマージ管理情報ファイルのファイルパスと署名情報ファイルのファイルパスとを引数として、アップデート要求メソッドを呼び出してVirtual Package情報をアップデートさせる。
【０１２３】
続いて図２８は、Virtual Package情報のアップデートの様子を示す図である。
アップデート要求メソッドが呼び出されると、Virtual File System３８は、Preparing状態に遷移し、再生中のタイトルに係るVirtual Packageの構成要素を変更することなく、実行可能な処理のみを実行する。図の左側に示すディレクトリツリーは、Preparing状態でのLocal Storageの様子である。
【０１２４】
具体的には、Preparing状態で以下の処理が実行される。
１）引数のファイルパスで示される新たなマージ管理情報ファイルの正当性判定
２）新たなマージ管理情報ファイルに参照されるファイルが指定の格納位置に存在しているか否かの判定
３）新たなマージ管理情報ファイルに参照されるファイルと、新たなマージ管理情報ファイルとのファイル属性を、読み出し専用属性へ変更
上記のPreparing状態での各処理が完了すると、Virtual File System３８は、Prepared状態へ遷移する。尚、上記のようにVirtual PackageへマッピングされるLocal Storage上のファイルの属性は、読み出し専用属性に設定されるため、これ以後、Java(登録商標)アプリケーションが、ファイルＩ／Ｏ機能を提供するＡＰＩを用いてLocal Storageへのロケータを指定して、これらのファイルへの書き込みを要求した場合、ＡＰＩから書き込み権が無いことを示すエクセプションが返される。
【０１２５】
この後、Title Changeが発生すると、Virtual File System３８は、disc＃1ディレクトリへの新たなマージ管理情報ファイル及び署名情報ファイルの置換を行い、置き換えられたdisc＃1ディレクトリのマージ管理情報ファイルに基づいて、ファイル管理情報をBDボリューム管理情報に追加することで、Local Storageに記録されているファイルをVirtual Packageへのマッピングする。このとき、古いマージ管理情報ファイルから参照されていたが、新たなマージ管理情報ファイルからは参照されていないLocal Storageのファイルは、ファイル属性が、読み出し専用属性から、読み書き可能な属性へ変更される。以上が、Virtual Package情報の構築の詳細についての説明である。
【０１２６】
以下に、本発明に係る再生装置における再生処理について、フローチャートを参照しながら、処理手順の詳細を説明する。図２９は、モジュールマネージャ３３によるタイトル再生制御の処理を示すフローチャートである。本フローチャートは、BD-ROMが再生装置に挿入されてからイジェクトされるまで実行される処理手順であり、INDEX.BDMVファイルにおいて指定されているFirstPlayTitleをカレントタイトルに設定するステップＳ１１の処理を実行した後は、ステップＳ１２〜ステップＳ２１のループ処理を実行するものである。
【０１２７】
ステップＳ１２〜ステップＳ２１のループ処理のうち、ステップＳ１２〜ステップＳ１５は、カレントタイトルを再生する手順である。ステップＳ１２では、INDEX.BDMVからカレントタイトルに対応するタイトル情報を取得し、取得したタイトル情報において指定されたいるBD-JオブジェクトをカレントBD-Jオブジェクトとし、ステップＳ１３では、カレントBD-Jオブジェクトに参照値が記載されているPlayList情報に基づくPL再生を実行するように、Playback Control Engine３２を制御する。ステップＳ１４では、カレントBD-Jオブジェクトのアプリケーション管理テーブルにおいて識別子が指定されているJava(登録商標)アプリケーションを実行するように、Java(登録商標)プラットフォーム２９bを制御し、ステップＳ１５では、カレントBD-Jオブジェクトのアプリケーション管理テーブルにおいて識別子が指定されていないJava(登録商標)アプリケーションを終了するように、Java(登録商標)プラットフォーム２９bを制御する。
【０１２８】
ステップＳ１６〜ステップＳ１９は、タイトルの終了を判定する手順であり、PlayListに基づくPL再生の完了（ステップＳ１６）、ユーザ操作によるメニュー呼び出し指示等のタイトルコールの発生（ステップＳ１７）、シナリオ分岐等のタイトルジャンプの発生（ステップＳ１８）、及びタイトルのメインとなるアプリケーションの終了（ステップＳ１９）の何れかが発生した場合に、タイトルが終了したと判定する。
【０１２９】
ステップＳ２０及び２１は、タイトルが終了したと判定した場合に、ステップＳ１６〜ステップＳ１９の何れの判定によってタイトルの終了が確認されたかに応じて、次のタイトルを特定し（ステップＳ２０）、特定されたタイトルを新たなカレントタイトルに設定する（ステップＳ２１）。以上の処理により、BD-ROMの挿入からイジェクトまで、タイトルの再生がなされる。
【０１３０】
続いてPlayback Control Engine３２によるPlayList再生の詳細を説明する。図３０は、Playback Control Engine３２によるPlayList再生処理の処理手順を示すフローチャートである。本フローチャートは、モジュールマネージャ３３により指示されたPlayList情報に基づいてPlayListで指定されているAVClipを先頭から最後までを再生する処理手順である。
【０１３１】
先ず、指定されたPlayList情報の実体であるMPLSファイルが、マージ管理情報ファイルに基づいてマッピングされたLocal Storage上のファイルである場合に、指定ファイルの改竄有無を検証する（ステップＳ３１）。ステップＳ３１で指定のファイルが改竄されている場合は、本フローチャートの手順を抜けて処理を終了する。指定のファイルが改竄されていない場合はステップＳ３２以降の処理を継続する。
【０１３２】
PlayList情報における先頭のPlayItem情報を処理対象PlayItem情報（以下、「PlayItem情報i」）に設定するステップＳ３２の処理を実行した後は、ステップＳ３３〜ステップＳ４１のループ処理を実行する。
【０１３３】
ステップＳ３３〜ステップＳ４１のループ処理における制御変数は、変数iであり、ステップＳ３３〜ステップＳ４０の処理を実行して、その後、制御変数iをインクリメントするという処理（ステップS４１）を、変数iが、PlayItem数(Number Of PlayItem)を越えるまで実行するものである。
【０１３４】
ステップＳ３３〜ステップＳ４１のループ処理のうち、ステップＳ３３〜ステップＳ３５は、MainPathを再生する処理であり、ステップＳ３３の処理では、PlayItem情報iのClip_information_file_nameに記述されているAVClipを、AVClipjとし、再生の対象とする。ステップＳ３４の処理では、AVClipjに対応するClip情報の実体であるCLPIファイルが、マージ管理情報ファイルに基づいてマッピングされたLocal Storage上のファイルである場合に、これらLocal Storage上のファイルの改竄有無を検証し、何れかのファイルが改竄されている場合は、本フローチャートの手順を抜けて処理を終了する。ステップＳ３５の処理では、AVClipjのうち、PlayItem.In_timeからPlayItem.Out_timeまでの部分を再生するよう、ドライブ装置及びデコーダに指示する。
【０１３５】
ステップＳ３６〜ステップＳ３９は、SubPathを再生する手順であり、ステップＳ３４は、PlayItem情報iをSync_PlayItem_idに指定しているSubPlayItemkが存在するか否かの判定である。もし存在しなけば、そのままステップＳ４０に移行する。
【０１３６】
もし存在すれば、ステップＳ３７の処理では、SubPlayItemkのClip_information_file_nameに記述されているAVClipをAVCliphにし、ステップＳ３８の処理では、そのAVCliphに対応するClip情報の実体であるCLPIファイルが、マージ管理情報ファイルに基づいてマッピングされたLocal Storage上のファイルである場合に、これらLocal Storage上のファイルの改竄有無を検証する。何れかのファイルが改竄されている場合は、本フローチャートの手順を抜けて処理を終了する。ステップＳ３９の処理では、そのAVCliphのうち、Sync_Start_PTS_of_PlayItemから、Out_timeまでを再生するよう、ドライブ装置及びデコーダに指示してステップＳ４０に移行する。
【０１３７】
以上の処理を、PlayList情報を構成する全てのPlayItem情報について繰り返すことにより、PlayList情報にて規定されるストリームシーケンスの再生がなされる。
尚、ステップＳ３１、ステップＳ３４、及びステップＳ３８における改竄有無の検証は、具体的には、
ａ）マージ管理情報ファイルから、検証対象ファイルのハッシュ値を読み出す
ｂ）検証対象ファイルを用いてハッシュ値を算出する
ｃ）ａ）とｂ）とで得られた値が一致するならば、検証対象ファイルが改竄されていないと判定し、ａ）とｂ）とで得られた値が一致しないならば、検証対象ファイルが改竄されていると判定する。
【０１３８】
の手順で実行される。
尚、ストリームファイル（xxxxx.M2TS）の改竄チェックは省いてもよい。なぜなら、一般にストリームファイルは他のファイルに比べてファイルサイズが大きく、ファイルサイズによってはハッシュ値の算出に莫大な時間がかかるおそれがあり、またストリームファイル自体、BD-ROM上に記録されている鍵で暗号化されていることが多く、他のファイルに比べ改竄が困難であると想定されるためである。
【０１３９】
次に、本発明に係る再生装置におけるVirtual Package構築手順について、フローチャートを参照しながら、その詳細を説明する。Virtual Packageの構築は、Java(登録商標)アプリケーションによるVirtual Package構成ファイル群のダウンロード、Virtual File System３８によるPreparing、及びVirtual File System３８によるUpdatingの３つの段階に分けられる。
【０１４０】
先ず、Java(登録商標)アプリケーションによる、Virtual Package構成ファイル群のダウンロードの手順について詳細に説明する。図３１は、Java(登録商標)アプリケーションによるVirtual Package構成ファイル群のダウンロードの手順を示すフローチャートである。
【０１４１】
先ず、Java(登録商標)アプリケーションは、BD-ROMのdiscIDに対応したLocal Storage上のディレクトリに記録されているマージ管理情報ファイルをサーバに送信することで、ファイル群の送信を要求し（ステップＳ２９１）、ステップＳ２９２で、サーバからのファイル群の受信を待ち受ける。尚、BD-ROMが初めて再生装置へ挿入された場合など、Local Storageにマージ管理情報ファイルが記録されていないことがある。このような場合には、Ｓ２９１の処理でサーバへのファイル群の送信要求として、BD-ROMのdiscIDをサーバへ通知するとしてもよい。
【０１４２】
ステップＳ２９２の待ち受け処理中にサーバからファイル群のデータを受信すると、ステップＳ２９３及びステップＳ２９４で、ファイル群をLocal Storageへ記録する。ステップＳ２９３は、discIDに対応したディレクトリに新規ディレクトリを作成して、受信したマージ管理情報ファイル及び署名情報ファイルを、その新規ディレクトリへ記録する処理であり、ステップＳ２９４は、ダウンロードしたAVClip、Clip情報、PlayList情報、Java(登録商標)アーカイブファイルをdiscIDに対応するディレクトリに書き込む処理である。
【０１４３】
Local Storageへのファイル記録が完了すると、Java(登録商標)アプリケーションは、新規ディレクトリのマージ管理情報ファイルのファイルパスと、署名情報ファイルのファイルパスとを引数にして、アップデート要求メソッドを呼び出し（ステップＳ２９５）、ステップＳ２９６でメソッドの返り値を待ち受ける。
【０１４４】
返り値がFalseである場合（ステップＳ２９６：Ｙｅｓ）、Virtual Packageの構築処理は中止となる。返り値がFalseではない場合（ステップＳ２９６：Ｎｏ）、Virtual File SystemはPrepared状態となり、その後、タイトルが切り替わるタイミングでVirtual Packageがアップデートされる（Ｓ２９７）。
【０１４５】
続いてVirtual File System３８によるPreparing処理について詳細に説明する。図３２は、Virtual File System３８によるPreparing処理を示すフローチャートである。
本フローチャートは、アップロード要求メソッドが呼び出された場合にPreparing状態に遷移したVirtual File System３８により実行される処理手順である。
【０１４６】
メソッド呼出時の引数となるファイルパスを用いてマージ管理情報ファイル、及び署名情報ファイルを読み出すステップＳ５１の処理を実行した後は、Virtual Package構築の可否を判定するステップＳ５２〜ステップＳ５４の処理を実行する。ステップＳ５２は、ステップＳ５１において読み出したマージ管理情報ファイルが改竄されているかを否かを判定する処理であり、マージ管理情報ファイルが改竄されていると判定された場合は、Virtual Package構築が許可されない。
【０１４７】
具体的には、
ａ）  再生装置が保持するマージ証明書中の公開鍵を用いて、署名情報ファイル中の暗号化ハッシュ値を復号化する。
【０１４８】
ｂ）  マージ管理情報ファイルのハッシュ値を算出する。
ｃ）  ａ）で復号化した値とｂ）で算出した値とが一致する場合に、マージ管理情報ファイルが改竄されておらず正当であると判定し、ａ）で復号化した値とｂ）で算出した値とが一致しない場合に、マージ管理情報ファイルが改竄されており正当ではないと判定する。
【０１４９】
ステップＳ５３は、メソッドを呼び出したJava(登録商標)アプリケーションが、Virtual Package更新権限を有するか否かを判定する処理である。呼び出し元に権限がない場合は、Virtual Package構築が許可されない。
【０１５０】
ステップＳ５４は、マージ管理情報ファイル中で指定されているファイルが、Local Storageに実在するか否かを判定する処理であり、指定のファイルが実在しないと判定された場合は、Virtual Package構築が許可されない。
【０１５１】
ステップＳ５２〜ステップＳ５４の何れかで、Virtual Packageの構築が許可されない判定がなされた場合、メソッドの呼び出し元のJava(登録商標)アプリケーションへ返り値としてFalseを返して、処理が終了される。
【０１５２】
一方、ステップＳ５２〜ステップＳ５４でVirtual Package構築が許可される判定がなされると、ステップＳ５５の処理が実行される。
ステップＳ５５は、マージ管理情報ファイル、署名情報ファイル、及びマージ管理情報ファイルに指定されているファイルを読み出し専用属性に変更する処理である。以上が、Preparing処理の詳細についての説明である。
【０１５３】
尚、ステップＳ５２〜ステップＳ５４の何れかで、Virtual Packageの構築が許可されない判定がなされた場合に、BD-ROMのボリューム管理情報をVirtual Package情報として、アップデート要求メソッド呼出元のJava(登録商標)アプリケーションへ引き渡し、アップデート要求メソッドの処理を終えるとしてもよい。これにより、再生装置は、マージ管理情報ファイルが改竄等により不正な状態であれば、Local Storage上のファイルを含めたVirtual Packageの構築を抑制しつつ、BD-ROM上のファイルへは、Virtual Packageへのアクセスと同様にアクセスすることができる。
【０１５４】
続いてVirtual File System３８によるUpdating処理について詳細に説明する。図３３は、Virtual File System３８によるUpdating処理を示すフローチャートである。
本フローチャートは、アップデート要求メソッドにおいて、Preparing処理の完了後にTitle Changeが起こるとVirtual File System３８により実行される処理手順である。
【０１５５】
先ず、メソッドの引数のファイルパスで指定されたマージ管理情報ファイル及び署名情報ファイルを、現在再生中のBD-ROMのdiscIDに対応したLocal Storage上のディレクトリに移動させる。このとき、移動先のディレクトリに既にマージ管理情報ファイル及び署名情報ファイルが存在する場合には、新たなマージ管理情報ファイル及び署名情報ファイルで上書きする（ステップＳ６１）。次にLocal Storage１８においてマージ管理情報ファイルで指定されているPlayList情報のファイル管理情報を、BDボリューム管理情報におけるPLAYLISTディレクトリのディレクトリ管理情報に追加する(ステップＳ６２)。
【０１５６】
その後、ステップＳ６３〜ステップＳ６７のループ処理を実行する。このループ処理は、Local Storage１８に存在するそれぞれのClip情報について、ステップＳ６４〜ステップＳ６６の処理を繰り返すものである(ステップＳ６３、ステップＳ６７)。
【０１５７】
本ループ処理では、マージ管理情報ファイルで指定されているClip情報のうち1つのClip情報をClip情報xとし、Clip情報xのファイル管理情報を、BDボリューム管理情報におけるCLIPINFディレクトリのディレクトリ管理情報に追加する(ステップＳ６４)。さらに、Clip情報xに対応するAVClipxを特定し(ステップＳ６５)、このAVClipxのファイル管理情報を、BDボリューム管理情報におけるSTREAMディレクトリのディレクトリ管理情報に追加する(ステップＳ６６)。
【０１５８】
以上の処理を全てのClip情報及びAVClipについて繰り返せば、Clip情報及びAVClipについてのファイル管理情報が、BDボリューム管理情報に追加されることになる。こうした追加により得られたBDボリューム管理情報がVirtual Package情報になる。このVirtual Package情報をアップデート要求メソッド呼出元のJava(登録商標)アプリケーションへ引き渡し（ステップＳ６８）、処理を終える。以上が、Updating処理の詳細についての説明である。
【０１５９】
以上、本実施形態によれば、署名情報に基づいてマージ管理情報の正当性を検証し、マージ管理情報の正当性が確かめられなかった場合は、Local Storageに記録されているファイルをもちいてVirtual Packageを構築することが回避される。これにより、Virtual Packagを構築していな間にLocal Storage上のデータが直接改竄されていたとしても、読み出し専用記録媒体に記録されているデータと組み合せて、改竄された不正なデータが実行、再生されることがなく、不正なデータの利用による不利益をこうむることがない。
【０１６０】
また、Virtual Packageを構築する際に、読み書き可能な記録媒体であるLocal Storage上のファイルを、読み取り専用属性にロックすることにより、Virtual Packageが構築された状態で、アプリケーションによる不用意なファイルアクセスによって、ファイルが書き換わることを防ぐことができる。これにより、Virtual Package情報と、Local Storage上のファイルの実体とに不整合が発生することを回避することができる。
【０１６１】
(第２実施形態)
本実施形態は、タイトル呼出時における改良に関する。タイトル呼出とは、カレントタイトルの再生を一時的に停止(suspend)して、呼出先のタイトルの再生を行い、そのタイトルの実行終了後、元のタイトルの再生を再開(resume)させるものである。
【０１６２】
かかる再生再開を前提にしているので、タイトル呼出時にあたってPlayback Control Engine３２は、PSRに格納されている、再生制御のためのシステムパラメータをバックアップPSRに退避し、呼出先のタイトルの再生後、そのバックアップPSRに退避したパラメータをPSRに復帰するとの処理を行う。
【０１６３】
以下は、PSRに格納されるシステムパラメータの一覧である。PSR（０）からPSR（１２）までは、再生状態を示すシステムパラメータを格納する。PSR（１３）からPSR（１９）までは、プリファレンスとしてプレーヤに設定されるシステムパラメータを格納している。PSR（２０）からPSR（３２）までは、バックアップ用のPSRである。
【０１６４】
PSR（０）      ：  IGストリーム番号
PSR（１）      ：  音声ストリーム番号
PSR（２）      ：  PGストリーム/テキスト字幕ストリーム番号
PSR（３）      ：  アングル番号
PSR（４）      ：  現在再生中のタイトル番号
PSR（５）      ：  現在再生中のチャプター番号
PSR（６）      ：  現在再生中のプレイリスト識別子
PSR（７）      ：  現在再生中のプレイアイテム識別子
PSR（８）      ：  再生時刻情報
PSR（９）      ：  ナビゲーションタイマー
PSR（１０）    ：  選択キー情報
PSR（１１）    ：  IGストリームにおける現在のページ識別子
PSR（１２）    ：  PGストリーム、テキスト字幕ストリームにおけるユーザースタイル識別子
PSR（１３）    ：  パレンタルレベル
PSR（１４）    ：  字幕サポート情報
PSR（１５）    ：  プレーヤ設定値（オーディオ）
PSR（１６）    ：  音声ストリーム用言語コード
PSR（１７）    ：  PGストリーム、テキスト字幕ストリーム用の言語コード
PSR（１８）    ：  メニュー用言語コード
PSR（１９）    ：  プレーヤのバージョン情報
PSR（２０）    ：  PSR（０）のバックアップ
PSR（２１）    ：  PSR（１）のバックアップ
PSR（２２）    ：  PSR（２）のバックアップ
PSR（２３）    ：  PSR（３）のバックアップ
PSR（２４）    ：  PSR（４）のバックアップ
PSR（２５）    ：  PSR（５）のバックアップ
PSR（２６）    ：  PSR（６）のバックアップ
PSR（２７）    ：  PSR（７）のバックアップ
PSR（２８）    ：  PSR（８）のバックアップ
PSR（２９）    ：  PSR（９）のバックアップ
PSR（３０）    ：  PSR（１０）のバックアップ
PSR（３１）    ：  PSR（１１）のバックアップ
PSR（３２）    ：  PSR（１２）のバックアップ
ここで、かかるタイトル呼出時にVirtual Package情報のアップデートがあると、タイトル呼出の前後で、Virtual Package情報の入れ代わりが生じる。
【０１６５】
呼出元のタイトルに復帰したときはVirtual Package情報がすでに変更されているため、バックアップしておいた値を使って呼出元タイトルを再生しようとすると、以前と同じ値ではエラーが起こる可能性がある。そのため、Java(登録商標)アプリケーションがVirtual Package情報のアップデート要求を行うときは、バックアップPSRをクリアすることで、この問題を回避する。ただし、Virtual Package情報におけるマージ管理情報ファイルの内容によって、変更の影響を受けないケースも有りうるため、システムパラメータの値をクリアするかはJava(登録商標)アプリケーションに任せてもよい。
【０１６６】
図３４は、タイトル呼出にあたって、カレントタイトルの再生を一時的に停止(suspend)する際のPlayback Control Engineの処理手順と、呼出先のタイトルの再生終了後、元のタイトルの再生を再開(resume)する際のPlayback Control Engineの処理手順とを示すフローチャートである。
【０１６７】
カレントタイトルの再生を一時的に停止する際は、ステップＳ７１の処理により、SPRM（０）〜SPRM（１２）をSPRM（２０）からSPRM（３２）に退避しておく。
一方、呼出先のタイトルの再生終了後、元のタイトルの再生を再開する際は、ステップＳ８１の処理で、suspend中にVirtual Package情報が更新されたか否かを判断する。
【０１６８】
更新されていない場合は、SPRM（２０）〜SPRM（３２）をSPRM（０）〜SPRM（１２）に復帰する（ステップＳ８３）。更新されている場合は、SPRM（２０）〜SPRM（３２）を初期化し（ステップＳ８２）し、ステップS８３の処理を実行する。
【０１６９】
以上のように本実施形態によれば、タイトル呼出時において、Virtual Package情報のアップデートがあった際、バックアップPSRの内容を一旦初期化するので、その呼出前のPSRに基づき、Playback Control Engineが誤った再生処理をする恐れはない。Playback Control Engineの安定動作の実現が可能になる。
【０１７０】
なおVirtual Package情報のアップデートを伴うときに、バックアップPSRの値をクリアするかどうかをJava(登録商標)アプリケーションに任せず、システム側で強制的にシステムパラメータの値をクリアしてもよい。  
【０１７１】
(第３実施形態)
第１実施形態では、BD-ROMのorganisationID及びdiscIDに対応したLocal Storage上のディレクトリを、Virtual Package構築ファイル群の格納場所とする構成について説明したが、第３実施形態では、Local Storage上の任意のディレクトリに記録されたファイルを用いてVirtual Packageを構築する構成について説明する。
【０１７２】
このようなVirtual Packageの構築は、Java(登録商標)アプリケーションが、アップデート要求メソッドの引数として、discIDと、Virtual Package構築に用いるファイル群を記録したLocal Storage上のディレクトリパスとを指定することによって実現される。
【０１７３】
第３実施形態に係る再生装置では、Virtual File System部３８が、Virtual Package管理テーブルを保持している。図３５は、Virtual Package管理テーブルの一例である。Virtual Package管理テーブルは、BD-ROMを識別するdiscIDと、アップデート要求メソッドで指定されたLocal Storage上のディレクトリを示すパスとを対応付けたテーブルである。Virtual File System部３８が、アップデート要求に応じてVirtual Package情報を生成する際に、
このようなVirtual Package管理テーブルに情報を登録しておくことで、Virtual Packageに用いるファイル群の格納先を特定することができる。
【０１７４】
以下に、本実施形態に係るVirtual File System部３８によるVirtual Package構築処理について説明する。図３６は、第３実施形態に係るVirtual File System部３８によるVirtual Package構築の処理手順を示すフローチャートである。
【０１７５】
本フローチャートは、Java(登録商標)アプリケーションによりアップデート要求メソッドが発行された場合に、Virtual File System部３８により実行される処理手順である。
ステップＳ９１は、アップデート要求メソッドの引数として指定されたdiscIDが、既にVirtual Package管理テーブルに登録されているか否かの判定である。
【０１７６】
指定されたdiscIDが既にVirtual Package管理テーブルに登録されている場合は（ステップＳ９１：Ｙｅｓ）、ステップＳ９２〜ステップＳ９４の処理手順を実行した後、ステップＳ９５〜ステップＳ９９の処理手順を実行する。一方、ステップＳ９１の判定で、指定されたdiscIDがVirtual Package管理テーブルに登録されていないと判定された場合は、そのままステップＳ９５〜ステップＳ９９の処理手順を実行する。
【０１７７】
ステップＳ９２〜ステップＳ９４では、Virtual Package管理テーブルから、指定されたdiscIDの項目を削除し（ステップＳ９２）、BD-ROMドライブ１に指定のdiscIDで識別されるBD-ROMが挿入されているか否かを判断する（ステップＳ９３）。指定されたdiscIDのBD-ROMが挿入されている場合は（ステップＳ９３：Ｙｅｓ）、ステップＳ９４に遷移し、それ以外の場合（ステップＳ９３：Ｎｏ）には、ステップＳ９５に遷移する。ステップＳ９４は、指定のdiscIDに対応して構築しているVirtual Packageを停止する。
【０１７８】
ステップＳ９５は、指定されたディレクトリの署名が正しいかを判断する処理手順である。指定ディレクトリの署名が正しいかの判断処理とは、ここでは、ａ）指定ディレクトリ下のマージ管理情報ファイルが改竄されていないこと、次に、ｂ）このマージ管理情報ファイルで指定されているファイルが改竄されていないことを確認することである。
【０１７９】
マージ管理情報ファイルが改竄されていないことを確認するためには、
ａ-１）マージ管理情報ファイルに対してハッシュ値を計算し、
ａ-２）再生装置が保持するマージ証明書中の公開鍵を用いて、指定ディレクトリ下の署名情報ファイル中の暗号化ハッシュ値を復号化し、
ａ-３）算出したハッシュ値と、復号化された署名の値とが同じ値であればマージ管理情報ファイルが改竄されていないことが確認できる。
【０１８０】
マージ管理情報ファイルで指定されているファイルが改竄されていないことを確認するためには、
ｂ-１）マージ管理情報ファイルで指定されているファイルに対してハッシュ値を計算し、
ｂ-２）算出したハッシュ値と、マージ管理情報ファイルに記載されているハッシュ値とを比較し、値が同じであれば、マージ管理情報ファイルで指定されているファイルが改竄されていないことが確認できる。
【０１８１】
ステップＳ９５の判断で、指定されたディレクトリの署名が正しいと判断される場合は（ステップＳ９５：Ｙｅｓ）、ステップＳ９６に遷移し、それ以外の場合には処理を終了する。
【０１８２】
ステップＳ９６では、アップデート要求メソッドの引数で指定されたdiscIDと、ディレクトリパスとを用いて、Virtual Package管理テーブルに、新たな項目を追加し、ステップＳ９７では、指定のdiscIDで識別されるBD-ROMがBD-ROMドライブ１に挿入されているか判断する。
指定のdiscIDのBD-ROMが挿入されている場合は（ステップＳ９７：Ｙｅｓ）、ステップＳ９８に遷移し、それ以外の場合には（ステップＳ９７：Ｎｏ）、処理を終了する。ステップＳ９８では、引数でパスが指定されたLocal Storageのディレクトリ以下を読み込み専用属性に設定する。ステップＳ９９では、ファイルパスが指定されたLocal StorageのディレクトリとBD-ROMでVirtual Packageを構築する。以上が第３実施形態に係るVirtual Package構築の処理手順についての説明である。
【０１８３】
尚、上記の処理手順は、アップデート要求に応じたVirtual Packageの構築の処理手順であるが、再生装置に新たにBD-ROMが挿入された場合のVirtual Packageの構築処理では、挿入されたBD-ROMのdiscIDに対応するディレクトリパスを、Virtual Package管理テーブルから検索し、検出されたディレクトリパスを指定のディレクトリパスとして、図３６のステップＳ９５以降の処理手順を実行することでVirtual Packageを構築することができる。
【０１８４】
また、アップデート要求に応じたVirtual Packageの構築では、
、ステップＳ９５における指定されたディレクトリの署名が正しいかを判断する処理として、ａ）指定ディレクトリ下のマージ管理情報ファイルが改竄されていないこと、次に、ｂ）このマージ管理情報ファイルで指定されているファイルが改竄されていないことを確認するとした。しかし、再生装置に新たにBD-ROMが挿入された場合のVirtual Packageの構築処理では、ステップＳ９５における指定されたディレクトリの署名が正しいかを判断する処理として、ａ）指定ディレクトリ下のマージ管理情報ファイルが改竄されていないことのみを確認して、ステップＳ９６〜ステップＳ９９の処理でVirtual Packageを構築してもよい。この場合には、Java(登録商標)アプリケーションから、マージ管理情報ファイル中でファイルパスが記載されたファイルへのアクセス要求があったときに、ｂ）マージ管理情報ファイルで指定されているファイルが改竄されていないことの確認を実行する。これが確認された場合にのみ、Java(登録商標)アプリケーションによる指定のファイルへのアクセスを許可する。このように、ハッシュ値算出処理の一部を、Virtual Package構築時ではなく、ファイルアクセス時に実行することで、BD-ROMが挿入され、ローディングした後に必要な処理が軽減される。これにより、起動速度を向上する効果がえられる。
【０１８５】
続いて、Virtual Packageが構築されている状態で、Java(登録商標)アプリケーションがLocal Storageのロケータを指定して、ファイルに対して書き込みでアクセスした場合の動作について説明する。
【０１８６】
図３７は、ファイルへの書き込みアクセスを制御するＡＰＩの処理手順を示すフローチャートである。Java(登録商標)アプリケーションから、Local Storageロケータを指定した書き込みアクセスが要求されると、Virtual Package構築期間中のためにディレクトリが読み取り専用属性に設定されているか否かを判断する（ステップＳ１０１）。指定されたファイルが含まれるディレクトリが読み取り専用属性にロックされている場合には（ステップＳ１０１：Ｙｅｓ）ファイルに対する書き込みが許可されないことを示すエクセプションをJava(登録商標)アプリケーションへ返して処理を終了し（ステップＳ１０２）、それ以外の場合には（ステップＳ１０１：Ｎｏ）ステップＳ１０３に遷移する。
【０１８７】
ステップＳ１０３は、Local Storage上のファイルに対して書き込みでアクセスを実行する処理である。
上述の処理手順によると、アクセス先に指定したファイルがVirtual Packageを構成するファイルであり、アクセス要求時にVirtual Packageが構築されている状態であれば、ファイルアクセスが許可されない。
【０１８８】
ここで、図３８に示すcontsID＃1ディレクトリを指定してVirtual Packageが構成されている状態で、contsID＃1ディレクトリ以下のファイルにエラーがあったとしても、Virtual Packageが構築されている状態では、contsID＃1ディレクトリは読み取り専用属性に設定されているため、ファイルの修正を行うことが出来ない。
【０１８９】
その際は、ファイルの修正機能を有するJava(登録商標)アプリケーション
は、ファイルＩ／Ｏ機能を提供するＡＰＩを用いて、図３８に示すように、contsID＃2というディレクトリを作成し、ここにcontsID＃1ディレクトリ以下のファイルを複製した上で、ファイルのエラーを修正する。この際、ＡＶデータであるM2TSファイルは、内容に変更がないならば、contsID＃2ディレクトリに複製ファイルを生成する替わりに、contsID＃1以下のM2TSファイルに対するシンボリックリンクを生成してもよい。
【０１９０】
Java(登録商標)アプリケーションは、contsID＃2以下のファイルを生成すると、contsID＃2ディレクトリのパス（図３８においては“ROOT／organization＃1／disc＃1／contsID＃2”）を引数としてアップデート要求メソッドを発行する。
【０１９１】
この結果、図３６に示すフローチャートに従って、contsID＃1ディレクトリ以下のファイルを用いたVirtual Packageの構築を停止した後に、contsID＃2ディレクトリ以下のファイルを用いてVirtual Packageが構築される。新たなVirtual Packageが構築された状態では、Local Storage上のcontsID＃2ディレクトリ以下は、読み取り専用属性に設定される。
【０１９２】
尚、本実施の形態においてシンボリックリンクを利用したが、“ROOT／organization＃1／disc＃1／contsID＃2／00002.M2TS”ファイルの内容が”..／contsID＃1／00002.M2TS”という文字列であるような間接参照の仕組みを利用してもよい。
【０１９３】
以上、本実施形態によれば、Local Storage上の任意のディレクトリを指定してVirtual Packageを構築することができる。また、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築する際に、読み書き可能な記録媒体であるLocal Storage上のファイルを読取専用属性にロックすることにより、Virtual Packageを構築している状態でファイルが書き換わることを禁止することが可能となり、自アプリケーションまたは他のアプリケーションからの不正なファイル変更によるエラーを防止することができる。
【０１９４】
また、Virtual Packageを構築していない状態で実体ファイルが改竄されたとしても、署名が正しいかを判断することにより実体ファイルの改竄を検出しVirtual Packageの構築を回避することによって、不正なファイルを利用することによる不具合の発生を未然に防ぐことができる。
【０１９５】
なお、本実施の形態において、Virtual Packageを構築する際の条件判断として指定ディレクトリの署名が正しいかを判断するステップＳ９５の処理を設けたが、署名を判断せずにVirtual Packageを構築する構成としても良い。
【０１９６】
なお、本実施の形態において、Virtual Packageを構築するとLocal Storage上の指定されたディレクトリ以下は、読み取り専用属性にするようロックされるようにしたが、指定ディレクトリ以下のディレクトリ及びファイルについても、属性を再帰的に読み取り専用属性に設定するようにしてもよい。
【０１９７】
なお、本実施の形態において、Virtual Packageを構築する際に、アップデート要求メソッドの引数として
“ROOT／organization＃1／disc＃1／contsID＃1”というLocal Storage上のパスを指定したが、contsIDのみを指定しorganizationID、discIDについては、BD-ROMから取得するように構成してもよい。
【０１９８】
(第４実施形態)
第３実施形態では、アップデート要求メソッドの引数に指定されているディレクトリを読み取り専用属性に設定することで、Local Storageに記録されているVirtual Package構成ファイルが改変されることを防ぎ、Virtual Package情報と実際のLocal Storage上のディレクトリーファイル構成に不整合が生じることを防ぐ構成について説明した。
【０１９９】
第４実施形態は、Virtual Package情報と実際のLocal Storageのディレクトリーファイル構成とに不整合を生じさせることなく、Local Storage上のVirtual Package構成ファイル群に対する書き込みアクセスを可能にする改良について述べる。
【０２００】
図３９は、第４実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。本フローチャートと、図３６に示すフローチャートとの違いは、ステップＳ９８、ステップＳ９９をステップＳ１１１、ステップＳ１１２にそれぞれ変更している点である。ステップＳ１１１では、Local Storageのアップデート要求メソッドの引数で指定されたディレクトリ以下を別の記録媒体にコピーする。ステップＳ１１２では、別の記録媒体にコピーしたディレクトリ以下とBD-ROMとVirtual Packageを構築する。以上が、Virtual Packageの構築の処理手順についての説明である。
【０２０１】
続いて、Java(登録商標)アプリケーションによる書き込みでのファイルアクセスの処理手順について説明する。
図４０は、Virtual Packageを構築した状態でLocal Storage上のファイルに書き込みアクセスした場合の、ファイルＩ／Ｏ機能を提供するＡＰＩの処理を示すフローチャートである。本フローチャートと、図３７に示すフローチャートとの違いは、ステップＳ１０１とステップＳ１０２が削除されている点である。Local Storageロケータを指定してLocal Storage上のファイルに対して書き込みでアクセスが要求されると、ステップＳ１０３で、Local Storage上のファイルに対して書き込みでアクセスを実行して、処理を終了する。
以上が、Java(登録商標)アプリケーションによる書き込みでのファイルアクセスの処理手順についての説明である。
【０２０２】
以上、本実施形態によれば、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築する際に、読み書き可能な記録媒体であるLocal Storage上のファイルを別の記録媒体に複製しているので、Virtual Packageを構築している状態でLocal Storage上の実体ファイルを書き換えられたとしても、Virtual Packageからは記録媒体に複製された書き換える前の状態のファイルが参照される。従って、自アプリケーションまたは他のアプリケーションからの不正なファイル変更が行われたとしても、不具合が発生することを防止することができる。
【０２０３】
なお、本実施形態において、Local Storage上のファイルをコピーする先として別の記録媒体の場合を示したが、同じLocal Storage上でかつJava(登録商標)アプリケーションから直接参照できない、または読み取り専用でアクセスできるディレクトリにコピーするとしてもよい。
【０２０４】
なお、本実施の形態においては、Local Storageの指定されたディレクトリ以下を別の記録媒体にコピーするとしたが、ＡＶストリーム等を格納するファイルはサイズが大きいのでコピーすると時間がかかると共に、記録媒体の記憶領域を消費する。そこで、図３８の例で示したように、サイズが大きいファイルに関してはシンボリックリンクを利用するようにしてもよい。
【０２０５】
(第５実施形態)
第５実施形態では、Virtual Package構築の際に、不正なファイル変更を防ぐための改良について述べる。
【０２０６】
図４１は、第５実施形態に係る再生装置の内部構成を示す図である。本実施形態に係る再生装置は、図１８に示す構成に暗号化器４１と復号化器４２とを追加した構成である。図１８と同様の構成要素には同一の符号を付し、それらの説明を省略する。
【０２０７】
暗号化器４１は、BD−ROMドライブ１に挿入されているBD-ROMのＢＣＡ（Ｂｕｒｓｔ  Ｃｕｔｔｉｎｇ  Ａｒｅａ）に記録されているディスクに固有の鍵情報を用いて、Local Storageへ書き込むファイルを選択的に暗号化する。暗号化器４１で暗号化の対象とするファイルは、サーバからダウンロードしたVirtual Package構成ファイル群のうち、ＡＶデータであるM2TSファイルである。ここで用いる暗号方式は、例えば、ＡＥＳや、ＤＥＳ等の既存の暗号化方式を利用する。ＢＣＡとは、ディスクのリードイン領域の内側にあるドライブでしか読み出せない特別な領域である。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
【０２０８】
復号化器４２は、BD−ROMドライブ１に挿入されているBD-ROMのＢＣＡに記録されているディスクに固有の鍵情報を用いて、ファイルを復号化する。復号化器４２で復号化する対象は、Local Storageから読み出したM2TSファイルであり、ＡＶデータのＡＣＣＥＳＳ  ＵＮＩＴを取得して復号化し、再生機構へ出力する。ここで用いる暗号方式は、暗号化器４１で用いる暗号方式と同じものであり、暗号化器４１で暗号化したファイルを復号化するものである。
【０２０９】
また、本実施形態に係る再生装置では、Virtual File System部３８で保持するVirtual Package管理テーブルの構成が、第３実施形態における構成とことなる。図４２は、第５実施形態に係るVirtual Package管理テーブルの一例である。本実施形態に係るVirtual Package管理テーブルは、図３５のものと比較して、署名データが追加されている。Virtual Package管理テーブルの署名データは、Virtual Packageを構築するディレクトリにおいて、Local Storageに記録された後にファイルが書き換えられていないことを検証するための署名である。
【０２１０】
署名データ６０７の登録情報のうち、ファイルサイズが小さいBDMVファイル、MPLSファイル、CLPIファイル等に対応する登録情報６０１、６０２、及び６０３は、Virtual Packageでのファイル名と、Local Storageに記録されているファイル実体のハッシュ値とからなる。ここに設定されているハッシュ値は、ファイルをサーバからダウンロードした時に算出したものである。尚、ハッシュ値は、ファイルのデータから一意に値が決まる一方向の関数で求めた値である。一方向の関数としては、ＭＤ５などの既存の方式を利用することができる。一方、署名データの登録情報のうち、ファイルサイズが大きいM2TSファイルの登録情報６０６は、Virtual Packageでのファイル名のみであり、ハッシュ値は設定されていない。また、署名データ６０７は、BD-ROMのＢＣＡに書き込まれているディスクに固有の鍵情報を用いて、暗号化されている。
【０２１１】
以下に、第５実施形態に係る再生装置の動作の流れについて、図４３、図４４を参照して説明する。先ず、サーバからダウンロードしたファイルをLocal Storageへ記録する処理について説明する。図４３は、ダウンロードファイルをLocal Storageへ記録する処理手順を示すフローチャートである。
【０２１２】
本フローチャートは、Java(登録商標)アプリケーションが、サーバからVirtual Packageを構成するためのファイルをダウンロードし、このファイルをLocal Storageへ書き込む際に実行される。
【０２１３】
Java(登録商標)アプリケーションから、Local Storageロケータを指定した書き込みアクセスが要求されると、Virtual Package構築期間中のためにディレクトリが読み取り専用属性に設定されているか否かを判断する（ステップＳ１２１）。指定されたファイルが含まれるディレクトリが読み取り専用属性にロックされている場合には（ステップＳ１２１：Ｙｅｓ）ファイルに対する書き込みが許可されないことを示すエクセプションをJava(登録商標)アプリケーションへ返して処理を終了し（ステップＳ１２２）、それ以外の場合には（ステップＳ１２１：Ｎｏ）ステップＳ１２３に遷移する。
【０２１４】
ステップＳ１２３は、指定されたファイルがＡＶデータであるM2TSファイルであるか否かの判断である。
指定されたファイルがM2TSファイルである場合には（ステップＳ１２３：Ｙｅｓ）、BD-ROMドライブ１に挿入されているBD-ROMのＢＣＡに記録されているディスクに固有の鍵情報を用いて、暗号化器４１にファイルを暗号化させ（ステップＳ１２４）、指定ファイルのVirtual Packageでのファイル名のみの登録情報を、署名データに追加した後（ステップＳ１２５）、ステップＳ１２７以降の処理を実行する。
【０２１５】
指定されたファイルがM2TSファイル以外のファイルである場合には（ステップＳ１２３：Ｎｏ）、指定されたファイルに対するハッシュ値を算出し、算出したハッシュ値と指定のファイルのVirtual Packageでのファイル名とを含む登録情報を、署名データへ追加した後（ステップＳ１２６）、ステップＳ１２７以降の処理を実行する。
【０２１６】
ステップＳ１２７は、BD-ROMのＢＣＡに記録されているディスクに固有の鍵情報を用いて、暗号化器４１に署名データを暗号化させる処理である。ステップＳ１２８は、Local Storageに書き込みでアクセスし、指定のファイルと共にステップＳ１２７で暗号化した署名データを Local Storageへ記録する処理である。以上が、サーバからダウンロードしたファイルをLocal Storageへ記録する処理についての説明である。
【０２１７】
続いて、Virtual File System部３８がVirtual Packageを構築する処理について説明する。図４４は、Virtual Package構築の処理手順を示すフローチャートである。本フローチャートは、Java(登録商標)アプリケーションが、discIDと、Virtual Packageを構築するためのデータを格納したディレクトリのパスとを引数として、アップデート要求メソッドを発行した場合に実行される処理手順である。
【０２１８】
ステップＳ１３１は、指定のdiscIDのBD-ROMについて、既にVirtual Packageが構築されているか否かの判定である。
指定されたdiscIDのBD-ROMについて、既にVirtual Packageを構築している場合には（ステップＳ１３１：Ｙｅｓ）、ステップＳ１３２に遷移し、それ以外の場合にはステップＳ１３５に遷移する。ステップＳ１３２では、Virtual Package管理テーブルの指定されたdiscIDの項目を削除する。ステップＳ１３３では、BD-ROMドライブ１に指定のdiscIDで識別されるBD-ROMが挿入されているか否かを判断する。指定されたdiscIDのBD-ROMが挿入されている場合は（ステップＳ１３３：Ｙｅｓ）、ステップＳ１３４に遷移し、それ以外の場合には、ステップＳ１３５に遷移する。ステップＳ１３４では、discIDで構築しているVirtual Packageを停止する。
【０２１９】
ステップＳ１３５では、Virtual Package管理テーブルに、引数で指定されたdiscIDの項目に、引数で指定されたディレクトリパスと、指定されたディレクトリに記録されている署名データとを追加する。
【０２２０】
ステップＳ１３６では、BD-ROMドライブ１に指定のdiscIDで識別されるBD-ROMが挿入されているか否かを判断する。指定されたdiscIDのBD-ROMが挿入されている場合は（ステップＳ１３６：Ｙｅｓ）、ステップＳ１３７に遷移し、それ以外の場合には、処理を終了する。
【０２２１】
ステップＳ１３７では、BD-ROMのＢＣＡに記録されているディスクに固有の鍵情報を用いて、復号化器４２にVirtual Package管理テーブルの署名データを復号化させる。
ステップＳ１３８では、復号化された署名データが正当であるか否かを判断する。署名データは、
ａ）署名データにハッシュ値が設定されるすべてのファイルについてハッシュ値を算出し、算出した値が署名データに含まれているハッシュ値と一致する
ｂ）署名データにハッシュ値が設定されないM2TSファイルがLocal Storage上に削除されず実在する
ｃ）署名データに登録されていないファイルが指定されたLocal Storage上のディレクトリに存在しない
の３点が確認された場合正当であると判断される。
【０２２２】
署名データが正当であると判断される場合は（S１３８：Ｙｅｓ）、ステップＳ１３９に遷移し、それ以外の場合には処理を終了する。ステップＳ１３９では、Local Storageの指定されたディレクトリ以下を読み取り専用属性に設定する。ステップＳ１４０では、引数で指定されたLocal Storage上のディレクトリとBD-ROMとでVirtual Packageを構築する。以上が、Virtual Packageを構築する処理についての説明である。
【０２２３】
また、再生装置に新たにディスクが挿入された場合には、挿入されたBD-ROMのdiscIDに対応するディレクトリパスを、Virtual Package管理テーブルから検索し、検出されたディレクトリパスを指定のディレクトリパスとして、ステップＳ１３６以降の処理を行うことによってVirtual Packageを構築する。
【０２２４】
なお、本実施形態では、Virtual Packageに含まれるM2TSファイルのみを暗／復号化するとしたが、他のCLPIファイル、BDMVファイル、MPLSファイル等のファイルを暗／復号化するようにしてもよい。また、ダウンロードしたM2TSファイルを暗号化してからLocal Storageに書き込むとたが、あらかじめディスクに固有の鍵情報で暗号化されたM2TSファイルをダウンロードするとしてもよい。
【０２２５】
なお、M2TSファイルはサイズが大きいので再生時のハッシュ値の計算処理を省略するために、署名データにM2TSファイルのハッシュを追加しないとしたが、充分に処理能力の高い再生装置を用いる場合には、M2TSファイルについても署名データにハッシュ値を追加するようにしてもよい。また、他のCLPIファイル、BDMVファイル、MPLSファイル等のファイルを暗／復号化するようにし、M2TSファイル同様にハッシュ計算処理を省略してもよい。
【０２２６】
なお、本実施の形態において、ファイルをLocal Storageに書き込む際に署名データを生成するとしたが、署名データ自体もダウンロードし、これをVirtual Package構築する際に指定させるようにしてもよい。
【０２２７】
なお、本実施の形態において、暗／復号化の鍵としてディスクに固有の鍵情報を利用したが、ディスクに固有の鍵情報と、端末に固有の鍵情報から生成される情報を鍵として利用して暗／復号化してもよい。
【０２２８】
以上、本実施形態によれば、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築する際に、読み書き可能な記録媒体であるLocal Storage上のファイルをディスクに固有の鍵で暗号化しているので、Local Storage上の実体ファイルを他のディスクのアプリケーションによる書き換えや、Local Storageを別のパソコン等の機器に挿入して改竄する等の行為を防止することができる。また、ディスクに固有の鍵で署名データを暗号化して保存するので、Local Storage上のファイルが改竄されたことを検出し、Virtual Packageを構築しないようにすることができる。従って、不正に変更されたファイルを利用することによる不具合や、プロバイダが意図しない不正な利用を防止することができる。
【０２２９】
(第６実施形態)
第６実施形態では、Virtual Package構築中にLocal Storage上のファイルを別の記録領域に移動する方法について述べる。
【０２３０】
図４５は、第６実施形態におけるVirtual FileSystem部３８によるVirtual Package構築の一例を示す図である。本図の左上は、BD-ROMにおけるディレクトリ−ファイル構造であり、本図の左下は、Virtual Package構築前のLocal Storageにおけるディレクトリ−ファイル構造である。
【０２３１】
本実施形態に係るVirtual File System部３８は、アップデート要求メソッドの引数で指定されたディレクトリ（本図の例では“ROOT／organization＃1／disc＃1／contsID＃1”）以下のファイルを、ACTIVEディレクトリ以下に、それぞれ移動し、BD-ROMとでACTIVEディレクトリとでVirtual Packageを構築する。本図の右下が、ファイル移動後のLocal Storageにおけるディレクトリ−ファイル構造である。
【０２３２】
ACTIVEディレクトリは、アップデート要求メソッドの引数で指定されたdiscIDのBD-ROMと共にVirtual Packageを構成するディレクトリであり、アプリケーションからは直接のファイルの書き込みできないディレクトリになっている。
【０２３３】
以下、第６実施形態に係る再生装置の動作について説明する。先ず、Virtual Packageの構築の処理手順について説明する。
図４６は、第６実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。本フローチャートと、図３６に示すフローチャートとの違いは、ステップＳ９８、ステップＳ９９をステップＳ１５１、ステップＳ１５２にそれぞれ変更している点である。ステップＳ１５１では、ACTIVEディレクトリに、Local Storage上の引数で指定されたディレクトリ以下のファイルを移動する処理を行う。ステップＳ１５２では、ACTIVEディレクトリ以下とBD-ROMでVirtual Packageを構築する。以上が、Virtual Packageの構築の処理手順についての説明である。
【０２３４】
続いて、ステップＳ１５１の処理の詳細について説明する。図４７は、ACTIVEディレクトリにファイルを移動する処理手順を示すフローチャートである。
本フローチャートは、アップデート要求メソッドの引数で指定されたLocal Storageのディレクトリ以下にファイルが存在するか否かを判定し（ステップＳ１６１）、ファイルが存在するならば（ステップＳ１６１：Ｙｅｓ）、指定のディレクトリに存在する１のファイルを処理対象としてステップＳ１６２〜ステップＳ１６４の処理を実行するものである。
【０２３５】
ステップＳ１６２では、対象ファイルのファイル名の一文字目が“＿”であるかを判断する。一文字目が“＿”であるする場合は（ステップＳ１６２：Ｙｅｓ）、対象ファイルのファイル名から一文字目の”＿”を除いたファイル名のファイルを、ACTIVEディレクトリから削除し、対象ファイル自体も指定されたディレクトリから削除する（ステップＳ１６３）。一文字目が“＿”ではない場合は（ステップＳ１６２：Ｎｏ）、対象ファイルを指定されたディレクトリからACTIVEディレクトリへ移動させる（ステップＳ１６４）。
【０２３６】
ステップＳ１６２〜ステップＳ１６４の処理を、指定されたディレクトリ以下に存在した全てのファイルについて実行し、
指定されたディレクトリ以下にファイルが存在しなくなると（ステップＳ１６１：Ｎｏ）、処理を終了する。以上が、ACTIVEディレクトリに、Local Storage上の指定されたディレクトリ以下のファイルを移動する処理の詳細についての説明である。
【０２３７】
尚、処理対象ファイルのファイル名の一文字目が“＿”であるかどうかによってACTIVEディレクトリからファイルを削除する代わりに、削除予約を行うＡＰＩを設けた構成としても良い。削除予約ＡＰＩは、Java(登録商標)アプリケーションがACTIVEディレクトリ内のファイル削除予約を発行するためのものであるが、このＡＰＩによって削除予約が発行されてもすぐにはACTIVEディレクトリ内のファイル削除は行わない。Virtual File System部３８がファイル削除予約の内容をメモリに保持しておき、ACTIVEディレクトリのファイル移動処理が行われるときに、削除予約のあったACTIVEディレクトリ内のファイルを削除することで、ステップＳ１６２、Ｓ１６３の代替処理を行う。
【０２３８】
続いて、Java(登録商標)アプリケーションによる書き込みでのファイルアクセスの処理手順について説明する。
図４８は、ファイルへの書き込みアクセスを制御するＡＰＩの処理手順を示すフローチャートである。Java(登録商標)アプリケーションから、Local Storageロケータを指定した書き込みアクセスが要求されると、ACTIVEディレクトリ以下のファイルに対する書き込みアクセスであるかを判断する（ステップＳ１７１）。
【０２３９】
ACTIVEディレクトリ以下のファイルに対する書き込みアクセスである場合には（ステップＳ１７１：Ｙｅｓ）ファイルに対する書き込みが許可されないことを示すエクセプションをJava(登録商標)アプリケーションへ返して処理を終了し（ステップＳ１７２）、それ以外の場合には（ステップＳ１７１：Ｎｏ）ステップＳ１７３に遷移する。
【０２４０】
ステップＳ１７３では、Local Storage上のファイルに対して書き込みでアクセスを行う。以上が、Java(登録商標)アプリケーションによる書き込みでのファイルアクセスの処理手順についての説明である。
【０２４１】
上述の処理手順によると、アクセス先に指定したファイルがVirtual Packageを構成するファイルであり、アクセス要求時にVirtual Packageが構築されている状態であれば、ファイルアクセスが許可されない。
【０２４２】
なお、Virtual Package構築処理でのACTIVEディレクトリに対する書き込みをJava(登録商標)アプリケーションに許可し、ACTIVEディレクトリへのファイル移動をJava(登録商標)アプリケーションが行うようにしてもよい。すなわち、図４７に示すフローチャートでは、Virtual File System部３８が、Java(登録商標)アプリケーションが指定したディレクトリ内のファイルをACTIVEディレクトリへ移動する操作を行なっていたが、Virtual Package構築処理の実行中はJava(登録商標)アプリケーションにACTIVEディレクトリの書き込み許可を与え、かつ、ACTIVEディレクトリにファイルを移動する処理を開始するイベントをJava(登録商標)アプリケーションに通知することにより、Java(登録商標)アプリケーション自身がACTIVEディレクトリへのファイル移動を行うようにしてもよい。
【０２４３】
以上、本実施形態によれば、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築する際に、読み書き可能な記録媒体であるLocal Storage上のファイルを、アプリケーションからの書き込みアクセスが許可されないACTIVEディレクトリに移動しているので、Virtual Packageを構築している状態で、自アプリケーションまたは他のアプリケーションからの不正なファイルでファイルが改変されることを防止することができる。
【０２４４】
(第７実施形態)
実施の形態７は、同一プロバイダによるBD-ROM間で、Local Storage内のコンテンツを共有する方法について述べる。実施の形態７においては、実施の形態６と同様の部分については説明を省略する。
【０２４５】
図４９は、第７実施形態におけるVirtual Package構築の一例を示す図である。本図の左上は、BD-ROMにおけるディレクトリ−ファイル構造であり、本図の左下は、Virtual Package構築のために、Virtual Packageを構成するためのファイルをACTIVEディレクトリへ移動させた、Local Storageにおけるディレクトリ−ファイル構造である。
【０２４６】
図４９は図４８と比較して、Local Storageにおいて、ACTIVEディレクトリがROOT／organization＃1／disc＃1以下の他に、ROOT／organization＃1／SHSRED以下にも、ACTIVEディレクトリが存在する点で相違する。
【０２４７】
SHAREDディレクトリは、認証されたアプリケーションであり、かつ、同じorganizationIDを持つアプリケーションであれば、共通に読み書きすることが可能なディレクトリである。
【０２４８】
サーバからダウンロードしたファイルをdiscIDが異なる複数のBD-ROMのVirtual Packageで、共通して使いたい場合、ファイルをROOT／organization＃1／disc＃1ディレクトリ以下に保存するのではなく、ROOT／organization＃1／SHAREDディレクトリ以下に保存する。SHARED以下のディレクトリ構成は、discID以下と同様であり、ACTIVEディレクトリに対する操作に関しても実施の形態６で説明したものと同様である。ただし、Virtual Packageを構築するときは、disc＃1ディレクトリ下のACTIVEブディレクトリの中のファイルだけでなく、SHARED以ディレクトリ下のACTIVEディレクトリの中もマージしてVirtual Packageを構築する。
【０２４９】
本実施形態に係るVirtual File System部３８は、
BD-ROM、または、Local StorageのSHAREDディレクトリ以下、または、Local StorageのdiscID以下のいずれにも存在するファイルをVirtual PackageのファイルとしてVirtual Package情報に登録する。また、同じ名前のファイルがBD-ROMと、Local StorageのSHAREDディレクトリ以下及びLocal StorageのdiscIDディレクトリ以下との何れかとに存在する場合（図４９においては00002.CLPIがBD-ROM上にも、Local Storageno
のdisc＃1ディレクトリにも存在する）は、Virtual File System部３８は、Virtual PackageのファイルとしてはLocal Storage上のファイルを利用する。また、同じ名前のファイルがBD-ROMと、Local StorageのSHAREDディレクトリ以下と、Local StorageのdiscIDディレクトリ以下との何れにもに存在する場合は、discID以下のファイルを利用する。このようなマージ処理は、サブディレクトリに対して再帰的に繰り返される。
【０２５０】
図５０は、SHAREDディレクトリ以下のACTIVEディレクトリとdisc＃1ディレクトリ以下のACTIVEディレクトリでVirtual Packageを構築する様子を模式的に示す図である。Virtual Packageを構築するときは、まずSHARED以下のACTIVEディレクトリ内のファイルとBD-ROM上のファイルとをマージし、中間状態のファイル構成を生成する。マージ操作は実施の形態４での操作と同様である。次に、この中間状態のファイル構成とdisc＃1ディレクトリ以下のACTIVEディレクトリ内のファイルとのマージ操作を行い、最終的に、BD-ROM、SHAREDディレクトリ以下のACTIVEディレクトリ、及びdisc＃1ディレクトリ以下のACTIVEディレクトリのファイルをマージしたVirtual Packageを構築する。中間状態のファイル構成とdisc＃1ディレクトリ以下のACTIVEディレクトリ内のファイルのマージ操作は、中間状態のファイル構成をBD-ROMとみなし、実施の形態４でのマージ操作を行う。つまり、中間状態のファイル構成とdiscID以下のACTIVEディレクトリのファイルで、同じファイル名が存在した場合、最終的にdisc＃1ディレクトリ以下のACTIVEディレクトリが優先される。よって、ファイルの優先度はBD-ROM、SHAREDディレクトリ以下のACTIVEディレクトリ、disc＃1ディレクトリ以下のACTIVEディレクトリの順に高くなる。
【０２５１】
なお、SHAREDディレクトリ以下のACTIVEディレクトリのファイルの優先度を下げ、優先度をSHAREDディレクトリ以下のACTIVEディレクトリ、BD-ROM、disc＃1ディレクトリ以下のACTIVEディレクトリの順にしてVirtual Packageを構築してもよい。つまり、同じ名前のファイルがBD-ROMとLocal StorageのSHARED以下に存在する場合は、BD-ROM上のファイルを利用する。図４９を用いて説明すると、00002.JARと00002.CLPIとがBD-ROM上にも、Local Storage上にも存在するが、00002.JARに関しては、Local StorageにおいてSHAREDディレクトリ以下のACTIVEディレクトリに存在するため、BD-ROM上の00002.JARを利用し、00002.CLPIに関しては、Local Storageにおいてdisc＃1ディレクトリ以下のACTIVEディレクトリに存在するため、Local Storage上の00002.CLPIを利用する。このような優先度の設定は、SHAREDディレクトリ以下のACTIVEディレクトリに対するアクセス制限が低く、SHAREDディレクトリ以下に悪意のあるファイルを置くことで、不正にBD-ROM上のファイルを第三者によって置き換えられる恐れがある場合において有効である。SHAREDディレクトリ以下のACTIVEディレクトリの優先度をBD-ROMより低くすることで、BD-ROM上のファイルの置き換えを禁止し、新規ファイルの追加のみ可能になるため、セキュリティを高めることができる。
【０２５２】
なお、SHARED以下のACTIVEディレクトリの優先度をBD-ROMより高くするか低くするかの優先度付け情報が記載されたファイルをBD-ROM上、もしくはdiscIDディレクトリ以下のACTIVEディレクトリ内に予め用意しても良い。
【０２５３】
以上説明したVirtual Packageの構築は、複数のBD-ROMのVirtual Packageで共用するファイルを記録しているディレクトリのパス（図４９の例では“ROOT／organization＃1／SHSRED/contsID＃3”）、discIDにより特定されるBD-ROMのVirtual Package固有のファイルを記録しているディレクトリパス（図４９の例では“ROOT／organization＃1／disc＃1/contsID＃1”）、及びdiscIDを、引数として指定したアップデート要求メソッドを発行することで、実行される。
【０２５４】
以下、第７実施形態に係る再生装置の動作について説明する。先ず、Virtual Packageの構築の処理手順について説明する。
図５１は、第７実施形態に係るVirtual Package構築の処理手順を示すフローチャートである。本フローチャートと、図３６に示すフローチャートとの違いは、ステップＳ９８、ステップＳ９９を、ステップＳ１８１〜ステップＳ１８４に変更している点である。
【０２５５】
ステップＳ１８１では、複数のBD-ROMで共用するファイルの記録先として引数で指定されたLocal Storage上のディレクトリ以下のファイルを、SHAREDディレクトリに属するACTIVEディレクトリに移動する処理を行う。ファイルを移動する処理は、図４７に示す手順と同様である。ステップＳ１８２では、SHAREDディレクトリに属するACTIVEディレクトリ以下とBD-ROMで中間状態のファイル構成を構築する。ステップＳ１８３では、固有のファイルを記録先として引数で指定されたディレクトリ以下のファイルを、discIDディレクトリに属するACTIVEディレクトリに移動する処理を行う。ファイルを移動する処理は、図４７と同様である。ステップＳ１８４では、discIDディレクトリに属するACTIVEディレクトリ以下とステップＳ１８２で構築した中間状態のファイル構成とをマージしVirtual Packageを構築する。以上が、Virtual Packageの構築の処理手順についての説明である。
【０２５６】
なお、ステップＳ１８２の、SHAREDディレクトリに属するACTIVEディレクトリとBD-ROMとの中間状態ファイル構成構築ステップとステップＳ１８３のdiscIDディレクトリに属するACTIVEディレクトリへのファイル移動ステップは順序が逆になってもよい。
【０２５７】
続いて、図５１に示したステップＳ１８２における処理内容を、図５２を参照しながら、より詳しく説明する。SHAREDディレクトリに属するACTIVEディレクトリ内のファイルとBD-ROM上のファイルをマージする際、まず、ステップＳ１９１で、BD-ROMもしくはdiscIDディレクトリ内にある優先度情報が記されたファイルを読み出してSHAREDディレクトリとBD-ROMの優先度を確認する。SHAREDディレクトリの方が優先度が高ければ（ステップＳ１９１：Ｙｅｓ）ステップＳ１９２に移り、SHAREDディレクトリに属するACTIVEディレクトリ以下にあるファイルのファイルリストを取得する。その後、ステップＳ１９３〜ステップＳ１９５のループ処理を、BD-ROM上にある全てのファイルについて繰り返し実行する。
【０２５８】
ステップＳ１９４では、BD-ROM上にあるファイルのうち、未処理のものを処理対象としてファイル名を確認し、ステップＳ１９２で取得したファイルリストに、処理対象のファイルと同名のファイルがあるか否かを判定する。ファイルリストに処理対象のファイルと同名のファイルがなければ（ステップＳ１９３：Ｎｏ）、処理対象のファイルのファイル名をリストに追加する（ステップＳ１９５）。ステップＳ１９４およびステップＳ１９５の処理をBD-ROM上の全ファイルに適用し、全てのファイルのチェックが終われば（ステップＳ１９３：Ｙｅｓ）、得られたファイルリストを中間状態ファイル構成として処理を終了する。
【０２５９】
一方、ステップＳ１９１で、SHAREDディレクトリに比べ、BD-ROMの方が優先度が高いと判断された場合は、ステップＳ１９６に移り、BD-ROM上のファイル名のリストを取得する。
その後、ステップＳ１９７〜ステップＳ１９９のループ処理を、SHAREDディレクトリに属するACTIVEディレクトリ以下にある全てのファイルについて繰り返し実行する。
【０２６０】
ステップＳ１９８では、SHAREDディレクトリに属するACTIVEディレクトリ内のファイルのうち、未処理のものを処理対象としてファイル名を確認し、ステップＳ１９６で取得したファイルリストに、処理対象のファイルと同名のファイルがあるか否かを判定する。ファイルリストに処理対象のファイルと同名のファイルがなければ（ステップＳ１９８：Ｎｏ）、処理対象のファイルのファイル名をリストに追加する（ステップＳ１９９）。ステップＳ１９８およびステップＳ１９９の処理をSHAREDディレクトリに属するACTIVEディレクトリ内の全ファイルに適用し、全てのファイルのチェックが終われば（ステップＳ１９７：Ｙｅｓ）、得られたファイルリストを中間状態ファイル構成として処理を終了する。以上が、中間状態ファイル構成の構築手順についての説明である。
【０２６１】
なお、あらかじめデフォルトの優先順位を決めておき、優先度情報のファイルが無い場合はデフォルトの優先順位を利用することにしてもよい。
図５３は、図５１に示したステップＳ１８４における処理内容を、より詳しく示したフローチャートである。まず、ステップＳ２０１で、discIDディレクトリに属するACTIVEディレクトリ内にあるファイル名のリストを取得する。ステップＳ２０３では、図５１に示したステップＳ１８２で得られた中間状態ファイル構成のファイルリストにあるファイル名を確認し、同名ファイルがなければステップＳ２０４において、中間状態ファイル構成上のファイル名をリストに追加する。ステップＳ２０３およびステップＳ２０４の処理を中間状態ファイル構成上の全ファイルに適用し、ステップＳ２０２において全てのファイルのチェックが終わったと判断されると、得られたファイルリストをVirtual Packageのファイル構成リストとして処理を終了する。
以上が、中間状態ファイル構成を用いたVirtual Packageの構築の処理手順についての説明である。
【０２６２】
以上、本実施形態によれば、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築する際に、読み書き可能な記録媒体であるＨＤＤ上のファイルをACTIVEディレクトリに移動しているので、Virtual Package構築中にLocal Storage上の実体ファイルが、自アプリケーションまたは他のアプリケーションからの不正なファイルアクセスにより改変されるおそれがない。また、同一プロバイダに属するJava(登録商標)アプリケーション間で共通にアクセスできる位置にACTIVEディレクトリを設けることにより、異なるBD-ROM間でLocal Storage内のコンテンツを共有することが可能となり、ファイルサイズの大きなＡＶストリームなどをLocal Storage内に同一内容で複数保持する必要がなく、効率よくBD-ROM間で共有して利用することができる。
【０２６３】
(第８実施形態)
実施の形態８は、Virtual Packageを構築するLocal Storage上のファイルが改竄された場合に検知する方法について述べる。実施の形態８においては、実施の形態１と同様の部分については説明を省略し、実施の形態３と相違する部分についてのみ説明を行う。
【０２６４】
Virtual Packageを構築するLocal Storage上のファイルが改竄されると、Virtual Packageの再生中にプロバイダが予期しない動作をしてしまう可能性があり、改竄を検知する必要がある。
【０２６５】
そこで、本実施形態に係る再生装置は、改竄を検知するために、Virtual Packageの構築を行うときにマージ管理情報ファイルの改竄検査を行い、ＨＤＤ上のファイルを読み込むときにファイルの改竄検査を行う。
【０２６６】
Virtual File System部３８はVirtual Package構築を行った後、再生中にDVDライクモジュール２９ａ、Java(登録商標)プラットフォーム２９ｂ、Playback  Control  Engine３２等に対してLocal Storage上のファイルを供給することがある。それらのファイルはLocal Storage上に保存されているため、それらのモジュールにより利用される前に改竄されていないかを検査する必要がある。
【０２６７】
Virtual Packageを構成するLocal Storage上のファイルは、改竄検査の必要性を考えると２種類に分類できる。
一つ目は、ファイルサイズが小さく、ファイル全体の改竄検査を行っても再生機器の応答性に通常問題を起こさないデータである。たとえば「マージ管理情報ファイル」は通常ここに分類される。
【０２６８】
二つ目は、ファイルサイズが大きく、ファイル全体の改竄検査を行うのに時間がかかり、改竄検査により再生機器の応答性の問題を起こしうるデータである。たとえばＭＰＥＧストリームの「ＡＶデータ（M2TSファイル）」は通常ここに分類される。
【０２６９】
以降一つ目の分類のファイルについての改竄検査について述べる。最後に同じ方法を二つ目の分類のファイルに適応した場合の改竄検査の違いについて述べる。
図５４は、Virtual File System部３８がLocal Storage上のファイルを他のモジュールに供給するフローチャートを示す。ステップＳ２１１は、要求されたファイルがLocal Storage上に存在するかどうかを確認する処理である。ファイルがLocal Storage上に存在した場合（ステップＳ２１１：Ｙｅｓ）、ステップＳ２１２でLocal Storageよりファイルを取得する。その後、ステップＳ２１３では、マージ管理情報ファイルに対象のファイルのハッシュ値が記載されているかどうかを確認する。マージ管理情報ファイルにハッシュ値が記載されている場合（ステップＳ２１３：Ｙｅｓ）、
ステップＳ２１４で、ファイルのハッシュ値を計算し、算出した値とマージ管理情報ファイルに記載されている値とが一致するか否かを判定する。
算出した値とマージ管理情報ファイルに記載されている値とが一致しなければ（ステップＳ２１４：Ｎｏ）、実際にロードを行わない。ステップＳ２１１において、ファイルはLocal Storage上に存在しないと判定した場合（ステップＳ２１１：Ｎｏ）、ステップＳ２１５で、BD-ROMよりファイルを取得する。その後、ステップＳ２１６で、ファイルを実際にロードし、他のモジュールからファイルを利用可能にする。同様に、マージ管理情報ファイルにハッシュ値が記載されていない場合（ステップＳ２１３：Ｎｏ）、及び算出した値とマージ管理情報ファイルに記載されている値とが一致する場合は（ステップＳ２１４）にも、ステップＳ２１６によりファイルを実際にロードし、他のモジュールから利用可能にする。
【０２７０】
なお、Virtual File System部３８は複数回Local Storage上からファイルを読み取る場合、読み取るたびに改竄検査を行ってもよいし、改竄検査を行った後でLocal Storage上の前記情報が変更されないようにロックしてもよい。
【０２７１】
なお、Virtual File System部３８はあらかじめ他のモジュールにより利用されるファイルすべてまた一部の改竄検査を行い、内部で保持するか、ファイルをロックしてもよい。ファイルをLocal Storageから読み取った後、他のモジュールより利用される前に、ハッシュ値を計算し改竄検査を行うのであれば、どのような実現を行ってもよい。
【０２７２】
Virtual File System部３８は他のモジュールにより利用されるファイルが改竄されていることを検出した場合、誤作動を起こさないようにするために、再生を停止する。このとき、再生を停止する以外に、ユーザに対して通知を行ってもよいし、Java(登録商標)プラットフォーム２９ｂを通してJava(登録商標)アプリケーションに対して通知を行ってもよいし、マージ管理情報ファイルを無効にしてBD-ROMのみで再生をやりなおすとしてもよいし、あるいは、上記の処理を組み合わせて実行するとしてもよい。
【０２７３】
ファイルサイズが大きく、ファイル全体の改竄検査を行うのに時間がかかり、改竄検査により再生機器の応答性の問題を起こしうるデータに関しては、ファイル全体を暗号化して、ファイルが改竄されると復号化できないようにする方法がある。この場合は、暗号化されているファイルは一部改竄されると正式なファイルとして復号化できないので、マージ管理情報ファイルの中に暗号化されたファイルのハッシュ値が記載されてもVirtual File System部３８は無視するとしてもよい。
【０２７４】
なお、ファイルの一部だけを改竄検査をするようにしてもよいし、ファイルのサイズだけを確認するようにしてもよい。ファイル全体が暗号化されている場合、ファイル全体が入れ替えられるおそれがあるが、そのときはファイルサイズを確認することで簡単な改竄検査を行うことができる。なお、ハッシュ値が記載されていてもVirtual File System部３８が無視する条件として、ファイルのサイズがある値より大きい場合としてもよいし、マージ管理情報ファイルに含まれるファイル名の拡張子が指定された値、例えば.M2TSである場合としてもよいし、マージ管理情報ファイルに含まれるファイル名が特定のディレクトリ、例えば、STREAMディレクトリに含まれる場合としてもよい。
【０２７５】
以上、本実施形態によれば、複数の記録媒体の上のファイルをマージして構成するVirtual Packageを構築している際に、読み書き可能な記録媒体であるLocal Storage上の実体ファイルが改竄されたときに、ハッシュ値が正しいかを判断することにより実体ファイルの改竄を検出し再生を停止することによって、不正なファイルを利用することによる不具合の発生を未然に防止することができる。
【０２７６】
(第９実施形態)
実施の形態９では、Virtual Package構築処理の状態を画面表示する方法について述べる。実施の形態９においては、実施の形態３と同様の部分については説明を省略し、実施の形態３と相違する部分についてのみ説明を行う。
【０２７７】
図５５は、実施の形態９におけるVirtual Packageの構築処理中の表示を模式的に示す図である。
再生装置６１０は、再生装置の外観を模式的に現したものである。再生装置６１０が内蔵するBD-ROMドライブ６１１は、BD-ROMのローディング／イジェクトを行い、BD-ROMに対するアクセスを実行する。Virtual Package構築処理中を示す発色表示手段に対応する蛍光管表示６１２は、再生装置６１０の前面に位置し、Virtual Package構築処理中であることを表示の色（例えば橙色の表示を行う）により示す。認証等のVirtual Package構築にかかる処理の進み度合いを表示の割合で示す蛍光管表示６１３は、再生装置６１０の前面に位置し、Virtual Package構築にかかる処理の進み度合いを、蛍光管の表示割合で示す。ＴＶ等の表示装置６１４の入力部（図示せず）は、再生装置６１０の出力部（図示せず）と配線等を介して接続され、再生装置６１０からの出力映像を画面に表示する。再生装置６１０は、Virtual Package構築処理中であることを示す画面表示６１５を、ポップアップのメッセージパネル等として、コンテンツ再生画面の上に重畳して表示装置６１４に出力し、表示させる。
【０２７８】
ポップアップ表示された画面表示６１５は、認証等のVirtual Package構築にかかる処理の進み度合いを表示の割合で示す画面表示６１６を含み、これにより、Virtual Package構築にかかる処理の進み度合いを、表示装置６１４において画面上のバーの表示割合で視覚的に示す。
【０２７９】
図５６は、実施の形態９におけるVirtual Packageの構築失敗の表示を模式的に示す図である。図５５と同様の部分については説明を省略し、図５５と相違する部分についてのみ説明を行う。Virtual Package構築失敗を示す蛍光管表示６１７は、再生装置６１０の前面に位置し、Virtual Packageの構築に失敗したことを表示の色（例えば赤色の表示を行う）により示す。再生装置６１０は、Virtual Package構築に失敗した場合、Virtual Package構築失敗を示す画面表示６１８を、ポップアップのメッセージパネル等として、コンテンツ再生画面の上に重畳して表示装置６１４に出力し、表示させる。
【０２８０】
図５７は、実施の形態９におけるVirtual Packageの構築成功の表示を模式的に示す図である。図５５と同様の部分については説明を省略し、図５５と相違する部分についてのみ説明を行う。Virtual Package構築成功を示す蛍光管表示６１９は、再生装置６１０の前面に位置し、Virtual Packageの構築に成功したことを表示の色（例えば緑色の表示を行う）により示す。再生装置６１０は、Virtual Packageの構築に成功した場合、Virtual Package構築成功を示す画面表示６２０を、ポップアップのメッセージパネル等として、コンテンツ再生画面の上に重畳して表示装置６１４に出力し、表示させる。
【０２８１】
以下、Virtual Packageの構築の際に、構築処理の状態を画面表示する手順について説明する。図３２は、Virtual Packageの構築に関する表示を更新する処理手順を示すフローチャートである。
【０２８２】
本フローチャートは、図４４に示すフローチャートから、ステップＳ１３１〜ステップＳ１３５の処理手順を除き、ステップＳ２２１、ステップＳ２２２、及びステップＳ２２３の処理手順を追加したものである。
【０２８３】
ステップＳ２２１では、図５５に示すVirtual Package構築処理中の表示に切り換える。ステップＳ２２２では、図５６に示すVirtual Packageの構築失敗の表示に切り換える。ステップＳ２２３では、図５７に示すVirtual Packageの構築成功の表示に切り換える。なお、ステップＳ２２２またはステップＳ２２３の後に、一定時間画面上に表示を行った後、Virtual Packageの状態を示す画面表示の出力を終了して、通常のコンテンツ再生の表示を行ってもよい。
【０２８４】
図５９は、実施の形態９におけるLocal Storage上のコンテンツ一覧の表示を示す図である。図５５と同様の部分については説明を省略し、図５５と相違する部分についてのみ説明する。Local Storage上のコンテンツ一覧の画面表示６２１は、表示装置６１４に、Virtual Package管理テーブルに管理されているLocal Storage上のコンテンツ一覧を表示する画像である。コンテンツ一覧上でVirtual Package構築失敗したコンテンツを示す画面表示６２２は、Local Storage上のコンテンツ一覧の画面表示６２１において、署名の認証に失敗したコンテンツであることをアイコンでユーザに示す画面表示である。コンテンツ一覧上でVirtual Package構築成功したコンテンツを示す画面表示６２３は、Local Storage上のコンテンツ一覧の画面表示６２１において、署名の認証に成功したコンテンツであることをアイコンでユーザに示す画面表示である。
【０２８５】
なお、本実施形態では、Virtual Package構築に失敗したLocal Storage上のコンテンツをユーザに通知するようにしたが、システムが自動的に削除するようにしてもよい。
（その他の変形例）
尚、本発明を上記の実施形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０２８６】
（１）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０２８７】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０２８８】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
【０２８９】
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０２９０】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０２９１】
（２）第１〜第９実施形態では、仮想マシンのプログラミング言語としてJava(登録商標)を利用したが、Ｊａｖａ（登録商標）ではなく、ＵＮＩＸ（登録商標）ＯＳなどで使われているＢ−Ｓｈｅｌｌや、Ｐｅｒｌ Ｓｃｒｉｐｔ、ＥＣＭＡ  Ｓｃｒｉｐｔなど他のプログラミング言語であっても構わなく、言い換えれば、本発明はＪａｖａ（登録商標）に限定されるものでは無い。
【０２９２】
（３）第１〜第９実施形態では、Local Storage上のファイルを格納する構造をBD-ROMのディレクトリ構造と同じとしたが、ファイルの対応関係が明確に示されるのであれば、ディレクトリ構造が同じであることに限定されるものでは無い。
【０２９３】
（４）第１〜第９実施形態では、読み書き可能な記録媒体としてHDDを利用したが、読み書き可能な記録媒体としてフラッシュ等の記録媒体でも構わない。
（５）第１〜第９実施形態では、記録媒体を再生する再生機能を有する再生装置について説明したが、本発明は、再生機能のみを有するものではなく記録機能をも有する再生装置にも適用できることはもちろんのことである。
【０２９４】
（６）第１〜第９実施形態ではBD-ROMを再生する再生装置について説明をしたが、書き込み可能な光記録媒体に上述の実施の形態にて説明をしたBD-ROM上の必要なデータが記録されていた場合においても上述と同様の効果を奏することはもちろんのことである。
【０２９５】
更には光記録媒体以外にも可搬性がある記録媒体（例えばＳＤカードやコンパクトフラッシュ(登録商標)などの半導体メモリ）に上述の実施の形態にて説明をしたBD-ROM上の必要なデータが記録されていた場合においても上述と同様の効果を奏することはもちろんのことである。
【０２９６】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２９７】
本発明の適用例としては、読み出し専用記録媒体の記録内容を、読み書き可能な記録媒体の記録内容で拡張して再生するＨＤＤ搭載のBD-ROMプレーヤ等の再生装置等がある。
【符号の説明】
【０２９８】
１    BD-ROMドライブ
２    Read Buffer
３    デマルチプレクサ
４    ビデオデコーダ
５    ビデオプレーン
６    P-Graphicsデコーダ
７    Presentation Graphicsプレーン
８    合成部
９    フォントゼネレータ
１０    I-Graphicsデコーダ
１１    スイッチ
１２    Interactive Graphicsプレーン
１３    合成部
１４    CLUT部
１５    CLUT部
１６    オーディオデコーダ
１７    Network Device
１８    Local Storage
１９    Read Buffer
２０    デマルチプレクサ
２１    命令ROM
２２    ユーザイベント処理部
２３    PSRセット
２４    CPU
２５    シナリオメモリ
２６    Local Memory
２７    スイッチ
２９ａ  DVDライクモジュール
２９ｂ  Java(登録商標)プラットフォーム
３０    Java(登録商標)仮想マシン
３１    Presentation Engine
３２    Playback Control Engine
３３    モジュールマネージャ
３６    アプリケーションマネージャ
３７    ネットワーク管理モジュール
３８    Virtual File System部
３９    管理情報変換モジュール
４０    メソッド実行モジュール
４１    暗号化器
４２    復号化器
５２    ユーザクラスローダ
５３    メソッドエリア
５４    ワークメモリ
５５    スレッド
５６    スタック
２００、６１０
再生装置
３００    リモコン
４００    テレビ
６０１、６０２、６０３、６０６
登録情報
６０７    署名データ
６１１    BD-ROMドライブ
６１４    表示装置
【図１】
2010257473.tif 000003
【図２】
2010257473.tif 000004
【図３】
2010257473.tif 000005
【図４】
2010257473.tif 000006
【図５】
2010257473.tif 000007
【図６】
2010257473.tif 000008
【図７】
2010257473.tif 000009
【図８】
2010257473.tif 000010
【図９】
2010257473.tif 000011
【図１０】
2010257473.tif 000012
【図１１】
2010257473.tif 000013
【図１２】
2010257473.tif 000014
【図１３】
2010257473.tif 000015
【図１４】
2010257473.tif 000016
【図１５】
2010257473.tif 000017
【図１６】
2010257473.tif 000018
【図１７】
2010257473.tif 000019
【図１８】
2010257473.tif 000020
【図１９】
2010257473.tif 000021
【図２０】
2010257473.tif 000022
【図２１】
2010257473.tif 000023
【図２２】
2010257473.tif 000024
【図２３】
2010257473.tif 000025
【図２４】
2010257473.tif 000026
【図２５】
2010257473.tif 000027
【図２６】
2010257473.tif 000028
【図２７】
2010257473.tif 000029
【図２８】
2010257473.tif 000030
【図２９】
2010257473.tif 000031
【図３０】
2010257473.tif 000032
【図３１】
2010257473.tif 000033
【図３２】
2010257473.tif 000034
【図３３】
2010257473.tif 000035
【図３４】
2010257473.tif 000036
【図３５】
2010257473.tif 000037
【図３６】
2010257473.tif 000038
【図３７】
2010257473.tif 000039
【図３８】
2010257473.tif 000040
【図３９】
2010257473.tif 000041
【図４０】
2010257473.tif 000042
【図４１】
2010257473.tif 000043
【図４２】
2010257473.tif 000044
【図４３】
2010257473.tif 000045
【図４４】
2010257473.tif 000046
【図４５】
2010257473.tif 000047
【図４６】
2010257473.tif 000048
【図４７】
2010257473.tif 000049
【図４８】
2010257473.tif 000050
【図４９】
2010257473.tif 000051
【図５０】
2010257473.tif 000052
【図５１】
2010257473.tif 000053
【図５２】
2010257473.tif 000054
【図５３】
2010257473.tif 000055
【図５４】
2010257473.tif 000056
【図５５】
2010257473.tif 000057
【図５６】
2010257473.tif 000058
【図５７】
2010257473.tif 000059
【図５８】
2010257473.tif 000060
【図５９】
2010257473.tif 000061