説明

情報記録媒体およびその再生装置、再生方法。

【課題】 映像データ用BD−ROMで新たにXMLおよびスクリプトで記述したアプリケーションによる再生制御環境を導入するにあたって、タイトル等の管理単位内で動作するアプリケーションが悪意のある第三者により偽造・改竄されたものではないことを検証する仕組みが必要となる。
【解決手段】 アプリケーションを構成するファイル名とそれぞれのファイルのハッシュ値を記載したファイルリストに対して署名することで、アプリケーション実行時の妥当性を容易にかつ短期間で検証することが可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、宣言型言語で記述された再生制御環境のリソース管理を考慮した、BD−ROM等、映像データを記録した情報記録媒体、その再生装置及び再生方法に関し、特に、映像データとプログラムとを含むコンテンツの開発にプログラミング環境を導入する場合の改良に関する。
【背景技術】
【0002】
映像データを記録した情報記録媒体の代表格は、DVD(以下、SD−DVDまたは単にDVDと称する)である。以降、従来のDVDについて説明する。
【0003】
図1は、SD−DVDの構造を示した図である。図1の下段に示すように、DVDディスク上にはリードインからリードアウトまでの間に論理アドレス空間が設けられ、論理アドレス空間の先頭からファイルシステムのボリューム情報が記録され、続いて映像音声などのアプリケーションデータが記録されている。
【0004】
ファイルシステムとは、ISO9660やUDF(Universal Disc Format)のことであり、ディスク上のデータをディレクトリまたはファイルと呼ばれる単位で表現する仕組みである。日常使っているPC(パーソナルコンピュータ)の場合でも、FATまたはNTFSと呼ばれるファイルシステムを通すことにより、ディレクトリやファイルという構造でハードディスクに記録されたデータがコンピュータ上で表現され、ユーザビリティを高めている。 SD−DVDの場合、UDF及びISO9660両方を使用しており(両方を合わせて「UDFブリッジ」と呼ぶ事がある)、UDFまたはISO9660どちらのファイルシステムドライバによってもデータの読み出し(ここで取り扱うDVDはパッケージメディア用のROMディスクであり、物理的に書き込みが不可能である)ができるようになっている。
【0005】
DVD上に記録されたデータは、UDFブリッジを通して、図1左上に示すようなディレクトリまたはファイルとして見ることができる。ルートディレクトリ(図中「ROOT」)の直下に「VIDEO_TS」と呼ばれるディレクトリが置かれ、ここにDVDのアプリケーションデータが記録されている。アプリケーションデータは、複数のファイルとして記録され、主なファイルとして以下のものがある。
【0006】
VIDEO_TS.IFO ディスク再生制御情報ファイル
VTS_01_0.IFO ビデオタイトルセット#1再生制御情報ファイル
VTS_01_0.VOB ビデオタイトルセット#1ストリームファイル
.....
拡張子として2つの種類が存在する。「IFO」は再生制御情報が記録されたファイルであって、「VOB」はAVデータであるMPEGストリームが記録されたファイルである。再生制御情報とは、DVDで採用されたインタラクティビティ(ユーザの操作に応じて再生を動的に変化させる技術)を実現するための情報や、メタデータのようなタイトルやAVストリームに付属する情報などのことである。また、DVDでは一般的に再生制御情報のことをナビゲーション情報と呼ぶことがある。
【0007】
再生制御情報ファイルは、ディスク全体を管理する「VIDEO_TS.IFO」と、個々のビデオタイトルセット(DVDでは複数のタイトル、言い換えれば異なる映画や異なるバージョンの映画を1枚のディスクに記録することが可能である。)毎の再生制御情報である「VTS_01_0.IFO」がある。ここで、ファイル名ボディにある「01」はビデオタイトルセットの番号を示しており、例えば、ビデオタイトルセット#2の場合は、「VTS_02_0.IFO」となる。
【0008】
図1の右上部は、DVDのアプリケーション層でのDVDナビゲーション空間であり、前述した再生制御情報が展開された論理構造空間である。「VIDEO_TS.IFO」内の情報は、VMGI(VIDEO Manager Information)として、「VTS_01_0.IFO」または、他のビデオタイトルセット毎に存在する再生制御情報はVTSI(Video Title Set Information)としてDVDナビゲーション空間に展開される。
【0009】
VTSIの中にはPGC(Program Chain)と呼ばれる再生シーケンスの情報であるPGCI(Program Chain Information)が記述されている。PGCIは、Cellの集合とコマンドと呼ばれる一種のプログラミング情報によって構成されている。Cell自身はVOB(Video Objectの略であり、MPEGストリームを指す)の一部区間または全部区間の集合であり、Cellの再生は、当該VOBのCellによって指定された区間を再生することを意味している。
【0010】
コマンドは、DVDの仮想マシンによって処理されるものであり、ブラウザ上で実行されるJava(登録商標)スクリプトなどに近いものである。しかしながらJava(登録商標)スクリプトが論理演算の他にウィンドウやブラウザの制御(例えば、新しいブラウザのウィンドを開くなど)を行うのに対して、DVDのコマンドは、論理演算の他にAVタイトルの再生制御、例えば、再生するチャプタの指定などを実行するだけのものである点で異なっている。
【0011】
Cellはディスク上に記録されているVOBの開始及び終了アドレス(論理アドレス)をその内部情報として有しており、プレーヤは、Cellに記述されたVOBの開始及び終了アドレス情報を使ってデータの読み出し、再生を実行する。
【0012】
図1はAVストリーム中に埋め込まれているナビゲーション情報を説明する概略図である。SD−DVDの特長であるインタラクティビティは前述した「VIDEO_TS.IFO」や「VTS_01_0.IFO」などに記録されているナビゲーション情報だけによって実現されているのではなく、幾つかの重要な情報はナビゲーション・パック(ナビパックまたは、NV_PCKと称する)と呼ばれる専用キャリアを使いVOB内に映像、音声データと一緒に多重化されている。
【0013】
ここでは簡単なインタラクティビティの例としてメニューを説明する。メニュー画面上には、幾つかのボタンが現れ、夫々のボタンには当該ボタンが選択実行された時の処理が定義されている。また、メニュー上では一つのボタンが選択されており(ハイライトによって選択ボタン上に半透明色がオーバーレイされている)、ユーザは、リモコンの上下左右キーを使って、選択状態のボタンを上下左右の何れかのボタンに移動させることができる。リモコンの上下左右キーを使って、選択実行したいボタンまでハイライトを移動させ、決定する(決定キーを押す)ことによって対応するコマンドのプログラムが実行される。一般的には対応するタイトルやチャプタの再生がコマンドによって実行されている。
【0014】
図2の左上部はNV_PCK内の概要を示している。
NV_PCK内には、ハイライトカラー情報と個々のボタン情報などが含まれている。ハイライトカラー情報には、カラーパレット情報が記述され、オーバーレイ表示されるハイライトの半透明色が指定される。ボタン情報には、個々のボタンの位置情報である矩形領域情報と、当該ボタンから他のボタンへの移動情報(ユーザの上下左右キー操作夫々に対応する移動先ボタンの指定)と、ボタンコマンド情報(当該ボタンが決定された時に実行されるコマンド)が記述されている。
【0015】
メニュー上のハイライトは、図2の中央右上部に示すように、オーバーレイ画像として作られる。オーバーレイ画像は、ボタン情報の矩形領域情報にカラーパレット情報の色をつけた物である。このオーバーレイ画像は右部に示す背景画像と合成されて画面上に表示される。
【0016】
上述のようにして、DVDではメニューを実現している。また、何故、ナビゲーションデータの一部をNV_PCKを使ってストリーム中に埋め込んでいるのは、ストリームと同期して動的にメニュー情報を更新、例えば、映画再生中の途中5分〜10分の間にだけメニューが表示されるなど、同期タイミングが問題となりやすいアプリケーションの場合でも、問題なく実現できるようにしたためである。
【0017】
図3は、DVDのVOBのイメージである。図に示すように、映像、音声、字幕などのデータ(A段)は、MPEGシステム(ISO/IEC13818−1)規格に基づいて、パケット及びパック化し(B段)、夫々を多重化して1本のMPEGプログラムストリームにしている(C段)。また、前述した通りインタラクティブを実現するためのボタンコマンドを含んだNV_PCKも一緒に多重化をされている。
【0018】
MPEGシステムの多重化の特徴は、多重化する個々のデータは、そのデコード順に基づくビット列になっているが、多重化されるデータ間、即ち、映像、音声、字幕の間は必ずしも再生順、言い換えればデコード順に基づいてビット列が形成されているわけではない。これはMPEGシステムストリームのデコーダモデル(一般にSystem Target Decoder、またはSTDと呼ばれる(図3のD段))が多重化を解いた後に個々のエレメンタリーストリームに対応するデコーダバッファを持ち、デコードタイミングまでに一時的にデータを蓄積している事に由来している。このデコーダバッファは、個々のエレメンタリーストリーム毎にサイズが異なり、映像に対しては、232kB、音声に対しては4kB、字幕に対しては52kBを夫々有している。このため、各デコーダバッファへのデータ入力タイミングは個々のエレメンタリストリームで異なるため、MPEGシステムストリームとしてビット列を形成する順番と表示(デコード)されるタイミングにずれが生じている。
【0019】
即ち、映像データと並んで多重化されている字幕データが必ずしも同一タイミングでデコードされているわけでは無い。
【0020】
かかるDVDの構成は、以下の特許文献1に記載されている。
【特許文献1】特許第2813245号公報
【発明の開示】
【発明が解決しようとする課題】
【0021】
ところで次世代の情報記録媒体であるBD−ROMは、上述したようなプログラム(ナビゲーションコマンド)ではなく、XMLのような宣言型言語で記述されたデータとスクリプトによるプログラムを含むアプリケーションの記録が予定されている。
【0022】
映像データと前記アプリケーションからなるコンテンツを情報記録媒体に記録し販売する場合、悪意のある第三者により偽造または改竄された情報記録媒体が流通する可能性がある。また前記アプリケーションをインターネット上のコンテンツサーバから更新または追加することを可能とした場合、ネットワーク上を流れるアプリケーションが改竄されたりコンテンツサーバが詐称されユーザが悪意のあるアプリケーションをダウンロードしてしまう可能性がある。このような悪意のある第三者によって偽造または改竄されたプログラムをプレーヤで実行した場合、プレーヤのシステムが破壊されたり、正規の情報記録媒体に記録された保護すべき映像データが盗まれたり改竄されたりするなどの深刻な問題が発生する。
【課題を解決するための手段】
【0023】
上記課題を解決するため本発明にかかる情報記録媒体には、アプリケーションを構成するファイル名とそれぞれのファイルのハッシュ値が記載されるファイルリストとそのファイルリストに対する署名と記録される。アプリケーション実行時には前記署名の妥当性を検証し、前記ファイルリストに名前が記載されたファイルのハッシュ値を計算し、その値が前記ファイルリストに記載された値と同一であることを確認する。
【0024】
上述した構成により、実行するアプリケーションが、正規のスタジオが作成したアプリケーションであるのか、それ以外のアプリケーション、例えば悪意のある第三者がアプリケーションを偽造または改竄したアプリケーションであるのかを判別可能である。
【0025】
これにより正規のStudioで作成され改竄されていないアプリケーション以外は、深刻な問題を起こしかねないとして実行を拒否したり、利用できる機能やアクセスできるリソースを制限することが可能となる。
【0026】
本発明は、デジタルストリームを含む1つ以上のタイトルと宣言型言語で記述され1つ以上のファイルから構成される1つ以上のアプリケーションとが記録された情報記録媒体であって、前記情報記録媒体には、アプリケーションを構成するファイル名一覧を記述したファイルリストと前記ファイルリストへの署名データとがアプリケーション毎に記録され、前記ファイルリストはアプリケーションを構成する各ファイルのハッシュ値と前記の署名データのファイル名とを含むことを特徴とする情報記録媒体を提供する。
【0027】
本発明の一実施態様において、前記ファイルリストは対応する前記タイトル毎に関連付けて記録される。
【0028】
本発明の一実施態様において、前記ファイルリストには、前記アプリケーションが実行できる機能を記述した実行権限情報のファイル名とそのハッシュ値がさらに記録される。
【0029】
本発明の一実施態様において、前記情報記録媒体には、前記ファイルリストにファイル名を記載されたファイル本体をそれぞれ格納したアーカイブファイルが記録されており、前記ファイルリストには前記アーカイブファイルへのリンクがさらに記載されている。
【0030】
本発明はまた、デジタルストリームを含むタイトルの再生と宣言型言語で記述され1つ以上のファイルから構成されるアプリケーションの実行とを同時に行う再生装置であって、複数タイトル間の分岐を制御するタイトル制御部と、1つのタイトルに帰属するデジタルストリームを再生する再生制御部と、タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認部と、前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込部と、を備えることを特徴とする再生装置を提供する。
【0031】
本発明の一実施態様において、前述の再生装置は、前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理部をさらに備える。
【0032】
本発明はまた、デジタルストリームを含むタイトルの再生とアプリケーションの実行とを同時に実行させるプログラムであって、複数タイトル間の分岐を制御するタイトル制御ステップと、1つのタイトルに帰属するデジタルストリームを再生する再生制御ステップと、タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認ステップと、前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込ステップと、をコンピュータに実行させることを特徴とするプログラムを提供する。
【0033】
本発明の一実施態様において、前述のプログラムは、前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理ステップをさらに含む。
【0034】
本発明はまた、デジタルストリームを含むタイトルの再生とアプリケーションの実行とを同時に実行させる再生方法であって、複数タイトル間の分岐を制御するタイトル制御ステップと、1つのタイトルに帰属するデジタルストリームを再生する再生制御ステップと、タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認ステップと、前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込ステップと、を含むことを特徴とする再生方法を提供する。
【0035】
本発明の一実施態様において、上述の再生方法は、前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理ステップをさらに含む。
【発明の効果】
【0036】
上述した構成により、実行するアプリケーションが、正規のスタジオが作成したアプリケーションであるのか、それ以外のアプリケーション、例えば悪意のある第三者がアプリケーションを偽造または改竄したアプリケーションであるのかを判別可能である。
【0037】
これにより正規のStudioで作成され改竄されていないアプリケーション以外は、深刻な問題を起こしかねないとして実行を拒否したり、利用できる機能やアクセスできるリソースを制限することが可能となる。
【発明を実施するための最良の形態】
【0038】
(実施の形態1)
まず最初に本発明の第1の実施の形態について説明する。
【0039】
(ディスク上の論理データ構造)
図4は、BD−ROM(以降、「BD」と称する場合もある)の構成、特にディスク媒体であるBDディスク(104)と、ディスクに記録されているデータ(101、102、103)の構成を示す図である。BDディスク(104)に記録されるデータは、AVデータ(103)と、AVデータに関する管理情報及びAV再生シーケンスなどのBD管理情報(102)と、インタラクティブを実現するBD再生プログラム(101)である。本実施の形態では、映画などのAVコンテンツを再生するためのAVアプリケーションを主眼においてのBDディスクの説明を行うが、BDディスクをCD−ROMやDVD−ROMの様にコンピュータ用途の記録媒体としてしようすることも当然のことながら可能である。
【0040】
図5は、上述したBDディスクに記録されている論理データを示した図である。BDディスクは、他の光ディスク、例えばDVDやCDなどと同様にその内周から外周に向けてらせん状に記録領域を持ち、内周のリード・インと外周のリード・アウトの間に論理データを記録できる論理アドレス空間を有している。また、リード・インの内側にはBCA(Burst Cutting Area)と呼ばれるドライブでしか読み出せない特別な領域がある。この領域はアプリケーションから読み出せないため、例えば著作権保護技術などに利用されることがよくある。
【0041】
論理アドレス空間には、ファイルシステム情報(ボリューム)を先頭に映像データなどのアプリケーションデータが記録されている。ファイルシステムとは従来技術で説明した通り、UDFやISO9660などのことであり、通常のPCと同じように記録されている論理データをディレクトリ、ファイル構造を使って読み出しする事が可能になっている。
【0042】
本実施の形態の場合、BDディスク上のディレクトリ、ファイル構造は、ルートディレクトリ(ROOT)直下にBDVIDEOディレクトリが置かれている。このディレクトリはBD−ROMで扱うAVコンテンツや管理情報などのデータ(図4で説明した101、102、103)が記録されているディレクトリである。
【0043】
BDVIDEOディレクトリの下には、次の7種類のファイルが記録されている。
BD.INFO(ファイル名固定)
「BD管理情報」の一つであり、BDディスク全体に関する情報を記録したファイルである。BDプレーヤは最初にこのファイルを読み出す。
【0044】
BD.PROG(ファイル名固定)
「BD再生プログラム」の一つであり、BDディスク全体に関わるプログラムを記録したファイルである。
【0045】
XXX.PL(「XXX」は可変、拡張子「PL」は固定)
「BD管理情報」の一つであり、シナリオを記録するプレイリスト(Play List)情報を記録したファイルである。プレイリスト毎に1つのファイルを持っている。
【0046】
XXX.PROG(「XXX」は可変、拡張子「PL」は固定)
「BD再生プログラム」の一つであり、前述したプレイリスト毎のプログラムを記録したファイルである。プレイリストとの対応はファイルボディ名(「XXX」が一致する)によって識別される。
【0047】
YYY.VOB(「YYY」は可変、拡張子「VOB」は固定)
「AVデータ」の一つであり、VOB(従来例で説明したVOBと同じ)を記録したファイルである。VOB毎に1つのファイルを持っている。
【0048】
YYY.VOBI(「YYY」は可変、拡張子「VOBI」は固定)
「BD管理情報」の一つであり、AVデータであるVOBに関わる管理情報を記録したファイルである。VOBとの対応はファイルボディ名(「YYY」が一致する)によって識別される。
【0049】
ZZZ.PNG(「ZZZ」は可変、拡張子「PNG」は固定)
「AVデータ」の一つであり、字幕及びメニューを構成するためのイメージデータPNG(W3Cによって標準化された画像フォーマットであり「ピング」と読む)を記録したファイルである。1つのPNGイメージ毎に1つのファイルを持つ。
【0050】
(プレーヤの構成)
次に、前述したBDディスクを再生するプレーヤの構成について図6及び図7を用いて説明する。
【0051】
図6は、プレーヤの大まかな機能構成を示すブロック図である。
BDディスク(201)上のデータは、光ピックアップ(202)を通して読み出される。読み出されたデータは夫々のデータの種類に応じて専用のメモリに記録される。BD再生プログラム(「BD.PROG」または「XXX.PROG」ファイルの中身)はプログラム記録メモリ(203)に、BD管理情報(「BD.INFO」、「XXX.PL」または「YYY.VOBI」)は管理情報記録メモリ(204)に、AVデータ(「YYY.VOB」または「ZZZ.PNG」)はAV記録メモリ(205)に夫々記録される。
【0052】
プログラム記録メモリ(203)に記録されたBD再生プログラムはプログラム処理部(206)によって、管理情報記録メモリ(204)に記録されたBD管理情報は管理情報処理部(207)によって、また、AV記録メモリ(205)に記録されたAVデータはプレゼンテーション処理部(208)によって夫々処理される。
【0053】
プログラム処理部(206)は、管理情報処理部(207)より再生するプレイリストの情報やプログラムの実行タイミングなどのイベント情報を受け取りプログラムの処理を行う。また、プログラムでは再生するプレイリストを動的に変える事が可能であり、この場合は管理情報処理部(207)に対してプレイリストの再生命令を送ることで実現する。プログラム処理部(206)は、ユーザからのイベント、即ちリモコンキーからのリクエストを受け、ユーザイベントに対応するプログラムがある場合は、実行処理する。
【0054】
管理情報処理部(207)は、プログラム処理部(206)の指示を受け、対応するプレイリスト及びプレイリストに対応したVOBの管理情報を解析し、プレゼンテーション処理部(208)に対象となるAVデータの再生を指示する。また、管理情報処理部(207)は、プレゼンテーション処理部(208)より基準時刻情報を受け取り、時刻情報に基づいてプレゼンテーション処理部(208)にAVデータ再生の停止指示を行い、また、プログラム処理部(206)に対してプログラム実行タイミングを示すイベントを生成する。
【0055】
プレゼンテーション処理部(208)は、映像、音声、字幕/イメージ夫々に対応するデコーダを持ち、管理情報処理部(207)からの指示に従い、AVデータのデコード及び出力を行う。映像データ及び字幕/イメージの場合は、デコード後に夫々の専用プレーン、ビデオプレーン(210)及びイメージプレーン(209)に描画され、合成処理部(211)によって映像の合成処理が行われTVなどの表示デバイスへ出力される。
【0056】
図6で示すように、BDプレーヤは図4で示したBDディスクに記録されているデータ構成に基づいた構成をとっている。
【0057】
図7は前述したプレーヤ構成を詳細化したブロック図である。図7では、AV記録メモリ(205)はイメージメモリ(308)とトラックバッファ(309)に、プログラム処理部(206)はプログラムプロセッサ(302)とUOPマネージャ(303)に、管理情報処理部(207)はシナリオプロセッサ(305)とプレゼンテーションコントローラ(306)に、プレゼンテーション処理部(208)はクロック(307)、デマルチプレクサ(310)、イメージプロセッサ(311)、ビデオプロセッサ(312)とサウンドプロセッサ(313)に夫々対応/展開している。
【0058】
BDディスク(201)から読み出されたVOBデータ(MPEGストリーム)はトラックバッファ(309)に、イメージデータ(PNG)はイメージメモリ(308)に夫々記録される。デマルチプレクサ(310)がクロック(307)の時刻に基づき、トラックバッファ(309)に記録されたVOBデータを抜き出し、映像データをビデオプロセッサ(312)に音声データをサウンドプロセッサ(313)に夫々送り込む。ビデオプロセッサ(312)及びサウンドプロセッサ(313)は夫々MPEGシステム規格で定める通りに、デコーダバッファとデコーダから夫々構成されている。即ち、デマルチプレクサ(310)から送りこまれる映像、音声夫々のデータは、夫々のデコーダバッファに一時的に記録され、クロック(307)に従い個々のデコーダでデコード処理される。
【0059】
イメージメモリ(308)に記録されたPNGは、次の2つの処理方法がある。イメージデータが字幕用の場合は、プレゼンテーションコントローラ(306)によってデコードタイミングが指示される。クロック(307)からの時刻情報をシナリオプロセッサ(305)が一旦受け、適切な字幕表示が行えるように、字幕表示時刻(開始及び終了)になればプレゼンテーションコントローラ(306)に対して字幕の表示、非表示の指示を出す。プレゼンテーションコントローラ(306)からデコード/表示の指示を受けたイメージプロセッサ(311)は対応するPNGデータをイメージメモリ(308)から抜き出し、デコードし、イメージプレーン(314)に描画する。
【0060】
次に、イメージデータがメニュー用の場合は、プログラムプロセッサ(302)によってデコードタイミングが指示される。プログラムプロセッサ(302)が何時イメージのデコードを指示するかは、プログラムプロセッサ(302)が処理しているBDプログラムに因るものであって一概には決まらない。
【0061】
イメージデータ及び映像データは、図6で説明したように夫々デコード後にイメージプレーン(314)、ビデオプレーン(315)に記録され、合成処理部(316)によって合成出力される。
【0062】
BDディスク(201)から読み出された管理情報(シナリオ、AV管理情報)は、管理情報記録メモリ(304)に記録されるが、シナリオ情報(「BD.INFO」及び「XXX.PL」)はシナリオプロセッサ(305)によって読み出され処理される。また、AV管理情報(「YYY.VOBI」)はプレゼンテーションコントローラ(306)によって読み出され処理される。
【0063】
シナリオプロセッサ(305)は、プレイリストの情報を解析し、プレイリストによって参照されているVOBとその再生位置をプレゼンテーションコントローラ(306)に指示し、プレゼンテーションコントローラ(306)は対象となるVOBの管理情報(「YYY.VOBI」)を解析して、対象となるVOBを読み出すようにドライブコントローラ(317)に指示を出す。
【0064】
ドライブコントローラ(317)はプレゼンテーションコントローラ(306)の指示に従い、光ピックアップを移動させ、対象となるAVデータの読み出しを行う。読み出されたAVデータは、前述したようにイメージメモリ(308)またはトラックバッファ(309)に記録される。
【0065】
また、シナリオプロセッサ(305)は、クロック(307)の時刻を監視し、管理情報で設定されているタイミングでイベントをプログラムプロセッサ(302)に投げる。
【0066】
プログラム記録メモリ(301)に記録されたBDプログラム(「BD.PROG」または「XXX.PROG」)は、プログラムプロセッサ302によって実行処理される。プログラムプロセッサ(302)がBDプログラムを処理するのは、シナリオプロセッサ(305)からイベントが送られてきた場合か、UOPマネージャ(303)からイベントが送られてきた場合である。UOPマネージャ(303)は、ユーザからリモコンキーによってリクエストが送られてきた場合に、プログラムプロセッサ(302)にイベントを生成する。
【0067】
(アプリケーション空間)
図8は、BD−ROMのアプリケーション空間を示す図である。
【0068】
BD−ROMのアプリケーション空間では、プレイリスト(PlayList)が一つの再生単位になっている。プレイリストはセル(Cell)の再生シーケンスから構成される静的なシナリオと、プログラムによって記述される動的なシナリオを有している。プログラムによる動的なシナリオが無い限り、プレイリストは個々のセルを順に再生するだけであり、また、全てのセルの再生を終了した時点でプレイリストの再生は終了する。一方で、プログラムは、プレイリストを超えての再生記述や、ユーザ選択またはプレーヤの状態によって再生する対象を動的に変えることが可能である。典型的な例としてはメニューがあげられる。BD−ROMの場合、メニューとはユーザの選択によって再生するシナリオ、即ちプレイリストを動的に選択することである。
【0069】
ここで言うプログラムは、時間イベントまたはユーザイベントによって実行されるイベントハンドラの事である。
【0070】
時間イベントは、プレイリスト中に埋め込まれた時刻情報に基づいて生成されるイベントである。図7で説明したシナリオプロセッサ(305)からプログラムプロセッサ(302)に送られるイベントがこれに相当する。時間イベントが発行されると、プログラムプロセッサ(302)はIDによって対応付けられるイベントハンドラを実行処理する。前述した通り、実行されるプログラムが他のプレイリストの再生を指示することが可能であり、この場合には、現在再生されているプレイリストの再生は中止され、指定されたプレイリストの再生へと遷移する。
【0071】
ユーザイベントは、ユーザのリモコンキー操作によって生成されるイベントである。ユーザイベントは大きく2つのタイプに分けられる。一つ目は、カーソルキー(「上」「下」「左」「右」キー)または「決定」キーの操作によって生成されるメニュー選択のイベントである。メニュー選択のイベントに対応するイベントハンドラはプレイリスト内の限られた期間でのみ有効であり(プレイリストの情報として、個々のイベントハンドラの有効期間が設定されている)、リモコンの「上」「下」「左」「右」キーまたは「決定」キーが押された時に有効なイベントハンドラを検索して、有効なイベントハンドラがある場合は当該イベントハンドラが実行処理される。他の場合は、メニュー選択のイベントは無視されることになる。
【0072】
二つ目のユーザイベントは、「メニュー」キーの操作によって生成されるメニュー呼び出しのイベントである。メニュー呼び出しのイベントが生成されると、グローバルイベントハンドラが呼ばれる。グローバルイベントハンドラはプレイリストに依存せず、常に有効なイベントハンドラである。この機能を使うことにより、DVDのメニューコール(タイトル再生中に音声、字幕メニューなどを呼び出し、音声または字幕を変更後に中断した地点からのタイトル再生を実行する)を実装することができる。
【0073】
プレイリストで静的シナリオを構成する単位であるセル(Cell)はVOB(MPEGストリーム)の全部または一部の再生区間を参照したものである。セルはVOB内の再生区間を開始、終了時刻の情報として持っている。個々のVOBと一対になっているVOB管理情報(VOBI)は、その内部にタイムマップ(Time MapまたはTM)を有しており、このタイムマップによって前述したVOBの再生、終了時刻をVOB内(即ち対象となるファイル「YYY.VOB」内)での読み出し開始アドレス及び終了アドレスを導き出すことが可能である。なおタイムマップの詳細は後述する。
【0074】
(VOBの詳細)
図9は、本実施の形態で使用するMPEGストリーム(VOB)の構成図である。図9に示すように、VOBは複数のVOBU(Video Object Unit)によって構成されている。VOBUは、MPEGビデオストリームで言うGOP(Group Of Pictures)を基準として、音声データも含んだ多重化ストリームとしての一再生単位である。VOBUは0.4秒から1.0秒の時間を持ち、通常は0.5秒の再生時間を持っている。これはMPEGのGOPの構造が通常は15フレーム/秒(NTSCの場合)によって導かれるものである。
【0075】
VOBUは、その内部にビデオパック(V_PCK)とオーディオパック(A_PCK)を有している。各パックは1セクタ、本実施の形態の場合は2kB単位で構成されている。
【0076】
図10は、パックの構成を示した図である。
図10に示すように、ビデオデータ及びオーディオデータといったエレメンタリデータは、ペイロードと呼ばれるパケットのデータ格納領域に先頭から順次入れられていく。ペイロードにはパケットヘッダが付けられ1つのパケットを構成する。パケットヘッダには、ペイロードに格納してあるデータがどのストリームなのか、ビデオなのかオーディオなのか、また、ビデオまたはオーディオが夫々複数ストリームある場合は、どのストリームのデータなのかを識別するためのID(stream_id)と、当該ペイロードのデコード及び表示時刻情報であるタイムスタンプDTS及びPTSが夫々記録されている。PTS/DTSは必ずしも全てのパケットヘッダに記録されている訳ではなく、MPEGによって記録するルールが規定されている。ルールの詳細についてはMPEGシステム(ISO/IEC13818−1)規格書に記述されているので省略する。
【0077】
パケットには更にヘッダ(パックヘッダ)が付けられ、パックを構成する。パックヘッダには、当該パックがいつデマルチプレクサを通過し、個々のエレメンタリストリームのデコーダバッファに入力されるかを示すタイムスタンプSCR(System Clock Reference)が記録されている。
【0078】
(VOBのインターリーブ記録)
次に図11及び図12を用いてVOBファイルのインターリーブ記録について説明する。
【0079】
図11上段は、前述したプレーヤ構成図の一部である。図の通り、BDディスク上のデータは、光ピックアップを通してVOB即ちMPEGストリームであればトラックバッファへ入力され、PNG即ちイメージデータであればイメージメモリへと入力される。
【0080】
トラックバッファはFIFOであり、入力されたVOBのデータは入力された順にデマルチプレクサへと送られる。この時、前述したSCRに従って個々のパックはトラックバッファから引き抜かれデマルチプレクサを介してビデオプロセッサまたはサウンドプロセッサへとデータが送り届けられる。一方で、イメージデータの場合は、どのイメージを描画するかはプレゼンテーションコントローラによって指示される。また、描画に使ったイメージデータは、字幕用イメージデータの場合は同時にイメージメモリから削除されるが、メニュー用のイメージデータの場合は、イメージメモリ内にそのまま残される。これはメニューの描画はユーザ操作に依存するところがあるため、同一イメージを複数回描画する可能性があるためである。
【0081】
図11下段は、BDディスク上でのVOBファイル及びPNGファイルのインターリーブ記録を示す図である。一般的にROM、例えばCD−ROMやDVD−ROMの場合、一連の連続再生単位となるAVデータは連続記録されている。これは、連続記録されている限り、ドライブは順次データを読み出しプレーヤ側に送り届けるだけで良いが、連続データが分断されてディスク上に離散配置されている場合は、個々の連続区間の間でシーク操作が入ることになり、この間データの読み出しが止まることになり、データの供給が止まる可能性があるからである。BD−ROMの場合も同様に、VOBファイルは連続領域に記録することができる方が望ましいが、例えば字幕データのようにVOBに記録されている映像データと同期して再生されるデータがあり、VOBファイルと同様に字幕データも何らかの方法によってBDディスクから読み出す事が必要になる。
【0082】
字幕データの読み出し方法の一手段として、VOBの再生開始前に一まとめで字幕用のイメージデータ(PNGファイル)を読み出してしまう方法がある。しかしながら、この場合には一時記録に使用する大量のメモリが必要となり、非現実的である。
【0083】
そこで、本実施の形態では、VOBファイルを幾つかのブロックに分けて、イメージデータとインターリーブ記録する方式を使用している。図11下段はそのインターリーブ記録を説明した図である。VOBファイルとイメージデータを適切にインターリーブ配置することで、前述したような大量の一時記録メモリ無しに、必要なタイミングでイメージデータをイメージメモリに格納することが可能になる。しかしながらイメージデータを読み出している際には、VOBデータの読み込みは当然のことながら停止することになる。
【0084】
図12は、この問題を解決するトラックバッファを使ったVOBデータ連続供給モデルを説明する図である。
【0085】
既に説明したように、VOBのデータは、一旦トラックバッファに蓄積される。トラックバッファへのデータ入力レートとトラックバッファからのデータ出力レートの間に差を設けると、BDディスクからデータを読み出し続けている限り、トラックバッファのデータ蓄積量は増加をしていくことになる。ここでトラックバッファへの入力レートをVa、トラックバッファからの出力レートをVbとする。図12の上段に記すようにVOBの一連続記録領域が論理アドレスの”a1”から”a2”まで続くとする。”a2”から”a3”の間は、イメージデータが記録されていて、VOBデータの読み出しが行えない区間であるとする。
【0086】
図12の下段は、トラックバッファの内部を示す図である。横軸が時間、縦軸がトラックバッファ内部に蓄積されているデータ量を示している。時刻”t1”がVOBの一連続記録領域の開始点である”a1”の読み出しを開始した時刻を示している。この時刻以降、トラックバッファにはレートVa−Vbでデータが蓄積されていくことになる。このレートは言うまでもなくトラックバッファの入出力レートの差である。時刻”t2”は一連続記録領域の終了点である”a2”のデータを読み込む時刻である。即ち時刻”t1”から”t2”の間レートVa−Vbでトラックバッファ内はデータ量が増加していき、時刻”t2”でのデータ蓄積量はB(t2)は下式によって求めることができる。
【0087】
B(t2) = (Va−Vb)×(t2−t1) (式1)
この後、BDディスク上のアドレス”a3”まではイメージデータが続くため、トラックバッファへの入力は0となり、出力レートである”−Vb”でトラックバッファ内のデータ量は減少していくことになる。これは読み出し位置”a3”まで、時刻でいう”t3”までになる。
【0088】
ここで大事なことは、時刻”t3”より前にトラックバッファに蓄積されているデータ量が0になると、デコーダへ供給するVOBのデータが無くなってしまい、VOBの再生がストップしてしまう可能性がある。しかしながら、時刻”t3”でトラックバッファにデータが残っている場合には、VOBの再生がストップすることなく連続できることを意味している。
【0089】
この条件は下式によって示すことができる。
B(t2) ≧ −Vb×(t3−t2) (式2)
即ち、式2を満たすようにイメージデータの配置を決めればよい事になる。
【0090】
(ナビゲーションデータ構造)
図13から図19を用いて、BD−ROMのナビゲーションデータ(BD管理情報)構造について説明をする。図13は、VOB管理情報情報ファイル(”YYY.VOBI”)の内部構造を示した図である。
【0091】
VOB管理情報は、当該VOBのストリーム属性情報(Attribute)とタイムマップ(TMAP)を有している。ストリーム属性は、ビデオ属性(Video)、オーディオ属性(Audio#0〜Audio#m)個々に持つ構成となっている。特にオーディオストリームの場合は、VOBが複数本のオーディオストリームを同時に持つことができることから、オーディオストリーム数(Number)によって、データフィールドの有無を示している。
【0092】
下記はビデオ属性(Video)の持つフィールドと夫々が持ち得る値である。

圧縮方式(Coding):
MPEG1
MPEG2
MPEG4

解像度(Resolution):
1920x1080
1280x720
720x480
720x565

アスペクト比(Aspect)
4:3
16:9

フレームレート(Framerate)
60
59.94
50
30
29.97
25
24

下記はオーディオ属性(Audio)の持つフィールドと夫々が持ち得る値である。

圧縮方式(Coding):
AC3
MPEG1
MPEG2
LPCM

チャンネル数(Ch):
1〜8

言語属性(Language):

タイムマップ(TMAP)はVOBU毎の情報を持つテーブルであって、当該VOBが有するVOBU数(Number)と各VOBU情報(VOBU#1〜VOBU#n)を持つ。個々のVOBU情報は、VOBUの再生時間長(Duration)とVOBUのデータサイズ(Size)を夫々有している。
【0093】
図14はVOBU情報の詳細を説明する図である。
広く知られているように、MPEGストリームは時間的側面とデータサイズとしての側面との2つを有している。例えば、音声の圧縮規格であるAC3は固定ビットレートでの圧縮を行っているため、時間とアドレスとの関係は1次式によって求めることができる。しかしながらMPEGビデオデータの場合は、個々のフレームは固定の表示時間、例えばNTSCの場合は1フレームは1/29.97秒の表示時間を持つが、個々のフレームの圧縮後のデータサイズは絵の特性や圧縮に使ったピクチャタイプ、いわゆるI/P/Bピクチャによってデータサイズは大きく変わってくる。従って、MPEGビデオの場合は、時間とアドレスの関係は一般式の形で表現することは不可能である。
【0094】
当然の事として、MPEGビデオデータを多重化しているMPEGシステムストリーム、即ちVOBも時間とデータとを一般式の形で表現することは不可能である。これに代わって、VOB内での時間とアドレスとの関係を結びつけるのがタイムマップ(TMAP)である。図14に示すように、各VOBU毎にVOBU内のフレーム数と、VOBU内のパック数を夫々エントリーとして持つテーブルがタイムマップ(TMAP)である。
【0095】
図15を使って、タイムマップ(TMAP)の使い方を説明する。
図15に示すように時刻情報が与えられた場合、先ずは当該時刻がどのVOBUに属するのかを検索する。これは、タイム亜マップのVOBU毎のフレーム数を加算して行き、フレーム数の和が当該時刻を(フレーム数に換算して)超えるまたは一致するVOBUが当該VOBUになる。次にタイムマップのVOBU毎のサイズを当該VOBUの直前のVOBUまで加算して行き、その値が与えられた時刻を含むフレームを再生するために読み出すべきパックの先頭アドレスになっている。
【0096】
次に図16を使って、プレイリスト情報(”XXX.PL”)の内部構造を説明する。
プレイリスト情報は、セルリスト(CellList)とイベントリスト(EventList)から構成されている。
【0097】
セルリスト(CellList)は、プレイリスト内の再生セルシーケンスであり、本リストの記述順でセルが再生される事になる。セルリスト(CellList)の中身は、セルの数(Number)と各セル情報(Cell#1〜Cell#n)である。
【0098】
セル情報(Cell#)は、VOBファイル名(VOBName)、当該VOB内での有効区間開始時刻(In)及び有効区間終了時刻(Out)と、字幕テーブル(SubtitleTable)を持っている。有効区間開始時刻(In)及び有効区間終了時刻(Out)は、夫々当該VOB内でのフレーム番号で表現され、前述したタイムマップ(TMAP)を使うことによって再生に必要なVOBデータのアドレスを得る事ができる。
【0099】
字幕テーブル(SubtitleTable)は、当該VOBと同期再生される字幕情報を持つテーブルである。字幕は音声同様に複数の言語を持つことができ、字幕テーブル(SubtitleTable)最初の情報も言語数(Number)とそれに続く個々の言語ごとのテーブル(Language#1〜Language#k)から構成されている。
【0100】
各言語のテーブル(Language#)は、言語情報(Language)と、個々に表示される字幕の字幕情報数(Number)と、個々に表示される字幕の字幕情報(Speech#1〜Speech#j)から構成され、字幕情報(Speech#)は対応するイメージデータファイル名(Name)、字幕表示開始時刻(In)及び字幕表示終了時刻(Out)と、字幕の表示位置(Position)から構成されている。
【0101】
イベントリスト(EventList)は、当該プレイリスト内であげられるイベントを定義したテーブルである。イベントリストは、イベント数(Number)に続いて個々のイベント(Event#1〜Event#m)から構成され、個々のイベント(Event#)は、イベントの種類(Type)、イベントのID(ID)、イベント生成時刻(Time)と有効期間(Duration)から構成されている。
【0102】
図17は、個々のプレイリスト毎のイベントハンドラ(時間イベントと、メニュー選択用のユーザイベント)を持つイベントハンドラテーブル(”XXX.PROG”)である。
【0103】
イベントハンドラテーブルは、定義されているイベントハンドラ/プログラム数(Number)と個々のイベントハンドラ/プログラム(Program#1〜Program#n)を有している。各イベントハンドラ/プログラム(Program#)内の記述は、イベントハンドラ開始の定義(<event_handler>タグ)と前述したイベントのIDと対になるイベントハンドラのID(ID)を持ち、その後に当該プログラムもFunctionに続く括弧”{”と”}”の間に記述する。
【0104】
次に図18を用いてBDディスク全体に関する情報(”BD.INFO”)の内部構造について説明をする。
【0105】
BDディスク全体情報は、タイトルリスト(TitleList)とグローバルイベント用のイベントテーブル(EventTable)から構成されている。
【0106】
タイトルリスト(TitleList)は、ディスク内のタイトル数(Number)と、これに続く各タイトル情報(Title#1〜Title#n)から構成されている。個々のタイトル情報(Title)は、タイトルに含まれるプレイリストのテーブル(PLTalble)とタイトル内のチャプタリスト(ChapterList)を含んでいる。プレイリストのテーブル(PLTable)はタイトル内のプレイリストの数(Number)と、プレイリスト名(Name)即ちプレイリストのファイル名を有している。
【0107】
チャプタリスト(ChapterList)は、当該タイトルに含まれるチャプタ数(Number)と個々のチャプタ情報(Chapter#1〜Chapter#n)から構成され、チャプタ情報(Chapter#)は当該チャプタが含むセルのテーブル(CellTable)を持ち、セルのテーブル(CellTable)はセル数(Number)と個々のセルのエントリ情報(CellEntry#1〜CellEntry#k)から構成されている。セルのエントリ情報(CellEntry#)は当該セルを含むプレイリスト名と、プレイリスト内でのセル番号によって記述されている。
【0108】
イベントリスト(EventList)は、グローバルイベントの数(Number)と個々のグローバルイベントの情報を持っている。ここで注意すべきは、最初に定義されるグローバルイベントは、ファーストイベント(FirstEvent)と呼ばれ、BDディスクがプレーヤに挿入された時、最初に呼ばれるイベントである。グローバルイベント用イベント情報はイベントタイプ(Type)とイベントのID(ID)だけを持っている。
【0109】
図19は、グローバルイベントハンドラのプログラムのテーブル(”BD.PROG”)である。本テーブルは、図17で説明したイベントハンドラテーブルと同一内容である。
【0110】
(イベント発生のメカニズム)
図20から図22を使ってイベント発生のメカニズムについて説明する。
【0111】
図20はタイムイベントの例である。
前述したとおり、タイムイベントはプレイリスト情報(”XXX.PL”)のイベントリスト(EventList)で定義される。タイムイベントとして定義されているイベント、即ちイベントタイプ(Type)が”TimeEvent”の場合、イベント生成時刻(”t1”)になった時点で、ID”Ex1”を持つタイムイベントがシナリオプロセッサからプログラムプロセッサに対してあげられる。プログラムプロセッサは、イベントID”Ex1”を持つイベントハンドラを探し、対象のイベントハンドラを実行処理する。例えば、本実施の形態の場合では、2つのボタンイメージの描画を行うなどを行うことができる。
【0112】
図21はメニュー操作を行うユーザーイベントの例である。
前述したとおり、メニュー操作を行うユーザイベントもプレイリスト情報(”XXX.PL”)のイベントリスト(EventList)で定義される。ユーザイベントとして定義されるイベント、即ちイベントタイプ(Type)が”UserEvent”の場合、イベント生成時刻(”t1”)になった時点で、当該ユーザイベントがレディとなる。この時、イベント自身は未だ生成されてはいない。当該イベントは、有効規格情報(Duration)で記される期間レディ状態にある。
【0113】
図21に描くように、ユーザがリモコンキーの「上」「下」「左」「右」キーまたは「決定」キーを押した場合、先ずUOPイベントがUOPマネージャによって生成されプログラムプロセッサに上げられる。プログラムプロセッサは、シナリオプロセッサに対してUOPイベントを流し、シナリオプロセッサはUOPイベントを受け取った時刻に有効なユーザイベントが存在するかを検索し、対象となるユーザイベントがあった場合は、ユーザイベントを生成し、プログラムプロセッサに持ち上げる。プログラムプロセッサでは、イベントID”Ev1”を持つイベントハンドラを探し、対象のイベントハンドラを実行処理する。例えば、本実施の形態の場合では、プレイリスト#2の再生を開始する。
【0114】
生成されるユーザイベントには、どのリモコンキーがユーザによって押されたかの情報は含まれていない。選択されたリモコンキーの情報は、UOPイベントによってプログラムプロセッサに伝えられ、仮想プレーヤが持つレジスタSPRM(8)に記録保持される。イベントハンドラのプログラムは、このレジスタの値を調べ分岐処理を実行することが可能である。
【0115】
図22はグローバルイベントの例である。
前述したとおり、グローバルイベントはBDディスク全体に関する情報(”BD.INFO”)のイベントリスト(EventList)で定義される。グローバルイベントとして定義されるイベント、即ちイベントタイプ(Type)が”GlobalEvent”の場合、ユーザのリモコンキー操作があった場合にのみイベントが生成される。
【0116】
ユーザが”メニュー”を押した場合、先ずUOPイベントがUOPマネージャによって生成されプログラムプロセッサに上げられる。プログラムプロセッサは、シナリオプロセッサに対してUOPイベントを流し、シナリオプロセッサは、該当するグローバルイベントを生成し、プログラムプロセッサに送る。プログラムプロセッサでは、イベントID”menu”を持つイベントハンドラを探し、対象のイベントハンドラを実行処理する。例えば、本実施の形態の場合ではプレイリスト#3の再生を開始している。
【0117】
本実施の形態では、単に”メニュー”キーと呼んでいるが、DVDのように複数のメニューキーがあってもよい。各メニューキーに対応するIDを夫々定義することで対応することが可能である。
【0118】
(仮想プレーヤマシン)
図23を用いてプログラムプロセッサの機能構成を説明する。
【0119】
プログラムプロセッサは、内部に仮想プレーヤマシンを持つ処理モジュールである。仮想プレーヤマシンはBD−ROMとして定義された機能モデルであって、各BD−ROMプレーヤの実装には依存しないものである。即ち、どのBD−ROMプレーヤにおいても同様の機能を実行するできることを保証している。
【0120】
仮想プレーヤマシンは大きく2つの機能を持っている。プログラミング関数とプレーヤ変数(レジスタ)である。プログラミング関数は、Java(登録商標) Scriptをベースとして、以下に記す2つの機能をBD−ROM固有関数として定義している。

リンク関数:現在の再生を停止し、指定するプレイリスト、セル、時刻からの再生を開始する
Link(PL#,Cell#,time)
PL# : プレイリスト名
Cell# : セル番号
time : セル内での再生開始時刻

PNG描画関数:指定PNGデータをイメージプレーンに描画する
Draw(File,X,Y)
File : PNGファイル名
X : X座標位置
Y : Y座標位置

イメージプレーンクリア関数:イメージプレーンの指定領域をクリアする
Clear(X,Y,W,H)
X : X座標位置
Y : Y座標位置
W : X方向幅
H : Y方向幅 。
【0121】
プレーヤ変数は、プレーヤの状態を示すシステムパラメータ(SPRM)と一般用途として使用可能なゼネラルパラメータ(GPRM)とがある。
【0122】
図24はシステムパラメータ(SPRM)の一覧である。
SPRM(0) : 言語コード
SPRM(1) : 音声ストリーム番号
SPRM(2) : 字幕ストリーム番号
SPRM(3) : アングル番号
SPRM(4) : タイトル番号
SPRM(5) : チャプタ番号
SPRM(6) : プログラム番号
SPRM(7) : セル番号
SPRM(8) : 選択キー情報
SPRM(9) : ナビゲーションタイマー
SPRM(10) : 再生時刻情報
SPRM(11) : カラオケ用ミキシングモード
SPRM(12) : パレンタル用国情報
SPRM(13) : パレンタルレベル
SPRM(14) : プレーヤ設定値(ビデオ)
SPRM(15) : プレーヤ設定値(オーディオ)
SPRM(16) : 音声ストリーム用言語コード
SPRM(17) : 音声ストリーム用言語コード(拡張)
SPRM(18) : 字幕ストリーム用言語コード
SPRM(19) : 字幕ストリーム用言語コード(拡張)
SPRM(20) : プレーヤリージョンコード
SPRM(21) : 予備
SPRM(22) : 予備
SPRM(23) : 再生状態
SPRM(24) : 予備
SPRM(25) : 予備
SPRM(26) : 予備
SPRM(27) : 予備
SPRM(28) : 予備
SPRM(29) : 予備
SPRM(30) : 予備
SPRM(31) : 予備 。
【0123】
なお、本実施の形態では、仮想プレーヤのプログラミング関数をJava(登録商標) Scriptベースとしたが、Java(登録商標) Scriptではなく、UNIX(登録商標) OSなどで使われているB−Shellや、Perl Scriptなど他のプログラミング関数であっても構わなく、言い換えれば、本発明はJava(登録商標) Scriptに限定されるものでは無い。
【0124】
(プログラムの例)
図25及び図26は、イベントハンドラでのプログラムの例である。
【0125】
図25は、2つの選択ボタンを持ったメニューの例である。
セル(PlayList#1.Cell#1)先頭でタイムイベントを使って図25左側のプログラムが実行される。ここでは、最初にゼネラルパラメータの一つGPRM(0)に”1”がセットされている。GPRM(0)は、当該プログラムの中で、選択されているボタンを識別するのに使っている。最初の状態では、左側に配置するボタン1が選択されている事を初期値として持たされている。
【0126】
次に、PNGの描画を描画関数であるDrawを使ってボタン1、ボタン2夫々について行っている。ボタン1は、座標(10、200)を起点(左端)としてPNGイメージ”1black.png”を描画している。ボタン2は、座標(330,200)を起点(左端)としてPNGイメージ”2white.png”を描画している。
【0127】
また、本セル最後ではタイムイベントを使って図25右側のプログラムが実行される。ここでは、Link関数を使って当該セルの先頭から再度再生するように指定している。
【0128】
図26は、メニュー選択のユーザイベントのイベントハンドラの例である。
「左」キー、「右」キー、「決定」キー何れかのリモコンキーが押された場合夫々に対応するプログラムがイベントハンドラに書かれている。ユーザがリモコンキーを押した場合、図21で説明したとおり、ユーザイベントが生成され、図26のイベントハンドラが起動されることになる。本イベントハンドラでは、選択ボタンを識別しているGPRM(0)の値と、選択されたリモコンキーを識別するSPRM(8)を使って分岐処理を行っている。
【0129】
条件1)ボタン1が選択されている、かつ、選択キーが「右」キーの場合
GPRM(0)を2に再設定して、選択状態にあるボタンを右ボタン2に変更する。
【0130】
ボタン1、ボタン2のイメージを夫々書き換える。
条件2)選択キーが「決定(OK)」の場合で、ボタン1が選択されている場合、プレ
イリスト#2の再生を開始する
条件3)選択キーが「決定(OK)」の場合で、ボタン2が選択されている場合、プレイリスト#3の再生を開始する
上記のようにして実行処理が行われる。
【0131】
(プレーヤ処理フロー)
次に図27から図30を用いてプレーヤでの処理フローを説明する。
【0132】
図27は、AV再生までの基本処理フローである。
BDディスクを挿入すると(S101)、BD−ROMプレーヤはBD.INFOファイルの読み込みと解析(S102)、BD.PROGの読み込み(S103)を実行する。BD.INFO及びBD.PROGは共に管理情報記録メモリに一旦格納され、シナリオプロセッサによって解析される。
【0133】
続いて、シナリオプロセッサは、BD.INFOファイル内のファーストイベント(FirstEvent)情報に従い、最初のイベントを生成する(S104)。生成されたファーストイベントは、プログラムプロセッサで受け取られ、当該イベントに対応するイベントハンドラを実行処理する(S105)。
【0134】
ファーストイベントに対応するイベントハンドラには、最初に再生するべきプレイリスト情報が記録されていることが期待される。仮に、プレイリスト再生が指示されていない場合には、プレーヤは何も再生することなく、ユーザイベントを受け付けるのを待ち続けるだけになる。この場合、ユーザイベントを受け付けるのを待ち続けることになる(S201)。BD−ROMプレーヤはがユーザからのリモコン操作を受け付けると、UOPマネージャはプログラムマネージャに対してUOPイベントを立ち上げる(S202)。
【0135】
プログラムマネージャは、UOPイベントがメニューキーによるものであるかを判別し(S203)、メニューキーの場合は、シナリオプロセッサにUOPイベントを流し、シナリオプロセッサがユーザイベントを生成する(S204)。プログラムプロセッサは生成されたユーザイベントに対応するイベントハンドラを実行処理する(S205)。
【0136】
図28は、PL再生開始からVOB再生開始までの処理フローである。
前述したように、ファーストイベントハンドラまたはグローバルイベントハンドラによってプレイリスト再生が開始される(S301)。シナリオプロセッサは、再生対象のプレイリスト再生に必要な情報として、プレイリスト情報”XXX.PL”の読み込みと解析(S302)、プレイリストに対応するプログラム情報”XXX.PROG”の読み込みを行う(S303)。続いてシナリオプロセッサは、プレイリストに登録されているセル情報に基づいてセルの再生を開始する(S304)。セル再生は、シナリオプロセッサからプレゼンテーションコントローラに対して要求が出さる事を意味し、プレゼンテーションコントローラはAV再生を開始する(S305)。
【0137】
AV再生の開始(S401)を開始すると、プレゼンテーションコントローラは再生するセルに対応するVOBの情報ファイル(XXX.VOBI)を読み込み及び解析をする(S402)。プレゼンテーションコントローラは、タイムマップを使って再生開始するVOBUとそのアドレスを特定し、ドライブコントローラに読み出しアドレスを指示し、ドライブコントローラは対象となるVOBデータを読み出し(S403)、VOBデータがデコーダに送られ再生が開始される(S404)。VOB再生は、当該VOBの再生区間が終了するまで続けられ(S405)、終了すると次のセル再生S304へ移行する。次にセルが無い場合は、再生が停止する(S406)。
【0138】
図29は、AV再生開始後からのイベント処理フローである。
BD−ROMプレーヤはイベントドリブン型のプレーヤモデルである。プレイリストの再生を開始すると、タイムイベント系、ユーザイベント系、字幕表示系のイベント処理プロセスが夫々起動され、平行してイベント処理を実行するようになる。
【0139】
S500系の処理は、タイムイベント系の処理フローである。
プレイリスト再生開始後(S501)、プレイリスト再生が終了しているかを確認するステップ(S502)を経て、シナリオプロセッサは、タイムイベント発生時刻になったかを確認する(S503)。タイムイベント発生時刻になっている場合には、シナリオプロセッサはタイムイベントを生成し(S504)、プログラムプロセッサがタイムイベントを受け取りイベントハンドラを実行処理する(S505)。
【0140】
ステップS503でタイムイベント発生時刻になっていない場合、または、ステップS504でイベントハンドラ実行処理後は再度ステップS502へ戻り、上述した処理を繰り返す。また、ステップS502でプレイリスト再生が終了したことが確認されると、タイムイベント系の処理は強制的に終了する。
【0141】
S600系の処理は、ユーザイベント系の処理フローである。
プレイリスト再生開始後(S601)、プレイリスト再生終了確認ステップ(S602)を経て、UOP受付確認ステップの処理に移る(S603)。UOPの受付があった場合、UOPマネージャはUOPイベントを生成し(S604)、UOPイベントを受け取ったプログラムプロセッサはUOPイベントがメニューコールであるかを確認し(S605)、メニューコールであった場合は、プログラムプロセッサはシナリオプロセッサにイベントを生成させ(S607)、プログラムプロセッサはイベントハンドラを実行処理する(S608)。
【0142】
ステップS605でUOPイベントがメニューコールで無いと判断された場合、UOPイベントはカーソルキーまたは「決定」キーによるイベントである事を示している。この場合、現在時刻がユーザイベント有効期間内であるかをシナリオプロセッサが判断し(S606)、有効期間内である場合には、シナリオプロセッサがユーザイベントを生成し(S607)、プログラムプロセッサが対象のイベントハンドラを実行処理する(S608)。
【0143】
ステップS603でUOP受付が無い場合、ステップS606で現在時刻がユーザイベント有効期間に無い場合、または、ステップS608でイベントハンドラ実行処理後は再度ステップS602へ戻り、上述した処理を繰り返す。また、ステップS602でプレイリスト再生が終了したことが確認されると、ユーザイベント系の処理は強制的に終了する。
【0144】
図30は字幕処理のフローである。
プレイリスト再生開始後(S701)、プレイリスト再生終了確認ステップ(S702)を経て、字幕描画開始時刻確認ステップに移る(S703)。字幕描画開始時刻の場合、シナリオプロセッサはプレゼンテーションコントローラに字幕描画を指示し、プレゼンテーションコントローラはイメージプロセッサに字幕描画を指示する(S704)。ステップS703で字幕描画開始時刻で無いと判断された場合、字幕表示終了時刻であるかを確認する(S705)。字幕表示終了時刻であると判断された場合は、プレゼンテーションコントローラがイメージプロセッサに字幕消去指示を行い、描画されている字幕をイメージプレーンから消去する(S706)。
【0145】
字幕描画ステップS704終了後、字幕消去ステップS706終了後、または、字幕表示終了時刻確認ステップS705で当該時刻でないことが判断された場合、ステップS702に戻り、上述した処理を繰り返す。また、ステップS702でプレイリスト再生が終了したことが確認されると、字幕表示系の処理は強制的に終了する。
【0146】
(実施の形態2)
次に本発明の第2の実施の形態について説明する。
【0147】
第2の実施の形態は、BD−ROMにおいてより豊かなインタラクティブ性を実現するため、XML・XHTMLベースの画面構成環境と、イベントおよびスクリプトを用いたプログラミング環境を導入することに関する内容である。基本的には第1の実施の形態に基づく内容であり、拡張または異なる部分を中心に説明する。
【0148】
(XHTMLファイルを利用したコンテンツ制御)
図31は、XHTMLおよびスクリプトを利用したシナリオ制御に関わるモジュール構成、制御の流れ、イベントなどの伝わり方を示している。
【0149】
ユーザーイベント処理部は、リモコン信号などを受信し、次のモジュールにイベントを割り振るモジュールである。再生制御に関わる、再生/停止/早送り/巻き戻し/スキップ/アングル変更/音声切替/字幕切替などのイベントはAV再生制御部に送られる。ボタンフォーカスの移動(上下左右キー)や決定などのイベントは、XHTML処理部に送られる。タイトル切替に関わる、タイトル選択やメニュー呼び出しのイベントは、タイトル制御部に送られる。なお、Index Tableとは、ディスク中のタイトルを列挙したファイルであり、図18のTitle List部分を切り出して1つにしたものである。
【0150】
タイトル制御部は、タイトル切替を要求されるとIndex Tableにしたがってタイトル切替を行うモジュールである。タイトルがXHTMLで定義される場合、XHTML処理部にタイトルに関連付けられたXHTMLファイルを読み込むように制御を行う。
【0151】
XHTML処理部はXHTMLファイルを読み込み、スタイル定義情報などにしたがって、画面を構成し、イベントに応じて関連するスクリプトを実行するモジュールである。スクリプトを実行した結果、AVの再生が必要であればAV再生制御部に対して、再生開始などの制御を行い、タイトル切替が必要であれば、タイトル制御部に対して制御を行う。
【0152】
AV再生制御部は、イベントや指示に従ってAVストリームの再生を行い、AV再生制御部の状態が変化したときやAVストリームの再生位置が特定の位置に達した際にイベントを生成してXHTML処理部に通知する。
【0153】
プレーヤの状態が変化したことを通知するイベントとは、ユーザーから再生指示があり、ユーザーイベント処理部が再生開始要求のイベントをAV再生制御部に通知すると、AV再生制御部は再生を開始する。この時に、AV再生制御部が停止状態から再生状態に変化したことを通知するようなイベントである。
【0154】
また、再生位置を通知するイベントとは、AVストリームの終端に達したときや、セルの境界に達したとき、あるいはマークと呼ばれるAVストリームの一時点を示すデータが存在する場合その地点に達したことを通知するイベントである。
【0155】
図32はあるタイトルが選択されたときの動作の様子を示している。
Index Tableで定義されるあるタイトルを選択した場合、タイトルに関連付けられたXHTMLファイルが呼び出される。XHTMLファイルには、再生制御などを行うスクリプトなども記述しされている。 図中の例では、スクリプトファイルを間接的に参照しているが、直接XHTMLファイル内に記述することも可能である。また、説明のため、XHTMLと表記しているが、XML形式にのっとっていれば独自のタグなどを利用した形式でもよい。
【0156】
図中のXHTMLファイル内に記述されている“onLoad”属性において、ファイ
ルが読み込まれたときに実行されるスクリプトを規定している。この例では、XHTMLファイルが読み込まれたときに、“playTitle1”というスクリプトが呼び出さ
れ、スクリプト自体はスクリプトファイル内に記述されている。
【0157】
また、<event>タグを用いることにより、ユーザーイベント処理部やAV再生制御部から通知されたイベントに対応してスクリプトを実行する仕組みも提供する。この例では、“EndOfStream”イベントが発生した際、“jumpTitle2”と
いうスクリプトを呼び出す例である。なお、“EndOfStream”イベントとは、
たとえばAV再生がファイルの終端に達した場合にAV再生制御部が生成するイベントである。
【0158】
図33は先ほどの例に、画面生成を加えた例である。たとえば、先ほどと同様にIndex TableからXHTMLが呼び出され、そのXHTMLはメニュー画面などを生成するための情報が書かれていた場合である。画面構成のスタイルなどはCSSなどのスタイルシートを利用してもよい。
【0159】
この例では、画面上に2つのボタンを配置している。それぞれのボタンが押されると対応スクリプトが実行される。あるボタンを選択すると、“onClick”属性に定義さ
れているスクリプトが実行される。TitleAと書かれたPNGイメージファイルと関連付けられている左側のボタンを選択すると、“playA”スクリプトが実行され、タ
イトル1にジャンプする。同様に、TitleBボタンを選択すると、あるAVストリームが再生された後に、タイトル2にジャンプする。
【0160】
これまで説明した仕組みを用いることのより、XHTMLファイルを用いて、メニュー画面を表示し、何らかのボタンを選択を選択するとコンテンツの再生を開始するような仕組みを提供することが可能となる。
【0161】
また、スクリプト部分と、スクリプトが実行するAPIを追加することにより、より複雑な機能、たとえばインターネット接続やダウンロードサービスといったアプリケーションも実行可能である。
【0162】
(リソース管理)
XHTMLファイルがメニュー画面のような画面を構成する際には、PNGイメージファイルなどのデータファイルを参照する。メニューが凝ったものになればなるほど、表示するグラフィクスは複雑なものになり、それを表示するためのイメージデータのサイズは大きくなる。
【0163】
また、XHTMLファイルはユーザー操作によって画面を切り替えるように作ることも可能である。メニュー画面の中である項目を選ぶと、さらにサブメニューが出てくるような場合である。このような場合、メニュー画面が表示された最初の瞬間には表示されていなかったイメージデータが、あとから必要になることがある。
【0164】
ところが、さらにそのメニュー画面の背景では動画が表示されている、つまりAVストリームが再生されている場合、必要になってからイメージデータを読み込みに行こうとすると、ディスク上でファイルがある位置にシークを行ってから読み込んで元の位置に戻ってこなければならず、AVストリームの再生が一時的に中断してしまう可能性がある。十分な量のバッファを積んでおり、AVストリームを事前にバッファ一杯に先読みすればこのようなことも回避できるが、画像が高解像度・高画質になり、高ビットレートが必要になってきているので、かなり大容量のバッファを用意しなければならず、コストアップなどにつながり、現実的ではない。
【0165】
また、ハードディスクのようにシーク時間が短く、読み取り速度が速いメディアでは、少量のバッファでもその早さを利用して、AVを中断させずに他のデータを読み込むことも可能であるが、光ディスクメディアのドライブでは、シークには時間がかかり、読み込み速度もそれほど速くないため、実現にはさらなる技術の進歩が必要となる。
【0166】
そのため、一旦AV再生が開始されるとAV以外のデータを読み込みに行かないモデルにすることが望ましい。
【0167】
図34はその様な場合のデータのライフサイクルを示している。
AVの再生が開始される前に、画面を表示するために必要なデータである、XHTMLファイルやスクリプトファイル、それらのファイルから参照されるPNGイメージファイルなどのデータファイルをバッファ上にプリロードしておく。
【0168】
一旦AVの再生が開始されると、それらのデータをディスクに読みに行くことはない。
なお、AVの再生が止まってもよい場合は、これらを考慮する必要はない。
【0169】
また、コンテンツにより、AVの再生が止まって欲しくない場合と、止まってもよい場合を区別する必要があるならば、管理情報にこの2つのパターンを区別する識別子を用意しておけばよい。
【0170】
XHTML処理部がデータを必要とするときは、バッファからXHTML処理部のワークメモリ上に読み込んでおき、画面の表示などに利用する。その画面が表示されなくなったときには、必要なくなったデータをワークメモリから解放し、次に必要になるデータをバッファから読み込んでくる。
【0171】
なお、このワークメモリは、バッファと共有してもよい。
バッファにあるメモリーは、そこに読み込まれているデータが必要なくなるまで保存しておき、必要なくなれば解放する。
【0172】
(データのライフサイクル)
上で述べたように、バッファにデータを読み込んでくるタイミングと、バッファからデータを解放するタイミングを明確に決めることができれば、データのライフサイクルの管理が明確になり、管理がしやすくなる。
【0173】
データの管理がしやすくなれば、コンテンツ作成者がどのプレーヤでも必ず動作させることができるコンテンツ構成を判定しやすくなり、コンテンツ作成が容易になる。
【0174】
データのライフサイクルの開始タイミングと終了タイミングは、AVの再生が停止しているタイミング、あるいは一時的に停止する、連続して再生する場合でもシームレスに再生する必要がないタイミングが望ましい。
【0175】
このようなタイミングとしては、AVストリームの切替点、XHTMLファイルで構成される画面の切替点や、タイトル切替のタイミングなどがあり、その他上記の条件を満たすのであればその他の点でもよい。
【0176】
これまで説明した構造を用いると、タイトルの切替のタイミングは、Index Tableで明示的に、かつ静的データとして参照することができ、プレーヤから制御しやすい。そのため、データのライフサイクルとは、あるタイトルが開始するときに開始し、あるタイトルが終了するときにライフサイクルも終了する。
【0177】
つまり、あるタイトルが開始するときに、そのタイトルを再生するために必要な全てのデータをバッファにプリロードしておき、そのタイトルが終了するとき、たとえば他のタイトルにジャンプするときに、バッファから解放する。
【0178】
図35は書くモジュール間の制御の流れとデータの流れ、それに合わせたデータのライフサイクルを示したタイミングチャートである。
【0179】
このようなライフサイクルと、バッファのサイズを規定すれば、タイトルを作成するときに、どのくらいのサイズまでイメージデータを使うことができ、どのようなアプリケーションを実行できるか定量的に判断でき、タイトルが非常に作りやすくなる。
【0180】
なお、バッファの解放はタイトル制御部や、より上位のモジュールから強制的に行ってもよいし、XHTML処理部が行ってもよい。
【0181】
ユーザー操作によりアプリケーション実行中にタイトルを切り替えられた場合、タイトル制御部は、XHTML処理部に現在実行中のスクリプトを中止し、バッファの解放を指示ずる。また、タイトルが切り替わると、次のタイトルに関連するファイルをバッファに読み込むよう指示する。
【0182】
(データ読み込みの保証)
AVストリームの再生開始より前に、AVストリーム以外のファイルをバッファにプリロードしておく必要は上で述べたとおりである。その際、XHTMLファイルを解析して必要なファイルをリストアップしていては、時間がかかってしまう。
【0183】
そこで、図36(a)のように、各タイトルで必要なファイルをリストアップしたファイルリストをタイトル毎に作成し、タイトルが選択されたときに、そのタイトルリストに列挙されているファイルを全てバッファに読み込めばよい。
【0184】
また、ファイル数が多い場合、ファイル毎にシークが発生すると読み込みの時間がかかってしまうため、リストアップされたファイルをディスク上の1カ所にまとめて配置することのより、無駄なシークを発生させることなく必要なファイルを全て読み込むことも可能である。
【0185】
あるいは、図36(b)のように、ファイルをディレクトリ構造ごとZIPファイルなどで1つにまとめてしまい、バッファに読み込んだあとでバッファ内でファイルを展開し、ディレクトリ構造などを構成してもよい。ファイルを1まとめにでき、ディレクトリ構造を保持できるようなフォーマットであれば、ZIPファイルでなくてもよい。また、圧縮ファイルである必要もない。
【0186】
このような仕組みを用いることにより、タイトル毎にリソースを分かりやすく管理し、データの読み込みを効率化することにより、オーサリング時にミスが起こりにくく、プレーヤで制御しやすい仕組みを提供することが可能となる。
【0187】
以下、図36を用いて説明したファイルリストおよびZipファイルなどのアーカイブファイルを応用した仕組みに関して、より詳細な実装を説明する。
【0188】
図37にXMLを用いてファイルリストを記述した例を図示している。以下図37に図示したファイルリストをResource Fileと呼ぶ。Resource Fileは各タイトル毎に記述され、各タイトル再生時に実行されるアプリケーションに関する記述がなされる。
【0189】
図32を用いて前述した例では、IndexTableで定義されるタイトルからはXHTMLファイルが関連づけられていたが、本仕組みではIndexTableで定義された各タイトルからはResource Fileが関連づけられており、IndexTableで定義されるあるタイトルを選択した場合、そのタイトルに関連づけられたResource Fileが最初に呼び出される。
【0190】
図37に示すようにResource Fileはxml宣言と、<application><entry><toppage><Linkfile>の四つの要素からなる。
<application>要素のname属性にアプリケーション名が記述される。
アプリケーションを実行する上で一番最初に読み込んで解析する必要があるXMLデータ(以降Toppageと呼ぶ)に関しては、そのファイル名が<toppage>要素のsrc属性として記述されている。
【0191】
Toppageを除いた、アプリケーションを構成する各ファイルのファイル名がURI形式で<linkfile>要素のsrc属性としてリストアップされている。
【0192】
また、これらのアプリケーションを構成するファイル群(Toppageを含む)は、アーカイブファイルとして一纏めにBD−ROM上に記録されるものとし、Resource Fileには当該アーカイブファイルのファイル名がURI形式で<entry>要素のsrc属性として記述されている。
【0193】
このようにBDプレーヤはタイトル再生時にそのタイトルに対応するResource Fileを読み込むことで、BD−ROM上にアーカイブファイルとして一纏めに配置されたアプリケーションを構成するファイルを無駄なシークを発生させることなく一括して読み込むことができ、また当該アプリケーションで使用する全てのファイル名を知ることができる。また、Resource File中の<Toppage>要素を参照することで、XHTML及びスクリプトで記述されたアプリケーションを実行する際、どのファイルを一番はじめに解析するのかを知ることができる。
【0194】
現在再生しているタイトルとは違うタイトルが選択された場合、再生していたタイトルのResource Fileに記述されていたファイルを解放してもよいし、選択されたタイトルに関連づけられたResource Fileに記載されていないファイルのみ解放してもよい。このようにResource Fileを用いることで、タイトル毎にリソースを分かりやすく管理し、データの読み込みを効率化することが可能であり、オーサリング時にミスが起こりにくく、プレーヤで制御しやすい仕組みを提供することが可能となる。
【0195】
なお、本実施の形態のResource Fileでは<application>要素のname属性にアプリケーションの名前が記述されており、プレーヤは挿入されたBD−ROM Discのタイトル名とこのアプリケーション名を用いてプレーヤにて実行されたアプリケーションを識別可能である。したがって、プレーヤのローカルストレージにそれぞれのアプリケーション用の領域を設定してもよい。また、前記アプリケーション用の領域には当該アプリケーションのみがアクセス可能であり、そのほかのアプリケーションのアクセスを禁止しても良い。
【0196】
(実施の形態3)
次に本発明の第3の実施の形態について説明する。
【0197】
第3の実施の形態は、BD−ROMにおいて、BD−ROMに記録されたアプリケーションの妥当性を検証し、最適な実行権限をもって実行されることを保証するための環境を導入することに関する内容である。基本的には第1の実施の形態と第2の実施の形態に基づく内容であり、拡張または異なる部分を中心に説明する。
【0198】
(アプリケーション認証)
前述したXHTMLおよびスクリプトにより、スタジオはBD−ROMに記録されたコンテンツやBDプレーヤの資源を用いて、表現力に富んだアプリケーションをユーザに提供できる。一方で、このようなアプリケーションの実行環境を悪用または誤用されると、ユーザまたはスタジオに様々な被害が及ぶ可能性がある。例えば悪意のある第三者により作成されたBD−ROMを再生することでプレイヤーのシステムが破壊されたり、プレーヤーの資源が盗まれるといった深刻な問題が発生する可能性がある。また、正規のBD−ROMを改竄された場合でもプレイヤーのシステムが破壊されたり、プレーヤーの資源が盗まれたり、BD−ROM上のコンテンツが盗まれるといった深刻な問題が発生する可能性がある。
【0199】
また、XHTMLおよびスクリプトによるアプリケーションをインターネット上のコンテンツサーバから更新または追加することを可能とした場合、ネットワーク上を流れるアプリケーションが改竄されたりコンテンツサーバが詐称されユーザが悪意のあるアプリケーションをダウンロードしてしまう可能性がある。このような悪意のある第三者によって偽造または改竄されたプログラムをプレーヤで実行した場合、プレーヤのシステムが破壊されたり、正規の情報記録媒体に記録された映像データが盗まれたり改竄されるといった深刻な問題が発生する可能性がある。
【0200】
このように、BDプレーヤによってXHTMLおよびスクリプトによるアプリケーションを実行する際、図38に示すように正規のスタジオ以外で作成されたアプリケーションや、改竄されたアプリケーションを検出し、深刻な問題を生じさせかねないアプリケーションは実行を拒否したり、利用できる機能やアクセスできるリソースを制限する仕組みが必要である。
【0201】
そこで本実施の形態では、XHTMLおよびスクリプトによるアプリケーションが正規のスタジオで作成されたものか否かを検証するアプリケーション認証機構を提供する。以下、本実施の形態のアプリケーション認証機構の概要を図39を用いて説明する。
【0202】
まず、正規のスタジオはXHTMLおよびスクリプトによるアプリケーションを作成する((1)オーサリング)。XHTMLおよびスクリプトによるアプリケーションは1つ以上のファイルから構成される。次にアプリケーションを構成するファイル群全体に対して、公開鍵証明書により署名を行う((2)署名)。公開鍵証明書はBDのライセンス団体に属するスタジオのものでも良いし、BDのライセンス団体が発行したものでもよい。以下、本実施の形態ではアプリケーションに対して署名を行う公開鍵証明書はBDのライセンス団体が承認したスタジオの公開鍵証明書とする。また、署名の方法に関しては後述する。以上により作成されたBD−ROMが販売され、購入したユーザがBDプレーヤに挿入すると((3)販売)、BDプレーヤが前記アプリケーションを実行する際、前記ファイル軍全体に対する署名の妥当性を検証する((4)署名照合)。これによりアプリケーションが前記スタジオにて作成された正規のものであることが確認され、BDプレーヤはアプリケーションを実行する((5)実行)。
【0203】
以下、本実施の形態における署名の方法について説明する。
XHTMLおよびスクリプトによるアプリケーションは1つ以上のファイルから構成されるが、各ファイル毎に署名を作成する方法ではアプリケーション実行時にアプリケーションを構成する複数のファイル用の複数の署名の妥当性を検証していく必要がありBDプレーヤの性能によってはアプリケーション実行時のパフォーマンスが落ちてしまう可能性がある。したがって、本実施の形態における署名には第2の実施の形態で図37を用いて説明したResource Fileを応用する。具体的には、アプリケーションを構成するファイルのファイル名一覧を記述しているResource Fileに各ファイルのハッシュ値をあわせて記述し、Resource Fileに対してのみ署名することで署名の対象をResource File1つに限定する。ここで、ハッシュ値とは任意の長さのデータを一方向関数に入力して得られた固定長のデータのことであり、もとのファイルからハッシュ値を計算することは容易であるがハッシュ値から元のファイルを類することは困難であるという特徴と、入力されるデータが少し異なるだけでも得られるハッシュ値が変化するという特徴とをもつ。一方向関数としてはMD5(Message Digest 5)やSHA−1(Secure Hash Algorithm 1)などがある。
【0204】
図40に本実施の形態よるアプリケーション認証機構を導入した場合のResourceFileの例を示す。図40に示すように、アプリケーションを構成するファイル名をリストアップした<toppage>要素<linkfile>要素に、各々のファイルのハッシュ値を記述するための属性値として、SHA−1の計算結果を記述する“sha
−digest”とMD5の計算結果を記述する“md5−digest”を追加してい
る。各要素は“sha−digest”“md5−digest”のどちらか一方、また
は両方を持つものとする。
【0205】
また、図40に示すResource Fileは新たに<Signiture>要素が追加されており、当該Resrource Fileへの署名データのファイル名がURI形式で<signiture>要素のsrc属性として記述されている。また、署名データの形式が<signiture>要素のsig−type属性として記述されている。ここでResource Fileに署名後にResource Fileに署名データのファイル名を記述してしまうとResource Fileのデータが変更されることになり作成済みの署名データ自体も無効になってしまうため、Resource Fileに記述する署名データのデータ名は署名データ作成前に決定しておく必要がある。署名データのファイル名は、各アプリケーション毎に明示的に一意に決められるようにしてもよい。例えばToppageと同一ディレクトリにToppageの同一のファイルボディを持ち、拡張子として“.rsa”を持つものとして定義してもよい。これによりアプリケーションを作成完了しtoppageの名前が決まった時点で署名データの名前は一意に決まっているため、署名データを作成する前であってもResource Fileを作成可能であり署名データ作成後でもResource Fileのデータは変化しない。
【0206】
また、署名データの形式としては、RSA社が定義したPKCS#7(Public−Key Cryptography Standards #7)などがある。PKCS#7形式によるResource Fileへの署名データの例を図41に示す。図41に示すように、PKCS#7によるResource Fileの署名は、Version情報とアルゴリズム情報に加え、Resource Fileのハッシュ値と、スタジオの公開鍵証明書、Resource Fileのハッシュ値に対して、前記スタジオの公開鍵証明書を用いて署名した結果とが含まれる。
【0207】
以下、図42を用いて、本実施の形態によるアプリケーションの妥当性検証方法について述べる。
【0208】
まず、プレーヤにBD−ROM Discが挿入されて、IndexTableの先頭が自動選択されたりユーザが選択するなどして、IndexTableで定義された任意タイトルが開始されると(ステップS801)、プレーヤは当該タイトルが定義されたIndexTableを参照し、当該タイトルのResource Fileを読み込んで当該タイトル用のアプリケーション情報を取得する(ステップS802)。Resource Fileは例として図40を用いて前述した形式をとるものとする。次にResource File中の<signiture>要素を参照して署名データを読み込む(ステップS803)。署名データは例として図41を用いて前述した形式をとるものとし、署名の対象となるResource Fileのハッシュ値と、その署名、署名に用いたスタジオの公開鍵証明書を含む。次にプレーヤは署名データに含まれるスタジオの公開鍵証明書を取り出す。この公開鍵証明書は一般的な公開鍵証明書であり、スタジオの公開鍵と、その公開鍵に対する認証局による署名、認証局による署名を照合するために用いる認証局の公開鍵証明書のチェーンが含まれる。プレーヤは取り出したスタジオの公開鍵証明書からスタジオの公開鍵を取り出し(ステップS804)、署名データから取り出したResource Fileのハッシュ値に対する署名をステップS804で取り出した公開鍵を用いて復号化する(ステップS805)。次に、署名データからResource Fileのハッシュ値を取り出して一方向関数に入力してハッシュ値を計算する(ステップS806)。次に、ステップS805で復号化して得た復号化データと、ステップS806で計算して得たハッシュ値とを比較する(ステップS807)。復号化データとハッシュ値が等しい場合は、署名データが正しく、またResource Fileが偽造または改竄されていないことが確認されたこととなり、ステップS808に進む。復号化データとハッシュ値が等しくない場合は、Resource Fileか署名データが改竄または偽造されたことが考えられ、ステップS811に進む。次にステップS808において、署名データに含まれるスタジオの公開鍵証明書の妥当性を検証していく。スタジオの公開鍵証明書にはスタジオの公開鍵と公開鍵に対する認証局による署名と署名した認証局の公開鍵証明書が含まれており、スタジオの公開鍵証明書の中に含まれる公開鍵の署名の妥当性をスタジオの公開鍵証明書の中に含まれる認証局の公開鍵証明書を用いて確認(図42のステップS804からステップS807までと同様の手順)する。署名した認証局の公開鍵証明書にもさらに当該認証局の公開鍵を署名した親となる認証局の公開鍵証明書が含まれており、チェーン上になっている。これらの認証局の公開鍵証明書のチェーンを先ほどと同様の手順で妥当性を確認していくと最終的にはルートとなる認証局の公開鍵証明書が得られる。ルート認証局の公開鍵証明書が正規のものであるかどうかの確認方法としては、プレーヤにルート認証局の公開鍵証明書を持たせそれと比較する方法でもよいし、BD−ROMに記録しておいてそれと比較する方法でも良い。
【0209】
最終的に得られたルート認証局の公開鍵証明書が正規のものであれば最終的にスタジオの公開鍵証明書が妥当であることが確認され(ステップS809)、ステップS810に進み、最終的に当該タイトル用のアプリケーションの妥当性が検証される(ステップS810)。スタジオの公開鍵証明書が妥当でなければステップS811に進み、アプリケーションが偽造または改竄されている可能性があることを検出する(ステップS810)。
【0210】
アプリケーションが偽造または改竄されている可能性がある場合、当該アプリケーションの実行を拒否しても良いし、プレーヤや保護すべきコンテンツへの影響がない最小限の機能のみ実行できるように制限してアプリケーションを実行しても良い。また、アプリケーション構成ファイル以外のBD−ROMへのアクセスを拒否したり制限したりしても良いし、プレーヤが備えるHDDやフラッシュメモリなどのローカルストレージへのアクセスを拒否したり制限したりしてもよい。また、妥当性が検証されたアプリケーションに関しても、Resource Fileの<application>要素のname属性にてアプリケーションの名前が定義されているが、そのアプリケーションに割り当てられたローカルストレージ領域にのみアクセスを許可し、それ以外の名前を持つアプリケーションのローカルストレージ領域へのアクセスは拒否する仕組みを取っても良い。
【0211】
なお、本実施の形態ではResource Fileのハッシュ値を直接署名データに含ませて署名しているがあくまでも例であり、Resource Fileからリンクを張った別の署名用ファイルを用意し、そのファイルにResource Fileのハッシュ値とその他安全性を高めるためのデータ(例えばResource Fileに記述したアプリケーションを構成する各ファイルのハッシュ値をさらに一方向関数に通して得られたハッシュ値の一覧など)を用意し、それに署名する仕組みをとってもよい。
【0212】
以上、アプリケーションの妥当性検証方法について図42を用いて述べたが、実際にアプリケーションを実行する際はさらにアプリケーションを構成する各ファイルについて図43に示すようにアプリケーションファイルの妥当性を検証する必要がある。
【0213】
以下、図43を用いて本実施の形態におけるアプリケーションファイルの妥当性検証方法について述べる。
【0214】
まずアプリケーションの妥当性検証が完了すると(ステップS901)、アプリケーションに必要なファイルを読み込む(ステップS902)。ここでアプリケーションを構成するファイルは前述したように、Resource File中に<toppage>要素や<linkfile>要素にて記述されている。次にステップS902で読み込んだファイルのファイル名がResource Fileに記載されているかどうかを確認する(ステップS903)。これは、例えばToppageからリンクを張られて読み込まれたファイルが、スタジオの想定したものであるかどうかを確認するためのものであり、Toppageの改竄がなければ読み込んだファイルのファイル名がResource Fileに記載されているはずである。読み込んだファイルのファイル名がResource Fileに記載されている場合(ステップS904のyes)はステップS905に進み、記載されていなければ(ステップS904のno)当該ファイルへのリンクを張ったファイルが改竄されている可能性がありステップS909に進む。次にステップS905において、ステップS902にて読み込んだファイルのハッシュ値を計算する。このとき、<toppage><linkfile>要素においてsha−digest属性が指定されている場合はSHA−1にてハッシュ値を計算し、md5−digest属性が指定されている場合はMD5にてハッシュ値を計算し、二つとも指定されている場合はSHA−1とMD5の二つのハッシュ値を計算するものとする。次に、ステップS905において計算したハッシュ値と、Resource Fileに記載された当該ファイルのハッシュ値とを比較する(ステップS906)。ここでステップS905で計算したハッシュ値が、SHA−1にて計算したハッシュ値である場合は、sha−digest属性にて指定された値と比較し、MD5にて計算したハッシュ値である場合はmd5−digest属性にて指定された値と比較する。SHA−1とMD5の双方のハッシュ値を計算した場合はその両方をそれぞれ比較する。ステップS905で計算したハッシュ値とResource Fileに記載された当該ファイルのハッシュ値が等しければ(ステップS907のyes)、読み込まれたファイルは改竄または偽造されていないファイルであることが確認されたことになる(ステップS908)。一方、ステップS905で計算したハッシュ値とResource Fileに記載された当該ファイルのハッシュ値が等しくなければ(ステップS907のno)、読み込まれたファイルは偽造、または改竄された可能性があることになる(ステップS909)。
【0215】
なお、アプリケーションファイルの妥当性検証は、プレーヤがResource Fileを読み込んでアプリケーションの妥当性検証が完了した直後に、Resource Fileに記載されているアプリケーションを構成する全てのファイルに対して行っても良いし、アプリケーションを実行するにあたって必要になったファイルをその都度検証していく方法でも良い。この場合、前記アプリケーションの妥当性検証が完了した後は、Resrouce File中の<toppage>要素で記述されたToppageのみに対してアプリケーションファイルの妥当性検証が行われ、以降、Toppageからリンクを張られるなどしてアプリケーションを実行する上で必要となったファイルに対して逐次妥当性の検証が行われる。
【0216】
また、アプリケーション及びその構成ファイルの妥当性を検証出来なかった場合、単にアプリケーションの実行を禁止するだけでなく、当該アプリケーションが記録されたBD−ROM Disc自体の実行を禁止しても良い。そのほかにも、アプリケーション及びその構成ファイルの妥当性を検証出来なかった場合に、システムに悪影響を及ぼしかねない機能の実行や保護すべきコンテンツへのアクセスを禁止し、実行させるという対策をとっても良い。
【0217】
(アプリケーションの実行権限制御)
以上、アプリケーションの妥当性検証方法と、アプリケーションを構成するファイルの妥当性検証方法について本実施の形態を述べたが、さらに妥当性を検証したアプリケーションに対して実行できる権限を必要な範囲に限定することで、プレーヤのシステムやコンテンツをより安全に保つことができる。
【0218】
例えば前述したようにアプリケーションの妥当性を検証出来なかったアプリケーションには最小限の機能実行権限のみを割り当て、妥当性を検証したアプリケーションに関しても、あらかじめ規定された必要な機能のみ実行でき、かつ規定された必要なデータ領域にのみデータを読み書きできるようにすることで、例えば想定外の動作による不具合などを防止でき、プレーヤやコンテンツをより安全に保つことができる。
【0219】
そこで、本実施の形態ではアプリケーションの実行権限を制御する仕組みをさらに提供する。アプリケーション作成時にアプリケーションが実行できる機能やアクセスできるデータ領域を記述したPermission Fileを用意してアプリケーションに添付する。プレーヤはアプリケーションの妥当性検証を実施した後、このPermission Fileに基づいてアプリケーションの実行権限を設定した上でアプリケーションを実行するものとする。
【0220】
以下、本実施の形態におけるアプリケーションの実行権限制御の具体例について説明する。
【0221】
まず図44に示すように、プレーヤがアプリケーションの実行する際に当該アプリケーションのPermission Fileを一意に読み出せるようResource Fileに<permission>要素を設けPermission Fileのファイル名を記述するものとする。また、Permission Fileの偽造、改竄を防ぐため、アプリケーションの構成ファイルと同じくそのハッシュ値をResrource Fileに<permission>要素のsha−digest属性またはmd5−digest属性(または双方)として記述するものとする。このようにPermission Fileのハッシュ値をResource Fileに記述することで前述したアプリケーション構成ファイルの妥当性検証と同様の手順で、Permission Fileの妥当性検証を行うことができる。
【0222】
ここでPermission fileはテキスト形式やXMLなど任意のフォーマットで記述されるものとし、プレーヤが備える機能や関数に対して当該アプリケーションが実行できるか否かや、実行するために必要な条件などが記載されるものとする。また必要に応じて、当該アプリケーションがアクセスできるDisc領域やローカルストレージ領域に関して例えばURI形式で記述され、それぞれの領域に対して、データを読み込めるか否か、書き込めるのか否か、実行できるか否かといった条件が記述されるものとする。またプレーヤがネットワーク通信機能を持つ場合、必要に応じて、当該アプリケーションがネットワークアクセス可能なURIを記述しアプリケーションが接続可能なサーバを限定するものとする。
【0223】
なお、Permission Fileのファイル名は各アプリケーション毎に明示的に決められるようにしてもよい。例えばアプリケーションのToppageと同一ディレクトリにToppageの同一のファイルボディを持ち、拡張子として“.perm”を
持つものとして定義してもよい。
【0224】
以下、図45を用いてPermission Fileの妥当性検証とアプリケーションの権限設定のフローチャートを説明する。
【0225】
まずアプリケーションの妥当性検証が完了すると(ステップS1001)、プレーヤはResource Fileの<permission>要素を参照してPermission Fileを読み込む(ステップS1002)。次にステップS1002で読み込んだPermission Fileを一方向関数に通し、Permission Fileのハッシュ値を計算する(ステップS1003)。このとき、<permission>要素にsha−digest属性が指定されている場合はSHA−1を用いてハッシュ値を計算し、md5−digest属性が指定されている場合はMD5を用いてハッシュ値を計算し、二つとも指定されている場合はSHA−1とMD5の二つのハッシュ値を計算する。次に、ステップS1003で計算したハッシュ値とResource Fileに<pemission>要素のsha−digest属性・md5−digest属性で記述されたPermission Fileのハッシュ値とを比較する(ステップS1004)。ステップS1003で計算したハッシュ値とResource Fileに記述されたPermission Fileのハッシュ値が等しければ(ステップS1005のyes)、Permission Fileは改竄または偽造されていないことが確認されたことになり、ステップS1006に進む。一方、ステップS1003で計算したハッシュ値とResource Fileに記述されたPermission Fileのハッシュ値が等しくなければ(ステップS1005のno)、Permission Fileは偽造、または改竄された可能性があることになり、アプリケーションの実行を禁止したり、最小限の権限を与えてアプリケーションを実行する(ステップS1008)。ステップS1006では、Permission Fileの記述を解釈し、プレーヤに当該アプリケーションの権限を設定する(ステップS1006)。以上の処理により当該アプリケーションが実行できる権限を設定するとプレーヤはアプリケーションを実行する(ステップS1007)。
【0226】
なお、Permission Fileを用いたアプリケーションの権限設定を行う場合、図42を用いて述べたアプリケーションの妥当性検証の完了後に、図45で述べたPermission Fileの妥当性検証とアプリケーションの権限設定を行ってアプリケーションの実行に移ると、図43を用いて述べたように、アプリケーションが使用するファイルの妥当性検証を行うこととなる。
【0227】
(アプリケーションの作成手順)
次に、スタジオにおいてアプリケーションをオーサリングしたあと、アプリケーションの認証および権限制御に必要な情報を付加してBD−ROMに記録するまでの手順について図46を用いて説明する。
【0228】
まずスタジオにてXHTMLおよびスクリプトによるアプリケーションのオーサリングが完了すると(ステップS1101)、この時点で、アプリケーションのToppageとそれ以外のアプリケーションを構成するファイルの名前が決定され、また各ファイルのディレクトリ構成も決定する。次に当該アプリケーションに最適かつ必要な実行権限を記述したPermission Fileを作成する(ステップS1102)。次にアプリケーションを構成する各ファイルとPermission Fileのハッシュ値を計算する(ステップS1103)。次にPermission Fileのファイル名とアーカイブファイルのファイル名、署名データのファイル名と配置位置を決定する(ステップS1104)。この際、それぞれ任意にファイル名を決定しても良いし、アプリケーション毎に一意に決定される固有の値としても良い。例えばそれぞれのファイルの配置位置を当該アプリケーションのToppageと同一ディレクトリとし、さらにファイルボディをToppageのファイルボディと同一としてそれぞれの拡張子をPermission Fileであれば“.perm”、アーカイブファイルであれば“.bdi”、署名
データであれば“.rsa”としてもよい。以上までの処理で得た情報を元に当該アプリ
ケーションのResource Fileを作成する(ステップS1105)。次に、ステップS1105にて作成したResource Fileのハッシュ値を計算する(ステップS1106)。次に以上までの処理で得た情報を元に署名データを作成する(ステップS1107)。次に各ファイルの構成ファイルとPermission File、署名データを各ファイルのディレクトリ構成を保ったままファイルを一纏めにするアーカイブファイルにする(ステップS1108)。アーカイブファイルの例としてはMIME形式やTar形式や圧縮ファイル形式であるZip形式やLZH形式、CAB形式がある。圧縮形式を採用することでBD−ROMに記録するデータ量が減り、また読込にかかる時間を短縮できる利点があるが、MIME形式やTar形式に比べてファイルを展開する時間がかかるという欠点がある。最後に、ステップS1105で作成したResource FileとステップS1108で作成したアーカイブファイルとをBD−ROMの所定の位置に記録する(ステップS1109)。
【0229】
なお、本実施の形態にて述べたアプリケーションの実行権限制御の仕組みを利用しない場合はステップS1102におけるPermission Fileの作成などPermission Fileに関する処理は実施しない。
【産業上の利用可能性】
【0230】
本発明を利用することにより、映像データとXMLおよびスクリプトによるAV再生制御を導入することが可能となる。特に、映像コンテンツの制作に携わる映画産業・民生機器産業において利用される可能性をもつ。
【図面の簡単な説明】
【0231】
【図1】DVDの構成図
【図2】ハイライトの構成図
【図3】DVDでの多重化の例を示す図
【図4】BD−ROMのデータ階層図
【図5】BD−ROM上の論理空間の構成図
【図6】BD−ROMプレーヤの概要ブロック図
【図7】BD−ROMプレーヤの構成ブロック図
【図8】BD−ROMのアプリケーション空間の説明図
【図9】MPEGストリーム(VOB)の構成図
【図10】パックの構成図
【図11】AVストリームとプレーヤ構成の関係を説明する図
【図12】トラックバッファへのAVデータ連続供給モデル図
【図13】VOB情報ファイル構成図
【図14】タイムマップの説明図
【図15】タイムマップを使ったアドレス情報取得方法説明図
【図16】プレイリストファイルの構成図
【図17】プレイリストに対応するプログラムファイルの構成図
【図18】BDディスク全体管理情報ファイルの構成図
【図19】グローバルイベントハンドラを記録するファイルの構成図
【図20】タイムイベントの例を説明する図
【図21】ユーザイベントの例を説明する図
【図22】グローバルイベントハンドラの例を説明する図
【図23】仮想マシンの構成図
【図24】プレーヤ変数テーブルの図
【図25】イベントハンドラ(タイムイベント)の例を示す図
【図26】イベントハンドラ(ユーザイベント)の例を示す図
【図27】プレーヤの基本処理のフローチャート
【図28】プレイリスト再生処理のフローチャート
【図29】イベント処理のフローチャート
【図30】字幕処理のフローチャート
【図31】モジュール構成や制御の流れを説明する図
【図32】Index TableとXHTMLファイルの関係を説明する図
【図33】ボタンが表示されるXHTMLファイルの例
【図34】データのライフサイクルを説明する説明図
【図35】データのライフサイクルを説明するタイミングチャート
【図36】データを1つにまとめる方法を説明する図
【図37】Resource Fileの例を示す図
【図38】偽造・改竄されたアプリケーションについて説明する図
【図39】アプリケーション認証の概要を説明する図
【図40】アプリケーション認証機能を備えたResource Fileの例を示す図
【図41】署名データの構成図
【図42】アプリケーションの妥当性検証処理のフローチャート
【図43】アプリケーション構成ファイルの妥当性検証処理のフローチャート
【図44】実行権限制御機能を備えたResrource Fileの例を示す図
【図45】アプリケーションの実行権限制御処理のフローチャート
【図46】作成したアプリケーションをDiscに記録するまでのフローチャート
【符号の説明】
【0232】
201 BDディスク
202 光ピックアップ
203 プログラム記録メモリ
204 管理情報記録メモリ
205 AV記録メモリ
206 プログラム処理部
207 管理情報処理部
208 プレゼンテーション処理部
209 イメージプレーン
210 ビデオプレーン
211 合成処理部
301 プログラム記録メモリ
302 プログラムプロセッサ
303 UOPマネージャ
304 管理情報記録メモリ
305 シナリオプロセッサ
306 プレゼンテーションコントローラ
307 クロック
308 イメージメモリ
309 トラックバッファ
310 デマルチプレクサ
311 イメージプロセッサ
312 ビデオプロセッサ
313 サウンドプロセッサ
314 イメージプレーン
315 ビデオプレーン
316 合成処理部
317 ドライブコントローラ
S101 ディスク挿入ステップ
S102 BD.INFO読み込みステップ
S103 BD.PROG読み込みステップ
S104 ファーストイベント生成ステップ
S105 イベントハンドラ実行ステップ
S201 UOP受付ステップ
S202 UOPイベント生成ステップ
S203 メニューコール判定ステップ
S204 イベント生成ステップ
S205 イベントハンドラ実行ステップ
S301 プレイリスト再生開始ステップ
S302 プレイリスト情報(XXX.PL)読み込みステップ
S303 プレイリストプログラム(XXX.PROG)読み込みステップ
S304 セル再生開始ステップ
S305 AV再生開始ステップ
S401 AV再生開始ステップ
S402 VOB情報(YYY.VOBI)読み込みステップ
S403 VOB(YYY.VOB)読み込みステップ
S404 VOB再生開始ステップ
S405 VOB再生終了ステップ
S406 次セル存在判定ステップ
S501 プレイリスト再生開始ステップ
S502 プレイリスト再生終了判定ステップ
S503 タイムイベント時刻判定ステップ
S504 イベント生成ステップ
S505 イベントハンドラ実行ステップ
S601 プレイリスト再生開始ステップ
S602 プレイリスト再生終了判定ステップ
S603 UOP受付判定ステップ
S604 UOPイベント生成ステップ
S605 メニューコール判定ステップ
S606 ユーザーイベント有効期間判定ステップ
S607 イベント生成ステップ
S608 イベントハンドラ実行ステップ
S701 プレイリスト再生開始ステップ
S702 プレイリスト再生終了判定ステップ
S703 字幕描画開始判定ステップ
S704 字幕描画ステップ
S705 字幕表示終了判定ステップ
S706 字幕消去ステップ
S801 タイトル開始ステップ
S802 Resource File読込ステップ
S803 署名データ読込ステップ
S804 公開鍵抽出ステップ
S805 署名復号化ステップ
S806 署名検証用ハッシュ値計算ステップ
S807 署名判定ステップ
S808 公開鍵証明書照合ステップ
S809 公開鍵証明書判定ステップ
S810 アプリケーション妥当性検証完了ステップ
S811 アプリケーションの偽造改竄検出ステップ
S901 アプリケーション妥当性検証完了ステップ
S902 アプリケーション構成ファイル読込ステップ
S903 構成ファイルの存在確認ステップ
S904 存在判定ステップ
S905 構成Fileハッシュ値計算ステップ
S906 ハッシュ値比較ステップ
S907 ハッシュ値判定ステップ
S908 アプリケーション構成ファイル妥当性検証完了ステップ
S909 アプリケーションデータの偽造改竄検出ステップ
S1001 アプリケーション妥当性検証完了ステップ
S1002 Permission File読込ステップ
S1003 Permission Fileのハッシュ値計算ステップ
S1004 ハッシュ値比較ステップ
S1005 ハッシュ値判定ステップ
S1006 アプリケーション権限設定ステップ
S1007 アプリケーション実行ステップ
S1008 アプリケーション不正検出ステップ
S1101 アプリケーションオーサリング完了ステップ
S1102 Permission File作成ステップ
S1103 ハッシュ値計算ステップ
S1104 ファイル名決定ステップ
S1105 Resource File作成ステップ
S1106 Resource Fileのハッシュ値計算ステップ
S1107 署名データ作成ステップ
S1108 アーカイブファイル作成ステップ
S1109 BD−ROM作成ステップ



【特許請求の範囲】
【請求項1】
デジタルストリームを含む1つ以上のタイトルと宣言型言語で記述され1つ以上のファイルから構成される1つ以上のアプリケーションとが記録された情報記録媒体であって、
前記情報記録媒体には、アプリケーションを構成するファイル名一覧を記述したファイルリストと前記ファイルリストへの署名データとがアプリケーション毎に記録され、
前記ファイルリストはアプリケーションを構成する各ファイルのハッシュ値と前記の署名データのファイル名とを含む
ことを特徴とする情報記録媒体。
【請求項2】
前記ファイルリストは対応する前記タイトル毎に関連付けて記録される
ことを特徴とする請求項1記載の情報記録媒体。
【請求項3】
前記ファイルリストには、前記アプリケーションが実行できる機能を記述した実行権限情報のファイル名とそのハッシュ値がさらに記録される
ことを特徴とする請求項1記載の情報記録媒体。
【請求項4】
前記情報記録媒体には、前記ファイルリストにファイル名を記載されたファイル本体をそれぞれ格納したアーカイブファイルが記録されており、
前記ファイルリストには前記アーカイブファイルへのリンクがさらに記載されている
ことを特徴とする請求項1記載の情報記録媒体。
【請求項5】
デジタルストリームを含むタイトルの再生と宣言型言語で記述され1つ以上のファイルから構成されるアプリケーションの実行とを同時に行う再生装置であって、
複数タイトル間の分岐を制御するタイトル制御部と、
1つのタイトルに帰属するデジタルストリームを再生する再生制御部と、
タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認部と、
前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込部と、
を備えることを特徴とする再生装置。
【請求項6】
前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理部をさらに備える請求項5記載の再生装置。
【請求項7】
デジタルストリームを含むタイトルの再生とアプリケーションの実行とを同時に実行させるプログラムであって、
複数タイトル間の分岐を制御するタイトル制御ステップと、
1つのタイトルに帰属するデジタルストリームを再生する再生制御ステップと、
タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと、
前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認ステップと、
前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込ステップと、
をコンピュータに実行させることを特徴とするプログラム。
【請求項8】
前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理ステップをさらに含む請求項7記載のプログラム。
【請求項9】
デジタルストリームを含むタイトルの再生とアプリケーションの実行とを同時に実行させる再生方法であって、
複数タイトル間の分岐を制御するタイトル制御ステップと、
1つのタイトルに帰属するデジタルストリームを再生する再生制御ステップと、
タイトルの分岐が発生する度に、分岐先タイトルを生存区間としたアプリケーションを構成するファイルリストと
前記ファイルリストに記載されたファイルリストへの署名とを読み込み前記署名の妥当性を確認する署名確認ステップと、
前記アプリケーションを構成するファイルを読み込む際にファイルのハッシュ値を計算し前記ファイルリストに記載された当該ファイルのハッシュ値と一致するときのみファイルを読み込むファイル読込ステップと、
を含むことを特徴とする再生方法。
【請求項10】
前記アプリケーションを実行する際に、前記ファイルリストに記載された実行権限情報のハッシュ値を計算し前記ファイルリストに記載された実行権限情報のハッシュ値と一致するときのみ前記実行権限情報に記載された実行権限でアプリケーションを実行する実行権限管理ステップをさらに含む請求項9記載の再生方法。




【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate


【公開番号】特開2006−277389(P2006−277389A)
【公開日】平成18年10月12日(2006.10.12)
【国際特許分類】
【出願番号】特願2005−96148(P2005−96148)
【出願日】平成17年3月29日(2005.3.29)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】